diff --git a/.gitignore b/.gitignore index ae9ac207b..4e73c4f17 100644 --- a/.gitignore +++ b/.gitignore @@ -38,3 +38,4 @@ Thumbs.db build/ .idea/ *.DS_Store +*.pl diff --git a/.travis.yml b/.travis.yml index 3db6ab6fc..56bea002d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -55,5 +55,6 @@ matrix: script: - ./build_tools.sh - make -j2 compare_ruby_de + - make -j2 compare_sapphire_de allow_failures: - env: _="Formatting" diff --git a/Makefile b/Makefile index c8482e7c7..f471a1626 100644 --- a/Makefile +++ b/Makefile @@ -26,7 +26,7 @@ RAMSCRGEN := tools/ramscrgen/ramscrgen REVISION := 0 -VERSIONS := ruby sapphire ruby_rev1 sapphire_rev1 ruby_rev2 sapphire_rev2 ruby_de +VERSIONS := ruby sapphire ruby_rev1 sapphire_rev1 ruby_rev2 sapphire_rev2 ruby_de sapphire_de # Clear the default suffixes. .SUFFIXES: @@ -40,9 +40,9 @@ VERSIONS := ruby sapphire ruby_rev1 sapphire_rev1 ruby_rev2 sapphire_rev2 ruby_d $(VERSIONS) $(VERSIONS:%=compare_%) -$(shell mkdir -p build/ $(VERSIONS:%=build/%/{,src,asm,data})) +$(shell mkdir -p build/ $(VERSIONS:%=build/%/{,asm,data,src{,/battle,/field,/debug,/scene,/pokemon,/engine,/libs}})) -C_SRCS := $(wildcard src/*.c) +C_SRCS := $(wildcard src/*/*.c) $(wildcard src/*.c) ASM_SRCS := $(wildcard asm/*.s) DATA_ASM_SRCS := $(wildcard data/*.s) @@ -83,6 +83,7 @@ include override.mk %.4bpp: %.png ; $(GFX) $< $@ %.8bpp: %.png ; $(GFX) $< $@ %.gbapal: %.pal ; $(GFX) $< $@ +%.gbapal: %.png ; $(GFX) $< $@ %.lz: % ; $(GFX) $< $@ %.rl: % ; $(GFX) $< $@ sound/direct_sound_samples/cry_%.bin: sound/direct_sound_samples/cry_%.aif ; $(AIF) $< $@ --compress @@ -90,17 +91,17 @@ sound/direct_sound_samples/cry_%.bin: sound/direct_sound_samples/cry_%.aif ; $(A sound/songs/%.s: sound/songs/%.mid cd $(@D) && ../../$(MID) $(> 12) == 4 || (\arg1 >> 12) == 8) && ((\arg2 >> 12) == 4 || (\arg2 >> 12) == 8) + compare_var_to_var \arg1, \arg2 + .elseif ((\arg1 >> 12) == 4 || (\arg1 >> 12) == 8) && (\arg2 >= 0 && \arg2 <= 0xFFFF) + compare_var_to_value \arg1, \arg2 + .else + .error "Invalid arguments for 'compare'" + .endif .endm - @ Replaces a pointer in the script engine RAM with asm_pointer. - .macro jumpasm asm_pointer + @ Calls the native C function stored at `func`. + .macro callnative func + .byte 0x23 + .4byte \func + .endm + + @ Replaces the script with the function stored at `func`. Execution returns to the bytecode script when func returns TRUE. + .macro gotonative func .byte 0x24 - .4byte \asm_pointer + .4byte \func .endm @ Calls a special function; that is, a piece of ASM code designed for use by scripts and listed in a table of pointers. .macro special function .byte 0x25 - .2byte \function + .2byte SPECIAL_\function .endm @ Calls a special function. That function's output (if any) will be written to the variable you specify. - .macro specialval output, function + .macro specialvar output, function .byte 0x26 .2byte \output - .2byte \function + .2byte SPECIAL_\function .endm @ Blocks script execution until a command or ASM code manually unblocks it. Generally used with specific commands and specials. If this command runs, and a subsequent command or piece of ASM does not unblock state, the script will remain blocked indefinitely (essentially a hang). @@ -257,7 +269,7 @@ .endm @ Blocks script execution for time (frames? milliseconds?). - .macro pause time + .macro delay time .byte 0x28 .2byte \time .endm @@ -281,33 +293,35 @@ .endm @ In FireRed, this command is a nop. - .macro compareflags + .macro initclock hour minute .byte 0x2c + .byte \hour + .byte \minute .endm @ In FireRed, this command is a nop. - .macro checkdailyflags + .macro dodailyevents .byte 0x2d .endm @ Resets the values of variables 0x8000, 0x8001, and 0x8002. Related to RTC in RSE? - .macro resetvars + .macro gettime .byte 0x2e .endm @ Plays the specified (sound_number) sound. Only one sound may play at a time, with newer ones interrupting older ones. - .macro playsfx sound_number + .macro playse sound_number .byte 0x2f .2byte \sound_number .endm @ Blocks script execution until the currently-playing sound (triggered by sound) finishes playing. - .macro checksound + .macro waitse .byte 0x30 .endm @ Plays the specified (fanfare_number) fanfare. - .macro fanfare fanfare_number + .macro playfanfare fanfare_number .byte 0x31 .2byte \fanfare_number .endm @@ -318,37 +332,37 @@ .endm @ Plays the specified (song_number) song. The byte is apparently supposed to be 0x00. - .macro playmusic song_number, unknown + .macro playbgm song_number, unknown .byte 0x33 .2byte \song_number .byte \unknown .endm @ Plays the specified (song_number) song. - .macro playmusicbattle song_number + .macro savebgm song_number .byte 0x34 .2byte \song_number .endm @ Crossfades the currently-playing song into the map's default song. - .macro fadedefault + .macro fadedefaultbgm .byte 0x35 .endm @ Crossfades the currently-playng song into the specified (song_number) song. - .macro fademusic song_number + .macro fadenewbgm song_number .byte 0x36 .2byte \song_number .endm @ Fades out the currently-playing song. - .macro fadeout speed + .macro fadeoutbgm speed .byte 0x37 .byte \speed .endm @ Fades the currently-playing song back in. - .macro fadein speed + .macro fadeinbgm speed .byte 0x38 .byte \speed .endm @@ -363,7 +377,7 @@ .endm @ Clone of warp that does not play a sound effect. - .macro warpmuted map, warp, X, Y + .macro warpsilent map, warp, X, Y .byte 0x3a map \map .byte \warp @@ -372,7 +386,7 @@ .endm @ Clone of warp that uses "a walking effect". - .macro warpwalk map, warp, X, Y + .macro warpdoor map, warp, X, Y .byte 0x3b map \map .byte \warp @@ -396,7 +410,7 @@ .endm @ Clone of warp. Used by an (unused?) Safari Zone script to return the player to the gatehouse and end the Safari Game. - .macro warp3 map, warp, X, Y + .macro setwarp map, warp, X, Y .byte 0x3e map \map .byte \warp @@ -405,7 +419,7 @@ .endm @ Sets a default warp place. If a warp tries to send the player to Warp 127 on Map 127.127, they will instead be sent here. Useful when a map has warps that need to go to script-controlled locations (i.e. elevators). - .macro warpplace map, warp, X, Y + .macro setdynamicwarp map, warp, X, Y .byte 0x3f map \map .byte \warp @@ -414,7 +428,7 @@ .endm @ Clone of warp3, except that this writes data to different offsets... - .macro warp4 map, warp, X, Y + .macro setdivewarp map, warp, X, Y .byte 0x40 map \map .byte \warp @@ -423,7 +437,7 @@ .endm @ Clone of warp3, except that this writes data to different offsets... - .macro warp5 map, warp, X, Y + .macro setholewarp map, warp, X, Y .byte 0x41 map \map .byte \warp @@ -504,7 +518,7 @@ .endm @ In FireRed, this command is a nop. (The argument is read, but not used for anything.) - .macro testdecor a + .macro hasdecor a .byte 0x4d .2byte \a .endm @@ -516,148 +530,146 @@ .endm @ Applies the movement data at movements to the specified (index) Person event. Also closes any standard message boxes that are still open. - .macro move index, movements - .byte 0x4f - .2byte \index - .4byte \movements - .endm - - @ Apparent clone of applymovement. Oddly, it doesn't seem to work at all if applied to any Person other than the player (0xFF), and the X and Y arguments don't seem to do anything. @ This command in fact uses variables to access the Person event ID. So, for example, if you setvar 0x8000 to 0x3, and then use applymovementpos 0x8000 @move1, Person event 3 will have the movements at @move1 applied to them. Thank you Shiny Quagsire for bringing this to my attention. - .macro movecoords variable, movements, x, y - .byte 0x50 - .2byte \variable - .4byte \movements - .byte \x - .byte \y + .macro applymovement index, movements, mapGroup, mapNum + .ifb \mapGroup + .byte 0x4f + .2byte \index + .4byte \movements + .else + .byte 0x50 + .2byte \index + .4byte \movements + .byte \mapGroup + .byte \mapNum + .endif .endm @ Blocks script execution until the movements being applied to the specified (index) Person event finish. If the specified Person event is 0x0000, then the command will block script execution until all Person events affected by applymovement finish their movements. If the specified Person event is not currently being manipulated with applymovement, then this command does nothing. - .macro waitmove index - .byte 0x51 - .2byte \index + .macro waitmovement index, mapBank, mapNum + .ifb \mapBank + .byte 0x51 + .2byte \index + .else + .byte 0x52 + .2byte \index + .byte \mapBank + .byte \mapNum + .endif .endm - @ Apparent clone of waitmovement. Oddly, it doesn't seem to work at all if applied to any Person other than the player (0xFF), and the X and Y arguments don't seem to do anything. - .macro waitmovexy index, X, Y - .byte 0x52 - .2byte \index - .byte \X - .byte \Y + @ Attempts to hide the specified (local_ID, a local ID) Person event on the specified map, by setting its visibility flag if it has a valid one. If the Person does not have a valid visibility flag, this command does nothing. + @ If no map is specified, then the current map is used + .macro removeobject localId, mapGroup, mapNum + .ifb \mapGroup + .byte 0x53 + .2byte \localId + .else + .byte 0x54 + .2byte \localId + .byte \mapGroup + .byte \mapNum + .endif .endm - @ Attempts to hide the specified (local_ID, a local ID) Person event on the current map, by setting its visibility flag if it has a valid one. If the Person does not have a valid visibility flag, this command does nothing. - .macro disappear local_ID - .byte 0x53 - .2byte \local_ID + .macro addobject localId, mapGroup, mapNum + .ifb \mapGroup + .byte 0x55 + .2byte \localId + .else + .byte 0x56 + .2byte \localId + .byte \mapGroup + .byte \mapNum + .endif .endm - @ Clone of hidesprite that also moves the Person? Test it! - .macro disappearxy index, X, Y - .byte 0x54 - .2byte \index - .byte \X - .byte \Y + .macro setobjectxy word1, word2, word3 + .byte 0x57 + .2byte \word1 + .2byte \word2 + .2byte \word3 .endm - .macro reappear word - .byte 0x55 - .2byte \word + .macro showobject word, byte1, byte2 + .byte 0x58 + .2byte \word + .byte \byte1 + .byte \byte2 .endm - .macro reappearxy word, byte1, byte2 - .byte 0x56 - .2byte \word - .byte \byte1 - .byte \byte2 - .endm - - .macro movesprite word1, word2, word3 - .byte 0x57 - .2byte \word1 - .2byte \word2 - .2byte \word3 - .endm - - .macro spritevisible word, byte1, byte2 - .byte 0x58 - .2byte \word - .byte \byte1 - .byte \byte2 - .endm - - .macro spriteinvisible word, byte1, byte2 - .byte 0x59 - .2byte \word - .byte \byte1 - .byte \byte2 + .macro hideobject word, byte1, byte2 + .byte 0x59 + .2byte \word + .byte \byte1 + .byte \byte2 .endm @ If the script was called by a Person event, then that Person will turn to face toward the tile that the player is stepping off of. .macro faceplayer - .byte 0x5a + .byte 0x5a .endm - .macro spriteface word, byte - .byte 0x5b - .2byte \word - .byte \byte + .macro turnobject word, byte + .byte 0x5b + .2byte \word + .byte \byte .endm @ If the Trainer flag for Trainer index is not set, this command does absolutely nothing. .macro trainerbattle type, trainer, word, pointer1, pointer2, pointer3, pointer4 - .byte 0x5c - .byte \type - .2byte \trainer - .2byte \word - .if \type == 0 - .4byte \pointer1 @ text - .4byte \pointer2 @ text - .elseif \type == 1 - .4byte \pointer1 @ text - .4byte \pointer2 @ text - .4byte \pointer3 @ event script - .elseif \type == 2 - .4byte \pointer1 @ text - .4byte \pointer2 @ text - .4byte \pointer3 @ event script - .elseif \type == 3 - .4byte \pointer1 @ text - .elseif \type == 4 - .4byte \pointer1 @ text - .4byte \pointer2 @ text - .4byte \pointer3 @ text - .elseif \type == 5 - .4byte \pointer1 @ text - .4byte \pointer2 @ text - .elseif \type == 6 - .4byte \pointer1 @ text - .4byte \pointer2 @ text - .4byte \pointer3 @ text - .4byte \pointer4 @ event script - .elseif \type == 7 - .4byte \pointer1 @ text - .4byte \pointer2 @ text - .4byte \pointer3 @ text - .elseif \type == 8 - .4byte \pointer1 @ text - .4byte \pointer2 @ text - .4byte \pointer3 @ text - .4byte \pointer4 @ event script - .endif + .byte 0x5c + .byte \type + .2byte \trainer + .2byte \word + .if \type == 0 + .4byte \pointer1 @ text + .4byte \pointer2 @ text + .elseif \type == 1 + .4byte \pointer1 @ text + .4byte \pointer2 @ text + .4byte \pointer3 @ event script + .elseif \type == 2 + .4byte \pointer1 @ text + .4byte \pointer2 @ text + .4byte \pointer3 @ event script + .elseif \type == 3 + .4byte \pointer1 @ text + .elseif \type == 4 + .4byte \pointer1 @ text + .4byte \pointer2 @ text + .4byte \pointer3 @ text + .elseif \type == 5 + .4byte \pointer1 @ text + .4byte \pointer2 @ text + .elseif \type == 6 + .4byte \pointer1 @ text + .4byte \pointer2 @ text + .4byte \pointer3 @ text + .4byte \pointer4 @ event script + .elseif \type == 7 + .4byte \pointer1 @ text + .4byte \pointer2 @ text + .4byte \pointer3 @ text + .elseif \type == 8 + .4byte \pointer1 @ text + .4byte \pointer2 @ text + .4byte \pointer3 @ text + .4byte \pointer4 @ event script + .endif .endm @ Starts a trainer battle using the battle information stored in RAM (usually by trainerbattle, which actually calls this command behind-the-scenes), and blocks script execution until the battle finishes. - .macro reptrainerbattle + .macro battlebegin .byte 0x5d .endm - .macro endtrainerbattle + .macro ontrainerbattleend .byte 0x5e .endm - .macro endtrainerbattle2 + .macro ontrainerbattleendgoto .byte 0x5f .endm @@ -668,37 +680,37 @@ .endm @ Sets Flag (trainer + 0x500). (I didn't make a mistake. The command names actually are backwards.) - .macro cleartrainerflag trainer + .macro settrainerflag trainer .byte 0x61 .2byte \trainer .endm @ Clears Flag (trainer + 0x500). (I didn't make a mistake. The command names actually are backwards.) - .macro settrainerflag trainer + .macro cleartrainerflag trainer .byte 0x62 .2byte \trainer .endm - .macro movespriteperm word1, word2, word3 + .macro setobjectxyperm word1, word2, word3 .byte 0x63 .2byte \word1 .2byte \word2 .2byte \word3 .endm - .macro moveoffscreen word + .macro moveobjectoffscreen word .byte 0x64 .2byte \word .endm - .macro spritebehave word, byte + .macro setobjectmovementtype word, byte .byte 0x65 .2byte \word .byte \byte .endm @ If a standard message box (or its text) is being drawn on-screen, this command blocks script execution until the box and its text have been fully drawn. - .macro waittext + .macro waitmessage .byte 0x66 .endm @@ -709,7 +721,7 @@ .endm @ Holds the current message box open until the player presses a key. The message box is then closed. - .macro closebutton + .macro closemessage .byte 0x68 .endm @@ -755,7 +767,7 @@ .endm @ Displays a multichoice box from which the user can choose a selection, and blocks script execution until a selection is made. Lists of options are predefined and the one to be used is specified with list. The default argument determines the initial position of the cursor when the box is first opened; it is zero-indexed, and if it is too large, it is treated as 0x00. If B is set to a non-zero value, then the user will not be allowed to back out of the multichoice with the B button. - .macro multichoicedef X, Y, list, default, B + .macro multichoicedefault X, Y, list, default, B .byte 0x70 .byte \X .byte \Y @@ -765,7 +777,7 @@ .endm @ Displays a multichoice box from which the user can choose a selection, and blocks script execution until a selection is made. Lists of options are predefined and the one to be used is specified with list. The per_row argument determines how many list items will be shown on a single row of the box. - .macro multichoicerow X, Y, list, per_row, B + .macro multichoicegrid X, Y, list, per_row, B .byte 0x71 .byte \X .byte \Y @@ -774,7 +786,7 @@ .byte \B .endm - .macro showbox byte1, byte2, byte3, byte4 + .macro drawbox byte1, byte2, byte3, byte4 .byte 0x72 .byte \byte1 .byte \byte2 @@ -782,7 +794,7 @@ .byte \byte4 .endm - .macro hidebox byte1, byte2, byte3, byte4 + .macro erasebox byte1, byte2, byte3, byte4 .byte 0x73 .byte \byte1 .byte \byte2 @@ -790,7 +802,7 @@ .byte \byte4 .endm - .macro clearbox byte1, byte2, byte3, byte4 + .macro drawboxtext byte1, byte2, byte3, byte4 .byte 0x74 .byte \byte1 .byte \byte2 @@ -799,7 +811,7 @@ .endm @ Displays a box containing the front sprite for the specified (species) Pokmon species. - .macro showpokepic species, X, Y + .macro drawpokepic species, X, Y .byte 0x75 .2byte \species .byte \X @@ -807,24 +819,24 @@ .endm @ Hides all boxes displayed with showpokepic. - .macro hidepokepic + .macro erasepokepic .byte 0x76 .endm @ In FireRed, this command is a nop. (The argument is discarded.) - .macro showcontestwinner a + .macro drawcontestwinner a .byte 0x77 .byte \a .endm @ Displays the string at pointer as braille text in a standard message box. The string must be formatted to use braille characters. - .macro braillemsg text + .macro braillemessage text .byte 0x78 .4byte \text .endm @ Gives the player one of the specified (species) Pokmon at level level holding item. The unknown arguments should all be zeroes. - .macro givepokemon species, level, item, unknown1, unknown2, unknown3 + .macro givepoke species, level, item, unknown1, unknown2, unknown3 .byte 0x79 .2byte \species .byte \level @@ -847,68 +859,68 @@ .endm @ Checks if at least one Pokmon in the player's party knows the specified (index) attack. If so, variable 0x800D (LASTRESULT) is set to the (zero-indexed) slot number of the Pokmon that knows the move. If not, LASTRESULT is set to 0x0006. - .macro checkattack index + .macro checkpokemove index .byte 0x7c .2byte \index .endm @ Writes the name of the Pokmon at index species to the specified buffer. - .macro bufferpoke out, species + .macro getspeciesname out, species .byte 0x7d .byte \out .2byte \species .endm @ Writes the name of the first Pokmon in the player's party to the specified buffer. - .macro bufferfirstpoke out + .macro getfirstpartypokename out .byte 0x7e .byte \out .endm @ Writes the name of the Pokmon in slot slot (zero-indexed) of the player's party to the specified buffer. If an empty or invalid slot is specified, ten spaces ("") are written to the buffer. - .macro bufferpartypoke out, slot + .macro getpartypokename out, slot .byte 0x7f .byte \out .2byte \slot .endm @ Writes the name of the item at index item to the specified buffer. If the specified index is larger than the number of items in the game (0x176), the name of item 0 ("????????") is buffered instead. - .macro bufferitem out, item + .macro getitemname out, item .byte 0x80 .byte \out .2byte \item .endm @ In FireRed, this command is a nop. (The first argument is discarded immediately. The second argument is read, but not used for anything.) - .macro bufferdecor a, b + .macro getdecorname a, b .byte 0x81 .byte \a .2byte \b .endm @ Writes the name of the attack at index attack to the specified buffer. - .macro bufferattack out, attack + .macro getmovename out, attack .byte 0x82 .byte \out .2byte \attack .endm @ Converts the value of input to a decimal string, and writes that string to the specified buffer. - .macro buffernum out, input + .macro getnumberstring out, input .byte 0x83 .byte \out .2byte \input .endm @ Writes the standard string identified by index to the specified buffer. Specifying an invalid standard string (e.x. 0x2B) can and usually will cause data corruption (I've observed destruction of the stored player name and crashes when entering/exiting certain menu screens). - .macro bufferstd out, index + .macro getstdstring out, index .byte 0x84 .byte \out .2byte \index .endm @ Copies the string at offset to the specified buffer. - .macro buffertext out, offset + .macro getstring out, offset .byte 0x85 .byte \out .4byte \offset @@ -932,13 +944,13 @@ .4byte \products .endm - .macro pokecasino word + .macro playslotmachine word .byte 0x89 .2byte \word .endm @ In FireRed, this command is a nop. - .macro event_8a byte1, byte2, byte3 + .macro plantberrytree byte1, byte2, byte3 .byte 0x8a .byte \byte1, \byte2, \byte3 .endm @@ -977,7 +989,7 @@ .endm @ If check is 0x00, this command subtracts value from the player's money. - .macro paymoney value, check + .macro takemoney value, check .byte 0x91 .4byte \value .byte \check @@ -991,28 +1003,28 @@ .endm @ Spawns a secondary box showing how much money the player has. - .macro showmoney X, Y + .macro showmoneybox X, Y .byte 0x93 .byte \X .byte \Y .endm @ Hides the secondary box spawned by showmoney. - .macro hidemoney X, Y + .macro hidemoneybox X, Y .byte 0x94 .byte \X .byte \Y .endm @ Updates the secondary box spawned by showmoney. (What does it do with its arguments?) - .macro updatemoney X, Y + .macro updatemoneybox X, Y .byte 0x95 .byte \X .byte \Y .endm @ In FireRed, this command is a nop. - .macro event_96 word + .macro getpricereduction word .byte 0x96 .2byte \word .endm @@ -1029,36 +1041,36 @@ .byte \byte2 .endm - .macro darken word + .macro setdarklevel word .byte 0x99 .2byte \word .endm - .macro lighten byte + .macro animdarklevel byte .byte 0x9a .byte \byte .endm - .macro message2 pointer + .macro messageautoscroll pointer .byte 0x9b .4byte \pointer .endm @ Executes the specified field move animation. - .macro doanimation animation + .macro dofieldeffect animation .byte 0x9c .2byte \animation .endm @ Tells the game which party Pokmon to use for the next field move animation. - .macro setanimation animation, slot + .macro setfieldeffect animation, slot .byte 0x9d .byte \animation .2byte \slot .endm @ Blocks script execution until all playing field move animations complete. - .macro checkanimation animation + .macro waitfieldeffect animation .byte 0x9e .2byte \animation .endm @@ -1070,12 +1082,12 @@ .endm @ Checks the player's gender. If male, then 0x0000 is stored in variable 0x800D (LASTRESULT). If female, then 0x0001 is stored in LASTRESULT. - .macro checkgender + .macro checkplayergender .byte 0xa0 .endm @ Plays the specified (species) Pokmon's cry. You can use waitcry to block script execution until the sound finishes. - .macro pokecry species, effect + .macro playpokecry species, effect .byte 0xa1 .2byte \species .2byte \effect @@ -1112,12 +1124,12 @@ .byte \subroutine .endm - .macro setmapfooter word + .macro setmaplayoutindex word .byte 0xa7 .2byte \word .endm - .macro spritelevelup word, byte1, byte2, byte3 + .macro setobjectpriority word, byte1, byte2, byte3 .byte 0xa8 .2byte \word .byte \byte1 @@ -1125,14 +1137,14 @@ .byte \byte3 .endm - .macro restorespritelevel word, byte1, byte2 + .macro resetobjectpriority word, byte1, byte2 .byte 0xa9 .2byte \word .byte \byte1 .byte \byte2 .endm - .macro createvsprite byte1, byte2, word1, word2, byte3, byte4 + .macro createvobject byte1, byte2, word1, word2, byte3, byte4 .byte 0xaa .byte \byte1 .byte \byte2 @@ -1142,52 +1154,52 @@ .byte \byte4 .endm - .macro vspriteface byte1, byte2 + .macro turnvobject byte1, byte2 .byte 0xab .byte \byte1 .byte \byte2 .endm @ Queues the opening of the door tile at (X, Y) with an animation. - .macro setdooropened X, Y + .macro opendoor X, Y .byte 0xac .2byte \X .2byte \Y .endm @ Queues the closing of the door tile at (X, Y) with an animation. - .macro setdoorclosed X, Y + .macro closedoor X, Y .byte 0xad .2byte \X .2byte \Y .endm @ Executes the state changes queued with setdooropened, setdoorclosed, setdooropened2, and setdoorclosed2. - .macro doorchange + .macro waitdooranim .byte 0xae .endm @ Queues the opening of the door tile at (X, Y) without an animation. - .macro setdooropened2 X, Y + .macro setdooropen X, Y .byte 0xaf .2byte \X .2byte \Y .endm @ Queues the closing of the door tile at (X, Y) without an animation. - .macro setdoorclosed2 X, Y + .macro setdoorclosed X, Y .byte 0xb0 .2byte \X .2byte \Y .endm @ In FireRed, this command is a nop. - .macro event_b1 + .macro addelevmenuitem .byte 0xb1 .endm @ In FireRed, this command is a nop. - .macro event_b2 + .macro showelevmenu .byte 0xb2 .endm @@ -1201,7 +1213,7 @@ .2byte \word .endm - .macro removecoins word + .macro takecoins word .byte 0xb5 .2byte \word .endm @@ -1225,7 +1237,7 @@ .2byte \word .endm - .macro vjump pointer + .macro vgoto pointer .byte 0xb9 .4byte \pointer .endm @@ -1235,63 +1247,63 @@ .4byte \pointer .endm - .macro if5 byte, pointer + .macro vgoto_if byte, pointer .byte 0xbb .byte \byte .4byte \pointer .endm - .macro if6 byte, pointer + .macro vcall_if byte, pointer .byte 0xbc .byte \byte .4byte \pointer .endm - .macro vtext pointer + .macro vmessage pointer .byte 0xbd .4byte \pointer .endm - .macro vloadptr pointer + .macro vloadword pointer .byte 0xbe .4byte \pointer .endm - .macro vbuffer byte, pointer + .macro vgetstring byte, pointer .byte 0xbf .byte \byte .4byte \pointer .endm @ Spawns a secondary box showing how many Coins the player has. - .macro showcoins X, Y + .macro showcoinsbox X, Y .byte 0xc0 .byte \X .byte \Y .endm @ Hides the secondary box spawned by showcoins. It doesn't appear to use its arguments, but they are still required. - .macro hidecoins X, Y + .macro hidecoinsbox X, Y .byte 0xc1 .byte \X .byte \Y .endm @ Updates the secondary box spawned by showcoins. (What does it do with its arguments?) - .macro updatecoins X, Y + .macro updatecoinsbox X, Y .byte 0xc2 .byte \X .byte \Y .endm @ Increases the value of the specified hidden variable by 1. The hidden variable's value will not be allowed to exceed 0x00FFFFFF. - .macro inccounter a + .macro incrementgamestat a .byte 0xc3 .byte \a .endm @ Clone of warp... Except that it doesn't appear to have any effect when used in some of FireRed's default level scripts. (If it did, Berry Forest would be impossible to enter...) - .macro warp6 map, warp, X, Y + .macro setescapewarp map, warp, X, Y .byte 0xc4 map \map .byte \warp @@ -1475,8 +1487,8 @@ @ Supplementary - .macro jumpeq dest - jumpif 1, \dest + .macro goto_if_eq dest + goto_if 1, \dest .endm .macro switch var @@ -1484,15 +1496,21 @@ .endm .macro case condition, dest - compare 0x8000, \condition - jumpeq \dest + compare_var_to_value 0x8000, \condition + goto_if_eq \dest .endm .macro msgbox text, type=4 - loadptr 0, \text + loadword 0, \text callstd \type .endm + @ Message box types + MSGBOX_YESNO = 5 + + YES = 1 + NO = 0 + .macro giveitem item, amount=1, function=0 setorcopyvar 0x8000, \item setorcopyvar 0x8001, \amount diff --git a/asm/mauville_old_man.s b/asm/mauville_old_man.s deleted file mode 100644 index 726de6fc1..000000000 --- a/asm/mauville_old_man.s +++ /dev/null @@ -1,1522 +0,0 @@ - .include "constants/gba_constants.inc" - .include "constants/species_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start sub_80F7DC0 -sub_80F7DC0: @ 80F7DC0 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x18 - ldr r1, _080F7E84 @ =gUnknown_083E53C8 - mov r0, sp - movs r2, 0x18 - bl memcpy - movs r5, 0 - movs r0, 0x2 - add r0, sp - mov r8, r0 - ldr r1, _080F7E88 @ =gSaveBlock1 + 0x2D94 - adds r1, 0x18 - adds r3, r1, 0 -_080F7DE4: - adds r0, r3, r5 - strb r5, [r0] - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0x7 - bls _080F7DE4 - movs r5, 0 - ldr r2, _080F7E88 @ =gSaveBlock1 + 0x2D94 - adds r2, 0x4 - mov r9, r2 - adds r6, r1, 0 -_080F7DFC: - bl Random - lsls r0, 16 - lsrs r0, 16 - adds r4, r5, 0x1 - adds r1, r4, 0 - bl __modsi3 - lsls r0, 16 - lsrs r1, r0, 16 - adds r2, r6, r5 - ldrb r7, [r2] - adds r1, r6, r1 - ldrb r0, [r1] - strb r0, [r2] - strb r7, [r1] - lsls r4, 16 - lsrs r5, r4, 16 - cmp r5, 0x7 - bls _080F7DFC - movs r3, 0 - mov r10, r3 - movs r5, 0 -_080F7E2A: - lsls r4, r5, 2 - mov r1, sp - adds r0, r1, r4 - ldrb r0, [r0] - bl sub_80EAE88 - add r4, r8 - strh r0, [r4] - add r0, r10 - lsls r0, 16 - lsrs r0, 16 - mov r10, r0 - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0x5 - bls _080F7E2A - movs r0, 0 - ldr r2, _080F7E88 @ =gSaveBlock1 + 0x2D94 - strb r0, [r2, 0x2] - movs r7, 0 - movs r5, 0 -_080F7E56: - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0xA - bl __umodsi3 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0x2 - bhi _080F7E90 - cmp r7, 0x7 - bhi _080F7E90 - lsls r0, r5, 1 - add r0, r9 - ldr r1, _080F7E8C @ =0x0000ffff - strh r1, [r0] - adds r0, r7, 0x1 - lsls r0, 16 - lsrs r7, r0, 16 - adds r4, r5, 0x1 - b _080F7EE2 - .align 2, 0 -_080F7E84: .4byte gUnknown_083E53C8 -_080F7E88: .4byte gSaveBlock1 + 0x2D94 -_080F7E8C: .4byte 0x0000ffff -_080F7E90: - bl Random - lsls r0, 16 - lsrs r0, 16 - mov r1, r10 - bl __umodsi3 - lsls r0, 16 - lsrs r2, r0, 16 - movs r1, 0 - adds r4, r5, 0x1 - lsls r6, r5, 1 - cmp r5, 0x5 - bhi _080F7ECC - mov r3, r8 - ldrh r0, [r3] - b _080F7EC2 -_080F7EB2: - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r5, 0x5 - bhi _080F7ECC - lsls r0, r1, 2 - adds r0, r3, r0 - ldrh r0, [r0] -_080F7EC2: - subs r0, r2, r0 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r0, 0 - bgt _080F7EB2 -_080F7ECC: - cmp r1, 0x6 - bne _080F7ED2 - movs r1, 0 -_080F7ED2: - lsls r0, r1, 2 - add r0, sp - ldrh r0, [r0] - bl sub_80EB784 - mov r2, r9 - adds r1, r2, r6 - strh r0, [r1] -_080F7EE2: - lsls r0, r4, 16 - lsrs r5, r0, 16 - cmp r5, 0x9 - bls _080F7E56 - add sp, 0x18 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80F7DC0 - - thumb_func_start sub_80F7EFC -sub_80F7EFC: @ 80F7EFC - ldr r0, _080F7F08 @ =gSaveBlock1 + 0x2D94 - adds r0, 0x29 - movs r1, 0 - strb r1, [r0] - bx lr - .align 2, 0 -_080F7F08: .4byte gSaveBlock1 + 0x2D94 - thumb_func_end sub_80F7EFC - - thumb_func_start sub_80F7F0C -sub_80F7F0C: @ 80F7F0C - ldr r1, _080F7F14 @ =gSaveBlock1 + 0x2D94 - movs r0, 0 - strb r0, [r1, 0x1] - bx lr - .align 2, 0 -_080F7F14: .4byte gSaveBlock1 + 0x2D94 - thumb_func_end sub_80F7F0C - - thumb_func_start sub_80F7F18 -sub_80F7F18: @ 80F7F18 - push {lr} - bl sub_8109A20 - pop {r0} - bx r0 - thumb_func_end sub_80F7F18 - - thumb_func_start sub_80F7F24 -sub_80F7F24: @ 80F7F24 - push {lr} - bl sub_80F8428 - pop {r0} - bx r0 - thumb_func_end sub_80F7F24 - - thumb_func_start sub_80F7F30 -sub_80F7F30: @ 80F7F30 - push {lr} - bl GetCurrentMauvilleOldMan - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x4 - bhi _080F7F76 - lsls r0, 2 - ldr r1, _080F7F48 @ =_080F7F4C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080F7F48: .4byte _080F7F4C - .align 2, 0 -_080F7F4C: - .4byte _080F7F60 - .4byte _080F7F66 - .4byte _080F7F72 - .4byte _080F7F6C - .4byte _080F7F76 -_080F7F60: - bl sub_80F7EFC - b _080F7F76 -_080F7F66: - bl sub_80F7F0C - b _080F7F76 -_080F7F6C: - bl sub_80F7F24 - b _080F7F76 -_080F7F72: - bl sub_80F7F18 -_080F7F76: - bl sub_80F83D0 - pop {r0} - bx r0 - thumb_func_end sub_80F7F30 - - thumb_func_start sub_80F7F80 -sub_80F7F80: @ 80F7F80 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _080F7FA8 @ =sub_80F8184 - movs r1, 0x50 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080F7FAC @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - strh r4, [r1, 0x12] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080F7FA8: .4byte sub_80F8184 -_080F7FAC: .4byte gTasks - thumb_func_end sub_80F7F80 - - thumb_func_start sub_80F7FB0 -sub_80F7FB0: @ 80F7FB0 - push {r4-r7,lr} - adds r6, r1, 0 - movs r1, 0x8 - ldrsh r0, [r0, r1] - cmp r0, 0x5 - bls _080F7FBE - b _080F817A -_080F7FBE: - lsls r0, 2 - ldr r1, _080F7FC8 @ =_080F7FCC - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080F7FC8: .4byte _080F7FCC - .align 2, 0 -_080F7FCC: - .4byte _080F7FE4 - .4byte _080F817A - .4byte _080F8040 - .4byte _080F8074 - .4byte _080F8074 - .4byte _080F817A -_080F7FE4: - ldr r2, _080F8034 @ =gSaveBlock1 + 0x2D94 - ldr r0, _080F8038 @ =gSpecialVar_0x8004 - ldrh r0, [r0] - adds r1, r2, 0 - adds r1, 0xE - cmp r0, 0 - bne _080F7FF4 - adds r1, r2, 0x2 -_080F7FF4: - adds r2, r1, 0 - adds r1, r6, 0 - adds r1, 0xC - movs r3, 0x5 -_080F7FFC: - ldrh r0, [r2] - strh r0, [r1] - adds r2, 0x2 - adds r1, 0x2 - subs r3, 0x1 - cmp r3, 0 - bge _080F7FFC - ldr r2, _080F803C @ =0x0000ffff - adds r4, r2, 0 - movs r2, 0 - adds r1, r6, 0 - adds r1, 0x18 - movs r3, 0x5 -_080F8016: - ldrh r0, [r1] - orrs r0, r4 - strh r0, [r1] - strh r2, [r1, 0x2] - strh r2, [r1, 0x4] - strh r2, [r1, 0x6] - adds r1, 0x8 - subs r3, 0x1 - cmp r3, 0 - bge _080F8016 - movs r0, 0 - strb r0, [r6] - strb r0, [r6, 0x1] - strh r0, [r6, 0x4] - b _080F817A - .align 2, 0 -_080F8034: .4byte gSaveBlock1 + 0x2D94 -_080F8038: .4byte gSpecialVar_0x8004 -_080F803C: .4byte 0x0000ffff -_080F8040: - ldrb r1, [r6] - lsls r1, 1 - adds r0, r6, 0 - adds r0, 0xC - adds r0, r1 - ldrh r4, [r0] - lsrs r0, r4, 9 - ldr r1, _080F8070 @ =0x000001ff - ands r1, r4 - bl sub_814A2D0 - adds r1, r0, 0 - movs r0, 0 - strh r0, [r6, 0x4] - movs r2, 0x3 - ands r2, r4 - lsrs r4, 3 - movs r0, 0x1 - ands r4, r0 - adds r2, r4 - adds r0, r6, 0 - bl sub_814A2EC - b _080F817A - .align 2, 0 -_080F8070: .4byte 0x000001ff -_080F8074: - ldrb r1, [r6, 0x1] - lsls r0, r1, 3 - adds r0, 0x18 - adds r7, r6, r0 - ldrb r0, [r6, 0x3] - cmp r0, 0x1 - beq _080F8124 - cmp r0, 0x1 - bgt _080F808C - cmp r0, 0 - beq _080F8092 - b _080F817A -_080F808C: - cmp r0, 0xFE - beq _080F8170 - b _080F817A -_080F8092: - ldrb r0, [r6, 0x2] - cmp r0, 0 - bne _080F80D0 - cmp r1, 0x6 - beq _080F80A2 - ldrh r0, [r7] - cmp r0, 0xFF - bne _080F80A6 -_080F80A2: - movs r0, 0xFE - b _080F8178 -_080F80A6: - ldrh r0, [r7, 0x2] - strb r0, [r6, 0x2] - ldrh r0, [r7] - cmp r0, 0x32 - bhi _080F80CA - movs r1, 0x3 - bl __udivsi3 - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - lsls r0, r1, 1 - adds r0, r1 - adds r0, 0xF9 - lsls r0, 16 - lsrs r0, 16 - bl m4aSongNumStart -_080F80CA: - movs r0, 0x1 - strb r0, [r6, 0x3] - b _080F8114 -_080F80D0: - ldrh r1, [r6, 0xA] - movs r2, 0xA - ldrsh r0, [r6, r2] - cmp r0, 0xA - ble _080F80E0 - ldrh r0, [r6, 0x6] - subs r0, 0x2 - strh r0, [r6, 0x6] -_080F80E0: - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080F80EE - ldrh r0, [r6, 0x8] - adds r0, 0x40 - b _080F80F2 -_080F80EE: - ldrh r0, [r6, 0x8] - subs r0, 0x40 -_080F80F2: - strh r0, [r6, 0x8] - ldr r4, _080F811C @ =gMPlay_SE2 - ldr r5, _080F8120 @ =0x0000ffff - ldrh r2, [r6, 0x6] - adds r0, r4, 0 - adds r1, r5, 0 - bl m4aMPlayVolumeControl - movs r0, 0x8 - ldrsh r2, [r6, r0] - adds r0, r4, 0 - adds r1, r5, 0 - bl m4aMPlayPitchControl - ldrh r0, [r6, 0xA] - adds r0, 0x1 - strh r0, [r6, 0xA] -_080F8114: - ldrb r0, [r6, 0x2] - subs r0, 0x1 - strb r0, [r6, 0x2] - b _080F817A - .align 2, 0 -_080F811C: .4byte gMPlay_SE2 -_080F8120: .4byte 0x0000ffff -_080F8124: - adds r0, r1, 0x1 - movs r1, 0 - strb r0, [r6, 0x1] - strb r1, [r6, 0x3] - ldrh r0, [r7] - cmp r0, 0x32 - bhi _080F817A - ldrh r0, [r7, 0x6] - lsls r0, 4 - movs r1, 0x80 - lsls r1, 1 - adds r0, r1 - strh r0, [r6, 0x6] - ldr r4, _080F8168 @ =gMPlay_SE2 - ldr r5, _080F816C @ =0x0000ffff - ldrh r2, [r6, 0x6] - adds r0, r4, 0 - adds r1, r5, 0 - bl m4aMPlayVolumeControl - movs r2, 0x80 - lsls r2, 2 - adds r0, r2, 0 - ldrh r7, [r7, 0x4] - adds r0, r7 - strh r0, [r6, 0x8] - movs r0, 0x8 - ldrsh r2, [r6, r0] - adds r0, r4, 0 - adds r1, r5, 0 - bl m4aMPlayPitchControl - b _080F817A - .align 2, 0 -_080F8168: .4byte gMPlay_SE2 -_080F816C: .4byte 0x0000ffff -_080F8170: - ldr r0, _080F8180 @ =gMPlay_SE2 - bl m4aMPlayStop - movs r0, 0xFF -_080F8178: - strb r0, [r6, 0x3] -_080F817A: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080F8180: .4byte gMPlay_SE2 - thumb_func_end sub_80F7FB0 - - thumb_func_start sub_80F8184 -sub_80F8184: @ 80F8184 - push {r4-r7,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r6, r0, 24 - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - ldr r1, _080F81B4 @ =gTasks - adds r5, r0, r1 - ldr r1, _080F81B8 @ =gUnknown_03005DA0 - adds r0, r5, 0 - bl sub_80F7FB0 - movs r1, 0x8 - ldrsh r0, [r5, r1] - cmp r0, 0x5 - bls _080F81A8 - b _080F83C8 -_080F81A8: - lsls r0, 2 - ldr r1, _080F81BC @ =_080F81C0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080F81B4: .4byte gTasks -_080F81B8: .4byte gUnknown_03005DA0 -_080F81BC: .4byte _080F81C0 - .align 2, 0 -_080F81C0: - .4byte _080F81D8 - .4byte _080F8218 - .4byte _080F8228 - .4byte _080F82D8 - .4byte _080F83B8 - .4byte _080F82C6 -_080F81D8: - bl sub_80F7BA0 - ldr r4, _080F820C @ =gMenuWindowPtr - ldr r0, [r4] - ldr r1, _080F8210 @ =gWindowConfig_81E6CE4 - bl InitWindowFromConfig - ldr r0, [r4] - ldr r1, _080F8214 @ =gStringVar4 - movs r2, 0xF - str r2, [sp] - movs r2, 0x2 - movs r3, 0x4 - bl sub_8002EB0 - movs r0, 0 - strh r0, [r5, 0xA] - strh r0, [r5, 0xC] - strh r0, [r5, 0xE] - strh r0, [r5, 0x10] - movs r0, 0x4 - bl FadeOutBGMTemporarily - movs r0, 0x1 - b _080F83C6 - .align 2, 0 -_080F820C: .4byte gMenuWindowPtr -_080F8210: .4byte gWindowConfig_81E6CE4 -_080F8214: .4byte gStringVar4 -_080F8218: - bl IsBGMPausedOrStopped - lsls r0, 24 - cmp r0, 0 - bne _080F8224 - b _080F83C8 -_080F8224: - movs r0, 0x2 - b _080F83C6 -_080F8228: - ldr r4, _080F8240 @ =gSaveBlock1 + 0x2D94 - movs r2, 0xE - ldrsh r1, [r5, r2] - ldr r0, _080F8244 @ =gStringVar4 - adds r1, r0 - movs r3, 0 - ldrb r0, [r1] - ldr r7, _080F8248 @ =gUnknown_03005DA0 - ldrh r2, [r5, 0x12] - ldr r6, _080F824C @ =gUnknown_020388BC - b _080F825A - .align 2, 0 -_080F8240: .4byte gSaveBlock1 + 0x2D94 -_080F8244: .4byte gStringVar4 -_080F8248: .4byte gUnknown_03005DA0 -_080F824C: .4byte gUnknown_020388BC -_080F8250: - adds r1, 0x1 - adds r0, r3, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 - ldrb r0, [r1] -_080F825A: - cmp r0, 0 - beq _080F826A - cmp r0, 0xFE - beq _080F826A - cmp r0, 0xFC - beq _080F826A - cmp r0, 0xFF - bne _080F8250 -_080F826A: - cmp r2, 0 - bne _080F8278 - movs r0, 0x10 - ldrsh r1, [r5, r0] - lsls r1, 1 - adds r0, r4, 0x2 - b _080F8282 -_080F8278: - movs r2, 0x10 - ldrsh r1, [r5, r2] - lsls r1, 1 - adds r0, r4, 0 - adds r0, 0xE -_080F8282: - adds r0, r1 - ldrh r0, [r0] - movs r1, 0x3 - ands r1, r0 - lsrs r0, 3 - movs r2, 0x1 - ands r0, r2 - adds r1, r0 - strh r1, [r6] - movs r1, 0x4 - ldrsh r0, [r7, r1] - adds r1, r3, 0 - bl __divsi3 - movs r1, 0 - strh r0, [r7, 0x4] - lsls r0, 16 - cmp r0, 0 - bgt _080F82AC - movs r0, 0x1 - strh r0, [r7, 0x4] -_080F82AC: - ldrh r0, [r5, 0x10] - adds r0, 0x1 - strh r0, [r5, 0x10] - movs r2, 0xC - ldrsh r0, [r5, r2] - cmp r0, 0 - bne _080F82BE - movs r0, 0x3 - b _080F82C0 -_080F82BE: - movs r0, 0x5 -_080F82C0: - strh r0, [r5, 0x8] - strh r1, [r5, 0xA] - b _080F83C8 -_080F82C6: - ldrh r1, [r5, 0xC] - movs r2, 0xC - ldrsh r0, [r5, r2] - cmp r0, 0 - bne _080F82D2 - b _080F83C4 -_080F82D2: - subs r0, r1, 0x1 - strh r0, [r5, 0xC] - b _080F83C8 -_080F82D8: - ldr r1, _080F8304 @ =gStringVar4 - movs r2, 0xE - ldrsh r0, [r5, r2] - adds r0, r1 - ldrb r4, [r0] - cmp r4, 0xFF - bne _080F830C - movs r0, 0xC8 - lsls r0, 1 - movs r1, 0x6 - bl FadeInNewBGM - ldr r0, _080F8308 @ =gMPlay_SE2 - movs r1, 0x2 - bl m4aMPlayFadeOutTemporarily - bl EnableBothScriptContexts - adds r0, r6, 0 - bl DestroyTask - b _080F83C8 - .align 2, 0 -_080F8304: .4byte gStringVar4 -_080F8308: .4byte gMPlay_SE2 -_080F830C: - cmp r4, 0 - bne _080F832C - ldr r0, _080F8328 @ =gMenuWindowPtr - ldr r0, [r0] - bl sub_8003418 - ldrh r0, [r5, 0xE] - adds r0, 0x1 - strh r0, [r5, 0xE] - movs r0, 0x2 - strh r0, [r5, 0x8] - strh r4, [r5, 0xC] - b _080F83C8 - .align 2, 0 -_080F8328: .4byte gMenuWindowPtr -_080F832C: - cmp r4, 0xFE - bne _080F8340 - ldrh r0, [r5, 0xE] - adds r0, 0x1 - movs r1, 0 - strh r0, [r5, 0xE] - movs r0, 0x2 - strh r0, [r5, 0x8] - strh r1, [r5, 0xC] - b _080F83C8 -_080F8340: - cmp r4, 0xFC - bne _080F8354 - ldrh r0, [r5, 0xE] - adds r0, 0x2 - strh r0, [r5, 0xE] - movs r0, 0x2 - strh r0, [r5, 0x8] - movs r0, 0x8 - strh r0, [r5, 0xC] - b _080F83C8 -_080F8354: - cmp r4, 0x37 - bne _080F8374 - movs r4, 0 - strb r4, [r0] - ldr r0, _080F8370 @ =gMenuWindowPtr - ldr r0, [r0] - bl sub_8003418 - ldrh r0, [r5, 0xE] - adds r0, 0x1 - strh r0, [r5, 0xE] - strh r4, [r5, 0xC] - b _080F83C8 - .align 2, 0 -_080F8370: .4byte gMenuWindowPtr -_080F8374: - movs r1, 0xA - ldrsh r0, [r5, r1] - cmp r0, 0x1 - beq _080F8394 - cmp r0, 0x1 - bgt _080F8386 - cmp r0, 0 - beq _080F838C - b _080F83C8 -_080F8386: - cmp r0, 0x2 - beq _080F83A0 - b _080F83C8 -_080F838C: - ldr r0, _080F839C @ =gMenuWindowPtr - ldr r0, [r0] - bl sub_8003418 -_080F8394: - ldrh r0, [r5, 0xA] - adds r0, 0x1 - strh r0, [r5, 0xA] - b _080F83C8 - .align 2, 0 -_080F839C: .4byte gMenuWindowPtr -_080F83A0: - ldrh r0, [r5, 0xE] - adds r0, 0x1 - movs r1, 0 - strh r0, [r5, 0xE] - strh r1, [r5, 0xA] - ldr r0, _080F83B4 @ =gUnknown_03005DA0 - ldrh r0, [r0, 0x4] - strh r0, [r5, 0xC] - movs r0, 0x4 - b _080F83C6 - .align 2, 0 -_080F83B4: .4byte gUnknown_03005DA0 -_080F83B8: - ldrh r0, [r5, 0xC] - subs r0, 0x1 - strh r0, [r5, 0xC] - lsls r0, 16 - cmp r0, 0 - bne _080F83C8 -_080F83C4: - movs r0, 0x3 -_080F83C6: - strh r0, [r5, 0x8] -_080F83C8: - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80F8184 - - thumb_func_start sub_80F83D0 -sub_80F83D0: @ 80F83D0 - push {r4,lr} - ldr r4, _080F83F4 @ =0x00004010 - bl GetCurrentMauvilleOldMan - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 8 - movs r0, 0x8A - lsls r0, 15 - adds r1, r0 - lsrs r1, 16 - adds r0, r4, 0 - bl VarSet - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080F83F4: .4byte 0x00004010 - thumb_func_end sub_80F83D0 - - thumb_func_start sub_80F83F8 -sub_80F83F8: @ 80F83F8 - push {r4,lr} - ldr r0, _080F8424 @ =gSaveBlock1 + 0x2D94 - movs r2, 0 - movs r1, 0x3 - strb r1, [r0] - strb r2, [r0, 0x1] - movs r4, 0 - movs r3, 0xFF - adds r1, r0, 0x4 - movs r2, 0x3 -_080F840C: - strb r4, [r1] - ldrb r0, [r1, 0x4] - orrs r0, r3 - strb r0, [r1, 0x4] - adds r1, 0x1 - subs r2, 0x1 - cmp r2, 0 - bge _080F840C - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080F8424: .4byte gSaveBlock1 + 0x2D94 - thumb_func_end sub_80F83F8 - - thumb_func_start sub_80F8428 -sub_80F8428: @ 80F8428 - ldr r0, _080F8434 @ =gSaveBlock1 + 0x2D94 - movs r2, 0 - movs r1, 0x3 - strb r1, [r0] - strb r2, [r0, 0x1] - bx lr - .align 2, 0 -_080F8434: .4byte gSaveBlock1 + 0x2D94 - thumb_func_end sub_80F8428 - - thumb_func_start sub_80F8438 -sub_80F8438: @ 80F8438 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x32 - bne _080F8444 - movs r0, 0 -_080F8444: - bl GetGameStat - pop {r1} - bx r1 - thumb_func_end sub_80F8438 - - thumb_func_start sub_80F844C -sub_80F844C: @ 80F844C - push {lr} - adds r3, r0, 0 - movs r2, 0 - ldr r1, _080F8460 @ =gUnknown_083E53E0 -_080F8454: - ldrb r0, [r1] - cmp r0, r3 - bne _080F8464 - adds r0, r1, 0 - b _080F846E - .align 2, 0 -_080F8460: .4byte gUnknown_083E53E0 -_080F8464: - adds r1, 0x10 - adds r2, 0x1 - cmp r2, 0x23 - ble _080F8454 - ldr r0, _080F8474 @ =gUnknown_083E5610 -_080F846E: - pop {r1} - bx r1 - .align 2, 0 -_080F8474: .4byte gUnknown_083E5610 - thumb_func_end sub_80F844C - - thumb_func_start sub_80F8478 -sub_80F8478: @ 80F8478 - push {lr} - bl sub_80F844C - ldr r0, [r0, 0x4] - pop {r1} - bx r1 - thumb_func_end sub_80F8478 - - thumb_func_start sub_80F8484 -sub_80F8484: @ 80F8484 - push {lr} - bl sub_80F844C - ldr r0, [r0, 0xC] - pop {r1} - bx r1 - thumb_func_end sub_80F8484 - - thumb_func_start sub_80F8490 -sub_80F8490: @ 80F8490 - push {lr} - bl sub_80F844C - ldr r0, [r0, 0x8] - pop {r1} - bx r1 - thumb_func_end sub_80F8490 - - thumb_func_start sub_80F849C -sub_80F849C: @ 80F849C - push {lr} - movs r1, 0 - ldr r2, _080F84C4 @ =gSaveBlock1 + 0x2D94 - ldrb r0, [r2, 0x4] - cmp r0, 0 - beq _080F84BC - adds r2, 0x4 -_080F84AA: - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x3 - bhi _080F84BC - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0 - bne _080F84AA -_080F84BC: - adds r0, r1, 0 - pop {r1} - bx r1 - .align 2, 0 -_080F84C4: .4byte gSaveBlock1 + 0x2D94 - thumb_func_end sub_80F849C - - thumb_func_start sub_80F84C8 -sub_80F84C8: @ 80F84C8 - lsls r0, 2 - ldr r1, _080F84E8 @ =gSaveBlock1 + 0x2DB8 - adds r0, r1 - ldrb r2, [r0] - ldrb r1, [r0, 0x1] - lsls r1, 8 - orrs r2, r1 - ldrb r1, [r0, 0x2] - lsls r1, 16 - orrs r2, r1 - ldrb r0, [r0, 0x3] - lsls r0, 24 - orrs r2, r0 - adds r0, r2, 0 - bx lr - .align 2, 0 -_080F84E8: .4byte gSaveBlock1 + 0x2DB8 - thumb_func_end sub_80F84C8 - - thumb_func_start sub_80F84EC -sub_80F84EC: @ 80F84EC - lsls r0, 2 - ldr r2, _080F8504 @ =gSaveBlock1 + 0x2DB8 - adds r0, r2 - strb r1, [r0] - lsrs r2, r1, 8 - strb r2, [r0, 0x1] - lsrs r2, r1, 16 - strb r2, [r0, 0x2] - lsrs r1, 24 - strb r1, [r0, 0x3] - bx lr - .align 2, 0 -_080F8504: .4byte gSaveBlock1 + 0x2DB8 - thumb_func_end sub_80F84EC - - thumb_func_start sub_80F8508 -sub_80F8508: @ 80F8508 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r0, _080F8528 @ =gSaveBlock1 + 0x2D94 - adds r0, 0x4 - adds r0, r5, r0 - ldrb r0, [r0] - bl sub_80F8438 - adds r4, r0, 0 - adds r0, r5, 0 - bl sub_80F84C8 - cmp r4, r0 - bhi _080F852C - movs r0, 0 - b _080F852E - .align 2, 0 -_080F8528: .4byte gSaveBlock1 + 0x2D94 -_080F852C: - movs r0, 0x1 -_080F852E: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80F8508 - - thumb_func_start sub_80F8534 -sub_80F8534: @ 80F8534 - push {r4,r5,lr} - adds r5, r1, 0 - lsls r4, r0, 3 - subs r4, r0 - ldr r0, _080F855C @ =gSaveBlock1 + 0x2D9C - adds r4, r0 - adds r0, r5, 0 - movs r1, 0xFF - movs r2, 0x8 - bl memset - adds r0, r5, 0 - adds r1, r4, 0 - movs r2, 0x7 - bl memcpy - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080F855C: .4byte gSaveBlock1 + 0x2D9C - thumb_func_end sub_80F8534 - - thumb_func_start sub_80F8560 -sub_80F8560: @ 80F8560 - push {r4-r6,lr} - adds r6, r1, 0 - lsls r5, r0, 3 - subs r5, r0 - ldr r0, _080F8594 @ =gSaveBlock1 + 0x2D9C - adds r5, r0 - adds r0, r6, 0 - bl StringLength - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r5, 0 - movs r1, 0xFF - movs r2, 0x7 - bl memset - adds r0, r5, 0 - adds r1, r6, 0 - adds r2, r4, 0 - bl StringCopyN - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080F8594: .4byte gSaveBlock1 + 0x2D9C - thumb_func_end sub_80F8560 - - thumb_func_start sub_80F8598 -sub_80F8598: @ 80F8598 - push {r4-r6,lr} - adds r5, r0, 0 - adds r6, r1, 0 - ldr r0, _080F85EC @ =gSaveBlock1 + 0x2D94 - adds r0, 0x4 - adds r0, r5, r0 - strb r6, [r0] - ldr r1, _080F85F0 @ =gSaveBlock2 - adds r0, r5, 0 - bl sub_80F8560 - lsls r4, r6, 24 - lsrs r4, 24 - adds r0, r4, 0 - bl sub_80F8438 - adds r1, r0, 0 - adds r0, r5, 0 - bl sub_80F84EC - ldr r5, _080F85F4 @ =gStringVar1 - adds r0, r4, 0 - bl sub_80F8438 - adds r1, r0, 0 - adds r0, r5, 0 - movs r2, 0 - movs r3, 0xA - bl ConvertIntToDecimalStringN - ldr r4, _080F85F8 @ =gStringVar2 - adds r0, r6, 0 - bl sub_80F8490 - adds r1, r0, 0 - adds r0, r4, 0 - bl StringCopy - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080F85EC: .4byte gSaveBlock1 + 0x2D94 -_080F85F0: .4byte gSaveBlock2 -_080F85F4: .4byte gStringVar1 -_080F85F8: .4byte gStringVar2 - thumb_func_end sub_80F8598 - - thumb_func_start sub_80F85FC -sub_80F85FC: @ 80F85FC - push {r4-r7,lr} - adds r7, r0, 0 - adds r6, r1, 0 - movs r5, 0 - cmp r5, r6 - bge _080F8612 -_080F8608: - adds r0, r7, r5 - strb r5, [r0] - adds r5, 0x1 - cmp r5, r6 - blt _080F8608 -_080F8612: - cmp r6, 0 - ble _080F8648 - adds r5, r6, 0 -_080F8618: - bl Random - lsls r0, 16 - lsrs r0, 16 - adds r1, r6, 0 - bl __modsi3 - adds r4, r0, 0 - bl Random - lsls r0, 16 - lsrs r0, 16 - adds r1, r6, 0 - bl __modsi3 - adds r4, r7, r4 - ldrb r2, [r4] - adds r0, r7, r0 - ldrb r1, [r0] - strb r1, [r4] - strb r2, [r0] - subs r5, 0x1 - cmp r5, 0 - bne _080F8618 -_080F8648: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80F85FC - - thumb_func_start sub_80F8650 -sub_80F8650: @ 80F8650 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - mov r7, sp - mov r10, sp - ldr r0, _080F86D4 @ =gUnknown_083E5620 - ldr r0, [r0] - lsls r0, 3 - lsrs r0, 3 - adds r0, 0x3 - lsrs r0, 2 - lsls r0, 2 - mov r1, sp - subs r1, r0 - mov sp, r1 - mov r8, sp - mov r0, sp - movs r1, 0x24 - bl sub_80F85FC - movs r5, 0 - ldr r0, _080F86D8 @ =gUnknown_083E53E0 - mov r9, r0 - ldr r3, _080F86DC @ =gSaveBlock1 + 0x2D94 -_080F8686: - mov r1, r8 - adds r0, r1, r5 - ldrb r0, [r0] - lsls r0, 4 - add r0, r9 - ldrb r4, [r0] - ldrb r6, [r0, 0x1] - movs r1, 0 - ldrb r0, [r3, 0x4] - cmp r0, r4 - beq _080F86AC - ldr r2, _080F86E0 @ =gSaveBlock1 + 0x2D98 -_080F869E: - adds r1, 0x1 - cmp r1, 0x3 - bgt _080F86AC - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, r4 - bne _080F869E -_080F86AC: - cmp r1, 0x4 - bne _080F86E4 - adds r0, r4, 0 - str r3, [r7] - bl sub_80F8438 - ldr r3, [r7] - cmp r0, r6 - bcc _080F86E4 - movs r0, 0x1 - strb r0, [r3, 0x1] - bl sub_80F849C - lsls r0, 24 - lsrs r0, 24 - adds r1, r4, 0 - bl sub_80F8598 - movs r0, 0x1 - b _080F86EC - .align 2, 0 -_080F86D4: .4byte gUnknown_083E5620 -_080F86D8: .4byte gUnknown_083E53E0 -_080F86DC: .4byte gSaveBlock1 + 0x2D94 -_080F86E0: .4byte gSaveBlock1 + 0x2D98 -_080F86E4: - adds r5, 0x1 - cmp r5, 0x23 - ble _080F8686 - movs r0, 0 -_080F86EC: - mov sp, r10 - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_80F8650 - - thumb_func_start sub_80F8700 -sub_80F8700: @ 80F8700 - push {r4-r6,lr} - adds r5, r0, 0 - ldr r0, _080F8748 @ =gSaveBlock1 + 0x2D94 - adds r0, 0x4 - adds r0, r5, r0 - ldrb r6, [r0] - ldr r4, _080F874C @ =gStringVar1 - adds r0, r5, 0 - bl sub_80F84C8 - adds r1, r0, 0 - adds r0, r4, 0 - movs r2, 0 - movs r3, 0xA - bl ConvertIntToDecimalStringN - ldr r4, _080F8750 @ =gStringVar2 - adds r0, r6, 0 - bl sub_80F8490 - adds r1, r0, 0 - adds r0, r4, 0 - bl StringCopy - ldr r1, _080F8754 @ =gStringVar3 - adds r0, r5, 0 - bl sub_80F8534 - adds r0, r6, 0 - bl sub_80F8484 - bl ShowFieldMessage - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080F8748: .4byte gSaveBlock1 + 0x2D94 -_080F874C: .4byte gStringVar1 -_080F8750: .4byte gStringVar2 -_080F8754: .4byte gStringVar3 - thumb_func_end sub_80F8700 - - thumb_func_start sub_80F8758 -sub_80F8758: @ 80F8758 - push {r4-r6,lr} - bl sub_80F849C - adds r3, r0, 0 - lsls r3, 25 - movs r0, 0x80 - lsls r0, 19 - adds r3, r0 - lsrs r3, 24 - movs r0, 0 - movs r1, 0 - movs r2, 0x19 - bl MenuDrawTextWindow - movs r4, 0 - ldr r1, _080F87BC @ =gSaveBlock1 + 0x2D94 - ldrb r0, [r1, 0x4] - cmp r0, 0 - beq _080F87A4 - adds r6, r1, 0x4 - movs r5, 0x80 - lsls r5, 18 -_080F8784: - bl sub_80F8478 - lsrs r2, r5, 24 - movs r1, 0x1 - bl MenuPrint - movs r1, 0x80 - lsls r1, 18 - adds r5, r1 - adds r4, 0x1 - cmp r4, 0x3 - bgt _080F87A4 - adds r0, r4, r6 - ldrb r0, [r0] - cmp r0, 0 - bne _080F8784 -_080F87A4: - ldr r0, _080F87C0 @ =gPCText_Cancel - lsls r2, r4, 25 - movs r1, 0x80 - lsls r1, 18 - adds r2, r1 - lsrs r2, 24 - movs r1, 0x1 - bl MenuPrint - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080F87BC: .4byte gSaveBlock1 + 0x2D94 -_080F87C0: .4byte gPCText_Cancel - thumb_func_end sub_80F8758 - - thumb_func_start sub_80F87C4 -sub_80F87C4: @ 80F87C4 - push {r4-r6,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r6, r0, 24 - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - ldr r1, _080F87E4 @ =gTasks - adds r4, r0, r1 - movs r0, 0x8 - ldrsh r5, [r4, r0] - cmp r5, 0 - beq _080F87E8 - cmp r5, 0x1 - beq _080F8810 - b _080F8862 - .align 2, 0 -_080F87E4: .4byte gTasks -_080F87E8: - bl sub_80F8758 - bl sub_80F849C - adds r3, r0, 0 - adds r3, 0x1 - lsls r3, 24 - lsrs r3, 24 - str r5, [sp] - movs r0, 0x18 - str r0, [sp, 0x4] - movs r0, 0 - movs r1, 0x1 - movs r2, 0x2 - bl InitMenu - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _080F8862 -_080F8810: - bl ProcessMenuInput - lsls r0, 24 - asrs r4, r0, 24 - movs r0, 0x2 - negs r0, r0 - cmp r4, r0 - beq _080F8862 - adds r0, 0x1 - cmp r4, r0 - beq _080F8832 - bl sub_80F849C - lsls r0, 24 - lsrs r0, 24 - cmp r4, r0 - bne _080F8840 -_080F8832: - ldr r1, _080F883C @ =gScriptResult - movs r0, 0 - strh r0, [r1] - b _080F8848 - .align 2, 0 -_080F883C: .4byte gScriptResult -_080F8840: - ldr r0, _080F886C @ =gScriptResult - strh r5, [r0] - ldr r0, _080F8870 @ =gUnknown_03000748 - strb r4, [r0] -_080F8848: - bl HandleDestroyMenuCursors - movs r0, 0 - movs r1, 0 - movs r2, 0x19 - movs r3, 0xC - bl MenuZeroFillWindowRect - adds r0, r6, 0 - bl DestroyTask - bl EnableBothScriptContexts -_080F8862: - add sp, 0x8 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080F886C: .4byte gScriptResult -_080F8870: .4byte gUnknown_03000748 - thumb_func_end sub_80F87C4 - - thumb_func_start sub_80F8874 -sub_80F8874: @ 80F8874 - push {lr} - ldr r0, _080F8884 @ =sub_80F87C4 - movs r1, 0x50 - bl CreateTask - pop {r0} - bx r0 - .align 2, 0 -_080F8884: .4byte sub_80F87C4 - thumb_func_end sub_80F8874 - - thumb_func_start sub_80F8888 -sub_80F8888: @ 80F8888 - push {lr} - ldr r0, _080F8898 @ =gUnknown_03000748 - ldrb r0, [r0] - bl sub_80F8700 - pop {r0} - bx r0 - .align 2, 0 -_080F8898: .4byte gUnknown_03000748 - thumb_func_end sub_80F8888 - - thumb_func_start sub_80F889C -sub_80F889C: @ 80F889C - push {lr} - bl sub_80F849C - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - thumb_func_end sub_80F889C - - thumb_func_start sub_80F88AC -sub_80F88AC: @ 80F88AC - push {r4,r5,lr} - ldr r1, _080F88C8 @ =gSaveBlock1 + 0x2D94 - ldr r5, _080F88CC @ =gUnknown_03000748 - ldrb r0, [r5] - adds r1, 0x4 - adds r1, r0, r1 - ldrb r4, [r1] - bl sub_80F8508 - cmp r0, 0x1 - beq _080F88D0 - movs r0, 0 - b _080F88DA - .align 2, 0 -_080F88C8: .4byte gSaveBlock1 + 0x2D94 -_080F88CC: .4byte gUnknown_03000748 -_080F88D0: - ldrb r0, [r5] - adds r1, r4, 0 - bl sub_80F8598 - movs r0, 0x1 -_080F88DA: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80F88AC - - thumb_func_start sub_80F88E0 -sub_80F88E0: @ 80F88E0 - push {lr} - ldr r0, _080F88F0 @ =gSaveBlock1 + 0x2D94 - ldrb r0, [r0, 0x1] - cmp r0, 0 - beq _080F88F4 - movs r0, 0x1 - b _080F88F6 - .align 2, 0 -_080F88F0: .4byte gSaveBlock1 + 0x2D94 -_080F88F4: - movs r0, 0 -_080F88F6: - pop {r1} - bx r1 - thumb_func_end sub_80F88E0 - - thumb_func_start sub_80F88FC -sub_80F88FC: @ 80F88FC - push {lr} - bl sub_80F8650 - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - thumb_func_end sub_80F88FC - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/menu_helpers.s b/asm/menu_helpers.s deleted file mode 100644 index 0f5caf3da..000000000 --- a/asm/menu_helpers.s +++ /dev/null @@ -1,1339 +0,0 @@ - .include "constants/gba_constants.inc" - .include "constants/species_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start sub_80F9020 -sub_80F9020: @ 80F9020 - push {r4,r5,lr} - ldr r4, _080F9054 @ =gBGTilemapBuffers + 0x800 - movs r5, 0x80 - lsls r5, 4 - adds r0, r4, 0 - movs r1, 0 - adds r2, r5, 0 - bl memset - adds r0, r4, r5 - movs r1, 0 - adds r2, r5, 0 - bl memset - movs r0, 0x80 - lsls r0, 5 - adds r4, r0 - adds r0, r4, 0 - movs r1, 0 - adds r2, r5, 0 - bl memset - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080F9054: .4byte gBGTilemapBuffers + 0x800 - thumb_func_end sub_80F9020 - - thumb_func_start sav2_get_text_speed -sav2_get_text_speed: @ 80F9058 - push {r4,r5,lr} - sub sp, 0x8 - adds r5, r0, 0 - lsls r1, 16 - lsrs r4, r1, 16 - bl MenuDisplayMessageBox - cmp r4, 0 - beq _080F907C - ldr r0, _080F908C @ =gBGTilemapBuffers + 0x800 - movs r1, 0x4 - str r1, [sp] - str r4, [sp, 0x4] - movs r1, 0x2 - movs r2, 0xF - movs r3, 0x1A - bl sub_80A3FA0 -_080F907C: - adds r0, r5, 0 - bl sub_8072044 - add sp, 0x8 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080F908C: .4byte gBGTilemapBuffers + 0x800 - thumb_func_end sav2_get_text_speed - - thumb_func_start sub_80F9090 -sub_80F9090: @ 80F9090 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl MenuUpdateWindowText - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080F90AC - ldr r0, _080F90B4 @ =gUnknown_0300074C - ldr r1, [r0] - adds r0, r4, 0 - bl _call_via_r1 -_080F90AC: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080F90B4: .4byte gUnknown_0300074C - thumb_func_end sub_80F9090 - - thumb_func_start DisplayItemMessageOnField -DisplayItemMessageOnField: @ 80F90B8 - push {r4,r5,lr} - adds r4, r0, 0 - adds r0, r1, 0 - adds r5, r2, 0 - adds r1, r3, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r1, 16 - lsrs r1, 16 - bl sav2_get_text_speed - ldr r0, _080F90E8 @ =gUnknown_0300074C - str r5, [r0] - ldr r1, _080F90EC @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _080F90F0 @ =sub_80F9090 - str r1, [r0] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080F90E8: .4byte gUnknown_0300074C -_080F90EC: .4byte gTasks -_080F90F0: .4byte sub_80F9090 - thumb_func_end DisplayItemMessageOnField - - thumb_func_start Task_CallYesOrNoCallback -Task_CallYesOrNoCallback: @ 80F90F4 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl ProcessMenuInputNoWrap_ - lsls r0, 24 - asrs r1, r0, 24 - cmp r1, 0 - beq _080F911A - cmp r1, 0 - bgt _080F9114 - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - beq _080F9130 - b _080F9140 -_080F9114: - cmp r1, 0x1 - beq _080F9130 - b _080F9140 -_080F911A: - movs r0, 0x5 - bl PlaySE - ldr r0, _080F912C @ =gUnknown_020388C4 - ldr r1, [r0] - adds r0, r4, 0 - bl _call_via_r1 - b _080F9140 - .align 2, 0 -_080F912C: .4byte gUnknown_020388C4 -_080F9130: - movs r0, 0x5 - bl PlaySE - ldr r0, _080F9148 @ =gUnknown_020388C4 - ldr r1, [r0, 0x4] - adds r0, r4, 0 - bl _call_via_r1 -_080F9140: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080F9148: .4byte gUnknown_020388C4 - thumb_func_end Task_CallYesOrNoCallback - - thumb_func_start DoYesNoFuncWithChoice -DoYesNoFuncWithChoice: @ 80F914C - lsls r0, 24 - lsrs r0, 24 - ldr r3, _080F916C @ =gUnknown_020388C4 - ldr r2, [r1, 0x4] - ldr r1, [r1] - str r1, [r3] - str r2, [r3, 0x4] - ldr r2, _080F9170 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - ldr r0, _080F9174 @ =Task_CallYesOrNoCallback - str r0, [r1] - bx lr - .align 2, 0 -_080F916C: .4byte gUnknown_020388C4 -_080F9170: .4byte gTasks -_080F9174: .4byte Task_CallYesOrNoCallback - thumb_func_end DoYesNoFuncWithChoice - - thumb_func_start brm_trade_1 -brm_trade_1: @ 80F9178 - push {r4-r7,lr} - sub sp, 0x4 - adds r5, r0, 0 - lsls r1, 24 - lsrs r4, r1, 24 - lsls r2, 24 - lsrs r7, r2, 24 - lsls r3, 24 - lsrs r6, r3, 24 - ldr r1, _080F91C0 @ =gUnknown_083E5A18 - mov r0, sp - movs r2, 0x4 - bl memcpy - cmp r4, 0xFF - beq _080F91CC - mov r0, sp - strb r4, [r0, 0x2] - ldr r4, _080F91C4 @ =gStringVar4 - adds r0, r4, 0 - mov r1, sp - bl StringCopy - adds r0, r4, 0 - adds r1, r5, 0 - bl StringAppend - mov r1, sp - ldr r0, _080F91C8 @ =gMenuWindowPtr - ldr r0, [r0] - ldrb r0, [r0, 0x6] - strb r0, [r1, 0x2] - adds r0, r4, 0 - bl StringAppend - b _080F91D4 - .align 2, 0 -_080F91C0: .4byte gUnknown_083E5A18 -_080F91C4: .4byte gStringVar4 -_080F91C8: .4byte gMenuWindowPtr -_080F91CC: - ldr r0, _080F91E8 @ =gStringVar4 - adds r1, r5, 0 - bl StringCopy -_080F91D4: - ldr r0, _080F91E8 @ =gStringVar4 - adds r1, r7, 0 - adds r2, r6, 0 - bl MenuPrint - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080F91E8: .4byte gStringVar4 - thumb_func_end brm_trade_1 - - thumb_func_start unref_sub_80F91EC -unref_sub_80F91EC: @ 80F91EC - push {r4-r7,lr} - mov r7, r8 - push {r7} - mov r12, r0 - adds r4, r2, 0 - adds r2, r3, 0 - ldr r0, [sp, 0x18] - ldr r3, [sp, 0x1C] - lsls r1, 24 - lsrs r1, 24 - mov r8, r1 - lsls r4, 24 - lsrs r4, 24 - lsls r2, 24 - lsrs r2, 24 - lsls r0, 24 - lsrs r7, r0, 24 - lsls r3, 24 - lsrs r5, r3, 24 - ldr r6, _080F9234 @ =gStringVar1 - adds r0, r6, 0 - mov r1, r12 - adds r3, r4, 0 - bl ConvertIntToDecimalStringN - mov r0, r8 - cmp r0, 0xFF - beq _080F9238 - adds r0, r6, 0 - mov r1, r8 - adds r2, r7, 0 - adds r3, r5, 0 - bl brm_trade_1 - b _080F9242 - .align 2, 0 -_080F9234: .4byte gStringVar1 -_080F9238: - adds r0, r6, 0 - adds r1, r7, 0 - adds r2, r5, 0 - bl MenuPrint -_080F9242: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end unref_sub_80F91EC - - thumb_func_start unref_sub_80F924C -unref_sub_80F924C: @ 80F924C - push {r4-r6,lr} - sub sp, 0x4 - adds r5, r0, 0 - adds r6, r1, 0 - adds r4, r2, 0 - lsls r5, 24 - lsrs r5, 24 - lsls r6, 24 - lsrs r6, 24 - lsls r4, 24 - lsrs r4, 24 - ldr r1, _080F9280 @ =gUnknown_083E5A1C - mov r0, sp - movs r2, 0x2 - bl memcpy - mov r0, sp - adds r1, r4, 0 - adds r2, r5, 0 - adds r3, r6, 0 - bl brm_trade_1 - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080F9280: .4byte gUnknown_083E5A1C - thumb_func_end unref_sub_80F924C - - thumb_func_start sub_80F9284 -sub_80F9284: @ 80F9284 - push {lr} - ldr r0, _080F92A0 @ =gSaveBlock2 - ldrb r0, [r0, 0x13] - cmp r0, 0x1 - bne _080F92B6 - ldr r0, _080F92A4 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x80 - lsls r0, 2 - ands r0, r1 - cmp r0, 0 - beq _080F92A8 - movs r0, 0x1 - b _080F92B8 - .align 2, 0 -_080F92A0: .4byte gSaveBlock2 -_080F92A4: .4byte gMain -_080F92A8: - movs r0, 0x80 - lsls r0, 1 - ands r0, r1 - cmp r0, 0 - beq _080F92B6 - movs r0, 0x2 - b _080F92B8 -_080F92B6: - movs r0, 0 -_080F92B8: - pop {r1} - bx r1 - thumb_func_end sub_80F9284 - - thumb_func_start sub_80F92BC -sub_80F92BC: @ 80F92BC - push {lr} - ldr r0, _080F92D8 @ =gSaveBlock2 - ldrb r0, [r0, 0x13] - cmp r0, 0x1 - bne _080F92EE - ldr r0, _080F92DC @ =gMain - ldrh r1, [r0, 0x30] - movs r0, 0x80 - lsls r0, 2 - ands r0, r1 - cmp r0, 0 - beq _080F92E0 - movs r0, 0x1 - b _080F92F0 - .align 2, 0 -_080F92D8: .4byte gSaveBlock2 -_080F92DC: .4byte gMain -_080F92E0: - movs r0, 0x80 - lsls r0, 1 - ands r0, r1 - cmp r0, 0 - beq _080F92EE - movs r0, 0x2 - b _080F92F0 -_080F92EE: - movs r0, 0 -_080F92F0: - pop {r1} - bx r1 - thumb_func_end sub_80F92BC - - thumb_func_start sub_80F92F4 -sub_80F92F4: @ 80F92F4 - push {lr} - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0xAF - bne _080F9314 - ldr r0, _080F930C @ =gSaveBlock1 - ldrh r1, [r0, 0x4] - ldr r0, _080F9310 @ =0x00001919 - cmp r1, r0 - bne _080F9314 - movs r0, 0 - b _080F9316 - .align 2, 0 -_080F930C: .4byte gSaveBlock1 -_080F9310: .4byte 0x00001919 -_080F9314: - movs r0, 0x1 -_080F9316: - pop {r1} - bx r1 - thumb_func_end sub_80F92F4 - - thumb_func_start sub_80F931C -sub_80F931C: @ 80F931C - push {r4,lr} - lsls r0, 16 - lsrs r4, r0, 16 - bl is_c1_link_related_active - cmp r0, 0x1 - bne _080F933C - adds r0, r4, 0 - bl ItemIsMail - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080F933C - movs r0, 0 - b _080F933E -_080F933C: - movs r0, 0x1 -_080F933E: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80F931C - - thumb_func_start sub_80F9344 -sub_80F9344: @ 80F9344 - push {lr} - bl is_c1_link_related_active - cmp r0, 0x1 - beq _080F9356 - ldr r0, _080F935C @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0x1 - bne _080F9360 -_080F9356: - movs r0, 0x1 - b _080F9362 - .align 2, 0 -_080F935C: .4byte gReceivedRemoteLinkPlayers -_080F9360: - movs r0, 0 -_080F9362: - pop {r1} - bx r1 - thumb_func_end sub_80F9344 - - thumb_func_start sub_80F9368 -sub_80F9368: @ 80F9368 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x8 - movs r0, 0x80 - lsls r0, 19 - movs r1, 0 - strh r1, [r0] - adds r0, 0xE - strh r1, [r0] - subs r0, 0x2 - strh r1, [r0] - subs r0, 0x2 - strh r1, [r0] - subs r0, 0x2 - strh r1, [r0] - adds r0, 0x14 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - subs r0, 0x6 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - subs r0, 0x6 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - subs r0, 0x6 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - movs r3, 0xC0 - lsls r3, 19 - movs r4, 0xC0 - lsls r4, 9 - add r0, sp, 0x4 - mov r8, r0 - mov r2, sp - movs r6, 0 - ldr r1, _080F9430 @ =0x040000d4 - movs r5, 0x80 - lsls r5, 5 - ldr r7, _080F9434 @ =0x81000800 - movs r0, 0x81 - lsls r0, 24 - mov r12, r0 -_080F93C6: - strh r6, [r2] - mov r0, sp - str r0, [r1] - str r3, [r1, 0x4] - str r7, [r1, 0x8] - ldr r0, [r1, 0x8] - adds r3, r5 - subs r4, r5 - cmp r4, r5 - bhi _080F93C6 - strh r6, [r2] - mov r2, sp - str r2, [r1] - str r3, [r1, 0x4] - lsrs r0, r4, 1 - mov r2, r12 - orrs r0, r2 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - movs r0, 0xE0 - lsls r0, 19 - movs r3, 0x80 - lsls r3, 3 - movs r4, 0 - str r4, [sp, 0x4] - ldr r2, _080F9430 @ =0x040000d4 - mov r1, r8 - str r1, [r2] - str r0, [r2, 0x4] - lsrs r0, r3, 2 - movs r1, 0x85 - lsls r1, 24 - orrs r0, r1 - str r0, [r2, 0x8] - ldr r0, [r2, 0x8] - movs r1, 0xA0 - lsls r1, 19 - mov r0, sp - strh r4, [r0] - str r0, [r2] - str r1, [r2, 0x4] - lsrs r3, 1 - movs r0, 0x81 - lsls r0, 24 - orrs r3, r0 - str r3, [r2, 0x8] - ldr r0, [r2, 0x8] - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080F9430: .4byte 0x040000d4 -_080F9434: .4byte 0x81000800 - thumb_func_end sub_80F9368 - - thumb_func_start sub_80F9438 -sub_80F9438: @ 80F9438 - push {lr} - movs r0, 0 - bl SetVBlankCallback - movs r0, 0 - bl SetHBlankCallback - pop {r0} - bx r0 - thumb_func_end sub_80F9438 - - thumb_func_start sub_80F944C -sub_80F944C: @ 80F944C - push {r4,lr} - movs r2, 0 - ldr r4, _080F9478 @ =gUnknown_020388C0 - movs r3, 0xFF -_080F9454: - adds r0, r2, r4 - ldrb r1, [r0] - orrs r1, r3 - strb r1, [r0] - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x3 - bls _080F9454 - movs r0, 0x6 - bl FreeSpritePaletteByTag - ldr r0, _080F947C @ =gUnknown_083E5968 - bl LoadSpritePalette - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080F9478: .4byte gUnknown_020388C0 -_080F947C: .4byte gUnknown_083E5968 - thumb_func_end sub_80F944C - - thumb_func_start sub_80F9480 -sub_80F9480: @ 80F9480 - push {r4,lr} - adds r3, r0, 0 - lsls r1, 24 - lsrs r1, 24 - movs r2, 0 - cmp r2, r1 - bcs _080F949E - movs r4, 0xFF -_080F9490: - adds r0, r3, r2 - strb r4, [r0] - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, r1 - bcc _080F9490 -_080F949E: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80F9480 - - thumb_func_start sub_80F94A4 -sub_80F94A4: @ 80F94A4 - push {r4,r5,lr} - adds r5, r1, 0 - lsls r0, 24 - lsrs r4, r0, 24 - lsls r2, 16 - lsrs r1, r2, 16 - lsls r3, 16 - lsrs r2, r3, 16 - cmp r4, 0x5 - bhi _080F94E8 - ldrb r0, [r5] - cmp r0, 0xFF - bne _080F94D0 - ldr r0, _080F94F0 @ =gSpriteTemplate_83E5A00 - lsls r1, 16 - asrs r1, 16 - lsls r2, 16 - asrs r2, 16 - movs r3, 0 - bl CreateSprite - strb r0, [r5] -_080F94D0: - subs r0, r4, 0x4 - lsls r0, 24 - lsrs r4, r0, 24 - ldrb r1, [r5] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _080F94F4 @ =gSprites - adds r0, r1 - adds r1, r4, 0 - bl StartSpriteAnim -_080F94E8: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080F94F0: .4byte gSpriteTemplate_83E5A00 -_080F94F4: .4byte gSprites - thumb_func_end sub_80F94A4 - - thumb_func_start sub_80F94F8 -sub_80F94F8: @ 80F94F8 - push {r4,lr} - adds r4, r0, 0 - ldrb r0, [r4] - cmp r0, 0xFF - beq _080F9516 - adds r1, r0, 0 - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _080F951C @ =gSprites - adds r0, r1 - bl DestroySprite - movs r0, 0xFF - strb r0, [r4] -_080F9516: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080F951C: .4byte gSprites - thumb_func_end sub_80F94F8 - - thumb_func_start sub_80F9520 -sub_80F9520: @ 80F9520 - push {r4,r5,lr} - adds r5, r0, 0 - movs r4, 0 -_080F9526: - adds r0, r5, r4 - bl sub_80F94F8 - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x7 - bls _080F9526 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80F9520 - - thumb_func_start CreateVerticalScrollIndicators -CreateVerticalScrollIndicators: @ 80F953C - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r1, 16 - lsrs r3, r1, 16 - lsls r2, 16 - lsrs r2, 16 - cmp r4, 0x3 - bls _080F9550 - b _080F9790 -_080F9550: - cmp r4, 0x1 - beq _080F95F6 - cmp r4, 0x1 - bgt _080F9564 - cmp r4, 0 - beq _080F9578 - ldr r5, _080F9560 @ =gUnknown_020388C0 - b _080F977A - .align 2, 0 -_080F9560: .4byte gUnknown_020388C0 -_080F9564: - cmp r4, 0x2 - bne _080F956A - b _080F967C -_080F956A: - cmp r4, 0x3 - bne _080F9570 - b _080F96F8 -_080F9570: - ldr r5, _080F9574 @ =gUnknown_020388C0 - b _080F977A - .align 2, 0 -_080F9574: .4byte gUnknown_020388C0 -_080F9578: - ldr r0, _080F95D8 @ =gUnknown_020388C0 - ldrb r1, [r0] - adds r5, r0, 0 - cmp r1, 0xFF - beq _080F9584 - b _080F977A -_080F9584: - ldr r0, _080F95DC @ =gSpriteTemplate_83E59D0 - lsls r1, r3, 16 - asrs r1, 16 - lsls r2, 16 - asrs r2, 16 - movs r3, 0 - bl CreateSprite - strb r0, [r5] - ldr r3, _080F95E0 @ =gSprites - ldrb r1, [r5] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldr r1, _080F95E4 @ =0x0000ffff - strh r1, [r0, 0x32] - ldrb r0, [r5, 0x1] - cmp r0, 0xFF - beq _080F95E8 - ldrb r0, [r5] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r3 - ldrb r2, [r5, 0x1] - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - adds r0, r3 - movs r2, 0x26 - ldrsh r0, [r0, r2] - negs r0, r0 - strh r0, [r1, 0x26] - ldrb r0, [r5] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r3 - ldrb r2, [r5, 0x1] - b _080F9650 - .align 2, 0 -_080F95D8: .4byte gUnknown_020388C0 -_080F95DC: .4byte gSpriteTemplate_83E59D0 -_080F95E0: .4byte gSprites -_080F95E4: .4byte 0x0000ffff -_080F95E8: - ldrb r1, [r5] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - strh r4, [r0, 0x34] - b _080F977A -_080F95F6: - ldr r0, _080F9660 @ =gUnknown_020388C0 - ldrb r1, [r0, 0x1] - adds r5, r0, 0 - cmp r1, 0xFF - beq _080F9602 - b _080F977A -_080F9602: - ldr r0, _080F9664 @ =gSpriteTemplate_83E59D0 - lsls r1, r3, 16 - asrs r1, 16 - lsls r2, 16 - asrs r2, 16 - movs r3, 0 - bl CreateSprite - strb r0, [r5, 0x1] - ldr r3, _080F9668 @ =gSprites - ldrb r1, [r5, 0x1] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - strh r4, [r0, 0x32] - ldrb r0, [r5] - cmp r0, 0xFF - beq _080F966C - ldrb r0, [r5, 0x1] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r3 - ldrb r2, [r5] - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - adds r0, r3 - movs r2, 0x26 - ldrsh r0, [r0, r2] - negs r0, r0 - strh r0, [r1, 0x26] - ldrb r0, [r5, 0x1] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r3 - ldrb r2, [r5] -_080F9650: - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - adds r0, r3 - ldrh r0, [r0, 0x34] - strh r0, [r1, 0x34] - b _080F977A - .align 2, 0 -_080F9660: .4byte gUnknown_020388C0 -_080F9664: .4byte gSpriteTemplate_83E59D0 -_080F9668: .4byte gSprites -_080F966C: - ldrb r0, [r5, 0x1] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r3 - movs r0, 0 - strh r0, [r1, 0x34] - b _080F977A -_080F967C: - ldr r0, _080F96E4 @ =gUnknown_020388C0 - ldrb r1, [r0, 0x2] - adds r5, r0, 0 - cmp r1, 0xFF - bne _080F977A - ldr r0, _080F96E8 @ =gSpriteTemplate_83E59E8 - lsls r1, r3, 16 - asrs r1, 16 - lsls r2, 16 - asrs r2, 16 - movs r3, 0 - bl CreateSprite - strb r0, [r5, 0x2] - ldr r3, _080F96EC @ =gSprites - ldrb r1, [r5, 0x2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldr r1, _080F96F0 @ =0x0000ffff - strh r1, [r0, 0x2E] - ldrb r0, [r5, 0x3] - cmp r0, 0xFF - beq _080F96F4 - ldrb r0, [r5, 0x2] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r3 - ldrb r2, [r5, 0x3] - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - adds r0, r3 - movs r2, 0x24 - ldrsh r0, [r0, r2] - negs r0, r0 - strh r0, [r1, 0x24] - ldrb r0, [r5, 0x2] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r3 - ldrb r2, [r5, 0x3] - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - adds r0, r3 - ldrh r0, [r0, 0x30] - b _080F9778 - .align 2, 0 -_080F96E4: .4byte gUnknown_020388C0 -_080F96E8: .4byte gSpriteTemplate_83E59E8 -_080F96EC: .4byte gSprites -_080F96F0: .4byte 0x0000ffff -_080F96F4: - ldrb r0, [r5, 0x2] - b _080F976E -_080F96F8: - ldr r0, _080F9760 @ =gUnknown_020388C0 - ldrb r1, [r0, 0x3] - adds r5, r0, 0 - cmp r1, 0xFF - bne _080F977A - ldr r0, _080F9764 @ =gSpriteTemplate_83E59E8 - lsls r1, r3, 16 - asrs r1, 16 - lsls r2, 16 - asrs r2, 16 - movs r3, 0 - bl CreateSprite - strb r0, [r5, 0x3] - ldr r3, _080F9768 @ =gSprites - ldrb r1, [r5, 0x3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - movs r1, 0x1 - strh r1, [r0, 0x2E] - ldrb r0, [r5, 0x2] - cmp r0, 0xFF - beq _080F976C - ldrb r0, [r5, 0x3] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r3 - ldrb r2, [r5, 0x2] - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - adds r0, r3 - movs r2, 0x24 - ldrsh r0, [r0, r2] - negs r0, r0 - strh r0, [r1, 0x24] - ldrb r0, [r5, 0x3] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r3 - ldrb r2, [r5, 0x2] - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - adds r0, r3 - ldrh r0, [r0, 0x30] - b _080F9778 - .align 2, 0 -_080F9760: .4byte gUnknown_020388C0 -_080F9764: .4byte gSpriteTemplate_83E59E8 -_080F9768: .4byte gSprites -_080F976C: - ldrb r0, [r5, 0x3] -_080F976E: - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r3 - movs r0, 0 -_080F9778: - strh r0, [r1, 0x30] -_080F977A: - adds r0, r4, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _080F9798 @ =gSprites - adds r0, r1 - movs r1, 0x1 - ands r1, r4 - bl StartSpriteAnim -_080F9790: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080F9798: .4byte gSprites - thumb_func_end CreateVerticalScrollIndicators - - thumb_func_start sub_80F979C -sub_80F979C: @ 80F979C - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r1, 24 - lsrs r3, r1, 24 - cmp r2, 0x3 - bhi _080F97D4 - ldr r0, _080F97D8 @ =gUnknown_020388C0 - adds r1, r2, r0 - ldrb r0, [r1] - cmp r0, 0xFF - beq _080F97D4 - ldr r2, _080F97DC @ =gSprites - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - adds r1, 0x3E - movs r0, 0x1 - adds r2, r3, 0 - ands r2, r0 - lsls r2, 2 - ldrb r3, [r1] - movs r0, 0x5 - negs r0, r0 - ands r0, r3 - orrs r0, r2 - strb r0, [r1] -_080F97D4: - pop {r0} - bx r0 - .align 2, 0 -_080F97D8: .4byte gUnknown_020388C0 -_080F97DC: .4byte gSprites - thumb_func_end sub_80F979C - - thumb_func_start DestroyVerticalScrollIndicator -DestroyVerticalScrollIndicator: @ 80F97E0 - push {r4,lr} - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x3 - bhi _080F9808 - ldr r0, _080F9810 @ =gUnknown_020388C0 - adds r4, r1, r0 - ldrb r0, [r4] - cmp r0, 0xFF - beq _080F9808 - adds r1, r0, 0 - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _080F9814 @ =gSprites - adds r0, r1 - bl DestroySprite - movs r0, 0xFF - strb r0, [r4] -_080F9808: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080F9810: .4byte gUnknown_020388C0 -_080F9814: .4byte gSprites - thumb_func_end DestroyVerticalScrollIndicator - - thumb_func_start LoadScrollIndicatorPalette -LoadScrollIndicatorPalette: @ 80F9818 - push {lr} - ldr r0, _080F9824 @ =gUnknown_083E5968 - bl LoadSpritePalette - pop {r0} - bx r0 - .align 2, 0 -_080F9824: .4byte gUnknown_083E5968 - thumb_func_end LoadScrollIndicatorPalette - - thumb_func_start BuyMenuFreeMemory -BuyMenuFreeMemory: @ 80F9828 - push {lr} - movs r0, 0x6 - bl FreeSpritePaletteByTag - pop {r0} - bx r0 - thumb_func_end BuyMenuFreeMemory - - thumb_func_start sub_80F9834 -sub_80F9834: @ 80F9834 - push {lr} - adds r2, r0, 0 - movs r1, 0x30 - ldrsh r0, [r2, r1] - cmp r0, 0 - bne _080F9848 - ldrh r0, [r2, 0x2E] - ldrh r1, [r2, 0x24] - adds r0, r1 - strh r0, [r2, 0x24] -_080F9848: - movs r1, 0x34 - ldrsh r0, [r2, r1] - cmp r0, 0 - bne _080F9858 - ldrh r0, [r2, 0x32] - ldrh r1, [r2, 0x26] - adds r0, r1 - strh r0, [r2, 0x26] -_080F9858: - ldrh r1, [r2, 0x30] - adds r1, 0x1 - movs r3, 0 - strh r1, [r2, 0x30] - ldrh r0, [r2, 0x34] - adds r0, 0x1 - strh r0, [r2, 0x34] - lsls r1, 16 - asrs r1, 16 - cmp r1, 0x2 - ble _080F9870 - strh r3, [r2, 0x30] -_080F9870: - movs r1, 0x34 - ldrsh r0, [r2, r1] - cmp r0, 0x2 - ble _080F987A - strh r3, [r2, 0x34] -_080F987A: - movs r0, 0x24 - ldrsh r1, [r2, r0] - cmp r1, 0x8 - beq _080F988A - movs r0, 0x8 - negs r0, r0 - cmp r1, r0 - bne _080F988C -_080F988A: - strh r3, [r2, 0x24] -_080F988C: - movs r0, 0x26 - ldrsh r1, [r2, r0] - cmp r1, 0x8 - beq _080F989C - movs r0, 0x8 - negs r0, r0 - cmp r1, r0 - bne _080F98A0 -_080F989C: - movs r0, 0 - strh r0, [r2, 0x26] -_080F98A0: - pop {r0} - bx r0 - thumb_func_end sub_80F9834 - - thumb_func_start sub_80F98A4 -sub_80F98A4: @ 80F98A4 - push {lr} - lsls r0, 24 - lsrs r1, r0, 24 - ldr r0, _080F98D0 @ =gUnknown_020388C0 - adds r3, r1, r0 - ldrb r0, [r3] - cmp r0, 0xFF - beq _080F98CA - cmp r1, 0x3 - bhi _080F98CA - ldr r2, _080F98D4 @ =gSprites - adds r1, r0, 0 - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, _080F98D8 @ =SpriteCallbackDummy - str r1, [r0] -_080F98CA: - pop {r0} - bx r0 - .align 2, 0 -_080F98D0: .4byte gUnknown_020388C0 -_080F98D4: .4byte gSprites -_080F98D8: .4byte SpriteCallbackDummy - thumb_func_end sub_80F98A4 - - thumb_func_start StartVerticalScrollIndicators -StartVerticalScrollIndicators: @ 80F98DC - push {lr} - lsls r0, 24 - lsrs r1, r0, 24 - ldr r0, _080F9908 @ =gUnknown_020388C0 - adds r3, r1, r0 - ldrb r0, [r3] - cmp r0, 0xFF - beq _080F9902 - cmp r1, 0x3 - bhi _080F9902 - ldr r2, _080F990C @ =gSprites - adds r1, r0, 0 - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, _080F9910 @ =sub_80F9834 - str r1, [r0] -_080F9902: - pop {r0} - bx r0 - .align 2, 0 -_080F9908: .4byte gUnknown_020388C0 -_080F990C: .4byte gSprites -_080F9910: .4byte sub_80F9834 - thumb_func_end StartVerticalScrollIndicators - - thumb_func_start sub_80F9914 -sub_80F9914: @ 80F9914 - push {r4,lr} - lsls r0, 24 - lsrs r1, r0, 24 - ldr r0, _080F9964 @ =gUnknown_020388C0 - adds r4, r1, r0 - ldrb r0, [r4] - cmp r0, 0xFF - beq _080F995C - cmp r1, 0x3 - bhi _080F995C - ldr r3, _080F9968 @ =gSprites - adds r1, r0, 0 - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - movs r2, 0 - strh r2, [r0, 0x24] - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - strh r2, [r0, 0x26] - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - strh r2, [r0, 0x30] - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - strh r2, [r0, 0x34] -_080F995C: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080F9964: .4byte gUnknown_020388C0 -_080F9968: .4byte gSprites - thumb_func_end sub_80F9914 - - thumb_func_start PauseVerticalScrollIndicator -PauseVerticalScrollIndicator: @ 80F996C - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r4, 0 - bl sub_80F98A4 - adds r0, r4, 0 - bl sub_80F9914 - pop {r4} - pop {r0} - bx r0 - thumb_func_end PauseVerticalScrollIndicator - - thumb_func_start sub_80F9988 -sub_80F9988: @ 80F9988 - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r1, 24 - lsrs r3, r1, 24 - ldr r0, _080F99C4 @ =gUnknown_020388C0 - adds r1, r2, r0 - ldrb r0, [r1] - cmp r0, 0xFF - beq _080F99BE - cmp r2, 0x3 - bhi _080F99BE - ldr r2, _080F99C8 @ =gSprites - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - movs r0, 0x3 - adds r2, r3, 0 - ands r2, r0 - lsls r2, 2 - ldrb r3, [r1, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r3 - orrs r0, r2 - strb r0, [r1, 0x5] -_080F99BE: - pop {r0} - bx r0 - .align 2, 0 -_080F99C4: .4byte gUnknown_020388C0 -_080F99C8: .4byte gSprites - thumb_func_end sub_80F9988 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/mon_markings.s b/asm/mon_markings.s deleted file mode 100644 index d227b17c1..000000000 --- a/asm/mon_markings.s +++ /dev/null @@ -1,1008 +0,0 @@ - .include "constants/gba_constants.inc" - .include "constants/species_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start sub_80F727C -sub_80F727C: @ 80F727C - ldr r1, _080F7288 @ =gUnknown_020388B8 - str r0, [r1] - movs r1, 0 - strb r1, [r0, 0xB] - bx lr - .align 2, 0 -_080F7288: .4byte gUnknown_020388B8 - thumb_func_end sub_80F727C - - thumb_func_start sub_80F728C -sub_80F728C: @ 80F728C - push {lr} - sub sp, 0x4 - ldr r0, _080F72C4 @ =gSaveBlock2 - ldrb r0, [r0, 0x14] - lsrs r0, 3 - bl GetTextWindowFrameGraphics - ldr r3, _080F72C8 @ =gUnknown_020388B8 - ldr r2, [r3] - ldr r1, [r0] - str r1, [r2, 0x28] - ldr r0, [r0, 0x4] - str r0, [r2, 0x2C] - ldr r0, _080F72CC @ =0x000010b0 - adds r2, r0 - movs r1, 0 - strb r1, [r2] - mov r0, sp - strh r1, [r0] - ldr r1, [r3] - adds r1, 0x30 - ldr r2, _080F72D0 @ =0x01000800 - bl CpuSet - add sp, 0x4 - pop {r0} - bx r0 - .align 2, 0 -_080F72C4: .4byte gSaveBlock2 -_080F72C8: .4byte gUnknown_020388B8 -_080F72CC: .4byte 0x000010b0 -_080F72D0: .4byte 0x01000800 - thumb_func_end sub_80F728C - - thumb_func_start sub_80F72D4 -sub_80F72D4: @ 80F72D4 - push {r4-r7,lr} - ldr r0, _080F72F4 @ =gUnknown_020388B8 - ldr r1, [r0] - ldr r2, _080F72F8 @ =0x000010b0 - adds r0, r1, r2 - ldrb r2, [r0] - lsls r0, r2, 8 - adds r0, 0x30 - adds r5, r1, r0 - cmp r2, 0xD - beq _080F73A4 - cmp r2, 0xD - bgt _080F72FC - cmp r2, 0 - beq _080F7302 - b _080F734C - .align 2, 0 -_080F72F4: .4byte gUnknown_020388B8 -_080F72F8: .4byte 0x000010b0 -_080F72FC: - cmp r2, 0xE - beq _080F73F0 - b _080F734C -_080F7302: - ldr r0, [r1, 0x28] - adds r1, r5, 0 - movs r2, 0x8 - bl CpuFastSet - movs r4, 0 - adds r7, r5, 0 - adds r7, 0xE0 -_080F7312: - ldr r6, _080F7344 @ =gUnknown_020388B8 - ldr r0, [r6] - ldr r0, [r0, 0x28] - adds r0, 0x20 - adds r4, 0x1 - lsls r1, r4, 5 - adds r1, r5, r1 - movs r2, 0x8 - bl CpuFastSet - lsls r4, 16 - lsrs r4, 16 - cmp r4, 0x5 - bls _080F7312 - ldr r0, [r6] - ldr r0, [r0, 0x28] - adds r0, 0x40 - adds r1, r7, 0 - movs r2, 0x8 - bl CpuFastSet - ldr r1, [r6] - ldr r0, _080F7348 @ =0x000010b0 - adds r1, r0 - b _080F7392 - .align 2, 0 -_080F7344: .4byte gUnknown_020388B8 -_080F7348: .4byte 0x000010b0 -_080F734C: - ldr r0, _080F739C @ =gUnknown_020388B8 - ldr r0, [r0] - ldr r0, [r0, 0x28] - adds r0, 0x60 - adds r1, r5, 0 - movs r2, 0x8 - bl CpuFastSet - movs r4, 0 - adds r7, r5, 0 - adds r7, 0xE0 -_080F7362: - ldr r6, _080F739C @ =gUnknown_020388B8 - ldr r0, [r6] - ldr r0, [r0, 0x28] - adds r0, 0x80 - adds r4, 0x1 - lsls r1, r4, 5 - adds r1, r5, r1 - movs r2, 0x8 - bl CpuFastSet - lsls r4, 16 - lsrs r4, 16 - cmp r4, 0x5 - bls _080F7362 - ldr r0, [r6] - ldr r0, [r0, 0x28] - adds r0, 0xA0 - adds r1, r7, 0 - movs r2, 0x8 - bl CpuFastSet - ldr r1, [r6] - ldr r2, _080F73A0 @ =0x000010b0 - adds r1, r2 -_080F7392: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _080F73FC - .align 2, 0 -_080F739C: .4byte gUnknown_020388B8 -_080F73A0: .4byte 0x000010b0 -_080F73A4: - ldr r0, [r1, 0x28] - adds r0, 0xC0 - adds r1, r5, 0 - movs r2, 0x8 - bl CpuFastSet - movs r4, 0 - adds r7, r5, 0 - adds r7, 0xE0 -_080F73B6: - ldr r6, _080F73F4 @ =gUnknown_020388B8 - ldr r0, [r6] - ldr r0, [r0, 0x28] - adds r0, 0xE0 - adds r4, 0x1 - lsls r1, r4, 5 - adds r1, r5, r1 - movs r2, 0x8 - bl CpuFastSet - lsls r4, 16 - lsrs r4, 16 - cmp r4, 0x5 - bls _080F73B6 - ldr r0, [r6] - ldr r0, [r0, 0x28] - movs r1, 0x80 - lsls r1, 1 - adds r0, r1 - adds r1, r7, 0 - movs r2, 0x8 - bl CpuFastSet - ldr r1, [r6] - ldr r2, _080F73F8 @ =0x000010b0 - adds r1, r2 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_080F73F0: - movs r0, 0 - b _080F73FE - .align 2, 0 -_080F73F4: .4byte gUnknown_020388B8 -_080F73F8: .4byte 0x000010b0 -_080F73FC: - movs r0, 0x1 -_080F73FE: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_80F72D4 - - thumb_func_start sub_80F7404 -sub_80F7404: @ 80F7404 - push {lr} - bl sub_80F728C -_080F740A: - bl sub_80F72D4 - lsls r0, 24 - cmp r0, 0 - bne _080F740A - pop {r0} - bx r0 - thumb_func_end sub_80F7404 - - thumb_func_start sub_80F7418 -sub_80F7418: @ 80F7418 - push {r4-r6,lr} - lsls r1, 16 - lsrs r5, r1, 16 - lsls r2, 16 - lsrs r6, r2, 16 - ldr r2, _080F746C @ =gUnknown_020388B8 - ldr r3, [r2] - movs r1, 0 - strb r1, [r3, 0x5] - ldr r1, [r2] - strb r0, [r1, 0x4] - movs r3, 0 - adds r4, r2, 0 - movs r2, 0x1 -_080F7434: - ldr r0, [r4] - adds r1, r0, 0x6 - adds r1, r3 - ldrb r0, [r0, 0x4] - asrs r0, r3 - ands r0, r2 - strb r0, [r1] - adds r0, r3, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 - cmp r3, 0x3 - bls _080F7434 - bl DestroyMenuCursor - lsls r0, r5, 16 - asrs r0, 16 - lsls r1, r6, 16 - asrs r1, 16 - ldr r2, _080F746C @ =gUnknown_020388B8 - ldr r3, [r2] - ldrh r2, [r3] - ldrh r3, [r3, 0x2] - bl sub_80F761C - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080F746C: .4byte gUnknown_020388B8 - thumb_func_end sub_80F7418 - - thumb_func_start sub_80F7470 -sub_80F7470: @ 80F7470 - push {r4,r5,lr} - movs r4, 0 - ldr r5, _080F74FC @ =gUnknown_020388B8 -_080F7476: - ldr r0, [r5] - ldrh r0, [r0] - adds r0, r4, r0 - lsls r0, 16 - lsrs r0, 16 - bl FreeSpriteTilesByTag - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x2 - bls _080F7476 - ldr r4, _080F74FC @ =gUnknown_020388B8 - ldr r0, [r4] - ldrh r0, [r0, 0x2] - bl FreeSpritePaletteByTag - ldr r0, [r4] - ldrh r0, [r0, 0x2] - adds r0, 0x1 - lsls r0, 16 - lsrs r0, 16 - bl FreeSpritePaletteByTag - movs r4, 0 -_080F74A8: - ldr r0, _080F74FC @ =gUnknown_020388B8 - ldr r0, [r0] - lsls r1, r4, 2 - adds r0, 0xC - adds r0, r1 - ldr r0, [r0] - cmp r0, 0 - beq _080F74F6 - bl DestroySprite - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x1 - bls _080F74A8 - movs r4, 0 -_080F74C8: - ldr r5, _080F74FC @ =gUnknown_020388B8 - ldr r0, [r5] - lsls r1, r4, 2 - adds r0, 0x14 - adds r0, r1 - ldr r0, [r0] - cmp r0, 0 - beq _080F74F6 - bl DestroySprite - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x3 - bls _080F74C8 - bl DestroyMenuCursor - ldr r0, [r5] - ldr r0, [r0, 0x24] - cmp r0, 0 - beq _080F74F6 - bl DestroySprite -_080F74F6: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080F74FC: .4byte gUnknown_020388B8 - thumb_func_end sub_80F7470 - - thumb_func_start sub_80F7500 -sub_80F7500: @ 80F7500 - push {r4,r5,lr} - sub sp, 0x30 - ldr r4, _080F7580 @ =gUnknown_020388B8 - ldr r2, [r4] - adds r0, r2, 0 - adds r0, 0x30 - str r0, [sp, 0x18] - add r1, sp, 0x1C - movs r5, 0 - movs r0, 0x80 - lsls r0, 5 - strh r0, [r1] - ldrh r1, [r2] - mov r0, sp - adds r0, 0x1E - strh r1, [r0] - add r1, sp, 0x20 - ldr r0, _080F7584 @ =gPokenavConditionMenuMisc_Gfx - str r0, [sp, 0x20] - movs r0, 0xA4 - lsls r0, 3 - strh r0, [r1, 0x4] - ldrh r0, [r2] - adds r0, 0x1 - strh r0, [r1, 0x6] - add r0, sp, 0x28 - movs r1, 0 - movs r2, 0x8 - bl memset - add r1, sp, 0x18 - mov r0, sp - movs r2, 0x18 - bl memcpy - ldr r0, [r4] - ldrb r0, [r0, 0xB] - cmp r0, 0 - beq _080F7558 - mov r0, sp - bl LoadTilesForSpriteSheets - ldr r0, [r4] - strb r5, [r0, 0xB] -_080F7558: - ldr r0, _080F7588 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _080F758C - movs r0, 0x5 - bl PlaySE - ldr r1, [r4] - ldrb r0, [r1, 0x5] - subs r0, 0x1 - strb r0, [r1, 0x5] - lsls r0, 24 - cmp r0, 0 - bge _080F75FE - ldr r1, [r4] - movs r0, 0x5 - strb r0, [r1, 0x5] - b _080F75FE - .align 2, 0 -_080F7580: .4byte gUnknown_020388B8 -_080F7584: .4byte gPokenavConditionMenuMisc_Gfx -_080F7588: .4byte gMain -_080F758C: - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _080F75B0 - movs r0, 0x5 - bl PlaySE - ldr r1, [r4] - ldrb r0, [r1, 0x5] - adds r0, 0x1 - strb r0, [r1, 0x5] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0x5 - ble _080F75FE - ldr r0, [r4] - strb r5, [r0, 0x5] - b _080F75FE -_080F75B0: - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080F7602 - movs r0, 0x5 - bl PlaySE - ldr r0, [r4] - movs r1, 0x5 - ldrsb r1, [r0, r1] - cmp r1, 0x4 - beq _080F75DC - cmp r1, 0x5 - beq _080F7610 - adds r0, 0x6 - adds r1, r0, r1 - movs r2, 0 - ldrb r0, [r1] - cmp r0, 0 - bne _080F75FC - movs r2, 0x1 - b _080F75FC -_080F75DC: - strb r5, [r0, 0x4] - movs r3, 0 -_080F75E0: - ldr r2, [r4] - adds r0, r2, 0x6 - adds r0, r3 - ldrb r0, [r0] - lsls r0, r3 - ldrb r1, [r2, 0x4] - orrs r0, r1 - strb r0, [r2, 0x4] - adds r0, r3, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 - cmp r3, 0x3 - bls _080F75E0 - b _080F7610 -_080F75FC: - strb r2, [r1] -_080F75FE: - movs r0, 0x1 - b _080F7612 -_080F7602: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080F75FE - movs r0, 0x5 - bl PlaySE -_080F7610: - movs r0, 0 -_080F7612: - add sp, 0x30 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80F7500 - - thumb_func_start sub_80F761C -sub_80F761C: @ 80F761C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x5C - adds r5, r2, 0 - lsls r0, 16 - lsrs r0, 16 - str r0, [sp, 0x4C] - lsls r1, 16 - lsrs r1, 16 - str r1, [sp, 0x50] - lsls r5, 16 - lsrs r5, 16 - lsls r3, 16 - lsrs r3, 16 - str r3, [sp, 0x54] - ldr r0, _080F7820 @ =gUnknown_020388B8 - mov r8, r0 - ldr r0, [r0] - adds r0, 0x30 - str r0, [sp, 0x1C] - add r1, sp, 0x20 - movs r2, 0 - mov r9, r2 - movs r0, 0x80 - lsls r0, 5 - strh r0, [r1] - mov r0, sp - adds r0, 0x22 - strh r5, [r0] - add r1, sp, 0x24 - ldr r0, _080F7824 @ =gPokenavConditionMenuMisc_Gfx - str r0, [sp, 0x24] - movs r0, 0xA4 - lsls r0, 3 - strh r0, [r1, 0x4] - adds r0, r5, 0x1 - strh r0, [r1, 0x6] - add r0, sp, 0x2C - movs r1, 0 - movs r2, 0x8 - bl memset - add r6, sp, 0x1C - add r0, sp, 0x4 - adds r1, r6, 0 - movs r2, 0x18 - bl memcpy - mov r3, r8 - ldr r0, [r3] - ldr r0, [r0, 0x2C] - str r0, [sp, 0x34] - add r0, sp, 0x38 - add r1, sp, 0x54 - ldrh r1, [r1] - strh r1, [r0] - add r1, sp, 0x3C - ldr r0, _080F7828 @ =gUnknown_08E966B8 - str r0, [sp, 0x3C] - ldr r0, [sp, 0x54] - adds r0, 0x1 - strh r0, [r1, 0x4] - add r0, sp, 0x44 - movs r1, 0 - movs r2, 0x8 - bl memset - add r4, sp, 0x34 - adds r0, r6, 0 - adds r1, r4, 0 - movs r2, 0x18 - bl memcpy - strh r5, [r4] - add r2, sp, 0x54 - ldrh r2, [r2] - strh r2, [r4, 0x2] - ldr r0, _080F782C @ =gOamData_83E5214 - str r0, [r4, 0x4] - ldr r0, _080F7830 @ =gSpriteAnimTable_83E52AC - str r0, [r4, 0x8] - mov r3, r9 - str r3, [r4, 0xC] - ldr r0, _080F7834 @ =gDummySpriteAffineAnimTable - str r0, [r4, 0x10] - ldr r0, _080F7838 @ =nullsub_65 - str r0, [r4, 0x14] - mov r0, r8 - ldr r1, [r0] - movs r0, 0x1 - strb r0, [r1, 0xB] - add r0, sp, 0x4 - bl AllocTilesForSpriteSheets - adds r0, r6, 0 - bl LoadSpritePalettes - movs r5, 0 - ldr r1, [sp, 0x4C] - lsls r0, r1, 16 - movs r2, 0x80 - lsls r2, 14 - adds r2, r0 - mov r8, r2 - str r0, [sp, 0x58] - ldr r3, [sp, 0x50] - lsls r0, r3, 16 - movs r1, 0x80 - lsls r1, 14 - adds r7, r0, r1 - mov r9, r0 -_080F7700: - adds r0, r4, 0 - mov r2, r8 - asrs r1, r2, 16 - asrs r2, r7, 16 - movs r3, 0x2 - bl CreateSprite - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0x40 - bne _080F7718 - b _080F7850 -_080F7718: - ldr r6, _080F7820 @ =gUnknown_020388B8 - ldr r2, [r6] - lsls r0, r5, 2 - adds r2, 0xC - adds r2, r0 - lsls r0, r3, 4 - adds r0, r3 - lsls r0, 2 - ldr r1, _080F783C @ =gSprites - adds r0, r1 - str r0, [r2] - lsls r1, r5, 24 - lsrs r1, 24 - bl StartSpriteAnim - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0x1 - bls _080F7700 - ldr r0, [r6] - ldr r1, [r0, 0x10] - mov r3, r9 - asrs r0, r3, 16 - adds r0, 0x60 - strh r0, [r1, 0x22] - ldrh r0, [r4] - adds r0, 0x1 - strh r0, [r4] - ldrh r0, [r4, 0x2] - adds r0, 0x1 - strh r0, [r4, 0x2] - ldr r0, _080F7840 @ =gSpriteAnimTable_83E5274 - str r0, [r4, 0x8] - ldr r0, _080F7844 @ =sub_80F78CC - str r0, [r4, 0x14] - ldr r0, _080F7848 @ =gOamData_83E521C - str r0, [r4, 0x4] - movs r5, 0 - ldr r0, [sp, 0x58] - movs r1, 0x80 - lsls r1, 14 - adds r0, r1 - mov r10, r0 -_080F7770: - lsls r2, r5, 4 - adds r2, 0x10 - mov r3, r9 - asrs r3, 16 - mov r8, r3 - add r2, r8 - lsls r2, 16 - asrs r2, 16 - adds r0, r4, 0 - mov r3, r10 - asrs r1, r3, 16 - movs r3, 0x1 - bl CreateSprite - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0x40 - beq _080F7860 - ldr r6, _080F7820 @ =gUnknown_020388B8 - ldr r1, [r6] - lsls r0, r5, 2 - adds r1, 0x14 - adds r1, r0 - lsls r0, r3, 4 - adds r0, r3 - lsls r0, 2 - ldr r7, _080F783C @ =gSprites - adds r0, r7 - str r0, [r1] - strh r5, [r0, 0x2E] - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0x3 - bls _080F7770 - ldr r0, _080F784C @ =SpriteCallbackDummy - str r0, [r4, 0x14] - adds r0, r4, 0 - movs r1, 0 - movs r2, 0 - movs r3, 0x1 - bl CreateSprite - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0x40 - beq _080F7874 - ldr r1, [r6] - lsls r0, r3, 4 - adds r0, r3 - lsls r0, 2 - adds r0, r7 - str r0, [r1, 0x24] - ldrb r2, [r0, 0x1] - movs r1, 0x3F - ands r1, r2 - movs r2, 0x40 - orrs r1, r2 - strb r1, [r0, 0x1] - ldr r0, [r6] - ldr r2, [r0, 0x24] - ldrb r0, [r2, 0x3] - movs r1, 0xC0 - orrs r0, r1 - strb r0, [r2, 0x3] - ldr r0, [r6] - ldr r0, [r0, 0x24] - movs r1, 0x9 - bl StartSpriteAnim - ldr r1, [r6] - ldr r2, [r1, 0x24] - ldr r3, [sp, 0x58] - asrs r0, r3, 16 -.ifdef ENGLISH - adds r0, 0x20 -.else - adds r0, 0x18 -.endif - strh r0, [r2, 0x20] - ldr r2, [r1, 0x24] - mov r0, r8 - adds r0, 0x50 - strh r0, [r2, 0x22] - ldr r0, [r1, 0x24] - movs r1, 0x1 - movs r2, 0x2 - movs r3, 0 - bl CalcCenterToCornerVec - b _080F787A - .align 2, 0 -_080F7820: .4byte gUnknown_020388B8 -_080F7824: .4byte gPokenavConditionMenuMisc_Gfx -_080F7828: .4byte gUnknown_08E966B8 -_080F782C: .4byte gOamData_83E5214 -_080F7830: .4byte gSpriteAnimTable_83E52AC -_080F7834: .4byte gDummySpriteAffineAnimTable -_080F7838: .4byte nullsub_65 -_080F783C: .4byte gSprites -_080F7840: .4byte gSpriteAnimTable_83E5274 -_080F7844: .4byte sub_80F78CC -_080F7848: .4byte gOamData_83E521C -_080F784C: .4byte SpriteCallbackDummy -_080F7850: - ldr r0, _080F785C @ =gUnknown_020388B8 - ldr r0, [r0] - lsls r1, r5, 2 - adds r0, 0xC - b _080F7868 - .align 2, 0 -_080F785C: .4byte gUnknown_020388B8 -_080F7860: - ldr r0, _080F7870 @ =gUnknown_020388B8 - ldr r0, [r0] - lsls r1, r5, 2 - adds r0, 0x14 -_080F7868: - adds r0, r1 - movs r1, 0 - str r1, [r0] - b _080F78B0 - .align 2, 0 -_080F7870: .4byte gUnknown_020388B8 -_080F7874: - ldr r1, [r6] - movs r0, 0 - str r0, [r1, 0x24] -_080F787A: - ldr r4, _080F78C0 @ =gUnknown_020388B8 - ldr r1, [r4] - ldr r0, [sp, 0x50] - adds r0, 0x8 - strb r0, [r1, 0xA] - ldr r1, [sp, 0x54] - adds r1, 0x1 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x30 - str r0, [sp] - movs r0, 0 - movs r2, 0xF - movs r3, 0 - bl sub_814A5C0 - ldr r0, [sp, 0x4C] - adds r0, 0x8 - lsls r0, 24 - lsrs r0, 24 - ldr r1, [r4] - ldrb r1, [r1, 0xA] - bl sub_814A880 - ldr r0, _080F78C4 @ =sub_80F7908 - bl sub_814AABC -_080F78B0: - add sp, 0x5C - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080F78C0: .4byte gUnknown_020388B8 -_080F78C4: .4byte sub_80F7908 - thumb_func_end sub_80F761C - - thumb_func_start nullsub_65 -nullsub_65: @ 80F78C8 - bx lr - thumb_func_end nullsub_65 - - thumb_func_start sub_80F78CC -sub_80F78CC: @ 80F78CC - push {lr} - adds r2, r0, 0 - ldr r0, _080F78F4 @ =gUnknown_020388B8 - ldr r0, [r0] - movs r3, 0x2E - ldrsh r1, [r2, r3] - adds r0, 0x6 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - beq _080F78F8 - lsls r1, 1 - adds r1, 0x1 - lsls r1, 24 - lsrs r1, 24 - adds r0, r2, 0 - bl StartSpriteAnim - b _080F7902 - .align 2, 0 -_080F78F4: .4byte gUnknown_020388B8 -_080F78F8: - lsls r1, 25 - lsrs r1, 24 - adds r0, r2, 0 - bl StartSpriteAnim -_080F7902: - pop {r0} - bx r0 - thumb_func_end sub_80F78CC - - thumb_func_start sub_80F7908 -sub_80F7908: @ 80F7908 - ldr r1, _080F791C @ =gUnknown_020388B8 - ldr r2, [r1] - movs r1, 0x5 - ldrsb r1, [r2, r1] - lsls r1, 4 - ldrb r2, [r2, 0xA] - adds r1, r2 - strh r1, [r0, 0x22] - bx lr - .align 2, 0 -_080F791C: .4byte gUnknown_020388B8 - thumb_func_end sub_80F7908 - - thumb_func_start sub_80F7920 -sub_80F7920: @ 80F7920 - push {lr} - lsls r0, 16 - lsrs r0, 16 - lsls r1, 16 - lsrs r1, 16 - cmp r2, 0 - bne _080F7930 - ldr r2, _080F793C @ =gUnknown_083E49F4 -_080F7930: - movs r3, 0x10 - bl sub_80F7960 - pop {r1} - bx r1 - .align 2, 0 -_080F793C: .4byte gUnknown_083E49F4 - thumb_func_end sub_80F7920 - - thumb_func_start sub_80F7940 -sub_80F7940: @ 80F7940 - push {lr} - lsls r0, 16 - lsrs r0, 16 - lsls r1, 16 - lsrs r1, 16 - cmp r2, 0 - bne _080F7950 - ldr r2, _080F795C @ =gUnknown_083E49F4 -_080F7950: - movs r3, 0x1 - bl sub_80F7960 - pop {r1} - bx r1 - .align 2, 0 -_080F795C: .4byte gUnknown_083E49F4 - thumb_func_end sub_80F7940 - - thumb_func_start sub_80F7960 -sub_80F7960: @ 80F7960 - push {r4-r6,lr} - mov r6, r8 - push {r6} - sub sp, 0x28 - lsls r0, 16 - lsls r1, 16 - lsrs r1, 16 - ldr r4, _080F79DC @ =gUnknown_083E4A14 - str r4, [sp, 0x18] - movs r4, 0x80 - add r5, sp, 0x18 - lsrs r6, r0, 16 - orrs r0, r4 - str r0, [r5, 0x4] - str r2, [sp, 0x20] - ldr r0, _080F79E0 @ =0xffff0000 - mov r8, r0 - add r4, sp, 0x20 - ldr r0, [r4, 0x4] - mov r2, r8 - ands r0, r2 - orrs r0, r1 - str r0, [r4, 0x4] - mov r0, sp - movs r2, 0 - strh r6, [r0] - strh r1, [r0, 0x2] - ldr r0, _080F79E4 @ =gOamData_83E52B4 - str r0, [sp, 0x4] - ldr r0, _080F79E8 @ =gSpriteAnimTable_83E533C - str r0, [sp, 0x8] - str r2, [sp, 0xC] - ldr r0, _080F79EC @ =gDummySpriteAffineAnimTable - str r0, [sp, 0x10] - ldr r0, _080F79F0 @ =nullsub_65 - str r0, [sp, 0x14] - lsls r3, 23 - lsrs r3, 16 - ldr r0, [r5, 0x4] - mov r1, r8 - ands r0, r1 - orrs r0, r3 - str r0, [r5, 0x4] - adds r0, r5, 0 - bl LoadSpriteSheet - adds r0, r4, 0 - bl LoadSpritePalette - mov r0, sp - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x40 - bne _080F79F4 - movs r0, 0 - b _080F79FE - .align 2, 0 -_080F79DC: .4byte gUnknown_083E4A14 -_080F79E0: .4byte 0xffff0000 -_080F79E4: .4byte gOamData_83E52B4 -_080F79E8: .4byte gSpriteAnimTable_83E533C -_080F79EC: .4byte gDummySpriteAffineAnimTable -_080F79F0: .4byte nullsub_65 -_080F79F4: - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _080F7A0C @ =gSprites - adds r0, r1 -_080F79FE: - add sp, 0x28 - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_080F7A0C: .4byte gSprites - thumb_func_end sub_80F7960 - - thumb_func_start sub_80F7A10 -sub_80F7A10: @ 80F7A10 - lsls r0, 24 - lsrs r0, 17 - ldr r2, _080F7A28 @ =gUnknown_083E4A14 - adds r0, r2 - ldr r2, _080F7A2C @ =0x040000d4 - str r0, [r2] - str r1, [r2, 0x4] - ldr r0, _080F7A30 @ =0x80000040 - str r0, [r2, 0x8] - ldr r0, [r2, 0x8] - bx lr - .align 2, 0 -_080F7A28: .4byte gUnknown_083E4A14 -_080F7A2C: .4byte 0x040000d4 -_080F7A30: .4byte 0x80000040 - thumb_func_end sub_80F7A10 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/mystery_event_script.s b/asm/mystery_event_script.s deleted file mode 100644 index 02b6a0a48..000000000 --- a/asm/mystery_event_script.s +++ /dev/null @@ -1,831 +0,0 @@ - .include "constants/gba_constants.inc" - .include "constants/species_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start unref_sub_81261B4 -unref_sub_81261B4: @ 81261B4 - push {r4-r7,lr} - adds r5, r0, 0 - adds r7, r1, 0 - ldrb r0, [r5] - cmp r0, 0x1 - bne _08126204 - ldrb r0, [r5, 0x11] - cmp r0, 0xF - bne _08126204 - adds r6, r5, 0 - adds r6, 0x12 - adds r0, r6, 0 - bl sub_812618C - cmp r0, 0 - bne _08126204 - adds r0, r5, 0 - adds r0, 0x16 - bl sub_812618C - adds r4, r0, 0 - subs r4, r7 - adds r4, r5 - adds r0, r5, 0 - adds r0, 0x1A - bl sub_812618C - adds r1, r0, 0 - subs r1, r7 - adds r1, r5 - subs r1, r4 - adds r0, r4, 0 - bl sub_812616C - adds r1, r0, 0 - adds r0, r6, 0 - bl sub_81261A4 - movs r0, 0x1 - b _08126206 -_08126204: - movs r0, 0 -_08126206: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end unref_sub_81261B4 - - thumb_func_start unref_sub_812620C -unref_sub_812620C: @ 812620C - push {r4-r7,lr} - adds r5, r0, 0 - adds r7, r1, 0 - ldrb r0, [r5] - cmp r0, 0x1 - bne _08126260 - ldrb r0, [r5, 0x11] - cmp r0, 0x10 - bne _08126260 - adds r6, r5, 0 - adds r6, 0x12 - adds r0, r6, 0 - bl sub_812618C - cmp r0, 0 - bne _08126260 - adds r0, r5, 0 - adds r0, 0x16 - bl sub_812618C - adds r4, r0, 0 - subs r4, r7 - adds r4, r5 - adds r0, r5, 0 - adds r0, 0x1A - bl sub_812618C - adds r1, r0, 0 - subs r1, r7 - adds r1, r5 - subs r1, r4 - adds r0, r4, 0 - bl CalcCRC16 - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - adds r0, r6, 0 - bl sub_81261A4 - movs r0, 0x1 - b _08126262 -_08126260: - movs r0, 0 -_08126262: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end unref_sub_812620C - - thumb_func_start sub_8126268 -sub_8126268: @ 8126268 - push {lr} - movs r2, 0 - ldr r3, _08126284 @ =gSaveBlock1 + 0x3A80 - movs r1, 0 -_08126270: - adds r0, r3, r1 - ldrb r0, [r0] - adds r2, r0 - adds r1, 0x1 - cmp r1, 0xB - bls _08126270 - adds r0, r2, 0 - pop {r1} - bx r1 - .align 2, 0 -_08126284: .4byte gSaveBlock1 + 0x3A80 - thumb_func_end sub_8126268 - - thumb_func_start sub_8126288 -sub_8126288: @ 8126288 - push {r4,lr} - ldr r4, _081262B4 @ =gSaveBlock1 + 0x3A80 - bl sub_8126268 - adds r1, r0, 0 - ldrb r0, [r4] - cmp r0, 0 - beq _081262B0 - ldrb r0, [r4, 0x1] - cmp r0, 0 - beq _081262B0 - ldrh r0, [r4, 0x2] - cmp r0, 0 - beq _081262B0 - cmp r1, 0 - beq _081262B0 - subs r0, r4, 0x4 - ldr r0, [r0] - cmp r1, r0 - beq _081262B8 -_081262B0: - movs r0, 0 - b _081262BA - .align 2, 0 -_081262B4: .4byte gSaveBlock1 + 0x3A80 -_081262B8: - movs r0, 0x1 -_081262BA: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8126288 - - thumb_func_start sub_81262C0 -sub_81262C0: @ 81262C0 - push {lr} - sub sp, 0x4 - mov r1, sp - movs r0, 0 - strh r0, [r1] - ldr r1, _081262DC @ =gSaveBlock1 + 0x3A7C - ldr r2, _081262E0 @ =0x01000008 - mov r0, sp - bl CpuSet - add sp, 0x4 - pop {r0} - bx r0 - .align 2, 0 -_081262DC: .4byte gSaveBlock1 + 0x3A7C -_081262E0: .4byte 0x01000008 - thumb_func_end sub_81262C0 - - thumb_func_start sub_81262E4 -sub_81262E4: @ 81262E4 - push {r4-r6,lr} - lsls r0, 24 - lsrs r0, 24 - adds r3, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r5, r1, 0 - lsls r2, 16 - lsrs r2, 16 - adds r6, r2, 0 - cmp r3, 0 - beq _08126304 - cmp r1, 0 - beq _08126304 - cmp r2, 0 - bne _0812630A -_08126304: - bl sub_81262C0 - b _0812632A -_0812630A: - ldr r4, _08126330 @ =gSaveBlock1 - movs r1, 0xEA - lsls r1, 6 - adds r0, r4, r1 - strb r3, [r0] - adds r1, 0x1 - adds r0, r4, r1 - strb r5, [r0] - adds r1, 0x1 - adds r0, r4, r1 - strh r6, [r0] - bl sub_8126268 - ldr r1, _08126334 @ =0x00003a7c - adds r4, r1 - str r0, [r4] -_0812632A: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08126330: .4byte gSaveBlock1 -_08126334: .4byte 0x00003a7c - thumb_func_end sub_81262E4 - - thumb_func_start sub_8126338 -sub_8126338: @ 8126338 - push {r4,r5,lr} - ldr r4, _0812634C @ =gSaveBlock1 + 0x3A80 - bl sub_8126288 - cmp r0, 0 - bne _08126350 - bl sub_81262C0 - movs r0, 0 - b _0812636E - .align 2, 0 -_0812634C: .4byte gSaveBlock1 + 0x3A80 -_08126350: - ldrh r5, [r4, 0x2] - ldrb r0, [r4, 0x1] - subs r0, 0x1 - strb r0, [r4, 0x1] - lsls r0, 24 - cmp r0, 0 - bne _08126364 - bl sub_81262C0 - b _0812636C -_08126364: - bl sub_8126268 - subs r1, r4, 0x4 - str r0, [r1] -_0812636C: - adds r0, r5, 0 -_0812636E: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8126338 - - thumb_func_start script_status_stop_and_ret_1 -script_status_stop_and_ret_1: @ 8126374 - push {lr} - bl StopScript - movs r0, 0x1 - pop {r1} - bx r1 - thumb_func_end script_status_stop_and_ret_1 - - thumb_func_start sub_8126380 -sub_8126380: @ 8126380 - push {r4-r7,lr} - adds r7, r0, 0 - bl ScriptReadWord - str r0, [r7, 0x68] - adds r0, r7, 0 - bl ScriptReadHalfword - adds r5, r0, 0 - lsls r5, 16 - lsrs r5, 16 - adds r0, r7, 0 - bl ScriptReadWord - adds r6, r0, 0 - adds r0, r7, 0 - bl ScriptReadHalfword - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r7, 0 - bl ScriptReadWord - adds r3, r0, 0 - adds r0, r5, 0 - adds r1, r6, 0 - adds r2, r4, 0 - bl sub_8126098 - cmp r0, 0x1 - bne _081263C4 - str r0, [r7, 0x70] - b _081263C8 -_081263C4: - bl sub_81260D0 -_081263C8: - movs r0, 0x1 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_8126380 - - thumb_func_start sub_81263D0 -sub_81263D0: @ 81263D0 - movs r0, 0 - bx lr - thumb_func_end sub_81263D0 - - thumb_func_start sub_81263D4 -sub_81263D4: @ 81263D4 - ldr r1, [r0, 0x8] - ldrb r2, [r1] - adds r1, 0x1 - str r1, [r0, 0x8] - str r2, [r0, 0x6C] - movs r0, 0 - bx lr - thumb_func_end sub_81263D4 - - thumb_func_start sub_81263E4 -sub_81263E4: @ 81263E4 - push {r4,r5,lr} - adds r4, r0, 0 - ldr r0, [r4, 0x8] - ldrb r5, [r0] - adds r0, 0x1 - str r0, [r4, 0x8] - adds r0, r4, 0 - bl ScriptReadWord - ldr r1, [r4, 0x68] - subs r0, r1 - ldr r1, [r4, 0x64] - adds r1, r0, r1 - cmp r5, 0xFF - beq _08126408 - ldr r0, [r4, 0x6C] - cmp r5, r0 - bne _0812640E -_08126408: - ldr r0, _08126418 @ =gStringVar4 - bl StringExpandPlaceholders -_0812640E: - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_08126418: .4byte gStringVar4 - thumb_func_end sub_81263E4 - - thumb_func_start sub_812641C -sub_812641C: @ 812641C - push {r4,lr} - adds r4, r0, 0 - bl ScriptReadWord - ldr r1, [r4, 0x68] - subs r0, r1 - ldr r1, [r4, 0x64] - adds r0, r1 - bl ScriptContext2_RunNewScript - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_812641C - - thumb_func_start sub_8126438 -sub_8126438: @ 8126438 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r7, r0, 0 - bl IsEnigmaBerryValid - mov r8, r0 - adds r0, r7, 0 - bl ScriptReadWord - adds r4, r0, 0 - ldr r0, [r7, 0x68] - subs r4, r0 - ldr r0, [r7, 0x64] - adds r4, r0 - ldr r6, _08126484 @ =gStringVar1 - ldr r5, _08126488 @ =gSaveBlock1 + 0x3160 - adds r0, r6, 0 - adds r1, r5, 0 - movs r2, 0x7 - bl StringCopyN - adds r0, r4, 0 - bl SetEnigmaBerry - ldr r4, _0812648C @ =gStringVar2 - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x7 - bl StringCopyN - mov r0, r8 - cmp r0, 0 - bne _08126498 - ldr r0, _08126490 @ =gStringVar4 - ldr r1, _08126494 @ =gOtherText_BerryObtainedDadHasIt - b _081264B8 - .align 2, 0 -_08126484: .4byte gStringVar1 -_08126488: .4byte gSaveBlock1 + 0x3160 -_0812648C: .4byte gStringVar2 -_08126490: .4byte gStringVar4 -_08126494: .4byte gOtherText_BerryObtainedDadHasIt -_08126498: - adds r0, r6, 0 - adds r1, r4, 0 - bl StringCompare - cmp r0, 0 - beq _081264B4 - ldr r0, _081264AC @ =gStringVar4 - ldr r1, _081264B0 @ =gOtherText_BerryTransformed - b _081264B8 - .align 2, 0 -_081264AC: .4byte gStringVar4 -_081264B0: .4byte gOtherText_BerryTransformed -_081264B4: - ldr r0, _081264D4 @ =gStringVar4 - ldr r1, _081264D8 @ =gOtherText_BerryAlreadyObtained -_081264B8: - bl StringExpandPlaceholders - movs r0, 0x2 - str r0, [r7, 0x6C] - bl IsEnigmaBerryValid - cmp r0, 0x1 - bne _081264E0 - ldr r0, _081264DC @ =0x0000402d - movs r1, 0x1 - bl VarSet - b _081264E4 - .align 2, 0 -_081264D4: .4byte gStringVar4 -_081264D8: .4byte gOtherText_BerryAlreadyObtained -_081264DC: .4byte 0x0000402d -_081264E0: - movs r0, 0x1 - str r0, [r7, 0x6C] -_081264E4: - movs r0, 0 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_8126438 - - thumb_func_start sub_81264F0 -sub_81264F0: @ 81264F0 - push {r4,lr} - adds r4, r0, 0 - ldr r2, [r4, 0x8] - ldrb r0, [r2] - adds r2, 0x1 - str r2, [r4, 0x8] - ldrb r1, [r2] - adds r2, 0x1 - str r2, [r4, 0x8] - bl GiveGiftRibbonToParty - ldr r0, _0812651C @ =gStringVar4 - ldr r1, _08126520 @ =gOtherText_SpecialRibbonReceived - bl StringExpandPlaceholders - movs r0, 0x2 - str r0, [r4, 0x6C] - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0812651C: .4byte gStringVar4 -_08126520: .4byte gOtherText_SpecialRibbonReceived - thumb_func_end sub_81264F0 - - thumb_func_start sub_8126524 -sub_8126524: @ 8126524 - push {r4-r6,lr} - mov r6, r9 - mov r5, r8 - push {r5,r6} - sub sp, 0x4 - adds r4, r0, 0 - ldr r0, [r4, 0x8] - ldrb r1, [r0] - mov r9, r1 - adds r0, 0x1 - str r0, [r4, 0x8] - ldrb r1, [r0] - mov r8, r1 - adds r1, r0, 0x1 - str r1, [r4, 0x8] - ldrb r6, [r0, 0x1] - adds r1, 0x1 - str r1, [r4, 0x8] - adds r0, r4, 0 - bl ScriptReadWord - adds r5, r0, 0 - ldr r0, [r4, 0x68] - subs r5, r0 - ldr r0, [r4, 0x64] - adds r5, r0 - adds r0, r4, 0 - bl ScriptReadWord - adds r1, r0, 0 - ldr r0, [r4, 0x68] - subs r1, r0 - ldr r0, [r4, 0x64] - adds r1, r0 - subs r1, r5 - lsls r1, 16 - lsrs r1, 16 - str r6, [sp] - adds r0, r5, 0 - mov r2, r9 - mov r3, r8 - bl InitRamScript - movs r0, 0 - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_8126524 - - thumb_func_start sub_812658C -sub_812658C: @ 812658C - push {r4,lr} - adds r4, r0, 0 - bl EnableNationalPokedex - ldr r0, _081265A8 @ =gStringVar4 - ldr r1, _081265AC @ =gOtherText_DexUpgraded - bl StringExpandPlaceholders - movs r0, 0x2 - str r0, [r4, 0x6C] - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_081265A8: .4byte gStringVar4 -_081265AC: .4byte gOtherText_DexUpgraded - thumb_func_end sub_812658C - - thumb_func_start sub_81265B0 -sub_81265B0: @ 81265B0 - push {r4,lr} - adds r4, r0, 0 - ldr r1, [r4, 0x8] - ldrb r0, [r1] - adds r1, 0x1 - str r1, [r4, 0x8] - bl sub_80EB890 - ldr r0, _081265D4 @ =gStringVar4 - ldr r1, _081265D8 @ =gOtherText_RareWordAdded - bl StringExpandPlaceholders - movs r0, 0x2 - str r0, [r4, 0x6C] - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_081265D4: .4byte gStringVar4 -_081265D8: .4byte gOtherText_RareWordAdded - thumb_func_end sub_81265B0 - - thumb_func_start sub_81265DC -sub_81265DC: @ 81265DC - push {r4,r5,lr} - ldr r1, [r0, 0x8] - ldrb r5, [r1] - adds r1, 0x1 - str r1, [r0, 0x8] - ldrb r4, [r1] - adds r1, 0x1 - str r1, [r0, 0x8] - bl ScriptReadHalfword - adds r2, r0, 0 - lsls r2, 16 - lsrs r2, 16 - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_81262E4 - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_81265DC - - thumb_func_start sub_8126608 -sub_8126608: @ 8126608 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x88 - adds r6, r0, 0 - bl ScriptReadWord - ldr r1, [r6, 0x68] - subs r0, r1 - ldr r1, [r6, 0x64] - adds r5, r0, r1 - movs r0, 0x64 - adds r0, r5 - mov r8, r0 - add r4, sp, 0x24 - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x64 - bl memcpy - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - lsls r0, 16 - lsrs r4, r0, 16 - movs r0, 0xCE - lsls r0, 1 - cmp r4, r0 - bne _08126658 - ldr r0, _08126650 @ =gStringVar1 - ldr r1, _08126654 @ =gSystemText_Egg - movs r2, 0xB - bl StringCopyN - b _08126662 - .align 2, 0 -_08126650: .4byte gStringVar1 -_08126654: .4byte gSystemText_Egg -_08126658: - ldr r0, _08126678 @ =gStringVar1 - ldr r1, _0812667C @ =gSystemText_Pokemon2 - movs r2, 0xB - bl StringCopyN -_08126662: - ldr r0, _08126680 @ =gPlayerPartyCount - ldrb r0, [r0] - cmp r0, 0x6 - bne _0812668C - ldr r0, _08126684 @ =gStringVar4 - ldr r1, _08126688 @ =gOtherText_PartyIsFull - bl StringExpandPlaceholders - movs r0, 0x3 - b _081266F6 - .align 2, 0 -_08126678: .4byte gStringVar1 -_0812667C: .4byte gSystemText_Pokemon2 -_08126680: .4byte gPlayerPartyCount -_08126684: .4byte gStringVar4 -_08126688: .4byte gOtherText_PartyIsFull -_0812668C: - ldr r7, _08126708 @ =gPlayerParty + 5 * 0x64 - adds r0, r7, 0 - adds r1, r5, 0 - movs r2, 0x64 - bl memcpy - mov r0, sp - mov r1, r8 - movs r2, 0x24 - bl memcpy - movs r0, 0xCE - lsls r0, 1 - cmp r4, r0 - beq _081266C6 - adds r0, r4, 0 - bl SpeciesToNationalPokedexNum - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r4, 0 - movs r1, 0x2 - bl GetNationalPokedexFlag - adds r0, r4, 0 - movs r1, 0x3 - bl GetNationalPokedexFlag -_081266C6: - adds r0, r7, 0 - movs r1, 0xC - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - bl ItemIsMail - lsls r0, 24 - cmp r0, 0 - beq _081266E4 - adds r0, r7, 0 - mov r1, sp - bl GiveMailToMon2 -_081266E4: - bl party_compaction - bl CalculatePlayerPartyCount - ldr r0, _0812670C @ =gStringVar4 - ldr r1, _08126710 @ =gOtherText_PokeWasSentOver - bl StringExpandPlaceholders - movs r0, 0x2 -_081266F6: - str r0, [r6, 0x6C] - movs r0, 0 - add sp, 0x88 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08126708: .4byte gPlayerParty + 5 * 0x64 -_0812670C: .4byte gStringVar4 -_08126710: .4byte gOtherText_PokeWasSentOver - thumb_func_end sub_8126608 - - thumb_func_start sub_8126714 -sub_8126714: @ 8126714 - push {r4,lr} - adds r4, r0, 0 - bl ScriptReadWord - adds r1, r0, 0 - ldr r0, [r4, 0x68] - subs r1, r0 - ldr r0, [r4, 0x64] - adds r1, r0 - ldr r0, _08126748 @ =gSaveBlock2 + 0x498 - movs r2, 0xBC - bl memcpy - bl sub_813601C - ldr r0, _0812674C @ =gStringVar4 - ldr r1, _08126750 @ =gOtherText_NewTrainerInHoenn - bl StringExpandPlaceholders - movs r0, 0x2 - str r0, [r4, 0x6C] - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08126748: .4byte gSaveBlock2 + 0x498 -_0812674C: .4byte gStringVar4 -_08126750: .4byte gOtherText_NewTrainerInHoenn - thumb_func_end sub_8126714 - - thumb_func_start sub_8126754 -sub_8126754: @ 8126754 - push {r4,lr} - adds r4, r0, 0 - bl EnableResetRTC - ldr r0, _08126770 @ =gStringVar4 - ldr r1, _08126774 @ =gSystemText_ClockAdjustmentUsable - bl StringExpandPlaceholders - movs r0, 0x2 - str r0, [r4, 0x6C] - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08126770: .4byte gStringVar4 -_08126774: .4byte gSystemText_ClockAdjustmentUsable - thumb_func_end sub_8126754 - - thumb_func_start sub_8126778 -sub_8126778: @ 8126778 - push {r4-r6,lr} - adds r6, r0, 0 - bl ScriptReadWord - adds r5, r0, 0 - adds r0, r6, 0 - bl ScriptReadWord - adds r4, r0, 0 - ldr r0, [r6, 0x68] - subs r4, r0 - ldr r0, [r6, 0x64] - adds r4, r0 - adds r0, r6, 0 - bl ScriptReadWord - adds r1, r0, 0 - ldr r0, [r6, 0x68] - subs r1, r0 - ldr r0, [r6, 0x64] - adds r1, r0 - subs r1, r4 - adds r0, r4, 0 - bl sub_812616C - cmp r5, r0 - beq _081267B6 - movs r0, 0 - str r0, [r6, 0x70] - movs r0, 0x1 - str r0, [r6, 0x6C] -_081267B6: - movs r0, 0x1 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_8126778 - - thumb_func_start sub_81267C0 -sub_81267C0: @ 81267C0 - push {r4-r6,lr} - adds r6, r0, 0 - bl ScriptReadWord - adds r5, r0, 0 - adds r0, r6, 0 - bl ScriptReadWord - adds r4, r0, 0 - ldr r0, [r6, 0x68] - subs r4, r0 - ldr r0, [r6, 0x64] - adds r4, r0 - adds r0, r6, 0 - bl ScriptReadWord - adds r1, r0, 0 - ldr r0, [r6, 0x68] - subs r1, r0 - ldr r0, [r6, 0x64] - adds r1, r0 - subs r1, r4 - adds r0, r4, 0 - bl CalcCRC16 - lsls r0, 16 - lsrs r0, 16 - cmp r5, r0 - beq _08126802 - movs r0, 0 - str r0, [r6, 0x70] - movs r0, 0x1 - str r0, [r6, 0x6C] -_08126802: - movs r0, 0x1 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_81267C0 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/party_menu.s b/asm/party_menu.s deleted file mode 100644 index 8a7c153b9..000000000 --- a/asm/party_menu.s +++ /dev/null @@ -1,8225 +0,0 @@ - .include "constants/gba_constants.inc" - .include "constants/species_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start sub_806AEDC -sub_806AEDC: @ 806AEDC - push {r4-r6,lr} - sub sp, 0x4 - bl AnimateSprites - bl BuildOamBuffer - ldr r0, _0806AF2C @ =gUnknown_0202E8FA - ldrb r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 4 - ldr r1, _0806AF30 @ =gUnknown_08376BB4 - adds r5, r0, r1 - movs r6, 0 -_0806AEF8: - ldrb r0, [r5] - lsls r0, 3 - ldrb r1, [r5, 0x1] - lsls r1, 3 - ldr r2, [r5, 0x4] - lsls r3, r6, 5 - movs r4, 0x80 - lsls r4, 2 - orrs r3, r4 - str r3, [sp] - movs r3, 0 - bl sub_800142C - adds r5, 0x8 - adds r6, 0x1 - cmp r6, 0x5 - ble _0806AEF8 - bl RunTasks - bl UpdatePaletteFade - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0806AF2C: .4byte gUnknown_0202E8FA -_0806AF30: .4byte gUnknown_08376BB4 - thumb_func_end sub_806AEDC - - thumb_func_start sub_806AF34 -sub_806AF34: @ 806AF34 - push {lr} - bl LoadOam - bl ProcessSpriteCopyRequests - bl TransferPlttBuffer - bl sub_806B548 - pop {r0} - bx r0 - thumb_func_end sub_806AF34 - - thumb_func_start sub_806AF4C -sub_806AF4C: @ 806AF4C - push {r4,r5,lr} - adds r4, r2, 0 - lsls r0, 24 - lsrs r2, r0, 24 - lsls r1, 24 - lsrs r1, 24 - lsls r3, 24 - lsrs r3, 24 - cmp r1, 0xFF - beq _0806AF64 - ldr r0, _0806AF84 @ =gBattleTypeFlags - strh r1, [r0] -_0806AF64: - ldr r0, _0806AF88 @ =0x0201b000 - movs r5, 0x96 - lsls r5, 2 - adds r1, r0, r5 - strb r2, [r1] - movs r2, 0x97 - lsls r2, 2 - adds r1, r0, r2 - str r4, [r1] - adds r5, 0x1 - adds r0, r5 - strb r3, [r0] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0806AF84: .4byte gBattleTypeFlags -_0806AF88: .4byte 0x0201b000 - thumb_func_end sub_806AF4C - - thumb_func_start sub_806AF8C -sub_806AF8C: @ 806AF8C - push {lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r1, 24 - lsls r3, 24 - lsrs r3, 24 - bl sub_806AF4C - ldr r0, _0806AFA8 @ =sub_806B460 - bl SetMainCallback2 - pop {r0} - bx r0 - .align 2, 0 -_0806AFA8: .4byte sub_806B460 - thumb_func_end sub_806AF8C - - thumb_func_start OpenPartyMenu -OpenPartyMenu: @ 806AFAC - push {lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r1, 24 - ldr r2, _0806AFCC @ =gUnknown_08376C74 - lsls r3, r0, 1 - adds r3, r0 - lsls r3, 2 - adds r3, r2 - ldr r2, [r3] - ldrb r3, [r3, 0x8] - bl sub_806AF8C - pop {r0} - bx r0 - .align 2, 0 -_0806AFCC: .4byte gUnknown_08376C74 - thumb_func_end OpenPartyMenu - - thumb_func_start sub_806AFD0 -sub_806AFD0: @ 806AFD0 - push {r4,r5,lr} - ldr r1, _0806AFF0 @ =0x0201b000 - movs r2, 0x99 - lsls r2, 2 - adds r0, r1, r2 - movs r2, 0 - ldrsh r0, [r0, r2] - adds r4, r1, 0 - cmp r0, 0x9 - bls _0806AFE6 - b _0806B11A -_0806AFE6: - lsls r0, 2 - ldr r1, _0806AFF4 @ =_0806AFF8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0806AFF0: .4byte 0x0201b000 -_0806AFF4: .4byte _0806AFF8 - .align 2, 0 -_0806AFF8: - .4byte _0806B020 - .4byte _0806B060 - .4byte _0806B066 - .4byte _0806B07A - .4byte _0806B0A4 - .4byte _0806B0AA - .4byte _0806B0BC - .4byte _0806B0C2 - .4byte _0806B0D4 - .4byte _0806B0EC -_0806B020: - ldr r0, _0806B048 @ =0x00000266 - adds r5, r4, r0 - movs r1, 0 - ldrsh r3, [r5, r1] - ldr r0, _0806B04C @ =gPlayerPartyCount - ldrb r0, [r0] - cmp r3, r0 - bge _0806B054 - movs r2, 0x98 - lsls r2, 2 - adds r0, r4, r2 - ldrb r0, [r0] - ldrb r1, [r5] - movs r2, 0x64 - muls r2, r3 - ldr r3, _0806B050 @ =gPlayerParty - adds r2, r3 - bl TryCreatePartyMenuMonIcon - b _0806B114 - .align 2, 0 -_0806B048: .4byte 0x00000266 -_0806B04C: .4byte gPlayerPartyCount -_0806B050: .4byte gPlayerParty -_0806B054: - movs r0, 0 - strh r0, [r5] - movs r0, 0x99 - lsls r0, 2 - adds r1, r4, r0 - b _0806B0E0 -_0806B060: - bl LoadHeldItemIconGraphics - b _0806B0D8 -_0806B066: - movs r1, 0x98 - lsls r1, 2 - adds r0, r4, r1 - ldrb r0, [r0] - bl CreateHeldItemIcons_806DC34 - movs r2, 0x99 - lsls r2, 2 - adds r1, r4, r2 - b _0806B0E0 -_0806B07A: - movs r1, 0x98 - lsls r1, 2 - adds r0, r4, r1 - ldrb r0, [r0] - ldr r2, _0806B0A0 @ =0x00000266 - adds r5, r4, r2 - ldrb r1, [r5] - bl sub_806BD58 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0806B114 - movs r0, 0 - strh r0, [r5] - movs r0, 0x99 - lsls r0, 2 - adds r1, r4, r0 - b _0806B0E0 - .align 2, 0 -_0806B0A0: .4byte 0x00000266 -_0806B0A4: - bl PartyMenuPrintMonsLevelOrStatus - b _0806B0D8 -_0806B0AA: - bl PrintPartyMenuMonNicknames - ldr r1, _0806B0B8 @ =0x0201b000 - movs r0, 0x99 - lsls r0, 2 - adds r1, r0 - b _0806B0E0 - .align 2, 0 -_0806B0B8: .4byte 0x0201b000 -_0806B0BC: - bl PartyMenuTryPrintMonsHP - b _0806B0D8 -_0806B0C2: - bl nullsub_13 - ldr r1, _0806B0D0 @ =0x0201b000 - movs r0, 0x99 - lsls r0, 2 - adds r1, r0 - b _0806B0E0 - .align 2, 0 -_0806B0D0: .4byte 0x0201b000 -_0806B0D4: - bl PartyMenuDrawHPBars -_0806B0D8: - ldr r1, _0806B0E8 @ =0x0201b000 - movs r2, 0x99 - lsls r2, 2 - adds r1, r2 -_0806B0E0: - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - b _0806B11A - .align 2, 0 -_0806B0E8: .4byte 0x0201b000 -_0806B0EC: - ldr r0, _0806B110 @ =0x00000266 - adds r5, r4, r0 - ldrb r0, [r5] - bl sub_806B58C - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0806B114 - movs r1, 0 - strh r1, [r5] - movs r2, 0x99 - lsls r2, 2 - adds r0, r4, r2 - strh r1, [r0] - movs r0, 0x1 - b _0806B11C - .align 2, 0 -_0806B110: .4byte 0x00000266 -_0806B114: - ldrh r0, [r5] - adds r0, 0x1 - strh r0, [r5] -_0806B11A: - movs r0, 0 -_0806B11C: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_806AFD0 - - thumb_func_start sub_806B124 -sub_806B124: @ 806B124 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0xC - ldr r0, _0806B144 @ =gMain - ldr r1, _0806B148 @ =0x0000043c - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x11 - bls _0806B13A - b _0806B450 -_0806B13A: - lsls r0, 2 - ldr r1, _0806B14C @ =_0806B150 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0806B144: .4byte gMain -_0806B148: .4byte 0x0000043c -_0806B14C: .4byte _0806B150 - .align 2, 0 -_0806B150: - .4byte _0806B198 - .4byte _0806B240 - .4byte _0806B246 - .4byte _0806B27C - .4byte _0806B282 - .4byte _0806B2AC - .4byte _0806B2B2 - .4byte _0806B2D0 - .4byte _0806B2EC - .4byte _0806B318 - .4byte _0806B344 - .4byte _0806B37C - .4byte _0806B382 - .4byte _0806B3C0 - .4byte _0806B3CC - .4byte _0806B3E4 - .4byte _0806B40C - .4byte _0806B440 -_0806B198: - movs r0, 0 - bl SetVBlankCallback - movs r3, 0xC0 - lsls r3, 19 - movs r4, 0xC0 - lsls r4, 9 - add r2, sp, 0x8 - mov r8, r2 - add r2, sp, 0x4 - movs r6, 0 - ldr r1, _0806B22C @ =0x040000d4 - movs r5, 0x80 - lsls r5, 5 - ldr r7, _0806B230 @ =0x81000800 - movs r0, 0x81 - lsls r0, 24 - mov r12, r0 -_0806B1BC: - strh r6, [r2] - add r0, sp, 0x4 - str r0, [r1] - str r3, [r1, 0x4] - str r7, [r1, 0x8] - ldr r0, [r1, 0x8] - adds r3, r5 - subs r4, r5 - cmp r4, r5 - bhi _0806B1BC - strh r6, [r2] - add r2, sp, 0x4 - str r2, [r1] - str r3, [r1, 0x4] - lsrs r0, r4, 1 - mov r3, r12 - orrs r0, r3 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - movs r0, 0xE0 - lsls r0, 19 - movs r3, 0x80 - lsls r3, 3 - movs r4, 0 - str r4, [sp, 0x8] - ldr r2, _0806B22C @ =0x040000d4 - mov r1, r8 - str r1, [r2] - str r0, [r2, 0x4] - lsrs r0, r3, 2 - movs r1, 0x85 - lsls r1, 24 - orrs r0, r1 - str r0, [r2, 0x8] - ldr r0, [r2, 0x8] - movs r1, 0xA0 - lsls r1, 19 - add r0, sp, 0x4 - strh r4, [r0] - str r0, [r2] - str r1, [r2, 0x4] - lsrs r3, 1 - movs r0, 0x81 - lsls r0, 24 - orrs r3, r0 - str r3, [r2, 0x8] - ldr r0, [r2, 0x8] - ldr r2, _0806B234 @ =gPaletteFade - ldrb r0, [r2, 0x8] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2, 0x8] - ldr r1, _0806B238 @ =gMain - ldr r2, _0806B23C @ =0x0000043c - adds r1, r2 - b _0806B42C - .align 2, 0 -_0806B22C: .4byte 0x040000d4 -_0806B230: .4byte 0x81000800 -_0806B234: .4byte gPaletteFade -_0806B238: .4byte gMain -_0806B23C: .4byte 0x0000043c -_0806B240: - bl remove_some_task - b _0806B426 -_0806B246: - bl sub_806B4A8 - ldr r1, _0806B26C @ =0x0201b000 - movs r2, 0x99 - lsls r2, 2 - adds r0, r1, r2 - movs r2, 0 - strh r2, [r0] - ldr r3, _0806B270 @ =0x00000266 - adds r0, r1, r3 - strh r2, [r0] - movs r0, 0x9A - lsls r0, 2 - adds r1, r0 - strh r2, [r1] - ldr r1, _0806B274 @ =gMain - ldr r2, _0806B278 @ =0x0000043c - adds r1, r2 - b _0806B42C - .align 2, 0 -_0806B26C: .4byte 0x0201b000 -_0806B270: .4byte 0x00000266 -_0806B274: .4byte gMain -_0806B278: .4byte 0x0000043c -_0806B27C: - bl ResetSpriteData - b _0806B426 -_0806B282: - ldr r0, _0806B2A0 @ =0x0201b000 - movs r1, 0x96 - lsls r1, 2 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x1 - beq _0806B298 - cmp r0, 0x5 - beq _0806B298 - bl ResetTasks -_0806B298: - ldr r1, _0806B2A4 @ =gMain - ldr r2, _0806B2A8 @ =0x0000043c - adds r1, r2 - b _0806B42C - .align 2, 0 -_0806B2A0: .4byte 0x0201b000 -_0806B2A4: .4byte gMain -_0806B2A8: .4byte 0x0000043c -_0806B2AC: - bl FreeAllSpritePalettes - b _0806B426 -_0806B2B2: - ldr r4, _0806B2CC @ =0x0201b000 - movs r1, 0x97 - lsls r1, 2 - adds r0, r4, r1 - ldr r0, [r0] - movs r1, 0 - bl CreateTask - movs r2, 0x98 - lsls r2, 2 - adds r1, r4, r2 - strb r0, [r1] - b _0806B426 - .align 2, 0 -_0806B2CC: .4byte 0x0201b000 -_0806B2D0: - ldr r0, _0806B2E0 @ =gWindowConfig_81E6C90 - bl SetUpWindowConfig - ldr r1, _0806B2E4 @ =gMain - ldr r0, _0806B2E8 @ =0x0000043c - adds r1, r0 - b _0806B42C - .align 2, 0 -_0806B2E0: .4byte gWindowConfig_81E6C90 -_0806B2E4: .4byte gMain -_0806B2E8: .4byte 0x0000043c -_0806B2EC: - ldr r4, _0806B308 @ =gUnknown_03004210 - ldr r1, _0806B30C @ =gWindowConfig_81E6C90 - adds r0, r4, 0 - bl InitWindowFromConfig - adds r0, r4, 0 - movs r1, 0x1 - bl MultistepInitWindowTileData - ldr r1, _0806B310 @ =gMain - ldr r2, _0806B314 @ =0x0000043c - adds r1, r2 - b _0806B42C - .align 2, 0 -_0806B308: .4byte gUnknown_03004210 -_0806B30C: .4byte gWindowConfig_81E6C90 -_0806B310: .4byte gMain -_0806B314: .4byte 0x0000043c -_0806B318: - bl MultistepLoadFont - cmp r0, 0 - bne _0806B322 - b _0806B450 -_0806B322: - ldr r0, _0806B338 @ =0x0201b000 - movs r3, 0x99 - lsls r3, 2 - adds r0, r3 - movs r1, 0x1 - strh r1, [r0] - ldr r1, _0806B33C @ =gMain - ldr r0, _0806B340 @ =0x0000043c - adds r1, r0 - b _0806B42C - .align 2, 0 -_0806B338: .4byte 0x0201b000 -_0806B33C: .4byte gMain -_0806B340: .4byte 0x0000043c -_0806B344: - ldr r0, _0806B368 @ =0x0201b000 - movs r1, 0x99 - lsls r1, 2 - adds r4, r0, r1 - ldrb r0, [r4] - bl sub_806D718 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0806B374 - movs r0, 0 - strh r0, [r4] - ldr r1, _0806B36C @ =gMain - ldr r2, _0806B370 @ =0x0000043c - adds r1, r2 - b _0806B42C - .align 2, 0 -_0806B368: .4byte 0x0201b000 -_0806B36C: .4byte gMain -_0806B370: .4byte 0x0000043c -_0806B374: - ldrh r0, [r4] - adds r0, 0x1 - strh r0, [r4] - b _0806B450 -_0806B37C: - bl sub_809D51C - b _0806B426 -_0806B382: - ldr r2, _0806B3B0 @ =gUnknown_08376C74 - ldr r0, _0806B3B4 @ =0x0201b000 - movs r1, 0x96 - lsls r1, 2 - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r2, 0x4 - adds r0, r2 - ldr r0, [r0] - bl _call_via_r0 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0806B450 - ldr r1, _0806B3B8 @ =gMain - ldr r2, _0806B3BC @ =0x0000043c - adds r1, r2 - b _0806B42C - .align 2, 0 -_0806B3B0: .4byte gUnknown_08376C74 -_0806B3B4: .4byte 0x0201b000 -_0806B3B8: .4byte gMain -_0806B3BC: .4byte 0x0000043c -_0806B3C0: - ldr r0, _0806B3C8 @ =gWindowConfig_81E6CC8 - bl MultistepInitMenuWindowBegin - b _0806B426 - .align 2, 0 -_0806B3C8: .4byte gWindowConfig_81E6CC8 -_0806B3CC: - bl MultistepInitMenuWindowContinue - cmp r0, 0 - beq _0806B450 - ldr r1, _0806B3DC @ =gMain - ldr r0, _0806B3E0 @ =0x0000043c - adds r1, r0 - b _0806B42C - .align 2, 0 -_0806B3DC: .4byte gMain -_0806B3E0: .4byte 0x0000043c -_0806B3E4: - ldr r0, _0806B3FC @ =0x0201b000 - ldr r1, _0806B400 @ =0x00000259 - adds r0, r1 - ldrb r0, [r0] - movs r1, 0 - bl sub_806D538 - ldr r1, _0806B404 @ =gMain - ldr r2, _0806B408 @ =0x0000043c - adds r1, r2 - b _0806B42C - .align 2, 0 -_0806B3FC: .4byte 0x0201b000 -_0806B400: .4byte 0x00000259 -_0806B404: .4byte gMain -_0806B408: .4byte 0x0000043c -_0806B40C: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - ldr r2, _0806B434 @ =gPaletteFade - ldrb r1, [r2, 0x8] - movs r0, 0x7F - ands r0, r1 - strb r0, [r2, 0x8] -_0806B426: - ldr r1, _0806B438 @ =gMain - ldr r3, _0806B43C @ =0x0000043c - adds r1, r3 -_0806B42C: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0806B450 - .align 2, 0 -_0806B434: .4byte gPaletteFade -_0806B438: .4byte gMain -_0806B43C: .4byte 0x0000043c -_0806B440: - ldr r0, _0806B44C @ =sub_806AF34 - bl SetVBlankCallback - movs r0, 0x1 - b _0806B452 - .align 2, 0 -_0806B44C: .4byte sub_806AF34 -_0806B450: - movs r0, 0 -_0806B452: - add sp, 0xC - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_806B124 - - thumb_func_start sub_806B460 -sub_806B460: @ 806B460 - push {lr} - b _0806B470 -_0806B464: - bl sub_80F9344 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _0806B49C -_0806B470: - bl sub_806B124 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0806B464 - ldr r1, _0806B4A0 @ =0x0201b000 - movs r2, 0x96 - lsls r2, 2 - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0x5 - beq _0806B496 - adds r2, 0x8 - adds r0, r1, r2 - ldrb r0, [r0] - movs r1, 0 - bl sub_806BF74 -_0806B496: - ldr r0, _0806B4A4 @ =sub_806AEDC - bl SetMainCallback2 -_0806B49C: - pop {r0} - bx r0 - .align 2, 0 -_0806B4A0: .4byte 0x0201b000 -_0806B4A4: .4byte sub_806AEDC - thumb_func_end sub_806B460 - - thumb_func_start sub_806B4A8 -sub_806B4A8: @ 806B4A8 - push {lr} - movs r0, 0 - bl SetHBlankCallback - movs r1, 0x80 - lsls r1, 19 - movs r2, 0xFA - lsls r2, 5 - adds r0, r2, 0 - strh r0, [r1] - adds r1, 0x8 - ldr r2, _0806B50C @ =0x00001e05 - adds r0, r2, 0 - strh r0, [r1] - adds r1, 0x2 - ldr r2, _0806B510 @ =0x00000703 - adds r0, r2, 0 - strh r0, [r1] - adds r1, 0x2 - ldr r2, _0806B514 @ =0x00000f08 - adds r0, r2, 0 - strh r0, [r1] - adds r1, 0x2 - ldr r2, _0806B518 @ =0x00000602 - adds r0, r2, 0 - strh r0, [r1] - ldr r0, _0806B51C @ =REG_BLDCNT - movs r1, 0 - strh r1, [r0] - subs r0, 0x40 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - ldr r2, _0806B520 @ =REG_BG3VOFS - strh r1, [r2] - ldr r1, _0806B524 @ =0x0000ffff - adds r0, r1, 0 - strh r0, [r2] - pop {r0} - bx r0 - .align 2, 0 -_0806B50C: .4byte 0x00001e05 -_0806B510: .4byte 0x00000703 -_0806B514: .4byte 0x00000f08 -_0806B518: .4byte 0x00000602 -_0806B51C: .4byte REG_BLDCNT -_0806B520: .4byte REG_BG3VOFS -_0806B524: .4byte 0x0000ffff - thumb_func_end sub_806B4A8 - - thumb_func_start IsLinkDoubleBattle -IsLinkDoubleBattle: @ 806B528 - push {lr} - ldr r0, _0806B53C @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x4B - ands r0, r1 - cmp r0, 0x4B - beq _0806B540 - movs r0, 0 - b _0806B542 - .align 2, 0 -_0806B53C: .4byte gBattleTypeFlags -_0806B540: - movs r0, 0x1 -_0806B542: - pop {r1} - bx r1 - thumb_func_end IsLinkDoubleBattle - - thumb_func_start sub_806B548 -sub_806B548: @ 806B548 - push {r4,lr} - ldr r0, _0806B574 @ =0x0201b000 - ldr r1, _0806B578 @ =0x00000261 - adds r4, r0, r1 - ldrb r3, [r4] - cmp r3, 0 - beq _0806B56E - ldr r1, _0806B57C @ =gBGTilemapBuffers + 0x1000 - ldr r2, _0806B580 @ =0x06003000 - ldr r0, _0806B584 @ =0x040000d4 - str r1, [r0] - str r2, [r0, 0x4] - ldr r1, _0806B588 @ =0x80000400 - str r1, [r0, 0x8] - ldr r0, [r0, 0x8] - cmp r3, 0x2 - bne _0806B56E - movs r0, 0 - strb r0, [r4] -_0806B56E: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0806B574: .4byte 0x0201b000 -_0806B578: .4byte 0x00000261 -_0806B57C: .4byte gBGTilemapBuffers + 0x1000 -_0806B580: .4byte 0x06003000 -_0806B584: .4byte 0x040000d4 -_0806B588: .4byte 0x80000400 - thumb_func_end sub_806B548 - - thumb_func_start sub_806B58C -sub_806B58C: @ 806B58C - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - bl IsDoubleBattle - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0 - bne _0806B5A8 - ldr r0, _0806B5A4 @ =gUnknown_0202E8FA - strb r2, [r0] - b _0806B5C8 - .align 2, 0 -_0806B5A4: .4byte gUnknown_0202E8FA -_0806B5A8: - bl IsLinkDoubleBattle - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0806B5C0 - ldr r1, _0806B5BC @ =gUnknown_0202E8FA - movs r0, 0x2 - b _0806B5C4 - .align 2, 0 -_0806B5BC: .4byte gUnknown_0202E8FA -_0806B5C0: - ldr r1, _0806B5E4 @ =gUnknown_0202E8FA - movs r0, 0x1 -_0806B5C4: - strb r0, [r1] - adds r0, r1, 0 -_0806B5C8: - ldrb r0, [r0] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - ldr r0, _0806B5E8 @ =gUnknown_083769A8 - adds r4, r1, r0 - cmp r5, 0x8 - bls _0806B5DA - b _0806B900 -_0806B5DA: - lsls r0, r5, 2 - ldr r1, _0806B5EC @ =_0806B5F0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0806B5E4: .4byte gUnknown_0202E8FA -_0806B5E8: .4byte gUnknown_083769A8 -_0806B5EC: .4byte _0806B5F0 - .align 2, 0 -_0806B5F0: - .4byte _0806B614 - .4byte _0806B628 - .4byte _0806B638 - .4byte _0806B694 - .4byte _0806B71A - .4byte _0806B7A2 - .4byte _0806B832 - .4byte _0806B8C6 - .4byte _0806B8E8 -_0806B614: - ldr r0, _0806B624 @ =gBGTilemapBuffers + 0x1000 - movs r2, 0x80 - lsls r2, 4 - movs r1, 0 - bl memset - b _0806B900 - .align 2, 0 -_0806B624: .4byte gBGTilemapBuffers + 0x1000 -_0806B628: - ldrb r0, [r4] - ldrb r1, [r4, 0x1] - movs r2, 0x3 - bl sub_806B9A4 - adds r0, r4, 0 - movs r1, 0 - b _0806B8A8 -_0806B638: - bl IsDoubleBattle - lsls r0, 24 - cmp r0, 0 - bne _0806B666 - ldr r0, _0806B65C @ =gPlayerPartyCount - ldrb r0, [r0] - cmp r0, 0x1 - bls _0806B660 - ldrb r0, [r4, 0x2] - ldrb r1, [r4, 0x3] - movs r2, 0 - movs r3, 0x3 - bl sub_806BA94 - adds r0, r4, 0x2 - movs r1, 0x1 - b _0806B8A8 - .align 2, 0 -_0806B65C: .4byte gPlayerPartyCount -_0806B660: - ldrb r0, [r4, 0x2] - ldrb r1, [r4, 0x3] - b _0806B8BC -_0806B666: - bl IsLinkDoubleBattle - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0806B684 - ldrb r0, [r4, 0x2] - ldrb r1, [r4, 0x3] - movs r2, 0x4 - bl sub_806B9A4 - adds r0, r4, 0x2 - movs r1, 0x1 - movs r2, 0x4 - b _0806B8AA -_0806B684: - ldrb r0, [r4, 0x2] - ldrb r1, [r4, 0x3] - movs r2, 0x3 - bl sub_806B9A4 - adds r0, r4, 0x2 - movs r1, 0x1 - b _0806B8A8 -_0806B694: - bl IsDoubleBattle - lsls r0, 24 - cmp r0, 0 - bne _0806B6C2 - ldr r0, _0806B6B8 @ =gPlayerPartyCount - ldrb r0, [r0] - cmp r0, 0x2 - bls _0806B6BC - ldrb r0, [r4, 0x4] - ldrb r1, [r4, 0x5] - movs r2, 0 - movs r3, 0x3 - bl sub_806BA94 - adds r0, r4, 0x4 - movs r1, 0x2 - b _0806B8A8 - .align 2, 0 -_0806B6B8: .4byte gPlayerPartyCount -_0806B6BC: - ldrb r0, [r4, 0x4] - ldrb r1, [r4, 0x5] - b _0806B8BC -_0806B6C2: - bl IsLinkDoubleBattle - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0806B6F6 - ldr r0, _0806B6EC @ =gPlayerParty + 2 * 0x64 - movs r1, 0xB - bl GetMonData - cmp r0, 0 - beq _0806B6F0 - ldrb r0, [r4, 0x4] - ldrb r1, [r4, 0x5] - movs r2, 0 - movs r3, 0x3 - bl sub_806BA94 - adds r0, r4, 0x4 - movs r1, 0x2 - b _0806B8A8 - .align 2, 0 -_0806B6EC: .4byte gPlayerParty + 2 * 0x64 -_0806B6F0: - ldrb r0, [r4, 0x4] - ldrb r1, [r4, 0x5] - b _0806B8BC -_0806B6F6: - ldr r0, _0806B710 @ =gPlayerPartyCount - ldrb r0, [r0] - cmp r0, 0x2 - bls _0806B714 - ldrb r0, [r4, 0x4] - ldrb r1, [r4, 0x5] - movs r2, 0 - movs r3, 0x3 - bl sub_806BA94 - adds r0, r4, 0x4 - movs r1, 0x2 - b _0806B8A8 - .align 2, 0 -_0806B710: .4byte gPlayerPartyCount -_0806B714: - ldrb r0, [r4, 0x4] - ldrb r1, [r4, 0x5] - b _0806B8BC -_0806B71A: - bl IsDoubleBattle - lsls r0, 24 - cmp r0, 0 - bne _0806B74A - ldr r0, _0806B740 @ =gPlayerPartyCount - ldrb r0, [r0] - cmp r0, 0x3 - bls _0806B744 - ldrb r0, [r4, 0x6] - ldrb r1, [r4, 0x7] - movs r2, 0 - movs r3, 0x3 - bl sub_806BA94 - adds r0, r4, 0x6 - movs r1, 0x3 - b _0806B8A8 - .align 2, 0 -_0806B740: .4byte gPlayerPartyCount -_0806B744: - ldrb r0, [r4, 0x6] - ldrb r1, [r4, 0x7] - b _0806B8BC -_0806B74A: - bl IsLinkDoubleBattle - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0806B77E - ldr r0, _0806B774 @ =gPlayerParty + 3 * 0x64 - movs r1, 0xB - bl GetMonData - cmp r0, 0 - beq _0806B778 - ldrb r0, [r4, 0x6] - ldrb r1, [r4, 0x7] - movs r2, 0 - movs r3, 0x3 - bl sub_806BA94 - adds r0, r4, 0x6 - movs r1, 0x3 - b _0806B8A8 - .align 2, 0 -_0806B774: .4byte gPlayerParty + 3 * 0x64 -_0806B778: - ldrb r0, [r4, 0x6] - ldrb r1, [r4, 0x7] - b _0806B8BC -_0806B77E: - ldr r0, _0806B798 @ =gPlayerPartyCount - ldrb r0, [r0] - cmp r0, 0x3 - bls _0806B79C - ldrb r0, [r4, 0x6] - ldrb r1, [r4, 0x7] - movs r2, 0 - movs r3, 0x3 - bl sub_806BA94 - adds r0, r4, 0x6 - movs r1, 0x3 - b _0806B8A8 - .align 2, 0 -_0806B798: .4byte gPlayerPartyCount -_0806B79C: - ldrb r0, [r4, 0x6] - ldrb r1, [r4, 0x7] - b _0806B8BC -_0806B7A2: - bl IsDoubleBattle - lsls r0, 24 - cmp r0, 0 - bne _0806B7D2 - ldr r0, _0806B7C8 @ =gPlayerPartyCount - ldrb r0, [r0] - cmp r0, 0x4 - bls _0806B7CC - ldrb r0, [r4, 0x8] - ldrb r1, [r4, 0x9] - movs r2, 0 - movs r3, 0x3 - bl sub_806BA94 - adds r0, r4, 0 - adds r0, 0x8 - movs r1, 0x4 - b _0806B8A8 - .align 2, 0 -_0806B7C8: .4byte gPlayerPartyCount -_0806B7CC: - ldrb r0, [r4, 0x8] - ldrb r1, [r4, 0x9] - b _0806B8BC -_0806B7D2: - bl IsLinkDoubleBattle - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0806B80A - ldr r0, _0806B800 @ =gPlayerParty + 4 * 0x64 - movs r1, 0xB - bl GetMonData - cmp r0, 0 - beq _0806B804 - ldrb r0, [r4, 0x8] - ldrb r1, [r4, 0x9] - movs r2, 0 - movs r3, 0x4 - bl sub_806BA94 - adds r0, r4, 0 - adds r0, 0x8 - movs r1, 0x4 - movs r2, 0x4 - b _0806B8AA - .align 2, 0 -_0806B800: .4byte gPlayerParty + 4 * 0x64 -_0806B804: - ldrb r0, [r4, 0x8] - ldrb r1, [r4, 0x9] - b _0806B884 -_0806B80A: - ldr r0, _0806B828 @ =gPlayerPartyCount - ldrb r0, [r0] - cmp r0, 0x4 - bls _0806B82C - ldrb r0, [r4, 0x8] - ldrb r1, [r4, 0x9] - movs r2, 0 - movs r3, 0x3 - bl sub_806BA94 - adds r0, r4, 0 - adds r0, 0x8 - movs r1, 0x4 - b _0806B8A8 - .align 2, 0 -_0806B828: .4byte gPlayerPartyCount -_0806B82C: - ldrb r0, [r4, 0x8] - ldrb r1, [r4, 0x9] - b _0806B8BC -_0806B832: - bl IsDoubleBattle - lsls r0, 24 - cmp r0, 0 - bne _0806B84C - ldr r0, _0806B848 @ =gPlayerPartyCount - ldrb r0, [r0] - cmp r0, 0x5 - bhi _0806B896 - b _0806B8B8 - .align 2, 0 -_0806B848: .4byte gPlayerPartyCount -_0806B84C: - bl IsLinkDoubleBattle - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0806B88E - ldr r0, _0806B87C @ =gPlayerParty + 5 * 0x64 - movs r1, 0xB - bl GetMonData - cmp r0, 0 - beq _0806B880 - ldrb r0, [r4, 0xA] - ldrb r1, [r4, 0xB] - movs r2, 0 - movs r3, 0x4 - bl sub_806BA94 - adds r0, r4, 0 - adds r0, 0xA - movs r1, 0x5 - movs r2, 0x4 - b _0806B8AA - .align 2, 0 -_0806B87C: .4byte gPlayerParty + 5 * 0x64 -_0806B880: - ldrb r0, [r4, 0xA] - ldrb r1, [r4, 0xB] -_0806B884: - movs r2, 0x1 - movs r3, 0x4 - bl sub_806BA94 - b _0806B900 -_0806B88E: - ldr r0, _0806B8B4 @ =gPlayerPartyCount - ldrb r0, [r0] - cmp r0, 0x5 - bls _0806B8B8 -_0806B896: - ldrb r0, [r4, 0xA] - ldrb r1, [r4, 0xB] - movs r2, 0 - movs r3, 0x3 - bl sub_806BA94 - adds r0, r4, 0 - adds r0, 0xA - movs r1, 0x5 -_0806B8A8: - movs r2, 0x3 -_0806B8AA: - movs r3, 0 - bl sub_806BF24 - b _0806B900 - .align 2, 0 -_0806B8B4: .4byte gPlayerPartyCount -_0806B8B8: - ldrb r0, [r4, 0xA] - ldrb r1, [r4, 0xB] -_0806B8BC: - movs r2, 0x1 - movs r3, 0x3 - bl sub_806BA94 - b _0806B900 -_0806B8C6: - ldr r0, _0806B8E4 @ =0x0201b000 - movs r1, 0x96 - lsls r1, 2 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x4 - bne _0806B8DA - movs r0, 0x1 - bl sub_806BB9C -_0806B8DA: - movs r0, 0x1 - bl sub_806BBEC - b _0806B900 - .align 2, 0 -_0806B8E4: .4byte 0x0201b000 -_0806B8E8: - ldr r0, _0806B8F8 @ =0x0201b000 - ldr r1, _0806B8FC @ =0x00000261 - adds r0, r1 - movs r1, 0x2 - strb r1, [r0] - movs r0, 0x1 - b _0806B902 - .align 2, 0 -_0806B8F8: .4byte 0x0201b000 -_0806B8FC: .4byte 0x00000261 -_0806B900: - movs r0, 0 -_0806B902: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_806B58C - - thumb_func_start sub_806B908 -sub_806B908: @ 806B908 - push {r4,r5,lr} - ldr r0, _0806B948 @ =gBGTilemapBuffers + 0x1000 - movs r2, 0x80 - lsls r2, 4 - movs r1, 0 - bl memset - ldr r1, _0806B94C @ =gUnknown_0202E8FA - movs r0, 0x3 - strb r0, [r1] - ldr r0, _0806B950 @ =gUnknown_083769A8 - adds r4, r0, 0 - adds r4, 0x24 - ldr r5, _0806B954 @ =gPlayerParty + 1 * 0x64 - ldrb r0, [r4] - ldrb r1, [r4, 0x1] - movs r2, 0x3 - bl sub_806B9A4 - adds r0, r5, 0 - movs r1, 0xB - bl GetMonData - cmp r0, 0 - beq _0806B958 - ldrb r0, [r4, 0x4] - ldrb r1, [r4, 0x5] - movs r2, 0 - movs r3, 0x3 - bl sub_806BA94 - b _0806B964 - .align 2, 0 -_0806B948: .4byte gBGTilemapBuffers + 0x1000 -_0806B94C: .4byte gUnknown_0202E8FA -_0806B950: .4byte gUnknown_083769A8 -_0806B954: .4byte gPlayerParty + 1 * 0x64 -_0806B958: - ldrb r0, [r4, 0x4] - ldrb r1, [r4, 0x5] - movs r2, 0x1 - movs r3, 0x3 - bl sub_806BA94 -_0806B964: - adds r0, r5, 0 - adds r0, 0x64 - movs r1, 0xB - bl GetMonData - cmp r0, 0 - beq _0806B980 - ldrb r0, [r4, 0x6] - ldrb r1, [r4, 0x7] - movs r2, 0 - movs r3, 0x3 - bl sub_806BA94 - b _0806B98C -_0806B980: - ldrb r0, [r4, 0x6] - ldrb r1, [r4, 0x7] - movs r2, 0x1 - movs r3, 0x3 - bl sub_806BA94 -_0806B98C: - ldr r0, _0806B99C @ =0x0201b000 - ldr r1, _0806B9A0 @ =0x00000261 - adds r0, r1 - movs r1, 0x2 - strb r1, [r0] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0806B99C: .4byte 0x0201b000 -_0806B9A0: .4byte 0x00000261 - thumb_func_end sub_806B908 - - thumb_func_start sub_806B9A4 -sub_806B9A4: @ 806B9A4 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - lsls r2, 24 - lsrs r2, 24 - str r2, [sp] - lsls r1, 21 - lsrs r1, 16 - str r1, [sp, 0x4] - movs r1, 0 - lsls r0, 16 - mov r8, r0 - asrs r0, 16 - mov r10, r0 - ldr r4, _0806BA2C @ =gUnknown_083769D8 - mov r9, r4 -_0806B9CA: - movs r3, 0 - adds r7, r1, 0x1 - mov r0, r10 - cmp r0, 0x1F - bgt _0806BA12 - mov r4, r8 - asrs r2, r4, 16 - lsls r0, r1, 5 - ldr r4, [sp, 0x4] - adds r6, r4, r0 - ldr r0, _0806BA30 @ =gBGTilemapBuffers + 0x1000 - mov r12, r0 - ldr r4, [sp] - lsls r5, r4, 12 - movs r0, 0xB - adds r4, r1, 0 - muls r4, r0 -_0806B9EC: - adds r0, r2, r3 - cmp r0, 0 - blt _0806BA02 - adds r0, r6, r0 - lsls r0, 1 - add r0, r12 - adds r1, r4, r3 - add r1, r9 - ldrb r1, [r1] - orrs r1, r5 - strh r1, [r0] -_0806BA02: - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0xA - bhi _0806BA12 - adds r0, r2, r3 - cmp r0, 0x1F - ble _0806B9EC -_0806BA12: - lsls r0, r7, 24 - lsrs r1, r0, 24 - cmp r1, 0x6 - bls _0806B9CA - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0806BA2C: .4byte gUnknown_083769D8 -_0806BA30: .4byte gBGTilemapBuffers + 0x1000 - thumb_func_end sub_806B9A4 - - thumb_func_start sub_806BA34 -sub_806BA34: @ 806BA34 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r1, 21 - lsrs r1, 16 - mov r8, r1 - movs r1, 0 - lsls r7, r0, 16 - asrs r0, r7, 16 - mov r12, r0 -_0806BA48: - movs r2, 0 - adds r4, r1, 0x1 - mov r5, r12 - cmp r5, 0x1F - bgt _0806BA7C - asrs r3, r7, 16 - lsls r0, r1, 5 - mov r5, r8 - adds r1, r5, r0 - ldr r6, _0806BA90 @ =gBGTilemapBuffers + 0x1000 - movs r5, 0 -_0806BA5E: - adds r0, r3, r2 - cmp r0, 0 - blt _0806BA6C - adds r0, r1, r0 - lsls r0, 1 - adds r0, r6 - strh r5, [r0] -_0806BA6C: - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0xA - bhi _0806BA7C - adds r0, r3, r2 - cmp r0, 0x1F - ble _0806BA5E -_0806BA7C: - lsls r0, r4, 24 - lsrs r1, r0, 24 - cmp r1, 0x6 - bls _0806BA48 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0806BA90: .4byte gBGTilemapBuffers + 0x1000 - thumb_func_end sub_806BA34 - - thumb_func_start sub_806BA94 -sub_806BA94: @ 806BA94 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - lsls r0, 16 - lsrs r4, r0, 16 - lsls r1, 16 - lsrs r0, r1, 16 - lsls r2, 24 - lsls r3, 24 - lsrs r3, 24 - str r3, [sp] - ldr r1, _0806BB30 @ =gUnknown_08376A5E - mov r9, r1 - cmp r2, 0 - bne _0806BABC - ldr r1, _0806BB34 @ =gUnknown_08376A25 - mov r9, r1 -_0806BABC: - lsls r0, 21 - lsrs r0, 16 - str r0, [sp, 0x4] - movs r1, 0 - lsls r4, 16 - mov r12, r4 - asrs r4, 16 - mov r10, r4 -_0806BACC: - movs r2, 0 - adds r7, r1, 0x1 - mov r0, r10 - cmp r0, 0x1F - bgt _0806BB16 - mov r4, r12 - asrs r3, r4, 16 - lsls r0, r1, 5 - ldr r4, [sp, 0x4] - adds r6, r4, r0 - ldr r0, _0806BB38 @ =gBGTilemapBuffers + 0x1000 - mov r8, r0 - ldr r4, [sp] - lsls r5, r4, 12 - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - subs r4, r0, r1 -_0806BAF0: - adds r0, r3, r2 - cmp r0, 0 - blt _0806BB06 - adds r0, r6, r0 - lsls r0, 1 - add r0, r8 - adds r1, r4, r2 - add r1, r9 - ldrb r1, [r1] - orrs r1, r5 - strh r1, [r0] -_0806BB06: - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x12 - bhi _0806BB16 - adds r0, r3, r2 - cmp r0, 0x1F - ble _0806BAF0 -_0806BB16: - lsls r0, r7, 24 - lsrs r1, r0, 24 - cmp r1, 0x2 - bls _0806BACC - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0806BB30: .4byte gUnknown_08376A5E -_0806BB34: .4byte gUnknown_08376A25 -_0806BB38: .4byte gBGTilemapBuffers + 0x1000 - thumb_func_end sub_806BA94 - - thumb_func_start sub_806BB3C -sub_806BB3C: @ 806BB3C - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r1, 21 - lsrs r1, 16 - mov r8, r1 - movs r1, 0 - lsls r7, r0, 16 - asrs r0, r7, 16 - mov r12, r0 -_0806BB50: - movs r2, 0 - adds r4, r1, 0x1 - mov r5, r12 - cmp r5, 0x1F - bgt _0806BB84 - asrs r3, r7, 16 - lsls r0, r1, 5 - mov r5, r8 - adds r1, r5, r0 - ldr r6, _0806BB98 @ =gBGTilemapBuffers + 0x1000 - movs r5, 0 -_0806BB66: - adds r0, r3, r2 - cmp r0, 0 - blt _0806BB74 - adds r0, r1, r0 - lsls r0, 1 - adds r0, r6 - strh r5, [r0] -_0806BB74: - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x12 - bhi _0806BB84 - adds r0, r3, r2 - cmp r0, 0x1F - ble _0806BB66 -_0806BB84: - lsls r0, r4, 24 - lsrs r1, r0, 24 - cmp r1, 0x2 - bls _0806BB50 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0806BB98: .4byte gBGTilemapBuffers + 0x1000 - thumb_func_end sub_806BB3C - - thumb_func_start sub_806BB9C -sub_806BB9C: @ 806BB9C - push {r4,lr} - sub sp, 0x18 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r1, _0806BBE4 @ =gUnknown_08376CD4 - mov r0, sp - movs r2, 0x18 - bl memcpy - ldr r3, _0806BBE8 @ =0x06003c30 - movs r2, 0 - lsls r4, 12 -_0806BBB6: - lsls r0, r2, 1 - adds r1, r0, r3 - add r0, sp - ldrh r0, [r0] - adds r0, r4 - strh r0, [r1] - adds r1, 0x40 - adds r0, r2, 0x6 - lsls r0, 1 - add r0, sp - ldrh r0, [r0] - adds r0, r4 - strh r0, [r1] - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x5 - bls _0806BBB6 - add sp, 0x18 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0806BBE4: .4byte gUnknown_08376CD4 -_0806BBE8: .4byte 0x06003c30 - thumb_func_end sub_806BB9C - - thumb_func_start sub_806BBEC -sub_806BBEC: @ 806BBEC - push {r4,lr} - sub sp, 0x18 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r1, _0806BC34 @ =gUnknown_08376CEC - mov r0, sp - movs r2, 0x18 - bl memcpy - ldr r3, _0806BC38 @ =0x06003cb0 - movs r2, 0 - lsls r4, 12 -_0806BC06: - lsls r0, r2, 1 - adds r1, r0, r3 - add r0, sp - ldrh r0, [r0] - adds r0, r4 - strh r0, [r1] - adds r1, 0x40 - adds r0, r2, 0x6 - lsls r0, 1 - add r0, sp - ldrh r0, [r0] - adds r0, r4 - strh r0, [r1] - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x5 - bls _0806BC06 - add sp, 0x18 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0806BC34: .4byte gUnknown_08376CEC -_0806BC38: .4byte 0x06003cb0 - thumb_func_end sub_806BBEC - - thumb_func_start sub_806BC3C -sub_806BC3C: @ 806BC3C - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r4, r0, 0 - adds r5, r1, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r5, 24 - lsrs r5, 24 - ldr r6, _0806BCB0 @ =gUnknown_08376918 - bl IsDoubleBattle - lsls r4, 2 - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 3 - adds r4, r1 - adds r4, r6 - ldr r7, [r4] - movs r6, 0 - adds r0, r5, 0 - movs r1, 0x7 - bl __udivsi3 - lsls r0, 24 - lsrs r4, r0, 19 - ldr r5, _0806BCB4 @ =gUnknown_08E9A300 - movs r0, 0x86 - lsls r0, 1 - adds r3, r0, 0 -_0806BC7C: - adds r1, r6, r4 - lsls r2, r6, 1 - adds r2, r7 - lsls r0, r1, 1 - adds r0, r5 - ldrh r0, [r0] - adds r0, r3, r0 - strh r0, [r2] - adds r2, 0x40 - adds r1, 0x20 - lsls r1, 1 - adds r1, r5 - ldrh r1, [r1] - adds r0, r3, r1 - strh r0, [r2] - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0x6 - bls _0806BC7C - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0806BCB0: .4byte gUnknown_08376918 -_0806BCB4: .4byte gUnknown_08E9A300 - thumb_func_end sub_806BC3C - - thumb_func_start unref_sub_806BCB8 -unref_sub_806BCB8: @ 806BCB8 - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - movs r4, 0 - ldr r0, _0806BCE4 @ =gPlayerPartyCount - ldrb r1, [r0] - cmp r4, r1 - bcs _0806BCDE - adds r6, r0, 0 -_0806BCCA: - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_806BC3C - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - ldrb r0, [r6] - cmp r4, r0 - bcc _0806BCCA -_0806BCDE: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0806BCE4: .4byte gPlayerPartyCount - thumb_func_end unref_sub_806BCB8 - - thumb_func_start sub_806BCE8 -sub_806BCE8: @ 806BCE8 - push {r4,r5,lr} - movs r5, 0 - b _0806BD46 -_0806BCEE: - movs r0, 0x64 - adds r1, r5, 0 - muls r1, r0 - ldr r0, _0806BD20 @ =gPlayerParty - adds r4, r1, r0 - adds r0, r4, 0 - movs r1, 0x2D - bl GetMonData - cmp r0, 0 - bne _0806BD38 - adds r0, r4, 0 - bl GetMonGender - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - beq _0806BD24 - cmp r0, 0xFE - beq _0806BD2E - adds r0, r5, 0 - movs r1, 0x46 - bl sub_806BC3C - b _0806BD40 - .align 2, 0 -_0806BD20: .4byte gPlayerParty -_0806BD24: - adds r0, r5, 0 - movs r1, 0x54 - bl sub_806BC3C - b _0806BD40 -_0806BD2E: - adds r0, r5, 0 - movs r1, 0x62 - bl sub_806BC3C - b _0806BD40 -_0806BD38: - adds r0, r5, 0 - movs r1, 0x46 - bl sub_806BC3C -_0806BD40: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 -_0806BD46: - ldr r0, _0806BD54 @ =gPlayerPartyCount - ldrb r0, [r0] - cmp r5, r0 - bcc _0806BCEE - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0806BD54: .4byte gPlayerPartyCount - thumb_func_end sub_806BCE8 - - thumb_func_start sub_806BD58 -sub_806BD58: @ 806BD58 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _0806BD7C @ =SpriteCallbackDummy - bl CreateInvisibleSpriteWithCallback - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl sub_806CA18 - movs r0, 0x1 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0806BD7C: .4byte SpriteCallbackDummy - thumb_func_end sub_806BD58 - - thumb_func_start sub_806BD80 -sub_806BD80: @ 806BD80 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - movs r4, 0 - ldr r0, _0806BD9C @ =gMain - ldrh r0, [r0, 0x30] - cmp r0, 0x20 - beq _0806BDB2 - cmp r0, 0x20 - bgt _0806BDA0 - cmp r0, 0x10 - beq _0806BDB6 - b _0806BDB8 - .align 2, 0 -_0806BD9C: .4byte gMain -_0806BDA0: - cmp r0, 0x40 - beq _0806BDAA - cmp r0, 0x80 - beq _0806BDAE - b _0806BDB8 -_0806BDAA: - movs r4, 0xFF - b _0806BDB8 -_0806BDAE: - movs r4, 0x1 - b _0806BDB8 -_0806BDB2: - movs r4, 0xFE - b _0806BDB8 -_0806BDB6: - movs r4, 0x2 -_0806BDB8: - lsls r0, r4, 24 - cmp r0, 0 - bne _0806BDDC - bl sub_80F92BC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _0806BDD0 - cmp r0, 0x2 - beq _0806BDD4 - b _0806BDD6 -_0806BDD0: - movs r4, 0xFF - b _0806BDD6 -_0806BDD4: - movs r4, 0x1 -_0806BDD6: - lsls r0, r4, 24 - cmp r0, 0 - beq _0806BDF0 -_0806BDDC: - asrs r1, r0, 24 - adds r0, r5, 0 - bl sub_806BF74 - ldr r0, _0806BDEC @ =gMain - ldrh r0, [r0, 0x30] - b _0806BE2C - .align 2, 0 -_0806BDEC: .4byte gMain -_0806BDF0: - ldr r0, _0806BE1C @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0806BE24 - ldr r4, _0806BE20 @ =gSprites - adds r0, r5, 0 - bl sub_806CA00 - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - movs r2, 0x2E - ldrsh r0, [r1, r2] - cmp r0, 0x7 - bne _0806BE24 - movs r0, 0x2 - b _0806BE2C - .align 2, 0 -_0806BE1C: .4byte gMain -_0806BE20: .4byte gSprites -_0806BE24: - ldr r0, _0806BE34 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x3 - ands r0, r1 -_0806BE2C: - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0806BE34: .4byte gMain - thumb_func_end sub_806BD80 - - thumb_func_start sub_806BE38 -sub_806BE38: @ 806BE38 - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - movs r4, 0 - ldr r0, _0806BE54 @ =gMain - ldrh r1, [r0, 0x30] - adds r6, r0, 0 - cmp r1, 0x20 - beq _0806BE6A - cmp r1, 0x20 - bgt _0806BE58 - cmp r1, 0x10 - beq _0806BE6E - b _0806BE70 - .align 2, 0 -_0806BE54: .4byte gMain -_0806BE58: - cmp r1, 0x40 - beq _0806BE62 - cmp r1, 0x80 - beq _0806BE66 - b _0806BE70 -_0806BE62: - movs r4, 0xFF - b _0806BE8E -_0806BE66: - movs r4, 0x1 - b _0806BE8E -_0806BE6A: - movs r4, 0xFE - b _0806BE8E -_0806BE6E: - movs r4, 0x2 -_0806BE70: - cmp r4, 0 - bne _0806BE8E - bl sub_80F92BC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _0806BE86 - cmp r0, 0x2 - beq _0806BE8A - b _0806BE8C -_0806BE86: - movs r4, 0xFF - b _0806BE8C -_0806BE8A: - movs r4, 0x1 -_0806BE8C: - ldr r6, _0806BEA4 @ =gMain -_0806BE8E: - ldrh r2, [r6, 0x2E] - movs r0, 0x8 - ands r0, r2 - cmp r0, 0 - beq _0806BEA8 - adds r0, r5, 0 - bl sub_806C890 - movs r0, 0x8 - b _0806BEF0 - .align 2, 0 -_0806BEA4: .4byte gMain -_0806BEA8: - lsls r0, r4, 24 - asrs r1, r0, 24 - cmp r1, 0 - beq _0806BEBA - adds r0, r5, 0 - bl sub_806C658 - ldrh r0, [r6, 0x30] - b _0806BEF0 -_0806BEBA: - movs r0, 0x1 - ands r0, r2 - cmp r0, 0 - beq _0806BEE8 - ldr r4, _0806BEE4 @ =gSprites - adds r0, r5, 0 - bl sub_806CA00 - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - movs r2, 0x2E - ldrsh r0, [r1, r2] - cmp r0, 0x7 - bne _0806BEE8 - movs r0, 0x2 - b _0806BEF0 - .align 2, 0 -_0806BEE4: .4byte gSprites -_0806BEE8: - ldr r0, _0806BEF8 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x3 - ands r0, r1 -_0806BEF0: - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_0806BEF8: .4byte gMain - thumb_func_end sub_806BE38 - - thumb_func_start task_pc_turn_off -task_pc_turn_off: @ 806BEFC - push {lr} - adds r2, r0, 0 - lsls r1, 24 - lsrs r3, r1, 24 - ldrb r0, [r2] - cmp r0, 0 - beq _0806BF14 - ldrb r1, [r2, 0x1] - movs r2, 0 - bl sub_806BA94 - b _0806BF1E -_0806BF14: - ldrb r0, [r2] - ldrb r1, [r2, 0x1] - adds r2, r3, 0 - bl sub_806B9A4 -_0806BF1E: - pop {r0} - bx r0 - thumb_func_end task_pc_turn_off - - thumb_func_start sub_806BF24 -sub_806BF24: @ 806BF24 - push {r4-r7,lr} - adds r7, r0, 0 - lsls r1, 24 - lsrs r1, 24 - lsls r2, 24 - lsrs r4, r2, 24 - lsls r3, 24 - lsrs r6, r3, 24 - movs r0, 0x64 - muls r1, r0 - ldr r0, _0806BF70 @ =gPlayerParty - adds r5, r1, r0 - adds r0, r5, 0 - movs r1, 0xB - bl GetMonData - cmp r0, 0 - beq _0806BF56 - adds r0, r5, 0 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - bne _0806BF56 - movs r4, 0x5 -_0806BF56: - cmp r6, 0x1 - bne _0806BF60 - adds r0, r4, 0x4 - lsls r0, 24 - lsrs r4, r0, 24 -_0806BF60: - adds r0, r7, 0 - adds r1, r4, 0 - bl task_pc_turn_off - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0806BF70: .4byte gPlayerParty - thumb_func_end sub_806BF24 - - thumb_func_start sub_806BF74 -sub_806BF74: @ 806BF74 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - lsls r1, 24 - lsrs r4, r1, 24 - bl sub_806CA00 - lsls r0, 24 - lsrs r6, r0, 24 - ldr r1, _0806C0C4 @ =gSprites - lsls r0, r6, 4 - adds r0, r6 - lsls r0, 2 - adds r0, r1 - ldrh r0, [r0, 0x2E] - lsls r0, 24 - lsrs r5, r0, 24 - mov r0, r9 - adds r1, r5, 0 - movs r2, 0 - bl UpdateMonIconFrame_806DA44 - bl IsLinkDoubleBattle - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _0806BFB6 - b _0806C0D8 -_0806BFB6: - cmp r5, 0 - beq _0806BFC2 - cmp r5, 0x2 - beq _0806BFC2 - cmp r5, 0x3 - bne _0806BFD2 -_0806BFC2: - lsls r0, r5, 1 - ldr r1, _0806C0C8 @ =gUnknown_083769C0 - adds r0, r1 - adds r1, r5, 0 - movs r2, 0x3 - movs r3, 0 - bl sub_806BF24 -_0806BFD2: - cmp r5, 0x1 - beq _0806BFDE - cmp r5, 0x4 - beq _0806BFDE - cmp r5, 0x5 - bne _0806BFEE -_0806BFDE: - lsls r0, r5, 1 - ldr r1, _0806C0C8 @ =gUnknown_083769C0 - adds r0, r1 - adds r1, r5, 0 - movs r2, 0x4 - movs r3, 0 - bl sub_806BF24 -_0806BFEE: - cmp r5, 0x7 - bne _0806BFF8 - movs r0, 0x1 - bl sub_806BBEC -_0806BFF8: - lsls r2, r4, 24 - asrs r2, 24 - adds r0, r6, 0 - adds r1, r5, 0 - bl sub_806C490 - ldr r2, _0806C0C4 @ =gSprites - lsls r1, r6, 4 - adds r0, r1, r6 - lsls r0, 2 - adds r0, r2 - movs r2, 0x2E - ldrsh r0, [r0, r2] - mov r8, r1 - cmp r0, 0 - beq _0806C020 - cmp r0, 0x2 - beq _0806C020 - cmp r0, 0x3 - bne _0806C042 -_0806C020: - ldr r0, _0806C0C4 @ =gSprites - mov r4, r8 - adds r1, r4, r6 - lsls r1, 2 - adds r1, r0 - movs r7, 0x2E - ldrsh r0, [r1, r7] - lsls r0, 1 - ldr r2, _0806C0C8 @ =gUnknown_083769C0 - adds r0, r2 - ldrh r1, [r1, 0x2E] - lsls r1, 24 - lsrs r1, 24 - movs r2, 0x3 - movs r3, 0x1 - bl sub_806BF24 -_0806C042: - ldr r1, _0806C0C4 @ =gSprites - mov r2, r8 - adds r0, r2, r6 - lsls r0, 2 - adds r0, r1 - movs r4, 0x2E - ldrsh r0, [r0, r4] - cmp r0, 0x1 - beq _0806C05C - cmp r0, 0x4 - beq _0806C05C - cmp r0, 0x5 - bne _0806C07E -_0806C05C: - ldr r0, _0806C0C4 @ =gSprites - mov r7, r8 - adds r1, r7, r6 - lsls r1, 2 - adds r1, r0 - movs r2, 0x2E - ldrsh r0, [r1, r2] - lsls r0, 1 - ldr r2, _0806C0C8 @ =gUnknown_083769C0 - adds r0, r2 - ldrh r1, [r1, 0x2E] - lsls r1, 24 - lsrs r1, 24 - movs r2, 0x4 - movs r3, 0x1 - bl sub_806BF24 -_0806C07E: - ldr r7, _0806C0C4 @ =gSprites - mov r4, r8 - adds r0, r4, r6 - lsls r0, 2 - adds r4, r0, r7 - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0x7 - bne _0806C096 - movs r0, 0x2 - bl sub_806BBEC -_0806C096: - ldr r0, _0806C0CC @ =0x0201b000 - ldr r2, _0806C0D0 @ =0x00000261 - adds r0, r2 - movs r1, 0x2 - strb r1, [r0] - ldr r1, _0806C0D4 @ =gUnknown_083768B8 - movs r2, 0x2E - ldrsh r0, [r4, r2] - lsls r0, 2 - adds r0, r1 - adds r0, 0x40 - ldrb r0, [r0] - strh r0, [r4, 0x20] - movs r2, 0x2E - ldrsh r0, [r4, r2] - lsls r0, 2 - adds r0, r1 - adds r0, 0x41 - ldrb r0, [r0] - strh r0, [r4, 0x22] - adds r0, r7, 0 - b _0806C1A4 - .align 2, 0 -_0806C0C4: .4byte gSprites -_0806C0C8: .4byte gUnknown_083769C0 -_0806C0CC: .4byte 0x0201b000 -_0806C0D0: .4byte 0x00000261 -_0806C0D4: .4byte gUnknown_083768B8 -_0806C0D8: - bl IsDoubleBattle - lsls r0, 24 - lsrs r7, r0, 24 - cmp r5, 0x5 - bhi _0806C104 - lsls r0, r7, 1 - adds r0, r7 - lsls r0, 2 - lsls r1, r5, 1 - adds r0, r1 - ldr r1, _0806C100 @ =gUnknown_083769A8 - adds r0, r1 - adds r1, r5, 0 - movs r2, 0x3 - movs r3, 0 - bl sub_806BF24 - b _0806C10A - .align 2, 0 -_0806C100: .4byte gUnknown_083769A8 -_0806C104: - movs r0, 0x1 - bl sub_806BBEC -_0806C10A: - cmp r7, 0 - bne _0806C11C - lsls r2, r4, 24 - asrs r2, 24 - adds r0, r6, 0 - adds r1, r5, 0 - bl sub_806C1E4 - b _0806C128 -_0806C11C: - lsls r2, r4, 24 - asrs r2, 24 - adds r0, r6, 0 - adds r1, r5, 0 - bl sub_806C310 -_0806C128: - ldr r1, _0806C160 @ =gSprites - lsls r2, r6, 4 - adds r0, r2, r6 - lsls r0, 2 - adds r1, r0, r1 - ldrh r3, [r1, 0x2E] - movs r4, 0x2E - ldrsh r0, [r1, r4] - mov r8, r2 - cmp r0, 0x5 - bgt _0806C168 - lsls r0, r7, 1 - adds r0, r7 - lsls r0, 2 - movs r2, 0x2E - ldrsh r1, [r1, r2] - lsls r1, 1 - adds r0, r1 - ldr r1, _0806C164 @ =gUnknown_083769A8 - adds r0, r1 - lsls r1, r3, 24 - lsrs r1, 24 - movs r2, 0x3 - movs r3, 0x1 - bl sub_806BF24 - b _0806C16E - .align 2, 0 -_0806C160: .4byte gSprites -_0806C164: .4byte gUnknown_083769A8 -_0806C168: - movs r0, 0x2 - bl sub_806BBEC -_0806C16E: - ldr r0, _0806C1D4 @ =0x0201b000 - ldr r4, _0806C1D8 @ =0x00000261 - adds r0, r4 - movs r1, 0x2 - strb r1, [r0] - ldr r4, _0806C1DC @ =gSprites - mov r0, r8 - adds r1, r0, r6 - lsls r1, 2 - adds r1, r4 - ldr r3, _0806C1E0 @ =gUnknown_083768B8 - movs r2, 0x2E - ldrsh r0, [r1, r2] - lsls r0, 2 - lsls r2, r7, 5 - adds r0, r2 - adds r0, r3 - ldrb r0, [r0] - strh r0, [r1, 0x20] - movs r7, 0x2E - ldrsh r0, [r1, r7] - lsls r0, 2 - adds r0, r2 - adds r0, r3 - ldrb r0, [r0, 0x1] - strh r0, [r1, 0x22] - adds r0, r4, 0 -_0806C1A4: - mov r1, r8 - adds r4, r1, r6 - lsls r4, 2 - adds r4, r0 - ldrh r1, [r4, 0x2E] - lsls r1, 24 - lsrs r1, 24 - mov r0, r9 - movs r2, 0x1 - bl UpdateMonIconFrame_806DA44 - movs r2, 0x2E - ldrsh r0, [r4, r2] - cmp r5, r0 - beq _0806C1C8 - movs r0, 0x5 - bl PlaySE -_0806C1C8: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0806C1D4: .4byte 0x0201b000 -_0806C1D8: .4byte 0x00000261 -_0806C1DC: .4byte gSprites -_0806C1E0: .4byte gUnknown_083768B8 - thumb_func_end sub_806BF74 - - thumb_func_start sub_806C1E4 -sub_806C1E4: @ 806C1E4 - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r1, 24 - lsrs r3, r1, 24 - lsls r2, 24 - lsrs r5, r2, 24 - movs r0, 0x80 - lsls r0, 18 - adds r2, r0 - asrs r0, r2, 24 - cmp r0, 0x4 - bls _0806C200 - b _0806C306 -_0806C200: - lsls r0, 2 - ldr r1, _0806C20C @ =_0806C210 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0806C20C: .4byte _0806C210 - .align 2, 0 -_0806C210: - .4byte _0806C2EC - .4byte _0806C238 - .4byte _0806C224 - .4byte _0806C25C - .4byte _0806C2BC -_0806C224: - ldr r0, _0806C234 @ =gSprites - lsls r1, r4, 4 - adds r1, r4 - lsls r1, 2 - adds r1, r0 - movs r0, 0 - strh r0, [r1, 0x30] - b _0806C306 - .align 2, 0 -_0806C234: .4byte gSprites -_0806C238: - cmp r3, 0 - beq _0806C266 - cmp r3, 0x7 - bne _0806C298 - ldr r2, _0806C254 @ =gSprites - lsls r3, r4, 4 - adds r1, r3, r4 - lsls r1, 2 - adds r1, r2 - ldr r0, _0806C258 @ =gPlayerPartyCount - ldrb r0, [r0] - subs r0, 0x1 - b _0806C2AA - .align 2, 0 -_0806C254: .4byte gSprites -_0806C258: .4byte gPlayerPartyCount -_0806C25C: - ldr r0, _0806C278 @ =gPlayerPartyCount - ldrb r0, [r0] - subs r0, 0x1 - cmp r3, r0 - bne _0806C280 -_0806C266: - ldr r2, _0806C27C @ =gSprites - lsls r3, r4, 4 - adds r0, r3, r4 - lsls r0, 2 - adds r0, r2 - movs r1, 0x7 - strh r1, [r0, 0x2E] - b _0806C2AC - .align 2, 0 -_0806C278: .4byte gPlayerPartyCount -_0806C27C: .4byte gSprites -_0806C280: - cmp r3, 0x7 - bne _0806C298 - ldr r2, _0806C294 @ =gSprites - lsls r3, r4, 4 - adds r0, r3, r4 - lsls r0, 2 - adds r0, r2 - movs r1, 0 - strh r1, [r0, 0x2E] - b _0806C2AC - .align 2, 0 -_0806C294: .4byte gSprites -_0806C298: - ldr r2, _0806C2B8 @ =gSprites - lsls r3, r4, 4 - adds r1, r3, r4 - lsls r1, 2 - adds r1, r2 - lsls r0, r5, 24 - asrs r0, 24 - ldrh r5, [r1, 0x2E] - adds r0, r5 -_0806C2AA: - strh r0, [r1, 0x2E] -_0806C2AC: - adds r0, r3, r4 - lsls r0, 2 - adds r0, r2 - movs r1, 0 - strh r1, [r0, 0x30] - b _0806C306 - .align 2, 0 -_0806C2B8: .4byte gSprites -_0806C2BC: - ldr r0, _0806C2E4 @ =gPlayerPartyCount - ldrb r0, [r0] - cmp r0, 0x1 - bls _0806C306 - cmp r3, 0 - bne _0806C306 - ldr r0, _0806C2E8 @ =gSprites - lsls r1, r4, 4 - adds r1, r4 - lsls r1, 2 - adds r1, r0 - movs r2, 0x30 - ldrsh r0, [r1, r2] - cmp r0, 0 - bne _0806C2DE - movs r0, 0x1 - strh r0, [r1, 0x30] -_0806C2DE: - ldrh r0, [r1, 0x30] - strh r0, [r1, 0x2E] - b _0806C306 - .align 2, 0 -_0806C2E4: .4byte gPlayerPartyCount -_0806C2E8: .4byte gSprites -_0806C2EC: - subs r0, r3, 0x1 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x4 - bhi _0806C306 - ldr r0, _0806C30C @ =gSprites - lsls r1, r4, 4 - adds r1, r4 - lsls r1, 2 - adds r1, r0 - movs r0, 0 - strh r0, [r1, 0x2E] - strh r3, [r1, 0x30] -_0806C306: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0806C30C: .4byte gSprites - thumb_func_end sub_806C1E4 - - thumb_func_start sub_806C310 -sub_806C310: @ 806C310 - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r1, 24 - lsrs r3, r1, 24 - lsls r2, 24 - lsrs r5, r2, 24 - movs r0, 0x80 - lsls r0, 18 - adds r2, r0 - asrs r0, r2, 24 - cmp r0, 0x4 - bls _0806C32C - b _0806C486 -_0806C32C: - lsls r0, 2 - ldr r1, _0806C338 @ =_0806C33C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0806C338: .4byte _0806C33C - .align 2, 0 -_0806C33C: - .4byte _0806C44E - .4byte _0806C38C - .4byte _0806C350 - .4byte _0806C364 - .4byte _0806C3E8 -_0806C350: - ldr r0, _0806C360 @ =gSprites - lsls r1, r4, 4 - adds r1, r4 - lsls r1, 2 - adds r1, r0 - movs r0, 0 - strh r0, [r1, 0x30] - b _0806C486 - .align 2, 0 -_0806C360: .4byte gSprites -_0806C364: - cmp r3, 0x7 - bne _0806C37C - ldr r2, _0806C378 @ =gSprites - lsls r3, r4, 4 - adds r0, r3, r4 - lsls r0, 2 - adds r0, r2 - movs r1, 0 - strh r1, [r0, 0x2E] - b _0806C3D8 - .align 2, 0 -_0806C378: .4byte gSprites -_0806C37C: - ldr r0, _0806C388 @ =gPlayerPartyCount - ldrb r0, [r0] - subs r0, 0x1 - cmp r3, r0 - beq _0806C390 - b _0806C3C4 - .align 2, 0 -_0806C388: .4byte gPlayerPartyCount -_0806C38C: - cmp r3, 0 - bne _0806C3A4 -_0806C390: - ldr r2, _0806C3A0 @ =gSprites - lsls r3, r4, 4 - adds r0, r3, r4 - lsls r0, 2 - adds r0, r2 - movs r1, 0x7 - strh r1, [r0, 0x2E] - b _0806C3D8 - .align 2, 0 -_0806C3A0: .4byte gSprites -_0806C3A4: - cmp r3, 0x7 - bne _0806C3C4 - ldr r2, _0806C3BC @ =gSprites - lsls r3, r4, 4 - adds r1, r3, r4 - lsls r1, 2 - adds r1, r2 - ldr r0, _0806C3C0 @ =gPlayerPartyCount - ldrb r0, [r0] - subs r0, 0x1 - b _0806C3D6 - .align 2, 0 -_0806C3BC: .4byte gSprites -_0806C3C0: .4byte gPlayerPartyCount -_0806C3C4: - ldr r2, _0806C3E4 @ =gSprites - lsls r3, r4, 4 - adds r1, r3, r4 - lsls r1, 2 - adds r1, r2 - lsls r0, r5, 24 - asrs r0, 24 - ldrh r5, [r1, 0x2E] - adds r0, r5 -_0806C3D6: - strh r0, [r1, 0x2E] -_0806C3D8: - adds r0, r3, r4 - lsls r0, 2 - adds r0, r2 - movs r1, 0 - strh r1, [r0, 0x30] - b _0806C486 - .align 2, 0 -_0806C3E4: .4byte gSprites -_0806C3E8: - cmp r3, 0 - bne _0806C418 - ldr r0, _0806C410 @ =gPlayerPartyCount - ldrb r0, [r0] - cmp r0, 0x2 - bls _0806C486 - ldr r0, _0806C414 @ =gSprites - lsls r1, r4, 4 - adds r1, r4 - lsls r1, 2 - adds r1, r0 - ldrh r2, [r1, 0x30] - subs r0, r2, 0x2 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1 - bls _0806C43A - movs r0, 0x2 - strh r0, [r1, 0x2E] - b _0806C486 - .align 2, 0 -_0806C410: .4byte gPlayerPartyCount -_0806C414: .4byte gSprites -_0806C418: - cmp r3, 0x1 - bne _0806C486 - ldr r0, _0806C440 @ =gPlayerPartyCount - ldrb r0, [r0] - cmp r0, 0x4 - bls _0806C486 - ldr r0, _0806C444 @ =gSprites - lsls r1, r4, 4 - adds r1, r4 - lsls r1, 2 - adds r1, r0 - ldrh r2, [r1, 0x30] - subs r0, r2, 0x4 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1 - bhi _0806C448 -_0806C43A: - strh r2, [r1, 0x2E] - b _0806C486 - .align 2, 0 -_0806C440: .4byte gPlayerPartyCount -_0806C444: .4byte gSprites -_0806C448: - movs r0, 0x4 - strh r0, [r1, 0x2E] - b _0806C486 -_0806C44E: - subs r0, r3, 0x2 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bhi _0806C46C - ldr r0, _0806C468 @ =gSprites - lsls r1, r4, 4 - adds r1, r4 - lsls r1, 2 - adds r1, r0 - movs r0, 0 - b _0806C482 - .align 2, 0 -_0806C468: .4byte gSprites -_0806C46C: - subs r0, r3, 0x4 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bhi _0806C486 - ldr r0, _0806C48C @ =gSprites - lsls r1, r4, 4 - adds r1, r4 - lsls r1, 2 - adds r1, r0 - movs r0, 0x1 -_0806C482: - strh r0, [r1, 0x2E] - strh r3, [r1, 0x30] -_0806C486: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0806C48C: .4byte gSprites - thumb_func_end sub_806C310 - - thumb_func_start sub_806C490 -sub_806C490: @ 806C490 - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r1, 24 - lsrs r4, r1, 24 - lsls r2, 24 - movs r0, 0x80 - lsls r0, 18 - adds r2, r0 - asrs r0, r2, 24 - cmp r0, 0x4 - bls _0806C4AA - b _0806C64E -_0806C4AA: - lsls r0, 2 - ldr r1, _0806C4B4 @ =_0806C4B8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0806C4B4: .4byte _0806C4B8 - .align 2, 0 -_0806C4B8: - .4byte _0806C618 - .4byte _0806C524 - .4byte _0806C4CC - .4byte _0806C4E0 - .4byte _0806C57C -_0806C4CC: - ldr r0, _0806C4DC @ =gSprites - lsls r1, r5, 4 - adds r1, r5 - lsls r1, 2 - adds r1, r0 - movs r0, 0 - strh r0, [r1, 0x30] - b _0806C64E - .align 2, 0 -_0806C4DC: .4byte gSprites -_0806C4E0: - cmp r4, 0x7 - bne _0806C4FC - ldr r2, _0806C4F8 @ =gSprites - lsls r3, r5, 4 - adds r0, r3, r5 - lsls r0, 2 - adds r0, r2 - movs r1, 0 - strh r1, [r0, 0x2E] - adds r1, r2, 0 - adds r6, r3, 0 - b _0806C566 - .align 2, 0 -_0806C4F8: .4byte gSprites -_0806C4FC: - lsls r6, r5, 4 - b _0806C518 -_0806C500: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - movs r0, 0x64 - muls r0, r4 - ldr r1, _0806C520 @ =gPlayerParty - adds r0, r1 - movs r1, 0xB - bl GetMonData - cmp r0, 0 - bne _0806C528 -_0806C518: - cmp r4, 0x5 - bne _0806C500 - b _0806C558 - .align 2, 0 -_0806C520: .4byte gPlayerParty -_0806C524: - lsls r6, r5, 4 - b _0806C554 -_0806C528: - ldr r1, _0806C534 @ =gSprites - adds r0, r6, r5 - lsls r0, 2 - adds r0, r1 - strh r4, [r0, 0x2E] - b _0806C566 - .align 2, 0 -_0806C534: .4byte gSprites -_0806C538: - subs r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x6 - beq _0806C554 - movs r0, 0x64 - muls r0, r4 - ldr r1, _0806C574 @ =gPlayerParty - adds r0, r1 - movs r1, 0xB - bl GetMonData - cmp r0, 0 - bne _0806C528 -_0806C554: - cmp r4, 0 - bne _0806C538 -_0806C558: - ldr r0, _0806C578 @ =gSprites - adds r1, r6, r5 - lsls r1, 2 - adds r1, r0 - movs r2, 0x7 - strh r2, [r1, 0x2E] - adds r1, r0, 0 -_0806C566: - adds r0, r6, r5 - lsls r0, 2 - adds r0, r1 - movs r1, 0 - strh r1, [r0, 0x30] - b _0806C64E - .align 2, 0 -_0806C574: .4byte gPlayerParty -_0806C578: .4byte gSprites -_0806C57C: - cmp r4, 0 - bne _0806C5C8 - ldr r0, _0806C5AC @ =gSprites - lsls r1, r5, 4 - adds r1, r5 - lsls r1, 2 - adds r4, r1, r0 - ldrh r1, [r4, 0x30] - subs r0, r1, 0x2 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1 - bls _0806C5E2 - ldr r5, _0806C5B0 @ =gPlayerParty + 2 * 0x64 - adds r0, r5, 0 - movs r1, 0xB - bl GetMonData - cmp r0, 0 - beq _0806C5B4 - movs r0, 0x2 - strh r0, [r4, 0x2E] - b _0806C64E - .align 2, 0 -_0806C5AC: .4byte gSprites -_0806C5B0: .4byte gPlayerParty + 2 * 0x64 -_0806C5B4: - adds r0, r5, 0 - adds r0, 0x64 - movs r1, 0xB - bl GetMonData - cmp r0, 0 - beq _0806C64E - movs r0, 0x3 - strh r0, [r4, 0x2E] - b _0806C64E -_0806C5C8: - cmp r4, 0x1 - bne _0806C64E - ldr r0, _0806C5E8 @ =gSprites - lsls r1, r5, 4 - adds r1, r5 - lsls r1, 2 - adds r4, r1, r0 - ldrh r1, [r4, 0x30] - subs r0, r1, 0x4 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1 - bhi _0806C5EC -_0806C5E2: - strh r1, [r4, 0x2E] - b _0806C64E - .align 2, 0 -_0806C5E8: .4byte gSprites -_0806C5EC: - ldr r5, _0806C600 @ =gPlayerParty + 4 * 0x64 - adds r0, r5, 0 - movs r1, 0xB - bl GetMonData - cmp r0, 0 - beq _0806C604 - movs r0, 0x4 - strh r0, [r4, 0x2E] - b _0806C64E - .align 2, 0 -_0806C600: .4byte gPlayerParty + 4 * 0x64 -_0806C604: - adds r0, r5, 0 - adds r0, 0x64 - movs r1, 0xB - bl GetMonData - cmp r0, 0 - beq _0806C64E - movs r0, 0x5 - strh r0, [r4, 0x2E] - b _0806C64E -_0806C618: - subs r0, r4, 0x2 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bhi _0806C634 - ldr r0, _0806C630 @ =gSprites - lsls r1, r5, 4 - adds r1, r5 - lsls r1, 2 - adds r1, r0 - movs r0, 0 - b _0806C64A - .align 2, 0 -_0806C630: .4byte gSprites -_0806C634: - subs r0, r4, 0x4 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bhi _0806C64E - ldr r0, _0806C654 @ =gSprites - lsls r1, r5, 4 - adds r1, r5 - lsls r1, 2 - adds r1, r0 - movs r0, 0x1 -_0806C64A: - strh r0, [r1, 0x2E] - strh r4, [r1, 0x30] -_0806C64E: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0806C654: .4byte gSprites - thumb_func_end sub_806C490 - - thumb_func_start sub_806C658 -sub_806C658: @ 806C658 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - lsls r1, 24 - lsrs r4, r1, 24 - bl sub_806CA00 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _0806C6A0 @ =gSprites - lsls r0, r5, 4 - adds r0, r5 - lsls r0, 2 - adds r0, r1 - ldrh r0, [r0, 0x2E] - lsls r0, 24 - lsrs r6, r0, 24 - mov r0, r8 - adds r1, r6, 0 - movs r2, 0 - bl UpdateMonIconFrame_806DA44 - cmp r6, 0x5 - bhi _0806C6A8 - lsls r0, r6, 1 - ldr r1, _0806C6A4 @ =gUnknown_083769A8 - adds r0, r1 - adds r1, r6, 0 - movs r2, 0x3 - movs r3, 0 - bl sub_806BF24 - b _0806C6BA - .align 2, 0 -_0806C6A0: .4byte gSprites -_0806C6A4: .4byte gUnknown_083769A8 -_0806C6A8: - cmp r6, 0x6 - bne _0806C6B4 - movs r0, 0x1 - bl sub_806BB9C - b _0806C6BA -_0806C6B4: - movs r0, 0x1 - bl sub_806BBEC -_0806C6BA: - lsls r1, r4, 24 - movs r2, 0x80 - lsls r2, 18 - adds r0, r1, r2 - asrs r0, 24 - lsls r4, r5, 4 - adds r7, r1, 0 - cmp r0, 0x4 - bls _0806C6CE - b _0806C7EA -_0806C6CE: - lsls r0, 2 - ldr r1, _0806C6D8 @ =_0806C6DC - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0806C6D8: .4byte _0806C6DC - .align 2, 0 -_0806C6DC: - .4byte _0806C7D0 - .4byte _0806C708 - .4byte _0806C6F0 - .4byte _0806C740 - .4byte _0806C7A0 -_0806C6F0: - ldr r1, _0806C704 @ =gSprites - lsls r2, r5, 4 - adds r0, r2, r5 - lsls r0, 2 - adds r0, r1 - movs r1, 0 - strh r1, [r0, 0x30] - adds r4, r2, 0 - b _0806C7EA - .align 2, 0 -_0806C704: .4byte gSprites -_0806C708: - cmp r6, 0 - bne _0806C720 - ldr r2, _0806C71C @ =gSprites - lsls r3, r5, 4 - adds r0, r3, r5 - lsls r0, 2 - adds r0, r2 - movs r1, 0x7 - strh r1, [r0, 0x2E] - b _0806C78E - .align 2, 0 -_0806C71C: .4byte gSprites -_0806C720: - cmp r6, 0x6 - bne _0806C77C - ldr r2, _0806C738 @ =gSprites - lsls r3, r5, 4 - adds r1, r3, r5 - lsls r1, 2 - adds r1, r2 - ldr r0, _0806C73C @ =gPlayerPartyCount - ldrb r0, [r0] - subs r0, 0x1 - b _0806C78C - .align 2, 0 -_0806C738: .4byte gSprites -_0806C73C: .4byte gPlayerPartyCount -_0806C740: - ldr r0, _0806C75C @ =gPlayerPartyCount - ldrb r0, [r0] - subs r0, 0x1 - cmp r6, r0 - bne _0806C764 - ldr r2, _0806C760 @ =gSprites - lsls r3, r5, 4 - adds r0, r3, r5 - lsls r0, 2 - adds r0, r2 - movs r1, 0x6 - strh r1, [r0, 0x2E] - b _0806C78E - .align 2, 0 -_0806C75C: .4byte gPlayerPartyCount -_0806C760: .4byte gSprites -_0806C764: - cmp r6, 0x7 - bne _0806C77C - ldr r2, _0806C778 @ =gSprites - lsls r3, r5, 4 - adds r0, r3, r5 - lsls r0, 2 - adds r0, r2 - movs r1, 0 - strh r1, [r0, 0x2E] - b _0806C78E - .align 2, 0 -_0806C778: .4byte gSprites -_0806C77C: - ldr r2, _0806C79C @ =gSprites - lsls r3, r5, 4 - adds r1, r3, r5 - lsls r1, 2 - adds r1, r2 - asrs r0, r7, 24 - ldrh r4, [r1, 0x2E] - adds r0, r4 -_0806C78C: - strh r0, [r1, 0x2E] -_0806C78E: - adds r4, r3, 0 - adds r0, r4, r5 - lsls r0, 2 - adds r0, r2 - movs r1, 0 - strh r1, [r0, 0x30] - b _0806C7EA - .align 2, 0 -_0806C79C: .4byte gSprites -_0806C7A0: - ldr r0, _0806C7C8 @ =gPlayerPartyCount - ldrb r0, [r0] - lsls r4, r5, 4 - cmp r0, 0x1 - bls _0806C7EA - cmp r6, 0 - bne _0806C7EA - ldr r0, _0806C7CC @ =gSprites - adds r1, r4, r5 - lsls r1, 2 - adds r1, r0 - movs r2, 0x30 - ldrsh r0, [r1, r2] - cmp r0, 0 - bne _0806C7C2 - movs r0, 0x1 - strh r0, [r1, 0x30] -_0806C7C2: - ldrh r0, [r1, 0x30] - strh r0, [r1, 0x2E] - b _0806C7EA - .align 2, 0 -_0806C7C8: .4byte gPlayerPartyCount -_0806C7CC: .4byte gSprites -_0806C7D0: - subs r0, r6, 0x1 - lsls r0, 24 - lsrs r0, 24 - lsls r4, r5, 4 - cmp r0, 0x4 - bhi _0806C7EA - ldr r0, _0806C82C @ =gSprites - adds r1, r4, r5 - lsls r1, 2 - adds r1, r0 - movs r0, 0 - strh r0, [r1, 0x2E] - strh r6, [r1, 0x30] -_0806C7EA: - ldr r1, _0806C82C @ =gSprites - adds r0, r4, r5 - lsls r0, 2 - adds r2, r0, r1 - ldr r1, _0806C830 @ =gUnknown_083768B8 - movs r3, 0x2E - ldrsh r0, [r2, r3] - lsls r0, 2 - adds r0, r1 - ldrb r0, [r0] - strh r0, [r2, 0x20] - movs r3, 0x2E - ldrsh r0, [r2, r3] - lsls r0, 2 - adds r0, r1 - ldrb r0, [r0, 0x1] - strh r0, [r2, 0x22] - ldrh r3, [r2, 0x2E] - movs r1, 0x2E - ldrsh r0, [r2, r1] - cmp r0, 0x5 - bgt _0806C838 - lsls r0, 1 - ldr r1, _0806C834 @ =gUnknown_083769A8 - adds r0, r1 - lsls r1, r3, 24 - lsrs r1, 24 - movs r2, 0x3 - movs r3, 0x1 - bl sub_806BF24 - b _0806C84A - .align 2, 0 -_0806C82C: .4byte gSprites -_0806C830: .4byte gUnknown_083768B8 -_0806C834: .4byte gUnknown_083769A8 -_0806C838: - cmp r0, 0x6 - bne _0806C844 - movs r0, 0x2 - bl sub_806BB9C - b _0806C84A -_0806C844: - movs r0, 0x2 - bl sub_806BBEC -_0806C84A: - ldr r0, _0806C884 @ =0x0201b000 - ldr r2, _0806C888 @ =0x00000261 - adds r0, r2 - movs r1, 0x2 - strb r1, [r0] - ldr r0, _0806C88C @ =gSprites - adds r4, r5 - lsls r4, 2 - adds r4, r0 - ldrh r1, [r4, 0x2E] - lsls r1, 24 - lsrs r1, 24 - mov r0, r8 - movs r2, 0x1 - bl UpdateMonIconFrame_806DA44 - movs r3, 0x2E - ldrsh r0, [r4, r3] - cmp r6, r0 - beq _0806C878 - movs r0, 0x5 - bl PlaySE -_0806C878: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0806C884: .4byte 0x0201b000 -_0806C888: .4byte 0x00000261 -_0806C88C: .4byte gSprites - thumb_func_end sub_806C658 - - thumb_func_start sub_806C890 -sub_806C890: @ 806C890 - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - adds r0, r6, 0 - bl sub_806CA00 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _0806C8D4 @ =gSprites - lsls r0, r5, 4 - adds r0, r5 - lsls r0, 2 - adds r0, r1 - ldrh r0, [r0, 0x2E] - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x6 - beq _0806C914 - adds r0, r6, 0 - adds r1, r4, 0 - movs r2, 0 - bl UpdateMonIconFrame_806DA44 - cmp r4, 0x5 - bhi _0806C8DC - lsls r0, r4, 1 - ldr r1, _0806C8D8 @ =gUnknown_083769A8 - adds r0, r1 - adds r1, r4, 0 - movs r2, 0x3 - movs r3, 0 - bl sub_806BF24 - b _0806C8E2 - .align 2, 0 -_0806C8D4: .4byte gSprites -_0806C8D8: .4byte gUnknown_083769A8 -_0806C8DC: - movs r0, 0x1 - bl sub_806BBEC -_0806C8E2: - ldr r1, _0806C91C @ =gSprites - lsls r0, r5, 4 - adds r0, r5 - lsls r0, 2 - adds r0, r1 - movs r1, 0 - strh r1, [r0, 0x30] - movs r1, 0x6 - strh r1, [r0, 0x2E] - ldr r2, _0806C920 @ =gUnknown_083768B8 - ldrb r1, [r2, 0x18] - strh r1, [r0, 0x20] - ldrb r1, [r2, 0x19] - strh r1, [r0, 0x22] - movs r0, 0x2 - bl sub_806BB9C - ldr r0, _0806C924 @ =0x0201b000 - ldr r1, _0806C928 @ =0x00000261 - adds r0, r1 - movs r1, 0x2 - strb r1, [r0] - movs r0, 0x5 - bl PlaySE -_0806C914: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0806C91C: .4byte gSprites -_0806C920: .4byte gUnknown_083768B8 -_0806C924: .4byte 0x0201b000 -_0806C928: .4byte 0x00000261 - thumb_func_end sub_806C890 - - thumb_func_start sub_806C92C -sub_806C92C: @ 806C92C - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, _0806C960 @ =gSprites - lsls r1, r5, 4 - adds r1, r5 - lsls r1, 2 - adds r1, r0 - ldrh r0, [r1, 0x2E] - lsls r0, 24 - lsrs r6, r0, 24 - ldrh r0, [r1, 0x30] - lsls r0, 24 - lsrs r4, r0, 24 - bl IsDoubleBattle - lsls r0, 24 - cmp r0, 0 - bne _0806C96A - cmp r6, 0 - bne _0806C964 - cmp r4, 0 - bne _0806C97C - movs r4, 0x1 - b _0806C97C - .align 2, 0 -_0806C960: .4byte gSprites -_0806C964: - cmp r4, 0 - beq _0806C97C - b _0806C97A -_0806C96A: - cmp r6, 0x1 - bhi _0806C976 - cmp r4, 0x1 - bhi _0806C97C - movs r4, 0x2 - b _0806C97C -_0806C976: - cmp r4, 0x1 - bls _0806C97C -_0806C97A: - movs r4, 0 -_0806C97C: - ldr r1, _0806C990 @ =gSprites - lsls r0, r5, 4 - adds r0, r5 - lsls r0, 2 - adds r0, r1 - strh r4, [r0, 0x30] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0806C990: .4byte gSprites - thumb_func_end sub_806C92C - - thumb_func_start sub_806C994 -sub_806C994: @ 806C994 - push {r4,lr} - adds r4, r1, 0 - lsls r0, 24 - lsrs r0, 24 - lsls r4, 24 - lsrs r4, 24 - bl sub_806CA00 - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0806C9C0 @ =gSprites - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - strh r4, [r1, 0x2E] - bl sub_806C92C - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0806C9C0: .4byte gSprites - thumb_func_end sub_806C994 - - thumb_func_start sub_806C9C4 -sub_806C9C4: @ 806C9C4 - push {r4,lr} - adds r4, r1, 0 - lsls r0, 24 - lsrs r0, 24 - lsls r4, 24 - lsrs r4, 24 - bl sub_806CA00 - lsls r0, 24 - lsrs r0, 24 - ldr r3, _0806C9FC @ =gSprites - lsls r2, r4, 4 - adds r2, r4 - lsls r2, 2 - adds r2, r3 - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r3 - ldrh r0, [r1, 0x20] - strh r0, [r2, 0x20] - ldrh r0, [r1, 0x22] - strh r0, [r2, 0x22] - ldrh r0, [r1, 0x2E] - strh r0, [r2, 0x2E] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0806C9FC: .4byte gSprites - thumb_func_end sub_806C9C4 - - thumb_func_start sub_806CA00 -sub_806CA00: @ 806CA00 - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0806CA14 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - ldrh r0, [r1, 0xE] - lsrs r0, 8 - bx lr - .align 2, 0 -_0806CA14: .4byte gTasks - thumb_func_end sub_806CA00 - - thumb_func_start sub_806CA18 -sub_806CA18: @ 806CA18 - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - ldr r3, _0806CA34 @ =gTasks - lsls r2, r0, 2 - adds r2, r0 - lsls r2, 3 - adds r2, r3 - ldrb r0, [r2, 0xE] - lsrs r1, 16 - orrs r0, r1 - strh r0, [r2, 0xE] - bx lr - .align 2, 0 -_0806CA34: .4byte gTasks - thumb_func_end sub_806CA18 - - thumb_func_start sub_806CA38 -sub_806CA38: @ 806CA38 - push {lr} - lsls r0, 24 - lsrs r0, 24 - bl sub_806CA00 - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0806CA5C @ =gSprites - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - ldrh r0, [r1, 0x2E] - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - .align 2, 0 -_0806CA5C: .4byte gSprites - thumb_func_end sub_806CA38 - - thumb_func_start sub_806CA60 -sub_806CA60: @ 806CA60 - push {r4,r5,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r1, _0806CAD8 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _0806CADC @ =TaskDummy - str r1, [r0] - ldr r5, _0806CAE0 @ =0x02001000 - strb r4, [r5] - ldr r0, _0806CAE4 @ =sub_806CB74 - movs r1, 0 - bl CreateTask - ldr r0, _0806CAE8 @ =SpriteCallbackDummy - bl CreateInvisibleSpriteWithCallback - strb r0, [r5, 0x1] - ldrb r1, [r5, 0x1] - adds r0, r4, 0 - bl sub_806C9C4 - adds r0, r4, 0 - bl sub_806CA00 - strb r0, [r5, 0x2] - ldr r1, _0806CAEC @ =0x0001a272 - adds r0, r5, r1 - ldrb r0, [r0] - movs r1, 0 - bl sub_806D538 - ldr r2, _0806CAF0 @ =gSprites - ldrb r0, [r5, 0x1] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - movs r2, 0x2E - ldrsh r0, [r1, r2] - lsls r0, 1 - ldr r2, _0806CAF4 @ =gUnknown_083769A8 - adds r0, r2 - ldrh r1, [r1, 0x2E] - lsls r1, 24 - lsrs r1, 24 - movs r2, 0x6 - movs r3, 0 - bl sub_806BF24 - ldr r0, _0806CAF8 @ =0x0001a261 - adds r5, r0 - movs r0, 0x2 - strb r0, [r5] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0806CAD8: .4byte gTasks -_0806CADC: .4byte TaskDummy -_0806CAE0: .4byte 0x02001000 -_0806CAE4: .4byte sub_806CB74 -_0806CAE8: .4byte SpriteCallbackDummy -_0806CAEC: .4byte 0x0001a272 -_0806CAF0: .4byte gSprites -_0806CAF4: .4byte gUnknown_083769A8 -_0806CAF8: .4byte 0x0001a261 - thumb_func_end sub_806CA60 - - thumb_func_start sub_806CAFC -sub_806CAFC: @ 806CAFC - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r4, _0806CB48 @ =0x02001000 - ldrb r3, [r4, 0x1] - lsls r2, r3, 4 - adds r2, r3 - lsls r2, 2 - ldr r3, _0806CB4C @ =gSprites - adds r5, r2, r3 - ldrb r2, [r4, 0x2] - lsls r4, r2, 4 - adds r4, r2 - lsls r4, 2 - adds r4, r3 - lsls r1, 24 - asrs r1, 24 - bl sub_806BF74 - ldrh r2, [r5, 0x2E] - movs r0, 0x2E - ldrsh r1, [r5, r0] - movs r3, 0x2E - ldrsh r0, [r4, r3] - cmp r1, r0 - beq _0806CB54 - adds r0, r1, 0 - lsls r0, 1 - ldr r1, _0806CB50 @ =gUnknown_083769A8 - adds r0, r1 - lsls r1, r2, 24 - lsrs r1, 24 - movs r2, 0x6 - movs r3, 0x1 - bl sub_806BF24 - b _0806CB6A - .align 2, 0 -_0806CB48: .4byte 0x02001000 -_0806CB4C: .4byte gSprites -_0806CB50: .4byte gUnknown_083769A8 -_0806CB54: - movs r3, 0x2E - ldrsh r0, [r5, r3] - lsls r0, 1 - ldr r1, _0806CB70 @ =gUnknown_083769A8 - adds r0, r1 - lsls r1, r2, 24 - lsrs r1, 24 - movs r2, 0x6 - movs r3, 0 - bl sub_806BF24 -_0806CB6A: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0806CB70: .4byte gUnknown_083769A8 - thumb_func_end sub_806CAFC - - thumb_func_start sub_806CB74 -sub_806CB74: @ 806CB74 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0806CB8C @ =gMain - ldrh r0, [r0, 0x30] - cmp r0, 0x20 - beq _0806CBBC - cmp r0, 0x20 - bgt _0806CB90 - cmp r0, 0x10 - beq _0806CBD0 - b _0806CBDA - .align 2, 0 -_0806CB8C: .4byte gMain -_0806CB90: - cmp r0, 0x40 - beq _0806CB9A - cmp r0, 0x80 - beq _0806CBAC - b _0806CBDA -_0806CB9A: - ldr r0, _0806CBA8 @ =0x02001000 - ldrb r0, [r0] - movs r1, 0x1 - negs r1, r1 - bl sub_806CAFC - b _0806CBDA - .align 2, 0 -_0806CBA8: .4byte 0x02001000 -_0806CBAC: - ldr r0, _0806CBB8 @ =0x02001000 - ldrb r0, [r0] - movs r1, 0x1 - bl sub_806CAFC - b _0806CBDA - .align 2, 0 -_0806CBB8: .4byte 0x02001000 -_0806CBBC: - ldr r0, _0806CBCC @ =0x02001000 - ldrb r0, [r0] - movs r1, 0x2 - negs r1, r1 - bl sub_806CAFC - b _0806CBDA - .align 2, 0 -_0806CBCC: .4byte 0x02001000 -_0806CBD0: - ldr r0, _0806CC04 @ =0x02001000 - ldrb r0, [r0] - movs r1, 0x2 - bl sub_806CAFC -_0806CBDA: - ldr r0, _0806CC08 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0806CC10 - movs r0, 0x5 - bl PlaySE - ldr r1, _0806CC0C @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _0806CC04 @ =0x02001000 - ldr r1, [r1, 0xC] - str r1, [r0] - adds r0, r4, 0 - bl _call_via_r1 - b _0806CC24 - .align 2, 0 -_0806CC04: .4byte 0x02001000 -_0806CC08: .4byte gMain -_0806CC0C: .4byte gTasks -_0806CC10: - lsls r0, r1, 16 - lsrs r0, 16 - cmp r0, 0x2 - bne _0806CC24 - movs r0, 0x5 - bl PlaySE - adds r0, r4, 0 - bl sub_806CD44 -_0806CC24: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_806CB74 - - thumb_func_start sub_806CC2C -sub_806CC2C: @ 806CC2C - push {r4,r5,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r5, _0806CC68 @ =0x02001000 - ldrb r1, [r5, 0x1] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _0806CC6C @ =gSprites - adds r0, r1 - bl DestroySprite - movs r0, 0 - movs r1, 0 - bl sub_806D538 - ldr r0, _0806CC70 @ =0x0001a261 - adds r1, r5, r0 - movs r0, 0x2 - strb r0, [r1] - ldrb r0, [r5] - bl SwitchTaskToFollowupFunc - adds r0, r4, 0 - bl DestroyTask - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0806CC68: .4byte 0x02001000 -_0806CC6C: .4byte gSprites -_0806CC70: .4byte 0x0001a261 - thumb_func_end sub_806CC2C - - thumb_func_start sub_806CC74 -sub_806CC74: @ 806CC74 - push {r4-r6,lr} - mov r6, r8 - push {r6} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _0806CCD8 @ =gSprites - mov r8, r0 - ldr r6, _0806CCDC @ =0x02001000 - ldrb r0, [r6, 0x2] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - add r1, r8 - movs r2, 0x2E - ldrsh r0, [r1, r2] - lsls r0, 1 - ldr r5, _0806CCE0 @ =gUnknown_083769A8 - adds r0, r5 - ldrh r1, [r1, 0x2E] - lsls r1, 24 - lsrs r1, 24 - movs r2, 0x3 - movs r3, 0x1 - bl sub_806BF24 - ldrb r0, [r6, 0x1] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - add r1, r8 - movs r2, 0x2E - ldrsh r0, [r1, r2] - lsls r0, 1 - adds r0, r5 - ldrh r1, [r1, 0x2E] - lsls r1, 24 - lsrs r1, 24 - movs r2, 0x3 - movs r3, 0 - bl sub_806BF24 - adds r0, r4, 0 - bl sub_806CC2C - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0806CCD8: .4byte gSprites -_0806CCDC: .4byte 0x02001000 -_0806CCE0: .4byte gUnknown_083769A8 - thumb_func_end sub_806CC74 - - thumb_func_start sub_806CCE4 -sub_806CCE4: @ 806CCE4 - push {r4,r5,lr} - ldr r3, _0806CD38 @ =gSprites - ldr r2, _0806CD3C @ =0x02001000 - ldrb r1, [r2, 0x1] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldrh r0, [r0, 0x2E] - lsls r0, 24 - lsrs r4, r0, 24 - ldrb r1, [r2, 0x2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldrh r0, [r0, 0x2E] - lsls r0, 24 - lsrs r5, r0, 24 - cmp r4, 0x5 - bhi _0806CD1E - lsls r0, r4, 1 - ldr r1, _0806CD40 @ =gUnknown_083769A8 - adds r0, r1 - adds r1, r4, 0 - movs r2, 0x3 - movs r3, 0 - bl sub_806BF24 -_0806CD1E: - cmp r5, 0x5 - bhi _0806CD32 - lsls r0, r5, 1 - ldr r1, _0806CD40 @ =gUnknown_083769A8 - adds r0, r1 - adds r1, r5, 0 - movs r2, 0x3 - movs r3, 0x1 - bl sub_806BF24 -_0806CD32: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0806CD38: .4byte gSprites -_0806CD3C: .4byte 0x02001000 -_0806CD40: .4byte gUnknown_083769A8 - thumb_func_end sub_806CCE4 - - thumb_func_start sub_806CD44 -sub_806CD44: @ 806CD44 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl sub_806CCE4 - adds r0, r4, 0 - bl sub_806CC2C - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_806CD44 - - thumb_func_start sub_806CD5C -sub_806CD5C: @ 806CD5C - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - ldr r2, _0806CDA8 @ =gSprites - ldr r6, _0806CDAC @ =0x02001000 - ldrb r1, [r6, 0x1] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r0, [r0, 0x2E] - lsls r0, 24 - lsrs r5, r0, 24 - mov r9, r5 - ldrb r1, [r6, 0x2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r0, [r0, 0x2E] - lsls r0, 24 - lsrs r4, r0, 24 - adds r7, r4, 0 - cmp r5, r4 - beq _0806CD9E - cmp r5, 0x7 - beq _0806CD9E - cmp r4, 0x7 - bne _0806CDB0 -_0806CD9E: - mov r0, r8 - bl sub_806CD44 - b _0806CED2 - .align 2, 0 -_0806CDA8: .4byte gSprites -_0806CDAC: .4byte 0x02001000 -_0806CDB0: - adds r0, r5, 0 - bl sub_806D5B8 - adds r0, r4, 0 - bl sub_806D5B8 - cmp r5, r4 - bls _0806CDC6 - strb r4, [r6, 0x5] - strb r5, [r6, 0x6] - b _0806CDCC -_0806CDC6: - mov r0, r9 - strb r0, [r6, 0x5] - strb r7, [r6, 0x6] -_0806CDCC: - ldr r4, _0806CE1C @ =0x02001000 - ldrb r0, [r4] - ldrb r1, [r4, 0x5] - bl GetMonIconSpriteId_maybe - strb r0, [r4, 0x3] - ldrb r0, [r4] - ldrb r1, [r4, 0x6] - bl GetMonIconSpriteId_maybe - strb r0, [r4, 0x4] - ldrb r3, [r4, 0x5] - cmp r3, 0 - bne _0806CE34 - ldr r2, _0806CE20 @ =gSprites - ldrb r1, [r4, 0x3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldr r1, _0806CE24 @ =0x0000fff8 - strh r1, [r0, 0x2E] - ldrb r1, [r4, 0x3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldr r1, _0806CE28 @ =0x0000ff58 - strh r1, [r0, 0x32] - strh r3, [r4, 0x8] - movs r0, 0xB - strh r0, [r4, 0xA] - ldr r1, _0806CE2C @ =gTasks - mov r3, r8 - lsls r0, r3, 2 - add r0, r8 - lsls r0, 3 - adds r0, r1 - ldr r1, _0806CE30 @ =sub_806D014 - b _0806CE66 - .align 2, 0 -_0806CE1C: .4byte 0x02001000 -_0806CE20: .4byte gSprites -_0806CE24: .4byte 0x0000fff8 -_0806CE28: .4byte 0x0000ff58 -_0806CE2C: .4byte gTasks -_0806CE30: .4byte sub_806D014 -_0806CE34: - ldr r2, _0806CEE0 @ =gSprites - ldrb r1, [r4, 0x3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0x8 - strh r1, [r0, 0x2E] - ldrb r1, [r4, 0x3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0xA8 - strh r1, [r0, 0x32] - movs r0, 0xB - strh r0, [r4, 0x8] - strh r0, [r4, 0xA] - ldr r1, _0806CEE4 @ =gTasks - mov r3, r8 - lsls r0, r3, 2 - add r0, r8 - lsls r0, 3 - adds r0, r1 - ldr r1, _0806CEE8 @ =sub_806D118 -_0806CE66: - str r1, [r0] - ldr r0, _0806CEEC @ =0x0001a261 - adds r1, r4, r0 - movs r0, 0x1 - strb r0, [r1] - adds r6, r2, 0 - ldr r4, _0806CEF0 @ =0x02001000 - ldrb r1, [r4, 0x3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r5, r6, 0 - adds r5, 0x1C - adds r0, r5 - ldr r2, _0806CEF4 @ =sub_806D37C - str r2, [r0] - ldrb r1, [r4, 0x4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - movs r1, 0x8 - strh r1, [r0, 0x2E] - ldrb r1, [r4, 0x4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - movs r1, 0xA8 - strh r1, [r0, 0x32] - ldrb r1, [r4, 0x4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - str r2, [r0] - ldrb r1, [r4, 0x3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r0, r5 - adds r0, r6 - ldr r1, [r1] - bl _call_via_r1 - ldrb r1, [r4, 0x4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r5, r0, r5 - adds r0, r6 - ldr r1, [r5] - bl _call_via_r1 -_0806CED2: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0806CEE0: .4byte gSprites -_0806CEE4: .4byte gTasks -_0806CEE8: .4byte sub_806D118 -_0806CEEC: .4byte 0x0001a261 -_0806CEF0: .4byte 0x02001000 -_0806CEF4: .4byte sub_806D37C - thumb_func_end sub_806CD5C - - thumb_func_start sub_806CEF8 -sub_806CEF8: @ 806CEF8 - ldrh r3, [r0] - ldrh r2, [r1] - strh r2, [r0] - strh r3, [r1] - bx lr - thumb_func_end sub_806CEF8 - - thumb_func_start sub_806CF04 -sub_806CF04: @ 806CF04 - push {r4,r5,lr} - ldr r4, _0806CF94 @ =0x02001000 - ldrb r1, [r4, 0x3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r5, _0806CF98 @ =gSprites + 0x20 - adds r0, r5 - ldrb r2, [r4, 0x4] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r1, r5 - bl sub_806CEF8 - ldrb r1, [r4, 0x3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r3, r5, 0x2 - adds r0, r3 - ldrb r2, [r4, 0x4] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r1, r3 - bl sub_806CEF8 - ldrb r1, [r4, 0x3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r3, r5, 0x4 - adds r0, r3 - ldrb r2, [r4, 0x4] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r1, r3 - bl sub_806CEF8 - ldrb r1, [r4, 0x3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r3, r5, 0 - adds r3, 0xE - adds r0, r3 - ldrb r2, [r4, 0x4] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r1, r3 - bl sub_806CEF8 - ldrb r1, [r4, 0x3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - subs r5, 0x4 - adds r0, r5 - ldr r2, _0806CF9C @ =sub_806D37C - str r2, [r0] - ldrb r1, [r4, 0x4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - str r2, [r0] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0806CF94: .4byte 0x02001000 -_0806CF98: .4byte gSprites + 0x20 -_0806CF9C: .4byte sub_806D37C - thumb_func_end sub_806CF04 - - thumb_func_start sub_806CFA0 -sub_806CFA0: @ 806CFA0 - push {r4-r6,lr} - lsls r4, r1, 24 - lsrs r4, 24 - ldr r5, _0806CFDC @ =0x02001000 - ldrb r1, [r5, 0x6] - subs r1, 0x1 - lsls r0, r1, 1 - adds r0, r1 - adds r0, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - movs r1, 0x8 - ldrsh r0, [r5, r1] - movs r1, 0x3 - bl sub_806BA34 - movs r1, 0xA - ldrsh r0, [r5, r1] - adds r1, r6, 0 - bl sub_806BB3C - cmp r4, 0 - bne _0806CFE0 - ldrh r0, [r5, 0x8] - subs r0, 0x1 - strh r0, [r5, 0x8] - ldrh r0, [r5, 0xA] - adds r0, 0x1 - b _0806CFEA - .align 2, 0 -_0806CFDC: .4byte 0x02001000 -_0806CFE0: - ldrh r0, [r5, 0x8] - adds r0, 0x1 - strh r0, [r5, 0x8] - ldrh r0, [r5, 0xA] - subs r0, 0x1 -_0806CFEA: - strh r0, [r5, 0xA] - ldr r4, _0806D010 @ =0x02001000 - movs r1, 0x8 - ldrsh r0, [r4, r1] - movs r1, 0x3 - movs r2, 0xA - bl sub_806B9A4 - movs r1, 0xA - ldrsh r0, [r4, r1] - adds r1, r6, 0 - movs r2, 0 - movs r3, 0xA - bl sub_806BA94 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0806D010: .4byte 0x02001000 - thumb_func_end sub_806CFA0 - - thumb_func_start sub_806D014 -sub_806D014: @ 806D014 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - adds r0, r4, 0 - movs r1, 0 - bl sub_806CFA0 - ldr r2, _0806D050 @ =0x02001000 - movs r0, 0x8 - ldrsh r1, [r2, r0] - movs r0, 0xD - negs r0, r0 - cmp r1, r0 - bge _0806D04A - movs r1, 0xA - ldrsh r0, [r2, r1] - cmp r0, 0x20 - ble _0806D04A - bl sub_806CF04 - ldr r0, _0806D054 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _0806D058 @ =sub_806D05C - str r0, [r1] -_0806D04A: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0806D050: .4byte 0x02001000 -_0806D054: .4byte gTasks -_0806D058: .4byte sub_806D05C - thumb_func_end sub_806D014 - - thumb_func_start sub_806D05C -sub_806D05C: @ 806D05C - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - adds r0, r4, 0 - movs r1, 0x1 - bl sub_806CFA0 - ldr r0, _0806D08C @ =0x02001000 - ldr r1, [r0, 0x8] - movs r0, 0xB0 - lsls r0, 12 - cmp r1, r0 - bne _0806D084 - ldr r0, _0806D090 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _0806D094 @ =sub_806D198 - str r0, [r1] -_0806D084: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0806D08C: .4byte 0x02001000 -_0806D090: .4byte gTasks -_0806D094: .4byte sub_806D198 - thumb_func_end sub_806D05C - - thumb_func_start sub_806D098 -sub_806D098: @ 806D098 - push {r4-r7,lr} - lsls r4, r1, 24 - lsrs r4, 24 - ldr r5, _0806D0E0 @ =0x02001000 - ldrb r1, [r5, 0x5] - subs r1, 0x1 - lsls r0, r1, 1 - adds r0, r1 - adds r0, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 - ldrb r1, [r5, 0x6] - subs r1, 0x1 - lsls r0, r1, 1 - adds r0, r1 - adds r0, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - movs r1, 0x8 - ldrsh r0, [r5, r1] - adds r1, r7, 0 - bl sub_806BB3C - movs r1, 0xA - ldrsh r0, [r5, r1] - adds r1, r6, 0 - bl sub_806BB3C - cmp r4, 0 - bne _0806D0E4 - ldrh r0, [r5, 0x8] - adds r0, 0x1 - strh r0, [r5, 0x8] - ldrh r0, [r5, 0xA] - adds r0, 0x1 - b _0806D0EE - .align 2, 0 -_0806D0E0: .4byte 0x02001000 -_0806D0E4: - ldrh r0, [r5, 0x8] - subs r0, 0x1 - strh r0, [r5, 0x8] - ldrh r0, [r5, 0xA] - subs r0, 0x1 -_0806D0EE: - strh r0, [r5, 0xA] - ldr r4, _0806D114 @ =0x02001000 - movs r1, 0x8 - ldrsh r0, [r4, r1] - adds r1, r7, 0 - movs r2, 0 - movs r3, 0xA - bl sub_806BA94 - movs r1, 0xA - ldrsh r0, [r4, r1] - adds r1, r6, 0 - movs r2, 0 - movs r3, 0xA - bl sub_806BA94 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0806D114: .4byte 0x02001000 - thumb_func_end sub_806D098 - - thumb_func_start sub_806D118 -sub_806D118: @ 806D118 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - adds r0, r4, 0 - movs r1, 0 - bl sub_806D098 - ldr r1, _0806D150 @ =0x02001000 - movs r2, 0x8 - ldrsh r0, [r1, r2] - cmp r0, 0x20 - ble _0806D14A - movs r2, 0xA - ldrsh r0, [r1, r2] - cmp r0, 0x20 - ble _0806D14A - bl sub_806CF04 - ldr r0, _0806D154 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _0806D158 @ =sub_806D15C - str r0, [r1] -_0806D14A: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0806D150: .4byte 0x02001000 -_0806D154: .4byte gTasks -_0806D158: .4byte sub_806D15C - thumb_func_end sub_806D118 - - thumb_func_start sub_806D15C -sub_806D15C: @ 806D15C - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - adds r0, r4, 0 - movs r1, 0x1 - bl sub_806D098 - ldr r0, _0806D188 @ =0x02001000 - ldr r1, [r0, 0x8] - ldr r0, _0806D18C @ =0x000b000b - cmp r1, r0 - bne _0806D182 - ldr r0, _0806D190 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _0806D194 @ =sub_806D198 - str r0, [r1] -_0806D182: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0806D188: .4byte 0x02001000 -_0806D18C: .4byte 0x000b000b -_0806D190: .4byte gTasks -_0806D194: .4byte sub_806D198 - thumb_func_end sub_806D15C - - thumb_func_start sub_806D198 -sub_806D198: @ 806D198 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - mov r10, r0 - lsls r0, 24 - lsrs r0, 24 - mov r10, r0 - ldr r4, _0806D364 @ =0x02001000 - ldrb r0, [r4] - ldrb r1, [r4, 0x5] - ldrb r2, [r4, 0x4] - bl SetMonIconSpriteId_maybe - ldrb r0, [r4] - ldrb r1, [r4, 0x6] - ldrb r2, [r4, 0x3] - bl SetMonIconSpriteId_maybe - bl IsDoubleBattle - ldr r5, _0806D368 @ =gSprites - ldrb r1, [r4, 0x3] - lsls r3, r1, 4 - adds r3, r1 - lsls r3, 2 - adds r3, r5 - ldr r6, _0806D36C @ =gUnknown_08376678 - ldrb r2, [r4, 0x6] - lsls r2, 2 - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 3 - adds r2, r1 - adds r2, r6 - ldrb r0, [r2] - movs r1, 0 - mov r8, r1 - strh r0, [r3, 0x20] - bl IsDoubleBattle - ldrb r1, [r4, 0x3] - lsls r3, r1, 4 - adds r3, r1 - lsls r3, 2 - adds r3, r5 - ldrb r2, [r4, 0x6] - lsls r2, 2 - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 3 - adds r2, r1 - adds r2, r6 - ldrb r0, [r2, 0x1] - strh r0, [r3, 0x22] - ldrb r1, [r4, 0x3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - mov r1, r8 - strh r1, [r0, 0x24] - ldrb r1, [r4, 0x3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - mov r1, r8 - strh r1, [r0, 0x26] - ldrb r1, [r4, 0x3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - movs r1, 0x1C - adds r1, r5 - mov r9, r1 - add r0, r9 - ldr r7, _0806D370 @ =UpdateMonIconFrame_806DA38 - str r7, [r0] - bl IsDoubleBattle - ldrb r1, [r4, 0x4] - lsls r3, r1, 4 - adds r3, r1 - lsls r3, 2 - adds r3, r5 - ldrb r2, [r4, 0x5] - lsls r2, 2 - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 3 - adds r2, r1 - adds r2, r6 - ldrb r0, [r2] - strh r0, [r3, 0x20] - bl IsDoubleBattle - ldrb r1, [r4, 0x4] - lsls r3, r1, 4 - adds r3, r1 - lsls r3, 2 - adds r3, r5 - ldrb r2, [r4, 0x5] - lsls r2, 2 - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 3 - adds r2, r1 - adds r2, r6 - ldrb r0, [r2, 0x1] - strh r0, [r3, 0x22] - ldrb r1, [r4, 0x4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - mov r1, r8 - strh r1, [r0, 0x24] - ldrb r1, [r4, 0x4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - mov r1, r8 - strh r1, [r0, 0x26] - ldrb r1, [r4, 0x4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - add r0, r9 - str r7, [r0] - ldrb r0, [r4] - ldrb r2, [r4, 0x2] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r1, r5 - ldrh r1, [r1, 0x2E] - lsls r1, 24 - lsrs r1, 24 - bl GetMonIconSpriteId_maybe - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - add r1, r9 - ldr r0, _0806D374 @ =UpdateMonIconFrame_806DA0C - str r0, [r1] - ldrb r0, [r4, 0x5] - movs r6, 0x64 - muls r0, r6 - ldr r5, _0806D378 @ =gPlayerParty - adds r0, r5 - ldrb r1, [r4, 0x6] - muls r1, r6 - adds r1, r5 - bl sub_806E6F0 - ldrb r0, [r4, 0x5] - adds r1, r0, 0 - muls r1, r6 - adds r1, r5 - bl PartyMenuPrintMonLevelOrStatus - ldrb r0, [r4, 0x5] - adds r1, r0, 0 - muls r1, r6 - adds r1, r5 - bl TryPrintPartyMenuMonNickname - ldrb r0, [r4, 0x5] - adds r1, r0, 0 - muls r1, r6 - adds r1, r5 - bl PartyMenuTryPrintHP - ldrb r0, [r4, 0x5] - adds r1, r0, 0 - muls r1, r6 - adds r1, r5 - bl nullsub_12 - ldrb r0, [r4, 0x6] - adds r1, r0, 0 - muls r1, r6 - adds r1, r5 - bl PartyMenuPrintMonLevelOrStatus - ldrb r0, [r4, 0x6] - adds r1, r0, 0 - muls r1, r6 - adds r1, r5 - bl TryPrintPartyMenuMonNickname - ldrb r0, [r4, 0x6] - adds r1, r0, 0 - muls r1, r6 - adds r1, r5 - bl PartyMenuTryPrintHP - ldrb r0, [r4, 0x6] - adds r1, r0, 0 - muls r1, r6 - adds r1, r5 - bl nullsub_12 - bl PartyMenuDrawHPBars - mov r0, r10 - bl sub_806CC74 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0806D364: .4byte 0x02001000 -_0806D368: .4byte gSprites -_0806D36C: .4byte gUnknown_08376678 -_0806D370: .4byte UpdateMonIconFrame_806DA38 -_0806D374: .4byte UpdateMonIconFrame_806DA0C -_0806D378: .4byte gPlayerParty - thumb_func_end sub_806D198 - - thumb_func_start sub_806D37C -sub_806D37C: @ 806D37C - push {r4,lr} - adds r4, r0, 0 - bl UpdateMonIconFrame - ldrh r2, [r4, 0x24] - movs r0, 0x24 - ldrsh r1, [r4, r0] - movs r3, 0x32 - ldrsh r0, [r4, r3] - cmp r1, r0 - bne _0806D3A8 - movs r1, 0x2E - ldrsh r0, [r4, r1] - negs r0, r0 - movs r1, 0 - strh r0, [r4, 0x2E] - strh r1, [r4, 0x32] - ldr r0, _0806D3A4 @ =UpdateMonIconFrame_806DA38 - str r0, [r4, 0x1C] - b _0806D3AE - .align 2, 0 -_0806D3A4: .4byte UpdateMonIconFrame_806DA38 -_0806D3A8: - ldrh r0, [r4, 0x2E] - adds r0, r2, r0 - strh r0, [r4, 0x24] -_0806D3AE: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_806D37C - - thumb_func_start sub_806D3B4 -sub_806D3B4: @ 806D3B4 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r4, r1, 0 - lsls r0, 24 - lsrs r7, r0, 24 - lsls r4, 16 - lsrs r4, 16 - lsls r2, 16 - lsrs r2, 16 - mov r8, r2 - ldr r6, _0806D438 @ =gUnknown_083769C0 - ldr r1, _0806D43C @ =gTasks - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - adds r5, r0, r1 - ldrh r0, [r5, 0x8] - ldrb r1, [r6, 0x2] - adds r0, r1 - lsls r0, 16 - asrs r0, 16 - ldrb r1, [r6, 0x3] - bl sub_806BA34 - ldrh r0, [r5, 0x8] - ldrb r1, [r6, 0x8] - adds r0, r1 - lsls r0, 16 - asrs r0, 16 - ldrb r1, [r6, 0x9] - bl sub_806BB3C - ldrh r0, [r5, 0x8] - ldrb r1, [r6, 0xA] - adds r0, r1 - lsls r0, 16 - asrs r0, 16 - ldrb r1, [r6, 0xB] - bl sub_806BB3C - ldrh r1, [r5, 0x8] - subs r1, 0x1 - strh r1, [r5, 0x8] - ldrb r0, [r6, 0x2] - adds r0, r1 - lsls r0, 16 - asrs r0, 16 - ldrb r1, [r6, 0x3] - movs r2, 0x4 - bl sub_806B9A4 - cmp r4, 0 - beq _0806D440 - ldrh r0, [r5, 0x8] - ldrb r1, [r6, 0x8] - adds r0, r1 - lsls r0, 16 - asrs r0, 16 - ldrb r1, [r6, 0x9] - movs r2, 0 - movs r3, 0x4 - bl sub_806BA94 - b _0806D454 - .align 2, 0 -_0806D438: .4byte gUnknown_083769C0 -_0806D43C: .4byte gTasks -_0806D440: - ldrh r0, [r5, 0x8] - ldrb r1, [r6, 0x8] - adds r0, r1 - lsls r0, 16 - asrs r0, 16 - ldrb r1, [r6, 0x9] - movs r2, 0x1 - movs r3, 0x4 - bl sub_806BA94 -_0806D454: - mov r0, r8 - cmp r0, 0 - beq _0806D480 - ldr r1, _0806D47C @ =gTasks - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - adds r0, r1 - ldrh r0, [r0, 0x8] - ldrb r1, [r6, 0xA] - adds r0, r1 - lsls r0, 16 - asrs r0, 16 - ldrb r1, [r6, 0xB] - movs r2, 0 - movs r3, 0x4 - bl sub_806BA94 - b _0806D49E - .align 2, 0 -_0806D47C: .4byte gTasks -_0806D480: - ldr r1, _0806D4A8 @ =gTasks - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - adds r0, r1 - ldrh r0, [r0, 0x8] - ldrb r1, [r6, 0xA] - adds r0, r1 - lsls r0, 16 - asrs r0, 16 - ldrb r1, [r6, 0xB] - movs r2, 0x1 - movs r3, 0x4 - bl sub_806BA94 -_0806D49E: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0806D4A8: .4byte gTasks - thumb_func_end sub_806D3B4 - - thumb_func_start sub_806D4AC -sub_806D4AC: @ 806D4AC - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r1, 16 - lsls r2, 24 - lsrs r2, 24 - cmp r1, 0 - beq _0806D4F6 - adds r1, r2, 0x3 - lsls r1, 24 - lsrs r1, 24 - adds r0, r5, 0 - bl GetMonIconSpriteId_maybe - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0806D4FC @ =gSprites - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r4, r1, r2 - ldr r0, _0806D500 @ =0x0000fff8 - strh r0, [r4, 0x2E] - ldr r3, _0806D504 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r3 - movs r3, 0x8 - ldrsh r0, [r0, r3] - lsls r0, 3 - negs r0, r0 - strh r0, [r4, 0x32] - adds r2, 0x1C - adds r1, r2 - ldr r0, _0806D508 @ =sub_806D37C - str r0, [r1] -_0806D4F6: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0806D4FC: .4byte gSprites -_0806D500: .4byte 0x0000fff8 -_0806D504: .4byte gTasks -_0806D508: .4byte sub_806D37C - thumb_func_end sub_806D4AC - - thumb_func_start sub_806D50C -sub_806D50C: @ 806D50C - push {lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r1, 24 - bl GetMonIconSpriteId_maybe - ldr r2, _0806D534 @ =gSprites - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - ldrh r0, [r1, 0x20] - adds r0, 0xF0 - strh r0, [r1, 0x20] - pop {r0} - bx r0 - .align 2, 0 -_0806D534: .4byte gSprites - thumb_func_end sub_806D50C - - thumb_func_start sub_806D538 -sub_806D538: @ 806D538 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r1, 24 - lsrs r1, 24 - adds r0, r1, 0 - cmp r4, 0xFF - beq _0806D59A - cmp r1, 0x1 - beq _0806D568 - cmp r1, 0x1 - bgt _0806D556 - cmp r1, 0 - beq _0806D560 - b _0806D58A -_0806D556: - cmp r0, 0x2 - beq _0806D570 - cmp r0, 0x3 - beq _0806D57E - b _0806D58A -_0806D560: - movs r0, 0 - movs r1, 0x10 - movs r2, 0x17 - b _0806D576 -_0806D568: - movs r0, 0 - movs r1, 0x10 - movs r2, 0x13 - b _0806D576 -_0806D570: - movs r0, 0 - movs r1, 0x10 - movs r2, 0x16 -_0806D576: - movs r3, 0x13 - bl MenuDrawTextWindow - b _0806D58A -_0806D57E: - movs r0, 0 - movs r1, 0x10 - movs r2, 0x12 - movs r3, 0x13 - bl MenuDrawTextWindow -_0806D58A: - ldr r0, _0806D5A0 @ =gUnknown_08376624 - lsls r1, r4, 2 - adds r1, r0 - ldr r0, [r1] - movs r1, 0x1 - movs r2, 0x11 - bl MenuPrint -_0806D59A: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0806D5A0: .4byte gUnknown_08376624 - thumb_func_end sub_806D538 - - thumb_func_start sub_806D5A4 -sub_806D5A4: @ 806D5A4 - push {lr} - movs r0, 0 - movs r1, 0x10 - movs r2, 0x1D - movs r3, 0x13 - bl MenuZeroFillWindowRect - pop {r0} - bx r0 - thumb_func_end sub_806D5A4 - - thumb_func_start sub_806D5B8 -sub_806D5B8: @ 806D5B8 - push {r4-r6,lr} - mov r6, r10 - mov r5, r9 - mov r4, r8 - push {r4-r6} - sub sp, 0x8 - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - ldr r6, _0806D658 @ =gUnknown_08376948 - bl IsDoubleBattle - lsls r4, r5, 2 - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 3 - adds r1, r4, r1 - adds r1, r6 - ldrb r1, [r1] - mov r10, r1 - bl IsDoubleBattle - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 3 - adds r1, r4, r1 - adds r1, r6 - ldrb r1, [r1, 0x1] - mov r9, r1 - bl IsDoubleBattle - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 3 - adds r1, r4, r1 - adds r1, r6 - ldrb r1, [r1, 0x2] - mov r8, r1 - bl IsDoubleBattle - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 3 - adds r4, r1 - adds r4, r6 - ldrb r1, [r4, 0x3] - ldr r0, _0806D65C @ =gUnknown_03004210 - str r1, [sp] - mov r1, r10 - mov r2, r9 - mov r3, r8 - bl ZeroFillWindowRect - movs r0, 0 - str r0, [sp, 0x4] - lsls r5, 10 - ldr r0, _0806D660 @ =0x06014000 - adds r5, r0 - ldr r2, _0806D664 @ =0x01000100 - add r0, sp, 0x4 - adds r1, r5, 0 - bl CpuFastSet - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0806D658: .4byte gUnknown_08376948 -_0806D65C: .4byte gUnknown_03004210 -_0806D660: .4byte 0x06014000 -_0806D664: .4byte 0x01000100 - thumb_func_end sub_806D5B8 - - thumb_func_start sub_806D668 -sub_806D668: @ 806D668 - push {r4-r6,lr} - mov r6, r10 - mov r5, r9 - mov r4, r8 - push {r4-r6} - sub sp, 0x8 - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - ldr r6, _0806D708 @ =gUnknown_08376978 - bl IsDoubleBattle - lsls r4, r5, 2 - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 3 - adds r1, r4, r1 - adds r1, r6 - ldrb r1, [r1] - mov r10, r1 - bl IsDoubleBattle - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 3 - adds r1, r4, r1 - adds r1, r6 - ldrb r1, [r1, 0x1] - mov r9, r1 - bl IsDoubleBattle - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 3 - adds r1, r4, r1 - adds r1, r6 - ldrb r1, [r1, 0x2] - mov r8, r1 - bl IsDoubleBattle - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 3 - adds r4, r1 - adds r4, r6 - ldrb r1, [r4, 0x3] - ldr r0, _0806D70C @ =gUnknown_03004210 - str r1, [sp] - mov r1, r10 - mov r2, r9 - mov r3, r8 - bl ZeroFillWindowRect - movs r0, 0 - str r0, [sp, 0x4] - lsls r5, 10 - ldr r0, _0806D710 @ =0x06014300 - adds r5, r0 - ldr r2, _0806D714 @ =0x01000040 - add r0, sp, 0x4 - adds r1, r5, 0 - bl CpuFastSet - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0806D708: .4byte gUnknown_08376978 -_0806D70C: .4byte gUnknown_03004210 -_0806D710: .4byte 0x06014300 -_0806D714: .4byte 0x01000040 - thumb_func_end sub_806D668 - - thumb_func_start sub_806D718 -sub_806D718: @ 806D718 - push {r4,r5,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _0806D7C4 @ =0x00007fff - mov r0, sp - strh r1, [r0] - movs r5, 0 - cmp r4, 0x1 - bhi _0806D736 - ldr r0, _0806D7C8 @ =gPartyMenuMisc_Gfx - movs r1, 0xC0 - lsls r1, 19 - bl LZDecompressVram -_0806D736: - cmp r4, 0x2 - beq _0806D73E - cmp r4, 0 - bne _0806D746 -_0806D73E: - ldr r0, _0806D7CC @ =gPartyMenuMisc_Tilemap - ldr r1, _0806D7D0 @ =0x06003800 - bl LZDecompressVram -_0806D746: - cmp r4, 0x3 - beq _0806D74E - cmp r4, 0 - bne _0806D75A -_0806D74E: - ldr r0, _0806D7D4 @ =gPartyMenuMisc_Pal - movs r2, 0xB0 - lsls r2, 1 - movs r1, 0 - bl LoadCompressedPalette -_0806D75A: - cmp r4, 0x4 - beq _0806D762 - cmp r4, 0 - bne _0806D776 -_0806D762: - mov r0, sp - movs r1, 0 - movs r2, 0x2 - bl LoadPalette - ldr r0, _0806D7D8 @ =gFontDefaultPalette - movs r1, 0xF0 - movs r2, 0x20 - bl LoadPalette -_0806D776: - cmp r4, 0x5 - beq _0806D77E - cmp r4, 0 - bne _0806D786 -_0806D77E: - ldr r0, _0806D7DC @ =gPartyMenuHpBar_Gfx - ldr r1, _0806D7E0 @ =0x06006000 - bl LZDecompressVram -_0806D786: - cmp r4, 0x6 - beq _0806D78E - cmp r4, 0 - bne _0806D796 -_0806D78E: - ldr r0, _0806D7E4 @ =gPartyMenuOrderText_Gfx - ldr r1, _0806D7E8 @ =0x06006180 - bl LZDecompressVram -_0806D796: - cmp r4, 0x7 - beq _0806D79E - cmp r4, 0 - bne _0806D7A6 -_0806D79E: - ldr r0, _0806D7EC @ =gStatusGfx_Icons - ldr r1, _0806D7F0 @ =0x06007180 - bl LZDecompressVram -_0806D7A6: - cmp r4, 0x8 - beq _0806D7AE - cmp r4, 0 - bne _0806D7BA -_0806D7AE: - ldr r0, _0806D7F4 @ =gStatusPal_Icons - movs r1, 0xB0 - movs r2, 0x20 - bl LoadCompressedPalette - movs r5, 0x1 -_0806D7BA: - adds r0, r5, 0 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0806D7C4: .4byte 0x00007fff -_0806D7C8: .4byte gPartyMenuMisc_Gfx -_0806D7CC: .4byte gPartyMenuMisc_Tilemap -_0806D7D0: .4byte 0x06003800 -_0806D7D4: .4byte gPartyMenuMisc_Pal -_0806D7D8: .4byte gFontDefaultPalette -_0806D7DC: .4byte gPartyMenuHpBar_Gfx -_0806D7E0: .4byte 0x06006000 -_0806D7E4: .4byte gPartyMenuOrderText_Gfx -_0806D7E8: .4byte 0x06006180 -_0806D7EC: .4byte gStatusGfx_Icons -_0806D7F0: .4byte 0x06007180 -_0806D7F4: .4byte gStatusPal_Icons - thumb_func_end sub_806D718 - - thumb_func_start SetMonIconAnimByHP -SetMonIconAnimByHP: @ 806D7F8 - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - lsls r1, 16 - lsls r2, 16 - lsrs r5, r1, 16 - asrs r1, 16 - lsrs r4, r2, 16 - asrs r2, 16 - adds r0, r1, 0 - adds r1, r2, 0 - bl GetHPBarLevel - lsls r0, 24 - lsrs r0, 24 - movs r2, 0 - cmp r5, r4 - beq _0806D830 - movs r2, 0x1 - cmp r0, 0x3 - beq _0806D830 - movs r2, 0x2 - cmp r0, 0x2 - beq _0806D830 - movs r2, 0x4 - cmp r0, 0x1 - bne _0806D830 - movs r2, 0x3 -_0806D830: - lsls r0, r6, 4 - adds r0, r6 - lsls r0, 2 - ldr r1, _0806D848 @ =gSprites - adds r0, r1 - adds r1, r2, 0 - bl sub_809D824 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0806D848: .4byte gSprites - thumb_func_end SetMonIconAnimByHP - - thumb_func_start SetMonIconAnim -SetMonIconAnim: @ 806D84C - push {r4-r6,lr} - adds r5, r0, 0 - adds r6, r1, 0 - lsls r5, 24 - lsrs r5, 24 - adds r0, r6, 0 - movs r1, 0x39 - bl GetMonData - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r6, 0 - movs r1, 0x3A - bl GetMonData - adds r2, r0, 0 - lsls r2, 16 - lsrs r2, 16 - adds r0, r5, 0 - adds r1, r4, 0 - bl SetMonIconAnimByHP - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end SetMonIconAnim - - thumb_func_start CreatePartyMenuMonIcon -CreatePartyMenuMonIcon: @ 806D880 - push {r4-r6,lr} - mov r6, r10 - mov r5, r9 - mov r4, r8 - push {r4-r6} - sub sp, 0x8 - adds r6, r0, 0 - adds r5, r1, 0 - mov r8, r3 - lsls r6, 24 - lsrs r6, 24 - lsls r5, 24 - lsrs r5, 24 - lsls r2, 24 - lsrs r2, 24 - ldr r3, _0806D904 @ =gUnknown_08376678 - lsls r1, r5, 2 - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 3 - adds r1, r0 - adds r1, r3 - ldrb r0, [r1] - mov r9, r0 - ldrb r1, [r1, 0x1] - mov r10, r1 - mov r0, r8 - movs r1, 0x41 - bl GetMonData - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - mov r0, r8 - movs r1, 0 - bl GetMonData - ldr r1, _0806D908 @ =sub_809D62C - movs r2, 0x5 - str r2, [sp] - str r0, [sp, 0x4] - adds r0, r4, 0 - mov r2, r9 - mov r3, r10 - bl CreateMonIcon - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r6, 0 - adds r1, r5, 0 - adds r2, r4, 0 - bl SetMonIconSpriteId_maybe - adds r0, r4, 0 - mov r1, r8 - bl SetMonIconAnim - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0806D904: .4byte gUnknown_08376678 -_0806D908: .4byte sub_809D62C - thumb_func_end CreatePartyMenuMonIcon - - thumb_func_start TryCreatePartyMenuMonIcon -TryCreatePartyMenuMonIcon: @ 806D90C - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r4, r2, 0 - lsls r0, 24 - lsrs r6, r0, 24 - mov r8, r6 - lsls r1, 24 - lsrs r5, r1, 24 - adds r7, r5, 0 - adds r0, r4, 0 - movs r1, 0xB - bl GetMonData - cmp r0, 0 - beq _0806D95A - bl IsLinkDoubleBattle - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0806D946 - adds r0, r6, 0 - adds r1, r5, 0 - movs r2, 0x2 - adds r3, r4, 0 - bl CreatePartyMenuMonIcon - b _0806D95A -_0806D946: - bl IsDoubleBattle - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - mov r0, r8 - adds r1, r7, 0 - adds r3, r4, 0 - bl CreatePartyMenuMonIcon -_0806D95A: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end TryCreatePartyMenuMonIcon - - thumb_func_start unref_sub_806D964 -unref_sub_806D964: @ 806D964 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - movs r4, 0 - b _0806D986 -_0806D96E: - movs r0, 0x64 - adds r2, r4, 0 - muls r2, r0 - ldr r0, _0806D994 @ =gPlayerParty - adds r2, r0 - adds r0, r5, 0 - adds r1, r4, 0 - bl TryCreatePartyMenuMonIcon - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 -_0806D986: - ldr r0, _0806D998 @ =gPlayerPartyCount - ldrb r0, [r0] - cmp r4, r0 - bcc _0806D96E - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0806D994: .4byte gPlayerParty -_0806D998: .4byte gPlayerPartyCount - thumb_func_end unref_sub_806D964 - - thumb_func_start CreateMonIcon_806D99C -CreateMonIcon_806D99C: @ 806D99C - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x8 - adds r6, r0, 0 - adds r5, r1, 0 - mov r8, r3 - lsls r6, 24 - lsrs r6, 24 - lsls r5, 24 - lsrs r5, 24 - lsls r2, 24 - lsrs r2, 24 - ldr r3, _0806DA04 @ =gUnknown_08376678 - lsls r1, r5, 2 - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 3 - adds r1, r0 - adds r1, r3 - ldrb r2, [r1] - ldrb r3, [r1, 0x1] - mov r1, r8 - ldrh r0, [r1] - ldr r1, _0806DA08 @ =sub_809D62C - movs r4, 0x5 - str r4, [sp] - mov r7, r8 - ldr r4, [r7, 0x18] - str r4, [sp, 0x4] - bl CreateMonIcon - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r6, 0 - adds r1, r5, 0 - adds r2, r4, 0 - bl SetMonIconSpriteId_maybe - ldrh r1, [r7, 0x10] - ldrh r2, [r7, 0x12] - adds r0, r4, 0 - bl SetMonIconAnimByHP - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0806DA04: .4byte gUnknown_08376678 -_0806DA08: .4byte sub_809D62C - thumb_func_end CreateMonIcon_806D99C - - thumb_func_start UpdateMonIconFrame_806DA0C -UpdateMonIconFrame_806DA0C: @ 806DA0C - push {r4,lr} - adds r4, r0, 0 - bl UpdateMonIconFrame - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - beq _0806DA32 - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0806DA30 - ldr r0, _0806DA2C @ =0x0000fffd - strh r0, [r4, 0x26] - b _0806DA32 - .align 2, 0 -_0806DA2C: .4byte 0x0000fffd -_0806DA30: - strh r1, [r4, 0x26] -_0806DA32: - pop {r4} - pop {r0} - bx r0 - thumb_func_end UpdateMonIconFrame_806DA0C - - thumb_func_start UpdateMonIconFrame_806DA38 -UpdateMonIconFrame_806DA38: @ 806DA38 - push {lr} - bl UpdateMonIconFrame - pop {r0} - bx r0 - thumb_func_end UpdateMonIconFrame_806DA38 - - thumb_func_start UpdateMonIconFrame_806DA44 -UpdateMonIconFrame_806DA44: @ 806DA44 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r1, 24 - lsls r2, 24 - lsrs r4, r2, 24 - cmp r1, 0x5 - bhi _0806DA8E - bl GetMonIconSpriteId_maybe - lsls r0, 24 - lsrs r0, 24 - ldr r3, _0806DA7C @ =gSprites - lsls r1, r0, 4 - adds r1, r0 - lsls r2, r1, 2 - adds r1, r2, r3 - movs r0, 0 - strh r0, [r1, 0x26] - strh r0, [r1, 0x2E] - cmp r4, 0 - bne _0806DA84 - adds r0, r3, 0 - adds r0, 0x1C - adds r0, r2, r0 - ldr r1, _0806DA80 @ =UpdateMonIconFrame_806DA38 - b _0806DA8C - .align 2, 0 -_0806DA7C: .4byte gSprites -_0806DA80: .4byte UpdateMonIconFrame_806DA38 -_0806DA84: - adds r0, r3, 0 - adds r0, 0x1C - adds r0, r2, r0 - ldr r1, _0806DA94 @ =UpdateMonIconFrame_806DA0C -_0806DA8C: - str r1, [r0] -_0806DA8E: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0806DA94: .4byte UpdateMonIconFrame_806DA0C - thumb_func_end UpdateMonIconFrame_806DA44 - - thumb_func_start LoadHeldItemIconGraphics -LoadHeldItemIconGraphics: @ 806DA98 - push {lr} - ldr r0, _0806DAAC @ =gUnknown_083765DC - bl LoadSpriteSheet - ldr r0, _0806DAB0 @ =gUnknown_083765E4 - bl LoadSpritePalette - pop {r0} - bx r0 - .align 2, 0 -_0806DAAC: .4byte gUnknown_083765DC -_0806DAB0: .4byte gUnknown_083765E4 - thumb_func_end LoadHeldItemIconGraphics - - thumb_func_start SpriteCB_HeldItemIcon -SpriteCB_HeldItemIcon: @ 806DAB4 - push {r4,lr} - adds r4, r0, 0 - ldrh r1, [r4, 0x3C] - lsls r1, 24 - lsrs r1, 24 - ldr r2, _0806DAE4 @ =gSprites - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, r0, r2 - adds r0, r2, 0 - adds r0, 0x3E - ldrb r0, [r0] - lsls r0, 29 - cmp r0, 0 - bge _0806DAE8 - adds r0, r4, 0 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] - b _0806DB06 - .align 2, 0 -_0806DAE4: .4byte gSprites -_0806DAE8: - adds r3, r4, 0 - adds r3, 0x3E - ldrb r1, [r3] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r3] - ldrh r0, [r2, 0x24] - ldrh r1, [r2, 0x20] - adds r0, r1 - strh r0, [r4, 0x20] - ldrh r0, [r2, 0x26] - ldrh r2, [r2, 0x22] - adds r0, r2 - strh r0, [r4, 0x22] -_0806DB06: - pop {r4} - pop {r0} - bx r0 - thumb_func_end SpriteCB_HeldItemIcon - - thumb_func_start CreateHeldItemIcon -CreateHeldItemIcon: @ 806DB0C - push {r4-r6,lr} - mov r6, r9 - mov r5, r8 - push {r5,r6} - adds r6, r0, 0 - mov r9, r1 - lsls r6, 24 - lsrs r6, 24 - mov r0, r9 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - ldr r0, _0806DB84 @ =gSprites - mov r8, r0 - lsls r0, r6, 4 - adds r0, r6 - lsls r0, 2 - add r0, r8 - adds r0, 0x43 - ldrb r3, [r0] - ldr r0, _0806DB88 @ =gSpriteTemplate_837660C - subs r3, 0x1 - lsls r3, 24 - lsrs r3, 24 - movs r1, 0xFA - movs r2, 0xAA - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - lsls r4, r0, 4 - adds r4, r0 - lsls r4, 2 - mov r0, r8 - adds r5, r4, r0 - movs r0, 0x4 - strh r0, [r5, 0x24] - movs r0, 0xA - strh r0, [r5, 0x26] - movs r0, 0x1C - add r8, r0 - add r4, r8 - ldr r0, _0806DB8C @ =SpriteCB_HeldItemIcon - str r0, [r4] - strh r6, [r5, 0x3C] - adds r0, r5, 0 - mov r1, r9 - bl StartSpriteAnim - ldr r1, [r4] - adds r0, r5, 0 - bl _call_via_r1 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0806DB84: .4byte gSprites -_0806DB88: .4byte gSpriteTemplate_837660C -_0806DB8C: .4byte SpriteCB_HeldItemIcon - thumb_func_end CreateHeldItemIcon - - thumb_func_start CreateHeldItemIcons -CreateHeldItemIcons: @ 806DB90 - push {r4-r7,lr} - adds r6, r0, 0 - adds r7, r1, 0 - lsls r2, 24 - lsrs r2, 24 - cmp r2, 0 - beq _0806DBA4 - cmp r2, 0x1 - beq _0806DBEC - b _0806DC28 -_0806DBA4: - movs r5, 0 - ldrb r0, [r6] - cmp r5, r0 - bcs _0806DC28 -_0806DBAC: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0806DBE8 @ =gPlayerParty - adds r0, r1 - movs r1, 0xC - bl GetMonData - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0 - beq _0806DBD8 - adds r0, r7, r5 - ldrb r4, [r0] - adds r0, r1, 0 - bl ItemIsMail - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl CreateHeldItemIcon -_0806DBD8: - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - ldrb r0, [r6] - cmp r5, r0 - bcc _0806DBAC - b _0806DC28 - .align 2, 0 -_0806DBE8: .4byte gPlayerParty -_0806DBEC: - movs r5, 0 - b _0806DC22 -_0806DBF0: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0806DC30 @ =gEnemyParty - adds r0, r1 - movs r1, 0xC - bl GetMonData - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0 - beq _0806DC1C - adds r0, r5, r7 - ldrb r4, [r0, 0x6] - adds r0, r1, 0 - bl ItemIsMail - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl CreateHeldItemIcon -_0806DC1C: - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 -_0806DC22: - ldrb r0, [r6, 0x1] - cmp r5, r0 - bcc _0806DBF0 -_0806DC28: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0806DC30: .4byte gEnemyParty - thumb_func_end CreateHeldItemIcons - - thumb_func_start CreateHeldItemIcons_806DC34 -CreateHeldItemIcons_806DC34: @ 806DC34 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - movs r7, 0 - ldr r0, _0806DCC8 @ =gSprites - mov r9, r0 - movs r1, 0x1C - add r1, r9 - mov r10, r1 -_0806DC50: - movs r0, 0x64 - muls r0, r7 - ldr r1, _0806DCCC @ =gPlayerParty - adds r0, r1 - movs r1, 0xB - bl GetMonData - cmp r0, 0 - beq _0806DCB0 - mov r0, r8 - adds r1, r7, 0 - bl GetMonIconSpriteId_maybe - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - ldr r0, _0806DCD0 @ =gSpriteTemplate_837660C - movs r1, 0xFA - movs r2, 0xAA - movs r3, 0x4 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - lsls r4, r0, 4 - adds r4, r0 - lsls r4, 2 - mov r1, r9 - adds r6, r4, r1 - movs r1, 0x4 - strh r1, [r6, 0x24] - movs r1, 0xA - strh r1, [r6, 0x26] - strh r5, [r6, 0x3C] - lsls r1, r5, 4 - adds r1, r5 - lsls r1, 2 - add r1, r9 - strh r0, [r1, 0x3C] - mov r0, r8 - adds r1, r7, 0 - bl SetHeldItemIconVisibility - add r4, r10 - ldr r1, [r4] - adds r0, r6, 0 - bl _call_via_r1 -_0806DCB0: - adds r0, r7, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 - cmp r7, 0x5 - bls _0806DC50 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0806DCC8: .4byte gSprites -_0806DCCC: .4byte gPlayerParty -_0806DCD0: .4byte gSpriteTemplate_837660C - thumb_func_end CreateHeldItemIcons_806DC34 - - thumb_func_start CreateHeldItemIcon_806DCD4 -CreateHeldItemIcon_806DCD4: @ 806DCD4 - push {r4-r7,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r1, 24 - lsls r2, 16 - lsrs r7, r2, 16 - bl GetMonIconSpriteId_maybe - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _0806DD2C @ =gSpriteTemplate_837660C - movs r1, 0xFA - movs r2, 0xAA - movs r3, 0x4 - bl CreateSprite - lsls r0, 24 - lsrs r6, r0, 24 - ldr r1, _0806DD30 @ =gSprites - lsls r0, r6, 4 - adds r0, r6 - lsls r0, 2 - adds r5, r0, r1 - movs r0, 0x4 - strh r0, [r5, 0x24] - movs r0, 0xA - strh r0, [r5, 0x26] - strh r4, [r5, 0x3C] - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - adds r0, r1 - strh r6, [r0, 0x3C] - cmp r7, 0 - bne _0806DD34 - adds r0, r5, 0 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] - b _0806DD5C - .align 2, 0 -_0806DD2C: .4byte gSpriteTemplate_837660C -_0806DD30: .4byte gSprites -_0806DD34: - adds r0, r7, 0 - bl ItemIsMail - lsls r0, 24 - cmp r0, 0 - beq _0806DD46 - adds r0, r5, 0 - movs r1, 0x1 - b _0806DD4A -_0806DD46: - adds r0, r5, 0 - movs r1, 0 -_0806DD4A: - bl StartSpriteAnim - adds r2, r5, 0 - adds r2, 0x3E - ldrb r1, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r2] -_0806DD5C: - ldr r2, _0806DD78 @ =gSprites - lsls r0, r6, 4 - adds r0, r6 - lsls r0, 2 - adds r1, r2, 0 - adds r1, 0x1C - adds r1, r0, r1 - adds r0, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0806DD78: .4byte gSprites - thumb_func_end CreateHeldItemIcon_806DCD4 - - thumb_func_start SpriteCB_HeldItemIcon_806DD7C -SpriteCB_HeldItemIcon_806DD7C: @ 806DD7C - ldrh r2, [r0, 0x3C] - lsls r2, 24 - lsrs r2, 24 - ldr r3, _0806DD9C @ =gSprites - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r1, r3 - ldrh r2, [r1, 0x24] - ldrh r3, [r1, 0x20] - adds r2, r3 - strh r2, [r0, 0x20] - ldrh r1, [r1, 0x22] - strh r1, [r0, 0x22] - bx lr - .align 2, 0 -_0806DD9C: .4byte gSprites - thumb_func_end SpriteCB_HeldItemIcon_806DD7C - - thumb_func_start GetMonIconSpriteId_maybe -GetMonIconSpriteId_maybe: @ 806DDA0 - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r1, 24 - lsrs r0, r1, 24 - cmp r0, 0x5 - bhi _0806DE38 - lsls r0, 2 - ldr r1, _0806DDB8 @ =_0806DDBC - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0806DDB8: .4byte _0806DDBC - .align 2, 0 -_0806DDBC: - .4byte _0806DE38 - .4byte _0806DDD4 - .4byte _0806DDE8 - .4byte _0806DDFC - .4byte _0806DE10 - .4byte _0806DE24 -_0806DDD4: - ldr r0, _0806DDE4 @ =gTasks - lsls r1, r2, 2 - adds r1, r2 - lsls r1, 3 - adds r1, r0 - ldrb r0, [r1, 0x8] - b _0806DE46 - .align 2, 0 -_0806DDE4: .4byte gTasks -_0806DDE8: - ldr r0, _0806DDF8 @ =gTasks - lsls r1, r2, 2 - adds r1, r2 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0xA] - b _0806DE44 - .align 2, 0 -_0806DDF8: .4byte gTasks -_0806DDFC: - ldr r0, _0806DE0C @ =gTasks - lsls r1, r2, 2 - adds r1, r2 - lsls r1, 3 - adds r1, r0 - ldrb r0, [r1, 0xA] - b _0806DE46 - .align 2, 0 -_0806DE0C: .4byte gTasks -_0806DE10: - ldr r0, _0806DE20 @ =gTasks - lsls r1, r2, 2 - adds r1, r2 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0xC] - b _0806DE44 - .align 2, 0 -_0806DE20: .4byte gTasks -_0806DE24: - ldr r0, _0806DE34 @ =gTasks - lsls r1, r2, 2 - adds r1, r2 - lsls r1, 3 - adds r1, r0 - ldrb r0, [r1, 0xC] - b _0806DE46 - .align 2, 0 -_0806DE34: .4byte gTasks -_0806DE38: - ldr r0, _0806DE4C @ =gTasks - lsls r1, r2, 2 - adds r1, r2 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x8] -_0806DE44: - lsrs r0, 8 -_0806DE46: - pop {r1} - bx r1 - .align 2, 0 -_0806DE4C: .4byte gTasks - thumb_func_end GetMonIconSpriteId_maybe - - thumb_func_start SetMonIconSpriteId_maybe -SetMonIconSpriteId_maybe: @ 806DE50 - push {r4,lr} - lsls r0, 24 - lsrs r3, r0, 24 - lsls r1, 24 - lsrs r0, r1, 24 - lsls r2, 24 - lsrs r4, r2, 24 - cmp r0, 0x5 - bhi _0806DF24 - lsls r0, 2 - ldr r1, _0806DE6C @ =_0806DE70 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0806DE6C: .4byte _0806DE70 - .align 2, 0 -_0806DE70: - .4byte _0806DE88 - .4byte _0806DEA0 - .4byte _0806DEC0 - .4byte _0806DED8 - .4byte _0806DEF8 - .4byte _0806DF10 -_0806DE88: - ldr r1, _0806DE9C @ =gTasks - lsls r0, r3, 2 - adds r0, r3 - lsls r0, 3 - adds r0, r1 - ldrb r1, [r0, 0x8] - lsls r2, r4, 8 - orrs r1, r2 - strh r1, [r0, 0x8] - b _0806DF24 - .align 2, 0 -_0806DE9C: .4byte gTasks -_0806DEA0: - ldr r0, _0806DEB8 @ =gTasks - lsls r1, r3, 2 - adds r1, r3 - lsls r1, 3 - adds r1, r0 - ldrh r2, [r1, 0x8] - ldr r0, _0806DEBC @ =0xffffff00 - ands r0, r2 - orrs r0, r4 - strh r0, [r1, 0x8] - b _0806DF24 - .align 2, 0 -_0806DEB8: .4byte gTasks -_0806DEBC: .4byte 0xffffff00 -_0806DEC0: - ldr r1, _0806DED4 @ =gTasks - lsls r0, r3, 2 - adds r0, r3 - lsls r0, 3 - adds r0, r1 - ldrb r1, [r0, 0xA] - lsls r2, r4, 8 - orrs r1, r2 - strh r1, [r0, 0xA] - b _0806DF24 - .align 2, 0 -_0806DED4: .4byte gTasks -_0806DED8: - ldr r0, _0806DEF0 @ =gTasks - lsls r1, r3, 2 - adds r1, r3 - lsls r1, 3 - adds r1, r0 - ldrh r2, [r1, 0xA] - ldr r0, _0806DEF4 @ =0xffffff00 - ands r0, r2 - orrs r0, r4 - strh r0, [r1, 0xA] - b _0806DF24 - .align 2, 0 -_0806DEF0: .4byte gTasks -_0806DEF4: .4byte 0xffffff00 -_0806DEF8: - ldr r1, _0806DF0C @ =gTasks - lsls r0, r3, 2 - adds r0, r3 - lsls r0, 3 - adds r0, r1 - ldrb r1, [r0, 0xC] - lsls r2, r4, 8 - orrs r1, r2 - strh r1, [r0, 0xC] - b _0806DF24 - .align 2, 0 -_0806DF0C: .4byte gTasks -_0806DF10: - ldr r0, _0806DF2C @ =gTasks - lsls r1, r3, 2 - adds r1, r3 - lsls r1, 3 - adds r1, r0 - ldrh r2, [r1, 0xC] - ldr r0, _0806DF30 @ =0xffffff00 - ands r0, r2 - orrs r0, r4 - strh r0, [r1, 0xC] -_0806DF24: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0806DF2C: .4byte gTasks -_0806DF30: .4byte 0xffffff00 - thumb_func_end SetMonIconSpriteId_maybe - - thumb_func_start GetHeldItemIconSpriteIdByMon_maybe -GetHeldItemIconSpriteIdByMon_maybe: @ 806DF34 - push {lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r1, 24 - bl GetMonIconSpriteId_maybe - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0806DF5C @ =gSprites - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - ldrh r0, [r1, 0x3C] - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - .align 2, 0 -_0806DF5C: .4byte gSprites - thumb_func_end GetHeldItemIconSpriteIdByMon_maybe - - thumb_func_start SetHeldItemIconVisibility -SetHeldItemIconVisibility: @ 806DF60 - push {r4-r6,lr} - adds r4, r1, 0 - lsls r0, 24 - lsrs r0, 24 - lsls r4, 24 - lsrs r4, 24 - adds r1, r4, 0 - bl GetHeldItemIconSpriteIdByMon_maybe - lsls r0, 24 - lsrs r5, r0, 24 - adds r6, r5, 0 - movs r0, 0x64 - adds r1, r4, 0 - muls r1, r0 - ldr r0, _0806DFA4 @ =gPlayerParty - adds r4, r1, r0 - adds r0, r4, 0 - movs r1, 0xC - bl GetMonData - cmp r0, 0 - bne _0806DFAC - ldr r1, _0806DFA8 @ =gSprites - lsls r0, r5, 4 - adds r0, r5 - lsls r0, 2 - adds r0, r1 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] - b _0806DFF6 - .align 2, 0 -_0806DFA4: .4byte gPlayerParty -_0806DFA8: .4byte gSprites -_0806DFAC: - adds r0, r4, 0 - movs r1, 0xC - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - bl ItemIsMail - lsls r0, 24 - cmp r0, 0 - beq _0806DFD8 - lsls r4, r5, 4 - adds r4, r5 - lsls r4, 2 - ldr r0, _0806DFD4 @ =gSprites - adds r4, r0 - adds r0, r4, 0 - movs r1, 0x1 - b _0806DFE6 - .align 2, 0 -_0806DFD4: .4byte gSprites -_0806DFD8: - lsls r4, r6, 4 - adds r4, r6 - lsls r4, 2 - ldr r0, _0806DFFC @ =gSprites - adds r4, r0 - adds r0, r4, 0 - movs r1, 0 -_0806DFE6: - bl StartSpriteAnim - adds r4, 0x3E - ldrb r1, [r4] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r4] -_0806DFF6: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0806DFFC: .4byte gSprites - thumb_func_end SetHeldItemIconVisibility - - thumb_func_start box_print -box_print: @ 806E000 - push {r4-r6,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r6, r2, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0 - str r0, [sp] - ldr r5, _0806E040 @ =gTileBuffer - ldr r2, _0806E044 @ =0x01000100 - mov r0, sp - adds r1, r5, 0 - bl CpuFastSet - ldr r0, _0806E048 @ =gWindowConfig_81E6CAC - adds r1, r5, 0 - adds r2, r6, 0 - bl sub_8004E3C - lsls r4, 10 - ldr r0, _0806E04C @ =0x06014000 - adds r4, r0 - adds r0, r5, 0 - adds r1, r4, 0 - movs r2, 0x80 - bl CpuFastSet - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0806E040: .4byte gTileBuffer -_0806E044: .4byte 0x01000100 -_0806E048: .4byte gWindowConfig_81E6CAC -_0806E04C: .4byte 0x06014000 - thumb_func_end box_print - - thumb_func_start PrintPartyMenuMonNickname -PrintPartyMenuMonNickname: @ 806E050 - push {r4,r5,lr} - sub sp, 0xC - adds r4, r0, 0 - adds r5, r1, 0 - adds r0, r2, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r5, 24 - lsrs r5, 24 - mov r1, sp - bl GetMonNickname - adds r0, r4, 0 - adds r1, r5, 0 - mov r2, sp - bl box_print - add sp, 0xC - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end PrintPartyMenuMonNickname - - thumb_func_start TryPrintPartyMenuMonNickname -TryPrintPartyMenuMonNickname: @ 806E07C - push {r4-r6,lr} - adds r4, r1, 0 - lsls r0, 24 - lsrs r5, r0, 24 - adds r6, r5, 0 - adds r0, r4, 0 - movs r1, 0xB - bl GetMonData - cmp r0, 0 - beq _0806E0BC - bl IsLinkDoubleBattle - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0806E0AA - adds r0, r5, 0 - movs r1, 0x2 - adds r2, r4, 0 - bl PrintPartyMenuMonNickname - b _0806E0BC -_0806E0AA: - bl IsDoubleBattle - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r6, 0 - adds r2, r4, 0 - bl PrintPartyMenuMonNickname -_0806E0BC: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end TryPrintPartyMenuMonNickname - - thumb_func_start PrintPartyMenuMonNicknames -PrintPartyMenuMonNicknames: @ 806E0C4 - push {r4-r6,lr} - movs r4, 0 - movs r6, 0x64 - ldr r5, _0806E0E8 @ =gPlayerParty -_0806E0CC: - adds r1, r4, 0 - muls r1, r6 - adds r1, r5 - adds r0, r4, 0 - bl TryPrintPartyMenuMonNickname - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x5 - bls _0806E0CC - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0806E0E8: .4byte gPlayerParty - thumb_func_end PrintPartyMenuMonNicknames - - thumb_func_start GetMonNickname -GetMonNickname: @ 806E0EC - push {r4,lr} - adds r4, r1, 0 - movs r1, 0x2 - adds r2, r4, 0 - bl GetMonData - adds r0, r4, 0 - bl StringGetEnd10 - pop {r4} - pop {r1} - bx r1 - thumb_func_end GetMonNickname - - thumb_func_start PartyMenuPutStatusTilemap -PartyMenuPutStatusTilemap: @ 806E104 - push {r4,r5,lr} - lsls r0, 24 - lsls r1, 24 - lsrs r1, 24 - ldr r4, _0806E15C @ =gUnknown_08376738 - lsrs r0, 22 - lsls r3, r1, 1 - adds r3, r1 - lsls r3, 3 - adds r0, r3 - adds r0, r4 - ldrb r1, [r0] - subs r1, 0x1 - lsls r1, 24 - lsrs r1, 24 - ldrb r0, [r0, 0x1] - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 19 - adds r1, r0 - lsls r1, 1 - ldr r0, _0806E160 @ =0x0600f000 - adds r4, r1, r0 - lsls r2, 26 - lsrs r2, 24 - movs r3, 0 - movs r0, 0xC6 - lsls r0, 1 - adds r2, r0 - ldr r0, _0806E164 @ =0xffffb000 - adds r5, r0, 0 -_0806E142: - lsls r0, r3, 1 - adds r0, r4 - adds r1, r2, r3 - orrs r1, r5 - strh r1, [r0] - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0x3 - bls _0806E142 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0806E15C: .4byte gUnknown_08376738 -_0806E160: .4byte 0x0600f000 -_0806E164: .4byte 0xffffb000 - thumb_func_end PartyMenuPutStatusTilemap - - thumb_func_start PartyMenuClearLevelStatusTilemap -PartyMenuClearLevelStatusTilemap: @ 806E168 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl IsLinkDoubleBattle - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0806E17E - movs r3, 0x2 - b _0806E186 -_0806E17E: - bl IsDoubleBattle - lsls r0, 24 - lsrs r3, r0, 24 -_0806E186: - ldr r1, _0806E1C8 @ =gUnknown_08376738 - lsls r2, r4, 2 - lsls r0, r3, 1 - adds r0, r3 - lsls r0, 3 - adds r2, r0 - adds r2, r1 - ldrb r1, [r2] - subs r1, 0x1 - lsls r1, 24 - lsrs r1, 24 - ldrb r0, [r2, 0x1] - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 19 - adds r1, r0 - lsls r1, 1 - ldr r0, _0806E1CC @ =0x0600f000 - adds r1, r0 - movs r3, 0 - movs r2, 0 -_0806E1B0: - lsls r0, r3, 1 - adds r0, r1 - strh r2, [r0] - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0x3 - bls _0806E1B0 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0806E1C8: .4byte gUnknown_08376738 -_0806E1CC: .4byte 0x0600f000 - thumb_func_end PartyMenuClearLevelStatusTilemap - - thumb_func_start PartyMenuWriteTilemap -PartyMenuWriteTilemap: @ 806E1D0 - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r1, 24 - lsls r2, 24 - lsrs r2, 19 - adds r1, r2 - lsls r1, 1 - ldr r2, _0806E1F0 @ =0x0600f000 - adds r1, r2 - movs r2, 0x86 - lsls r2, 1 - adds r0, r2 - strh r0, [r1] - bx lr - .align 2, 0 -_0806E1F0: .4byte 0x0600f000 - thumb_func_end PartyMenuWriteTilemap - - thumb_func_start PartyMenuDoPrintLevel -PartyMenuDoPrintLevel: @ 806E1F4 - push {r4-r6,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r2, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r1, 24 - lsrs r1, 24 - lsls r5, 24 - lsrs r5, 24 - ldr r3, _0806E278 @ =gUnknown_08376738 - lsls r2, r4, 2 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 3 - adds r2, r0 - adds r2, r3 - ldrb r1, [r2] - ldrb r2, [r2, 0x1] - subs r1, 0x1 - lsls r1, 24 - lsrs r1, 24 - adds r2, 0x1 - lsls r2, 24 - lsrs r2, 24 - movs r0, 0x40 - bl PartyMenuWriteTilemap - ldr r6, _0806E27C @ =gStringVar1 - movs r0, 0xFC - strb r0, [r6] - movs r0, 0x12 - strb r0, [r6, 0x1] - movs r0, 0x8 - strb r0, [r6, 0x2] - adds r0, r6, 0x3 - adds r1, r5, 0 - bl ConvertIntToDecimalString - movs r0, 0 - str r0, [sp] - ldr r5, _0806E280 @ =gUnknown_02039460 - ldr r2, _0806E284 @ =0x01000020 - mov r0, sp - adds r1, r5, 0 - bl CpuFastSet - ldr r0, _0806E288 @ =gWindowConfig_81E6CAC - ldr r2, _0806E28C @ =0xffffff00 - adds r1, r5, r2 - adds r2, r6, 0 - bl sub_8004E3C - lsls r4, 10 - ldr r0, _0806E290 @ =0x06014200 - adds r4, r0 - adds r0, r5, 0 - adds r1, r4, 0 - movs r2, 0x20 - bl CpuFastSet - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0806E278: .4byte gUnknown_08376738 -_0806E27C: .4byte gStringVar1 -_0806E280: .4byte gUnknown_02039460 -_0806E284: .4byte 0x01000020 -_0806E288: .4byte gWindowConfig_81E6CAC -_0806E28C: .4byte 0xffffff00 -_0806E290: .4byte 0x06014200 - thumb_func_end PartyMenuDoPrintLevel - - thumb_func_start PartyMenuPrintLevel -PartyMenuPrintLevel: @ 806E294 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - adds r0, r2, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r5, 24 - lsrs r5, 24 - movs r1, 0x38 - bl GetMonData - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl PartyMenuDoPrintLevel - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end PartyMenuPrintLevel - - thumb_func_start PartyMenuPrintMonLevelOrStatus -PartyMenuPrintMonLevelOrStatus: @ 806E2C0 - push {r4-r7,lr} - adds r5, r1, 0 - lsls r0, 24 - lsrs r7, r0, 24 - adds r0, r5, 0 - movs r1, 0xB - bl GetMonData - cmp r0, 0 - beq _0806E32E - adds r0, r5, 0 - movs r1, 0x2D - bl GetMonData - cmp r0, 0 - bne _0806E32E - adds r0, r5, 0 - bl GetMonStatusAndPokerus - lsls r0, 24 - lsrs r4, r0, 24 - bl IsLinkDoubleBattle - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0806E2FA - movs r6, 0x2 - b _0806E302 -_0806E2FA: - bl IsDoubleBattle - lsls r0, 24 - lsrs r6, r0, 24 -_0806E302: - cmp r4, 0 - beq _0806E31A - cmp r4, 0x6 - beq _0806E31A - subs r2, r4, 0x1 - lsls r2, 24 - lsrs r2, 24 - adds r0, r7, 0 - adds r1, r6, 0 - bl PartyMenuPutStatusTilemap - b _0806E324 -_0806E31A: - adds r0, r7, 0 - adds r1, r6, 0 - adds r2, r5, 0 - bl PartyMenuPrintLevel -_0806E324: - adds r0, r7, 0 - adds r1, r6, 0 - adds r2, r5, 0 - bl PartyMenuPutNicknameTilemap -_0806E32E: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end PartyMenuPrintMonLevelOrStatus - - thumb_func_start PartyMenuPrintMonsLevelOrStatus -PartyMenuPrintMonsLevelOrStatus: @ 806E334 - push {r4-r6,lr} - movs r4, 0 - movs r6, 0x64 - ldr r5, _0806E358 @ =gPlayerParty -_0806E33C: - adds r1, r4, 0 - muls r1, r6 - adds r1, r5 - adds r0, r4, 0 - bl PartyMenuPrintMonLevelOrStatus - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x5 - bls _0806E33C - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0806E358: .4byte gPlayerParty - thumb_func_end PartyMenuPrintMonsLevelOrStatus - - thumb_func_start PartyMenuDoPutNicknameTilemap -PartyMenuDoPutNicknameTilemap: @ 806E35C - push {r4-r7,lr} - ldr r4, [sp, 0x14] - lsls r0, 16 - lsrs r0, 16 - lsls r1, 24 - lsrs r7, r1, 24 - lsls r2, 24 - lsrs r5, r2, 24 - lsls r3, 24 - lsrs r6, r3, 24 - adds r1, r4, 0 - bl sub_8040D8C - cmp r0, 0 - bne _0806E3BA - ldr r2, _0806E3A4 @ =gUnknown_08376738 - lsls r1, r6, 2 - lsls r0, r5, 1 - adds r0, r5 - lsls r0, 3 - adds r1, r0 - adds r1, r2 - ldrb r0, [r1] - adds r0, 0x3 - lsls r0, 24 - lsrs r3, r0, 24 - ldrb r0, [r1, 0x1] - adds r0, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r7, 0 - beq _0806E3A8 - cmp r7, 0xFE - beq _0806E3B2 - b _0806E3BA - .align 2, 0 -_0806E3A4: .4byte gUnknown_08376738 -_0806E3A8: - movs r0, 0x42 - adds r1, r3, 0 - bl PartyMenuWriteTilemap - b _0806E3BA -_0806E3B2: - movs r0, 0x44 - adds r1, r3, 0 - bl PartyMenuWriteTilemap -_0806E3BA: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end PartyMenuDoPutNicknameTilemap - - thumb_func_start PartyMenuPutNicknameTilemap -PartyMenuPutNicknameTilemap: @ 806E3C0 - push {r4-r6,lr} - mov r6, r9 - mov r5, r8 - push {r5,r6} - sub sp, 0x4 - mov r8, r0 - adds r6, r1, 0 - adds r5, r2, 0 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - lsls r6, 24 - lsrs r6, 24 - ldr r0, _0806E41C @ =gStringVar1 - mov r9, r0 - adds r0, r5, 0 - mov r1, r9 - bl GetMonNickname - adds r0, r5, 0 - movs r1, 0x41 - bl GetMonData - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r5, 0 - bl GetMonGender - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - mov r0, r9 - str r0, [sp] - adds r0, r4, 0 - adds r2, r6, 0 - mov r3, r8 - bl PartyMenuDoPutNicknameTilemap - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0806E41C: .4byte gStringVar1 - thumb_func_end PartyMenuPutNicknameTilemap - - thumb_func_start PartyMenuDoPrintHP -PartyMenuDoPrintHP: @ 806E420 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r1, r2, 0 - adds r5, r3, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r1, 16 - lsrs r1, 16 - lsls r5, 16 - lsrs r5, 16 - ldr r2, _0806E48C @ =gStringVar1 - adds r0, r2, 0 - movs r2, 0xF - movs r3, 0x1 - bl sub_8072C14 - adds r2, r0, 0 - movs r0, 0xBA - strb r0, [r2] - adds r2, 0x1 - adds r0, r2, 0 - adds r1, r5, 0 - movs r2, 0x23 - movs r3, 0x1 - bl sub_8072C14 - movs r0, 0 - str r0, [sp] - ldr r5, _0806E490 @ =gUnknown_02039460 - ldr r2, _0806E494 @ =0x01000040 - mov r0, sp - adds r1, r5, 0 - bl CpuFastSet - ldr r0, _0806E498 @ =gWindowConfig_81E6CAC - ldr r2, _0806E49C @ =0xffffff00 - adds r1, r5, r2 - ldr r2, _0806E48C @ =gStringVar1 - bl sub_8004E3C - lsls r4, 10 - ldr r0, _0806E4A0 @ =0x06014300 - adds r4, r0 - adds r0, r5, 0 - adds r1, r4, 0 - movs r2, 0x40 - bl CpuFastSet - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0806E48C: .4byte gStringVar1 -_0806E490: .4byte gUnknown_02039460 -_0806E494: .4byte 0x01000040 -_0806E498: .4byte gWindowConfig_81E6CAC -_0806E49C: .4byte 0xffffff00 -_0806E4A0: .4byte 0x06014300 - thumb_func_end PartyMenuDoPrintHP - - thumb_func_start PartyMenuPrintHP -PartyMenuPrintHP: @ 806E4A4 - push {r4-r6,lr} - mov r6, r8 - push {r6} - adds r5, r0, 0 - adds r6, r1, 0 - mov r8, r2 - lsls r5, 24 - lsrs r5, 24 - lsls r6, 24 - lsrs r6, 24 - mov r0, r8 - movs r1, 0x39 - bl GetMonData - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - mov r0, r8 - movs r1, 0x3A - bl GetMonData - adds r3, r0, 0 - lsls r3, 16 - lsrs r3, 16 - adds r0, r5, 0 - adds r1, r6, 0 - adds r2, r4, 0 - bl PartyMenuDoPrintHP - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end PartyMenuPrintHP - - thumb_func_start PartyMenuTryPrintHP -PartyMenuTryPrintHP: @ 806E4E8 - push {r4-r6,lr} - adds r4, r1, 0 - lsls r0, 24 - lsrs r5, r0, 24 - adds r6, r5, 0 - adds r0, r4, 0 - movs r1, 0xB - bl GetMonData - cmp r0, 0 - beq _0806E534 - adds r0, r4, 0 - movs r1, 0x2D - bl GetMonData - cmp r0, 0 - bne _0806E534 - bl IsLinkDoubleBattle - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0806E522 - adds r0, r5, 0 - movs r1, 0x2 - adds r2, r4, 0 - bl PartyMenuPrintHP - b _0806E534 -_0806E522: - bl IsDoubleBattle - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r6, 0 - adds r2, r4, 0 - bl PartyMenuPrintHP -_0806E534: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end PartyMenuTryPrintHP - - thumb_func_start PartyMenuTryPrintMonsHP -PartyMenuTryPrintMonsHP: @ 806E53C - push {r4-r6,lr} - movs r4, 0 - movs r6, 0x64 - ldr r5, _0806E560 @ =gPlayerParty -_0806E544: - adds r1, r4, 0 - muls r1, r6 - adds r1, r5 - adds r0, r4, 0 - bl PartyMenuTryPrintHP - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x5 - bls _0806E544 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0806E560: .4byte gPlayerParty - thumb_func_end PartyMenuTryPrintMonsHP - - thumb_func_start unref_sub_806E564 -unref_sub_806E564: @ 806E564 - bx lr - thumb_func_end unref_sub_806E564 - - thumb_func_start unref_sub_806E568 -unref_sub_806E568: @ 806E568 - bx lr - thumb_func_end unref_sub_806E568 - - thumb_func_start nullsub_12 -nullsub_12: @ 806E56C - bx lr - thumb_func_end nullsub_12 - - thumb_func_start nullsub_13 -nullsub_13: @ 806E570 - bx lr - thumb_func_end nullsub_13 - - thumb_func_start PartyMenuDoDrawHPBar -PartyMenuDoDrawHPBar: @ 806E574 - push {r4-r6,lr} - sub sp, 0x18 - lsls r0, 24 - lsrs r6, r0, 24 - lsls r1, 24 - lsrs r5, r1, 24 - lsls r2, 16 - lsrs r2, 16 - lsls r3, 16 - lsrs r3, 16 - ldr r0, _0806E624 @ =0xffff8000 - str r0, [sp, 0x14] - str r3, [sp] - str r2, [sp, 0x4] - movs r0, 0 - str r0, [sp, 0x8] - lsls r2, 16 - asrs r2, 16 - lsls r3, 16 - asrs r3, 16 - adds r0, r2, 0 - adds r1, r3, 0 - bl GetHPBarLevel - lsls r0, 24 - lsrs r3, r0, 24 - adds r4, r3, 0 - cmp r3, 0x2 - bls _0806E5BE - mov r2, sp - ldrb r1, [r2, 0xC] - movs r0, 0x20 - negs r0, r0 - ands r0, r1 - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2, 0xC] -_0806E5BE: - cmp r3, 0x2 - bne _0806E5D2 - mov r2, sp - ldrb r1, [r2, 0xC] - movs r0, 0x20 - negs r0, r0 - ands r0, r1 - movs r1, 0x5 - orrs r0, r1 - strb r0, [r2, 0xC] -_0806E5D2: - cmp r4, 0x1 - bhi _0806E5E6 - mov r2, sp - ldrb r1, [r2, 0xC] - movs r0, 0x20 - negs r0, r0 - ands r0, r1 - movs r1, 0x6 - orrs r0, r1 - strb r0, [r2, 0xC] -_0806E5E6: - movs r0, 0x80 - lsls r0, 1 - str r0, [sp, 0x10] - ldr r2, _0806E628 @ =gUnknown_08376858 - lsls r1, r6, 2 - lsls r0, r5, 1 - adds r0, r5 - lsls r0, 3 - adds r1, r0 - adds r1, r2 - ldr r4, [r1] - add r1, sp, 0x14 - mov r0, sp - adds r2, r4, 0 - movs r3, 0 - bl sub_80460C8 - subs r4, 0x4 - ldr r1, _0806E62C @ =0x00003109 - adds r0, r1, 0 - strh r0, [r4] - adds r1, 0x1 - adds r0, r1, 0 - strh r0, [r4, 0x2] - adds r1, 0x1 - adds r0, r1, 0 - strh r0, [r4, 0x10] - add sp, 0x18 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0806E624: .4byte 0xffff8000 -_0806E628: .4byte gUnknown_08376858 -_0806E62C: .4byte 0x00003109 - thumb_func_end PartyMenuDoDrawHPBar - - thumb_func_start PartyMenuDrawHPBar -PartyMenuDrawHPBar: @ 806E630 - push {r4-r6,lr} - mov r6, r8 - push {r6} - adds r5, r0, 0 - adds r6, r1, 0 - mov r8, r2 - lsls r5, 24 - lsrs r5, 24 - lsls r6, 24 - lsrs r6, 24 - mov r0, r8 - movs r1, 0x39 - bl GetMonData - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - mov r0, r8 - movs r1, 0x3A - bl GetMonData - adds r3, r0, 0 - lsls r3, 16 - lsrs r3, 16 - adds r0, r5, 0 - adds r1, r6, 0 - adds r2, r4, 0 - bl PartyMenuDoDrawHPBar - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end PartyMenuDrawHPBar - - thumb_func_start PartyMenuTryDrawHPBar -PartyMenuTryDrawHPBar: @ 806E674 - push {r4-r6,lr} - adds r4, r1, 0 - lsls r0, 24 - lsrs r5, r0, 24 - adds r6, r5, 0 - adds r0, r4, 0 - movs r1, 0xB - bl GetMonData - cmp r0, 0 - beq _0806E6C0 - adds r0, r4, 0 - movs r1, 0x2D - bl GetMonData - cmp r0, 0 - bne _0806E6C0 - bl IsLinkDoubleBattle - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0806E6AE - adds r0, r5, 0 - movs r1, 0x2 - adds r2, r4, 0 - bl PartyMenuDrawHPBar - b _0806E6C0 -_0806E6AE: - bl IsDoubleBattle - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r6, 0 - adds r2, r4, 0 - bl PartyMenuDrawHPBar -_0806E6C0: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end PartyMenuTryDrawHPBar - - thumb_func_start PartyMenuDrawHPBars -PartyMenuDrawHPBars: @ 806E6C8 - push {r4-r6,lr} - movs r4, 0 - movs r6, 0x64 - ldr r5, _0806E6EC @ =gPlayerParty -_0806E6D0: - adds r1, r4, 0 - muls r1, r6 - adds r1, r5 - adds r0, r4, 0 - bl PartyMenuTryDrawHPBar - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x5 - bls _0806E6D0 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0806E6EC: .4byte gPlayerParty - thumb_func_end PartyMenuDrawHPBars - - thumb_func_start sub_806E6F0 -sub_806E6F0: @ 806E6F0 - push {r4,r5,lr} - sub sp, 0x64 - adds r4, r0, 0 - adds r5, r1, 0 - mov r0, sp - adds r1, r4, 0 - movs r2, 0x64 - bl memcpy - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x64 - bl memcpy - adds r0, r5, 0 - mov r1, sp - movs r2, 0x64 - bl memcpy - add sp, 0x64 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_806E6F0 - - thumb_func_start sub_806E720 -sub_806E720: @ 806E720 - push {r4,lr} - lsls r0, 24 - lsrs r0, 21 - adds r0, r3 - ldrb r4, [r0] - lsls r4, 25 - movs r3, 0x80 - lsls r3, 18 - adds r4, r3 - lsrs r4, 24 - ldrb r0, [r0, 0x1] - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - movs r3, 0x1E - subs r3, r0 - strb r3, [r1] - movs r0, 0x14 - subs r0, r4 - strb r0, [r2] - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_806E720 - - thumb_func_start sub_806E750 -sub_806E750: @ 806E750 - push {r4-r6,lr} - mov r6, r9 - mov r5, r8 - push {r5,r6} - sub sp, 0xC - adds r5, r0, 0 - adds r4, r1, 0 - mov r9, r2 - adds r6, r3, 0 - lsls r5, 24 - lsrs r5, 24 - lsls r6, 24 - lsrs r6, 24 - movs r0, 0x9 - add r0, sp - mov r8, r0 - adds r0, r5, 0 - add r1, sp, 0x8 - mov r2, r8 - adds r3, r4, 0 - bl sub_806E720 - add r0, sp, 0x8 - ldrb r0, [r0] - mov r2, r8 - ldrb r1, [r2] - lsls r5, 3 - adds r5, r4 - ldrb r2, [r5, 0x1] - ldrb r3, [r5] - mov r4, r9 - str r4, [sp] - ldr r4, [r5, 0x4] - str r4, [sp, 0x4] - bl sub_8089C50 - add r0, sp, 0x8 - ldrb r1, [r0] - adds r1, 0x1 - lsls r1, 24 - lsrs r1, 24 - mov r0, r8 - ldrb r2, [r0] - adds r2, 0x1 - lsls r2, 24 - lsrs r2, 24 - ldrb r3, [r5] - str r6, [sp] - ldrb r0, [r5, 0x1] - subs r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - str r0, [sp, 0x4] - movs r0, 0 - bl InitMenu - add sp, 0xC - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_806E750 - - thumb_func_start sub_806E7D0 -sub_806E7D0: @ 806E7D0 - push {r4-r6,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r6, r1, 0 - lsls r4, 24 - lsrs r4, 24 - mov r5, sp - adds r5, 0x1 - adds r0, r4, 0 - mov r1, sp - adds r2, r5, 0 - adds r3, r6, 0 - bl sub_806E720 - mov r0, sp - ldrb r0, [r0] - ldrb r1, [r5] - lsls r4, 3 - adds r4, r6 - ldrb r2, [r4, 0x1] - adds r2, r0, r2 - lsls r2, 24 - lsrs r2, 24 - ldrb r3, [r4] - lsls r3, 1 - adds r3, r1, r3 - adds r3, 0x1 - lsls r3, 24 - lsrs r3, 24 - bl MenuZeroFillWindowRect - bl HandleDestroyMenuCursors - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_806E7D0 - - thumb_func_start PartyMenuGetPopupMenuFunc -PartyMenuGetPopupMenuFunc: @ 806E81C - lsls r0, 24 - lsls r3, 24 - lsrs r3, 24 - lsrs r0, 21 - adds r0, r1 - ldr r0, [r0, 0x4] - adds r0, r3 - ldrb r0, [r0] - lsls r0, 3 - adds r0, r2 - ldr r0, [r0, 0x4] - bx lr - thumb_func_end PartyMenuGetPopupMenuFunc - - .section .text_8070968 - - thumb_func_start sub_8070968 -sub_8070968: @ 8070968 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - movs r7, 0 - ldr r0, _08070A10 @ =0x0201c000 - mov r9, r0 - ldr r1, _08070A14 @ =0xfffff264 - add r1, r9 - mov r10, r1 - ldr r0, _08070A18 @ =gStringVar1 - mov r8, r0 -_08070982: - mov r1, r9 - ldr r0, [r1] - ldr r1, _08070A1C @ =gUnknown_08376D1C - adds r1, r7, r1 - ldrb r1, [r1] - bl GetMonData - adds r6, r7, 0x6 - lsls r6, 1 - add r6, r10 - strh r0, [r6] - adds r0, r7, 0 - movs r1, 0x3 - bl __udivsi3 - lsls r0, 24 - lsrs r0, 24 - lsls r4, r0, 3 - adds r4, r0 - adds r4, 0xB - lsls r4, 24 - lsrs r4, 24 - adds r0, r7, 0 - movs r1, 0x3 - bl __umodsi3 - adds r5, r0, 0 - lsls r5, 1 - adds r5, 0x1 - lsls r5, 24 - lsrs r5, 24 - movs r0, 0xFC - mov r1, r8 - strb r0, [r1] - movs r0, 0x14 - strb r0, [r1, 0x1] - movs r0, 0x6 - strb r0, [r1, 0x2] - movs r0, 0 - ldrsh r1, [r6, r0] - mov r0, r8 - adds r0, 0x3 - movs r2, 0x1 - movs r3, 0x3 - bl ConvertIntToDecimalStringN - adds r4, 0x6 - lsls r4, 3 - adds r4, 0x6 - lsls r4, 24 - lsrs r4, 24 - lsls r5, 3 - mov r0, r8 - adds r1, r4, 0 - adds r2, r5, 0 - movs r3, 0 - bl MenuPrint_PixelCoords - adds r0, r7, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 - cmp r7, 0x5 - bls _08070982 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08070A10: .4byte 0x0201c000 -_08070A14: .4byte 0xfffff264 -_08070A18: .4byte gStringVar1 -_08070A1C: .4byte gUnknown_08376D1C - thumb_func_end sub_8070968 - - thumb_func_start sub_8070A20 -sub_8070A20: @ 8070A20 - push {r4-r7,lr} - adds r6, r1, 0 - lsls r0, 24 - lsrs r7, r0, 24 - adds r0, r6, 0 - bl GetMonStatusAndPokerus - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - beq _08070A3A - cmp r0, 0x6 - bne _08070A42 -_08070A3A: - adds r0, r6, 0 - adds r1, r7, 0 - bl PartyMenuUpdateLevelOrStatus -_08070A42: - bl IsDoubleBattle - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - adds r0, r6, 0 - movs r1, 0x39 - bl GetMonData - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r6, 0 - movs r1, 0x3A - bl GetMonData - adds r3, r0, 0 - lsls r3, 16 - lsrs r3, 16 - adds r0, r7, 0 - adds r1, r5, 0 - adds r2, r4, 0 - bl PartyMenuDoPrintHP - adds r0, r7, 0 - adds r1, r6, 0 - bl PartyMenuTryDrawHPBar - ldr r4, _08070ABC @ =0x0201c000 - ldrb r0, [r4, 0x4] - adds r1, r7, 0 - bl GetMonIconSpriteId_maybe - lsls r0, 24 - lsrs r0, 24 - adds r1, r6, 0 - bl SetMonIconAnim - bl IsDoubleBattle - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - lsls r1, r7, 1 - adds r0, r1 - ldr r1, _08070AC0 @ =gUnknown_083769A8 - adds r0, r1 - movs r1, 0x7 - bl task_pc_turn_off - ldr r0, _08070AC4 @ =0xfffff261 - adds r4, r0 - movs r0, 0x2 - strb r0, [r4] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08070ABC: .4byte 0x0201c000 -_08070AC0: .4byte gUnknown_083769A8 -_08070AC4: .4byte 0xfffff261 - thumb_func_end sub_8070A20 - - thumb_func_start Task_RareCandy3 -Task_RareCandy3: @ 8070AC8 - push {r4-r7,lr} - lsls r0, 24 - lsrs r6, r0, 24 - movs r0, 0 - bl WaitFanfare - lsls r0, 24 - cmp r0, 0 - bne _08070ADC - b _08070C2C -_08070ADC: - ldr r0, _08070B24 @ =gMain - ldrh r1, [r0, 0x2E] - movs r5, 0x1 - adds r0, r5, 0 - ands r0, r1 - cmp r0, 0 - bne _08070AF4 - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _08070AF4 - b _08070C2C -_08070AF4: - movs r0, 0xB - movs r1, 0 - movs r2, 0x1D - movs r3, 0x7 - bl MenuZeroFillWindowRect - ldr r7, _08070B28 @ =0x0201c000 - ldr r0, [r7] - movs r1, 0x1 - bl sub_803B7C8 - lsls r0, 16 - lsrs r4, r0, 16 - ldr r1, _08070B2C @ =0xfffff282 - adds r0, r7, r1 - strh r5, [r0] - ldr r0, _08070B30 @ =0x0000fffe - cmp r4, r0 - beq _08070BDC - cmp r4, r0 - bgt _08070B34 - cmp r4, 0 - beq _08070B40 - b _08070BF4 - .align 2, 0 -_08070B24: .4byte gMain -_08070B28: .4byte 0x0201c000 -_08070B2C: .4byte 0xfffff282 -_08070B30: .4byte 0x0000fffe -_08070B34: - ldr r0, _08070B3C @ =0x0000ffff - cmp r4, r0 - beq _08070B7C - b _08070BF4 - .align 2, 0 -_08070B3C: .4byte 0x0000ffff -_08070B40: - ldr r0, [r7] - movs r1, 0 - movs r2, 0 - bl GetEvolutionTargetSpecies - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, 0 - beq _08070B74 - ldr r1, _08070B6C @ =gUnknown_03005E94 - ldr r0, _08070B70 @ =sub_80A53F8 - str r0, [r1] - ldr r0, [r7] - ldrb r3, [r7, 0x5] - adds r1, r2, 0 - movs r2, 0x1 - bl BeginEvolutionScene - adds r0, r6, 0 - bl DestroyTask - b _08070C2C - .align 2, 0 -_08070B6C: .4byte gUnknown_03005E94 -_08070B70: .4byte sub_80A53F8 -_08070B74: - adds r0, r6, 0 - bl sub_8070D90 - b _08070C2C -_08070B7C: - ldr r0, [r7] - ldr r1, _08070BBC @ =gStringVar1 - bl GetMonNickname - ldr r0, _08070BC0 @ =gStringVar2 - ldr r5, _08070BC4 @ =word_2024E82 - ldrh r2, [r5] - movs r1, 0xD - muls r1, r2 - ldr r2, _08070BC8 @ =gMoveNames - adds r1, r2 - bl StringCopy - ldr r4, _08070BCC @ =gStringVar4 - ldr r1, _08070BD0 @ =gOtherText_WantsToLearn - adds r0, r4, 0 - bl StringExpandPlaceholders - adds r0, r4, 0 - movs r1, 0x1 - bl sub_806E834 - ldrh r0, [r5] - strh r0, [r7, 0x8] - ldr r1, _08070BD4 @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r0, r1 - ldr r1, _08070BD8 @ =sub_806F358 - b _08070C2A - .align 2, 0 -_08070BBC: .4byte gStringVar1 -_08070BC0: .4byte gStringVar2 -_08070BC4: .4byte word_2024E82 -_08070BC8: .4byte gMoveNames -_08070BCC: .4byte gStringVar4 -_08070BD0: .4byte gOtherText_WantsToLearn -_08070BD4: .4byte gTasks -_08070BD8: .4byte sub_806F358 -_08070BDC: - ldr r0, _08070BEC @ =gTasks - lsls r1, r6, 2 - adds r1, r6 - lsls r1, 3 - adds r1, r0 - ldr r0, _08070BF0 @ =sub_8070C54 - str r0, [r1] - b _08070C2C - .align 2, 0 -_08070BEC: .4byte gTasks -_08070BF0: .4byte sub_8070C54 -_08070BF4: - ldr r0, _08070C34 @ =0x0201c000 - ldr r0, [r0] - ldr r1, _08070C38 @ =gStringVar1 - bl GetMonNickname - ldr r0, _08070C3C @ =gStringVar2 - movs r1, 0xD - muls r1, r4 - ldr r2, _08070C40 @ =gMoveNames - adds r1, r2 - bl StringCopy - ldr r4, _08070C44 @ =gStringVar4 - ldr r1, _08070C48 @ =gOtherText_LearnedMove - adds r0, r4, 0 - bl StringExpandPlaceholders - adds r0, r4, 0 - movs r1, 0x1 - bl sub_806E834 - ldr r1, _08070C4C @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r0, r1 - ldr r1, _08070C50 @ =Task_TeamMonTMMove3 -_08070C2A: - str r1, [r0] -_08070C2C: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08070C34: .4byte 0x0201c000 -_08070C38: .4byte gStringVar1 -_08070C3C: .4byte gStringVar2 -_08070C40: .4byte gMoveNames -_08070C44: .4byte gStringVar4 -_08070C48: .4byte gOtherText_LearnedMove -_08070C4C: .4byte gTasks -_08070C50: .4byte Task_TeamMonTMMove3 - thumb_func_end Task_RareCandy3 - - thumb_func_start sub_8070C54 -sub_8070C54: @ 8070C54 - push {r4-r7,lr} - lsls r0, 24 - lsrs r6, r0, 24 - ldr r7, _08070C78 @ =0x0201c000 - ldr r0, [r7] - movs r1, 0 - bl sub_803B7C8 - lsls r0, 16 - lsrs r4, r0, 16 - ldr r0, _08070C7C @ =0x0000fffe - cmp r4, r0 - beq _08070D28 - cmp r4, r0 - bgt _08070C80 - cmp r4, 0 - beq _08070C8C - b _08070D30 - .align 2, 0 -_08070C78: .4byte 0x0201c000 -_08070C7C: .4byte 0x0000fffe -_08070C80: - ldr r0, _08070C88 @ =0x0000ffff - cmp r4, r0 - beq _08070CC8 - b _08070D30 - .align 2, 0 -_08070C88: .4byte 0x0000ffff -_08070C8C: - ldr r0, [r7] - movs r1, 0 - movs r2, 0 - bl GetEvolutionTargetSpecies - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, 0 - beq _08070CC0 - ldr r1, _08070CB8 @ =gUnknown_03005E94 - ldr r0, _08070CBC @ =sub_80A53F8 - str r0, [r1] - ldr r0, [r7] - ldrb r3, [r7, 0x5] - adds r1, r2, 0 - movs r2, 0x1 - bl BeginEvolutionScene - adds r0, r6, 0 - bl DestroyTask - b _08070D68 - .align 2, 0 -_08070CB8: .4byte gUnknown_03005E94 -_08070CBC: .4byte sub_80A53F8 -_08070CC0: - adds r0, r6, 0 - bl sub_8070D90 - b _08070D68 -_08070CC8: - ldr r0, [r7] - ldr r1, _08070D08 @ =gStringVar1 - bl GetMonNickname - ldr r0, _08070D0C @ =gStringVar2 - ldr r5, _08070D10 @ =word_2024E82 - ldrh r2, [r5] - movs r1, 0xD - muls r1, r2 - ldr r2, _08070D14 @ =gMoveNames - adds r1, r2 - bl StringCopy - ldr r4, _08070D18 @ =gStringVar4 - ldr r1, _08070D1C @ =gOtherText_WantsToLearn - adds r0, r4, 0 - bl StringExpandPlaceholders - adds r0, r4, 0 - movs r1, 0x1 - bl sub_806E834 - ldrh r0, [r5] - strh r0, [r7, 0x8] - ldr r1, _08070D20 @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r0, r1 - ldr r1, _08070D24 @ =sub_806F358 - b _08070D66 - .align 2, 0 -_08070D08: .4byte gStringVar1 -_08070D0C: .4byte gStringVar2 -_08070D10: .4byte word_2024E82 -_08070D14: .4byte gMoveNames -_08070D18: .4byte gStringVar4 -_08070D1C: .4byte gOtherText_WantsToLearn -_08070D20: .4byte gTasks -_08070D24: .4byte sub_806F358 -_08070D28: - adds r0, r6, 0 - bl sub_8070C54 - b _08070D68 -_08070D30: - ldr r0, _08070D70 @ =0x0201c000 - ldr r0, [r0] - ldr r1, _08070D74 @ =gStringVar1 - bl GetMonNickname - ldr r0, _08070D78 @ =gStringVar2 - movs r1, 0xD - muls r1, r4 - ldr r2, _08070D7C @ =gMoveNames - adds r1, r2 - bl StringCopy - ldr r4, _08070D80 @ =gStringVar4 - ldr r1, _08070D84 @ =gOtherText_LearnedMove - adds r0, r4, 0 - bl StringExpandPlaceholders - adds r0, r4, 0 - movs r1, 0x1 - bl sub_806E834 - ldr r1, _08070D88 @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r0, r1 - ldr r1, _08070D8C @ =Task_TeamMonTMMove3 -_08070D66: - str r1, [r0] -_08070D68: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08070D70: .4byte 0x0201c000 -_08070D74: .4byte gStringVar1 -_08070D78: .4byte gStringVar2 -_08070D7C: .4byte gMoveNames -_08070D80: .4byte gStringVar4 -_08070D84: .4byte gOtherText_LearnedMove -_08070D88: .4byte gTasks -_08070D8C: .4byte Task_TeamMonTMMove3 - thumb_func_end sub_8070C54 - - thumb_func_start sub_8070D90 -sub_8070D90: @ 8070D90 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r4, _08070DB4 @ =gTasks - ldr r3, _08070DB8 @ =0x0201c000 - ldrb r2, [r3, 0x4] - lsls r1, r2, 2 - adds r1, r2 - lsls r1, 3 - adds r1, r4 - ldr r2, [r3, 0x10] - str r2, [r1] - bl DestroyTask - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08070DB4: .4byte gTasks -_08070DB8: .4byte 0x0201c000 - thumb_func_end sub_8070D90 - - thumb_func_start DoEvolutionStoneItemEffect -DoEvolutionStoneItemEffect: @ 8070DBC - push {r4-r6,lr} - adds r4, r0, 0 - adds r5, r2, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r1, 16 - lsrs r6, r1, 16 - movs r0, 0x5 - bl PlaySE - ldr r1, _08070E18 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _08070E1C @ =TaskDummy - str r1, [r0] - adds r0, r4, 0 - adds r1, r6, 0 - adds r2, r5, 0 - bl sub_806E8D0 - ldr r1, _08070E20 @ =gUnknown_03005E94 - ldr r0, _08070E24 @ =sub_80A53F8 - str r0, [r1] - ldr r0, _08070E28 @ =0x0201c000 - ldrb r0, [r0, 0x5] - adds r1, r6, 0 - movs r2, 0 - bl ExecuteTableBasedItemEffect__ - lsls r0, 24 - cmp r0, 0 - beq _08070E38 - ldr r1, _08070E2C @ =gUnknown_0202E8F4 - movs r0, 0 - strb r0, [r1] - ldr r0, _08070E30 @ =gOtherText_WontHaveAnyEffect - movs r1, 0x1 - bl sub_806E834 - ldr r0, _08070E34 @ =sub_806FB0C - movs r1, 0x5 - bl CreateTask - b _08070E40 - .align 2, 0 -_08070E18: .4byte gTasks -_08070E1C: .4byte TaskDummy -_08070E20: .4byte gUnknown_03005E94 -_08070E24: .4byte sub_80A53F8 -_08070E28: .4byte 0x0201c000 -_08070E2C: .4byte gUnknown_0202E8F4 -_08070E30: .4byte gOtherText_WontHaveAnyEffect -_08070E34: .4byte sub_806FB0C -_08070E38: - adds r0, r6, 0 - movs r1, 0x1 - bl RemoveBagItem -_08070E40: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end DoEvolutionStoneItemEffect - - thumb_func_start GetItemEffectType -GetItemEffectType: @ 8070E48 - push {r4,r5,lr} - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0xAF - bne _08070E5C - ldr r4, _08070E58 @ =gSaveBlock1 + 0x3676 - b _08070E66 - .align 2, 0 -_08070E58: .4byte gSaveBlock1 + 0x3676 -_08070E5C: - ldr r1, _08070E8C @ =gItemEffectTable - subs r0, 0xD - lsls r0, 2 - adds r0, r1 - ldr r4, [r0] -_08070E66: - ldrb r1, [r4] - movs r5, 0x3F - adds r0, r5, 0 - ands r0, r1 - cmp r0, 0 - bne _08070E88 - ldrb r0, [r4, 0x1] - cmp r0, 0 - bne _08070E88 - ldrb r0, [r4, 0x2] - cmp r0, 0 - bne _08070E88 - ldrb r3, [r4, 0x3] - movs r0, 0x80 - ands r0, r3 - cmp r0, 0 - beq _08070E90 -_08070E88: - movs r0, 0 - b _08070F8A - .align 2, 0 -_08070E8C: .4byte gItemEffectTable -_08070E90: - movs r2, 0x40 - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - beq _08070E9E - movs r0, 0xA - b _08070F8A -_08070E9E: - adds r0, r2, 0 - ands r0, r3 - cmp r0, 0 - beq _08070EAA - movs r0, 0x1 - b _08070F8A -_08070EAA: - adds r2, r5, 0 - ands r2, r3 - cmp r2, 0 - bne _08070EB8 - lsrs r0, r1, 7 - cmp r0, 0 - beq _08070EFA -_08070EB8: - cmp r2, 0x20 - bne _08070EC0 - movs r0, 0x4 - b _08070F8A -_08070EC0: - cmp r2, 0x10 - bne _08070EC8 - movs r0, 0x3 - b _08070F8A -_08070EC8: - cmp r2, 0x8 - bne _08070ED0 - movs r0, 0x5 - b _08070F8A -_08070ED0: - cmp r2, 0x4 - bne _08070ED8 - movs r0, 0x6 - b _08070F8A -_08070ED8: - cmp r2, 0x2 - bne _08070EE0 - movs r0, 0x7 - b _08070F8A -_08070EE0: - cmp r2, 0x1 - bne _08070EE8 - movs r0, 0x8 - b _08070F8A -_08070EE8: - lsrs r0, r1, 7 - cmp r0, 0 - beq _08070EF6 - cmp r2, 0 - bne _08070EF6 - movs r0, 0x9 - b _08070F8A -_08070EF6: - movs r0, 0xB - b _08070F8A -_08070EFA: - ldrb r1, [r4, 0x4] - movs r0, 0x44 - ands r0, r1 - adds r2, r1, 0 - cmp r0, 0 - beq _08070F0A - movs r0, 0x2 - b _08070F8A -_08070F0A: - movs r5, 0x2 - adds r0, r5, 0 - ands r0, r2 - cmp r0, 0 - beq _08070F18 - movs r0, 0xC - b _08070F8A -_08070F18: - movs r3, 0x1 - adds r0, r3, 0 - ands r0, r2 - cmp r0, 0 - beq _08070F26 - movs r0, 0xD - b _08070F8A -_08070F26: - ldrb r1, [r4, 0x5] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _08070F34 - movs r0, 0xE - b _08070F8A -_08070F34: - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _08070F40 - movs r0, 0xF - b _08070F8A -_08070F40: - adds r0, r5, 0 - ands r0, r1 - cmp r0, 0 - beq _08070F4C - movs r0, 0x10 - b _08070F8A -_08070F4C: - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - beq _08070F58 - movs r0, 0x11 - b _08070F8A -_08070F58: - movs r0, 0x80 - ands r0, r2 - cmp r0, 0 - beq _08070F64 - movs r0, 0x12 - b _08070F8A -_08070F64: - movs r0, 0x20 - ands r0, r2 - cmp r0, 0 - beq _08070F70 - movs r0, 0x13 - b _08070F8A -_08070F70: - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _08070F7C - movs r0, 0x14 - b _08070F8A -_08070F7C: - movs r0, 0x18 - ands r0, r2 - cmp r0, 0 - bne _08070F88 - movs r0, 0x16 - b _08070F8A -_08070F88: - movs r0, 0x15 -_08070F8A: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end GetItemEffectType - - thumb_func_start unref_sub_8070F90 -unref_sub_8070F90: @ 8070F90 - push {lr} - ldr r0, _08070FAC @ =0x00000801 - bl FlagSet - movs r0, 0x80 - lsls r0, 4 - bl FlagSet - ldr r0, _08070FB0 @ =0x00000802 - bl FlagSet - pop {r0} - bx r0 - .align 2, 0 -_08070FAC: .4byte 0x00000801 -_08070FB0: .4byte 0x00000802 - thumb_func_end unref_sub_8070F90 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/pokeblock_feed.s b/asm/pokeblock_feed.s deleted file mode 100644 index 7df634399..000000000 --- a/asm/pokeblock_feed.s +++ /dev/null @@ -1,1836 +0,0 @@ - .include "constants/gba_constants.inc" - .include "constants/species_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start sub_8147890 -sub_8147890: @ 8147890 - push {lr} - bl AnimateSprites - bl BuildOamBuffer - bl RunTasks - bl UpdatePaletteFade - pop {r0} - bx r0 - thumb_func_end sub_8147890 - - thumb_func_start sub_81478A8 -sub_81478A8: @ 81478A8 - push {lr} - bl LoadOam - bl ProcessSpriteCopyRequests - bl TransferPlttBuffer - pop {r0} - bx r0 - thumb_func_end sub_81478A8 - - thumb_func_start sub_81478BC -sub_81478BC: @ 81478BC - push {r4,lr} - sub sp, 0x4 - ldr r0, _081478D8 @ =gMain - ldr r1, _081478DC @ =0x0000043c - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0xD - bls _081478CE - b _08147AD0 -_081478CE: - lsls r0, 2 - ldr r1, _081478E0 @ =_081478E4 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_081478D8: .4byte gMain -_081478DC: .4byte 0x0000043c -_081478E0: .4byte _081478E4 - .align 2, 0 -_081478E4: - .4byte _0814791C - .4byte _08147938 - .4byte _0814794C - .4byte _08147960 - .4byte _08147966 - .4byte _08147980 - .4byte _0814798C - .4byte _081479B8 - .4byte _081479DC - .4byte _081479F4 - .4byte _08147A20 - .4byte _08147A3C - .4byte _08147A5C - .4byte _08147A8C -_0814791C: - bl sub_80F9438 - bl sub_80F9368 - bl sub_8147B04 - ldr r1, _08147930 @ =gMain - ldr r2, _08147934 @ =0x0000043c - adds r1, r2 - b _08147A4A - .align 2, 0 -_08147930: .4byte gMain -_08147934: .4byte 0x0000043c -_08147938: - bl ResetPaletteFade - ldr r2, _08147948 @ =gPaletteFade - ldrb r0, [r2, 0x8] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2, 0x8] - b _08147A44 - .align 2, 0 -_08147948: .4byte gPaletteFade -_0814794C: - bl ResetSpriteData - ldr r1, _08147958 @ =gMain - ldr r2, _0814795C @ =0x0000043c - adds r1, r2 - b _08147A4A - .align 2, 0 -_08147958: .4byte gMain -_0814795C: .4byte 0x0000043c -_08147960: - bl FreeAllSpritePalettes - b _08147A44 -_08147966: - ldr r0, _08147974 @ =gWindowConfig_81E6E50 - bl SetUpWindowConfig - ldr r1, _08147978 @ =gMain - ldr r2, _0814797C @ =0x0000043c - adds r1, r2 - b _08147A4A - .align 2, 0 -_08147974: .4byte gWindowConfig_81E6E50 -_08147978: .4byte gMain -_0814797C: .4byte 0x0000043c -_08147980: - ldr r0, _08147988 @ =gWindowConfig_81E6E50 - bl MultistepInitMenuWindowBegin - b _08147A44 - .align 2, 0 -_08147988: .4byte gWindowConfig_81E6E50 -_0814798C: - bl MultistepInitMenuWindowContinue - cmp r0, 0 - bne _08147996 - b _08147AD0 -_08147996: - ldr r0, _081479A8 @ =0x02000000 - ldr r1, _081479AC @ =0x0001ffff - adds r0, r1 - movs r1, 0 - strb r1, [r0] - ldr r1, _081479B0 @ =gMain - ldr r2, _081479B4 @ =0x0000043c - adds r1, r2 - b _08147A4A - .align 2, 0 -_081479A8: .4byte 0x02000000 -_081479AC: .4byte 0x0001ffff -_081479B0: .4byte gMain -_081479B4: .4byte 0x0000043c -_081479B8: - ldr r0, _081479D4 @ =gUnknown_02039310 - ldrb r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _081479D8 @ =gPlayerParty - adds r0, r1 - bl sub_8147B20 - lsls r0, 24 - cmp r0, 0 - bne _081479D0 - b _08147AD0 -_081479D0: - b _08147A44 - .align 2, 0 -_081479D4: .4byte gUnknown_02039310 -_081479D8: .4byte gPlayerParty -_081479DC: - bl sub_81480B4 - ldr r1, _081479EC @ =0x02000000 - ldr r2, _081479F0 @ =0x0001fffd - adds r1, r2 - strb r0, [r1] - b _08147A44 - .align 2, 0 -_081479EC: .4byte 0x02000000 -_081479F0: .4byte 0x0001fffd -_081479F4: - ldr r0, _08147A10 @ =gUnknown_02039310 - ldrb r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08147A14 @ =gPlayerParty - adds r0, r1 - bl sub_8147F84 - ldr r1, _08147A18 @ =0x02000000 - ldr r2, _08147A1C @ =0x0001fffe - adds r1, r2 - strb r0, [r1] - b _08147A44 - .align 2, 0 -_08147A10: .4byte gUnknown_02039310 -_08147A14: .4byte gPlayerParty -_08147A18: .4byte 0x02000000 -_08147A1C: .4byte 0x0001fffe -_08147A20: - movs r0, 0 - movs r1, 0xE - movs r2, 0x1D - movs r3, 0x13 - bl MenuDrawTextWindow - ldr r1, _08147A34 @ =gMain - ldr r2, _08147A38 @ =0x0000043c - adds r1, r2 - b _08147A4A - .align 2, 0 -_08147A34: .4byte gMain -_08147A38: .4byte 0x0000043c -_08147A3C: - bl sub_8055870 - cmp r0, 0x1 - beq _08147AD0 -_08147A44: - ldr r1, _08147A54 @ =gMain - ldr r0, _08147A58 @ =0x0000043c - adds r1, r0 -_08147A4A: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _08147AD0 - .align 2, 0 -_08147A54: .4byte gMain -_08147A58: .4byte 0x0000043c -_08147A5C: - ldr r3, _08147AB0 @ =0x04000208 - ldrh r2, [r3] - movs r0, 0 - strh r0, [r3] - ldr r4, _08147AB4 @ =0x04000200 - ldrh r0, [r4] - movs r1, 0x1 - orrs r0, r1 - strh r0, [r4] - strh r2, [r3] - ldr r2, _08147AB8 @ =REG_DISPSTAT - ldrh r0, [r2] - movs r1, 0x8 - orrs r0, r1 - strh r0, [r2] - ldr r0, _08147ABC @ =sub_81478A8 - bl SetVBlankCallback - ldr r1, _08147AC0 @ =gMain - ldr r2, _08147AC4 @ =0x0000043c - adds r1, r2 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_08147A8C: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - ldr r2, _08147AC8 @ =gPaletteFade - ldrb r1, [r2, 0x8] - movs r0, 0x7F - ands r0, r1 - strb r0, [r2, 0x8] - ldr r0, _08147ACC @ =sub_8147890 - bl SetMainCallback2 - movs r0, 0x1 - b _08147AD2 - .align 2, 0 -_08147AB0: .4byte 0x04000208 -_08147AB4: .4byte 0x04000200 -_08147AB8: .4byte REG_DISPSTAT -_08147ABC: .4byte sub_81478A8 -_08147AC0: .4byte gMain -_08147AC4: .4byte 0x0000043c -_08147AC8: .4byte gPaletteFade -_08147ACC: .4byte sub_8147890 -_08147AD0: - movs r0, 0 -_08147AD2: - add sp, 0x4 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_81478BC - - thumb_func_start sub_8147ADC -sub_8147ADC: @ 8147ADC - push {lr} -_08147ADE: - bl sub_81478BC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08147AF2 - movs r0, 0x1 - bl sub_8147DDC - b _08147AFE -_08147AF2: - bl sub_80F9344 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08147ADE -_08147AFE: - pop {r0} - bx r0 - thumb_func_end sub_8147ADC - - thumb_func_start sub_8147B04 -sub_8147B04: @ 8147B04 - ldr r1, _08147B18 @ =REG_BG1CNT - ldr r2, _08147B1C @ =0x00001d02 - adds r0, r2, 0 - strh r0, [r1] - subs r1, 0xA - movs r2, 0x9A - lsls r2, 5 - adds r0, r2, 0 - strh r0, [r1] - bx lr - .align 2, 0 -_08147B18: .4byte REG_BG1CNT -_08147B1C: .4byte 0x00001d02 - thumb_func_end sub_8147B04 - - thumb_func_start sub_8147B20 -sub_8147B20: @ 8147B20 - push {r4-r6,lr} - sub sp, 0xC - adds r4, r0, 0 - ldr r0, _08147B40 @ =0x02000000 - ldr r1, _08147B44 @ =0x0001ffff - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x8 - bls _08147B34 - b _08147C84 -_08147B34: - lsls r0, 2 - ldr r1, _08147B48 @ =_08147B4C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08147B40: .4byte 0x02000000 -_08147B44: .4byte 0x0001ffff -_08147B48: .4byte _08147B4C - .align 2, 0 -_08147B4C: - .4byte _08147B70 - .4byte _08147BB8 - .4byte _08147BF0 - .4byte _08147BFC - .4byte _08147C08 - .4byte _08147C14 - .4byte _08147C2C - .4byte _08147C38 - .4byte _08147C60 -_08147B70: - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - lsls r0, 16 - lsrs r5, r0, 16 - adds r0, r4, 0 - movs r1, 0 - bl GetMonData - adds r6, r0, 0 - lsls r0, r5, 3 - ldr r1, _08147BAC @ =gMonFrontPicTable - adds r0, r1 - ldr r1, _08147BB0 @ =gMonFrontPicCoords - lsls r2, r5, 2 - adds r2, r1 - ldrb r1, [r2] - ldrb r2, [r2, 0x1] - movs r3, 0x80 - lsls r3, 18 - ldr r4, _08147BB4 @ =gUnknown_081FAF4C - ldr r4, [r4, 0x4] - str r4, [sp] - str r5, [sp, 0x4] - str r6, [sp, 0x8] - bl HandleLoadSpecialPokePic - b _08147C40 - .align 2, 0 -_08147BAC: .4byte gMonFrontPicTable -_08147BB0: .4byte gMonFrontPicCoords -_08147BB4: .4byte gUnknown_081FAF4C -_08147BB8: - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - lsls r0, 16 - lsrs r5, r0, 16 - adds r0, r4, 0 - movs r1, 0 - bl GetMonData - adds r6, r0, 0 - adds r0, r4, 0 - movs r1, 0x1 - bl GetMonData - adds r1, r0, 0 - adds r0, r5, 0 - adds r2, r6, 0 - bl sub_80409C8 - adds r4, r0, 0 - bl LoadCompressedObjectPalette - ldrh r0, [r4, 0x4] - movs r1, 0x1 - bl GetMonSpriteTemplate_803C56C - b _08147C40 -_08147BF0: - ldr r0, _08147BF8 @ =gUnknown_083F7F74 - bl LoadCompressedObjectPic - b _08147C40 - .align 2, 0 -_08147BF8: .4byte gUnknown_083F7F74 -_08147BFC: - ldr r0, _08147C04 @ =gUnknown_083F7F7C - bl LoadCompressedObjectPalette - b _08147C40 - .align 2, 0 -_08147C04: .4byte gUnknown_083F7F7C -_08147C08: - ldr r0, _08147C10 @ =gUnknown_084121DC - bl LoadCompressedObjectPic - b _08147C40 - .align 2, 0 -_08147C10: .4byte gUnknown_084121DC -_08147C14: - ldr r0, _08147C24 @ =gScriptItemId - ldrb r0, [r0] - bl sub_8147C90 - ldr r0, _08147C28 @ =gUnknown_02039350 - bl LoadCompressedObjectPalette - b _08147C40 - .align 2, 0 -_08147C24: .4byte gScriptItemId -_08147C28: .4byte gUnknown_02039350 -_08147C2C: - ldr r0, _08147C34 @ =gBattleTerrainTiles_Building - movs r1, 0xC0 - lsls r1, 19 - b _08147C3C - .align 2, 0 -_08147C34: .4byte gBattleTerrainTiles_Building -_08147C38: - ldr r0, _08147C50 @ =gUnknown_08E782FC - ldr r1, _08147C54 @ =0x0600e800 -_08147C3C: - bl LZDecompressVram -_08147C40: - ldr r1, _08147C58 @ =0x02000000 - ldr r0, _08147C5C @ =0x0001ffff - adds r1, r0 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _08147C84 - .align 2, 0 -_08147C50: .4byte gUnknown_08E782FC -_08147C54: .4byte 0x0600e800 -_08147C58: .4byte 0x02000000 -_08147C5C: .4byte 0x0001ffff -_08147C60: - ldr r0, _08147C78 @ =gBattleTerrainPalette_BattleTower - movs r1, 0x20 - movs r2, 0x60 - bl LoadCompressedPalette - ldr r0, _08147C7C @ =0x02000000 - ldr r1, _08147C80 @ =0x0001ffff - adds r0, r1 - movs r1, 0 - strb r1, [r0] - movs r0, 0x1 - b _08147C86 - .align 2, 0 -_08147C78: .4byte gBattleTerrainPalette_BattleTower -_08147C7C: .4byte 0x02000000 -_08147C80: .4byte 0x0001ffff -_08147C84: - movs r0, 0 -_08147C86: - add sp, 0xC - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_8147B20 - - thumb_func_start sub_8147C90 -sub_8147C90: @ 8147C90 - push {lr} - lsls r0, 24 - lsrs r0, 21 - ldr r1, _08147CB8 @ =gSaveBlock1 + 0x7F8 - adds r0, r1 - movs r1, 0 - bl sub_810CA9C - lsls r0, 24 - ldr r2, _08147CBC @ =gUnknown_02039350 - ldr r1, _08147CC0 @ =gUnknown_084120A4 - lsrs r0, 22 - subs r0, 0x4 - adds r0, r1 - ldr r0, [r0] - str r0, [r2] - ldr r0, _08147CC4 @ =0x000039e2 - strh r0, [r2, 0x4] - pop {r0} - bx r0 - .align 2, 0 -_08147CB8: .4byte gSaveBlock1 + 0x7F8 -_08147CBC: .4byte gUnknown_02039350 -_08147CC0: .4byte gUnknown_084120A4 -_08147CC4: .4byte 0x000039e2 - thumb_func_end sub_8147C90 - - thumb_func_start sub_8147CC8 -sub_8147CC8: @ 8147CC8 - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _08147D00 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08147CDC - b _08147DCE -_08147CDC: - ldr r0, _08147D04 @ =gTasks - lsls r2, r4, 2 - adds r1, r2, r4 - lsls r1, 3 - adds r1, r0 - movs r0, 0x8 - ldrsh r3, [r1, r0] - ldr r0, _08147D08 @ =0x0000010d - adds r5, r2, 0 - cmp r3, r0 - beq _08147D50 - cmp r3, r0 - bgt _08147D0C - cmp r3, 0 - beq _08147D20 - cmp r3, 0xFF - beq _08147D38 - b _08147D8C - .align 2, 0 -_08147D00: .4byte gPaletteFade -_08147D04: .4byte gTasks -_08147D08: .4byte 0x0000010d -_08147D0C: - ldr r0, _08147D1C @ =0x00000119 - cmp r3, r0 - beq _08147D68 - adds r0, 0x10 - cmp r3, r0 - beq _08147D80 - b _08147D8C - .align 2, 0 -_08147D1C: .4byte 0x00000119 -_08147D20: - ldr r0, _08147D30 @ =gUnknown_03005F3C - strb r3, [r0] - ldr r0, _08147D34 @ =gUnknown_03005F94 - strh r3, [r0] - bl sub_81481DC - b _08147D8C - .align 2, 0 -_08147D30: .4byte gUnknown_03005F3C -_08147D34: .4byte gUnknown_03005F94 -_08147D38: - ldr r0, _08147D48 @ =0x02000000 - ldr r2, _08147D4C @ =0x0001fffd - adds r0, r2 - ldrb r0, [r0] - ldrb r1, [r1, 0xA] - bl sub_8148108 - b _08147D8C - .align 2, 0 -_08147D48: .4byte 0x02000000 -_08147D4C: .4byte 0x0001fffd -_08147D50: - bl sub_814817C - ldr r1, _08147D60 @ =0x02000000 - ldr r2, _08147D64 @ =0x0001fffc - adds r1, r2 - strb r0, [r1] - b _08147D8C - .align 2, 0 -_08147D60: .4byte 0x02000000 -_08147D64: .4byte 0x0001fffc -_08147D68: - ldr r0, _08147D78 @ =0x02000000 - ldr r1, _08147D7C @ =0x0001fffe - adds r0, r1 - ldrb r0, [r0] - bl sub_8148044 - b _08147D8C - .align 2, 0 -_08147D78: .4byte 0x02000000 -_08147D7C: .4byte 0x0001fffe -_08147D80: - ldr r0, _08147D88 @ =sub_8147E40 - str r0, [r1] - b _08147DCE - .align 2, 0 -_08147D88: .4byte sub_8147E40 -_08147D8C: - ldr r0, _08147DA0 @ =gUnknown_03005F94 - ldr r1, _08147DA4 @ =gUnknown_03005F34 - ldrh r2, [r0] - ldrh r0, [r1] - cmp r2, r0 - bcs _08147DA8 - bl sub_814825C - b _08147DB8 - .align 2, 0 -_08147DA0: .4byte gUnknown_03005F94 -_08147DA4: .4byte gUnknown_03005F34 -_08147DA8: - cmp r2, r0 - bne _08147DB8 - ldr r0, _08147DD4 @ =gTasks - adds r1, r5, r4 - lsls r1, 3 - adds r1, r0 - movs r0, 0xFE - strh r0, [r1, 0x8] -_08147DB8: - ldr r1, _08147DD8 @ =gUnknown_03005F94 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - ldr r0, _08147DD4 @ =gTasks - adds r1, r5, r4 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] -_08147DCE: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08147DD4: .4byte gTasks -_08147DD8: .4byte gUnknown_03005F94 - thumb_func_end sub_8147CC8 - - thumb_func_start sub_8147DDC -sub_8147DDC: @ 8147DDC - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _08147E08 @ =sub_8147CC8 - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _08147E0C @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - movs r0, 0 - strh r0, [r1, 0x8] - strh r4, [r1, 0xA] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08147E08: .4byte sub_8147CC8 -_08147E0C: .4byte gTasks - thumb_func_end sub_8147DDC - - thumb_func_start sub_8147E10 -sub_8147E10: @ 8147E10 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl MenuUpdateWindowText - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08147E30 - ldr r0, _08147E38 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _08147E3C @ =sub_8147F4C - str r0, [r1] -_08147E30: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08147E38: .4byte gTasks -_08147E3C: .4byte sub_8147F4C - thumb_func_end sub_8147E10 - - thumb_func_start sub_8147E40 -sub_8147E40: @ 8147E40 - push {r4-r7,lr} - lsls r0, 24 - lsrs r7, r0, 24 - ldr r0, _08147E94 @ =gUnknown_02039310 - ldrb r1, [r0] - movs r0, 0x64 - adds r5, r1, 0 - muls r5, r0 - ldr r0, _08147E98 @ =gPlayerParty - adds r5, r0 - ldr r0, _08147E9C @ =gScriptItemId - ldrh r4, [r0] - lsls r4, 3 - ldr r0, _08147EA0 @ =gSaveBlock1 + 0x7F8 - adds r4, r0 - adds r0, r5, 0 - bl GetNature - lsls r0, 24 - lsrs r0, 24 - adds r1, r4, 0 - bl sub_810CAE4 - ldr r6, _08147EA4 @ =gUnknown_02039312 - strh r0, [r6] - ldr r1, _08147EA8 @ =gStringVar1 - adds r0, r5, 0 - bl GetMonNickname - ldr r1, _08147EAC @ =gStringVar2 - adds r0, r4, 0 - bl sub_810CB44 - movs r1, 0 - ldrsh r0, [r6, r1] - cmp r0, 0 - bne _08147EB8 - ldr r0, _08147EB0 @ =gStringVar4 - ldr r1, _08147EB4 @ =gContestStatsText_NormallyAte - bl StringExpandPlaceholders - b _08147ED8 - .align 2, 0 -_08147E94: .4byte gUnknown_02039310 -_08147E98: .4byte gPlayerParty -_08147E9C: .4byte gScriptItemId -_08147EA0: .4byte gSaveBlock1 + 0x7F8 -_08147EA4: .4byte gUnknown_02039312 -_08147EA8: .4byte gStringVar1 -_08147EAC: .4byte gStringVar2 -_08147EB0: .4byte gStringVar4 -_08147EB4: .4byte gContestStatsText_NormallyAte -_08147EB8: - cmp r0, 0 - ble _08147ED0 - ldr r0, _08147EC8 @ =gStringVar4 - ldr r1, _08147ECC @ =gContestStatsText_HappilyAte - bl StringExpandPlaceholders - b _08147ED8 - .align 2, 0 -_08147EC8: .4byte gStringVar4 -_08147ECC: .4byte gContestStatsText_HappilyAte -_08147ED0: - ldr r0, _08147EF8 @ =gStringVar4 - ldr r1, _08147EFC @ =gContestStatsText_DisdainfullyAte - bl StringExpandPlaceholders -_08147ED8: - ldr r0, _08147EF8 @ =gStringVar4 - movs r1, 0x1 - movs r2, 0xF - bl MenuPrintMessage - ldr r1, _08147F00 @ =gTasks - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - adds r0, r1 - ldr r1, _08147F04 @ =sub_8147E10 - str r1, [r0] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08147EF8: .4byte gStringVar4 -_08147EFC: .4byte gContestStatsText_DisdainfullyAte -_08147F00: .4byte gTasks -_08147F04: .4byte sub_8147E10 - thumb_func_end sub_8147E40 - - thumb_func_start sub_8147F08 -sub_8147F08: @ 8147F08 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _08147F3C @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08147F34 - ldr r0, _08147F40 @ =gMPlay_BGM - ldr r1, _08147F44 @ =0x0000ffff - movs r2, 0x80 - lsls r2, 1 - bl m4aMPlayVolumeControl - ldr r0, _08147F48 @ =gMain - ldr r0, [r0, 0x8] - bl SetMainCallback2 - adds r0, r4, 0 - bl DestroyTask -_08147F34: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08147F3C: .4byte gPaletteFade -_08147F40: .4byte gMPlay_BGM -_08147F44: .4byte 0x0000ffff -_08147F48: .4byte gMain - thumb_func_end sub_8147F08 - - thumb_func_start sub_8147F4C -sub_8147F4C: @ 8147F4C - push {r4,lr} - sub sp, 0x4 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r1, _08147F7C @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _08147F80 @ =sub_8147F08 - str r1, [r0] - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08147F7C: .4byte gTasks -_08147F80: .4byte sub_8147F08 - thumb_func_end sub_8147F4C - - thumb_func_start sub_8147F84 -sub_8147F84: @ 8147F84 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - adds r5, r0, 0 - movs r1, 0x41 - bl GetMonData - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - ldr r0, _08148024 @ =gUnknown_02024E8C - movs r1, 0x30 - movs r2, 0x50 - movs r3, 0x2 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - ldr r0, _08148028 @ =gUnknown_03005F24 - strh r4, [r0] - ldr r0, _0814802C @ =gUnknown_03005F2C - mov r1, r8 - strb r1, [r0] - adds r0, r5, 0 - bl GetNature - ldr r1, _08148030 @ =gUnknown_03005F30 - strb r0, [r1] - ldr r7, _08148034 @ =gSprites - mov r1, r8 - lsls r0, r1, 4 - add r0, r8 - lsls r5, r0, 2 - adds r6, r5, r7 - strh r4, [r6, 0x32] - adds r0, r7, 0 - adds r0, 0x1C - adds r0, r5, r0 - ldr r1, _08148038 @ =SpriteCallbackDummy - str r1, [r0] - ldr r0, _0814803C @ =gUnknown_03005F28 - mov r9, r0 - movs r0, 0x1 - mov r1, r9 - strb r0, [r1] - adds r0, r4, 0 - bl sub_8040A3C - lsls r0, 24 - cmp r0, 0 - bne _08148016 - adds r0, r7, 0 - adds r0, 0x10 - adds r0, r5, r0 - ldr r1, _08148040 @ =gSpriteAffineAnimTable_84120EC - str r1, [r0] - ldrb r3, [r6, 0x1] - movs r0, 0x3 - orrs r3, r0 - strb r3, [r6, 0x1] - lsrs r1, r3, 6 - ldrb r2, [r6, 0x3] - lsrs r2, 6 - lsls r3, 30 - lsrs r3, 30 - adds r0, r6, 0 - bl CalcCenterToCornerVec - movs r0, 0 - mov r1, r9 - strb r0, [r1] -_08148016: - mov r0, r8 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08148024: .4byte gUnknown_02024E8C -_08148028: .4byte gUnknown_03005F24 -_0814802C: .4byte gUnknown_03005F2C -_08148030: .4byte gUnknown_03005F30 -_08148034: .4byte gSprites -_08148038: .4byte SpriteCallbackDummy -_0814803C: .4byte gUnknown_03005F28 -_08148040: .4byte gSpriteAffineAnimTable_84120EC - thumb_func_end sub_8147F84 - - thumb_func_start sub_8148044 -sub_8148044: @ 8148044 - lsls r0, 24 - lsrs r0, 24 - ldr r3, _0814806C @ =gSprites - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r2, r1, r3 - movs r0, 0x30 - strh r0, [r2, 0x20] - movs r0, 0x50 - strh r0, [r2, 0x22] - ldr r0, _08148070 @ =0x0000fff8 - strh r0, [r2, 0x2E] - movs r0, 0x1 - strh r0, [r2, 0x30] - adds r3, 0x1C - adds r1, r3 - ldr r0, _08148074 @ =sub_8148078 - str r0, [r1] - bx lr - .align 2, 0 -_0814806C: .4byte gSprites -_08148070: .4byte 0x0000fff8 -_08148074: .4byte sub_8148078 - thumb_func_end sub_8148044 - - thumb_func_start sub_8148078 -sub_8148078: @ 8148078 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x20] - adds r0, 0x4 - strh r0, [r4, 0x20] - ldrh r0, [r4, 0x2E] - ldrh r2, [r4, 0x22] - adds r1, r0, r2 - strh r1, [r4, 0x22] - ldrh r1, [r4, 0x30] - adds r0, r1 - strh r0, [r4, 0x2E] - lsls r0, 16 - cmp r0, 0 - bne _0814809E - ldrh r0, [r4, 0x32] - movs r1, 0 - bl PlayCry1 -_0814809E: - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0x9 - bne _081480AA - ldr r0, _081480B0 @ =SpriteCallbackDummy - str r0, [r4, 0x1C] -_081480AA: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_081480B0: .4byte SpriteCallbackDummy - thumb_func_end sub_8148078 - - thumb_func_start sub_81480B4 -sub_81480B4: @ 81480B4 - push {r4,r5,lr} - movs r0, 0xBC - movs r1, 0x64 - movs r2, 0x2 - bl sub_810BA50 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r5, _081480FC @ =gSprites - lsls r3, r4, 4 - adds r3, r4 - lsls r3, 2 - adds r0, r3, r5 - ldrb r2, [r0, 0x1] - movs r1, 0x4 - negs r1, r1 - ands r1, r2 - movs r2, 0x1 - orrs r1, r2 - strb r1, [r0, 0x1] - adds r1, r5, 0 - adds r1, 0x10 - adds r1, r3, r1 - ldr r2, _08148100 @ =gSpriteAffineAnimTable_84121A0 - str r2, [r1] - adds r5, 0x1C - adds r3, r5 - ldr r1, _08148104 @ =SpriteCallbackDummy - str r1, [r3] - bl InitSpriteAffineAnim - adds r0, r4, 0 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_081480FC: .4byte gSprites -_08148100: .4byte gSpriteAffineAnimTable_84121A0 -_08148104: .4byte SpriteCallbackDummy - thumb_func_end sub_81480B4 - - thumb_func_start sub_8148108 -sub_8148108: @ 8148108 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r5, r1, 0 - lsls r0, 24 - lsrs r7, r0, 24 - lsls r5, 24 - lsrs r5, 24 - ldr r0, _08148148 @ =gSprites - mov r8, r0 - lsls r0, r7, 4 - adds r0, r7 - lsls r6, r0, 2 - mov r0, r8 - adds r4, r6, r0 - ldrb r0, [r4, 0x3] - lsls r0, 26 - lsrs r0, 27 - bl FreeOamMatrix - ldrb r0, [r4, 0x1] - movs r1, 0x3 - orrs r0, r1 - strb r0, [r4, 0x1] - cmp r5, 0 - bne _08148150 - mov r0, r8 - adds r0, 0x10 - adds r0, r6, r0 - ldr r1, _0814814C @ =gSpriteAffineAnimTable_84121A4 - b _08148158 - .align 2, 0 -_08148148: .4byte gSprites -_0814814C: .4byte gSpriteAffineAnimTable_84121A4 -_08148150: - mov r0, r8 - adds r0, 0x10 - adds r0, r6, r0 - ldr r1, _08148174 @ =gSpriteAffineAnimTable_84121A8 -_08148158: - str r1, [r0] - lsls r0, r7, 4 - adds r0, r7 - lsls r0, 2 - ldr r1, _08148178 @ =gSprites - adds r0, r1 - bl InitSpriteAffineAnim - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08148174: .4byte gSpriteAffineAnimTable_84121A8 -_08148178: .4byte gSprites - thumb_func_end sub_8148108 - - thumb_func_start sub_814817C -sub_814817C: @ 814817C - push {lr} - ldr r0, _081481A4 @ =gSpriteTemplate_84121E4 - movs r1, 0xAE - movs r2, 0x54 - movs r3, 0x1 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - ldr r2, _081481A8 @ =gSprites - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - ldr r2, _081481AC @ =0x0000fff4 - strh r2, [r1, 0x2E] - movs r2, 0x1 - strh r2, [r1, 0x30] - pop {r1} - bx r1 - .align 2, 0 -_081481A4: .4byte gSpriteTemplate_84121E4 -_081481A8: .4byte gSprites -_081481AC: .4byte 0x0000fff4 - thumb_func_end sub_814817C - - thumb_func_start sub_81481B0 -sub_81481B0: @ 81481B0 - push {lr} - adds r2, r0, 0 - ldrh r0, [r2, 0x20] - subs r0, 0x4 - strh r0, [r2, 0x20] - ldrh r0, [r2, 0x2E] - ldrh r3, [r2, 0x22] - adds r1, r0, r3 - strh r1, [r2, 0x22] - ldrh r1, [r2, 0x30] - adds r0, r1 - strh r0, [r2, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xA - bne _081481D6 - adds r0, r2, 0 - bl DestroySprite -_081481D6: - pop {r0} - bx r0 - thumb_func_end sub_81481B0 - - thumb_func_start sub_81481DC -sub_81481DC: @ 81481DC - push {r4-r7,lr} - ldr r6, _0814824C @ =gUnknown_03005F34 - movs r0, 0x1 - strh r0, [r6] - ldr r1, _08148250 @ =gNatureToMonPokeblockAnim - ldr r0, _08148254 @ =gUnknown_03005F30 - ldrb r0, [r0] - lsls r0, 1 - adds r0, r1 - ldrb r3, [r0] - movs r4, 0 - ldr r2, _08148258 @ =gMonPokeblockAnims - lsls r1, r3, 2 - adds r1, r3 - lsls r1, 2 - adds r7, r2, 0 - adds r7, 0x8 - adds r0, r1, r7 - ldrh r0, [r0] - adds r0, 0x1 - strh r0, [r6] - adds r5, r2, 0 - adds r5, 0x12 - adds r1, r5 - movs r2, 0 - ldrsh r0, [r1, r2] - cmp r0, 0x1 - beq _08148244 - adds r2, r6, 0 - adds r6, r5, 0 - adds r5, r7, 0 -_0814821A: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r4, 0x7 - bhi _08148244 - lsls r1, r3, 2 - adds r1, r3 - lsls r1, 2 - adds r0, r1, r5 - ldrh r0, [r0] - ldrh r7, [r2] - adds r0, r7 - strh r0, [r2] - adds r1, r6 - movs r7, 0 - ldrsh r0, [r1, r7] - cmp r0, 0x1 - bne _0814821A -_08148244: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0814824C: .4byte gUnknown_03005F34 -_08148250: .4byte gNatureToMonPokeblockAnim -_08148254: .4byte gUnknown_03005F30 -_08148258: .4byte gMonPokeblockAnims - thumb_func_end sub_81481DC - - thumb_func_start sub_814825C -sub_814825C: @ 814825C - push {lr} - ldr r0, _08148274 @ =gUnknown_03005F3C - ldrb r0, [r0] - cmp r0, 0x5A - bls _08148268 - b _08148532 -_08148268: - lsls r0, 2 - ldr r1, _08148278 @ =_0814827C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08148274: .4byte gUnknown_03005F3C -_08148278: .4byte _0814827C - .align 2, 0 -_0814827C: - .4byte _081483E8 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _0814843C - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _0814847A - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _081484CC - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148524 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 -_081483E8: - ldr r2, _0814841C @ =gUnknown_03005F40 - ldr r1, _08148420 @ =gNatureToMonPokeblockAnim - ldr r0, _08148424 @ =gUnknown_03005F30 - ldrb r0, [r0] - lsls r0, 1 - adds r0, r1 - ldrb r0, [r0] - strb r0, [r2] - ldr r2, _08148428 @ =gUnknown_03005F20 - ldr r0, _0814842C @ =gUnknown_03005F2C - ldrb r0, [r0] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - ldr r0, _08148430 @ =gSprites - adds r1, r0 - str r1, [r2] - ldr r0, _08148434 @ =gUnknown_03005F50 - movs r2, 0x44 - bl memcpy - ldr r1, _08148438 @ =gUnknown_03005F3C - movs r0, 0xA - strb r0, [r1] - b _08148532 - .align 2, 0 -_0814841C: .4byte gUnknown_03005F40 -_08148420: .4byte gNatureToMonPokeblockAnim -_08148424: .4byte gUnknown_03005F30 -_08148428: .4byte gUnknown_03005F20 -_0814842C: .4byte gUnknown_03005F2C -_08148430: .4byte gSprites -_08148434: .4byte gUnknown_03005F50 -_08148438: .4byte gUnknown_03005F3C -_0814843C: - bl sub_8148540 - ldr r1, _081484A4 @ =gNatureToMonPokeblockAnim - ldr r0, _081484A8 @ =gUnknown_03005F30 - ldrb r0, [r0] - lsls r0, 1 - adds r1, 0x1 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - beq _08148474 - ldr r3, _081484AC @ =gUnknown_03005F20 - ldr r2, [r3] - ldrb r0, [r2, 0x1] - movs r1, 0x3 - orrs r0, r1 - strb r0, [r2, 0x1] - ldr r2, [r3] - ldrb r1, [r2, 0x3] - movs r0, 0x3F - negs r0, r0 - ands r0, r1 - strb r0, [r2, 0x3] - ldr r0, [r3] - ldr r1, _081484B0 @ =gSpriteAffineAnimTable_8412050 - str r1, [r0, 0x10] - bl InitSpriteAffineAnim -_08148474: - ldr r1, _081484B4 @ =gUnknown_03005F3C - movs r0, 0x32 - strb r0, [r1] -_0814847A: - ldr r1, _081484A4 @ =gNatureToMonPokeblockAnim - ldr r0, _081484A8 @ =gUnknown_03005F30 - ldrb r0, [r0] - lsls r0, 1 - adds r1, 0x1 - adds r2, r0, r1 - ldrb r1, [r2] - cmp r1, 0 - beq _081484EE - ldr r0, _081484B8 @ =gUnknown_03005F28 - ldrb r0, [r0] - cmp r0, 0 - bne _081484BC - ldr r0, _081484AC @ =gUnknown_03005F20 - ldr r0, [r0] - adds r1, 0xA - lsls r1, 24 - lsrs r1, 24 - bl StartSpriteAffineAnim - b _081484EE - .align 2, 0 -_081484A4: .4byte gNatureToMonPokeblockAnim -_081484A8: .4byte gUnknown_03005F30 -_081484AC: .4byte gUnknown_03005F20 -_081484B0: .4byte gSpriteAffineAnimTable_8412050 -_081484B4: .4byte gUnknown_03005F3C -_081484B8: .4byte gUnknown_03005F28 -_081484BC: - ldr r0, _081484C8 @ =gUnknown_03005F20 - ldr r0, [r0] - ldrb r1, [r2] - bl StartSpriteAffineAnim - b _081484EE - .align 2, 0 -_081484C8: .4byte gUnknown_03005F20 -_081484CC: - bl sub_81485CC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08148532 - ldr r0, _081484F8 @ =gUnknown_03005FA0 - movs r1, 0x12 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _08148504 - ldr r1, _081484FC @ =gUnknown_03005F40 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - bl sub_8148540 -_081484EE: - ldr r1, _08148500 @ =gUnknown_03005F3C - movs r0, 0x3C - strb r0, [r1] - b _08148532 - .align 2, 0 -_081484F8: .4byte gUnknown_03005FA0 -_081484FC: .4byte gUnknown_03005F40 -_08148500: .4byte gUnknown_03005F3C -_08148504: - ldr r0, _0814851C @ =gUnknown_03005F20 - ldr r0, [r0] - ldrb r0, [r0, 0x3] - lsls r0, 26 - lsrs r0, 27 - bl FreeOamMatrix - ldr r1, _08148520 @ =gUnknown_03005F3C - movs r0, 0x46 - strb r0, [r1] - b _08148532 - .align 2, 0 -_0814851C: .4byte gUnknown_03005F20 -_08148520: .4byte gUnknown_03005F3C -_08148524: - bl sub_8148618 - ldr r0, _08148538 @ =gUnknown_03005F40 - movs r1, 0 - strb r1, [r0] - ldr r0, _0814853C @ =gUnknown_03005F3C - strb r1, [r0] -_08148532: - pop {r0} - bx r0 - .align 2, 0 -_08148538: .4byte gUnknown_03005F40 -_0814853C: .4byte gUnknown_03005F3C - thumb_func_end sub_814825C - - thumb_func_start sub_8148540 -sub_8148540: @ 8148540 - push {r4-r7,lr} - movs r4, 0 - ldr r5, _081485B4 @ =gUnknown_03005FA0 - mov r12, r5 - ldr r7, _081485B8 @ =gMonPokeblockAnims - ldr r6, _081485BC @ =gUnknown_03005F40 -_0814854C: - lsls r2, r4, 1 - mov r0, r12 - adds r3, r2, r0 - ldrb r1, [r6] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r2, r0 - adds r2, r7 - ldrh r0, [r2] - strh r0, [r3] - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x9 - bls _0814854C - movs r1, 0x8 - ldrsh r0, [r5, r1] - cmp r0, 0 - beq _081485C4 - movs r2, 0 - ldrsh r0, [r5, r2] - movs r2, 0x4 - ldrsh r1, [r5, r2] - bl Sin - strh r0, [r5, 0x14] - movs r1, 0 - ldrsh r0, [r5, r1] - movs r2, 0x6 - ldrsh r1, [r5, r2] - bl Cos - strh r0, [r5, 0x16] - ldrh r0, [r5, 0x8] - strh r0, [r5, 0x18] - ldr r0, _081485C0 @ =gUnknown_03005F20 - ldr r1, [r0] - ldrh r0, [r1, 0x24] - strh r0, [r5, 0x1A] - ldrh r0, [r1, 0x26] - strh r0, [r5, 0x1C] - bl sub_8148710 - ldrh r0, [r5, 0x18] - strh r0, [r5, 0x8] - bl sub_814862C - ldrh r0, [r5, 0x18] - strh r0, [r5, 0x8] - movs r0, 0 - b _081485C6 - .align 2, 0 -_081485B4: .4byte gUnknown_03005FA0 -_081485B8: .4byte gMonPokeblockAnims -_081485BC: .4byte gUnknown_03005F40 -_081485C0: .4byte gUnknown_03005F20 -_081485C4: - movs r0, 0x1 -_081485C6: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_8148540 - - thumb_func_start sub_81485CC -sub_81485CC: @ 81485CC - push {r4,lr} - ldr r3, _08148604 @ =gUnknown_03005FA0 - ldrh r0, [r3, 0x18] - ldrh r1, [r3, 0x8] - subs r0, r1 - lsls r0, 16 - ldr r1, _08148608 @ =gUnknown_03005F20 - ldr r4, [r1] - lsrs r0, 15 - ldr r1, _0814860C @ =0x0201d000 - adds r2, r0, r1 - ldrh r2, [r2] - strh r2, [r4, 0x24] - movs r2, 0x80 - lsls r2, 3 - adds r1, r2 - adds r0, r1 - ldrh r0, [r0] - strh r0, [r4, 0x26] - ldrh r0, [r3, 0x8] - subs r0, 0x1 - strh r0, [r3, 0x8] - lsls r0, 16 - cmp r0, 0 - beq _08148610 - movs r0, 0 - b _08148612 - .align 2, 0 -_08148604: .4byte gUnknown_03005FA0 -_08148608: .4byte gUnknown_03005F20 -_0814860C: .4byte 0x0201d000 -_08148610: - movs r0, 0x1 -_08148612: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_81485CC - - thumb_func_start sub_8148618 -sub_8148618: @ 8148618 - push {lr} - ldr r0, _08148628 @ =gUnknown_03005F20 - ldr r0, [r0] - bl FreeSpriteOamMatrix - movs r0, 0 - pop {r1} - bx r1 - .align 2, 0 -_08148628: .4byte gUnknown_03005F20 - thumb_func_end sub_8148618 - - thumb_func_start sub_814862C -sub_814862C: @ 814862C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x10 - ldr r1, _08148700 @ =gUnknown_03005FA0 - ldrh r0, [r1, 0x10] - mov r8, r0 - ldrh r0, [r1, 0x18] - mov r2, r8 - subs r0, r2 - lsls r0, 16 - lsrs r7, r0, 16 - ldrh r0, [r1, 0xC] - ldrh r3, [r1, 0x1A] - adds r0, r3 - lsls r0, 16 - lsrs r0, 16 - str r0, [sp] - ldrh r0, [r1, 0xE] - ldrh r1, [r1, 0x1C] - adds r0, r1 - lsls r0, 16 - lsrs r0, 16 - mov r9, r0 - movs r6, 0 - subs r0, r7, 0x1 - ldr r4, _08148704 @ =0x0201cffe - mov r10, r4 - cmp r6, r0 - bge _081486D4 - ldr r1, [sp] - lsls r0, r1, 16 - asrs r0, 16 - str r0, [sp, 0x4] -_08148674: - mov r2, r8 - adds r5, r2, r6 - lsls r5, 1 - ldr r4, _08148708 @ =0x0201d000 - adds r3, r5, r4 - ldrh r2, [r3] - ldr r0, [sp, 0x4] - subs r1, r2, r0 - ldr r4, _0814870C @ =0x0201d400 - adds r5, r4 - ldrh r0, [r5] - mov r12, r0 - mov r4, r9 - lsls r0, r4, 16 - asrs r0, 16 - mov r4, r12 - subs r0, r4, r0 - lsls r4, r0, 16 - lsrs r4, 16 - lsls r1, 16 - asrs r1, 16 - adds r6, 0x1 - adds r0, r1, 0 - muls r0, r6 - adds r1, r7, 0 - str r2, [sp, 0x8] - str r3, [sp, 0xC] - bl __divsi3 - ldr r2, [sp, 0x8] - subs r2, r0 - ldr r3, [sp, 0xC] - strh r2, [r3] - lsls r4, 16 - asrs r4, 16 - adds r0, r4, 0 - muls r0, r6 - adds r1, r7, 0 - bl __divsi3 - ldrh r1, [r5] - subs r1, r0 - strh r1, [r5] - lsls r6, 16 - lsrs r6, 16 - subs r0, r7, 0x1 - cmp r6, r0 - blt _08148674 -_081486D4: - mov r1, r8 - adds r0, r1, r7 - lsls r0, 1 - mov r2, r10 - adds r1, r0, r2 - mov r3, sp - ldrh r3, [r3] - strh r3, [r1] - movs r1, 0x80 - lsls r1, 3 - add r1, r10 - adds r0, r1 - mov r4, r9 - strh r4, [r0] - add sp, 0x10 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08148700: .4byte gUnknown_03005FA0 -_08148704: .4byte 0x0201cffe -_08148708: .4byte 0x0201d000 -_0814870C: .4byte 0x0201d400 - thumb_func_end sub_814862C - - thumb_func_start sub_8148710 -sub_8148710: @ 8148710 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - movs r0, 0 - str r0, [sp] - ldr r1, _081487A4 @ =gUnknown_03005FA0 - ldrh r2, [r1, 0x1A] - ldrh r0, [r1, 0x14] - subs r2, r0 - ldrh r3, [r1, 0x1C] - ldrh r0, [r1, 0x16] - subs r3, r0 - adds r6, r1, 0 - ldr r1, _081487A8 @ =0x0201d000 - mov r9, r1 - lsls r2, 16 - asrs r2, 16 - mov r8, r2 - movs r2, 0x80 - lsls r2, 3 - add r2, r9 - mov r10, r2 - lsls r3, 16 - asrs r7, r3, 16 -_08148746: - movs r1, 0xA - ldrsh r0, [r6, r1] - cmp r0, 0 - bge _08148750 - negs r0, r0 -_08148750: - lsls r0, 16 - lsrs r0, 16 - ldrh r2, [r6, 0x6] - adds r0, r2 - lsls r5, r0, 16 - strh r0, [r6, 0x6] - ldrh r2, [r6, 0x4] - movs r1, 0x4 - ldrsh r0, [r6, r1] - cmp r0, 0 - bge _0814876A - movs r0, 0x1 - str r0, [sp] -_0814876A: - ldrh r0, [r6, 0x18] - ldrh r1, [r6, 0x8] - subs r0, r1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r1, 0 - beq _081487F0 - ldr r1, [sp] - cmp r1, 0 - bne _081487AC - movs r1, 0 - ldrsh r0, [r6, r1] - lsrs r5, 24 - adds r1, r2, r5 - lsls r1, 16 - asrs r1, 16 - bl Sin - lsls r4, 1 - mov r2, r9 - adds r1, r4, r2 - add r0, r8 - strh r0, [r1] - movs r1, 0 - ldrsh r0, [r6, r1] - ldrh r1, [r6, 0x6] - adds r1, r5 - b _081487CE - .align 2, 0 -_081487A4: .4byte gUnknown_03005FA0 -_081487A8: .4byte 0x0201d000 -_081487AC: - movs r1, 0 - ldrsh r0, [r6, r1] - lsrs r5, 24 - subs r1, r2, r5 - lsls r1, 16 - asrs r1, 16 - bl Sin - lsls r4, 1 - mov r2, r9 - adds r1, r4, r2 - add r0, r8 - strh r0, [r1] - movs r1, 0 - ldrsh r0, [r6, r1] - ldrh r1, [r6, 0x6] - subs r1, r5 -_081487CE: - lsls r1, 16 - asrs r1, 16 - bl Cos - add r4, r10 - adds r0, r7, r0 - strh r0, [r4] - ldrh r0, [r6, 0x2] - ldrh r2, [r6] - adds r0, r2 - movs r1, 0xFF - ands r0, r1 - strh r0, [r6] - ldrh r0, [r6, 0x8] - subs r0, 0x1 - strh r0, [r6, 0x8] - b _08148746 -_081487F0: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8148710 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/pokedex_area_screen.s b/asm/pokedex_area_screen.s index bd8db8a2c..9e380f597 100644 --- a/asm/pokedex_area_screen.s +++ b/asm/pokedex_area_screen.s @@ -92,7 +92,7 @@ _08110720: ldr r4, _0811073C @ =0x020006e8 adds r0, r4, 0 movs r1, 0 - bl sub_80FA8EC + bl InitRegionMap movs r0, 0x88 lsls r0, 4 adds r4, r0 @@ -115,7 +115,7 @@ _08110746: _08110752: movs r0, 0x1 movs r1, 0x1 - bl sub_80FBCF0 + bl CreateRegionMapPlayerIcon movs r1, 0x8 negs r1, r1 movs r0, 0 @@ -518,7 +518,7 @@ _08110A44: bl GetRoamerLocation ldrb r0, [r4, 0x10] ldrb r1, [r4, 0x11] - bl get_mapheader_by_bank_and_number + bl Overworld_GetMapHeaderByGroupAndId ldrb r0, [r0, 0x14] strh r0, [r4, 0x12] movs r3, 0x88 @@ -566,7 +566,7 @@ SetAreaHasMon: @ 8110A98 adds r0, r5 strb r1, [r0, 0x11] adds r0, r2, 0 - bl get_mapheader_by_bank_and_number + bl Overworld_GetMapHeaderByGroupAndId ldrb r0, [r0, 0x14] bl sub_80FBA04 ldrh r1, [r4] @@ -599,7 +599,7 @@ SetSpecialMapHasMon: @ 8110AE4 cmp r0, 0x1F bhi _08110B96 adds r0, r2, 0 - bl get_mapheader_by_bank_and_number + bl Overworld_GetMapHeaderByGroupAndId adds r6, r0, 0 ldrb r0, [r6, 0x14] cmp r0, 0x57 @@ -1700,7 +1700,7 @@ _08111344: lsls r0, 24 cmp r0, 0 bne _08111358 - bl sub_80FAB10 + bl FreeRegionMapIconResources ldr r0, [r4, 0x4] bl SetMainCallback2 _08111358: @@ -1740,7 +1740,7 @@ _08111390: lsls r0, 24 cmp r0, 0 bne _081113A4 - bl sub_80FAB10 + bl FreeRegionMapIconResources ldr r0, [r4, 0x8] bl SetMainCallback2 _081113A4: @@ -1859,7 +1859,7 @@ _08111496: ldr r4, _081114B4 @ =0x020006e8 adds r0, r4, 0 movs r1, 0 - bl sub_80FA8EC + bl InitRegionMap movs r0, 0x88 lsls r0, 4 adds r4, r0 @@ -1882,7 +1882,7 @@ _081114BE: _081114CA: movs r0, 0x1 movs r1, 0x1 - bl sub_80FBCF0 + bl CreateRegionMapPlayerIcon movs r1, 0x8 negs r1, r1 movs r0, 0 diff --git a/asm/pokemon_icon.s b/asm/pokemon_icon.s deleted file mode 100644 index 5aa8b5901..000000000 --- a/asm/pokemon_icon.s +++ /dev/null @@ -1,788 +0,0 @@ - .include "constants/gba_constants.inc" - .include "constants/species_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start unref_sub_809D26C -unref_sub_809D26C: @ 809D26C - push {r4-r6,lr} - mov r6, r8 - push {r6} - sub sp, 0x18 - adds r6, r3, 0 - ldr r3, [sp, 0x2C] - lsls r0, 16 - lsrs r0, 16 - lsls r3, 24 - lsrs r3, 24 - mov r8, sp - ldr r4, _0809D2E0 @ =gOamData_83BC5E8 - str r4, [sp] - ldr r5, _0809D2E4 @ =gMonIconTable - lsls r4, r0, 2 - adds r4, r5 - ldr r4, [r4] - str r4, [sp, 0x4] - ldr r4, _0809D2E8 @ =gSpriteAnimTable_83BC62C - str r4, [sp, 0x8] - ldr r4, _0809D2EC @ =gSpriteAffineAnimTable_83BC660 - str r4, [sp, 0xC] - str r1, [sp, 0x10] - ldr r1, _0809D2F0 @ =gMonIconPaletteIndices - adds r0, r1 - ldr r4, _0809D2F4 @ =0x0000dac0 - adds r1, r4, 0 - ldrb r0, [r0] - adds r1, r0 - mov r0, r8 - strh r1, [r0, 0x14] - lsls r2, 16 - asrs r2, 16 - lsls r6, 16 - asrs r6, 16 - mov r0, sp - adds r1, r2, 0 - adds r2, r6, 0 - bl CreateMonIconSprite - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - ldr r1, _0809D2F8 @ =gSprites - adds r0, r1 - bl UpdateMonIconFrame - adds r0, r4, 0 - add sp, 0x18 - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_0809D2E0: .4byte gOamData_83BC5E8 -_0809D2E4: .4byte gMonIconTable -_0809D2E8: .4byte gSpriteAnimTable_83BC62C -_0809D2EC: .4byte gSpriteAffineAnimTable_83BC660 -_0809D2F0: .4byte gMonIconPaletteIndices -_0809D2F4: .4byte 0x0000dac0 -_0809D2F8: .4byte gSprites - thumb_func_end unref_sub_809D26C - - thumb_func_start CreateMonIcon -CreateMonIcon: @ 809D2FC - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x30 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r0, [sp, 0x48] - ldr r1, [sp, 0x4C] - lsls r4, 16 - lsrs r4, 16 - lsls r2, 16 - lsrs r7, r2, 16 - lsls r3, 16 - lsrs r6, r3, 16 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - ldr r0, _0809D38C @ =gOamData_83BC5E8 - str r0, [sp, 0x18] - adds r0, r4, 0 - bl GetMonIconPtr - str r0, [sp, 0x1C] - ldr r0, _0809D390 @ =gSpriteAnimTable_83BC62C - str r0, [sp, 0x20] - ldr r0, _0809D394 @ =gSpriteAffineAnimTable_83BC660 - str r0, [sp, 0x24] - str r5, [sp, 0x28] - ldr r0, _0809D398 @ =gMonIconPaletteIndices - adds r0, r4, r0 - ldr r1, _0809D39C @ =0x0000dac0 - adds r5, r1, 0 - ldrb r0, [r0] - adds r1, r5, r0 - add r0, sp, 0x2C - strh r1, [r0] - add r1, sp, 0x18 - mov r0, sp - movs r2, 0x18 - bl memcpy - movs r0, 0xCE - lsls r0, 1 - cmp r4, r0 - bls _0809D35A - mov r0, sp - strh r5, [r0, 0x14] -_0809D35A: - lsls r1, r7, 16 - asrs r1, 16 - lsls r2, r6, 16 - asrs r2, 16 - mov r0, sp - mov r3, r8 - bl CreateMonIconSprite - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - ldr r1, _0809D3A0 @ =gSprites - adds r0, r1 - bl UpdateMonIconFrame - adds r0, r4, 0 - add sp, 0x30 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0809D38C: .4byte gOamData_83BC5E8 -_0809D390: .4byte gSpriteAnimTable_83BC62C -_0809D394: .4byte gSpriteAffineAnimTable_83BC660 -_0809D398: .4byte gMonIconPaletteIndices -_0809D39C: .4byte 0x0000dac0 -_0809D3A0: .4byte gSprites - thumb_func_end CreateMonIcon - - thumb_func_start sub_809D3A4 -sub_809D3A4: @ 809D3A4 - push {r4-r6,lr} - mov r6, r8 - push {r6} - sub sp, 0x18 - adds r6, r3, 0 - ldr r3, [sp, 0x2C] - lsls r0, 16 - lsrs r0, 16 - lsls r3, 24 - lsrs r3, 24 - mov r8, sp - ldr r4, _0809D418 @ =gOamData_83BC5E8 - str r4, [sp] - ldr r5, _0809D41C @ =gMonIconTable - lsls r4, r0, 2 - adds r4, r5 - ldr r4, [r4] - str r4, [sp, 0x4] - ldr r4, _0809D420 @ =gSpriteAnimTable_83BC62C - str r4, [sp, 0x8] - ldr r4, _0809D424 @ =gSpriteAffineAnimTable_83BC660 - str r4, [sp, 0xC] - str r1, [sp, 0x10] - ldr r1, _0809D428 @ =gMonIconPaletteIndices - adds r0, r1 - ldr r4, _0809D42C @ =0x0000dac0 - adds r1, r4, 0 - ldrb r0, [r0] - adds r1, r0 - mov r0, r8 - strh r1, [r0, 0x14] - lsls r2, 16 - asrs r2, 16 - lsls r6, 16 - asrs r6, 16 - mov r0, sp - adds r1, r2, 0 - adds r2, r6, 0 - bl CreateMonIconSprite - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - ldr r1, _0809D430 @ =gSprites - adds r0, r1 - bl UpdateMonIconFrame - adds r0, r4, 0 - add sp, 0x18 - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_0809D418: .4byte gOamData_83BC5E8 -_0809D41C: .4byte gMonIconTable -_0809D420: .4byte gSpriteAnimTable_83BC62C -_0809D424: .4byte gSpriteAffineAnimTable_83BC660 -_0809D428: .4byte gMonIconPaletteIndices -_0809D42C: .4byte 0x0000dac0 -_0809D430: .4byte gSprites - thumb_func_end sub_809D3A4 - - thumb_func_start mon_icon_convert_unown_species_id -mon_icon_convert_unown_species_id: @ 809D434 - push {lr} - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, SPECIES_UNOWN - bne _0809D45E - adds r0, r1, 0 - bl GetUnownLetterByPersonality - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0 - bne _0809D450 - movs r0, SPECIES_UNOWN - b _0809D45A -_0809D450: - movs r1, 0xCE - lsls r1, 1 - adds r0, r1 - lsls r0, 16 - lsrs r0, 16 -_0809D45A: - adds r1, r0, 0 - b _0809D46C -_0809D45E: - movs r0, 0xCE - lsls r0, 1 - adds r1, r2, 0 - cmp r1, r0 - bls _0809D46C - movs r1, 0x82 - lsls r1, 1 -_0809D46C: - adds r0, r1, 0 - pop {r1} - bx r1 - thumb_func_end mon_icon_convert_unown_species_id - - thumb_func_start GetUnownLetterByPersonality -GetUnownLetterByPersonality: @ 809D474 - push {lr} - adds r2, r0, 0 - movs r0, 0xC0 - lsls r0, 18 - ands r0, r2 - lsrs r0, 18 - movs r1, 0xC0 - lsls r1, 10 - ands r1, r2 - lsrs r1, 12 - orrs r0, r1 - movs r1, 0xC0 - lsls r1, 2 - ands r1, r2 - lsrs r1, 6 - orrs r0, r1 - movs r1, 0x3 - ands r1, r2 - orrs r0, r1 - movs r1, 0x1C - bl __umodsi3 - lsls r0, 16 - lsrs r0, 16 - pop {r1} - bx r1 - thumb_func_end GetUnownLetterByPersonality - - thumb_func_start sub_809D4A8 -sub_809D4A8: @ 809D4A8 - push {r4,lr} - sub sp, 0x4 - lsls r0, 16 - lsrs r4, r0, 16 - adds r0, r4, 0 - mov r1, sp - bl MailSpeciesToSpecies - lsls r0, 16 - lsrs r0, 16 - cmp r0, SPECIES_UNOWN - bne _0809D4DE - mov r0, sp - ldrh r0, [r0] - cmp r0, 0 - bne _0809D4CE - mov r1, sp - adds r0, SPECIES_UNOWN - b _0809D4D6 -_0809D4CE: - mov r1, sp - movs r2, 0xCE - lsls r2, 1 - adds r0, r2 -_0809D4D6: - strh r0, [r1] - mov r0, sp - ldrh r0, [r0] - b _0809D4EA -_0809D4DE: - adds r0, r4, 0 - movs r1, 0 - bl mon_icon_convert_unown_species_id - lsls r0, 16 - lsrs r0, 16 -_0809D4EA: - add sp, 0x4 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_809D4A8 - - thumb_func_start GetMonIconPtr -GetMonIconPtr: @ 809D4F4 - push {lr} - lsls r0, 16 - lsrs r0, 16 - bl mon_icon_convert_unown_species_id - lsls r0, 16 - ldr r1, _0809D50C @ =gMonIconTable - lsrs r0, 14 - adds r0, r1 - ldr r0, [r0] - pop {r1} - bx r1 - .align 2, 0 -_0809D50C: .4byte gMonIconTable - thumb_func_end GetMonIconPtr - - thumb_func_start sub_809D510 -sub_809D510: @ 809D510 - push {lr} - bl sub_809D7E8 - pop {r0} - bx r0 - thumb_func_end sub_809D510 - - thumb_func_start sub_809D51C -sub_809D51C: @ 809D51C - push {r4,r5,lr} - movs r4, 0 - ldr r5, _0809D53C @ =gMonIconPaletteTable -_0809D522: - lsls r0, r4, 3 - adds r0, r5 - bl LoadSpritePalette - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x5 - bls _0809D522 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0809D53C: .4byte gMonIconPaletteTable - thumb_func_end sub_809D51C - - thumb_func_start unref_sub_809D540 -unref_sub_809D540: @ 809D540 - push {r4,lr} - lsls r0, 16 - lsrs r1, r0, 16 - movs r0, 0xCE - lsls r0, 1 - cmp r1, r0 - bls _0809D552 - movs r1, 0x82 - lsls r1, 1 -_0809D552: - ldr r0, _0809D578 @ =gMonIconPaletteIndices - adds r0, r1, r0 - ldrb r0, [r0] - ldr r1, _0809D57C @ =gMonIconPaletteTable - lsls r0, 3 - adds r4, r0, r1 - ldrh r0, [r4, 0x4] - bl IndexOfSpritePaletteTag - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - bne _0809D572 - adds r0, r4, 0 - bl LoadSpritePalette -_0809D572: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0809D578: .4byte gMonIconPaletteIndices -_0809D57C: .4byte gMonIconPaletteTable - thumb_func_end unref_sub_809D540 - - thumb_func_start sub_809D580 -sub_809D580: @ 809D580 - push {r4,lr} - lsls r0, 16 - lsrs r0, 16 - ldr r1, _0809D5AC @ =gMonIconPaletteIndices - adds r0, r1 - ldrb r0, [r0] - ldr r1, _0809D5B0 @ =gMonIconPaletteTable - lsls r0, 3 - adds r4, r0, r1 - ldrh r0, [r4, 0x4] - bl IndexOfSpritePaletteTag - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - bne _0809D5A6 - adds r0, r4, 0 - bl LoadSpritePalette -_0809D5A6: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0809D5AC: .4byte gMonIconPaletteIndices -_0809D5B0: .4byte gMonIconPaletteTable - thumb_func_end sub_809D580 - - thumb_func_start unref_sub_809D5B4 -unref_sub_809D5B4: @ 809D5B4 - push {r4,r5,lr} - movs r4, 0 - ldr r5, _0809D5D4 @ =gMonIconPaletteTable -_0809D5BA: - lsls r0, r4, 3 - adds r0, r5 - ldrh r0, [r0, 0x4] - bl FreeSpritePaletteByTag - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x5 - bls _0809D5BA - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0809D5D4: .4byte gMonIconPaletteTable - thumb_func_end unref_sub_809D5B4 - - thumb_func_start unref_sub_809D5D8 -unref_sub_809D5D8: @ 809D5D8 - push {lr} - lsls r0, 16 - lsrs r1, r0, 16 - movs r0, 0xCE - lsls r0, 1 - cmp r1, r0 - bls _0809D5EA - movs r1, 0x82 - lsls r1, 1 -_0809D5EA: - ldr r0, _0809D600 @ =gMonIconPaletteIndices - adds r0, r1, r0 - ldrb r0, [r0] - ldr r1, _0809D604 @ =gMonIconPaletteTable - lsls r0, 3 - adds r0, r1 - ldrh r0, [r0, 0x4] - bl FreeSpritePaletteByTag - pop {r0} - bx r0 - .align 2, 0 -_0809D600: .4byte gMonIconPaletteIndices -_0809D604: .4byte gMonIconPaletteTable - thumb_func_end unref_sub_809D5D8 - - thumb_func_start sub_809D608 -sub_809D608: @ 809D608 - push {lr} - lsls r0, 16 - lsrs r0, 16 - ldr r1, _0809D624 @ =gMonIconPaletteIndices - adds r0, r1 - ldrb r0, [r0] - ldr r1, _0809D628 @ =gMonIconPaletteTable - lsls r0, 3 - adds r0, r1 - ldrh r0, [r0, 0x4] - bl FreeSpritePaletteByTag - pop {r0} - bx r0 - .align 2, 0 -_0809D624: .4byte gMonIconPaletteIndices -_0809D628: .4byte gMonIconPaletteTable - thumb_func_end sub_809D608 - - thumb_func_start sub_809D62C -sub_809D62C: @ 809D62C - push {lr} - bl UpdateMonIconFrame - pop {r0} - bx r0 - thumb_func_end sub_809D62C - - thumb_func_start UpdateMonIconFrame -UpdateMonIconFrame: @ 809D638 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - adds r4, r0, 0 - movs r7, 0 - adds r6, r4, 0 - adds r6, 0x2C - ldrb r2, [r6] - movs r0, 0x3F - mov r9, r0 - ands r0, r2 - cmp r0, 0 - bne _0809D6EC - movs r1, 0x2A - adds r1, r4 - mov r8, r1 - ldrb r1, [r1] - ldr r0, [r4, 0x8] - lsls r1, 2 - adds r1, r0 - adds r5, r4, 0 - adds r5, 0x2B - ldrb r0, [r5] - ldr r1, [r1] - lsls r0, 2 - adds r0, r1 - movs r1, 0 - ldrsh r3, [r0, r1] - movs r0, 0x2 - negs r0, r0 - cmp r3, r0 - beq _0809D682 - adds r0, 0x1 - cmp r3, r0 - bne _0809D686 - b _0809D700 -_0809D682: - strb r7, [r5] - b _0809D700 -_0809D686: - ldr r2, _0809D6E4 @ =gSpriteImageSizes - ldrb r1, [r4, 0x3] - lsrs r1, 6 - lsls r1, 1 - ldrb r0, [r4, 0x1] - lsrs r0, 6 - lsls r0, 3 - adds r1, r0 - adds r1, r2 - ldrh r2, [r1] - adds r1, r2, 0 - muls r1, r3 - ldr r0, [r4, 0xC] - adds r0, r1 - ldrh r1, [r4, 0x4] - lsls r1, 22 - lsrs r1, 17 - ldr r3, _0809D6E8 @ =0x06010000 - adds r1, r3 - bl RequestSpriteCopy - mov r0, r8 - ldrb r1, [r0] - ldr r0, [r4, 0x8] - lsls r1, 2 - adds r1, r0 - ldrb r0, [r5] - ldr r1, [r1] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - lsls r0, 10 - lsrs r0, 26 - mov r1, r9 - ands r1, r0 - ldrb r2, [r6] - movs r0, 0x40 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r6] - ldrb r0, [r5] - adds r0, 0x1 - strb r0, [r5] - ldrb r7, [r5] - b _0809D700 - .align 2, 0 -_0809D6E4: .4byte gSpriteImageSizes -_0809D6E8: .4byte 0x06010000 -_0809D6EC: - lsls r0, r2, 26 - lsrs r0, 26 - subs r0, 0x1 - movs r1, 0x3F - ands r0, r1 - movs r1, 0x40 - negs r1, r1 - ands r1, r2 - orrs r1, r0 - strb r1, [r6] -_0809D700: - adds r0, r7, 0 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end UpdateMonIconFrame - - thumb_func_start CreateMonIconSprite -CreateMonIconSprite: @ 809D710 - push {r4-r6,lr} - mov r6, r9 - mov r5, r8 - push {r5,r6} - sub sp, 0x38 - mov r9, r0 - adds r4, r1, 0 - adds r5, r2, 0 - mov r8, r3 - lsls r4, 16 - lsrs r4, 16 - lsls r5, 16 - lsrs r5, 16 - mov r0, r8 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - movs r0, 0 - str r0, [sp, 0x30] - ldr r2, _0809D7D8 @ =gSpriteImageSizes - mov r0, r9 - ldr r6, [r0] - ldrb r1, [r6, 0x3] - lsrs r1, 6 - lsls r1, 1 - ldrb r0, [r6, 0x1] - lsrs r0, 6 - lsls r0, 3 - adds r1, r0 - adds r1, r2 - ldrh r2, [r1] - ldr r1, _0809D7DC @ =0xffff0000 - add r3, sp, 0x30 - ldr r0, [r3, 0x4] - ands r0, r1 - orrs r0, r2 - str r0, [r3, 0x4] - add r1, sp, 0x18 - ldr r0, _0809D7E0 @ =0x0000ffff - strh r0, [r1] - mov r0, r9 - ldrh r2, [r0, 0x14] - mov r0, sp - adds r0, 0x1A - strh r2, [r0] - str r6, [sp, 0x1C] - mov r2, r9 - ldr r0, [r2, 0x8] - str r0, [sp, 0x20] - str r3, [sp, 0x24] - ldr r0, [r2, 0xC] - str r0, [sp, 0x28] - ldr r0, [r2, 0x10] - str r0, [sp, 0x2C] - mov r0, sp - movs r2, 0x18 - bl memcpy - lsls r4, 16 - asrs r4, 16 - lsls r5, 16 - asrs r5, 16 - mov r0, sp - adds r1, r4, 0 - adds r2, r5, 0 - mov r3, r8 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - ldr r6, _0809D7E4 @ =gSprites - lsls r3, r0, 4 - adds r3, r0 - lsls r3, 2 - adds r4, r3, r6 - adds r5, r4, 0 - adds r5, 0x2C - ldrb r1, [r5] - movs r2, 0x40 - orrs r1, r2 - strb r1, [r5] - adds r4, 0x3F - ldrb r2, [r4] - movs r1, 0x5 - negs r1, r1 - ands r1, r2 - strb r1, [r4] - adds r6, 0xC - adds r3, r6 - mov r2, r9 - ldr r1, [r2, 0x4] - str r1, [r3] - add sp, 0x38 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_0809D7D8: .4byte gSpriteImageSizes -_0809D7DC: .4byte 0xffff0000 -_0809D7E0: .4byte 0x0000ffff -_0809D7E4: .4byte gSprites - thumb_func_end CreateMonIconSprite - - thumb_func_start sub_809D7E8 -sub_809D7E8: @ 809D7E8 - push {lr} - sub sp, 0x8 - movs r1, 0 - str r1, [sp] - ldr r3, _0809D81C @ =gSpriteImageSizes - ldrb r2, [r0, 0x3] - lsrs r2, 6 - lsls r2, 1 - ldrb r1, [r0, 0x1] - lsrs r1, 6 - lsls r1, 3 - adds r2, r1 - adds r2, r3 - ldrh r3, [r2] - ldr r2, _0809D820 @ =0xffff0000 - ldr r1, [sp, 0x4] - ands r1, r2 - orrs r1, r3 - str r1, [sp, 0x4] - mov r1, sp - str r1, [r0, 0xC] - bl DestroySprite - add sp, 0x8 - pop {r0} - bx r0 - .align 2, 0 -_0809D81C: .4byte gSpriteImageSizes -_0809D820: .4byte 0xffff0000 - thumb_func_end sub_809D7E8 - - thumb_func_start sub_809D824 -sub_809D824: @ 809D824 - mov r12, r0 - adds r0, 0x2A - movs r3, 0 - strb r1, [r0] - mov r2, r12 - adds r2, 0x2C - ldrb r1, [r2] - movs r0, 0x40 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - mov r0, r12 - adds r0, 0x2B - strb r3, [r0] - bx lr - thumb_func_end sub_809D824 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/pokemon_menu.s b/asm/pokemon_menu.s deleted file mode 100644 index 3a1552f70..000000000 --- a/asm/pokemon_menu.s +++ /dev/null @@ -1,3438 +0,0 @@ - .include "constants/gba_constants.inc" - .include "constants/species_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start sub_8089A70 -sub_8089A70: @ 8089A70 - push {lr} - ldr r0, _08089A88 @ =gPaletteFade - ldrb r1, [r0, 0x8] - movs r2, 0x80 - orrs r1, r2 - strb r1, [r0, 0x8] - movs r0, 0 - movs r1, 0 - bl OpenPartyMenu - pop {r0} - bx r0 - .align 2, 0 -_08089A88: .4byte gPaletteFade - thumb_func_end sub_8089A70 - - thumb_func_start sub_8089A8C -sub_8089A8C: @ 8089A8C - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r5, _08089AD0 @ =gUnknown_0202FFA9 - movs r0, 0 - strb r0, [r5] - ldr r0, _08089AD4 @ =gLastFieldPokeMenuOpened - ldrb r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08089AD8 @ =gPlayerParty - adds r0, r1 - movs r1, 0x2D - bl GetMonData - cmp r0, 0 - beq _08089AE0 - ldr r4, _08089ADC @ =gUnknown_0202FFAA - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0 - bl AppendToList - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x1 - bl AppendToList - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x3 - bl AppendToList - b _08089BC8 - .align 2, 0 -_08089AD0: .4byte gUnknown_0202FFA9 -_08089AD4: .4byte gLastFieldPokeMenuOpened -_08089AD8: .4byte gPlayerParty -_08089ADC: .4byte gUnknown_0202FFAA -_08089AE0: - movs r6, 0 - ldr r0, _08089B24 @ =gUnknown_0839F554 - ldrh r0, [r0] - mov r8, r0 -_08089AE8: - movs r4, 0 - adds r7, r6, 0x1 - mov r0, r8 - cmp r0, 0xFF - beq _08089B48 - ldr r5, _08089B24 @ =gUnknown_0839F554 -_08089AF4: - ldr r0, _08089B28 @ =gLastFieldPokeMenuOpened - ldrb r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08089B2C @ =gPlayerParty - adds r0, r1 - adds r1, r6, 0 - adds r1, 0xD - bl GetMonData - lsls r1, r4, 1 - adds r1, r5 - ldrh r1, [r1] - cmp r0, r1 - bne _08089B38 - adds r2, r4, 0 - adds r2, 0xA - lsls r2, 24 - lsrs r2, 24 - ldr r0, _08089B30 @ =gUnknown_0202FFAA - ldr r1, _08089B34 @ =gUnknown_0202FFA9 - bl AppendToList - b _08089B48 - .align 2, 0 -_08089B24: .4byte gUnknown_0839F554 -_08089B28: .4byte gLastFieldPokeMenuOpened -_08089B2C: .4byte gPlayerParty -_08089B30: .4byte gUnknown_0202FFAA -_08089B34: .4byte gUnknown_0202FFA9 -_08089B38: - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - lsls r0, r4, 1 - adds r0, r5 - ldrh r0, [r0] - cmp r0, 0xFF - bne _08089AF4 -_08089B48: - lsls r0, r7, 16 - lsrs r6, r0, 16 - cmp r6, 0x3 - bls _08089AE8 - ldr r4, _08089BA4 @ =gUnknown_0202FFAA - ldr r5, _08089BA8 @ =gUnknown_0202FFA9 - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0 - bl AppendToList - ldr r6, _08089BAC @ =gPlayerParty + 1 * 0x64 - adds r0, r6, 0 - movs r1, 0xB - bl GetMonData - cmp r0, 0 - beq _08089B76 - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x1 - bl AppendToList -_08089B76: - ldr r0, _08089BB0 @ =gLastFieldPokeMenuOpened - ldrb r1, [r0] - movs r0, 0x64 - muls r0, r1 - adds r1, r6, 0 - subs r1, 0x64 - adds r0, r1 - movs r1, 0xC - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - bl ItemIsMail - lsls r0, 24 - cmp r0, 0 - beq _08089BB4 - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x7 - bl AppendToList - b _08089BBE - .align 2, 0 -_08089BA4: .4byte gUnknown_0202FFAA -_08089BA8: .4byte gUnknown_0202FFA9 -_08089BAC: .4byte gPlayerParty + 1 * 0x64 -_08089BB0: .4byte gLastFieldPokeMenuOpened -_08089BB4: - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x2 - bl AppendToList -_08089BBE: - ldr r0, _08089BD4 @ =gUnknown_0202FFAA - ldr r1, _08089BD8 @ =gUnknown_0202FFA9 - movs r2, 0x3 - bl AppendToList -_08089BC8: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08089BD4: .4byte gUnknown_0202FFAA -_08089BD8: .4byte gUnknown_0202FFA9 - thumb_func_end sub_8089A8C - - thumb_func_start sub_8089BDC -sub_8089BDC: @ 8089BDC - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - adds r5, r0, 0 - adds r6, r1, 0 - adds r4, r2, 0 - mov r8, r3 - ldr r7, [sp, 0x20] - ldr r1, [sp, 0x24] - lsls r5, 24 - lsrs r5, 24 - lsls r6, 24 - lsrs r6, 24 - lsls r4, 24 - lsrs r4, 24 - mov r0, r8 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - lsls r1, 24 - lsrs r1, 24 - movs r0, 0x5 - bl sub_806D538 - adds r4, r5, r4 - lsls r4, 24 - lsrs r4, 24 - mov r0, r8 - lsls r3, r0, 1 - adds r3, r6, r3 - adds r3, 0x1 - lsls r3, 24 - lsrs r3, 24 - adds r0, r5, 0 - adds r1, r6, 0 - adds r2, r4, 0 - bl MenuDrawTextWindow - adds r5, 0x1 - lsls r5, 24 - lsrs r5, 24 - adds r6, 0x1 - lsls r6, 24 - lsrs r6, 24 - str r7, [sp] - adds r0, r5, 0 - adds r1, r6, 0 - mov r2, r8 - ldr r3, [sp, 0x1C] - bl PrintMenuItemsReordered - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8089BDC - - thumb_func_start sub_8089C50 -sub_8089C50: @ 8089C50 - push {r4,r5,lr} - sub sp, 0xC - ldr r4, [sp, 0x18] - ldr r5, [sp, 0x1C] - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r1, 24 - lsls r2, 24 - lsrs r2, 24 - lsls r3, 24 - lsrs r3, 24 - str r4, [sp] - str r5, [sp, 0x4] - movs r4, 0x1 - str r4, [sp, 0x8] - bl sub_8089BDC - add sp, 0xC - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8089C50 - - thumb_func_start sub_8089C7C -sub_8089C7C: @ 8089C7C - push {r4-r6,lr} - sub sp, 0xC - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - ldr r6, _08089CC8 @ =gUnknown_0202FFA9 - ldrb r0, [r6] - lsls r0, 1 - movs r4, 0x12 - subs r4, r0 - lsls r4, 24 - lsrs r4, 24 - ldrb r3, [r6] - ldr r0, _08089CCC @ =gPokemonMenuActions - str r0, [sp] - ldr r0, _08089CD0 @ =gUnknown_0202FFAA - str r0, [sp, 0x4] - movs r0, 0x3 - str r0, [sp, 0x8] - movs r0, 0x13 - adds r1, r4, 0 - movs r2, 0xA - bl sub_8089BDC - movs r2, 0x1 - orrs r2, r4 - ldrb r3, [r6] - str r5, [sp] - movs r0, 0x9 - str r0, [sp, 0x4] - movs r0, 0 - movs r1, 0x14 - bl InitMenu - add sp, 0xC - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08089CC8: .4byte gUnknown_0202FFA9 -_08089CCC: .4byte gPokemonMenuActions -_08089CD0: .4byte gUnknown_0202FFAA - thumb_func_end sub_8089C7C - - thumb_func_start sub_8089CD4 -sub_8089CD4: @ 8089CD4 - push {r4,r5,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _08089D00 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0 - bne _08089D84 - adds r0, r4, 0 - bl sub_806BD80 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1 - beq _08089D04 - cmp r0, 0x2 - beq _08089D60 - b _08089D84 - .align 2, 0 -_08089D00: .4byte gPaletteFade -_08089D04: - movs r0, 0x5 - bl PlaySE - adds r0, r4, 0 - bl sub_806CA38 - ldr r1, _08089D48 @ =gLastFieldPokeMenuOpened - strb r0, [r1] - ldrb r1, [r1] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08089D4C @ =gPlayerParty - adds r0, r1 - ldr r1, _08089D50 @ =gStringVar1 - bl GetMonNickname - bl sub_8089A8C - ldr r0, _08089D54 @ =gUnknown_0202FFA8 - strb r5, [r0] - movs r0, 0 - bl sub_8089C7C - ldr r1, _08089D58 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _08089D5C @ =sub_8089D94 - str r1, [r0] - adds r0, r4, 0 - bl sub_808B5B4 - b _08089D84 - .align 2, 0 -_08089D48: .4byte gLastFieldPokeMenuOpened -_08089D4C: .4byte gPlayerParty -_08089D50: .4byte gStringVar1 -_08089D54: .4byte gUnknown_0202FFA8 -_08089D58: .4byte gTasks -_08089D5C: .4byte sub_8089D94 -_08089D60: - movs r0, 0x5 - bl PlaySE - movs r0, 0x1 - negs r0, r0 - str r5, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r1, _08089D8C @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _08089D90 @ =sub_8089E4C - str r1, [r0] -_08089D84: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08089D8C: .4byte gTasks -_08089D90: .4byte sub_8089E4C - thumb_func_end sub_8089CD4 - - thumb_func_start sub_8089D94 -sub_8089D94: @ 8089D94 - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - adds r5, r4, 0 - ldr r0, _08089DC8 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08089E44 - ldr r2, _08089DCC @ =gMain - ldrh r0, [r2, 0x30] - movs r1, 0xF0 - ands r1, r0 - cmp r1, 0x40 - bne _08089DD4 - movs r0, 0x5 - bl PlaySE - movs r0, 0x1 - negs r0, r0 - bl MoveMenuCursor - ldr r1, _08089DD0 @ =gUnknown_0202FFA8 - strb r0, [r1] - b _08089E1A - .align 2, 0 -_08089DC8: .4byte gPaletteFade -_08089DCC: .4byte gMain -_08089DD0: .4byte gUnknown_0202FFA8 -_08089DD4: - cmp r1, 0x80 - bne _08089DF0 - movs r0, 0x5 - bl PlaySE - movs r0, 0x1 - bl MoveMenuCursor - ldr r1, _08089DEC @ =gUnknown_0202FFA8 - strb r0, [r1] - b _08089E1A - .align 2, 0 -_08089DEC: .4byte gUnknown_0202FFA8 -_08089DF0: - ldrh r1, [r2, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08089E30 - movs r0, 0x5 - bl PlaySE - ldr r1, _08089E24 @ =gPokemonMenuActions - ldr r2, _08089E28 @ =gUnknown_0202FFAA - ldr r0, _08089E2C @ =gUnknown_0202FFA8 - ldrb r0, [r0] - adds r0, r2 - ldrb r0, [r0] - lsls r0, 3 - adds r1, 0x4 - adds r0, r1 - ldr r1, [r0] - adds r0, r4, 0 - bl _call_via_r1 -_08089E1A: - adds r0, r4, 0 - bl sub_808B5B4 - b _08089E44 - .align 2, 0 -_08089E24: .4byte gPokemonMenuActions -_08089E28: .4byte gUnknown_0202FFAA -_08089E2C: .4byte gUnknown_0202FFA8 -_08089E30: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08089E44 - adds r0, r5, 0 - bl PokemonMenu_Cancel - adds r0, r5, 0 - bl sub_808B5B4 -_08089E44: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8089D94 - - thumb_func_start sub_8089E4C -sub_8089E4C: @ 8089E4C - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _08089E78 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _08089E72 - ldr r0, _08089E7C @ =gLastFieldPokeMenuOpened - strb r1, [r0] - ldr r0, _08089E80 @ =sub_805469C - bl SetMainCallback2 - adds r0, r4, 0 - bl DestroyTask -_08089E72: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08089E78: .4byte gPaletteFade -_08089E7C: .4byte gLastFieldPokeMenuOpened -_08089E80: .4byte sub_805469C - thumb_func_end sub_8089E4C - - thumb_func_start sub_8089E84 -sub_8089E84: @ 8089E84 - push {lr} - ldr r0, _08089EAC @ =gLastFieldPokeMenuOpened - ldrb r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08089EB0 @ =gPlayerParty - adds r0, r1 - ldr r1, _08089EB4 @ =gStringVar1 - bl GetMonNickname - bl sub_8089A8C - ldr r1, _08089EB8 @ =gUnknown_0202FFA8 - movs r0, 0 - strb r0, [r1] - movs r0, 0 - bl sub_8089C7C - pop {r0} - bx r0 - .align 2, 0 -_08089EAC: .4byte gLastFieldPokeMenuOpened -_08089EB0: .4byte gPlayerParty -_08089EB4: .4byte gStringVar1 -_08089EB8: .4byte gUnknown_0202FFA8 - thumb_func_end sub_8089E84 - - thumb_func_start sub_8089EBC -sub_8089EBC: @ 8089EBC - push {r4,r5,lr} - ldr r4, _08089EC4 @ =0x0201b260 - ldr r5, _08089EC8 @ =gUnknown_020384F0 - b _08089ED8 - .align 2, 0 -_08089EC4: .4byte 0x0201b260 -_08089EC8: .4byte gUnknown_020384F0 -_08089ECC: - bl sub_80F9344 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _08089F04 -_08089ED8: - bl sub_806B124 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08089ECC - ldrb r0, [r4] - ldrb r1, [r5] - bl sub_806C994 - ldrb r0, [r4] - movs r1, 0 - bl sub_806BF74 - ldr r1, _08089F0C @ =gLastFieldPokeMenuOpened - ldrb r0, [r5] - strb r0, [r1] - bl sub_8089E84 - ldr r0, _08089F10 @ =sub_806AEDC - bl SetMainCallback2 -_08089F04: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08089F0C: .4byte gLastFieldPokeMenuOpened -_08089F10: .4byte sub_806AEDC - thumb_func_end sub_8089EBC - - thumb_func_start sub_8089F14 -sub_8089F14: @ 8089F14 - push {lr} - ldr r2, _08089F38 @ =gPaletteFade - ldrb r0, [r2, 0x8] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2, 0x8] - ldr r2, _08089F3C @ =sub_8089D94 - movs r0, 0 - movs r1, 0xFF - movs r3, 0x5 - bl sub_806AF4C - ldr r0, _08089F40 @ =sub_8089EBC - bl SetMainCallback2 - pop {r0} - bx r0 - .align 2, 0 -_08089F38: .4byte gPaletteFade -_08089F3C: .4byte sub_8089D94 -_08089F40: .4byte sub_8089EBC - thumb_func_end sub_8089F14 - - thumb_func_start sub_8089F44 -sub_8089F44: @ 8089F44 - push {r4,r5,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r3, r0, 24 - ldr r0, _08089FAC @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0 - bne _08089FA2 - ldr r2, _08089FB0 @ =gSprites - ldr r1, _08089FB4 @ =gTasks - lsls r0, r3, 2 - adds r0, r3 - lsls r0, 3 - adds r0, r1 - ldrh r1, [r0, 0xE] - lsls r1, 16 - asrs r1, 24 - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r4, [r0, 0x2E] - lsls r4, 24 - lsrs r4, 24 - adds r0, r3, 0 - bl DestroyTask - ldr r0, _08089FB8 @ =0x0201b000 - ldr r1, _08089FBC @ =0x00000262 - adds r0, r1 - movs r1, 0x1 - strb r1, [r0] - ldr r0, _08089FC0 @ =gPlayerParty - ldr r1, _08089FC4 @ =gPlayerPartyCount - ldrb r2, [r1] - subs r2, 0x1 - lsls r2, 24 - lsrs r2, 24 - ldr r3, _08089FC8 @ =sub_8089F14 - str r5, [sp] - adds r1, r4, 0 - bl ShowPokemonSummaryScreen -_08089FA2: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08089FAC: .4byte gPaletteFade -_08089FB0: .4byte gSprites -_08089FB4: .4byte gTasks -_08089FB8: .4byte 0x0201b000 -_08089FBC: .4byte 0x00000262 -_08089FC0: .4byte gPlayerParty -_08089FC4: .4byte gPlayerPartyCount -_08089FC8: .4byte sub_8089F14 - thumb_func_end sub_8089F44 - - thumb_func_start PokemonMenu_Summary -PokemonMenu_Summary: @ 8089FCC - push {r4,lr} - sub sp, 0x4 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r1, _08089FFC @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _0808A000 @ =sub_8089F44 - str r1, [r0] - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08089FFC: .4byte gTasks -_0808A000: .4byte sub_8089F44 - thumb_func_end PokemonMenu_Summary - - thumb_func_start sub_808A004 -sub_808A004: @ 808A004 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0808A024 @ =sub_806CA60 - ldr r2, _0808A028 @ =sub_8089CD4 - bl SetTaskFuncWithFollowupFunc - movs r0, 0x13 - movs r1, 0 - movs r2, 0x1D - movs r3, 0x13 - bl MenuZeroFillWindowRect - pop {r0} - bx r0 - .align 2, 0 -_0808A024: .4byte sub_806CA60 -_0808A028: .4byte sub_8089CD4 - thumb_func_end sub_808A004 - - thumb_func_start PokemonMenu_Switch -PokemonMenu_Switch: @ 808A02C - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl HandleDestroyMenuCursors - ldr r0, _0808A054 @ =0x02001000 - ldr r1, _0808A058 @ =sub_806CD5C - str r1, [r0, 0xC] - ldr r1, _0808A05C @ =0x0001a272 - adds r0, r1 - movs r1, 0x1 - strh r1, [r0] - adds r0, r4, 0 - bl sub_808A004 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808A054: .4byte 0x02001000 -_0808A058: .4byte sub_806CD5C -_0808A05C: .4byte 0x0001a272 - thumb_func_end PokemonMenu_Switch - - thumb_func_start sub_808A060 -sub_808A060: @ 808A060 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, _0808A0D0 @ =gMain - ldrh r0, [r0, 0x2E] - cmp r0, 0x40 - bne _0808A086 - ldr r4, _0808A0D4 @ =gUnknown_0202FFA8 - ldrb r0, [r4] - cmp r0, 0 - beq _0808A086 - movs r0, 0x1 - negs r0, r0 - bl MoveMenuCursor - strb r0, [r4] - movs r0, 0x5 - bl PlaySE -_0808A086: - ldr r0, _0808A0D0 @ =gMain - ldrh r0, [r0, 0x2E] - cmp r0, 0x80 - bne _0808A0A4 - ldr r4, _0808A0D4 @ =gUnknown_0202FFA8 - ldrb r0, [r4] - cmp r0, 0x2 - beq _0808A0A4 - movs r0, 0x1 - bl MoveMenuCursor - strb r0, [r4] - movs r0, 0x5 - bl PlaySE -_0808A0A4: - ldr r0, _0808A0D0 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0808A0E0 - movs r0, 0x5 - bl PlaySE - ldr r1, _0808A0D8 @ =gUnknown_0839F578 - ldr r2, _0808A0DC @ =gPokemonMenuActions - ldr r0, _0808A0D4 @ =gUnknown_0202FFA8 - ldrb r3, [r0] - movs r0, 0 - bl PartyMenuGetPopupMenuFunc - adds r1, r0, 0 - adds r0, r5, 0 - bl _call_via_r1 - b _0808A0F6 - .align 2, 0 -_0808A0D0: .4byte gMain -_0808A0D4: .4byte gUnknown_0202FFA8 -_0808A0D8: .4byte gUnknown_0839F578 -_0808A0DC: .4byte gPokemonMenuActions -_0808A0E0: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0808A0F6 - ldr r1, _0808A0FC @ =gUnknown_0839F578 - movs r0, 0 - bl sub_806E7D0 - adds r0, r5, 0 - bl PokemonMenu_CancelSubmenu -_0808A0F6: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0808A0FC: .4byte gUnknown_0839F578 - thumb_func_end sub_808A060 - - thumb_func_start sub_808A100 -sub_808A100: @ 808A100 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r1, _0808A130 @ =gUnknown_0839F578 - ldr r2, _0808A134 @ =gPokemonMenuActions - movs r0, 0 - movs r3, 0 - bl sub_806E750 - movs r0, 0xD - movs r1, 0x2 - bl sub_806D538 - ldr r1, _0808A138 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _0808A13C @ =sub_808A060 - str r1, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808A130: .4byte gUnknown_0839F578 -_0808A134: .4byte gPokemonMenuActions -_0808A138: .4byte gTasks -_0808A13C: .4byte sub_808A060 - thumb_func_end sub_808A100 - - thumb_func_start PokemonMenu_Item -PokemonMenu_Item: @ 808A140 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl HandleDestroyMenuCursors - ldr r1, _0808A174 @ =gUnknown_0202FFA8 - movs r0, 0 - strb r0, [r1] - movs r0, 0x13 - movs r1, 0 - movs r2, 0x1D - movs r3, 0x13 - bl MenuZeroFillWindowRect - ldr r1, _0808A178 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _0808A17C @ =sub_808A100 - str r1, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808A174: .4byte gUnknown_0202FFA8 -_0808A178: .4byte gTasks -_0808A17C: .4byte sub_808A100 - thumb_func_end PokemonMenu_Item - - thumb_func_start sub_808A180 -sub_808A180: @ 808A180 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, _0808A1D0 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0808A1CA - adds r0, r5, 0 - bl sub_806CA38 - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x64 - muls r0, r1 - ldr r1, _0808A1D4 @ =gPlayerParty - adds r0, r1 - movs r1, 0x40 - bl GetMonData - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r5, 0 - bl DestroyTask - lsls r1, r4, 3 - adds r1, r4 - lsls r1, 2 - ldr r0, _0808A1D8 @ =gSaveBlock1 + 0x2B4C - adds r1, r0 - ldr r2, _0808A1DC @ =sub_808A520 - movs r0, 0x4 - movs r3, 0x3 - bl sub_80E62A0 -_0808A1CA: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0808A1D0: .4byte gPaletteFade -_0808A1D4: .4byte gPlayerParty -_0808A1D8: .4byte gSaveBlock1 + 0x2B4C -_0808A1DC: .4byte sub_808A520 - thumb_func_end sub_808A180 - - thumb_func_start sub_808A1E0 -sub_808A1E0: @ 808A1E0 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0808A21C @ =gUnknown_0202E8F6 - ldrb r0, [r0] - cmp r0, 0x1 - beq _0808A216 - adds r0, r4, 0 - bl sub_806CA38 - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl SetHeldItemIconVisibility - movs r0, 0 - movs r1, 0 - bl sub_806D538 - ldr r1, _0808A220 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _0808A224 @ =sub_8089CD4 - str r1, [r0] -_0808A216: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808A21C: .4byte gUnknown_0202E8F6 -_0808A220: .4byte gTasks -_0808A224: .4byte sub_8089CD4 - thumb_func_end sub_808A1E0 - - thumb_func_start sub_808A228 -sub_808A228: @ 808A228 - push {r4,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0808A268 @ =gScriptItemId - ldrh r0, [r0] - bl ItemIsMail - lsls r0, 24 - cmp r0, 0 - beq _0808A278 - ldr r0, _0808A26C @ =gUnknown_0202E8F4 - ldrb r0, [r0] - cmp r0, 0 - beq _0808A278 - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r1, _0808A270 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _0808A274 @ =sub_808A180 - str r1, [r0] - b _0808A29A - .align 2, 0 -_0808A268: .4byte gScriptItemId -_0808A26C: .4byte gUnknown_0202E8F4 -_0808A270: .4byte gTasks -_0808A274: .4byte sub_808A180 -_0808A278: - movs r0, 0 - movs r1, 0 - movs r2, 0x1D - movs r3, 0x13 - bl MenuZeroFillWindowRect - movs r0, 0 - movs r1, 0 - bl sub_806D538 - ldr r0, _0808A2A4 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _0808A2A8 @ =sub_8089CD4 - str r0, [r1] -_0808A29A: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808A2A4: .4byte gTasks -_0808A2A8: .4byte sub_8089CD4 - thumb_func_end sub_808A228 - - thumb_func_start sub_808A2AC -sub_808A2AC: @ 808A2AC - push {lr} - lsls r0, 24 - lsrs r3, r0, 24 - ldr r0, _0808A2D0 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0808A2CA - ldr r0, _0808A2D4 @ =gScriptItemId - ldrh r1, [r0] - ldr r2, _0808A2D8 @ =sub_808A228 - adds r0, r3, 0 - bl PartyMenuTryGiveMonHeldItem -_0808A2CA: - pop {r0} - bx r0 - .align 2, 0 -_0808A2D0: .4byte gPaletteFade -_0808A2D4: .4byte gScriptItemId -_0808A2D8: .4byte sub_808A228 - thumb_func_end sub_808A2AC - - thumb_func_start sub_808A2DC -sub_808A2DC: @ 808A2DC - push {r4,r5,lr} - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - adds r0, r5, 0 - bl sub_806CA38 - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x64 - muls r0, r1 - ldr r1, _0808A324 @ =gPlayerParty - adds r0, r1 - movs r1, 0x40 - bl GetMonData - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r5, 0 - bl DestroyTask - lsls r1, r4, 3 - adds r1, r4 - lsls r1, 2 - ldr r0, _0808A328 @ =gSaveBlock1 + 0x2B4C - adds r1, r0 - ldr r2, _0808A32C @ =sub_808A520 - movs r0, 0x4 - movs r3, 0x3 - bl sub_80E62A0 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0808A324: .4byte gPlayerParty -_0808A328: .4byte gSaveBlock1 + 0x2B4C -_0808A32C: .4byte sub_808A520 - thumb_func_end sub_808A2DC - - thumb_func_start sub_808A330 -sub_808A330: @ 808A330 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0808A344 @ =gScriptItemId - ldrh r1, [r1] - ldr r2, _0808A348 @ =sub_808A2DC - bl PartyMenuTryGiveMonHeldItem - pop {r0} - bx r0 - .align 2, 0 -_0808A344: .4byte gScriptItemId -_0808A348: .4byte sub_808A2DC - thumb_func_end sub_808A330 - - thumb_func_start sub_808A34C -sub_808A34C: @ 808A34C - push {lr} - bl RunTasks - pop {r0} - bx r0 - thumb_func_end sub_808A34C - - thumb_func_start sub_808A358 -sub_808A358: @ 808A358 - push {r4,lr} - ldr r4, _0808A360 @ =0x0201b260 - b _0808A370 - .align 2, 0 -_0808A360: .4byte 0x0201b260 -_0808A364: - bl sub_80F9344 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _0808A394 -_0808A370: - bl sub_806B124 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0808A364 - ldrb r0, [r4] - ldr r1, _0808A39C @ =gLastFieldPokeMenuOpened - ldrb r1, [r1] - bl sub_806C994 - ldrb r0, [r4] - movs r1, 0 - bl sub_806BF74 - ldr r0, _0808A3A0 @ =sub_806AEDC - bl SetMainCallback2 -_0808A394: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808A39C: .4byte gLastFieldPokeMenuOpened -_0808A3A0: .4byte sub_806AEDC - thumb_func_end sub_808A358 - - thumb_func_start sub_808A3A4 -sub_808A3A4: @ 808A3A4 - push {r4,r5,lr} - ldr r4, _0808A3D8 @ =0x0201b260 - adds r5, r4, 0x2 -_0808A3AA: - bl sub_806B124 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0808A3E4 - ldrb r0, [r4] - ldr r1, _0808A3DC @ =gLastFieldPokeMenuOpened - ldrb r1, [r1] - bl sub_806C994 - ldrb r0, [r4] - movs r1, 0 - bl sub_806BF74 - movs r0, 0x3 - strb r0, [r5] - bl sub_8089E84 - ldr r0, _0808A3E0 @ =sub_806AEDC - bl SetMainCallback2 - b _0808A3F0 - .align 2, 0 -_0808A3D8: .4byte 0x0201b260 -_0808A3DC: .4byte gLastFieldPokeMenuOpened -_0808A3E0: .4byte sub_806AEDC -_0808A3E4: - bl sub_80F9344 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0808A3AA -_0808A3F0: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_808A3A4 - - thumb_func_start sub_808A3F8 -sub_808A3F8: @ 808A3F8 - push {r4,lr} - ldr r0, _0808A460 @ =gScriptItemId - ldrh r0, [r0] - bl ItemIsMail - lsls r0, 24 - cmp r0, 0 - beq _0808A47E - ldr r0, _0808A464 @ =sub_808A330 - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r4, r0, 24 - ldr r2, _0808A468 @ =gPaletteFade - ldrb r0, [r2, 0x8] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2, 0x8] - adds r0, r4, 0 - movs r1, 0 - bl sub_806BD58 - ldr r0, _0808A46C @ =gLastFieldPokeMenuOpened - ldrb r1, [r0] - adds r0, r4, 0 - bl sub_806C994 - adds r0, r4, 0 - movs r1, 0 - bl sub_806BF74 - adds r0, r4, 0 - bl sub_806CA38 - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x64 - muls r0, r1 - ldr r1, _0808A470 @ =gPlayerParty - adds r0, r1 - movs r1, 0xC - bl GetMonData - lsls r0, 24 - cmp r0, 0 - bne _0808A478 - ldr r0, _0808A474 @ =sub_808A34C - bl SetMainCallback2 - b _0808A4C6 - .align 2, 0 -_0808A460: .4byte gScriptItemId -_0808A464: .4byte sub_808A330 -_0808A468: .4byte gPaletteFade -_0808A46C: .4byte gLastFieldPokeMenuOpened -_0808A470: .4byte gPlayerParty -_0808A474: .4byte sub_808A34C -_0808A478: - adds r0, r4, 0 - bl DestroyTask -_0808A47E: - ldr r2, _0808A4A4 @ =gPaletteFade - ldrb r0, [r2, 0x8] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2, 0x8] - ldr r0, _0808A4A8 @ =gScriptItemId - ldrh r0, [r0] - cmp r0, 0 - beq _0808A4B4 - ldr r2, _0808A4AC @ =sub_808A2AC - movs r0, 0 - movs r1, 0xFF - movs r3, 0xFF - bl sub_806AF4C - ldr r0, _0808A4B0 @ =sub_808A358 - bl SetMainCallback2 - b _0808A4C6 - .align 2, 0 -_0808A4A4: .4byte gPaletteFade -_0808A4A8: .4byte gScriptItemId -_0808A4AC: .4byte sub_808A2AC -_0808A4B0: .4byte sub_808A358 -_0808A4B4: - ldr r2, _0808A4CC @ =sub_8089D94 - movs r0, 0 - movs r1, 0xFF - movs r3, 0x5 - bl sub_806AF4C - ldr r0, _0808A4D0 @ =sub_808A3A4 - bl SetMainCallback2 -_0808A4C6: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808A4CC: .4byte sub_8089D94 -_0808A4D0: .4byte sub_808A3A4 - thumb_func_end sub_808A3F8 - - thumb_func_start sub_808A4D4 -sub_808A4D4: @ 808A4D4 - push {r4,lr} - ldr r4, _0808A4DC @ =0x0201b260 - b _0808A4EC - .align 2, 0 -_0808A4DC: .4byte 0x0201b260 -_0808A4E0: - bl sub_80F9344 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _0808A510 -_0808A4EC: - bl sub_806B124 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0808A4E0 - ldrb r0, [r4] - ldr r1, _0808A518 @ =gLastFieldPokeMenuOpened - ldrb r1, [r1] - bl sub_806C994 - ldrb r0, [r4] - movs r1, 0 - bl sub_806BF74 - ldr r0, _0808A51C @ =sub_806AEDC - bl SetMainCallback2 -_0808A510: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808A518: .4byte gLastFieldPokeMenuOpened -_0808A51C: .4byte sub_806AEDC - thumb_func_end sub_808A4D4 - - thumb_func_start sub_808A520 -sub_808A520: @ 808A520 - push {r4-r7,lr} - ldr r2, _0808A584 @ =gPaletteFade - ldrb r0, [r2, 0x8] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2, 0x8] - ldr r0, _0808A588 @ =gScriptResult - ldrh r0, [r0] - cmp r0, 0 - bne _0808A59C - ldr r7, _0808A58C @ =gUnknown_0202E8F8 - ldrh r0, [r7] - cmp r0, 0 - beq _0808A542 - movs r1, 0x1 - bl RemoveBagItem -_0808A542: - ldr r6, _0808A590 @ =gLastFieldPokeMenuOpened - ldrb r0, [r6] - movs r5, 0x64 - muls r0, r5 - ldr r4, _0808A594 @ =gPlayerParty - adds r0, r4 - movs r1, 0xC - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x1 - bl AddBagItem - ldrb r0, [r6] - muls r0, r5 - adds r0, r4 - bl TakeMailFromMon - ldrb r0, [r6] - muls r0, r5 - adds r0, r4 - movs r1, 0xC - adds r2, r7, 0 - bl SetMonData - ldr r2, _0808A598 @ =sub_8089CD4 - movs r0, 0 - movs r1, 0xFF - movs r3, 0 - bl sub_806AF4C - b _0808A5A8 - .align 2, 0 -_0808A584: .4byte gPaletteFade -_0808A588: .4byte gScriptResult -_0808A58C: .4byte gUnknown_0202E8F8 -_0808A590: .4byte gLastFieldPokeMenuOpened -_0808A594: .4byte gPlayerParty -_0808A598: .4byte sub_8089CD4 -_0808A59C: - ldr r2, _0808A5B4 @ =sub_808A5BC - movs r0, 0 - movs r1, 0xFF - movs r3, 0xFF - bl sub_806AF4C -_0808A5A8: - ldr r0, _0808A5B8 @ =sub_808A4D4 - bl SetMainCallback2 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0808A5B4: .4byte sub_808A5BC -_0808A5B8: .4byte sub_808A4D4 - thumb_func_end sub_808A520 - - thumb_func_start sub_808A5BC -sub_808A5BC: @ 808A5BC - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0808A5F0 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0808A5EA - ldr r0, _0808A5F4 @ =gLastFieldPokeMenuOpened - ldrb r0, [r0] - ldr r1, _0808A5F8 @ =gScriptItemId - ldrh r1, [r1] - movs r2, 0 - bl DisplayGiveHeldItemMessage - ldr r1, _0808A5FC @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _0808A600 @ =sub_808A1E0 - str r1, [r0] -_0808A5EA: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808A5F0: .4byte gPaletteFade -_0808A5F4: .4byte gLastFieldPokeMenuOpened -_0808A5F8: .4byte gScriptItemId -_0808A5FC: .4byte gTasks -_0808A600: .4byte sub_808A1E0 - thumb_func_end sub_808A5BC - - thumb_func_start sub_808A604 -sub_808A604: @ 808A604 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0808A628 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0808A622 - ldr r0, _0808A62C @ =sub_80A61D0 - bl SetMainCallback2 - adds r0, r4, 0 - bl DestroyTask -_0808A622: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808A628: .4byte gPaletteFade -_0808A62C: .4byte sub_80A61D0 - thumb_func_end sub_808A604 - - thumb_func_start PokemonMenu_GiveItem -PokemonMenu_GiveItem: @ 808A630 - push {r4,lr} - sub sp, 0x4 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r4, 0 - bl sub_806CA38 - ldr r1, _0808A66C @ =gUnknown_0202E8F5 - strb r0, [r1] - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r1, _0808A670 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _0808A674 @ =sub_808A604 - str r1, [r0] - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808A66C: .4byte gUnknown_0202E8F5 -_0808A670: .4byte gTasks -_0808A674: .4byte sub_808A604 - thumb_func_end PokemonMenu_GiveItem - - thumb_func_start sub_808A678 -sub_808A678: @ 808A678 - push {lr} - lsls r0, 24 - lsrs r0, 24 - bl sub_808A8D4 - pop {r0} - bx r0 - thumb_func_end sub_808A678 - - thumb_func_start PokemonMenu_TakeItem -PokemonMenu_TakeItem: @ 808A688 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl HandleDestroyMenuCursors - movs r0, 0x13 - movs r1, 0 - movs r2, 0x1D - movs r3, 0x13 - bl MenuZeroFillWindowRect - bl sub_806D5A4 - ldr r1, _0808A6B4 @ =sub_808A678 - adds r0, r4, 0 - bl PartyMenuTryGiveMonHeldItem_806ECE8 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808A6B4: .4byte sub_808A678 - thumb_func_end PokemonMenu_TakeItem - - thumb_func_start PokemonMenu_TakeMail -PokemonMenu_TakeMail: @ 808A6B8 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl HandleDestroyMenuCursors - movs r0, 0x13 - movs r1, 0 - movs r2, 0x1D - movs r3, 0x13 - bl MenuZeroFillWindowRect - bl sub_806D5A4 - ldr r1, _0808A6E4 @ =sub_808A678 - adds r0, r4, 0 - bl DoTakeMail - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808A6E4: .4byte sub_808A678 - thumb_func_end PokemonMenu_TakeMail - - thumb_func_start PokemonMenu_Mail -PokemonMenu_Mail: @ 808A6E8 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl HandleDestroyMenuCursors - ldr r1, _0808A728 @ =gUnknown_0202FFA8 - movs r0, 0 - strb r0, [r1] - movs r0, 0x13 - movs r1, 0 - movs r2, 0x1D - movs r3, 0x13 - bl MenuZeroFillWindowRect - ldr r1, _0808A72C @ =gUnknown_0839F584 - ldr r2, _0808A730 @ =gPokemonMenuActions - movs r0, 0 - movs r3, 0 - bl sub_806E750 - ldr r1, _0808A734 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _0808A738 @ =sub_808A73C - str r1, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808A728: .4byte gUnknown_0202FFA8 -_0808A72C: .4byte gUnknown_0839F584 -_0808A730: .4byte gPokemonMenuActions -_0808A734: .4byte gTasks -_0808A738: .4byte sub_808A73C - thumb_func_end PokemonMenu_Mail - - thumb_func_start sub_808A73C -sub_808A73C: @ 808A73C - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, _0808A764 @ =gMain - ldrh r0, [r0, 0x30] - cmp r0, 0x40 - bne _0808A77A - movs r0, 0x5 - bl PlaySE - ldr r4, _0808A768 @ =gUnknown_0202FFA8 - ldrb r0, [r4] - cmp r0, 0 - bne _0808A770 - ldr r0, _0808A76C @ =gUnknown_0839F584 - ldrb r0, [r0] - subs r0, 0x1 - lsls r0, 24 - asrs r0, 24 - b _0808A774 - .align 2, 0 -_0808A764: .4byte gMain -_0808A768: .4byte gUnknown_0202FFA8 -_0808A76C: .4byte gUnknown_0839F584 -_0808A770: - movs r0, 0x1 - negs r0, r0 -_0808A774: - bl MoveMenuCursor - strb r0, [r4] -_0808A77A: - ldr r0, _0808A7A0 @ =gMain - ldrh r0, [r0, 0x30] - cmp r0, 0x80 - bne _0808A7B4 - movs r0, 0x5 - bl PlaySE - ldr r4, _0808A7A4 @ =gUnknown_0202FFA8 - ldrb r0, [r4] - ldr r1, _0808A7A8 @ =gUnknown_0839F584 - ldrb r2, [r1] - subs r1, r2, 0x1 - cmp r0, r1 - bne _0808A7AC - movs r0, 0x1 - subs r0, r2 - lsls r0, 24 - asrs r0, 24 - b _0808A7AE - .align 2, 0 -_0808A7A0: .4byte gMain -_0808A7A4: .4byte gUnknown_0202FFA8 -_0808A7A8: .4byte gUnknown_0839F584 -_0808A7AC: - movs r0, 0x1 -_0808A7AE: - bl MoveMenuCursor - strb r0, [r4] -_0808A7B4: - ldr r0, _0808A7E0 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0808A7F0 - movs r0, 0x5 - bl PlaySE - ldr r1, _0808A7E4 @ =gUnknown_0839F584 - ldr r2, _0808A7E8 @ =gPokemonMenuActions - ldr r0, _0808A7EC @ =gUnknown_0202FFA8 - ldrb r3, [r0] - movs r0, 0 - bl PartyMenuGetPopupMenuFunc - adds r1, r0, 0 - adds r0, r5, 0 - bl _call_via_r1 - b _0808A806 - .align 2, 0 -_0808A7E0: .4byte gMain -_0808A7E4: .4byte gUnknown_0839F584 -_0808A7E8: .4byte gPokemonMenuActions -_0808A7EC: .4byte gUnknown_0202FFA8 -_0808A7F0: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0808A806 - ldr r1, _0808A80C @ =gUnknown_0839F584 - movs r0, 0 - bl sub_806E7D0 - adds r0, r5, 0 - bl PokemonMenu_Cancel -_0808A806: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0808A80C: .4byte gUnknown_0839F584 - thumb_func_end sub_808A73C - - thumb_func_start PokemonMenu_ReadMail -PokemonMenu_ReadMail: @ 808A810 - push {r4,lr} - sub sp, 0x4 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r1, _0808A840 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _0808A844 @ =sub_808A848 - str r1, [r0] - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808A840: .4byte gTasks -_0808A844: .4byte sub_808A848 - thumb_func_end PokemonMenu_ReadMail - - thumb_func_start sub_808A848 -sub_808A848: @ 808A848 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, _0808A898 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0808A890 - adds r0, r5, 0 - bl sub_806CA38 - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x64 - muls r0, r1 - ldr r1, _0808A89C @ =gPlayerParty - adds r0, r1 - movs r1, 0x40 - bl GetMonData - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r5, 0 - bl DestroyTask - lsls r0, r4, 3 - adds r0, r4 - lsls r0, 2 - ldr r1, _0808A8A0 @ =gSaveBlock1 + 0x2B4C - adds r0, r1 - ldr r1, _0808A8A4 @ =sub_808A8A8 - movs r2, 0x1 - bl HandleReadMail -_0808A890: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0808A898: .4byte gPaletteFade -_0808A89C: .4byte gPlayerParty -_0808A8A0: .4byte gSaveBlock1 + 0x2B4C -_0808A8A4: .4byte sub_808A8A8 - thumb_func_end sub_808A848 - - thumb_func_start sub_808A8A8 -sub_808A8A8: @ 808A8A8 - push {lr} - ldr r1, _0808A8C4 @ =gUnknown_020384F0 - ldr r0, _0808A8C8 @ =gLastFieldPokeMenuOpened - ldrb r0, [r0] - strb r0, [r1] - ldr r0, _0808A8CC @ =0x0201b000 - ldr r1, _0808A8D0 @ =0x00000262 - adds r0, r1 - movs r1, 0x4 - strb r1, [r0] - bl sub_8089F14 - pop {r0} - bx r0 - .align 2, 0 -_0808A8C4: .4byte gUnknown_020384F0 -_0808A8C8: .4byte gLastFieldPokeMenuOpened -_0808A8CC: .4byte 0x0201b000 -_0808A8D0: .4byte 0x00000262 - thumb_func_end sub_808A8A8 - - thumb_func_start sub_808A8D4 -sub_808A8D4: @ 808A8D4 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r1, _0808A90C @ =gUnknown_0202FFA8 - movs r0, 0 - strb r0, [r1] - movs r0, 0x13 - movs r1, 0 - movs r2, 0x1D - movs r3, 0x13 - bl MenuZeroFillWindowRect - movs r0, 0 - movs r1, 0 - bl sub_806D538 - ldr r1, _0808A910 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _0808A914 @ =sub_8089CD4 - str r1, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808A90C: .4byte gUnknown_0202FFA8 -_0808A910: .4byte gTasks -_0808A914: .4byte sub_8089CD4 - thumb_func_end sub_808A8D4 - - thumb_func_start PokemonMenu_Cancel -PokemonMenu_Cancel: @ 808A918 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl HandleDestroyMenuCursors - movs r0, 0x5 - bl PlaySE - adds r0, r4, 0 - bl sub_808A8D4 - pop {r4} - pop {r0} - bx r0 - thumb_func_end PokemonMenu_Cancel - - thumb_func_start PokemonMenu_CancelSubmenu -PokemonMenu_CancelSubmenu: @ 808A938 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl HandleDestroyMenuCursors - movs r0, 0x5 - bl PlaySE - movs r0, 0x13 - movs r1, 0 - movs r2, 0x1D - movs r3, 0x13 - bl MenuZeroFillWindowRect - bl sub_806D5A4 - ldr r0, _0808A978 @ =gUnknown_0202FFA8 - ldrb r0, [r0] - bl sub_8089C7C - ldr r1, _0808A97C @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _0808A980 @ =sub_8089D94 - str r1, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808A978: .4byte gUnknown_0202FFA8 -_0808A97C: .4byte gTasks -_0808A980: .4byte sub_8089D94 - thumb_func_end PokemonMenu_CancelSubmenu - - thumb_func_start PokemonMenu_FieldMove -PokemonMenu_FieldMove: @ 808A984 - push {r4-r7,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r6, r0, 3 - ldr r7, _0808A9D0 @ =gTasks + 0x8 - adds r4, r6, r7 - bl HandleDestroyMenuCursors - ldr r1, _0808A9D4 @ =gUnknown_0202FFAA - ldr r0, _0808A9D8 @ =gUnknown_0202FFA8 - ldrb r0, [r0] - adds r0, r1 - ldrb r0, [r0] - subs r0, 0xA - strh r0, [r4, 0x16] - bl sub_80F9344 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0808A9DC - movs r0, 0x13 - movs r1, 0 - movs r2, 0x1D - movs r3, 0x13 - bl MenuZeroFillWindowRect - ldrh r0, [r4, 0x16] - subs r0, 0xB - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1 - bhi _0808AABA - movs r0, 0x9 - b _0808AAB2 - .align 2, 0 -_0808A9D0: .4byte gTasks + 0x8 -_0808A9D4: .4byte gUnknown_0202FFAA -_0808A9D8: .4byte gUnknown_0202FFA8 -_0808A9DC: - ldrh r1, [r4, 0x16] - movs r2, 0x16 - ldrsh r0, [r4, r2] - cmp r0, 0x7 - bgt _0808AA2C - ldr r2, _0808AA20 @ =0x00000807 - adds r0, r1, r2 - lsls r0, 16 - lsrs r0, 16 - bl FlagGet - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _0808AA2C - movs r0, 0x13 - movs r1, 0 - movs r2, 0x1D - movs r3, 0x13 - bl MenuZeroFillWindowRect - bl sub_806D5A4 - ldr r0, _0808AA24 @ =gOtherText_CantBeUsedBadge - movs r1, 0x1 - bl sub_806E834 - adds r0, r7, 0 - subs r0, 0x8 - adds r0, r6, r0 - ldr r1, _0808AA28 @ =sub_808AAF0 - str r1, [r0] - b _0808AADA - .align 2, 0 -_0808AA20: .4byte 0x00000807 -_0808AA24: .4byte gOtherText_CantBeUsedBadge -_0808AA28: .4byte sub_808AAF0 -_0808AA2C: - ldr r1, _0808AA78 @ =gFieldMoveFuncs - movs r2, 0x16 - ldrsh r0, [r4, r2] - lsls r0, 3 - adds r0, r1 - ldr r0, [r0] - bl _call_via_r0 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0808AA90 - ldr r1, _0808AA7C @ =gUnknown_0202FFA8 - movs r0, 0 - strb r0, [r1] - ldrh r0, [r4, 0x16] - subs r0, 0xB - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1 - bls _0808AA88 - ldr r1, _0808AA80 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - ldr r1, _0808AA84 @ =sub_808AB34 - str r1, [r0] - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - b _0808AADA - .align 2, 0 -_0808AA78: .4byte gFieldMoveFuncs -_0808AA7C: .4byte gUnknown_0202FFA8 -_0808AA80: .4byte gTasks -_0808AA84: .4byte sub_808AB34 -_0808AA88: - adds r0, r5, 0 - bl sub_8133D28 - b _0808AADA -_0808AA90: - movs r0, 0x13 - movs r1, 0 - movs r2, 0x1D - movs r3, 0x13 - bl MenuZeroFillWindowRect - movs r1, 0x16 - ldrsh r0, [r4, r1] - cmp r0, 0x4 - bne _0808AABA - movs r0, 0x8 - bl TestPlayerAvatarFlags - lsls r0, 24 - cmp r0, 0 - beq _0808AABA - movs r0, 0x8 -_0808AAB2: - movs r1, 0 - bl sub_806D538 - b _0808AACC -_0808AABA: - ldr r0, _0808AAE4 @ =gFieldMoveFuncs - movs r2, 0x16 - ldrsh r1, [r4, r2] - lsls r1, 3 - adds r1, r0 - ldrb r0, [r1, 0x4] - movs r1, 0 - bl sub_806D538 -_0808AACC: - ldr r0, _0808AAE8 @ =gTasks - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r1, r0 - ldr r0, _0808AAEC @ =sub_808ABF4 - str r0, [r1] -_0808AADA: - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0808AAE4: .4byte gFieldMoveFuncs -_0808AAE8: .4byte gTasks -_0808AAEC: .4byte sub_808ABF4 - thumb_func_end PokemonMenu_FieldMove - - thumb_func_start sub_808AAF0 -sub_808AAF0: @ 808AAF0 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0808AB2C @ =gUnknown_0202E8F6 - ldrb r0, [r0] - cmp r0, 0x1 - beq _0808AB24 - ldr r0, _0808AB30 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _0808AB12 - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0808AB24 -_0808AB12: - movs r0, 0 - movs r1, 0xE - movs r2, 0x1D - movs r3, 0x13 - bl MenuZeroFillWindowRect - adds r0, r4, 0 - bl PokemonMenu_Cancel -_0808AB24: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808AB2C: .4byte gUnknown_0202E8F6 -_0808AB30: .4byte gMain - thumb_func_end sub_808AAF0 - - thumb_func_start sub_808AB34 -sub_808AB34: @ 808AB34 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0808AB6C @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0808AB84 - ldr r0, _0808AB70 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - movs r2, 0x1E - ldrsh r0, [r1, r2] - cmp r0, 0x5 - bne _0808AB62 - bl ShouldDoBrailleFlyEffect - lsls r0, 24 - cmp r0, 0 - beq _0808AB78 -_0808AB62: - ldr r0, _0808AB74 @ =c2_exit_to_overworld_2_switch - bl SetMainCallback2 - b _0808AB7E - .align 2, 0 -_0808AB6C: .4byte gPaletteFade -_0808AB70: .4byte gTasks -_0808AB74: .4byte c2_exit_to_overworld_2_switch -_0808AB78: - ldr r0, _0808AB8C @ =sub_80FC074 - bl SetMainCallback2 -_0808AB7E: - adds r0, r4, 0 - bl DestroyTask -_0808AB84: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808AB8C: .4byte sub_80FC074 - thumb_func_end sub_808AB34 - - thumb_func_start sub_808AB90 -sub_808AB90: @ 808AB90 - push {lr} - bl pal_fill_black - ldr r0, _0808ABA4 @ =sub_808ABA8 - movs r1, 0x8 - bl CreateTask - pop {r0} - bx r0 - .align 2, 0 -_0808ABA4: .4byte sub_808ABA8 - thumb_func_end sub_808AB90 - - thumb_func_start sub_808ABA8 -sub_808ABA8: @ 808ABA8 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl sub_807D770 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0808ABDE - ldr r0, _0808ABE4 @ =gLastFieldPokeMenuOpened - ldrb r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _0808ABE8 @ =gPlayerParty - adds r0, r1 - movs r1, 0xB - bl GetMonData - ldr r1, _0808ABEC @ =gUnknown_0202FF84 - str r0, [r1] - ldr r0, _0808ABF0 @ =gUnknown_03005CE4 - ldr r0, [r0] - bl _call_via_r0 - adds r0, r4, 0 - bl DestroyTask -_0808ABDE: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808ABE4: .4byte gLastFieldPokeMenuOpened -_0808ABE8: .4byte gPlayerParty -_0808ABEC: .4byte gUnknown_0202FF84 -_0808ABF0: .4byte gUnknown_03005CE4 - thumb_func_end sub_808ABA8 - - thumb_func_start sub_808ABF4 -sub_808ABF4: @ 808ABF4 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0808AC28 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _0808AC0E - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0808AC20 -_0808AC0E: - movs r0, 0x1 - movs r1, 0x11 - movs r2, 0x1C - movs r3, 0x12 - bl MenuZeroFillWindowRect - adds r0, r4, 0 - bl PokemonMenu_Cancel -_0808AC20: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808AC28: .4byte gMain - thumb_func_end sub_808ABF4 - - thumb_func_start sub_808AC2C -sub_808AC2C: @ 808AC2C - push {lr} - ldr r0, _0808AC40 @ =gUnknown_0202FF84 - ldr r1, _0808AC44 @ =gLastFieldPokeMenuOpened - ldrb r1, [r1] - str r1, [r0] - movs r0, 0x9 - bl FieldEffectStart - pop {r0} - bx r0 - .align 2, 0 -_0808AC40: .4byte gUnknown_0202FF84 -_0808AC44: .4byte gLastFieldPokeMenuOpened - thumb_func_end sub_808AC2C - - thumb_func_start SetUpFieldMove_Surf -SetUpFieldMove_Surf: @ 808AC48 - push {lr} - bl PartyHasMonWithSurf - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0808AC84 - bl IsPlayerFacingSurfableFishableWater - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0808AC84 - ldr r1, _0808AC74 @ =gFieldCallback - ldr r0, _0808AC78 @ =sub_808AB90 - str r0, [r1] - ldr r1, _0808AC7C @ =gUnknown_03005CE4 - ldr r0, _0808AC80 @ =sub_808AC2C - str r0, [r1] - movs r0, 0x1 - b _0808AC86 - .align 2, 0 -_0808AC74: .4byte gFieldCallback -_0808AC78: .4byte sub_808AB90 -_0808AC7C: .4byte gUnknown_03005CE4 -_0808AC80: .4byte sub_808AC2C -_0808AC84: - movs r0, 0 -_0808AC86: - pop {r1} - bx r1 - thumb_func_end SetUpFieldMove_Surf - - thumb_func_start sub_808AC8C -sub_808AC8C: @ 808AC8C - push {lr} - ldr r0, _0808ACA0 @ =gUnknown_0202FF84 - ldr r1, _0808ACA4 @ =gLastFieldPokeMenuOpened - ldrb r1, [r1] - str r1, [r0] - movs r0, 0x1F - bl FieldEffectStart - pop {r0} - bx r0 - .align 2, 0 -_0808ACA0: .4byte gUnknown_0202FF84 -_0808ACA4: .4byte gLastFieldPokeMenuOpened - thumb_func_end sub_808AC8C - - thumb_func_start SetUpFieldMove_Fly -SetUpFieldMove_Fly: @ 808ACA8 - push {lr} - bl ShouldDoBrailleFlyEffect - lsls r0, 24 - cmp r0, 0 - beq _0808ACD0 - ldr r1, _0808ACC0 @ =gFieldCallback - ldr r0, _0808ACC4 @ =sub_808AB90 - str r0, [r1] - ldr r1, _0808ACC8 @ =gUnknown_03005CE4 - ldr r0, _0808ACCC @ =DoBrailleFlyEffect - b _0808ACF2 - .align 2, 0 -_0808ACC0: .4byte gFieldCallback -_0808ACC4: .4byte sub_808AB90 -_0808ACC8: .4byte gUnknown_03005CE4 -_0808ACCC: .4byte DoBrailleFlyEffect -_0808ACD0: - ldr r0, _0808ACE4 @ =gMapHeader - ldrb r0, [r0, 0x17] - bl is_light_level_1_2_3_or_6 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _0808ACE8 - movs r0, 0 - b _0808ACF6 - .align 2, 0 -_0808ACE4: .4byte gMapHeader -_0808ACE8: - ldr r1, _0808ACFC @ =gFieldCallback - ldr r0, _0808AD00 @ =sub_808AB90 - str r0, [r1] - ldr r1, _0808AD04 @ =gUnknown_03005CE4 - ldr r0, _0808AD08 @ =sub_808AC8C -_0808ACF2: - str r0, [r1] - movs r0, 0x1 -_0808ACF6: - pop {r1} - bx r1 - .align 2, 0 -_0808ACFC: .4byte gFieldCallback -_0808AD00: .4byte sub_808AB90 -_0808AD04: .4byte gUnknown_03005CE4 -_0808AD08: .4byte sub_808AC8C - thumb_func_end SetUpFieldMove_Fly - - thumb_func_start sub_808AD0C -sub_808AD0C: @ 808AD0C - push {r4,lr} - ldr r4, _0808AD14 @ =0x0201b260 - b _0808AD24 - .align 2, 0 -_0808AD14: .4byte 0x0201b260 -_0808AD18: - bl sub_80F9344 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _0808AD48 -_0808AD24: - bl sub_806B124 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0808AD18 - ldrb r0, [r4] - ldr r1, _0808AD50 @ =gLastFieldPokeMenuOpened - ldrb r1, [r1] - bl sub_806C994 - ldrb r0, [r4] - movs r1, 0 - bl sub_806BF74 - ldr r0, _0808AD54 @ =sub_806AEDC - bl SetMainCallback2 -_0808AD48: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808AD50: .4byte gLastFieldPokeMenuOpened -_0808AD54: .4byte sub_806AEDC - thumb_func_end sub_808AD0C - - thumb_func_start sub_808AD58 -sub_808AD58: @ 808AD58 - push {lr} - ldr r2, _0808AD7C @ =gPaletteFade - ldrb r0, [r2, 0x8] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2, 0x8] - ldr r2, _0808AD80 @ =sub_8089CD4 - movs r0, 0 - movs r1, 0xFF - movs r3, 0 - bl sub_806AF4C - ldr r0, _0808AD84 @ =sub_808AD0C - bl SetMainCallback2 - pop {r0} - bx r0 - .align 2, 0 -_0808AD7C: .4byte gPaletteFade -_0808AD80: .4byte sub_8089CD4 -_0808AD84: .4byte sub_808AD0C - thumb_func_end sub_808AD58 - - thumb_func_start unref_sub_808AD88 -unref_sub_808AD88: @ 808AD88 - push {lr} - ldr r0, _0808ADA4 @ =gLastFieldPokeMenuOpened - ldrb r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _0808ADA8 @ =gPlayerParty - adds r0, r1 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - pop {r1} - bx r1 - .align 2, 0 -_0808ADA4: .4byte gLastFieldPokeMenuOpened -_0808ADA8: .4byte gPlayerParty - thumb_func_end unref_sub_808AD88 - - thumb_func_start sub_808ADAC -sub_808ADAC: @ 808ADAC - push {lr} - ldr r0, _0808ADC0 @ =gUnknown_0202FF84 - ldr r1, _0808ADC4 @ =gLastFieldPokeMenuOpened - ldrb r1, [r1] - str r1, [r0] - movs r0, 0x2C - bl FieldEffectStart - pop {r0} - bx r0 - .align 2, 0 -_0808ADC0: .4byte gUnknown_0202FF84 -_0808ADC4: .4byte gLastFieldPokeMenuOpened - thumb_func_end sub_808ADAC - - thumb_func_start SetUpFieldMove_Dive -SetUpFieldMove_Dive: @ 808ADC8 - push {lr} - bl sub_8068F18 - ldr r1, _0808ADE0 @ =gUnknown_0202FF84 - lsls r0, 24 - lsrs r0, 24 - str r0, [r1, 0x4] - cmp r0, 0 - bne _0808ADE4 - movs r0, 0 - b _0808ADF2 - .align 2, 0 -_0808ADE0: .4byte gUnknown_0202FF84 -_0808ADE4: - ldr r1, _0808ADF8 @ =gFieldCallback - ldr r0, _0808ADFC @ =sub_808AB90 - str r0, [r1] - ldr r1, _0808AE00 @ =gUnknown_03005CE4 - ldr r0, _0808AE04 @ =sub_808ADAC - str r0, [r1] - movs r0, 0x1 -_0808ADF2: - pop {r1} - bx r1 - .align 2, 0 -_0808ADF8: .4byte gFieldCallback -_0808ADFC: .4byte sub_808AB90 -_0808AE00: .4byte gUnknown_03005CE4 -_0808AE04: .4byte sub_808ADAC - thumb_func_end SetUpFieldMove_Dive - - thumb_func_start sub_808AE08 -sub_808AE08: @ 808AE08 - push {lr} - ldr r0, _0808AE1C @ =gUnknown_0202FF84 - ldr r1, _0808AE20 @ =gLastFieldPokeMenuOpened - ldrb r1, [r1] - str r1, [r0] - movs r0, 0x2B - bl FieldEffectStart - pop {r0} - bx r0 - .align 2, 0 -_0808AE1C: .4byte gUnknown_0202FF84 -_0808AE20: .4byte gLastFieldPokeMenuOpened - thumb_func_end sub_808AE08 - - thumb_func_start SetUpFieldMove_Waterfall -SetUpFieldMove_Waterfall: @ 808AE24 - push {r4,lr} - sub sp, 0x4 - mov r4, sp - adds r4, 0x2 - mov r0, sp - adds r1, r4, 0 - bl GetXYCoordsOneStepInFrontOfPlayer - mov r0, sp - movs r1, 0 - ldrsh r0, [r0, r1] - movs r2, 0 - ldrsh r1, [r4, r2] - bl MapGridGetMetatileBehaviorAt - lsls r0, 24 - lsrs r0, 24 - bl MetatileBehavior_IsWaterfall - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0808AE80 - bl IsPlayerSurfingNorth - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0808AE80 - ldr r1, _0808AE70 @ =gFieldCallback - ldr r0, _0808AE74 @ =sub_808AB90 - str r0, [r1] - ldr r1, _0808AE78 @ =gUnknown_03005CE4 - ldr r0, _0808AE7C @ =sub_808AE08 - str r0, [r1] - movs r0, 0x1 - b _0808AE82 - .align 2, 0 -_0808AE70: .4byte gFieldCallback -_0808AE74: .4byte sub_808AB90 -_0808AE78: .4byte gUnknown_03005CE4 -_0808AE7C: .4byte sub_808AE08 -_0808AE80: - movs r0, 0 -_0808AE82: - add sp, 0x4 - pop {r4} - pop {r1} - bx r1 - thumb_func_end SetUpFieldMove_Waterfall - - thumb_func_start sub_808AE8C -sub_808AE8C: @ 808AE8C - push {r4-r6,lr} - ldr r0, _0808AED8 @ =gScriptItemId - ldrb r0, [r0] - subs r0, 0x21 - lsls r0, 24 - lsrs r6, r0, 24 - movs r5, 0 -_0808AE9A: - movs r0, 0x64 - adds r1, r5, 0 - muls r1, r0 - ldr r0, _0808AEDC @ =gPlayerParty - adds r4, r1, r0 - adds r0, r4, 0 - movs r1, 0xB - bl GetMonData - cmp r0, 0 - beq _0808AF10 - adds r0, r5, 0 - bl sub_806D668 - adds r0, r4, 0 - movs r1, 0x2D - bl GetMonData - cmp r0, 0 - bne _0808AECE - adds r0, r4, 0 - adds r1, r6, 0 - bl CanMonLearnTMHM - cmp r0, 0 - bne _0808AEE0 -_0808AECE: - adds r0, r5, 0 - movs r1, 0x9A - bl sub_806BC3C - b _0808AF10 - .align 2, 0 -_0808AED8: .4byte gScriptItemId -_0808AEDC: .4byte gPlayerParty -_0808AEE0: - ldr r0, _0808AF04 @ =gScriptItemId - ldrh r0, [r0] - bl ItemIdToBattleMoveId - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - adds r0, r4, 0 - bl pokemon_has_move - lsls r0, 24 - cmp r0, 0 - beq _0808AF08 - adds r0, r5, 0 - movs r1, 0xA8 - bl sub_806BC3C - b _0808AF10 - .align 2, 0 -_0808AF04: .4byte gScriptItemId -_0808AF08: - adds r0, r5, 0 - movs r1, 0x8C - bl sub_806BC3C -_0808AF10: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x5 - bls _0808AE9A - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_808AE8C - - thumb_func_start sub_808AF20 -sub_808AF20: @ 808AF20 - push {r4,r5,lr} - movs r5, 0 -_0808AF24: - movs r0, 0x64 - adds r1, r5, 0 - muls r1, r0 - ldr r0, _0808AF78 @ =gPlayerParty - adds r4, r1, r0 - adds r0, r4, 0 - movs r1, 0xB - bl GetMonData - cmp r0, 0 - beq _0808AF66 - adds r0, r4, 0 - movs r1, 0x2D - bl GetMonData - cmp r0, 0 - bne _0808AF58 - ldr r0, _0808AF7C @ =gScriptItemId - ldrh r2, [r0] - adds r0, r4, 0 - movs r1, 0x3 - bl GetEvolutionTargetSpecies - lsls r0, 16 - cmp r0, 0 - bne _0808AF66 -_0808AF58: - adds r0, r5, 0 - bl sub_806D668 - adds r0, r5, 0 - movs r1, 0 - bl sub_806BC3C -_0808AF66: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x5 - bls _0808AF24 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0808AF78: .4byte gPlayerParty -_0808AF7C: .4byte gScriptItemId - thumb_func_end sub_808AF20 - - thumb_func_start sub_808AF80 -sub_808AF80: @ 808AF80 - push {r4,r5,lr} - ldr r5, _0808AFB0 @ =0x0201b260 -_0808AF84: - bl sub_806B124 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0808B00C - ldr r0, _0808AFB4 @ =gUnknown_02038561 - ldrb r0, [r0] - cmp r0, 0 - bne _0808AFC6 - ldr r0, _0808AFB8 @ =gScriptItemId - ldrh r0, [r0] - bl CheckIfItemIsTMHMOrEvolutionStone - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _0808AFBC - cmp r0, 0x2 - beq _0808AFC2 - b _0808AFC6 - .align 2, 0 -_0808AFB0: .4byte 0x0201b260 -_0808AFB4: .4byte gUnknown_02038561 -_0808AFB8: .4byte gScriptItemId -_0808AFBC: - bl sub_808AE8C - b _0808AFC6 -_0808AFC2: - bl sub_808AF20 -_0808AFC6: - ldr r4, _0808B000 @ =gLastFieldPokeMenuOpened - ldrb r0, [r4] - cmp r0, 0x5 - bhi _0808AFE2 - adds r1, r0, 0 - movs r0, 0x64 - muls r0, r1 - ldr r1, _0808B004 @ =gPlayerParty - adds r0, r1 - movs r1, 0xB - bl GetMonData - cmp r0, 0 - bne _0808AFE6 -_0808AFE2: - movs r0, 0 - strb r0, [r4] -_0808AFE6: - ldrb r0, [r5] - ldr r1, _0808B000 @ =gLastFieldPokeMenuOpened - ldrb r1, [r1] - bl sub_806C994 - ldrb r0, [r5] - movs r1, 0 - bl sub_806BF74 - ldr r0, _0808B008 @ =sub_806AEDC - bl SetMainCallback2 - b _0808B018 - .align 2, 0 -_0808B000: .4byte gLastFieldPokeMenuOpened -_0808B004: .4byte gPlayerParty -_0808B008: .4byte sub_806AEDC -_0808B00C: - bl sub_80F9344 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0808AF84 -_0808B018: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_808AF80 - - thumb_func_start sub_808B020 -sub_808B020: @ 808B020 - push {lr} - ldr r2, _0808B040 @ =gPaletteFade - ldrb r0, [r2, 0x8] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2, 0x8] - ldr r0, _0808B044 @ =gUnknown_02038561 - ldrb r0, [r0] - cmp r0, 0x1 - beq _0808B0A0 - cmp r0, 0x1 - bgt _0808B048 - cmp r0, 0 - beq _0808B052 - b _0808B0AC - .align 2, 0 -_0808B040: .4byte gPaletteFade -_0808B044: .4byte gUnknown_02038561 -_0808B048: - cmp r0, 0x3 - beq _0808B0A0 - cmp r0, 0x4 - beq _0808B08C - b _0808B0AC -_0808B052: - ldr r0, _0808B070 @ =gScriptItemId - ldrh r0, [r0] - bl CheckIfItemIsTMHMOrEvolutionStone - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0808B078 - ldr r2, _0808B074 @ =sub_808B0C0 - movs r0, 0 - movs r1, 0 - movs r3, 0x14 - bl sub_806AF4C - b _0808B0AC - .align 2, 0 -_0808B070: .4byte gScriptItemId -_0808B074: .4byte sub_808B0C0 -_0808B078: - ldr r2, _0808B088 @ =sub_808B0C0 - movs r0, 0 - movs r1, 0 - movs r3, 0x3 - bl sub_806AF4C - b _0808B0AC - .align 2, 0 -_0808B088: .4byte sub_808B0C0 -_0808B08C: - ldr r2, _0808B09C @ =sub_808B1EC - movs r0, 0 - movs r1, 0 - movs r3, 0xFF - bl sub_806AF4C - b _0808B0AC - .align 2, 0 -_0808B09C: .4byte sub_808B1EC -_0808B0A0: - ldr r2, _0808B0B8 @ =sub_808B0C0 - movs r0, 0 - movs r1, 0 - movs r3, 0x4 - bl sub_806AF4C -_0808B0AC: - ldr r0, _0808B0BC @ =sub_808AF80 - bl SetMainCallback2 - pop {r0} - bx r0 - .align 2, 0 -_0808B0B8: .4byte sub_808B0C0 -_0808B0BC: .4byte sub_808AF80 - thumb_func_end sub_808B020 - - thumb_func_start sub_808B0C0 -sub_808B0C0: @ 808B0C0 - push {r4,r5,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0808B0EC @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0 - bne _0808B1CE - adds r0, r4, 0 - bl sub_806BD80 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1 - beq _0808B0F0 - cmp r0, 0x2 - beq _0808B184 - b _0808B1CE - .align 2, 0 -_0808B0EC: .4byte gPaletteFade -_0808B0F0: - adds r0, r4, 0 - bl sub_806CA38 - ldr r1, _0808B118 @ =gLastFieldPokeMenuOpened - strb r0, [r1] - ldrb r1, [r1] - movs r0, 0x64 - muls r0, r1 - ldr r1, _0808B11C @ =gPlayerParty - adds r0, r1 - movs r1, 0x2D - bl GetMonData - cmp r0, 0 - beq _0808B120 - movs r0, 0x20 - bl PlaySE - b _0808B1CE - .align 2, 0 -_0808B118: .4byte gLastFieldPokeMenuOpened -_0808B11C: .4byte gPlayerParty -_0808B120: - bl sub_806D5A4 - ldr r5, _0808B16C @ =gUnknown_02038561 - ldrb r0, [r5] - cmp r0, 0 - bne _0808B13C - ldr r3, _0808B170 @ =gUnknown_03004AE4 - ldr r0, _0808B174 @ =gScriptItemId - ldrh r1, [r0] - ldr r2, _0808B178 @ =sub_808B224 - ldr r3, [r3] - adds r0, r4, 0 - bl _call_via_r3 -_0808B13C: - ldrb r0, [r5] - cmp r0, 0x1 - bne _0808B154 - movs r0, 0x5 - bl PlaySE - ldr r0, _0808B174 @ =gScriptItemId - ldrh r1, [r0] - ldr r2, _0808B17C @ =sub_808B2EC - adds r0, r4, 0 - bl PartyMenuTryGiveMonHeldItem -_0808B154: - ldrb r0, [r5] - cmp r0, 0x3 - bne _0808B1CE - movs r0, 0x5 - bl PlaySE - ldr r1, _0808B180 @ =sub_808B2B4 - adds r0, r4, 0 - bl PartyMenuTryGiveMonMail - b _0808B1CE - .align 2, 0 -_0808B16C: .4byte gUnknown_02038561 -_0808B170: .4byte gUnknown_03004AE4 -_0808B174: .4byte gScriptItemId -_0808B178: .4byte sub_808B224 -_0808B17C: .4byte sub_808B2EC -_0808B180: .4byte sub_808B2B4 -_0808B184: - adds r0, r4, 0 - bl sub_806CA38 - ldr r1, _0808B1D8 @ =gLastFieldPokeMenuOpened - strb r0, [r1] - movs r0, 0x5 - bl PlaySE - movs r0, 0x1 - negs r0, r0 - str r5, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r2, _0808B1DC @ =gUnknown_02038561 - ldrb r0, [r2] - cmp r0, 0x1 - bhi _0808B1BA - ldr r0, _0808B1E0 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _0808B1E4 @ =sub_808B25C - str r0, [r1] -_0808B1BA: - ldrb r0, [r2] - cmp r0, 0x3 - bne _0808B1CE - ldr r0, _0808B1E0 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _0808B1E8 @ =sub_808B2B4 - str r0, [r1] -_0808B1CE: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0808B1D8: .4byte gLastFieldPokeMenuOpened -_0808B1DC: .4byte gUnknown_02038561 -_0808B1E0: .4byte gTasks -_0808B1E4: .4byte sub_808B25C -_0808B1E8: .4byte sub_808B2B4 - thumb_func_end sub_808B0C0 - - thumb_func_start sub_808B1EC -sub_808B1EC: @ 808B1EC - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0808B214 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0808B20E - ldr r3, _0808B218 @ =gUnknown_03004AE4 - ldr r0, _0808B21C @ =gScriptItemId - ldrh r1, [r0] - ldr r2, _0808B220 @ =sub_808B224 - ldr r3, [r3] - adds r0, r4, 0 - bl _call_via_r3 -_0808B20E: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808B214: .4byte gPaletteFade -_0808B218: .4byte gUnknown_03004AE4 -_0808B21C: .4byte gScriptItemId -_0808B220: .4byte sub_808B224 - thumb_func_end sub_808B1EC - - thumb_func_start sub_808B224 -sub_808B224: @ 808B224 - push {r4,lr} - sub sp, 0x4 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r1, _0808B254 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _0808B258 @ =sub_808B25C - str r1, [r0] - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808B254: .4byte gTasks -_0808B258: .4byte sub_808B25C - thumb_func_end sub_808B224 - - thumb_func_start sub_808B25C -sub_808B25C: @ 808B25C - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0808B280 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0808B27A - ldr r0, _0808B284 @ =sub_80A5B40 - bl SetMainCallback2 - adds r0, r4, 0 - bl DestroyTask -_0808B27A: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808B280: .4byte gPaletteFade -_0808B284: .4byte sub_80A5B40 - thumb_func_end sub_808B25C - - thumb_func_start sub_808B288 -sub_808B288: @ 808B288 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0808B2AC @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0808B2A6 - ldr r0, _0808B2B0 @ =Mailbox_ReturnToMailListAfterDeposit - bl SetMainCallback2 - adds r0, r4, 0 - bl DestroyTask -_0808B2A6: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808B2AC: .4byte gPaletteFade -_0808B2B0: .4byte Mailbox_ReturnToMailListAfterDeposit - thumb_func_end sub_808B288 - - thumb_func_start sub_808B2B4 -sub_808B2B4: @ 808B2B4 - push {r4,lr} - sub sp, 0x4 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r1, _0808B2E4 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _0808B2E8 @ =sub_808B288 - str r1, [r0] - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808B2E4: .4byte gTasks -_0808B2E8: .4byte sub_808B288 - thumb_func_end sub_808B2B4 - - thumb_func_start sub_808B2EC -sub_808B2EC: @ 808B2EC - push {r4,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0808B31C @ =gUnknown_0202E8F4 - ldrb r0, [r0] - cmp r0, 0x2 - bne _0808B328 - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r1, _0808B320 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _0808B324 @ =sub_808B338 - str r1, [r0] - b _0808B32E - .align 2, 0 -_0808B31C: .4byte gUnknown_0202E8F4 -_0808B320: .4byte gTasks -_0808B324: .4byte sub_808B338 -_0808B328: - adds r0, r4, 0 - bl sub_808B224 -_0808B32E: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_808B2EC - - thumb_func_start sub_808B338 -sub_808B338: @ 808B338 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, _0808B38C @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0808B384 - adds r0, r5, 0 - bl sub_806CA38 - ldr r1, _0808B390 @ =gLastFieldPokeMenuOpened - strb r0, [r1] - ldrb r1, [r1] - movs r0, 0x64 - muls r0, r1 - ldr r1, _0808B394 @ =gPlayerParty - adds r0, r1 - movs r1, 0x40 - bl GetMonData - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r5, 0 - bl DestroyTask - lsls r1, r4, 3 - adds r1, r4 - lsls r1, 2 - ldr r0, _0808B398 @ =gSaveBlock1 + 0x2B4C - adds r1, r0 - ldr r2, _0808B39C @ =sub_808B3EC - movs r0, 0x4 - movs r3, 0x3 - bl sub_80E62A0 -_0808B384: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0808B38C: .4byte gPaletteFade -_0808B390: .4byte gLastFieldPokeMenuOpened -_0808B394: .4byte gPlayerParty -_0808B398: .4byte gSaveBlock1 + 0x2B4C -_0808B39C: .4byte sub_808B3EC - thumb_func_end sub_808B338 - - thumb_func_start sub_808B3A0 -sub_808B3A0: @ 808B3A0 - push {r4,lr} - ldr r4, _0808B3A8 @ =0x0201b260 - b _0808B3B8 - .align 2, 0 -_0808B3A8: .4byte 0x0201b260 -_0808B3AC: - bl sub_80F9344 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _0808B3DC -_0808B3B8: - bl sub_806B124 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0808B3AC - ldrb r0, [r4] - ldr r1, _0808B3E4 @ =gLastFieldPokeMenuOpened - ldrb r1, [r1] - bl sub_806C994 - ldrb r0, [r4] - movs r1, 0 - bl sub_806BF74 - ldr r0, _0808B3E8 @ =sub_806AEDC - bl SetMainCallback2 -_0808B3DC: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808B3E4: .4byte gLastFieldPokeMenuOpened -_0808B3E8: .4byte sub_806AEDC - thumb_func_end sub_808B3A0 - - thumb_func_start sub_808B3EC -sub_808B3EC: @ 808B3EC - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r0, _0808B464 @ =gPaletteFade - mov r8, r0 - ldrb r0, [r0, 0x8] - movs r1, 0x80 - orrs r0, r1 - mov r1, r8 - strb r0, [r1, 0x8] - ldr r0, _0808B468 @ =gScriptResult - ldrh r0, [r0] - cmp r0, 0 - bne _0808B480 - ldr r7, _0808B46C @ =gUnknown_0202E8F8 - ldrh r0, [r7] - cmp r0, 0 - beq _0808B416 - movs r1, 0x1 - bl RemoveBagItem -_0808B416: - ldr r6, _0808B470 @ =gLastFieldPokeMenuOpened - ldrb r0, [r6] - movs r5, 0x64 - muls r0, r5 - ldr r4, _0808B474 @ =gPlayerParty - adds r0, r4 - movs r1, 0xC - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x1 - bl AddBagItem - ldrb r0, [r6] - muls r0, r5 - adds r0, r4 - bl TakeMailFromMon - ldrb r0, [r6] - muls r0, r5 - adds r0, r4 - movs r1, 0xC - adds r2, r7, 0 - bl SetMonData - ldr r0, _0808B478 @ =sub_808B25C - movs r1, 0x5 - bl CreateTask - mov r0, r8 - ldrb r1, [r0, 0x8] - movs r0, 0x7F - ands r0, r1 - mov r1, r8 - strb r0, [r1, 0x8] - ldr r0, _0808B47C @ =sub_806AEDC - b _0808B48E - .align 2, 0 -_0808B464: .4byte gPaletteFade -_0808B468: .4byte gScriptResult -_0808B46C: .4byte gUnknown_0202E8F8 -_0808B470: .4byte gLastFieldPokeMenuOpened -_0808B474: .4byte gPlayerParty -_0808B478: .4byte sub_808B25C -_0808B47C: .4byte sub_806AEDC -_0808B480: - ldr r2, _0808B49C @ =sub_808B4A4 - movs r0, 0 - movs r1, 0 - movs r3, 0xFF - bl sub_806AF4C - ldr r0, _0808B4A0 @ =sub_808B3A0 -_0808B48E: - bl SetMainCallback2 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0808B49C: .4byte sub_808B4A4 -_0808B4A0: .4byte sub_808B3A0 - thumb_func_end sub_808B3EC - - thumb_func_start sub_808B4A4 -sub_808B4A4: @ 808B4A4 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0808B4D8 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0808B4D2 - ldr r0, _0808B4DC @ =gLastFieldPokeMenuOpened - ldrb r0, [r0] - ldr r1, _0808B4E0 @ =gScriptItemId - ldrh r1, [r1] - movs r2, 0x1 - bl DisplayGiveHeldItemMessage - ldr r1, _0808B4E4 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _0808B4E8 @ =sub_808B4EC - str r1, [r0] -_0808B4D2: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808B4D8: .4byte gPaletteFade -_0808B4DC: .4byte gLastFieldPokeMenuOpened -_0808B4E0: .4byte gScriptItemId -_0808B4E4: .4byte gTasks -_0808B4E8: .4byte sub_808B4EC - thumb_func_end sub_808B4A4 - - thumb_func_start sub_808B4EC -sub_808B4EC: @ 808B4EC - push {lr} - lsls r0, 24 - lsrs r1, r0, 24 - ldr r0, _0808B504 @ =gUnknown_0202E8F6 - ldrb r0, [r0] - cmp r0, 0x1 - beq _0808B500 - adds r0, r1, 0 - bl sub_808B224 -_0808B500: - pop {r0} - bx r0 - .align 2, 0 -_0808B504: .4byte gUnknown_0202E8F6 - thumb_func_end sub_808B4EC - - thumb_func_start sub_808B508 -sub_808B508: @ 808B508 - push {lr} - lsls r0, 24 - lsrs r0, 24 - bl sub_808B224 - pop {r0} - bx r0 - thumb_func_end sub_808B508 - - thumb_func_start sub_808B518 -sub_808B518: @ 808B518 - push {r4,lr} - ldr r4, _0808B520 @ =0x0201b260 - b _0808B530 - .align 2, 0 -_0808B520: .4byte 0x0201b260 -_0808B524: - bl sub_80F9344 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _0808B554 -_0808B530: - bl sub_806B124 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0808B524 - ldrb r0, [r4] - ldr r1, _0808B55C @ =gUnknown_020384F0 - ldrb r1, [r1] - bl sub_806C994 - ldrb r0, [r4] - movs r1, 0 - bl sub_806BF74 - ldr r0, _0808B560 @ =sub_806AEDC - bl SetMainCallback2 -_0808B554: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808B55C: .4byte gUnknown_020384F0 -_0808B560: .4byte sub_806AEDC - thumb_func_end sub_808B518 - - thumb_func_start sub_808B564 -sub_808B564: @ 808B564 - push {lr} - ldr r2, _0808B58C @ =gPaletteFade - ldrb r0, [r2, 0x8] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2, 0x8] - bl sub_809FA30 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x4 - beq _0808B594 - ldr r2, _0808B590 @ =TaughtMove - movs r0, 0 - movs r1, 0 - movs r3, 0xFF - bl sub_806AF4C - b _0808B5A0 - .align 2, 0 -_0808B58C: .4byte gPaletteFade -_0808B590: .4byte TaughtMove -_0808B594: - ldr r2, _0808B5AC @ =StopTryingToTeachMove_806F588 - movs r0, 0 - movs r1, 0 - movs r3, 0xFF - bl sub_806AF4C -_0808B5A0: - ldr r0, _0808B5B0 @ =sub_808B518 - bl SetMainCallback2 - pop {r0} - bx r0 - .align 2, 0 -_0808B5AC: .4byte StopTryingToTeachMove_806F588 -_0808B5B0: .4byte sub_808B518 - thumb_func_end sub_808B564 - - thumb_func_start sub_808B5B4 -sub_808B5B4: @ 808B5B4 - push {lr} - ldr r3, _0808B5D8 @ =gUnknown_03005CF0 - ldr r2, _0808B5DC @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - ldr r2, [r1] - str r2, [r3] - ldr r2, _0808B5E0 @ =sub_808B5E4 - str r2, [r1] - lsls r0, 24 - lsrs r0, 24 - bl _call_via_r2 - pop {r0} - bx r0 - .align 2, 0 -_0808B5D8: .4byte gUnknown_03005CF0 -_0808B5DC: .4byte gTasks -_0808B5E0: .4byte sub_808B5E4 - thumb_func_end sub_808B5B4 - - thumb_func_start sub_808B5E4 -sub_808B5E4: @ 808B5E4 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl sub_8055870 - cmp r0, 0x1 - beq _0808B602 - ldr r1, _0808B608 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _0808B60C @ =gUnknown_03005CF0 - ldr r1, [r1] - str r1, [r0] -_0808B602: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808B608: .4byte gTasks -_0808B60C: .4byte gUnknown_03005CF0 - thumb_func_end sub_808B5E4 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/pokemon_storage_system.s b/asm/pokemon_storage_system.s index db16c2788..eaf44749b 100644 --- a/asm/pokemon_storage_system.s +++ b/asm/pokemon_storage_system.s @@ -12958,7 +12958,7 @@ _0809C08C: adds r1, r6, r2 str r0, [r1] adds r0, r7, 0 - bl pokemon_get_pal + bl GetMonSpritePal ldr r2, _0809C11C @ =0x000011e8 adds r1, r6, r2 str r0, [r1] @@ -13031,7 +13031,7 @@ _0809C120: str r2, [r4] ldrh r0, [r5] mov r1, r9 - bl species_and_otid_get_pal + bl GetMonSpritePalFromOtIdPersonality ldr r2, _0809C1D0 @ =0x000011e8 adds r1, r6, r2 str r0, [r1] diff --git a/asm/pokemon_summary_screen.s b/asm/pokemon_summary_screen.s index fea619ac8..859fd177f 100644 --- a/asm/pokemon_summary_screen.s +++ b/asm/pokemon_summary_screen.s @@ -3859,7 +3859,7 @@ _0809F718: adds r1, r0, 0 adds r0, r5, 0 adds r2, r6, 0 - bl sub_80409C8 + bl GetMonSpritePalStructFromOtIdPersonality adds r4, r0, 0 bl LoadCompressedObjectPalette ldrh r0, [r4, 0x4] @@ -7620,7 +7620,7 @@ sub_80A1808: @ 80A1808 ldr r0, _080A1868 @ =sub_80A1888 str r0, [r4] adds r0, r6, 0 - bl sub_8040A3C + bl IsPokeSpriteNotFlipped lsls r0, 24 cmp r0, 0 bne _080A186C diff --git a/asm/pokenav.s b/asm/pokenav.s index 757a2a5a2..ce72a83e0 100644 --- a/asm/pokenav.s +++ b/asm/pokenav.s @@ -340,7 +340,7 @@ sub_80EBD30: @ 80EBD30 bl LoadOam bl ProcessSpriteCopyRequests bl TransferPlttBuffer - bl sub_80FB260 + bl UpdateRegionMapVideoRegs bl sub_80EFE7C pop {r0} bx r0 @@ -10523,7 +10523,7 @@ sub_80F0FFC: @ 80F0FFC ldrh r1, [r0] adds r0, r5, 0 movs r2, 0 - bl sub_80FBFB4 + bl GetMapSectionName ldr r0, _080F1054 @ =gWindowConfig_81E710C bl BasicInitMenuWindow adds r0, r5, 0 @@ -14321,10 +14321,10 @@ sub_80F2DD8: @ 80F2DD8 push {lr} movs r0, 0x7 movs r1, 0x7 - bl sub_80FBB3C + bl CreateRegionMapCursor movs r0, 0x8 movs r1, 0x8 - bl sub_80FBCF0 + bl CreateRegionMapPlayerIcon bl sub_80FBF94 pop {r0} bx r0 @@ -14333,7 +14333,7 @@ sub_80F2DD8: @ 80F2DD8 thumb_func_start sub_80F2DF4 sub_80F2DF4: @ 80F2DF4 push {lr} - bl sub_80FAB10 + bl FreeRegionMapIconResources pop {r0} bx r0 thumb_func_end sub_80F2DF4 @@ -17787,7 +17787,7 @@ sub_80F4824: @ 80F4824 adds r0, r5, 0 mov r1, r8 adds r2, r4, 0 - bl species_and_otid_get_pal + bl GetMonSpritePalFromOtIdPersonality mov r2, r9 lsls r1, r2, 7 adds r1, r7, r1 @@ -21564,7 +21564,7 @@ _080F65EA: lsrs r4, r0, 24 mov r0, r9 mov r1, r10 - bl sub_8040D8C + bl ShouldHideGenderIcon cmp r0, 0 beq _080F65FC movs r4, 0xFF @@ -22370,7 +22370,7 @@ _080F6C3A: adds r6, r0, r1 ldrh r7, [r6] adds r0, r7, 0 - bl trainer_flag_check + bl HasTrainerAlreadyBeenFought lsls r0, 24 cmp r0, 0 beq _080F6CA0 @@ -22402,7 +22402,7 @@ _080F6C3A: strb r1, [r0] ldrh r0, [r6, 0xA] ldrh r1, [r6, 0xC] - bl get_mapheader_by_bank_and_number + bl Overworld_GetMapHeaderByGroupAndId ldrh r1, [r5] lsls r1, 3 adds r4, r1 @@ -22431,7 +22431,7 @@ _080F6CB4: adds r5, r0, r1 ldrh r4, [r5] adds r0, r4, 0 - bl trainer_flag_check + bl HasTrainerAlreadyBeenFought lsls r0, 24 cmp r0, 0 beq _080F6D0E diff --git a/asm/record_mixing.s b/asm/record_mixing.s deleted file mode 100644 index ce0121a40..000000000 --- a/asm/record_mixing.s +++ /dev/null @@ -1,543 +0,0 @@ - .include "constants/gba_constants.inc" - .include "constants/species_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start sub_80B9C6C -sub_80B9C6C: @ 80B9C6C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x58 - str r0, [sp, 0x2C] - str r1, [sp, 0x30] - str r3, [sp, 0x38] - lsls r2, 24 - lsrs r2, 24 - str r2, [sp, 0x34] - bl Random - lsls r0, 16 - lsrs r0, 16 - str r0, [sp, 0x40] - ldr r0, _080B9DA8 @ =gLinkPlayers - ldrh r0, [r0, 0x4] - bl SeedRng - bl GetLinkPlayerCount - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - movs r3, 0 - add r0, sp, 0x1C - mov r9, r0 - movs r1, 0x1D - add r1, sp - mov r10, r1 - mov r2, sp - adds r2, 0xC - str r2, [sp, 0x4C] - movs r7, 0xFF - add r4, sp, 0x8 - movs r2, 0 - mov r6, r9 - mov r5, r10 -_080B9CBC: - mov r1, sp - adds r1, r3 - adds r1, 0x4 - ldrb r0, [r1] - orrs r0, r7 - strb r0, [r1] - adds r0, r4, r3 - strb r2, [r0] - lsls r1, r3, 1 - adds r0, r6, r1 - strb r2, [r0] - adds r1, r5, r1 - strb r2, [r1] - adds r0, r3, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 - cmp r3, 0x3 - bls _080B9CBC - movs r4, 0 - str r4, [sp, 0x3C] - movs r3, 0 - mov r1, r8 - lsls r0, r1, 16 - lsrs r1, r0, 16 - str r0, [sp, 0x50] - ldr r4, [sp, 0x30] - ldr r0, [sp, 0x34] - adds r2, r4, 0 - muls r2, r0 - str r2, [sp, 0x48] - ldr r2, [sp, 0x3C] - cmp r2, r1 - bcs _080B9D46 - mov r8, r1 -_080B9D00: - ldr r4, [sp, 0x30] - adds r0, r4, 0 - muls r0, r3 - ldr r1, [sp, 0x2C] - adds r6, r1, r0 - ldr r0, [r6, 0x70] - cmp r0, 0 - beq _080B9D3C - movs r7, 0 - cmp r7, r0 - bcs _080B9D3C - adds r4, r6, 0 - adds r4, 0x74 - mov r2, r9 - lsls r1, r3, 1 - movs r5, 0x1 -_080B9D20: - lsls r0, r7, 1 - adds r0, r4, r0 - ldrh r0, [r0] - cmp r0, 0 - bne _080B9D30 - adds r0, r7, r1 - adds r0, r2, r0 - strb r5, [r0] -_080B9D30: - adds r0, r7, 0x1 - lsls r0, 16 - lsrs r7, r0, 16 - ldr r0, [r6, 0x70] - cmp r7, r0 - bcc _080B9D20 -_080B9D3C: - adds r0, r3, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 - cmp r3, r8 - bcc _080B9D00 -_080B9D46: - movs r7, 0 - movs r3, 0 - ldr r2, [sp, 0x50] - cmp r2, 0 - beq _080B9E3E - mov r4, sp - adds r4, 0x24 - str r4, [sp, 0x44] - movs r0, 0x25 - add r0, sp - mov r8, r0 -_080B9D5C: - ldr r1, [sp, 0x30] - adds r0, r1, 0 - muls r0, r3 - ldr r2, [sp, 0x2C] - adds r6, r2, r0 - lsls r1, r3, 1 - mov r4, r9 - adds r0, r4, r1 - ldrb r0, [r0] - cmp r0, 0x1 - beq _080B9D7C - mov r2, r10 - adds r0, r2, r1 - ldrb r0, [r0] - cmp r0, 0x1 - bne _080B9D86 -_080B9D7C: - ldr r0, [sp, 0x3C] - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - str r0, [sp, 0x3C] -_080B9D86: - mov r4, r9 - adds r0, r4, r1 - ldrb r0, [r0] - cmp r0, 0x1 - bne _080B9DAC - mov r2, r10 - adds r0, r2, r1 - ldrb r2, [r0] - cmp r2, 0 - bne _080B9DAC -_080B9D9A: - lsls r1, r7, 1 - ldr r4, [sp, 0x44] - adds r0, r4, r1 - strb r3, [r0] - add r1, r8 - strb r2, [r1] - b _080B9E2C - .align 2, 0 -_080B9DA8: .4byte gLinkPlayers -_080B9DAC: - mov r2, r9 - adds r0, r2, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _080B9DC0 - mov r4, r10 - adds r0, r4, r1 - ldrb r2, [r0] - cmp r2, 0x1 - beq _080B9D9A -_080B9DC0: - mov r2, r9 - adds r0, r2, r1 - ldrb r0, [r0] - cmp r0, 0x1 - bne _080B9E32 - mov r4, r10 - adds r0, r4, r1 - ldrb r0, [r0] - cmp r0, 0x1 - bne _080B9E32 - lsls r5, r7, 1 - ldr r1, [sp, 0x44] - adds r0, r1, r5 - strb r3, [r0] - adds r0, r6, 0 - str r3, [sp, 0x54] - bl sub_80B9BBC - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r6, 0 - adds r0, 0x38 - bl sub_80B9BBC - lsls r0, 24 - lsrs r1, r0, 24 - ldr r3, [sp, 0x54] - cmp r4, 0 - bne _080B9E0A - cmp r1, 0 - beq _080B9E0E - mov r2, r8 - adds r1, r2, r5 - movs r0, 0x1 - strb r0, [r1] - b _080B9E2C -_080B9E0A: - cmp r1, 0 - beq _080B9E26 -_080B9E0E: - str r3, [sp, 0x54] - bl Random - mov r4, r8 - adds r2, r4, r5 - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x1 - ands r0, r1 - strb r0, [r2] - ldr r3, [sp, 0x54] - b _080B9E2C -_080B9E26: - mov r2, r8 - adds r0, r2, r5 - strb r1, [r0] -_080B9E2C: - adds r0, r7, 0x1 - lsls r0, 16 - lsrs r7, r0, 16 -_080B9E32: - adds r0, r3, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 - ldr r4, [sp, 0x50] - cmp r0, r4 - bcc _080B9D5C -_080B9E3E: - movs r3, 0 - ldr r1, [sp, 0x48] - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 3 - ldr r2, [sp, 0x2C] - adds r6, r2, r0 - ldr r1, [sp, 0x4C] -_080B9E4E: - lsls r0, r3, 2 - adds r0, r1, r0 - str r6, [r0] - adds r0, r3, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 - cmp r3, 0x3 - bls _080B9E4E - ldr r0, [sp, 0x38] - bl sub_80B9C4C - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x3 - bl __umodsi3 - lsls r0, 24 - lsrs r1, r0, 24 - ldr r4, [sp, 0x3C] - cmp r4, 0x3 - beq _080B9E9C - cmp r4, 0x3 - bgt _080B9E82 - cmp r4, 0x2 - beq _080B9E8A - b _080B9EF0 -_080B9E82: - ldr r0, [sp, 0x3C] - cmp r0, 0x4 - beq _080B9EBC - b _080B9EF0 -_080B9E8A: - add r2, sp, 0x24 - movs r0, 0x1 - str r0, [sp] - ldr r0, [sp, 0x2C] - ldr r1, [sp, 0x30] - movs r3, 0 - bl sub_80B9BC4 - b _080B9EF0 -_080B9E9C: - ldr r0, _080B9EB8 @ =gUnknown_083D02B4 - lsls r1, 1 - adds r2, r1, r0 - ldrb r3, [r2] - adds r0, 0x1 - adds r1, r0 - ldrb r0, [r1] - add r2, sp, 0x24 - str r0, [sp] - ldr r0, [sp, 0x2C] - ldr r1, [sp, 0x30] - bl sub_80B9BC4 - b _080B9EF0 - .align 2, 0 -_080B9EB8: .4byte gUnknown_083D02B4 -_080B9EBC: - add r6, sp, 0x24 - ldr r4, _080B9F2C @ =gUnknown_083D02BA - lsls r5, r1, 2 - adds r0, r5, r4 - ldrb r3, [r0] - adds r0, r4, 0x1 - adds r0, r5, r0 - ldrb r0, [r0] - str r0, [sp] - ldr r0, [sp, 0x2C] - ldr r1, [sp, 0x30] - adds r2, r6, 0 - bl sub_80B9BC4 - adds r0, r4, 0x2 - adds r0, r5, r0 - ldrb r3, [r0] - adds r4, 0x3 - adds r5, r4 - ldrb r0, [r5] - str r0, [sp] - ldr r0, [sp, 0x2C] - ldr r1, [sp, 0x30] - adds r2, r6, 0 - bl sub_80B9BC4 -_080B9EF0: - ldr r1, [sp, 0x2C] - ldr r2, [sp, 0x48] - adds r6, r1, r2 - ldr r4, _080B9F30 @ =gSaveBlock1 - ldr r1, _080B9F34 @ =0x0000303c - adds r0, r4, r1 - adds r1, r6, 0 - movs r2, 0x38 - bl memcpy - ldr r2, _080B9F38 @ =0x00003074 - adds r4, r2 - adds r1, r6, 0 - adds r1, 0x38 - adds r0, r4, 0 - movs r2, 0x38 - bl memcpy - ldr r0, [sp, 0x40] - bl SeedRng - add sp, 0x58 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080B9F2C: .4byte gUnknown_083D02BA -_080B9F30: .4byte gSaveBlock1 -_080B9F34: .4byte 0x0000303c -_080B9F38: .4byte 0x00003074 - thumb_func_end sub_80B9C6C - - thumb_func_start sub_80B9F3C -sub_80B9F3C: @ 80B9F3C - push {r4,lr} - adds r4, r0, 0 - lsls r1, 24 - cmp r1, 0 - beq _080BA000 - ldrh r0, [r4] - cmp r0, 0 - beq _080BA000 - bl GetPocketByItemId - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x5 - bne _080B9FC8 - ldrh r0, [r4] - movs r1, 0x1 - bl CheckBagHasItem - lsls r0, 24 - cmp r0, 0 - bne _080B9FB8 - ldrh r0, [r4] - movs r1, 0x1 - bl CheckPCHasItem - lsls r0, 24 - cmp r0, 0 - bne _080B9FB8 - ldrh r0, [r4] - movs r1, 0x1 - bl AddBagItem - lsls r0, 24 - cmp r0, 0 - beq _080B9FB8 - ldr r0, _080B9FA4 @ =0x00004001 - ldrh r1, [r4] - bl VarSet - ldr r0, _080B9FA8 @ =gStringVar1 - ldr r1, _080B9FAC @ =gLinkPlayers + 0x8 - bl StringCopy - ldrh r1, [r4] - ldr r0, _080B9FB0 @ =0x00000113 - cmp r1, r0 - bne _080BA000 - ldr r0, _080B9FB4 @ =0x00000853 - bl FlagSet - b _080BA000 - .align 2, 0 -_080B9FA4: .4byte 0x00004001 -_080B9FA8: .4byte gStringVar1 -_080B9FAC: .4byte gLinkPlayers + 0x8 -_080B9FB0: .4byte 0x00000113 -_080B9FB4: .4byte 0x00000853 -_080B9FB8: - ldr r0, _080B9FC4 @ =0x00004001 - movs r1, 0 - bl VarSet - b _080BA000 - .align 2, 0 -_080B9FC4: .4byte 0x00004001 -_080B9FC8: - ldrh r0, [r4] - movs r1, 0x1 - bl AddBagItem - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080B9FF8 - ldr r0, _080B9FEC @ =0x00004001 - ldrh r1, [r4] - bl VarSet - ldr r0, _080B9FF0 @ =gStringVar1 - ldr r1, _080B9FF4 @ =gLinkPlayers + 0x8 - bl StringCopy - b _080BA000 - .align 2, 0 -_080B9FEC: .4byte 0x00004001 -_080B9FF0: .4byte gStringVar1 -_080B9FF4: .4byte gLinkPlayers + 0x8 -_080B9FF8: - ldr r0, _080BA008 @ =0x00004001 - movs r1, 0 - bl VarSet -_080BA000: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080BA008: .4byte 0x00004001 - thumb_func_end sub_80B9F3C - - thumb_func_start sub_80BA00C -sub_80BA00C: @ 80BA00C - push {r4,lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - ldr r1, _080BA030 @ =gTasks - adds r4, r0, r1 - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0x5 - bhi _080BA09C - lsls r0, 2 - ldr r1, _080BA034 @ =_080BA038 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080BA030: .4byte gTasks -_080BA034: .4byte _080BA038 - .align 2, 0 -_080BA038: - .4byte _080BA086 - .4byte _080BA086 - .4byte _080BA050 - .4byte _080BA05A - .4byte _080BA074 - .4byte _080BA08E -_080BA050: - bl SetSecretBase2Field_9_AndHideBG - bl sub_8125E2C - b _080BA086 -_080BA05A: - bl sub_8125E6C - lsls r0, 24 - cmp r0, 0 - beq _080BA09C - bl ClearSecretBase2Field_9_2 - ldrh r0, [r4, 0x8] - adds r0, 0x1 - movs r1, 0 - strh r0, [r4, 0x8] - strh r1, [r4, 0xA] - b _080BA09C -_080BA074: - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xA - ble _080BA09C - bl sub_800832C -_080BA086: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _080BA09C -_080BA08E: - ldr r0, _080BA0A4 @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - bne _080BA09C - adds r0, r2, 0 - bl DestroyTask -_080BA09C: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080BA0A4: .4byte gReceivedRemoteLinkPlayers - thumb_func_end sub_80BA00C - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/region_map.s b/asm/region_map.s deleted file mode 100644 index 44d6a4e91..000000000 --- a/asm/region_map.s +++ /dev/null @@ -1,3969 +0,0 @@ - .include "constants/gba_constants.inc" - .include "constants/species_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start sub_80FA8EC -sub_80FA8EC: @ 80FA8EC - push {lr} - lsls r1, 24 - lsrs r1, 24 - bl sub_80FA904 -_080FA8F6: - bl sub_80FA940 - lsls r0, 24 - cmp r0, 0 - bne _080FA8F6 - pop {r0} - bx r0 - thumb_func_end sub_80FA8EC - - thumb_func_start sub_80FA904 -sub_80FA904: @ 80FA904 - push {r4,lr} - lsls r1, 24 - lsrs r1, 24 - ldr r3, _080FA928 @ =gUnknown_020388CC - str r0, [r3] - movs r2, 0x79 - adds r2, r0 - mov r12, r2 - movs r2, 0 - mov r4, r12 - strb r2, [r4] - adds r0, 0x78 - strb r1, [r0] - ldr r3, [r3] - cmp r1, 0 - bne _080FA930 - ldr r0, _080FA92C @ =sub_80FAB78 - b _080FA932 - .align 2, 0 -_080FA928: .4byte gUnknown_020388CC -_080FA92C: .4byte sub_80FAB78 -_080FA930: - ldr r0, _080FA93C @ =sub_80FAD04 -_080FA932: - str r0, [r3, 0x18] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080FA93C: .4byte sub_80FAD04 - thumb_func_end sub_80FA904 - - thumb_func_start sub_80FA940 -sub_80FA940: @ 80FA940 - push {r4,r5,lr} - sub sp, 0xC - ldr r0, _080FA95C @ =gUnknown_020388CC - ldr r0, [r0] - adds r0, 0x79 - ldrb r0, [r0] - cmp r0, 0x7 - bls _080FA952 - b _080FAAE2 -_080FA952: - lsls r0, 2 - ldr r1, _080FA960 @ =_080FA964 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080FA95C: .4byte gUnknown_020388CC -_080FA960: .4byte _080FA964 - .align 2, 0 -_080FA964: - .4byte _080FA984 - .4byte _080FA998 - .4byte _080FA9AC - .4byte _080FA9BC - .4byte _080FA9D8 - .4byte _080FA9F4 - .4byte _080FAA38 - .4byte _080FAAB4 -_080FA984: - ldr r0, _080FA990 @ =gUnknown_083E5DA0 - ldr r1, _080FA994 @ =0x06008000 - bl LZ77UnCompVram - b _080FAAF4 - .align 2, 0 -_080FA990: .4byte gUnknown_083E5DA0 -_080FA994: .4byte 0x06008000 -_080FA998: - ldr r0, _080FA9A4 @ =gUnknown_083E6B04 - ldr r1, _080FA9A8 @ =0x0600e000 - bl LZ77UnCompVram - b _080FAAF4 - .align 2, 0 -_080FA9A4: .4byte gUnknown_083E6B04 -_080FA9A8: .4byte 0x0600e000 -_080FA9AC: - ldr r0, _080FA9B8 @ =gUnknown_083E5D60 - movs r1, 0x70 - movs r2, 0x60 - bl LoadPalette - b _080FAAF4 - .align 2, 0 -_080FA9B8: .4byte gUnknown_083E5D60 -_080FA9BC: - ldr r0, _080FA9D0 @ =gUnknown_083E5AF0 - ldr r1, _080FA9D4 @ =gUnknown_020388CC - ldr r1, [r1] - movs r2, 0xC0 - lsls r2, 1 - adds r1, r2 - bl LZ77UnCompWram - b _080FAAF4 - .align 2, 0 -_080FA9D0: .4byte gUnknown_083E5AF0 -_080FA9D4: .4byte gUnknown_020388CC -_080FA9D8: - ldr r0, _080FA9EC @ =gUnknown_083E5B34 - ldr r1, _080FA9F0 @ =gUnknown_020388CC - ldr r1, [r1] - movs r3, 0xA0 - lsls r3, 2 - adds r1, r3 - bl LZ77UnCompWram - b _080FAAF4 - .align 2, 0 -_080FA9EC: .4byte gUnknown_083E5B34 -_080FA9F0: .4byte gUnknown_020388CC -_080FA9F4: - bl sub_80FB32C - ldr r4, _080FAA34 @ =gUnknown_020388CC - ldr r2, [r4] - adds r0, r2, 0 - adds r0, 0x54 - ldrh r1, [r0] - adds r0, 0x20 - strh r1, [r0] - subs r0, 0x1E - ldrh r0, [r0] - adds r1, r2, 0 - adds r1, 0x76 - strh r0, [r1] - ldrh r0, [r2, 0x14] - bl sub_80FB758 - ldr r1, [r4] - strb r0, [r1, 0x16] - ldr r0, [r4] - ldrh r0, [r0, 0x14] - bl sub_80FB9C0 - adds r1, r0, 0 - ldr r0, [r4] - strh r1, [r0, 0x14] - ldrh r1, [r0, 0x14] - movs r2, 0x10 - bl sub_80FBFB4 - b _080FAAF4 - .align 2, 0 -_080FAA34: .4byte gUnknown_020388CC -_080FAA38: - ldr r0, _080FAA60 @ =gUnknown_020388CC - ldr r4, [r0] - adds r0, r4, 0 - adds r0, 0x78 - ldrb r1, [r0] - cmp r1, 0 - bne _080FAA64 - movs r0, 0x80 - lsls r0, 1 - str r0, [sp] - str r0, [sp, 0x4] - str r1, [sp, 0x8] - movs r0, 0 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl sub_80FB170 - b _080FAAF4 - .align 2, 0 -_080FAA60: .4byte gUnknown_020388CC -_080FAA64: - adds r1, r4, 0 - adds r1, 0x54 - ldrh r0, [r1] - lsls r0, 3 - subs r0, 0x34 - adds r2, r4, 0 - adds r2, 0x5C - movs r3, 0 - strh r0, [r2] - movs r5, 0x56 - adds r5, r4 - mov r12, r5 - ldrh r0, [r5] - lsls r0, 3 - subs r0, 0x44 - adds r5, r4, 0 - adds r5, 0x5E - strh r0, [r5] - ldrh r1, [r1] - adds r0, r4, 0 - adds r0, 0x64 - strh r1, [r0] - mov r0, r12 - ldrh r1, [r0] - adds r0, r4, 0 - adds r0, 0x66 - strh r1, [r0] - movs r1, 0 - ldrsh r0, [r2, r1] - movs r2, 0 - ldrsh r1, [r5, r2] - movs r2, 0x80 - str r2, [sp] - str r2, [sp, 0x4] - str r3, [sp, 0x8] - movs r2, 0x38 - movs r3, 0x48 - bl sub_80FB170 - b _080FAAF4 -_080FAAB4: - bl sub_80FBA18 - bl sub_80FB260 - ldr r2, _080FAAE8 @ =gUnknown_020388CC - ldr r0, [r2] - movs r1, 0 - str r1, [r0, 0x1C] - str r1, [r0, 0x20] - adds r0, 0x7A - strb r1, [r0] - ldr r0, [r2] - adds r0, 0x7E - strb r1, [r0] - ldr r1, _080FAAEC @ =REG_BG2CNT - ldr r3, _080FAAF0 @ =0x0000bc8a - adds r0, r3, 0 - strh r0, [r1] - ldr r1, [r2] - adds r1, 0x79 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_080FAAE2: - movs r0, 0 - b _080FAB02 - .align 2, 0 -_080FAAE8: .4byte gUnknown_020388CC -_080FAAEC: .4byte REG_BG2CNT -_080FAAF0: .4byte 0x0000bc8a -_080FAAF4: - ldr r0, _080FAB0C @ =gUnknown_020388CC - ldr r1, [r0] - adds r1, 0x79 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - movs r0, 0x1 -_080FAB02: - add sp, 0xC - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_080FAB0C: .4byte gUnknown_020388CC - thumb_func_end sub_80FA940 - - thumb_func_start sub_80FAB10 -sub_80FAB10: @ 80FAB10 - push {r4,lr} - ldr r4, _080FAB5C @ =gUnknown_020388CC - ldr r0, [r4] - ldr r0, [r0, 0x1C] - cmp r0, 0 - beq _080FAB34 - bl DestroySprite - ldr r0, [r4] - adds r0, 0x58 - ldrh r0, [r0] - bl FreeSpriteTilesByTag - ldr r0, [r4] - adds r0, 0x5A - ldrh r0, [r0] - bl FreeSpritePaletteByTag -_080FAB34: - ldr r0, [r4] - ldr r0, [r0, 0x20] - cmp r0, 0 - beq _080FAB54 - bl DestroySprite - ldr r0, [r4] - adds r0, 0x70 - ldrh r0, [r0] - bl FreeSpriteTilesByTag - ldr r0, [r4] - adds r0, 0x72 - ldrh r0, [r0] - bl FreeSpritePaletteByTag -_080FAB54: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080FAB5C: .4byte gUnknown_020388CC - thumb_func_end sub_80FAB10 - - thumb_func_start sub_80FAB60 -sub_80FAB60: @ 80FAB60 - push {lr} - ldr r0, _080FAB74 @ =gUnknown_020388CC - ldr r0, [r0] - ldr r0, [r0, 0x18] - bl _call_via_r0 - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - .align 2, 0 -_080FAB74: .4byte gUnknown_020388CC - thumb_func_end sub_80FAB60 - - thumb_func_start sub_80FAB78 -sub_80FAB78: @ 80FAB78 - push {r4,lr} - movs r4, 0 - ldr r2, _080FAC14 @ =gUnknown_020388CC - ldr r0, [r2] - adds r0, 0x7B - strb r4, [r0] - ldr r0, [r2] - adds r0, 0x7C - strb r4, [r0] - ldr r3, _080FAC18 @ =gMain - ldrh r1, [r3, 0x2C] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _080FABAA - ldr r1, [r2] - adds r0, r1, 0 - adds r0, 0x56 - ldrh r0, [r0] - cmp r0, 0x2 - bls _080FABAA - adds r1, 0x7C - movs r0, 0xFF - strb r0, [r1] - movs r4, 0x1 -_080FABAA: - ldrh r1, [r3, 0x2C] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _080FABC8 - ldr r1, [r2] - adds r0, r1, 0 - adds r0, 0x56 - ldrh r0, [r0] - cmp r0, 0xF - bhi _080FABC8 - adds r1, 0x7C - movs r0, 0x1 - strb r0, [r1] - movs r4, 0x1 -_080FABC8: - ldrh r1, [r3, 0x2C] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _080FABE6 - ldr r1, [r2] - adds r0, r1, 0 - adds r0, 0x54 - ldrh r0, [r0] - cmp r0, 0x1 - bls _080FABE6 - adds r1, 0x7B - movs r0, 0xFF - strb r0, [r1] - movs r4, 0x1 -_080FABE6: - ldrh r1, [r3, 0x2C] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080FAC04 - ldr r1, [r2] - adds r0, r1, 0 - adds r0, 0x54 - ldrh r0, [r0] - cmp r0, 0x1B - bhi _080FAC04 - adds r1, 0x7B - movs r0, 0x1 - strb r0, [r1] - movs r4, 0x1 -_080FAC04: - ldrh r3, [r3, 0x2E] - movs r0, 0x1 - ands r0, r3 - cmp r0, 0 - beq _080FAC1C - movs r4, 0x4 - b _080FAC26 - .align 2, 0 -_080FAC14: .4byte gUnknown_020388CC -_080FAC18: .4byte gMain -_080FAC1C: - movs r0, 0x2 - ands r0, r3 - cmp r0, 0 - beq _080FAC26 - movs r4, 0x5 -_080FAC26: - cmp r4, 0x1 - bne _080FAC38 - ldr r0, [r2] - adds r0, 0x7A - movs r1, 0x4 - strb r1, [r0] - ldr r1, [r2] - ldr r0, _080FAC40 @ =_swiopen - str r0, [r1, 0x18] -_080FAC38: - adds r0, r4, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080FAC40: .4byte _swiopen - thumb_func_end sub_80FAB78 - - thumb_func_start _swiopen -_swiopen: @ 80FAC44 - push {r4,r5,lr} - ldr r5, _080FAC5C @ =gUnknown_020388CC - ldr r1, [r5] - adds r0, r1, 0 - adds r0, 0x7A - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0 - beq _080FAC60 - movs r0, 0x2 - b _080FACFA - .align 2, 0 -_080FAC5C: .4byte gUnknown_020388CC -_080FAC60: - adds r0, r1, 0 - adds r0, 0x7B - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0 - ble _080FAC76 - adds r1, 0x54 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] -_080FAC76: - ldr r1, [r5] - adds r0, r1, 0 - adds r0, 0x7B - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0 - bge _080FAC8E - adds r1, 0x54 - ldrh r0, [r1] - subs r0, 0x1 - strh r0, [r1] -_080FAC8E: - ldr r1, [r5] - adds r0, r1, 0 - adds r0, 0x7C - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0 - ble _080FACA6 - adds r1, 0x56 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] -_080FACA6: - ldr r1, [r5] - adds r0, r1, 0 - adds r0, 0x7C - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0 - bge _080FACBE - adds r1, 0x56 - ldrh r0, [r1] - subs r0, 0x1 - strh r0, [r1] -_080FACBE: - ldr r1, [r5] - adds r0, r1, 0 - adds r0, 0x54 - ldrh r0, [r0] - adds r1, 0x56 - ldrh r1, [r1] - bl GetRegionMapSectionAt - lsls r0, 16 - lsrs r4, r0, 16 - adds r0, r4, 0 - bl sub_80FB758 - ldr r1, [r5] - strb r0, [r1, 0x16] - ldr r0, [r5] - ldrh r1, [r0, 0x14] - cmp r4, r1 - beq _080FACEE - strh r4, [r0, 0x14] - ldrh r1, [r0, 0x14] - movs r2, 0x10 - bl sub_80FBFB4 -_080FACEE: - bl sub_80FBA18 - ldr r1, [r5] - ldr r0, _080FAD00 @ =sub_80FAB78 - str r0, [r1, 0x18] - movs r0, 0x3 -_080FACFA: - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_080FAD00: .4byte sub_80FAB78 - thumb_func_end _swiopen - - thumb_func_start sub_80FAD04 -sub_80FAD04: @ 80FAD04 - push {r4-r6,lr} - movs r4, 0 - ldr r3, _080FADD4 @ =gUnknown_020388CC - ldr r0, [r3] - mov r12, r0 - adds r0, 0x6A - strh r4, [r0] - mov r5, r12 - adds r5, 0x68 - strh r4, [r5] - ldr r2, _080FADD8 @ =gMain - ldrh r1, [r2, 0x2C] - movs r0, 0x40 - ands r0, r1 - adds r6, r3, 0 - adds r3, r2, 0 - cmp r0, 0 - beq _080FAD3E - mov r0, r12 - adds r0, 0x5E - movs r2, 0 - ldrsh r1, [r0, r2] - movs r0, 0x34 - negs r0, r0 - cmp r1, r0 - ble _080FAD3E - ldr r0, _080FADDC @ =0x0000ffff - strh r0, [r5] - movs r4, 0x1 -_080FAD3E: - ldrh r1, [r3, 0x2C] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _080FAD5E - ldr r1, [r6] - adds r0, r1, 0 - adds r0, 0x5E - movs r5, 0 - ldrsh r0, [r0, r5] - cmp r0, 0x3B - bgt _080FAD5E - adds r1, 0x68 - movs r0, 0x1 - strh r0, [r1] - movs r4, 0x1 -_080FAD5E: - ldrh r1, [r3, 0x2C] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _080FAD84 - ldr r2, [r6] - adds r0, r2, 0 - adds r0, 0x5C - movs r5, 0 - ldrsh r1, [r0, r5] - movs r0, 0x2C - negs r0, r0 - cmp r1, r0 - ble _080FAD84 - adds r1, r2, 0 - adds r1, 0x6A - ldr r0, _080FADDC @ =0x0000ffff - strh r0, [r1] - movs r4, 0x1 -_080FAD84: - ldrh r1, [r3, 0x2C] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080FADA4 - ldr r1, [r6] - adds r0, r1, 0 - adds r0, 0x5C - movs r2, 0 - ldrsh r0, [r0, r2] - cmp r0, 0xAB - bgt _080FADA4 - adds r1, 0x6A - movs r0, 0x1 - strh r0, [r1] - movs r4, 0x1 -_080FADA4: - ldrh r2, [r3, 0x2E] - movs r0, 0x1 - ands r0, r2 - cmp r0, 0 - beq _080FADB0 - movs r4, 0x4 -_080FADB0: - movs r0, 0x2 - ands r0, r2 - cmp r0, 0 - beq _080FADBA - movs r4, 0x5 -_080FADBA: - cmp r4, 0x1 - bne _080FADCA - ldr r0, [r6] - ldr r1, _080FADE0 @ =sub_80FADE4 - str r1, [r0, 0x18] - adds r0, 0x6C - movs r1, 0 - strh r1, [r0] -_080FADCA: - adds r0, r4, 0 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_080FADD4: .4byte gUnknown_020388CC -_080FADD8: .4byte gMain -_080FADDC: .4byte 0x0000ffff -_080FADE0: .4byte sub_80FADE4 - thumb_func_end sub_80FAD04 - - thumb_func_start sub_80FADE4 -sub_80FADE4: @ 80FADE4 - push {r4,r5,lr} - ldr r5, _080FAEB4 @ =gUnknown_020388CC - ldr r2, [r5] - adds r3, r2, 0 - adds r3, 0x5E - adds r0, r2, 0 - adds r0, 0x68 - ldrh r0, [r0] - ldrh r1, [r3] - adds r0, r1 - strh r0, [r3] - adds r1, r2, 0 - adds r1, 0x5C - adds r0, r2, 0 - adds r0, 0x6A - ldrh r0, [r0] - ldrh r2, [r1] - adds r0, r2 - strh r0, [r1] - movs r4, 0 - ldrsh r0, [r1, r4] - movs r2, 0 - ldrsh r1, [r3, r2] - bl sub_80FB238 - ldr r2, [r5] - adds r1, r2, 0 - adds r1, 0x6C - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x8 - bne _080FAEBC - adds r0, r2, 0 - adds r0, 0x5C - movs r3, 0 - ldrsh r1, [r0, r3] - adds r0, r1, 0 - adds r0, 0x2C - cmp r0, 0 - bge _080FAE3C - adds r0, 0x7 -_080FAE3C: - asrs r0, 3 - adds r0, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 - adds r0, r2, 0 - adds r0, 0x5E - movs r4, 0 - ldrsh r1, [r0, r4] - adds r0, r1, 0 - adds r0, 0x34 - cmp r0, 0 - bge _080FAE56 - adds r0, 0x7 -_080FAE56: - asrs r0, 3 - adds r0, 0x2 - lsls r0, 16 - lsrs r1, r0, 16 - adds r4, r2, 0 - adds r4, 0x64 - adds r0, r2, 0 - adds r0, 0x66 - ldrh r2, [r4] - cmp r3, r2 - bne _080FAE72 - ldrh r2, [r0] - cmp r1, r2 - beq _080FAEA0 -_080FAE72: - strh r3, [r4] - strh r1, [r0] - adds r0, r3, 0 - bl GetRegionMapSectionAt - lsls r0, 16 - lsrs r4, r0, 16 - adds r0, r4, 0 - bl sub_80FB758 - ldr r1, [r5] - strb r0, [r1, 0x16] - ldr r0, [r5] - ldrh r3, [r0, 0x14] - cmp r4, r3 - beq _080FAE9C - strh r4, [r0, 0x14] - ldrh r1, [r0, 0x14] - movs r2, 0x10 - bl sub_80FBFB4 -_080FAE9C: - bl sub_80FBA18 -_080FAEA0: - ldr r0, _080FAEB4 @ =gUnknown_020388CC - ldr r2, [r0] - adds r1, r2, 0 - adds r1, 0x6C - movs r0, 0 - strh r0, [r1] - ldr r0, _080FAEB8 @ =sub_80FAD04 - str r0, [r2, 0x18] - movs r0, 0x3 - b _080FAEBE - .align 2, 0 -_080FAEB4: .4byte gUnknown_020388CC -_080FAEB8: .4byte sub_80FAD04 -_080FAEBC: - movs r0, 0x2 -_080FAEBE: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80FADE4 - - thumb_func_start sub_80FAEC4 -sub_80FAEC4: @ 80FAEC4 - push {r4-r6,lr} - ldr r1, _080FAF40 @ =gUnknown_020388CC - ldr r2, [r1] - adds r0, r2, 0 - adds r0, 0x78 - ldrb r3, [r0] - adds r5, r1, 0 - cmp r3, 0 - bne _080FAF48 - subs r0, 0x1A - strh r3, [r0] - subs r0, 0x2 - strh r3, [r0] - str r3, [r2, 0x40] - str r3, [r2, 0x3C] - adds r4, r2, 0 - adds r4, 0x54 - ldrh r0, [r4] - lsls r0, 3 - subs r0, 0x34 - adds r1, r2, 0 - adds r1, 0x60 - strh r0, [r1] - movs r0, 0x56 - adds r0, r2 - mov r12, r0 - ldrh r0, [r0] - lsls r0, 3 - subs r0, 0x44 - adds r3, r2, 0 - adds r3, 0x62 - strh r0, [r3] - movs r6, 0 - ldrsh r0, [r1, r6] - lsls r0, 8 - cmp r0, 0 - bge _080FAF10 - adds r0, 0xF -_080FAF10: - asrs r0, 4 - str r0, [r2, 0x44] - movs r1, 0 - ldrsh r0, [r3, r1] - lsls r0, 8 - cmp r0, 0 - bge _080FAF20 - adds r0, 0xF -_080FAF20: - asrs r0, 4 - str r0, [r2, 0x48] - ldrh r1, [r4] - adds r0, r2, 0 - adds r0, 0x64 - strh r1, [r0] - mov r3, r12 - ldrh r0, [r3] - adds r1, r2, 0 - adds r1, 0x66 - strh r0, [r1] - movs r0, 0x80 - lsls r0, 9 - str r0, [r2, 0x4C] - ldr r0, _080FAF44 @ =0xfffff800 - b _080FAFA6 - .align 2, 0 -_080FAF40: .4byte gUnknown_020388CC -_080FAF44: .4byte 0xfffff800 -_080FAF48: - adds r0, r2, 0 - adds r0, 0x5C - movs r6, 0 - ldrsh r0, [r0, r6] - lsls r0, 8 - str r0, [r2, 0x3C] - adds r0, r2, 0 - adds r0, 0x5E - movs r1, 0 - ldrsh r0, [r0, r1] - lsls r0, 8 - str r0, [r2, 0x40] - adds r0, r2, 0 - adds r0, 0x60 - movs r1, 0 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - ldr r0, [r2, 0x3C] - cmp r0, 0 - bge _080FAF74 - adds r0, 0xF -_080FAF74: - asrs r0, 4 - negs r0, r0 - str r0, [r2, 0x44] - ldr r0, [r2, 0x40] - cmp r0, 0 - bge _080FAF82 - adds r0, 0xF -_080FAF82: - asrs r0, 4 - negs r0, r0 - str r0, [r2, 0x48] - adds r0, r2, 0 - adds r0, 0x64 - ldrh r1, [r0] - subs r0, 0x10 - strh r1, [r0] - adds r0, 0x12 - ldrh r0, [r0] - adds r1, r2, 0 - adds r1, 0x56 - strh r0, [r1] - movs r0, 0x80 - lsls r0, 8 - str r0, [r2, 0x4C] - movs r0, 0x80 - lsls r0, 4 -_080FAFA6: - str r0, [r2, 0x50] - ldr r0, [r5] - adds r0, 0x6E - movs r1, 0 - strh r1, [r0] - bl sub_80FBCA0 - bl sub_80FBDF8 - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80FAEC4 - - thumb_func_start sub_80FAFC0 -sub_80FAFC0: @ 80FAFC0 - push {r4-r6,lr} - sub sp, 0xC - ldr r0, _080FAFD8 @ =gUnknown_020388CC - ldr r3, [r0] - adds r2, r3, 0 - adds r2, 0x6E - ldrh r1, [r2] - adds r5, r0, 0 - cmp r1, 0xF - bls _080FAFDC - movs r0, 0 - b _080FB164 - .align 2, 0 -_080FAFD8: .4byte gUnknown_020388CC -_080FAFDC: - adds r0, r1, 0x1 - movs r1, 0 - strh r0, [r2] - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x10 - bne _080FB050 - str r1, [r3, 0x44] - str r1, [r3, 0x48] - adds r0, r3, 0 - adds r0, 0x60 - ldrh r1, [r0] - subs r0, 0x4 - strh r1, [r0] - adds r0, 0x6 - ldrh r0, [r0] - adds r1, r3, 0 - adds r1, 0x5E - strh r0, [r1] - adds r1, 0x1A - ldrb r0, [r1] - movs r2, 0x80 - lsls r2, 9 - cmp r0, 0 - bne _080FB012 - movs r2, 0x80 - lsls r2, 8 -_080FB012: - str r2, [r3, 0x4C] - movs r2, 0 - ldrb r0, [r1] - cmp r0, 0 - bne _080FB01E - movs r2, 0x1 -_080FB01E: - strb r2, [r1] - ldr r1, [r5] - adds r0, r1, 0 - adds r0, 0x78 - ldrb r0, [r0] - ldr r2, _080FB048 @ =sub_80FAD04 - cmp r0, 0 - bne _080FB030 - ldr r2, _080FB04C @ =sub_80FAB78 -_080FB030: - str r2, [r1, 0x18] - adds r0, r1, 0 - adds r0, 0x58 - ldrh r0, [r0] - adds r1, 0x5A - ldrh r1, [r1] - bl sub_80FBB3C - bl sub_80FBE24 - movs r4, 0 - b _080FB132 - .align 2, 0 -_080FB048: .4byte sub_80FAD04 -_080FB04C: .4byte sub_80FAB78 -_080FB050: - ldr r2, [r3, 0x3C] - ldr r0, [r3, 0x44] - adds r2, r0 - str r2, [r3, 0x3C] - ldr r0, [r3, 0x40] - ldr r1, [r3, 0x48] - adds r0, r1 - str r0, [r3, 0x40] - asrs r2, 8 - adds r4, r3, 0 - adds r4, 0x5C - strh r2, [r4] - ldr r0, [r3, 0x40] - asrs r0, 8 - adds r1, r3, 0 - adds r1, 0x5E - strh r0, [r1] - ldr r0, [r3, 0x4C] - ldr r1, [r3, 0x50] - adds r0, r1 - str r0, [r3, 0x4C] - ldr r2, [r3, 0x44] - cmp r2, 0 - bge _080FB090 - adds r0, r3, 0 - adds r0, 0x60 - movs r6, 0 - ldrsh r1, [r4, r6] - movs r6, 0 - ldrsh r0, [r0, r6] - cmp r1, r0 - blt _080FB0A4 -_080FB090: - cmp r2, 0 - ble _080FB0B4 - adds r0, r3, 0 - adds r0, 0x60 - movs r2, 0 - ldrsh r1, [r4, r2] - movs r6, 0 - ldrsh r0, [r0, r6] - cmp r1, r0 - ble _080FB0B4 -_080FB0A4: - ldr r3, [r5] - adds r0, r3, 0 - adds r0, 0x60 - ldrh r2, [r0] - subs r0, 0x4 - movs r1, 0 - strh r2, [r0] - str r1, [r3, 0x44] -_080FB0B4: - ldr r2, [r5] - ldr r4, [r2, 0x48] - cmp r4, 0 - bge _080FB0D0 - adds r0, r2, 0 - adds r0, 0x5E - adds r3, r2, 0 - adds r3, 0x62 - movs r6, 0 - ldrsh r1, [r0, r6] - movs r6, 0 - ldrsh r0, [r3, r6] - cmp r1, r0 - blt _080FB0E8 -_080FB0D0: - cmp r4, 0 - ble _080FB0FA - adds r1, r2, 0 - adds r1, 0x5E - adds r0, r2, 0 - adds r0, 0x62 - movs r2, 0 - ldrsh r1, [r1, r2] - movs r6, 0 - ldrsh r0, [r0, r6] - cmp r1, r0 - ble _080FB0FA -_080FB0E8: - ldr r2, [r5] - adds r0, r2, 0 - adds r0, 0x62 - ldrh r1, [r0] - adds r3, r2, 0 - adds r3, 0x5E - movs r0, 0 - strh r1, [r3] - str r0, [r2, 0x48] -_080FB0FA: - ldr r0, _080FB118 @ =gUnknown_020388CC - ldr r2, [r0] - adds r0, r2, 0 - adds r0, 0x78 - ldrb r3, [r0] - cmp r3, 0 - bne _080FB120 - ldr r1, [r2, 0x4C] - ldr r0, _080FB11C @ =0x00007fff - cmp r1, r0 - bgt _080FB130 - adds r0, 0x1 - str r0, [r2, 0x4C] - str r3, [r2, 0x50] - b _080FB130 - .align 2, 0 -_080FB118: .4byte gUnknown_020388CC -_080FB11C: .4byte 0x00007fff -_080FB120: - ldr r0, [r2, 0x4C] - movs r1, 0x80 - lsls r1, 9 - cmp r0, r1 - ble _080FB130 - str r1, [r2, 0x4C] - movs r0, 0 - str r0, [r2, 0x50] -_080FB130: - movs r4, 0x1 -_080FB132: - ldr r0, _080FB16C @ =gUnknown_020388CC - ldr r3, [r0] - adds r0, r3, 0 - adds r0, 0x5C - movs r1, 0 - ldrsh r0, [r0, r1] - adds r1, r3, 0 - adds r1, 0x5E - movs r2, 0 - ldrsh r1, [r1, r2] - ldr r2, [r3, 0x4C] - lsls r2, 8 - lsrs r2, 16 - str r2, [sp] - ldr r2, [r3, 0x4C] - lsls r2, 8 - lsrs r2, 16 - str r2, [sp, 0x4] - movs r2, 0 - str r2, [sp, 0x8] - movs r2, 0x38 - movs r3, 0x48 - bl sub_80FB170 - adds r0, r4, 0 -_080FB164: - add sp, 0xC - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_080FB16C: .4byte gUnknown_020388CC - thumb_func_end sub_80FAFC0 - - thumb_func_start sub_80FB170 -sub_80FB170: @ 80FB170 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - ldr r4, [sp, 0x24] - ldr r7, [sp, 0x28] - ldr r5, [sp, 0x2C] - lsls r4, 16 - lsrs r4, 16 - mov r8, r4 - lsls r7, 16 - adds r4, r7, 0 - lsrs r4, 16 - mov r9, r4 - lsls r5, 24 - lsrs r5, 24 - ldr r4, _080FB230 @ =gUnknown_020388CC - ldr r6, [r4] - ldr r7, _080FB234 @ =gSineTable - mov r12, r7 - adds r4, r5, 0 - adds r4, 0x40 - lsls r4, 1 - add r4, r12 - movs r7, 0 - ldrsh r4, [r4, r7] - str r4, [sp] - mov r7, r8 - muls r7, r4 - adds r4, r7, 0 - asrs r4, 8 - mov r10, r4 - str r4, [r6, 0x2C] - lsls r5, 1 - add r5, r12 - movs r7, 0 - ldrsh r5, [r5, r7] - negs r4, r5 - mov r7, r8 - muls r7, r4 - adds r4, r7, 0 - asrs r4, 8 - mov r12, r4 - str r4, [r6, 0x30] - mov r7, r9 - muls r7, r5 - adds r5, r7, 0 - asrs r5, 8 - str r5, [r6, 0x34] - ldr r7, [sp] - mov r4, r9 - muls r4, r7 - asrs r4, 8 - mov r8, r4 - str r4, [r6, 0x38] - lsls r0, 16 - asrs r0, 8 - lsls r2, 16 - asrs r2, 16 - lsls r4, r2, 8 - adds r0, r4 - lsls r3, 16 - asrs r3, 16 - adds r4, r3, 0 - muls r4, r5 - mov r5, r10 - muls r5, r2 - adds r4, r5 - subs r0, r4 - str r0, [r6, 0x24] - lsls r1, 16 - asrs r1, 8 - lsls r0, r3, 8 - adds r1, r0 - mov r0, r8 - muls r0, r3 - mov r3, r12 - muls r3, r2 - adds r2, r3, 0 - adds r0, r2 - subs r1, r0 - str r1, [r6, 0x28] - adds r6, 0x7D - movs r0, 0x1 - strb r0, [r6] - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080FB230: .4byte gUnknown_020388CC -_080FB234: .4byte gSineTable - thumb_func_end sub_80FB170 - - thumb_func_start sub_80FB238 -sub_80FB238: @ 80FB238 - ldr r2, _080FB25C @ =gUnknown_020388CC - ldr r2, [r2] - lsls r0, 16 - asrs r0, 8 - movs r3, 0xE0 - lsls r3, 5 - adds r0, r3 - str r0, [r2, 0x24] - lsls r1, 16 - asrs r1, 8 - movs r0, 0x90 - lsls r0, 6 - adds r1, r0 - str r1, [r2, 0x28] - adds r2, 0x7D - movs r0, 0x1 - strb r0, [r2] - bx lr - .align 2, 0 -_080FB25C: .4byte gUnknown_020388CC - thumb_func_end sub_80FB238 - - thumb_func_start sub_80FB260 -sub_80FB260: @ 80FB260 - push {lr} - ldr r0, _080FB29C @ =gUnknown_020388CC - ldr r2, [r0] - adds r3, r2, 0 - adds r3, 0x7D - ldrb r0, [r3] - cmp r0, 0 - beq _080FB298 - ldr r1, _080FB2A0 @ =REG_BG2PA - ldr r0, [r2, 0x2C] - strh r0, [r1] - adds r1, 0x2 - ldr r0, [r2, 0x34] - strh r0, [r1] - adds r1, 0x2 - ldr r0, [r2, 0x30] - strh r0, [r1] - adds r1, 0x2 - ldr r0, [r2, 0x38] - strh r0, [r1] - adds r1, 0x2 - ldr r0, [r2, 0x24] - str r0, [r1] - adds r1, 0x4 - ldr r0, [r2, 0x28] - str r0, [r1] - movs r0, 0 - strb r0, [r3] -_080FB298: - pop {r0} - bx r0 - .align 2, 0 -_080FB29C: .4byte gUnknown_020388CC -_080FB2A0: .4byte REG_BG2PA - thumb_func_end sub_80FB260 - - thumb_func_start sub_80FB2A4 -sub_80FB2A4: @ 80FB2A4 - push {r4,r5,lr} - sub sp, 0xC - lsls r0, 16 - asrs r4, r0, 16 - lsls r1, 16 - asrs r5, r1, 16 - movs r0, 0x80 - lsls r0, 1 - str r0, [sp] - str r0, [sp, 0x4] - movs r0, 0 - str r0, [sp, 0x8] - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x38 - movs r3, 0x48 - bl sub_80FB170 - bl sub_80FB260 - ldr r0, _080FB2E8 @ =gUnknown_020388CC - ldr r2, [r0] - ldr r1, [r2, 0x20] - cmp r1, 0 - beq _080FB2E0 - negs r0, r4 - strh r0, [r1, 0x24] - ldr r1, [r2, 0x20] - negs r0, r5 - strh r0, [r1, 0x26] -_080FB2E0: - add sp, 0xC - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080FB2E8: .4byte gUnknown_020388CC - thumb_func_end sub_80FB2A4 - - thumb_func_start GetRegionMapSectionAt -GetRegionMapSectionAt: @ 80FB2EC - push {lr} - lsls r0, 16 - lsrs r3, r0, 16 - lsls r1, 16 - ldr r0, _080FB30C @ =0xfffe0000 - adds r1, r0 - lsrs r2, r1, 16 - cmp r2, 0xE - bhi _080FB306 - cmp r3, 0 - beq _080FB306 - cmp r3, 0x1C - bls _080FB310 -_080FB306: - movs r0, 0x58 - b _080FB324 - .align 2, 0 -_080FB30C: .4byte 0xfffe0000 -_080FB310: - subs r0, r3, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 - ldr r1, _080FB328 @ =gRegionMapSections - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - adds r0, r3, r0 - adds r0, r1 - ldrb r0, [r0] -_080FB324: - pop {r1} - bx r1 - .align 2, 0 -_080FB328: .4byte gRegionMapSections - thumb_func_end GetRegionMapSectionAt - - thumb_func_start sub_80FB32C -sub_80FB32C: @ 80FB32C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - ldr r0, _080FB358 @ =gSaveBlock1 - movs r1, 0x4 - ldrsb r1, [r0, r1] - adds r2, r0, 0 - cmp r1, 0x19 - bne _080FB35C - ldrb r0, [r2, 0x5] - subs r0, 0x29 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bhi _080FB35C - bl sub_80FB600 - b _080FB5E8 - .align 2, 0 -_080FB358: .4byte gSaveBlock1 -_080FB35C: - movs r0, 0x4 - ldrsb r0, [r2, r0] - movs r1, 0x5 - ldrsb r1, [r2, r1] - bl get_map_light_level_by_bank_and_number - lsls r0, 24 - lsrs r0, 24 - subs r0, 0x1 - cmp r0, 0x8 - bhi _080FB3A4 - lsls r0, 2 - ldr r1, _080FB37C @ =_080FB380 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080FB37C: .4byte _080FB380 - .align 2, 0 -_080FB380: - .4byte _080FB3A4 - .4byte _080FB3A4 - .4byte _080FB3A4 - .4byte _080FB3E0 - .4byte _080FB3A4 - .4byte _080FB3A4 - .4byte _080FB3E0 - .4byte _080FB464 - .4byte _080FB428 -_080FB3A4: - ldr r4, _080FB3D4 @ =gUnknown_020388CC - ldr r0, [r4] - ldr r3, _080FB3D8 @ =gMapHeader - ldrb r1, [r3, 0x14] - movs r2, 0 - strh r1, [r0, 0x14] - adds r0, 0x7F - strb r2, [r0] - ldr r0, [r3] - ldrh r2, [r0] - ldrh r0, [r0, 0x4] - mov r8, r0 - ldr r0, _080FB3DC @ =gSaveBlock1 - ldrh r6, [r0] - ldrh r3, [r0, 0x2] - ldr r1, [r4] - ldrh r0, [r1, 0x14] - cmp r0, 0x45 - beq _080FB3CC - b _080FB4CC -_080FB3CC: - adds r1, 0x7F - movs r0, 0x1 - strb r0, [r1] - b _080FB4CC - .align 2, 0 -_080FB3D4: .4byte gUnknown_020388CC -_080FB3D8: .4byte gMapHeader -_080FB3DC: .4byte gSaveBlock1 -_080FB3E0: - ldr r4, _080FB420 @ =gSaveBlock1 - adds r0, r4, 0 - adds r0, 0x24 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - lsls r0, 16 - lsrs r0, 16 - adds r1, r4, 0 - adds r1, 0x25 - ldrb r1, [r1] - lsls r1, 24 - asrs r1, 24 - lsls r1, 16 - lsrs r1, 16 - bl get_mapheader_by_bank_and_number - adds r2, r0, 0 - ldr r0, _080FB424 @ =gUnknown_020388CC - ldr r0, [r0] - ldrb r1, [r2, 0x14] - strh r1, [r0, 0x14] - adds r0, 0x7F - movs r1, 0x1 - strb r1, [r0] - ldr r0, [r2] - ldrh r2, [r0] - ldrh r0, [r0, 0x4] - mov r8, r0 - ldrh r6, [r4, 0x28] - ldrh r3, [r4, 0x2A] - b _080FB4CC - .align 2, 0 -_080FB420: .4byte gSaveBlock1 -_080FB424: .4byte gUnknown_020388CC -_080FB428: - ldr r4, _080FB45C @ =gSaveBlock1 - movs r0, 0x14 - ldrsb r0, [r4, r0] - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x15 - ldrsb r1, [r4, r1] - lsls r1, 16 - lsrs r1, 16 - bl get_mapheader_by_bank_and_number - adds r2, r0, 0 - ldr r0, _080FB460 @ =gUnknown_020388CC - ldr r0, [r0] - ldrb r1, [r2, 0x14] - strh r1, [r0, 0x14] - adds r0, 0x7F - movs r1, 0x1 - strb r1, [r0] - ldr r0, [r2] - ldrh r2, [r0] - ldrh r0, [r0, 0x4] - mov r8, r0 - ldrh r6, [r4, 0x18] - ldrh r3, [r4, 0x1A] - b _080FB4CC - .align 2, 0 -_080FB45C: .4byte gSaveBlock1 -_080FB460: .4byte gUnknown_020388CC -_080FB464: - ldr r5, _080FB48C @ =gUnknown_020388CC - ldr r0, [r5] - ldr r1, _080FB490 @ =gMapHeader - ldrb r1, [r1, 0x14] - strh r1, [r0, 0x14] - cmp r1, 0x57 - beq _080FB498 - ldr r4, _080FB494 @ =gSaveBlock1 + 0x24 - movs r0, 0 - ldrsb r0, [r4, r0] - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x1 - ldrsb r1, [r4, r1] - lsls r1, 16 - lsrs r1, 16 - bl get_mapheader_by_bank_and_number - adds r2, r0, 0 - b _080FB4B6 - .align 2, 0 -_080FB48C: .4byte gUnknown_020388CC -_080FB490: .4byte gMapHeader -_080FB494: .4byte gSaveBlock1 + 0x24 -_080FB498: - ldr r4, _080FB548 @ =gSaveBlock1 + 0x14 - movs r0, 0 - ldrsb r0, [r4, r0] - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x1 - ldrsb r1, [r4, r1] - lsls r1, 16 - lsrs r1, 16 - bl get_mapheader_by_bank_and_number - adds r2, r0, 0 - ldr r1, [r5] - ldrb r0, [r2, 0x14] - strh r0, [r1, 0x14] -_080FB4B6: - ldr r0, _080FB54C @ =gUnknown_020388CC - ldr r0, [r0] - adds r0, 0x7F - movs r1, 0 - strb r1, [r0] - ldr r0, [r2] - ldrh r2, [r0] - ldrh r0, [r0, 0x4] - mov r8, r0 - ldrh r6, [r4, 0x4] - ldrh r3, [r4, 0x6] -_080FB4CC: - mov r9, r6 - ldr r4, _080FB54C @ =gUnknown_020388CC - ldr r0, [r4] - ldrh r5, [r0, 0x14] - lsls r0, r5, 3 - ldr r1, _080FB550 @ =gRegionMapLocations - adds r0, r1 - mov r10, r0 - ldrb r7, [r0, 0x2] - adds r0, r2, 0 - adds r1, r7, 0 - str r3, [sp] - bl __divsi3 - lsls r0, 16 - lsrs r1, r0, 16 - ldr r3, [sp] - cmp r1, 0 - bne _080FB4F4 - movs r1, 0x1 -_080FB4F4: - adds r0, r6, 0 - str r3, [sp] - bl __udivsi3 - lsls r0, 16 - lsrs r6, r0, 16 - ldr r3, [sp] - cmp r6, r7 - bcc _080FB50C - subs r0, r7, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 -_080FB50C: - mov r2, r10 - ldrb r4, [r2, 0x3] - mov r0, r8 - adds r1, r4, 0 - str r3, [sp] - bl __divsi3 - lsls r0, 16 - lsrs r1, r0, 16 - ldr r3, [sp] - cmp r1, 0 - bne _080FB526 - movs r1, 0x1 -_080FB526: - adds r0, r3, 0 - bl __udivsi3 - lsls r0, 16 - lsrs r3, r0, 16 - cmp r3, r4 - bcc _080FB53A - subs r0, r4, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 -_080FB53A: - cmp r5, 0x24 - beq _080FB59C - cmp r5, 0x24 - bgt _080FB554 - cmp r5, 0x1D - beq _080FB55E - b _080FB5BE - .align 2, 0 -_080FB548: .4byte gSaveBlock1 + 0x14 -_080FB54C: .4byte gUnknown_020388CC -_080FB550: .4byte gRegionMapLocations -_080FB554: - cmp r5, 0x29 - beq _080FB566 - cmp r5, 0x33 - beq _080FB566 - b _080FB5BE -_080FB55E: - cmp r3, 0 - beq _080FB5BE - movs r6, 0 - b _080FB5BE -_080FB566: - movs r6, 0 - ldr r1, _080FB598 @ =gSaveBlock1 - movs r2, 0 - ldrsh r0, [r1, r2] - cmp r0, 0x20 - ble _080FB574 - movs r6, 0x1 -_080FB574: - cmp r0, 0x33 - ble _080FB57E - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 -_080FB57E: - movs r3, 0 - movs r2, 0x2 - ldrsh r0, [r1, r2] - cmp r0, 0x25 - ble _080FB58A - movs r3, 0x1 -_080FB58A: - cmp r0, 0x38 - ble _080FB5BE - adds r0, r3, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 - b _080FB5BE - .align 2, 0 -_080FB598: .4byte gSaveBlock1 -_080FB59C: - movs r6, 0 - mov r0, r9 - cmp r0, 0xE - bls _080FB5A6 - movs r6, 0x1 -_080FB5A6: - mov r1, r9 - cmp r1, 0x1C - bls _080FB5B2 - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 -_080FB5B2: - mov r2, r9 - cmp r2, 0x36 - bls _080FB5BE - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 -_080FB5BE: - ldr r0, _080FB5F8 @ =gUnknown_020388CC - ldr r2, [r0] - ldrh r0, [r2, 0x14] - lsls r0, 3 - ldr r1, _080FB5FC @ =gRegionMapLocations - adds r0, r1 - ldrb r0, [r0] - adds r0, r6, r0 - adds r0, 0x1 - adds r1, r2, 0 - adds r1, 0x54 - strh r0, [r1] - ldrh r0, [r2, 0x14] - lsls r0, 3 - ldr r1, _080FB5FC @ =gRegionMapLocations - adds r0, r1 - ldrb r0, [r0, 0x1] - adds r0, r3, r0 - adds r0, 0x2 - adds r2, 0x56 - strh r0, [r2] -_080FB5E8: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080FB5F8: .4byte gUnknown_020388CC -_080FB5FC: .4byte gRegionMapLocations - thumb_func_end sub_80FB32C - - thumb_func_start sub_80FB600 -sub_80FB600: @ 80FB600 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - movs r7, 0 - movs r0, 0 - mov r8, r0 - mov r4, sp - adds r4, 0x1 - mov r5, sp - adds r5, 0x2 - add r6, sp, 0x4 - mov r0, sp - adds r1, r4, 0 - adds r2, r5, 0 - adds r3, r6, 0 - bl GetSSTidalLocation - lsls r0, 24 - lsrs r0, 24 - mov r10, r5 - cmp r0, 0x4 - bhi _080FB694 - lsls r0, 2 - ldr r1, _080FB63C @ =_080FB640 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080FB63C: .4byte _080FB640 - .align 2, 0 -_080FB640: - .4byte _080FB694 - .4byte _080FB654 - .4byte _080FB664 - .4byte _080FB674 - .4byte _080FB684 -_080FB654: - ldr r2, _080FB660 @ =gUnknown_020388CC - ldr r1, [r2] - movs r0, 0x8 - strh r0, [r1, 0x14] - b _080FB710 - .align 2, 0 -_080FB660: .4byte gUnknown_020388CC -_080FB664: - ldr r2, _080FB670 @ =gUnknown_020388CC - ldr r1, [r2] - movs r0, 0xC - strh r0, [r1, 0x14] - b _080FB710 - .align 2, 0 -_080FB670: .4byte gUnknown_020388CC -_080FB674: - ldr r2, _080FB680 @ =gUnknown_020388CC - ldr r1, [r2] - movs r0, 0x27 - strh r0, [r1, 0x14] - b _080FB710 - .align 2, 0 -_080FB680: .4byte gUnknown_020388CC -_080FB684: - ldr r2, _080FB690 @ =gUnknown_020388CC - ldr r1, [r2] - movs r0, 0x2E - strh r0, [r1, 0x14] - b _080FB710 - .align 2, 0 -_080FB690: .4byte gUnknown_020388CC -_080FB694: - mov r0, sp - ldrb r0, [r0] - ldrb r1, [r4] - bl get_mapheader_by_bank_and_number - ldr r1, _080FB750 @ =gUnknown_020388CC - mov r9, r1 - ldr r2, [r1] - ldrb r1, [r0, 0x14] - strh r1, [r2, 0x14] - ldr r6, [r0] - ldr r1, _080FB754 @ =gRegionMapLocations - ldrh r0, [r2, 0x14] - lsls r0, 3 - adds r5, r0, r1 - ldrb r4, [r5, 0x2] - ldr r0, [r6] - adds r1, r4, 0 - bl __divsi3 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0 - bne _080FB6C6 - movs r1, 0x1 -_080FB6C6: - mov r2, r10 - movs r3, 0 - ldrsh r0, [r2, r3] - bl __divsi3 - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - cmp r8, r4 - bcc _080FB6E2 - subs r0, r4, 0x1 - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 -_080FB6E2: - ldrb r4, [r5, 0x3] - ldr r0, [r6, 0x4] - adds r1, r4, 0 - bl __divsi3 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0 - bne _080FB6F6 - movs r1, 0x1 -_080FB6F6: - mov r2, sp - movs r3, 0x4 - ldrsh r0, [r2, r3] - bl __divsi3 - lsls r0, 16 - lsrs r7, r0, 16 - mov r2, r9 - cmp r7, r4 - bcc _080FB710 - subs r0, r4, 0x1 - lsls r0, 16 - lsrs r7, r0, 16 -_080FB710: - ldr r0, [r2] - adds r0, 0x7F - movs r1, 0 - strb r1, [r0] - ldr r2, [r2] - ldr r3, _080FB754 @ =gRegionMapLocations - ldrh r0, [r2, 0x14] - lsls r0, 3 - adds r0, r3 - ldrb r0, [r0] - add r0, r8 - adds r0, 0x1 - adds r1, r2, 0 - adds r1, 0x54 - strh r0, [r1] - ldrh r0, [r2, 0x14] - lsls r0, 3 - adds r0, r3 - ldrb r0, [r0, 0x1] - adds r0, r7, r0 - adds r0, 0x2 - adds r2, 0x56 - strh r0, [r2] - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080FB750: .4byte gUnknown_020388CC -_080FB754: .4byte gRegionMapLocations - thumb_func_end sub_80FB600 - - thumb_func_start sub_80FB758 -sub_80FB758: @ 80FB758 - push {lr} - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x58 - bls _080FB764 - b _080FB9A0 -_080FB764: - lsls r0, 2 - ldr r1, _080FB770 @ =_080FB774 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080FB770: .4byte _080FB774 - .align 2, 0 -_080FB774: - .4byte _080FB8DC - .4byte _080FB8E4 - .4byte _080FB8EA - .4byte _080FB8F4 - .4byte _080FB8FC - .4byte _080FB904 - .4byte _080FB90C - .4byte _080FB914 - .4byte _080FB91C - .4byte _080FB924 - .4byte _080FB92C - .4byte _080FB934 - .4byte _080FB93C - .4byte _080FB944 - .4byte _080FB94C - .4byte _080FB954 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB96C - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB988 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB8D8 -_080FB8D8: - movs r0, 0 - b _080FB9A2 -_080FB8DC: - ldr r0, _080FB8E0 @ =0x0000080f - b _080FB956 - .align 2, 0 -_080FB8E0: .4byte 0x0000080f -_080FB8E4: - movs r0, 0x81 - lsls r0, 4 - b _080FB956 -_080FB8EA: - ldr r0, _080FB8F0 @ =0x00000811 - b _080FB956 - .align 2, 0 -_080FB8F0: .4byte 0x00000811 -_080FB8F4: - ldr r0, _080FB8F8 @ =0x00000812 - b _080FB956 - .align 2, 0 -_080FB8F8: .4byte 0x00000812 -_080FB8FC: - ldr r0, _080FB900 @ =0x00000813 - b _080FB956 - .align 2, 0 -_080FB900: .4byte 0x00000813 -_080FB904: - ldr r0, _080FB908 @ =0x00000814 - b _080FB956 - .align 2, 0 -_080FB908: .4byte 0x00000814 -_080FB90C: - ldr r0, _080FB910 @ =0x00000815 - b _080FB956 - .align 2, 0 -_080FB910: .4byte 0x00000815 -_080FB914: - ldr r0, _080FB918 @ =0x00000816 - b _080FB956 - .align 2, 0 -_080FB918: .4byte 0x00000816 -_080FB91C: - ldr r0, _080FB920 @ =0x00000817 - b _080FB956 - .align 2, 0 -_080FB920: .4byte 0x00000817 -_080FB924: - ldr r0, _080FB928 @ =0x00000818 - b _080FB956 - .align 2, 0 -_080FB928: .4byte 0x00000818 -_080FB92C: - ldr r0, _080FB930 @ =0x00000819 - b _080FB956 - .align 2, 0 -_080FB930: .4byte 0x00000819 -_080FB934: - ldr r0, _080FB938 @ =0x0000081a - b _080FB956 - .align 2, 0 -_080FB938: .4byte 0x0000081a -_080FB93C: - ldr r0, _080FB940 @ =0x0000081b - b _080FB956 - .align 2, 0 -_080FB940: .4byte 0x0000081b -_080FB944: - ldr r0, _080FB948 @ =0x0000081c - b _080FB956 - .align 2, 0 -_080FB948: .4byte 0x0000081c -_080FB94C: - ldr r0, _080FB950 @ =0x0000081d - b _080FB956 - .align 2, 0 -_080FB950: .4byte 0x0000081d -_080FB954: - ldr r0, _080FB968 @ =0x0000081e -_080FB956: - bl FlagGet - lsls r0, 24 - movs r1, 0x3 - cmp r0, 0 - beq _080FB964 - movs r1, 0x2 -_080FB964: - adds r0, r1, 0 - b _080FB9A2 - .align 2, 0 -_080FB968: .4byte 0x0000081e -_080FB96C: - ldr r0, _080FB984 @ =0x00000848 - bl FlagGet - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - negs r0, r1 - orrs r0, r1 - asrs r0, 31 - movs r1, 0x4 - ands r0, r1 - b _080FB9A2 - .align 2, 0 -_080FB984: .4byte 0x00000848 -_080FB988: - ldr r0, _080FB99C @ =0x00000849 - bl FlagGet - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - negs r0, r1 - orrs r0, r1 - lsrs r0, 31 - b _080FB9A2 - .align 2, 0 -_080FB99C: .4byte 0x00000849 -_080FB9A0: - movs r0, 0x1 -_080FB9A2: - pop {r1} - bx r1 - thumb_func_end sub_80FB758 - - thumb_func_start GetRegionMapSectionAt_ -GetRegionMapSectionAt_: @ 80FB9A8 - push {lr} - lsls r0, 16 - lsrs r0, 16 - lsls r1, 16 - lsrs r1, 16 - bl GetRegionMapSectionAt - lsls r0, 16 - lsrs r0, 16 - pop {r1} - bx r1 - thumb_func_end GetRegionMapSectionAt_ - - thumb_func_start sub_80FB9C0 -sub_80FB9C0: @ 80FB9C0 - push {r4-r6,lr} - lsls r0, 16 - lsrs r3, r0, 16 - movs r2, 0 - ldr r0, _080FB9E8 @ =gUnknown_083E7684 - ldrh r1, [r0] - adds r4, r0, 0 - cmp r1, 0x58 - beq _080FB9FC - adds r5, r4, 0 - adds r6, r4, 0x2 -_080FB9D6: - lsls r1, r2, 2 - adds r0, r1, r5 - ldrh r0, [r0] - cmp r0, r3 - bne _080FB9EC - adds r0, r1, r6 - ldrh r0, [r0] - b _080FB9FE - .align 2, 0 -_080FB9E8: .4byte gUnknown_083E7684 -_080FB9EC: - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - lsls r0, r2, 2 - adds r0, r4 - ldrh r0, [r0] - cmp r0, 0x58 - bne _080FB9D6 -_080FB9FC: - adds r0, r3, 0 -_080FB9FE: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_80FB9C0 - - thumb_func_start sub_80FBA04 -sub_80FBA04: @ 80FBA04 - push {lr} - lsls r0, 16 - lsrs r0, 16 - bl sub_80FB9C0 - lsls r0, 16 - lsrs r0, 16 - pop {r1} - bx r1 - thumb_func_end sub_80FBA04 - - thumb_func_start sub_80FBA18 -sub_80FBA18: @ 80FBA18 - push {r4-r6,lr} - ldr r0, _080FBA2C @ =gUnknown_020388CC - ldr r1, [r0] - ldrh r0, [r1, 0x14] - cmp r0, 0x58 - bne _080FBA30 - movs r0, 0 - strb r0, [r1, 0x17] - b _080FBA96 - .align 2, 0 -_080FBA2C: .4byte gUnknown_020388CC -_080FBA30: - adds r0, r1, 0 - adds r0, 0x78 - ldrb r0, [r0] - cmp r0, 0 - bne _080FBA40 - adds r0, r1, 0 - adds r0, 0x54 - b _080FBA44 -_080FBA40: - adds r0, r1, 0 - adds r0, 0x64 -_080FBA44: - ldrh r4, [r0] - adds r0, 0x2 - ldrh r5, [r0] - movs r6, 0 - b _080FBA70 -_080FBA4E: - subs r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - adds r0, r4, 0 - adds r1, r5, 0 - bl GetRegionMapSectionAt - ldr r1, _080FBA8C @ =gUnknown_020388CC - ldr r1, [r1] - lsls r0, 16 - lsrs r0, 16 - ldrh r1, [r1, 0x14] - cmp r0, r1 - bne _080FBA70 - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 -_080FBA70: - cmp r4, 0x1 - bhi _080FBA4E - adds r0, r5, 0 - bl sub_80FBAA0 - lsls r0, 24 - cmp r0, 0 - beq _080FBA90 - subs r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - movs r4, 0x1D - b _080FBA70 - .align 2, 0 -_080FBA8C: .4byte gUnknown_020388CC -_080FBA90: - ldr r0, _080FBA9C @ =gUnknown_020388CC - ldr r0, [r0] - strb r6, [r0, 0x17] -_080FBA96: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080FBA9C: .4byte gUnknown_020388CC - thumb_func_end sub_80FBA18 - - thumb_func_start sub_80FBAA0 -sub_80FBAA0: @ 80FBAA0 - push {r4,r5,lr} - lsls r0, 16 - ldr r1, _080FBAB4 @ =0xffff0000 - adds r0, r1 - lsrs r5, r0, 16 - ldr r0, _080FBAB8 @ =0x0000ffff - cmp r5, r0 - bne _080FBAC0 - b _080FBAE2 - .align 2, 0 -_080FBAB4: .4byte 0xffff0000 -_080FBAB8: .4byte 0x0000ffff -_080FBABC: - movs r0, 0x1 - b _080FBAE4 -_080FBAC0: - movs r4, 0x1 -_080FBAC2: - adds r0, r4, 0 - adds r1, r5, 0 - bl GetRegionMapSectionAt - ldr r1, _080FBAEC @ =gUnknown_020388CC - ldr r1, [r1] - lsls r0, 16 - lsrs r0, 16 - ldrh r1, [r1, 0x14] - cmp r0, r1 - beq _080FBABC - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x1C - bls _080FBAC2 -_080FBAE2: - movs r0, 0 -_080FBAE4: - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_080FBAEC: .4byte gUnknown_020388CC - thumb_func_end sub_80FBAA0 - - thumb_func_start sub_80FBAF0 -sub_80FBAF0: @ 80FBAF0 - push {r4,lr} - adds r2, r0, 0 - ldr r0, _080FBB34 @ =gUnknown_020388CC - ldr r1, [r0] - adds r3, r1, 0 - adds r3, 0x7A - movs r0, 0 - ldrsb r0, [r3, r0] - cmp r0, 0 - beq _080FBB2E - adds r0, r1, 0 - adds r0, 0x7B - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - lsls r0, 1 - ldrh r4, [r2, 0x20] - adds r0, r4 - strh r0, [r2, 0x20] - adds r0, r1, 0 - adds r0, 0x7C - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - lsls r0, 1 - ldrh r1, [r2, 0x22] - adds r0, r1 - strh r0, [r2, 0x22] - ldrb r0, [r3] - subs r0, 0x1 - strb r0, [r3] -_080FBB2E: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080FBB34: .4byte gUnknown_020388CC - thumb_func_end sub_80FBAF0 - - thumb_func_start nullsub_66 -nullsub_66: @ 80FBB38 - bx lr - thumb_func_end nullsub_66 - - thumb_func_start sub_80FBB3C -sub_80FBB3C: @ 80FBB3C - push {r4-r7,lr} - sub sp, 0x28 - lsls r0, 16 - lsls r1, 16 - lsrs r6, r1, 16 - ldr r1, _080FBBAC @ =gUnknown_083E76E8 - ldr r2, [r1, 0x4] - ldr r1, [r1] - str r1, [sp, 0x20] - str r2, [sp, 0x24] - mov r2, sp - ldr r1, _080FBBB0 @ =gSpriteTemplate_83E76F0 - ldm r1!, {r3-r5} - stm r2!, {r3-r5} - ldm r1!, {r3-r5} - stm r2!, {r3-r5} - lsrs r3, r0, 16 - add r2, sp, 0x18 - ldrh r1, [r2, 0x4] - orrs r1, r0 - str r1, [r2, 0x4] - mov r0, sp - strh r3, [r0] - ldr r0, _080FBBB4 @ =gUnknown_020388CC - ldr r4, [r0] - adds r0, r4, 0 - adds r0, 0x58 - strh r3, [r0] - ldr r5, _080FBBB8 @ =0xffff0000 - add r1, sp, 0x20 - ldr r0, [r1, 0x4] - ands r0, r5 - orrs r0, r6 - str r0, [r1, 0x4] - mov r0, sp - strh r6, [r0, 0x2] - adds r3, r4, 0 - adds r0, r3, 0 - adds r0, 0x5A - strh r6, [r0] - adds r0, 0x1E - ldrb r0, [r0] - adds r7, r1, 0 - cmp r0, 0 - bne _080FBBC0 - movs r1, 0xC0 - lsls r1, 1 - adds r0, r3, r1 - str r0, [sp, 0x18] - ldr r0, [r2, 0x4] - ands r0, r5 - subs r1, 0x80 - orrs r0, r1 - str r0, [r2, 0x4] - ldr r0, _080FBBBC @ =sub_80FBAF0 - b _080FBBD6 - .align 2, 0 -_080FBBAC: .4byte gUnknown_083E76E8 -_080FBBB0: .4byte gSpriteTemplate_83E76F0 -_080FBBB4: .4byte gUnknown_020388CC -_080FBBB8: .4byte 0xffff0000 -_080FBBBC: .4byte sub_80FBAF0 -_080FBBC0: - movs r3, 0xA0 - lsls r3, 2 - adds r0, r4, r3 - str r0, [sp, 0x18] - ldr r0, [r2, 0x4] - ands r0, r5 - movs r1, 0xC0 - lsls r1, 3 - orrs r0, r1 - str r0, [r2, 0x4] - ldr r0, _080FBC38 @ =nullsub_66 -_080FBBD6: - str r0, [sp, 0x14] - adds r0, r2, 0 - bl LoadSpriteSheet - adds r0, r7, 0 - bl LoadSpritePalette - mov r0, sp - movs r1, 0x38 - movs r2, 0x48 - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x40 - beq _080FBC90 - ldr r4, _080FBC3C @ =gUnknown_020388CC - ldr r2, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _080FBC40 @ =gSprites - adds r3, r0, r1 - str r3, [r2, 0x1C] - adds r2, 0x78 - ldrb r0, [r2] - cmp r0, 0x1 - bne _080FBC44 - ldrb r1, [r3, 0x3] - movs r0, 0x3F - ands r0, r1 - movs r1, 0x80 - orrs r0, r1 - strb r0, [r3, 0x3] - ldr r2, [r4] - ldr r1, [r2, 0x1C] - ldrh r0, [r1, 0x20] - subs r0, 0x8 - strh r0, [r1, 0x20] - ldr r1, [r2, 0x1C] - ldrh r0, [r1, 0x22] - subs r0, 0x8 - strh r0, [r1, 0x22] - ldr r0, [r2, 0x1C] - movs r1, 0x1 - bl StartSpriteAnim - b _080FBC6C - .align 2, 0 -_080FBC38: .4byte nullsub_66 -_080FBC3C: .4byte gUnknown_020388CC -_080FBC40: .4byte gSprites -_080FBC44: - ldrb r1, [r3, 0x3] - movs r0, 0x3F - ands r0, r1 - movs r1, 0x40 - orrs r0, r1 - strb r0, [r3, 0x3] - ldr r1, [r4] - ldr r2, [r1, 0x1C] - adds r0, r1, 0 - adds r0, 0x54 - ldrh r0, [r0] - lsls r0, 3 - adds r0, 0x4 - strh r0, [r2, 0x20] - ldr r2, [r1, 0x1C] - adds r1, 0x56 - ldrh r0, [r1] - lsls r0, 3 - adds r0, 0x4 - strh r0, [r2, 0x22] -_080FBC6C: - ldr r4, _080FBC98 @ =gUnknown_020388CC - ldr r0, [r4] - ldr r1, [r0, 0x1C] - movs r0, 0x2 - strh r0, [r1, 0x30] - adds r0, r6, 0 - bl IndexOfSpritePaletteTag - ldr r1, [r4] - ldr r2, [r1, 0x1C] - lsls r0, 24 - lsrs r0, 20 - ldr r4, _080FBC9C @ =0x00000101 - adds r0, r4 - strh r0, [r2, 0x32] - ldr r1, [r1, 0x1C] - movs r0, 0x1 - strh r0, [r1, 0x34] -_080FBC90: - add sp, 0x28 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080FBC98: .4byte gUnknown_020388CC -_080FBC9C: .4byte 0x00000101 - thumb_func_end sub_80FBB3C - - thumb_func_start sub_80FBCA0 -sub_80FBCA0: @ 80FBCA0 - push {r4,lr} - ldr r4, _080FBCCC @ =gUnknown_020388CC - ldr r0, [r4] - ldr r0, [r0, 0x1C] - cmp r0, 0 - beq _080FBCC4 - bl DestroySprite - ldr r0, [r4] - adds r0, 0x58 - ldrh r0, [r0] - bl FreeSpriteTilesByTag - ldr r0, [r4] - adds r0, 0x5A - ldrh r0, [r0] - bl FreeSpritePaletteByTag -_080FBCC4: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080FBCCC: .4byte gUnknown_020388CC - thumb_func_end sub_80FBCA0 - - thumb_func_start unref_sub_80FBCD0 -unref_sub_80FBCD0: @ 80FBCD0 - ldr r0, _080FBCDC @ =gUnknown_020388CC - ldr r0, [r0] - ldr r1, [r0, 0x1C] - movs r0, 0x1 - strh r0, [r1, 0x34] - bx lr - .align 2, 0 -_080FBCDC: .4byte gUnknown_020388CC - thumb_func_end unref_sub_80FBCD0 - - thumb_func_start unref_sub_80FBCE0 -unref_sub_80FBCE0: @ 80FBCE0 - ldr r0, _080FBCEC @ =gUnknown_020388CC - ldr r0, [r0] - ldr r1, [r0, 0x1C] - movs r0, 0 - strh r0, [r1, 0x34] - bx lr - .align 2, 0 -_080FBCEC: .4byte gUnknown_020388CC - thumb_func_end unref_sub_80FBCE0 - - thumb_func_start sub_80FBCF0 -sub_80FBCF0: @ 80FBCF0 - push {r4,r5,lr} - sub sp, 0x28 - lsls r0, 16 - lsls r1, 16 - lsrs r1, 16 - ldr r2, _080FBD98 @ =gRegionMapBrendanIconTiles - str r2, [sp, 0x18] - movs r2, 0x80 - add r5, sp, 0x18 - lsrs r3, r0, 16 - orrs r0, r2 - str r0, [r5, 0x4] - ldr r0, _080FBD9C @ =gRegionMapBrendanIconPalette - str r0, [sp, 0x20] - ldr r2, _080FBDA0 @ =0xffff0000 - add r4, sp, 0x20 - ldr r0, [r4, 0x4] - ands r0, r2 - orrs r0, r1 - str r0, [r4, 0x4] - mov r0, sp - movs r2, 0 - strh r3, [r0] - strh r1, [r0, 0x2] - ldr r0, _080FBDA4 @ =gOamData_083E7708 - str r0, [sp, 0x4] - ldr r0, _080FBDA8 @ =gSpriteAnimTable_083E7718 - str r0, [sp, 0x8] - str r2, [sp, 0xC] - ldr r0, _080FBDAC @ =gDummySpriteAffineAnimTable - str r0, [sp, 0x10] - ldr r0, _080FBDB0 @ =SpriteCallbackDummy - str r0, [sp, 0x14] - ldr r0, _080FBDB4 @ =gSaveBlock2 - ldrb r0, [r0, 0x8] - cmp r0, 0x1 - bne _080FBD42 - ldr r0, _080FBDB8 @ =gRegionMapMayIconTiles - str r0, [sp, 0x18] - ldr r0, _080FBDBC @ =gRegionMapMayIconPalette - str r0, [sp, 0x20] -_080FBD42: - adds r0, r5, 0 - bl LoadSpriteSheet - adds r0, r4, 0 - bl LoadSpritePalette - mov r0, sp - movs r1, 0 - movs r2, 0 - movs r3, 0x1 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - ldr r1, _080FBDC0 @ =gUnknown_020388CC - ldr r2, [r1] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - ldr r0, _080FBDC4 @ =gSprites - adds r1, r0 - str r1, [r2, 0x20] - adds r0, r2, 0 - adds r0, 0x78 - ldrb r0, [r0] - cmp r0, 0 - bne _080FBDCC - adds r0, r2, 0 - adds r0, 0x74 - ldrh r0, [r0] - lsls r0, 3 - adds r0, 0x4 - strh r0, [r1, 0x20] - ldr r1, [r2, 0x20] - adds r0, r2, 0 - adds r0, 0x76 - ldrh r0, [r0] - lsls r0, 3 - adds r0, 0x4 - strh r0, [r1, 0x22] - ldr r1, [r2, 0x20] - ldr r0, _080FBDC8 @ =sub_80FBF34 - b _080FBDEA - .align 2, 0 -_080FBD98: .4byte gRegionMapBrendanIconTiles -_080FBD9C: .4byte gRegionMapBrendanIconPalette -_080FBDA0: .4byte 0xffff0000 -_080FBDA4: .4byte gOamData_083E7708 -_080FBDA8: .4byte gSpriteAnimTable_083E7718 -_080FBDAC: .4byte gDummySpriteAffineAnimTable -_080FBDB0: .4byte SpriteCallbackDummy -_080FBDB4: .4byte gSaveBlock2 -_080FBDB8: .4byte gRegionMapMayIconTiles -_080FBDBC: .4byte gRegionMapMayIconPalette -_080FBDC0: .4byte gUnknown_020388CC -_080FBDC4: .4byte gSprites -_080FBDC8: .4byte sub_80FBF34 -_080FBDCC: - adds r0, r2, 0 - adds r0, 0x74 - ldrh r0, [r0] - lsls r0, 4 - subs r0, 0x30 - strh r0, [r1, 0x20] - ldr r1, [r2, 0x20] - adds r0, r2, 0 - adds r0, 0x76 - ldrh r0, [r0] - lsls r0, 4 - subs r0, 0x42 - strh r0, [r1, 0x22] - ldr r1, [r2, 0x20] - ldr r0, _080FBDF4 @ =sub_80FBEA4 -_080FBDEA: - str r0, [r1, 0x1C] - add sp, 0x28 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080FBDF4: .4byte sub_80FBEA4 - thumb_func_end sub_80FBCF0 - - thumb_func_start sub_80FBDF8 -sub_80FBDF8: @ 80FBDF8 - push {lr} - ldr r3, _080FBE1C @ =gUnknown_020388CC - ldr r0, [r3] - ldr r2, [r0, 0x20] - cmp r2, 0 - beq _080FBE16 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - ldr r0, [r3] - ldr r1, [r0, 0x20] - ldr r0, _080FBE20 @ =SpriteCallbackDummy - str r0, [r1, 0x1C] -_080FBE16: - pop {r0} - bx r0 - .align 2, 0 -_080FBE1C: .4byte gUnknown_020388CC -_080FBE20: .4byte SpriteCallbackDummy - thumb_func_end sub_80FBDF8 - - thumb_func_start sub_80FBE24 -sub_80FBE24: @ 80FBE24 - push {lr} - ldr r0, _080FBE5C @ =gUnknown_020388CC - ldr r3, [r0] - ldr r1, [r3, 0x20] - cmp r1, 0 - beq _080FBE9A - adds r0, r3, 0 - adds r0, 0x78 - ldrb r0, [r0] - cmp r0, 0x1 - bne _080FBE64 - adds r0, r3, 0 - adds r0, 0x74 - ldrh r0, [r0] - lsls r0, 4 - subs r0, 0x30 - strh r0, [r1, 0x20] - ldr r1, [r3, 0x20] - adds r0, r3, 0 - adds r0, 0x76 - ldrh r0, [r0] - lsls r0, 4 - subs r0, 0x42 - strh r0, [r1, 0x22] - ldr r1, [r3, 0x20] - ldr r0, _080FBE60 @ =sub_80FBEA4 - b _080FBE8C - .align 2, 0 -_080FBE5C: .4byte gUnknown_020388CC -_080FBE60: .4byte sub_80FBEA4 -_080FBE64: - adds r0, r3, 0 - adds r0, 0x74 - ldrh r0, [r0] - lsls r0, 3 - adds r0, 0x4 - movs r2, 0 - strh r0, [r1, 0x20] - ldr r1, [r3, 0x20] - adds r0, r3, 0 - adds r0, 0x76 - ldrh r0, [r0] - lsls r0, 3 - adds r0, 0x4 - strh r0, [r1, 0x22] - ldr r0, [r3, 0x20] - strh r2, [r0, 0x24] - ldr r0, [r3, 0x20] - strh r2, [r0, 0x26] - ldr r1, [r3, 0x20] - ldr r0, _080FBEA0 @ =sub_80FBF34 -_080FBE8C: - str r0, [r1, 0x1C] - adds r1, 0x3E - ldrb r2, [r1] - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - strb r0, [r1] -_080FBE9A: - pop {r0} - bx r0 - .align 2, 0 -_080FBEA0: .4byte sub_80FBF34 - thumb_func_end sub_80FBE24 - - thumb_func_start sub_80FBEA4 -sub_80FBEA4: @ 80FBEA4 - push {r4,lr} - adds r3, r0, 0 - ldr r0, _080FBF08 @ =gUnknown_020388CC - ldr r1, [r0] - adds r0, r1, 0 - adds r0, 0x5C - movs r4, 0 - ldrsh r2, [r0, r4] - lsls r2, 1 - negs r2, r2 - strh r2, [r3, 0x24] - adds r1, 0x5E - movs r4, 0 - ldrsh r0, [r1, r4] - lsls r0, 1 - negs r0, r0 - strh r0, [r3, 0x26] - ldrh r1, [r3, 0x22] - adds r1, r0 - adds r0, r3, 0 - adds r0, 0x29 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - adds r0, r1 - strh r0, [r3, 0x2E] - ldrh r1, [r3, 0x20] - adds r1, r2 - adds r2, r3, 0 - adds r2, 0x28 - ldrb r2, [r2] - lsls r2, 24 - asrs r2, 24 - adds r2, r1 - strh r2, [r3, 0x30] - adds r0, 0x8 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0xB0 - bhi _080FBF04 - lsls r0, r2, 16 - asrs r2, r0, 16 - movs r0, 0x8 - negs r0, r0 - cmp r2, r0 - blt _080FBF04 - cmp r2, 0xF8 - ble _080FBF0C -_080FBF04: - movs r0, 0 - b _080FBF0E - .align 2, 0 -_080FBF08: .4byte gUnknown_020388CC -_080FBF0C: - movs r0, 0x1 -_080FBF0E: - strh r0, [r3, 0x32] - movs r1, 0x32 - ldrsh r0, [r3, r1] - cmp r0, 0x1 - bne _080FBF20 - adds r0, r3, 0 - bl sub_80FBF40 - b _080FBF2C -_080FBF20: - adds r0, r3, 0 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] -_080FBF2C: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80FBEA4 - - thumb_func_start sub_80FBF34 -sub_80FBF34: @ 80FBF34 - push {lr} - bl sub_80FBF40 - pop {r0} - bx r0 - thumb_func_end sub_80FBF34 - - thumb_func_start sub_80FBF40 -sub_80FBF40: @ 80FBF40 - push {lr} - adds r2, r0, 0 - ldr r0, _080FBF80 @ =gUnknown_020388CC - ldr r0, [r0] - adds r0, 0x7E - ldrb r0, [r0] - cmp r0, 0 - beq _080FBF84 - ldrh r0, [r2, 0x3C] - adds r0, 0x1 - strh r0, [r2, 0x3C] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x10 - ble _080FBF90 - movs r0, 0 - strh r0, [r2, 0x3C] - adds r3, r2, 0 - adds r3, 0x3E - ldrb r2, [r3] - lsrs r1, r2, 2 - movs r0, 0x1 - eors r1, r0 - ands r1, r0 - lsls r1, 2 - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] - b _080FBF90 - .align 2, 0 -_080FBF80: .4byte gUnknown_020388CC -_080FBF84: - adds r2, 0x3E - ldrb r1, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r2] -_080FBF90: - pop {r0} - bx r0 - thumb_func_end sub_80FBF40 - - thumb_func_start sub_80FBF94 -sub_80FBF94: @ 80FBF94 - push {lr} - ldr r0, _080FBFB0 @ =gUnknown_020388CC - ldr r1, [r0] - adds r0, r1, 0 - adds r0, 0x7F - ldrb r0, [r0] - cmp r0, 0 - beq _080FBFAA - adds r1, 0x7E - movs r0, 0x1 - strb r0, [r1] -_080FBFAA: - pop {r0} - bx r0 - .align 2, 0 -_080FBFB0: .4byte gUnknown_020388CC - thumb_func_end sub_80FBF94 - - thumb_func_start sub_80FBFB4 -sub_80FBFB4: @ 80FBFB4 - push {lr} - adds r3, r0, 0 - lsls r1, 16 - lsrs r1, 16 - lsls r2, 16 - lsrs r2, 16 - cmp r1, 0x56 - bne _080FBFCA - bl GetSecretBaseMapName - b _080FBFF2 -_080FBFCA: - cmp r1, 0x57 - bhi _080FBFE4 - ldr r0, _080FBFE0 @ =gRegionMapLocations - lsls r1, 3 - adds r0, 0x4 - adds r1, r0 - ldr r1, [r1] - adds r0, r3, 0 - bl StringCopy - b _080FBFF2 - .align 2, 0 -_080FBFE0: .4byte gRegionMapLocations -_080FBFE4: - cmp r2, 0 - bne _080FBFEA - movs r2, 0x12 -_080FBFEA: - adds r0, r3, 0 - movs r1, 0 - bl StringFill -_080FBFF2: - pop {r1} - bx r1 - thumb_func_end sub_80FBFB4 - - thumb_func_start CopyMapName -CopyMapName: @ 80FBFF8 - push {lr} - lsls r1, 16 - lsrs r1, 16 - cmp r1, 0x56 - beq _080FC014 - cmp r1, 0x57 - bne _080FC020 - ldr r1, _080FC010 @ =gOtherText_Ferry - bl StringCopy - b _080FC026 - .align 2, 0 -_080FC010: .4byte gOtherText_Ferry -_080FC014: - ldr r1, _080FC01C @ =gOtherText_SecretBase - bl StringCopy - b _080FC026 - .align 2, 0 -_080FC01C: .4byte gOtherText_SecretBase -_080FC020: - movs r2, 0 - bl sub_80FBFB4 -_080FC026: - pop {r1} - bx r1 - thumb_func_end CopyMapName - - thumb_func_start CopyLocationName -CopyLocationName: @ 80FC02C - push {lr} - lsls r1, 16 - lsrs r1, 16 - cmp r1, 0x42 - beq _080FC03C - bl CopyMapName - b _080FC042 -_080FC03C: - ldr r1, _080FC048 @ =gOtherText_Hideout - bl StringCopy -_080FC042: - pop {r1} - bx r1 - .align 2, 0 -_080FC048: .4byte gOtherText_Hideout - thumb_func_end CopyLocationName - - thumb_func_start sub_80FC04C -sub_80FC04C: @ 80FC04C - push {r4,r5,lr} - ldr r5, [sp, 0xC] - lsls r0, 16 - ldr r4, _080FC070 @ =gRegionMapLocations - lsrs r0, 13 - adds r0, r4 - ldrb r4, [r0] - strh r4, [r1] - ldrb r1, [r0, 0x1] - strh r1, [r2] - ldrb r1, [r0, 0x2] - strh r1, [r3] - ldrb r0, [r0, 0x3] - strh r0, [r5] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080FC070: .4byte gRegionMapLocations - thumb_func_end sub_80FC04C - - thumb_func_start sub_80FC074 -sub_80FC074: @ 80FC074 - push {r4,lr} - ldr r0, _080FC090 @ =gMain - ldr r1, _080FC094 @ =0x0000043c - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x9 - bls _080FC084 - b _080FC1F2 -_080FC084: - lsls r0, 2 - ldr r1, _080FC098 @ =_080FC09C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080FC090: .4byte gMain -_080FC094: .4byte 0x0000043c -_080FC098: .4byte _080FC09C - .align 2, 0 -_080FC09C: - .4byte _080FC0C4 - .4byte _080FC104 - .4byte _080FC110 - .4byte _080FC120 - .4byte _080FC15C - .4byte _080FC170 - .4byte _080FC184 - .4byte _080FC1A4 - .4byte _080FC1AA - .4byte _080FC1C4 -_080FC0C4: - movs r0, 0 - bl SetVBlankCallback - movs r0, 0x80 - lsls r0, 19 - movs r1, 0 - strh r1, [r0] - adds r0, 0x10 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - adds r0, 0x4 - strh r1, [r0] - subs r0, 0x2 - strh r1, [r0] - adds r0, 0x4 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - bl ResetPaletteFade - bl ResetSpriteData - bl FreeSpriteTileRanges - bl FreeAllSpritePalettes - b _080FC1E6 -_080FC104: - ldr r0, _080FC10C @ =gWindowConfig_81E7224 - bl SetUpWindowConfig - b _080FC1E6 - .align 2, 0 -_080FC10C: .4byte gWindowConfig_81E7224 -_080FC110: - ldr r0, _080FC11C @ =gWindowConfig_81E7224 - bl InitMenuWindow - bl MenuZeroFillScreen - b _080FC1E6 - .align 2, 0 -_080FC11C: .4byte gWindowConfig_81E7224 -_080FC120: - ldr r4, _080FC158 @ =0x02000008 - adds r0, r4, 0 - movs r1, 0 - bl sub_80FA8EC - movs r0, 0 - movs r1, 0 - bl sub_80FBB3C - movs r0, 0x1 - movs r1, 0x1 - bl sub_80FBCF0 - adds r1, r4, 0 - subs r1, 0x8 - ldrh r0, [r1, 0x1C] - strh r0, [r1, 0x6] - movs r2, 0xA4 - lsls r2, 4 - adds r4, r2 - adds r0, r4, 0 - movs r1, 0 - movs r2, 0xC - bl StringFill - bl sub_80FC254 - b _080FC1E6 - .align 2, 0 -_080FC158: .4byte 0x02000008 -_080FC15C: - ldr r0, _080FC168 @ =gUnknown_083E773C - ldr r1, _080FC16C @ =0x0600c000 - bl LZ77UnCompVram - b _080FC1E6 - .align 2, 0 -_080FC168: .4byte gUnknown_083E773C -_080FC16C: .4byte 0x0600c000 -_080FC170: - ldr r0, _080FC17C @ =gUnknown_083E7774 - ldr r1, _080FC180 @ =0x0600f000 - bl LZ77UnCompVram - b _080FC1E6 - .align 2, 0 -_080FC17C: .4byte gUnknown_083E7774 -_080FC180: .4byte 0x0600f000 -_080FC184: - ldr r0, _080FC19C @ =gUnknown_083E771C - movs r1, 0x10 - movs r2, 0x20 - bl LoadPalette - ldr r0, _080FC1A0 @ =gOtherText_FlyToWhere - movs r1, 0x1 - movs r2, 0x90 - movs r3, 0x1 - bl MenuPrint_PixelCoords - b _080FC1E6 - .align 2, 0 -_080FC19C: .4byte gUnknown_083E771C -_080FC1A0: .4byte gOtherText_FlyToWhere -_080FC1A4: - bl sub_80FC31C - b _080FC1E6 -_080FC1AA: - movs r0, 0x1 - negs r0, r0 - movs r1, 0x10 - movs r2, 0 - bl BlendPalettes - ldr r0, _080FC1C0 @ =sub_80FC214 - bl SetVBlankCallback - b _080FC1E6 - .align 2, 0 -_080FC1C0: .4byte sub_80FC214 -_080FC1C4: - ldr r1, _080FC1F8 @ =REG_BLDCNT - movs r0, 0 - strh r0, [r1] - subs r1, 0x46 - ldr r2, _080FC1FC @ =0x00001e0d - adds r0, r2, 0 - strh r0, [r1] - subs r1, 0xA - ldr r2, _080FC200 @ =0x00001741 - adds r0, r2, 0 - strh r0, [r1] - ldr r0, _080FC204 @ =sub_80FC5B4 - bl sub_80FC244 - ldr r0, _080FC208 @ =sub_80FC228 - bl SetMainCallback2 -_080FC1E6: - ldr r1, _080FC20C @ =gMain - ldr r0, _080FC210 @ =0x0000043c - adds r1, r0 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_080FC1F2: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080FC1F8: .4byte REG_BLDCNT -_080FC1FC: .4byte 0x00001e0d -_080FC200: .4byte 0x00001741 -_080FC204: .4byte sub_80FC5B4 -_080FC208: .4byte sub_80FC228 -_080FC20C: .4byte gMain -_080FC210: .4byte 0x0000043c - thumb_func_end sub_80FC074 - - thumb_func_start sub_80FC214 -sub_80FC214: @ 80FC214 - push {lr} - bl LoadOam - bl ProcessSpriteCopyRequests - bl TransferPlttBuffer - pop {r0} - bx r0 - thumb_func_end sub_80FC214 - - thumb_func_start sub_80FC228 -sub_80FC228: @ 80FC228 - push {lr} - ldr r0, _080FC240 @ =0x02000000 - ldr r0, [r0] - bl _call_via_r0 - bl AnimateSprites - bl BuildOamBuffer - pop {r0} - bx r0 - .align 2, 0 -_080FC240: .4byte 0x02000000 - thumb_func_end sub_80FC228 - - thumb_func_start sub_80FC244 -sub_80FC244: @ 80FC244 - ldr r1, _080FC250 @ =0x02000000 - str r0, [r1] - movs r0, 0 - strh r0, [r1, 0x4] - bx lr - .align 2, 0 -_080FC250: .4byte 0x02000000 - thumb_func_end sub_80FC244 - - thumb_func_start sub_80FC254 -sub_80FC254: @ 80FC254 - push {r4,r5,lr} - ldr r4, _080FC2AC @ =0x02000000 - ldrb r0, [r4, 0x1E] - cmp r0, 0x2 - beq _080FC262 - cmp r0, 0x4 - bne _080FC2EC -_080FC262: - movs r1, 0 - ldr r2, _080FC2B0 @ =gUnknown_083E79C0 - adds r5, r4, 0 -_080FC268: - lsls r0, r1, 3 - adds r4, r0, r2 - ldrh r0, [r5, 0x1C] - ldrh r3, [r4, 0x4] - cmp r0, r3 - bne _080FC2B4 - ldrh r0, [r4, 0x6] - bl FlagGet - lsls r0, 24 - cmp r0, 0 - beq _080FC2BE - movs r0, 0x10 - movs r1, 0xE - movs r2, 0x1D - movs r3, 0x13 - bl MenuDrawTextWindow - adds r0, r5, 0 - adds r0, 0x8 - movs r1, 0x11 - movs r2, 0xF - bl MenuPrint - ldrb r0, [r5, 0x1F] - ldr r1, [r4] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x1D - movs r2, 0x11 - bl MenuPrint_RightAligned - b _080FC310 - .align 2, 0 -_080FC2AC: .4byte 0x02000000 -_080FC2B0: .4byte gUnknown_083E79C0 -_080FC2B4: - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0 - beq _080FC268 -_080FC2BE: - movs r0, 0 - cmp r0, 0 - bne _080FC310 - movs r0, 0x10 - movs r1, 0x10 - movs r2, 0x1D - movs r3, 0x13 - bl MenuDrawTextWindow - ldr r0, _080FC2E8 @ =0x02000008 - movs r1, 0x11 - movs r2, 0x11 - bl MenuPrint - movs r0, 0x10 - movs r1, 0xE - movs r2, 0x1D - movs r3, 0xF - bl MenuZeroFillWindowRect - b _080FC310 - .align 2, 0 -_080FC2E8: .4byte 0x02000008 -_080FC2EC: - movs r0, 0x10 - movs r1, 0x10 - movs r2, 0x1D - movs r3, 0x13 - bl MenuDrawTextWindow - ldr r1, _080FC318 @ =0x00000a48 - adds r0, r4, r1 - movs r1, 0x11 - movs r2, 0x11 - bl MenuPrint - movs r0, 0x10 - movs r1, 0xE - movs r2, 0x1D - movs r3, 0xF - bl MenuZeroFillWindowRect -_080FC310: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080FC318: .4byte 0x00000a48 - thumb_func_end sub_80FC254 - - thumb_func_start sub_80FC31C -sub_80FC31C: @ 80FC31C - push {r4,lr} - sub sp, 0x8 - ldr r0, _080FC360 @ =gUnknown_083E784C - ldr r4, _080FC364 @ =0x02000888 - adds r1, r4, 0 - bl LZ77UnCompWram - str r4, [sp] - ldr r1, _080FC368 @ =0xffff0000 - ldr r0, [sp, 0x4] - ands r0, r1 - movs r1, 0xE0 - lsls r1, 1 - orrs r0, r1 - ldr r1, _080FC36C @ =0x0000ffff - ands r0, r1 - movs r1, 0x80 - lsls r1, 10 - orrs r0, r1 - str r0, [sp, 0x4] - mov r0, sp - bl LoadSpriteSheet - ldr r0, _080FC370 @ =gUnknown_083E79CC - bl LoadSpritePalette - bl sub_80FC374 - bl sub_80FC484 - add sp, 0x8 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080FC360: .4byte gUnknown_083E784C -_080FC364: .4byte 0x02000888 -_080FC368: .4byte 0xffff0000 -_080FC36C: .4byte 0x0000ffff -_080FC370: .4byte gUnknown_083E79CC - thumb_func_end sub_80FC31C - - thumb_func_start sub_80FC374 -sub_80FC374: @ 80FC374 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x1C - ldr r0, _080FC3D4 @ =0x0000080f - str r0, [sp, 0xC] - movs r1, 0 - mov r9, r1 - mov r2, sp - adds r2, 0x6 - str r2, [sp, 0x14] - mov r3, sp - adds r3, 0xA - str r3, [sp, 0x18] - mov r0, sp - adds r0, 0x8 - str r0, [sp, 0x10] - add r1, sp, 0x4 - mov r10, r1 -_080FC39E: - ldr r2, [sp, 0x18] - str r2, [sp] - mov r0, r9 - add r1, sp, 0x4 - mov r2, sp - adds r2, 0x6 - ldr r3, [sp, 0x10] - bl sub_80FC04C - mov r3, r10 - ldrh r0, [r3] - adds r0, 0x1 - lsls r0, 3 - adds r0, 0x4 - strh r0, [r3] - mov r1, sp - ldrh r0, [r1, 0x6] - adds r0, 0x2 - lsls r0, 3 - adds r0, 0x4 - strh r0, [r1, 0x6] - ldr r2, [sp, 0x10] - ldrh r0, [r2] - cmp r0, 0x2 - bne _080FC3D8 - movs r7, 0x1 - b _080FC3E4 - .align 2, 0 -_080FC3D4: .4byte 0x0000080f -_080FC3D8: - ldr r3, [sp, 0x18] - ldrh r0, [r3] - movs r7, 0 - cmp r0, 0x2 - bne _080FC3E4 - movs r7, 0x2 -_080FC3E4: - mov r0, r10 - movs r2, 0 - ldrsh r1, [r0, r2] - ldr r3, [sp, 0x14] - movs r0, 0 - ldrsh r2, [r3, r0] - ldr r0, _080FC430 @ =gSpriteTemplate_83E7A38 - movs r3, 0xA - bl CreateSprite - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x40 - beq _080FC458 - ldr r1, _080FC434 @ =gSprites - mov r8, r1 - lsls r4, r5, 4 - adds r0, r4, r5 - lsls r6, r0, 2 - adds r2, r6, r1 - lsls r3, r7, 6 - ldrb r1, [r2, 0x1] - movs r0, 0x3F - ands r0, r1 - orrs r0, r3 - strb r0, [r2, 0x1] - ldr r0, [sp, 0xC] - bl FlagGet - lsls r0, 24 - cmp r0, 0 - beq _080FC43C - mov r0, r8 - adds r0, 0x1C - adds r0, r6, r0 - ldr r1, _080FC438 @ =sub_80FC55C - str r1, [r0] - b _080FC442 - .align 2, 0 -_080FC430: .4byte gSpriteTemplate_83E7A38 -_080FC434: .4byte gSprites -_080FC438: .4byte sub_80FC55C -_080FC43C: - adds r0, r7, 0x3 - lsls r0, 16 - lsrs r7, r0, 16 -_080FC442: - adds r4, r5 - lsls r4, 2 - ldr r0, _080FC480 @ =gSprites - adds r4, r0 - lsls r1, r7, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl StartSpriteAnim - mov r2, r9 - strh r2, [r4, 0x2E] -_080FC458: - ldr r0, [sp, 0xC] - adds r0, 0x1 - lsls r0, 16 - lsrs r0, 16 - str r0, [sp, 0xC] - mov r0, r9 - adds r0, 0x1 - lsls r0, 16 - lsrs r0, 16 - mov r9, r0 - cmp r0, 0xF - bls _080FC39E - add sp, 0x1C - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080FC480: .4byte gSprites - thumb_func_end sub_80FC374 - - thumb_func_start sub_80FC484 -sub_80FC484: @ 80FC484 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0xC - movs r0, 0 - mov r8, r0 - ldr r6, _080FC54C @ =gUnknown_083E79D4 - ldrh r0, [r6, 0x2] - cmp r0, 0x58 - beq _080FC53C - mov r5, sp - adds r5, 0x6 - add r7, sp, 0x4 - ldr r1, _080FC550 @ =gSprites - mov r9, r1 - movs r0, 0x1C - add r0, r9 - mov r10, r0 -_080FC4AC: - mov r1, r8 - lsls r4, r1, 2 - adds r0, r4, r6 - ldrh r0, [r0] - bl FlagGet - lsls r0, 24 - cmp r0, 0 - beq _080FC524 - adds r0, r6, 0x2 - adds r0, r4, r0 - ldrh r6, [r0] - mov r0, sp - adds r0, 0xA - str r0, [sp] - adds r0, r6, 0 - add r1, sp, 0x4 - adds r2, r5, 0 - add r3, sp, 0x8 - bl sub_80FC04C - ldrh r0, [r7] - adds r0, 0x1 - lsls r0, 3 - strh r0, [r7] - ldrh r0, [r5] - adds r0, 0x2 - lsls r0, 3 - strh r0, [r5] - movs r0, 0 - ldrsh r1, [r7, r0] - movs r0, 0 - ldrsh r2, [r5, r0] - ldr r0, _080FC554 @ =gSpriteTemplate_83E7A38 - movs r3, 0xA - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x40 - beq _080FC524 - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - mov r1, r9 - adds r4, r2, r1 - ldrb r1, [r4, 0x3] - movs r0, 0x3F - ands r0, r1 - movs r1, 0x40 - orrs r0, r1 - strb r0, [r4, 0x3] - add r2, r10 - ldr r0, _080FC558 @ =sub_80FC55C - str r0, [r2] - adds r0, r4, 0 - movs r1, 0x6 - bl StartSpriteAnim - strh r6, [r4, 0x2E] -_080FC524: - mov r0, r8 - adds r0, 0x1 - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - ldr r6, _080FC54C @ =gUnknown_083E79D4 - lsls r0, 2 - adds r1, r6, 0x2 - adds r0, r1 - ldrh r0, [r0] - cmp r0, 0x58 - bne _080FC4AC -_080FC53C: - add sp, 0xC - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080FC54C: .4byte gUnknown_083E79D4 -_080FC550: .4byte gSprites -_080FC554: .4byte gSpriteTemplate_83E7A38 -_080FC558: .4byte sub_80FC55C - thumb_func_end sub_80FC484 - - thumb_func_start sub_80FC55C -sub_80FC55C: @ 80FC55C - push {lr} - adds r2, r0, 0 - ldr r0, _080FC59C @ =0x02000000 - ldrh r1, [r0, 0x1C] - movs r3, 0x2E - ldrsh r0, [r2, r3] - cmp r1, r0 - bne _080FC5A0 - ldrh r0, [r2, 0x30] - adds r0, 0x1 - strh r0, [r2, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x10 - ble _080FC5AE - movs r0, 0 - strh r0, [r2, 0x30] - adds r3, r2, 0 - adds r3, 0x3E - ldrb r2, [r3] - lsrs r1, r2, 2 - movs r0, 0x1 - eors r1, r0 - ands r1, r0 - lsls r1, 2 - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] - b _080FC5AE - .align 2, 0 -_080FC59C: .4byte 0x02000000 -_080FC5A0: - movs r0, 0x10 - strh r0, [r2, 0x30] - adds r2, 0x3E - ldrb r1, [r2] - subs r0, 0x15 - ands r0, r1 - strb r0, [r2] -_080FC5AE: - pop {r0} - bx r0 - thumb_func_end sub_80FC55C - - thumb_func_start sub_80FC5B4 -sub_80FC5B4: @ 80FC5B4 - push {r4,lr} - sub sp, 0x4 - ldr r4, _080FC5C8 @ =0x02000000 - ldrh r1, [r4, 0x4] - cmp r1, 0 - beq _080FC5CC - cmp r1, 0x1 - beq _080FC5E4 - b _080FC5F4 - .align 2, 0 -_080FC5C8: .4byte 0x02000000 -_080FC5CC: - movs r0, 0x1 - negs r0, r0 - str r1, [sp] - movs r1, 0 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - ldrh r0, [r4, 0x4] - adds r0, 0x1 - strh r0, [r4, 0x4] - b _080FC5F4 -_080FC5E4: - bl UpdatePaletteFade - lsls r0, 24 - cmp r0, 0 - bne _080FC5F4 - ldr r0, _080FC5FC @ =sub_80FC600 - bl sub_80FC244 -_080FC5F4: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080FC5FC: .4byte sub_80FC600 - thumb_func_end sub_80FC5B4 - - thumb_func_start sub_80FC600 -sub_80FC600: @ 80FC600 - push {r4,lr} - ldr r0, _080FC620 @ =0x02000000 - ldrh r0, [r0, 0x4] - cmp r0, 0 - bne _080FC68A - bl sub_80FAB60 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x5 - bhi _080FC68A - lsls r0, 2 - ldr r1, _080FC624 @ =_080FC628 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080FC620: .4byte 0x02000000 -_080FC624: .4byte _080FC628 - .align 2, 0 -_080FC628: - .4byte _080FC68A - .4byte _080FC68A - .4byte _080FC68A - .4byte _080FC640 - .4byte _080FC646 - .4byte _080FC674 -_080FC640: - bl sub_80FC254 - b _080FC68A -_080FC646: - ldr r4, _080FC668 @ =0x02000000 - ldrb r0, [r4, 0x1E] - cmp r0, 0x2 - beq _080FC652 - cmp r0, 0x4 - bne _080FC68A -_080FC652: - movs r0, 0x5 - bl m4aSongNumStart - ldr r1, _080FC66C @ =0x00000a6e - adds r0, r4, r1 - movs r1, 0x1 - strb r1, [r0] - ldr r0, _080FC670 @ =sub_80FC69C - bl sub_80FC244 - b _080FC68A - .align 2, 0 -_080FC668: .4byte 0x02000000 -_080FC66C: .4byte 0x00000a6e -_080FC670: .4byte sub_80FC69C -_080FC674: - movs r0, 0x5 - bl m4aSongNumStart - ldr r0, _080FC690 @ =0x02000000 - ldr r1, _080FC694 @ =0x00000a6e - adds r0, r1 - movs r1, 0 - strb r1, [r0] - ldr r0, _080FC698 @ =sub_80FC69C - bl sub_80FC244 -_080FC68A: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080FC690: .4byte 0x02000000 -_080FC694: .4byte 0x00000a6e -_080FC698: .4byte sub_80FC69C - thumb_func_end sub_80FC600 - - thumb_func_start sub_80FC69C -sub_80FC69C: @ 80FC69C - push {r4,lr} - sub sp, 0x4 - ldr r4, _080FC6B0 @ =0x02000000 - ldrh r1, [r4, 0x4] - cmp r1, 0 - beq _080FC6B4 - cmp r1, 0x1 - beq _080FC6CC - b _080FC792 - .align 2, 0 -_080FC6B0: .4byte 0x02000000 -_080FC6B4: - movs r0, 0x1 - negs r0, r0 - str r1, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldrh r0, [r4, 0x4] - adds r0, 0x1 - strh r0, [r4, 0x4] - b _080FC792 -_080FC6CC: - bl UpdatePaletteFade - lsls r0, 24 - cmp r0, 0 - bne _080FC792 - bl sub_80FAB10 - ldr r1, _080FC6F4 @ =0x00000a6e - adds r0, r4, r1 - ldrb r0, [r0] - cmp r0, 0 - beq _080FC78C - ldrh r0, [r4, 0x1C] - cmp r0, 0xF - beq _080FC724 - cmp r0, 0xF - bgt _080FC6F8 - cmp r0, 0 - beq _080FC710 - b _080FC748 - .align 2, 0 -_080FC6F4: .4byte 0x00000a6e -_080FC6F8: - cmp r0, 0x3A - beq _080FC708 - cmp r0, 0x49 - bne _080FC748 - movs r0, 0x16 - bl sub_8053538 - b _080FC786 -_080FC708: - movs r0, 0x15 - bl sub_8053538 - b _080FC786 -_080FC710: - ldr r0, _080FC720 @ =gSaveBlock2 - ldrb r0, [r0, 0x8] - movs r1, 0xD - cmp r0, 0 - bne _080FC73A - movs r1, 0xC - b _080FC73A - .align 2, 0 -_080FC720: .4byte gSaveBlock2 -_080FC724: - ldr r0, _080FC744 @ =0x00000854 - bl FlagGet - lsls r0, 24 - movs r1, 0xB - cmp r0, 0 - beq _080FC73A - ldrb r0, [r4, 0x1F] - cmp r0, 0 - bne _080FC73A - movs r1, 0x14 -_080FC73A: - adds r0, r1, 0 - bl sub_8053538 - b _080FC786 - .align 2, 0 -_080FC744: .4byte 0x00000854 -_080FC748: - ldr r3, _080FC764 @ =gUnknown_083E7920 - ldr r0, _080FC768 @ =0x02000000 - ldrh r1, [r0, 0x1C] - lsls r0, r1, 1 - adds r2, r0, r1 - adds r0, r3, 0x2 - adds r1, r2, r0 - ldrb r0, [r1] - cmp r0, 0 - beq _080FC76C - bl sub_8053538 - b _080FC786 - .align 2, 0 -_080FC764: .4byte gUnknown_083E7920 -_080FC768: .4byte 0x02000000 -_080FC76C: - adds r0, r2, r3 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - adds r1, r3, 0x1 - adds r1, r2, r1 - ldrb r1, [r1] - lsls r1, 24 - asrs r1, 24 - movs r2, 0x1 - negs r2, r2 - bl warp1_set_2 -_080FC786: - bl sub_80865BC - b _080FC792 -_080FC78C: - ldr r0, _080FC79C @ =sub_808AD58 - bl SetMainCallback2 -_080FC792: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080FC79C: .4byte sub_808AD58 - thumb_func_end sub_80FC69C - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/reset_rtc_screen.s b/asm/reset_rtc_screen.s deleted file mode 100644 index 2fbc559c8..000000000 --- a/asm/reset_rtc_screen.s +++ /dev/null @@ -1,1300 +0,0 @@ - .include "constants/gba_constants.inc" - .include "constants/species_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start SpriteCB_ResetRtcCusor0 -SpriteCB_ResetRtcCusor0: @ 806A480 - push {lr} - adds r3, r0, 0 - ldr r2, _0806A4B0 @ =gTasks - movs r0, 0x2E - ldrsh r1, [r3, r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r2 - movs r2, 0xC - ldrsh r1, [r0, r2] - movs r2, 0x30 - ldrsh r0, [r3, r2] - cmp r1, r0 - beq _0806A596 - strh r1, [r3, 0x30] - subs r0, r1, 0x1 - cmp r0, 0x5 - bhi _0806A596 - lsls r0, 2 - ldr r1, _0806A4B4 @ =_0806A4B8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0806A4B0: .4byte gTasks -_0806A4B4: .4byte _0806A4B8 - .align 2, 0 -_0806A4B8: - .4byte _0806A4D0 - .4byte _0806A4F4 - .4byte _0806A518 - .4byte _0806A53C - .4byte _0806A566 - .4byte _0806A590 -_0806A4D0: - adds r2, r3, 0 - adds r2, 0x3E - ldrb r1, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - adds r1, r3, 0 - adds r1, 0x2A - movs r0, 0x1 - strb r0, [r1] - subs r2, 0x12 - ldrb r1, [r2] - subs r0, 0x41 - ands r0, r1 - strb r0, [r2] - movs r0, 0x35 - b _0806A55E -_0806A4F4: - adds r2, r3, 0 - adds r2, 0x3E - ldrb r1, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - adds r1, r3, 0 - adds r1, 0x2A - movs r0, 0x1 - strb r0, [r1] - subs r2, 0x12 - ldrb r1, [r2] - subs r0, 0x41 - ands r0, r1 - strb r0, [r2] - movs r0, 0x56 - b _0806A55E -_0806A518: - adds r2, r3, 0 - adds r2, 0x3E - ldrb r1, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - adds r1, r3, 0 - adds r1, 0x2A - movs r0, 0x1 - strb r0, [r1] - subs r2, 0x12 - ldrb r1, [r2] - subs r0, 0x41 - ands r0, r1 - strb r0, [r2] - movs r0, 0x6B - b _0806A55E -_0806A53C: - adds r2, r3, 0 - adds r2, 0x3E - ldrb r1, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - adds r1, r3, 0 - adds r1, 0x2A - movs r0, 0x1 - strb r0, [r1] - subs r2, 0x12 - ldrb r1, [r2] - subs r0, 0x41 - ands r0, r1 - strb r0, [r2] - movs r0, 0x80 -_0806A55E: - strh r0, [r3, 0x20] - movs r0, 0x44 - strh r0, [r3, 0x22] - b _0806A596 -_0806A566: - adds r2, r3, 0 - adds r2, 0x3E - ldrb r1, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - adds r1, r3, 0 - adds r1, 0x2A - movs r0, 0x2 - strb r0, [r1] - subs r2, 0x12 - ldrb r1, [r2] - subs r0, 0x42 - ands r0, r1 - strb r0, [r2] - movs r0, 0x9B - strh r0, [r3, 0x20] - movs r0, 0x50 - strh r0, [r3, 0x22] - b _0806A596 -_0806A590: - adds r0, r3, 0 - bl DestroySprite -_0806A596: - pop {r0} - bx r0 - thumb_func_end SpriteCB_ResetRtcCusor0 - - thumb_func_start SpriteCB_ResetRtcCusor1 -SpriteCB_ResetRtcCusor1: @ 806A59C - push {lr} - adds r3, r0, 0 - ldr r2, _0806A5CC @ =gTasks - movs r0, 0x2E - ldrsh r1, [r3, r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r2 - movs r2, 0xC - ldrsh r1, [r0, r2] - movs r2, 0x30 - ldrsh r0, [r3, r2] - cmp r1, r0 - beq _0806A696 - strh r1, [r3, 0x30] - subs r0, r1, 0x1 - cmp r0, 0x5 - bhi _0806A696 - lsls r0, 2 - ldr r1, _0806A5D0 @ =_0806A5D4 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0806A5CC: .4byte gTasks -_0806A5D0: .4byte _0806A5D4 - .align 2, 0 -_0806A5D4: - .4byte _0806A5EC - .4byte _0806A610 - .4byte _0806A634 - .4byte _0806A658 - .4byte _0806A682 - .4byte _0806A690 -_0806A5EC: - adds r2, r3, 0 - adds r2, 0x3E - ldrb r1, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - adds r1, r3, 0 - adds r1, 0x2A - movs r0, 0 - strb r0, [r1] - subs r2, 0x12 - ldrb r1, [r2] - subs r0, 0x40 - ands r0, r1 - strb r0, [r2] - movs r0, 0x35 - b _0806A67A -_0806A610: - adds r2, r3, 0 - adds r2, 0x3E - ldrb r1, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - adds r1, r3, 0 - adds r1, 0x2A - movs r0, 0 - strb r0, [r1] - subs r2, 0x12 - ldrb r1, [r2] - subs r0, 0x40 - ands r0, r1 - strb r0, [r2] - movs r0, 0x56 - b _0806A67A -_0806A634: - adds r2, r3, 0 - adds r2, 0x3E - ldrb r1, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - adds r1, r3, 0 - adds r1, 0x2A - movs r0, 0 - strb r0, [r1] - subs r2, 0x12 - ldrb r1, [r2] - subs r0, 0x40 - ands r0, r1 - strb r0, [r2] - movs r0, 0x6B - b _0806A67A -_0806A658: - adds r2, r3, 0 - adds r2, 0x3E - ldrb r1, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - adds r1, r3, 0 - adds r1, 0x2A - movs r0, 0 - strb r0, [r1] - subs r2, 0x12 - ldrb r1, [r2] - subs r0, 0x40 - ands r0, r1 - strb r0, [r2] - movs r0, 0x80 -_0806A67A: - strh r0, [r3, 0x20] - movs r0, 0x5C - strh r0, [r3, 0x22] - b _0806A696 -_0806A682: - adds r0, r3, 0 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] - b _0806A696 -_0806A690: - adds r0, r3, 0 - bl DestroySprite -_0806A696: - pop {r0} - bx r0 - thumb_func_end SpriteCB_ResetRtcCusor1 - - thumb_func_start ResetRtcScreen_CreateCursor -ResetRtcScreen_CreateCursor: @ 806A69C - push {r4-r6,lr} - mov r6, r8 - push {r6} - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - ldr r0, _0806A70C @ =gUnknown_083764BC - bl LoadSpritePalette - ldr r0, _0806A710 @ =gSpriteTemplate_83764E8 - mov r8, r0 - movs r1, 0x35 - movs r2, 0x44 - movs r3, 0 - bl CreateSpriteAtEnd - lsls r0, 24 - lsrs r1, r0, 24 - ldr r6, _0806A714 @ =gSprites - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r4, r6, 0 - adds r4, 0x1C - adds r2, r0, r4 - ldr r1, _0806A718 @ =SpriteCB_ResetRtcCusor0 - str r1, [r2] - adds r0, r6 - strh r5, [r0, 0x2E] - ldr r1, _0806A71C @ =0x0000ffff - strh r1, [r0, 0x30] - mov r0, r8 - movs r1, 0x35 - movs r2, 0x44 - movs r3, 0 - bl CreateSpriteAtEnd - lsls r0, 24 - lsrs r1, r0, 24 - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r4, r0, r4 - ldr r1, _0806A720 @ =SpriteCB_ResetRtcCusor1 - str r1, [r4] - adds r0, r6 - strh r5, [r0, 0x2E] - movs r1, 0x1 - negs r1, r1 - strh r1, [r0, 0x30] - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0806A70C: .4byte gUnknown_083764BC -_0806A710: .4byte gSpriteTemplate_83764E8 -_0806A714: .4byte gSprites -_0806A718: .4byte SpriteCB_ResetRtcCusor0 -_0806A71C: .4byte 0x0000ffff -_0806A720: .4byte SpriteCB_ResetRtcCusor1 - thumb_func_end ResetRtcScreen_CreateCursor - - thumb_func_start ResetRtcScreen_FreeCursorPalette -ResetRtcScreen_FreeCursorPalette: @ 806A724 - push {lr} - ldr r0, _0806A734 @ =gUnknown_083764BC - ldrh r0, [r0, 0x4] - bl FreeSpritePaletteByTag - pop {r0} - bx r0 - .align 2, 0 -_0806A734: .4byte gUnknown_083764BC - thumb_func_end ResetRtcScreen_FreeCursorPalette - - thumb_func_start ResetRtcScreen_HideChooseTimeWindow -ResetRtcScreen_HideChooseTimeWindow: @ 806A738 - push {lr} - movs r0, 0x3 - movs r1, 0x8 - movs r2, 0x19 - movs r3, 0xB - bl MenuZeroFillWindowRect - pop {r0} - bx r0 - thumb_func_end ResetRtcScreen_HideChooseTimeWindow - - thumb_func_start ResetRtcScreen_PrintTime -ResetRtcScreen_PrintTime: @ 806A74C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - mov r10, r0 - adds r0, r2, 0 - adds r4, r3, 0 - ldr r6, [sp, 0x24] - ldr r2, [sp, 0x28] - mov r9, r2 - mov r2, r10 - lsls r2, 24 - lsrs r2, 24 - mov r10, r2 - lsls r1, 24 - lsrs r1, 24 - str r1, [sp] - lsls r0, 16 - lsrs r0, 16 - lsls r4, 24 - lsrs r4, 24 - lsls r6, 24 - lsrs r6, 24 - mov r1, r9 - lsls r1, 24 - lsrs r1, 24 - mov r9, r1 - ldr r7, _0806A83C @ =gStringVar4 - ldr r1, _0806A840 @ =0x00002710 - bl __umodsi3 - adds r5, r0, 0 - lsls r5, 16 - lsrs r5, 16 - adds r0, r4, 0 - movs r1, 0x18 - bl __umodsi3 - mov r8, r0 - mov r2, r8 - lsls r2, 24 - lsrs r2, 24 - mov r8, r2 - adds r0, r6, 0 - movs r1, 0x3C - bl __umodsi3 - adds r6, r0, 0 - lsls r6, 24 - lsrs r6, 24 - mov r0, r9 - movs r1, 0x3C - bl __umodsi3 - mov r9, r0 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - ldr r4, _0806A844 @ =gStringVar1 - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x18 - movs r3, 0x1 - bl sub_8072C44 - adds r0, r7, 0 - adds r1, r4, 0 - bl StringCopy - adds r7, r0, 0 - ldr r1, _0806A848 @ =gOtherText_Day - bl StringCopy - adds r7, r0, 0 - adds r0, r4, 0 - mov r1, r8 - movs r2, 0x12 - movs r3, 0x1 - bl sub_8072C44 - adds r0, r7, 0 - adds r1, r4, 0 - bl StringCopy - adds r7, r0, 0 - ldr r4, _0806A84C @ =gUnknown_08376500 - adds r1, r4, 0 - bl StringCopy - adds r7, r0, 0 - adds r1, r6, 0 - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - adds r7, r0, 0 - adds r1, r4, 0 - bl StringCopy - adds r7, r0, 0 - mov r1, r9 - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - ldr r0, _0806A83C @ =gStringVar4 - mov r1, r10 - ldr r2, [sp] - bl MenuPrint - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0806A83C: .4byte gStringVar4 -_0806A840: .4byte 0x00002710 -_0806A844: .4byte gStringVar1 -_0806A848: .4byte gOtherText_Day -_0806A84C: .4byte gUnknown_08376500 - thumb_func_end ResetRtcScreen_PrintTime - - thumb_func_start ResetRtcScreen_ShowChooseTimeWindow -ResetRtcScreen_ShowChooseTimeWindow: @ 806A850 - push {r4-r6,lr} - mov r6, r8 - push {r6} - sub sp, 0x8 - adds r6, r0, 0 - mov r8, r1 - adds r4, r2, 0 - adds r5, r3, 0 - lsls r6, 16 - lsrs r6, 16 - mov r0, r8 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - lsls r4, 24 - lsrs r4, 24 - lsls r5, 24 - lsrs r5, 24 - movs r0, 0x3 - movs r1, 0x8 - movs r2, 0x19 - movs r3, 0xB - bl MenuDrawTextWindow - ldr r0, _0806A8A8 @ =gOtherText_OK - movs r1, 0x14 - movs r2, 0x9 - bl MenuPrint - str r4, [sp] - str r5, [sp, 0x4] - movs r0, 0x4 - movs r1, 0x9 - adds r2, r6, 0 - mov r3, r8 - bl ResetRtcScreen_PrintTime - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0806A8A8: .4byte gOtherText_OK - thumb_func_end ResetRtcScreen_ShowChooseTimeWindow - - thumb_func_start ResetRtcScreen_MoveTimeUpDown -ResetRtcScreen_MoveTimeUpDown: @ 806A8AC - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - lsls r3, 16 - lsrs r3, 16 - adds r1, r3, 0 - movs r0, 0x80 - ands r0, r3 - cmp r0, 0 - beq _0806A8C6 - ldrh r0, [r4] - subs r0, 0x1 - b _0806A8E0 -_0806A8C6: - movs r0, 0x40 - ands r0, r3 - cmp r0, 0 - beq _0806A8D4 - ldrh r0, [r4] - adds r0, 0x1 - b _0806A8FE -_0806A8D4: - movs r0, 0x20 - ands r0, r3 - cmp r0, 0 - beq _0806A8EE - ldrh r0, [r4] - subs r0, 0xA -_0806A8E0: - strh r0, [r4] - movs r1, 0 - ldrsh r0, [r4, r1] - cmp r0, r5 - bge _0806A90A - strh r2, [r4] - b _0806A90A -_0806A8EE: - movs r0, 0x10 - ands r1, r0 - cmp r1, 0 - bne _0806A8FA - movs r0, 0 - b _0806A90C -_0806A8FA: - ldrh r0, [r4] - adds r0, 0xA -_0806A8FE: - strh r0, [r4] - movs r1, 0 - ldrsh r0, [r4, r1] - cmp r0, r2 - ble _0806A90A - strh r5, [r4] -_0806A90A: - movs r0, 0x1 -_0806A90C: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end ResetRtcScreen_MoveTimeUpDown - - thumb_func_start Task_ResetRtc_3 -Task_ResetRtc_3: @ 806A914 - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0806A928 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - movs r0, 0x1 - strh r0, [r1, 0x8] - bx lr - .align 2, 0 -_0806A928: .4byte gTasks - thumb_func_end Task_ResetRtc_3 - - thumb_func_start Task_ResetRtc_2 -Task_ResetRtc_2: @ 806A92C - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl ResetRtcScreen_HideChooseTimeWindow - bl ResetRtcScreen_FreeCursorPalette - ldr r1, _0806A950 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _0806A954 @ =Task_ResetRtc_3 - str r1, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0806A950: .4byte gTasks -_0806A954: .4byte Task_ResetRtc_3 - thumb_func_end Task_ResetRtc_2 - - thumb_func_start Task_ResetRtc_1 -Task_ResetRtc_1: @ 806A958 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x8 - lsls r0, 24 - lsrs r6, r0, 24 - lsls r0, r6, 2 - adds r0, r6 - lsls r7, r0, 3 - ldr r0, _0806A99C @ =gTasks + 0x8 - mov r8, r0 - adds r5, r7, r0 - ldrb r4, [r5, 0x4] - lsls r0, r4, 1 - adds r0, r4 - lsls r0, 2 - ldr r1, _0806A9A0 @ =gUnknown_08376420 - 0xC - adds r2, r0, r1 - ldr r1, _0806A9A4 @ =gMain - ldrh r3, [r1, 0x2E] - movs r0, 0x2 - ands r0, r3 - mov r12, r1 - cmp r0, 0 - beq _0806A9AC - mov r0, r8 - subs r0, 0x8 - adds r0, r7, r0 - ldr r1, _0806A9A8 @ =Task_ResetRtc_2 - str r1, [r0] - movs r0, 0 - strh r0, [r5, 0x2] - movs r0, 0x6 - b _0806A9CC - .align 2, 0 -_0806A99C: .4byte gTasks + 0x8 -_0806A9A0: .4byte gUnknown_08376420 - 0xC -_0806A9A4: .4byte gMain -_0806A9A8: .4byte Task_ResetRtc_2 -_0806A9AC: - movs r0, 0x10 - ands r0, r3 - cmp r0, 0 - beq _0806A9BA - ldrb r0, [r2, 0x7] - cmp r0, 0 - bne _0806A9CC -_0806A9BA: - mov r3, r12 - ldrh r1, [r3, 0x2E] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _0806A9D6 - ldrb r0, [r2, 0x6] - cmp r0, 0 - beq _0806A9D6 -_0806A9CC: - strh r0, [r5, 0x4] - movs r0, 0x5 - bl PlaySE - b _0806AA58 -_0806A9D6: - cmp r4, 0x5 - bne _0806AA24 - mov r0, r12 - ldrh r1, [r0, 0x2E] - movs r4, 0x1 - adds r0, r4, 0 - ands r0, r1 - cmp r0, 0 - beq _0806AA58 - ldr r1, _0806AA18 @ =gLocalTime - ldrh r0, [r5, 0x6] - strh r0, [r1] - ldrh r0, [r5, 0x8] - strb r0, [r1, 0x2] - ldrh r0, [r5, 0xA] - strb r0, [r1, 0x3] - ldrh r0, [r5, 0xC] - strb r0, [r1, 0x4] - movs r0, 0x5 - bl PlaySE - ldr r1, _0806AA1C @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r0, r1 - ldr r1, _0806AA20 @ =Task_ResetRtc_2 - str r1, [r0] - strh r4, [r5, 0x2] - movs r0, 0x6 - strh r0, [r5, 0x4] - b _0806AA58 - .align 2, 0 -_0806AA18: .4byte gLocalTime -_0806AA1C: .4byte gTasks -_0806AA20: .4byte Task_ResetRtc_2 -_0806AA24: - ldrb r0, [r2] - lsls r0, 1 - adds r0, r5, r0 - ldrh r1, [r2, 0x2] - ldrh r2, [r2, 0x4] - mov r3, r12 - ldrh r4, [r3, 0x30] - movs r3, 0xC0 - ands r3, r4 - bl ResetRtcScreen_MoveTimeUpDown - cmp r0, 0 - beq _0806AA58 - movs r0, 0x5 - bl PlaySE - ldrh r2, [r5, 0x6] - ldrb r3, [r5, 0x8] - ldrb r0, [r5, 0xA] - str r0, [sp] - ldrb r0, [r5, 0xC] - str r0, [sp, 0x4] - movs r0, 0x4 - movs r1, 0x9 - bl ResetRtcScreen_PrintTime -_0806AA58: - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end Task_ResetRtc_1 - - thumb_func_start Task_ResetRtc_0 -Task_ResetRtc_0: @ 806AA64 - push {r4-r6,lr} - mov r6, r8 - push {r6} - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - lsls r6, r5, 2 - adds r6, r5 - lsls r6, 3 - ldr r0, _0806AACC @ =gTasks + 0x8 - mov r8, r0 - adds r4, r6, r0 - movs r0, 0 - strh r0, [r4] - ldr r3, _0806AAD0 @ =gLocalTime - ldrh r0, [r3] - strh r0, [r4, 0x6] - movs r1, 0x2 - ldrsb r1, [r3, r1] - strh r1, [r4, 0x8] - movs r2, 0x3 - ldrsb r2, [r3, r2] - strh r2, [r4, 0xA] - ldrb r3, [r3, 0x4] - lsls r3, 24 - asrs r3, 24 - strh r3, [r4, 0xC] - ldrh r0, [r4, 0x6] - lsls r1, 24 - lsrs r1, 24 - lsls r2, 24 - lsrs r2, 24 - lsls r3, 24 - lsrs r3, 24 - bl ResetRtcScreen_ShowChooseTimeWindow - adds r0, r5, 0 - bl ResetRtcScreen_CreateCursor - movs r0, 0x2 - strh r0, [r4, 0x4] - movs r0, 0x8 - negs r0, r0 - add r8, r0 - add r6, r8 - ldr r0, _0806AAD4 @ =Task_ResetRtc_1 - str r0, [r6] - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0806AACC: .4byte gTasks + 0x8 -_0806AAD0: .4byte gLocalTime -_0806AAD4: .4byte Task_ResetRtc_1 - thumb_func_end Task_ResetRtc_0 - - thumb_func_start CB2_InitResetRtcScreen -CB2_InitResetRtcScreen: @ 806AAD8 - push {r4-r7,lr} - sub sp, 0x4 - movs r0, 0x80 - lsls r0, 19 - movs r4, 0 - strh r4, [r0] - movs r0, 0 - bl SetVBlankCallback - movs r2, 0xA0 - lsls r2, 19 - mov r0, sp - strh r4, [r0] - ldr r1, _0806AB94 @ =0x040000d4 - str r0, [r1] - str r2, [r1, 0x4] - ldr r0, _0806AB98 @ =0x81000200 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - movs r2, 0xC0 - lsls r2, 19 - movs r3, 0xC0 - lsls r3, 9 - mov r4, sp - movs r6, 0 - movs r5, 0x80 - lsls r5, 5 - ldr r7, _0806AB9C @ =0x81000800 - movs r0, 0x81 - lsls r0, 24 - mov r12, r0 -_0806AB16: - strh r6, [r4] - mov r0, sp - str r0, [r1] - str r2, [r1, 0x4] - str r7, [r1, 0x8] - ldr r0, [r1, 0x8] - adds r2, r5 - subs r3, r5 - cmp r3, r5 - bhi _0806AB16 - strh r6, [r4] - mov r0, sp - str r0, [r1] - str r2, [r1, 0x4] - lsrs r0, r3, 1 - mov r2, r12 - orrs r0, r2 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - movs r0, 0 - movs r1, 0x80 - bl ResetOamRange - bl LoadOam - bl remove_some_task - bl dp12_8087EA4 - bl ResetSpriteData - bl ResetTasks - bl ResetPaletteFade - ldr r4, _0806ABA0 @ =gWindowConfig_81E6CE4 - adds r0, r4, 0 - bl SetUpWindowConfig - adds r0, r4, 0 - bl InitMenuWindow - movs r1, 0x80 - lsls r1, 19 - movs r2, 0x88 - lsls r2, 5 - adds r0, r2, 0 - strh r0, [r1] - ldr r0, _0806ABA4 @ =VBlankCB_ResetRtcScreen - bl SetVBlankCallback - ldr r0, _0806ABA8 @ =CB2_ResetRtcScreen - bl SetMainCallback2 - ldr r0, _0806ABAC @ =Task_ResetRtcScreen - movs r1, 0x50 - bl CreateTask - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0806AB94: .4byte 0x040000d4 -_0806AB98: .4byte 0x81000200 -_0806AB9C: .4byte 0x81000800 -_0806ABA0: .4byte gWindowConfig_81E6CE4 -_0806ABA4: .4byte VBlankCB_ResetRtcScreen -_0806ABA8: .4byte CB2_ResetRtcScreen -_0806ABAC: .4byte Task_ResetRtcScreen - thumb_func_end CB2_InitResetRtcScreen - - thumb_func_start CB2_ResetRtcScreen -CB2_ResetRtcScreen: @ 806ABB0 - push {lr} - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - pop {r0} - bx r0 - thumb_func_end CB2_ResetRtcScreen - - thumb_func_start VBlankCB_ResetRtcScreen -VBlankCB_ResetRtcScreen: @ 806ABC8 - push {lr} - bl ProcessSpriteCopyRequests - bl LoadOam - bl TransferPlttBuffer - pop {r0} - bx r0 - thumb_func_end VBlankCB_ResetRtcScreen - - thumb_func_start ResetRtcScreen_ShowMessage -ResetRtcScreen_ShowMessage: @ 806ABDC - push {r4,lr} - adds r4, r0, 0 - bl MenuDisplayMessageBox - adds r0, r4, 0 - movs r1, 0x2 - movs r2, 0xF - bl MenuPrint - pop {r4} - pop {r0} - bx r0 - thumb_func_end ResetRtcScreen_ShowMessage - - thumb_func_start Task_ShowResetRtcPrompt -Task_ShowResetRtcPrompt: @ 806ABF4 - push {r4,r5,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _0806AC14 @ =gTasks + 0x8 - adds r4, r0, r1 - movs r1, 0 - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _0806AC18 - cmp r0, 0x1 - beq _0806AC80 - b _0806ACC4 - .align 2, 0 -_0806AC14: .4byte gTasks + 0x8 -_0806AC18: - bl MenuZeroFillScreen - movs r0, 0 - movs r1, 0 - movs r2, 0x14 - movs r3, 0xA - bl MenuDrawTextWindow - ldr r0, _0806AC98 @ =gSystemText_PresentTime - movs r1, 0x1 - movs r2, 0x1 - bl MenuPrint - ldr r0, _0806AC9C @ =gLocalTime - ldrh r2, [r0] - ldrb r3, [r0, 0x2] - ldrb r1, [r0, 0x3] - str r1, [sp] - ldrb r0, [r0, 0x4] - str r0, [sp, 0x4] - movs r0, 0x1 - movs r1, 0x3 - bl ResetRtcScreen_PrintTime - ldr r0, _0806ACA0 @ =gSystemText_PreviousTime - movs r1, 0x1 - movs r2, 0x5 - bl MenuPrint - ldr r1, _0806ACA4 @ =gSaveBlock2 - adds r0, r1, 0 - adds r0, 0xA0 - ldrh r2, [r0] - adds r0, 0x2 - ldrb r3, [r0] - adds r0, 0x1 - ldrb r0, [r0] - str r0, [sp] - adds r0, r1, 0 - adds r0, 0xA4 - ldrb r0, [r0] - str r0, [sp, 0x4] - movs r0, 0x1 - movs r1, 0x7 - bl ResetRtcScreen_PrintTime - ldr r0, _0806ACA8 @ =gSystemText_ResetRTCPrompt - bl ResetRtcScreen_ShowMessage - ldrh r0, [r4] - adds r0, 0x1 - strh r0, [r4] -_0806AC80: - ldr r0, _0806ACAC @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0806ACB0 - adds r0, r5, 0 - bl DestroyTask - bl DoSoftReset - b _0806ACC4 - .align 2, 0 -_0806AC98: .4byte gSystemText_PresentTime -_0806AC9C: .4byte gLocalTime -_0806ACA0: .4byte gSystemText_PreviousTime -_0806ACA4: .4byte gSaveBlock2 -_0806ACA8: .4byte gSystemText_ResetRTCPrompt -_0806ACAC: .4byte gMain -_0806ACB0: - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0806ACC4 - movs r0, 0x5 - bl PlaySE - adds r0, r5, 0 - bl DestroyTask -_0806ACC4: - add sp, 0x8 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end Task_ShowResetRtcPrompt - - thumb_func_start Task_ResetRtcScreen -Task_ResetRtcScreen: @ 806ACCC - push {r4,r5,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - ldr r1, _0806ACF4 @ =gTasks + 0x8 - adds r5, r0, r1 - movs r1, 0 - ldrsh r0, [r5, r1] - cmp r0, 0x6 - bls _0806ACE8 - b _0806AEC4 -_0806ACE8: - lsls r0, 2 - ldr r1, _0806ACF8 @ =_0806ACFC - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0806ACF4: .4byte gTasks + 0x8 -_0806ACF8: .4byte _0806ACFC - .align 2, 0 -_0806ACFC: - .4byte _0806AD18 - .4byte _0806AD34 - .4byte _0806AD80 - .4byte _0806ADD8 - .4byte _0806AE5C - .4byte _0806AE8C - .4byte _0806AEAE -_0806AD18: - movs r0, 0x1 - negs r0, r0 - ldr r1, _0806AD30 @ =0x0000ffff - str r1, [sp] - movs r1, 0x1 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - movs r0, 0x1 - strh r0, [r5] - b _0806AEC4 - .align 2, 0 -_0806AD30: .4byte 0x0000ffff -_0806AD34: - ldr r0, _0806AD5C @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0806AD42 - b _0806AEC4 -_0806AD42: - ldr r0, _0806AD60 @ =gSaveFileStatus - ldrh r0, [r0] - cmp r0, 0 - beq _0806AD4E - cmp r0, 0x2 - bne _0806AD68 -_0806AD4E: - ldr r0, _0806AD64 @ =gSystemText_NoSaveFileNoTime - bl ResetRtcScreen_ShowMessage - movs r0, 0x5 - strh r0, [r5] - b _0806AEC4 - .align 2, 0 -_0806AD5C: .4byte gPaletteFade -_0806AD60: .4byte gSaveFileStatus -_0806AD64: .4byte gSystemText_NoSaveFileNoTime -_0806AD68: - bl RtcCalcLocalTime - ldr r0, _0806AD7C @ =Task_ShowResetRtcPrompt - movs r1, 0x50 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x2] - b _0806ADFC - .align 2, 0 -_0806AD7C: .4byte Task_ShowResetRtcPrompt -_0806AD80: - ldr r2, _0806ADC4 @ =gTasks - movs r0, 0x2 - ldrsh r1, [r5, r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r2 - ldrb r0, [r0, 0x4] - cmp r0, 0x1 - bne _0806AD96 - b _0806AEC4 -_0806AD96: - bl MenuZeroFillScreen - ldr r0, _0806ADC8 @ =gSystemText_PleaseResetTime - bl ResetRtcScreen_ShowMessage - ldr r2, _0806ADCC @ =gLocalTime - ldr r0, _0806ADD0 @ =gSaveBlock2 - adds r0, 0xA0 - ldr r1, [r0, 0x4] - ldr r0, [r0] - str r0, [r2] - str r1, [r2, 0x4] - ldr r0, _0806ADD4 @ =Task_ResetRtc_0 - movs r1, 0x50 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x2] - movs r0, 0x3 - strh r0, [r5] - b _0806AEC4 - .align 2, 0 -_0806ADC4: .4byte gTasks -_0806ADC8: .4byte gSystemText_PleaseResetTime -_0806ADCC: .4byte gLocalTime -_0806ADD0: .4byte gSaveBlock2 -_0806ADD4: .4byte Task_ResetRtc_0 -_0806ADD8: - ldr r2, _0806AE04 @ =gTasks - movs r0, 0x2 - ldrsh r1, [r5, r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r1, r0, r2 - movs r2, 0x8 - ldrsh r0, [r1, r2] - cmp r0, 0 - beq _0806AEC4 - movs r2, 0xA - ldrsh r0, [r1, r2] - cmp r0, 0 - bne _0806AE08 - ldrb r0, [r5, 0x2] - bl DestroyTask -_0806ADFC: - movs r0, 0x2 - strh r0, [r5] - b _0806AEC4 - .align 2, 0 -_0806AE04: .4byte gTasks -_0806AE08: - ldrb r0, [r5, 0x2] - bl DestroyTask - bl RtcReset - ldr r4, _0806AE4C @ =gLocalTime - movs r1, 0 - ldrsh r0, [r4, r1] - movs r1, 0x2 - ldrsb r1, [r4, r1] - movs r2, 0x3 - ldrsb r2, [r4, r2] - movs r3, 0x4 - ldrsb r3, [r4, r3] - bl RtcCalcLocalTimeOffset - ldr r2, _0806AE50 @ =gSaveBlock2 - adds r2, 0xA0 - ldr r0, [r4] - ldr r1, [r4, 0x4] - str r0, [r2] - str r1, [r2, 0x4] - ldr r0, _0806AE54 @ =0x00004040 - ldrh r1, [r4] - bl VarSet - bl DisableResetRTC - ldr r0, _0806AE58 @ =gSystemText_ClockResetDataSave - bl ResetRtcScreen_ShowMessage - movs r0, 0x4 - strh r0, [r5] - b _0806AEC4 - .align 2, 0 -_0806AE4C: .4byte gLocalTime -_0806AE50: .4byte gSaveBlock2 -_0806AE54: .4byte 0x00004040 -_0806AE58: .4byte gSystemText_ClockResetDataSave -_0806AE5C: - movs r0, 0 - bl TrySavingData - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0806AE7C - ldr r0, _0806AE78 @ =gSystemText_SaveCompleted - bl ResetRtcScreen_ShowMessage - movs r0, 0x49 - bl PlaySE - b _0806AE88 - .align 2, 0 -_0806AE78: .4byte gSystemText_SaveCompleted -_0806AE7C: - ldr r0, _0806AECC @ =gSystemText_SaveFailed - bl ResetRtcScreen_ShowMessage - movs r0, 0x16 - bl PlaySE -_0806AE88: - movs r0, 0x5 - strh r0, [r5] -_0806AE8C: - ldr r0, _0806AED0 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0806AEC4 - movs r0, 0x1 - negs r0, r0 - ldr r1, _0806AED4 @ =0x0000ffff - str r1, [sp] - movs r1, 0x1 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - movs r0, 0x6 - strh r0, [r5] -_0806AEAE: - ldr r0, _0806AED8 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0806AEC4 - adds r0, r4, 0 - bl DestroyTask - bl DoSoftReset -_0806AEC4: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0806AECC: .4byte gSystemText_SaveFailed -_0806AED0: .4byte gMain -_0806AED4: .4byte 0x0000ffff -_0806AED8: .4byte gPaletteFade - thumb_func_end Task_ResetRtcScreen - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/reshow_battle_screen.s b/asm/reshow_battle_screen.s deleted file mode 100644 index 59b08dd01..000000000 --- a/asm/reshow_battle_screen.s +++ /dev/null @@ -1,1097 +0,0 @@ - .include "constants/gba_constants.inc" - .include "constants/species_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start nullsub_14 -nullsub_14: @ 807AD54 - bx lr - thumb_func_end nullsub_14 - - thumb_func_start ReshowBattleScreenAfterMenu -ReshowBattleScreenAfterMenu: @ 807AD58 - push {lr} - ldr r2, _0807AD90 @ =gPaletteFade - ldrb r0, [r2, 0x8] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2, 0x8] - movs r0, 0 - bl SetHBlankCallback - movs r0, 0 - bl SetVBlankCallback - ldr r0, _0807AD94 @ =REG_MOSAIC - movs r2, 0 - strh r2, [r0] - ldr r0, _0807AD98 @ =0x02000000 - ldr r3, _0807AD9C @ =0x0001ffff - adds r1, r0, r3 - strb r2, [r1] - ldr r1, _0807ADA0 @ =0x0001fffe - adds r0, r1 - strb r2, [r0] - ldr r0, _0807ADA4 @ =CB2_ReshowBattleScreenAfterMenu - bl SetMainCallback2 - pop {r0} - bx r0 - .align 2, 0 -_0807AD90: .4byte gPaletteFade -_0807AD94: .4byte REG_MOSAIC -_0807AD98: .4byte 0x02000000 -_0807AD9C: .4byte 0x0001ffff -_0807ADA0: .4byte 0x0001fffe -_0807ADA4: .4byte CB2_ReshowBattleScreenAfterMenu - thumb_func_end ReshowBattleScreenAfterMenu - - thumb_func_start CB2_ReshowBattleScreenAfterMenu -CB2_ReshowBattleScreenAfterMenu: @ 807ADA8 - push {r4-r7,lr} - sub sp, 0x8 - ldr r0, _0807ADC4 @ =0x02000000 - ldr r1, _0807ADC8 @ =0x0001ffff - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x13 - bls _0807ADBA - b _0807B010 -_0807ADBA: - lsls r0, 2 - ldr r1, _0807ADCC @ =_0807ADD0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0807ADC4: .4byte 0x02000000 -_0807ADC8: .4byte 0x0001ffff -_0807ADCC: .4byte _0807ADD0 - .align 2, 0 -_0807ADD0: - .4byte _0807AE20 - .4byte _0807AE84 - .4byte _0807AE9C - .4byte _0807AEC8 - .4byte _0807AECE - .4byte _0807AEE0 - .4byte _0807AEE6 - .4byte _0807AF18 - .4byte _0807AF1C - .4byte _0807AF20 - .4byte _0807AF24 - .4byte _0807AF48 - .4byte _0807AF50 - .4byte _0807AF58 - .4byte _0807AF60 - .4byte _0807AF68 - .4byte _0807AF70 - .4byte _0807AF78 - .4byte _0807AF80 - .4byte _0807AF88 -_0807AE20: - bl dp12_8087EA4 - ldr r4, _0807AE5C @ =gWindowConfig_81E6C58 - adds r0, r4, 0 - bl SetUpWindowConfig - bl ResetPaletteFade - ldr r0, _0807AE60 @ =gUnknown_03004210 - adds r1, r4, 0 - bl InitWindowFromConfig - ldr r0, _0807AE64 @ =gUnknown_030042A4 - movs r1, 0 - strh r1, [r0] - ldr r0, _0807AE68 @ =gUnknown_030042A0 - strh r1, [r0] - ldr r0, _0807AE6C @ =gUnknown_030042C0 - strh r1, [r0] - ldr r0, _0807AE70 @ =gUnknown_030041B4 - strh r1, [r0] - ldr r0, _0807AE74 @ =gUnknown_03004288 - strh r1, [r0] - ldr r0, _0807AE78 @ =gUnknown_03004280 - strh r1, [r0] - ldr r0, _0807AE7C @ =gUnknown_030041B0 - strh r1, [r0] - ldr r0, _0807AE80 @ =gUnknown_030041B8 - strh r1, [r0] - b _0807B040 - .align 2, 0 -_0807AE5C: .4byte gWindowConfig_81E6C58 -_0807AE60: .4byte gUnknown_03004210 -_0807AE64: .4byte gUnknown_030042A4 -_0807AE68: .4byte gUnknown_030042A0 -_0807AE6C: .4byte gUnknown_030042C0 -_0807AE70: .4byte gUnknown_030041B4 -_0807AE74: .4byte gUnknown_03004288 -_0807AE78: .4byte gUnknown_03004280 -_0807AE7C: .4byte gUnknown_030041B0 -_0807AE80: .4byte gUnknown_030041B8 -_0807AE84: - movs r0, 0 - str r0, [sp, 0x4] - movs r1, 0xC0 - lsls r1, 19 - ldr r2, _0807AE98 @ =0x01006000 - add r0, sp, 0x4 - bl CpuFastSet - b _0807B040 - .align 2, 0 -_0807AE98: .4byte 0x01006000 -_0807AE9C: - ldr r5, _0807AEBC @ =0x02000000 - ldr r0, _0807AEC0 @ =0x0001fffe - adds r4, r5, r0 - ldrb r0, [r4] - bl sub_800E414 - lsls r0, 24 - cmp r0, 0 - bne _0807AEF8 - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - ldr r0, _0807AEC4 @ =0x0001ffff - adds r1, r5, r0 - b _0807AF38 - .align 2, 0 -_0807AEBC: .4byte 0x02000000 -_0807AEC0: .4byte 0x0001fffe -_0807AEC4: .4byte 0x0001ffff -_0807AEC8: - bl ResetSpriteData - b _0807B040 -_0807AECE: - bl FreeAllSpritePalettes - ldr r1, _0807AEDC @ =gReservedSpritePaletteCount - movs r0, 0x4 - strb r0, [r1] - b _0807B040 - .align 2, 0 -_0807AEDC: .4byte gReservedSpritePaletteCount -_0807AEE0: - bl sub_8031EE8 - b _0807B040 -_0807AEE6: - ldr r5, _0807AF00 @ =0x02000000 - ldr r1, _0807AF04 @ =0x0001fffe - adds r4, r5, r1 - ldrb r0, [r4] - bl sub_8031C30 - lsls r0, 24 - cmp r0, 0 - beq _0807AF08 -_0807AEF8: - movs r0, 0 - strb r0, [r4] - b _0807B040 - .align 2, 0 -_0807AF00: .4byte 0x02000000 -_0807AF04: .4byte 0x0001fffe -_0807AF08: - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - ldr r0, _0807AF14 @ =0x0001ffff - adds r1, r5, r0 - b _0807AF38 - .align 2, 0 -_0807AF14: .4byte 0x0001ffff -_0807AF18: - movs r0, 0 - b _0807AF26 -_0807AF1C: - movs r0, 0x1 - b _0807AF26 -_0807AF20: - movs r0, 0x2 - b _0807AF26 -_0807AF24: - movs r0, 0x3 -_0807AF26: - bl sub_807B094 - lsls r0, 24 - cmp r0, 0 - beq _0807AF32 - b _0807B040 -_0807AF32: - ldr r1, _0807AF40 @ =0x02000000 - ldr r0, _0807AF44 @ =0x0001ffff - adds r1, r0 -_0807AF38: - ldrb r0, [r1] - subs r0, 0x1 - strb r0, [r1] - b _0807B040 - .align 2, 0 -_0807AF40: .4byte 0x02000000 -_0807AF44: .4byte 0x0001ffff -_0807AF48: - movs r0, 0 - bl sub_807B184 - b _0807B040 -_0807AF50: - movs r0, 0x1 - bl sub_807B184 - b _0807B040 -_0807AF58: - movs r0, 0x2 - bl sub_807B184 - b _0807B040 -_0807AF60: - movs r0, 0x3 - bl sub_807B184 - b _0807B040 -_0807AF68: - movs r0, 0 - bl sub_807B508 - b _0807B040 -_0807AF70: - movs r0, 0x1 - bl sub_807B508 - b _0807B040 -_0807AF78: - movs r0, 0x2 - bl sub_807B508 - b _0807B040 -_0807AF80: - movs r0, 0x3 - bl sub_807B508 - b _0807B040 -_0807AF88: - bl sub_80327CC - movs r0, 0x1 - bl GetBankByPlayerAI - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r7, _0807B000 @ =gBattlePartyID - lsls r0, r4, 1 - adds r0, r7 - ldrh r0, [r0] - movs r6, 0x64 - muls r0, r6 - ldr r5, _0807B004 @ =gEnemyParty - adds r0, r5 - movs r1, 0xB - bl GetMonData - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - adds r0, r4, 0 - bl sub_8032984 - bl IsDoubleBattle - lsls r0, 24 - cmp r0, 0 - beq _0807AFEC - movs r0, 0x3 - bl GetBankByPlayerAI - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r0, r4, 1 - adds r0, r7 - ldrh r0, [r0] - muls r0, r6 - adds r0, r5 - movs r1, 0xB - bl GetMonData - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - adds r0, r4, 0 - bl sub_8032984 -_0807AFEC: - ldr r1, _0807B008 @ =gActionSelectionCursor - ldr r0, _0807B00C @ =gBankInMenu - ldrb r0, [r0] - adds r0, r1 - ldrb r0, [r0] - movs r1, 0 - bl sub_802E3E4 - b _0807B040 - .align 2, 0 -_0807B000: .4byte gBattlePartyID -_0807B004: .4byte gEnemyParty -_0807B008: .4byte gActionSelectionCursor -_0807B00C: .4byte gBankInMenu -_0807B010: - ldr r0, _0807B054 @ =sub_800FCD4 - bl SetHBlankCallback - ldr r0, _0807B058 @ =sub_800FCFC - bl SetVBlankCallback - bl sub_807B06C - movs r0, 0x1 - str r0, [sp] - movs r0, 0xFF - movs r1, 0 - movs r2, 0x10 - movs r3, 0 - bl BeginHardwarePaletteFade - ldr r2, _0807B05C @ =gPaletteFade - ldrb r1, [r2, 0x8] - movs r0, 0x7F - ands r0, r1 - strb r0, [r2, 0x8] - ldr r0, _0807B060 @ =sub_800F808 - bl SetMainCallback2 -_0807B040: - ldr r1, _0807B064 @ =0x02000000 - ldr r0, _0807B068 @ =0x0001ffff - adds r1, r0 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - add sp, 0x8 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0807B054: .4byte sub_800FCD4 -_0807B058: .4byte sub_800FCFC -_0807B05C: .4byte gPaletteFade -_0807B060: .4byte sub_800F808 -_0807B064: .4byte 0x02000000 -_0807B068: .4byte 0x0001ffff - thumb_func_end CB2_ReshowBattleScreenAfterMenu - - thumb_func_start sub_807B06C -sub_807B06C: @ 807B06C - push {lr} - bl sub_800D6D4 - ldr r3, _0807B08C @ =REG_BG1CNT - ldrb r2, [r3] - movs r1, 0xD - negs r1, r1 - adds r0, r1, 0 - ands r0, r2 - strb r0, [r3] - ldr r2, _0807B090 @ =REG_BG2CNT - ldrb r0, [r2] - ands r1, r0 - strb r1, [r2] - pop {r0} - bx r0 - .align 2, 0 -_0807B08C: .4byte REG_BG1CNT -_0807B090: .4byte REG_BG2CNT - thumb_func_end sub_807B06C - - thumb_func_start sub_807B094 -sub_807B094: @ 807B094 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0807B0D8 @ =gNoOfAllBanks - ldrb r0, [r0] - cmp r4, r0 - bcs _0807B172 - adds r0, r4, 0 - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _0807B0F2 - lsls r0, r4, 2 - ldr r1, _0807B0DC @ =0x02017800 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - bne _0807B0E8 - ldr r1, _0807B0E0 @ =gBattlePartyID - lsls r0, r4, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _0807B0E4 @ =gEnemyParty - adds r0, r1 - adds r1, r4, 0 - bl sub_8031794 - b _0807B168 - .align 2, 0 -_0807B0D8: .4byte gNoOfAllBanks -_0807B0DC: .4byte 0x02017800 -_0807B0E0: .4byte gBattlePartyID -_0807B0E4: .4byte gEnemyParty -_0807B0E8: - adds r0, r4, 0 - movs r1, 0 - bl sub_8032350 - b _0807B168 -_0807B0F2: - ldr r2, _0807B108 @ =gBattleTypeFlags - ldrh r1, [r2] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0807B110 - cmp r4, 0 - bne _0807B110 - ldr r0, _0807B10C @ =gSaveBlock2 - ldrb r0, [r0, 0x8] - b _0807B122 - .align 2, 0 -_0807B108: .4byte gBattleTypeFlags -_0807B10C: .4byte gSaveBlock2 -_0807B110: - ldrh r1, [r2] - movs r0, 0x80 - lsls r0, 2 - ands r0, r1 - cmp r0, 0 - beq _0807B12A - cmp r4, 0 - bne _0807B12A - movs r0, 0x2 -_0807B122: - movs r1, 0 - bl sub_8031AF4 - b _0807B168 -_0807B12A: - lsls r0, r4, 2 - ldr r1, _0807B154 @ =0x02017800 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - bne _0807B160 - ldr r1, _0807B158 @ =gBattlePartyID - lsls r0, r4, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _0807B15C @ =gPlayerParty - adds r0, r1 - adds r1, r4, 0 - bl sub_80318FC - b _0807B168 - .align 2, 0 -_0807B154: .4byte 0x02017800 -_0807B158: .4byte gBattlePartyID -_0807B15C: .4byte gPlayerParty -_0807B160: - adds r0, r4, 0 - movs r1, 0 - bl sub_8032350 -_0807B168: - ldr r0, _0807B17C @ =0x02000000 - ldr r1, _0807B180 @ =0x0001fffe - adds r0, r1 - movs r1, 0 - strb r1, [r0] -_0807B172: - movs r0, 0x1 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0807B17C: .4byte 0x02000000 -_0807B180: .4byte 0x0001fffe - thumb_func_end sub_807B094 - - thumb_func_start sub_807B184 -sub_807B184: @ 807B184 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - lsls r0, 24 - lsrs r7, r0, 24 - ldr r0, _0807B1B8 @ =gNoOfAllBanks - ldrb r0, [r0] - cmp r7, r0 - bcc _0807B19E - b _0807B4D8 -_0807B19E: - lsls r2, r7, 2 - ldr r0, _0807B1BC @ =0x02017800 - adds r0, r2, r0 - ldrb r1, [r0] - movs r0, 0x4 - ands r0, r1 - str r2, [sp] - cmp r0, 0 - beq _0807B1C0 - adds r0, r7, 0 - bl sub_8077F7C - b _0807B1C6 - .align 2, 0 -_0807B1B8: .4byte gNoOfAllBanks -_0807B1BC: .4byte 0x02017800 -_0807B1C0: - adds r0, r7, 0 - bl sub_8077F68 -_0807B1C6: - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - adds r0, r7, 0 - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _0807B1DA - b _0807B2D8 -_0807B1DA: - ldr r1, _0807B2BC @ =gBattlePartyID - lsls r0, r7, 1 - adds r6, r0, r1 - ldrh r0, [r6] - movs r1, 0x64 - mov r10, r1 - mov r1, r10 - muls r1, r0 - adds r0, r1, 0 - ldr r1, _0807B2C0 @ =gEnemyParty - mov r9, r1 - add r0, r9 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - bne _0807B1FE - b _0807B4D8 -_0807B1FE: - ldrh r0, [r6] - mov r1, r10 - muls r1, r0 - adds r0, r1, 0 - add r0, r9 - movs r1, 0xB - bl GetMonData - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r7, 0 - bl GetBankIdentity - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl GetMonSpriteTemplate_803C56C - ldr r5, _0807B2C4 @ =gUnknown_02024E8C - adds r0, r7, 0 - movs r1, 0x2 - bl sub_8077ABC - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r7, 0 - bl sub_8079E90 - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - adds r0, r5, 0 - adds r1, r4, 0 - mov r2, r8 - bl CreateSprite - ldr r4, _0807B2C8 @ =gObjectBankIDs - adds r4, r7, r4 - strb r0, [r4] - ldr r5, _0807B2CC @ =gSprites - ldrb r0, [r4] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r5 - lsls r3, r7, 4 - ldrb r2, [r1, 0x5] - movs r0, 0xF - ands r0, r2 - orrs r0, r3 - strb r0, [r1, 0x5] - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r5, 0 - adds r1, 0x1C - adds r0, r1 - ldr r1, _0807B2D0 @ =SpriteCallbackDummy - str r1, [r0] - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - strh r7, [r0, 0x2E] - ldrh r0, [r6] - mov r1, r10 - muls r1, r0 - adds r0, r1, 0 - add r0, r9 - movs r1, 0xB - bl GetMonData - ldrb r2, [r4] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r1, r5 - strh r0, [r1, 0x32] - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldr r1, _0807B2D4 @ =gBattleMonForms - adds r1, r7, r1 - ldrb r1, [r1] - bl StartSpriteAnim - b _0807B4AC - .align 2, 0 -_0807B2BC: .4byte gBattlePartyID -_0807B2C0: .4byte gEnemyParty -_0807B2C4: .4byte gUnknown_02024E8C -_0807B2C8: .4byte gObjectBankIDs -_0807B2CC: .4byte gSprites -_0807B2D0: .4byte SpriteCallbackDummy -_0807B2D4: .4byte gBattleMonForms -_0807B2D8: - ldr r2, _0807B328 @ =gBattleTypeFlags - ldrh r1, [r2] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0807B338 - cmp r7, 0 - bne _0807B338 - ldr r5, _0807B32C @ =gSaveBlock2 - ldrb r4, [r5, 0x8] - movs r0, 0 - bl GetBankIdentity - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl GetMonSpriteTemplate_803C5A0 - ldr r6, _0807B330 @ =gUnknown_02024E8C - ldr r1, _0807B334 @ =gTrainerBackPicCoords - ldrb r0, [r5, 0x8] - lsls r0, 2 - adds r0, r1 - ldrb r0, [r0] - movs r4, 0x8 - subs r4, r0 - lsls r4, 18 - movs r0, 0xA0 - lsls r0, 15 - adds r4, r0 - asrs r4, 16 - movs r0, 0 - bl sub_8079E90 - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - adds r0, r6, 0 - b _0807B37C - .align 2, 0 -_0807B328: .4byte gBattleTypeFlags -_0807B32C: .4byte gSaveBlock2 -_0807B330: .4byte gUnknown_02024E8C -_0807B334: .4byte gTrainerBackPicCoords -_0807B338: - ldrh r1, [r2] - movs r0, 0x80 - lsls r0, 2 - ands r0, r1 - cmp r0, 0 - beq _0807B3D0 - cmp r7, 0 - bne _0807B3D0 - movs r0, 0 - bl GetBankIdentity - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - movs r0, 0x2 - bl GetMonSpriteTemplate_803C5A0 - ldr r5, _0807B3BC @ =gUnknown_02024E8C - ldr r0, _0807B3C0 @ =gTrainerBackPicCoords - ldrb r0, [r0, 0x8] - movs r4, 0x8 - subs r4, r0 - lsls r4, 18 - movs r1, 0xA0 - lsls r1, 15 - adds r4, r1 - asrs r4, 16 - movs r0, 0 - bl sub_8079E90 - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - adds r0, r5, 0 -_0807B37C: - movs r1, 0x50 - adds r2, r4, 0 - bl CreateSprite - ldr r3, _0807B3C4 @ =gObjectBankIDs - strb r0, [r3] - ldr r4, _0807B3C8 @ =gSprites - ldrb r0, [r3] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - ldrb r2, [r1, 0x5] - movs r0, 0xF - ands r0, r2 - strb r0, [r1, 0x5] - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r4, 0 - adds r1, 0x1C - adds r0, r1 - ldr r1, _0807B3CC @ =SpriteCallbackDummy - str r1, [r0] - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - strh r7, [r0, 0x2E] - b _0807B4AC - .align 2, 0 -_0807B3BC: .4byte gUnknown_02024E8C -_0807B3C0: .4byte gTrainerBackPicCoords -_0807B3C4: .4byte gObjectBankIDs -_0807B3C8: .4byte gSprites -_0807B3CC: .4byte SpriteCallbackDummy -_0807B3D0: - ldr r1, _0807B4E8 @ =gBattlePartyID - lsls r0, r7, 1 - adds r6, r0, r1 - ldrh r0, [r6] - movs r1, 0x64 - mov r10, r1 - mov r1, r10 - muls r1, r0 - adds r0, r1, 0 - ldr r1, _0807B4EC @ =gPlayerParty - mov r9, r1 - add r0, r9 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - beq _0807B4D8 - ldrh r0, [r6] - mov r1, r10 - muls r1, r0 - adds r0, r1, 0 - add r0, r9 - movs r1, 0xB - bl GetMonData - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r7, 0 - bl GetBankIdentity - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl GetMonSpriteTemplate_803C56C - ldr r5, _0807B4F0 @ =gUnknown_02024E8C - adds r0, r7, 0 - movs r1, 0x2 - bl sub_8077ABC - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r7, 0 - bl sub_8079E90 - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - adds r0, r5, 0 - adds r1, r4, 0 - mov r2, r8 - bl CreateSprite - ldr r4, _0807B4F4 @ =gObjectBankIDs - adds r4, r7, r4 - strb r0, [r4] - ldr r5, _0807B4F8 @ =gSprites - ldrb r0, [r4] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r5 - lsls r3, r7, 4 - ldrb r2, [r1, 0x5] - movs r0, 0xF - ands r0, r2 - orrs r0, r3 - strb r0, [r1, 0x5] - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r5, 0 - adds r1, 0x1C - adds r0, r1 - ldr r1, _0807B4FC @ =SpriteCallbackDummy - str r1, [r0] - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - strh r7, [r0, 0x2E] - ldrh r0, [r6] - mov r1, r10 - muls r1, r0 - adds r0, r1, 0 - add r0, r9 - movs r1, 0xB - bl GetMonData - ldrb r2, [r4] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r1, r5 - strh r0, [r1, 0x32] - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldr r1, _0807B500 @ =gBattleMonForms - adds r1, r7, r1 - ldrb r1, [r1] - bl StartSpriteAnim -_0807B4AC: - ldr r1, _0807B4F8 @ =gSprites - ldr r0, _0807B4F4 @ =gObjectBankIDs - adds r0, r7, r0 - ldrb r0, [r0] - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - adds r2, r1 - ldr r0, _0807B504 @ =0x02017800 - ldr r1, [sp] - adds r0, r1, r0 - ldr r1, [r0] - lsls r1, 31 - adds r2, 0x3E - lsrs r1, 31 - lsls r1, 2 - ldrb r3, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r3 - orrs r0, r1 - strb r0, [r2] -_0807B4D8: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0807B4E8: .4byte gBattlePartyID -_0807B4EC: .4byte gPlayerParty -_0807B4F0: .4byte gUnknown_02024E8C -_0807B4F4: .4byte gObjectBankIDs -_0807B4F8: .4byte gSprites -_0807B4FC: .4byte SpriteCallbackDummy -_0807B500: .4byte gBattleMonForms -_0807B504: .4byte 0x02017800 - thumb_func_end sub_807B184 - - thumb_func_start sub_807B508 -sub_807B508: @ 807B508 - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, _0807B530 @ =gNoOfAllBanks - ldrb r0, [r0] - cmp r5, r0 - bcc _0807B518 - b _0807B68A -_0807B518: - ldr r2, _0807B534 @ =gBattleTypeFlags - ldrh r1, [r2] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0807B538 - cmp r5, 0 - bne _0807B538 - bl battle_make_oam_safari_battle - b _0807B550 - .align 2, 0 -_0807B530: .4byte gNoOfAllBanks -_0807B534: .4byte gBattleTypeFlags -_0807B538: - ldrh r1, [r2] - movs r0, 0x80 - lsls r0, 2 - ands r0, r1 - cmp r0, 0 - beq _0807B54A - cmp r5, 0 - bne _0807B54A - b _0807B68A -_0807B54A: - adds r0, r5, 0 - bl battle_make_oam_normal_battle -_0807B550: - lsls r0, 24 - lsrs r6, r0, 24 - ldr r0, _0807B58C @ =gHealthboxIDs - adds r4, r5, r0 - strb r6, [r4] - adds r0, r5, 0 - bl sub_8043F44 - adds r0, r6, 0 - bl sub_8043DFC - adds r0, r5, 0 - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _0807B598 - ldrb r0, [r4] - ldr r1, _0807B590 @ =gBattlePartyID - lsls r4, r5, 1 - adds r1, r4, r1 - ldrh r2, [r1] - movs r1, 0x64 - muls r1, r2 - ldr r2, _0807B594 @ =gEnemyParty - adds r1, r2 - movs r2, 0 - bl sub_8045A5C - b _0807B5E4 - .align 2, 0 -_0807B58C: .4byte gHealthboxIDs -_0807B590: .4byte gBattlePartyID -_0807B594: .4byte gEnemyParty -_0807B598: - ldr r0, _0807B5C0 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0807B5CC - ldrb r0, [r4] - ldr r1, _0807B5C4 @ =gBattlePartyID - lsls r4, r5, 1 - adds r1, r4, r1 - ldrh r2, [r1] - movs r1, 0x64 - muls r1, r2 - ldr r2, _0807B5C8 @ =gPlayerParty - adds r1, r2 - movs r2, 0xA - bl sub_8045A5C - b _0807B5E4 - .align 2, 0 -_0807B5C0: .4byte gBattleTypeFlags -_0807B5C4: .4byte gBattlePartyID -_0807B5C8: .4byte gPlayerParty -_0807B5CC: - ldrb r0, [r4] - ldr r1, _0807B610 @ =gBattlePartyID - lsls r4, r5, 1 - adds r1, r4, r1 - ldrh r2, [r1] - movs r1, 0x64 - muls r1, r2 - ldr r2, _0807B614 @ =gPlayerParty - adds r1, r2 - movs r2, 0 - bl sub_8045A5C -_0807B5E4: - adds r0, r5, 0 - bl GetBankIdentity - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - beq _0807B600 - adds r0, r5, 0 - bl GetBankIdentity - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bne _0807B61C -_0807B600: - ldr r0, _0807B618 @ =gHealthboxIDs - adds r0, r5, r0 - ldrb r0, [r0] - movs r1, 0x1 - bl nullsub_11 - b _0807B628 - .align 2, 0 -_0807B610: .4byte gBattlePartyID -_0807B614: .4byte gPlayerParty -_0807B618: .4byte gHealthboxIDs -_0807B61C: - ldr r0, _0807B654 @ =gHealthboxIDs - adds r0, r5, r0 - ldrb r0, [r0] - movs r1, 0 - bl nullsub_11 -_0807B628: - adds r0, r5, 0 - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _0807B660 - ldr r0, _0807B658 @ =gBattlePartyID - adds r0, r4, r0 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _0807B65C @ =gEnemyParty - adds r0, r1 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - bne _0807B68A - adds r0, r6, 0 - bl sub_8043DB0 - b _0807B68A - .align 2, 0 -_0807B654: .4byte gHealthboxIDs -_0807B658: .4byte gBattlePartyID -_0807B65C: .4byte gEnemyParty -_0807B660: - ldr r0, _0807B690 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0807B68A - ldr r0, _0807B694 @ =gBattlePartyID - adds r0, r4, r0 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _0807B698 @ =gPlayerParty - adds r0, r1 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - bne _0807B68A - adds r0, r6, 0 - bl sub_8043DB0 -_0807B68A: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0807B690: .4byte gBattleTypeFlags -_0807B694: .4byte gBattlePartyID -_0807B698: .4byte gPlayerParty - thumb_func_end sub_807B508 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/rom_header.inc b/asm/rom_header.inc index 43eec30bb..a852a9f23 100644 --- a/asm/rom_header.inc +++ b/asm/rom_header.inc @@ -66,8 +66,12 @@ RomHeaderChecksum: .byte 0x41 - REVISION .endif .else + .ifdef SAPPHIRE + .byte 0x56 + .else .byte 0x42 .endif + .endif RomHeaderReserved2: .space 2 diff --git a/asm/shop.s b/asm/shop.s deleted file mode 100644 index a341e90a1..000000000 --- a/asm/shop.s +++ /dev/null @@ -1,2613 +0,0 @@ - .include "constants/gba_constants.inc" - .include "constants/species_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start sub_80B33D0 -sub_80B33D0: @ 80B33D0 - push {r4-r6,lr} - mov r6, r8 - push {r6} - adds r6, r0, 0 - adds r4, r1, 0 - mov r8, r2 - lsls r4, 22 - ldr r5, _080B3418 @ =gBGTilemapBuffers + 0x1800 - lsls r6, 17 - asrs r6, 16 - movs r0, 0x80 - lsls r0, 15 - adds r4, r0 - asrs r4, 16 - adds r0, r5, 0 - adds r1, r6, 0 - adds r2, r4, 0 - mov r3, r8 - bl BuyMenuDrawMapMetatileLayer - ldr r0, _080B341C @ =0xfffff800 - adds r5, r0 - movs r0, 0x8 - add r8, r0 - adds r0, r5, 0 - adds r1, r6, 0 - adds r2, r4, 0 - mov r3, r8 - bl BuyMenuDrawMapMetatileLayer - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080B3418: .4byte gBGTilemapBuffers + 0x1800 -_080B341C: .4byte 0xfffff800 - thumb_func_end sub_80B33D0 - - thumb_func_start sub_80B3420 -sub_80B3420: @ 80B3420 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - mov r4, sp - adds r4, 0x2 - mov r0, sp - adds r1, r4, 0 - bl GetXYCoordsOneStepInFrontOfPlayer - mov r1, sp - mov r0, sp - ldrh r0, [r0] - subs r0, 0x3 - strh r0, [r1] - ldrh r0, [r4] - subs r0, 0x3 - strh r0, [r4] - movs r1, 0 - ldr r0, _080B34A8 @ =0x000001ff - mov r10, r0 - ldr r2, _080B34AC @ =gMapHeader - mov r9, r2 -_080B3452: - movs r4, 0 - lsls r1, 16 - mov r8, r1 - asrs r7, r1, 16 -_080B345A: - mov r0, sp - movs r3, 0 - ldrsh r0, [r0, r3] - lsls r4, 16 - asrs r6, r4, 16 - adds r0, r6 - mov r2, sp - movs r3, 0x2 - ldrsh r1, [r2, r3] - adds r1, r7 - bl MapGridGetMetatileIdAt - lsls r0, 16 - lsrs r5, r0, 16 - cmp r7, 0x5 - beq _080B34D0 - cmp r6, 0x6 - beq _080B34D0 - mov r0, sp - movs r1, 0 - ldrsh r0, [r0, r1] - adds r0, r6 - mov r2, sp - movs r3, 0x2 - ldrsh r1, [r2, r3] - adds r1, r7 - bl MapGridGetMetatileLayerTypeAt - lsls r0, 24 - lsrs r3, r0, 24 - cmp r5, r10 - bhi _080B34B0 - mov r1, r9 - ldr r0, [r1] - ldr r0, [r0, 0x10] - lsls r1, r5, 4 - ldr r2, [r0, 0xC] - adds r2, r1 - b _080B34C0 - .align 2, 0 -_080B34A8: .4byte 0x000001ff -_080B34AC: .4byte gMapHeader -_080B34B0: - mov r2, r9 - ldr r0, [r2] - ldr r1, [r0, 0x14] - ldr r2, _080B34CC @ =0xfffffe00 - adds r0, r5, r2 - lsls r0, 4 - ldr r2, [r1, 0xC] - adds r2, r0 -_080B34C0: - adds r0, r6, 0 - adds r1, r7, 0 - bl BuyMenuDrawMapMetatile - b _080B3506 - .align 2, 0 -_080B34CC: .4byte 0xfffffe00 -_080B34D0: - cmp r5, r10 - bhi _080B34EC - asrs r0, r4, 16 - mov r3, r9 - ldr r1, [r3] - ldr r1, [r1, 0x10] - lsls r3, r5, 4 - ldr r2, [r1, 0xC] - adds r2, r3 - mov r3, r8 - asrs r1, r3, 16 - bl sub_80B33D0 - b _080B3506 -_080B34EC: - asrs r0, r4, 16 - mov r2, r9 - ldr r1, [r2] - ldr r2, [r1, 0x14] - ldr r3, _080B354C @ =0xfffffe00 - adds r1, r5, r3 - lsls r1, 4 - ldr r2, [r2, 0xC] - adds r2, r1 - mov r3, r8 - asrs r1, r3, 16 - bl sub_80B33D0 -_080B3506: - cmp r7, 0 - bne _080B3520 - asrs r1, r4, 16 - cmp r1, 0 - beq _080B3520 - cmp r1, 0x6 - beq _080B3520 - lsls r1, 17 - asrs r1, 16 - ldr r0, _080B3550 @ =gBGTilemapBuffers + 0x800 - movs r2, 0x40 - bl sub_80B32EC -_080B3520: - movs r1, 0x80 - lsls r1, 9 - adds r0, r4, r1 - lsrs r4, r0, 16 - asrs r0, 16 - cmp r0, 0x6 - ble _080B345A - adds r0, r1, 0 - add r0, r8 - lsrs r1, r0, 16 - asrs r0, 16 - cmp r0, 0x5 - ble _080B3452 - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080B354C: .4byte 0xfffffe00 -_080B3550: .4byte gBGTilemapBuffers + 0x800 - thumb_func_end sub_80B3420 - - thumb_func_start BuyMenuDrawMapGraphics -BuyMenuDrawMapGraphics: @ 80B3554 - push {lr} - bl sub_80F9020 - bl sub_80B356C - bl sub_80B368C - bl sub_80B3420 - pop {r0} - bx r0 - thumb_func_end BuyMenuDrawMapGraphics - - thumb_func_start sub_80B356C -sub_80B356C: @ 80B356C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - movs r0, 0 - mov r8, r0 - mov r4, sp - adds r4, 0x2 - mov r0, sp - adds r1, r4, 0 - bl GetXYCoordsOneStepInFrontOfPlayer - bl PlayerGetZCoord - lsls r0, 24 - lsrs r0, 24 - str r0, [sp, 0x4] - movs r5, 0 - ldr r2, _080B3674 @ =gUnknown_020386A4 - movs r1, 0x10 -_080B3598: - lsls r0, r5, 3 - adds r0, r2 - strh r1, [r0] - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0xF - bls _080B3598 - movs r5, 0 - ldr r7, _080B3678 @ =gUnknown_020386AA - subs r1, r7, 0x6 - mov r9, r1 -_080B35B0: - movs r4, 0 - adds r2, r5, 0x1 - mov r10, r2 -_080B35B6: - mov r1, sp - ldr r3, _080B367C @ =0x0000fffd - adds r0, r3, 0 - ldrh r1, [r1] - adds r0, r1 - adds r0, r4 - lsls r0, 16 - lsrs r0, 16 - ldr r2, _080B3680 @ =0x0000fffe - adds r1, r2, 0 - mov r3, sp - ldrh r3, [r3, 0x2] - adds r1, r3 - adds r1, r5 - lsls r1, 16 - lsrs r1, 16 - ldr r2, [sp, 0x4] - bl GetFieldObjectIdByXYZ - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x10 - beq _080B3650 - mov r0, r8 - lsls r3, r0, 3 - mov r1, r9 - adds r0, r3, r1 - movs r6, 0 - strh r2, [r0] - mov r0, r9 - adds r0, 0x2 - adds r0, r3, r0 - strh r4, [r0] - ldr r1, _080B3684 @ =gUnknown_020386A8 - adds r0, r3, r1 - strh r5, [r0] - ldr r1, _080B3688 @ =gMapObjects - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - adds r2, r0, r1 - ldrb r0, [r2, 0x18] - lsls r0, 28 - lsrs r0, 28 - cmp r0, 0x1 - bne _080B3616 - adds r0, r3, r7 - strh r6, [r0] -_080B3616: - ldrb r0, [r2, 0x18] - lsls r0, 28 - lsrs r0, 28 - cmp r0, 0x2 - bne _080B3626 - adds r1, r3, r7 - movs r0, 0x1 - strh r0, [r1] -_080B3626: - ldrb r0, [r2, 0x18] - lsls r0, 28 - lsrs r0, 28 - cmp r0, 0x3 - bne _080B3636 - adds r1, r3, r7 - movs r0, 0x2 - strh r0, [r1] -_080B3636: - ldrb r0, [r2, 0x18] - lsls r0, 28 - lsrs r0, 28 - cmp r0, 0x4 - bne _080B3646 - adds r1, r3, r7 - movs r0, 0x3 - strh r0, [r1] -_080B3646: - mov r0, r8 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 -_080B3650: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x6 - bls _080B35B6 - mov r2, r10 - lsls r0, r2, 24 - lsrs r5, r0, 24 - cmp r5, 0x4 - bls _080B35B0 - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080B3674: .4byte gUnknown_020386A4 -_080B3678: .4byte gUnknown_020386AA -_080B367C: .4byte 0x0000fffd -_080B3680: .4byte 0x0000fffe -_080B3684: .4byte gUnknown_020386A8 -_080B3688: .4byte gMapObjects - thumb_func_end sub_80B356C - - thumb_func_start sub_80B368C -sub_80B368C: @ 80B368C - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - movs r5, 0 - ldr r6, _080B3710 @ =gUnknown_020386A4 - adds r0, r6, 0x6 - mov r8, r0 - ldr r7, _080B3714 @ =gMapObjects -_080B369E: - lsls r4, r5, 3 - adds r1, r4, r6 - movs r2, 0 - ldrsh r0, [r1, r2] - cmp r0, 0x10 - beq _080B36F8 - adds r1, r0, 0 - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r7 - ldrb r0, [r0, 0x5] - adds r1, r6, 0x2 - adds r1, r4, r1 - ldrh r2, [r1] - lsls r2, 4 - adds r2, 0x8 - lsls r2, 16 - asrs r2, 16 - adds r1, r6, 0x4 - adds r1, r4, r1 - ldrh r3, [r1] - lsls r3, 20 - movs r1, 0x80 - lsls r1, 14 - adds r3, r1 - asrs r3, 16 - movs r1, 0x2 - str r1, [sp] - ldr r1, _080B3718 @ =SpriteCallbackDummy - bl AddPseudoFieldObject - lsls r0, 24 - lsrs r0, 24 - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - ldr r0, _080B371C @ =gSprites - adds r2, r0 - mov r1, r8 - adds r0, r4, r1 - ldrb r1, [r0] - adds r0, r2, 0 - bl StartSpriteAnim -_080B36F8: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0xF - bls _080B369E - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080B3710: .4byte gUnknown_020386A4 -_080B3714: .4byte gMapObjects -_080B3718: .4byte SpriteCallbackDummy -_080B371C: .4byte gSprites - thumb_func_end sub_80B368C - - thumb_func_start sub_80B3720 -sub_80B3720: @ 80B3720 - push {r4-r6,lr} - movs r1, 0 - ldr r6, _080B3754 @ =gBGTilemapBuffers + 0x800 - ldr r5, _080B3758 @ =0x000003ff - ldr r4, _080B375C @ =0x02018000 - ldr r0, _080B3760 @ =0x0000c3e0 - adds r3, r0, 0 -_080B372E: - lsls r0, r1, 16 - asrs r2, r0, 16 - lsls r1, r2, 1 - adds r0, r1, r4 - ldrh r0, [r0] - cmp r0, 0 - beq _080B3742 - adds r1, r6 - adds r0, r3 - strh r0, [r1] -_080B3742: - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - asrs r0, 16 - cmp r0, r5 - ble _080B372E - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080B3754: .4byte gBGTilemapBuffers + 0x800 -_080B3758: .4byte 0x000003ff -_080B375C: .4byte 0x02018000 -_080B3760: .4byte 0x0000c3e0 - thumb_func_end sub_80B3720 - - thumb_func_start sub_80B3764 -sub_80B3764: @ 80B3764 - push {r4,r5,lr} - sub sp, 0x8 - adds r4, r0, 0 - adds r5, r1, 0 - bl sub_80B3720 - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0 - bl sub_80B39D0 - ldr r0, _080B3798 @ =gUnknown_03000708 - ldrb r0, [r0, 0x9] - str r0, [sp] - movs r0, 0xF - str r0, [sp, 0x4] - movs r0, 0 - movs r1, 0xE - movs r2, 0x2 - movs r3, 0x8 - bl InitMenu - add sp, 0x8 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080B3798: .4byte gUnknown_03000708 - thumb_func_end sub_80B3764 - - thumb_func_start sub_80B379C -sub_80B379C: @ 80B379C - push {r4-r7,lr} - movs r1, 0 - ldr r0, _080B37E0 @ =gBGTilemapBuffers + 0x800 - mov r12, r0 - ldr r7, _080B37E4 @ =0x02018300 - ldr r0, _080B37E8 @ =0x0000c3e0 - adds r6, r0, 0 -_080B37AA: - movs r2, 0 - adds r0, r1, 0 - adds r0, 0xC - adds r5, r1, 0x1 - lsls r4, r0, 5 - lsls r3, r1, 5 -_080B37B6: - adds r1, r4, r2 - lsls r1, 1 - add r1, r12 - adds r0, r3, r2 - lsls r0, 1 - adds r0, r7 - ldrh r0, [r0] - adds r0, r6, r0 - strh r0, [r1] - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, 0xD - bls _080B37B6 - lsls r0, r5, 16 - lsrs r1, r0, 16 - cmp r1, 0x7 - bls _080B37AA - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080B37E0: .4byte gBGTilemapBuffers + 0x800 -_080B37E4: .4byte 0x02018300 -_080B37E8: .4byte 0x0000c3e0 - thumb_func_end sub_80B379C - - thumb_func_start sub_80B37EC -sub_80B37EC: @ 80B37EC - push {lr} - bl sub_80B3A70 - pop {r0} - bx r0 - thumb_func_end sub_80B37EC - - thumb_func_start sub_80B37F8 -sub_80B37F8: @ 80B37F8 - push {r4-r6,lr} - sub sp, 0x8 - adds r6, r0, 0 - lsls r6, 24 - lsrs r6, 24 - ldr r1, _080B3884 @ =gUnknown_03000708 - ldrb r0, [r1, 0xB] - ldrb r2, [r1, 0x9] - adds r0, r2 - ldr r1, [r1, 0x4] - lsls r0, 1 - adds r0, r1 - ldrh r0, [r0] - bl ItemId_GetPrice - adds r4, r0, 0 - movs r0, 0x1 - bl GetPriceReduction - lsls r4, 16 - lsrs r4, 16 - lsls r0, 24 - lsrs r0, 24 - asrs r4, r0 - ldr r0, _080B3888 @ =gTasks - lsls r5, r6, 2 - adds r5, r6 - lsls r5, 3 - adds r5, r0 - movs r1, 0xA - ldrsh r0, [r5, r1] - muls r0, r4 - movs r1, 0x6 - movs r2, 0x6 - movs r3, 0xB - bl sub_80B7A94 - ldr r0, _080B388C @ =gStringVar1 - movs r1, 0xFC - strb r1, [r0] - movs r1, 0x14 - strb r1, [r0, 0x1] - movs r1, 0x6 - strb r1, [r0, 0x2] - adds r0, 0x3 - movs r2, 0xA - ldrsh r1, [r5, r2] - movs r2, 0x1 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - ldr r0, _080B3890 @ =gOtherText_xString1 - movs r1, 0x1 - movs r2, 0xB - bl MenuPrint - ldr r0, _080B3894 @ =gBGTilemapBuffers + 0x800 - movs r1, 0x2 - str r1, [sp] - ldr r1, _080B3898 @ =0x0000c3e1 - str r1, [sp, 0x4] - movs r1, 0x1 - movs r2, 0xB - movs r3, 0xC - bl sub_80A3FA0 - add sp, 0x8 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080B3884: .4byte gUnknown_03000708 -_080B3888: .4byte gTasks -_080B388C: .4byte gStringVar1 -_080B3890: .4byte gOtherText_xString1 -_080B3894: .4byte gBGTilemapBuffers + 0x800 -_080B3898: .4byte 0x0000c3e1 - thumb_func_end sub_80B37F8 - - thumb_func_start sub_80B389C -sub_80B389C: @ 80B389C - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x4 - mov r8, r2 - lsls r0, 16 - lsrs r2, r0, 16 - mov r9, r2 - lsls r1, 24 - lsrs r4, r1, 24 - ldr r5, _080B392C @ =gStringVar1 - mov r0, r8 - cmp r0, 0 - beq _080B38C8 - movs r0, 0xFC - strb r0, [r5] - movs r0, 0x1 - strb r0, [r5, 0x1] - movs r0, 0x2 - strb r0, [r5, 0x2] - adds r5, 0x3 -_080B38C8: - adds r0, r2, 0 - adds r1, r5, 0 - bl CopyItemName - ldr r6, _080B392C @ =gStringVar1 - lsls r7, r4, 3 - movs r0, 0x1 - str r0, [sp] - adds r0, r6, 0 - movs r1, 0x70 - adds r2, r7, 0 - movs r3, 0x58 - bl sub_8072A18 - adds r5, r6, 0 - mov r0, r8 - cmp r0, 0 - beq _080B38EE - adds r5, r6, 0x3 -_080B38EE: - mov r0, r9 - bl ItemId_GetPrice - adds r4, r0, 0 - movs r0, 0x1 - bl GetPriceReduction - lsls r4, 16 - lsrs r4, 16 - lsls r0, 24 - lsrs r0, 24 - asrs r4, r0 - adds r0, r5, 0 - adds r1, r4, 0 - movs r2, 0x4 - bl sub_80B79F8 - adds r0, r6, 0 - movs r1, 0xCA - adds r2, r7, 0 - movs r3, 0x1 - bl MenuPrint_PixelCoords - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080B392C: .4byte gStringVar1 - thumb_func_end sub_80B389C - - thumb_func_start sub_80B3930 -sub_80B3930: @ 80B3930 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x4 - adds r4, r2, 0 - lsls r0, 16 - lsrs r3, r0, 16 - lsls r1, 24 - lsrs r1, 24 - mov r9, r1 - ldr r2, _080B39A0 @ =gStringVar1 - cmp r4, 0 - beq _080B395A - movs r0, 0xFC - strb r0, [r2] - movs r0, 0x1 - strb r0, [r2, 0x1] - movs r0, 0x2 - strb r0, [r2, 0x2] - adds r2, 0x3 -_080B395A: - lsls r6, r3, 5 - ldr r0, _080B39A4 @ =gDecorations + 0x1 - mov r8, r0 - adds r1, r6, r0 - adds r0, r2, 0 - bl StringCopy - ldr r5, _080B39A0 @ =gStringVar1 - mov r0, r9 - lsls r7, r0, 3 - movs r0, 0x1 - str r0, [sp] - adds r0, r5, 0 - movs r1, 0x70 - adds r2, r7, 0 - movs r3, 0x58 - bl sub_8072A18 - adds r2, r5, 0 - cmp r4, 0 - beq _080B3986 - adds r2, r5, 0x3 -_080B3986: - mov r0, r8 - subs r0, 0x1 - adds r3, r6, r0 - ldrh r1, [r3, 0x14] - ldr r0, _080B39A8 @ =0x00002710 - cmp r1, r0 - bne _080B39AC - movs r0, 0x19 - mov r1, r9 - adds r2, r4, 0 - bl sub_80B7B34 - b _080B39C2 - .align 2, 0 -_080B39A0: .4byte gStringVar1 -_080B39A4: .4byte gDecorations + 0x1 -_080B39A8: .4byte 0x00002710 -_080B39AC: - ldrh r1, [r3, 0x14] - adds r0, r2, 0 - movs r2, 0x4 - bl sub_80B79F8 - adds r0, r5, 0 - movs r1, 0xCA - adds r2, r7, 0 - movs r3, 0x1 - bl MenuPrint_PixelCoords -_080B39C2: - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80B3930 - - thumb_func_start sub_80B39D0 -sub_80B39D0: @ 80B39D0 - push {r4-r6,lr} - adds r6, r1, 0 - adds r5, r2, 0 - b _080B3A1A -_080B39D8: - ldrb r0, [r1, 0xC] - cmp r0, 0 - bne _080B39FC - ldrb r0, [r1, 0xB] - adds r0, r4 - ldr r1, [r1, 0x4] - lsls r0, 1 - adds r0, r1 - ldrh r0, [r0] - lsls r1, r4, 25 - movs r2, 0x80 - lsls r2, 18 - adds r1, r2 - lsrs r1, 24 - adds r2, r5, 0 - bl sub_80B389C - b _080B3A18 -_080B39FC: - ldrb r0, [r1, 0xB] - adds r0, r4 - ldr r1, [r1, 0x4] - lsls r0, 1 - adds r0, r1 - ldrh r0, [r0] - lsls r1, r4, 25 - movs r2, 0x80 - lsls r2, 18 - adds r1, r2 - lsrs r1, 24 - adds r2, r5, 0 - bl sub_80B3930 -_080B3A18: - adds r0, r4, 0x1 -_080B3A1A: - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, r6 - bgt _080B3A2E - ldr r1, _080B3A68 @ =gUnknown_03000708 - ldrb r0, [r1, 0xB] - adds r0, r4 - ldrb r2, [r1, 0x8] - cmp r0, r2 - blt _080B39D8 -_080B3A2E: - cmp r4, 0x8 - beq _080B3A60 - ldr r1, _080B3A68 @ =gUnknown_03000708 - ldrb r0, [r1, 0xB] - adds r0, r4 - ldrb r1, [r1, 0x8] - cmp r0, r1 - bne _080B3A60 - lsls r3, r4, 1 - adds r4, r3, 0x2 - lsls r4, 24 - lsrs r4, 24 - adds r3, 0x3 - lsls r3, 24 - lsrs r3, 24 - movs r0, 0xE - adds r1, r4, 0 - movs r2, 0x1C - bl MenuFillWindowRectWithBlankTile - ldr r0, _080B3A6C @ =gOtherText_CancelNoTerminator - movs r1, 0xE - adds r2, r4, 0 - bl MenuPrint -_080B3A60: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080B3A68: .4byte gUnknown_03000708 -_080B3A6C: .4byte gOtherText_CancelNoTerminator - thumb_func_end sub_80B39D0 - - thumb_func_start sub_80B3A70 -sub_80B3A70: @ 80B3A70 - push {r4,lr} - sub sp, 0x8 - ldr r2, _080B3A9C @ =gUnknown_03000708 - ldrb r1, [r2, 0xB] - ldrb r0, [r2, 0x9] - adds r0, r1, r0 - ldrb r1, [r2, 0x8] - cmp r0, r1 - beq _080B3ACC - ldrb r4, [r2, 0xC] - cmp r4, 0 - bne _080B3AA0 - ldr r1, [r2, 0x4] - lsls r0, 1 - adds r0, r1 - ldrh r0, [r0] - bl ItemId_GetDescription - movs r1, 0x30 - str r1, [sp] - str r4, [sp, 0x4] - b _080B3ABA - .align 2, 0 -_080B3A9C: .4byte gUnknown_03000708 -_080B3AA0: - ldr r1, _080B3AC8 @ =gDecorations - ldr r2, [r2, 0x4] - lsls r0, 1 - adds r0, r2 - ldrh r0, [r0] - lsls r0, 5 - adds r1, 0x18 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x30 - str r1, [sp] - movs r1, 0 - str r1, [sp, 0x4] -_080B3ABA: - movs r1, 0x4 - movs r2, 0x68 - movs r3, 0x68 - bl sub_8072AB0 - b _080B3AE0 - .align 2, 0 -_080B3AC8: .4byte gDecorations -_080B3ACC: - ldr r0, _080B3AE8 @ =gOtherText_QuitShopping - movs r1, 0x30 - str r1, [sp] - movs r1, 0 - str r1, [sp, 0x4] - movs r1, 0x4 - movs r2, 0x68 - movs r3, 0x68 - bl sub_8072AB0 -_080B3AE0: - add sp, 0x8 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080B3AE8: .4byte gOtherText_QuitShopping - thumb_func_end sub_80B3A70 - - thumb_func_start sub_80B3AEC -sub_80B3AEC: @ 80B3AEC - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, _080B3B5C @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _080B3B06 - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080B3B7A -_080B3B06: - ldr r4, _080B3B60 @ =gUnknown_03000708 - ldrb r1, [r4, 0x9] - adds r0, r1, 0 - movs r2, 0 - bl sub_80B39D0 - movs r0, 0x5 - bl PlaySE - ldrb r0, [r4, 0xB] - ldrb r1, [r4, 0x9] - adds r0, r1 - ldr r1, [r4, 0x4] - lsls r0, 1 - adds r0, r1 - ldrh r0, [r0] - cmp r0, 0x4 - bne _080B3B74 - ldr r0, _080B3B64 @ =gTasks - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r1, r0 - movs r2, 0xA - ldrsh r0, [r1, r2] - cmp r0, 0x9 - ble _080B3B74 - movs r0, 0xC - movs r1, 0x1 - bl AddBagItem - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080B3B74 - ldr r1, _080B3B68 @ =gOtherText_FreePremierBall - ldr r2, _080B3B6C @ =sub_80B4378 - ldr r3, _080B3B70 @ =0x0000c3e1 - adds r0, r5, 0 - bl DisplayItemMessageOnField - b _080B3B7A - .align 2, 0 -_080B3B5C: .4byte gMain -_080B3B60: .4byte gUnknown_03000708 -_080B3B64: .4byte gTasks -_080B3B68: .4byte gOtherText_FreePremierBall -_080B3B6C: .4byte sub_80B4378 -_080B3B70: .4byte 0x0000c3e1 -_080B3B74: - adds r0, r5, 0 - bl sub_80B4378 -_080B3B7A: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80B3AEC - - thumb_func_start sub_80B3B80 -sub_80B3B80: @ 80B3B80 - push {r4,r5,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x26 - bl IncrementGameStat - ldr r5, _080B3BC0 @ =gSaveBlock1 + 0x490 - ldr r0, _080B3BC4 @ =gUnknown_020386A0 - ldr r1, [r0] - adds r0, r5, 0 - bl sub_80B79E0 - movs r0, 0x5F - bl PlaySE - ldr r0, [r5] - movs r1, 0 - movs r2, 0 - bl sub_80B7BEC - ldr r1, _080B3BC8 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _080B3BCC @ =sub_80B3AEC - str r1, [r0] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080B3BC0: .4byte gSaveBlock1 + 0x490 -_080B3BC4: .4byte gUnknown_020386A0 -_080B3BC8: .4byte gTasks -_080B3BCC: .4byte sub_80B3AEC - thumb_func_end sub_80B3B80 - - thumb_func_start sub_80B3BD0 -sub_80B3BD0: @ 80B3BD0 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _080B3BF0 @ =gUnknown_03000708 - ldrb r1, [r0, 0x9] - adds r0, r1, 0 - movs r2, 0 - bl sub_80B39D0 - adds r0, r4, 0 - bl sub_80B4378 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080B3BF0: .4byte gUnknown_03000708 - thumb_func_end sub_80B3BD0 - - thumb_func_start sub_80B3BF4 -sub_80B3BF4: @ 80B3BF4 - push {r4,r5,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r5, r0, 24 - movs r0, 0x7 - movs r1, 0x8 - movs r2, 0xD - movs r3, 0xD - bl MenuZeroFillWindowRect - ldr r0, _080B3C7C @ =gBGTilemapBuffers + 0x800 - movs r1, 0x4 - str r1, [sp] - movs r1, 0 - str r1, [sp, 0x4] - movs r1, 0x8 - movs r2, 0x9 - movs r3, 0x4 - bl sub_80A3FA0 - bl sub_80B379C - bl sub_80B3420 - ldr r0, _080B3C80 @ =gSaveBlock1 - movs r1, 0x92 - lsls r1, 3 - adds r0, r1 - ldr r0, [r0] - ldr r1, _080B3C84 @ =gUnknown_020386A0 - ldr r1, [r1] - bl IsEnoughMoney - lsls r0, 24 - cmp r0, 0 - beq _080B3D18 - ldr r4, _080B3C88 @ =gUnknown_03000708 - ldrb r0, [r4, 0xC] - cmp r0, 0 - bne _080B3CAC - ldrb r0, [r4, 0xB] - ldrb r1, [r4, 0x9] - adds r0, r1 - ldr r1, [r4, 0x4] - lsls r0, 1 - adds r0, r1 - ldrh r0, [r0] - ldr r2, _080B3C8C @ =gTasks - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r1, r2 - ldrh r1, [r1, 0xA] - bl AddBagItem - lsls r0, 24 - cmp r0, 0 - beq _080B3C9C - ldr r1, _080B3C90 @ =gOtherText_HereYouGo - ldr r2, _080B3C94 @ =sub_80B3B80 - ldr r3, _080B3C98 @ =0x0000c3e1 - adds r0, r5, 0 - bl DisplayItemMessageOnField - adds r0, r5, 0 - bl sub_80B4470 - b _080B3D24 - .align 2, 0 -_080B3C7C: .4byte gBGTilemapBuffers + 0x800 -_080B3C80: .4byte gSaveBlock1 -_080B3C84: .4byte gUnknown_020386A0 -_080B3C88: .4byte gUnknown_03000708 -_080B3C8C: .4byte gTasks -_080B3C90: .4byte gOtherText_HereYouGo -_080B3C94: .4byte sub_80B3B80 -_080B3C98: .4byte 0x0000c3e1 -_080B3C9C: - ldr r1, _080B3CA4 @ =gOtherText_NoRoomFor - ldr r2, _080B3CA8 @ =sub_80B3BD0 - b _080B3CD8 - .align 2, 0 -_080B3CA4: .4byte gOtherText_NoRoomFor -_080B3CA8: .4byte sub_80B3BD0 -_080B3CAC: - ldrb r0, [r4, 0xB] - ldrb r1, [r4, 0x9] - adds r0, r1 - ldr r1, [r4, 0x4] - lsls r0, 1 - adds r0, r1 - ldrb r0, [r0] - bl IsThereStorageSpaceForDecoration - lsls r0, 24 - cmp r0, 0 - beq _080B3CF0 - ldrb r0, [r4, 0xC] - cmp r0, 0x1 - bne _080B3CD4 - ldr r1, _080B3CD0 @ =gOtherText_HereYouGo2 - b _080B3CD6 - .align 2, 0 -_080B3CD0: .4byte gOtherText_HereYouGo2 -_080B3CD4: - ldr r1, _080B3CE4 @ =gOtherText_HereYouGo3 -_080B3CD6: - ldr r2, _080B3CE8 @ =sub_80B3B80 -_080B3CD8: - ldr r3, _080B3CEC @ =0x0000c3e1 - adds r0, r5, 0 - bl DisplayItemMessageOnField - b _080B3D24 - .align 2, 0 -_080B3CE4: .4byte gOtherText_HereYouGo3 -_080B3CE8: .4byte sub_80B3B80 -_080B3CEC: .4byte 0x0000c3e1 -_080B3CF0: - ldr r4, _080B3D08 @ =gStringVar4 - ldr r1, _080B3D0C @ =gOtherText_SpaceForIsFull - adds r0, r4, 0 - bl StringExpandPlaceholders - ldr r2, _080B3D10 @ =sub_80B3BD0 - ldr r3, _080B3D14 @ =0x0000c3e1 - adds r0, r5, 0 - adds r1, r4, 0 - bl DisplayItemMessageOnField - b _080B3D24 - .align 2, 0 -_080B3D08: .4byte gStringVar4 -_080B3D0C: .4byte gOtherText_SpaceForIsFull -_080B3D10: .4byte sub_80B3BD0 -_080B3D14: .4byte 0x0000c3e1 -_080B3D18: - ldr r1, _080B3D2C @ =gOtherText_NotEnoughMoney - ldr r2, _080B3D30 @ =sub_80B3BD0 - ldr r3, _080B3D34 @ =0x0000c3e1 - adds r0, r5, 0 - bl DisplayItemMessageOnField -_080B3D24: - add sp, 0x8 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080B3D2C: .4byte gOtherText_NotEnoughMoney -_080B3D30: .4byte sub_80B3BD0 -_080B3D34: .4byte 0x0000c3e1 - thumb_func_end sub_80B3BF4 - - thumb_func_start sub_80B3D38 -sub_80B3D38: @ 80B3D38 - push {r4,lr} - sub sp, 0x8 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x7 - movs r1, 0x8 - movs r2, 0x1 - bl DisplayYesNoMenu - ldr r0, _080B3D70 @ =gBGTilemapBuffers + 0x800 - movs r1, 0x4 - str r1, [sp] - ldr r1, _080B3D74 @ =0x0000c3e1 - str r1, [sp, 0x4] - movs r1, 0x8 - movs r2, 0x9 - movs r3, 0x4 - bl sub_80A3FA0 - ldr r1, _080B3D78 @ =gUnknown_083CC708 - adds r0, r4, 0 - bl DoYesNoFuncWithChoice - add sp, 0x8 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080B3D70: .4byte gBGTilemapBuffers + 0x800 -_080B3D74: .4byte 0x0000c3e1 -_080B3D78: .4byte gUnknown_083CC708 - thumb_func_end sub_80B3D38 - - thumb_func_start sub_80B3D7C -sub_80B3D7C: @ 80B3D7C - push {r4,lr} - sub sp, 0x8 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _080B3DC0 @ =gUnknown_03000708 - ldrb r1, [r0, 0x9] - adds r0, r1, 0 - movs r2, 0 - bl sub_80B39D0 - movs r0, 0x7 - movs r1, 0x8 - movs r2, 0xD - movs r3, 0xD - bl MenuZeroFillWindowRect - ldr r0, _080B3DC4 @ =gBGTilemapBuffers + 0x800 - movs r1, 0x4 - str r1, [sp] - movs r1, 0 - str r1, [sp, 0x4] - movs r1, 0x8 - movs r2, 0x9 - movs r3, 0x4 - bl sub_80A3FA0 - adds r0, r4, 0 - bl sub_80B4378 - add sp, 0x8 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080B3DC0: .4byte gUnknown_03000708 -_080B3DC4: .4byte gBGTilemapBuffers + 0x800 - thumb_func_end sub_80B3D7C - - thumb_func_start sub_80B3DC8 -sub_80B3DC8: @ 80B3DC8 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x8 - lsls r0, 24 - lsrs r6, r0, 24 - adds r4, r6, 0 - ldr r7, _080B3EA8 @ =gUnknown_03000708 - ldrb r1, [r7, 0xD] - adds r0, r6, 0 - bl sub_80A52C4 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080B3DEE - adds r0, r6, 0 - bl sub_80B37F8 -_080B3DEE: - ldr r0, _080B3EAC @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080B3ED8 - ldr r0, _080B3EB0 @ =gUnknown_020386A0 - mov r8, r0 - ldrb r0, [r7, 0xB] - ldrb r1, [r7, 0x9] - adds r0, r1 - ldr r1, [r7, 0x4] - lsls r0, 1 - adds r0, r1 - ldrh r0, [r0] - bl ItemId_GetPrice - adds r4, r0, 0 - movs r0, 0x1 - bl GetPriceReduction - lsls r4, 16 - lsrs r4, 16 - lsls r0, 24 - lsrs r0, 24 - asrs r4, r0 - ldr r0, _080B3EB4 @ =gTasks - lsls r5, r6, 2 - adds r5, r6 - lsls r5, 3 - adds r5, r0 - movs r1, 0xA - ldrsh r0, [r5, r1] - muls r0, r4 - mov r2, r8 - str r0, [r2] - movs r0, 0 - movs r1, 0xA - movs r2, 0xD - movs r3, 0xD - bl MenuZeroFillWindowRect - ldr r0, _080B3EB8 @ =gBGTilemapBuffers + 0x800 - movs r1, 0x2 - str r1, [sp] - movs r1, 0 - str r1, [sp, 0x4] - movs r1, 0x1 - movs r2, 0xB - movs r3, 0xC - bl sub_80A3FA0 - bl sub_80B379C - bl sub_80B3420 - ldrb r0, [r7, 0xB] - ldrb r1, [r7, 0x9] - adds r0, r1 - ldr r1, [r7, 0x4] - lsls r0, 1 - adds r0, r1 - ldrh r0, [r0] - ldr r1, _080B3EBC @ =gStringVar1 - bl CopyItemName - ldr r0, _080B3EC0 @ =gStringVar2 - movs r2, 0xA - ldrsh r1, [r5, r2] - movs r2, 0 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - ldr r0, _080B3EC4 @ =gStringVar3 - mov r2, r8 - ldr r1, [r2] - movs r2, 0 - movs r3, 0x8 - bl ConvertIntToDecimalStringN - ldr r4, _080B3EC8 @ =gStringVar4 - ldr r1, _080B3ECC @ =gOtherText_ThatWillBe - adds r0, r4, 0 - bl StringExpandPlaceholders - ldr r2, _080B3ED0 @ =sub_80B3D38 - ldr r3, _080B3ED4 @ =0x0000c3e1 - adds r0, r6, 0 - adds r1, r4, 0 - bl DisplayItemMessageOnField - b _080B3EF0 - .align 2, 0 -_080B3EA8: .4byte gUnknown_03000708 -_080B3EAC: .4byte gMain -_080B3EB0: .4byte gUnknown_020386A0 -_080B3EB4: .4byte gTasks -_080B3EB8: .4byte gBGTilemapBuffers + 0x800 -_080B3EBC: .4byte gStringVar1 -_080B3EC0: .4byte gStringVar2 -_080B3EC4: .4byte gStringVar3 -_080B3EC8: .4byte gStringVar4 -_080B3ECC: .4byte gOtherText_ThatWillBe -_080B3ED0: .4byte sub_80B3D38 -_080B3ED4: .4byte 0x0000c3e1 -_080B3ED8: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080B3EF0 - ldrb r1, [r7, 0x9] - adds r0, r1, 0 - movs r2, 0 - bl sub_80B39D0 - adds r0, r4, 0 - bl sub_80B4378 -_080B3EF0: - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80B3DC8 - - thumb_func_start sub_80B3EFC -sub_80B3EFC: @ 80B3EFC - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _080B3F78 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - movs r1, 0x1 - strh r1, [r0, 0xA] - movs r0, 0 - movs r1, 0xA - movs r2, 0xD - movs r3, 0xD - bl MenuDrawTextWindow - adds r0, r5, 0 - bl sub_80B37F8 - ldr r6, _080B3F7C @ =gUnknown_03000708 - ldrb r0, [r6, 0xB] - ldrb r1, [r6, 0x9] - adds r0, r1 - ldr r1, [r6, 0x4] - lsls r0, 1 - adds r0, r1 - ldrh r0, [r0] - bl ItemId_GetPrice - adds r4, r0, 0 - movs r0, 0x1 - bl GetPriceReduction - ldr r1, _080B3F80 @ =gSaveBlock1 - movs r2, 0x92 - lsls r2, 3 - adds r1, r2 - lsls r4, 16 - lsrs r4, 16 - lsls r0, 24 - lsrs r0, 24 - asrs r4, r0 - ldr r0, [r1] - adds r1, r4, 0 - bl __udivsi3 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x63 - bls _080B3F62 - movs r0, 0x63 -_080B3F62: - strb r0, [r6, 0xD] - ldr r0, _080B3F78 @ =gTasks - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r1, r0 - ldr r0, _080B3F84 @ =sub_80B3DC8 - str r0, [r1] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080B3F78: .4byte gTasks -_080B3F7C: .4byte gUnknown_03000708 -_080B3F80: .4byte gSaveBlock1 -_080B3F84: .4byte sub_80B3DC8 - thumb_func_end sub_80B3EFC - - thumb_func_start sub_80B3F88 -sub_80B3F88: @ 80B3F88 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - ldr r0, _080B4020 @ =gMenuWindow - mov r8, r0 - ldr r1, [r0, 0x28] - ldr r3, _080B4024 @ =0x000003de - adds r1, r3 - adds r2, r1, 0 - adds r2, 0x80 - ldr r7, [r0, 0x24] - mov r10, r7 - ldr r0, _080B4028 @ =0x000003ff - mov r9, r0 - movs r6, 0xD -_080B3FAC: - adds r3, r2, 0 - subs r3, 0x40 - str r3, [sp] - movs r7, 0x40 - negs r7, r7 - adds r7, r1 - mov r12, r7 - adds r3, r2, 0 - adds r4, r1, 0 - movs r5, 0xE -_080B3FC0: - ldrh r2, [r4] - mov r1, r9 - ands r1, r2 - mov r7, r8 - ldrh r0, [r7, 0x1A] - adds r0, 0x1 - cmp r1, r0 - ble _080B3FD4 - adds r0, r2, 0 - adds r0, 0x3C -_080B3FD4: - strh r0, [r3] - adds r3, 0x2 - adds r4, 0x2 - subs r5, 0x1 - cmp r5, 0 - bge _080B3FC0 - ldr r2, [sp] - mov r1, r12 - subs r6, 0x1 - cmp r6, 0 - bge _080B3FAC - ldr r1, _080B402C @ =0x00003a20 - add r1, r10 - movs r0, 0xF0 - lsls r0, 3 - adds r2, r1, r0 - ldr r3, _080B4030 @ =0x040000d4 - ldr r5, _080B4034 @ =0x800000f0 - ldr r4, _080B4038 @ =0xfffffc40 - movs r6, 0xD -_080B3FFC: - str r1, [r3] - str r2, [r3, 0x4] - str r5, [r3, 0x8] - ldr r0, [r3, 0x8] - adds r2, r4 - adds r1, r4 - subs r6, 0x1 - cmp r6, 0 - bge _080B3FFC - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080B4020: .4byte gMenuWindow -_080B4024: .4byte 0x000003de -_080B4028: .4byte 0x000003ff -_080B402C: .4byte 0x00003a20 -_080B4030: .4byte 0x040000d4 -_080B4034: .4byte 0x800000f0 -_080B4038: .4byte 0xfffffc40 - thumb_func_end sub_80B3F88 - - thumb_func_start sub_80B403C -sub_80B403C: @ 80B403C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - ldr r0, _080B40D8 @ =gMenuWindow - mov r8, r0 - ldr r2, [r0, 0x28] - adds r1, r2, 0 - adds r1, 0x9E - adds r2, r1, 0 - adds r1, 0x80 - ldr r3, [r0, 0x24] - mov r10, r3 - ldr r7, _080B40DC @ =0x000003ff - mov r9, r7 - movs r6, 0xD -_080B4060: - adds r0, r2, 0 - adds r0, 0x40 - str r0, [sp] - movs r3, 0x40 - adds r3, r1 - mov r12, r3 - adds r3, r2, 0 - adds r4, r1, 0 - movs r5, 0xE -_080B4072: - ldrh r2, [r4] - mov r1, r9 - ands r1, r2 - mov r7, r8 - ldrh r0, [r7, 0x1A] - adds r0, 0x1 - cmp r1, r0 - ble _080B4086 - adds r0, r2, 0 - subs r0, 0x3C -_080B4086: - strh r0, [r3] - adds r3, 0x2 - adds r4, 0x2 - subs r5, 0x1 - cmp r5, 0 - bge _080B4072 - ldr r2, [sp] - mov r1, r12 - subs r6, 0x1 - cmp r6, 0 - bge _080B4060 - movs r1, 0x96 - lsls r1, 4 - add r1, r10 - adds r2, r1, 0 - movs r0, 0xF0 - lsls r0, 3 - adds r1, r0 - ldr r3, _080B40E0 @ =0x040000d4 - ldr r5, _080B40E4 @ =0x800000f0 - movs r4, 0xF0 - lsls r4, 2 - movs r6, 0xD -_080B40B4: - str r1, [r3] - str r2, [r3, 0x4] - str r5, [r3, 0x8] - ldr r0, [r3, 0x8] - adds r2, r4 - adds r1, r4 - subs r6, 0x1 - cmp r6, 0 - bge _080B40B4 - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080B40D8: .4byte gMenuWindow -_080B40DC: .4byte 0x000003ff -_080B40E0: .4byte 0x040000d4 -_080B40E4: .4byte 0x800000f0 - thumb_func_end sub_80B403C - - thumb_func_start sub_80B40E8 -sub_80B40E8: @ 80B40E8 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r7, r0, 24 - mov r8, r7 - ldr r0, _080B4134 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _080B4102 - b _080B436C -_080B4102: - ldr r2, _080B4138 @ =gMain - ldrh r0, [r2, 0x30] - movs r1, 0xF0 - ands r1, r0 - cmp r1, 0x40 - bne _080B414C - ldr r4, _080B413C @ =gUnknown_03000708 - ldrb r0, [r4, 0x9] - cmp r0, 0 - bne _080B4140 - ldrb r0, [r4, 0xB] - cmp r0, 0 - bne _080B411E - b _080B436C -_080B411E: - movs r0, 0x5 - bl PlaySE - ldrb r0, [r4, 0xB] - subs r0, 0x1 - strb r0, [r4, 0xB] - bl sub_80B3F88 - movs r0, 0 - movs r1, 0 - b _080B417A - .align 2, 0 -_080B4134: .4byte gPaletteFade -_080B4138: .4byte gMain -_080B413C: .4byte gUnknown_03000708 -_080B4140: - movs r0, 0x5 - bl PlaySE - movs r0, 0x1 - negs r0, r0 - b _080B41A0 -_080B414C: - cmp r1, 0x80 - bne _080B41AC - ldr r4, _080B418C @ =gUnknown_03000708 - ldrb r0, [r4, 0x9] - cmp r0, 0x7 - bne _080B4190 - ldrb r0, [r4, 0xB] - ldrb r1, [r4, 0x9] - adds r0, r1 - ldrb r1, [r4, 0x8] - cmp r0, r1 - bne _080B4166 - b _080B436C -_080B4166: - movs r0, 0x5 - bl PlaySE - ldrb r0, [r4, 0xB] - adds r0, 0x1 - strb r0, [r4, 0xB] - bl sub_80B403C - movs r0, 0x7 - movs r1, 0x7 -_080B417A: - movs r2, 0 - bl sub_80B39D0 - bl sub_80B3A70 - bl sub_80B32A4 - b _080B436C - .align 2, 0 -_080B418C: .4byte gUnknown_03000708 -_080B4190: - ldrb r2, [r4, 0x8] - cmp r0, r2 - bne _080B4198 - b _080B436C -_080B4198: - movs r0, 0x5 - bl PlaySE - movs r0, 0x1 -_080B41A0: - bl MoveMenuCursor - strb r0, [r4, 0x9] - bl sub_80B3A70 - b _080B436C -_080B41AC: - ldrh r1, [r2, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _080B41B8 - b _080B4358 -_080B41B8: - movs r0, 0x5 - bl PlaySE - ldr r6, _080B426C @ =gUnknown_03000708 - ldrb r0, [r6, 0xB] - ldrb r1, [r6, 0x9] - adds r0, r1 - ldrb r1, [r6, 0x8] - cmp r0, r1 - bne _080B41CE - b _080B4350 -_080B41CE: - movs r0, 0 - bl PauseVerticalScrollIndicator - movs r0, 0x1 - bl PauseVerticalScrollIndicator - movs r0, 0x1 - movs r1, 0x1 - bl sub_80F979C - ldrb r1, [r6, 0x9] - adds r0, r1, 0 - movs r2, 0x1 - bl sub_80B39D0 - bl HandleDestroyMenuCursors - movs r0, 0 - movs r1, 0xC - movs r2, 0xD - movs r3, 0x13 - bl MenuZeroFillWindowRect - ldrb r0, [r6, 0xC] - cmp r0, 0 - bne _080B428C - ldr r5, _080B4270 @ =gUnknown_020386A0 - ldrb r0, [r6, 0xB] - ldrb r1, [r6, 0x9] - adds r0, r1 - ldr r1, [r6, 0x4] - lsls r0, 1 - adds r0, r1 - ldrh r0, [r0] - bl ItemId_GetPrice - adds r4, r0, 0 - movs r0, 0x1 - bl GetPriceReduction - lsls r4, 16 - lsrs r4, 16 - lsls r0, 24 - lsrs r0, 24 - asrs r4, r0 - str r4, [r5] - ldr r0, _080B4274 @ =gSaveBlock1 - movs r2, 0x92 - lsls r2, 3 - adds r0, r2 - ldr r0, [r0] - adds r1, r4, 0 - bl IsEnoughMoney - lsls r0, 24 - cmp r0, 0 - beq _080B42BA - ldrb r0, [r6, 0xB] - ldrb r1, [r6, 0x9] - adds r0, r1 - ldr r1, [r6, 0x4] - lsls r0, 1 - adds r0, r1 - ldrh r0, [r0] - ldr r1, _080B4278 @ =gStringVar1 - bl CopyItemName - ldr r4, _080B427C @ =gStringVar4 - ldr r1, _080B4280 @ =gOtherText_HowManyYouWant - adds r0, r4, 0 - bl StringExpandPlaceholders - ldr r2, _080B4284 @ =sub_80B3EFC - ldr r3, _080B4288 @ =0x0000c3e1 - adds r0, r7, 0 - adds r1, r4, 0 - bl DisplayItemMessageOnField - b _080B436C - .align 2, 0 -_080B426C: .4byte gUnknown_03000708 -_080B4270: .4byte gUnknown_020386A0 -_080B4274: .4byte gSaveBlock1 -_080B4278: .4byte gStringVar1 -_080B427C: .4byte gStringVar4 -_080B4280: .4byte gOtherText_HowManyYouWant -_080B4284: .4byte sub_80B3EFC -_080B4288: .4byte 0x0000c3e1 -_080B428C: - ldr r5, _080B42C8 @ =gUnknown_020386A0 - ldr r4, _080B42CC @ =gDecorations - ldrb r0, [r6, 0xB] - ldrb r1, [r6, 0x9] - adds r0, r1 - ldr r1, [r6, 0x4] - lsls r0, 1 - adds r0, r1 - ldrh r0, [r0] - lsls r0, 5 - adds r0, r4 - ldrh r1, [r0, 0x14] - str r1, [r5] - ldr r0, _080B42D0 @ =gSaveBlock1 - movs r2, 0x92 - lsls r2, 3 - adds r0, r2 - ldr r0, [r0] - bl IsEnoughMoney - lsls r0, 24 - cmp r0, 0 - bne _080B42E0 -_080B42BA: - ldr r1, _080B42D4 @ =gOtherText_NotEnoughMoney - ldr r2, _080B42D8 @ =sub_80B3BD0 - ldr r3, _080B42DC @ =0x0000c3e1 - adds r0, r7, 0 - bl DisplayItemMessageOnField - b _080B436C - .align 2, 0 -_080B42C8: .4byte gUnknown_020386A0 -_080B42CC: .4byte gDecorations -_080B42D0: .4byte gSaveBlock1 -_080B42D4: .4byte gOtherText_NotEnoughMoney -_080B42D8: .4byte sub_80B3BD0 -_080B42DC: .4byte 0x0000c3e1 -_080B42E0: - ldr r0, _080B4318 @ =gStringVar1 - ldrb r1, [r6, 0xB] - ldrb r2, [r6, 0x9] - adds r1, r2 - ldr r2, [r6, 0x4] - lsls r1, 1 - adds r1, r2 - ldrh r1, [r1] - lsls r1, 5 - adds r2, r4, 0x1 - adds r1, r2 - bl StringCopy - ldr r0, _080B431C @ =gStringVar2 - ldr r1, [r5] - movs r2, 0 - movs r3, 0x8 - bl ConvertIntToDecimalStringN - ldrb r0, [r6, 0xC] - cmp r0, 0x1 - bne _080B4328 - ldr r0, _080B4320 @ =gStringVar4 - ldr r1, _080B4324 @ =gOtherText_ThatWillBe2 - bl StringExpandPlaceholders - b _080B4330 - .align 2, 0 -_080B4318: .4byte gStringVar1 -_080B431C: .4byte gStringVar2 -_080B4320: .4byte gStringVar4 -_080B4324: .4byte gOtherText_ThatWillBe2 -_080B4328: - ldr r0, _080B4340 @ =gStringVar4 - ldr r1, _080B4344 @ =gOtherText_ThatWillBe3 - bl StringExpandPlaceholders -_080B4330: - ldr r1, _080B4340 @ =gStringVar4 - ldr r2, _080B4348 @ =sub_80B3D38 - ldr r3, _080B434C @ =0x0000c3e1 - mov r0, r8 - bl DisplayItemMessageOnField - b _080B436C - .align 2, 0 -_080B4340: .4byte gStringVar4 -_080B4344: .4byte gOtherText_ThatWillBe3 -_080B4348: .4byte sub_80B3D38 -_080B434C: .4byte 0x0000c3e1 -_080B4350: - adds r0, r7, 0 - bl sub_80B43F0 - b _080B436C -_080B4358: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080B436C - movs r0, 0x5 - bl PlaySE - mov r0, r8 - bl sub_80B43F0 -_080B436C: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80B40E8 - - thumb_func_start sub_80B4378 -sub_80B4378: @ 80B4378 - push {r4,lr} - sub sp, 0x8 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0 - movs r1, 0xE - movs r2, 0x1D - movs r3, 0x13 - bl MenuZeroFillWindowRect - movs r0, 0 - movs r1, 0xA - movs r2, 0xD - movs r3, 0xD - bl MenuZeroFillWindowRect - ldr r0, _080B43E4 @ =gBGTilemapBuffers + 0x800 - movs r1, 0x2 - str r1, [sp] - movs r1, 0 - str r1, [sp, 0x4] - movs r1, 0x1 - movs r2, 0xB - movs r3, 0xC - bl sub_80A3FA0 - bl sub_80B3420 - movs r0, 0x6 - movs r1, 0x7 - bl sub_80B3764 - bl sub_80B37EC - movs r0, 0 - bl StartVerticalScrollIndicators - movs r0, 0x1 - bl StartVerticalScrollIndicators - bl sub_80B32A4 - ldr r1, _080B43E8 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _080B43EC @ =sub_80B40E8 - str r1, [r0] - add sp, 0x8 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080B43E4: .4byte gBGTilemapBuffers + 0x800 -_080B43E8: .4byte gTasks -_080B43EC: .4byte sub_80B40E8 - thumb_func_end sub_80B4378 - - thumb_func_start sub_80B43F0 -sub_80B43F0: @ 80B43F0 - push {r4,lr} - sub sp, 0x4 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r1, _080B4428 @ =gFieldCallback - ldr r0, _080B442C @ =sub_80B3050 - str r0, [r1] - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r1, _080B4430 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _080B4434 @ =Task_ExitBuyMenu - str r1, [r0] - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080B4428: .4byte gFieldCallback -_080B442C: .4byte sub_80B3050 -_080B4430: .4byte gTasks -_080B4434: .4byte Task_ExitBuyMenu - thumb_func_end sub_80B43F0 - - thumb_func_start Task_ExitBuyMenu -Task_ExitBuyMenu: @ 80B4438 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _080B4468 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080B4462 - movs r0, 0 - movs r1, 0 - bl RemoveMoneyLabelObject - bl BuyMenuFreeMemory - ldr r0, _080B446C @ =c2_exit_to_overworld_2_switch - bl SetMainCallback2 - adds r0, r4, 0 - bl DestroyTask -_080B4462: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080B4468: .4byte gPaletteFade -_080B446C: .4byte c2_exit_to_overworld_2_switch - thumb_func_end Task_ExitBuyMenu - - thumb_func_start sub_80B4470 -sub_80B4470: @ 80B4470 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - lsls r0, 24 - lsrs r5, r0, 24 - movs r2, 0 - ldr r0, _080B44C8 @ =gUnknown_02038724 - mov r12, r0 - ldr r6, _080B44CC @ =gUnknown_03000708 - mov r8, r12 - adds r4, r6, 0 - ldr r1, _080B44D0 @ =gTasks - mov r9, r1 - lsls r0, r5, 2 - adds r0, r5 - lsls r7, r0, 3 -_080B4492: - lsls r0, r2, 2 - mov r1, r8 - adds r3, r0, r1 - ldrb r0, [r4, 0xB] - ldrb r1, [r4, 0x9] - adds r0, r1 - ldr r1, [r4, 0x4] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r3] - ldrh r0, [r0] - cmp r1, r0 - bne _080B44DC - ldrh r0, [r3, 0x2] - cmp r0, 0 - beq _080B44DC - adds r2, r0, 0 - mov r4, r9 - adds r1, r7, r4 - movs r4, 0xA - ldrsh r0, [r1, r4] - adds r0, r2, r0 - cmp r0, 0xFF - ble _080B44D4 - movs r0, 0xFF - strh r0, [r3, 0x2] - b _080B451E - .align 2, 0 -_080B44C8: .4byte gUnknown_02038724 -_080B44CC: .4byte gUnknown_03000708 -_080B44D0: .4byte gTasks -_080B44D4: - ldrh r0, [r1, 0xA] - adds r0, r2, r0 - strh r0, [r3, 0x2] - b _080B451E -_080B44DC: - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, 0x2 - bls _080B4492 - ldr r3, _080B452C @ =gUnknown_02038730 - ldrb r0, [r3] - cmp r0, 0x2 - bhi _080B451E - adds r2, r0, 0 - lsls r2, 2 - add r2, r12 - ldrb r0, [r6, 0xB] - ldrb r1, [r6, 0x9] - adds r0, r1 - ldr r1, [r6, 0x4] - lsls r0, 1 - adds r0, r1 - ldrh r0, [r0] - strh r0, [r2] - ldrb r1, [r3] - lsls r1, 2 - add r1, r12 - ldr r2, _080B4530 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r2 - ldrh r0, [r0, 0xA] - strh r0, [r1, 0x2] - ldrb r0, [r3] - adds r0, 0x1 - strb r0, [r3] -_080B451E: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080B452C: .4byte gUnknown_02038730 -_080B4530: .4byte gTasks - thumb_func_end sub_80B4470 - - thumb_func_start ClearItemPurchases -ClearItemPurchases: @ 80B4534 - push {lr} - ldr r0, _080B4548 @ =gUnknown_02038730 - movs r1, 0 - strb r1, [r0] - ldr r0, _080B454C @ =gUnknown_02038724 - movs r1, 0x3 - bl ClearItemSlots - pop {r0} - bx r0 - .align 2, 0 -_080B4548: .4byte gUnknown_02038730 -_080B454C: .4byte gUnknown_02038724 - thumb_func_end ClearItemPurchases - - thumb_func_start CreatePokemartMenu -CreatePokemartMenu: @ 80B4550 - push {r4,lr} - adds r4, r0, 0 - movs r0, 0 - bl CreateShopMenu - adds r0, r4, 0 - bl SetShopItemsForSale - bl ClearItemPurchases - ldr r0, _080B4570 @ =EnableBothScriptContexts - bl SetShopMenuCallback - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080B4570: .4byte EnableBothScriptContexts - thumb_func_end CreatePokemartMenu - - thumb_func_start CreateDecorationShop1Menu -CreateDecorationShop1Menu: @ 80B4574 - push {r4,lr} - adds r4, r0, 0 - movs r0, 0x1 - bl CreateShopMenu - adds r0, r4, 0 - bl SetShopItemsForSale - ldr r0, _080B4590 @ =EnableBothScriptContexts - bl SetShopMenuCallback - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080B4590: .4byte EnableBothScriptContexts - thumb_func_end CreateDecorationShop1Menu - - thumb_func_start CreateDecorationShop2Menu -CreateDecorationShop2Menu: @ 80B4594 - push {r4,lr} - adds r4, r0, 0 - movs r0, 0x2 - bl CreateShopMenu - adds r0, r4, 0 - bl SetShopItemsForSale - ldr r0, _080B45B0 @ =EnableBothScriptContexts - bl SetShopMenuCallback - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080B45B0: .4byte EnableBothScriptContexts - thumb_func_end CreateDecorationShop2Menu - - thumb_func_start sub_80B45B4 -sub_80B45B4: @ 80B45B4 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x10 - mov r9, r1 - lsls r0, 24 - lsrs r0, 24 - lsls r2, 16 - lsrs r2, 16 - mov r10, r2 - ldr r2, _080B4648 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - ldrh r0, [r1, 0x10] - subs r0, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - ldrh r0, [r1, 0x12] - subs r0, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 - ldrh r4, [r1, 0xA] - movs r2, 0xC - ldrsh r0, [r1, r2] - cmp r0, 0 - bne _080B4678 - movs r2, 0 - lsls r5, 16 - str r5, [sp, 0xC] - lsls r0, r3, 16 - lsls r1, r4, 16 - asrs r0, 16 - str r0, [sp] - asrs r1, 16 - str r1, [sp, 0x4] - lsls r0, r1, 1 - mov r1, r9 - adds r7, r0, r1 -_080B4608: - movs r4, 0 - lsls r2, 16 - mov r8, r2 - asrs r0, r2, 16 - ldr r2, [sp] - adds r6, r2, r0 -_080B4614: - ldr r0, [sp, 0xC] - asrs r1, r0, 16 - lsls r4, 16 - asrs r0, r4, 16 - adds r5, r1, r0 - adds r0, r5, 0 - adds r1, r6, 0 - bl MapGridGetMetatileIdAt - movs r2, 0 - ldrsh r1, [r7, r2] - lsls r0, 16 - asrs r0, 16 - cmp r1, r0 - bne _080B465C - ldr r0, [sp, 0x4] - cmp r0, 0x2 - beq _080B464C - ldrh r0, [r7, 0x2] - mov r2, r10 - orrs r2, r0 - adds r0, r5, 0 - adds r1, r6, 0 - bl MapGridSetMetatileIdAt - b _080B465C - .align 2, 0 -_080B4648: .4byte gTasks -_080B464C: - mov r1, r9 - ldrh r0, [r1] - mov r2, r10 - orrs r2, r0 - adds r0, r5, 0 - adds r1, r6, 0 - bl MapGridSetMetatileIdAt -_080B465C: - movs r2, 0x80 - lsls r2, 9 - adds r0, r4, r2 - lsrs r4, r0, 16 - asrs r0, 16 - cmp r0, 0x2 - ble _080B4614 - adds r0, r2, 0 - add r0, r8 - lsrs r2, r0, 16 - asrs r0, 16 - cmp r0, 0x2 - ble _080B4608 - b _080B4700 -_080B4678: - movs r2, 0 - lsls r5, 16 - str r5, [sp, 0xC] - lsls r0, r3, 16 - lsls r1, r4, 16 - asrs r0, 16 - str r0, [sp, 0x8] - asrs r7, r1, 16 -_080B4688: - movs r4, 0 - lsls r2, 16 - mov r8, r2 - asrs r0, r2, 16 - ldr r1, [sp, 0x8] - adds r6, r1, r0 -_080B4694: - ldr r2, [sp, 0xC] - asrs r1, r2, 16 - lsls r4, 16 - asrs r0, r4, 16 - adds r5, r1, r0 - adds r0, r5, 0 - adds r1, r6, 0 - bl MapGridGetMetatileIdAt - movs r1, 0x2 - subs r1, r7 - lsls r1, 1 - add r1, r9 - movs r2, 0 - ldrsh r1, [r1, r2] - lsls r0, 16 - asrs r0, 16 - cmp r1, r0 - bne _080B46E6 - cmp r7, 0x2 - beq _080B46D6 - movs r0, 0x1 - subs r0, r7 - lsls r0, 1 - add r0, r9 - ldrh r0, [r0] - mov r2, r10 - orrs r2, r0 - adds r0, r5, 0 - adds r1, r6, 0 - bl MapGridSetMetatileIdAt - b _080B46E6 -_080B46D6: - mov r1, r9 - ldrh r0, [r1, 0x4] - mov r2, r10 - orrs r2, r0 - adds r0, r5, 0 - adds r1, r6, 0 - bl MapGridSetMetatileIdAt -_080B46E6: - movs r2, 0x80 - lsls r2, 9 - adds r0, r4, r2 - lsrs r4, r0, 16 - asrs r0, 16 - cmp r0, 0x2 - ble _080B4694 - adds r0, r2, 0 - add r0, r8 - lsrs r2, r0, 16 - asrs r0, 16 - cmp r0, 0x2 - ble _080B4688 -_080B4700: - add sp, 0x10 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80B45B4 - - thumb_func_start sub_80B4710 -sub_80B4710: @ 80B4710 - push {r4,r5,lr} - lsls r0, 24 - lsrs r3, r0, 24 - lsls r0, r3, 2 - adds r0, r3 - lsls r0, 3 - ldr r1, _080B4738 @ =gTasks + 0x8 - adds r4, r0, r1 - movs r0, 0x1 - strh r0, [r4, 0x6] - movs r1, 0 - ldrsh r0, [r4, r1] - cmp r0, 0x6 - bhi _080B47AA - lsls r0, 2 - ldr r1, _080B473C @ =_080B4740 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080B4738: .4byte gTasks + 0x8 -_080B473C: .4byte _080B4740 - .align 2, 0 -_080B4740: - .4byte _080B475C - .4byte _080B4764 - .4byte _080B476C - .4byte _080B4774 - .4byte _080B477C - .4byte _080B4790 - .4byte _080B47A0 -_080B475C: - ldr r1, _080B4760 @ =gUnknown_083CC714 - b _080B4792 - .align 2, 0 -_080B4760: .4byte gUnknown_083CC714 -_080B4764: - ldr r1, _080B4768 @ =gUnknown_083CC71A - b _080B4792 - .align 2, 0 -_080B4768: .4byte gUnknown_083CC71A -_080B476C: - ldr r1, _080B4770 @ =gUnknown_083CC720 - b _080B477E - .align 2, 0 -_080B4770: .4byte gUnknown_083CC720 -_080B4774: - ldr r1, _080B4778 @ =gUnknown_083CC726 - b _080B4792 - .align 2, 0 -_080B4778: .4byte gUnknown_083CC726 -_080B477C: - ldr r1, _080B478C @ =gUnknown_083CC72C -_080B477E: - movs r2, 0xC0 - lsls r2, 4 - adds r0, r3, 0 - bl sub_80B45B4 - b _080B47AA - .align 2, 0 -_080B478C: .4byte gUnknown_083CC72C -_080B4790: - ldr r1, _080B479C @ =gUnknown_083CC732 -_080B4792: - adds r0, r3, 0 - movs r2, 0 - bl sub_80B45B4 - b _080B47AA - .align 2, 0 -_080B479C: .4byte gUnknown_083CC732 -_080B47A0: - ldr r1, _080B47D4 @ =gUnknown_083CC738 - adds r0, r3, 0 - movs r2, 0 - bl sub_80B45B4 -_080B47AA: - ldrh r0, [r4] - adds r0, 0x1 - movs r1, 0x7 - ands r0, r1 - strh r0, [r4] - adds r5, r0, 0 - cmp r5, 0 - bne _080B47CE - bl DrawWholeMapView - movs r1, 0x2 - ldrsh r0, [r4, r1] - adds r0, 0x1 - movs r1, 0x3 - bl __modsi3 - strh r0, [r4, 0x2] - strh r5, [r4, 0x6] -_080B47CE: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080B47D4: .4byte gUnknown_083CC738 - thumb_func_end sub_80B4710 - - thumb_func_start sub_80B47D8 -sub_80B47D8: @ 80B47D8 - push {r4-r7,lr} - adds r5, r0, 0 - lsls r5, 16 - lsrs r5, 16 - ldr r6, _080B481C @ =sub_80B4710 - adds r0, r6, 0 - movs r1, 0 - bl CreateTask - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - ldr r1, _080B4820 @ =gTasks + 0x8 - adds r7, r0, r1 - adds r0, r7, 0 - adds r0, 0x8 - adds r1, r7, 0 - adds r1, 0xA - bl PlayerGetDestCoords - movs r0, 0 - strh r0, [r7] - strh r0, [r7, 0x2] - strh r5, [r7, 0x4] - adds r0, r4, 0 - bl _call_via_r6 - adds r0, r4, 0 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_080B481C: .4byte sub_80B4710 -_080B4820: .4byte gTasks + 0x8 - thumb_func_end sub_80B47D8 - - thumb_func_start sub_80B4824 -sub_80B4824: @ 80B4824 - push {lr} - lsls r0, 24 - lsrs r0, 24 - bl sub_80B47D8 - ldr r1, _080B4838 @ =gUnknown_02038731 - strb r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_080B4838: .4byte gUnknown_02038731 - thumb_func_end sub_80B4824 - - thumb_func_start sub_80B483C -sub_80B483C: @ 80B483C - push {lr} - ldr r0, _080B484C @ =gUnknown_02038731 - ldrb r0, [r0] - bl DestroyTask - pop {r0} - bx r0 - .align 2, 0 -_080B484C: .4byte gUnknown_02038731 - thumb_func_end sub_80B483C - - thumb_func_start sub_80B4850 -sub_80B4850: @ 80B4850 - push {lr} - ldr r2, _080B4874 @ =gTasks - ldr r0, _080B4878 @ =gUnknown_02038731 - ldrb r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r1, r0, r2 - movs r2, 0xE - ldrsh r0, [r1, r2] - cmp r0, 0 - bne _080B487C - movs r2, 0xA - ldrsh r0, [r1, r2] - cmp r0, 0x2 - bne _080B487C - movs r0, 0 - b _080B487E - .align 2, 0 -_080B4874: .4byte gTasks -_080B4878: .4byte gUnknown_02038731 -_080B487C: - movs r0, 0x1 -_080B487E: - pop {r1} - bx r1 - thumb_func_end sub_80B4850 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/slot_machine.s b/asm/slot_machine.s index 46af5bc0f..bebe3633e 100644 --- a/asm/slot_machine.s +++ b/asm/slot_machine.s @@ -10098,13 +10098,13 @@ sub_81063C0: @ 81063C0 ldr r0, _081063F0 @ =gSlotMachineReelTimeLights_Gfx ldr r4, _081063F4 @ =0x02010000 adds r1, r4, 0 - bl sub_800D238 + bl LZDecompressWram ldr r0, _081063F8 @ =gUnknown_083EDE8C movs r1, 0xC8 lsls r1, 6 adds r4, r1 adds r1, r4, 0 - bl sub_800D238 + bl LZDecompressWram ldr r0, _081063FC @ =gUnknown_083EDC2C bl LoadSpriteSheets ldr r0, _08106400 @ =gSlotMachineSpritePalettes diff --git a/asm/trade.s b/asm/trade.s deleted file mode 100644 index 223f62474..000000000 --- a/asm/trade.s +++ /dev/null @@ -1,12050 +0,0 @@ - .include "constants/gba_constants.inc" - .include "constants/species_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - -.ifdef ENGLISH - .set sub_804A96C_alt, sub_804A96C -.endif - - thumb_func_start sub_8047CD8 -sub_8047CD8: @ 8047CD8 - push {lr} - ldr r0, _08047CE4 @ =sub_8047EC0 - bl SetMainCallback2 - pop {r0} - bx r0 - .align 2, 0 -_08047CE4: .4byte sub_8047EC0 - thumb_func_end sub_8047CD8 - - thumb_func_start sub_8047CE8 -sub_8047CE8: @ 8047CE8 - push {r4-r6,lr} - ldr r6, _08047D44 @ =gWindowConfig_81E725C - ldr r5, _08047D48 @ =gUnknown_020296CC - ldr r1, [r5] - ldr r2, _08047D4C @ =gSaveBlock2 - adds r0, r6, 0 - movs r3, 0xC - bl sub_804AFB8 - bl GetMultiplayerId - lsls r0, 24 - ldr r1, [r5, 0xC] - movs r3, 0x80 - lsls r3, 17 - eors r3, r0 - lsrs r3, 24 - lsls r2, r3, 3 - subs r2, r3 - lsls r2, 2 - ldr r0, _08047D50 @ =gLinkPlayers + 0x8 - adds r2, r0 - adds r0, r6, 0 - movs r3, 0xC - bl sub_804AFB8 - ldr r1, [r5, 0x18] - ldr r4, _08047D54 @ =gUnknown_0820C14C - ldr r2, [r4] - adds r0, r6, 0 - movs r3, 0x8 - bl sub_804AFB8 - ldr r0, [r4, 0x4] - ldr r1, [r5, 0x20] - movs r2, 0x14 - bl sub_804ACD8 - movs r0, 0x3 - movs r1, 0 - bl nullsub_5 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08047D44: .4byte gWindowConfig_81E725C -_08047D48: .4byte gUnknown_020296CC -_08047D4C: .4byte gSaveBlock2 -_08047D50: .4byte gLinkPlayers + 0x8 -_08047D54: .4byte gUnknown_0820C14C - thumb_func_end sub_8047CE8 - - thumb_func_start sub_8047D58 -sub_8047D58: @ 8047D58 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x18 - ldr r0, _08047E30 @ =gSaveBlock2 - bl StringLength - lsls r0, 16 - lsrs r0, 16 - movs r1, 0 - cmp r0, 0x5 - bls _08047D72 - movs r1, 0x1 -_08047D72: - movs r5, 0 - lsls r2, r1, 2 - mov r6, sp - ldr r0, _08047E34 @ =gTradeUnknownSpriteCoords - adds r1, r0, 0x1 - adds r1, r2 - mov r8, r1 - adds r0, r2, r0 - ldrb r0, [r0] - lsls r4, r0, 16 -_08047D86: - mov r1, sp - ldr r0, _08047E38 @ =gSpriteTemplate_820C0EC - ldm r0!, {r2,r3,r7} - stm r1!, {r2,r3,r7} - ldm r0!, {r2,r3,r7} - stm r1!, {r2,r3,r7} - ldrh r0, [r6] - adds r0, r5 - strh r0, [r6] - asrs r1, r4, 16 - mov r0, sp - mov r3, r8 - ldrb r2, [r3] - movs r3, 0x1 - bl CreateSprite - movs r7, 0x80 - lsls r7, 14 - adds r4, r7 - adds r5, 0x1 - cmp r5, 0x2 - ble _08047D86 - bl GetMultiplayerId - lsls r0, 24 - movs r1, 0x80 - lsls r1, 17 - eors r1, r0 - lsrs r1, 24 - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - ldr r1, _08047E3C @ =gLinkPlayers + 0x8 - adds r0, r1 - bl StringLength - lsls r0, 16 - lsrs r0, 16 - movs r1, 0 - cmp r0, 0x5 - bls _08047DDA - movs r1, 0x1 -_08047DDA: - movs r5, 0 - lsls r2, r1, 2 - mov r6, sp - ldr r0, _08047E40 @ =gTradeUnknownSpriteCoords + 0x3 - adds r1, r2, r0 - mov r8, r1 - subs r0, 0x1 - adds r0, r2, r0 - ldrb r0, [r0] - lsls r4, r0, 16 -_08047DEE: - mov r1, sp - ldr r0, _08047E38 @ =gSpriteTemplate_820C0EC - ldm r0!, {r2,r3,r7} - stm r1!, {r2,r3,r7} - ldm r0!, {r2,r3,r7} - stm r1!, {r2,r3,r7} - adds r0, r5, 0x3 - ldrh r1, [r6] - adds r0, r1 - strh r0, [r6] - asrs r1, r4, 16 - mov r0, sp - mov r3, r8 - ldrb r2, [r3] - movs r3, 0x1 - bl CreateSprite - movs r7, 0x80 - lsls r7, 14 - adds r4, r7 - adds r5, 0x1 - cmp r5, 0x2 - ble _08047DEE - movs r0, 0x5 - movs r1, 0 - bl nullsub_5 - add sp, 0x18 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08047E30: .4byte gSaveBlock2 -_08047E34: .4byte gTradeUnknownSpriteCoords -_08047E38: .4byte gSpriteTemplate_820C0EC -_08047E3C: .4byte gLinkPlayers + 0x8 -_08047E40: .4byte gTradeUnknownSpriteCoords + 0x3 - thumb_func_end sub_8047D58 - - thumb_func_start sub_8047E44 -sub_8047E44: @ 8047E44 - push {r4-r7,lr} - sub sp, 0x18 - movs r4, 0 - mov r5, sp - movs r6, 0xD6 - lsls r6, 16 -_08047E50: - mov r1, sp - ldr r0, _08047EBC @ =gSpriteTemplate_820C0EC - ldm r0!, {r2,r3,r7} - stm r1!, {r2,r3,r7} - ldm r0!, {r2,r3,r7} - stm r1!, {r2,r3,r7} - adds r0, r4, 0x6 - ldrh r1, [r5] - adds r0, r1 - strh r0, [r5] - asrs r1, r6, 16 - mov r0, sp - movs r2, 0x98 - movs r3, 0x1 - bl CreateSprite - movs r2, 0x80 - lsls r2, 14 - adds r6, r2 - adds r4, 0x1 - cmp r4, 0x1 - ble _08047E50 - movs r4, 0 - mov r5, sp - movs r6, 0xC0 - lsls r6, 13 -_08047E84: - mov r1, sp - ldr r0, _08047EBC @ =gSpriteTemplate_820C0EC - ldm r0!, {r2,r3,r7} - stm r1!, {r2,r3,r7} - ldm r0!, {r2,r3,r7} - stm r1!, {r2,r3,r7} - adds r0, r4, 0 - adds r0, 0x8 - ldrh r3, [r5] - adds r0, r3 - strh r0, [r5] - asrs r1, r6, 16 - mov r0, sp - movs r2, 0x96 - movs r3, 0x1 - bl CreateSprite - movs r7, 0x80 - lsls r7, 14 - adds r6, r7 - adds r4, 0x1 - cmp r4, 0x4 - ble _08047E84 - add sp, 0x18 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08047EBC: .4byte gSpriteTemplate_820C0EC - thumb_func_end sub_8047E44 - - thumb_func_start sub_8047EC0 -sub_8047EC0: @ 8047EC0 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x14 - ldr r1, _08047EE4 @ =gMain - ldr r2, _08047EE8 @ =0x0000043c - adds r0, r1, r2 - ldrb r0, [r0] - adds r3, r1, 0 - cmp r0, 0x15 - bls _08047ED8 - b _080484C6 -_08047ED8: - lsls r0, 2 - ldr r1, _08047EEC @ =_08047EF0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08047EE4: .4byte gMain -_08047EE8: .4byte 0x0000043c -_08047EEC: .4byte _08047EF0 - .align 2, 0 -_08047EF0: - .4byte _08047F48 - .4byte _08048048 - .4byte _080480B4 - .4byte _080480E0 - .4byte _08048130 - .4byte _08048160 - .4byte _08048172 - .4byte _080482B4 - .4byte _080482DC - .4byte _08048300 - .4byte _08048328 - .4byte _0804834C - .4byte _08048360 - .4byte _080483B8 - .4byte _08048400 - .4byte _08048418 - .4byte _08048430 - .4byte _08048448 - .4byte _0804845A - .4byte _08048470 - .4byte _08048488 - .4byte _080484A8 -_08047F48: - ldr r5, _08048018 @ =gUnknown_03004824 - ldr r6, _0804801C @ =0x02017000 - str r6, [r5] - bl sub_804AA88 - bl ResetSpriteData - bl FreeAllSpritePalettes - bl ResetTasks - ldr r0, [r5] - adds r0, 0xC8 - ldr r1, _08048020 @ =0x06002800 - bl sub_804A964 - ldr r0, _08048024 @ =sub_80489F4 - bl SetVBlankCallback - ldr r0, _08048028 @ =gWindowConfig_81E6CE4 - bl InitMenuWindow - ldr r4, _0804802C @ =gWindowConfig_81E6F84 - adds r0, r4, 0 - bl SetUpWindowConfig - ldr r0, [r5] - adds r0, 0x4 - adds r1, r4, 0 - bl InitWindowFromConfig - movs r0, 0x14 - bl SetTextWindowBaseTileNum - ldr r1, [r5] - adds r1, 0x7A - movs r4, 0 - strb r0, [r1] - ldr r0, [r5] - adds r0, 0x4 - bl LoadTextWindowGraphics - bl MenuZeroFillScreen - bl sub_809D51C - ldr r0, [r5] - adds r0, 0x75 - strb r4, [r0] - ldr r0, [r5] - adds r0, 0x7B - strb r4, [r0] - ldr r0, [r5] - adds r0, 0x7C - strb r4, [r0] - ldr r0, [r5] - adds r0, 0x80 - strb r4, [r0] - ldr r0, [r5] - adds r0, 0x81 - strb r4, [r0] - ldr r0, [r5] - adds r0, 0x86 - strb r4, [r0] - ldr r0, [r5] - adds r0, 0x87 - strb r4, [r0] - ldr r0, [r5] - adds r0, 0xB4 - strb r4, [r0] - ldr r0, _08048030 @ =gUnknown_03000508 - strb r4, [r0] - ldr r1, _08048034 @ =gMain - ldr r3, _08048038 @ =0x0000043c - adds r1, r3 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - movs r0, 0 - bl sub_804AA0C - add r0, sp, 0x10 - strh r4, [r0] - movs r0, 0xC0 - lsls r0, 7 - adds r1, r6, r0 - ldr r2, _0804803C @ =0x01000680 - add r0, sp, 0x10 - bl CpuSet - ldr r1, _08048040 @ =gUnknown_020296CC - movs r2, 0xD8 - lsls r2, 7 - adds r6, r2 - adds r0, r1, 0 - adds r0, 0x30 - ldr r2, _08048044 @ =0xffffff00 -_0804800A: - str r6, [r0] - adds r6, r2 - subs r0, 0x4 - cmp r0, r1 - bge _0804800A - b _080484C6 - .align 2, 0 -_08048018: .4byte gUnknown_03004824 -_0804801C: .4byte 0x02017000 -_08048020: .4byte 0x06002800 -_08048024: .4byte sub_80489F4 -_08048028: .4byte gWindowConfig_81E6CE4 -_0804802C: .4byte gWindowConfig_81E6F84 -_08048030: .4byte gUnknown_03000508 -_08048034: .4byte gMain -_08048038: .4byte 0x0000043c -_0804803C: .4byte 0x01000680 -_08048040: .4byte gUnknown_020296CC -_08048044: .4byte 0xffffff00 -_08048048: - ldr r1, _08048098 @ =gLinkType - ldr r3, _0804809C @ =0x00001122 - adds r0, r3, 0 - strh r0, [r1] - bl OpenLink - movs r6, 0 - movs r4, 0 -_08048058: - movs r0, 0x64 - muls r0, r6 - ldr r1, _080480A0 @ =gEnemyParty - adds r0, r1 - str r4, [sp] - str r4, [sp, 0x4] - str r4, [sp, 0x8] - str r4, [sp, 0xC] - movs r1, 0 - movs r2, 0 - movs r3, 0x20 - bl CreateMon - adds r6, 0x1 - cmp r6, 0x5 - ble _08048058 - ldr r1, _080480A4 @ =gMain - ldr r0, _080480A8 @ =0x0000043c - adds r1, r0 - ldrb r0, [r1] - adds r0, 0x1 - movs r2, 0 - strb r0, [r1] - ldr r0, _080480AC @ =gUnknown_03004824 - ldr r0, [r0] - adds r0, 0xB4 - strb r2, [r0] - ldr r0, _080480B0 @ =sub_8083C50 - movs r1, 0x1 - bl CreateTask - b _080484C6 - .align 2, 0 -_08048098: .4byte gLinkType -_0804809C: .4byte 0x00001122 -_080480A0: .4byte gEnemyParty -_080480A4: .4byte gMain -_080480A8: .4byte 0x0000043c -_080480AC: .4byte gUnknown_03004824 -_080480B0: .4byte sub_8083C50 -_080480B4: - ldr r2, _080480D8 @ =gUnknown_03004824 - ldr r1, [r2] - adds r1, 0xB4 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r0, [r2] - adds r1, r0, 0 - adds r1, 0xB4 - ldrb r0, [r1] - cmp r0, 0xB - bhi _080480CE - b _080484C6 -_080480CE: - movs r0, 0 - strb r0, [r1] - ldr r2, _080480DC @ =0x0000043c - adds r1, r3, r2 - b _08048498 - .align 2, 0 -_080480D8: .4byte gUnknown_03004824 -_080480DC: .4byte 0x0000043c -_080480E0: - bl GetLinkPlayerCount_2 - adds r4, r0, 0 - bl sub_800820C - lsls r4, 24 - lsls r0, 24 - cmp r4, r0 - bcs _080480F4 - b _080484C6 -_080480F4: - bl IsLinkMaster - lsls r0, 24 - cmp r0, 0 - beq _08048120 - ldr r0, _0804811C @ =gUnknown_03004824 - ldr r1, [r0] - adds r1, 0xB4 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1E - bhi _08048114 - b _080484C6 -_08048114: - bl sub_8007F4C - b _08048492 - .align 2, 0 -_0804811C: .4byte gUnknown_03004824 -_08048120: - ldr r1, _08048128 @ =gMain - ldr r0, _0804812C @ =0x0000043c - adds r1, r0 - b _08048498 - .align 2, 0 -_08048128: .4byte gMain -_0804812C: .4byte 0x0000043c -_08048130: - ldr r0, _08048154 @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0x1 - beq _0804813A - b _080484C6 -_0804813A: - bl IsLinkPlayerDataExchangeComplete - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _08048148 - b _080484C6 -_08048148: - bl CalculatePlayerPartyCount - ldr r1, _08048158 @ =gMain - ldr r2, _0804815C @ =0x0000043c - adds r1, r2 - b _08048498 - .align 2, 0 -_08048154: .4byte gReceivedRemoteLinkPlayers -_08048158: .4byte gMain -_0804815C: .4byte 0x0000043c -_08048160: - bl sub_8048D44 - lsls r0, 24 - cmp r0, 0 - bne _0804816C - b _080484C6 -_0804816C: - bl sub_804AF84 - b _08048492 -_08048172: - bl CalculateEnemyPartyCount - ldr r4, _08048294 @ =gUnknown_03004824 - ldr r0, [r4] - adds r0, 0x4 - movs r1, 0x1D - str r1, [sp] - movs r1, 0x13 - str r1, [sp, 0x4] - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl FillWindowRect_DefaultPalette - movs r1, 0x80 - lsls r1, 19 - movs r0, 0 - strh r0, [r1] - ldr r0, [r4] - ldr r1, _08048298 @ =gPlayerPartyCount - ldrb r1, [r1] - adds r0, 0x42 - strb r1, [r0] - ldr r0, [r4] - ldr r1, _0804829C @ =gEnemyPartyCount - ldrb r1, [r1] - adds r0, 0x43 - strb r1, [r0] - movs r6, 0 - ldr r0, [r4] - adds r0, 0x42 - ldrb r0, [r0] - cmp r6, r0 - bge _08048216 - mov r8, r4 - ldr r7, _080482A0 @ =gTradeMonSpriteCoords -_080481BA: - movs r0, 0x64 - adds r4, r6, 0 - muls r4, r0 - ldr r0, _080482A4 @ =gPlayerParty - adds r4, r0 - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - adds r5, r0, 0 - lsls r5, 16 - lsrs r5, 16 - adds r0, r4, 0 - movs r1, 0 - bl GetMonData - ldrb r2, [r7] - lsls r2, 19 - movs r1, 0xE0 - lsls r1, 12 - adds r2, r1 - asrs r2, 16 - ldrb r3, [r7, 0x1] - lsls r3, 19 - ldr r1, _080482A8 @ =0xfff40000 - adds r3, r1 - asrs r3, 16 - movs r1, 0x1 - str r1, [sp] - str r0, [sp, 0x4] - adds r0, r5, 0 - ldr r1, _080482AC @ =sub_809D62C - bl CreateMonIcon - mov r2, r8 - ldr r1, [r2] - adds r1, 0x34 - adds r1, r6 - strb r0, [r1] - adds r7, 0x2 - adds r6, 0x1 - ldr r0, [r2] - adds r0, 0x42 - ldrb r0, [r0] - cmp r6, r0 - blt _080481BA -_08048216: - movs r6, 0 - ldr r1, _08048294 @ =gUnknown_03004824 - ldr r0, [r1] - adds r0, 0x43 - ldrb r0, [r0] - cmp r6, r0 - bge _0804828A - ldr r0, _080482A0 @ =gTradeMonSpriteCoords - mov r8, r1 - adds r7, r0, 0 - adds r7, 0xC -_0804822C: - movs r0, 0x64 - adds r4, r6, 0 - muls r4, r0 - ldr r0, _080482B0 @ =gEnemyParty - adds r4, r0 - adds r0, r4, 0 - movs r1, 0x41 - movs r2, 0 - bl GetMonData - adds r5, r0, 0 - lsls r5, 16 - lsrs r5, 16 - adds r0, r4, 0 - movs r1, 0 - bl GetMonData - ldrb r2, [r7] - lsls r2, 19 - movs r3, 0xE0 - lsls r3, 12 - adds r2, r3 - asrs r2, 16 - ldrb r3, [r7, 0x1] - lsls r3, 19 - ldr r1, _080482A8 @ =0xfff40000 - adds r3, r1 - asrs r3, 16 - movs r1, 0x1 - str r1, [sp] - str r0, [sp, 0x4] - adds r0, r5, 0 - ldr r1, _080482AC @ =sub_809D62C - bl CreateMonIcon - mov r2, r8 - ldr r1, [r2] - adds r1, 0x3A - adds r1, r6 - strb r0, [r1] - adds r7, 0x2 - adds r6, 0x1 - ldr r0, [r2] - adds r0, 0x43 - ldrb r0, [r0] - cmp r6, r0 - blt _0804822C -_0804828A: - movs r0, 0x2 - movs r1, 0 - bl nullsub_5 - b _08048492 - .align 2, 0 -_08048294: .4byte gUnknown_03004824 -_08048298: .4byte gPlayerPartyCount -_0804829C: .4byte gEnemyPartyCount -_080482A0: .4byte gTradeMonSpriteCoords -_080482A4: .4byte gPlayerParty -_080482A8: .4byte 0xfff40000 -_080482AC: .4byte sub_809D62C -_080482B0: .4byte gEnemyParty -_080482B4: - bl LoadHeldItemIconGraphics - ldr r0, _080482D0 @ =gUnknown_03004824 - ldr r1, [r0] - adds r0, r1, 0 - adds r0, 0x42 - adds r1, 0x34 - movs r2, 0 - bl CreateHeldItemIcons - ldr r1, _080482D4 @ =gMain - ldr r0, _080482D8 @ =0x0000043c - adds r1, r0 - b _08048498 - .align 2, 0 -_080482D0: .4byte gUnknown_03004824 -_080482D4: .4byte gMain -_080482D8: .4byte 0x0000043c -_080482DC: - ldr r0, _080482F4 @ =gUnknown_03004824 - ldr r1, [r0] - adds r0, r1, 0 - adds r0, 0x42 - adds r1, 0x34 - movs r2, 0x1 - bl CreateHeldItemIcons - ldr r1, _080482F8 @ =gMain - ldr r2, _080482FC @ =0x0000043c - adds r1, r2 - b _08048498 - .align 2, 0 -_080482F4: .4byte gUnknown_03004824 -_080482F8: .4byte gMain -_080482FC: .4byte 0x0000043c -_08048300: - bl sub_8047CE8 - ldr r1, _0804831C @ =gMain - ldr r3, _08048320 @ =0x0000043c - adds r1, r3 - ldrb r0, [r1] - adds r0, 0x1 - movs r2, 0 - strb r0, [r1] - ldr r0, _08048324 @ =gUnknown_03004824 - ldr r0, [r0] - adds r0, 0xB4 - strb r2, [r0] - b _080484C6 - .align 2, 0 -_0804831C: .4byte gMain -_08048320: .4byte 0x0000043c -_08048324: .4byte gUnknown_03004824 -_08048328: - movs r0, 0x4 - movs r1, 0 - bl nullsub_5 - bl sub_804ABF8 - lsls r0, 24 - cmp r0, 0 - bne _0804833C - b _080484C6 -_0804833C: - ldr r1, _08048344 @ =gMain - ldr r0, _08048348 @ =0x0000043c - adds r1, r0 - b _08048498 - .align 2, 0 -_08048344: .4byte gMain -_08048348: .4byte 0x0000043c -_0804834C: - bl sub_8047D58 - ldr r1, _08048358 @ =gMain - ldr r2, _0804835C @ =0x0000043c - adds r1, r2 - b _08048498 - .align 2, 0 -_08048358: .4byte gMain -_0804835C: .4byte 0x0000043c -_08048360: - bl sub_8047E44 - ldr r0, _080483A4 @ =gSpriteTemplate_820C134 - ldr r2, _080483A8 @ =gTradeMonSpriteCoords - ldrb r1, [r2] - lsls r1, 19 - movs r3, 0x80 - lsls r3, 14 - adds r1, r3 - asrs r1, 16 - ldrb r2, [r2, 0x1] - lsls r2, 3 - movs r3, 0x2 - bl CreateSprite - ldr r2, _080483AC @ =gUnknown_03004824 - ldr r1, [r2] - adds r1, 0x40 - movs r3, 0 - strb r0, [r1] - ldr r0, [r2] - adds r0, 0x41 - strb r3, [r0] - ldr r1, _080483B0 @ =gMain - ldr r0, _080483B4 @ =0x0000043c - adds r1, r0 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - movs r0, 0x6 - movs r1, 0 - bl nullsub_5 - b _080484C6 - .align 2, 0 -_080483A4: .4byte gSpriteTemplate_820C134 -_080483A8: .4byte gTradeMonSpriteCoords -_080483AC: .4byte gUnknown_03004824 -_080483B0: .4byte gMain -_080483B4: .4byte 0x0000043c -_080483B8: - movs r0, 0 - bl sub_804ACF4 - movs r0, 0 - bl sub_804A41C - ldr r2, _080483F0 @ =gUnknown_03004824 - ldr r0, [r2] - movs r1, 0 - strb r1, [r0] - ldr r0, [r2] - strb r1, [r0, 0x1] - bl sub_8048C70 - ldr r1, _080483F4 @ =gMain - ldr r2, _080483F8 @ =0x0000043c - adds r1, r2 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - movs r0, 0x7 - movs r1, 0 - bl nullsub_5 - ldr r0, _080483FC @ =0x000001b3 - bl PlayBGM - b _080484C6 - .align 2, 0 -_080483F0: .4byte gUnknown_03004824 -_080483F4: .4byte gMain -_080483F8: .4byte 0x0000043c -_080483FC: .4byte 0x000001b3 -_08048400: - movs r0, 0x1 - bl sub_804ACF4 - movs r0, 0x1 - bl sub_804A41C - ldr r1, _08048428 @ =gMain - ldr r3, _0804842C @ =0x0000043c - adds r1, r3 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_08048418: - movs r0, 0 - bl sub_8048B0C - ldr r1, _08048428 @ =gMain - ldr r0, _0804842C @ =0x0000043c - adds r1, r0 - b _08048498 - .align 2, 0 -_08048428: .4byte gMain -_0804842C: .4byte 0x0000043c -_08048430: - movs r0, 0x1 - bl sub_8048B0C - ldr r1, _08048440 @ =gMain - ldr r2, _08048444 @ =0x0000043c - adds r1, r2 - b _08048498 - .align 2, 0 -_08048440: .4byte gMain -_08048444: .4byte 0x0000043c -_08048448: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - b _08048492 -_0804845A: - movs r1, 0x80 - lsls r1, 19 - movs r2, 0xFA - lsls r2, 5 - adds r0, r2, 0 - strh r0, [r1] - ldr r0, _0804846C @ =0x0000043c - adds r1, r3, r0 - b _08048498 - .align 2, 0 -_0804846C: .4byte 0x0000043c -_08048470: - movs r0, 0 - bl sub_804AE3C - ldr r1, _08048480 @ =gMain - ldr r2, _08048484 @ =0x0000043c - adds r1, r2 - b _08048498 - .align 2, 0 -_08048480: .4byte gMain -_08048484: .4byte 0x0000043c -_08048488: - movs r0, 0x1 - bl sub_804AE3C - bl sub_804AF10 -_08048492: - ldr r1, _080484A0 @ =gMain - ldr r3, _080484A4 @ =0x0000043c - adds r1, r3 -_08048498: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _080484C6 - .align 2, 0 -_080484A0: .4byte gMain -_080484A4: .4byte 0x0000043c -_080484A8: - ldr r0, _080484E4 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - bne _080484C6 - ldr r0, _080484E8 @ =sub_80494D8 - str r0, [r3] - ldr r0, _080484EC @ =sub_8048AB4 - bl SetMainCallback2 - ldr r0, _080484F0 @ =gUnknown_03000508 - strb r4, [r0] -_080484C6: - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - add sp, 0x14 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080484E4: .4byte gPaletteFade -_080484E8: .4byte sub_80494D8 -_080484EC: .4byte sub_8048AB4 -_080484F0: .4byte gUnknown_03000508 - thumb_func_end sub_8047EC0 - - thumb_func_start sub_80484F4 -sub_80484F4: @ 80484F4 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x8 - ldr r1, _08048518 @ =gMain - ldr r2, _0804851C @ =0x0000043c - adds r0, r1, r2 - ldrb r0, [r0] - adds r2, r1, 0 - cmp r0, 0x15 - bls _0804850C - b _080489CA -_0804850C: - lsls r0, 2 - ldr r1, _08048520 @ =_08048524 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08048518: .4byte gMain -_0804851C: .4byte 0x0000043c -_08048520: .4byte _08048524 - .align 2, 0 -_08048524: - .4byte _0804857C - .4byte _0804865C - .4byte _08048668 - .4byte _08048674 - .4byte _08048680 - .4byte _08048694 - .4byte _080486A0 - .4byte _080487E8 - .4byte _08048810 - .4byte _08048834 - .4byte _0804885C - .4byte _08048880 - .4byte _08048894 - .4byte _080489CA - .4byte _080489CA - .4byte _08048914 - .4byte _0804891C - .4byte _08048950 - .4byte _08048970 - .4byte _08048988 - .4byte _08048994 - .4byte _080489B0 -_0804857C: - ldr r5, _08048630 @ =gUnknown_03004824 - ldr r6, _08048634 @ =0x02017000 - str r6, [r5] - bl ResetSpriteData - bl FreeAllSpritePalettes - bl ResetTasks - ldr r0, [r5] - adds r0, 0xC8 - ldr r1, _08048638 @ =0x06002800 - bl sub_804A964 - ldr r0, _0804863C @ =sub_80489F4 - bl SetVBlankCallback - ldr r0, _08048640 @ =gWindowConfig_81E6CE4 - bl InitMenuWindow - ldr r4, _08048644 @ =gWindowConfig_81E6F84 - adds r0, r4, 0 - bl SetUpWindowConfig - ldr r0, [r5] - adds r0, 0x4 - adds r1, r4, 0 - bl InitWindowFromConfig - movs r0, 0x14 - bl SetTextWindowBaseTileNum - ldr r1, [r5] - adds r1, 0x7A - movs r4, 0 - strb r0, [r1] - ldr r0, [r5] - adds r0, 0x4 - bl LoadTextWindowGraphics - bl MenuZeroFillScreen - bl sub_809D51C - ldr r0, [r5] - adds r0, 0x75 - strb r4, [r0] - ldr r0, [r5] - adds r0, 0x7B - strb r4, [r0] - ldr r0, [r5] - adds r0, 0x7C - strb r4, [r0] - ldr r0, [r5] - adds r0, 0x80 - strb r4, [r0] - ldr r0, [r5] - adds r0, 0x81 - strb r4, [r0] - ldr r0, [r5] - adds r0, 0x86 - strb r4, [r0] - ldr r0, [r5] - adds r0, 0x87 - strb r4, [r0] - ldr r0, [r5] - adds r0, 0xB4 - strb r4, [r0] - ldr r0, _08048648 @ =gUnknown_03000508 - strb r4, [r0] - ldr r1, _0804864C @ =gMain - ldr r3, _08048650 @ =0x0000043c - adds r1, r3 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r1, _08048654 @ =gUnknown_020296CC - movs r5, 0xD8 - lsls r5, 7 - adds r6, r5 - adds r0, r1, 0 - adds r0, 0x30 - ldr r2, _08048658 @ =0xffffff00 -_08048622: - str r6, [r0] - adds r6, r2 - subs r0, 0x4 - cmp r0, r1 - bge _08048622 - b _080489CA - .align 2, 0 -_08048630: .4byte gUnknown_03004824 -_08048634: .4byte 0x02017000 -_08048638: .4byte 0x06002800 -_0804863C: .4byte sub_80489F4 -_08048640: .4byte gWindowConfig_81E6CE4 -_08048644: .4byte gWindowConfig_81E6F84 -_08048648: .4byte gUnknown_03000508 -_0804864C: .4byte gMain -_08048650: .4byte 0x0000043c -_08048654: .4byte gUnknown_020296CC -_08048658: .4byte 0xffffff00 -_0804865C: - ldr r0, _08048664 @ =0x0000043c - adds r1, r2, r0 - b _0804883E - .align 2, 0 -_08048664: .4byte 0x0000043c -_08048668: - ldr r3, _08048670 @ =0x0000043c - adds r1, r2, r3 - b _0804899E - .align 2, 0 -_08048670: .4byte 0x0000043c -_08048674: - ldr r5, _0804867C @ =0x0000043c - adds r1, r2, r5 - b _0804899E - .align 2, 0 -_0804867C: .4byte 0x0000043c -_08048680: - bl CalculatePlayerPartyCount - ldr r1, _0804868C @ =gMain - ldr r0, _08048690 @ =0x0000043c - adds r1, r0 - b _0804899E - .align 2, 0 -_0804868C: .4byte gMain -_08048690: .4byte 0x0000043c -_08048694: - ldr r3, _0804869C @ =0x0000043c - adds r1, r2, r3 - b _0804899E - .align 2, 0 -_0804869C: .4byte 0x0000043c -_080486A0: - bl CalculateEnemyPartyCount - movs r1, 0x80 - lsls r1, 19 - movs r0, 0 - strh r0, [r1] - ldr r4, _080487C0 @ =gUnknown_03004824 - ldr r0, [r4] - ldr r1, _080487C4 @ =gPlayerPartyCount - ldrb r1, [r1] - adds r0, 0x42 - strb r1, [r0] - ldr r0, [r4] - ldr r1, _080487C8 @ =gEnemyPartyCount - ldrb r1, [r1] - adds r0, 0x43 - strb r1, [r0] - movs r0, 0 - bl sub_804A41C - movs r0, 0x1 - bl sub_804A41C - movs r6, 0 - ldr r0, [r4] - adds r0, 0x42 - ldrb r0, [r0] - cmp r6, r0 - bge _0804873C - mov r8, r4 - ldr r7, _080487CC @ =gTradeMonSpriteCoords -_080486DE: - movs r0, 0x64 - adds r4, r6, 0 - muls r4, r0 - ldr r0, _080487D0 @ =gPlayerParty - adds r4, r0 - adds r0, r4, 0 - movs r1, 0x41 - movs r2, 0 - bl GetMonData - adds r5, r0, 0 - lsls r5, 16 - lsrs r5, 16 - adds r0, r4, 0 - movs r1, 0 - bl GetMonData - ldrb r2, [r7] - lsls r2, 19 - movs r1, 0xE0 - lsls r1, 12 - adds r2, r1 - asrs r2, 16 - ldrb r3, [r7, 0x1] - lsls r3, 19 - ldr r1, _080487D4 @ =0xfff40000 - adds r3, r1 - asrs r3, 16 - movs r1, 0x1 - str r1, [sp] - str r0, [sp, 0x4] - adds r0, r5, 0 - ldr r1, _080487D8 @ =sub_809D62C - bl CreateMonIcon - mov r2, r8 - ldr r1, [r2] - adds r1, 0x34 - adds r1, r6 - strb r0, [r1] - adds r7, 0x2 - adds r6, 0x1 - ldr r0, [r2] - adds r0, 0x42 - ldrb r0, [r0] - cmp r6, r0 - blt _080486DE -_0804873C: - movs r6, 0 - ldr r1, _080487C0 @ =gUnknown_03004824 - ldr r0, [r1] - adds r0, 0x43 - ldrb r0, [r0] - cmp r6, r0 - bge _080487B0 - ldr r0, _080487CC @ =gTradeMonSpriteCoords - mov r8, r1 - adds r7, r0, 0 - adds r7, 0xC -_08048752: - movs r0, 0x64 - adds r4, r6, 0 - muls r4, r0 - ldr r0, _080487DC @ =gEnemyParty - adds r4, r0 - adds r0, r4, 0 - movs r1, 0x41 - movs r2, 0 - bl GetMonData - adds r5, r0, 0 - lsls r5, 16 - lsrs r5, 16 - adds r0, r4, 0 - movs r1, 0 - bl GetMonData - ldrb r2, [r7] - lsls r2, 19 - movs r3, 0xE0 - lsls r3, 12 - adds r2, r3 - asrs r2, 16 - ldrb r3, [r7, 0x1] - lsls r3, 19 - ldr r1, _080487D4 @ =0xfff40000 - adds r3, r1 - asrs r3, 16 - movs r1, 0x1 - str r1, [sp] - str r0, [sp, 0x4] - adds r0, r5, 0 - ldr r1, _080487D8 @ =sub_809D62C - bl CreateMonIcon - mov r2, r8 - ldr r1, [r2] - adds r1, 0x3A - adds r1, r6 - strb r0, [r1] - adds r7, 0x2 - adds r6, 0x1 - ldr r0, [r2] - adds r0, 0x43 - ldrb r0, [r0] - cmp r6, r0 - blt _08048752 -_080487B0: - movs r0, 0x2 - movs r1, 0 - bl nullsub_5 - ldr r1, _080487E0 @ =gMain - ldr r3, _080487E4 @ =0x0000043c - adds r1, r3 - b _0804899E - .align 2, 0 -_080487C0: .4byte gUnknown_03004824 -_080487C4: .4byte gPlayerPartyCount -_080487C8: .4byte gEnemyPartyCount -_080487CC: .4byte gTradeMonSpriteCoords -_080487D0: .4byte gPlayerParty -_080487D4: .4byte 0xfff40000 -_080487D8: .4byte sub_809D62C -_080487DC: .4byte gEnemyParty -_080487E0: .4byte gMain -_080487E4: .4byte 0x0000043c -_080487E8: - bl LoadHeldItemIconGraphics - ldr r0, _08048804 @ =gUnknown_03004824 - ldr r1, [r0] - adds r0, r1, 0 - adds r0, 0x42 - adds r1, 0x34 - movs r2, 0 - bl CreateHeldItemIcons - ldr r1, _08048808 @ =gMain - ldr r5, _0804880C @ =0x0000043c - adds r1, r5 - b _0804899E - .align 2, 0 -_08048804: .4byte gUnknown_03004824 -_08048808: .4byte gMain -_0804880C: .4byte 0x0000043c -_08048810: - ldr r0, _08048828 @ =gUnknown_03004824 - ldr r1, [r0] - adds r0, r1, 0 - adds r0, 0x42 - adds r1, 0x34 - movs r2, 0x1 - bl CreateHeldItemIcons - ldr r1, _0804882C @ =gMain - ldr r0, _08048830 @ =0x0000043c - adds r1, r0 - b _0804899E - .align 2, 0 -_08048828: .4byte gUnknown_03004824 -_0804882C: .4byte gMain -_08048830: .4byte 0x0000043c -_08048834: - bl sub_8047CE8 - ldr r1, _08048850 @ =gMain - ldr r2, _08048854 @ =0x0000043c - adds r1, r2 -_0804883E: - ldrb r0, [r1] - adds r0, 0x1 - movs r2, 0 - strb r0, [r1] - ldr r0, _08048858 @ =gUnknown_03004824 - ldr r0, [r0] - adds r0, 0xB4 - strb r2, [r0] - b _080489CA - .align 2, 0 -_08048850: .4byte gMain -_08048854: .4byte 0x0000043c -_08048858: .4byte gUnknown_03004824 -_0804885C: - movs r0, 0x4 - movs r1, 0 - bl nullsub_5 - bl sub_804ABF8 - lsls r0, 24 - cmp r0, 0 - bne _08048870 - b _080489CA -_08048870: - ldr r1, _08048878 @ =gMain - ldr r3, _0804887C @ =0x0000043c - adds r1, r3 - b _0804899E - .align 2, 0 -_08048878: .4byte gMain -_0804887C: .4byte 0x0000043c -_08048880: - bl sub_8047D58 - ldr r1, _0804888C @ =gMain - ldr r5, _08048890 @ =0x0000043c - adds r1, r5 - b _0804899E - .align 2, 0 -_0804888C: .4byte gMain -_08048890: .4byte 0x0000043c -_08048894: - bl sub_8047E44 - ldr r2, _080488AC @ =0x02018000 - ldr r0, _080488B0 @ =gUnknown_03004824 - ldr r0, [r0] - adds r1, r0, 0 - adds r1, 0x41 - ldrb r0, [r1] - cmp r0, 0x5 - bhi _080488B4 - ldrb r0, [r2, 0x9] - b _080488B8 - .align 2, 0 -_080488AC: .4byte 0x02018000 -_080488B0: .4byte gUnknown_03004824 -_080488B4: - ldrb r0, [r2, 0x9] - adds r0, 0x6 -_080488B8: - strb r0, [r1] - ldr r0, _08048900 @ =gSpriteTemplate_820C134 - ldr r3, _08048904 @ =gTradeMonSpriteCoords - ldr r4, _08048908 @ =gUnknown_03004824 - ldr r1, [r4] - adds r1, 0x41 - ldrb r2, [r1] - lsls r2, 1 - adds r1, r2, r3 - ldrb r1, [r1] - lsls r1, 19 - movs r5, 0x80 - lsls r5, 14 - adds r1, r5 - asrs r1, 16 - adds r3, 0x1 - adds r2, r3 - ldrb r2, [r2] - lsls r2, 3 - movs r3, 0x2 - bl CreateSprite - ldr r1, [r4] - adds r1, 0x40 - strb r0, [r1] - ldr r0, _0804890C @ =gMain - ldr r1, _08048910 @ =0x0000043c - adds r0, r1 - movs r1, 0xF - strb r1, [r0] - movs r0, 0x6 - movs r1, 0 - bl nullsub_5 - b _080489CA - .align 2, 0 -_08048900: .4byte gSpriteTemplate_820C134 -_08048904: .4byte gTradeMonSpriteCoords -_08048908: .4byte gUnknown_03004824 -_0804890C: .4byte gMain -_08048910: .4byte 0x0000043c -_08048914: - movs r0, 0 - bl sub_8048B0C - b _08048998 -_0804891C: - movs r0, 0x1 - bl sub_8048B0C - ldr r2, _08048944 @ =gUnknown_03004824 - ldr r0, [r2] - movs r1, 0 - strb r1, [r0] - ldr r0, [r2] - strb r1, [r0, 0x1] - bl sub_8048C70 - movs r0, 0x7 - movs r1, 0 - bl nullsub_5 - ldr r1, _08048948 @ =gMain - ldr r3, _0804894C @ =0x0000043c - adds r1, r3 - b _0804899E - .align 2, 0 -_08048944: .4byte gUnknown_03004824 -_08048948: .4byte gMain -_0804894C: .4byte 0x0000043c -_08048950: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - ldr r1, _08048968 @ =gMain - ldr r5, _0804896C @ =0x0000043c - adds r1, r5 - b _0804899E - .align 2, 0 -_08048968: .4byte gMain -_0804896C: .4byte 0x0000043c -_08048970: - movs r1, 0x80 - lsls r1, 19 - movs r3, 0xFA - lsls r3, 5 - adds r0, r3, 0 - strh r0, [r1] - ldr r5, _08048984 @ =0x0000043c - adds r1, r2, r5 - b _0804899E - .align 2, 0 -_08048984: .4byte 0x0000043c -_08048988: - ldr r0, _08048990 @ =0x0000043c - adds r1, r2, r0 - b _0804899E - .align 2, 0 -_08048990: .4byte 0x0000043c -_08048994: - bl sub_804AF10 -_08048998: - ldr r1, _080489A8 @ =gMain - ldr r2, _080489AC @ =0x0000043c - adds r1, r2 -_0804899E: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _080489CA - .align 2, 0 -_080489A8: .4byte gMain -_080489AC: .4byte 0x0000043c -_080489B0: - ldr r0, _080489E8 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - bne _080489CA - ldr r0, _080489EC @ =sub_8048AB4 - bl SetMainCallback2 - ldr r0, _080489F0 @ =gUnknown_03000508 - strb r4, [r0] -_080489CA: - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080489E8: .4byte gPaletteFade -_080489EC: .4byte sub_8048AB4 -_080489F0: .4byte gUnknown_03000508 - thumb_func_end sub_80484F4 - - thumb_func_start sub_80489F4 -sub_80489F4: @ 80489F4 - push {lr} - ldr r0, _08048A10 @ =gUnknown_03004824 - ldr r0, [r0] - adds r0, 0xC8 - bl sub_804A940 - bl LoadOam - bl ProcessSpriteCopyRequests - bl TransferPlttBuffer - pop {r0} - bx r0 - .align 2, 0 -_08048A10: .4byte gUnknown_03004824 - thumb_func_end sub_80489F4 - - thumb_func_start sub_8048A14 -sub_8048A14: @ 8048A14 - push {r4,lr} - sub sp, 0x4 - ldr r4, _08048A4C @ =gUnknown_03004824 - ldr r1, [r4] - adds r1, 0xB4 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xF - bls _08048A44 - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, [r4] - adds r0, 0x7B - movs r1, 0xA - strb r1, [r0] -_08048A44: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08048A4C: .4byte gUnknown_03004824 - thumb_func_end sub_8048A14 - - thumb_func_start sub_8048A50 -sub_8048A50: @ 8048A50 - push {r4,lr} - ldr r0, _08048A84 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08048A7E - ldr r2, _08048A88 @ =gUnknown_020297D8 - ldr r4, _08048A8C @ =gUnknown_03004824 - ldr r0, [r4] - adds r1, r0, 0 - adds r1, 0x41 - ldrb r1, [r1] - strb r1, [r2] - adds r0, 0x8A - ldrb r0, [r0] - strb r0, [r2, 0x1] - bl sub_800832C - ldr r0, [r4] - adds r0, 0x7B - movs r1, 0xD - strb r1, [r0] -_08048A7E: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08048A84: .4byte gPaletteFade -_08048A88: .4byte gUnknown_020297D8 -_08048A8C: .4byte gUnknown_03004824 - thumb_func_end sub_8048A50 - - thumb_func_start sub_8048A90 -sub_8048A90: @ 8048A90 - push {lr} - ldr r0, _08048AA8 @ =gReceivedRemoteLinkPlayers - ldrb r1, [r0] - cmp r1, 0 - bne _08048AA4 - ldr r0, _08048AAC @ =gMain - str r1, [r0] - ldr r0, _08048AB0 @ =sub_804B41C - bl SetMainCallback2 -_08048AA4: - pop {r0} - bx r0 - .align 2, 0 -_08048AA8: .4byte gReceivedRemoteLinkPlayers -_08048AAC: .4byte gMain -_08048AB0: .4byte sub_804B41C - thumb_func_end sub_8048A90 - - thumb_func_start sub_8048AB4 -sub_8048AB4: @ 8048AB4 - push {r4,lr} - bl sub_8049DE0 - bl sub_804AB30 - movs r0, 0 - bl sub_8049ED4 - movs r0, 0x1 - bl sub_8049ED4 - ldr r4, _08048B04 @ =REG_BG2HOFS - ldr r3, _08048B08 @ =gUnknown_03004824 - ldr r2, [r3] - ldrb r0, [r2] - adds r1, r0, 0x1 - strb r1, [r2] - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4] - adds r4, 0x4 - ldr r2, [r3] - ldrb r0, [r2, 0x1] - adds r1, r0, 0 - adds r1, 0xFF - strb r1, [r2, 0x1] - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4] - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08048B04: .4byte REG_BG2HOFS -_08048B08: .4byte gUnknown_03004824 - thumb_func_end sub_8048AB4 - - thumb_func_start sub_8048B0C -sub_8048B0C: @ 8048B0C - push {r4-r7,lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - beq _08048B1C - cmp r0, 0x1 - beq _08048BD0 - b _08048C3A -_08048B1C: - ldr r5, _08048BA0 @ =gUnknown_08EA0348 - ldr r0, _08048BA4 @ =gTradeStripesBG2Tilemap - mov r12, r0 - ldr r1, _08048BA8 @ =gUnknown_08EA02C8 - ldr r4, _08048BAC @ =gPlttBufferFaded - ldr r3, _08048BB0 @ =gPlttBufferUnfaded - movs r2, 0x2F -_08048B2A: - ldrh r0, [r1] - strh r0, [r3] - ldrh r0, [r1] - strh r0, [r4] - adds r1, 0x2 - adds r4, 0x2 - adds r3, 0x2 - subs r2, 0x1 - cmp r2, 0 - bge _08048B2A - adds r3, r5, 0 - movs r4, 0xC0 - lsls r4, 19 - movs r5, 0x94 - lsls r5, 5 - ldr r1, _08048BB4 @ =0x040000d4 - ldr r6, _08048BB8 @ =0x80000800 - movs r2, 0x80 - lsls r2, 5 - movs r7, 0x80 - lsls r7, 24 -_08048B54: - str r3, [r1] - str r4, [r1, 0x4] - str r6, [r1, 0x8] - ldr r0, [r1, 0x8] - adds r3, r2 - adds r4, r2 - subs r5, r2 - cmp r5, r2 - bhi _08048B54 - str r3, [r1] - str r4, [r1, 0x4] - lsrs r0, r5, 1 - orrs r0, r7 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - movs r2, 0 - ldr r5, _08048BBC @ =0x000003ff - ldr r4, _08048BC0 @ =gUnknown_03004824 - ldr r3, _08048BC4 @ =gUnknown_08EA15C8 -_08048B7A: - ldr r0, [r4] - lsls r1, r2, 1 - adds r0, 0xDA - adds r0, r1 - ldrh r1, [r3] - strh r1, [r0] - adds r3, 0x2 - adds r2, 0x1 - cmp r2, r5 - ble _08048B7A - ldr r1, _08048BC8 @ =0x06003000 - ldr r0, _08048BB4 @ =0x040000d4 - mov r2, r12 - str r2, [r0] - str r1, [r0, 0x4] - ldr r1, _08048BCC @ =0x80000400 - str r1, [r0, 0x8] - ldr r0, [r0, 0x8] - b _08048C3A - .align 2, 0 -_08048BA0: .4byte gUnknown_08EA0348 -_08048BA4: .4byte gTradeStripesBG2Tilemap -_08048BA8: .4byte gUnknown_08EA02C8 -_08048BAC: .4byte gPlttBufferFaded -_08048BB0: .4byte gPlttBufferUnfaded -_08048BB4: .4byte 0x040000d4 -_08048BB8: .4byte 0x80000800 -_08048BBC: .4byte 0x000003ff -_08048BC0: .4byte gUnknown_03004824 -_08048BC4: .4byte gUnknown_08EA15C8 -_08048BC8: .4byte 0x06003000 -_08048BCC: .4byte 0x80000400 -_08048BD0: - ldr r1, _08048C40 @ =gTradeStripesBG3Tilemap - ldr r2, _08048C44 @ =0x06003800 - ldr r0, _08048C48 @ =0x040000d4 - str r1, [r0] - str r2, [r0, 0x4] - ldr r1, _08048C4C @ =0x80000400 - str r1, [r0, 0x8] - ldr r0, [r0, 0x8] - movs r0, 0 - bl sub_804A6DC - movs r0, 0x1 - bl sub_804A6DC - ldr r0, _08048C50 @ =gUnknown_03004824 - ldr r0, [r0] - adds r0, 0xC8 - bl sub_804A938 - ldr r2, _08048C54 @ =REG_BG0CNT - ldrh r1, [r2] - ldr r0, _08048C58 @ =0x0000fffc - ands r0, r1 - strh r0, [r2] - ldr r1, _08048C5C @ =REG_BG1CNT - ldr r2, _08048C60 @ =0x00000501 - adds r0, r2, 0 - strh r0, [r1] - adds r1, 0x2 - ldr r2, _08048C64 @ =0x00000602 - adds r0, r2, 0 - strh r0, [r1] - adds r1, 0x2 - ldr r2, _08048C68 @ =0x00000703 - adds r0, r2, 0 - strh r0, [r1] - ldr r0, _08048C6C @ =REG_BG0HOFS - movs r1, 0 - strh r1, [r0] - adds r0, 0x4 - strh r1, [r0] - adds r0, 0x4 - strh r1, [r0] - adds r0, 0x4 - strh r1, [r0] - subs r0, 0xA - strh r1, [r0] - adds r0, 0x4 - strh r1, [r0] - adds r0, 0x4 - strh r1, [r0] - adds r0, 0x4 - strh r1, [r0] -_08048C3A: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08048C40: .4byte gTradeStripesBG3Tilemap -_08048C44: .4byte 0x06003800 -_08048C48: .4byte 0x040000d4 -_08048C4C: .4byte 0x80000400 -_08048C50: .4byte gUnknown_03004824 -_08048C54: .4byte REG_BG0CNT -_08048C58: .4byte 0x0000fffc -_08048C5C: .4byte REG_BG1CNT -_08048C60: .4byte 0x00000501 -_08048C64: .4byte 0x00000602 -_08048C68: .4byte 0x00000703 -_08048C6C: .4byte REG_BG0HOFS - thumb_func_end sub_8048B0C - - thumb_func_start sub_8048C70 -sub_8048C70: @ 8048C70 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - movs r3, 0 - ldr r5, _08048CC0 @ =gUnknown_03004824 - mov r8, r5 - ldr r0, _08048CC4 @ =gSprites - mov r12, r0 - movs r1, 0x5 - negs r1, r1 - mov r9, r1 - movs r4, 0x6 - movs r7, 0x1 - movs r6, 0 -_08048C8E: - mov r1, r8 - ldr r0, [r1] - adds r1, r0, 0 - adds r1, 0x42 - ldrb r1, [r1] - cmp r3, r1 - bge _08048CC8 - adds r0, 0x34 - adds r0, r3 - ldrb r0, [r0] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - add r1, r12 - adds r1, 0x3E - ldrb r2, [r1] - mov r0, r9 - ands r0, r2 - strb r0, [r1] - ldr r0, [r5] - adds r0, 0x44 - adds r0, r3 - strb r7, [r0] - b _08048CCE - .align 2, 0 -_08048CC0: .4byte gUnknown_03004824 -_08048CC4: .4byte gSprites -_08048CC8: - adds r0, 0x44 - adds r0, r3 - strb r6, [r0] -_08048CCE: - mov r1, r8 - ldr r0, [r1] - adds r1, r0, 0 - adds r1, 0x43 - ldrb r1, [r1] - cmp r3, r1 - bge _08048CFE - adds r0, 0x3A - adds r0, r3 - ldrb r0, [r0] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - add r1, r12 - adds r1, 0x3E - ldrb r2, [r1] - mov r0, r9 - ands r0, r2 - strb r0, [r1] - ldr r0, [r5] - adds r0, 0x44 - adds r0, r4 - strb r7, [r0] - b _08048D04 -_08048CFE: - adds r0, 0x44 - adds r0, r4 - strb r6, [r0] -_08048D04: - adds r4, 0x1 - adds r3, 0x1 - cmp r3, 0x5 - ble _08048C8E - ldr r0, [r5] - adds r0, 0x50 - movs r1, 0x1 - strb r1, [r0] - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8048C70 - - thumb_func_start nullsub_5 -nullsub_5: @ 8048D20 - bx lr - thumb_func_end nullsub_5 - - thumb_func_start sub_8048D24 -sub_8048D24: @ 8048D24 - push {r4,r5,lr} - adds r5, r0, 0 - adds r4, r1, 0 - movs r3, 0 - cmp r3, r2 - bcs _08048D3E -_08048D30: - adds r0, r5, r3 - adds r1, r4, r3 - ldrb r1, [r1] - strb r1, [r0] - adds r3, 0x1 - cmp r3, r2 - bcc _08048D30 -_08048D3E: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8048D24 - - thumb_func_start sub_8048D44 -sub_8048D44: @ 8048D44 - push {r4-r7,lr} - sub sp, 0xC - bl GetMultiplayerId - lsls r0, 24 - lsrs r7, r0, 24 - ldr r6, _08048D90 @ =gUnknown_03004824 - ldr r0, [r6] - adds r0, 0x75 - ldrb r5, [r0] - adds r0, r5, 0 - movs r1, 0x64 - bl __udivsi3 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r5, 0 - movs r1, 0x64 - bl __umodsi3 - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl SetLinkDebugValues - ldr r0, [r6] - adds r0, 0x75 - ldrb r0, [r0] - cmp r0, 0x10 - bls _08048D86 - b _0804907C -_08048D86: - lsls r0, 2 - ldr r1, _08048D94 @ =_08048D98 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08048D90: .4byte gUnknown_03004824 -_08048D94: .4byte _08048D98 - .align 2, 0 -_08048D98: - .4byte _08048DDC - .4byte _08048DF8 - .4byte _08048E28 - .4byte _08048E3C - .4byte _08048E74 - .4byte _08048E90 - .4byte _08048EA4 - .4byte _08048EDC - .4byte _08048EF8 - .4byte _08048F0C - .4byte _08048F44 - .4byte _08048F60 - .4byte _08048F74 - .4byte _08048FAC - .4byte _08048FC8 - .4byte _08048FDC - .4byte _08049018 -_08048DDC: - ldr r0, _08048DEC @ =gBlockSendBuffer - ldr r1, _08048DF0 @ =gPlayerParty - movs r2, 0xC8 - bl sub_8048D24 - ldr r0, _08048DF4 @ =gUnknown_03004824 - ldr r1, [r0] - b _08049006 - .align 2, 0 -_08048DEC: .4byte gBlockSendBuffer -_08048DF0: .4byte gPlayerParty -_08048DF4: .4byte gUnknown_03004824 -_08048DF8: - bl sub_8007ECC - lsls r0, 24 - cmp r0, 0 - bne _08048E04 - b _0804907C -_08048E04: - bl GetBlockReceivedStatus - lsls r0, 24 - cmp r0, 0 - bne _08048E18 - ldr r0, _08048E14 @ =gUnknown_03004824 - ldr r1, [r0] - b _08049006 - .align 2, 0 -_08048E14: .4byte gUnknown_03004824 -_08048E18: - bl ResetBlockReceivedFlags - ldr r0, _08048E24 @ =gUnknown_03004824 - ldr r1, [r0] - b _08049006 - .align 2, 0 -_08048E24: .4byte gUnknown_03004824 -_08048E28: - cmp r7, 0 - bne _08048E32 - movs r0, 0x1 - bl sub_8007E9C -_08048E32: - ldr r0, _08048E38 @ =gUnknown_03004824 - ldr r1, [r0] - b _08049006 - .align 2, 0 -_08048E38: .4byte gUnknown_03004824 -_08048E3C: - bl GetBlockReceivedStatus - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - beq _08048E4A - b _0804907C -_08048E4A: - ldr r0, _08048E68 @ =gEnemyParty - movs r2, 0x1 - adds r1, r7, 0 - eors r1, r2 - lsls r1, 8 - ldr r2, _08048E6C @ =gBlockRecvBuffer - adds r1, r2 - movs r2, 0xC8 - bl sub_8048D24 - bl ResetBlockReceivedFlags - ldr r0, _08048E70 @ =gUnknown_03004824 - ldr r1, [r0] - b _08049006 - .align 2, 0 -_08048E68: .4byte gEnemyParty -_08048E6C: .4byte gBlockRecvBuffer -_08048E70: .4byte gUnknown_03004824 -_08048E74: - ldr r0, _08048E84 @ =gBlockSendBuffer - ldr r1, _08048E88 @ =gPlayerParty + 2 * 0x64 - movs r2, 0xC8 - bl sub_8048D24 - ldr r0, _08048E8C @ =gUnknown_03004824 - ldr r1, [r0] - b _08049006 - .align 2, 0 -_08048E84: .4byte gBlockSendBuffer -_08048E88: .4byte gPlayerParty + 2 * 0x64 -_08048E8C: .4byte gUnknown_03004824 -_08048E90: - cmp r7, 0 - bne _08048E9A - movs r0, 0x1 - bl sub_8007E9C -_08048E9A: - ldr r0, _08048EA0 @ =gUnknown_03004824 - ldr r1, [r0] - b _08049006 - .align 2, 0 -_08048EA0: .4byte gUnknown_03004824 -_08048EA4: - bl GetBlockReceivedStatus - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - beq _08048EB2 - b _0804907C -_08048EB2: - ldr r0, _08048ED0 @ =gEnemyParty + 2 * 0x64 - movs r2, 0x1 - adds r1, r7, 0 - eors r1, r2 - lsls r1, 8 - ldr r2, _08048ED4 @ =gBlockRecvBuffer - adds r1, r2 - movs r2, 0xC8 - bl sub_8048D24 - bl ResetBlockReceivedFlags - ldr r0, _08048ED8 @ =gUnknown_03004824 - ldr r1, [r0] - b _08049006 - .align 2, 0 -_08048ED0: .4byte gEnemyParty + 2 * 0x64 -_08048ED4: .4byte gBlockRecvBuffer -_08048ED8: .4byte gUnknown_03004824 -_08048EDC: - ldr r0, _08048EEC @ =gBlockSendBuffer - ldr r1, _08048EF0 @ =gPlayerParty + 4 * 0x64 - movs r2, 0xC8 - bl sub_8048D24 - ldr r0, _08048EF4 @ =gUnknown_03004824 - ldr r1, [r0] - b _08049006 - .align 2, 0 -_08048EEC: .4byte gBlockSendBuffer -_08048EF0: .4byte gPlayerParty + 4 * 0x64 -_08048EF4: .4byte gUnknown_03004824 -_08048EF8: - cmp r7, 0 - bne _08048F02 - movs r0, 0x1 - bl sub_8007E9C -_08048F02: - ldr r0, _08048F08 @ =gUnknown_03004824 - ldr r1, [r0] - b _08049006 - .align 2, 0 -_08048F08: .4byte gUnknown_03004824 -_08048F0C: - bl GetBlockReceivedStatus - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - beq _08048F1A - b _0804907C -_08048F1A: - ldr r0, _08048F38 @ =gEnemyParty + 4 * 0x64 - movs r2, 0x1 - adds r1, r7, 0 - eors r1, r2 - lsls r1, 8 - ldr r2, _08048F3C @ =gBlockRecvBuffer - adds r1, r2 - movs r2, 0xC8 - bl sub_8048D24 - bl ResetBlockReceivedFlags - ldr r0, _08048F40 @ =gUnknown_03004824 - ldr r1, [r0] - b _08049006 - .align 2, 0 -_08048F38: .4byte gEnemyParty + 4 * 0x64 -_08048F3C: .4byte gBlockRecvBuffer -_08048F40: .4byte gUnknown_03004824 -_08048F44: - ldr r0, _08048F54 @ =gBlockSendBuffer - ldr r1, _08048F58 @ =gSaveBlock1 + 0x2B4C - movs r2, 0xDC - bl sub_8048D24 - ldr r0, _08048F5C @ =gUnknown_03004824 - ldr r1, [r0] - b _08049006 - .align 2, 0 -_08048F54: .4byte gBlockSendBuffer -_08048F58: .4byte gSaveBlock1 + 0x2B4C -_08048F5C: .4byte gUnknown_03004824 -_08048F60: - cmp r7, 0 - bne _08048F6A - movs r0, 0x3 - bl sub_8007E9C -_08048F6A: - ldr r0, _08048F70 @ =gUnknown_03004824 - ldr r1, [r0] - b _08049006 - .align 2, 0 -_08048F70: .4byte gUnknown_03004824 -_08048F74: - bl GetBlockReceivedStatus - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - beq _08048F82 - b _0804907C -_08048F82: - ldr r0, _08048FA0 @ =gUnknown_02029700 - movs r2, 0x1 - adds r1, r7, 0 - eors r1, r2 - lsls r1, 8 - ldr r2, _08048FA4 @ =gBlockRecvBuffer - adds r1, r2 - movs r2, 0xD8 - bl sub_8048D24 - bl ResetBlockReceivedFlags - ldr r0, _08048FA8 @ =gUnknown_03004824 - ldr r1, [r0] - b _08049006 - .align 2, 0 -_08048FA0: .4byte gUnknown_02029700 -_08048FA4: .4byte gBlockRecvBuffer -_08048FA8: .4byte gUnknown_03004824 -_08048FAC: - ldr r0, _08048FBC @ =gBlockSendBuffer - ldr r1, _08048FC0 @ =gSaveBlock1 + 0x3110 - movs r2, 0xB - bl sub_8048D24 - ldr r0, _08048FC4 @ =gUnknown_03004824 - ldr r1, [r0] - b _08049006 - .align 2, 0 -_08048FBC: .4byte gBlockSendBuffer -_08048FC0: .4byte gSaveBlock1 + 0x3110 -_08048FC4: .4byte gUnknown_03004824 -_08048FC8: - cmp r7, 0 - bne _08048FD2 - movs r0, 0x4 - bl sub_8007E9C -_08048FD2: - ldr r0, _08048FD8 @ =gUnknown_03004824 - ldr r1, [r0] - b _08049006 - .align 2, 0 -_08048FD8: .4byte gUnknown_03004824 -_08048FDC: - bl GetBlockReceivedStatus - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - bne _0804907C - ldr r4, _08049010 @ =gUnknown_03004824 - ldr r0, [r4] - adds r0, 0xB5 - movs r2, 0x1 - adds r1, r7, 0 - eors r1, r2 - lsls r1, 8 - ldr r2, _08049014 @ =gBlockRecvBuffer - adds r1, r2 - movs r2, 0xB - bl sub_8048D24 - bl ResetBlockReceivedFlags - ldr r1, [r4] -_08049006: - adds r1, 0x75 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0804907C - .align 2, 0 -_08049010: .4byte gUnknown_03004824 -_08049014: .4byte gBlockRecvBuffer -_08049018: - ldr r4, _0804906C @ =gEnemyParty - ldr r6, _08049070 @ =0x0000012f - movs r5, 0x5 -_0804901E: - adds r0, r4, 0 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0 - beq _0804905E - cmp r0, r6 - bne _0804905E - adds r0, r4, 0 - movs r1, 0x3 - bl GetMonData - cmp r0, 0x1 - beq _0804905E - adds r0, r4, 0 - movs r1, 0x2 - mov r2, sp - bl GetMonData - mov r0, sp - ldr r1, _08049074 @ =gUnknown_0820C3B0 - bl StringCompareWithoutExtCtrlCodes - cmp r0, 0 - bne _0804905E - adds r0, r4, 0 - movs r1, 0x2 - ldr r2, _08049078 @ =gSpeciesNames + 0xD05 - bl SetMonData -_0804905E: - adds r4, 0x64 - subs r5, 0x1 - cmp r5, 0 - bge _0804901E - movs r0, 0x1 - b _0804907E - .align 2, 0 -_0804906C: .4byte gEnemyParty -_08049070: .4byte 0x0000012f -_08049074: .4byte gUnknown_0820C3B0 -_08049078: .4byte gSpeciesNames + 0xD05 -_0804907C: - movs r0, 0 -_0804907E: - add sp, 0xC - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_8048D44 - - thumb_func_start sub_8049088 -sub_8049088: @ 8049088 - push {lr} - sub sp, 0x1C - ldr r1, _080490B0 @ =gTradeText_TradeOkayPrompt - mov r0, sp - bl StringCopy - ldr r0, _080490B4 @ =gUnknown_03004824 - ldr r0, [r0] - adds r0, 0x7E - ldrh r1, [r0] - lsls r1, 5 - ldr r0, _080490B8 @ =0x06010000 - adds r1, r0 - mov r0, sp - movs r2, 0x14 - bl sub_804ACD8 - add sp, 0x1C - pop {r0} - bx r0 - .align 2, 0 -_080490B0: .4byte gTradeText_TradeOkayPrompt -_080490B4: .4byte gUnknown_03004824 -_080490B8: .4byte 0x06010000 - thumb_func_end sub_8049088 - - thumb_func_start sub_80490BC -sub_80490BC: @ 80490BC - push {r4,lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r1, 24 - lsrs r4, r1, 24 - movs r3, 0x1 - adds r0, r4, 0 - ands r0, r3 - cmp r0, 0 - beq _08049148 - ldr r1, _080490EC @ =gBlockRecvBuffer - lsls r0, r2, 8 - adds r0, r1 - ldrh r1, [r0] - ldr r0, _080490F0 @ =0x0000bbbb - cmp r1, r0 - beq _08049128 - cmp r1, r0 - bgt _080490F8 - ldr r0, _080490F4 @ =0x0000aabb - cmp r1, r0 - beq _08049118 - b _08049142 - .align 2, 0 -_080490EC: .4byte gBlockRecvBuffer -_080490F0: .4byte 0x0000bbbb -_080490F4: .4byte 0x0000aabb -_080490F8: - ldr r0, _0804910C @ =0x0000bbcc - cmp r1, r0 - beq _08049138 - ldr r0, _08049110 @ =0x0000eeaa - cmp r1, r0 - bne _08049142 - ldr r0, _08049114 @ =gUnknown_03004824 - ldr r0, [r0] - adds r0, 0x84 - b _0804913E - .align 2, 0 -_0804910C: .4byte 0x0000bbcc -_08049110: .4byte 0x0000eeaa -_08049114: .4byte gUnknown_03004824 -_08049118: - ldr r0, _08049124 @ =gUnknown_03004824 - ldr r0, [r0] - adds r0, 0x84 - strb r3, [r0] - b _08049142 - .align 2, 0 -_08049124: .4byte gUnknown_03004824 -_08049128: - ldr r0, _08049134 @ =gUnknown_03004824 - ldr r0, [r0] - adds r0, 0x86 - strb r3, [r0] - b _08049142 - .align 2, 0 -_08049134: .4byte gUnknown_03004824 -_08049138: - ldr r0, _08049170 @ =gUnknown_03004824 - ldr r0, [r0] - adds r0, 0x86 -_0804913E: - movs r1, 0x2 - strb r1, [r0] -_08049142: - movs r0, 0 - bl ResetBlockReceivedFlag -_08049148: - movs r2, 0x2 - adds r0, r4, 0 - ands r0, r2 - cmp r0, 0 - beq _080491DA - ldr r3, _08049174 @ =gBlockRecvBuffer - movs r1, 0x80 - lsls r1, 1 - adds r0, r3, r1 - ldrh r1, [r0] - ldr r0, _08049178 @ =0x0000bbbb - cmp r1, r0 - beq _080491BC - cmp r1, r0 - bgt _08049180 - ldr r0, _0804917C @ =0x0000aabb - cmp r1, r0 - beq _080491A0 - b _080491D4 - .align 2, 0 -_08049170: .4byte gUnknown_03004824 -_08049174: .4byte gBlockRecvBuffer -_08049178: .4byte 0x0000bbbb -_0804917C: .4byte 0x0000aabb -_08049180: - ldr r0, _08049194 @ =0x0000bbcc - cmp r1, r0 - beq _080491CC - ldr r0, _08049198 @ =0x0000eeaa - cmp r1, r0 - bne _080491D4 - ldr r0, _0804919C @ =gUnknown_03004824 - ldr r0, [r0] - adds r0, 0x85 - b _080491D2 - .align 2, 0 -_08049194: .4byte 0x0000bbcc -_08049198: .4byte 0x0000eeaa -_0804919C: .4byte gUnknown_03004824 -_080491A0: - ldr r2, _080491B8 @ =gUnknown_03004824 - ldr r1, [r2] - movs r4, 0x81 - lsls r4, 1 - adds r0, r3, r4 - ldrb r0, [r0] - adds r0, 0x6 - adds r1, 0x8A - strb r0, [r1] - ldr r0, [r2] - adds r0, 0x85 - b _080491C2 - .align 2, 0 -_080491B8: .4byte gUnknown_03004824 -_080491BC: - ldr r0, _080491C8 @ =gUnknown_03004824 - ldr r0, [r0] - adds r0, 0x87 -_080491C2: - movs r1, 0x1 - strb r1, [r0] - b _080491D4 - .align 2, 0 -_080491C8: .4byte gUnknown_03004824 -_080491CC: - ldr r0, _080491E0 @ =gUnknown_03004824 - ldr r0, [r0] - adds r0, 0x87 -_080491D2: - strb r2, [r0] -_080491D4: - movs r0, 0x1 - bl ResetBlockReceivedFlag -_080491DA: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080491E0: .4byte gUnknown_03004824 - thumb_func_end sub_80490BC - - thumb_func_start sub_80491E4 -sub_80491E4: @ 80491E4 - push {r4,r5,lr} - sub sp, 0x4 - lsls r1, 24 - lsrs r5, r1, 24 - movs r0, 0x1 - ands r0, r5 - cmp r0, 0 - beq _080492BE - ldr r2, _08049210 @ =gBlockRecvBuffer - ldrh r1, [r2] - ldr r0, _08049214 @ =0x0000ddee - cmp r1, r0 - beq _080492A8 - cmp r1, r0 - bgt _08049220 - ldr r0, _08049218 @ =0x0000ccdd - cmp r1, r0 - beq _08049288 - ldr r0, _0804921C @ =0x0000dddd - cmp r1, r0 - beq _0804925C - b _080492B8 - .align 2, 0 -_08049210: .4byte gBlockRecvBuffer -_08049214: .4byte 0x0000ddee -_08049218: .4byte 0x0000ccdd -_0804921C: .4byte 0x0000dddd -_08049220: - ldr r0, _08049230 @ =0x0000eebb - cmp r1, r0 - beq _08049234 - adds r0, 0x11 - cmp r1, r0 - beq _08049258 - b _080492B8 - .align 2, 0 -_08049230: .4byte 0x0000eebb -_08049234: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - movs r0, 0x4 - bl sub_804AA0C - ldr r0, _08049254 @ =gUnknown_03004824 - ldr r0, [r0] - adds r0, 0x7B - movs r1, 0xB - b _080492B6 - .align 2, 0 -_08049254: .4byte gUnknown_03004824 -_08049258: - movs r0, 0x5 - b _080492AA -_0804925C: - ldr r4, _08049284 @ =gUnknown_03004824 - ldr r1, [r4] - ldrb r0, [r2, 0x2] - adds r0, 0x6 - adds r1, 0x8A - strb r0, [r1] - ldr r0, [r4] - adds r0, 0x41 - ldrb r0, [r0] - bl sub_8049E9C - ldr r0, [r4] - adds r0, 0x8A - ldrb r0, [r0] - bl sub_8049E9C - ldr r0, [r4] - adds r0, 0x7B - movs r1, 0x7 - b _080492B6 - .align 2, 0 -_08049284: .4byte gUnknown_03004824 -_08049288: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, _080492A4 @ =gUnknown_03004824 - ldr r0, [r0] - adds r0, 0x7B - movs r1, 0xA - b _080492B6 - .align 2, 0 -_080492A4: .4byte gUnknown_03004824 -_080492A8: - movs r0, 0x1 -_080492AA: - bl sub_804AA0C - ldr r0, _080492D4 @ =gUnknown_03004824 - ldr r0, [r0] - adds r0, 0x7B - movs r1, 0x8 -_080492B6: - strb r1, [r0] -_080492B8: - movs r0, 0 - bl ResetBlockReceivedFlag -_080492BE: - movs r0, 0x2 - ands r0, r5 - cmp r0, 0 - beq _080492CC - movs r0, 0x1 - bl ResetBlockReceivedFlag -_080492CC: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080492D4: .4byte gUnknown_03004824 - thumb_func_end sub_80491E4 - - thumb_func_start sub_80492D8 -sub_80492D8: @ 80492D8 - push {r4-r6,lr} - sub sp, 0x4 - ldr r6, _08049334 @ =gUnknown_03004824 - ldr r2, [r6] - adds r1, r2, 0 - adds r1, 0x84 - ldrb r0, [r1] - cmp r0, 0 - bne _080492EC - b _08049420 -_080492EC: - adds r0, r2, 0 - adds r0, 0x85 - ldrb r0, [r0] - cmp r0, 0 - bne _080492F8 - b _08049420 -_080492F8: - ldrh r1, [r1] - ldr r0, _08049338 @ =0x00000101 - cmp r1, r0 - bne _08049340 - adds r1, r2, 0 - adds r1, 0x7B - movs r0, 0x6 - strb r0, [r1] - ldr r2, [r6] - adds r1, r2, 0 - adds r1, 0x8C - movs r4, 0 - ldr r0, _0804933C @ =0x0000dddd - strh r0, [r1] - adds r0, r2, 0 - adds r0, 0x41 - ldrb r1, [r0] - adds r0, 0x4D - strh r1, [r0] - movs r0, 0x5 - movs r1, 0 - bl sub_804AADC - ldr r0, [r6] - adds r2, r0, 0 - adds r2, 0x85 - strb r4, [r2] - adds r0, 0x84 - strb r4, [r0] - b _08049420 - .align 2, 0 -_08049334: .4byte gUnknown_03004824 -_08049338: .4byte 0x00000101 -_0804933C: .4byte 0x0000dddd -_08049340: - ldr r0, _08049388 @ =0x00000201 - cmp r1, r0 - bne _08049390 - movs r0, 0x1 - bl sub_804AA0C - ldr r1, [r6] - adds r2, r1, 0 - adds r2, 0x8C - movs r4, 0 - movs r3, 0 - ldr r0, _0804938C @ =0x0000eecc - strh r0, [r2] - adds r1, 0x8E - strh r3, [r1] - movs r0, 0x5 - movs r1, 0 - bl sub_804AADC - ldr r0, [r6] - adds r1, r0, 0 - adds r1, 0x87 - strb r4, [r1] - adds r0, 0x86 - strb r4, [r0] - ldr r0, [r6] - adds r1, r0, 0 - adds r1, 0x85 - strb r4, [r1] - adds r0, 0x84 - strb r4, [r0] - ldr r0, [r6] - adds r0, 0x7B - movs r1, 0x8 - b _0804941E - .align 2, 0 -_08049388: .4byte 0x00000201 -_0804938C: .4byte 0x0000eecc -_08049390: - movs r0, 0x81 - lsls r0, 1 - cmp r1, r0 - bne _080493DC - movs r0, 0x5 - bl sub_804AA0C - ldr r1, [r6] - adds r2, r1, 0 - adds r2, 0x8C - movs r4, 0 - movs r3, 0 - ldr r0, _080493D8 @ =0x0000ddee - strh r0, [r2] - adds r1, 0x8E - strh r3, [r1] - movs r0, 0x5 - movs r1, 0 - bl sub_804AADC - ldr r0, [r6] - adds r1, r0, 0 - adds r1, 0x87 - strb r4, [r1] - adds r0, 0x86 - strb r4, [r0] - ldr r0, [r6] - adds r1, r0, 0 - adds r1, 0x85 - strb r4, [r1] - adds r0, 0x84 - strb r4, [r0] - ldr r0, [r6] - adds r0, 0x7B - movs r1, 0x8 - b _0804941E - .align 2, 0 -_080493D8: .4byte 0x0000ddee -_080493DC: - ldr r0, _080494C0 @ =0x00000202 - cmp r1, r0 - bne _08049420 - adds r1, r2, 0 - adds r1, 0x8C - movs r5, 0 - movs r4, 0 - ldr r0, _080494C4 @ =0x0000eebb - strh r0, [r1] - adds r0, r2, 0 - adds r0, 0x8E - strh r4, [r0] - movs r0, 0x5 - movs r1, 0 - bl sub_804AADC - movs r0, 0x1 - negs r0, r0 - str r4, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, [r6] - adds r1, r0, 0 - adds r1, 0x85 - strb r5, [r1] - adds r0, 0x84 - strb r5, [r0] - ldr r0, [r6] - adds r0, 0x7B - movs r1, 0xB -_0804941E: - strb r1, [r0] -_08049420: - ldr r5, _080494C8 @ =gUnknown_03004824 - ldr r3, [r5] - adds r1, r3, 0 - adds r1, 0x86 - ldrb r0, [r1] - cmp r0, 0 - beq _080494B8 - adds r0, r3, 0 - adds r0, 0x87 - ldrb r0, [r0] - cmp r0, 0 - beq _080494B8 - ldrh r1, [r1] - ldr r0, _080494CC @ =0x00000101 - cmp r1, r0 - bne _0804946E - adds r1, r3, 0 - adds r1, 0x8C - movs r4, 0 - movs r2, 0 - ldr r0, _080494D0 @ =0x0000ccdd - strh r0, [r1] - adds r0, r3, 0 - adds r0, 0x8E - strh r2, [r0] - movs r0, 0x5 - movs r1, 0 - bl sub_804AADC - ldr r0, [r5] - adds r0, 0x86 - strb r4, [r0] - ldr r0, [r5] - adds r0, 0x87 - strb r4, [r0] - ldr r0, [r5] - adds r0, 0x7B - movs r1, 0x9 - strb r1, [r0] -_0804946E: - ldr r1, [r5] - adds r0, r1, 0 - adds r0, 0x86 - ldrb r0, [r0] - cmp r0, 0x2 - beq _08049484 - adds r0, r1, 0 - adds r0, 0x87 - ldrb r0, [r0] - cmp r0, 0x2 - bne _080494B8 -_08049484: - movs r0, 0x1 - bl sub_804AA0C - ldr r1, [r5] - adds r2, r1, 0 - adds r2, 0x8C - movs r4, 0 - movs r3, 0 - ldr r0, _080494D4 @ =0x0000ddee - strh r0, [r2] - adds r1, 0x8E - strh r3, [r1] - movs r0, 0x5 - movs r1, 0 - bl sub_804AADC - ldr r0, [r5] - adds r0, 0x86 - strb r4, [r0] - ldr r0, [r5] - adds r0, 0x87 - strb r4, [r0] - ldr r0, [r5] - adds r0, 0x7B - movs r1, 0x8 - strb r1, [r0] -_080494B8: - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080494C0: .4byte 0x00000202 -_080494C4: .4byte 0x0000eebb -_080494C8: .4byte gUnknown_03004824 -_080494CC: .4byte 0x00000101 -_080494D0: .4byte 0x0000ccdd -_080494D4: .4byte 0x0000ddee - thumb_func_end sub_80492D8 - - thumb_func_start sub_80494D8 -sub_80494D8: @ 80494D8 - push {r4,lr} - bl GetMultiplayerId - lsls r0, 24 - lsrs r4, r0, 24 - bl GetBlockReceivedStatus - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - beq _08049504 - cmp r4, 0 - bne _080494FA - movs r0, 0 - bl sub_80490BC - b _08049500 -_080494FA: - adds r0, r4, 0 - bl sub_80491E4 -_08049500: - bl ResetBlockReceivedFlags -_08049504: - cmp r4, 0 - bne _0804950C - bl sub_80492D8 -_0804950C: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80494D8 - - thumb_func_start sub_8049514 -sub_8049514: @ 8049514 - push {r4-r6,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r1, 24 - movs r6, 0 - movs r5, 0 - ldr r2, _08049548 @ =gUnknown_03004824 - ldr r3, [r2] - ldr r4, _0804954C @ =gTradeNextSelectedMonTable - lsls r2, r1, 1 - adds r2, r1 - lsls r2, 1 - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 3 - adds r3, 0x44 - adds r2, r1 - adds r2, r4 -_0804953A: - ldrb r1, [r2] - adds r0, r3, r1 - ldrb r0, [r0] - cmp r0, 0x1 - bne _08049550 - adds r6, r1, 0 - b _08049558 - .align 2, 0 -_08049548: .4byte gUnknown_03004824 -_0804954C: .4byte gTradeNextSelectedMonTable -_08049550: - adds r2, 0x1 - adds r5, 0x1 - cmp r5, 0x5 - ble _0804953A -_08049558: - adds r0, r6, 0 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_8049514 - - thumb_func_start sub_8049560 -sub_8049560: @ 8049560 - push {r4-r7,lr} - adds r7, r0, 0 - lsls r1, 24 - lsrs r1, 24 - ldrb r0, [r7] - bl sub_8049514 - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0xC - bne _080495B8 - ldr r5, _080495B0 @ =gUnknown_03004824 - ldr r0, [r5] - adds r0, 0x40 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r4, _080495B4 @ =gSprites - adds r0, r4 - movs r1, 0x1 - bl StartSpriteAnim - ldr r2, [r5] - adds r2, 0x40 - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0xE0 - strh r1, [r0, 0x20] - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0xA0 - strh r1, [r0, 0x22] - b _08049600 - .align 2, 0 -_080495B0: .4byte gUnknown_03004824 -_080495B4: .4byte gSprites -_080495B8: - ldr r4, _08049614 @ =gUnknown_03004824 - ldr r0, [r4] - adds r0, 0x40 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r5, _08049618 @ =gSprites - adds r0, r5 - movs r1, 0 - bl StartSpriteAnim - ldr r4, [r4] - adds r4, 0x40 - ldrb r0, [r4] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r5 - ldr r2, _0804961C @ =gTradeMonSpriteCoords - lsls r3, r6, 1 - adds r0, r3, r2 - ldrb r0, [r0] - lsls r0, 3 - adds r0, 0x20 - strh r0, [r1, 0x20] - ldrb r0, [r4] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r5 - adds r2, 0x1 - adds r3, r2 - ldrb r0, [r3] - lsls r0, 3 - strh r0, [r1, 0x22] -_08049600: - ldrb r0, [r7] - cmp r0, r6 - beq _0804960C - movs r0, 0x5 - bl PlaySE -_0804960C: - strb r6, [r7] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08049614: .4byte gUnknown_03004824 -_08049618: .4byte gSprites -_0804961C: .4byte gTradeMonSpriteCoords - thumb_func_end sub_8049560 - - thumb_func_start sub_8049620 -sub_8049620: @ 8049620 - push {r4,lr} - movs r0, 0 - bl sub_804AA0C - ldr r4, _08049668 @ =gUnknown_03004824 - ldr r0, [r4] - adds r0, 0x7B - movs r1, 0x5 - strb r1, [r0] - bl GetMultiplayerId - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08049670 - ldr r2, [r4] - adds r1, r2, 0 - adds r1, 0x8C - ldr r0, _0804966C @ =0x0000aabb - strh r0, [r1] - adds r0, r2, 0 - adds r0, 0x41 - ldrb r1, [r0] - adds r0, 0x4D - strh r1, [r0] - bl bitmask_all_link_players_but_self - lsls r0, 24 - lsrs r0, 24 - ldr r1, [r4] - adds r1, 0x8C - movs r2, 0x14 - bl SendBlock - b _08049678 - .align 2, 0 -_08049668: .4byte gUnknown_03004824 -_0804966C: .4byte 0x0000aabb -_08049670: - ldr r0, [r4] - adds r0, 0x84 - movs r1, 0x1 - strb r1, [r0] -_08049678: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8049620 - - thumb_func_start sub_8049680 -sub_8049680: @ 8049680 - push {r4,lr} - sub sp, 0x8 - ldr r0, _080496A0 @ =gMain - ldrh r1, [r0, 0x30] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _080496A8 - ldr r0, _080496A4 @ =gUnknown_03004824 - ldr r0, [r0] - adds r0, 0x41 - movs r1, 0 - bl sub_8049560 - b _080496F4 - .align 2, 0 -_080496A0: .4byte gMain -_080496A4: .4byte gUnknown_03004824 -_080496A8: - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _080496C4 - ldr r0, _080496C0 @ =gUnknown_03004824 - ldr r0, [r0] - adds r0, 0x41 - movs r1, 0x1 - bl sub_8049560 - b _080496F4 - .align 2, 0 -_080496C0: .4byte gUnknown_03004824 -_080496C4: - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _080496E0 - ldr r0, _080496DC @ =gUnknown_03004824 - ldr r0, [r0] - adds r0, 0x41 - movs r1, 0x2 - bl sub_8049560 - b _080496F4 - .align 2, 0 -_080496DC: .4byte gUnknown_03004824 -_080496E0: - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080496F4 - ldr r0, _08049750 @ =gUnknown_03004824 - ldr r0, [r0] - adds r0, 0x41 - movs r1, 0x3 - bl sub_8049560 -_080496F4: - ldr r0, _08049754 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080497B6 - movs r0, 0x5 - bl PlaySE - ldr r4, _08049750 @ =gUnknown_03004824 - ldr r0, [r4] - adds r1, r0, 0 - adds r1, 0x41 - ldrb r1, [r1] - cmp r1, 0x5 - bhi _0804975C - adds r0, 0x4 - movs r1, 0x13 - str r1, [sp] - movs r1, 0x12 - movs r2, 0xE - movs r3, 0x1C - bl DrawTextWindow - ldr r3, _08049758 @ =gUnknown_0820C320 - movs r0, 0x13 - movs r1, 0xF - movs r2, 0x2 - bl PrintMenuItems - movs r0, 0 - str r0, [sp] - movs r0, 0x9 - str r0, [sp, 0x4] - movs r0, 0 - movs r1, 0x13 - movs r2, 0xF - movs r3, 0x2 - bl InitMenu - ldr r0, [r4] - adds r0, 0x7B - movs r1, 0x1 - strb r1, [r0] - b _080497B6 - .align 2, 0 -_08049750: .4byte gUnknown_03004824 -_08049754: .4byte gMain -_08049758: .4byte gUnknown_0820C320 -_0804975C: - cmp r1, 0xB - bhi _0804977A - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, [r4] - adds r0, 0x7B - movs r1, 0x2 - strb r1, [r0] - b _080497B6 -_0804977A: - cmp r1, 0xC - bne _080497B6 - adds r0, 0x4 - movs r1, 0x13 - str r1, [sp] - movs r1, 0x18 - movs r2, 0xE - movs r3, 0x1D - bl DrawTextWindow - movs r0, 0x18 - movs r1, 0xE - movs r2, 0x4 - bl InitYesNoMenu - ldr r0, [r4] - adds r0, 0x7B - movs r1, 0x4 - strb r1, [r0] - ldr r0, _080497F4 @ =gUnknown_0820C14C - ldr r0, [r0, 0x10] - ldr r1, [r4] - adds r1, 0x7E - ldrh r1, [r1] - lsls r1, 5 - ldr r2, _080497F8 @ =0x06010000 - adds r1, r2 - movs r2, 0x14 - bl sub_804ACD8 -_080497B6: - ldr r0, _080497FC @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x80 - lsls r0, 1 - ands r0, r1 - cmp r0, 0 - beq _080497EC - movs r2, 0 - ldr r3, _08049800 @ =gUnknown_03004824 -_080497C8: - ldr r0, [r3] - lsls r1, r2, 1 - adds r0, 0x8C - adds r0, r1 - strh r2, [r0] - adds r2, 0x1 - cmp r2, 0x9 - ble _080497C8 - bl bitmask_all_link_players_but_self - lsls r0, 24 - lsrs r0, 24 - ldr r1, _08049800 @ =gUnknown_03004824 - ldr r1, [r1] - adds r1, 0x8C - movs r2, 0x14 - bl SendBlock -_080497EC: - add sp, 0x8 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080497F4: .4byte gUnknown_0820C14C -_080497F8: .4byte 0x06010000 -_080497FC: .4byte gMain -_08049800: .4byte gUnknown_03004824 - thumb_func_end sub_8049680 - - thumb_func_start sub_8049804 -sub_8049804: @ 8049804 - push {lr} - bl HandleDestroyMenuCursors - bl sub_804A80C - ldr r3, _08049850 @ =gUnknown_03004824 - ldr r0, [r3] - adds r0, 0x7B - movs r1, 0 - strb r1, [r0] - ldr r2, _08049854 @ =gSprites - ldr r0, [r3] - adds r0, 0x40 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - adds r0, 0x3E - ldrb r2, [r0] - movs r1, 0x5 - negs r1, r1 - ands r1, r2 - strb r1, [r0] - ldr r0, _08049858 @ =gUnknown_0820C14C - ldr r0, [r0, 0x4] - ldr r1, [r3] - adds r1, 0x7E - ldrh r1, [r1] - lsls r1, 5 - ldr r2, _0804985C @ =0x06010000 - adds r1, r2 - movs r2, 0x14 - bl sub_804ACD8 - pop {r0} - bx r0 - .align 2, 0 -_08049850: .4byte gUnknown_03004824 -_08049854: .4byte gSprites -_08049858: .4byte gUnknown_0820C14C -_0804985C: .4byte 0x06010000 - thumb_func_end sub_8049804 - - thumb_func_start sub_8049860 -sub_8049860: @ 8049860 - push {r4,lr} - sub sp, 0x4 - ldr r0, _0804987C @ =gMain - ldrh r1, [r0, 0x30] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _08049880 - movs r0, 0x5 - bl PlaySE - movs r0, 0x1 - negs r0, r0 - b _08049890 - .align 2, 0 -_0804987C: .4byte gMain -_08049880: - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0804989C - movs r0, 0x5 - bl PlaySE - movs r0, 0x1 -_08049890: - bl MoveMenuCursor - ldr r1, _080498D8 @ =gUnknown_03004824 - ldr r1, [r1] - adds r1, 0x7C - strb r0, [r1] -_0804989C: - ldr r0, _080498DC @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08049938 - movs r0, 0x5 - bl PlaySE - bl GetMenuCursorPos - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _080498E0 - movs r0, 0x1 - negs r0, r0 - str r1, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, _080498D8 @ =gUnknown_03004824 - ldr r0, [r0] - adds r0, 0x7B - movs r1, 0x2 - strb r1, [r0] - b _0804994A - .align 2, 0 -_080498D8: .4byte gUnknown_03004824 -_080498DC: .4byte gMain -_080498E0: - ldr r4, _08049910 @ =gUnknown_03004824 - ldr r2, [r4] - adds r0, r2, 0 - adds r0, 0x51 - adds r1, r2, 0 - adds r1, 0x42 - ldrb r1, [r1] - adds r2, 0x41 - ldrb r2, [r2] - bl sub_80499F0 - lsls r0, 24 - cmp r0, 0 - bne _08049914 - movs r0, 0x3 - movs r1, 0x2 - bl sub_804AADC - ldr r0, [r4] - adds r0, 0x7B - movs r1, 0x8 - strb r1, [r0] - b _0804994A - .align 2, 0 -_08049910: .4byte gUnknown_03004824 -_08049914: - bl sub_8049620 - ldr r2, _08049934 @ =gSprites - ldr r0, [r4] - adds r0, 0x40 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] - b _0804994A - .align 2, 0 -_08049934: .4byte gSprites -_08049938: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0804994A - movs r0, 0x5 - bl PlaySE - bl sub_8049804 -_0804994A: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8049860 - - thumb_func_start sub_8049954 -sub_8049954: @ 8049954 - push {lr} - ldr r0, _08049978 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _0804996A - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08049974 -_0804996A: - movs r0, 0x5 - bl PlaySE - bl sub_8049804 -_08049974: - pop {r0} - bx r0 - .align 2, 0 -_08049978: .4byte gMain - thumb_func_end sub_8049954 - - thumb_func_start sub_804997C -sub_804997C: @ 804997C - push {r4,lr} - sub sp, 0x4 - ldr r0, _080499B4 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080499E0 - ldr r0, _080499B8 @ =gUnknown_03004824 - ldr r2, [r0] - adds r3, r2, 0 - adds r3, 0x41 - ldrb r1, [r3] - cmp r1, 0x5 - bhi _080499C4 - ldr r0, _080499BC @ =gPlayerParty - ldrb r1, [r3] - adds r2, 0x42 - ldrb r2, [r2] - subs r2, 0x1 - lsls r2, 24 - lsrs r2, 24 - ldr r3, _080499C0 @ =sub_80484F4 - movs r4, 0x4 - str r4, [sp] - bl ShowPokemonSummaryScreen - b _080499E0 - .align 2, 0 -_080499B4: .4byte gPaletteFade -_080499B8: .4byte gUnknown_03004824 -_080499BC: .4byte gPlayerParty -_080499C0: .4byte sub_80484F4 -_080499C4: - ldr r0, _080499E8 @ =gEnemyParty - subs r1, 0x6 - lsls r1, 24 - lsrs r1, 24 - adds r2, 0x43 - ldrb r2, [r2] - subs r2, 0x1 - lsls r2, 24 - lsrs r2, 24 - ldr r3, _080499EC @ =sub_80484F4 - movs r4, 0x4 - str r4, [sp] - bl ShowPokemonSummaryScreen -_080499E0: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080499E8: .4byte gEnemyParty -_080499EC: .4byte sub_80484F4 - thumb_func_end sub_804997C - - thumb_func_start sub_80499F0 -sub_80499F0: @ 80499F0 - push {r4,r5,lr} - adds r5, r0, 0 - lsls r1, 24 - lsrs r4, r1, 24 - lsls r2, 24 - lsrs r2, 24 - movs r1, 0 - movs r3, 0 - cmp r1, r4 - bge _08049A18 -_08049A04: - cmp r2, r3 - beq _08049A12 - adds r0, r5, r3 - ldrb r0, [r0] - adds r0, r1, r0 - lsls r0, 24 - lsrs r1, r0, 24 -_08049A12: - adds r3, 0x1 - cmp r3, r4 - blt _08049A04 -_08049A18: - adds r0, r1, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80499F0 - - thumb_func_start sub_8049A20 -sub_8049A20: @ 8049A20 - push {r4,r5,lr} - sub sp, 0xC - movs r2, 0 - ldr r0, _08049A80 @ =gUnknown_03004824 - ldr r1, [r0] - adds r3, r1, 0 - adds r3, 0x42 - adds r5, r0, 0 - ldrb r0, [r3] - cmp r2, r0 - bge _08049A4C - adds r4, r1, 0 - adds r4, 0x51 -_08049A3A: - mov r1, sp - adds r0, r1, r2 - adds r1, r4, r2 - ldrb r1, [r1] - strb r1, [r0] - adds r2, 0x1 - ldrb r0, [r3] - cmp r2, r0 - blt _08049A3A -_08049A4C: - adds r4, r5, 0 - ldr r0, [r4] - adds r1, r0, 0 - adds r1, 0x42 - ldrb r1, [r1] - adds r0, 0x41 - ldrb r2, [r0] - mov r0, sp - bl sub_80499F0 - lsls r0, 24 - cmp r0, 0 - bne _08049A88 - movs r0, 0x3 - movs r1, 0x2 - bl sub_804AADC - ldr r0, [r4] - adds r0, 0x8C - ldr r1, _08049A84 @ =0x0000bbcc - strh r1, [r0] - movs r0, 0xB4 - movs r1, 0 - bl sub_804AADC - b _08049AB4 - .align 2, 0 -_08049A80: .4byte gUnknown_03004824 -_08049A84: .4byte 0x0000bbcc -_08049A88: - movs r0, 0x3 - movs r1, 0x1 - bl sub_804AADC - ldr r0, [r5] - adds r0, 0x8C - ldr r1, _08049ABC @ =0x0000bbbb - strh r1, [r0] - bl sub_8007ECC - lsls r0, 24 - cmp r0, 0 - beq _08049AB4 - bl bitmask_all_link_players_but_self - lsls r0, 24 - lsrs r0, 24 - ldr r1, [r5] - adds r1, 0x8C - movs r2, 0x14 - bl SendBlock -_08049AB4: - add sp, 0xC - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08049ABC: .4byte 0x0000bbbb - thumb_func_end sub_8049A20 - - thumb_func_start sub_8049AC0 -sub_8049AC0: @ 8049AC0 - push {r4,lr} - ldr r0, _08049ADC @ =gMain - ldrh r1, [r0, 0x30] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _08049AE0 - movs r0, 0x5 - bl PlaySE - movs r0, 0x1 - negs r0, r0 - b _08049AF0 - .align 2, 0 -_08049ADC: .4byte gMain -_08049AE0: - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08049AFC - movs r0, 0x5 - bl PlaySE - movs r0, 0x1 -_08049AF0: - bl MoveMenuCursor - ldr r1, _08049B20 @ =gUnknown_03004824 - ldr r1, [r1] - adds r1, 0x7C - strb r0, [r1] -_08049AFC: - ldr r0, _08049B24 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08049B64 - movs r0, 0x5 - bl PlaySE - bl GetMenuCursorPos - lsls r0, 24 - cmp r0, 0 - bne _08049B28 - bl sub_8049A20 - b _08049B56 - .align 2, 0 -_08049B20: .4byte gUnknown_03004824 -_08049B24: .4byte gMain -_08049B28: - movs r0, 0x3 - movs r1, 0x1 - bl sub_804AADC - bl sub_8007ECC - lsls r0, 24 - cmp r0, 0 - beq _08049B56 - ldr r4, _08049B5C @ =gUnknown_03004824 - ldr r0, [r4] - adds r0, 0x8C - ldr r1, _08049B60 @ =0x0000bbcc - strh r1, [r0] - bl bitmask_all_link_players_but_self - lsls r0, 24 - lsrs r0, 24 - ldr r1, [r4] - adds r1, 0x8C - movs r2, 0x14 - bl SendBlock -_08049B56: - ldr r0, _08049B5C @ =gUnknown_03004824 - ldr r0, [r0] - b _08049BAA - .align 2, 0 -_08049B5C: .4byte gUnknown_03004824 -_08049B60: .4byte 0x0000bbcc -_08049B64: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08049BB0 - movs r0, 0x3 - movs r1, 0x1 - bl sub_804AADC - bl GetMenuCursorPos - lsls r0, 24 - cmp r0, 0 - bne _08049B8C - movs r0, 0x1 - bl MoveMenuCursor - ldr r1, _08049BB8 @ =gUnknown_03004824 - ldr r1, [r1] - adds r1, 0x7C - strb r0, [r1] -_08049B8C: - ldr r4, _08049BB8 @ =gUnknown_03004824 - ldr r0, [r4] - adds r0, 0x8C - ldr r1, _08049BBC @ =0x0000bbcc - strh r1, [r0] - bl bitmask_all_link_players_but_self - lsls r0, 24 - lsrs r0, 24 - ldr r1, [r4] - adds r1, 0x8C - movs r2, 0x14 - bl SendBlock - ldr r0, [r4] -_08049BAA: - adds r0, 0x7B - movs r1, 0x64 - strb r1, [r0] -_08049BB0: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08049BB8: .4byte gUnknown_03004824 -_08049BBC: .4byte 0x0000bbcc - thumb_func_end sub_8049AC0 - - thumb_func_start sub_8049BC0 -sub_8049BC0: @ 8049BC0 - push {r4,r5,lr} - ldr r0, _08049BDC @ =gMain - ldrh r1, [r0, 0x30] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _08049BE0 - movs r0, 0x5 - bl PlaySE - movs r0, 0x1 - negs r0, r0 - b _08049BF0 - .align 2, 0 -_08049BDC: .4byte gMain -_08049BE0: - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08049BFC - movs r0, 0x5 - bl PlaySE - movs r0, 0x1 -_08049BF0: - bl MoveMenuCursor - ldr r1, _08049C5C @ =gUnknown_03004824 - ldr r1, [r1] - adds r1, 0x7C - strb r0, [r1] -_08049BFC: - ldr r0, _08049C60 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08049C72 - movs r0, 0x5 - bl PlaySE - bl GetMenuCursorPos - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0 - bne _08049C6C - movs r0, 0x4 - bl sub_804AA0C - ldr r4, _08049C5C @ =gUnknown_03004824 - ldr r0, [r4] - adds r2, r0, 0 - adds r2, 0x8C - ldr r1, _08049C64 @ =0x0000eeaa - strh r1, [r2] - adds r0, 0x8E - strh r5, [r0] - movs r0, 0x5 - movs r1, 0 - bl sub_804AADC - ldr r2, _08049C68 @ =gSprites - ldr r0, [r4] - adds r0, 0x40 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] - ldr r0, [r4] - adds r0, 0x7B - movs r1, 0x64 - strb r1, [r0] - b _08049C84 - .align 2, 0 -_08049C5C: .4byte gUnknown_03004824 -_08049C60: .4byte gMain -_08049C64: .4byte 0x0000eeaa -_08049C68: .4byte gSprites -_08049C6C: - bl sub_8049804 - b _08049C84 -_08049C72: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08049C84 - movs r0, 0x5 - bl PlaySE - bl sub_8049804 -_08049C84: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8049BC0 - - thumb_func_start sub_8049C8C -sub_8049C8C: @ 8049C8C - push {r4,lr} - bl GetMultiplayerId - lsls r0, 24 - cmp r0, 0 - bne _08049CAE - ldr r4, _08049CC0 @ =gUnknown_03004824 - ldr r0, [r4] - adds r0, 0x41 - ldrb r0, [r0] - bl sub_8049E9C - ldr r0, [r4] - adds r0, 0x8A - ldrb r0, [r0] - bl sub_8049E9C -_08049CAE: - ldr r0, _08049CC0 @ =gUnknown_03004824 - ldr r0, [r0] - adds r0, 0x7B - movs r1, 0x7 - strb r1, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08049CC0: .4byte gUnknown_03004824 - thumb_func_end sub_8049C8C - - thumb_func_start sub_8049CC4 -sub_8049CC4: @ 8049CC4 - push {r4,lr} - ldr r4, _08049CE8 @ =gUnknown_03004824 - ldr r0, [r4] - adds r0, 0x80 - ldrh r1, [r0] - ldr r0, _08049CEC @ =0x00000505 - cmp r1, r0 - bne _08049CE0 - bl sub_8049088 - ldr r0, [r4] - adds r0, 0x7B - movs r1, 0xE - strb r1, [r0] -_08049CE0: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08049CE8: .4byte gUnknown_03004824 -_08049CEC: .4byte 0x00000505 - thumb_func_end sub_8049CC4 - - thumb_func_start DisplayMessageAndContinueTask -DisplayMessageAndContinueTask: @ 8049CF0 - push {r4,lr} - sub sp, 0x4 - ldr r4, _08049D40 @ =gUnknown_03004824 - ldr r1, [r4] - adds r1, 0xB4 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r1, [r4] - adds r0, r1, 0 - adds r0, 0xB4 - ldrb r0, [r0] - cmp r0, 0x78 - bls _08049D36 - adds r0, r1, 0x4 - movs r1, 0x13 - str r1, [sp] - movs r1, 0x18 - movs r2, 0xE - movs r3, 0x1D - bl DrawTextWindow - movs r0, 0x18 - movs r1, 0xE - movs r2, 0x4 - bl InitYesNoMenu - ldr r0, [r4] - adds r0, 0xB4 - movs r1, 0 - strb r1, [r0] - ldr r0, [r4] - adds r0, 0x7B - movs r1, 0x3 - strb r1, [r0] -_08049D36: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08049D40: .4byte gUnknown_03004824 - thumb_func_end DisplayMessageAndContinueTask - - thumb_func_start sub_8049D44 -sub_8049D44: @ 8049D44 - push {lr} - ldr r0, _08049D90 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08049D8A - movs r0, 0x5 - bl PlaySE - movs r0, 0 - bl sub_804A840 - movs r0, 0x1 - bl sub_804A840 - ldr r2, _08049D94 @ =gUnknown_03004824 - ldr r0, [r2] - adds r0, 0x7B - movs r1, 0 - strb r1, [r0] - ldr r3, _08049D98 @ =gSprites - ldr r0, [r2] - adds r0, 0x40 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - adds r0, 0x3E - ldrb r2, [r0] - movs r1, 0x5 - negs r1, r1 - ands r1, r2 - strb r1, [r0] -_08049D8A: - pop {r0} - bx r0 - .align 2, 0 -_08049D90: .4byte gMain -_08049D94: .4byte gUnknown_03004824 -_08049D98: .4byte gSprites - thumb_func_end sub_8049D44 - - thumb_func_start sub_8049D9C -sub_8049D9C: @ 8049D9C - push {lr} - ldr r0, _08049DBC @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08049DB8 - bl sub_800832C - ldr r0, _08049DC0 @ =gUnknown_03004824 - ldr r0, [r0] - adds r0, 0x7B - movs r1, 0xC - strb r1, [r0] -_08049DB8: - pop {r0} - bx r0 - .align 2, 0 -_08049DBC: .4byte gPaletteFade -_08049DC0: .4byte gUnknown_03004824 - thumb_func_end sub_8049D9C - - thumb_func_start sub_8049DC4 -sub_8049DC4: @ 8049DC4 - push {lr} - ldr r0, _08049DD8 @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - bne _08049DD4 - ldr r0, _08049DDC @ =sub_805465C - bl SetMainCallback2 -_08049DD4: - pop {r0} - bx r0 - .align 2, 0 -_08049DD8: .4byte gReceivedRemoteLinkPlayers -_08049DDC: .4byte sub_805465C - thumb_func_end sub_8049DC4 - - thumb_func_start sub_8049DE0 -sub_8049DE0: @ 8049DE0 - push {lr} - ldr r0, _08049DF8 @ =gUnknown_03004824 - ldr r0, [r0] - adds r0, 0x7B - ldrb r0, [r0] - cmp r0, 0xF - bhi _08049E98 - lsls r0, 2 - ldr r1, _08049DFC @ =_08049E00 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08049DF8: .4byte gUnknown_03004824 -_08049DFC: .4byte _08049E00 - .align 2, 0 -_08049E00: - .4byte _08049E40 - .4byte _08049E46 - .4byte _08049E4C - .4byte _08049E52 - .4byte _08049E58 - .4byte _08049E98 - .4byte _08049E5E - .4byte _08049E64 - .4byte _08049E6A - .4byte _08049E70 - .4byte _08049E76 - .4byte _08049E7C - .4byte _08049E82 - .4byte _08049E88 - .4byte _08049E8E - .4byte _08049E94 -_08049E40: - bl sub_8049680 - b _08049E98 -_08049E46: - bl sub_8049860 - b _08049E98 -_08049E4C: - bl sub_804997C - b _08049E98 -_08049E52: - bl sub_8049AC0 - b _08049E98 -_08049E58: - bl sub_8049BC0 - b _08049E98 -_08049E5E: - bl sub_8049C8C - b _08049E98 -_08049E64: - bl sub_8049CC4 - b _08049E98 -_08049E6A: - bl sub_8049D44 - b _08049E98 -_08049E70: - bl sub_8048A14 - b _08049E98 -_08049E76: - bl sub_8048A50 - b _08049E98 -_08049E7C: - bl sub_8049D9C - b _08049E98 -_08049E82: - bl sub_8049DC4 - b _08049E98 -_08049E88: - bl sub_8048A90 - b _08049E98 -_08049E8E: - bl DisplayMessageAndContinueTask - b _08049E98 -_08049E94: - bl sub_8049954 -_08049E98: - pop {r0} - bx r0 - thumb_func_end sub_8049DE0 - - thumb_func_start sub_8049E9C -sub_8049E9C: @ 8049E9C - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - adds r0, r4, 0 - movs r1, 0x6 - bl __udivsi3 - lsls r0, 24 - lsrs r2, r0, 24 - ldr r3, _08049ED0 @ =gUnknown_03004824 - ldr r0, [r3] - adds r0, 0x80 - adds r1, r0, r2 - ldrb r0, [r1] - cmp r0, 0 - bne _08049EC8 - movs r0, 0x1 - strb r0, [r1] - ldr r0, [r3] - adds r0, 0x82 - adds r0, r2 - strb r4, [r0] -_08049EC8: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08049ED0: .4byte gUnknown_03004824 - thumb_func_end sub_8049E9C - - thumb_func_start sub_8049ED4 -sub_8049ED4: @ 8049ED4 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x74 - lsls r0, 24 - lsrs r0, 24 - mov r10, r0 - ldr r0, _08049F24 @ =gUnknown_03004824 - ldr r5, [r0] - adds r0, r5, 0 - adds r0, 0x82 - add r0, r10 - ldrb r0, [r0] - movs r1, 0x1 - str r1, [sp, 0x6C] - cmp r0, 0x5 - bhi _08049EFE - movs r2, 0 - str r2, [sp, 0x6C] -_08049EFE: - movs r1, 0x6 - bl __umodsi3 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - adds r0, r5, 0 - adds r0, 0x80 - mov r1, r10 - adds r3, r0, r1 - ldrb r0, [r3] - cmp r0, 0x2 - bne _08049F1A - b _0804A0AC -_08049F1A: - cmp r0, 0x2 - bgt _08049F28 - cmp r0, 0x1 - beq _08049F36 - b _0804A294 - .align 2, 0 -_08049F24: .4byte gUnknown_03004824 -_08049F28: - cmp r0, 0x3 - bne _08049F2E - b _0804A0E4 -_08049F2E: - cmp r0, 0x4 - bne _08049F34 - b _0804A244 -_08049F34: - b _0804A294 -_08049F36: - movs r4, 0 - adds r0, r5, 0 - adds r0, 0x42 - add r0, r10 - ldr r7, _0804A094 @ =gSprites - ldr r2, [sp, 0x6C] - lsls r2, 1 - mov r9, r2 - ldr r3, _0804A098 @ =gTradeMonSpriteCoords - mov r12, r3 - mov r5, r10 - lsls r5, 4 - str r5, [sp, 0x70] - ldrb r0, [r0] - cmp r4, r0 - bcs _08049F8E - adds r6, r7, 0 - ldr r2, _0804A09C @ =gUnknown_03004824 - ldr r0, [sp, 0x6C] - add r0, r9 - lsls r3, r0, 1 - movs r5, 0x4 -_08049F62: - ldr r0, [r2] - adds r1, r4, r3 - adds r0, 0x34 - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - adds r0, 0x3E - ldrb r1, [r0] - orrs r1, r5 - strb r1, [r0] - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, [r2] - adds r0, 0x42 - add r0, r10 - ldrb r0, [r0] - cmp r4, r0 - bcc _08049F62 -_08049F8E: - ldr r1, _0804A09C @ =gUnknown_03004824 - ldr r0, [r1] - ldr r5, [sp, 0x6C] - add r5, r9 - lsls r3, r5, 1 - mov r2, r8 - adds r6, r2, r3 - adds r0, 0x34 - adds r0, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r7 - adds r0, 0x3E - ldrb r2, [r0] - movs r1, 0x5 - negs r1, r1 - ands r1, r2 - strb r1, [r0] - ldr r0, _0804A09C @ =gUnknown_03004824 - ldr r4, [r0] - adds r4, 0x34 - adds r4, r6 - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r7 - movs r1, 0x14 - strh r1, [r0, 0x2E] - ldrb r0, [r4] - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - adds r2, r7 - lsls r5, 2 - mov r1, r12 - adds r0, r5, r1 - ldrb r0, [r0] - adds r3, 0x1 - lsls r3, 1 - add r3, r12 - ldrb r1, [r3] - adds r0, r1 - asrs r0, 1 - lsls r0, 3 - adds r0, 0xE - strh r0, [r2, 0x32] - ldrb r0, [r4] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r7 - mov r0, r12 - adds r0, 0x1 - adds r5, r0 - ldrb r0, [r5] - lsls r0, 3 - subs r0, 0xC - strh r0, [r1, 0x36] - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r7 - ldr r1, _0804A0A0 @ =sub_809D62C - bl oamt_set_x3A_32 - ldr r2, _0804A09C @ =gUnknown_03004824 - ldr r1, [r2] - adds r1, 0x80 - add r1, r10 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r0, [r2] - adds r0, 0x34 - adds r0, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r7 - bl sub_8078A34 - bl HandleDestroyMenuCursors - ldr r3, _0804A09C @ =gUnknown_03004824 - ldr r0, [r3] - adds r0, 0x4 - ldr r1, _0804A0A4 @ =gUnknown_0820C330 - mov r5, r9 - adds r2, r5, r1 - ldrb r2, [r2] - adds r1, 0x1 - add r1, r9 - ldrb r1, [r1] - str r1, [sp] - movs r1, 0x13 - str r1, [sp, 0x4] - movs r1, 0 - movs r3, 0 - bl FillWindowRect_DefaultPalette - ldr r1, _0804A09C @ =gUnknown_03004824 - ldr r0, [r1] - adds r0, 0xC8 - ldr r2, [sp, 0x70] - mov r3, r10 - subs r1, r2, r3 - lsls r1, 24 - lsrs r1, 24 - ldr r3, _0804A0A8 @ =gTradePartyBoxTilemap - movs r2, 0xF - str r2, [sp] - movs r2, 0x11 - str r2, [sp, 0x4] - movs r5, 0 - str r5, [sp, 0x8] - movs r2, 0 - bl sub_804A96C_alt - ldr r0, [sp, 0x6C] - cmp r0, 0 - beq _0804A08C - b _0804A294 -_0804A08C: - bl sub_804A80C - b _0804A294 - .align 2, 0 -_0804A094: .4byte gSprites -_0804A098: .4byte gTradeMonSpriteCoords -_0804A09C: .4byte gUnknown_03004824 -_0804A0A0: .4byte sub_809D62C -_0804A0A4: .4byte gUnknown_0820C330 -_0804A0A8: .4byte gTradePartyBoxTilemap -_0804A0AC: - ldr r2, _0804A0DC @ =gSprites - ldr r1, [sp, 0x6C] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 1 - add r0, r8 - adds r1, r5, 0 - adds r1, 0x34 - adds r1, r0 - ldrb r1, [r1] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, [r0] - ldr r0, _0804A0E0 @ =sub_809D62C - cmp r1, r0 - beq _0804A0D4 - b _0804A294 -_0804A0D4: - movs r0, 0x3 - strb r0, [r3] - b _0804A294 - .align 2, 0 -_0804A0DC: .4byte gSprites -_0804A0E0: .4byte sub_809D62C -_0804A0E4: - adds r0, r5, 0 - adds r0, 0xC8 - ldr r2, [sp, 0x6C] - lsls r1, r2, 4 - subs r1, r2 - lsls r1, 24 - lsrs r1, 24 - ldr r3, _0804A228 @ =gTradeMovesBoxTilemap - movs r2, 0xF - str r2, [sp] - movs r7, 0x11 - str r7, [sp, 0x4] - movs r5, 0 - str r5, [sp, 0x8] - movs r2, 0 - bl sub_804A96C_alt - ldr r0, _0804A22C @ =gUnknown_03004824 - ldr r3, [r0] - ldr r1, [sp, 0x6C] - lsls r6, r1, 1 - adds r1, r6 - mov r9, r1 - lsls r1, 1 - mov r2, r8 - adds r0, r2, r1 - adds r3, 0x34 - adds r3, r0 - ldrb r0, [r3] - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - ldr r5, _0804A230 @ =gSprites - adds r2, r5 - ldr r4, _0804A234 @ =gTradeMonSpriteCoords - mov r0, r9 - lsls r5, r0, 2 - adds r0, r5, r4 - ldrb r0, [r0] - adds r1, 0x1 - lsls r1, 1 - adds r1, r4 - ldrb r1, [r1] - adds r0, r1 - asrs r0, 1 - lsls r0, 3 - adds r0, 0xE - strh r0, [r2, 0x20] - ldrb r0, [r3] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - ldr r2, _0804A230 @ =gSprites - adds r1, r2 - adds r4, 0x1 - adds r5, r4 - ldrb r0, [r5] - lsls r0, 3 - subs r0, 0xC - strh r0, [r1, 0x22] - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r5, 0 - strh r5, [r0, 0x24] - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - strh r5, [r0, 0x26] - mov r0, sp - adds r0, 0x12 - ldr r1, [sp, 0x6C] - mov r2, r8 - bl sub_804A2B4 - add r1, sp, 0xC - movs r3, 0xFC - strb r3, [r1] - adds r2, r1, 0 - movs r1, 0x6 - strb r1, [r2, 0x1] - movs r1, 0x4 - strb r1, [r2, 0x2] - adds r1, r2, 0 - strb r3, [r1, 0x3] - strb r7, [r1, 0x4] - lsls r0, 24 - asrs r0, 24 - movs r1, 0x40 - subs r1, r0 - lsrs r0, r1, 31 - adds r1, r0 - asrs r1, 1 - strb r1, [r2, 0x5] - ldr r0, _0804A22C @ =gUnknown_03004824 - ldr r1, [r0] - adds r0, r1, 0x4 - adds r1, 0x7A - ldrb r2, [r1] - mov r1, r9 - lsls r1, 6 - mov r9, r1 - add r2, r9 - ldr r4, _0804A238 @ =gUnknown_0820C334 - ldr r3, [sp, 0x6C] - lsls r1, r3, 2 - adds r3, r1, r4 - ldrb r3, [r3] - ldr r5, _0804A23C @ =gUnknown_0820C334 + 0x1 - adds r1, r5 - ldrb r1, [r1] - str r1, [sp] - add r1, sp, 0xC - bl sub_8003460 - add r7, sp, 0x34 - adds r0, r7, 0 - ldr r1, [sp, 0x6C] - mov r2, r8 - bl sub_804A33C - ldr r0, _0804A22C @ =gUnknown_03004824 - ldr r2, [r0] - adds r0, r2, 0x4 - ldr r1, _0804A240 @ =gOtherText_Terminator2 - adds r2, 0x7A - ldrb r2, [r2] - add r2, r9 - adds r2, 0x20 - adds r6, 0x1 - lsls r6, 1 - adds r4, r6, r4 - ldrb r5, [r4] - ldr r3, _0804A23C @ =gUnknown_0820C334 + 0x1 - adds r6, r3 - ldrb r4, [r6] - adds r4, 0x1 - lsls r4, 24 - lsrs r4, 24 - str r4, [sp] - adds r3, r5, 0 - bl sub_8003460 - ldr r0, _0804A22C @ =gUnknown_03004824 - ldr r1, [r0] - adds r0, r1, 0x4 - adds r1, 0x7A - ldrb r2, [r1] - add r2, r9 - adds r2, 0x26 - str r4, [sp] - adds r1, r7, 0 - adds r3, r5, 0 - bl sub_8003460 - ldr r2, _0804A22C @ =gUnknown_03004824 - ldr r1, [r2] - b _0804A28A - .align 2, 0 -_0804A228: .4byte gTradeMovesBoxTilemap -_0804A22C: .4byte gUnknown_03004824 -_0804A230: .4byte gSprites -_0804A234: .4byte gTradeMonSpriteCoords -_0804A238: .4byte gUnknown_0820C334 -_0804A23C: .4byte gUnknown_0820C334 + 0x1 -_0804A240: .4byte gOtherText_Terminator2 -_0804A244: - ldr r0, _0804A2A4 @ =gUnknown_0820C14C - ldr r0, [r0, 0x14] - adds r1, r5, 0 - adds r1, 0x7E - ldrh r1, [r1] - lsls r1, 5 - ldr r3, _0804A2A8 @ =0x06010000 - adds r1, r3 - movs r2, 0x14 - bl sub_804ACD8 - ldr r0, _0804A2AC @ =gUnknown_0820C3D1 - mov r5, r10 - lsls r1, r5, 1 - adds r4, r1, r0 - ldrb r2, [r4] - adds r2, 0x4 - lsls r2, 24 - lsrs r2, 24 - adds r0, 0x1 - adds r1, r0 - ldrb r3, [r1] - adds r3, 0x1 - lsls r3, 24 - lsrs r3, 24 - ldrb r0, [r4] - str r0, [sp] - ldrb r0, [r1] - str r0, [sp, 0x4] - mov r0, r10 - mov r1, r8 - bl sub_804A51C - ldr r0, _0804A2B0 @ =gUnknown_03004824 - ldr r1, [r0] -_0804A28A: - adds r1, 0x80 - add r1, r10 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_0804A294: - add sp, 0x74 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804A2A4: .4byte gUnknown_0820C14C -_0804A2A8: .4byte 0x06010000 -_0804A2AC: .4byte gUnknown_0820C3D1 -_0804A2B0: .4byte gUnknown_03004824 - thumb_func_end sub_8049ED4 - - thumb_func_start sub_804A2B4 -sub_804A2B4: @ 804A2B4 - push {r4,r5,lr} - sub sp, 0xC - adds r5, r0, 0 - lsls r1, 24 - lsls r2, 24 - lsrs r2, 24 - cmp r1, 0 - bne _0804A2F4 - movs r0, 0x64 - adds r4, r2, 0 - muls r4, r0 - ldr r0, _0804A2F0 @ =gPlayerParty - adds r4, r0 - adds r0, r4, 0 - movs r1, 0x2 - mov r2, sp - bl GetMonData - adds r0, r5, 0 - mov r1, sp - bl StringCopy10 - adds r0, r4, 0 - bl GetMonGender - adds r0, r4, 0 - movs r1, 0x38 - bl GetMonData - b _0804A31E - .align 2, 0 -_0804A2F0: .4byte gPlayerParty -_0804A2F4: - movs r0, 0x64 - adds r4, r2, 0 - muls r4, r0 - ldr r0, _0804A334 @ =gEnemyParty - adds r4, r0 - adds r0, r4, 0 - movs r1, 0x2 - mov r2, sp - bl GetMonData - adds r0, r5, 0 - mov r1, sp - bl StringCopy10 - adds r0, r4, 0 - bl GetMonGender - adds r0, r4, 0 - movs r1, 0x38 - bl GetMonData -_0804A31E: - ldr r0, _0804A338 @ =gWindowConfig_81E7294 - adds r1, r5, 0 - bl GetStringWidthGivenWindowConfig - lsls r0, 24 - lsrs r0, 24 - add sp, 0xC - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0804A334: .4byte gEnemyParty -_0804A338: .4byte gWindowConfig_81E7294 - thumb_func_end sub_804A2B4 - - thumb_func_start sub_804A33C -sub_804A33C: @ 804A33C - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x8 - adds r6, r0, 0 - lsls r1, 24 - lsrs r7, r1, 24 - lsls r2, 24 - lsrs r2, 24 - ldr r0, _0804A384 @ =gUnknown_03004824 - ldr r1, [r0] - lsls r0, r7, 1 - adds r0, r7 - lsls r0, 1 - adds r0, r2, r0 - adds r1, 0x5D - adds r1, r0 - ldrb r0, [r1] - cmp r0, 0 - bne _0804A3F4 - movs r4, 0 - movs r0, 0x64 - adds r5, r2, 0 - muls r5, r0 - ldr r0, _0804A388 @ =gPlayerParty - mov r9, r0 - ldr r2, _0804A38C @ =gEnemyParty - mov r8, r2 -_0804A376: - cmp r7, 0 - bne _0804A390 - adds r1, r4, 0 - adds r1, 0xD - mov r2, r9 - b _0804A396 - .align 2, 0 -_0804A384: .4byte gUnknown_03004824 -_0804A388: .4byte gPlayerParty -_0804A38C: .4byte gEnemyParty -_0804A390: - adds r1, r4, 0 - adds r1, 0xD - mov r2, r8 -_0804A396: - adds r0, r5, r2 - movs r2, 0 - bl GetMonData - lsls r1, r4, 1 - add r1, sp - strh r0, [r1] - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x3 - bls _0804A376 - ldr r1, _0804A3E8 @ =gOtherText_Terminator - adds r0, r6, 0 - bl StringCopy - movs r4, 0 -_0804A3B8: - lsls r0, r4, 1 - mov r2, sp - adds r1, r2, r0 - ldrh r0, [r1] - cmp r0, 0 - beq _0804A3D4 - adds r1, r0, 0 - movs r0, 0xD - muls r1, r0 - ldr r0, _0804A3EC @ =gMoveNames - adds r1, r0 - adds r0, r6, 0 - bl StringAppend -_0804A3D4: - adds r0, r6, 0 - ldr r1, _0804A3F0 @ =gOtherText_ControlAndMiscText - bl StringAppend - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x3 - bls _0804A3B8 - b _0804A404 - .align 2, 0 -_0804A3E8: .4byte gOtherText_Terminator -_0804A3EC: .4byte gMoveNames -_0804A3F0: .4byte gOtherText_ControlAndMiscText -_0804A3F4: - ldr r1, _0804A414 @ =gOtherText_Terminator - adds r0, r6, 0 - bl StringCopy - ldr r1, _0804A418 @ =gOtherText_FourQuestions - adds r0, r6, 0 - bl StringAppend -_0804A404: - add sp, 0x8 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804A414: .4byte gOtherText_Terminator -_0804A418: .4byte gOtherText_FourQuestions - thumb_func_end sub_804A33C - - thumb_func_start sub_804A41C -sub_804A41C: @ 804A41C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x44 - lsls r0, 24 - lsrs r5, r0, 24 - add r3, sp, 0x1C - movs r2, 0 - movs r1, 0xFC - strb r1, [r3] - movs r0, 0x6 - strb r0, [r3, 0x1] - movs r0, 0x4 - strb r0, [r3, 0x2] - strb r1, [r3, 0x3] - movs r0, 0x11 - strb r0, [r3, 0x4] - strb r2, [r3, 0x5] - movs r6, 0 - ldr r1, _0804A470 @ =gUnknown_03004824 - ldr r0, [r1] - adds r0, 0x42 - adds r0, r5 - ldrb r0, [r0] - cmp r6, r0 - bcs _0804A504 - mov r8, r3 - adds r7, r1, 0 - ldr r0, _0804A474 @ =gTradeMonSpriteCoords - mov r9, r0 - movs r4, 0x1 - add r4, r9 - mov r10, r4 -_0804A462: - cmp r5, 0 - bne _0804A47C - movs r0, 0x64 - adds r4, r6, 0 - muls r4, r0 - ldr r0, _0804A478 @ =gPlayerParty - b _0804A484 - .align 2, 0 -_0804A470: .4byte gUnknown_03004824 -_0804A474: .4byte gTradeMonSpriteCoords -_0804A478: .4byte gPlayerParty -_0804A47C: - movs r0, 0x64 - adds r4, r6, 0 - muls r4, r0 - ldr r0, _0804A514 @ =gEnemyParty -_0804A484: - adds r4, r0 - adds r0, r4, 0 - movs r1, 0x2 - add r2, sp, 0x4 - bl GetMonData - mov r0, sp - adds r0, 0x22 - add r1, sp, 0x4 - bl StringCopy10 - adds r0, r4, 0 - bl GetMonGender - mov r1, sp - adds r1, 0x22 - ldr r0, _0804A518 @ =gWindowConfig_81E7294 - bl GetStringWidthGivenWindowConfig - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x32 - subs r1, r0 - lsrs r0, r1, 31 - adds r1, r0 - asrs r1, 1 - mov r0, r8 - strb r1, [r0, 0x5] - ldr r1, [r7] - adds r0, r1, 0x4 - adds r1, 0x7A - lsls r2, r5, 5 - adds r2, r5 - lsls r2, 2 - ldrb r1, [r1] - adds r2, r1 - movs r1, 0x16 - muls r1, r6 - adds r2, r1 - lsls r2, 16 - lsrs r2, 16 - lsls r1, r5, 1 - adds r1, r5 - lsls r1, 1 - adds r1, r6, r1 - lsls r1, 1 - mov r4, r9 - adds r3, r1, r4 - ldrb r3, [r3] - add r1, r10 - ldrb r1, [r1] - str r1, [sp] - mov r1, r8 - bl sub_8003460 - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - ldr r0, [r7] - adds r0, 0x42 - adds r0, r5 - ldrb r0, [r0] - cmp r6, r0 - bcc _0804A462 -_0804A504: - add sp, 0x44 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804A514: .4byte gEnemyParty -_0804A518: .4byte gWindowConfig_81E7294 - thumb_func_end sub_804A41C - - thumb_func_start sub_804A51C -sub_804A51C: @ 804A51C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x28 - ldr r4, [sp, 0x48] - ldr r5, [sp, 0x4C] - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - lsls r1, 24 - lsrs r1, 24 - mov r9, r1 - lsls r2, 24 - lsrs r2, 24 - mov r10, r2 - lsls r3, 24 - lsrs r3, 24 - str r3, [sp, 0x24] - lsls r4, 24 - lsrs r4, 24 - lsls r5, 24 - lsrs r5, 24 - ldr r0, _0804A59C @ =gUnknown_03004824 - ldr r0, [r0] - adds r0, 0xC8 - ldr r3, _0804A5A0 @ =gTradeMonBoxTilemap - movs r1, 0x6 - str r1, [sp] - movs r1, 0x3 - str r1, [sp, 0x4] - movs r1, 0 - str r1, [sp, 0x8] - adds r1, r4, 0 - adds r2, r5, 0 - bl sub_804A96C - mov r0, r8 - cmp r0, 0 - bne _0804A5A8 - movs r0, 0x64 - mov r4, r9 - muls r4, r0 - ldr r0, _0804A5A4 @ =gPlayerParty - adds r4, r0 - adds r0, r4, 0 - movs r1, 0x38 - movs r2, 0 - bl GetMonData - lsls r0, 24 - lsrs r6, r0, 24 - adds r0, r4, 0 - bl GetMonGender - lsls r0, 24 - lsrs r7, r0, 24 - adds r0, r4, 0 - movs r1, 0x2 - add r2, sp, 0xC - bl GetMonData - b _0804A5D4 - .align 2, 0 -_0804A59C: .4byte gUnknown_03004824 -_0804A5A0: .4byte gTradeMonBoxTilemap -_0804A5A4: .4byte gPlayerParty -_0804A5A8: - movs r0, 0x64 - mov r4, r9 - muls r4, r0 - ldr r0, _0804A65C @ =gEnemyParty - adds r4, r0 - adds r0, r4, 0 - movs r1, 0x38 - movs r2, 0 - bl GetMonData - lsls r0, 24 - lsrs r6, r0, 24 - adds r0, r4, 0 - bl GetMonGender - lsls r0, 24 - lsrs r7, r0, 24 - adds r0, r4, 0 - movs r1, 0x2 - add r2, sp, 0xC - bl GetMonData -_0804A5D4: - ldr r1, _0804A660 @ =gUnknown_03004824 - ldr r5, [r1] - mov r3, r8 - lsls r0, r3, 1 - add r0, r8 - lsls r0, 1 - add r0, r9 - adds r1, r5, 0 - adds r1, 0x5D - adds r1, r0 - ldrb r0, [r1] - cmp r0, 0 - bne _0804A690 - adds r0, r6, 0 - movs r1, 0xA - bl __udivsi3 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, [sp, 0x24] - lsls r2, r0, 5 - cmp r4, 0 - beq _0804A614 - mov r1, r10 - adds r0, r1, r2 - lsls r0, 1 - adds r1, r5, 0 - adds r1, 0xDA - adds r1, r0 - adds r0, r4, 0 - adds r0, 0x60 - strh r0, [r1] -_0804A614: - ldr r3, _0804A660 @ =gUnknown_03004824 - ldr r4, [r3] - mov r0, r10 - adds r5, r0, r2 - adds r0, r5, 0x1 - lsls r0, 1 - adds r4, 0xDA - adds r4, r0 - adds r0, r6, 0 - movs r1, 0xA - bl __umodsi3 - lsls r0, 24 - lsrs r0, 24 - adds r0, 0x70 - strh r0, [r4] - cmp r7, 0 - bne _0804A664 - add r0, sp, 0xC - movs r1, 0 - bl NameHasGenderSymbol - lsls r0, 24 - cmp r0, 0 - bne _0804A6CC - ldr r3, _0804A660 @ =gUnknown_03004824 - ldr r1, [r3] - adds r0, r5, 0 - subs r0, 0x1F - lsls r0, 1 - adds r1, 0xDA - adds r1, r0 - ldrh r0, [r1] - adds r0, 0x1 - b _0804A6CA - .align 2, 0 -_0804A65C: .4byte gEnemyParty -_0804A660: .4byte gUnknown_03004824 -_0804A664: - cmp r7, 0xFE - bne _0804A6CC - add r0, sp, 0xC - movs r1, 0xFE - bl NameHasGenderSymbol - lsls r0, 24 - cmp r0, 0 - bne _0804A6CC - ldr r0, _0804A68C @ =gUnknown_03004824 - ldr r1, [r0] - adds r0, r5, 0 - subs r0, 0x1F - lsls r0, 1 - adds r1, 0xDA - adds r1, r0 - ldrh r0, [r1] - adds r0, 0x2 - b _0804A6CA - .align 2, 0 -_0804A68C: .4byte gUnknown_03004824 -_0804A690: - ldr r1, [sp, 0x24] - lsls r0, r1, 5 - mov r1, r10 - adds r3, r1, r0 - adds r1, r3, 0 - subs r1, 0x20 - lsls r1, 1 - adds r2, r5, 0 - adds r2, 0xDA - adds r1, r2, r1 - adds r0, r3, 0 - subs r0, 0x21 - lsls r0, 1 - adds r0, r2, r0 - ldrh r0, [r0] - strh r0, [r1] - adds r1, r3, 0 - subs r1, 0x1F - lsls r1, 1 - adds r1, r2, r1 - adds r0, r3, 0 - subs r0, 0x24 - lsls r0, 1 - adds r2, r0 - ldrh r2, [r2] - movs r3, 0x80 - lsls r3, 3 - adds r0, r3, 0 - orrs r0, r2 -_0804A6CA: - strh r0, [r1] -_0804A6CC: -.ifdef GERMAN - ldr r0, _0804A6E8 @ =gUnknown_03004824 - ldr r0, [r0] - adds r0, 0xD8 - movs r1, 0x1 - strb r1, [r0] -.endif - add sp, 0x28 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 -.ifdef GERMAN - .align 2, 0 -_0804A6E8: .4byte gUnknown_03004824 -.endif - thumb_func_end sub_804A51C - - thumb_func_start sub_804A6DC -sub_804A6DC: @ 804A6DC - push {r4-r7,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r6, r0, 24 - movs r7, 0 - ldr r0, _0804A734 @ =gUnknown_03004824 - ldr r0, [r0] - adds r0, 0x42 - adds r0, r6 - ldrb r0, [r0] - cmp r7, r0 - bge _0804A72C - lsls r0, r6, 1 - adds r0, r6 - ldr r1, _0804A738 @ =gTradeLevelDisplayCoords - lsls r0, 2 - adds r5, r0, r1 - ldr r1, _0804A73C @ =gTradeMonBoxCoords - adds r4, r0, r1 -_0804A702: - lsls r1, r7, 24 - lsrs r1, 24 - ldrb r2, [r5] - ldrb r3, [r5, 0x1] - ldrb r0, [r4] - str r0, [sp] - ldrb r0, [r4, 0x1] - str r0, [sp, 0x4] - adds r0, r6, 0 - bl sub_804A51C - adds r5, 0x2 - adds r4, 0x2 - adds r7, 0x1 - ldr r0, _0804A734 @ =gUnknown_03004824 - ldr r0, [r0] - adds r0, 0x42 - adds r0, r6 - ldrb r0, [r0] - cmp r7, r0 - blt _0804A702 -_0804A72C: - add sp, 0x8 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804A734: .4byte gUnknown_03004824 -_0804A738: .4byte gTradeLevelDisplayCoords -_0804A73C: .4byte gTradeMonBoxCoords - thumb_func_end sub_804A6DC - - thumb_func_start sub_804A740 -sub_804A740: @ 804A740 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - lsls r0, 24 - lsrs r0, 24 - mov r12, r0 - movs r7, 0 - ldr r3, _0804A800 @ =gUnknown_03004824 - ldr r0, [r3] - adds r0, 0x42 - add r0, r12 - ldrb r0, [r0] - cmp r7, r0 - bge _0804A7F2 - ldr r6, _0804A804 @ =gSprites - mov r9, r3 - mov r1, r12 - lsls r0, r1, 1 - add r0, r12 - lsls r2, r0, 1 - mov r10, r2 - ldr r1, _0804A808 @ =gTradeMonSpriteCoords - movs r2, 0 - mov r8, r2 - lsls r0, 2 - adds r5, r0, r1 -_0804A778: - mov r1, r9 - ldr r0, [r1] - mov r2, r10 - adds r4, r7, r2 - adds r0, 0x34 - adds r0, r4 - ldrb r0, [r0] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r6 - adds r1, 0x3E - ldrb r2, [r1] - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - strb r0, [r1] - mov r0, r9 - ldr r3, [r0] - adds r2, r3, 0 - adds r2, 0x34 - adds r2, r4 - ldrb r0, [r2] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r6 - ldrb r0, [r5] - lsls r0, 3 - adds r0, 0xE - strh r0, [r1, 0x20] - ldrb r0, [r2] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r6 - ldrb r0, [r5, 0x1] - lsls r0, 3 - subs r0, 0xC - strh r0, [r1, 0x22] - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - mov r1, r8 - strh r1, [r0, 0x24] - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - mov r2, r8 - strh r2, [r0, 0x26] - adds r5, 0x2 - adds r7, 0x1 - adds r3, 0x42 - add r3, r12 - ldrb r3, [r3] - cmp r7, r3 - blt _0804A778 -_0804A7F2: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804A800: .4byte gUnknown_03004824 -_0804A804: .4byte gSprites -_0804A808: .4byte gTradeMonSpriteCoords - thumb_func_end sub_804A740 - - thumb_func_start sub_804A80C -sub_804A80C: @ 804A80C - push {lr} - sub sp, 0x8 - ldr r0, _0804A838 @ =gUnknown_03004824 - ldr r0, [r0] - adds r0, 0x4 - ldr r1, _0804A83C @ =gUnknown_0820C330 - ldrb r2, [r1, 0x2] - ldrb r1, [r1, 0x3] - str r1, [sp] - movs r1, 0x13 - str r1, [sp, 0x4] - movs r1, 0 - movs r3, 0 - bl FillWindowRect_DefaultPalette - movs r0, 0x1 - bl sub_804A41C - add sp, 0x8 - pop {r0} - bx r0 - .align 2, 0 -_0804A838: .4byte gUnknown_03004824 -_0804A83C: .4byte gUnknown_0820C330 - thumb_func_end sub_804A80C - - thumb_func_start sub_804A840 -sub_804A840: @ 804A840 - push {r4,r5,lr} - sub sp, 0xC - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0 - bne _0804A8A8 - ldr r4, _0804A89C @ =gUnknown_03004824 - ldr r0, [r4] - adds r0, 0x4 - ldr r1, _0804A8A0 @ =gUnknown_0820C330 - ldrb r2, [r1] - ldrb r1, [r1, 0x1] - str r1, [sp] - movs r1, 0x13 - str r1, [sp, 0x4] - movs r1, 0 - movs r3, 0 - bl FillWindowRect_DefaultPalette - ldr r0, [r4] - adds r0, 0xC8 - ldr r3, _0804A8A4 @ =gTradePartyBoxTilemap - movs r1, 0xF - str r1, [sp] - movs r1, 0x11 - str r1, [sp, 0x4] - str r5, [sp, 0x8] - movs r1, 0 - movs r2, 0 - bl sub_804A96C_alt - movs r0, 0 - bl sub_804A6DC - movs r0, 0 - bl sub_804A41C - movs r0, 0 - bl sub_804A740 - ldr r0, [r4] - adds r0, 0xC8 - bl sub_804A938 - b _0804A8FA - .align 2, 0 -_0804A89C: .4byte gUnknown_03004824 -_0804A8A0: .4byte gUnknown_0820C330 -_0804A8A4: .4byte gTradePartyBoxTilemap -_0804A8A8: - bl HandleDestroyMenuCursors - ldr r4, _0804A924 @ =gUnknown_03004824 - ldr r0, [r4] - adds r0, 0x4 - ldr r1, _0804A928 @ =gUnknown_0820C330 - ldrb r2, [r1, 0x2] - ldrb r1, [r1, 0x3] - str r1, [sp] - movs r1, 0x13 - str r1, [sp, 0x4] - movs r1, 0 - movs r3, 0 - bl FillWindowRect_DefaultPalette - ldr r0, [r4] - adds r0, 0xC8 - ldr r3, _0804A92C @ =gTradePartyBoxTilemap - movs r1, 0xF - str r1, [sp] - movs r1, 0x11 - str r1, [sp, 0x4] - movs r1, 0 - str r1, [sp, 0x8] - movs r1, 0xF - movs r2, 0 - bl sub_804A96C_alt - movs r0, 0x1 - bl sub_804A6DC - movs r0, 0x1 - bl sub_804A41C - movs r0, 0x1 - bl sub_804A740 - ldr r0, [r4] - adds r0, 0xC8 - bl sub_804A938 -_0804A8FA: - ldr r0, _0804A930 @ =gUnknown_0820C14C - ldr r0, [r0, 0x4] - ldr r4, _0804A924 @ =gUnknown_03004824 - ldr r1, [r4] - adds r1, 0x7E - ldrh r1, [r1] - lsls r1, 5 - ldr r2, _0804A934 @ =0x06010000 - adds r1, r2 - movs r2, 0x14 - bl sub_804ACD8 - ldr r0, [r4] - adds r0, 0x80 - adds r0, r5 - movs r1, 0 - strb r1, [r0] - add sp, 0xC - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0804A924: .4byte gUnknown_03004824 -_0804A928: .4byte gUnknown_0820C330 -_0804A92C: .4byte gTradePartyBoxTilemap -_0804A930: .4byte gUnknown_0820C14C -_0804A934: .4byte 0x06010000 - thumb_func_end sub_804A840 - - thumb_func_start sub_804A938 -sub_804A938: @ 804A938 - movs r1, 0x1 - strb r1, [r0, 0x10] - bx lr - thumb_func_end sub_804A938 - - thumb_func_start sub_804A940 -sub_804A940: @ 804A940 - push {r4,lr} - adds r4, r0, 0 - ldrb r0, [r4, 0x10] - cmp r0, 0 - beq _0804A95C - adds r0, r4, 0 - adds r0, 0x12 - ldr r1, [r4, 0x8] - movs r2, 0x80 - lsls r2, 3 - bl CpuSet - movs r0, 0 - strb r0, [r4, 0x10] -_0804A95C: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_804A940 - - thumb_func_start sub_804A964 -sub_804A964: @ 804A964 - movs r2, 0 - strb r2, [r0, 0x10] - str r1, [r0, 0x8] - bx lr - thumb_func_end sub_804A964 - -.section .text.sub_804A9F4 - - thumb_func_start sub_804A9F4 -sub_804A9F4: @ 804A9F4 - push {lr} - bl MenuZeroFillScreen - pop {r0} - bx r0 - thumb_func_end sub_804A9F4 - - thumb_func_start sub_804AA00 -sub_804AA00: @ 804AA00 - push {lr} - bl MenuZeroFillScreen - pop {r0} - bx r0 - thumb_func_end sub_804AA00 - - thumb_func_start sub_804AA0C -sub_804AA0C: @ 804AA0C - push {r4-r6,lr} - mov r6, r8 - push {r6} - sub sp, 0x4 - adds r4, r0, 0 - lsls r4, 24 - ldr r0, _0804AA7C @ =gUnknown_03004824 - mov r8, r0 - ldr r0, [r0] - adds r0, 0x4 - ldr r2, _0804AA80 @ =gTradeMessageWindowRects - lsrs r4, 22 - adds r1, r4, r2 - ldrb r6, [r1] - adds r1, r2, 0x1 - adds r1, r4, r1 - ldrb r5, [r1] - adds r1, r2, 0x2 - adds r1, r4, r1 - ldrb r3, [r1] - adds r2, 0x3 - adds r2, r4, r2 - ldrb r1, [r2] - str r1, [sp] - adds r1, r6, 0 - adds r2, r5, 0 - bl DrawTextWindow - mov r1, r8 - ldr r3, [r1] - adds r0, r3, 0x4 - ldr r1, _0804AA84 @ =gUnknown_0820C2F0 - adds r4, r1 - ldr r1, [r4] - adds r3, 0x7A - movs r4, 0xC0 - lsls r4, 1 - adds r2, r4, 0 - ldrb r3, [r3] - adds r2, r3 - adds r6, 0x1 - lsls r6, 24 - lsrs r6, 24 - adds r5, 0x1 - lsls r5, 24 - lsrs r5, 24 - str r5, [sp] - adds r3, r6, 0 - bl sub_8003460 - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0804AA7C: .4byte gUnknown_03004824 -_0804AA80: .4byte gTradeMessageWindowRects -_0804AA84: .4byte gUnknown_0820C2F0 - thumb_func_end sub_804AA0C - - thumb_func_start sub_804AA88 -sub_804AA88: @ 804AA88 - push {r4-r7,lr} - mov r7, r8 - push {r7} - movs r3, 0 - ldr r5, _0804AAD0 @ =gUnknown_03004824 - ldr r0, _0804AAD4 @ =0x000008dc - mov r8, r0 - movs r4, 0 - ldr r2, _0804AAD8 @ =0x000008de - mov r12, r2 - movs r7, 0x8E - lsls r7, 4 - movs r6, 0xFF -_0804AAA2: - ldr r0, [r5] - lsls r2, r3, 3 - adds r0, r2 - add r0, r8 - strb r4, [r0] - ldr r1, [r5] - adds r1, r2 - mov r2, r12 - adds r0, r1, r2 - strh r4, [r0] - adds r1, r7 - ldrb r0, [r1] - orrs r0, r6 - strb r0, [r1] - adds r3, 0x1 - cmp r3, 0x3 - ble _0804AAA2 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804AAD0: .4byte gUnknown_03004824 -_0804AAD4: .4byte 0x000008dc -_0804AAD8: .4byte 0x000008de - thumb_func_end sub_804AA88 - - thumb_func_start sub_804AADC -sub_804AADC: @ 804AADC - push {r4-r7,lr} - lsls r0, 16 - lsrs r5, r0, 16 - lsls r1, 24 - lsrs r6, r1, 24 - movs r3, 0 - ldr r4, _0804AB18 @ =gUnknown_03004824 - mov r12, r4 - ldr r7, _0804AB1C @ =0x000008dc -_0804AAEE: - mov r1, r12 - ldr r0, [r1] - lsls r1, r3, 3 - adds r2, r0, r1 - adds r0, r2, r7 - ldrb r0, [r0] - cmp r0, 0 - bne _0804AB24 - ldr r3, _0804AB20 @ =0x000008de - adds r0, r2, r3 - strh r5, [r0] - adds r3, 0x2 - adds r0, r2, r3 - strb r6, [r0] - ldr r0, [r4] - adds r0, r1 - ldr r1, _0804AB1C @ =0x000008dc - adds r0, r1 - movs r1, 0x1 - strb r1, [r0] - b _0804AB2A - .align 2, 0 -_0804AB18: .4byte gUnknown_03004824 -_0804AB1C: .4byte 0x000008dc -_0804AB20: .4byte 0x000008de -_0804AB24: - adds r3, 0x1 - cmp r3, 0x3 - ble _0804AAEE -_0804AB2A: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_804AADC - - thumb_func_start sub_804AB30 -sub_804AB30: @ 804AB30 - push {r4,r5,lr} - movs r4, 0 - ldr r3, _0804AB58 @ =gUnknown_03004824 -_0804AB36: - ldr r0, [r3] - lsls r1, r4, 3 - adds r2, r0, r1 - ldr r5, _0804AB5C @ =0x000008dc - adds r0, r2, r5 - ldrb r0, [r0] - adds r5, r1, 0 - cmp r0, 0 - beq _0804ABE2 - ldr r0, _0804AB60 @ =0x000008de - adds r1, r2, r0 - ldrh r0, [r1] - cmp r0, 0 - beq _0804AB64 - subs r0, 0x1 - strh r0, [r1] - b _0804ABE2 - .align 2, 0 -_0804AB58: .4byte gUnknown_03004824 -_0804AB5C: .4byte 0x000008dc -_0804AB60: .4byte 0x000008de -_0804AB64: - movs r1, 0x8E - lsls r1, 4 - adds r0, r2, r1 - ldrb r0, [r0] - cmp r0, 0x5 - bhi _0804ABD2 - lsls r0, 2 - ldr r1, _0804AB7C @ =_0804AB80 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0804AB7C: .4byte _0804AB80 - .align 2, 0 -_0804AB80: - .4byte _0804AB98 - .4byte _0804ABB4 - .4byte _0804ABBC - .4byte _0804ABC4 - .4byte _0804ABC4 - .4byte _0804ABCC -_0804AB98: - bl bitmask_all_link_players_but_self - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0804ABB0 @ =gUnknown_03004824 - ldr r1, [r1] - adds r1, 0x8C - movs r2, 0x14 - bl SendBlock - b _0804ABD2 - .align 2, 0 -_0804ABB0: .4byte gUnknown_03004824 -_0804ABB4: - movs r0, 0 - bl sub_804AA0C - b _0804ABD2 -_0804ABBC: - movs r0, 0x2 - bl sub_804AA0C - b _0804ABD2 -_0804ABC4: - movs r0, 0x3 - bl sub_804AA0C - b _0804ABD2 -_0804ABCC: - movs r0, 0x3 - bl sub_804AA0C -_0804ABD2: - ldr r0, _0804ABF0 @ =gUnknown_03004824 - ldr r1, [r0] - adds r1, r5 - ldr r2, _0804ABF4 @ =0x000008dc - adds r1, r2 - movs r2, 0 - strb r2, [r1] - adds r3, r0, 0 -_0804ABE2: - adds r4, 0x1 - cmp r4, 0x3 - ble _0804AB36 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0804ABF0: .4byte gUnknown_03004824 -_0804ABF4: .4byte 0x000008dc - thumb_func_end sub_804AB30 - - thumb_func_start sub_804ABF8 -sub_804ABF8: @ 804ABF8 - push {r4,lr} - ldr r0, _0804AC14 @ =gUnknown_03004824 - ldr r1, [r0] - adds r1, 0xB4 - ldrb r1, [r1] - subs r1, 0x8 - adds r4, r0, 0 - cmp r1, 0x8 - bhi _0804ACB0 - lsls r0, r1, 2 - ldr r1, _0804AC18 @ =_0804AC1C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0804AC14: .4byte gUnknown_03004824 -_0804AC18: .4byte _0804AC1C - .align 2, 0 -_0804AC1C: - .4byte _0804AC40 - .4byte _0804ACB0 - .4byte _0804ACB0 - .4byte _0804ACB0 - .4byte _0804ACB0 - .4byte _0804AC60 - .4byte _0804AC74 - .4byte _0804AC88 - .4byte _0804AC9A -_0804AC40: - ldr r0, [r4] - adds r0, 0xB4 - ldrb r0, [r0] - lsls r0, 3 - ldr r1, _0804AC5C @ =gUnknown_0820C07C - adds r0, r1 - bl LoadSpriteSheet - ldr r1, [r4] - adds r2, r1, 0 - adds r2, 0x7E - strh r0, [r2] - b _0804ACC2 - .align 2, 0 -_0804AC5C: .4byte gUnknown_0820C07C -_0804AC60: - ldr r0, _0804AC6C @ =gSpritePalette_TradeScreenText - bl LoadSpritePalette - ldr r0, _0804AC70 @ =gUnknown_03004824 - ldr r1, [r0] - b _0804ACC2 - .align 2, 0 -_0804AC6C: .4byte gSpritePalette_TradeScreenText -_0804AC70: .4byte gUnknown_03004824 -_0804AC74: - ldr r0, _0804AC80 @ =gUnknown_0820C12C - bl LoadSpritePalette - ldr r0, _0804AC84 @ =gUnknown_03004824 - ldr r1, [r0] - b _0804ACC2 - .align 2, 0 -_0804AC80: .4byte gUnknown_0820C12C -_0804AC84: .4byte gUnknown_03004824 -_0804AC88: - ldr r0, _0804ACA8 @ =gUnknown_0820C124 - bl LoadSpriteSheet - ldr r0, _0804ACAC @ =gUnknown_03004824 - ldr r1, [r0] - adds r1, 0xB4 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_0804AC9A: - ldr r0, _0804ACAC @ =gUnknown_03004824 - ldr r0, [r0] - adds r0, 0xB4 - movs r1, 0 - strb r1, [r0] - movs r0, 0x1 - b _0804ACCC - .align 2, 0 -_0804ACA8: .4byte gUnknown_0820C124 -_0804ACAC: .4byte gUnknown_03004824 -_0804ACB0: - ldr r0, [r4] - adds r0, 0xB4 - ldrb r0, [r0] - lsls r0, 3 - ldr r1, _0804ACD4 @ =gUnknown_0820C07C - adds r0, r1 - bl LoadSpriteSheet - ldr r1, [r4] -_0804ACC2: - adds r1, 0xB4 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - movs r0, 0 -_0804ACCC: - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0804ACD4: .4byte gUnknown_0820C07C - thumb_func_end sub_804ABF8 - - thumb_func_start sub_804ACD8 -sub_804ACD8: @ 804ACD8 - push {r4,lr} - adds r4, r0, 0 - lsls r3, r2, 24 - lsrs r3, 24 - ldr r0, _0804ACF0 @ =gWindowConfig_81E725C - adds r2, r4, 0 - bl sub_804AFB8 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0804ACF0: .4byte gWindowConfig_81E725C - thumb_func_end sub_804ACD8 - - thumb_func_start sub_804ACF4 -sub_804ACF4: @ 804ACF4 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - cmp r0, 0 - beq _0804AD0C - cmp r0, 0x1 - beq _0804ADA0 - b _0804AE2C -_0804AD0C: - movs r7, 0 - ldr r1, _0804AD4C @ =gUnknown_03004824 - ldr r0, [r1] - adds r0, 0x42 - ldrb r0, [r0] - cmp r7, r0 - blt _0804AD1C - b _0804AE2C -_0804AD1C: - adds r6, r1, 0 - movs r5, 0 - mov r9, r5 -_0804AD22: - movs r0, 0x64 - adds r1, r7, 0 - muls r1, r0 - ldr r0, _0804AD50 @ =gPlayerParty - adds r4, r1, r0 - adds r0, r4, 0 - movs r1, 0x2D - bl GetMonData - adds r1, r0, 0 - cmp r1, 0x1 - bne _0804AD54 - ldr r0, [r6] - adds r0, 0x51 - adds r0, r5 - mov r2, r9 - strb r2, [r0] - ldr r0, [r6] - adds r0, 0x5D - adds r0, r5 - b _0804AD84 - .align 2, 0 -_0804AD4C: .4byte gUnknown_03004824 -_0804AD50: .4byte gPlayerParty -_0804AD54: - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - adds r1, r0, 0 - cmp r1, 0 - bne _0804AD72 - ldr r0, [r6] - adds r0, 0x51 - adds r0, r5 - strb r1, [r0] - ldr r0, [r6] - adds r0, 0x5D - adds r0, r5 - b _0804AD84 -_0804AD72: - ldr r0, [r6] - adds r0, 0x51 - adds r0, r5 - movs r1, 0x1 - strb r1, [r0] - ldr r0, [r6] - adds r0, 0x5D - adds r0, r5 - mov r1, r9 -_0804AD84: - strb r1, [r0] - ldr r0, _0804AD9C @ =gUnknown_03004824 - adds r5, 0x1 - adds r7, 0x1 - ldr r0, [r0] - adds r0, 0x42 - add r0, r8 - ldrb r0, [r0] - cmp r7, r0 - blt _0804AD22 - b _0804AE2C - .align 2, 0 -_0804AD9C: .4byte gUnknown_03004824 -_0804ADA0: - movs r7, 0 - ldr r1, _0804ADE0 @ =gUnknown_03004824 - ldr r0, [r1] - adds r0, 0x43 - ldrb r0, [r0] - cmp r7, r0 - bge _0804AE2C - adds r6, r1, 0 - movs r5, 0x6 - movs r2, 0 - mov r9, r2 -_0804ADB6: - movs r0, 0x64 - adds r1, r7, 0 - muls r1, r0 - ldr r0, _0804ADE4 @ =gEnemyParty - adds r4, r1, r0 - adds r0, r4, 0 - movs r1, 0x2D - bl GetMonData - adds r1, r0, 0 - cmp r1, 0x1 - bne _0804ADE8 - ldr r0, [r6] - adds r0, 0x51 - adds r0, r5 - mov r2, r9 - strb r2, [r0] - ldr r0, [r6] - adds r0, 0x5D - adds r0, r5 - b _0804AE18 - .align 2, 0 -_0804ADE0: .4byte gUnknown_03004824 -_0804ADE4: .4byte gEnemyParty -_0804ADE8: - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - adds r1, r0, 0 - cmp r1, 0 - bne _0804AE06 - ldr r0, [r6] - adds r0, 0x51 - adds r0, r5 - strb r1, [r0] - ldr r0, [r6] - adds r0, 0x5D - adds r0, r5 - b _0804AE18 -_0804AE06: - ldr r0, [r6] - adds r0, 0x51 - adds r0, r5 - movs r1, 0x1 - strb r1, [r0] - ldr r0, [r6] - adds r0, 0x5D - adds r0, r5 - mov r1, r9 -_0804AE18: - strb r1, [r0] - ldr r0, _0804AE38 @ =gUnknown_03004824 - adds r5, 0x1 - adds r7, 0x1 - ldr r0, [r0] - adds r0, 0x42 - add r0, r8 - ldrb r0, [r0] - cmp r7, r0 - blt _0804ADB6 -_0804AE2C: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804AE38: .4byte gUnknown_03004824 - thumb_func_end sub_804ACF4 - - thumb_func_start sub_804AE3C -sub_804AE3C: @ 804AE3C - push {r4-r7,lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - beq _0804AE4C - cmp r0, 0x1 - beq _0804AEAC - b _0804AF00 -_0804AE4C: - movs r6, 0 - ldr r1, _0804AEA4 @ =gUnknown_03004824 - ldr r0, [r1] - adds r0, 0x42 - ldrb r0, [r0] - cmp r6, r0 - bcs _0804AF00 - adds r7, r1, 0 -_0804AE5C: - movs r0, 0x64 - adds r4, r6, 0 - muls r4, r0 - ldr r0, _0804AEA8 @ =gPlayerParty - adds r4, r0 - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - lsls r0, 16 - lsrs r5, r0, 16 - adds r0, r4, 0 - movs r1, 0x3A - bl GetMonData - adds r1, r0, 0 - lsls r0, r5, 16 - asrs r0, 16 - lsls r1, 16 - asrs r1, 16 - bl GetHPBarLevel - ldr r1, [r7] - adds r1, 0x69 - adds r1, r6 - strb r0, [r1] - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 - ldr r0, [r7] - adds r0, 0x42 - ldrb r0, [r0] - cmp r6, r0 - bcc _0804AE5C - b _0804AF00 - .align 2, 0 -_0804AEA4: .4byte gUnknown_03004824 -_0804AEA8: .4byte gPlayerParty -_0804AEAC: - movs r6, 0 - ldr r1, _0804AF08 @ =gUnknown_03004824 - ldr r0, [r1] - adds r0, 0x43 - ldrb r0, [r0] - cmp r6, r0 - bcs _0804AF00 - adds r7, r1, 0 -_0804AEBC: - movs r0, 0x64 - adds r4, r6, 0 - muls r4, r0 - ldr r0, _0804AF0C @ =gEnemyParty - adds r4, r0 - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - lsls r0, 16 - lsrs r5, r0, 16 - adds r0, r4, 0 - movs r1, 0x3A - bl GetMonData - adds r1, r0, 0 - lsls r0, r5, 16 - asrs r0, 16 - lsls r1, 16 - asrs r1, 16 - bl GetHPBarLevel - ldr r1, [r7] - adds r1, 0x6F - adds r1, r6 - strb r0, [r1] - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 - ldr r0, [r7] - adds r0, 0x43 - ldrb r0, [r0] - cmp r6, r0 - bcc _0804AEBC -_0804AF00: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804AF08: .4byte gUnknown_03004824 -_0804AF0C: .4byte gEnemyParty - thumb_func_end sub_804AE3C - - thumb_func_start sub_804AF10 -sub_804AF10: @ 804AF10 - push {r4-r7,lr} - mov r7, r8 - push {r7} - movs r5, 0 -_0804AF18: - movs r4, 0 - ldr r2, _0804AF7C @ =gUnknown_03004824 - ldr r0, [r2] - adds r0, 0x42 - adds r0, r5 - adds r1, r5, 0x1 - mov r8, r1 - ldrb r0, [r0] - cmp r4, r0 - bge _0804AF6A - adds r6, r2, 0 - lsls r0, r5, 1 - adds r0, r5 - lsls r7, r0, 1 -_0804AF34: - ldr r2, [r6] - adds r3, r4, r7 - adds r0, r2, 0 - adds r0, 0x34 - adds r0, r3 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _0804AF80 @ =gSprites - adds r0, r1 - adds r2, 0x69 - adds r2, r3 - ldrb r2, [r2] - movs r1, 0x4 - subs r1, r2 - lsls r1, 24 - lsrs r1, 24 - bl sub_809D824 - adds r4, 0x1 - ldr r0, [r6] - adds r0, 0x42 - adds r0, r5 - ldrb r0, [r0] - cmp r4, r0 - blt _0804AF34 -_0804AF6A: - mov r5, r8 - cmp r5, 0x1 - ble _0804AF18 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804AF7C: .4byte gUnknown_03004824 -_0804AF80: .4byte gSprites - thumb_func_end sub_804AF10 - - thumb_func_start sub_804AF84 -sub_804AF84: @ 804AF84 - push {r4,lr} - movs r2, 0 - ldr r4, _0804AFB0 @ =gSaveBlock1 + 0x3110 - ldr r3, _0804AFB4 @ =gUnknown_03004824 -_0804AF8C: - adds r1, r2, r4 - ldrb r0, [r1] - cmp r0, 0 - bne _0804AFA2 - ldr r0, [r3] - adds r0, 0xB5 - adds r0, r2 - ldrb r0, [r0] - cmp r0, 0 - beq _0804AFA2 - strb r0, [r1] -_0804AFA2: - adds r2, 0x1 - cmp r2, 0xA - ble _0804AF8C - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0804AFB0: .4byte gSaveBlock1 + 0x3110 -_0804AFB4: .4byte gUnknown_03004824 - thumb_func_end sub_804AF84 - - thumb_func_start sub_804AFB8 -sub_804AFB8: @ 804AFB8 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - mov r9, r0 - mov r8, r1 - mov r10, r2 - lsls r3, 24 - lsrs r6, r3, 24 - adds r0, r6, 0x3 - lsrs r6, r0, 2 - ldr r7, _0804B054 @ =gTileBuffer - mov r0, sp - movs r5, 0 - strh r5, [r0] - lsls r4, r6, 6 - movs r0, 0x80 - lsls r0, 17 - orrs r4, r0 - mov r0, sp - adds r1, r7, 0 - adds r2, r4, 0 - bl CpuSet - mov r0, sp - adds r0, 0x2 - strh r5, [r0] - mov r2, r9 - ldrb r1, [r2, 0xD] - lsls r1, 5 - adds r1, r7 - adds r2, r4, 0 - bl CpuSet - mov r0, r9 - adds r1, r7, 0 - mov r2, r10 - bl sub_8004E3C - movs r4, 0 - cmp r4, r6 - bcs _0804B042 -_0804B010: - lsls r0, r4, 7 - adds r0, r7, r0 - lsls r1, r4, 8 - add r1, r8 - movs r2, 0x40 - bl CpuSet - lsls r0, r4, 2 - mov r1, r9 - ldrb r1, [r1, 0xD] - adds r0, r1 - lsls r0, 5 - adds r0, r7, r0 - lsls r1, r4, 3 - adds r1, 0x4 - lsls r1, 5 - add r1, r8 - movs r2, 0x40 - bl CpuSet - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, r6 - bcc _0804B010 -_0804B042: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804B054: .4byte gTileBuffer - thumb_func_end sub_804AFB8 - - thumb_func_start sub_804B058 -sub_804B058: @ 804B058 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xA - bne _0804B074 - movs r0, 0x17 - bl PlaySE - movs r0, 0 - strh r0, [r4, 0x2E] -_0804B074: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_804B058 - - thumb_func_start sub_804B07C -sub_804B07C: @ 804B07C - push {lr} - adds r2, r0, 0 - movs r0, 0x30 - ldrsh r1, [r2, r0] - cmp r1, 0 - bne _0804B0B2 - ldrh r0, [r2, 0x2E] - adds r0, 0x1 - strh r0, [r2, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xC - bne _0804B098 - strh r1, [r2, 0x2E] -_0804B098: - movs r1, 0x2E - ldrsh r0, [r2, r1] - lsls r0, 1 - ldr r1, _0804B0B8 @ =gTradeGlow2PaletteAnimTable - adds r0, r1 - ldrb r1, [r2, 0x5] - lsrs r1, 4 - adds r1, 0x10 - lsls r1, 4 - adds r1, 0x4 - movs r2, 0x2 - bl LoadPalette -_0804B0B2: - pop {r0} - bx r0 - .align 2, 0 -_0804B0B8: .4byte gTradeGlow2PaletteAnimTable - thumb_func_end sub_804B07C - - thumb_func_start sub_804B0BC -sub_804B0BC: @ 804B0BC - push {lr} - adds r2, r0, 0 - ldrh r1, [r2, 0x2E] - adds r1, 0x1 - strh r1, [r2, 0x2E] - ldrh r0, [r2, 0x26] - adds r0, 0x1 - strh r0, [r2, 0x26] - lsls r1, 16 - asrs r1, 16 - cmp r1, 0xA - bne _0804B0DA - adds r0, r2, 0 - bl DestroySprite -_0804B0DA: - pop {r0} - bx r0 - thumb_func_end sub_804B0BC - - thumb_func_start sub_804B0E0 -sub_804B0E0: @ 804B0E0 - push {lr} - adds r2, r0, 0 - ldrh r1, [r2, 0x2E] - adds r1, 0x1 - strh r1, [r2, 0x2E] - ldrh r0, [r2, 0x26] - subs r0, 0x1 - strh r0, [r2, 0x26] - lsls r1, 16 - asrs r1, 16 - cmp r1, 0xA - bne _0804B0FE - adds r0, r2, 0 - bl DestroySprite -_0804B0FE: - pop {r0} - bx r0 - thumb_func_end sub_804B0E0 - - thumb_func_start sub_804B104 -sub_804B104: @ 804B104 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xF - bne _0804B120 - movs r0, 0xCC - bl PlaySE - movs r0, 0 - strh r0, [r4, 0x2E] -_0804B120: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_804B104 - - thumb_func_start sub_804B128 -sub_804B128: @ 804B128 - push {r4,r5,lr} - sub sp, 0x20 - ldr r0, _0804B1B4 @ =gUnknown_03004828 - ldr r0, [r0] - mov r12, r0 - movs r0, 0x82 - lsls r0, 1 - add r0, r12 - ldrh r1, [r0] - lsls r1, 8 - movs r0, 0x83 - lsls r0, 1 - add r0, r12 - ldrh r2, [r0] - lsls r2, 8 - movs r0, 0x86 - lsls r0, 1 - add r0, r12 - movs r4, 0 - ldrsh r3, [r0, r4] - movs r0, 0x87 - lsls r0, 1 - add r0, r12 - movs r5, 0 - ldrsh r0, [r0, r5] - str r0, [sp] - movs r4, 0x8C - lsls r4, 1 - add r4, r12 - movs r5, 0 - ldrsh r0, [r4, r5] - str r0, [sp, 0x4] - movs r5, 0 - ldrsh r0, [r4, r5] - str r0, [sp, 0x8] - movs r0, 0x8E - lsls r0, 1 - add r0, r12 - ldrh r0, [r0] - str r0, [sp, 0xC] - add r0, sp, 0x10 - bl DoBgAffineSet - ldr r1, _0804B1B8 @ =REG_BG2PA - add r0, sp, 0x10 - ldrh r0, [r0] - strh r0, [r1] - adds r1, 0x2 - add r0, sp, 0x10 - ldrh r0, [r0, 0x2] - strh r0, [r1] - adds r1, 0x2 - add r0, sp, 0x10 - ldrh r0, [r0, 0x4] - strh r0, [r1] - adds r1, 0x2 - add r0, sp, 0x10 - ldrh r0, [r0, 0x6] - strh r0, [r1] - adds r1, 0x2 - ldr r0, [sp, 0x18] - str r0, [r1] - adds r1, 0x4 - ldr r0, [sp, 0x1C] - str r0, [r1] - add sp, 0x20 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0804B1B4: .4byte gUnknown_03004828 -_0804B1B8: .4byte REG_BG2PA - thumb_func_end sub_804B128 - - thumb_func_start sub_804B1BC -sub_804B1BC: @ 804B1BC - push {lr} - ldr r1, _0804B1FC @ =REG_BG1VOFS - ldr r0, _0804B200 @ =gUnknown_03004828 - ldr r2, [r0] - movs r3, 0x88 - lsls r3, 1 - adds r0, r2, r3 - ldrh r0, [r0] - strh r0, [r1] - subs r1, 0x2 - adds r3, 0x2 - adds r0, r2, r3 - ldrh r0, [r0] - strh r0, [r1] - movs r0, 0x80 - lsls r0, 19 - ldrh r0, [r0] - movs r1, 0x7 - ands r0, r1 - cmp r0, 0 - bne _0804B208 - ldr r1, _0804B204 @ =REG_BG2VOFS - adds r3, 0x2 - adds r0, r2, r3 - ldrh r0, [r0] - strh r0, [r1] - subs r1, 0x2 - adds r3, 0x2 - adds r0, r2, r3 - ldrh r0, [r0] - strh r0, [r1] - b _0804B20C - .align 2, 0 -_0804B1FC: .4byte REG_BG1VOFS -_0804B200: .4byte gUnknown_03004828 -_0804B204: .4byte REG_BG2VOFS -_0804B208: - bl sub_804B128 -_0804B20C: - pop {r0} - bx r0 - thumb_func_end sub_804B1BC - - thumb_func_start sub_804B210 -sub_804B210: @ 804B210 - push {lr} - bl sub_804B1BC - bl LoadOam - bl ProcessSpriteCopyRequests - bl TransferPlttBuffer - pop {r0} - bx r0 - thumb_func_end sub_804B210 - - thumb_func_start sub_804B228 -sub_804B228: @ 804B228 - push {r4,lr} - ldr r4, _0804B248 @ =gUnknown_03004828 - ldr r1, [r4] - adds r2, r1, 0 - adds r2, 0xB4 - movs r3, 0 - movs r0, 0 - strh r0, [r2] - adds r1, 0xB2 - strb r3, [r1] - ldr r0, [r4] - adds r0, 0xB3 - strb r3, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0804B248: .4byte gUnknown_03004828 - thumb_func_end sub_804B228 - - thumb_func_start sub_804B24C -sub_804B24C: @ 804B24C - push {r4,r5,lr} - ldr r1, _0804B270 @ =gUnknown_03004828 - ldr r2, [r1] - adds r0, r2, 0 - adds r0, 0xB2 - adds r3, r2, 0 - adds r3, 0xB3 - ldrb r0, [r0] - adds r5, r1, 0 - ldrb r3, [r3] - cmp r0, r3 - bne _0804B274 - adds r1, r2, 0 - adds r1, 0xB4 - ldrh r0, [r1] - adds r0, 0x1 - b _0804B27A - .align 2, 0 -_0804B270: .4byte gUnknown_03004828 -_0804B274: - adds r1, r2, 0 - adds r1, 0xB4 - movs r0, 0 -_0804B27A: - strh r0, [r1] - adds r4, r5, 0 - ldr r3, [r4] - adds r2, r3, 0 - adds r2, 0xB4 - ldrh r0, [r2] - cmp r0, 0xB4 - bls _0804B29C - movs r1, 0 - movs r0, 0 - strh r0, [r2] - adds r0, r3, 0 - adds r0, 0xB3 - strb r1, [r0] - ldr r0, [r4] - adds r0, 0xB2 - strb r1, [r0] -_0804B29C: - ldr r0, [r5] - adds r1, r0, 0 - adds r1, 0xB2 - ldrb r1, [r1] - adds r0, 0xB3 - strb r1, [r0] - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_804B24C - - thumb_func_start sub_804B2B0 -sub_804B2B0: @ 804B2B0 - push {lr} - ldr r0, _0804B2C0 @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - bne _0804B2C4 - movs r0, 0 - b _0804B2CC - .align 2, 0 -_0804B2C0: .4byte gReceivedRemoteLinkPlayers -_0804B2C4: - bl GetMultiplayerId - lsls r0, 24 - lsrs r0, 24 -_0804B2CC: - pop {r1} - bx r1 - thumb_func_end sub_804B2B0 - - thumb_func_start sub_804B2D0 -sub_804B2D0: @ 804B2D0 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0xC - lsls r0, 24 - lsrs r7, r0, 24 - lsls r1, 24 - lsrs r5, r1, 24 - movs r4, 0 - mov r10, r4 - cmp r7, 0 - bne _0804B2FC - ldr r0, _0804B324 @ =gUnknown_020297D8 - ldrb r1, [r0] - movs r0, 0x64 - muls r1, r0 - ldr r0, _0804B328 @ =gPlayerParty - adds r1, r0 - mov r10, r1 - movs r4, 0x1 -_0804B2FC: - cmp r7, 0x1 - bne _0804B31A - ldr r0, _0804B324 @ =gUnknown_020297D8 - ldrb r0, [r0, 0x1] - movs r1, 0x6 - bl __umodsi3 - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x64 - muls r1, r0 - ldr r0, _0804B32C @ =gEnemyParty - adds r1, r0 - mov r10, r1 - movs r4, 0x3 -_0804B31A: - cmp r5, 0 - beq _0804B330 - cmp r5, 0x1 - beq _0804B3A4 - b _0804B3FA - .align 2, 0 -_0804B324: .4byte gUnknown_020297D8 -_0804B328: .4byte gPlayerParty -_0804B32C: .4byte gEnemyParty -_0804B330: - mov r0, r10 - movs r1, 0x41 - bl GetMonData - adds r5, r0, 0 - lsls r5, 16 - lsrs r5, 16 - mov r0, r10 - movs r1, 0 - bl GetMonData - mov r9, r0 - lsls r0, r5, 3 - ldr r1, _0804B390 @ =gMonFrontPicTable - adds r0, r1 - ldr r1, _0804B394 @ =gMonFrontPicCoords - lsls r2, r5, 2 - adds r2, r1 - ldrb r1, [r2] - ldrb r2, [r2, 0x1] - ldr r3, _0804B398 @ =0x02000000 - ldr r6, _0804B39C @ =gUnknown_081FAF4C - lsls r7, 1 - mov r8, r7 - mov r4, r8 - adds r4, 0x1 - lsls r4, 2 - adds r4, r6 - ldr r4, [r4] - str r4, [sp] - str r5, [sp, 0x4] - mov r4, r9 - str r4, [sp, 0x8] - bl HandleLoadSpecialPokePic - mov r0, r10 - bl sub_8040990 - bl LoadCompressedObjectPalette - ldr r0, _0804B3A0 @ =gUnknown_03004828 - ldr r0, [r0] - movs r1, 0x90 - lsls r1, 1 - adds r0, r1 - add r0, r8 - strh r5, [r0] - b _0804B3FA - .align 2, 0 -_0804B390: .4byte gMonFrontPicTable -_0804B394: .4byte gMonFrontPicCoords -_0804B398: .4byte 0x02000000 -_0804B39C: .4byte gUnknown_081FAF4C -_0804B3A0: .4byte gUnknown_03004828 -_0804B3A4: - mov r0, r10 - bl sub_8040990 - ldrh r0, [r0, 0x4] - adds r1, r4, 0 - bl GetMonSpriteTemplate_803C56C - ldr r0, _0804B40C @ =gUnknown_02024E8C - movs r1, 0x78 - movs r2, 0x3C - movs r3, 0x6 - bl CreateSprite - ldr r4, _0804B410 @ =gUnknown_03004828 - ldr r1, [r4] - adds r1, 0xB8 - adds r1, r7 - strb r0, [r1] - ldr r3, _0804B414 @ =gSprites - ldr r0, [r4] - adds r0, 0xB8 - adds r0, r7 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] - ldr r0, [r4] - adds r0, 0xB8 - adds r0, r7 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r3, 0x1C - adds r0, r3 - ldr r1, _0804B418 @ =SpriteCallbackDummy - str r1, [r0] -_0804B3FA: - add sp, 0xC - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804B40C: .4byte gUnknown_02024E8C -_0804B410: .4byte gUnknown_03004828 -_0804B414: .4byte gSprites -_0804B418: .4byte SpriteCallbackDummy - thumb_func_end sub_804B2D0 - - thumb_func_start sub_804B41C -sub_804B41C: @ 804B41C - push {r4-r6,lr} - sub sp, 0x4 - ldr r1, _0804B43C @ =gMain - ldr r2, _0804B440 @ =0x0000043c - adds r0, r1, r2 - ldrb r0, [r0] - adds r2, r1, 0 - cmp r0, 0xC - bls _0804B430 - b _0804B76E -_0804B430: - lsls r0, 2 - ldr r1, _0804B444 @ =_0804B448 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0804B43C: .4byte gMain -_0804B440: .4byte 0x0000043c -_0804B444: .4byte _0804B448 - .align 2, 0 -_0804B448: - .4byte _0804B47C - .4byte _0804B5AC - .4byte _0804B5D4 - .4byte _0804B5FC - .4byte _0804B648 - .4byte _0804B678 - .4byte _0804B6A8 - .4byte _0804B6B2 - .4byte _0804B6CC - .4byte _0804B6E4 - .4byte _0804B71C - .4byte _0804B726 - .4byte _0804B75C -_0804B47C: - movs r1, 0x80 - lsls r1, 19 - movs r0, 0 - strh r0, [r1] - bl ResetTasks - bl CloseLink - ldr r6, _0804B570 @ =gUnknown_03004828 - ldr r5, _0804B574 @ =0x0201f000 - str r5, [r6] - bl ResetSpriteData - bl FreeAllSpritePalettes - ldr r0, _0804B578 @ =sub_804B210 - bl SetVBlankCallback - bl sub_804B228 - ldr r4, _0804B57C @ =gWindowConfig_81E6F84 - adds r0, r4, 0 - bl SetUpWindowConfig - ldr r0, [r6] - adds r0, 0x4 - adds r1, r4, 0 - bl InitWindowFromConfig - movs r0, 0x2 - bl SetTextWindowBaseTileNum - ldr r1, [r6] - adds r1, 0x34 - strb r0, [r1] - ldr r0, [r6] - adds r0, 0x4 - bl LoadTextWindowGraphics - bl MenuZeroFillScreen - ldr r1, _0804B580 @ =gLinkType - ldr r4, _0804B584 @ =0x00001144 - adds r0, r4, 0 - strh r0, [r1] - ldr r1, _0804B588 @ =gMain - ldr r0, _0804B58C @ =0x0000043c - adds r1, r0 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r0, _0804B590 @ =gUnknown_08D00000 - movs r1, 0xC0 - lsls r1, 19 - bl LZDecompressVram - ldr r0, _0804B594 @ =gUnknown_08D00524 - ldr r1, _0804B598 @ =0xfffe1000 - adds r5, r1 - movs r2, 0x80 - lsls r2, 4 - adds r1, r5, 0 - bl CpuSet - ldr r1, _0804B59C @ =0x06002800 - ldr r0, _0804B5A0 @ =0x040000d4 - str r5, [r0] - str r1, [r0, 0x4] - ldr r1, _0804B5A4 @ =0x80000280 - str r1, [r0, 0x8] - ldr r0, [r0, 0x8] - ldr r0, _0804B5A8 @ =gUnknown_08D004E0 - movs r1, 0 - movs r2, 0x20 - bl LoadCompressedPalette - ldr r1, [r6] - adds r0, r1, 0 - adds r0, 0xB6 - movs r2, 0 - strh r2, [r0] - adds r0, 0xE - strh r2, [r0] - movs r4, 0x8F - lsls r4, 1 - adds r1, r4 - movs r0, 0x1 - strb r0, [r1] - ldr r3, [r6] - movs r1, 0x82 - lsls r1, 1 - adds r0, r3, r1 - movs r1, 0x40 - strh r1, [r0] - subs r4, 0x18 - adds r0, r3, r4 - strh r1, [r0] - adds r1, 0xC8 - adds r0, r3, r1 - strh r2, [r0] - adds r4, 0x4 - adds r0, r3, r4 - strh r2, [r0] - movs r0, 0x86 - lsls r0, 1 - adds r1, r3, r0 - movs r0, 0x78 - strh r0, [r1] - adds r4, 0x4 - adds r1, r3, r4 - movs r0, 0x50 - strh r0, [r1] - adds r0, 0xC8 - adds r1, r3, r0 - subs r0, 0x18 - strh r0, [r1] - movs r1, 0x8E - lsls r1, 1 - adds r0, r3, r1 - strh r2, [r0] - b _0804B76E - .align 2, 0 -_0804B570: .4byte gUnknown_03004828 -_0804B574: .4byte 0x0201f000 -_0804B578: .4byte sub_804B210 -_0804B57C: .4byte gWindowConfig_81E6F84 -_0804B580: .4byte gLinkType -_0804B584: .4byte 0x00001144 -_0804B588: .4byte gMain -_0804B58C: .4byte 0x0000043c -_0804B590: .4byte gUnknown_08D00000 -_0804B594: .4byte gUnknown_08D00524 -_0804B598: .4byte 0xfffe1000 -_0804B59C: .4byte 0x06002800 -_0804B5A0: .4byte 0x040000d4 -_0804B5A4: .4byte 0x80000280 -_0804B5A8: .4byte gUnknown_08D004E0 -_0804B5AC: - bl OpenLink - ldr r1, _0804B5C8 @ =gMain - ldr r2, _0804B5CC @ =0x0000043c - adds r1, r2 - ldrb r0, [r1] - adds r0, 0x1 - movs r2, 0 - strb r0, [r1] - ldr r0, _0804B5D0 @ =gUnknown_03004828 - ldr r0, [r0] - adds r0, 0xC0 - str r2, [r0] - b _0804B76E - .align 2, 0 -_0804B5C8: .4byte gMain -_0804B5CC: .4byte 0x0000043c -_0804B5D0: .4byte gUnknown_03004828 -_0804B5D4: - ldr r0, _0804B5F4 @ =gUnknown_03004828 - ldr r0, [r0] - adds r1, r0, 0 - adds r1, 0xC0 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - cmp r0, 0x3C - bhi _0804B5E8 - b _0804B76E -_0804B5E8: - movs r0, 0 - str r0, [r1] - ldr r4, _0804B5F8 @ =0x0000043c - adds r1, r2, r4 - b _0804B74C - .align 2, 0 -_0804B5F4: .4byte gUnknown_03004828 -_0804B5F8: .4byte 0x0000043c -_0804B5FC: - bl IsLinkMaster - lsls r0, 24 - cmp r0, 0 - bne _0804B608 - b _0804B746 -_0804B608: - bl GetLinkPlayerCount_2 - adds r4, r0, 0 - bl sub_800820C - lsls r4, 24 - lsls r0, 24 - cmp r4, r0 - bcs _0804B61C - b _0804B76E -_0804B61C: - ldr r0, _0804B63C @ =gUnknown_03004828 - ldr r1, [r0] - adds r1, 0xC0 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - cmp r0, 0x1E - bhi _0804B62E - b _0804B76E -_0804B62E: - bl sub_8007F4C - ldr r1, _0804B640 @ =gMain - ldr r0, _0804B644 @ =0x0000043c - adds r1, r0 - b _0804B74C - .align 2, 0 -_0804B63C: .4byte gUnknown_03004828 -_0804B640: .4byte gMain -_0804B644: .4byte 0x0000043c -_0804B648: - bl sub_804B24C - ldr r0, _0804B66C @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0x1 - beq _0804B656 - b _0804B76E -_0804B656: - bl IsLinkPlayerDataExchangeComplete - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _0804B664 - b _0804B76E -_0804B664: - ldr r1, _0804B670 @ =gMain - ldr r4, _0804B674 @ =0x0000043c - adds r1, r4 - b _0804B74C - .align 2, 0 -_0804B66C: .4byte gReceivedRemoteLinkPlayers -_0804B670: .4byte gMain -_0804B674: .4byte 0x0000043c -_0804B678: - ldr r2, _0804B69C @ =gUnknown_03004828 - ldr r0, [r2] - adds r0, 0x9C - movs r1, 0 - strb r1, [r0] - ldr r0, [r2] - adds r0, 0x9D - strb r1, [r0] - ldr r0, [r2] - adds r0, 0xBD - strb r1, [r0] - movs r0, 0 - bl sub_804B2D0 - ldr r1, _0804B6A0 @ =gMain - ldr r0, _0804B6A4 @ =0x0000043c - adds r1, r0 - b _0804B74C - .align 2, 0 -_0804B69C: .4byte gUnknown_03004828 -_0804B6A0: .4byte gMain -_0804B6A4: .4byte 0x0000043c -_0804B6A8: - movs r0, 0 - movs r1, 0x1 - bl sub_804B2D0 - b _0804B746 -_0804B6B2: - movs r0, 0x1 - movs r1, 0 - bl sub_804B2D0 - ldr r1, _0804B6C4 @ =gMain - ldr r4, _0804B6C8 @ =0x0000043c - adds r1, r4 - b _0804B74C - .align 2, 0 -_0804B6C4: .4byte gMain -_0804B6C8: .4byte 0x0000043c -_0804B6CC: - movs r0, 0x1 - movs r1, 0x1 - bl sub_804B2D0 - ldr r1, _0804B6DC @ =gMain - ldr r0, _0804B6E0 @ =0x0000043c - adds r1, r0 - b _0804B74C - .align 2, 0 -_0804B6DC: .4byte gMain -_0804B6E0: .4byte 0x0000043c -_0804B6E4: - bl sub_804C164 - ldr r0, _0804B704 @ =gUnknown_0821594C - bl LoadSpriteSheet - ldr r0, _0804B708 @ =gUnknown_08215954 - bl LoadSpritePalette - ldr r1, _0804B70C @ =REG_BG1CNT - ldr r2, _0804B710 @ =0x00000502 - adds r0, r2, 0 - strh r0, [r1] - ldr r1, _0804B714 @ =gMain - ldr r4, _0804B718 @ =0x0000043c - adds r1, r4 - b _0804B74C - .align 2, 0 -_0804B704: .4byte gUnknown_0821594C -_0804B708: .4byte gUnknown_08215954 -_0804B70C: .4byte REG_BG1CNT -_0804B710: .4byte 0x00000502 -_0804B714: .4byte gMain -_0804B718: .4byte 0x0000043c -_0804B71C: - ldr r0, _0804B754 @ =0x0000043c - adds r1, r2, r0 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_0804B726: - movs r0, 0x5 - bl sub_804BBE8 - movs r0, 0 - bl sub_804BBE8 - bl sub_804C1A8 - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade -_0804B746: - ldr r1, _0804B758 @ =gMain - ldr r2, _0804B754 @ =0x0000043c - adds r1, r2 -_0804B74C: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0804B76E - .align 2, 0 -_0804B754: .4byte 0x0000043c -_0804B758: .4byte gMain -_0804B75C: - ldr r0, _0804B788 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0804B76E - ldr r0, _0804B78C @ =sub_804DB84 - bl SetMainCallback2 -_0804B76E: - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0804B788: .4byte gPaletteFade -_0804B78C: .4byte sub_804DB84 - thumb_func_end sub_804B41C - - thumb_func_start sub_804B790 -sub_804B790: @ 804B790 - push {r4-r6,lr} - mov r6, r8 - push {r6} - sub sp, 0x10 - ldr r1, _0804B7B4 @ =gMain - ldr r2, _0804B7B8 @ =0x0000043c - adds r0, r1, r2 - ldrb r0, [r0] - adds r2, r1, 0 - cmp r0, 0xC - bls _0804B7A8 - b _0804B9F2 -_0804B7A8: - lsls r0, 2 - ldr r1, _0804B7BC @ =_0804B7C0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0804B7B4: .4byte gMain -_0804B7B8: .4byte 0x0000043c -_0804B7BC: .4byte _0804B7C0 - .align 2, 0 -_0804B7C0: - .4byte _0804B7F4 - .4byte _0804B9F2 - .4byte _0804B9F2 - .4byte _0804B9F2 - .4byte _0804B9F2 - .4byte _0804B914 - .4byte _0804B92C - .4byte _0804B944 - .4byte _0804B94E - .4byte _0804B968 - .4byte _0804B9A0 - .4byte _0804B9AA - .4byte _0804B9E0 -_0804B7F4: - ldr r1, _0804B8E0 @ =gUnknown_020297D8 - ldr r0, _0804B8E4 @ =gSpecialVar_0x8005 - ldrh r0, [r0] - movs r6, 0 - strb r0, [r1] - movs r0, 0x6 - strb r0, [r1, 0x1] - ldr r4, _0804B8E8 @ =gLinkPlayers + 0x8 - ldr r1, _0804B8EC @ =gSaveBlock2 - adds r0, r4, 0 - bl StringCopy - ldr r0, _0804B8F0 @ =gEnemyParty - movs r1, 0x7 - add r2, sp, 0x4 - bl GetMonData - adds r4, 0x1C - adds r0, r4, 0 - add r1, sp, 0x4 - bl StringCopy - movs r0, 0x80 - lsls r0, 19 - movs r3, 0 - mov r8, r3 - strh r6, [r0] - bl ResetTasks - ldr r5, _0804B8F4 @ =gUnknown_03004828 - ldr r0, _0804B8F8 @ =0x0201f000 - str r0, [r5] - bl ResetSpriteData - bl FreeAllSpritePalettes - ldr r0, _0804B8FC @ =sub_804B210 - bl SetVBlankCallback - bl sub_804B228 - ldr r4, _0804B900 @ =gWindowConfig_81E717C - adds r0, r4, 0 - bl SetUpWindowConfig - ldr r0, [r5] - adds r0, 0x4 - adds r1, r4, 0 - bl InitWindowFromConfig - movs r0, 0x2 - bl SetTextWindowBaseTileNum - ldr r1, [r5] - adds r1, 0x34 - strb r0, [r1] - ldr r0, [r5] - adds r0, 0x4 - bl LoadTextWindowGraphics - bl MenuZeroFillScreen - ldr r1, _0804B904 @ =gLinkType - ldr r2, _0804B908 @ =0x00001144 - adds r0, r2, 0 - strh r0, [r1] - ldr r0, [r5] - movs r3, 0x8F - lsls r3, 1 - adds r0, r3 - mov r1, r8 - strb r1, [r0] - ldr r2, [r5] - adds r0, r2, 0 - adds r0, 0xB6 - strh r6, [r0] - adds r0, 0xE - strh r6, [r0] - subs r3, 0x1A - adds r0, r2, r3 - movs r1, 0x40 - strh r1, [r0] - adds r3, 0x2 - adds r0, r2, r3 - strh r1, [r0] - adds r1, 0xC8 - adds r0, r2, r1 - strh r6, [r0] - adds r3, 0x4 - adds r0, r2, r3 - strh r6, [r0] - movs r0, 0x86 - lsls r0, 1 - adds r1, r2, r0 - movs r0, 0x78 - strh r0, [r1] - adds r3, 0x4 - adds r1, r2, r3 - movs r0, 0x50 - strh r0, [r1] - adds r0, 0xC8 - adds r1, r2, r0 - subs r0, 0x18 - strh r0, [r1] - movs r1, 0x8E - lsls r1, 1 - adds r0, r2, r1 - strh r6, [r0] - adds r0, r2, 0 - adds r0, 0xC0 - str r6, [r0] - ldr r0, _0804B90C @ =gMain - ldr r2, _0804B910 @ =0x0000043c - adds r0, r2 - movs r1, 0x5 - strb r1, [r0] - b _0804B9F2 - .align 2, 0 -_0804B8E0: .4byte gUnknown_020297D8 -_0804B8E4: .4byte gSpecialVar_0x8005 -_0804B8E8: .4byte gLinkPlayers + 0x8 -_0804B8EC: .4byte gSaveBlock2 -_0804B8F0: .4byte gEnemyParty -_0804B8F4: .4byte gUnknown_03004828 -_0804B8F8: .4byte 0x0201f000 -_0804B8FC: .4byte sub_804B210 -_0804B900: .4byte gWindowConfig_81E717C -_0804B904: .4byte gLinkType -_0804B908: .4byte 0x00001144 -_0804B90C: .4byte gMain -_0804B910: .4byte 0x0000043c -_0804B914: - movs r0, 0 - movs r1, 0 - bl sub_804B2D0 - ldr r1, _0804B924 @ =gMain - ldr r3, _0804B928 @ =0x0000043c - adds r1, r3 - b _0804B9D0 - .align 2, 0 -_0804B924: .4byte gMain -_0804B928: .4byte 0x0000043c -_0804B92C: - movs r0, 0 - movs r1, 0x1 - bl sub_804B2D0 - ldr r1, _0804B93C @ =gMain - ldr r0, _0804B940 @ =0x0000043c - adds r1, r0 - b _0804B9D0 - .align 2, 0 -_0804B93C: .4byte gMain -_0804B940: .4byte 0x0000043c -_0804B944: - movs r0, 0x1 - movs r1, 0 - bl sub_804B2D0 - b _0804B9CA -_0804B94E: - movs r0, 0x1 - movs r1, 0x1 - bl sub_804B2D0 - ldr r1, _0804B960 @ =gMain - ldr r3, _0804B964 @ =0x0000043c - adds r1, r3 - b _0804B9D0 - .align 2, 0 -_0804B960: .4byte gMain -_0804B964: .4byte 0x0000043c -_0804B968: - bl sub_804C164 - ldr r0, _0804B988 @ =gUnknown_0821594C - bl LoadSpriteSheet - ldr r0, _0804B98C @ =gUnknown_08215954 - bl LoadSpritePalette - ldr r1, _0804B990 @ =REG_BG1CNT - ldr r2, _0804B994 @ =0x00000502 - adds r0, r2, 0 - strh r0, [r1] - ldr r1, _0804B998 @ =gMain - ldr r3, _0804B99C @ =0x0000043c - adds r1, r3 - b _0804B9D0 - .align 2, 0 -_0804B988: .4byte gUnknown_0821594C -_0804B98C: .4byte gUnknown_08215954 -_0804B990: .4byte REG_BG1CNT -_0804B994: .4byte 0x00000502 -_0804B998: .4byte gMain -_0804B99C: .4byte 0x0000043c -_0804B9A0: - ldr r0, _0804B9D8 @ =0x0000043c - adds r1, r2, r0 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_0804B9AA: - movs r0, 0x5 - bl sub_804BBE8 - movs r0, 0 - bl sub_804BBE8 - bl sub_804C1A8 - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade -_0804B9CA: - ldr r1, _0804B9DC @ =gMain - ldr r2, _0804B9D8 @ =0x0000043c - adds r1, r2 -_0804B9D0: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0804B9F2 - .align 2, 0 -_0804B9D8: .4byte 0x0000043c -_0804B9DC: .4byte gMain -_0804B9E0: - ldr r0, _0804BA10 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0804B9F2 - ldr r0, _0804BA14 @ =sub_804BBCC - bl SetMainCallback2 -_0804B9F2: - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - add sp, 0x10 - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0804BA10: .4byte gPaletteFade -_0804BA14: .4byte sub_804BBCC - thumb_func_end sub_804B790 - - thumb_func_start sub_804BA18 -sub_804BA18: @ 804BA18 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x64 - muls r1, r0 - ldr r0, _0804BA60 @ =gPlayerParty - adds r4, r1, r0 - adds r0, r4, 0 - movs r1, 0x2D - bl GetMonData - cmp r0, 0 - bne _0804BA5A - adds r0, r4, 0 - movs r1, 0xB - movs r2, 0 - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - bl SpeciesToNationalPokedexNum - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r4, 0 - movs r1, 0x2 - bl GetNationalPokedexFlag - adds r0, r4, 0 - movs r1, 0x3 - bl GetNationalPokedexFlag -_0804BA5A: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0804BA60: .4byte gPlayerParty - thumb_func_end sub_804BA18 - - thumb_func_start sub_804BA64 -sub_804BA64: @ 804BA64 - push {lr} - bl GetMultiplayerId - lsls r0, 24 - ldr r2, _0804BA90 @ =gLinkPlayers - movs r1, 0x80 - lsls r1, 17 - eors r1, r0 - lsrs r1, 24 - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r0, 0x2] - movs r0, 0x80 - lsls r0, 8 - cmp r1, r0 - bne _0804BA8C - bl EnableNationalPokedex -_0804BA8C: - pop {r0} - bx r0 - .align 2, 0 -_0804BA90: .4byte gLinkPlayers - thumb_func_end sub_804BA64 - - thumb_func_start sub_804BA94 -sub_804BA94: @ 804BA94 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x4 - adds r4, r1, 0 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - lsls r4, 24 - lsrs r4, 24 - movs r5, 0x64 - mov r1, r9 - muls r1, r5 - ldr r0, _0804BB60 @ =gPlayerParty - adds r7, r1, r0 - adds r0, r7, 0 - movs r1, 0x40 - bl GetMonData - lsls r0, 16 - lsrs r6, r0, 16 - adds r1, r4, 0 - muls r1, r5 - ldr r0, _0804BB64 @ =gEnemyParty - adds r5, r1, r0 - adds r0, r5, 0 - movs r1, 0x40 - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - cmp r6, 0xFF - beq _0804BAE8 - lsls r0, r6, 3 - adds r0, r6 - lsls r0, 2 - ldr r1, _0804BB68 @ =gSaveBlock1 + 0x2B4C - adds r0, r1 - bl ClearMailStruct -_0804BAE8: - ldr r4, _0804BB6C @ =gUnknown_03004828 - ldr r0, [r4] - adds r0, 0x38 - adds r1, r7, 0 - movs r2, 0x64 - bl memcpy - adds r0, r7, 0 - adds r1, r5, 0 - movs r2, 0x64 - bl memcpy - ldr r1, [r4] - adds r1, 0x38 - adds r0, r5, 0 - movs r2, 0x64 - bl memcpy - movs r1, 0x46 - mov r0, sp - strb r1, [r0] - adds r0, r7, 0 - movs r1, 0x2D - bl GetMonData - cmp r0, 0 - bne _0804BB28 - adds r0, r7, 0 - movs r1, 0x20 - mov r2, sp - bl SetMonData -_0804BB28: - mov r0, r8 - cmp r0, 0xFF - beq _0804BB3E - lsls r1, r0, 3 - add r1, r8 - lsls r1, 2 - ldr r0, _0804BB70 @ =gUnknown_02029700 - adds r1, r0 - adds r0, r7, 0 - bl GiveMailToMon2 -_0804BB3E: - mov r0, r9 - bl sub_804BA18 - ldr r0, _0804BB74 @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - beq _0804BB50 - bl sub_804BA64 -_0804BB50: - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804BB60: .4byte gPlayerParty -_0804BB64: .4byte gEnemyParty -_0804BB68: .4byte gSaveBlock1 + 0x2B4C -_0804BB6C: .4byte gUnknown_03004828 -_0804BB70: .4byte gUnknown_02029700 -_0804BB74: .4byte gReceivedRemoteLinkPlayers - thumb_func_end sub_804BA94 - - thumb_func_start sub_804BB78 -sub_804BB78: @ 804BB78 - push {r4,lr} - ldr r4, _0804BB8C @ =gUnknown_03004828 - ldr r0, [r4] - adds r0, 0xBD - ldrb r0, [r0] - cmp r0, 0x1 - beq _0804BB90 - cmp r0, 0x2 - beq _0804BBB6 - b _0804BBC0 - .align 2, 0 -_0804BB8C: .4byte gUnknown_03004828 -_0804BB90: - bl sub_8007ECC - lsls r0, 24 - cmp r0, 0 - beq _0804BBB6 - bl bitmask_all_link_players_but_self - lsls r0, 24 - lsrs r0, 24 - ldr r1, [r4] - adds r1, 0x9E - movs r2, 0x14 - bl SendBlock - ldr r1, [r4] - adds r1, 0xBD - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_0804BBB6: - ldr r0, _0804BBC8 @ =gUnknown_03004828 - ldr r0, [r0] - adds r0, 0xBD - movs r1, 0 - strb r1, [r0] -_0804BBC0: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0804BBC8: .4byte gUnknown_03004828 - thumb_func_end sub_804BB78 - - thumb_func_start sub_804BBCC -sub_804BBCC: @ 804BBCC - push {lr} - bl sub_804C29C - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - pop {r0} - bx r0 - thumb_func_end sub_804BBCC - - thumb_func_start sub_804BBE8 -sub_804BBE8: @ 804BBE8 - push {r4-r7,lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x7 - bls _0804BBF4 - b _0804C0CA -_0804BBF4: - lsls r0, 2 - ldr r1, _0804BC00 @ =_0804BC04 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0804BC00: .4byte _0804BC04 - .align 2, 0 -_0804BC04: - .4byte _0804BC24 - .4byte _0804BCC4 - .4byte _0804BD5C - .4byte _0804BDA4 - .4byte _0804BE48 - .4byte _0804BEF8 - .4byte _0804BFA0 - .4byte _0804C060 -_0804BC24: - ldr r0, _0804BCA0 @ =gUnknown_0820C9F8 - movs r1, 0x10 - movs r2, 0xA0 - bl LoadPalette - ldr r3, _0804BCA4 @ =gUnknown_0820CA98 - ldr r4, _0804BCA8 @ =0x06004000 - movs r5, 0x98 - lsls r5, 5 - ldr r1, _0804BCAC @ =0x040000d4 - ldr r6, _0804BCB0 @ =0x80000800 - movs r2, 0x80 - lsls r2, 5 - movs r7, 0x80 - lsls r7, 24 -_0804BC42: - str r3, [r1] - str r4, [r1, 0x4] - str r6, [r1, 0x8] - ldr r0, [r1, 0x8] - adds r3, r2 - adds r4, r2 - subs r5, r2 - cmp r5, r2 - bhi _0804BC42 - str r3, [r1] - str r4, [r1, 0x4] - lsrs r0, r5, 1 - orrs r0, r7 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - ldr r1, _0804BCB4 @ =gUnknown_0820F798 - ldr r2, _0804BCB8 @ =0x06009000 - ldr r0, _0804BCAC @ =0x040000d4 - str r1, [r0] - str r2, [r0, 0x4] - ldr r1, _0804BCB0 @ =0x80000800 - str r1, [r0, 0x8] - ldr r0, [r0, 0x8] - ldr r0, _0804BCBC @ =gUnknown_03004828 - ldr r2, [r0] - movs r0, 0x8A - lsls r0, 1 - adds r1, r2, r0 - movs r0, 0 - strh r0, [r1] - movs r3, 0x8B - lsls r3, 1 - adds r1, r2, r3 - movs r0, 0xB4 - strh r0, [r1] - movs r1, 0x80 - lsls r1, 19 - movs r4, 0xBA - lsls r4, 5 - adds r0, r4, 0 - strh r0, [r1] - adds r1, 0xC - ldr r2, _0804BCC0 @ =0x00005206 - adds r0, r2, 0 - strh r0, [r1] - b _0804C0CA - .align 2, 0 -_0804BCA0: .4byte gUnknown_0820C9F8 -_0804BCA4: .4byte gUnknown_0820CA98 -_0804BCA8: .4byte 0x06004000 -_0804BCAC: .4byte 0x040000d4 -_0804BCB0: .4byte 0x80000800 -_0804BCB4: .4byte gUnknown_0820F798 -_0804BCB8: .4byte 0x06009000 -_0804BCBC: .4byte gUnknown_03004828 -_0804BCC0: .4byte 0x00005206 -_0804BCC4: - ldr r0, _0804BD3C @ =gUnknown_03004828 - ldr r2, [r0] - movs r3, 0x89 - lsls r3, 1 - adds r1, r2, r3 - movs r0, 0 - strh r0, [r1] - movs r4, 0x88 - lsls r4, 1 - adds r0, r2, r4 - movs r1, 0xAE - lsls r1, 1 - strh r1, [r0] - ldr r0, _0804BD40 @ =REG_BG1VOFS - strh r1, [r0] - ldr r1, _0804BD44 @ =REG_BG1CNT - ldr r2, _0804BD48 @ =0x00008502 - adds r0, r2, 0 - strh r0, [r1] - ldr r0, _0804BD4C @ =gUnknown_08210798 - ldr r2, _0804BD50 @ =0x06002800 - movs r3, 0x80 - lsls r3, 5 - adds r1, 0xCA - str r0, [r1] - str r2, [r1, 0x4] - lsrs r0, r3, 1 - movs r2, 0x80 - lsls r2, 24 - orrs r0, r2 - str r0, [r1, 0x8] - ldr r4, [r1, 0x8] - ldr r4, _0804BD54 @ =gUnknown_0820CA98 - movs r5, 0xC0 - lsls r5, 19 - movs r6, 0x98 - lsls r6, 5 - adds r7, r0, 0 -_0804BD10: - str r4, [r1] - str r5, [r1, 0x4] - str r7, [r1, 0x8] - ldr r0, [r1, 0x8] - adds r4, r3 - adds r5, r3 - subs r6, r3 - cmp r6, r3 - bhi _0804BD10 - str r4, [r1] - str r5, [r1, 0x4] - lsrs r0, r6, 1 - orrs r0, r2 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - movs r1, 0x80 - lsls r1, 19 - ldr r3, _0804BD58 @ =0x00001241 - adds r0, r3, 0 - strh r0, [r1] - b _0804C0CA - .align 2, 0 -_0804BD3C: .4byte gUnknown_03004828 -_0804BD40: .4byte REG_BG1VOFS -_0804BD44: .4byte REG_BG1CNT -_0804BD48: .4byte 0x00008502 -_0804BD4C: .4byte gUnknown_08210798 -_0804BD50: .4byte 0x06002800 -_0804BD54: .4byte gUnknown_0820CA98 -_0804BD58: .4byte 0x00001241 -_0804BD5C: - ldr r0, _0804BD8C @ =gUnknown_03004828 - ldr r2, [r0] - movs r4, 0x88 - lsls r4, 1 - adds r0, r2, r4 - movs r1, 0 - strh r1, [r0] - movs r3, 0x89 - lsls r3, 1 - adds r0, r2, r3 - strh r1, [r0] - movs r1, 0x80 - lsls r1, 19 - ldr r4, _0804BD90 @ =0x00001241 - adds r0, r4, 0 - strh r0, [r1] - ldr r1, _0804BD94 @ =gUnknown_08211798 - ldr r2, _0804BD98 @ =0x06002800 - ldr r0, _0804BD9C @ =0x040000d4 - str r1, [r0] - str r2, [r0, 0x4] - ldr r1, _0804BDA0 @ =0x80000400 - b _0804C0C6 - .align 2, 0 -_0804BD8C: .4byte gUnknown_03004828 -_0804BD90: .4byte 0x00001241 -_0804BD94: .4byte gUnknown_08211798 -_0804BD98: .4byte 0x06002800 -_0804BD9C: .4byte 0x040000d4 -_0804BDA0: .4byte 0x80000400 -_0804BDA4: - movs r1, 0x80 - lsls r1, 19 - movs r2, 0x92 - lsls r2, 5 - adds r0, r2, 0 - strh r0, [r1] - ldr r0, _0804BE24 @ =gUnknown_03004828 - ldr r3, [r0] - movs r4, 0x82 - lsls r4, 1 - adds r1, r3, r4 - movs r2, 0 - movs r0, 0x40 - strh r0, [r1] - adds r4, 0x2 - adds r1, r3, r4 - strh r0, [r1] - adds r0, 0xCC - adds r1, r3, r0 - movs r0, 0x78 - strh r0, [r1] - adds r4, 0x8 - adds r1, r3, r4 - ldr r0, _0804BE28 @ =0x0000ffba - strh r0, [r1] - movs r1, 0x8E - lsls r1, 1 - adds r0, r3, r1 - strh r2, [r0] - ldr r3, _0804BE2C @ =gUnknown_0820DD98 - ldr r4, _0804BE30 @ =0x06004000 - movs r5, 0xD0 - lsls r5, 5 - ldr r2, _0804BE34 @ =gUnknown_08211F98 - mov r12, r2 - ldr r1, _0804BE38 @ =0x040000d4 - ldr r6, _0804BE3C @ =0x80000800 - movs r2, 0x80 - lsls r2, 5 - movs r7, 0x80 - lsls r7, 24 -_0804BDF6: - str r3, [r1] - str r4, [r1, 0x4] - str r6, [r1, 0x8] - ldr r0, [r1, 0x8] - adds r3, r2 - adds r4, r2 - subs r5, r2 - cmp r5, r2 - bhi _0804BDF6 - str r3, [r1] - str r4, [r1, 0x4] - lsrs r0, r5, 1 - orrs r0, r7 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - ldr r1, _0804BE40 @ =0x06009000 - ldr r0, _0804BE38 @ =0x040000d4 - mov r3, r12 - str r3, [r0] - str r1, [r0, 0x4] - ldr r1, _0804BE44 @ =0x80000080 - b _0804C0C6 - .align 2, 0 -_0804BE24: .4byte gUnknown_03004828 -_0804BE28: .4byte 0x0000ffba -_0804BE2C: .4byte gUnknown_0820DD98 -_0804BE30: .4byte 0x06004000 -_0804BE34: .4byte gUnknown_08211F98 -_0804BE38: .4byte 0x040000d4 -_0804BE3C: .4byte 0x80000800 -_0804BE40: .4byte 0x06009000 -_0804BE44: .4byte 0x80000080 -_0804BE48: - movs r1, 0x80 - lsls r1, 19 - ldr r4, _0804BED0 @ =0x00001441 - adds r0, r4, 0 - strh r0, [r1] - adds r1, 0xC - ldr r2, _0804BED4 @ =0x00001287 - adds r0, r2, 0 - strh r0, [r1] - ldr r0, _0804BED8 @ =gUnknown_03004828 - ldr r3, [r0] - movs r4, 0x82 - lsls r4, 1 - adds r1, r3, r4 - movs r2, 0 - movs r0, 0x40 - strh r0, [r1] - adds r0, 0xC6 - adds r1, r3, r0 - movs r0, 0x5C - strh r0, [r1] - adds r4, 0x14 - adds r1, r3, r4 - movs r0, 0x20 - strh r0, [r1] - adds r0, 0xFA - adds r1, r3, r0 - movs r0, 0x80 - lsls r0, 3 - strh r0, [r1] - movs r1, 0x8E - lsls r1, 1 - adds r0, r3, r1 - strh r2, [r0] - ldr r3, _0804BEDC @ =gUnknown_08213738 - ldr r4, _0804BEE0 @ =0x06004000 - movs r5, 0x81 - lsls r5, 6 - ldr r2, _0804BEE4 @ =gUnknown_08215778 - mov r12, r2 - ldr r1, _0804BEE8 @ =0x040000d4 - ldr r6, _0804BEEC @ =0x80000800 - movs r2, 0x80 - lsls r2, 5 - movs r7, 0x80 - lsls r7, 24 -_0804BEA4: - str r3, [r1] - str r4, [r1, 0x4] - str r6, [r1, 0x8] - ldr r0, [r1, 0x8] - adds r3, r2 - adds r4, r2 - subs r5, r2 - cmp r5, r2 - bhi _0804BEA4 - str r3, [r1] - str r4, [r1, 0x4] - lsrs r0, r5, 1 - orrs r0, r7 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - ldr r1, _0804BEF0 @ =0x06009000 - ldr r0, _0804BEE8 @ =0x040000d4 - mov r3, r12 - str r3, [r0] - str r1, [r0, 0x4] - ldr r1, _0804BEF4 @ =0x80000080 - b _0804C0C6 - .align 2, 0 -_0804BED0: .4byte 0x00001441 -_0804BED4: .4byte 0x00001287 -_0804BED8: .4byte gUnknown_03004828 -_0804BEDC: .4byte gUnknown_08213738 -_0804BEE0: .4byte 0x06004000 -_0804BEE4: .4byte gUnknown_08215778 -_0804BEE8: .4byte 0x040000d4 -_0804BEEC: .4byte 0x80000800 -_0804BEF0: .4byte 0x06009000 -_0804BEF4: .4byte 0x80000080 -_0804BEF8: - ldr r0, _0804BF78 @ =gUnknown_03004828 - ldr r2, [r0] - movs r4, 0x88 - lsls r4, 1 - adds r0, r2, r4 - movs r1, 0 - strh r1, [r0] - movs r3, 0x89 - lsls r3, 1 - adds r0, r2, r3 - strh r1, [r0] - ldr r1, _0804BF7C @ =REG_BG1CNT - ldr r4, _0804BF80 @ =0x00000502 - adds r0, r4, 0 - strh r0, [r1] - ldr r0, _0804BF84 @ =gUnknown_08D00000 - movs r1, 0xC0 - lsls r1, 19 - bl LZDecompressVram - ldr r0, _0804BF88 @ =gUnknown_08D00524 - ldr r4, _0804BF8C @ =0x02000000 - movs r2, 0x80 - lsls r2, 4 - adds r1, r4, 0 - bl CpuSet - ldr r0, _0804BF90 @ =gUnknown_08D004E0 - movs r1, 0x70 - movs r2, 0x20 - bl LoadCompressedPalette - movs r0, 0 - movs r1, 0 - movs r2, 0x2 - bl FillPalette - movs r0, 0xE0 - lsls r0, 7 - adds r2, r0, 0 - movs r1, 0xA0 - lsls r1, 2 -_0804BF4C: - ldrh r0, [r4] - orrs r0, r2 - strh r0, [r4] - adds r4, 0x2 - subs r1, 0x1 - cmp r1, 0 - bne _0804BF4C - ldr r1, _0804BF8C @ =0x02000000 - ldr r2, _0804BF94 @ =0x06002800 - ldr r0, _0804BF98 @ =0x040000d4 - str r1, [r0] - str r2, [r0, 0x4] - ldr r1, _0804BF9C @ =0x80000280 - str r1, [r0, 0x8] - ldr r0, [r0, 0x8] - movs r0, 0x2 - movs r1, 0xF - movs r2, 0x1B - movs r3, 0x12 - bl MenuZeroFillWindowRect - b _0804C0CA - .align 2, 0 -_0804BF78: .4byte gUnknown_03004828 -_0804BF7C: .4byte REG_BG1CNT -_0804BF80: .4byte 0x00000502 -_0804BF84: .4byte gUnknown_08D00000 -_0804BF88: .4byte gUnknown_08D00524 -_0804BF8C: .4byte 0x02000000 -_0804BF90: .4byte gUnknown_08D004E0 -_0804BF94: .4byte 0x06002800 -_0804BF98: .4byte 0x040000d4 -_0804BF9C: .4byte 0x80000280 -_0804BFA0: - movs r1, 0x80 - lsls r1, 19 - ldr r2, _0804C038 @ =0x00001441 - adds r0, r2, 0 - strh r0, [r1] - adds r1, 0xC - ldr r3, _0804C03C @ =0x00001287 - adds r0, r3, 0 - strh r0, [r1] - ldr r0, _0804C040 @ =gUnknown_03004828 - ldr r3, [r0] - movs r4, 0x82 - lsls r4, 1 - adds r1, r3, r4 - movs r2, 0 - movs r0, 0x40 - strh r0, [r1] - adds r0, 0xC6 - adds r1, r3, r0 - movs r0, 0x5C - strh r0, [r1] - adds r4, 0x14 - adds r1, r3, r4 - adds r0, 0xA4 - strh r0, [r1] - adds r0, 0x1A - adds r1, r3, r0 - movs r0, 0x80 - strh r0, [r1] - subs r4, 0xC - adds r1, r3, r4 - movs r0, 0x78 - strh r0, [r1] - adds r0, 0x96 - adds r1, r3, r0 - movs r0, 0x50 - strh r0, [r1] - movs r1, 0x8E - lsls r1, 1 - adds r0, r3, r1 - strh r2, [r0] - ldr r3, _0804C044 @ =gUnknown_08213738 - ldr r4, _0804C048 @ =0x06004000 - movs r5, 0x81 - lsls r5, 6 - ldr r2, _0804C04C @ =gUnknown_08215778 - mov r12, r2 - ldr r1, _0804C050 @ =0x040000d4 - ldr r6, _0804C054 @ =0x80000800 - movs r2, 0x80 - lsls r2, 5 - movs r7, 0x80 - lsls r7, 24 -_0804C00A: - str r3, [r1] - str r4, [r1, 0x4] - str r6, [r1, 0x8] - ldr r0, [r1, 0x8] - adds r3, r2 - adds r4, r2 - subs r5, r2 - cmp r5, r2 - bhi _0804C00A - str r3, [r1] - str r4, [r1, 0x4] - lsrs r0, r5, 1 - orrs r0, r7 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - ldr r1, _0804C058 @ =0x06009000 - ldr r0, _0804C050 @ =0x040000d4 - mov r3, r12 - str r3, [r0] - str r1, [r0, 0x4] - ldr r1, _0804C05C @ =0x80000080 - b _0804C0C6 - .align 2, 0 -_0804C038: .4byte 0x00001441 -_0804C03C: .4byte 0x00001287 -_0804C040: .4byte gUnknown_03004828 -_0804C044: .4byte gUnknown_08213738 -_0804C048: .4byte 0x06004000 -_0804C04C: .4byte gUnknown_08215778 -_0804C050: .4byte 0x040000d4 -_0804C054: .4byte 0x80000800 -_0804C058: .4byte 0x06009000 -_0804C05C: .4byte 0x80000080 -_0804C060: - ldr r0, _0804C0D0 @ =gUnknown_03004828 - ldr r2, [r0] - movs r4, 0x8A - lsls r4, 1 - adds r0, r2, r4 - movs r1, 0 - strh r1, [r0] - movs r3, 0x8B - lsls r3, 1 - adds r0, r2, r3 - strh r1, [r0] - ldr r1, _0804C0D4 @ =REG_BG2CNT - ldr r4, _0804C0D8 @ =0x00005206 - adds r0, r4, 0 - strh r0, [r1] - ldr r0, _0804C0DC @ =gUnknown_0820C9F8 - movs r1, 0x10 - movs r2, 0xA0 - bl LoadPalette - ldr r3, _0804C0E0 @ =gUnknown_0820CA98 - ldr r4, _0804C0E4 @ =0x06004000 - movs r5, 0x98 - lsls r5, 5 - ldr r1, _0804C0E8 @ =0x040000d4 - ldr r6, _0804C0EC @ =0x80000800 - movs r2, 0x80 - lsls r2, 5 - movs r7, 0x80 - lsls r7, 24 -_0804C09C: - str r3, [r1] - str r4, [r1, 0x4] - str r6, [r1, 0x8] - ldr r0, [r1, 0x8] - adds r3, r2 - adds r4, r2 - subs r5, r2 - cmp r5, r2 - bhi _0804C09C - str r3, [r1] - str r4, [r1, 0x4] - lsrs r0, r5, 1 - orrs r0, r7 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - ldr r1, _0804C0F0 @ =gUnknown_0820F798 - ldr r2, _0804C0F4 @ =0x06009000 - ldr r0, _0804C0E8 @ =0x040000d4 - str r1, [r0] - str r2, [r0, 0x4] - ldr r1, _0804C0EC @ =0x80000800 -_0804C0C6: - str r1, [r0, 0x8] - ldr r0, [r0, 0x8] -_0804C0CA: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804C0D0: .4byte gUnknown_03004828 -_0804C0D4: .4byte REG_BG2CNT -_0804C0D8: .4byte 0x00005206 -_0804C0DC: .4byte gUnknown_0820C9F8 -_0804C0E0: .4byte gUnknown_0820CA98 -_0804C0E4: .4byte 0x06004000 -_0804C0E8: .4byte 0x040000d4 -_0804C0EC: .4byte 0x80000800 -_0804C0F0: .4byte gUnknown_0820F798 -_0804C0F4: .4byte 0x06009000 - thumb_func_end sub_804BBE8 - - thumb_func_start sub_804C0F8 -sub_804C0F8: @ 804C0F8 - push {lr} - lsls r0, 24 - cmp r0, 0 - bne _0804C130 - ldr r0, _0804C128 @ =gUnknown_03004828 - ldr r2, [r0] - movs r1, 0x88 - lsls r1, 1 - adds r0, r2, r1 - movs r3, 0 - ldrsh r1, [r0, r3] - ldr r0, _0804C12C @ =0x00000109 - cmp r1, r0 - bgt _0804C15A - adds r0, 0x5 - adds r1, r2, r0 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - movs r3, 0x8E - lsls r3, 1 - adds r1, r2, r3 - b _0804C154 - .align 2, 0 -_0804C128: .4byte gUnknown_03004828 -_0804C12C: .4byte 0x00000109 -_0804C130: - ldr r0, _0804C160 @ =gUnknown_03004828 - ldr r0, [r0] - mov r12, r0 - movs r2, 0x87 - lsls r2, 1 - add r2, r12 - ldrh r3, [r2] - movs r0, 0 - ldrsh r1, [r2, r0] - movs r0, 0x40 - negs r0, r0 - cmp r1, r0 - ble _0804C15A - subs r0, r3, 0x1 - strh r0, [r2] - movs r1, 0x8E - lsls r1, 1 - add r1, r12 -_0804C154: - ldrh r0, [r1] - adds r0, 0x40 - strh r0, [r1] -_0804C15A: - pop {r0} - bx r0 - .align 2, 0 -_0804C160: .4byte gUnknown_03004828 - thumb_func_end sub_804C0F8 - - thumb_func_start sub_804C164 -sub_804C164: @ 804C164 - push {lr} - ldr r0, _0804C190 @ =gUnknown_082159A4 - bl LoadSpriteSheet - ldr r0, _0804C194 @ =gUnknown_082159F4 - bl LoadSpriteSheet - ldr r0, _0804C198 @ =gUnknown_08215A28 - bl LoadSpriteSheet - ldr r0, _0804C19C @ =gUnknown_08215A78 - bl LoadSpriteSheet - ldr r0, _0804C1A0 @ =gUnknown_082159AC - bl LoadSpritePalette - ldr r0, _0804C1A4 @ =gUnknown_082159B4 - bl LoadSpritePalette - pop {r0} - bx r0 - .align 2, 0 -_0804C190: .4byte gUnknown_082159A4 -_0804C194: .4byte gUnknown_082159F4 -_0804C198: .4byte gUnknown_08215A28 -_0804C19C: .4byte gUnknown_08215A78 -_0804C1A0: .4byte gUnknown_082159AC -_0804C1A4: .4byte gUnknown_082159B4 - thumb_func_end sub_804C164 - - thumb_func_start sub_804C1A8 -sub_804C1A8: @ 804C1A8 - push {r4,r5,lr} - sub sp, 0x14 - ldr r0, _0804C21C @ =gUnknown_03004828 - ldr r0, [r0] - movs r1, 0x8F - lsls r1, 1 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - beq _0804C23C - bl GetMultiplayerId - lsls r0, 24 - ldr r3, _0804C220 @ =gStringVar1 - movs r2, 0x80 - lsls r2, 17 - eors r2, r0 - lsrs r2, 24 - lsls r1, r2, 3 - subs r1, r2 - lsls r1, 2 - ldr r0, _0804C224 @ =gLinkPlayers + 0x8 - adds r1, r0 - adds r0, r3, 0 - bl StringCopy - ldr r5, _0804C228 @ =gUnknown_020297D8 - ldrb r0, [r5, 0x1] - movs r1, 0x6 - bl __umodsi3 - lsls r0, 24 - lsrs r0, 24 - movs r4, 0x64 - muls r0, r4 - ldr r1, _0804C22C @ =gEnemyParty - adds r0, r1 - movs r1, 0x2 - mov r2, sp - bl GetMonData - ldr r0, _0804C230 @ =gStringVar3 - mov r1, sp - bl StringCopy10 - ldrb r0, [r5] - muls r0, r4 - ldr r1, _0804C234 @ =gPlayerParty - adds r0, r1 - movs r1, 0x2 - mov r2, sp - bl GetMonData - ldr r0, _0804C238 @ =gStringVar2 - mov r1, sp - bl StringCopy10 - b _0804C278 - .align 2, 0 -_0804C21C: .4byte gUnknown_03004828 -_0804C220: .4byte gStringVar1 -_0804C224: .4byte gLinkPlayers + 0x8 -_0804C228: .4byte gUnknown_020297D8 -_0804C22C: .4byte gEnemyParty -_0804C230: .4byte gStringVar3 -_0804C234: .4byte gPlayerParty -_0804C238: .4byte gStringVar2 -_0804C23C: - ldr r0, _0804C280 @ =gSpecialVar_0x8004 - ldrh r0, [r0] - lsls r4, r0, 4 - subs r4, r0 - lsls r4, 2 - ldr r0, _0804C284 @ =gIngameTrades - adds r4, r0 - ldr r0, _0804C288 @ =gStringVar1 - adds r1, r4, 0 - adds r1, 0x2B - bl StringCopy - ldr r0, _0804C28C @ =gStringVar3 - adds r1, r4, 0 - bl StringCopy10 - ldr r0, _0804C290 @ =gSpecialVar_0x8005 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _0804C294 @ =gPlayerParty - adds r0, r1 - movs r1, 0x2 - mov r2, sp - bl GetMonData - ldr r0, _0804C298 @ =gStringVar2 - mov r1, sp - bl StringCopy10 -_0804C278: - add sp, 0x14 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0804C280: .4byte gSpecialVar_0x8004 -_0804C284: .4byte gIngameTrades -_0804C288: .4byte gStringVar1 -_0804C28C: .4byte gStringVar3 -_0804C290: .4byte gSpecialVar_0x8005 -_0804C294: .4byte gPlayerParty -_0804C298: .4byte gStringVar2 - thumb_func_end sub_804C1A8 - - thumb_func_start sub_804C29C -sub_804C29C: @ 804C29C - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x10 - ldr r1, _0804C2C0 @ =gUnknown_03004828 - ldr r0, [r1] - adds r0, 0xC4 - ldrh r0, [r0] - adds r6, r1, 0 - cmp r0, 0xC8 - bls _0804C2B6 - bl _0804D570 -_0804C2B6: - lsls r0, 2 - ldr r1, _0804C2C4 @ =_0804C2C8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0804C2C0: .4byte gUnknown_03004828 -_0804C2C4: .4byte _0804C2C8 - .align 2, 0 -_0804C2C8: - .4byte _0804C5EC - .4byte _0804C66C - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804C6C8 - .4byte _0804C704 - .4byte _0804C79C - .4byte _0804D570 - .4byte _0804C824 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804C848 - .4byte _0804C868 - .4byte _0804C87A - .4byte _0804C89C - .4byte _0804C8F4 - .4byte _0804C92C - .4byte _0804C978 - .4byte _0804C9C8 - .4byte _0804CA1C - .4byte _0804CAB4 - .4byte _0804CAD8 - .4byte _0804CB24 - .4byte _0804CB70 - .4byte _0804CBCC - .4byte _0804CC2C - .4byte _0804CC40 - .4byte _0804CC54 - .4byte _0804CC68 - .4byte _0804CD94 - .4byte _0804CE64 - .4byte _0804CEEC - .4byte _0804CF68 - .4byte _0804CF78 - .4byte _0804CFA0 - .4byte _0804CFFC - .4byte _0804D028 - .4byte _0804D054 - .4byte _0804D06A - .4byte _0804D0D4 - .4byte _0804D570 - .4byte _0804D0FC - .4byte _0804D13C - .4byte _0804D182 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D1A4 - .4byte _0804D1C4 - .4byte _0804D1D2 - .4byte _0804D1F4 - .4byte _0804D2A8 - .4byte _0804D2E4 - .4byte _0804D314 - .4byte _0804D3C4 - .4byte _0804D41C - .4byte _0804D48C - .4byte _0804D4A0 - .4byte _0804D4A6 - .4byte _0804D4CC - .4byte _0804D528 - .4byte _0804D54C - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804CA54 -_0804C5EC: - ldr r3, _0804C65C @ =gSprites - ldr r0, [r6] - adds r0, 0xB8 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - adds r0, 0x3E - ldrb r2, [r0] - movs r1, 0x5 - negs r1, r1 - ands r1, r2 - strb r1, [r0] - ldr r4, [r6] - adds r2, r4, 0 - adds r2, 0xB8 - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldr r1, _0804C660 @ =0x0000ff4c - strh r1, [r0, 0x24] - ldrb r0, [r2] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r3 - ldr r2, _0804C664 @ =gMonFrontPicCoords - movs r3, 0x90 - lsls r3, 1 - adds r0, r4, r3 - ldrh r0, [r0] - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x1] - strh r0, [r1, 0x26] - adds r1, r4, 0 - adds r1, 0xC4 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - bl GetCurrentMapMusic - ldr r1, [r6] - movs r7, 0x92 - lsls r7, 1 - adds r1, r7 - strh r0, [r1] - ldr r0, _0804C668 @ =0x00000179 - bl PlayBGM - bl _0804D570 - .align 2, 0 -_0804C65C: .4byte gSprites -_0804C660: .4byte 0x0000ff4c -_0804C664: .4byte gMonFrontPicCoords -_0804C668: .4byte 0x00000179 -_0804C66C: - ldr r4, [r6] - movs r0, 0x8B - lsls r0, 1 - adds r5, r4, r0 - movs r1, 0 - ldrsh r0, [r5, r1] - cmp r0, 0 - ble _0804C6A0 - ldr r2, _0804C69C @ =gSprites - adds r0, r4, 0 - adds r0, 0xB8 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r0, 0x24] - adds r1, 0x3 - strh r1, [r0, 0x24] - ldrh r0, [r5] - subs r0, 0x3 - strh r0, [r5] - bl _0804D570 - .align 2, 0 -_0804C69C: .4byte gSprites -_0804C6A0: - ldr r2, _0804C6C4 @ =gSprites - adds r0, r4, 0 - adds r0, 0xB8 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0 - strh r1, [r0, 0x24] - strh r1, [r5] - adds r1, r4, 0 - adds r1, 0xC4 - movs r0, 0xA - strh r0, [r1] - bl _0804D570 - .align 2, 0 -_0804C6C4: .4byte gSprites -_0804C6C8: - ldr r5, _0804C6F8 @ =gStringVar4 - ldr r1, _0804C6FC @ =gTradeText_WillBeSent - adds r0, r5, 0 - bl StringExpandPlaceholders - ldr r4, _0804C700 @ =gUnknown_03004828 - ldr r1, [r4] - adds r0, r1, 0x4 - adds r1, 0x34 - ldrb r2, [r1] - movs r1, 0xF - str r1, [sp] - adds r1, r5, 0 - movs r3, 0x2 - bl sub_8003460 - ldr r1, [r4] - adds r2, r1, 0 - adds r2, 0xC4 - movs r3, 0 - movs r0, 0xB - bl _0804D40C - .align 2, 0 -_0804C6F8: .4byte gStringVar4 -_0804C6FC: .4byte gTradeText_WillBeSent -_0804C700: .4byte gUnknown_03004828 -_0804C704: - ldr r2, [r6] - adds r1, r2, 0 - adds r1, 0xC0 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - cmp r0, 0x50 - beq _0804C718 - bl _0804D570 -_0804C718: - adds r0, r2, 0 - adds r0, 0xB8 - ldrb r0, [r0] - ldr r2, _0804C78C @ =gSprites - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - ldrb r1, [r1, 0x5] - lsrs r1, 4 - movs r2, 0x2 - str r2, [sp] - movs r2, 0x1 - str r2, [sp, 0x4] - movs r2, 0x14 - str r2, [sp, 0x8] - ldr r2, _0804C790 @ =0x000fffff - str r2, [sp, 0xC] - movs r2, 0x78 - movs r3, 0x20 - bl sub_8047580 - ldr r1, [r6] - movs r2, 0x81 - lsls r2, 1 - adds r1, r2 - strb r0, [r1] - ldr r0, [r6] - adds r2, r0, 0 - adds r2, 0xC4 - ldrh r1, [r2] - adds r1, 0x1 - strh r1, [r2] - adds r0, 0x4 - movs r1, 0x13 - str r1, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x1D - bl ZeroFillWindowRect - ldr r4, _0804C794 @ =gStringVar4 - ldr r1, _0804C798 @ =gTradeText_ByeBye - adds r0, r4, 0 - bl StringExpandPlaceholders - ldr r1, [r6] - adds r0, r1, 0x4 - adds r1, 0x34 - ldrb r2, [r1] - movs r1, 0xF - str r1, [sp] - adds r1, r4, 0 - movs r3, 0x2 - bl sub_8003460 - bl _0804D570 - .align 2, 0 -_0804C78C: .4byte gSprites -_0804C790: .4byte 0x000fffff -_0804C794: .4byte gStringVar4 -_0804C798: .4byte gTradeText_ByeBye -_0804C79C: - ldr r7, _0804C810 @ =gSprites - ldr r2, [r6] - movs r5, 0x81 - lsls r5, 1 - adds r0, r2, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r4, r7, 0 - adds r4, 0x1C - adds r0, r4 - ldr r1, [r0] - ldr r0, _0804C814 @ =SpriteCallbackDummy - cmp r1, r0 - beq _0804C7C0 - bl _0804D570 -_0804C7C0: - adds r0, r2, 0x4 - bl sub_80035AC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _0804C7D2 - bl _0804D570 -_0804C7D2: - ldr r0, _0804C818 @ =gSpriteTemplate_821595C - movs r1, 0x78 - movs r2, 0x20 - movs r3, 0 - bl CreateSprite - ldr r1, [r6] - ldr r2, _0804C81C @ =0x00000103 - adds r1, r2 - strb r0, [r1] - ldr r3, [r6] - adds r2, r3, r2 - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldr r1, _0804C820 @ =sub_804D738 - str r1, [r0] - adds r3, r5 - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r7 - bl DestroySprite - ldr r1, [r6] - bl _0804D53C - .align 2, 0 -_0804C810: .4byte gSprites -_0804C814: .4byte SpriteCallbackDummy -_0804C818: .4byte gSpriteTemplate_821595C -_0804C81C: .4byte 0x00000103 -_0804C820: .4byte sub_804D738 -_0804C824: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, _0804C844 @ =gUnknown_03004828 - ldr r0, [r0] - adds r0, 0xC4 - movs r1, 0x14 - strh r1, [r0] - bl _0804D570 - .align 2, 0 -_0804C844: .4byte gUnknown_03004828 -_0804C848: - ldr r0, _0804C864 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0804C858 - bl _0804D570 -_0804C858: - movs r0, 0x4 - bl sub_804BBE8 - bl _0804D538 - .align 2, 0 -_0804C864: .4byte gPaletteFade -_0804C868: - movs r1, 0x1 - negs r1, r1 - movs r0, 0 - str r0, [sp] - adds r0, r1, 0 - movs r2, 0x10 - movs r3, 0 - bl _0804D534 -_0804C87A: - ldr r0, _0804C898 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0804C88A - bl _0804D570 -_0804C88A: - ldr r0, [r6] - adds r0, 0xC4 - movs r1, 0x17 - strh r1, [r0] - bl _0804D570 - .align 2, 0 -_0804C898: .4byte gPaletteFade -_0804C89C: - ldr r4, _0804C8B8 @ =gUnknown_03004828 - ldr r0, [r4] - movs r3, 0x8D - lsls r3, 1 - adds r2, r0, r3 - ldrh r1, [r2] - movs r0, 0x80 - lsls r0, 1 - cmp r1, r0 - bls _0804C8BC - adds r0, r1, 0 - subs r0, 0x34 - strh r0, [r2] - b _0804C8E0 - .align 2, 0 -_0804C8B8: .4byte gUnknown_03004828 -_0804C8BC: - movs r0, 0x1 - bl sub_804BBE8 - ldr r3, [r4] - movs r7, 0x8D - lsls r7, 1 - adds r1, r3, r7 - movs r2, 0 - movs r0, 0x80 - strh r0, [r1] - adds r1, r3, 0 - adds r1, 0xC4 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - adds r0, r3, 0 - adds r0, 0xC0 - str r2, [r0] -_0804C8E0: - ldr r0, _0804C8F0 @ =gUnknown_03004828 - ldr r4, [r0] - movs r1, 0x8D - lsls r1, 1 - adds r0, r4, r1 - bl _0804D16E - .align 2, 0 -_0804C8F0: .4byte gUnknown_03004828 -_0804C8F4: - ldr r1, [r6] - adds r1, 0xC0 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - cmp r0, 0x14 - bhi _0804C906 - bl _0804D570 -_0804C906: - movs r0, 0x3 - bl sub_804BBE8 - bl sub_804B128 - ldr r0, _0804C928 @ =gSpriteTemplate_8215A80 - movs r1, 0x78 - movs r2, 0x50 - movs r3, 0 - bl CreateSprite - ldr r1, [r6] - adds r1, 0xBB - strb r0, [r1] - ldr r1, [r6] - bl _0804D53C - .align 2, 0 -_0804C928: .4byte gSpriteTemplate_8215A80 -_0804C92C: - ldr r2, _0804C96C @ =gSprites - ldr r0, [r6] - adds r0, 0xBB - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r0, r2 - adds r0, r1, 0 - adds r0, 0x3F - ldrb r0, [r0] - lsls r0, 27 - cmp r0, 0 - blt _0804C94C - bl _0804D570 -_0804C94C: - adds r0, r1, 0 - bl DestroySprite - ldr r1, _0804C970 @ =REG_BLDCNT - movs r3, 0xC8 - lsls r3, 3 - adds r0, r3, 0 - strh r0, [r1] - adds r1, 0x2 - ldr r7, _0804C974 @ =0x0000040c - adds r0, r7, 0 - strh r0, [r1] - ldr r1, [r6] - bl _0804D53C - .align 2, 0 -_0804C96C: .4byte gSprites -_0804C970: .4byte REG_BLDCNT -_0804C974: .4byte 0x0000040c -_0804C978: - ldr r2, [r6] - movs r3, 0x88 - lsls r3, 1 - adds r0, r2, r3 - ldrh r1, [r0] - subs r1, 0x1 - strh r1, [r0] - lsls r1, 16 - movs r0, 0x9E - lsls r0, 17 - cmp r1, r0 - bne _0804C99A - adds r1, r2, 0 - adds r1, 0xC4 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] -_0804C99A: - ldr r0, [r6] - adds r0, r3 - movs r2, 0 - ldrsh r1, [r0, r2] - movs r0, 0xA4 - lsls r0, 1 - cmp r1, r0 - beq _0804C9AE - bl _0804D570 -_0804C9AE: - ldr r0, _0804C9C4 @ =gSpriteTemplate_8215A30 - movs r1, 0x80 - movs r2, 0x41 - movs r3, 0 - bl CreateSprite - ldr r1, [r6] - adds r1, 0xBC - strb r0, [r1] - bl _0804D570 - .align 2, 0 -_0804C9C4: .4byte gSpriteTemplate_8215A30 -_0804C9C8: - ldr r0, _0804CA0C @ =gSpriteTemplate_82159BC - movs r1, 0x80 - movs r2, 0x50 - movs r3, 0x3 - bl CreateSprite - ldr r4, _0804CA10 @ =gUnknown_03004828 - ldr r1, [r4] - adds r1, 0xBA - strb r0, [r1] - ldr r0, _0804CA14 @ =gSpriteTemplate_82159FC - movs r1, 0x80 - movs r2, 0x50 - movs r3, 0 - bl CreateSprite - ldr r1, [r4] - adds r1, 0xBB - strb r0, [r1] - ldr r0, [r4] - adds r0, 0xBB - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _0804CA18 @ =gSprites - adds r0, r1 - movs r1, 0x1 - bl StartSpriteAnim - ldr r1, [r4] - bl _0804D53C - .align 2, 0 -_0804CA0C: .4byte gSpriteTemplate_82159BC -_0804CA10: .4byte gUnknown_03004828 -_0804CA14: .4byte gSpriteTemplate_82159FC -_0804CA18: .4byte gSprites -_0804CA1C: - ldr r2, [r6] - movs r3, 0x88 - lsls r3, 1 - adds r1, r2, r3 - ldrh r0, [r1] - subs r0, 0x2 - strh r0, [r1] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xA6 - bne _0804CA3A - adds r1, r2, 0 - adds r1, 0xC4 - movs r0, 0xC8 - strh r0, [r1] -_0804CA3A: - movs r0, 0 - bl sub_804C0F8 - movs r1, 0x80 - lsls r1, 19 - ldr r7, _0804CA50 @ =0x00001641 - adds r0, r7, 0 - strh r0, [r1] - bl _0804D570 - .align 2, 0 -_0804CA50: .4byte 0x00001641 -_0804CA54: - ldr r4, _0804CAB0 @ =gSprites - ldr r2, [r6] - adds r0, r2, 0 - adds r0, 0xBA - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrh r1, [r0, 0x22] - subs r1, 0x2 - strh r1, [r0, 0x22] - adds r2, 0xBB - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrh r1, [r0, 0x22] - subs r1, 0x2 - strh r1, [r0, 0x22] - movs r0, 0 - bl sub_804C0F8 - ldr r2, [r6] - adds r0, r2, 0 - adds r0, 0xBA - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r3, 0x22 - ldrsh r1, [r0, r3] - movs r0, 0x8 - negs r0, r0 - cmp r1, r0 - blt _0804CAA4 - bl _0804D570 -_0804CAA4: - adds r1, r2, 0 - adds r1, 0xC4 - movs r0, 0x1D - strh r0, [r1] - bl _0804D570 - .align 2, 0 -_0804CAB0: .4byte gSprites -_0804CAB4: - movs r1, 0x1 - negs r1, r1 - movs r0, 0 - str r0, [sp] - adds r0, r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, _0804CAD4 @ =gUnknown_03004828 - ldr r0, [r0] - adds r0, 0xC4 - movs r1, 0x1E - strh r1, [r0] - bl _0804D570 - .align 2, 0 -_0804CAD4: .4byte gUnknown_03004828 -_0804CAD8: - ldr r0, _0804CB1C @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0804CAE8 - bl _0804D570 -_0804CAE8: - ldr r0, [r6] - adds r0, 0xBA - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r4, _0804CB20 @ =gSprites - adds r0, r4 - bl DestroySprite - ldr r0, [r6] - adds r0, 0xBB - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - bl DestroySprite - movs r0, 0x2 - bl sub_804BBE8 - ldr r1, [r6] - bl _0804D53C - .align 2, 0 -_0804CB1C: .4byte gPaletteFade -_0804CB20: .4byte gSprites -_0804CB24: - movs r1, 0x1 - negs r1, r1 - movs r0, 0 - str r0, [sp] - adds r0, r1, 0 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - ldr r5, _0804CB68 @ =gSpriteTemplate_82159FC - adds r0, r5, 0 - movs r1, 0x6F - movs r2, 0xAA - movs r3, 0 - bl CreateSprite - ldr r4, _0804CB6C @ =gUnknown_03004828 - ldr r1, [r4] - adds r1, 0xBA - strb r0, [r1] - movs r2, 0xA - negs r2, r2 - adds r0, r5, 0 - movs r1, 0x81 - movs r3, 0 - bl CreateSprite - ldr r1, [r4] - adds r1, 0xBB - strb r0, [r1] - ldr r1, [r4] - bl _0804D53C - .align 2, 0 -_0804CB68: .4byte gSpriteTemplate_82159FC -_0804CB6C: .4byte gUnknown_03004828 -_0804CB70: - ldr r0, _0804CBC0 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0804CB8E - movs r0, 0x2E - bl PlaySE - ldr r0, _0804CBC4 @ =gUnknown_03004828 - ldr r1, [r0] - adds r1, 0xC4 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] -_0804CB8E: - ldr r3, _0804CBC8 @ =gSprites - ldr r0, _0804CBC4 @ =gUnknown_03004828 - ldr r2, [r0] - adds r0, r2, 0 - adds r0, 0xBA - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldrh r1, [r0, 0x26] - subs r1, 0x3 - strh r1, [r0, 0x26] - adds r2, 0xBB - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldrh r1, [r0, 0x26] - adds r1, 0x3 - strh r1, [r0, 0x26] - bl _0804D570 - .align 2, 0 -_0804CBC0: .4byte gPaletteFade -_0804CBC4: .4byte gUnknown_03004828 -_0804CBC8: .4byte gSprites -_0804CBCC: - ldr r5, _0804CC28 @ =gSprites - ldr r4, [r6] - adds r2, r4, 0 - adds r2, 0xBA - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldrh r1, [r0, 0x26] - subs r1, 0x3 - strh r1, [r0, 0x26] - adds r6, r4, 0 - adds r6, 0xBB - ldrb r1, [r6] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldrh r1, [r0, 0x26] - adds r1, 0x3 - strh r1, [r0, 0x26] - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r3, r0, r5 - movs r7, 0x26 - ldrsh r1, [r3, r7] - movs r0, 0x5A - negs r0, r0 - cmp r1, r0 - ble _0804CC12 - bl _0804D570 -_0804CC12: - movs r2, 0x1 - strh r2, [r3, 0x30] - ldrb r1, [r6] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - strh r2, [r0, 0x30] - adds r1, r4, 0 - bl _0804D53C - .align 2, 0 -_0804CC28: .4byte gSprites -_0804CC2C: - ldr r2, _0804CC3C @ =0x0000ffff - movs r0, 0x1 - movs r1, 0x10 - bl BlendPalettes - bl _0804D538 - .align 2, 0 -_0804CC3C: .4byte 0x0000ffff -_0804CC40: - ldr r2, _0804CC50 @ =0x0000ffff - movs r0, 0x1 - movs r1, 0 - bl BlendPalettes - bl _0804D538 - .align 2, 0 -_0804CC50: .4byte 0x0000ffff -_0804CC54: - ldr r2, _0804CC64 @ =0x0000ffff - movs r0, 0x1 - movs r1, 0x10 - bl BlendPalettes - bl _0804D538 - .align 2, 0 -_0804CC64: .4byte 0x0000ffff -_0804CC68: - ldr r5, _0804CCD8 @ =gUnknown_03004828 - ldr r0, [r5] - movs r1, 0x90 - lsls r1, 1 - adds r0, r1 - ldrh r0, [r0] - bl sub_8040A3C - lsls r0, 24 - cmp r0, 0 - bne _0804CCE4 - ldr r4, _0804CCDC @ =gSprites - ldr r2, [r5] - adds r2, 0xB8 - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r4, 0 - adds r1, 0x10 - adds r0, r1 - ldr r1, _0804CCE0 @ =gSpriteAffineAnimTable_8215AC0 - str r1, [r0] - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrb r1, [r0, 0x1] - movs r2, 0x3 - orrs r1, r2 - strb r1, [r0, 0x1] - ldr r0, [r5] - adds r0, 0xB8 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0 - movs r2, 0x3 - movs r3, 0x3 - bl CalcCenterToCornerVec - ldr r0, [r5] - adds r0, 0xB8 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0 - bl StartSpriteAffineAnim - b _0804CCFA - .align 2, 0 -_0804CCD8: .4byte gUnknown_03004828 -_0804CCDC: .4byte gSprites -_0804CCE0: .4byte gSpriteAffineAnimTable_8215AC0 -_0804CCE4: - ldr r0, [r5] - adds r0, 0xB8 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _0804CD88 @ =gSprites - adds r0, r1 - movs r1, 0 - bl StartSpriteAffineAnim -_0804CCFA: - ldr r5, _0804CD8C @ =gUnknown_03004828 - ldr r0, [r5] - adds r0, 0xB9 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r4, _0804CD88 @ =gSprites - adds r0, r4 - movs r1, 0 - bl StartSpriteAffineAnim - ldr r2, [r5] - adds r3, r2, 0 - adds r3, 0xB8 - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0x3C - strh r1, [r0, 0x20] - adds r2, 0xB9 - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0xB4 - strh r1, [r0, 0x20] - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0xC0 - strh r1, [r0, 0x22] - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldr r1, _0804CD90 @ =0x0000ffe0 - strh r1, [r0, 0x22] - ldrb r0, [r3] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - adds r1, 0x3E - ldrb r3, [r1] - movs r2, 0x5 - negs r2, r2 - adds r0, r2, 0 - ands r0, r3 - strb r0, [r1] - ldr r0, [r5] - adds r0, 0xB9 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - adds r0, 0x3E - ldrb r1, [r0] - ands r2, r1 - strb r2, [r0] - ldr r1, [r5] - bl _0804D53C - .align 2, 0 -_0804CD88: .4byte gSprites -_0804CD8C: .4byte gUnknown_03004828 -_0804CD90: .4byte 0x0000ffe0 -_0804CD94: - ldr r4, _0804CE5C @ =gSprites - ldr r2, [r6] - adds r3, r2, 0 - adds r3, 0xB8 - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrh r1, [r0, 0x26] - subs r1, 0x3 - movs r5, 0 - strh r1, [r0, 0x26] - adds r2, 0xB9 - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrh r1, [r0, 0x26] - adds r1, 0x3 - strh r1, [r0, 0x26] - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrh r0, [r0, 0x26] - adds r0, 0xA3 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x2 - bhi _0804CDDC - movs r0, 0x2D - bl PlaySE -_0804CDDC: - ldr r2, [r6] - adds r3, r2, 0 - adds r3, 0xB8 - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r7, 0x26 - ldrsh r1, [r0, r7] - movs r0, 0xDE - negs r0, r0 - cmp r1, r0 - blt _0804CDFA - b _0804D570 -_0804CDFA: - adds r0, r2, 0 - adds r0, 0xBA - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - strh r5, [r0, 0x30] - adds r0, r2, 0 - adds r0, 0xBB - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - strh r5, [r0, 0x30] - adds r1, r2, 0 - adds r1, 0xC4 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] - ldr r0, [r6] - adds r0, 0xB9 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - adds r0, 0x3E - ldrb r1, [r0] - orrs r1, r2 - strb r1, [r0] - ldr r2, _0804CE60 @ =0x0000ffff - movs r0, 0x1 - movs r1, 0 - bl BlendPalettes - b _0804D570 - .align 2, 0 -_0804CE5C: .4byte gSprites -_0804CE60: .4byte 0x0000ffff -_0804CE64: - ldr r4, _0804CEE8 @ =gSprites - ldr r2, [r6] - adds r3, r2, 0 - adds r3, 0xBA - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrh r1, [r0, 0x26] - subs r1, 0x3 - strh r1, [r0, 0x26] - adds r2, 0xBB - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrh r1, [r0, 0x26] - adds r1, 0x3 - strh r1, [r0, 0x26] - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r2, 0x26 - ldrsh r1, [r0, r2] - movs r0, 0xDE - negs r0, r0 - cmp r1, r0 - ble _0804CEA6 - b _0804D570 -_0804CEA6: - movs r1, 0x1 - negs r1, r1 - movs r0, 0 - str r0, [sp] - adds r0, r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r1, [r6] - adds r2, r1, 0 - adds r2, 0xC4 - ldrh r0, [r2] - adds r0, 0x1 - strh r0, [r2] - adds r1, 0xBA - ldrb r1, [r1] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - bl DestroySprite - ldr r0, [r6] - adds r0, 0xBB - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - bl DestroySprite - b _0804D570 - .align 2, 0 -_0804CEE8: .4byte gSprites -_0804CEEC: - ldr r0, _0804CF58 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0804CEFA - b _0804D570 -_0804CEFA: - ldr r1, [r6] - adds r1, 0xC4 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - movs r0, 0x1 - bl sub_804BBE8 - ldr r0, [r6] - movs r3, 0x88 - lsls r3, 1 - adds r0, r3 - movs r1, 0xA6 - strh r1, [r0] - ldr r0, _0804CF5C @ =gSpriteTemplate_82159BC - movs r4, 0x14 - negs r4, r4 - movs r1, 0x80 - adds r2, r4, 0 - movs r3, 0x3 - bl CreateSprite - ldr r1, [r6] - adds r1, 0xBA - strb r0, [r1] - ldr r0, _0804CF60 @ =gSpriteTemplate_82159FC - movs r1, 0x80 - adds r2, r4, 0 - movs r3, 0 - bl CreateSprite - ldr r1, [r6] - adds r1, 0xBB - strb r0, [r1] - ldr r0, [r6] - adds r0, 0xBB - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _0804CF64 @ =gSprites - adds r0, r1 - movs r1, 0x1 - bl StartSpriteAnim - b _0804D570 - .align 2, 0 -_0804CF58: .4byte gPaletteFade -_0804CF5C: .4byte gSpriteTemplate_82159BC -_0804CF60: .4byte gSpriteTemplate_82159FC -_0804CF64: .4byte gSprites -_0804CF68: - movs r1, 0x1 - negs r1, r1 - movs r0, 0 - str r0, [sp] - adds r0, r1, 0 - movs r2, 0x10 - movs r3, 0 - b _0804D534 -_0804CF78: - movs r1, 0x80 - lsls r1, 19 - ldr r7, _0804CF98 @ =0x00001641 - adds r0, r7, 0 - strh r0, [r1] - movs r0, 0x1 - bl sub_804C0F8 - ldr r0, _0804CF9C @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0804CF96 - b _0804D570 -_0804CF96: - b _0804D538 - .align 2, 0 -_0804CF98: .4byte 0x00001641 -_0804CF9C: .4byte gPaletteFade -_0804CFA0: - movs r0, 0x1 - bl sub_804C0F8 - ldr r2, _0804CFF4 @ =gSprites - ldr r0, _0804CFF8 @ =gUnknown_03004828 - ldr r3, [r0] - adds r4, r3, 0 - adds r4, 0xBA - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r0, 0x26] - adds r1, 0x3 - strh r1, [r0, 0x26] - adds r0, r3, 0 - adds r0, 0xBB - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r0, 0x26] - adds r1, 0x3 - strh r1, [r0, 0x26] - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r2, 0x26 - ldrsh r1, [r0, r2] - movs r7, 0x22 - ldrsh r0, [r0, r7] - adds r1, r0 - cmp r1, 0x40 - beq _0804CFEE - b _0804D570 -_0804CFEE: - adds r1, r3, 0 - b _0804D53C - .align 2, 0 -_0804CFF4: .4byte gSprites -_0804CFF8: .4byte gUnknown_03004828 -_0804CFFC: - movs r0, 0x1 - bl sub_804C0F8 - ldr r0, _0804D024 @ =gUnknown_03004828 - ldr r1, [r0] - movs r0, 0x88 - lsls r0, 1 - adds r2, r1, r0 - ldrh r0, [r2] - adds r0, 0x2 - strh r0, [r2] - lsls r0, 16 - asrs r0, 16 - movs r3, 0x9E - lsls r3, 1 - cmp r0, r3 - bgt _0804D020 - b _0804D570 -_0804D020: - strh r3, [r2] - b _0804D53C - .align 2, 0 -_0804D024: .4byte gUnknown_03004828 -_0804D028: - ldr r0, [r6] - adds r0, 0xBA - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r4, _0804D050 @ =gSprites - adds r0, r4 - bl DestroySprite - ldr r0, [r6] - adds r0, 0xBB - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - bl DestroySprite - b _0804D400 - .align 2, 0 -_0804D050: .4byte gSprites -_0804D054: - ldr r2, [r6] - adds r1, r2, 0 - adds r1, 0xC0 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - cmp r0, 0xA - beq _0804D066 - b _0804D570 -_0804D066: - adds r1, 0x4 - b _0804D53E -_0804D06A: - ldr r1, [r6] - movs r4, 0x88 - lsls r4, 1 - adds r2, r1, r4 - ldrh r0, [r2] - adds r0, 0x1 - strh r0, [r2] - lsls r0, 16 - asrs r0, 16 - movs r3, 0xAE - lsls r3, 1 - cmp r0, r3 - ble _0804D08E - strh r3, [r2] - adds r1, 0xC4 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] -_0804D08E: - ldr r0, [r6] - adds r0, r4 - movs r2, 0 - ldrsh r1, [r0, r2] - movs r0, 0xA4 - lsls r0, 1 - cmp r1, r0 - bne _0804D0B0 - ldr r0, _0804D0C8 @ =gSpriteTemplate_8215A30 - movs r1, 0x80 - movs r2, 0x41 - movs r3, 0 - bl CreateSprite - ldr r1, [r6] - adds r1, 0xBC - strb r0, [r1] -_0804D0B0: - ldr r2, _0804D0CC @ =gSprites - ldr r0, [r6] - adds r0, 0xBC - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, _0804D0D0 @ =sub_804B0E0 - str r1, [r0] - b _0804D570 - .align 2, 0 -_0804D0C8: .4byte gSpriteTemplate_8215A30 -_0804D0CC: .4byte gSprites -_0804D0D0: .4byte sub_804B0E0 -_0804D0D4: - ldr r0, _0804D0F4 @ =gSpriteTemplate_8215A80 - movs r1, 0x78 - movs r2, 0x50 - movs r3, 0 - bl CreateSprite - ldr r2, _0804D0F8 @ =gUnknown_03004828 - ldr r1, [r2] - adds r1, 0xBB - strb r0, [r1] - ldr r0, [r2] - adds r0, 0xC4 - movs r1, 0x32 - strh r1, [r0] - b _0804D570 - .align 2, 0 -_0804D0F4: .4byte gSpriteTemplate_8215A80 -_0804D0F8: .4byte gUnknown_03004828 -_0804D0FC: - ldr r2, _0804D138 @ =gSprites - ldr r0, [r6] - adds r0, 0xBB - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r0, r2 - adds r0, r1, 0 - adds r0, 0x3F - ldrb r0, [r0] - lsls r0, 27 - cmp r0, 0 - blt _0804D11A - b _0804D570 -_0804D11A: - adds r0, r1, 0 - bl DestroySprite - movs r0, 0x6 - bl sub_804BBE8 - ldr r1, [r6] - adds r1, 0xC4 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - movs r0, 0x9F - bl PlaySE - b _0804D570 - .align 2, 0 -_0804D138: .4byte gSprites -_0804D13C: - ldr r1, [r6] - movs r3, 0x8D - lsls r3, 1 - adds r2, r1, r3 - ldrh r3, [r2] - ldr r0, _0804D154 @ =0x000003ff - cmp r3, r0 - bhi _0804D158 - adds r0, r3, 0 - adds r0, 0x34 - strh r0, [r2] - b _0804D166 - .align 2, 0 -_0804D154: .4byte 0x000003ff -_0804D158: - movs r0, 0x80 - lsls r0, 3 - strh r0, [r2] - adds r1, 0xC4 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] -_0804D166: - ldr r4, [r6] - movs r7, 0x8D - lsls r7, 1 - adds r0, r4, r7 -_0804D16E: - ldrh r1, [r0] - movs r0, 0x80 - lsls r0, 8 - bl __divsi3 - movs r2, 0x8C - lsls r2, 1 - adds r1, r4, r2 - strh r0, [r1] - b _0804D570 -_0804D182: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, _0804D1A0 @ =gUnknown_03004828 - ldr r0, [r0] - adds r0, 0xC4 - movs r1, 0x3C - strh r1, [r0] - b _0804D570 - .align 2, 0 -_0804D1A0: .4byte gUnknown_03004828 -_0804D1A4: - ldr r0, _0804D1C0 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0804D1B2 - b _0804D570 -_0804D1B2: - movs r0, 0x5 - bl sub_804BBE8 - movs r0, 0x7 - bl sub_804BBE8 - b _0804D538 - .align 2, 0 -_0804D1C0: .4byte gPaletteFade -_0804D1C4: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0x10 - movs r3, 0 - b _0804D534 -_0804D1D2: - movs r1, 0x80 - lsls r1, 19 - movs r3, 0xA2 - lsls r3, 5 - adds r0, r3, 0 - strh r0, [r1] - ldr r0, _0804D1F0 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0804D1EC - b _0804D570 -_0804D1EC: - ldr r1, [r6] - b _0804D53C - .align 2, 0 -_0804D1F0: .4byte gPaletteFade -_0804D1F4: - ldr r0, _0804D290 @ =gSpriteTemplate_821595C - movs r2, 0x8 - negs r2, r2 - movs r1, 0x78 - movs r3, 0 - bl CreateSprite - ldr r6, _0804D294 @ =gUnknown_03004828 - ldr r1, [r6] - ldr r5, _0804D298 @ =0x00000103 - adds r1, r5 - movs r7, 0 - mov r8, r7 - strb r0, [r1] - ldr r4, _0804D29C @ =gSprites - ldr r2, [r6] - adds r2, r5 - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0x4A - strh r1, [r0, 0x34] - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r4, 0 - adds r1, 0x1C - adds r0, r1 - ldr r1, _0804D2A0 @ =sub_804D80C - str r1, [r0] - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0x1 - bl StartSpriteAnim - ldr r0, [r6] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0x2 - bl StartSpriteAffineAnim - ldr r0, [r6] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrb r1, [r0, 0x5] - lsrs r1, 4 - adds r1, 0x10 - movs r0, 0x1 - lsls r0, r1 - ldr r2, _0804D2A4 @ =0x0000ffff - movs r1, 0x10 - bl BlendPalettes - ldr r1, [r6] - adds r2, r1, 0 - adds r2, 0xC4 - ldrh r0, [r2] - adds r0, 0x1 - strh r0, [r2] - adds r1, 0xC0 - mov r0, r8 - str r0, [r1] - b _0804D570 - .align 2, 0 -_0804D290: .4byte gSpriteTemplate_821595C -_0804D294: .4byte gUnknown_03004828 -_0804D298: .4byte 0x00000103 -_0804D29C: .4byte gSprites -_0804D2A0: .4byte sub_804D80C -_0804D2A4: .4byte 0x0000ffff -_0804D2A8: - ldr r2, _0804D2D8 @ =gSprites - ldr r0, [r6] - ldr r1, _0804D2DC @ =0x00000103 - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0, 0x5] - lsrs r1, 4 - adds r1, 0x10 - movs r0, 0x1 - lsls r0, r1 - ldr r1, _0804D2E0 @ =0x0000ffff - str r1, [sp] - movs r1, 0x1 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - ldr r1, [r6] - b _0804D53C - .align 2, 0 -_0804D2D8: .4byte gSprites -_0804D2DC: .4byte 0x00000103 -_0804D2E0: .4byte 0x0000ffff -_0804D2E4: - ldr r2, _0804D308 @ =gSprites - ldr r3, [r6] - ldr r7, _0804D30C @ =0x00000103 - adds r0, r3, r7 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, [r0] - ldr r0, _0804D310 @ =SpriteCallbackDummy - cmp r1, r0 - beq _0804D302 - b _0804D570 -_0804D302: - adds r1, r3, 0 - b _0804D53C - .align 2, 0 -_0804D308: .4byte gSprites -_0804D30C: .4byte 0x00000103 -_0804D310: .4byte SpriteCallbackDummy -_0804D314: - ldr r4, _0804D3B4 @ =gSprites - ldr r0, [r6] - mov r8, r0 - mov r5, r8 - adds r5, 0xB9 - ldrb r1, [r5] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r3, 0 - movs r1, 0x78 - strh r1, [r0, 0x20] - ldrb r0, [r5] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - ldr r2, _0804D3B8 @ =gMonFrontPicCoords - movs r0, 0x91 - lsls r0, 1 - add r0, r8 - ldrh r0, [r0] - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x1] - adds r0, 0x3C - strh r0, [r1, 0x22] - ldrb r1, [r5] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - strh r3, [r0, 0x24] - ldrb r1, [r5] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - strh r3, [r0, 0x26] - ldrb r0, [r5] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - ldrb r1, [r1, 0x5] - lsrs r1, 4 - movs r2, 0x2 - str r2, [sp] - movs r2, 0x1 - str r2, [sp, 0x4] - movs r2, 0x14 - str r2, [sp, 0x8] - ldr r2, _0804D3BC @ =0x000fffff - str r2, [sp, 0xC] - movs r2, 0x78 - movs r3, 0x54 - bl CreatePokeballSprite - ldr r0, [r6] - ldr r5, _0804D3C0 @ =0x00000103 - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - bl FreeSpriteOamMatrix - ldr r0, [r6] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - bl DestroySprite - ldr r1, [r6] - b _0804D53C - .align 2, 0 -_0804D3B4: .4byte gSprites -_0804D3B8: .4byte gMonFrontPicCoords -_0804D3BC: .4byte 0x000fffff -_0804D3C0: .4byte 0x00000103 -_0804D3C4: - movs r1, 0x80 - lsls r1, 19 - movs r2, 0xBA - lsls r2, 5 - adds r0, r2, 0 - strh r0, [r1] - ldr r0, [r6] - adds r0, 0x4 - movs r1, 0x13 - str r1, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x1D - bl ZeroFillWindowRect - ldr r4, _0804D414 @ =gStringVar4 - ldr r1, _0804D418 @ =gTradeText_SentOverPoke - adds r0, r4, 0 - bl StringExpandPlaceholders - ldr r1, [r6] - adds r0, r1, 0x4 - adds r1, 0x34 - ldrb r2, [r1] - movs r1, 0xF - str r1, [sp] - adds r1, r4, 0 - movs r3, 0x2 - bl sub_8003460 -_0804D400: - ldr r1, [r6] - adds r2, r1, 0 - adds r2, 0xC4 - ldrh r0, [r2] - adds r0, 0x1 - movs r3, 0 -_0804D40C: - strh r0, [r2] - adds r1, 0xC0 - str r3, [r1] - b _0804D570 - .align 2, 0 -_0804D414: .4byte gStringVar4 -_0804D418: .4byte gTradeText_SentOverPoke -_0804D41C: - ldr r1, [r6] - adds r1, 0xC0 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - cmp r0, 0x4 - bne _0804D430 - ldr r0, _0804D480 @ =0x00000173 - bl PlayFanfare -_0804D430: - ldr r2, [r6] - adds r0, r2, 0 - adds r0, 0xC0 - ldr r0, [r0] - cmp r0, 0xF0 - beq _0804D43E - b _0804D570 -_0804D43E: - adds r1, r2, 0 - adds r1, 0xC4 - ldrh r0, [r1] - adds r0, 0x1 - movs r5, 0 - strh r0, [r1] - adds r0, r2, 0x4 - movs r1, 0x13 - str r1, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x1D - bl ZeroFillWindowRect - ldr r4, _0804D484 @ =gStringVar4 - ldr r1, _0804D488 @ =gTradeText_TakeGoodCare - adds r0, r4, 0 - bl StringExpandPlaceholders - ldr r1, [r6] - adds r0, r1, 0x4 - adds r1, 0x34 - ldrb r2, [r1] - movs r1, 0xF - str r1, [sp] - adds r1, r4, 0 - movs r3, 0x2 - bl sub_8003460 - ldr r0, [r6] - adds r0, 0xC0 - str r5, [r0] - b _0804D570 - .align 2, 0 -_0804D480: .4byte 0x00000173 -_0804D484: .4byte gStringVar4 -_0804D488: .4byte gTradeText_TakeGoodCare -_0804D48C: - ldr r2, [r6] - adds r1, r2, 0 - adds r1, 0xC0 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - cmp r0, 0x3C - bne _0804D570 - adds r1, 0x4 - b _0804D53E -_0804D4A0: - bl sub_804E1DC - b _0804D538 -_0804D4A6: - ldr r2, [r6] - movs r3, 0x8F - lsls r3, 1 - adds r0, r2, r3 - ldrb r0, [r0] - cmp r0, 0 - beq _0804D4B8 - movs r0, 0x1 - b _0804D572 -_0804D4B8: - ldr r0, _0804D4C8 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0804D570 - adds r1, r2, 0 - b _0804D53C - .align 2, 0 -_0804D4C8: .4byte gMain -_0804D4CC: - ldr r0, _0804D510 @ =gSpecialVar_0x8005 - ldrb r0, [r0] - movs r1, 0 - bl sub_804BA94 - ldr r1, _0804D514 @ =gUnknown_03005E94 - ldr r0, _0804D518 @ =sub_804BBCC - str r0, [r1] - ldr r7, _0804D51C @ =gUnknown_020297D8 - ldrb r0, [r7] - movs r6, 0x64 - muls r0, r6 - ldr r5, _0804D520 @ =gPlayerParty - adds r0, r5 - movs r1, 0x1 - movs r2, 0 - bl GetEvolutionTargetSpecies - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0 - beq _0804D538 - ldrb r3, [r7] - adds r0, r3, 0 - muls r0, r6 - adds r0, r5 - ldr r1, _0804D524 @ =gUnknown_03004828 - ldr r1, [r1] - adds r1, 0xB9 - ldrb r2, [r1] - adds r1, r4, 0 - bl TradeEvolutionScene - b _0804D538 - .align 2, 0 -_0804D510: .4byte gSpecialVar_0x8005 -_0804D514: .4byte gUnknown_03005E94 -_0804D518: .4byte sub_804BBCC -_0804D51C: .4byte gUnknown_020297D8 -_0804D520: .4byte gPlayerParty -_0804D524: .4byte gUnknown_03004828 -_0804D528: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 -_0804D534: - bl BeginNormalPaletteFade -_0804D538: - ldr r0, _0804D548 @ =gUnknown_03004828 - ldr r1, [r0] -_0804D53C: - adds r1, 0xC4 -_0804D53E: - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - b _0804D570 - .align 2, 0 -_0804D548: .4byte gUnknown_03004828 -_0804D54C: - ldr r0, _0804D580 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0804D570 - ldr r0, [r6] - movs r7, 0x92 - lsls r7, 1 - adds r0, r7 - ldrh r0, [r0] - bl PlayBGM - ldr r0, _0804D584 @ =c2_exit_to_overworld_2_switch - bl SetMainCallback2 - bl sub_804D8E4 -_0804D570: - movs r0, 0 -_0804D572: - add sp, 0x10 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0804D580: .4byte gPaletteFade -_0804D584: .4byte c2_exit_to_overworld_2_switch - thumb_func_end sub_804C29C - - thumb_func_start sub_804D588 -sub_804D588: @ 804D588 - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r0, _0804D5A0 @ =gMain - ldr r2, _0804D5A4 @ =0x0000043c - adds r1, r0, r2 - ldrb r0, [r1] - cmp r0, 0 - beq _0804D5A8 - cmp r0, 0x4 - beq _0804D5B8 - b _0804D614 - .align 2, 0 -_0804D5A0: .4byte gMain -_0804D5A4: .4byte 0x0000043c -_0804D5A8: - movs r0, 0x4 - strb r0, [r1] - ldr r1, _0804D5B4 @ =gSoftResetDisabled - movs r0, 0x1 - b _0804D612 - .align 2, 0 -_0804D5B4: .4byte gSoftResetDisabled -_0804D5B8: - ldr r0, _0804D5F4 @ =gUnknown_03005E94 - ldr r1, _0804D5F8 @ =sub_804DC88 - mov r8, r1 - str r1, [r0] - ldr r7, _0804D5FC @ =gUnknown_020297D8 - ldrb r0, [r7] - movs r6, 0x64 - muls r0, r6 - ldr r5, _0804D600 @ =gPlayerParty - adds r0, r5 - movs r1, 0x1 - movs r2, 0 - bl GetEvolutionTargetSpecies - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0 - beq _0804D608 - ldrb r3, [r7] - adds r0, r3, 0 - muls r0, r6 - adds r0, r5 - ldr r1, _0804D604 @ =gUnknown_03004828 - ldr r1, [r1] - adds r1, 0xB9 - ldrb r2, [r1] - adds r1, r4, 0 - bl TradeEvolutionScene - b _0804D60E - .align 2, 0 -_0804D5F4: .4byte gUnknown_03005E94 -_0804D5F8: .4byte sub_804DC88 -_0804D5FC: .4byte gUnknown_020297D8 -_0804D600: .4byte gPlayerParty -_0804D604: .4byte gUnknown_03004828 -_0804D608: - mov r0, r8 - bl SetMainCallback2 -_0804D60E: - ldr r1, _0804D638 @ =gUnknown_020297D8 - movs r0, 0xFF -_0804D612: - strb r0, [r1] -_0804D614: - bl HasLinkErrorOccurred - lsls r0, 24 - cmp r0, 0 - bne _0804D622 - bl RunTasks -_0804D622: - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804D638: .4byte gUnknown_020297D8 - thumb_func_end sub_804D588 - - thumb_func_start sub_804D63C -sub_804D63C: @ 804D63C - push {r4-r6,lr} - bl sub_804B2B0 - bl GetBlockReceivedStatus - lsls r0, 24 - lsrs r5, r0, 24 - movs r6, 0x1 - adds r0, r5, 0 - ands r0, r6 - cmp r0, 0 - beq _0804D67A - ldr r4, _0804D6A8 @ =gBlockRecvBuffer - ldrh r1, [r4] - ldr r0, _0804D6AC @ =0x0000dcba - cmp r1, r0 - bne _0804D664 - ldr r0, _0804D6B0 @ =sub_804D588 - bl SetMainCallback2 -_0804D664: - ldrh r1, [r4] - ldr r0, _0804D6B4 @ =0x0000abcd - cmp r1, r0 - bne _0804D674 - ldr r0, _0804D6B8 @ =gUnknown_03004828 - ldr r0, [r0] - adds r0, 0x9C - strb r6, [r0] -_0804D674: - movs r0, 0 - bl ResetBlockReceivedFlag -_0804D67A: - movs r0, 0x2 - ands r0, r5 - cmp r0, 0 - beq _0804D6A2 - ldr r0, _0804D6A8 @ =gBlockRecvBuffer - movs r1, 0x80 - lsls r1, 1 - adds r0, r1 - ldrh r1, [r0] - ldr r0, _0804D6B4 @ =0x0000abcd - cmp r1, r0 - bne _0804D69C - ldr r0, _0804D6B8 @ =gUnknown_03004828 - ldr r0, [r0] - adds r0, 0x9D - movs r1, 0x1 - strb r1, [r0] -_0804D69C: - movs r0, 0x1 - bl ResetBlockReceivedFlag -_0804D6A2: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0804D6A8: .4byte gBlockRecvBuffer -_0804D6AC: .4byte 0x0000dcba -_0804D6B0: .4byte sub_804D588 -_0804D6B4: .4byte 0x0000abcd -_0804D6B8: .4byte gUnknown_03004828 - thumb_func_end sub_804D63C - - thumb_func_start sub_804D6BC -sub_804D6BC: @ 804D6BC - push {r4,r5,lr} - adds r5, r0, 0 - movs r1, 0x2E - ldrsh r0, [r5, r1] - movs r1, 0xA - bl __divsi3 - ldrh r4, [r5, 0x22] - adds r4, r0 - strh r4, [r5, 0x22] - ldrh r0, [r5, 0x30] - ldrh r2, [r5, 0x38] - adds r0, r2 - strh r0, [r5, 0x38] - movs r1, 0x38 - ldrsh r0, [r5, r1] - movs r1, 0xA - bl __divsi3 - strh r0, [r5, 0x20] - lsls r4, 16 - asrs r4, 16 - cmp r4, 0x4C - ble _0804D70A - movs r0, 0x4C - strh r0, [r5, 0x22] - movs r2, 0x2E - ldrsh r1, [r5, r2] - movs r2, 0x32 - ldrsh r0, [r5, r2] - muls r0, r1 - negs r0, r0 - movs r1, 0x64 - bl __divsi3 - strh r0, [r5, 0x2E] - ldrh r0, [r5, 0x34] - adds r0, 0x1 - strh r0, [r5, 0x34] -_0804D70A: - movs r1, 0x20 - ldrsh r0, [r5, r1] - cmp r0, 0x78 - bne _0804D716 - movs r0, 0 - strh r0, [r5, 0x30] -_0804D716: - ldrh r0, [r5, 0x36] - ldrh r2, [r5, 0x2E] - adds r0, r2 - strh r0, [r5, 0x2E] - movs r1, 0x34 - ldrsh r0, [r5, r1] - cmp r0, 0x4 - bne _0804D72E - movs r0, 0x1 - strh r0, [r5, 0x3C] - ldr r0, _0804D734 @ =SpriteCallbackDummy - str r0, [r5, 0x1C] -_0804D72E: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0804D734: .4byte SpriteCallbackDummy - thumb_func_end sub_804D6BC - - thumb_func_start sub_804D738 -sub_804D738: @ 804D738 - push {r4,lr} - sub sp, 0x4 - adds r4, r0, 0 - ldr r1, _0804D7A0 @ =gTradeBallVerticalVelocityTable - movs r2, 0x2E - ldrsh r0, [r4, r2] - adds r0, r1 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - ldrh r1, [r4, 0x26] - adds r0, r1 - strh r0, [r4, 0x26] - movs r2, 0x2E - ldrsh r0, [r4, r2] - cmp r0, 0x16 - bne _0804D760 - movs r0, 0x38 - bl PlaySE -_0804D760: - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x2C - bne _0804D796 - movs r0, 0x8C - bl PlaySE - ldr r0, _0804D7A4 @ =sub_804D7AC - str r0, [r4, 0x1C] - movs r0, 0 - strh r0, [r4, 0x2E] - ldrb r1, [r4, 0x5] - lsrs r1, 4 - adds r1, 0x10 - movs r0, 0x1 - lsls r0, r1 - movs r1, 0x1 - negs r1, r1 - ldr r2, _0804D7A8 @ =0x0000ffff - str r2, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade -_0804D796: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0804D7A0: .4byte gTradeBallVerticalVelocityTable -_0804D7A4: .4byte sub_804D7AC -_0804D7A8: .4byte 0x0000ffff - thumb_func_end sub_804D738 - - thumb_func_start sub_804D7AC -sub_804D7AC: @ 804D7AC - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x30 - ldrsh r0, [r4, r1] - cmp r0, 0x14 - bne _0804D7C0 - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAffineAnim -_0804D7C0: - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x14 - ble _0804D7FE - ldr r1, _0804D804 @ =gTradeBallVerticalVelocityTable - movs r2, 0x2E - ldrsh r0, [r4, r2] - adds r0, r1 - movs r1, 0 - ldrsb r1, [r0, r1] - ldrh r0, [r4, 0x26] - subs r0, r1 - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x17 - bne _0804D7FE - adds r0, r4, 0 - bl DestroySprite - ldr r0, _0804D808 @ =gUnknown_03004828 - ldr r0, [r0] - adds r0, 0xC4 - movs r1, 0xE - strh r1, [r0] -_0804D7FE: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0804D804: .4byte gTradeBallVerticalVelocityTable -_0804D808: .4byte gUnknown_03004828 - thumb_func_end sub_804D7AC - - thumb_func_start sub_804D80C -sub_804D80C: @ 804D80C - push {r4,lr} - adds r4, r0, 0 - ldrh r2, [r4, 0x32] - movs r1, 0x32 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _0804D83C - ldrh r0, [r4, 0x22] - adds r0, 0x4 - strh r0, [r4, 0x22] - lsls r0, 16 - asrs r0, 16 - movs r3, 0x34 - ldrsh r1, [r4, r3] - cmp r0, r1 - ble _0804D88C - adds r0, r2, 0x1 - strh r0, [r4, 0x32] - movs r0, 0x16 - strh r0, [r4, 0x2E] - movs r0, 0x38 - bl PlaySE - b _0804D88C -_0804D83C: - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0x42 - bne _0804D84A - movs r0, 0x39 - bl PlaySE -_0804D84A: - movs r2, 0x2E - ldrsh r0, [r4, r2] - cmp r0, 0x5C - bne _0804D858 - movs r0, 0x3A - bl PlaySE -_0804D858: - movs r3, 0x2E - ldrsh r0, [r4, r3] - cmp r0, 0x6B - bne _0804D866 - movs r0, 0x3B - bl PlaySE -_0804D866: - ldr r1, _0804D894 @ =gTradeBallVerticalVelocityTable - movs r2, 0x2E - ldrsh r0, [r4, r2] - adds r0, r1 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - ldrh r3, [r4, 0x26] - adds r0, r3 - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x6C - bne _0804D88C - ldr r0, _0804D898 @ =SpriteCallbackDummy - str r0, [r4, 0x1C] -_0804D88C: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0804D894: .4byte gTradeBallVerticalVelocityTable -_0804D898: .4byte SpriteCallbackDummy - thumb_func_end sub_804D80C - - thumb_func_start sub_804D89C -sub_804D89C: @ 804D89C - push {r4-r6,lr} - ldr r0, _0804D8D0 @ =gSpecialVar_0x8004 - ldrh r0, [r0] - lsls r4, r0, 4 - subs r4, r0 - lsls r4, 2 - ldr r0, _0804D8D4 @ =gIngameTrades - adds r4, r0 - ldr r0, _0804D8D8 @ =gStringVar1 - ldrh r1, [r4, 0x38] - movs r6, 0xB - muls r1, r6 - ldr r5, _0804D8DC @ =gSpeciesNames - adds r1, r5 - bl StringCopy - ldr r0, _0804D8E0 @ =gStringVar2 - ldrh r1, [r4, 0xC] - muls r1, r6 - adds r1, r5 - bl StringCopy - ldrh r0, [r4, 0x38] - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_0804D8D0: .4byte gSpecialVar_0x8004 -_0804D8D4: .4byte gIngameTrades -_0804D8D8: .4byte gStringVar1 -_0804D8DC: .4byte gSpeciesNames -_0804D8E0: .4byte gStringVar2 - thumb_func_end sub_804D89C - - thumb_func_start sub_804D8E4 -sub_804D8E4: @ 804D8E4 - push {r4,lr} - sub sp, 0x20 - ldr r0, _0804D92C @ =gSpecialVar_0x8004 - ldrh r0, [r0] - lsls r4, r0, 4 - subs r4, r0 - lsls r4, 2 - ldr r0, _0804D930 @ =gIngameTrades - adds r4, r0 - ldr r0, _0804D934 @ =gSpecialVar_0x8005 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _0804D938 @ =gPlayerParty - adds r0, r1 - movs r1, 0x2 - mov r2, sp - bl GetMonData - ldr r0, _0804D93C @ =gStringVar1 - mov r1, sp - bl StringCopy10 - ldr r0, _0804D940 @ =gStringVar2 - ldrh r2, [r4, 0xC] - movs r1, 0xB - muls r1, r2 - ldr r2, _0804D944 @ =gSpeciesNames - adds r1, r2 - bl StringCopy - add sp, 0x20 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0804D92C: .4byte gSpecialVar_0x8004 -_0804D930: .4byte gIngameTrades -_0804D934: .4byte gSpecialVar_0x8005 -_0804D938: .4byte gPlayerParty -_0804D93C: .4byte gStringVar1 -_0804D940: .4byte gStringVar2 -_0804D944: .4byte gSpeciesNames - thumb_func_end sub_804D8E4 - - thumb_func_start sub_804D948 -sub_804D948: @ 804D948 - push {r4-r7,lr} - sub sp, 0x38 - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r1, 24 - lsls r2, r1, 4 - subs r2, r1 - lsls r2, 2 - ldr r1, _0804DAA4 @ =gIngameTrades - adds r5, r2, r1 - movs r1, 0x64 - muls r0, r1 - ldr r1, _0804DAA8 @ =gPlayerParty - adds r0, r1 - movs r1, 0x38 - bl GetMonData - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - add r4, sp, 0x34 - movs r0, 0xFE - strb r0, [r4] - ldr r6, _0804DAAC @ =gEnemyParty - ldrh r1, [r5, 0xC] - movs r3, 0x1 - str r3, [sp] - ldr r0, [r5, 0x24] - str r0, [sp, 0x4] - str r3, [sp, 0x8] - ldr r0, [r5, 0x18] - str r0, [sp, 0xC] - adds r0, r6, 0 - movs r3, 0x20 - bl CreateMon - adds r2, r5, 0 - adds r2, 0xE - adds r0, r6, 0 - movs r1, 0x27 - bl SetMonData - adds r2, r5, 0 - adds r2, 0xF - adds r0, r6, 0 - movs r1, 0x28 - bl SetMonData - adds r2, r5, 0 - adds r2, 0x10 - adds r0, r6, 0 - movs r1, 0x29 - bl SetMonData - adds r2, r5, 0 - adds r2, 0x11 - adds r0, r6, 0 - movs r1, 0x2A - bl SetMonData - adds r2, r5, 0 - adds r2, 0x12 - adds r0, r6, 0 - movs r1, 0x2B - bl SetMonData - adds r2, r5, 0 - adds r2, 0x13 - adds r0, r6, 0 - movs r1, 0x2C - bl SetMonData - adds r0, r6, 0 - movs r1, 0x2 - adds r2, r5, 0 - bl SetMonData - adds r2, r5, 0 - adds r2, 0x2B - adds r0, r6, 0 - movs r1, 0x7 - bl SetMonData - adds r2, r5, 0 - adds r2, 0x36 - adds r0, r6, 0 - movs r1, 0x31 - bl SetMonData - adds r2, r5, 0 - adds r2, 0x14 - adds r0, r6, 0 - movs r1, 0x2E - bl SetMonData - adds r2, r5, 0 - adds r2, 0x1D - adds r0, r6, 0 - movs r1, 0x17 - bl SetMonData - adds r2, r5, 0 - adds r2, 0x1E - adds r0, r6, 0 - movs r1, 0x18 - bl SetMonData - adds r2, r5, 0 - adds r2, 0x1C - adds r0, r6, 0 - movs r1, 0x16 - bl SetMonData - adds r2, r5, 0 - adds r2, 0x1F - adds r0, r6, 0 - movs r1, 0x21 - bl SetMonData - adds r2, r5, 0 - adds r2, 0x20 - adds r0, r6, 0 - movs r1, 0x2F - bl SetMonData - adds r2, r5, 0 - adds r2, 0x37 - adds r0, r6, 0 - movs r1, 0x30 - bl SetMonData - adds r0, r6, 0 - movs r1, 0x23 - adds r2, r4, 0 - bl SetMonData - mov r4, sp - adds r4, 0x35 - movs r0, 0 - strb r0, [r4] - ldrh r0, [r5, 0x28] - cmp r0, 0 - beq _0804DAC0 - bl ItemIsMail - lsls r0, 24 - cmp r0, 0 - beq _0804DAB4 - add r0, sp, 0x10 - adds r1, r5, 0 - bl sub_804DAD4 - ldr r0, _0804DAB0 @ =gUnknown_02029700 - add r1, sp, 0x10 - ldm r1!, {r2,r3,r7} - stm r0!, {r2,r3,r7} - ldm r1!, {r2,r3,r7} - stm r0!, {r2,r3,r7} - ldm r1!, {r2,r3,r7} - stm r0!, {r2,r3,r7} - adds r0, r6, 0 - movs r1, 0x40 - adds r2, r4, 0 - bl SetMonData - adds r2, r5, 0 - adds r2, 0x28 - adds r0, r6, 0 - movs r1, 0xC - bl SetMonData - b _0804DAC0 - .align 2, 0 -_0804DAA4: .4byte gIngameTrades -_0804DAA8: .4byte gPlayerParty -_0804DAAC: .4byte gEnemyParty -_0804DAB0: .4byte gUnknown_02029700 -_0804DAB4: - adds r2, r5, 0 - adds r2, 0x28 - adds r0, r6, 0 - movs r1, 0xC - bl SetMonData -_0804DAC0: - ldr r0, _0804DAD0 @ =gEnemyParty - bl CalculateMonStats - add sp, 0x38 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804DAD0: .4byte gEnemyParty - thumb_func_end sub_804D948 - -.section .text.sub_804DB2C - - thumb_func_start sub_804DB2C -sub_804DB2C: @ 804DB2C - push {r4-r6,lr} - ldr r6, _0804DB58 @ =gSpecialVar_0x8005 - ldrh r0, [r6] - movs r5, 0x64 - muls r0, r5 - ldr r4, _0804DB5C @ =gPlayerParty - adds r0, r4 - movs r1, 0x2D - bl GetMonData - cmp r0, 0 - bne _0804DB60 - ldrh r0, [r6] - muls r0, r5 - adds r0, r4 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - b _0804DB62 - .align 2, 0 -_0804DB58: .4byte gSpecialVar_0x8005 -_0804DB5C: .4byte gPlayerParty -_0804DB60: - movs r0, 0 -_0804DB62: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_804DB2C - - thumb_func_start sub_804DB68 -sub_804DB68: @ 804DB68 - push {lr} - ldr r0, _0804DB7C @ =gSpecialVar_0x8005 - ldrb r0, [r0] - ldr r1, _0804DB80 @ =gSpecialVar_0x8004 - ldrb r1, [r1] - bl sub_804D948 - pop {r0} - bx r0 - .align 2, 0 -_0804DB7C: .4byte gSpecialVar_0x8005 -_0804DB80: .4byte gSpecialVar_0x8004 - thumb_func_end sub_804DB68 - - thumb_func_start sub_804DB84 -sub_804DB84: @ 804DB84 - push {r4-r6,lr} - bl sub_804C29C - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0x1 - bne _0804DBE6 - ldr r5, _0804DC04 @ =gUnknown_03004828 - ldr r0, [r5] - adds r0, 0xB8 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r4, _0804DC08 @ =gSprites - adds r0, r4 - bl DestroySprite - ldr r0, [r5] - adds r0, 0xB9 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - bl FreeSpriteOamMatrix - ldr r0, _0804DC0C @ =gUnknown_020297D8 - ldrb r4, [r0] - ldrb r0, [r0, 0x1] - movs r1, 0x6 - bl __umodsi3 - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl sub_804BA94 - ldr r0, [r5] - adds r2, r0, 0 - adds r2, 0x9E - ldr r1, _0804DC10 @ =0x0000abcd - strh r1, [r2] - adds r0, 0xBD - strb r6, [r0] - ldr r0, _0804DC14 @ =sub_804DC18 - bl SetMainCallback2 -_0804DBE6: - bl sub_804BB78 - bl sub_804D63C - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0804DC04: .4byte gUnknown_03004828 -_0804DC08: .4byte gSprites -_0804DC0C: .4byte gUnknown_020297D8 -_0804DC10: .4byte 0x0000abcd -_0804DC14: .4byte sub_804DC18 - thumb_func_end sub_804DB84 - - thumb_func_start sub_804DC18 -sub_804DC18: @ 804DC18 - push {r4,lr} - bl sub_804B2B0 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl sub_804D63C - cmp r4, 0 - bne _0804DC64 - ldr r4, _0804DC7C @ =gUnknown_03004828 - ldr r2, [r4] - adds r0, r2, 0 - adds r0, 0x9C - ldrh r1, [r0] - ldr r0, _0804DC80 @ =0x00000101 - cmp r1, r0 - bne _0804DC64 - adds r1, r2, 0 - adds r1, 0x9E - ldr r0, _0804DC84 @ =0x0000dcba - strh r0, [r1] - bl bitmask_all_link_players_but_self - lsls r0, 24 - lsrs r0, 24 - ldr r1, [r4] - adds r1, 0x9E - movs r2, 0x14 - bl SendBlock - ldr r0, [r4] - adds r0, 0x9C - movs r1, 0x2 - strb r1, [r0] - ldr r0, [r4] - adds r0, 0x9D - strb r1, [r0] -_0804DC64: - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0804DC7C: .4byte gUnknown_03004828 -_0804DC80: .4byte 0x00000101 -_0804DC84: .4byte 0x0000dcba - thumb_func_end sub_804DC18 - - thumb_func_start sub_804DC88 -sub_804DC88: @ 804DC88 - push {r4,r5,lr} - sub sp, 0x4 - ldr r1, _0804DCA8 @ =gMain - ldr r2, _0804DCAC @ =0x0000043c - adds r0, r1, r2 - ldrb r0, [r0] - adds r2, r1, 0 - cmp r0, 0x65 - bls _0804DC9C - b _0804E11A -_0804DC9C: - lsls r0, 2 - ldr r1, _0804DCB0 @ =_0804DCB4 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0804DCA8: .4byte gMain -_0804DCAC: .4byte 0x0000043c -_0804DCB0: .4byte _0804DCB4 - .align 2, 0 -_0804DCB4: - .4byte _0804DE4C - .4byte _0804DE9C - .4byte _0804DF14 - .4byte _0804E11A - .4byte _0804DFE0 - .4byte _0804E078 - .4byte _0804E0A0 - .4byte _0804E0BC - .4byte _0804E0E4 - .4byte _0804E10C - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E008 - .4byte _0804E034 - .4byte _0804E04C - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804DF54 - .4byte _0804DF7C - .4byte _0804DF9C - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804E11A - .4byte _0804DEB4 - .4byte _0804DEF4 -_0804DE4C: - ldr r5, _0804DE88 @ =gUnknown_03004828 - ldr r0, _0804DE8C @ =0x0201f000 - str r0, [r5] - ldr r1, _0804DE90 @ =0x0000043c - adds r2, r1 - ldrb r1, [r2] - adds r1, 0x1 - strb r1, [r2] - adds r0, 0x4 - movs r1, 0x13 - str r1, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x1D - bl ZeroFillWindowRect - ldr r4, _0804DE94 @ =gStringVar4 - ldr r1, _0804DE98 @ =gOtherText_LinkStandby2 - adds r0, r4, 0 - bl StringExpandPlaceholders - ldr r1, [r5] - adds r0, r1, 0x4 - adds r1, 0x34 - ldrb r2, [r1] - movs r1, 0xF - str r1, [sp] - adds r1, r4, 0 - b _0804DF3E - .align 2, 0 -_0804DE88: .4byte gUnknown_03004828 -_0804DE8C: .4byte 0x0201f000 -_0804DE90: .4byte 0x0000043c -_0804DE94: .4byte gStringVar4 -_0804DE98: .4byte gOtherText_LinkStandby2 -_0804DE9C: - bl sub_80084A4 - ldr r0, _0804DEAC @ =gMain - ldr r2, _0804DEB0 @ =0x0000043c - adds r0, r2 - movs r2, 0 - movs r1, 0x64 - b _0804DFEE - .align 2, 0 -_0804DEAC: .4byte gMain -_0804DEB0: .4byte 0x0000043c -_0804DEB4: - ldr r0, _0804DEE8 @ =gUnknown_03004828 - ldr r0, [r0] - adds r3, r0, 0 - adds r3, 0xC0 - ldr r0, [r3] - adds r0, 0x1 - str r0, [r3] - cmp r0, 0xB4 - bls _0804DED2 - ldr r1, _0804DEEC @ =0x0000043c - adds r0, r2, r1 - movs r2, 0 - movs r1, 0x65 - strb r1, [r0] - str r2, [r3] -_0804DED2: - bl sub_8007ECC - lsls r0, 24 - cmp r0, 0 - bne _0804DEDE - b _0804E11A -_0804DEDE: - ldr r0, _0804DEF0 @ =gMain - ldr r2, _0804DEEC @ =0x0000043c - adds r0, r2 - b _0804DF06 - .align 2, 0 -_0804DEE8: .4byte gUnknown_03004828 -_0804DEEC: .4byte 0x0000043c -_0804DEF0: .4byte gMain -_0804DEF4: - bl sub_8007ECC - lsls r0, 24 - cmp r0, 0 - bne _0804DF00 - b _0804E11A -_0804DF00: - ldr r0, _0804DF0C @ =gMain - ldr r1, _0804DF10 @ =0x0000043c - adds r0, r1 -_0804DF06: - movs r1, 0x2 - strb r1, [r0] - b _0804E11A - .align 2, 0 -_0804DF0C: .4byte gMain -_0804DF10: .4byte 0x0000043c -_0804DF14: - ldr r0, _0804DF48 @ =0x0000043c - adds r1, r2, r0 - movs r0, 0x32 - strb r0, [r1] - ldr r4, _0804DF4C @ =gUnknown_03004828 - ldr r0, [r4] - adds r0, 0x4 - movs r1, 0x13 - str r1, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x1D - bl ZeroFillWindowRect - ldr r2, [r4] - adds r0, r2, 0x4 - ldr r1, _0804DF50 @ =gSystemText_Saving - adds r2, 0x34 - ldrb r2, [r2] - movs r3, 0xF - str r3, [sp] -_0804DF3E: - movs r3, 0x2 - bl sub_8003460 - b _0804E11A - .align 2, 0 -_0804DF48: .4byte 0x0000043c -_0804DF4C: .4byte gUnknown_03004828 -_0804DF50: .4byte gSystemText_Saving -_0804DF54: - bl SetSecretBase2Field_9_AndHideBG - movs r0, 0x15 - bl IncrementGameStat - bl sub_8125D80 - ldr r1, _0804DF74 @ =gMain - ldr r2, _0804DF78 @ =0x0000043c - adds r1, r2 - ldrb r0, [r1] - adds r0, 0x1 - movs r2, 0 - strb r0, [r1] - b _0804DFF0 - .align 2, 0 -_0804DF74: .4byte gMain -_0804DF78: .4byte 0x0000043c -_0804DF7C: - ldr r0, _0804DF94 @ =gUnknown_03004828 - ldr r1, [r0] - adds r1, 0xC0 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - cmp r0, 0x5 - beq _0804DF8E - b _0804E11A -_0804DF8E: - ldr r0, _0804DF98 @ =0x0000043c - adds r1, r2, r0 - b _0804E0FA - .align 2, 0 -_0804DF94: .4byte gUnknown_03004828 -_0804DF98: .4byte 0x0000043c -_0804DF9C: - bl sub_8125DA8 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - beq _0804DFC0 - bl ClearSecretBase2Field_9_2 - ldr r0, _0804DFB8 @ =gMain - ldr r1, _0804DFBC @ =0x0000043c - adds r0, r1 - movs r1, 0x4 - strb r1, [r0] - b _0804E11A - .align 2, 0 -_0804DFB8: .4byte gMain -_0804DFBC: .4byte 0x0000043c -_0804DFC0: - ldr r0, _0804DFD4 @ =gUnknown_03004828 - ldr r0, [r0] - adds r0, 0xC0 - str r1, [r0] - ldr r0, _0804DFD8 @ =gMain - ldr r2, _0804DFDC @ =0x0000043c - adds r0, r2 - movs r1, 0x33 - strb r1, [r0] - b _0804E11A - .align 2, 0 -_0804DFD4: .4byte gUnknown_03004828 -_0804DFD8: .4byte gMain -_0804DFDC: .4byte 0x0000043c -_0804DFE0: - bl sub_8125DDC - ldr r0, _0804DFFC @ =gMain - ldr r1, _0804E000 @ =0x0000043c - adds r0, r1 - movs r2, 0 - movs r1, 0x28 -_0804DFEE: - strb r1, [r0] -_0804DFF0: - ldr r0, _0804E004 @ =gUnknown_03004828 - ldr r0, [r0] - adds r0, 0xC0 - str r2, [r0] - b _0804E11A - .align 2, 0 -_0804DFFC: .4byte gMain -_0804E000: .4byte 0x0000043c -_0804E004: .4byte gUnknown_03004828 -_0804E008: - ldr r0, _0804E02C @ =gUnknown_03004828 - ldr r0, [r0] - adds r1, r0, 0 - adds r1, 0xC0 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - cmp r0, 0x32 - bhi _0804E01C - b _0804E11A -_0804E01C: - movs r0, 0 - str r0, [r1] - ldr r0, _0804E030 @ =0x0000043c - adds r1, r2, r0 - movs r0, 0x29 - strb r0, [r1] - b _0804E11A - .align 2, 0 -_0804E02C: .4byte gUnknown_03004828 -_0804E030: .4byte 0x0000043c -_0804E034: - bl sub_80084A4 - ldr r0, _0804E044 @ =gMain - ldr r1, _0804E048 @ =0x0000043c - adds r0, r1 - movs r1, 0x2A - strb r1, [r0] - b _0804E11A - .align 2, 0 -_0804E044: .4byte gMain -_0804E048: .4byte 0x0000043c -_0804E04C: - bl sub_8007ECC - lsls r0, 24 - cmp r0, 0 - beq _0804E11A - bl sub_8125E04 - ldr r1, _0804E06C @ =gSoftResetDisabled - movs r0, 0 - strb r0, [r1] - ldr r0, _0804E070 @ =gMain - ldr r2, _0804E074 @ =0x0000043c - adds r0, r2 - movs r1, 0x5 - strb r1, [r0] - b _0804E11A - .align 2, 0 -_0804E06C: .4byte gSoftResetDisabled -_0804E070: .4byte gMain -_0804E074: .4byte 0x0000043c -_0804E078: - ldr r0, _0804E098 @ =gUnknown_03004828 - ldr r1, [r0] - adds r1, 0xC0 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - cmp r0, 0x3C - bls _0804E11A - ldr r0, _0804E09C @ =0x0000043c - adds r1, r2, r0 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - bl sub_80084A4 - b _0804E11A - .align 2, 0 -_0804E098: .4byte gUnknown_03004828 -_0804E09C: .4byte 0x0000043c -_0804E0A0: - bl sub_8007ECC - lsls r0, 24 - cmp r0, 0 - beq _0804E11A - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - b _0804E0F4 -_0804E0BC: - ldr r0, _0804E0D8 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0804E11A - movs r0, 0x3 - bl FadeOutBGM - ldr r1, _0804E0DC @ =gMain - ldr r0, _0804E0E0 @ =0x0000043c - adds r1, r0 - b _0804E0FA - .align 2, 0 -_0804E0D8: .4byte gPaletteFade -_0804E0DC: .4byte gMain -_0804E0E0: .4byte 0x0000043c -_0804E0E4: - bl IsBGMStopped - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0804E11A - bl sub_800832C -_0804E0F4: - ldr r1, _0804E104 @ =gMain - ldr r2, _0804E108 @ =0x0000043c - adds r1, r2 -_0804E0FA: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0804E11A - .align 2, 0 -_0804E104: .4byte gMain -_0804E108: .4byte 0x0000043c -_0804E10C: - ldr r0, _0804E13C @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - bne _0804E11A - ldr r0, _0804E140 @ =sub_804E144 - bl SetMainCallback2 -_0804E11A: - bl HasLinkErrorOccurred - lsls r0, 24 - cmp r0, 0 - bne _0804E128 - bl RunTasks -_0804E128: - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0804E13C: .4byte gReceivedRemoteLinkPlayers -_0804E140: .4byte sub_804E144 - thumb_func_end sub_804DC88 - - thumb_func_start sub_804E144 -sub_804E144: @ 804E144 - push {lr} - ldr r0, _0804E16C @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0804E158 - ldr r0, _0804E170 @ =sub_8047CD8 - bl SetMainCallback2 -_0804E158: - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - pop {r0} - bx r0 - .align 2, 0 -_0804E16C: .4byte gPaletteFade -_0804E170: .4byte sub_8047CD8 - thumb_func_end sub_804E144 - - thumb_func_start sub_804E174 -sub_804E174: @ 804E174 - push {lr} - sub sp, 0x4 - bl ScriptContext2_Enable - ldr r0, _0804E19C @ =sub_804E1A0 - movs r1, 0xA - bl CreateTask - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - add sp, 0x4 - pop {r0} - bx r0 - .align 2, 0 -_0804E19C: .4byte sub_804E1A0 - thumb_func_end sub_804E174 - - thumb_func_start sub_804E1A0 -sub_804E1A0: @ 804E1A0 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0804E1CC @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0804E1C4 - ldr r0, _0804E1D0 @ =sub_804B790 - bl SetMainCallback2 - ldr r1, _0804E1D4 @ =gFieldCallback - ldr r0, _0804E1D8 @ =sub_8080990 - str r0, [r1] - adds r0, r4, 0 - bl DestroyTask -_0804E1C4: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0804E1CC: .4byte gPaletteFade -_0804E1D0: .4byte sub_804B790 -_0804E1D4: .4byte gFieldCallback -_0804E1D8: .4byte sub_8080990 - thumb_func_end sub_804E1A0 - - thumb_func_start sub_804E1DC -sub_804E1DC: @ 804E1DC - push {r4,r5,lr} - movs r5, 0 - movs r4, 0 -_0804E1E2: - ldr r0, _0804E220 @ =gUnknown_020297D8 - ldrb r0, [r0, 0x1] - movs r1, 0x6 - bl __umodsi3 - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x64 - muls r0, r1 - ldr r1, _0804E224 @ =gEnemyParty - adds r0, r1 - adds r1, r4, 0 - adds r1, 0x43 - bl GetMonData - adds r0, r5, r0 - lsls r0, 24 - lsrs r5, r0, 24 - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0xB - bls _0804E1E2 - cmp r5, 0 - beq _0804E21A - ldr r0, _0804E228 @ =0x0000083b - bl FlagSet -_0804E21A: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0804E220: .4byte gUnknown_020297D8 -_0804E224: .4byte gEnemyParty -_0804E228: .4byte 0x0000083b - thumb_func_end sub_804E1DC - - thumb_func_start sub_804E22C -sub_804E22C: @ 804E22C - push {r4,lr} - ldr r0, _0804E26C @ =gUnknown_08D00000 - movs r1, 0xC0 - lsls r1, 19 - bl LZDecompressVram - ldr r0, _0804E270 @ =gUnknown_08D00524 - ldr r4, _0804E274 @ =0x02000000 - movs r2, 0x80 - lsls r2, 4 - adds r1, r4, 0 - bl CpuSet - ldr r1, _0804E278 @ =0x06002800 - ldr r0, _0804E27C @ =0x040000d4 - str r4, [r0] - str r1, [r0, 0x4] - ldr r1, _0804E280 @ =0x80000280 - str r1, [r0, 0x8] - ldr r0, [r0, 0x8] - ldr r0, _0804E284 @ =gUnknown_08D004E0 - movs r1, 0 - movs r2, 0x20 - bl LoadCompressedPalette - ldr r1, _0804E288 @ =REG_BG1CNT - ldr r2, _0804E28C @ =0x00000502 - adds r0, r2, 0 - strh r0, [r1] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0804E26C: .4byte gUnknown_08D00000 -_0804E270: .4byte gUnknown_08D00524 -_0804E274: .4byte 0x02000000 -_0804E278: .4byte 0x06002800 -_0804E27C: .4byte 0x040000d4 -_0804E280: .4byte 0x80000280 -_0804E284: .4byte gUnknown_08D004E0 -_0804E288: .4byte REG_BG1CNT -_0804E28C: .4byte 0x00000502 - thumb_func_end sub_804E22C - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/trader.s b/asm/trader.s deleted file mode 100644 index 3bda1d8dc..000000000 --- a/asm/trader.s +++ /dev/null @@ -1,656 +0,0 @@ - .include "constants/gba_constants.inc" - .include "constants/species_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start sub_810993C -sub_810993C: @ 810993C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x10 - ldr r0, _081099C8 @ =gSaveBlock1 + 0x2D94 - mov r9, r0 - movs r2, 0 -_0810994E: - adds r1, r2, 0x1 - lsls r0, r1, 24 - lsrs r5, r0, 24 - str r1, [sp, 0xC] - cmp r5, 0x3 - bhi _081099AC - movs r1, 0x1 - add r1, r9 - mov r8, r1 - adds r6, r1, r2 - movs r0, 0xB - mov r10, r0 - mov r0, r10 - muls r0, r2 - adds r0, 0x5 - mov r1, r9 - adds r7, r1, r0 -_08109970: - ldrb r0, [r6] - cmp r0, 0 - bne _081099A2 - adds r2, r0, 0 - mov r0, r8 - adds r1, r0, r5 - ldrb r0, [r1] - strb r0, [r6] - strb r2, [r1] - mov r0, sp - adds r1, r7, 0 - bl StringCopy - mov r4, r10 - muls r4, r5 - adds r4, 0x5 - add r4, r9 - adds r0, r7, 0 - adds r1, r4, 0 - bl StringCopy - adds r0, r4, 0 - mov r1, sp - bl StringCopy -_081099A2: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x3 - bls _08109970 -_081099AC: - ldr r1, [sp, 0xC] - lsls r0, r1, 24 - lsrs r2, r0, 24 - cmp r2, 0x2 - bls _0810994E - add sp, 0x10 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_081099C8: .4byte gSaveBlock1 + 0x2D94 - thumb_func_end sub_810993C - - thumb_func_start sub_81099CC -sub_81099CC: @ 81099CC - push {r4-r6,lr} - ldr r5, _08109A14 @ =gSaveBlock1 + 0x2D94 - movs r1, 0 - movs r0, 0x2 - strb r0, [r5] - adds r0, r5, 0 - adds r0, 0x31 - strb r1, [r0] - movs r4, 0 - ldr r6, _08109A18 @ =gUnknown_083F62D8 -_081099E0: - movs r0, 0xB - muls r0, r4 - adds r0, 0x5 - adds r0, r5, r0 - lsls r1, r4, 2 - adds r1, r6 - ldr r1, [r1] - bl StringCopy - adds r1, r5, 0x1 - adds r1, r4 - ldr r0, _08109A1C @ =gTraderDecorations - adds r0, r4, r0 - ldrb r0, [r0] - strb r0, [r1] - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x3 - bls _081099E0 - bl sub_810993C - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08109A14: .4byte gSaveBlock1 + 0x2D94 -_08109A18: .4byte gUnknown_083F62D8 -_08109A1C: .4byte gTraderDecorations - thumb_func_end sub_81099CC - - thumb_func_start sub_8109A20 -sub_8109A20: @ 8109A20 - ldr r0, _08109A2C @ =gSaveBlock1 + 0x2D94 - adds r0, 0x31 - movs r1, 0 - strb r1, [r0] - bx lr - .align 2, 0 -_08109A2C: .4byte gSaveBlock1 + 0x2D94 - thumb_func_end sub_8109A20 - - thumb_func_start sub_8109A30 -sub_8109A30: @ 8109A30 - push {lr} - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - ldr r0, _08109A44 @ =0x00004020 - bl VarSet - pop {r0} - bx r0 - .align 2, 0 -_08109A44: .4byte 0x00004020 - thumb_func_end sub_8109A30 - - thumb_func_start sub_8109A48 -sub_8109A48: @ 8109A48 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x8 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - movs r6, 0x1 - movs r5, 0 - ldr r0, _08109AB8 @ =gSaveBlock1 + 0x2D94 - movs r4, 0 - adds r7, r0, 0x1 - adds r1, r7, 0 -_08109A64: - adds r0, r1, r4 - ldrb r0, [r0] - cmp r0, 0 - beq _08109A72 - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 -_08109A72: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x3 - bls _08109A64 - lsls r3, r6, 25 - movs r0, 0x80 - lsls r0, 18 - adds r3, r0 - lsrs r3, 24 - movs r0, 0 - movs r1, 0x1 - movs r2, 0xC - bl MenuDrawTextWindow - movs r4, 0 - mov r1, r9 - lsls r1, 2 - mov r8, r1 -_08109A98: - adds r1, r7, r4 - ldrb r0, [r1] - cmp r0, 0 - beq _08109ADE - cmp r0, 0x78 - bls _08109AC0 - lsls r2, r5, 25 - movs r0, 0x80 - lsls r0, 18 - adds r2, r0 - lsrs r2, 24 - ldr r0, _08109ABC @ =gOtherText_FiveQuestionsAndSlash - movs r1, 0x1 - bl MenuPrint - b _08109AD8 - .align 2, 0 -_08109AB8: .4byte gSaveBlock1 + 0x2D94 -_08109ABC: .4byte gOtherText_FiveQuestionsAndSlash -_08109AC0: - ldrb r0, [r1] - lsls r0, 5 - ldr r1, _08109B28 @ =gDecorations + 0x1 - adds r0, r1 - lsls r2, r5, 25 - movs r1, 0x80 - lsls r1, 18 - adds r2, r1 - lsrs r2, 24 - movs r1, 0x1 - bl MenuPrint -_08109AD8: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 -_08109ADE: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x3 - bls _08109A98 - ldr r0, _08109B2C @ =gOtherText_CancelNoTerminator - lsls r2, r5, 25 - movs r1, 0x80 - lsls r1, 18 - adds r2, r1 - lsrs r2, 24 - movs r1, 0x1 - bl MenuPrint - movs r0, 0 - str r0, [sp] - movs r0, 0xB - str r0, [sp, 0x4] - movs r0, 0 - movs r1, 0x1 - movs r2, 0x2 - adds r3, r6, 0 - bl InitMenu - ldr r1, _08109B30 @ =gTasks - mov r0, r8 - add r0, r9 - lsls r0, 3 - adds r0, r1 - strh r5, [r0, 0xA] - add sp, 0x8 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08109B28: .4byte gDecorations + 0x1 -_08109B2C: .4byte gOtherText_CancelNoTerminator -_08109B30: .4byte gTasks - thumb_func_end sub_8109A48 - - thumb_func_start sub_8109B34 -sub_8109B34: @ 8109B34 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r1, 24 - lsrs r1, 24 - cmp r1, 0x78 - bls _08109B54 - ldr r1, _08109B4C @ =gSpecialVar_0x8004 - ldr r2, _08109B50 @ =0x0000ffff - adds r0, r2, 0 - strh r0, [r1] - b _08109B58 - .align 2, 0 -_08109B4C: .4byte gSpecialVar_0x8004 -_08109B50: .4byte 0x0000ffff -_08109B54: - ldr r0, _08109B78 @ =gSpecialVar_0x8004 - strh r1, [r0] -_08109B58: - bl HandleDestroyMenuCursors - movs r0, 0 - movs r1, 0x1 - movs r2, 0xC - movs r3, 0xC - bl MenuZeroFillWindowRect - adds r0, r4, 0 - bl DestroyTask - bl EnableBothScriptContexts - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08109B78: .4byte gSpecialVar_0x8004 - thumb_func_end sub_8109B34 - - thumb_func_start sub_8109B7C -sub_8109B7C: @ 8109B7C - push {r4-r6,lr} - lsls r0, 24 - lsrs r4, r0, 24 - adds r5, r4, 0 - ldr r6, _08109BA4 @ =gSaveBlock1 + 0x2D94 - ldr r0, _08109BA8 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _08109BAC - movs r0, 0x5 - bl PlaySE - movs r0, 0x1 - negs r0, r0 - bl MoveMenuCursor - b _08109C3E - .align 2, 0 -_08109BA4: .4byte gSaveBlock1 + 0x2D94 -_08109BA8: .4byte gMain -_08109BAC: - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08109BC2 - movs r0, 0x5 - bl PlaySE - movs r0, 0x1 - bl MoveMenuCursor - b _08109C3E -_08109BC2: - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08109C28 - movs r0, 0x5 - bl PlaySE - ldr r5, _08109BFC @ =gSpecialVar_0x8005 - bl GetMenuCursorPos - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5] - ldr r1, _08109C00 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - movs r1, 0xA - ldrsh r0, [r0, r1] - ldrh r2, [r5] - cmp r0, r2 - bne _08109C04 - adds r0, r4, 0 - movs r1, 0 - bl sub_8109B34 - b _08109C3E - .align 2, 0 -_08109BFC: .4byte gSpecialVar_0x8005 -_08109C00: .4byte gTasks -_08109C04: - ldr r0, _08109C24 @ =gStringVar1 - movs r1, 0xB - muls r1, r2 - adds r1, 0x5 - adds r1, r6 - bl StringCopy - adds r0, r6, 0x1 - ldrh r5, [r5] - adds r0, r5 - ldrb r1, [r0] - adds r0, r4, 0 - bl sub_8109B34 - b _08109C3E - .align 2, 0 -_08109C24: .4byte gStringVar1 -_08109C28: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08109C3E - movs r0, 0x5 - bl PlaySE - adds r0, r5, 0 - movs r1, 0 - bl sub_8109B34 -_08109C3E: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_8109B7C - - thumb_func_start sub_8109C44 -sub_8109C44: @ 8109C44 - ldr r0, _08109C50 @ =gSaveBlock1 + 0x2D94 - ldr r1, _08109C54 @ =gScriptResult - adds r0, 0x31 - ldrb r0, [r0] - strh r0, [r1] - bx lr - .align 2, 0 -_08109C50: .4byte gSaveBlock1 + 0x2D94 -_08109C54: .4byte gScriptResult - thumb_func_end sub_8109C44 - - thumb_func_start sub_8109C58 -sub_8109C58: @ 8109C58 - push {r4,r5,lr} - movs r4, 0 - ldr r5, _08109C70 @ =gScriptResult -_08109C5E: - adds r0, r4, 0 - bl sub_8134194 - lsls r0, 24 - cmp r0, 0 - beq _08109C74 - movs r0, 0 - strh r0, [r5] - b _08109C84 - .align 2, 0 -_08109C70: .4byte gScriptResult -_08109C74: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x7 - bls _08109C5E - ldr r1, _08109C8C @ =gScriptResult - movs r0, 0x1 - strh r0, [r1] -_08109C84: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08109C8C: .4byte gScriptResult - thumb_func_end sub_8109C58 - - thumb_func_start sub_8109C90 -sub_8109C90: @ 8109C90 - push {r4-r6,lr} - ldr r6, _08109CDC @ =gScriptResult - movs r0, 0 - strh r0, [r6] - ldr r4, _08109CE0 @ =gDecorations - ldr r5, _08109CE4 @ =gSpecialVar_0x8004 - ldrh r0, [r5] - lsls r0, 5 - adds r2, r0, r4 - ldr r0, _08109CE8 @ =gSpecialVar_0x8006 - ldrh r0, [r0] - lsls r0, 5 - adds r0, r4 - ldrb r1, [r2, 0x13] - ldrb r0, [r0, 0x13] - cmp r1, r0 - beq _08109CD6 - adds r0, r1, 0 - bl sub_8133F9C - lsls r0, 24 - asrs r0, 24 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - bne _08109CD6 - ldr r0, _08109CEC @ =gStringVar2 - ldrh r1, [r5] - lsls r1, 5 - adds r1, r4 - ldrb r1, [r1, 0x13] - bl sub_80FE7D4 - movs r0, 0x1 - strh r0, [r6] -_08109CD6: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08109CDC: .4byte gScriptResult -_08109CE0: .4byte gDecorations -_08109CE4: .4byte gSpecialVar_0x8004 -_08109CE8: .4byte gSpecialVar_0x8006 -_08109CEC: .4byte gStringVar2 - thumb_func_end sub_8109C90 - - thumb_func_start sub_8109CF0 -sub_8109CF0: @ 8109CF0 - push {lr} - ldr r0, _08109D00 @ =sub_80FE7A8 - movs r1, 0 - bl CreateTask - pop {r0} - bx r0 - .align 2, 0 -_08109D00: .4byte sub_80FE7A8 - thumb_func_end sub_8109CF0 - - thumb_func_start sub_8109D04 -sub_8109D04: @ 8109D04 - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - bl HandleDestroyMenuCursors - movs r0, 0 - movs r1, 0 - movs r2, 0x1D - movs r3, 0x13 - bl MenuZeroFillWindowRect - movs r0, 0 - bl DestroyVerticalScrollIndicator - movs r0, 0x1 - bl DestroyVerticalScrollIndicator - ldr r0, _08109D6C @ =gUnknown_020388F7 - movs r1, 0x8 - bl sub_80F9520 - bl BuyMenuFreeMemory - bl sub_80FEFA4 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08109D8C - ldr r5, _08109D70 @ =gSpecialVar_0x8006 - ldr r0, _08109D74 @ =gUnknown_020388F5 - ldrb r1, [r0] - ldr r0, _08109D78 @ =gUnknown_020388D0 - ldr r0, [r0] - adds r0, r1 - ldrb r0, [r0] - strh r0, [r5] - ldr r0, _08109D7C @ =gStringVar3 - ldr r1, _08109D80 @ =gSpecialVar_0x8004 - ldrh r1, [r1] - lsls r1, 5 - ldr r4, _08109D84 @ =gDecorations + 0x1 - adds r1, r4 - bl StringCopy - ldr r0, _08109D88 @ =gStringVar2 - ldrh r1, [r5] - lsls r1, 5 - adds r1, r4 - bl StringCopy - b _08109D94 - .align 2, 0 -_08109D6C: .4byte gUnknown_020388F7 -_08109D70: .4byte gSpecialVar_0x8006 -_08109D74: .4byte gUnknown_020388F5 -_08109D78: .4byte gUnknown_020388D0 -_08109D7C: .4byte gStringVar3 -_08109D80: .4byte gSpecialVar_0x8004 -_08109D84: .4byte gDecorations + 0x1 -_08109D88: .4byte gStringVar2 -_08109D8C: - ldr r1, _08109DA4 @ =gSpecialVar_0x8006 - ldr r2, _08109DA8 @ =0x0000ffff - adds r0, r2, 0 - strh r0, [r1] -_08109D94: - adds r0, r6, 0 - bl DestroyTask - bl EnableBothScriptContexts - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08109DA4: .4byte gSpecialVar_0x8006 -_08109DA8: .4byte 0x0000ffff - thumb_func_end sub_8109D04 - - thumb_func_start sub_8109DAC -sub_8109DAC: @ 8109DAC - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl HandleDestroyMenuCursors - movs r0, 0 - movs r1, 0 - movs r2, 0x1D - movs r3, 0x13 - bl MenuZeroFillWindowRect - ldr r1, _08109DDC @ =gSpecialVar_0x8006 - movs r0, 0 - strh r0, [r1] - adds r0, r4, 0 - bl DestroyTask - bl EnableBothScriptContexts - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08109DDC: .4byte gSpecialVar_0x8006 - thumb_func_end sub_8109DAC - - thumb_func_start sub_8109DE0 -sub_8109DE0: @ 8109DE0 - push {r4-r6,lr} - ldr r4, _08109E20 @ =gSaveBlock1 + 0x2D94 - ldr r6, _08109E24 @ =gSpecialVar_0x8006 - ldrb r0, [r6] - bl sub_81340A8 - ldr r0, _08109E28 @ =gSpecialVar_0x8004 - ldrb r0, [r0] - bl IsThereStorageSpaceForDecoration - ldr r5, _08109E2C @ =gSpecialVar_0x8005 - ldrh r1, [r5] - movs r0, 0xB - muls r0, r1 - adds r0, 0x5 - adds r0, r4 - ldr r1, _08109E30 @ =gSaveBlock2 - bl StringCopy - adds r0, r4, 0x1 - ldrh r5, [r5] - adds r0, r5 - ldrh r1, [r6] - strb r1, [r0] - bl sub_810993C - adds r4, 0x31 - movs r0, 0x1 - strb r0, [r4] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08109E20: .4byte gSaveBlock1 + 0x2D94 -_08109E24: .4byte gSpecialVar_0x8006 -_08109E28: .4byte gSpecialVar_0x8004 -_08109E2C: .4byte gSpecialVar_0x8005 -_08109E30: .4byte gSaveBlock2 - thumb_func_end sub_8109DE0 - - thumb_func_start sub_8109E34 -sub_8109E34: @ 8109E34 - push {lr} - ldr r0, _08109E4C @ =sub_8109B7C - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - bl sub_8109A48 - pop {r0} - bx r0 - .align 2, 0 -_08109E4C: .4byte sub_8109B7C - thumb_func_end sub_8109E34 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/unknown_task.s b/asm/unknown_task.s deleted file mode 100644 index 39f1497ef..000000000 --- a/asm/unknown_task.s +++ /dev/null @@ -1,645 +0,0 @@ - .include "constants/gba_constants.inc" - .include "constants/species_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start remove_some_task -remove_some_task: @ 8089578 - push {r4,lr} - ldr r4, _080895A8 @ =gUnknown_03004DC0 - movs r0, 0 - strb r0, [r4, 0x15] - ldr r1, _080895AC @ =0x040000b0 - ldrh r2, [r1, 0xA] - ldr r0, _080895B0 @ =0x0000c5ff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r2, [r1, 0xA] - ldr r0, _080895B4 @ =0x00007fff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r0, [r1, 0xA] - ldrb r0, [r4, 0x18] - cmp r0, 0xFF - beq _080895A2 - bl DestroyTask - movs r0, 0xFF - strb r0, [r4, 0x18] -_080895A2: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080895A8: .4byte gUnknown_03004DC0 -_080895AC: .4byte 0x040000b0 -_080895B0: .4byte 0x0000c5ff -_080895B4: .4byte 0x00007fff - thumb_func_end remove_some_task - - thumb_func_start dp12_8087EA4 -dp12_8087EA4: @ 80895B8 - push {r4,lr} - sub sp, 0x4 - mov r0, sp - movs r4, 0 - strh r4, [r0] - ldr r1, _080895EC @ =gUnknown_03004DE0 - ldr r2, _080895F0 @ =0x01000780 - bl CpuSet - ldr r0, _080895F4 @ =gUnknown_03004DC0 - movs r1, 0 - str r1, [r0] - str r1, [r0, 0x4] - str r1, [r0, 0x8] - str r1, [r0, 0xC] - strb r4, [r0, 0x14] - strb r4, [r0, 0x15] - strb r4, [r0, 0x16] - strb r4, [r0, 0x17] - movs r1, 0xFF - strb r1, [r0, 0x18] - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080895EC: .4byte gUnknown_03004DE0 -_080895F0: .4byte 0x01000780 -_080895F4: .4byte gUnknown_03004DC0 - thumb_func_end dp12_8087EA4 - - thumb_func_start sub_80895F8 -sub_80895F8: @ 80895F8 - push {lr} - sub sp, 0xC - str r0, [sp] - str r1, [sp, 0x4] - str r2, [sp, 0x8] - ldr r0, _0808961C @ =0xa2600001 - cmp r1, r0 - bne _0808962C - ldr r0, _08089620 @ =gUnknown_03004DC0 - ldr r1, _08089624 @ =gUnknown_03004DE2 - str r1, [r0] - movs r2, 0xF0 - lsls r2, 3 - adds r1, r2 - str r1, [r0, 0x4] - ldr r1, _08089628 @ =sub_80896F4 - b _0808963C - .align 2, 0 -_0808961C: .4byte 0xa2600001 -_08089620: .4byte gUnknown_03004DC0 -_08089624: .4byte gUnknown_03004DE2 -_08089628: .4byte sub_80896F4 -_0808962C: - ldr r0, _0808965C @ =gUnknown_03004DC0 - ldr r1, _08089660 @ =gUnknown_03004DE4 - str r1, [r0] - movs r2, 0xF0 - lsls r2, 3 - adds r1, r2 - str r1, [r0, 0x4] - ldr r1, _08089664 @ =sub_8089714 -_0808963C: - str r1, [r0, 0x10] - adds r1, r0, 0 - ldr r0, [sp, 0x4] - str r0, [r1, 0xC] - ldr r0, [sp] - str r0, [r1, 0x8] - mov r0, sp - ldrb r0, [r0, 0x8] - strb r0, [r1, 0x15] - mov r0, sp - ldrb r0, [r0, 0x9] - strb r0, [r1, 0x16] - strb r0, [r1, 0x17] - add sp, 0xC - pop {r0} - bx r0 - .align 2, 0 -_0808965C: .4byte gUnknown_03004DC0 -_08089660: .4byte gUnknown_03004DE4 -_08089664: .4byte sub_8089714 - thumb_func_end sub_80895F8 - - thumb_func_start sub_8089668 -sub_8089668: @ 8089668 - push {r4,lr} - ldr r4, _08089698 @ =gUnknown_03004DC0 - ldrb r0, [r4, 0x15] - cmp r0, 0 - beq _080896E2 - cmp r0, 0x3 - bne _080896AC - movs r0, 0 - strb r0, [r4, 0x15] - ldr r1, _0808969C @ =0x040000b0 - ldrh r2, [r1, 0xA] - ldr r0, _080896A0 @ =0x0000c5ff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r2, [r1, 0xA] - ldr r0, _080896A4 @ =0x00007fff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r0, [r1, 0xA] - ldr r1, _080896A8 @ =gUnknown_0202FFA4 - movs r0, 0x1 - strb r0, [r1] - b _080896E2 - .align 2, 0 -_08089698: .4byte gUnknown_03004DC0 -_0808969C: .4byte 0x040000b0 -_080896A0: .4byte 0x0000c5ff -_080896A4: .4byte 0x00007fff -_080896A8: .4byte gUnknown_0202FFA4 -_080896AC: - ldr r1, _080896E8 @ =0x040000b0 - ldrh r2, [r1, 0xA] - ldr r0, _080896EC @ =0x0000c5ff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r2, [r1, 0xA] - ldr r0, _080896F0 @ =0x00007fff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r0, [r1, 0xA] - ldrb r0, [r4, 0x14] - lsls r0, 2 - adds r0, r4 - ldr r0, [r0] - str r0, [r1] - ldr r0, [r4, 0x8] - str r0, [r1, 0x4] - ldr r0, [r4, 0xC] - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - ldr r0, [r4, 0x10] - bl _call_via_r0 - ldrb r0, [r4, 0x14] - movs r1, 0x1 - eors r0, r1 - strb r0, [r4, 0x14] -_080896E2: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080896E8: .4byte 0x040000b0 -_080896EC: .4byte 0x0000c5ff -_080896F0: .4byte 0x00007fff - thumb_func_end sub_8089668 - - thumb_func_start sub_80896F4 -sub_80896F4: @ 80896F4 - ldr r0, _0808970C @ =gUnknown_03004DC0 - ldr r2, [r0, 0x8] - ldrb r1, [r0, 0x14] - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 7 - ldr r1, _08089710 @ =gUnknown_03004DE0 - adds r0, r1 - ldrh r0, [r0] - strh r0, [r2] - bx lr - .align 2, 0 -_0808970C: .4byte gUnknown_03004DC0 -_08089710: .4byte gUnknown_03004DE0 - thumb_func_end sub_80896F4 - - thumb_func_start sub_8089714 -sub_8089714: @ 8089714 - ldr r0, _0808972C @ =gUnknown_03004DC0 - ldr r2, [r0, 0x8] - ldrb r1, [r0, 0x14] - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 7 - ldr r1, _08089730 @ =gUnknown_03004DE0 - adds r0, r1 - ldr r0, [r0] - str r0, [r2] - bx lr - .align 2, 0 -_0808972C: .4byte gUnknown_03004DC0 -_08089730: .4byte gUnknown_03004DE0 - thumb_func_end sub_8089714 - - thumb_func_start task00_for_dp12 -task00_for_dp12: @ 8089734 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - lsls r0, 24 - lsrs r0, 24 - mov r12, r0 - movs r6, 0 - ldr r0, _0808975C @ =gUnknown_0202FFA4 - ldrb r0, [r0] - cmp r0, 0 - beq _08089764 - mov r0, r12 - bl DestroyTask - ldr r1, _08089760 @ =gUnknown_03004DC0 - movs r0, 0xFF - strb r0, [r1, 0x18] - b _080898E4 - .align 2, 0 -_0808975C: .4byte gUnknown_0202FFA4 -_08089760: .4byte gUnknown_03004DC0 -_08089764: - ldr r1, _08089790 @ =gTasks - mov r0, r12 - lsls r2, r0, 2 - adds r0, r2, r0 - lsls r0, 3 - adds r3, r0, r1 - movs r4, 0x16 - ldrsh r0, [r3, r4] - mov r10, r1 - mov r9, r2 - cmp r0, 0 - beq _08089810 - movs r1, 0x14 - ldrsh r0, [r3, r1] - cmp r0, 0xE - bhi _08089810 - lsls r0, 2 - ldr r1, _08089794 @ =_08089798 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08089790: .4byte gTasks -_08089794: .4byte _08089798 - .align 2, 0 -_08089798: - .4byte _080897D4 - .4byte _08089810 - .4byte _080897DC - .4byte _08089810 - .4byte _080897E4 - .4byte _08089810 - .4byte _080897EC - .4byte _08089810 - .4byte _080897F4 - .4byte _08089810 - .4byte _080897FC - .4byte _08089810 - .4byte _08089804 - .4byte _08089810 - .4byte _0808980C -_080897D4: - ldr r0, _080897D8 @ =gUnknown_030042A4 - b _0808980E - .align 2, 0 -_080897D8: .4byte gUnknown_030042A4 -_080897DC: - ldr r0, _080897E0 @ =gUnknown_030042A0 - b _0808980E - .align 2, 0 -_080897E0: .4byte gUnknown_030042A0 -_080897E4: - ldr r0, _080897E8 @ =gUnknown_030042C0 - b _0808980E - .align 2, 0 -_080897E8: .4byte gUnknown_030042C0 -_080897EC: - ldr r0, _080897F0 @ =gUnknown_030041B4 - b _0808980E - .align 2, 0 -_080897F0: .4byte gUnknown_030041B4 -_080897F4: - ldr r0, _080897F8 @ =gUnknown_03004288 - b _0808980E - .align 2, 0 -_080897F8: .4byte gUnknown_03004288 -_080897FC: - ldr r0, _08089800 @ =gUnknown_03004280 - b _0808980E - .align 2, 0 -_08089800: .4byte gUnknown_03004280 -_08089804: - ldr r0, _08089808 @ =gUnknown_030041B0 - b _0808980E - .align 2, 0 -_08089808: .4byte gUnknown_030041B0 -_0808980C: - ldr r0, _08089870 @ =gUnknown_030041B8 -_0808980E: - ldrh r6, [r0] -_08089810: - mov r0, r9 - add r0, r12 - lsls r0, 3 - mov r2, r10 - adds r1, r0, r2 - ldrh r2, [r1, 0x10] - movs r3, 0x10 - ldrsh r0, [r1, r3] - cmp r0, 0 - beq _0808987C - subs r0, r2, 0x1 - strh r0, [r1, 0x10] - movs r4, 0xE - ldrsh r0, [r1, r4] - movs r3, 0xA0 - lsls r3, 1 - adds r2, r0, r3 - movs r4, 0x8 - ldrsh r3, [r1, r4] - movs r4, 0xA - ldrsh r0, [r1, r4] - cmp r3, r0 - bge _080898E4 - ldr r5, _08089874 @ =gUnknown_03004DE0 - ldr r0, _08089878 @ =gUnknown_03004DC0 - mov r8, r0 - adds r7, r1, 0 - lsls r0, r2, 1 - adds r4, r0, r5 -_0808984A: - lsls r2, r3, 1 - mov r0, r8 - ldrb r1, [r0, 0x14] - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 7 - adds r2, r0 - adds r2, r5 - ldrh r0, [r4] - adds r0, r6 - strh r0, [r2] - adds r4, 0x2 - adds r3, 0x1 - movs r1, 0xA - ldrsh r0, [r7, r1] - cmp r3, r0 - blt _0808984A - b _080898E4 - .align 2, 0 -_08089870: .4byte gUnknown_030041B8 -_08089874: .4byte gUnknown_03004DE0 -_08089878: .4byte gUnknown_03004DC0 -_0808987C: - ldrh r0, [r1, 0x12] - strh r0, [r1, 0x10] - movs r2, 0xE - ldrsh r0, [r1, r2] - movs r3, 0xA0 - lsls r3, 1 - adds r2, r0, r3 - movs r4, 0x8 - ldrsh r3, [r1, r4] - movs r4, 0xA - ldrsh r0, [r1, r4] - cmp r3, r0 - bge _080898C4 - ldr r5, _080898F4 @ =gUnknown_03004DE0 - adds r7, r1, 0 - lsls r0, r2, 1 - adds r4, r0, r5 - ldr r0, _080898F8 @ =gUnknown_03004DC0 - mov r8, r0 -_080898A2: - lsls r2, r3, 1 - mov r0, r8 - ldrb r1, [r0, 0x14] - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 7 - adds r2, r0 - adds r2, r5 - ldrh r0, [r4] - adds r0, r6 - strh r0, [r2] - adds r4, 0x2 - adds r3, 0x1 - movs r1, 0xA - ldrsh r0, [r7, r1] - cmp r3, r0 - blt _080898A2 -_080898C4: - mov r0, r9 - add r0, r12 - lsls r0, 3 - mov r3, r10 - adds r2, r0, r3 - ldrh r0, [r2, 0xE] - adds r0, 0x1 - strh r0, [r2, 0xE] - lsls r0, 16 - asrs r0, 16 - movs r4, 0xC - ldrsh r1, [r2, r4] - cmp r0, r1 - bne _080898E4 - movs r0, 0 - strh r0, [r2, 0xE] -_080898E4: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080898F4: .4byte gUnknown_03004DE0 -_080898F8: .4byte gUnknown_03004DC0 - thumb_func_end task00_for_dp12 - - thumb_func_start sub_80898FC -sub_80898FC: @ 80898FC - push {r4-r7,lr} - adds r6, r0, 0 - lsls r1, 24 - lsrs r5, r1, 24 - lsls r2, 24 - lsrs r4, r2, 24 - movs r1, 0 - movs r2, 0 - ldr r0, _08089940 @ =gSineTable - mov r12, r0 -_08089910: - lsls r0, r1, 1 - adds r3, r0, r6 - lsls r0, r2, 1 - add r0, r12 - movs r7, 0 - ldrsh r0, [r0, r7] - muls r0, r4 - cmp r0, 0 - bge _08089924 - adds r0, 0xFF -_08089924: - asrs r0, 8 - strh r0, [r3] - adds r0, r2, r5 - lsls r0, 24 - lsrs r2, r0, 24 - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0xFF - bls _08089910 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08089940: .4byte gSineTable - thumb_func_end sub_80898FC - - thumb_func_start sub_8089944 -sub_8089944: @ 8089944 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x20 - adds r5, r0, 0 - str r1, [sp, 0x10] - ldr r0, [sp, 0x40] - mov r8, r0 - ldr r1, [sp, 0x44] - mov r9, r1 - ldr r0, [sp, 0x48] - mov r10, r0 - lsls r5, 24 - lsrs r5, 24 - ldr r1, [sp, 0x10] - lsls r1, 24 - str r1, [sp, 0x14] - lsrs r0, r1, 24 - str r0, [sp, 0xC] - lsls r1, r2, 24 - lsrs r1, 24 - str r1, [sp, 0x18] - lsls r2, r3, 24 - lsrs r2, 24 - str r2, [sp, 0x1C] - mov r1, r8 - lsls r1, 24 - lsrs r1, 24 - mov r8, r1 - mov r3, r9 - lsls r3, 24 - lsrs r3, 24 - mov r9, r3 - mov r0, r10 - lsls r0, 24 - lsrs r0, 24 - mov r10, r0 - bl dp12_8087EA4 - ldr r0, _08089A50 @ =REG_BG0HOFS - add r0, r9 - str r0, [sp] - ldr r0, _08089A54 @ =0xa2600001 - str r0, [sp, 0x4] - mov r1, sp - movs r0, 0x1 - strb r0, [r1, 0x8] - mov r0, sp - movs r1, 0 - strb r1, [r0, 0x9] - ldr r0, [sp] - ldr r1, [sp, 0x4] - ldr r2, [sp, 0x8] - bl sub_80895F8 - ldr r0, _08089A58 @ =task00_for_dp12 - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r7, r0, 24 - ldr r0, _08089A5C @ =gTasks - lsls r4, r7, 2 - adds r4, r7 - lsls r4, 3 - adds r4, r0 - strh r5, [r4, 0x8] - mov r3, sp - ldrh r3, [r3, 0xC] - strh r3, [r4, 0xA] - movs r0, 0x80 - lsls r0, 1 - ldr r1, [sp, 0x18] - bl __divsi3 - strh r0, [r4, 0xC] - movs r0, 0 - strh r0, [r4, 0xE] - mov r1, r8 - strh r1, [r4, 0x10] - strh r1, [r4, 0x12] - mov r3, r9 - strh r3, [r4, 0x14] - mov r0, r10 - strh r0, [r4, 0x16] - ldr r0, _08089A60 @ =gUnknown_03004DC0 - strb r7, [r0, 0x18] - ldr r0, _08089A64 @ =gUnknown_0202FFA4 - movs r1, 0 - strb r1, [r0] - ldr r4, _08089A68 @ =gUnknown_03005060 - ldr r3, [sp, 0xC] - subs r6, r3, r5 - lsls r3, r6, 24 - lsrs r3, 24 - adds r0, r4, 0 - ldr r1, [sp, 0x18] - ldr r2, [sp, 0x1C] - bl sub_80898FC - ldr r0, [sp, 0xC] - cmp r5, r0 - bge _08089A3E - ldr r1, _08089A6C @ =0xfffffd80 - adds r2, r4, r1 - lsls r1, r5, 1 - movs r3, 0xF0 - lsls r3, 3 - adds r0, r1, r3 - adds r3, r0, r2 - adds r1, r2 - adds r2, r4, 0 - adds r5, r6, 0 -_08089A2A: - ldrh r0, [r2] - strh r0, [r1] - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - adds r1, 0x2 - subs r5, 0x1 - cmp r5, 0 - bne _08089A2A -_08089A3E: - adds r0, r7, 0 - add sp, 0x20 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08089A50: .4byte REG_BG0HOFS -_08089A54: .4byte 0xa2600001 -_08089A58: .4byte task00_for_dp12 -_08089A5C: .4byte gTasks -_08089A60: .4byte gUnknown_03004DC0 -_08089A64: .4byte gUnknown_0202FFA4 -_08089A68: .4byte gUnknown_03005060 -_08089A6C: .4byte 0xfffffd80 - thumb_func_end sub_8089944 - - .align 2, 0 @ Don't pad with nop. diff --git a/asmdiff.sh b/asmdiff.sh new file mode 100644 index 000000000..a4b465b6e --- /dev/null +++ b/asmdiff.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +OBJDUMP="$DEVKITARM/bin/arm-none-eabi-objdump -D -bbinary -marmv4t -Mforce-thumb" +OPTIONS="--start-address=$(($1)) --stop-address=$(($1 + $2))" +$OBJDUMP $OPTIONS baserom.gba > baserom.dump +$OBJDUMP $OPTIONS pokeruby.gba > pokeruby.dump +diff baserom.dump pokeruby.dump diff --git a/common_syms/battle/battle_anim.txt b/common_syms/battle/battle_anim.txt new file mode 100644 index 000000000..a93ac9b5d --- /dev/null +++ b/common_syms/battle/battle_anim.txt @@ -0,0 +1,3 @@ +gSoundAnimFramesToWait +gBattleAnimArgs +gAnimSpriteIndexArray diff --git a/common_syms/debug/mori_debug_menu.txt b/common_syms/debug/mori_debug_menu.txt new file mode 100644 index 000000000..77ab5531c --- /dev/null +++ b/common_syms/debug/mori_debug_menu.txt @@ -0,0 +1 @@ +gUnknown_03004DA0 diff --git a/common_syms/debug/sound_check_menu.txt b/common_syms/debug/sound_check_menu.txt new file mode 100644 index 000000000..e9e3032e6 --- /dev/null +++ b/common_syms/debug/sound_check_menu.txt @@ -0,0 +1,2 @@ +gUnknown_03005D30 +gSoundTestCryNum diff --git a/common_syms/link.txt b/common_syms/engine/link.txt similarity index 100% rename from common_syms/link.txt rename to common_syms/engine/link.txt diff --git a/common_syms/load_save.txt b/common_syms/engine/load_save.txt similarity index 100% rename from common_syms/load_save.txt rename to common_syms/engine/load_save.txt diff --git a/common_syms/main.txt b/common_syms/engine/main.txt similarity index 100% rename from common_syms/main.txt rename to common_syms/engine/main.txt diff --git a/common_syms/engine/record_mixing.txt b/common_syms/engine/record_mixing.txt new file mode 100644 index 000000000..a6f4f8df3 --- /dev/null +++ b/common_syms/engine/record_mixing.txt @@ -0,0 +1 @@ +gUnknown_03005D2C diff --git a/common_syms/rng.txt b/common_syms/engine/rng.txt similarity index 100% rename from common_syms/rng.txt rename to common_syms/engine/rng.txt diff --git a/common_syms/rtc.txt b/common_syms/engine/rtc.txt similarity index 100% rename from common_syms/rtc.txt rename to common_syms/engine/rtc.txt diff --git a/common_syms/engine/save.txt b/common_syms/engine/save.txt new file mode 100644 index 000000000..d09a52bcf --- /dev/null +++ b/common_syms/engine/save.txt @@ -0,0 +1,9 @@ +gLastWrittenSector +gLastSaveCounter +gLastKnownGoodSector +gDamagedSaveSectors +gSaveCounter +gFastSaveSection +gUnknown_03005EB4 +gSaveFileStatus +gGameContinueCallback diff --git a/common_syms/engine/sound.txt b/common_syms/engine/sound.txt new file mode 100644 index 000000000..0f6f2fc75 --- /dev/null +++ b/common_syms/engine/sound.txt @@ -0,0 +1 @@ +gDisableMusic diff --git a/common_syms/sprite.txt b/common_syms/engine/sprite.txt similarity index 100% rename from common_syms/sprite.txt rename to common_syms/engine/sprite.txt diff --git a/common_syms/string_util.txt b/common_syms/engine/string_util.txt similarity index 100% rename from common_syms/string_util.txt rename to common_syms/engine/string_util.txt diff --git a/common_syms/task.txt b/common_syms/engine/task.txt similarity index 100% rename from common_syms/task.txt rename to common_syms/engine/task.txt diff --git a/common_syms/field/field_camera.txt b/common_syms/field/field_camera.txt new file mode 100644 index 000000000..7aad967f8 --- /dev/null +++ b/common_syms/field/field_camera.txt @@ -0,0 +1,3 @@ +gUnknown_03004880 +gUnknown_03004898 +gUnknown_0300489C diff --git a/common_syms/field/field_control_avatar.txt b/common_syms/field/field_control_avatar.txt new file mode 100644 index 000000000..040a9e6c1 --- /dev/null +++ b/common_syms/field/field_control_avatar.txt @@ -0,0 +1 @@ +gSelectedMapObject diff --git a/common_syms/field/field_map_obj.txt b/common_syms/field/field_map_obj.txt new file mode 100644 index 000000000..32d8b1915 --- /dev/null +++ b/common_syms/field/field_map_obj.txt @@ -0,0 +1 @@ +gMapObjects diff --git a/common_syms/field/fieldmap.txt b/common_syms/field/fieldmap.txt new file mode 100644 index 000000000..7819b3b40 --- /dev/null +++ b/common_syms/field/fieldmap.txt @@ -0,0 +1 @@ +gUnknown_03004870 diff --git a/common_syms/field/overworld.txt b/common_syms/field/overworld.txt new file mode 100644 index 000000000..ecdb190b2 --- /dev/null +++ b/common_syms/field/overworld.txt @@ -0,0 +1,4 @@ +word_3004858 +gFieldCallback +gUnknown_03004860 +gFieldLinkPlayerCount diff --git a/common_syms/field/start_menu.txt b/common_syms/field/start_menu.txt new file mode 100644 index 000000000..bc0c247d1 --- /dev/null +++ b/common_syms/field/start_menu.txt @@ -0,0 +1 @@ +gCallback_03004AE8 diff --git a/common_syms/field/tv.txt b/common_syms/field/tv.txt new file mode 100644 index 000000000..829139f8f --- /dev/null +++ b/common_syms/field/tv.txt @@ -0,0 +1 @@ +gUnknown_03005D38 diff --git a/common_syms/agb_flash.txt b/common_syms/libs/agb_flash.txt similarity index 100% rename from common_syms/agb_flash.txt rename to common_syms/libs/agb_flash.txt diff --git a/common_syms/m4a_2.txt b/common_syms/libs/m4a_2.txt similarity index 100% rename from common_syms/m4a_2.txt rename to common_syms/libs/m4a_2.txt diff --git a/common_syms/pokemon/pokeblock_feed.txt b/common_syms/pokemon/pokeblock_feed.txt new file mode 100644 index 000000000..827e6526e --- /dev/null +++ b/common_syms/pokemon/pokeblock_feed.txt @@ -0,0 +1,12 @@ +gPokeblockFeedPokeSprite +gPokeblockFeedMonSpecies +gPokeblockMonNotFlipped +gPokeblockFeedMonSpriteID +gPokeblockFeedMonNature +gUnknown_03005F34 +gPokeblockFeedUnused0 +gUnknown_03005F3C +gUnknown_03005F40 +gPokeblockFeedPokeSpriteCopy +gUnknown_03005F94 +gUnknown_03005FA0 diff --git a/common_syms/pokemon/pokedex.txt b/common_syms/pokemon/pokedex.txt new file mode 100644 index 000000000..18b14f3ed --- /dev/null +++ b/common_syms/pokemon/pokedex.txt @@ -0,0 +1,2 @@ +gUnknown_03005CE8 +gUnknown_03005CEC diff --git a/common_syms/pokemon/pokemon_1.txt b/common_syms/pokemon/pokemon_1.txt new file mode 100644 index 000000000..c588d53a7 --- /dev/null +++ b/common_syms/pokemon/pokemon_1.txt @@ -0,0 +1,4 @@ +gPlayerPartyCount +gPlayerParty +gEnemyPartyCount +gEnemyParty diff --git a/common_syms/pokemon/pokemon_menu.txt b/common_syms/pokemon/pokemon_menu.txt new file mode 100644 index 000000000..98a1bf53b --- /dev/null +++ b/common_syms/pokemon/pokemon_menu.txt @@ -0,0 +1,2 @@ +gLastFieldPokeMenuOpened +gUnknown_03005CE4 diff --git a/common_syms/rom3.txt b/common_syms/rom3.txt new file mode 100644 index 000000000..06a965ff6 --- /dev/null +++ b/common_syms/rom3.txt @@ -0,0 +1 @@ +gBattleBuffersTransferData diff --git a/common_syms/scene/berry_blender.txt b/common_syms/scene/berry_blender.txt new file mode 100644 index 000000000..524a31411 --- /dev/null +++ b/common_syms/scene/berry_blender.txt @@ -0,0 +1,4 @@ +gUnknown_03004830 +gInGameOpponentsNo +gUnknown_03004840 +gBerryBlenderData diff --git a/common_syms/scene/contest_painting.txt b/common_syms/scene/contest_painting.txt new file mode 100644 index 000000000..2e8490348 --- /dev/null +++ b/common_syms/scene/contest_painting.txt @@ -0,0 +1,5 @@ +gUnknown_03005E10 +gUnknown_03005E20 +gUnknown_03005E40 +gUnknown_03005E8C +gUnknown_03005E90 diff --git a/common_syms/scene/cute_sketch.txt b/common_syms/scene/cute_sketch.txt new file mode 100644 index 000000000..e69de29bb diff --git a/common_syms/scene/egg_hatch.txt b/common_syms/scene/egg_hatch.txt new file mode 100644 index 000000000..891ccc104 --- /dev/null +++ b/common_syms/scene/egg_hatch.txt @@ -0,0 +1 @@ +gEggHatchData diff --git a/common_syms/scene/evolution_scene.txt b/common_syms/scene/evolution_scene.txt new file mode 100644 index 000000000..137cd3e05 --- /dev/null +++ b/common_syms/scene/evolution_scene.txt @@ -0,0 +1 @@ +gCB2_AfterEvolution diff --git a/common_syms/scene/intro.txt b/common_syms/scene/intro.txt new file mode 100644 index 000000000..d069b1014 --- /dev/null +++ b/common_syms/scene/intro.txt @@ -0,0 +1,2 @@ +gIntroFrameCounter +gMultibootProgramStruct diff --git a/constants/misc_constants.inc b/constants/misc_constants.inc index 438fed6b6..5f4330928 100644 --- a/constants/misc_constants.inc +++ b/constants/misc_constants.inc @@ -32,8 +32,14 @@ .equiv MALE, 0 .equiv FEMALE, 1 + .ifdef ENGLISH .equiv GAME_LANGUAGE, 2 - + .else + .ifdef GERMAN + .equiv GAME_LANGUAGE, 5 + .endif + .endif + .equiv ENEMY_TYPE1, 0 .equiv ENEMY_TYPE2, 1 .equiv PLAYER_TYPE1, 2 diff --git a/constants/version.inc b/constants/version.inc index 33d2804fc..c93e439f4 100644 --- a/constants/version.inc +++ b/constants/version.inc @@ -1,3 +1,9 @@ + .ifdef SAPPHIRE + .equiv GAME_VERSION, 1 + .else + .equiv GAME_VERSION, 2 + .endif + .ifdef SAPPHIRE .set BGM_EVIL_TEAM, BGM_AQA_0 .set BGM_GOOD_TEAM, BGM_MGM0 diff --git a/data-de/event_scripts.s b/data-de/event_scripts.s index c06a4073a..677aa9f21 100644 --- a/data-de/event_scripts.s +++ b/data-de/event_scripts.s @@ -386,27 +386,27 @@ gStdScripts_End:: gUnknown_0815F36C:: @ 815F36C lockall - playsfx 2 + playse 2 message UnknownString_81A3A72 - doanimation 61 + dofieldeffect 61 waitstate - waittext + waitmessage waitbutton - playsfx 5 - jump EventScript_15F384 + playse 5 + goto EventScript_15F384 end EventScript_15F384: message UnknownString_81A3A87 - waittext + waitmessage checkflag 268 - jumpeq EventScript_15F3A0 - jump EventScript_15F3E2 + goto_if_eq EventScript_15F3A0 + goto EventScript_15F3E2 end gUnknown_0815F399:: @ 815F399 lockall - jump EventScript_15F384 + goto EventScript_15F384 end EventScript_15F3A0: @@ -431,35 +431,35 @@ EventScript_15F3E2: EventScript_15F419: msgbox UnknownString_81A38FB, 5 compare RESULT, 0 - jumpeq EventScript_15F384 - closebutton - special 10 + goto_if_eq EventScript_15F384 + closemessage + special SecretBasePC_PackUp releaseall end EventScript_15F432: - special 14 + special SecretBasePC_Decoration end EventScript_15F436: - special 15 + special SecretBasePC_Registry end gUnknown_0815F43A:: @ 815F43A lockall message UnknownString_81A3A72 - playsfx 2 - doanimation 61 + playse 2 + dofieldeffect 61 waitstate - waittext + waitmessage waitbutton - playsfx 5 - jump EventScript_15F452 + playse 5 + goto EventScript_15F452 end EventScript_15F452: message UnknownString_81A3A87 - waittext + waitmessage multichoice 0, 0, 7, 0 switch RESULT case 0, EventScript_15F4A1 @@ -471,69 +471,69 @@ EventScript_15F452: gUnknown_0815F49A:: @ 815F49A lockall - jump EventScript_15F452 + goto EventScript_15F452 end EventScript_15F4A1: - special 12 + special sub_80BC56C compare RESULT, 1 - jumpeq EventScript_15F4E0 + goto_if_eq EventScript_15F4E0 compare RESULT, 2 - jumpeq EventScript_15F503 - special 303 + goto_if_eq EventScript_15F503 + special sub_80BC224 msgbox UnknownString_81A3958, 5 compare RESULT, 0 - jumpeq EventScript_15F452 + goto_if_eq EventScript_15F452 msgbox UnknownString_81A3A22, 3 - special 13 - special 26 + special sub_80BC5BC + special sub_80C683C releaseall end EventScript_15F4E0: msgbox UnknownString_81A3982, 5 compare RESULT, 0 - jumpeq EventScript_15F452 + goto_if_eq EventScript_15F452 msgbox UnknownString_81A3A3A, 3 - special 13 - special 26 + special sub_80BC5BC + special sub_80C683C releaseall end EventScript_15F503: msgbox UnknownString_81A39C0, 3 - special 26 - closebutton + special sub_80C683C + closemessage releaseall end EventScript_15F511: message UnknownString_81A3AA2 - waittext - jump EventScript_15F452 + waitmessage + goto EventScript_15F452 end EventScript_15F51D: - special 26 - closebutton + special sub_80C683C + closemessage releaseall end gUnknown_0815F523:: @ 815F523 - doanimation 52 + dofieldeffect 52 waitstate end gUnknown_0815F528:: @ 815F528 - special 307 + special GetShieldToyTVDecorationInfo compare RESULT, 0 - jumpeq EventScript_15F558 + goto_if_eq EventScript_15F558 compare RESULT, 1 - jumpeq EventScript_15F561 + goto_if_eq EventScript_15F561 compare RESULT, 2 - jumpeq EventScript_15F56A + goto_if_eq EventScript_15F56A compare RESULT, 3 - jumpeq EventScript_15F573 + goto_if_eq EventScript_15F573 end EventScript_15F558: @@ -891,7 +891,7 @@ Std_2: lock faceplayer message 0x0 - waittext + waitmessage waitbutton release return @@ -899,137 +899,137 @@ Std_2: Std_3: lockall message 0x0 - waittext + waitmessage waitbutton releaseall return Std_4: message 0x0 - waittext + waitmessage waitbutton return Std_5: message 0x0 - waittext + waitmessage yesnobox 20, 8 return @ 819F805 return -BattleTower_Lobby_EventScript_19F806:: @ 819F806 -FallarborTown_ContestLobby_EventScript_19F806:: @ 819F806 -LilycoveCity_ContestLobby_EventScript_19F806:: @ 819F806 -MossdeepCity_GameCorner_1F_EventScript_19F806:: @ 819F806 -OldaleTown_PokemonCenter_2F_EventScript_19F806:: @ 819F806 -SecretBase_RedCave1_EventScript_19F806:: @ 819F806 - special 93 +S_DoSaveDialog:: @ 819F806 +S_DoSaveDialog:: @ 819F806 +S_DoSaveDialog:: @ 819F806 +S_DoSaveDialog:: @ 819F806 +S_DoSaveDialog:: @ 819F806 +S_DoSaveDialog:: @ 819F806 + special ScrSpecial_DoSaveDialog waitstate return gUnknown_0819F80B:: @ 819F80B lock - special 56 - special 55 + special PlayTrainerEncounterMusic + special ScrSpecial_EndTrainerApproach waitstate - jump EventScript_19F8F2 + goto EventScript_19F8F2 gUnknown_0819F818:: @ 819F818 lock faceplayer - move LAST_TALKED, Movement_19F8F0 - waitmove 0 - specialval RESULT, 54 + applymovement LAST_TALKED, Movement_19F8F0 + waitmovement 0 + specialvar RESULT, ScrSpecial_HasTrainerBeenFought compare RESULT, 0 - jumpif 5, EventScript_19F83F - special 56 - special 314 - jump EventScript_19F8F2 + goto_if 5, EventScript_19F83F + special PlayTrainerEncounterMusic + special sub_8082524 + goto EventScript_19F8F2 EventScript_19F83F: - endtrainerbattle + ontrainerbattleend gUnknown_0819F840:: @ 819F840 lock faceplayer call EventScript_19F8E5 - specialval RESULT, 54 + specialvar RESULT, ScrSpecial_HasTrainerBeenFought compare RESULT, 0 - jumpif 5, EventScript_19F877 - special 61 + goto_if 5, EventScript_19F877 + special CheckForAlivePartyMons compare RESULT, 0 - jumpif 5, EventScript_19F870 - special 56 - special 314 - jump EventScript_19F8F2 + goto_if 5, EventScript_19F870 + special PlayTrainerEncounterMusic + special sub_8082524 + goto EventScript_19F8F2 EventScript_19F870: - special 53 - waittext + special ScrSpecial_ShowTrainerNonBattlingSpeech + waitmessage waitbutton release end EventScript_19F877: - endtrainerbattle + ontrainerbattleend gUnknown_0819F878:: @ 819F878 - move LAST_TALKED, Movement_19F8F0 - waitmove 0 - special 56 - reptrainerbattle - endtrainerbattle + applymovement LAST_TALKED, Movement_19F8F0 + waitmovement 0 + special PlayTrainerEncounterMusic + battlebegin + ontrainerbattleend gUnknown_0819F887:: @ 819F887 call EventScript_19F8E5 - specialval RESULT, 58 + specialvar RESULT, ScrSpecial_GetTrainerEyeRematchFlag compare RESULT, 0 - jumpeq EventScript_19F8AD - special 56 - special 314 - special 52 - waittext + goto_if_eq EventScript_19F8AD + special PlayTrainerEncounterMusic + special sub_8082524 + special ScrSpecial_ShowTrainerIntroSpeech + waitmessage waitbutton - special 59 + special ScrSpecial_StartTrainerEyeRematch waitstate releaseall end EventScript_19F8AD: - endtrainerbattle + ontrainerbattleend gUnknown_0819F8AE:: @ 819F8AE - specialval RESULT, 58 + specialvar RESULT, ScrSpecial_GetTrainerEyeRematchFlag compare RESULT, 0 - jumpeq EventScript_19F8DD - special 61 + goto_if_eq EventScript_19F8DD + special CheckForAlivePartyMons compare RESULT, 0 - jumpif 5, EventScript_19F8DE - special 56 - special 314 - special 52 - waittext + goto_if 5, EventScript_19F8DE + special PlayTrainerEncounterMusic + special sub_8082524 + special ScrSpecial_ShowTrainerIntroSpeech + waitmessage waitbutton - special 59 + special ScrSpecial_StartTrainerEyeRematch waitstate releaseall end EventScript_19F8DD: - endtrainerbattle + ontrainerbattleend EventScript_19F8DE: - special 53 - waittext + special ScrSpecial_ShowTrainerNonBattlingSpeech + waitmessage waitbutton release end EventScript_19F8E5: - move LAST_TALKED, Movement_19F8F0 - waitmove 0 + applymovement LAST_TALKED, Movement_19F8F0 + waitmovement 0 return Movement_19F8F0:: @@ -1037,117 +1037,117 @@ Movement_19F8F0:: step_end EventScript_19F8F2: - special 52 - waittext + special ScrSpecial_ShowTrainerIntroSpeech + waitmessage waitbutton - reptrainerbattle - specialval RESULT, 51 + battlebegin + specialvar RESULT, ScrSpecial_GetTrainerBattleMode compare RESULT, 0 - jumpeq EventScript_19F934 + goto_if_eq EventScript_19F934 compare RESULT, 2 - jumpeq EventScript_19F936 + goto_if_eq EventScript_19F936 compare RESULT, 1 - jumpeq EventScript_19F936 + goto_if_eq EventScript_19F936 compare RESULT, 6 - jumpeq EventScript_19F936 + goto_if_eq EventScript_19F936 compare RESULT, 8 - jumpeq EventScript_19F936 + goto_if_eq EventScript_19F936 EventScript_19F934: releaseall end EventScript_19F936: - endtrainerbattle2 + ontrainerbattleendgoto Std_6:: message 0x0 - waittext + waitmessage waitbutton release return Event_ResetBerryTrees: @ 19F940 - event_8a 2, 7, 5 - event_8a 1, 3, 5 - event_8a 11, 7, 5 - event_8a 13, 3, 5 - event_8a 4, 7, 5 - event_8a 76, 1, 5 - event_8a 8, 1, 5 - event_8a 10, 6, 5 - event_8a 25, 20, 5 - event_8a 26, 2, 5 - event_8a 66, 2, 5 - event_8a 67, 20, 5 - event_8a 69, 22, 5 - event_8a 70, 22, 5 - event_8a 71, 22, 5 - event_8a 55, 17, 5 - event_8a 56, 17, 5 - event_8a 5, 1, 5 - event_8a 6, 6, 5 - event_8a 7, 1, 5 - event_8a 16, 18, 5 - event_8a 17, 18, 5 - event_8a 18, 18, 5 - event_8a 29, 19, 5 - event_8a 28, 19, 5 - event_8a 27, 19, 5 - event_8a 24, 4, 5 - event_8a 23, 3, 5 - event_8a 22, 3, 5 - event_8a 21, 4, 5 - event_8a 19, 16, 5 - event_8a 20, 16, 5 - event_8a 80, 7, 5 - event_8a 81, 7, 5 - event_8a 77, 8, 5 - event_8a 78, 8, 5 - event_8a 68, 8, 5 - event_8a 31, 10, 5 - event_8a 33, 10, 5 - event_8a 34, 21, 5 - event_8a 35, 21, 5 - event_8a 36, 21, 5 - event_8a 83, 24, 5 - event_8a 84, 24, 5 - event_8a 85, 10, 5 - event_8a 86, 6, 5 - event_8a 37, 5, 5 - event_8a 38, 5, 5 - event_8a 39, 5, 5 - event_8a 40, 3, 5 - event_8a 41, 3, 5 - event_8a 42, 3, 5 - event_8a 46, 19, 5 - event_8a 45, 20, 5 - event_8a 44, 18, 5 - event_8a 43, 16, 5 - event_8a 47, 8, 5 - event_8a 48, 5, 5 - event_8a 49, 4, 5 - event_8a 50, 2, 5 - event_8a 52, 18, 5 - event_8a 53, 18, 5 - event_8a 62, 6, 5 - event_8a 64, 6, 5 - event_8a 58, 21, 5 - event_8a 59, 21, 5 - event_8a 60, 25, 5 - event_8a 61, 25, 5 - event_8a 79, 23, 5 - event_8a 14, 23, 5 - event_8a 15, 21, 5 - event_8a 30, 21, 5 - event_8a 65, 25, 5 - event_8a 72, 25, 5 - event_8a 73, 23, 5 - event_8a 74, 23, 5 - event_8a 87, 3, 5 - event_8a 88, 10, 5 - event_8a 89, 4, 5 - event_8a 82, 36, 5 + plantberrytree 2, 7, 5 + plantberrytree 1, 3, 5 + plantberrytree 11, 7, 5 + plantberrytree 13, 3, 5 + plantberrytree 4, 7, 5 + plantberrytree 76, 1, 5 + plantberrytree 8, 1, 5 + plantberrytree 10, 6, 5 + plantberrytree 25, 20, 5 + plantberrytree 26, 2, 5 + plantberrytree 66, 2, 5 + plantberrytree 67, 20, 5 + plantberrytree 69, 22, 5 + plantberrytree 70, 22, 5 + plantberrytree 71, 22, 5 + plantberrytree 55, 17, 5 + plantberrytree 56, 17, 5 + plantberrytree 5, 1, 5 + plantberrytree 6, 6, 5 + plantberrytree 7, 1, 5 + plantberrytree 16, 18, 5 + plantberrytree 17, 18, 5 + plantberrytree 18, 18, 5 + plantberrytree 29, 19, 5 + plantberrytree 28, 19, 5 + plantberrytree 27, 19, 5 + plantberrytree 24, 4, 5 + plantberrytree 23, 3, 5 + plantberrytree 22, 3, 5 + plantberrytree 21, 4, 5 + plantberrytree 19, 16, 5 + plantberrytree 20, 16, 5 + plantberrytree 80, 7, 5 + plantberrytree 81, 7, 5 + plantberrytree 77, 8, 5 + plantberrytree 78, 8, 5 + plantberrytree 68, 8, 5 + plantberrytree 31, 10, 5 + plantberrytree 33, 10, 5 + plantberrytree 34, 21, 5 + plantberrytree 35, 21, 5 + plantberrytree 36, 21, 5 + plantberrytree 83, 24, 5 + plantberrytree 84, 24, 5 + plantberrytree 85, 10, 5 + plantberrytree 86, 6, 5 + plantberrytree 37, 5, 5 + plantberrytree 38, 5, 5 + plantberrytree 39, 5, 5 + plantberrytree 40, 3, 5 + plantberrytree 41, 3, 5 + plantberrytree 42, 3, 5 + plantberrytree 46, 19, 5 + plantberrytree 45, 20, 5 + plantberrytree 44, 18, 5 + plantberrytree 43, 16, 5 + plantberrytree 47, 8, 5 + plantberrytree 48, 5, 5 + plantberrytree 49, 4, 5 + plantberrytree 50, 2, 5 + plantberrytree 52, 18, 5 + plantberrytree 53, 18, 5 + plantberrytree 62, 6, 5 + plantberrytree 64, 6, 5 + plantberrytree 58, 21, 5 + plantberrytree 59, 21, 5 + plantberrytree 60, 25, 5 + plantberrytree 61, 25, 5 + plantberrytree 79, 23, 5 + plantberrytree 14, 23, 5 + plantberrytree 15, 21, 5 + plantberrytree 30, 21, 5 + plantberrytree 65, 25, 5 + plantberrytree 72, 25, 5 + plantberrytree 73, 23, 5 + plantberrytree 74, 23, 5 + plantberrytree 87, 3, 5 + plantberrytree 88, 10, 5 + plantberrytree 89, 4, 5 + plantberrytree 82, 36, 5 return gUnknown_0819FA81:: @ 819FA81 @@ -1296,15 +1296,15 @@ EverGrandeCity_HallOfFame_EventScript_19FC13:: @ 819FC13 clearflag 751 clearflag 860 clearflag 861 - special 169 + special sub_810FAA0 checkflag 291 - callif 0, EverGrandeCity_HallOfFame_EventScript_19FC62 + call_if 0, EverGrandeCity_HallOfFame_EventScript_19FC62 checkflag 255 - callif 0, EverGrandeCity_HallOfFame_EventScript_19FC70 + call_if 0, EverGrandeCity_HallOfFame_EventScript_19FC70 checkflag 298 - callif 0, EverGrandeCity_HallOfFame_EventScript_19FC5A + call_if 0, EverGrandeCity_HallOfFame_EventScript_19FC5A checkflag 123 - callif 0, EverGrandeCity_HallOfFame_EventScript_19FC5E + call_if 0, EverGrandeCity_HallOfFame_EventScript_19FC5E return EverGrandeCity_HallOfFame_EventScript_19FC5A:: @ 819FC5A @@ -1325,28 +1325,28 @@ EverGrandeCity_HallOfFame_EventScript_19FC70:: @ 819FC70 setflag 2141 return -EventScript_LeagueWhiteOut:: @ 819FC74 +S_WhiteOut:: @ 819FC74 call EverGrandeCity_HallOfFame_EventScript_19FD09 call EventScript_19FC84 - jump gUnknown_0819FC9F + goto gUnknown_0819FC9F end EventScript_19FC84: checkflag 221 - jumpeq Route101_EventScript_1A14DC + goto_if_eq Route101_EventScript_1A14DC checkflag 1213 - jumpif 0, Route101_EventScript_1A14DC + goto_if 0, Route101_EventScript_1A14DC clearflag 929 setvar 0x4053, 2 return gUnknown_0819FC9F:: @ 819FC9F compare 0x4096, 1 - jumpeq EventScript_19FCC1 + goto_if_eq EventScript_19FCC1 compare 0x4096, 2 - jumpeq EventScript_19FCD7 + goto_if_eq EventScript_19FCD7 compare 0x4096, 3 - jumpeq EventScript_19FCF0 + goto_if_eq EventScript_19FCF0 end EventScript_19FCC1: @@ -1399,15 +1399,15 @@ RustboroCity_PokemonCenter_1F_EventScript_19FD1B:: @ 819FD1B SlateportCity_PokemonCenter_1F_EventScript_19FD1B:: @ 819FD1B VerdanturfTown_PokemonCenter_1F_EventScript_19FD1B:: @ 819FD1B checkflag 188 - jumpif 0, OldaleTown_PokemonCenter_1F_EventScript_1A14DC + goto_if 0, OldaleTown_PokemonCenter_1F_EventScript_1A14DC checkflag 1217 - jumpeq OldaleTown_PokemonCenter_1F_EventScript_1A14DC + goto_if_eq OldaleTown_PokemonCenter_1F_EventScript_1A14DC checkflag 742 - jumpif 0, OldaleTown_PokemonCenter_1F_EventScript_19FD49 + goto_if 0, OldaleTown_PokemonCenter_1F_EventScript_19FD49 checkflag 740 - jumpif 0, OldaleTown_PokemonCenter_1F_EventScript_19FD4F + goto_if 0, OldaleTown_PokemonCenter_1F_EventScript_19FD4F checkflag 741 - jumpif 0, OldaleTown_PokemonCenter_1F_EventScript_19FD55 + goto_if 0, OldaleTown_PokemonCenter_1F_EventScript_19FD55 return OldaleTown_PokemonCenter_1F_EventScript_19FD49:: @ 819FD49 @@ -1438,54 +1438,54 @@ SootopolisCity_PokemonCenter_1F_EventScript_19FD5B:: @ 819FD5B VerdanturfTown_PokemonCenter_1F_EventScript_19FD5B:: @ 819FD5B lock faceplayer - msgbox OldaleTown_PokemonCenter_1F_Text_1A0A7D, 5 + msgbox gText_NurseJoy_Welcome, 5 compare RESULT, 1 - jumpeq OldaleTown_PokemonCenter_1F_EventScript_19FD7C + goto_if_eq OldaleTown_PokemonCenter_1F_EventScript_19FD7C compare RESULT, 0 - jumpeq OldaleTown_PokemonCenter_1F_EventScript_19FDC7 + goto_if_eq OldaleTown_PokemonCenter_1F_EventScript_19FDC7 end OldaleTown_PokemonCenter_1F_EventScript_19FD7C:: @ 819FD7C - inccounter GAME_STAT_USED_POKECENTER - message OldaleTown_PokemonCenter_1F_Text_1A1245 - waittext - move 0x800b, OldaleTown_PokemonCenter_1F_Movement_1A083F - waitmove 0 - doanimation 25 - checkanimation 25 - move 0x800b, OldaleTown_PokemonCenter_1F_Movement_1A0845 - waitmove 0 - special 0 + incrementgamestat GAME_STAT_USED_POKECENTER + message gText_NurseJoy_OkayIllTakeYourPokemon + waitmessage + applymovement 0x800b, OldaleTown_PokemonCenter_1F_Movement_1A083F + waitmovement 0 + dofieldeffect 25 + waitfieldeffect 25 + applymovement 0x800b, OldaleTown_PokemonCenter_1F_Movement_1A0845 + waitmovement 0 + special ScrSpecial_HealPlayerParty checkflag 273 - jumpif 0, OldaleTown_PokemonCenter_1F_EventScript_19FDCE - jump OldaleTown_PokemonCenter_1F_EventScript_19FDB0 + goto_if 0, OldaleTown_PokemonCenter_1F_EventScript_19FDCE + goto OldaleTown_PokemonCenter_1F_EventScript_19FDB0 end OldaleTown_PokemonCenter_1F_EventScript_19FDB0:: @ 819FDB0 - message OldaleTown_PokemonCenter_1F_Text_1A0B14 - waittext - move 0x800b, OldaleTown_PokemonCenter_1F_Movement_19FDF4 - waitmove 0 - message OldaleTown_PokemonCenter_1F_Text_1A0AFA - waittext + message gText_NurseJoy_ThankYouForWaiting + waitmessage + applymovement 0x800b, OldaleTown_PokemonCenter_1F_Movement_19FDF4 + waitmovement 0 + message gText_NurseJoy_WeHopeToSeeYouAgain + waitmessage return OldaleTown_PokemonCenter_1F_EventScript_19FDC7:: @ 819FDC7 - message OldaleTown_PokemonCenter_1F_Text_1A0AFA - waittext + message gText_NurseJoy_WeHopeToSeeYouAgain + waitmessage return OldaleTown_PokemonCenter_1F_EventScript_19FDCE:: @ 819FDCE - specialval RESULT, 308 + specialvar RESULT, IsPokerusInParty compare RESULT, 1 - jumpeq OldaleTown_PokemonCenter_1F_EventScript_19FDEA + goto_if_eq OldaleTown_PokemonCenter_1F_EventScript_19FDEA compare RESULT, 0 - jumpeq OldaleTown_PokemonCenter_1F_EventScript_19FDB0 + goto_if_eq OldaleTown_PokemonCenter_1F_EventScript_19FDB0 end OldaleTown_PokemonCenter_1F_EventScript_19FDEA:: @ 819FDEA - message OldaleTown_PokemonCenter_1F_Text_1A1275 - waittext + message gText_NurseJoy_Pokerus + waitmessage setflag 273 return @@ -1501,13 +1501,13 @@ Std_ObtainItem: @ 819FDF7 return Std_ObtainItem_: @ 819FE07 - bufferitem 1, 0x8000 + getitemname 1, 0x8000 checkitemtype 0x8000 call GetItem_HandlePocket compare 0x8007, 0x1 - callif 1, Std_ObtainItem_Success + call_if 1, Std_ObtainItem_Success compare 0x8007, 0x0 - callif 1, Std_ObtainItem_Fail + call_if 1, Std_ObtainItem_Fail return GetItem_HandlePocket: @@ -1520,39 +1520,39 @@ GetItem_HandlePocket: end GetItem_HandlePocket_Items: - bufferstd 2, 0xE + getstdstring 2, 0xE compare 0x8007, 1 - callif 1, PlayGetItemFanfare + call_if 1, PlayGetItemFanfare return GetItem_HandlePocket_KeyItems: - bufferstd 2, 0xF + getstdstring 2, 0xF compare 0x8007, 1 - callif 1, PlayGetItemFanfare + call_if 1, PlayGetItemFanfare return GetItem_HandlePocket_PokeBalls: - bufferstd 2, 0x10 + getstdstring 2, 0x10 compare 0x8007, 1 - callif 1, PlayGetItemFanfare + call_if 1, PlayGetItemFanfare return GetItem_HandlePocket_TMsHMs: - bufferstd 2, 0x11 + getstdstring 2, 0x11 compare 0x8007, 1 - callif 1, PlayGetTMHMFanfare + call_if 1, PlayGetTMHMFanfare return GetItem_HandlePocket_Berries: - bufferstd 2, 0x12 + getstdstring 2, 0x12 compare 0x8007, 1 - callif 1, PlayGetItemFanfare + call_if 1, PlayGetItemFanfare return Std_ObtainItem_Success: @ 819FEB7 message Message_ObtainedItem waitfanfare - waittext + waitmessage msgbox Message_PutAwayItem setvar RESULT, 1 return @@ -1562,11 +1562,11 @@ Std_ObtainItem_Fail: @ 819FECC return PlayGetItemFanfare: - fanfare 0x172 + playfanfare 0x172 return PlayGetTMHMFanfare: - fanfare 0x174 + playfanfare 0x174 return Std_ObtainDecoration: @ 819FEDA @@ -1576,18 +1576,18 @@ Std_ObtainDecoration: @ 819FEDA return Std_ObtainDecoration_: @ 819FEE8 - bufferdecor 1, 0x8000 + getdecorname 1, 0x8000 compare 0x8007, 1 - callif 1, Std_ObtainDecoration_Success + call_if 1, Std_ObtainDecoration_Success compare 0x8007, 0 - callif 1, Std_ObtainDecoration_Fail + call_if 1, Std_ObtainDecoration_Fail return Std_ObtainDecoration_Success: @ 819FF03 - fanfare 0x172 + playfanfare 0x172 message Message_ObtainedDecoration waitfanfare - waittext + waitmessage msgbox Message_TransferredToPC setvar RESULT, 1 return @@ -1599,24 +1599,24 @@ Std_ObtainDecoration_Fail: @ 819FF1B Std_FindItem: @ 819FF21 lock faceplayer - checksound + waitse additem 0x8000, 0x8001 copyvar 0x8007, RESULT - bufferitem 1, 0x8000 + getitemname 1, 0x8000 checkitemtype 0x8000 call GetItem_HandlePocket compare 0x8007, 1 - callif 1, Std_FindItem_Success + call_if 1, Std_FindItem_Success compare 0x8007, 0 - callif 1, Std_FindItem_Fail + call_if 1, Std_FindItem_Fail release return Std_FindItem_Success: @ 819FF52 - disappear LAST_TALKED + removeobject LAST_TALKED message Message_FoundOneItem waitfanfare - waittext + waitmessage msgbox Message_PutAwayItem return @@ -1628,24 +1628,24 @@ Std_FindItem_Fail: @ 819FF65 HiddenItemScript:: @ 819FF7B lockall - checksound + waitse additem 0x8005, 1 copyvar 0x8007, RESULT - bufferitem 0x1, 0x8005 + getitemname 0x1, 0x8005 checkitemtype 0x8005 call GetItem_HandlePocket compare 0x8007, 1 - jumpeq HiddenItemScript_Success + goto_if_eq HiddenItemScript_Success compare 0x8007, 0 - jumpeq HiddenItemScript_Fail + goto_if_eq HiddenItemScript_Fail end HiddenItemScript_Success: message Message_FoundOneItem waitfanfare - waittext + waitmessage msgbox Message_PutAwayItem - special 0x96 + special SetFlagInVar releaseall end @@ -1661,18 +1661,18 @@ UnusedMixRecordsScript: @ 819FFD5 faceplayer msgbox UnusedMixRecordsPromptText, 5 compare RESULT, 1 - jumpeq UnusedMixRecordsScript_Yes + goto_if_eq UnusedMixRecordsScript_Yes compare RESULT, 0 - jumpeq UnusedMixRecordsScript_Done - jump UnusedMixRecordsScript_Done + goto_if_eq UnusedMixRecordsScript_Done + goto UnusedMixRecordsScript_Done UnusedMixRecordsScript_Yes: @ 819FFFA - special 0x1B + special sub_80B929C waitstate lock faceplayer UnusedMixRecordsScript_Done: @ 81A0000 message UnusedMixRecordsSeeYouAgainText - waittext + waitmessage waitbutton release end @@ -1680,18 +1680,18 @@ UnusedMixRecordsScript_Done: @ 81A0000 gUnknown_081A0009:: @ 81A0009 lockall setvar 0x8004, 0 - special 214 - playsfx 4 + special DoPCTurnOnEffect + playse 4 msgbox UnknownString_81A09EC, 4 - jump EventScript_1A0023 + goto EventScript_1A0023 end EventScript_1A0023: message gPCText_WhichPCShouldBeAccessed - waittext - special 262 + waitmessage + special ScrSpecial_CreatePCMenu waitstate - jump EventScript_1A0033 + goto EventScript_1A0033 end EventScript_1A0033: @@ -1704,23 +1704,23 @@ EventScript_1A0033: end EventScript_1A0070: - playsfx 2 + playse 2 msgbox UnknownString_81A0A54, 4 - special 250 + special PlayerPC waitstate - jump EventScript_1A0023 + goto EventScript_1A0023 end EventScript_1A0085: - playsfx 2 + playse 2 checkflag 2123 - callif 0, EventScript_1A00AC + call_if 0, EventScript_1A00AC checkflag 2123 - callif 1, EventScript_1A00B5 + call_if 1, EventScript_1A00B5 msgbox UnknownString_81A0A35, 4 - special 60 + special ShowPokemonStorageSystem waitstate - jump EventScript_1A0023 + goto EventScript_1A0023 end EventScript_1A00AC: @@ -1733,18 +1733,18 @@ EventScript_1A00B5: EventScript_1A00BE: setvar 0x8004, 0 - playsfx 3 - special 215 + playse 3 + special DoPCTurnOffEffect releaseall end EventScript_1A00CB: checkflag 2052 - jumpif 0, EventScript_1A00BE - playsfx 2 - special 263 + goto_if 0, EventScript_1A00BE + playse 2 + special AccessHallOfFamePC waitstate - jump EventScript_1A0033 + goto EventScript_1A0033 end FallarborTown_EventScript_1A00E1:: @ 81A00E1 @@ -1789,7 +1789,7 @@ Route123_BerryMastersHouse_EventScript_1A00F3:: @ 81A00F3 SlateportCity_OceanicMuseum_1F_EventScript_1A00F3:: @ 81A00F3 SlateportCity_PokemonFanClub_EventScript_1A00F3:: @ 81A00F3 fadescreen 1 - special 95 + special sub_80E60D8 fadescreen 0 return @@ -1803,9 +1803,9 @@ RustboroCity_Gym_EventScript_1A00FB:: @ 81A00FB DewfordTown_EventScript_1A0102:: @ 81A0102 DewfordTown_Hall_EventScript_1A0102:: @ 81A0102 - checkdailyflags + dodailyevents setvar 0x8004, 0 - special 126 + special sub_80FA5BC return DewfordTown_EventScript_1A010C:: @ 81A010C @@ -1816,17 +1816,17 @@ Route109_EventScript_1A010C:: @ 81A010C return UseSurfScript:: @ 81A0117 - checkattack MOVE_SURF + checkpokemove MOVE_SURF compare RESULT, 6 - jumpeq UseSurfScript_NoMon - bufferpartypoke 0, RESULT - setanimation 0, RESULT + goto_if_eq UseSurfScript_NoMon + getpartypokename 0, RESULT + setfieldeffect 0, RESULT lockall msgbox UseSurfPromptText, 5 compare RESULT, 0 - jumpeq UseSurfScript_No + goto_if_eq UseSurfScript_No msgbox UsedSurfText, 4 - doanimation 9 + dofieldeffect 9 UseSurfScript_No: @ 81A014C releaseall UseSurfScript_NoMon: @ 81A014D @@ -1841,11 +1841,11 @@ Route103_EventScript_1A014E:: @ 81A014E Route110_EventScript_1A014E:: @ 81A014E Route119_EventScript_1A014E:: @ 81A014E RustboroCity_EventScript_1A014E:: @ 81A014E - checkgender + checkplayergender compare RESULT, 0 - jumpeq RustboroCity_EventScript_1A0166 + goto_if_eq RustboroCity_EventScript_1A0166 compare RESULT, 1 - jumpeq RustboroCity_EventScript_1A016C + goto_if_eq RustboroCity_EventScript_1A016C end RustboroCity_EventScript_1A0166:: @ 81A0166 @@ -1859,11 +1859,11 @@ RustboroCity_EventScript_1A016C:: @ 81A016C LavaridgeTown_EventScript_1A0172:: @ 81A0172 Route110_EventScript_1A0172:: @ 81A0172 Route119_EventScript_1A0172:: @ 81A0172 - checkgender + checkplayergender compare RESULT, 0 - jumpeq LavaridgeTown_EventScript_1A018A + goto_if_eq LavaridgeTown_EventScript_1A018A compare RESULT, 1 - jumpeq LavaridgeTown_EventScript_1A0190 + goto_if_eq LavaridgeTown_EventScript_1A0190 end LavaridgeTown_EventScript_1A018A:: @ 81A018A @@ -1945,66 +1945,66 @@ SootopolisCity_Gym_1F_EventScript_1A01C0:: @ 81A01C0 end DewfordTown_Gym_EventScript_1A021E:: @ 81A021E - cleartrainerflag OPPONENT_JOSH - cleartrainerflag OPPONENT_TOMMY + settrainerflag OPPONENT_JOSH + settrainerflag OPPONENT_TOMMY return DewfordTown_Gym_EventScript_1A0225:: @ 81A0225 - cleartrainerflag OPPONENT_HIDEKI - cleartrainerflag OPPONENT_TESSA - cleartrainerflag OPPONENT_LAURA + settrainerflag OPPONENT_HIDEKI + settrainerflag OPPONENT_TESSA + settrainerflag OPPONENT_LAURA return DewfordTown_Gym_EventScript_1A022F:: @ 81A022F - cleartrainerflag OPPONENT_KIRK - cleartrainerflag OPPONENT_SHAWN - cleartrainerflag OPPONENT_BEN - cleartrainerflag OPPONENT_VIVIAN + settrainerflag OPPONENT_KIRK + settrainerflag OPPONENT_SHAWN + settrainerflag OPPONENT_BEN + settrainerflag OPPONENT_VIVIAN return DewfordTown_Gym_EventScript_1A023C:: @ 81A023C - cleartrainerflag OPPONENT_COLE - cleartrainerflag OPPONENT_AXLE - cleartrainerflag OPPONENT_ANDY - cleartrainerflag OPPONENT_ZANE - cleartrainerflag OPPONENT_SADIE + settrainerflag OPPONENT_COLE + settrainerflag OPPONENT_AXLE + settrainerflag OPPONENT_ANDY + settrainerflag OPPONENT_ZANE + settrainerflag OPPONENT_SADIE return DewfordTown_Gym_EventScript_1A024C:: @ 81A024C - cleartrainerflag OPPONENT_RANDALL - cleartrainerflag OPPONENT_PARKER - cleartrainerflag OPPONENT_GEORGE - cleartrainerflag OPPONENT_BERKE - cleartrainerflag OPPONENT_MARY - cleartrainerflag OPPONENT_LORI - cleartrainerflag OPPONENT_JODY + settrainerflag OPPONENT_RANDALL + settrainerflag OPPONENT_PARKER + settrainerflag OPPONENT_GEORGE + settrainerflag OPPONENT_BERKE + settrainerflag OPPONENT_MARY + settrainerflag OPPONENT_LORI + settrainerflag OPPONENT_JODY return DewfordTown_Gym_EventScript_1A0262:: @ 81A0262 - cleartrainerflag OPPONENT_JARED - cleartrainerflag OPPONENT_TERRELL - cleartrainerflag OPPONENT_KYLEE - cleartrainerflag OPPONENT_WILL + settrainerflag OPPONENT_JARED + settrainerflag OPPONENT_TERRELL + settrainerflag OPPONENT_KYLEE + settrainerflag OPPONENT_WILL return DewfordTown_Gym_EventScript_1A026F:: @ 81A026F - cleartrainerflag OPPONENT_PRESTON - cleartrainerflag OPPONENT_VIRGIL - cleartrainerflag OPPONENT_FRITZ - cleartrainerflag OPPONENT_HANNAH - cleartrainerflag OPPONENT_SAMANTHA - cleartrainerflag OPPONENT_MAURA + settrainerflag OPPONENT_PRESTON + settrainerflag OPPONENT_VIRGIL + settrainerflag OPPONENT_FRITZ + settrainerflag OPPONENT_HANNAH + settrainerflag OPPONENT_SAMANTHA + settrainerflag OPPONENT_MAURA return DewfordTown_Gym_EventScript_1A0282:: @ 81A0282 - cleartrainerflag OPPONENT_ANDREA - cleartrainerflag OPPONENT_CRISSY - cleartrainerflag OPPONENT_BRIANNA_2 - cleartrainerflag OPPONENT_CONNIE - cleartrainerflag OPPONENT_BRIDGET - cleartrainerflag OPPONENT_OLIVIA - cleartrainerflag OPPONENT_TIFFANY - cleartrainerflag OPPONENT_MARISSA + settrainerflag OPPONENT_ANDREA + settrainerflag OPPONENT_CRISSY + settrainerflag OPPONENT_BRIANNA_2 + settrainerflag OPPONENT_CONNIE + settrainerflag OPPONENT_BRIDGET + settrainerflag OPPONENT_OLIVIA + settrainerflag OPPONENT_TIFFANY + settrainerflag OPPONENT_MARISSA return DewfordTown_Gym_EventScript_1A029B:: @ 81A029B @@ -2101,7 +2101,7 @@ MossdeepCity_Gym_EventScript_1A02C5:: @ 81A02C5 PetalburgCity_Gym_EventScript_1A02C5:: @ 81A02C5 RustboroCity_Gym_EventScript_1A02C5:: @ 81A02C5 SootopolisCity_Gym_1F_EventScript_1A02C5:: @ 81A02C5 - fanfare 369 + playfanfare 369 waitfanfare return @@ -2110,9 +2110,9 @@ Route111_OldLadysRestStop_EventScript_1A02CA:: @ 81A02CA Route119_WeatherInstitute_1F_EventScript_1A02CA:: @ 81A02CA SSTidalRooms_EventScript_1A02CA:: @ 81A02CA fadescreen 1 - fanfare 368 + playfanfare 368 waitfanfare - special 0 + special ScrSpecial_HealPlayerParty fadescreen 0 return @@ -2120,7 +2120,7 @@ Event_WorldMap:: @ 81A02D6 lockall msgbox UnknownString_817303D, 4 fadescreen 1 - special 251 + special FieldShowRegionMap waitstate releaseall end @@ -2129,37 +2129,37 @@ DewfordTown_EventScript_1A02E7:: @ 81A02E7 Route104_EventScript_1A02E7:: @ 81A02E7 Route109_EventScript_1A02E7:: @ 81A02E7 setflag 0x4001 - playmusic 431, 0 + playbgm 431, 0 return DewfordTown_EventScript_1A02EF:: @ 81A02EF Route104_EventScript_1A02EF:: @ 81A02EF Route109_EventScript_1A02EF:: @ 81A02EF clearflag 0x4001 - fadedefault + fadedefaultbgm return LittlerootTown_ProfessorBirchsLab_EventScript_1A02F4:: @ 81A02F4 Route101_EventScript_1A02F4:: @ 81A02F4 Route103_EventScript_1A02F4:: @ 81A02F4 compare 0x4085, 0 - jumpeq Route101_EventScript_1A14DC + goto_if_eq Route101_EventScript_1A14DC compare 0x4049, 0 - callif 1, Route101_EventScript_1A0358 + call_if 1, Route101_EventScript_1A0358 compare 0x4049, 1 - callif 1, Route101_EventScript_1A0358 + call_if 1, Route101_EventScript_1A0358 compare 0x4049, 2 - callif 1, Route101_EventScript_1A0365 + call_if 1, Route101_EventScript_1A0365 compare 0x4049, 3 - callif 1, Route101_EventScript_1A0365 + call_if 1, Route101_EventScript_1A0365 compare 0x4049, 4 - callif 1, Route101_EventScript_1A0372 + call_if 1, Route101_EventScript_1A0372 compare 0x4049, 5 - callif 1, Route101_EventScript_1A0372 + call_if 1, Route101_EventScript_1A0372 compare 0x4049, 6 - callif 1, Route101_EventScript_1A0358 + call_if 1, Route101_EventScript_1A0358 compare 0x4049, 7 - callif 1, Route101_EventScript_1A0358 + call_if 1, Route101_EventScript_1A0358 return Route101_EventScript_1A0358:: @ 81A0358 @@ -2190,7 +2190,7 @@ Route103_EventScript_1A037F:: @ 81A037F faceplayer msgbox Route101_Text_1C4449, 5 compare RESULT, 0 - jumpeq Route101_EventScript_1A039B + goto_if_eq Route101_EventScript_1A039B call Route101_EventScript_1A03B0 release end @@ -2202,39 +2202,39 @@ Route101_EventScript_1A039B:: @ 81A039B Route101_EventScript_1A03A5:: @ 81A03A5 copyvar 0x8004, 0x8009 - special 213 - waittext + special ShowPokedexRatingMessage + waitmessage waitbutton return EverGrandeCity_ChampionsRoom_EventScript_1A03B0:: @ 81A03B0 Route101_EventScript_1A03B0:: @ 81A03B0 setvar 0x8004, 0 - specialval RESULT, 212 + specialvar RESULT, ScriptGetPokedexInfo copyvar 0x8008, 0x8005 copyvar 0x8009, 0x8006 copyvar 0x800a, RESULT - buffernum 0, 0x8008 - buffernum 1, 0x8009 + getnumberstring 0, 0x8008 + getnumberstring 1, 0x8009 msgbox Route101_Text_1C44DC, 4 call Route101_EventScript_1A03A5 compare 0x800a, 0 - jumpeq Route101_EventScript_1A14DC + goto_if_eq Route101_EventScript_1A14DC setvar 0x8004, 1 - specialval RESULT, 212 + specialvar RESULT, ScriptGetPokedexInfo copyvar 0x8008, 0x8005 copyvar 0x8009, 0x8006 - buffernum 0, 0x8008 - buffernum 1, 0x8009 + getnumberstring 0, 0x8008 + getnumberstring 1, 0x8009 msgbox Route101_Text_1C4B05, 4 return BattleTower_Outside_EventScript_1A040E:: @ 81A040E LilycoveCity_Harbor_EventScript_1A040E:: @ 81A040E SlateportCity_Harbor_EventScript_1A040E:: @ 81A040E - pause 60 - move 0x8004, SlateportCity_Harbor_Movement_1A041C - waitmove 0 + delay 60 + applymovement 0x8004, SlateportCity_Harbor_Movement_1A041C + waitmovement 0 return SlateportCity_Harbor_Movement_1A041C:: @ 81A041C @@ -2260,8 +2260,8 @@ PetalburgCity_Gym_EventScript_1A0424:: @ 81A0424 return RusturfTunnel_EventScript_1A0442:: @ 81A0442 - disappear 1 - disappear 10 + removeobject 1 + removeobject 10 clearflag 808 clearflag 984 setvar 0x409a, 6 @@ -2269,14 +2269,14 @@ RusturfTunnel_EventScript_1A0442:: @ 81A0442 return EventScript_1A0457: @ unreferenced? - pause 30 - move 255, SlateportCity_OceanicMuseum_2F_Movement_1A0841 - waitmove 0 - spritevisible 255, 0, 0 - pause 30 - move 255, Movement_1A047A - waitmove 0 - pause 30 + delay 30 + applymovement 255, SlateportCity_OceanicMuseum_2F_Movement_1A0841 + waitmovement 0 + showobject 255, 0, 0 + delay 30 + applymovement 255, Movement_1A047A + waitmovement 0 + delay 30 return Movement_1A047A: @@ -2286,18 +2286,18 @@ Movement_1A047A: BattleTower_Outside_EventScript_1A047C:: @ 81A047C SouthernIsland_Exterior_EventScript_1A047C:: @ 81A047C compare FACING, 1 - callif 1, BattleTower_Outside_EventScript_160B2F + call_if 1, BattleTower_Outside_EventScript_160B2F compare FACING, 3 - callif 1, BattleTower_Outside_EventScript_160B3A - pause 30 - spriteinvisible 255, 0, 0 + call_if 1, BattleTower_Outside_EventScript_160B3A + delay 30 + hideobject 255, 0, 0 call BattleTower_Outside_EventScript_1A040E return CaveOfOrigin_B4F_EventScript_1A04A0:: @ 81A04A0 lockall - checksound - pokecry SPECIES_GROUDON_OR_KYOGRE, 2 + waitse + playpokecry SPECIES_GROUDON_OR_KYOGRE, 2 waitpokecry setvar 0x4005, 1 releaseall @@ -2309,27 +2309,27 @@ CaveOfOrigin_B2F_EventScript_1A04AF:: @ 81A04AF CaveOfOrigin_B3F_EventScript_1A04AF:: @ 81A04AF lockall setvar 0x4001, 1 - jump CaveOfOrigin_1F_EventScript_1A04D3 + goto CaveOfOrigin_1F_EventScript_1A04D3 end CaveOfOrigin_B2F_EventScript_1A04BB:: @ 81A04BB CaveOfOrigin_B3F_EventScript_1A04BB:: @ 81A04BB lockall setvar 0x4002, 1 - jump CaveOfOrigin_B2F_EventScript_1A04D3 + goto CaveOfOrigin_B2F_EventScript_1A04D3 end @ 81A04C7 lockall setvar 0x4003, 1 - jump CaveOfOrigin_B2F_EventScript_1A04D3 + goto CaveOfOrigin_B2F_EventScript_1A04D3 end CaveOfOrigin_1F_EventScript_1A04D3:: @ 81A04D3 CaveOfOrigin_B2F_EventScript_1A04D3:: @ 81A04D3 setvar 0x8004, 1 setvar 0x8005, 1 - special 310 + special sub_810F758 waitstate releaseall end @@ -2351,9 +2351,9 @@ MagmaHideout_B1F_EventScript_1A04FD:: @ 81A04FD lock faceplayer setwildbattle SPECIES_ELECTRODE, 30, ITEM_NONE - checksound - pokecry SPECIES_ELECTRODE, 2 - pause 40 + waitse + playpokecry SPECIES_ELECTRODE, 2 + delay 40 waitpokecry setflag 977 setflag 2145 @@ -2367,9 +2367,9 @@ MagmaHideout_B1F_EventScript_1A051B:: @ 81A051B lock faceplayer setwildbattle SPECIES_ELECTRODE, 30, ITEM_NONE - checksound - pokecry SPECIES_ELECTRODE, 2 - pause 40 + waitse + playpokecry SPECIES_ELECTRODE, 2 + delay 40 waitpokecry setflag 978 setflag 2145 @@ -2382,56 +2382,56 @@ Route120_EventScript_1A0539:: @ 81A0539 lock faceplayer setvar 0x8004, 1 - jump Route120_EventScript_1A0594 + goto Route120_EventScript_1A0594 end Route120_EventScript_1A0546:: @ 81A0546 lock faceplayer setvar 0x8004, 2 - jump Route120_EventScript_1A0594 + goto Route120_EventScript_1A0594 end Route120_EventScript_1A0553:: @ 81A0553 lock faceplayer setvar 0x8004, 3 - jump Route120_EventScript_1A0594 + goto Route120_EventScript_1A0594 end Route120_EventScript_1A0560:: @ 81A0560 lock faceplayer setvar 0x8004, 4 - jump Route120_EventScript_1A0594 + goto Route120_EventScript_1A0594 end Route120_EventScript_1A056D:: @ 81A056D lock faceplayer setvar 0x8004, 5 - jump Route120_EventScript_1A0594 + goto Route120_EventScript_1A0594 end Route119_EventScript_1A057A:: @ 81A057A lock faceplayer setvar 0x8004, 6 - jump Route119_EventScript_1A0594 + goto Route119_EventScript_1A0594 end Route119_EventScript_1A0587:: @ 81A0587 lock faceplayer setvar 0x8004, 7 - jump Route119_EventScript_1A0594 + goto Route119_EventScript_1A0594 end Route119_EventScript_1A0594:: @ 81A0594 Route120_EventScript_1A0594:: @ 81A0594 checkitem ITEM_DEVON_SCOPE, 1 compare RESULT, 1 - jumpeq Route119_EventScript_1A05AE + goto_if_eq Route119_EventScript_1A05AE msgbox Route119_Text_171B93, 4 release end @@ -2439,36 +2439,36 @@ Route120_EventScript_1A0594:: @ 81A0594 Route119_EventScript_1A05AE:: @ 81A05AE msgbox Route119_Text_171BB6, 5 compare RESULT, 1 - jumpeq Route119_EventScript_1A05C3 + goto_if_eq Route119_EventScript_1A05C3 release end Route119_EventScript_1A05C3:: @ 81A05C3 msgbox Route119_Text_171BF6, 4 - closebutton - move LAST_TALKED, Route119_Movement_1A0839 - waitmove 0 - move LAST_TALKED, Route119_Movement_1A0662 - waitmove 0 - checksound - pokecry SPECIES_KECLEON, 2 - pause 40 + closemessage + applymovement LAST_TALKED, Route119_Movement_1A0839 + waitmovement 0 + applymovement LAST_TALKED, Route119_Movement_1A0662 + waitmovement 0 + waitse + playpokecry SPECIES_KECLEON, 2 + delay 40 waitpokecry setwildbattle SPECIES_KECLEON, 30, ITEM_NONE compare 0x8004, 1 - callif 1, Route119_EventScript_1A0646 + call_if 1, Route119_EventScript_1A0646 compare 0x8004, 2 - callif 1, Route119_EventScript_1A064A + call_if 1, Route119_EventScript_1A064A compare 0x8004, 3 - callif 1, Route119_EventScript_1A064E + call_if 1, Route119_EventScript_1A064E compare 0x8004, 4 - callif 1, Route119_EventScript_1A0652 + call_if 1, Route119_EventScript_1A0652 compare 0x8004, 5 - callif 1, Route119_EventScript_1A0656 + call_if 1, Route119_EventScript_1A0656 compare 0x8004, 6 - callif 1, Route119_EventScript_1A065A + call_if 1, Route119_EventScript_1A065A compare 0x8004, 7 - callif 1, Route119_EventScript_1A065E + call_if 1, Route119_EventScript_1A065E setflag 2145 dowildbattle clearflag 2145 @@ -2534,7 +2534,7 @@ MossdeepCity_StevensHouse_EventScript_1A0678:: @ 81A0678 RustboroCity_DevonCorp_2F_EventScript_1A0678:: @ 81A0678 SlateportCity_House1_EventScript_1A0678:: @ 81A0678 fadescreen 1 - special 158 + special sub_80BF9F8 waitstate return @@ -2542,10 +2542,10 @@ FallarborTown_House1_EventScript_1A067F:: @ 81A067F GraniteCave_StevensRoom_EventScript_1A067F:: @ 81A067F MtPyre_Summit_EventScript_1A067F:: @ 81A067F SlateportCity_OceanicMuseum_2F_EventScript_1A067F:: @ 81A067F - bufferitem 0, 0x8004 - fanfare 372 + getitemname 0, 0x8004 + playfanfare 372 message FallarborTown_House1_Text_1A1498 - waittext + waitmessage waitfanfare removeitem 0x8004, 1 return @@ -2554,9 +2554,9 @@ EverGrandeCity_DrakesRoom_EventScript_1A0693:: @ 81A0693 EverGrandeCity_GlaciasRoom_EventScript_1A0693:: @ 81A0693 EverGrandeCity_PhoebesRoom_EventScript_1A0693:: @ 81A0693 EverGrandeCity_SidneysRoom_EventScript_1A0693:: @ 81A0693 - move 255, EverGrandeCity_SidneysRoom_Movement_1A0853 - waitmove 0 - playsfx 8 + applymovement 255, EverGrandeCity_SidneysRoom_Movement_1A0853 + waitmovement 0 + playse 8 setmaptile 6, 1, 836, 0 setmaptile 6, 2, 837, 0 setmaptile 0, 2, 734, 1 @@ -2569,23 +2569,23 @@ EverGrandeCity_SidneysRoom_EventScript_1A0693:: @ 81A0693 setmaptile 10, 2, 733, 1 setmaptile 11, 2, 734, 1 setmaptile 12, 2, 733, 1 - special 142 + special DrawWholeMapView return EverGrandeCity_DrakesRoom_EventScript_1A0710:: @ 81A0710 EverGrandeCity_GlaciasRoom_EventScript_1A0710:: @ 81A0710 EverGrandeCity_PhoebesRoom_EventScript_1A0710:: @ 81A0710 EverGrandeCity_SidneysRoom_EventScript_1A0710:: @ 81A0710 - move 255, EverGrandeCity_SidneysRoom_Movement_1A0847 - waitmove 0 - playsfx 52 + applymovement 255, EverGrandeCity_SidneysRoom_Movement_1A0847 + waitmovement 0 + playse 52 setmaptile 5, 12, 518, 1 setmaptile 6, 12, 518, 1 setmaptile 7, 12, 518, 1 setmaptile 5, 13, 526, 1 setmaptile 6, 13, 526, 1 setmaptile 7, 13, 526, 1 - special 142 + special DrawWholeMapView return EverGrandeCity_DrakesRoom_EventScript_1A0757:: @ 81A0757 @@ -2986,16 +2986,16 @@ UnknownString_81A0A54: @ 81A0A54 UnknownString_81A0A66: @ 81A0A66 .string "Verbindung zu LANETTES PC hergestellt.$" -OldaleTown_PokemonCenter_1F_Text_1A0A7D:: @ 81A0A7D +gText_NurseJoy_Welcome:: @ 81A0A7D .string "Willkommen im POKéMON-CENTER!\p" .string "Wir heilen deine POKéMON und\n" .string "machen sie wieder fit.\p" .string "O.K. Wir benötigen deine POKéMON.$" -OldaleTown_PokemonCenter_1F_Text_1A0AFA:: @ 81A0AFA +gText_NurseJoy_WeHopeToSeeYouAgain:: @ 81A0AFA .string "Komm jederzeit wieder vorbei!$" -OldaleTown_PokemonCenter_1F_Text_1A0B14:: @ 81A0B14 +gText_NurseJoy_ThankYouForWaiting:: @ 81A0B14 .string "Danke!\p" .string "Deine POKéMON sind wieder topfit!$" @@ -3214,11 +3214,11 @@ SlateportCity_Text_1A116E:: @ 81A116E .string "nehmen und dir unter der Hand tolle\l" .string "Sachen verkaufen.$" -OldaleTown_PokemonCenter_1F_Text_1A1245:: @ 81A1245 +gText_NurseJoy_OkayIllTakeYourPokemon:: @ 81A1245 .string "Okay, ich nehme deine POKéMON für einen\n" .string "Moment in meine Obhut.$" -OldaleTown_PokemonCenter_1F_Text_1A1275:: @ 81A1275 +gText_NurseJoy_Pokerus:: @ 81A1275 .string "Dein POKéMON scheint von dem\n" .string "POKéRUS befallen zu sein.\p" .string "Über den POKéRUS ist bisher wenig be-\n" @@ -3261,21 +3261,21 @@ Event_NoRegisteredItem:: @ 81A14AF gUnknown_081A14B8:: @ 81A14B8 lockall - special 199 + special ExecuteWhiteOut waitstate compare RESULT, 1 - jumpeq EventScript_1A14CA + goto_if_eq EventScript_1A14CA releaseall end EventScript_1A14CA:: message UnknownString_81A1141 - waittext + waitmessage waitbutton - special 332 + special sub_8081924 waitstate fadescreen 1 - special 200 + special sp0C8_whiteout_maybe waitstate end @@ -3616,47 +3616,47 @@ SecretBase_RedCave1_Text_1A2BA4:: @ 81A2BA4 .string "Bist du sprachlos? Hihihi...$" gUnknown_081A2C51:: @ 81A2C51 - special 21 - special 7 + special sub_80BB70C + special sub_80BB63C compare RESULT, 1 - jumpeq EventScript_1A2E45 - checkattack MOVE_SECRET_POWER - setanimation 0, RESULT - bufferattack 1, MOVE_SECRET_POWER + goto_if_eq EventScript_1A2E45 + checkpokemove MOVE_SECRET_POWER + setfieldeffect 0, RESULT + getmovename 1, MOVE_SECRET_POWER compare 0x8007, 1 - jumpeq EventScript_1A2CB0 + goto_if_eq EventScript_1A2CB0 compare 0x8007, 2 - jumpeq EventScript_1A2CB0 + goto_if_eq EventScript_1A2CB0 compare 0x8007, 3 - jumpeq EventScript_1A2CB0 + goto_if_eq EventScript_1A2CB0 compare 0x8007, 4 - jumpeq EventScript_1A2CB0 + goto_if_eq EventScript_1A2CB0 compare 0x8007, 5 - jumpeq EventScript_1A2D08 + goto_if_eq EventScript_1A2D08 compare 0x8007, 6 - jumpeq EventScript_1A2D60 + goto_if_eq EventScript_1A2D60 end EventScript_1A2CB0: lockall compare RESULT, 6 - jumpeq EventScript_1A2CF1 - bufferpartypoke 0, RESULT + goto_if_eq EventScript_1A2CF1 + getpartypokename 0, RESULT msgbox UnknownString_8198F34, 5 compare RESULT, 0 - jumpeq EventScript_1A2F3A + goto_if_eq EventScript_1A2F3A msgbox UsedCutRockSmashText, 4 - closebutton - doanimation 11 + closemessage + dofieldeffect 11 waitstate - jump EventScript_1A2CFA + goto EventScript_1A2CFA end gUnknown_081A2CE6:: @ 81A2CE6 lockall - doanimation 11 + dofieldeffect 11 waitstate - jump EventScript_1A2CFA + goto EventScript_1A2CFA end EventScript_1A2CF1: @@ -3665,29 +3665,29 @@ EventScript_1A2CF1: EventScript_1A2CFA: msgbox UnknownString_8198F6E, 4 - jump EventScript_1A2DB8 + goto EventScript_1A2DB8 end EventScript_1A2D08: lockall compare RESULT, 6 - jumpeq EventScript_1A2D49 - bufferpartypoke 0, RESULT + goto_if_eq EventScript_1A2D49 + getpartypokename 0, RESULT msgbox UnknownString_81A197B, 5 compare RESULT, 0 - jumpeq EventScript_1A2F3A + goto_if_eq EventScript_1A2F3A msgbox UsedCutRockSmashText, 4 - closebutton - doanimation 26 + closemessage + dofieldeffect 26 waitstate - jump EventScript_1A2D52 + goto EventScript_1A2D52 end gUnknown_081A2D3E:: @ 81A2D3E lockall - doanimation 26 + dofieldeffect 26 waitstate - jump EventScript_1A2D52 + goto EventScript_1A2D52 end EventScript_1A2D49: @@ -3696,29 +3696,29 @@ EventScript_1A2D49: EventScript_1A2D52: msgbox UnknownString_81A19C4, 4 - jump EventScript_1A2DB8 + goto EventScript_1A2DB8 end EventScript_1A2D60: lockall compare RESULT, 6 - jumpeq EventScript_1A2DA1 - bufferpartypoke 0, RESULT + goto_if_eq EventScript_1A2DA1 + getpartypokename 0, RESULT msgbox UnknownString_81A1A4B, 5 compare RESULT, 0 - jumpeq EventScript_1A2F3A + goto_if_eq EventScript_1A2F3A msgbox UsedCutRockSmashText, 4 - closebutton - doanimation 27 + closemessage + dofieldeffect 27 waitstate - jump EventScript_1A2DAA + goto EventScript_1A2DAA end gUnknown_081A2D96:: @ 81A2D96 lockall - doanimation 27 + dofieldeffect 27 waitstate - jump EventScript_1A2DAA + goto EventScript_1A2DAA end EventScript_1A2DA1: @@ -3727,39 +3727,39 @@ EventScript_1A2DA1: EventScript_1A2DAA: msgbox UnknownString_81A1AA9, 4 - jump EventScript_1A2DB8 + goto EventScript_1A2DB8 end EventScript_1A2DB8: - closebutton - playsfx 9 + closemessage + playse 9 setvar 0x4097, 0 setflag 173 - special 6 - special 8 + special sub_80BB8CC + special sub_80BBAF0 setvar 0x8004, 0 setvar 0x8005, 0 - special 18 + special sub_80BBDD0 setvar 0x4089, 1 waitstate end SecretBase_RedCave1_EventScript_1A2DDE:: @ 81A2DDE - move 255, SecretBase_RedCave1_Movement_1A2E11 - waitmove 0 + applymovement 255, SecretBase_RedCave1_Movement_1A2E11 + waitmovement 0 setvar 0x4097, 1 msgbox SecretBase_RedCave1_Text_198F89, 5 compare RESULT, 1 - jumpeq SecretBase_RedCave1_EventScript_1A2E08 - closebutton - playsfx 9 - special 9 + goto_if_eq SecretBase_RedCave1_EventScript_1A2E08 + closemessage + playse 9 + special sub_80BC440 end SecretBase_RedCave1_EventScript_1A2E08:: @ 81A2E08 - closebutton + closemessage setflag 96 - special 24 + special sub_80BBC78 waitstate end @@ -3771,81 +3771,81 @@ SecretBase_RedCave1_Movement_1A2E11:: @ 81A2E11 gUnknown_081A2E14:: @ 81A2E14 lockall setvar 0x4097, 1 - playsfx 9 - special 11 + playse 9 + special sub_80BC114 compare RESULT, 0 - jumpeq EventScript_1A2E38 + goto_if_eq EventScript_1A2E38 clearflag 173 - special 8 + special sub_80BBAF0 setvar 0x4089, 0 waitstate end EventScript_1A2E38: setflag 173 - special 8 + special sub_80BBAF0 setvar 0x4089, 0 waitstate end EventScript_1A2E45: - checkattack MOVE_SECRET_POWER + checkpokemove MOVE_SECRET_POWER compare RESULT, 6 - jumpeq EventScript_1A2EF7 - setanimation 0, RESULT + goto_if_eq EventScript_1A2EF7 + setfieldeffect 0, RESULT setorcopyvar 0x8004, RESULT lockall - special 278 + special GetSecretBaseNearbyMapName msgbox UnknownString_81A3C71, 5 compare RESULT, 0 - jumpeq EventScript_1A2F3A + goto_if_eq EventScript_1A2F3A msgbox UnknownString_81A38FB, 5 compare RESULT, 0 - jumpeq EventScript_1A2F3A + goto_if_eq EventScript_1A2F3A fadescreen 1 - special 330 - closebutton + special sub_80BC50C + closemessage fadescreen 0 msgbox UnknownString_81A3CC9, 5 compare RESULT, 0 - jumpeq EventScript_1A2F3A - bufferpartypoke 0, 0x8004 - bufferattack 1, MOVE_SECRET_POWER + goto_if_eq EventScript_1A2F3A + getpartypokename 0, 0x8004 + getmovename 1, MOVE_SECRET_POWER msgbox UsedCutRockSmashText, 4 - closebutton - closebutton + closemessage + closemessage compare 0x8007, 1 - jumpeq gUnknown_081A2CE6 + goto_if_eq gUnknown_081A2CE6 compare 0x8007, 2 - jumpeq gUnknown_081A2CE6 + goto_if_eq gUnknown_081A2CE6 compare 0x8007, 3 - jumpeq gUnknown_081A2CE6 + goto_if_eq gUnknown_081A2CE6 compare 0x8007, 4 - jumpeq gUnknown_081A2CE6 + goto_if_eq gUnknown_081A2CE6 compare 0x8007, 5 - jumpeq gUnknown_081A2D3E + goto_if_eq gUnknown_081A2D3E compare 0x8007, 6 - jumpeq gUnknown_081A2D96 + goto_if_eq gUnknown_081A2D96 releaseall end EventScript_1A2EF7:: compare 0x8007, 1 - jumpeq EventScript_1A2CF1 + goto_if_eq EventScript_1A2CF1 compare 0x8007, 2 - jumpeq EventScript_1A2CF1 + goto_if_eq EventScript_1A2CF1 compare 0x8007, 3 - jumpeq EventScript_1A2CF1 + goto_if_eq EventScript_1A2CF1 compare 0x8007, 4 - jumpeq EventScript_1A2CF1 + goto_if_eq EventScript_1A2CF1 compare 0x8007, 5 - jumpeq EventScript_1A2D49 + goto_if_eq EventScript_1A2D49 compare 0x8007, 6 - jumpeq EventScript_1A2DA1 + goto_if_eq EventScript_1A2DA1 end EventScript_1A2F3A:: - closebutton + closemessage releaseall end @@ -3873,34 +3873,34 @@ LittlerootTown_MaysHouse_2F_EventScript_1A2F68:: @ 81A2F68 SecretBase_RedCave1_EventScript_1A2F68:: @ 81A2F68 setvar 0x8004, 0 setvar 0x8005, 0 - special 18 + special sub_80BBDD0 setvar 0x4089, 1 end gUnknown_081A2F7B:: @ 81A2F7B setvar 0x8005, 0 - jump EventScript_1A2F86 + goto EventScript_1A2F86 end EventScript_1A2F86: - special 19 + special sub_80FF474 end gUnknown_081A2F8A:: @ 81A2F8A setvar 0x8004, 0 - jump EventScript_1A2F95 + goto EventScript_1A2F95 end EventScript_1A2F95: - special 23 + special sub_8100A7C compare RESULT, 1 - jumpeq EventScript_1A2FBF + goto_if_eq EventScript_1A2FBF addvar 0x8004, 1 compare 0x8005, 0 - jumpeq EventScript_1A2F95 - disappear 0x8006 + goto_if_eq EventScript_1A2F95 + removeobject 0x8006 setflag 0x8005 - jump EventScript_1A2F95 + goto EventScript_1A2F95 end EventScript_1A2FBF: @@ -3930,47 +3930,47 @@ SecretBase_YellowCave1_EventScript_1A2FC0:: @ 81A2FC0 SecretBase_YellowCave2_EventScript_1A2FC0:: @ 81A2FC0 SecretBase_YellowCave3_EventScript_1A2FC0:: @ 81A2FC0 SecretBase_YellowCave4_EventScript_1A2FC0:: @ 81A2FC0 - special 17 + special sub_80BCE90 compare 0x8004, 0 - jumpeq SecretBase_RedCave1_EventScript_1A3032 + goto_if_eq SecretBase_RedCave1_EventScript_1A3032 compare 0x8004, 1 - jumpeq SecretBase_RedCave1_EventScript_1A30AE + goto_if_eq SecretBase_RedCave1_EventScript_1A30AE compare 0x8004, 2 - jumpeq SecretBase_RedCave1_EventScript_1A312A + goto_if_eq SecretBase_RedCave1_EventScript_1A312A compare 0x8004, 3 - jumpeq SecretBase_RedCave1_EventScript_1A31A6 + goto_if_eq SecretBase_RedCave1_EventScript_1A31A6 compare 0x8004, 4 - jumpeq SecretBase_RedCave1_EventScript_1A3222 + goto_if_eq SecretBase_RedCave1_EventScript_1A3222 compare 0x8004, 5 - jumpeq SecretBase_RedCave1_EventScript_1A329E + goto_if_eq SecretBase_RedCave1_EventScript_1A329E compare 0x8004, 6 - jumpeq SecretBase_RedCave1_EventScript_1A331A + goto_if_eq SecretBase_RedCave1_EventScript_1A331A compare 0x8004, 7 - jumpeq SecretBase_RedCave1_EventScript_1A3396 + goto_if_eq SecretBase_RedCave1_EventScript_1A3396 compare 0x8004, 8 - jumpeq SecretBase_RedCave1_EventScript_1A3412 + goto_if_eq SecretBase_RedCave1_EventScript_1A3412 compare 0x8004, 9 - jumpeq SecretBase_RedCave1_EventScript_1A348E + goto_if_eq SecretBase_RedCave1_EventScript_1A348E end SecretBase_RedCave1_EventScript_1A3032:: @ 81A3032 checkflag 2052 - jumpif 0, SecretBase_RedCave1_EventScript_1A3086 + goto_if 0, SecretBase_RedCave1_EventScript_1A3086 compare RESULT, 1 - jumpeq SecretBase_RedCave1_EventScript_1A30A5 + goto_if_eq SecretBase_RedCave1_EventScript_1A30A5 lock faceplayer msgbox SecretBase_RedCave1_Text_1A1AEA, 5 compare RESULT, 0 - jumpeq SecretBase_RedCave1_EventScript_1A308F + goto_if_eq SecretBase_RedCave1_EventScript_1A308F setvar RESULT, 1 - special 25 - call SecretBase_RedCave1_EventScript_19F806 + special sub_80BCE4C + call S_DoSaveDialog compare RESULT, 0 - jumpeq SecretBase_RedCave1_EventScript_1A308F - hidebox 0, 0, 15, 10 + goto_if_eq SecretBase_RedCave1_EventScript_1A308F + erasebox 0, 0, 15, 10 msgbox SecretBase_RedCave1_Text_1A1B83, 4 - jump SecretBase_RedCave1_EventScript_1A350A + goto SecretBase_RedCave1_EventScript_1A350A end SecretBase_RedCave1_EventScript_1A3086:: @ 81A3086 @@ -3979,8 +3979,8 @@ SecretBase_RedCave1_EventScript_1A3086:: @ 81A3086 SecretBase_RedCave1_EventScript_1A308F:: @ 81A308F setvar RESULT, 0 - special 25 - hidebox 0, 0, 15, 10 + special sub_80BCE4C + erasebox 0, 0, 15, 10 msgbox SecretBase_RedCave1_Text_1A1B97, 2 end @@ -3990,22 +3990,22 @@ SecretBase_RedCave1_EventScript_1A30A5:: @ 81A30A5 SecretBase_RedCave1_EventScript_1A30AE:: @ 81A30AE checkflag 2052 - jumpif 0, SecretBase_RedCave1_EventScript_1A3102 + goto_if 0, SecretBase_RedCave1_EventScript_1A3102 compare RESULT, 1 - jumpeq SecretBase_RedCave1_EventScript_1A3121 + goto_if_eq SecretBase_RedCave1_EventScript_1A3121 lock faceplayer msgbox SecretBase_RedCave1_Text_1A1E67, 5 compare RESULT, 0 - jumpeq SecretBase_RedCave1_EventScript_1A310B + goto_if_eq SecretBase_RedCave1_EventScript_1A310B setvar RESULT, 1 - special 25 - call SecretBase_RedCave1_EventScript_19F806 + special sub_80BCE4C + call S_DoSaveDialog compare RESULT, 0 - jumpeq SecretBase_RedCave1_EventScript_1A310B - hidebox 0, 0, 15, 10 + goto_if_eq SecretBase_RedCave1_EventScript_1A310B + erasebox 0, 0, 15, 10 msgbox SecretBase_RedCave1_Text_1A1F04, 4 - jump SecretBase_RedCave1_EventScript_1A350A + goto SecretBase_RedCave1_EventScript_1A350A end SecretBase_RedCave1_EventScript_1A3102:: @ 81A3102 @@ -4014,8 +4014,8 @@ SecretBase_RedCave1_EventScript_1A3102:: @ 81A3102 SecretBase_RedCave1_EventScript_1A310B:: @ 81A310B setvar RESULT, 0 - special 25 - hidebox 0, 0, 15, 10 + special sub_80BCE4C + erasebox 0, 0, 15, 10 msgbox SecretBase_RedCave1_Text_1A1F2E, 2 end @@ -4025,22 +4025,22 @@ SecretBase_RedCave1_EventScript_1A3121:: @ 81A3121 SecretBase_RedCave1_EventScript_1A312A:: @ 81A312A checkflag 2052 - jumpif 0, SecretBase_RedCave1_EventScript_1A317E + goto_if 0, SecretBase_RedCave1_EventScript_1A317E compare RESULT, 1 - jumpeq SecretBase_RedCave1_EventScript_1A319D + goto_if_eq SecretBase_RedCave1_EventScript_1A319D lock faceplayer msgbox SecretBase_RedCave1_Text_1A218F, 5 compare RESULT, 0 - jumpeq SecretBase_RedCave1_EventScript_1A3187 + goto_if_eq SecretBase_RedCave1_EventScript_1A3187 setvar RESULT, 1 - special 25 - call SecretBase_RedCave1_EventScript_19F806 + special sub_80BCE4C + call S_DoSaveDialog compare RESULT, 0 - jumpeq SecretBase_RedCave1_EventScript_1A3187 - hidebox 0, 0, 15, 10 + goto_if_eq SecretBase_RedCave1_EventScript_1A3187 + erasebox 0, 0, 15, 10 msgbox SecretBase_RedCave1_Text_1A2220, 4 - jump SecretBase_RedCave1_EventScript_1A350A + goto SecretBase_RedCave1_EventScript_1A350A end SecretBase_RedCave1_EventScript_1A317E:: @ 81A317E @@ -4049,8 +4049,8 @@ SecretBase_RedCave1_EventScript_1A317E:: @ 81A317E SecretBase_RedCave1_EventScript_1A3187:: @ 81A3187 setvar RESULT, 0 - special 25 - hidebox 0, 0, 15, 10 + special sub_80BCE4C + erasebox 0, 0, 15, 10 msgbox SecretBase_RedCave1_Text_1A2230, 2 end @@ -4060,22 +4060,22 @@ SecretBase_RedCave1_EventScript_1A319D:: @ 81A319D SecretBase_RedCave1_EventScript_1A31A6:: @ 81A31A6 checkflag 2052 - jumpif 0, SecretBase_RedCave1_EventScript_1A31FA + goto_if 0, SecretBase_RedCave1_EventScript_1A31FA compare RESULT, 1 - jumpeq SecretBase_RedCave1_EventScript_1A3219 + goto_if_eq SecretBase_RedCave1_EventScript_1A3219 lock faceplayer msgbox SecretBase_RedCave1_Text_1A24E1, 5 compare RESULT, 0 - jumpeq SecretBase_RedCave1_EventScript_1A3203 + goto_if_eq SecretBase_RedCave1_EventScript_1A3203 setvar RESULT, 1 - special 25 - call SecretBase_RedCave1_EventScript_19F806 + special sub_80BCE4C + call S_DoSaveDialog compare RESULT, 0 - jumpeq SecretBase_RedCave1_EventScript_1A3203 - hidebox 0, 0, 15, 10 + goto_if_eq SecretBase_RedCave1_EventScript_1A3203 + erasebox 0, 0, 15, 10 msgbox SecretBase_RedCave1_Text_1A256F, 4 - jump SecretBase_RedCave1_EventScript_1A350A + goto SecretBase_RedCave1_EventScript_1A350A end SecretBase_RedCave1_EventScript_1A31FA:: @ 81A31FA @@ -4084,8 +4084,8 @@ SecretBase_RedCave1_EventScript_1A31FA:: @ 81A31FA SecretBase_RedCave1_EventScript_1A3203:: @ 81A3203 setvar RESULT, 0 - special 25 - hidebox 0, 0, 15, 10 + special sub_80BCE4C + erasebox 0, 0, 15, 10 msgbox SecretBase_RedCave1_Text_1A258A, 2 end @@ -4095,22 +4095,22 @@ SecretBase_RedCave1_EventScript_1A3219:: @ 81A3219 SecretBase_RedCave1_EventScript_1A3222:: @ 81A3222 checkflag 2052 - jumpif 0, SecretBase_RedCave1_EventScript_1A3276 + goto_if 0, SecretBase_RedCave1_EventScript_1A3276 compare RESULT, 1 - jumpeq SecretBase_RedCave1_EventScript_1A3295 + goto_if_eq SecretBase_RedCave1_EventScript_1A3295 lock faceplayer msgbox SecretBase_RedCave1_Text_1A2830, 5 compare RESULT, 0 - jumpeq SecretBase_RedCave1_EventScript_1A327F + goto_if_eq SecretBase_RedCave1_EventScript_1A327F setvar RESULT, 1 - special 25 - call SecretBase_RedCave1_EventScript_19F806 + special sub_80BCE4C + call S_DoSaveDialog compare RESULT, 0 - jumpeq SecretBase_RedCave1_EventScript_1A327F - hidebox 0, 0, 15, 10 + goto_if_eq SecretBase_RedCave1_EventScript_1A327F + erasebox 0, 0, 15, 10 msgbox SecretBase_RedCave1_Text_1A28D7, 4 - jump SecretBase_RedCave1_EventScript_1A350A + goto SecretBase_RedCave1_EventScript_1A350A end SecretBase_RedCave1_EventScript_1A3276:: @ 81A3276 @@ -4119,8 +4119,8 @@ SecretBase_RedCave1_EventScript_1A3276:: @ 81A3276 SecretBase_RedCave1_EventScript_1A327F:: @ 81A327F setvar RESULT, 0 - special 25 - hidebox 0, 0, 15, 10 + special sub_80BCE4C + erasebox 0, 0, 15, 10 msgbox SecretBase_RedCave1_Text_1A28F4, 2 end @@ -4130,22 +4130,22 @@ SecretBase_RedCave1_EventScript_1A3295:: @ 81A3295 SecretBase_RedCave1_EventScript_1A329E:: @ 81A329E checkflag 2052 - jumpif 0, SecretBase_RedCave1_EventScript_1A32F2 + goto_if 0, SecretBase_RedCave1_EventScript_1A32F2 compare RESULT, 1 - jumpeq SecretBase_RedCave1_EventScript_1A3311 + goto_if_eq SecretBase_RedCave1_EventScript_1A3311 lock faceplayer msgbox SecretBase_RedCave1_Text_1A1CB2, 5 compare RESULT, 0 - jumpeq SecretBase_RedCave1_EventScript_1A32FB + goto_if_eq SecretBase_RedCave1_EventScript_1A32FB setvar RESULT, 1 - special 25 - call SecretBase_RedCave1_EventScript_19F806 + special sub_80BCE4C + call S_DoSaveDialog compare RESULT, 0 - jumpeq SecretBase_RedCave1_EventScript_1A32FB - hidebox 0, 0, 15, 10 + goto_if_eq SecretBase_RedCave1_EventScript_1A32FB + erasebox 0, 0, 15, 10 msgbox SecretBase_RedCave1_Text_1A1D48, 4 - jump SecretBase_RedCave1_EventScript_1A350A + goto SecretBase_RedCave1_EventScript_1A350A end SecretBase_RedCave1_EventScript_1A32F2:: @ 81A32F2 @@ -4154,8 +4154,8 @@ SecretBase_RedCave1_EventScript_1A32F2:: @ 81A32F2 SecretBase_RedCave1_EventScript_1A32FB:: @ 81A32FB setvar RESULT, 0 - special 25 - hidebox 0, 0, 15, 10 + special sub_80BCE4C + erasebox 0, 0, 15, 10 msgbox SecretBase_RedCave1_Text_1A1D59, 2 end @@ -4165,22 +4165,22 @@ SecretBase_RedCave1_EventScript_1A3311:: @ 81A3311 SecretBase_RedCave1_EventScript_1A331A:: @ 81A331A checkflag 2052 - jumpif 0, SecretBase_RedCave1_EventScript_1A336E + goto_if 0, SecretBase_RedCave1_EventScript_1A336E compare RESULT, 1 - jumpeq SecretBase_RedCave1_EventScript_1A338D + goto_if_eq SecretBase_RedCave1_EventScript_1A338D lock faceplayer msgbox SecretBase_RedCave1_Text_1A2026, 5 compare RESULT, 0 - jumpeq SecretBase_RedCave1_EventScript_1A3377 + goto_if_eq SecretBase_RedCave1_EventScript_1A3377 setvar RESULT, 1 - special 25 - call SecretBase_RedCave1_EventScript_19F806 + special sub_80BCE4C + call S_DoSaveDialog compare RESULT, 0 - jumpeq SecretBase_RedCave1_EventScript_1A3377 - hidebox 0, 0, 15, 10 + goto_if_eq SecretBase_RedCave1_EventScript_1A3377 + erasebox 0, 0, 15, 10 msgbox SecretBase_RedCave1_Text_1A2095, 4 - jump SecretBase_RedCave1_EventScript_1A350A + goto SecretBase_RedCave1_EventScript_1A350A end SecretBase_RedCave1_EventScript_1A336E:: @ 81A336E @@ -4189,8 +4189,8 @@ SecretBase_RedCave1_EventScript_1A336E:: @ 81A336E SecretBase_RedCave1_EventScript_1A3377:: @ 81A3377 setvar RESULT, 0 - special 25 - hidebox 0, 0, 15, 10 + special sub_80BCE4C + erasebox 0, 0, 15, 10 msgbox SecretBase_RedCave1_Text_1A20AE, 2 end @@ -4200,22 +4200,22 @@ SecretBase_RedCave1_EventScript_1A338D:: @ 81A338D SecretBase_RedCave1_EventScript_1A3396:: @ 81A3396 checkflag 2052 - jumpif 0, SecretBase_RedCave1_EventScript_1A33EA + goto_if 0, SecretBase_RedCave1_EventScript_1A33EA compare RESULT, 1 - jumpeq SecretBase_RedCave1_EventScript_1A3409 + goto_if_eq SecretBase_RedCave1_EventScript_1A3409 lock faceplayer msgbox SecretBase_RedCave1_Text_1A236A, 5 compare RESULT, 0 - jumpeq SecretBase_RedCave1_EventScript_1A33F3 + goto_if_eq SecretBase_RedCave1_EventScript_1A33F3 setvar RESULT, 1 - special 25 - call SecretBase_RedCave1_EventScript_19F806 + special sub_80BCE4C + call S_DoSaveDialog compare RESULT, 0 - jumpeq SecretBase_RedCave1_EventScript_1A33F3 - hidebox 0, 0, 15, 10 + goto_if_eq SecretBase_RedCave1_EventScript_1A33F3 + erasebox 0, 0, 15, 10 msgbox SecretBase_RedCave1_Text_1A2405, 4 - jump SecretBase_RedCave1_EventScript_1A350A + goto SecretBase_RedCave1_EventScript_1A350A end SecretBase_RedCave1_EventScript_1A33EA:: @ 81A33EA @@ -4224,8 +4224,8 @@ SecretBase_RedCave1_EventScript_1A33EA:: @ 81A33EA SecretBase_RedCave1_EventScript_1A33F3:: @ 81A33F3 setvar RESULT, 0 - special 25 - hidebox 0, 0, 15, 10 + special sub_80BCE4C + erasebox 0, 0, 15, 10 msgbox SecretBase_RedCave1_Text_1A2420, 2 end @@ -4235,22 +4235,22 @@ SecretBase_RedCave1_EventScript_1A3409:: @ 81A3409 SecretBase_RedCave1_EventScript_1A3412:: @ 81A3412 checkflag 2052 - jumpif 0, SecretBase_RedCave1_EventScript_1A3466 + goto_if 0, SecretBase_RedCave1_EventScript_1A3466 compare RESULT, 1 - jumpeq SecretBase_RedCave1_EventScript_1A3485 + goto_if_eq SecretBase_RedCave1_EventScript_1A3485 lock faceplayer msgbox SecretBase_RedCave1_Text_1A2663, 5 compare RESULT, 0 - jumpeq SecretBase_RedCave1_EventScript_1A346F + goto_if_eq SecretBase_RedCave1_EventScript_1A346F setvar RESULT, 1 - special 25 - call SecretBase_RedCave1_EventScript_19F806 + special sub_80BCE4C + call S_DoSaveDialog compare RESULT, 0 - jumpeq SecretBase_RedCave1_EventScript_1A346F - hidebox 0, 0, 15, 10 + goto_if_eq SecretBase_RedCave1_EventScript_1A346F + erasebox 0, 0, 15, 10 msgbox SecretBase_RedCave1_Text_1A2710, 4 - jump SecretBase_RedCave1_EventScript_1A350A + goto SecretBase_RedCave1_EventScript_1A350A end SecretBase_RedCave1_EventScript_1A3466:: @ 81A3466 @@ -4259,8 +4259,8 @@ SecretBase_RedCave1_EventScript_1A3466:: @ 81A3466 SecretBase_RedCave1_EventScript_1A346F:: @ 81A346F setvar RESULT, 0 - special 25 - hidebox 0, 0, 15, 10 + special sub_80BCE4C + erasebox 0, 0, 15, 10 msgbox SecretBase_RedCave1_Text_1A2736, 2 end @@ -4270,22 +4270,22 @@ SecretBase_RedCave1_EventScript_1A3485:: @ 81A3485 SecretBase_RedCave1_EventScript_1A348E:: @ 81A348E checkflag 2052 - jumpif 0, SecretBase_RedCave1_EventScript_1A34E2 + goto_if 0, SecretBase_RedCave1_EventScript_1A34E2 compare RESULT, 1 - jumpeq SecretBase_RedCave1_EventScript_1A3501 + goto_if_eq SecretBase_RedCave1_EventScript_1A3501 lock faceplayer msgbox SecretBase_RedCave1_Text_1A2A13, 5 compare RESULT, 0 - jumpeq SecretBase_RedCave1_EventScript_1A34EB + goto_if_eq SecretBase_RedCave1_EventScript_1A34EB setvar RESULT, 1 - special 25 - call SecretBase_RedCave1_EventScript_19F806 + special sub_80BCE4C + call S_DoSaveDialog compare RESULT, 0 - jumpeq SecretBase_RedCave1_EventScript_1A34EB - hidebox 0, 0, 15, 10 + goto_if_eq SecretBase_RedCave1_EventScript_1A34EB + erasebox 0, 0, 15, 10 msgbox SecretBase_RedCave1_Text_1A2AE2, 4 - jump SecretBase_RedCave1_EventScript_1A350A + goto SecretBase_RedCave1_EventScript_1A350A end SecretBase_RedCave1_EventScript_1A34E2:: @ 81A34E2 @@ -4294,8 +4294,8 @@ SecretBase_RedCave1_EventScript_1A34E2:: @ 81A34E2 SecretBase_RedCave1_EventScript_1A34EB:: @ 81A34EB setvar RESULT, 0 - special 25 - hidebox 0, 0, 15, 10 + special sub_80BCE4C + erasebox 0, 0, 15, 10 msgbox SecretBase_RedCave1_Text_1A2AFB, 2 end @@ -4304,12 +4304,12 @@ SecretBase_RedCave1_EventScript_1A3501:: @ 81A3501 end SecretBase_RedCave1_EventScript_1A350A:: @ 81A350A - special 16 + special sub_80BCE1C setvar 0x8004, 1 setvar 0x8005, 0 - special 236 + special sub_813556C waitstate - special 0 + special ScrSpecial_HealPlayerParty release end @@ -4405,22 +4405,22 @@ BattleTower_Lobby_EventScript_1ADE46:: @ 81ADE46 FallarborTown_ContestLobby_EventScript_1ADE46:: @ 81ADE46 SlateportCity_OceanicMuseum_1F_EventScript_1ADE46:: @ 81ADE46 SlateportCity_PokemonFanClub_EventScript_1ADE46:: @ 81ADE46 - special 68 - inccounter GAME_STAT_GOT_INTERVIEWED + special sub_80BDE48 + incrementgamestat GAME_STAT_GOT_INTERVIEWED release end SlateportCity_PokemonFanClub_EventScript_1ADE4D:: @ 81ADE4D setvar 0x8005, 1 - special 67 + special sub_80BF2C4 compare RESULT, 1 - jumpeq SlateportCity_PokemonFanClub_EventScript_1ADED6 + goto_if_eq SlateportCity_PokemonFanClub_EventScript_1ADED6 copyvar 0x8009, 0x8006 msgbox SlateportCity_PokemonFanClub_Text_1A8704, 5 compare RESULT, 1 - jumpeq SlateportCity_PokemonFanClub_EventScript_1ADE84 + goto_if_eq SlateportCity_PokemonFanClub_EventScript_1ADE84 compare RESULT, 0 - jumpeq SlateportCity_PokemonFanClub_EventScript_1ADEB9 + goto_if_eq SlateportCity_PokemonFanClub_EventScript_1ADEB9 end SlateportCity_PokemonFanClub_EventScript_1ADE84:: @ 81ADE84 @@ -4432,9 +4432,9 @@ SlateportCity_PokemonFanClub_EventScript_1ADE84:: @ 81ADE84 lock faceplayer compare RESULT, 1 - jumpeq SlateportCity_PokemonFanClub_EventScript_1ADEC3 + goto_if_eq SlateportCity_PokemonFanClub_EventScript_1ADEC3 compare RESULT, 0 - jumpeq SlateportCity_PokemonFanClub_EventScript_1ADEB9 + goto_if_eq SlateportCity_PokemonFanClub_EventScript_1ADEB9 end SlateportCity_PokemonFanClub_EventScript_1ADEB9:: @ 81ADEB9 @@ -4445,7 +4445,7 @@ SlateportCity_PokemonFanClub_EventScript_1ADEB9:: @ 81ADEB9 SlateportCity_PokemonFanClub_EventScript_1ADEC3:: @ 81ADEC3 msgbox SlateportCity_PokemonFanClub_Text_1A8818, 4 setvar 0x8005, 1 - jump SlateportCity_PokemonFanClub_EventScript_1ADE46 + goto SlateportCity_PokemonFanClub_EventScript_1ADE46 end SlateportCity_PokemonFanClub_EventScript_1ADED6:: @ 81ADED6 @@ -4457,26 +4457,26 @@ SlateportCity_OceanicMuseum_1F_EventScript_1ADEE0:: @ 81ADEE0 lock faceplayer setvar 0x8005, 2 - special 67 + special sub_80BF2C4 compare RESULT, 1 - jumpeq SlateportCity_OceanicMuseum_1F_EventScript_1ADF96 + goto_if_eq SlateportCity_OceanicMuseum_1F_EventScript_1ADF96 copyvar 0x8009, 0x8006 checkflag 105 - jumpeq SlateportCity_OceanicMuseum_1F_EventScript_1ADF25 + goto_if_eq SlateportCity_OceanicMuseum_1F_EventScript_1ADF25 setflag 105 msgbox SlateportCity_OceanicMuseum_1F_Text_1A927F, 5 compare RESULT, 1 - jumpeq SlateportCity_OceanicMuseum_1F_EventScript_1ADF44 + goto_if_eq SlateportCity_OceanicMuseum_1F_EventScript_1ADF44 compare RESULT, 0 - jumpeq SlateportCity_OceanicMuseum_1F_EventScript_1ADF79 + goto_if_eq SlateportCity_OceanicMuseum_1F_EventScript_1ADF79 end SlateportCity_OceanicMuseum_1F_EventScript_1ADF25:: @ 81ADF25 msgbox SlateportCity_OceanicMuseum_1F_Text_1A934C, 5 compare RESULT, 1 - jumpeq SlateportCity_OceanicMuseum_1F_EventScript_1ADF44 + goto_if_eq SlateportCity_OceanicMuseum_1F_EventScript_1ADF44 compare RESULT, 0 - jumpeq SlateportCity_OceanicMuseum_1F_EventScript_1ADF79 + goto_if_eq SlateportCity_OceanicMuseum_1F_EventScript_1ADF79 end SlateportCity_OceanicMuseum_1F_EventScript_1ADF44:: @ 81ADF44 @@ -4488,9 +4488,9 @@ SlateportCity_OceanicMuseum_1F_EventScript_1ADF44:: @ 81ADF44 lock faceplayer compare RESULT, 1 - jumpeq SlateportCity_OceanicMuseum_1F_EventScript_1ADF83 + goto_if_eq SlateportCity_OceanicMuseum_1F_EventScript_1ADF83 compare RESULT, 0 - jumpeq SlateportCity_OceanicMuseum_1F_EventScript_1ADF79 + goto_if_eq SlateportCity_OceanicMuseum_1F_EventScript_1ADF79 end SlateportCity_OceanicMuseum_1F_EventScript_1ADF79:: @ 81ADF79 @@ -4501,7 +4501,7 @@ SlateportCity_OceanicMuseum_1F_EventScript_1ADF79:: @ 81ADF79 SlateportCity_OceanicMuseum_1F_EventScript_1ADF83:: @ 81ADF83 msgbox SlateportCity_OceanicMuseum_1F_Text_1A949A, 4 setvar 0x8005, 2 - jump SlateportCity_OceanicMuseum_1F_EventScript_1ADE46 + goto SlateportCity_OceanicMuseum_1F_EventScript_1ADE46 end SlateportCity_OceanicMuseum_1F_EventScript_1ADF96:: @ 81ADF96 @@ -4512,19 +4512,19 @@ SlateportCity_OceanicMuseum_1F_EventScript_1ADF96:: @ 81ADF96 SlateportCity_PokemonFanClub_EventScript_1ADFA0:: @ 81ADFA0 lock faceplayer - specialval RESULT, 69 + specialvar RESULT, sub_80BF544 compare RESULT, 0 - jumpeq SlateportCity_PokemonFanClub_EventScript_1ADE4D + goto_if_eq SlateportCity_PokemonFanClub_EventScript_1ADE4D setvar 0x8005, 3 - special 67 + special sub_80BF2C4 compare RESULT, 1 - jumpeq SlateportCity_PokemonFanClub_EventScript_1AE0AC + goto_if_eq SlateportCity_PokemonFanClub_EventScript_1AE0AC copyvar 0x8009, 0x8006 msgbox SlateportCity_PokemonFanClub_Text_1A82F1, 5 compare RESULT, 1 - jumpeq SlateportCity_PokemonFanClub_EventScript_1ADFE9 + goto_if_eq SlateportCity_PokemonFanClub_EventScript_1ADFE9 compare RESULT, 0 - jumpeq SlateportCity_PokemonFanClub_EventScript_1AE0A2 + goto_if_eq SlateportCity_PokemonFanClub_EventScript_1AE0A2 end SlateportCity_PokemonFanClub_EventScript_1ADFE9:: @ 81ADFE9 @@ -4539,17 +4539,17 @@ SlateportCity_PokemonFanClub_EventScript_1ADFE9:: @ 81ADFE9 SlateportCity_PokemonFanClub_EventScript_1AE020:: @ 81AE020 msgbox SlateportCity_PokemonFanClub_Text_1A8414, 4 - jump SlateportCity_PokemonFanClub_EventScript_1AE04A + goto SlateportCity_PokemonFanClub_EventScript_1AE04A end SlateportCity_PokemonFanClub_EventScript_1AE02E:: @ 81AE02E msgbox SlateportCity_PokemonFanClub_Text_1A8470, 4 - jump SlateportCity_PokemonFanClub_EventScript_1AE04A + goto SlateportCity_PokemonFanClub_EventScript_1AE04A end SlateportCity_PokemonFanClub_EventScript_1AE03C:: @ 81AE03C msgbox SlateportCity_PokemonFanClub_Text_1A84D5, 4 - jump SlateportCity_PokemonFanClub_EventScript_1AE04A + goto SlateportCity_PokemonFanClub_EventScript_1AE04A end SlateportCity_PokemonFanClub_EventScript_1AE04A:: @ 81AE04A @@ -4560,18 +4560,18 @@ SlateportCity_PokemonFanClub_EventScript_1AE04A:: @ 81AE04A lock faceplayer compare RESULT, 0 - jumpeq SlateportCity_PokemonFanClub_EventScript_1AE0A2 + goto_if_eq SlateportCity_PokemonFanClub_EventScript_1AE0A2 msgbox SlateportCity_PokemonFanClub_Text_1A852D, 4 setvar 0x8006, 1 call SlateportCity_PokemonFanClub_EventScript_1A00F3 lock faceplayer compare RESULT, 0 - jumpeq SlateportCity_PokemonFanClub_EventScript_1AE0A2 + goto_if_eq SlateportCity_PokemonFanClub_EventScript_1AE0A2 msgbox SlateportCity_PokemonFanClub_Text_1A85A6, 4 copyvar 0x8007, 0x800a setvar 0x8005, 3 - jump SlateportCity_PokemonFanClub_EventScript_1ADE46 + goto SlateportCity_PokemonFanClub_EventScript_1ADE46 end SlateportCity_PokemonFanClub_EventScript_1AE0A2:: @ 81AE0A2 @@ -4591,17 +4591,17 @@ VerdanturfTown_ContestLobby_EventScript_1AE0B6:: @ 81AE0B6 lock faceplayer checkflag 2 - jumpeq FallarborTown_ContestLobby_EventScript_1AE17E + goto_if_eq FallarborTown_ContestLobby_EventScript_1AE17E setvar 0x8005, 6 - special 67 + special sub_80BF2C4 compare RESULT, 1 - jumpeq FallarborTown_ContestLobby_EventScript_1AE17E + goto_if_eq FallarborTown_ContestLobby_EventScript_1AE17E copyvar 0x8009, 0x8006 msgbox FallarborTown_ContestLobby_Text_1A6F7C, 5 compare RESULT, 1 - jumpeq FallarborTown_ContestLobby_EventScript_1AE0F8 + goto_if_eq FallarborTown_ContestLobby_EventScript_1AE0F8 compare RESULT, 0 - jumpeq FallarborTown_ContestLobby_EventScript_1AE12D + goto_if_eq FallarborTown_ContestLobby_EventScript_1AE12D end FallarborTown_ContestLobby_EventScript_1AE0F8:: @ 81AE0F8 @@ -4613,9 +4613,9 @@ FallarborTown_ContestLobby_EventScript_1AE0F8:: @ 81AE0F8 lock faceplayer compare RESULT, 1 - jumpeq FallarborTown_ContestLobby_EventScript_1AE137 + goto_if_eq FallarborTown_ContestLobby_EventScript_1AE137 compare RESULT, 0 - jumpeq FallarborTown_ContestLobby_EventScript_1AE12D + goto_if_eq FallarborTown_ContestLobby_EventScript_1AE12D end FallarborTown_ContestLobby_EventScript_1AE12D:: @ 81AE12D @@ -4625,7 +4625,7 @@ FallarborTown_ContestLobby_EventScript_1AE12D:: @ 81AE12D FallarborTown_ContestLobby_EventScript_1AE137:: @ 81AE137 setvar 0x8004, 24 - special 70 + special SetContestCategoryStringVarForInterview msgbox FallarborTown_ContestLobby_Text_1A70A5, 4 setvar 0x8004, 11 copyvar 0x8005, 0x8009 @@ -4634,11 +4634,11 @@ FallarborTown_ContestLobby_EventScript_1AE137:: @ 81AE137 lock faceplayer compare RESULT, 0 - jumpeq FallarborTown_ContestLobby_EventScript_1AE12D + goto_if_eq FallarborTown_ContestLobby_EventScript_1AE12D msgbox FallarborTown_ContestLobby_Text_1A7153, 4 setflag 2 setvar 0x8005, 6 - jump FallarborTown_ContestLobby_EventScript_1ADE46 + goto FallarborTown_ContestLobby_EventScript_1ADE46 end FallarborTown_ContestLobby_EventScript_1AE17E:: @ 81AE17E @@ -4651,11 +4651,11 @@ LilycoveCity_ContestLobby_EventScript_1AE188:: @ 81AE188 SlateportCity_ContestLobby_EventScript_1AE188:: @ 81AE188 VerdanturfTown_ContestLobby_EventScript_1AE188:: @ 81AE188 compare 0x4086, 2 - jumpif 5, FallarborTown_ContestLobby_EventScript_1AE1FE + goto_if 5, FallarborTown_ContestLobby_EventScript_1AE1FE setvar 0x8005, 6 - special 67 + special sub_80BF2C4 compare RESULT, 1 - jumpeq FallarborTown_ContestLobby_EventScript_1AE1FE + goto_if_eq FallarborTown_ContestLobby_EventScript_1AE1FE switch 0x4088 case 0, FallarborTown_ContestLobby_EventScript_1AE1FE case 2, FallarborTown_ContestLobby_EventScript_1AE1EE @@ -4688,28 +4688,28 @@ BattleTower_Lobby_EventScript_1AE1FF:: @ 81AE1FF lock faceplayer checkflag 2 - jumpeq BattleTower_Lobby_EventScript_1AE2E3 + goto_if_eq BattleTower_Lobby_EventScript_1AE2E3 setvar 0x8005, 7 - special 67 + special sub_80BF2C4 compare RESULT, 1 - jumpeq BattleTower_Lobby_EventScript_1AE2E3 + goto_if_eq BattleTower_Lobby_EventScript_1AE2E3 copyvar 0x8009, 0x8006 msgbox BattleTower_Lobby_Text_1A776D, 5 compare RESULT, 1 - jumpeq BattleTower_Lobby_EventScript_1AE241 + goto_if_eq BattleTower_Lobby_EventScript_1AE241 compare RESULT, 0 - jumpeq BattleTower_Lobby_EventScript_1AE297 + goto_if_eq BattleTower_Lobby_EventScript_1AE297 end BattleTower_Lobby_EventScript_1AE241:: @ 81AE241 message BattleTower_Lobby_Text_1A7823 - waittext + waitmessage multichoice 19, 8, 45, 1 copyvar 0x8008, RESULT compare RESULT, 0 - callif 1, BattleTower_Lobby_EventScript_1AE2A1 + call_if 1, BattleTower_Lobby_EventScript_1AE2A1 compare RESULT, 1 - callif 1, BattleTower_Lobby_EventScript_1AE2AA + call_if 1, BattleTower_Lobby_EventScript_1AE2AA msgbox BattleTower_Lobby_Text_1A79EB, 4 setvar 0x8004, 12 copyvar 0x8005, 0x8009 @@ -4717,9 +4717,9 @@ BattleTower_Lobby_EventScript_1AE241:: @ 81AE241 lock faceplayer compare RESULT, 1 - jumpeq BattleTower_Lobby_EventScript_1AE2B3 + goto_if_eq BattleTower_Lobby_EventScript_1AE2B3 compare RESULT, 0 - jumpeq BattleTower_Lobby_EventScript_1AE2D9 + goto_if_eq BattleTower_Lobby_EventScript_1AE2D9 end BattleTower_Lobby_EventScript_1AE297:: @ 81AE297 @@ -4737,12 +4737,12 @@ BattleTower_Lobby_EventScript_1AE2AA:: @ 81AE2AA BattleTower_Lobby_EventScript_1AE2B3:: @ 81AE2B3 compare RESULT, 0 - jumpeq BattleTower_Lobby_EventScript_1AE2D9 + goto_if_eq BattleTower_Lobby_EventScript_1AE2D9 msgbox BattleTower_Lobby_Text_1A7A6E, 4 setflag 2 copyvar 0x8004, 0x8008 setvar 0x8005, 7 - jump BattleTower_Lobby_EventScript_1ADE46 + goto BattleTower_Lobby_EventScript_1ADE46 end BattleTower_Lobby_EventScript_1AE2D9:: @ 81AE2D9 @@ -4757,11 +4757,11 @@ BattleTower_Lobby_EventScript_1AE2E3:: @ 81AE2E3 BattleTower_Lobby_EventScript_1AE2ED:: @ 81AE2ED compare 0x40bc, 0 - jumpeq BattleTower_Lobby_EventScript_1AE30F + goto_if_eq BattleTower_Lobby_EventScript_1AE30F setvar 0x8005, 7 - special 67 + special sub_80BF2C4 compare RESULT, 1 - jumpeq BattleTower_Lobby_EventScript_1AE30F + goto_if_eq BattleTower_Lobby_EventScript_1AE30F clearflag 918 return @@ -4771,16 +4771,7 @@ BattleTower_Lobby_EventScript_1AE30F:: @ 81AE30F .include "data/scripts/gabby_and_ty.inc" - .include "data/scripts/bard.inc" - .include "data/scripts/hipster.inc" - .include "data/text/trader.inc" - .include "data/scripts/trader.inc" - .include "data/text/storyteller.inc" - .include "data/scripts/storyteller.inc" - .include "data/text/giddy.inc" - .include "data/scripts/giddy.inc" - .include "data/text/bard.inc" - .include "data/text/hipster.inc" + .include "data/scripts/mauville_man.inc" .include "data/field_move_scripts.inc" .include "data/item_ball_scripts.inc" @@ -4804,13 +4795,13 @@ BattleTower_Lobby_EventScript_1AE30F:: @ 81AE30F .include "data/text/magma_summit.inc" gUnknown_081B694A:: @ 81B694A - lighten 1 - darken 1 + animdarklevel 1 + setdarklevel 1 end .include "data/scripts/players_house.inc" -Event_RunningShoesManual:: @ 81B6E5A +S_RunningShoesManual:: @ 81B6E5A msgbox UnknownString_81728E3, 3 end @@ -4819,7 +4810,7 @@ Event_RunningShoesManual:: @ 81B6E5A .include "data/text/trainers.inc" -Event_RepelWoreOff:: @ 81C33E6 +S_RepelWoreOff:: @ 81C33E6 msgbox Text_RepelWoreOff, 3 end @@ -4832,29 +4823,29 @@ Text_RepelWoreOff: @ 81C33EF MauvilleCity_GameCorner_EventScript_1C407E:: @ 81C407E checkitem ITEM_COIN_CASE, 1 compare RESULT, 0 - jumpeq MauvilleCity_GameCorner_EventScript_1572B5 + goto_if_eq MauvilleCity_GameCorner_EventScript_1572B5 setvar 0x8004, 0 - event_96 2 + getpricereduction 2 compare RESULT, 0 - jumpeq MauvilleCity_GameCorner_EventScript_1C40DA + goto_if_eq MauvilleCity_GameCorner_EventScript_1C40DA addvar 0x8004, 128 - jump MauvilleCity_GameCorner_EventScript_1C40DA + goto MauvilleCity_GameCorner_EventScript_1C40DA end MauvilleCity_GameCorner_EventScript_1C40AC:: @ 81C40AC checkitem ITEM_COIN_CASE, 1 compare RESULT, 0 - jumpeq MauvilleCity_GameCorner_EventScript_1572B5 + goto_if_eq MauvilleCity_GameCorner_EventScript_1572B5 setvar 0x8004, 1 - event_96 2 + getpricereduction 2 compare RESULT, 0 - jumpeq MauvilleCity_GameCorner_EventScript_1C40DA + goto_if_eq MauvilleCity_GameCorner_EventScript_1C40DA addvar 0x8004, 128 - jump MauvilleCity_GameCorner_EventScript_1C40DA + goto MauvilleCity_GameCorner_EventScript_1C40DA end MauvilleCity_GameCorner_EventScript_1C40DA:: @ 81C40DA - special 162 + special PlayRoulette waitstate end @@ -4899,7 +4890,7 @@ GraniteCave_B1F_MapScript2_1C6BB5:: @ 81C6BB5 MtPyre_2F_MapScript2_1C6BB5:: @ 81C6BB5 SkyPillar_2F_MapScript2_1C6BB5:: @ 81C6BB5 SkyPillar_4F_MapScript2_1C6BB5:: @ 81C6BB5 - map_script_2 0x4022, 0, GraniteCave_B1F_EventScript_1C6BC5 + map_script_2 0x4022, 0, S_FallDownHole .2byte 0 GraniteCave_B1F_MapScript1_1C6BBF:: @ 81C6BBF @@ -4909,25 +4900,25 @@ SkyPillar_4F_MapScript1_1C6BBF:: @ 81C6BBF copyvar 0x4022, 0x1 end -GraniteCave_B1F_EventScript_1C6BC5:: @ 81C6BC5 +S_FallDownHole:: @ 81C6BC5 lockall - pause 20 - move 255, GraniteCave_B1F_Movement_1C6BF7 - waitmove 0 - playsfx 43 - pause 60 + delay 20 + applymovement 255, GraniteCave_B1F_Movement_1C6BF7 + waitmovement 0 + playse 43 + delay 60 warphole UNDEFINED waitstate end gUnknown_081C6BDE:: @ 81C6BDE lockall - pause 20 - move 255, GraniteCave_B1F_Movement_1C6BF7 - waitmove 0 - playsfx 43 - pause 60 - special 319 + delay 20 + applymovement 255, GraniteCave_B1F_Movement_1C6BF7 + waitmovement 0 + playse 43 + delay 60 + special sp13F_fall_to_last_warp waitstate end @@ -4958,9 +4949,9 @@ gUnknown_081C6C02:: @ 81C6C02 @ 81C6C1D lockall - braillemsg Underwater_SealedChamber_Braille_1C533D + braillemessage Underwater_SealedChamber_Braille_1C533D waitbutton - hidebox 0, 0, 29, 19 + erasebox 0, 0, 29, 19 releaseall end diff --git a/data-de/field_move_scripts.inc b/data-de/field_move_scripts.inc index d0ed559ec..497408299 100644 --- a/data-de/field_move_scripts.inc +++ b/data-de/field_move_scripts.inc @@ -1,34 +1,34 @@ -CuttableTreeScript:: @ 81B0DCC +S_CuttableTree:: @ 81B0DCC lockall checkflag 2055 - jumpif 0, CannotUseCut - checkattack MOVE_CUT + goto_if 0, CannotUseCut + checkpokemove MOVE_CUT compare RESULT, 6 - jumpeq CannotUseCut - setanimation 0, RESULT - bufferpartypoke 0, RESULT - bufferattack 1, MOVE_CUT + goto_if_eq CannotUseCut + setfieldeffect 0, RESULT + getpartypokename 0, RESULT + getmovename 1, MOVE_CUT msgbox UseCutPromptText, 5 compare RESULT, 0 - jumpeq Cut_ChoseNo + goto_if_eq Cut_ChoseNo msgbox UsedCutRockSmashText, 4 - closebutton - doanimation 2 + closemessage + dofieldeffect 2 waitstate - jump DoTreeCutMovement + goto DoTreeCutMovement end -UseCutScript:: @ 81B0E16 +S_UseCut:: @ 81B0E16 lockall - doanimation 2 + dofieldeffect 2 waitstate - jump DoTreeCutMovement + goto DoTreeCutMovement end DoTreeCutMovement: @ 81B0E21 - move LAST_TALKED, TreeCutMovement @ tree cut animation - waitmove 0 - disappear LAST_TALKED @ tree disappears + applymovement LAST_TALKED, TreeCutMovement @ tree cut animation + waitmovement 0 + removeobject LAST_TALKED @ tree disappears releaseall end @@ -42,7 +42,7 @@ CannotUseCut: @ 81B0E32 end Cut_ChoseNo: @ 81B0E3C - closebutton + closemessage releaseall end @@ -59,43 +59,43 @@ CannotUseCutText: @ 81B0E8E .string "Der ZERSCHNEIDER kann hier eingesetzt\n" .string "werden.$" -BreakableRockScript:: @ 81B0EB7 +S_BreakableRock:: @ 81B0EB7 lockall checkflag 2057 - jumpif 0, CannotUseRockSmash - checkattack MOVE_ROCK_SMASH + goto_if 0, CannotUseRockSmash + checkpokemove MOVE_ROCK_SMASH compare RESULT, 6 - jumpeq CannotUseRockSmash - setanimation 0, RESULT - bufferpartypoke 0, RESULT - bufferattack 1, MOVE_ROCK_SMASH + goto_if_eq CannotUseRockSmash + setfieldeffect 0, RESULT + getpartypokename 0, RESULT + getmovename 1, MOVE_ROCK_SMASH msgbox UseRockSmashPromptText, 5 compare RESULT, 0 - jumpeq RockSmash_ChoseNo + goto_if_eq RockSmash_ChoseNo msgbox UsedCutRockSmashText, 4 - closebutton - doanimation 37 + closemessage + dofieldeffect 37 waitstate - jump DoRockSmashMovement + goto DoRockSmashMovement end -UseRockSmashScript:: @ 81B0F01 +S_UseRockSmash:: @ 81B0F01 lockall - doanimation 37 + dofieldeffect 37 waitstate - jump DoRockSmashMovement + goto DoRockSmashMovement end DoRockSmashMovement: @ 81B0F0C - move LAST_TALKED, RockSmashMovement - waitmove 0 - disappear LAST_TALKED - specialval RESULT, 298 + applymovement LAST_TALKED, RockSmashMovement + waitmovement 0 + removeobject LAST_TALKED + specialvar RESULT, sub_810F5BC compare RESULT, 1 - jumpeq DoRockSmashMovement_Done - special 171 + goto_if_eq DoRockSmashMovement_Done + special ScrSpecial_RockSmashWildEncounter compare RESULT, 0 - jumpeq DoRockSmashMovement_Done + goto_if_eq DoRockSmashMovement_Done waitstate releaseall end @@ -114,7 +114,7 @@ CannotUseRockSmash: @ 81B0F3E end RockSmash_ChoseNo: @ 81B0F48 - closebutton + closemessage releaseall end @@ -126,30 +126,30 @@ CannotUseRockSmashText: @ 81B0F90 .string "Ein großer Felsen. Ein POKéMON könnte\n" .string "ihn vielleicht zertrümmern.$" -PushableBoulderScript:: @ 81B0FCB +S_PushableBoulder:: @ 81B0FCB lockall checkflag 2058 - jumpif 0, CannotUseStrength + goto_if 0, CannotUseStrength checkflag 2089 - jumpeq AlreadyUsedStrength - checkattack 70 + goto_if_eq AlreadyUsedStrength + checkpokemove 70 compare RESULT, 6 - jumpeq CannotUseStrength - setanimation 0, RESULT + goto_if_eq CannotUseStrength + setfieldeffect 0, RESULT msgbox UseStrengthPromptText, 5 compare RESULT, 0 - jumpeq Strength_ChoseNo - closebutton - doanimation 40 + goto_if_eq Strength_ChoseNo + closemessage + dofieldeffect 40 waitstate - jump UsedStrength + goto UsedStrength end -UseStrengthScript:: @ 81B100E +S_UseStrength:: @ 81B100E lockall - doanimation 40 + dofieldeffect 40 waitstate - jump UsedStrength + goto UsedStrength end UsedStrength: @ 81B1019 @@ -169,7 +169,7 @@ AlreadyUsedStrength: @ 81B1030 end Strength_ChoseNo: @ 81B103A - closebutton + closemessage releaseall end @@ -191,21 +191,21 @@ AlreadyUsedStrengthText: @ 81B1127 .string "STÄRKE ermöglicht es, Felsen zu\n" .string "bewegen.$" -UseWaterfallScript:: @ 81B115A +S_UseWaterfall:: @ 81B115A lockall - checkattack MOVE_WATERFALL + checkpokemove MOVE_WATERFALL compare RESULT, 6 - jumpeq Waterfall_NoMonKnows - bufferpartypoke 0, RESULT - setanimation 0, RESULT + goto_if_eq Waterfall_NoMonKnows + getpartypokename 0, RESULT + setfieldeffect 0, RESULT msgbox UseWaterfallPromptText, 5 compare RESULT, 0 - jumpeq Waterfall_Done + goto_if_eq Waterfall_Done msgbox UsedWaterfallText, 4 - doanimation 43 - jump Waterfall_Done + dofieldeffect 43 + goto Waterfall_Done -CannotUseWaterfallScript:: @ 81B1194 +S_CannotUseWaterfall:: @ 81B1194 lockall Waterfall_NoMonKnows: @ 81B1195 msgbox CannotUseWaterfallText, 4 @@ -226,18 +226,18 @@ UsedWaterfallText: @ 81B120D UseDiveScript:: @ 81B1220 lockall - checkattack MOVE_DIVE + checkpokemove MOVE_DIVE compare RESULT, 6 - jumpeq CannotUseDive - bufferpartypoke 0, RESULT - setanimation 0, RESULT - setanimation 1, 1 + goto_if_eq CannotUseDive + getpartypokename 0, RESULT + setfieldeffect 0, RESULT + setfieldeffect 1, 1 msgbox UseDivePromptText, 5 compare RESULT, 0 - jumpeq Dive_Done + goto_if_eq Dive_Done msgbox UsedDiveText, 4 - doanimation 44 - jump Dive_Done + dofieldeffect 44 + goto Dive_Done lockall CannotUseDive: @ 81B125F @@ -247,25 +247,25 @@ Dive_Done: @ 81B1267 releaseall end -UnderwaterUseDiveScript:: @ 81B1269 +S_UseDiveUnderwater:: @ 81B1269 lockall - checkattack MOVE_DIVE + checkpokemove MOVE_DIVE compare RESULT, 6 - jumpeq UnderwaterCannotUseDive - bufferpartypoke 0, RESULT - setanimation 0, RESULT - setanimation 1, 1 + goto_if_eq UnderwaterCannotUseDive + getpartypokename 0, RESULT + setfieldeffect 0, RESULT + setfieldeffect 1, 1 msgbox UnderwaterUseDivePromptText, 5 compare RESULT, 0 - jumpeq UnderwaterDive_Done + goto_if_eq UnderwaterDive_Done msgbox UsedDiveText, 4 - doanimation 44 - jump UnderwaterDive_Done + dofieldeffect 44 + goto UnderwaterDive_Done UnderwaterCannotUseDive: @ 81B12A7 lockall msgbox UnderwaterCannotUseDiveText, 4 - jump UnderwaterDive_Done + goto UnderwaterDive_Done @ not used SurfacingBlocked: @ 81B12B5 diff --git a/data-de/items.inc b/data-de/items.inc deleted file mode 100644 index ab23ef5a0..000000000 --- a/data-de/items.inc +++ /dev/null @@ -1,5236 +0,0 @@ - .align 2 -gItems:: @ 83C5564 - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "MEISTERBALL$", 14 - .2byte ITEM_MASTER_BALL - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_MasterBall - .byte 0 - .byte 0 - .byte POCKET_POKE_BALLS - .byte 0 - .4byte NULL - .4byte 2 - .4byte ItemUseInBattle_PokeBall - .4byte 0 - - .string "HYPERBALL$", 14 - .2byte ITEM_ULTRA_BALL - .2byte 1200 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_UltraBall - .byte 0 - .byte 0 - .byte POCKET_POKE_BALLS - .byte 1 - .4byte NULL - .4byte 2 - .4byte ItemUseInBattle_PokeBall - .4byte 1 - - .string "SUPERBALL$", 14 - .2byte ITEM_GREAT_BALL - .2byte 600 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_GreatBall - .byte 0 - .byte 0 - .byte POCKET_POKE_BALLS - .byte 2 - .4byte NULL - .4byte 2 - .4byte ItemUseInBattle_PokeBall - .4byte 2 - - .string "POKéBALL$", 14 - .2byte ITEM_POKE_BALL - .2byte 200 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_PokeBall - .byte 0 - .byte 0 - .byte POCKET_POKE_BALLS - .byte 3 - .4byte NULL - .4byte 2 - .4byte ItemUseInBattle_PokeBall - .4byte 3 - - .string "SAFARIBALL$", 14 - .2byte ITEM_SAFARI_BALL - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_SafariBall - .byte 0 - .byte 0 - .byte POCKET_POKE_BALLS - .byte 4 - .4byte NULL - .4byte 2 - .4byte ItemUseInBattle_PokeBall - .4byte 4 - - .string "NETZBALL$", 14 - .2byte ITEM_NET_BALL - .2byte 1000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_NetBall - .byte 0 - .byte 0 - .byte POCKET_POKE_BALLS - .byte 5 - .4byte NULL - .4byte 2 - .4byte ItemUseInBattle_PokeBall - .4byte 5 - - .string "TAUCHBALL$", 14 - .2byte ITEM_DIVE_BALL - .2byte 1000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_DiveBall - .byte 0 - .byte 0 - .byte POCKET_POKE_BALLS - .byte 6 - .4byte NULL - .4byte 2 - .4byte ItemUseInBattle_PokeBall - .4byte 6 - - .string "NESTBALL$", 14 - .2byte ITEM_NEST_BALL - .2byte 1000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_NestBall - .byte 0 - .byte 0 - .byte POCKET_POKE_BALLS - .byte 7 - .4byte NULL - .4byte 2 - .4byte ItemUseInBattle_PokeBall - .4byte 7 - - .string "WIEDERBALL$", 14 - .2byte ITEM_REPEAT_BALL - .2byte 1000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_RepeatBall - .byte 0 - .byte 0 - .byte POCKET_POKE_BALLS - .byte 8 - .4byte NULL - .4byte 2 - .4byte ItemUseInBattle_PokeBall - .4byte 8 - - .string "TIMERBALL$", 14 - .2byte ITEM_TIMER_BALL - .2byte 1000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TimerBall - .byte 0 - .byte 0 - .byte POCKET_POKE_BALLS - .byte 9 - .4byte NULL - .4byte 2 - .4byte ItemUseInBattle_PokeBall - .4byte 9 - - .string "LUXUSBALL$", 14 - .2byte ITEM_LUXURY_BALL - .2byte 1000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_LuxuryBall - .byte 0 - .byte 0 - .byte POCKET_POKE_BALLS - .byte 10 - .4byte NULL - .4byte 2 - .4byte ItemUseInBattle_PokeBall - .4byte 10 - - .string "PREMIERBALL$", 14 - .2byte ITEM_PREMIER_BALL - .2byte 200 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_PremierBall - .byte 0 - .byte 0 - .byte POCKET_POKE_BALLS - .byte 11 - .4byte NULL - .4byte 2 - .4byte ItemUseInBattle_PokeBall - .4byte 11 - - .string "TRANK$", 14 - .2byte ITEM_POTION - .2byte 300 @ price - .byte HOLD_EFFECT_NONE - .byte 20 - .4byte gItemDescription_Potion - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 1 - .4byte ItemUseOutOfBattle_Medicine - .4byte 1 - .4byte ItemUseInBattle_Medicine - .4byte 0 - - .string "GEGENGIFT$", 14 - .2byte ITEM_ANTIDOTE - .2byte 100 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Antidote - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 1 - .4byte ItemUseOutOfBattle_Medicine - .4byte 1 - .4byte ItemUseInBattle_Medicine - .4byte 0 - - .string "FEUERHEILER$", 14 - .2byte ITEM_BURN_HEAL - .2byte 250 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_BurnHeal - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 1 - .4byte ItemUseOutOfBattle_Medicine - .4byte 1 - .4byte ItemUseInBattle_Medicine - .4byte 0 - - .string "EISHEILER$", 14 - .2byte ITEM_ICE_HEAL - .2byte 250 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_IceHeal - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 1 - .4byte ItemUseOutOfBattle_Medicine - .4byte 1 - .4byte ItemUseInBattle_Medicine - .4byte 0 - - .string "AUFWECKER$", 14 - .2byte ITEM_AWAKENING - .2byte 250 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Awakening - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 1 - .4byte ItemUseOutOfBattle_Medicine - .4byte 1 - .4byte ItemUseInBattle_Medicine - .4byte 0 - - .string "PARA-HEILER$", 14 - .2byte ITEM_PARALYZE_HEAL - .2byte 200 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_ParalyzeHeal - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 1 - .4byte ItemUseOutOfBattle_Medicine - .4byte 1 - .4byte ItemUseInBattle_Medicine - .4byte 0 - - .string "TOP-GENESUNG$", 14 - .2byte ITEM_FULL_RESTORE - .2byte 3000 @ price - .byte HOLD_EFFECT_NONE - .byte 255 - .4byte gItemDescription_FullRestore - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 1 - .4byte ItemUseOutOfBattle_Medicine - .4byte 1 - .4byte ItemUseInBattle_Medicine - .4byte 0 - - .string "TOP-TRANK$", 14 - .2byte ITEM_MAX_POTION - .2byte 2500 @ price - .byte HOLD_EFFECT_NONE - .byte 255 - .4byte gItemDescription_MaxPotion - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 1 - .4byte ItemUseOutOfBattle_Medicine - .4byte 1 - .4byte ItemUseInBattle_Medicine - .4byte 0 - - .string "HYPERTRANK$", 14 - .2byte ITEM_HYPER_POTION - .2byte 1200 @ price - .byte HOLD_EFFECT_NONE - .byte 200 - .4byte gItemDescription_HyperPotion - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 1 - .4byte ItemUseOutOfBattle_Medicine - .4byte 1 - .4byte ItemUseInBattle_Medicine - .4byte 0 - - .string "SUPERTRANK$", 14 - .2byte ITEM_SUPER_POTION - .2byte 700 @ price - .byte HOLD_EFFECT_NONE - .byte 50 - .4byte gItemDescription_SuperPotion - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 1 - .4byte ItemUseOutOfBattle_Medicine - .4byte 1 - .4byte ItemUseInBattle_Medicine - .4byte 0 - - .string "HYPERHEILER$", 14 - .2byte ITEM_FULL_HEAL - .2byte 600 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_FullHeal - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 1 - .4byte ItemUseOutOfBattle_Medicine - .4byte 1 - .4byte ItemUseInBattle_Medicine - .4byte 0 - - .string "BELEBER$", 14 - .2byte ITEM_REVIVE - .2byte 1500 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Revive - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 1 - .4byte ItemUseOutOfBattle_Medicine - .4byte 1 - .4byte ItemUseInBattle_Medicine - .4byte 0 - - .string "TOP-BELEBER$", 14 - .2byte ITEM_MAX_REVIVE - .2byte 4000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_MaxRevive - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 1 - .4byte ItemUseOutOfBattle_Medicine - .4byte 1 - .4byte ItemUseInBattle_Medicine - .4byte 0 - - .string "TAFELWASSER$", 14 - .2byte ITEM_FRESH_WATER - .2byte 200 @ price - .byte HOLD_EFFECT_NONE - .byte 50 - .4byte gItemDescription_FreshWater - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 1 - .4byte ItemUseOutOfBattle_Medicine - .4byte 1 - .4byte ItemUseInBattle_Medicine - .4byte 0 - - .string "SPRUDEL$", 14 - .2byte ITEM_SODA_POP - .2byte 300 @ price - .byte HOLD_EFFECT_NONE - .byte 60 - .4byte gItemDescription_SodaPop - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 1 - .4byte ItemUseOutOfBattle_Medicine - .4byte 1 - .4byte ItemUseInBattle_Medicine - .4byte 0 - - .string "LIMONADE$", 14 - .2byte ITEM_LEMONADE - .2byte 350 @ price - .byte HOLD_EFFECT_NONE - .byte 80 - .4byte gItemDescription_Lemonade - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 1 - .4byte ItemUseOutOfBattle_Medicine - .4byte 1 - .4byte ItemUseInBattle_Medicine - .4byte 0 - - .string "KUHMUH-MILCH$", 14 - .2byte ITEM_MOOMOO_MILK - .2byte 500 @ price - .byte HOLD_EFFECT_NONE - .byte 100 - .4byte gItemDescription_MoomooMilk - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 1 - .4byte ItemUseOutOfBattle_Medicine - .4byte 1 - .4byte ItemUseInBattle_Medicine - .4byte 0 - - .string "ENERGIESTAUB$", 14 - .2byte ITEM_ENERGY_POWDER - .2byte 500 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_EnergyPowder - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 1 - .4byte ItemUseOutOfBattle_Medicine - .4byte 1 - .4byte ItemUseInBattle_Medicine - .4byte 0 - - .string "KRAFTWURZEL$", 14 - .2byte ITEM_ENERGY_ROOT - .2byte 800 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_EnergyRoot - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 1 - .4byte ItemUseOutOfBattle_Medicine - .4byte 1 - .4byte ItemUseInBattle_Medicine - .4byte 0 - - .string "HEILPUDER$", 14 - .2byte ITEM_HEAL_POWDER - .2byte 450 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_HealPowder - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 1 - .4byte ItemUseOutOfBattle_Medicine - .4byte 1 - .4byte ItemUseInBattle_Medicine - .4byte 0 - - .string "VITALKRAUT$", 14 - .2byte ITEM_REVIVAL_HERB - .2byte 2800 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_RevivalHerb - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 1 - .4byte ItemUseOutOfBattle_Medicine - .4byte 1 - .4byte ItemUseInBattle_Medicine - .4byte 0 - - .string "ÄTHER$", 14 - .2byte ITEM_ETHER - .2byte 1200 @ price - .byte HOLD_EFFECT_NONE - .byte 10 - .4byte gItemDescription_Ether - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 1 - .4byte ItemUseOutOfBattle_PPRecovery - .4byte 1 - .4byte ItemUseInBattle_PPRecovery - .4byte 0 - - .string "TOP-ÄTHER$", 14 - .2byte ITEM_MAX_ETHER - .2byte 2000 @ price - .byte HOLD_EFFECT_NONE - .byte 255 - .4byte gItemDescription_MaxEther - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 1 - .4byte ItemUseOutOfBattle_PPRecovery - .4byte 1 - .4byte ItemUseInBattle_PPRecovery - .4byte 0 - - .string "ELIXIER$", 14 - .2byte ITEM_ELIXIR - .2byte 3000 @ price - .byte HOLD_EFFECT_NONE - .byte 10 - .4byte gItemDescription_Elixir - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 1 - .4byte ItemUseOutOfBattle_PPRecovery - .4byte 1 - .4byte ItemUseInBattle_PPRecovery - .4byte 0 - - .string "TOP-ELIXIER$", 14 - .2byte ITEM_MAX_ELIXIR - .2byte 4500 @ price - .byte HOLD_EFFECT_NONE - .byte 255 - .4byte gItemDescription_MaxElixir - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 1 - .4byte ItemUseOutOfBattle_PPRecovery - .4byte 1 - .4byte ItemUseInBattle_PPRecovery - .4byte 0 - - .string "LAVAKEKS$", 14 - .2byte ITEM_LAVA_COOKIE - .2byte 200 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_LavaCookie - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 1 - .4byte ItemUseOutOfBattle_Medicine - .4byte 1 - .4byte ItemUseInBattle_Medicine - .4byte 0 - - .string "BLAUE FLÖTE$", 14 - .2byte ITEM_BLUE_FLUTE - .2byte 100 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_BlueFlute - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 1 - .4byte ItemUseOutOfBattle_Medicine - .4byte 1 - .4byte ItemUseInBattle_Medicine - .4byte 0 - - .string "GELBE FLÖTE$", 14 - .2byte ITEM_YELLOW_FLUTE - .2byte 200 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_YellowFlute - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 1 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 1 - .4byte ItemUseInBattle_Medicine - .4byte 0 - - .string "ROTE FLÖTE$", 14 - .2byte ITEM_RED_FLUTE - .2byte 300 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_RedFlute - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 1 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 1 - .4byte ItemUseInBattle_Medicine - .4byte 0 - - .string "SCHW. FLÖTE$", 14 - .2byte ITEM_BLACK_FLUTE - .2byte 400 @ price - .byte HOLD_EFFECT_NONE - .byte 50 - .4byte gItemDescription_BlackFlute - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 1 - .4byte ItemUseOutOfBattle_BlackWhiteFlute - .4byte 0 - .4byte NULL - .4byte 0 - - .string "WEISSE FLÖTE$", 14 - .2byte ITEM_WHITE_FLUTE - .2byte 500 @ price - .byte HOLD_EFFECT_NONE - .byte 150 - .4byte gItemDescription_WhiteFlute - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 1 - .4byte ItemUseOutOfBattle_BlackWhiteFlute - .4byte 0 - .4byte NULL - .4byte 0 - - .string "BEERENSAFT$", 14 - .2byte ITEM_BERRY_JUICE - .2byte 100 @ price - .byte HOLD_EFFECT_RESTORE_HP - .byte 20 - .4byte gItemDescription_BerryJuice - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 1 - .4byte ItemUseOutOfBattle_Medicine - .4byte 1 - .4byte ItemUseInBattle_Medicine - .4byte 0 - - .string "ZAUBERASCHE$", 14 - .2byte ITEM_SACRED_ASH - .2byte 200 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_SacredAsh - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 1 - .4byte ItemUseOutOfBattle_SacredAsh - .4byte 0 - .4byte NULL - .4byte 0 - - .string "KÜSTENSALZ$", 14 - .2byte ITEM_SHOAL_SALT - .2byte 20 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_ShoalSalt - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "KÜSTENSCHALE$", 14 - .2byte ITEM_SHOAL_SHELL - .2byte 20 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_ShoalShell - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "PURPURSTÜCK$", 14 - .2byte ITEM_RED_SHARD - .2byte 200 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_RedShard - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "INDIGOSTÜCK$", 14 - .2byte ITEM_BLUE_SHARD - .2byte 200 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_BlueShard - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "GELBSTÜCK$", 14 - .2byte ITEM_YELLOW_SHARD - .2byte 200 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_YellowShard - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "GRÜNSTÜCK$", 14 - .2byte ITEM_GREEN_SHARD - .2byte 200 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_GreenShard - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "KP-PLUS$", 14 - .2byte ITEM_HP_UP - .2byte 9800 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_HPUp - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 1 - .4byte ItemUseOutOfBattle_Medicine - .4byte 0 - .4byte NULL - .4byte 0 - - .string "PROTEIN$", 14 - .2byte ITEM_PROTEIN - .2byte 9800 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Protein - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 1 - .4byte ItemUseOutOfBattle_Medicine - .4byte 0 - .4byte NULL - .4byte 0 - - .string "EISEN$", 14 - .2byte ITEM_IRON - .2byte 9800 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Iron - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 1 - .4byte ItemUseOutOfBattle_Medicine - .4byte 0 - .4byte NULL - .4byte 0 - - .string "CARBON$", 14 - .2byte ITEM_CARBOS - .2byte 9800 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Carbos - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 1 - .4byte ItemUseOutOfBattle_Medicine - .4byte 0 - .4byte NULL - .4byte 0 - - .string "KALZIUM$", 14 - .2byte ITEM_CALCIUM - .2byte 9800 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Calcium - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 1 - .4byte ItemUseOutOfBattle_Medicine - .4byte 0 - .4byte NULL - .4byte 0 - - .string "SONDERBONBON$", 14 - .2byte ITEM_RARE_CANDY - .2byte 4800 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_RareCandy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 1 - .4byte ItemUseOutOfBattle_RareCandy - .4byte 0 - .4byte NULL - .4byte 0 - - .string "AP-PLUS$", 14 - .2byte ITEM_PP_UP - .2byte 9800 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_PPUp - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 1 - .4byte ItemUseOutOfBattle_PPUp - .4byte 0 - .4byte NULL - .4byte 0 - - .string "ZINK$", 14 - .2byte ITEM_ZINC - .2byte 9800 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Zinc - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 1 - .4byte ItemUseOutOfBattle_Medicine - .4byte 0 - .4byte NULL - .4byte 0 - - .string "AP-TOP$", 14 - .2byte ITEM_PP_MAX - .2byte 9800 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_PPMax - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 1 - .4byte ItemUseOutOfBattle_PPUp - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "MEGABLOCK$", 14 - .2byte ITEM_GUARD_SPEC - .2byte 700 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_GuardSpec - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 2 - .4byte ItemUseInBattle_StatIncrease - .4byte 0 - - .string "ANGRIFFPLUS$", 14 - .2byte ITEM_DIRE_HIT - .2byte 650 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_DireHit - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 2 - .4byte ItemUseInBattle_StatIncrease - .4byte 0 - - .string "X-ANGRIFF$", 14 - .2byte ITEM_X_ATTACK - .2byte 500 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_XAttack - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 2 - .4byte ItemUseInBattle_StatIncrease - .4byte 0 - - .string "X-ABWEHR$", 14 - .2byte ITEM_X_DEFEND - .2byte 550 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_XDefend - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 2 - .4byte ItemUseInBattle_StatIncrease - .4byte 0 - - .string "X-TEMPO$", 14 - .2byte ITEM_X_SPEED - .2byte 350 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_XSpeed - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 2 - .4byte ItemUseInBattle_StatIncrease - .4byte 0 - - .string "X-TREFFER$", 14 - .2byte ITEM_X_ACCURACY - .2byte 950 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_XAccuracy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 2 - .4byte ItemUseInBattle_StatIncrease - .4byte 0 - - .string "X-SPEZIAL$", 14 - .2byte ITEM_X_SPECIAL - .2byte 350 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_XSpecial - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 2 - .4byte ItemUseInBattle_StatIncrease - .4byte 0 - - .string "POKéPUPPE$", 14 - .2byte ITEM_POKE_DOLL - .2byte 1000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_PokeDoll - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 2 - .4byte ItemUseInBattle_Escape - .4byte 0 - - .string "ENECO-RUTE$", 14 - .2byte ITEM_FLUFFY_TAIL - .2byte 1000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_FluffyTail - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 2 - .4byte ItemUseInBattle_Escape - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "SUPERSCHUTZ$", 14 - .2byte ITEM_SUPER_REPEL - .2byte 500 @ price - .byte HOLD_EFFECT_NONE - .byte 200 - .4byte gItemDescription_SuperRepel - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_Repel - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TOP-SCHUTZ$", 14 - .2byte ITEM_MAX_REPEL - .2byte 700 @ price - .byte HOLD_EFFECT_NONE - .byte 250 - .4byte gItemDescription_MaxRepel - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_Repel - .4byte 0 - .4byte NULL - .4byte 0 - - .string "FLUCHTSEIL$", 14 - .2byte ITEM_ESCAPE_ROPE - .2byte 550 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_EscapeRope - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 2 - .4byte ItemUseOutOfBattle_EscapeRope - .4byte 0 - .4byte NULL - .4byte 0 - - .string "SCHUTZ$", 14 - .2byte ITEM_REPEL - .2byte 350 @ price - .byte HOLD_EFFECT_NONE - .byte 100 - .4byte gItemDescription_Repel - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_Repel - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "SONNENSTEIN$", 14 - .2byte ITEM_SUN_STONE - .2byte 2100 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_SunStone - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 1 - .4byte ItemUseOutOfBattle_EvolutionStone - .4byte 0 - .4byte NULL - .4byte 0 - - .string "MONDSTEIN$", 14 - .2byte ITEM_MOON_STONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_MoonStone - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 1 - .4byte ItemUseOutOfBattle_EvolutionStone - .4byte 0 - .4byte NULL - .4byte 0 - - .string "FEUERSTEIN$", 14 - .2byte ITEM_FIRE_STONE - .2byte 2100 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_FireStone - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 1 - .4byte ItemUseOutOfBattle_EvolutionStone - .4byte 0 - .4byte NULL - .4byte 0 - - .string "DONNERSTEIN$", 14 - .2byte ITEM_THUNDER_STONE - .2byte 2100 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_ThunderStone - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 1 - .4byte ItemUseOutOfBattle_EvolutionStone - .4byte 0 - .4byte NULL - .4byte 0 - - .string "WASSERSTEIN$", 14 - .2byte ITEM_WATER_STONE - .2byte 2100 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_WaterStone - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 1 - .4byte ItemUseOutOfBattle_EvolutionStone - .4byte 0 - .4byte NULL - .4byte 0 - - .string "BLATTSTEIN$", 14 - .2byte ITEM_LEAF_STONE - .2byte 2100 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_LeafStone - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 1 - .4byte ItemUseOutOfBattle_EvolutionStone - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "MINIPILZ$", 14 - .2byte ITEM_TINY_MUSHROOM - .2byte 500 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TinyMushroom - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "RIESENPILZ$", 14 - .2byte ITEM_BIG_MUSHROOM - .2byte 5000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_BigMushroom - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "PERLE$", 14 - .2byte ITEM_PEARL - .2byte 1400 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Pearl - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "RIESENPERLE$", 14 - .2byte ITEM_BIG_PEARL - .2byte 7500 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_BigPearl - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "STERNENSTAUB$", 14 - .2byte ITEM_STARDUST - .2byte 2000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Stardust - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "STERNENSTÜCK$", 14 - .2byte ITEM_STAR_PIECE - .2byte 9800 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_StarPiece - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "NUGGET$", 14 - .2byte ITEM_NUGGET - .2byte 10000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Nugget - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "HERZSCHUPPE$", 14 - .2byte ITEM_HEART_SCALE - .2byte 100 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_HeartScale - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "ZIGZAGBRIEF$", 14 - .2byte ITEM_ORANGE_MAIL - .2byte 50 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_OrangeMail - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 0 - .4byte ItemUseOutOfBattle_Mail - .4byte 0 - .4byte NULL - .4byte 0 - - .string "HAFENBRIEF$", 14 - .2byte ITEM_HARBOR_MAIL - .2byte 50 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_HarborMail - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 0 - .4byte ItemUseOutOfBattle_Mail - .4byte 0 - .4byte NULL - .4byte 1 - - .string "GLITZERBRIEF$", 14 - .2byte ITEM_GLITTER_MAIL - .2byte 50 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_GlitterMail - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 0 - .4byte ItemUseOutOfBattle_Mail - .4byte 0 - .4byte NULL - .4byte 2 - - .string "EILBRIEF$", 14 - .2byte ITEM_MECH_MAIL - .2byte 50 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_MechMail - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 0 - .4byte ItemUseOutOfBattle_Mail - .4byte 0 - .4byte NULL - .4byte 3 - - .string "WALDBRIEF$", 14 - .2byte ITEM_WOOD_MAIL - .2byte 50 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_WoodMail - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 0 - .4byte ItemUseOutOfBattle_Mail - .4byte 0 - .4byte NULL - .4byte 4 - - .string "WELLENBRIEF$", 14 - .2byte ITEM_WAVE_MAIL - .2byte 50 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_WaveMail - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 0 - .4byte ItemUseOutOfBattle_Mail - .4byte 0 - .4byte NULL - .4byte 5 - - .string "PERLENBRIEF$", 14 - .2byte ITEM_BEAD_MAIL - .2byte 50 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_BeadMail - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 0 - .4byte ItemUseOutOfBattle_Mail - .4byte 0 - .4byte NULL - .4byte 6 - - .string "DUNKELBRIEF$", 14 - .2byte ITEM_SHADOW_MAIL - .2byte 50 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_ShadowMail - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 0 - .4byte ItemUseOutOfBattle_Mail - .4byte 0 - .4byte NULL - .4byte 7 - - .string "TROPENBRIEF$", 14 - .2byte ITEM_TROPIC_MAIL - .2byte 50 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TropicMail - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 0 - .4byte ItemUseOutOfBattle_Mail - .4byte 0 - .4byte NULL - .4byte 8 - - .string "TRAUMBRIEF$", 14 - .2byte ITEM_DREAM_MAIL - .2byte 50 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_DreamMail - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 0 - .4byte ItemUseOutOfBattle_Mail - .4byte 0 - .4byte NULL - .4byte 9 - - .string "EDELBRIEF$", 14 - .2byte ITEM_FAB_MAIL - .2byte 50 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_FabMail - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 0 - .4byte ItemUseOutOfBattle_Mail - .4byte 0 - .4byte NULL - .4byte 10 - - .string "RETROBRIEF$", 14 - .2byte ITEM_RETRO_MAIL - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_RetroMail - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 0 - .4byte ItemUseOutOfBattle_Mail - .4byte 0 - .4byte NULL - .4byte 11 - - .string "AMRENABEERE$", 14 - .2byte ITEM_CHERI_BERRY - .2byte 20 @ price - .byte HOLD_EFFECT_CURE_PAR - .byte 0 - .4byte gItemDescription_CheriBerry - .byte 0 - .byte 0 - .byte POCKET_BERRIES - .byte 1 - .4byte ItemUseOutOfBattle_Medicine - .4byte 1 - .4byte ItemUseInBattle_Medicine - .4byte 0 - - .string "MARONBEERE$", 14 - .2byte ITEM_CHESTO_BERRY - .2byte 20 @ price - .byte HOLD_EFFECT_CURE_SLP - .byte 0 - .4byte gItemDescription_ChestoBerry - .byte 0 - .byte 0 - .byte POCKET_BERRIES - .byte 1 - .4byte ItemUseOutOfBattle_Medicine - .4byte 1 - .4byte ItemUseInBattle_Medicine - .4byte 0 - - .string "PIRSIFBEERE$", 14 - .2byte ITEM_PECHA_BERRY - .2byte 20 @ price - .byte HOLD_EFFECT_CURE_PSN - .byte 0 - .4byte gItemDescription_PechaBerry - .byte 0 - .byte 0 - .byte POCKET_BERRIES - .byte 1 - .4byte ItemUseOutOfBattle_Medicine - .4byte 1 - .4byte ItemUseInBattle_Medicine - .4byte 0 - - .string "FRAGIABEERE$", 14 - .2byte ITEM_RAWST_BERRY - .2byte 20 @ price - .byte HOLD_EFFECT_CURE_BRN - .byte 0 - .4byte gItemDescription_RawstBerry - .byte 0 - .byte 0 - .byte POCKET_BERRIES - .byte 1 - .4byte ItemUseOutOfBattle_Medicine - .4byte 1 - .4byte ItemUseInBattle_Medicine - .4byte 0 - - .string "WILBIRBEERE$", 14 - .2byte ITEM_ASPEAR_BERRY - .2byte 20 @ price - .byte HOLD_EFFECT_CURE_FRZ - .byte 0 - .4byte gItemDescription_AspearBerry - .byte 0 - .byte 0 - .byte POCKET_BERRIES - .byte 1 - .4byte ItemUseOutOfBattle_Medicine - .4byte 1 - .4byte ItemUseInBattle_Medicine - .4byte 0 - - .string "JONAGOBEERE$", 14 - .2byte ITEM_LEPPA_BERRY - .2byte 20 @ price - .byte HOLD_EFFECT_RESTORE_PP - .byte 10 - .4byte gItemDescription_LeppaBerry - .byte 0 - .byte 0 - .byte POCKET_BERRIES - .byte 1 - .4byte ItemUseOutOfBattle_PPRecovery - .4byte 1 - .4byte ItemUseInBattle_PPRecovery - .4byte 0 - - .string "SINELBEERE$", 14 - .2byte ITEM_ORAN_BERRY - .2byte 20 @ price - .byte HOLD_EFFECT_RESTORE_HP - .byte 10 - .4byte gItemDescription_OranBerry - .byte 0 - .byte 0 - .byte POCKET_BERRIES - .byte 1 - .4byte ItemUseOutOfBattle_Medicine - .4byte 1 - .4byte ItemUseInBattle_Medicine - .4byte 0 - - .string "PERSIMBEERE$", 14 - .2byte ITEM_PERSIM_BERRY - .2byte 20 @ price - .byte HOLD_EFFECT_CURE_CONFUSION - .byte 0 - .4byte gItemDescription_PersimBerry - .byte 0 - .byte 0 - .byte POCKET_BERRIES - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 1 - .4byte ItemUseInBattle_Medicine - .4byte 0 - - .string "PRUNUSBEERE$", 14 - .2byte ITEM_LUM_BERRY - .2byte 20 @ price - .byte HOLD_EFFECT_CURE_STATUS - .byte 0 - .4byte gItemDescription_LumBerry - .byte 0 - .byte 0 - .byte POCKET_BERRIES - .byte 1 - .4byte ItemUseOutOfBattle_Medicine - .4byte 1 - .4byte ItemUseInBattle_Medicine - .4byte 0 - - .string "TSITRUBEERE$", 14 - .2byte ITEM_SITRUS_BERRY - .2byte 20 @ price - .byte HOLD_EFFECT_RESTORE_HP - .byte 30 - .4byte gItemDescription_SitrusBerry - .byte 0 - .byte 0 - .byte POCKET_BERRIES - .byte 1 - .4byte ItemUseOutOfBattle_Medicine - .4byte 1 - .4byte ItemUseInBattle_Medicine - .4byte 0 - - .string "GIEFEBEERE$", 14 - .2byte ITEM_FIGY_BERRY - .2byte 20 @ price - .byte HOLD_EFFECT_CONFUSE_SPICY - .byte 8 - .4byte gItemDescription_FigyBerry - .byte 0 - .byte 0 - .byte POCKET_BERRIES - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "WIKIBEERE$", 14 - .2byte ITEM_WIKI_BERRY - .2byte 20 @ price - .byte HOLD_EFFECT_CONFUSE_DRY - .byte 8 - .4byte gItemDescription_WikiBerry - .byte 0 - .byte 0 - .byte POCKET_BERRIES - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "MAGOBEERE$", 14 - .2byte ITEM_MAGO_BERRY - .2byte 20 @ price - .byte HOLD_EFFECT_CONFUSE_SWEET - .byte 8 - .4byte gItemDescription_MagoBerry - .byte 0 - .byte 0 - .byte POCKET_BERRIES - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "GAUVEBEERE$", 14 - .2byte ITEM_AGUAV_BERRY - .2byte 20 @ price - .byte HOLD_EFFECT_CONFUSE_BITTER - .byte 8 - .4byte gItemDescription_AguavBerry - .byte 0 - .byte 0 - .byte POCKET_BERRIES - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "YAPABEERE$", 14 - .2byte ITEM_IAPAPA_BERRY - .2byte 20 @ price - .byte HOLD_EFFECT_CONFUSE_SOUR - .byte 8 - .4byte gItemDescription_IapapaBerry - .byte 0 - .byte 0 - .byte POCKET_BERRIES - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "HIMMIHBEERE$", 14 - .2byte ITEM_RAZZ_BERRY - .2byte 20 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_RazzBerry - .byte 0 - .byte 0 - .byte POCKET_BERRIES - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "MORBBEERE$", 14 - .2byte ITEM_BLUK_BERRY - .2byte 20 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_BlukBerry - .byte 0 - .byte 0 - .byte POCKET_BERRIES - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "NANABBEERE$", 14 - .2byte ITEM_NANAB_BERRY - .2byte 20 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_NanabBerry - .byte 0 - .byte 0 - .byte POCKET_BERRIES - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "NIRBEBEERE$", 14 - .2byte ITEM_WEPEAR_BERRY - .2byte 20 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_WepearBerry - .byte 0 - .byte 0 - .byte POCKET_BERRIES - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "SANANABEERE$", 14 - .2byte ITEM_PINAP_BERRY - .2byte 20 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_PinapBerry - .byte 0 - .byte 0 - .byte POCKET_BERRIES - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "GRANABEERE$", 14 - .2byte ITEM_POMEG_BERRY - .2byte 20 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_PomegBerry - .byte 0 - .byte 0 - .byte POCKET_BERRIES - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "SETANGBEERE$", 14 - .2byte ITEM_KELPSY_BERRY - .2byte 20 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_KelpsyBerry - .byte 0 - .byte 0 - .byte POCKET_BERRIES - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "QUALOTBEERE$", 14 - .2byte ITEM_QUALOT_BERRY - .2byte 20 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_QualotBerry - .byte 0 - .byte 0 - .byte POCKET_BERRIES - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "HONMELBEERE$", 14 - .2byte ITEM_HONDEW_BERRY - .2byte 20 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_HondewBerry - .byte 0 - .byte 0 - .byte POCKET_BERRIES - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "LABRUSBEERE$", 14 - .2byte ITEM_GREPA_BERRY - .2byte 20 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_GrepaBerry - .byte 0 - .byte 0 - .byte POCKET_BERRIES - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TAMOTBEERE$", 14 - .2byte ITEM_TAMATO_BERRY - .2byte 20 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TamatoBerry - .byte 0 - .byte 0 - .byte POCKET_BERRIES - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "SAIMBEERE$", 14 - .2byte ITEM_CORNN_BERRY - .2byte 20 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_CornnBerry - .byte 0 - .byte 0 - .byte POCKET_BERRIES - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "MAGOSTBEERE$", 14 - .2byte ITEM_MAGOST_BERRY - .2byte 20 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_MagostBerry - .byte 0 - .byte 0 - .byte POCKET_BERRIES - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "RABUTABEERE$", 14 - .2byte ITEM_RABUTA_BERRY - .2byte 20 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_RabutaBerry - .byte 0 - .byte 0 - .byte POCKET_BERRIES - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TRONZIBEERE$", 14 - .2byte ITEM_NOMEL_BERRY - .2byte 20 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_NomelBerry - .byte 0 - .byte 0 - .byte POCKET_BERRIES - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "KIWANBEERE$", 14 - .2byte ITEM_SPELON_BERRY - .2byte 20 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_SpelonBerry - .byte 0 - .byte 0 - .byte POCKET_BERRIES - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "PALLMBEERE$", 14 - .2byte ITEM_PAMTRE_BERRY - .2byte 20 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_PamtreBerry - .byte 0 - .byte 0 - .byte POCKET_BERRIES - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "WASMELBEERE$", 14 - .2byte ITEM_WATMEL_BERRY - .2byte 20 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_WatmelBerry - .byte 0 - .byte 0 - .byte POCKET_BERRIES - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "DURINBEERE$", 14 - .2byte ITEM_DURIN_BERRY - .2byte 20 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_DurinBerry - .byte 0 - .byte 0 - .byte POCKET_BERRIES - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "MYRTILBEERE$", 14 - .2byte ITEM_BELUE_BERRY - .2byte 20 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_BelueBerry - .byte 0 - .byte 0 - .byte POCKET_BERRIES - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "LYDZIBEERE$", 14 - .2byte ITEM_LIECHI_BERRY - .2byte 20 @ price - .byte HOLD_EFFECT_ATTACK_UP - .byte 4 - .4byte gItemDescription_LiechiBerry - .byte 0 - .byte 0 - .byte POCKET_BERRIES - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "LINGANBEERE$", 14 - .2byte ITEM_GANLON_BERRY - .2byte 20 @ price - .byte HOLD_EFFECT_DEFENSE_UP - .byte 4 - .4byte gItemDescription_GanlonBerry - .byte 0 - .byte 0 - .byte POCKET_BERRIES - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "SALKABEERE$", 14 - .2byte ITEM_SALAC_BERRY - .2byte 20 @ price - .byte HOLD_EFFECT_SPEED_UP - .byte 4 - .4byte gItemDescription_SalacBerry - .byte 0 - .byte 0 - .byte POCKET_BERRIES - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TAHAYBEERE$", 14 - .2byte ITEM_PETAYA_BERRY - .2byte 20 @ price - .byte HOLD_EFFECT_SP_ATTACK_UP - .byte 4 - .4byte gItemDescription_PetayaBerry - .byte 0 - .byte 0 - .byte POCKET_BERRIES - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "APIKOBEERE$", 14 - .2byte ITEM_APICOT_BERRY - .2byte 20 @ price - .byte HOLD_EFFECT_SP_DEFENSE_UP - .byte 4 - .4byte gItemDescription_ApicotBerry - .byte 0 - .byte 0 - .byte POCKET_BERRIES - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "LANSATBEERE$", 14 - .2byte ITEM_LANSAT_BERRY - .2byte 20 @ price - .byte HOLD_EFFECT_CRITICAL_UP - .byte 4 - .4byte gItemDescription_LansatBerry - .byte 0 - .byte 0 - .byte POCKET_BERRIES - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "KRAMBOBEERE$", 14 - .2byte ITEM_STARF_BERRY - .2byte 20 @ price - .byte HOLD_EFFECT_RANDOM_STAT_UP - .byte 4 - .4byte gItemDescription_StarfBerry - .byte 0 - .byte 0 - .byte POCKET_BERRIES - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "ENIGMABEERE$", 14 - .2byte ITEM_ENIGMA_BERRY - .2byte 20 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_EnigmaBerry - .byte 0 - .byte 0 - .byte POCKET_BERRIES - .byte 4 - .4byte ItemUseOutOfBattle_EnigmaBerry - .4byte 1 - .4byte ItemUseInBattle_EnigmaBerry - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "BLENDPUDER$", 14 - .2byte ITEM_BRIGHT_POWDER - .2byte 10 @ price - .byte HOLD_EFFECT_EVASION_UP - .byte 10 - .4byte gItemDescription_BrightPowder - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "SCHLOHKRAUT$", 14 - .2byte ITEM_WHITE_HERB - .2byte 100 @ price - .byte HOLD_EFFECT_RESTORE_STATS - .byte 0 - .4byte gItemDescription_WhiteHerb - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "MACHOBAND$", 14 - .2byte ITEM_MACHO_BRACE - .2byte 3000 @ price - .byte HOLD_EFFECT_MACHO_BRACE - .byte 0 - .4byte gItemDescription_MachoBrace - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "EP-TEILER$", 14 - .2byte ITEM_EXP_SHARE - .2byte 3000 @ price - .byte HOLD_EFFECT_EXP_SHARE - .byte 0 - .4byte gItemDescription_ExpShare - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "FLINKKLAUE$", 14 - .2byte ITEM_QUICK_CLAW - .2byte 100 @ price - .byte HOLD_EFFECT_QUICK_CLAW - .byte 20 - .4byte gItemDescription_QuickClaw - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "SANFTGLOCKE$", 14 - .2byte ITEM_SOOTHE_BELL - .2byte 100 @ price - .byte HOLD_EFFECT_HAPPINESS_UP - .byte 0 - .4byte gItemDescription_SootheBell - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "MENTALKRAUT$", 14 - .2byte ITEM_MENTAL_HERB - .2byte 100 @ price - .byte HOLD_EFFECT_CURE_ATTRACT - .byte 0 - .4byte gItemDescription_MentalHerb - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "WAHLBAND$", 14 - .2byte ITEM_CHOICE_BAND - .2byte 100 @ price - .byte HOLD_EFFECT_CHOICE_BAND - .byte 0 - .4byte gItemDescription_ChoiceBand - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "KING-STEIN$", 14 - .2byte ITEM_KINGS_ROCK - .2byte 100 @ price - .byte HOLD_EFFECT_FLINCH - .byte 10 - .4byte gItemDescription_KingsRock - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "SILBERSTAUB$", 14 - .2byte ITEM_SILVER_POWDER - .2byte 100 @ price - .byte HOLD_EFFECT_BUG_POWER - .byte 10 - .4byte gItemDescription_SilverPowder - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "MÜNZAMULETT$", 14 - .2byte ITEM_AMULET_COIN - .2byte 100 @ price - .byte HOLD_EFFECT_DOUBLE_PRIZE - .byte 10 - .4byte gItemDescription_AmuletCoin - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "SCHUTZBAND$", 14 - .2byte ITEM_CLEANSE_TAG - .2byte 200 @ price - .byte HOLD_EFFECT_REPEL - .byte 0 - .4byte gItemDescription_CleanseTag - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "SEELENTAU$", 14 - .2byte ITEM_SOUL_DEW - .2byte 200 @ price - .byte HOLD_EFFECT_SOUL_DEW - .byte 0 - .4byte gItemDescription_SoulDew - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "ABYSSZAHN$", 14 - .2byte ITEM_DEEP_SEA_TOOTH - .2byte 200 @ price - .byte HOLD_EFFECT_DEEP_SEA_TOOTH - .byte 0 - .4byte gItemDescription_DeepSeaTooth - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "ABYSSPLATTE$", 14 - .2byte ITEM_DEEP_SEA_SCALE - .2byte 200 @ price - .byte HOLD_EFFECT_DEEP_SEA_SCALE - .byte 0 - .4byte gItemDescription_DeepSeaScale - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "RAUCHBALL$", 14 - .2byte ITEM_SMOKE_BALL - .2byte 200 @ price - .byte HOLD_EFFECT_CAN_ALWAYS_RUN - .byte 0 - .4byte gItemDescription_SmokeBall - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "EWIGSTEIN$", 14 - .2byte ITEM_EVERSTONE - .2byte 200 @ price - .byte HOLD_EFFECT_PREVENT_EVOLVE - .byte 0 - .4byte gItemDescription_Everstone - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "FOKUS-BAND$", 14 - .2byte ITEM_FOCUS_BAND - .2byte 200 @ price - .byte HOLD_EFFECT_FOCUS_BAND - .byte 10 - .4byte gItemDescription_FocusBand - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "GLÜCKS-EI$", 14 - .2byte ITEM_LUCKY_EGG - .2byte 200 @ price - .byte HOLD_EFFECT_LUCKY_EGG - .byte 0 - .4byte gItemDescription_LuckyEgg - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "SCOPE-LINSE$", 14 - .2byte ITEM_SCOPE_LENS - .2byte 200 @ price - .byte HOLD_EFFECT_SCOPE_LENS - .byte 0 - .4byte gItemDescription_ScopeLens - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "METALLMANTEL$", 14 - .2byte ITEM_METAL_COAT - .2byte 100 @ price - .byte HOLD_EFFECT_STEEL_POWER - .byte 10 - .4byte gItemDescription_MetalCoat - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "ÜBERRESTE$", 14 - .2byte ITEM_LEFTOVERS - .2byte 200 @ price - .byte HOLD_EFFECT_LEFTOVERS - .byte 10 - .4byte gItemDescription_Leftovers - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "DRACHENHAUT$", 14 - .2byte ITEM_DRAGON_SCALE - .2byte 2100 @ price - .byte HOLD_EFFECT_DRAGON_SCALE - .byte 10 - .4byte gItemDescription_DragonScale - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "KUGELBLITZ$", 14 - .2byte ITEM_LIGHT_BALL - .2byte 100 @ price - .byte HOLD_EFFECT_LIGHT_BALL - .byte 0 - .4byte gItemDescription_LightBall - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "PUDERSAND$", 14 - .2byte ITEM_SOFT_SAND - .2byte 100 @ price - .byte HOLD_EFFECT_GROUND_POWER - .byte 10 - .4byte gItemDescription_SoftSand - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "GRANITSTEIN$", 14 - .2byte ITEM_HARD_STONE - .2byte 100 @ price - .byte HOLD_EFFECT_ROCK_POWER - .byte 10 - .4byte gItemDescription_HardStone - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "WUNDERSAAT$", 14 - .2byte ITEM_MIRACLE_SEED - .2byte 100 @ price - .byte HOLD_EFFECT_GRASS_POWER - .byte 10 - .4byte gItemDescription_MiracleSeed - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "SCHATTENGLAS$", 14 - .2byte ITEM_BLACK_GLASSES - .2byte 100 @ price - .byte HOLD_EFFECT_DARK_POWER - .byte 10 - .4byte gItemDescription_BlackGlasses - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "SCHWARZGURT$", 14 - .2byte ITEM_BLACK_BELT - .2byte 100 @ price - .byte HOLD_EFFECT_FIGHTING_POWER - .byte 10 - .4byte gItemDescription_BlackBelt - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "MAGNET$", 14 - .2byte ITEM_MAGNET - .2byte 100 @ price - .byte HOLD_EFFECT_ELECTRIC_POWER - .byte 10 - .4byte gItemDescription_Magnet - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "ZAUBERWASSER$", 14 - .2byte ITEM_MYSTIC_WATER - .2byte 100 @ price - .byte HOLD_EFFECT_WATER_POWER - .byte 10 - .4byte gItemDescription_MysticWater - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "HACKATTACK$", 14 - .2byte ITEM_SHARP_BEAK - .2byte 100 @ price - .byte HOLD_EFFECT_FLYING_POWER - .byte 10 - .4byte gItemDescription_SharpBeak - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "GIFTSTICH$", 14 - .2byte ITEM_POISON_BARB - .2byte 100 @ price - .byte HOLD_EFFECT_POISON_POWER - .byte 10 - .4byte gItemDescription_PoisonBarb - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "EWIGES EIS$", 14 - .2byte ITEM_NEVER_MELT_ICE - .2byte 100 @ price - .byte HOLD_EFFECT_ICE_POWER - .byte 10 - .4byte gItemDescription_NeverMeltIce - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "BANNSTICKER$", 14 - .2byte ITEM_SPELL_TAG - .2byte 100 @ price - .byte HOLD_EFFECT_GHOST_POWER - .byte 10 - .4byte gItemDescription_SpellTag - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "KRÜMMLÖFFEL$", 14 - .2byte ITEM_TWISTED_SPOON - .2byte 100 @ price - .byte HOLD_EFFECT_PSYCHIC_POWER - .byte 10 - .4byte gItemDescription_TwistedSpoon - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "HOLZKOHLE$", 14 - .2byte ITEM_CHARCOAL - .2byte 9800 @ price - .byte HOLD_EFFECT_FIRE_POWER - .byte 10 - .4byte gItemDescription_Charcoal - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "DRACHENZAHN$", 14 - .2byte ITEM_DRAGON_FANG - .2byte 100 @ price - .byte HOLD_EFFECT_DRAGON_POWER - .byte 10 - .4byte gItemDescription_DragonFang - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "SEIDENSCHAL$", 14 - .2byte ITEM_SILK_SCARF - .2byte 100 @ price - .byte HOLD_EFFECT_NORMAL_POWER - .byte 10 - .4byte gItemDescription_SilkScarf - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "UP-GRADE$", 14 - .2byte ITEM_UP_GRADE - .2byte 2100 @ price - .byte HOLD_EFFECT_UP_GRADE - .byte 0 - .4byte gItemDescription_UpGrade - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "SEEGESANG$", 14 - .2byte ITEM_SHELL_BELL - .2byte 200 @ price - .byte HOLD_EFFECT_SHELL_BELL - .byte 8 - .4byte gItemDescription_ShellBell - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "SEERAUCH$", 14 - .2byte ITEM_SEA_INCENSE - .2byte 9600 @ price - .byte HOLD_EFFECT_WATER_POWER - .byte 5 - .4byte gItemDescription_SeaIncense - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "LAXRAUCH$", 14 - .2byte ITEM_LAX_INCENSE - .2byte 9600 @ price - .byte HOLD_EFFECT_EVASION_UP - .byte 5 - .4byte gItemDescription_LaxIncense - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "LUCKY PUNCH$", 14 - .2byte ITEM_LUCKY_PUNCH - .2byte 10 @ price - .byte HOLD_EFFECT_LUCKY_PUNCH - .byte 0 - .4byte gItemDescription_LuckyPunch - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "METALLSTAUB$", 14 - .2byte ITEM_METAL_POWDER - .2byte 10 @ price - .byte HOLD_EFFECT_METAL_POWDER - .byte 0 - .4byte gItemDescription_MetalPowder - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "KAMPFKNOCHEN$", 14 - .2byte ITEM_THICK_CLUB - .2byte 500 @ price - .byte HOLD_EFFECT_THICK_CLUB - .byte 0 - .4byte gItemDescription_ThickClub - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "LAUCHSTANGE$", 14 - .2byte ITEM_STICK - .2byte 200 @ price - .byte HOLD_EFFECT_STICK - .byte 0 - .4byte gItemDescription_Stick - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "ROTER SCHAL$", 14 - .2byte ITEM_RED_SCARF - .2byte 100 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_RedScarf - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "BLAUER SCHAL$", 14 - .2byte ITEM_BLUE_SCARF - .2byte 100 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_BlueScarf - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "ROSA SCHAL$", 14 - .2byte ITEM_PINK_SCARF - .2byte 100 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_PinkScarf - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "GRÜNER SCHAL$", 14 - .2byte ITEM_GREEN_SCARF - .2byte 100 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_GreenScarf - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "GELBER SCHAL$", 14 - .2byte ITEM_YELLOW_SCARF - .2byte 100 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_YellowScarf - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "EILRAD$", 14 - .2byte ITEM_MACH_BIKE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_MachBike - .byte 1 - .byte 1 - .byte POCKET_KEY_ITEMS - .byte 2 - .4byte ItemUseOutOfBattle_Bike - .4byte 0 - .4byte NULL - .4byte 0 - - .string "MÜNZKORB$", 14 - .2byte ITEM_COIN_CASE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_CoinCase - .byte 1 - .byte 0 - .byte POCKET_KEY_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CoinCase - .4byte 0 - .4byte NULL - .4byte 0 - - .string "DETEKTOR$", 14 - .2byte ITEM_ITEMFINDER - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Itemfinder - .byte 1 - .byte 1 - .byte POCKET_KEY_ITEMS - .byte 2 - .4byte ItemUseOutOfBattle_Itemfinder - .4byte 0 - .4byte NULL - .4byte 0 - - .string "ANGEL$", 14 - .2byte ITEM_OLD_ROD - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_OldRod - .byte 1 - .byte 1 - .byte POCKET_KEY_ITEMS - .byte 2 - .4byte ItemUseOutOfBattle_Rod - .4byte 0 - .4byte NULL - .4byte 0 - - .string "PROFIANGEL$", 14 - .2byte ITEM_GOOD_ROD - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_GoodRod - .byte 1 - .byte 1 - .byte POCKET_KEY_ITEMS - .byte 2 - .4byte ItemUseOutOfBattle_Rod - .4byte 0 - .4byte NULL - .4byte 1 - - .string "SUPERANGEL$", 14 - .2byte ITEM_SUPER_ROD - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_SuperRod - .byte 1 - .byte 1 - .byte POCKET_KEY_ITEMS - .byte 2 - .4byte ItemUseOutOfBattle_Rod - .4byte 0 - .4byte NULL - .4byte 2 - - .string "BOOTSTICKET$", 14 - .2byte ITEM_SS_TICKET - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_SSTicket - .byte 1 - .byte 0 - .byte POCKET_KEY_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "WETTB.-KARTE$", 14 - .2byte ITEM_CONTEST_PASS - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_ContestPass - .byte 1 - .byte 0 - .byte POCKET_KEY_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "WAILMERKANNE$", 14 - .2byte ITEM_WAILMER_PAIL - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_WailmerPail - .byte 1 - .byte 0 - .byte POCKET_KEY_ITEMS - .byte 2 - .4byte ItemUseOutOfBattle_WailmerPail - .4byte 0 - .4byte NULL - .4byte 0 - - .string "DEVON-WAREN$", 14 - .2byte ITEM_DEVON_GOODS - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_DevonGoods - .byte 2 - .byte 0 - .byte POCKET_KEY_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "ASCHETASCHE$", 14 - .2byte ITEM_SOOT_SACK - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_SootSack - .byte 1 - .byte 0 - .byte POCKET_KEY_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "KELLERÖFFNER$", 14 - .2byte ITEM_BASEMENT_KEY - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_BasementKey - .byte 1 - .byte 0 - .byte POCKET_KEY_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "KUNSTRAD$", 14 - .2byte ITEM_ACRO_BIKE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_AcroBike - .byte 1 - .byte 1 - .byte POCKET_KEY_ITEMS - .byte 2 - .4byte ItemUseOutOfBattle_Bike - .4byte 0 - .4byte NULL - .4byte 1 - - .string "{POKEBLOCK}BOX$", 14 - .2byte ITEM_POKEBLOCK_CASE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_PokeblockCase - .byte 1 - .byte 1 - .byte POCKET_KEY_ITEMS - .byte 3 - .4byte ItemUseOutOfBattle_PokeblockCase - .4byte 0 - .4byte NULL - .4byte 0 - - .string "BRIEF$", 14 - .2byte ITEM_LETTER - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Letter - .byte 2 - .byte 0 - .byte POCKET_KEY_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "ÄON-TICKET$", 14 - .2byte ITEM_EON_TICKET - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_EonTicket - .byte 1 - .byte 0 - .byte POCKET_KEY_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 1 - - .string "ROTE KUGEL$", 14 - .2byte ITEM_RED_ORB - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_RedOrb - .byte 2 - .byte 0 - .byte POCKET_KEY_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "BLAUE KUGEL$", 14 - .2byte ITEM_BLUE_ORB - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_BlueOrb - .byte 2 - .byte 0 - .byte POCKET_KEY_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "SCANNER$", 14 - .2byte ITEM_SCANNER - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Scanner - .byte 1 - .byte 0 - .byte POCKET_KEY_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "WÜSTENGLAS$", 14 - .2byte ITEM_GO_GOGGLES - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_GoGoggles - .byte 1 - .byte 0 - .byte POCKET_KEY_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "METEORIT$", 14 - .2byte ITEM_METEORITE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Meteorite - .byte 1 - .byte 0 - .byte POCKET_KEY_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "K1-SCHLÜSSEL$", 14 - .2byte ITEM_ROOM_1_KEY - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Room1Key - .byte 1 - .byte 0 - .byte POCKET_KEY_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "K2-SCHLÜSSEL$", 14 - .2byte ITEM_ROOM_2_KEY - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Room2Key - .byte 1 - .byte 0 - .byte POCKET_KEY_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "K4-SCHLÜSSEL$", 14 - .2byte ITEM_ROOM_4_KEY - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Room4Key - .byte 1 - .byte 0 - .byte POCKET_KEY_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "K6-SCHLÜSSEL$", 14 - .2byte ITEM_ROOM_6_KEY - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Room6Key - .byte 1 - .byte 0 - .byte POCKET_KEY_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "L.-SCHLÜSSEL$", 14 - .2byte ITEM_STORAGE_KEY - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_StorageKey - .byte 1 - .byte 0 - .byte POCKET_KEY_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "WURZELFOSSIL$", 14 - .2byte ITEM_ROOT_FOSSIL - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_RootFossil - .byte 1 - .byte 0 - .byte POCKET_KEY_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "KLAUENFOSSIL$", 14 - .2byte ITEM_CLAW_FOSSIL - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_ClawFossil - .byte 1 - .byte 0 - .byte POCKET_KEY_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "DEVON-SCOPE$", 14 - .2byte ITEM_DEVON_SCOPE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_DevonScope - .byte 1 - .byte 0 - .byte POCKET_KEY_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TM01$", 14 - .2byte ITEM_TM01 - .2byte 3000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TM01 - .byte 0 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TM02$", 14 - .2byte ITEM_TM02 - .2byte 3000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TM02 - .byte 0 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TM03$", 14 - .2byte ITEM_TM03 - .2byte 3000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TM03 - .byte 0 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TM04$", 14 - .2byte ITEM_TM04 - .2byte 3000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TM04 - .byte 0 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TM05$", 14 - .2byte ITEM_TM05 - .2byte 1000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TM05 - .byte 0 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TM06$", 14 - .2byte ITEM_TM06 - .2byte 3000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TM06 - .byte 0 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TM07$", 14 - .2byte ITEM_TM07 - .2byte 3000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TM07 - .byte 0 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TM08$", 14 - .2byte ITEM_TM08 - .2byte 3000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TM08 - .byte 0 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TM09$", 14 - .2byte ITEM_TM09 - .2byte 3000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TM09 - .byte 0 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TM10$", 14 - .2byte ITEM_TM10 - .2byte 3000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TM10 - .byte 0 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TM11$", 14 - .2byte ITEM_TM11 - .2byte 2000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TM11 - .byte 0 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TM12$", 14 - .2byte ITEM_TM12 - .2byte 3000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TM12 - .byte 0 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TM13$", 14 - .2byte ITEM_TM13 - .2byte 3000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TM13 - .byte 0 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TM14$", 14 - .2byte ITEM_TM14 - .2byte 5500 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TM14 - .byte 0 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TM15$", 14 - .2byte ITEM_TM15 - .2byte 7500 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TM15 - .byte 0 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TM16$", 14 - .2byte ITEM_TM16 - .2byte 3000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TM16 - .byte 0 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TM17$", 14 - .2byte ITEM_TM17 - .2byte 3000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TM17 - .byte 0 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TM18$", 14 - .2byte ITEM_TM18 - .2byte 2000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TM18 - .byte 0 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TM19$", 14 - .2byte ITEM_TM19 - .2byte 3000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TM19 - .byte 0 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TM20$", 14 - .2byte ITEM_TM20 - .2byte 3000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TM20 - .byte 0 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TM21$", 14 - .2byte ITEM_TM21 - .2byte 1000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TM21 - .byte 0 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TM22$", 14 - .2byte ITEM_TM22 - .2byte 3000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TM22 - .byte 0 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TM23$", 14 - .2byte ITEM_TM23 - .2byte 3000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TM23 - .byte 0 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TM24$", 14 - .2byte ITEM_TM24 - .2byte 3000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TM24 - .byte 0 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TM25$", 14 - .2byte ITEM_TM25 - .2byte 5500 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TM25 - .byte 0 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TM26$", 14 - .2byte ITEM_TM26 - .2byte 3000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TM26 - .byte 0 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TM27$", 14 - .2byte ITEM_TM27 - .2byte 1000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TM27 - .byte 0 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TM28$", 14 - .2byte ITEM_TM28 - .2byte 2000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TM28 - .byte 0 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TM29$", 14 - .2byte ITEM_TM29 - .2byte 2000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TM29 - .byte 0 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TM30$", 14 - .2byte ITEM_TM30 - .2byte 3000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TM30 - .byte 0 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TM31$", 14 - .2byte ITEM_TM31 - .2byte 3000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TM31 - .byte 0 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TM32$", 14 - .2byte ITEM_TM32 - .2byte 2000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TM32 - .byte 0 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TM33$", 14 - .2byte ITEM_TM33 - .2byte 3000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TM33 - .byte 0 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TM34$", 14 - .2byte ITEM_TM34 - .2byte 3000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TM34 - .byte 0 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TM35$", 14 - .2byte ITEM_TM35 - .2byte 3000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TM35 - .byte 0 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TM36$", 14 - .2byte ITEM_TM36 - .2byte 1000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TM36 - .byte 0 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TM37$", 14 - .2byte ITEM_TM37 - .2byte 2000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TM37 - .byte 0 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TM38$", 14 - .2byte ITEM_TM38 - .2byte 5500 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TM38 - .byte 0 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TM39$", 14 - .2byte ITEM_TM39 - .2byte 3000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TM39 - .byte 0 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TM40$", 14 - .2byte ITEM_TM40 - .2byte 3000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TM40 - .byte 0 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TM41$", 14 - .2byte ITEM_TM41 - .2byte 3000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TM41 - .byte 0 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TM42$", 14 - .2byte ITEM_TM42 - .2byte 3000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TM42 - .byte 0 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TM43$", 14 - .2byte ITEM_TM43 - .2byte 3000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TM43 - .byte 0 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TM44$", 14 - .2byte ITEM_TM44 - .2byte 3000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TM44 - .byte 0 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TM45$", 14 - .2byte ITEM_TM45 - .2byte 3000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TM45 - .byte 0 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TM46$", 14 - .2byte ITEM_TM46 - .2byte 3000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TM46 - .byte 0 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TM47$", 14 - .2byte ITEM_TM47 - .2byte 3000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TM47 - .byte 0 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TM48$", 14 - .2byte ITEM_TM48 - .2byte 3000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TM48 - .byte 0 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TM49$", 14 - .2byte ITEM_TM49 - .2byte 3000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TM49 - .byte 0 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TM50$", 14 - .2byte ITEM_TM50 - .2byte 3000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TM50 - .byte 0 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "VM01$", 14 - .2byte ITEM_HM01 - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_HM01 - .byte 1 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "VM02$", 14 - .2byte ITEM_HM02 - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_HM02 - .byte 1 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "VM03$", 14 - .2byte ITEM_HM03 - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_HM03 - .byte 1 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "VM04$", 14 - .2byte ITEM_HM04 - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_HM04 - .byte 1 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "VM05$", 14 - .2byte ITEM_HM05 - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_HM05 - .byte 1 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "VM06$", 14 - .2byte ITEM_HM06 - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_HM06 - .byte 1 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "VM07$", 14 - .2byte ITEM_HM07 - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_HM07 - .byte 1 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "VM08$", 14 - .2byte ITEM_HM08 - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_HM08 - .byte 1 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 diff --git a/data-de/menu_cursor.s b/data-de/menu_cursor.s index d511436c7..5f5fcd2d7 100644 --- a/data-de/menu_cursor.s +++ b/data-de/menu_cursor.s @@ -382,4 +382,6 @@ gUnknown_0842F788:: @ 842F788 .align 2 gUnknown_0842F790:: @ 842F790 .4byte 0xFFFF0000, 70 + +gUnknown_0842F798:: @ 842F798 .4byte 0xFFFF0000, 134 diff --git a/data-de/region_map_locations.inc b/data-de/region_map_locations.inc deleted file mode 100644 index 1f4863206..000000000 --- a/data-de/region_map_locations.inc +++ /dev/null @@ -1,327 +0,0 @@ -gMapName_LittlerootTown: @ 83E6FF4 - .string "WURZELHEIM$" - -gMapName_OldaleTown: @ 83E7006 - .string "ROSALTSTADT$" - -gMapName_DewfordTown: @ 83E7014 - .string "FAUSTAUHAVEN$" - -gMapName_LavaridgeTown: @ 83E7023 - .string "BAD LAVASTADT$" - -gMapName_FallarborTown: @ 83E7034 - .string "LAUBWECHSEL{NAME_END}FELD$" - -gMapName_VerdanturfTown: @ 83E7045 - .string "WIESENFLUR$" - -gMapName_PacifidlogTown: @ 83E7057 - .string "FLOSSBRUNN$" - -gMapName_PetalburgCity: @ 83E7069 - .string "BLÜTENBURG{NAME_END} CITY$" - -gMapName_SlateportCity: @ 83E707A - .string "GRAPHITPORT{NAME_END} CITY$" - -gMapName_MauvilleCity: @ 83E708B - .string "MALVENFROH{NAME_END} CITY$" - -gMapName_RustboroCity: @ 83E709B - .string "METAROST{NAME_END} CITY$" - -gMapName_FortreeCity: @ 83E70AB - .string "BAUMHAUSEN{NAME_END} CITY$" - -gMapName_LilycoveCity: @ 83E70BA - .string "SEEGRASULB{NAME_END} CITY$" - -gMapName_MossdeepCity: @ 83E70CA - .string "MOOSBACH{NAME_END} CITY$" - -gMapName_SootopolisCity: @ 83E70DA - .string "XENEROVILLE$" - -gMapName_EverGrandeCity: @ 83E70EC - .string "PRACHTPOLIS{NAME_END} CITY$" - -gMapName_Route101: @ 83E70FF - .string "ROUTE 101$" - -gMapName_Route102: @ 83E7109 - .string "ROUTE 102$" - -gMapName_Route103: @ 83E7113 - .string "ROUTE 103$" - -gMapName_Route104: @ 83E711D - .string "ROUTE 104$" - -gMapName_Route105: @ 83E7127 - .string "ROUTE 105$" - -gMapName_Route106: @ 83E7131 - .string "ROUTE 106$" - -gMapName_Route107: @ 83E713B - .string "ROUTE 107$" - -gMapName_Route108: @ 83E7145 - .string "ROUTE 108$" - -gMapName_Route109: @ 83E714F - .string "ROUTE 109$" - -gMapName_Route110: @ 83E7159 - .string "ROUTE 110$" - -gMapName_Route111: @ 83E7163 - .string "ROUTE 111$" - -gMapName_Route112: @ 83E716D - .string "ROUTE 112$" - -gMapName_Route113: @ 83E7177 - .string "ROUTE 113$" - -gMapName_Route114: @ 83E7181 - .string "ROUTE 114$" - -gMapName_Route115: @ 83E718B - .string "ROUTE 115$" - -gMapName_Route116: @ 83E7195 - .string "ROUTE 116$" - -gMapName_Route117: @ 83E719F - .string "ROUTE 117$" - -gMapName_Route118: @ 83E71A9 - .string "ROUTE 118$" - -gMapName_Route119: @ 83E71B3 - .string "ROUTE 119$" - -gMapName_Route120: @ 83E71BD - .string "ROUTE 120$" - -gMapName_Route121: @ 83E71C7 - .string "ROUTE 121$" - -gMapName_Route122: @ 83E71D1 - .string "ROUTE 122$" - -gMapName_Route123: @ 83E71DB - .string "ROUTE 123$" - -gMapName_Route124: @ 83E71E5 - .string "ROUTE 124$" - -gMapName_Route125: @ 83E71EF - .string "ROUTE 125$" - -gMapName_Route126: @ 83E71F9 - .string "ROUTE 126$" - -gMapName_Route127: @ 83E7203 - .string "ROUTE 127$" - -gMapName_Route128: @ 83E720D - .string "ROUTE 128$" - -gMapName_Route129: @ 83E7217 - .string "ROUTE 129$" - -gMapName_Route130: @ 83E7221 - .string "ROUTE 130$" - -gMapName_Route131: @ 83E722B - .string "ROUTE 131$" - -gMapName_Route132: @ 83E7235 - .string "ROUTE 132$" - -gMapName_Route133: @ 83E723F - .string "ROUTE 133$" - -gMapName_Route134: @ 83E7249 - .string "ROUTE 134$" - -gMapName_Underwater: @ 83E7253 - .string "UNTERWASSER$" - -gMapName_GraniteCave: @ 83E725E - .string "GRANITHÖHLE$" - -gMapName_MtChimney: @ 83E726B - .string "SCHLOTBERG$" - -gMapName_SafariZone: @ 83E7277 - .string "SAFARI-ZONE$" - -gMapName_BattleTower: @ 83E7283 - .string "DUELLTURM$" - -gMapName_PetalburgWoods: @ 83E7290 - .string "BLÜTENBURGWALD$" - -gMapName_RusturfTunnel: @ 83E72A0 - .string "METAFLURTUNNEL$" - -gMapName_AbandonedShip: @ 83E72AF - .string "SCHIFFSWRACK$" - -gMapName_NewMauville: @ 83E72BE - .string "NEU MALVENFROH$" - -gMapName_MeteorFalls: @ 83E72CB - .string "METEORFÄLLE$" - -gMapName_MtPyre: @ 83E72D8 - .string "PYROBERG$" - -gMapName_EvilTeamHideout: @ 83E72E1 - .string "{EVIL_TEAM}s VERSTECK$" - -gMapName_ShoalCave: @ 83E72EC - .string "KÜSTENHÖHLE$" - -gMapName_SeafloorCavern: @ 83E72F7 - .string "TIEFSEEHÖHLE$" - -gMapName_VictoryRoad: @ 83E7307 - .string "SIEGESSTRASSE$" - -gMapName_MirageIsland: @ 83E7314 - .string "WUNDEREILAND$" - -gMapName_CaveOfOrigin: @ 83E7322 - .string "URZEITHÖHLE$" - -gMapName_SouthernIsland: @ 83E7331 - .string "INSEL IM SÜDEN$" - -gMapName_FieryPath: @ 83E7341 - .string "FEURIGER PFAD$" - -gMapName_JaggedPass: @ 83E734C - .string "STEILPASS$" - -gMapName_SealedChamber: @ 83E7358 - .string "SIEGELKAMMER$" - -gMapName_ScorchedSlab: @ 83E7367 - .string "SONNENGROTTE$" - -gMapName_IslandCave: @ 83E7375 - .string "INSELHÖHLE$" - -gMapName_DesertRuins: @ 83E7381 - .string "WÜSTENRUINE$" - -gMapName_AncientTomb: @ 83E738E - .string "GRABMAL$" - -gMapName_InsideOfTruck: @ 83E739B - .string "IM MÖBELWAGEN$" - -gMapName_SkyPillar: @ 83E73AB - .string "HIMMELTURM$" - -gMapName_SecretBase: @ 83E73B6 - .string "GEHEIMBASIS$" - -gMapName_None: @ 83E73C2 - .string "$" - - .align 2 -gRegionMapLocations:: @ 83E73C4 - region_map_location 4, 11, 1, 1, LittlerootTown - region_map_location 4, 9, 1, 1, OldaleTown - region_map_location 2, 14, 1, 1, DewfordTown - region_map_location 5, 3, 1, 1, LavaridgeTown - region_map_location 3, 0, 1, 1, FallarborTown - region_map_location 4, 6, 1, 1, VerdanturfTown - region_map_location 17, 10, 1, 1, PacifidlogTown - region_map_location 1, 9, 1, 1, PetalburgCity - region_map_location 8, 10, 1, 2, SlateportCity - region_map_location 8, 6, 2, 1, MauvilleCity - region_map_location 0, 5, 1, 2, RustboroCity - region_map_location 12, 0, 1, 1, FortreeCity - region_map_location 18, 3, 2, 1, LilycoveCity - region_map_location 24, 5, 2, 1, MossdeepCity - region_map_location 21, 7, 1, 1, SootopolisCity - region_map_location 27, 8, 1, 2, EverGrandeCity - region_map_location 4, 10, 1, 1, Route101 - region_map_location 2, 9, 2, 1, Route102 - region_map_location 4, 8, 4, 1, Route103 - region_map_location 0, 7, 1, 3, Route104 - region_map_location 0, 10, 1, 3, Route105 - region_map_location 0, 13, 2, 1, Route106 - region_map_location 3, 14, 3, 1, Route107 - region_map_location 6, 14, 2, 1, Route108 - region_map_location 8, 12, 1, 3, Route109 - region_map_location 8, 7, 1, 3, Route110 - region_map_location 8, 0, 1, 6, Route111 - region_map_location 6, 3, 2, 1, Route112 - region_map_location 4, 0, 4, 1, Route113 - region_map_location 1, 0, 2, 3, Route114 - region_map_location 0, 2, 1, 3, Route115 - region_map_location 1, 5, 4, 1, Route116 - region_map_location 5, 6, 3, 1, Route117 - region_map_location 10, 6, 2, 1, Route118 - region_map_location 11, 0, 1, 6, Route119 - region_map_location 13, 0, 1, 4, Route120 - region_map_location 14, 3, 4, 1, Route121 - region_map_location 16, 4, 1, 2, Route122 - region_map_location 12, 6, 5, 1, Route123 - region_map_location 20, 3, 4, 3, Route124 - region_map_location 24, 3, 2, 2, Route125 - region_map_location 20, 6, 3, 3, Route126 - region_map_location 23, 6, 3, 3, Route127 - region_map_location 23, 9, 4, 1, Route128 - region_map_location 24, 10, 2, 1, Route129 - region_map_location 21, 10, 3, 1, Route130 - region_map_location 18, 10, 3, 1, Route131 - region_map_location 15, 10, 2, 1, Route132 - region_map_location 12, 10, 3, 1, Route133 - region_map_location 9, 10, 3, 1, Route134 - region_map_location 20, 3, 4, 3, Underwater - region_map_location 20, 6, 3, 3, Underwater - region_map_location 23, 6, 3, 3, Underwater - region_map_location 23, 9, 4, 1, Underwater - region_map_location 21, 7, 1, 1, Underwater - region_map_location 1, 13, 1, 1, GraniteCave - region_map_location 6, 2, 1, 1, MtChimney - region_map_location 16, 2, 1, 1, SafariZone - region_map_location 22, 12, 1, 1, BattleTower - region_map_location 0, 8, 1, 1, PetalburgWoods - region_map_location 2, 5, 1, 1, RusturfTunnel - region_map_location 6, 14, 1, 1, AbandonedShip - region_map_location 8, 7, 1, 1, NewMauville - region_map_location 0, 3, 1, 1, MeteorFalls - region_map_location 1, 2, 1, 1, MeteorFalls - region_map_location 16, 4, 1, 1, MtPyre - region_map_location 19, 3, 1, 1, EvilTeamHideout - region_map_location 24, 4, 1, 1, ShoalCave - region_map_location 24, 9, 1, 1, SeafloorCavern - region_map_location 24, 9, 1, 1, Underwater - region_map_location 27, 9, 1, 1, VictoryRoad - region_map_location 17, 10, 1, 1, MirageIsland - region_map_location 21, 7, 1, 1, CaveOfOrigin - region_map_location 12, 14, 1, 1, SouthernIsland - region_map_location 6, 3, 1, 1, FieryPath - region_map_location 7, 3, 1, 1, FieryPath - region_map_location 6, 3, 1, 1, JaggedPass - region_map_location 7, 2, 1, 1, JaggedPass - region_map_location 11, 10, 1, 1, SealedChamber - region_map_location 11, 10, 1, 1, Underwater - region_map_location 13, 0, 1, 1, ScorchedSlab - region_map_location 0, 10, 1, 1, IslandCave - region_map_location 8, 3, 1, 1, DesertRuins - region_map_location 13, 2, 1, 1, AncientTomb - region_map_location 0, 0, 1, 1, InsideOfTruck - region_map_location 19, 10, 1, 1, SkyPillar - region_map_location 0, 0, 1, 1, SecretBase - region_map_location 0, 0, 1, 1, None diff --git a/data-de/text/bard.inc b/data-de/text/bard.inc index 089741d00..dbfb7d400 100644 --- a/data-de/text/bard.inc +++ b/data-de/text/bard.inc @@ -1,20 +1,20 @@ -UnknownString_81B0A83: @ 81B0A83 +gTextBard_BardTesting: @ 81B0A83 .string "BARDEN Test.$" -MauvilleCity_PokemonCenter_1F_Text_1B0A91:: @ 81B0A91 +gTextBard_HiImTheBard:: @ 81B0A91 .string "Hallo, ich bin der BARDE.\n" .string "Möchtest du meinem Lied lauschen?$" -MauvilleCity_PokemonCenter_1F_Text_1B0AC3:: @ 81B0AC3 +gTextBard_OhYouveLeftMe:: @ 81B0AC3 .string "Oh...\n" .string "Du überlässt mich meinem Blues?$" -MauvilleCity_PokemonCenter_1F_Text_1B0AED:: @ 81B0AED +gTextBard_OhWhatAMovingSong:: @ 81B0AED .string "Hach, was für ein bewegendes Lied...\n" .string "Ich wünschte, ich könnte es für\l" .string "andere spielen...$" -MauvilleCity_PokemonCenter_1F_Text_1B0B2C:: @ 81B0B2C +gTextBard_SoHowDoYouLikeMySong:: @ 81B0B2C .string "So?\n" .string "Wie fandest du mein Lied?\p" .string "Ich bin noch nicht ganz zufrieden mit\n" @@ -22,17 +22,17 @@ MauvilleCity_PokemonCenter_1F_Text_1B0B2C:: @ 81B0B2C .string "Hast du nicht Lust, den Text für mich\n" .string "neu zu schreiben?$" -MauvilleCity_PokemonCenter_1F_Text_1B0BA6:: @ 81B0BA6 +gTextBard_OhYouveLeftMe2:: @ 81B0BA6 .string "Oh... Und wieder werde ich meinem\n" .string "Blues überlassen.$" -MauvilleCity_PokemonCenter_1F_Text_1B0BD0:: @ 81B0BD0 +gTextBard_ThankYouKindly:: @ 81B0BD0 .string "Vielen herzlichen Dank!\n" .string "Ich möchte für dich singen.$" -MauvilleCity_PokemonCenter_1F_Text_1B0BFA:: @ 81B0BFA +gTextBard_WasThatHowYouWanted:: @ 81B0BFA .string "Hast du dir dein Lied so vorgestellt?$" -MauvilleCity_PokemonCenter_1F_Text_1B0C23:: @ 81B0C23 +gTextBard_OkayThatsIt:: @ 81B0C23 .string "Okay! Das ist es! Dieses Lied werde\n" .string "ich nun für eine Weile singen.$" diff --git a/data-de/text/credits.inc b/data-de/text/credits.inc index 1d2d63161..3b6119866 100644 --- a/data-de/text/credits.inc +++ b/data-de/text/credits.inc @@ -634,7 +634,11 @@ CreditsEBU:: credits_entry 0, Text_EBU CreditsVersion:: + .ifdef SAPPHIRE + credits_entry 0, Text_Version_Sapphire + .else credits_entry 0, Text_Version_Ruby + .endif CreditsNOEProductTesting:: credits_entry 0, Category_NOEProductTesting diff --git a/data-de/text/giddy.inc b/data-de/text/giddy.inc index 6e1a46883..8bc5bebda 100644 --- a/data-de/text/giddy.inc +++ b/data-de/text/giddy.inc @@ -1,16 +1,16 @@ -MauvilleCity_PokemonCenter_1F_Text_1B092A:: @ 81B092A +gTextGiddy_Introduction:: @ 81B092A .string "Ich bin MÄRCHEN-MAN! Ich habe eine sehr\n" .string "geistreiche Geschichte für dich!\p" .string "Soll ich sie dir erzählen?$" -MauvilleCity_PokemonCenter_1F_Text_1B097C:: @ 81B097C +gTextGiddy_YouveDeflatedMe:: @ 81B097C .string "Oh...\n" .string "Du hast mir die Luft rausgelassen...$" -MauvilleCity_PokemonCenter_1F_Text_1B0998:: @ 81B0998 +gTextGiddy_AlsoIWasThinking:: @ 81B0998 .string "Und ich war in Gedanken vertieft...$" -MauvilleCity_PokemonCenter_1F_Text_1B09B0:: @ 81B09B0 +gTextGiddy_ByeBye:: @ 81B09B0 .string "Das wäre alles, glaube ich...\p" .string "Wir sollten bald wieder ein Schwätzchen\n" .string "halten! Tschüss!$" diff --git a/data-de/text/hipster.inc b/data-de/text/hipster.inc index c315b523d..8801b05fd 100644 --- a/data-de/text/hipster.inc +++ b/data-de/text/hipster.inc @@ -1,18 +1,18 @@ -MauvilleCity_PokemonCenter_1F_Text_1B0C5B:: @ 81B0C5B +gTextHipster_TheyCallMeTheHipster:: @ 81B0C5B .string "Hey, yo! Man nennt mich TRENDWIG. Ich\n" .string "zeige dir, was hip ist und abgeht.$" -MauvilleCity_PokemonCenter_1F_Text_1B0CA7:: @ 81B0CA7 +gTextHipster_TaughtYouAlready:: @ 81B0CA7 .string "Aber, hey, ich habe dir doch schon ge-\n" .string "zeigt, was hip ist und abgeht.\p" .string "Ich will das auch anderen mitteilen.$" -MauvilleCity_PokemonCenter_1F_Text_1B0D11:: @ 81B0D11 +gTextHipster_YouAlreadyKnowALot:: @ 81B0D11 .string "Aber, hey, ich habe dir doch schon ge-\n" .string "zeigt, was hip ist und abgeht.\p" .string "Ich habe nichts mehr in petto.$" -MauvilleCity_PokemonCenter_1F_Text_1B0D75:: @ 81B0D75 +gTextHipster_HaveYouHeardAbout:: @ 81B0D75 .string "Hast du schon von\n" .string "“{STR_VAR_1}” gehört?\p" .string "Was das heißt? Ähäm...\n" diff --git a/data-de/text/item_descriptions.inc b/data-de/text/item_descriptions.inc deleted file mode 100644 index cde8cfdc8..000000000 --- a/data-de/text/item_descriptions.inc +++ /dev/null @@ -1,1393 +0,0 @@ -gItemDescription_MasterBall: @ 83C2028 - .string "Der beste BALL.\n" - .string "Fängt das POKéMON\n" - .string "garantiert.$" - -gItemDescription_UltraBall: @ 83C205B - .string "BALL mit hoher Er-\n" - .string "folgsquote. Besser\n" - .string "als ein SUPERBALL.$" - -gItemDescription_GreatBall: @ 83C2095 - .string "BALL mit guter Er-\n" - .string "folgsquote. Besser\n" - .string "als ein POKéBALL.$" - -gItemDescription_PokeBall: @ 83C20CC - .string "Damit fängst\n" - .string "du wilde\n" - .string "POKéMON.$" - -gItemDescription_SafariBall: @ 83C20F3 - .string "Ein BALL, der nur\n" - .string "in der SAFARI-ZONE\n" - .string "eingesetzt wird.$" - -gItemDescription_NetBall: @ 83C2128 - .string "BALL fängt POKéMON\n" - .string "des Typs WASSER\n" - .string "und KÄFER besser.$" - -gItemDescription_DiveBall: @ 83C215F - .string "BALL fängt besser\n" - .string "POKéMON auf\n" - .string "dem Meeresgrund.$" - -gItemDescription_NestBall: @ 83C2197 - .string "BALL mit höherer\n" - .string "Erfolgsquote bei\n" - .string "schwachen POKéMON.$" - -gItemDescription_RepeatBall: @ 83C21C3 - .string "BALL fängt besser\n" - .string "bereits gefangene\n" - .string "POKéMON.$" - -gItemDescription_TimerBall: @ 83C21F6 - .string "BALL wird effekti-\n" - .string "ver, je länger der\n" - .string "Kampf dauert.$" - -gItemDescription_LuxuryBall: @ 83C2228 - .string "Behaglicher BALL,\n" - .string "der POKéMON\n" - .string "freundlicher macht.$" - -gItemDescription_PremierBall: @ 83C2256 - .string "Seltener BALL, als\n" - .string "Reminiszenz an ir-\n" - .string "gendein Ereignis.$" - -gItemDescription_Potion: @ 83C2287 - .string "Füllt die KP eines\n" - .string "POKéMON um\n" - .string "20 Punkte auf.$" - -gItemDescription_Antidote: @ 83C22B2 - .string "Heilt Vergiftungen\n" - .string "bei POKéMON.$" - -gItemDescription_BurnHeal: @ 83C22CC - .string "Heilt Verbrennun-\n" - .string "gen bei POKéMON.$" - -gItemDescription_IceHeal: @ 83C22E5 - .string "Taut POKéMON\n" - .string "wieder auf.$" - -gItemDescription_Awakening: @ 83C2300 - .string "Weckt schlafendes\n" - .string "POKéMON auf.$" - -gItemDescription_ParalyzeHeal: @ 83C231C - .string "Heilt Paralyse\n" - .string "eines POKéMON.$" - -gItemDescription_FullRestore: @ 83C2337 - .string "Stellt KP und\n" - .string "Status eines\n" - .string "POKéMON wieder her.$" - -gItemDescription_MaxPotion: @ 83C2366 - .string "Füllt die KP\n" - .string "vollständig auf.$" - -gItemDescription_HyperPotion: @ 83C238A - .string "Füllt die KP eines\n" - .string "POKéMON um\n" - .string "200 Punkte auf.$" - -gItemDescription_SuperPotion: @ 83C23B6 - .string "Füllt die KP eines\n" - .string "POKéMON um\n" - .string "50 Punkte auf.$" - -gItemDescription_FullHeal: @ 83C23E1 - .string "Beseitigt alle\n" - .string "Statusprobleme\n" - .string "eines POKéMON.$" - -gItemDescription_Revive: @ 83C240F - .string "Belebt POKéMON\n" - .string "und füllt die KP zur\n" - .string "Hälfte wieder auf.$" - -gItemDescription_MaxRevive: @ 83C243B - .string "Belebt POKéMON\n" - .string "und füllt KP voll-\n" - .string "ständig wieder auf.$" - -gItemDescription_FreshWater: @ 83C2466 - .string "Ein stilles Wasser,\n" - .string "das die KP um 50\n" - .string "Punkte auffüllt.$" - -gItemDescription_SodaPop: @ 83C2495 - .string "Ein Mineralwasser,\n" - .string "das die KP um 60\n" - .string "Punkte auffüllt.$" - -gItemDescription_Lemonade: @ 83C24C7 - .string "Ein süßes Getränk,\n" - .string "das die KP um 80\n" - .string "Punkte auffüllt.$" - -gItemDescription_MoomooMilk: @ 83C24F9 - .string "Vitaminreiche Milch,\n" - .string "die die KP um 100\n" - .string "Punkte auffüllt.$" - -gItemDescription_EnergyPowder: @ 83C252B - .string "Ein bitteres Pulver,\n" - .string "das die KP um\n" - .string "50 Punkte auffüllt.$" - -gItemDescription_EnergyRoot: @ 83C255A - .string "Eine bittere Wurzel,\n" - .string "die die KP um 200\n" - .string "Punkte auffüllt.$" - -gItemDescription_HealPowder: @ 83C2588 - .string "Ein bitteres Pulver,\n" - .string "das alle Statuspro-\n" - .string "bleme heilt.$" - -gItemDescription_RevivalHerb: @ 83C25B8 - .string "Ein bitteres Kraut,\n" - .string "das besiegte\n" - .string "POKéMON belebt.$" - -gItemDescription_Ether: @ 83C25EB - .string "Füllt AP einer aus-\n" - .string "gewählten Attacke\n" - .string "um 10 Punkte auf.$" - -gItemDescription_MaxEther: @ 83C2615 - .string "Füllt AP einer aus-\n" - .string "gewählten Attacke\n" - .string "vollständig auf.$" - -gItemDescription_Elixir: @ 83C263F - .string "Füllt alle AP\n" - .string "um 10 Punkte auf.$" - -gItemDescription_MaxElixir: @ 83C2663 - .string "Füllt alle AP eines\n" - .string "POKéMON voll-\n" - .string "ständig auf.$" - -gItemDescription_LavaCookie: @ 83C268F - .string "Eine regionale Spe-\n" - .string "zialität. Heilt alle\n" - .string "Statusprobleme.$" - -gItemDescription_BlueFlute: @ 83C26C1 - .string "Eine gläserne Flöte,\n" - .string "die schlafende\n" - .string "POKéMON aufweckt.$" - -gItemDescription_YellowFlute: @ 83C26EE - .string "Eine gläserne Flöte,\n" - .string "die verwirrte\n" - .string "POKéMON heilt.$" - -gItemDescription_RedFlute: @ 83C2721 - .string "Eine gläserne Flöte,\n" - .string "die POKéMON von\n" - .string "Anziehung heilt.$" - -gItemDescription_BlackFlute: @ 83C2755 - .string "Eine gläserne Flöte,\n" - .string "die wilde\n" - .string "POKéMON abhält.$" - -gItemDescription_WhiteFlute: @ 83C2781 - .string "Eine gläserne Flöte,\n" - .string "die wilde\n" - .string "POKéMON anzieht.$" - -gItemDescription_BerryJuice: @ 83C27A8 - .string "Reiner Fruchtsaft,\n" - .string "der die KP um\n" - .string "20 Punkte auffüllt.$" - -gItemDescription_SacredAsh: @ 83C27D9 - .string "Belebt und\n" - .string "erfrischt alle\n" - .string "besiegten POKéMON.$" - -gItemDescription_ShoalSalt: @ 83C2809 - .string "Salz, das sich tief\n" - .string "in der KÜSTEN- \n" - .string "HÖHLE befand.$" - -gItemDescription_ShoalShell: @ 83C2838 - .string "Muschelschale, die\n" - .string "sich in der KÜSTEN- \n" - .string "HÖHLE befand.$" - -gItemDescription_RedShard: @ 83C2865 - .string "Scherbe eines\n" - .string "antiken Relikts\n" - .string "von geringem Wert.$" - -gItemDescription_BlueShard: @ 83C2898 - .string "Scherbe eines\n" - .string "antiken Relikts\n" - .string "von geringem Wert.$" - -gItemDescription_YellowShard: @ 83C28CB - .string "Scherbe eines\n" - .string "antiken Relikts\n" - .string "von geringem Wert.$" - -gItemDescription_GreenShard: @ 83C28FE - .string "Scherbe eines\n" - .string "antiken Relikts\n" - .string "von geringem Wert.$" - -gItemDescription_HPUp: @ 83C2931 - .string "Hebt die KP\n" - .string "eines POKéMON.$" - -gItemDescription_Protein: @ 83C294F - .string "Hebt den\n" - .string "ANGR.-Wert\n" - .string "eines POKéMON.$" - -gItemDescription_Iron: @ 83C2976 - .string "Hebt den\n" - .string "VERT.-Wert\n" - .string "eines POKéMON.$" - -gItemDescription_Carbos: @ 83C299E - .string "Hebt den\n" - .string "INIT.-Wert\n" - .string "eines POKéMON.$" - -gItemDescription_Calcium: @ 83C29C4 - .string "Hebt den\n" - .string "SP. ANGR.-Wert\n" - .string "eines POKéMON.$" - -gItemDescription_RareCandy: @ 83C29EC - .string "Hebt den Level\n" - .string "eines POKéMON\n" - .string "um eins an.$" - -gItemDescription_PPUp: @ 83C2A12 - .string "Hebt die maximale\n" - .string "Anzahl der AP\n" - .string "einer Attacke.$" - -gItemDescription_Zinc: @ 83C2A3C - .string "Hebt den\n" - .string "SP. VERT.-Wert\n" - .string "eines POKéMON.$" - -gItemDescription_PPMax: @ 83C2A64 - .string "Maximiert die\n" - .string "Anzahl der AP\n" - .string "einer Attacke.$" - -gItemDescription_GuardSpec: @ 83C2A93 - .string "Statusänderung\n" - .string "wird für einen\n" - .string "Kampf verhindert.$" - -gItemDescription_DireHit: @ 83C2AC0 - .string "Hebt die\n" - .string "Volltrefferquote\n" - .string "für einen Kampf.$" - -gItemDescription_XAttack: @ 83C2AF1 - .string "Hebt den\n" - .string "ANGR.-Wert\n" - .string "für einen Kampf.$" - -gItemDescription_XDefend: @ 83C2B1B - .string "Hebt den\n" - .string "VERT.-Wert\n" - .string "für einen Kampf.$" - -gItemDescription_XSpeed: @ 83C2B46 - .string "Hebt den\n" - .string "INIT.-Wert\n" - .string "für einen Kampf.$" - -gItemDescription_XAccuracy: @ 83C2B6F - .string "Hebt die\n" - .string "GENAUIGKEIT\n" - .string "für einen Kampf.$" - -gItemDescription_XSpecial: @ 83C2BA2 - .string "Hebt den\n" - .string "SP. ANGR.-Wert\n" - .string "für einen Kampf.$" - -gItemDescription_PokeDoll: @ 83C2BCD - .string "Ermöglicht Flucht\n" - .string "im Kampf gegen\n" - .string "wilde POKéMON.$" - -gItemDescription_FluffyTail: @ 83C2BFE - .string "Entfliehe damit\n" - .string "jedem Kampf mit ei-\n" - .string "nem wilden POKéMON.$" - -gItemDescription_SuperRepel: @ 83C2C2F - .string "Hält 200 Schritte\n" - .string "lang schwache,\n" - .string "wilde POKéMON ab.$" - -gItemDescription_MaxRepel: @ 83C2C57 - .string "Hält 250 Schritte\n" - .string "lang schwache,\n" - .string "wilde POKéMON ab.$" - -gItemDescription_EscapeRope: @ 83C2C7F - .string "Ermöglicht die\n" - .string "Flucht aus Höhlen\n" - .string "oder Ähnlichem.$" - -gItemDescription_Repel: @ 83C2CB1 - .string "Hält 100 Schritte\n" - .string "lang schwache,\n" - .string "wilde POKéMON ab.$" - -gItemDescription_SunStone: @ 83C2CD9 - .string "Löst bei bestimm-\n" - .string "ten POKéMON die\n" - .string "Entwicklung aus.$" - -gItemDescription_MoonStone: @ 83C2D02 - .string "Löst bei bestimm-\n" - .string "ten POKéMON die\n" - .string "Entwicklung aus.$" - -gItemDescription_FireStone: @ 83C2D2B - .string "Löst bei bestimm-\n" - .string "ten POKéMON die\n" - .string "Entwicklung aus.$" - -gItemDescription_ThunderStone: @ 83C2D54 - .string "Löst bei bestimm-\n" - .string "ten POKéMON die\n" - .string "Entwicklung aus.$" - -gItemDescription_WaterStone: @ 83C2D7D - .string "Löst bei bestimm-\n" - .string "ten POKéMON die\n" - .string "Entwicklung aus.$" - -gItemDescription_LeafStone: @ 83C2DA6 - .string "Löst bei bestimm-\n" - .string "ten POKéMON die\n" - .string "Entwicklung aus.$" - -gItemDescription_TinyMushroom: @ 83C2DCF - .string "Ein gemeiner\n" - .string "Pilz von \n" - .string "geringem Wert.$" - -gItemDescription_BigMushroom: @ 83C2E00 - .string "Ein seltener\n" - .string "Pilz von \n" - .string "hohem Wert.$" - -gItemDescription_Pearl: @ 83C2E31 - .string "Eine hübsche Perle\n" - .string "von geringem Wert.$" - -gItemDescription_BigPearl: @ 83C2E56 - .string "Schöne, große Per-\n" - .string "le, die einen hohen\n" - .string "Preis erzielen kann.$" - -gItemDescription_Stardust: @ 83C2E8C - .string "Schöner, roter\n" - .string "Sand, der von\n" - .string "großem Wert ist.$" - -gItemDescription_StarPiece: @ 83C2EBD - .string "Roter Edelstein,\n" - .string "der einen hohen\n" - .string "Preis erzielen kann.$" - -gItemDescription_Nugget: @ 83C2EF3 - .string "Ein Barren aus pu-\n" - .string "rem Gold, der von\n" - .string "großem Wert ist.$" - -gItemDescription_HeartScale: @ 83C2F27 - .string "Hübsche Schuppe,\n" - .string "höchst begehrt\n" - .string "bei Sammlern.$" - -gItemDescription_OrangeMail: @ 83C2F54 - .string "BRIEF (Tragen) mit \n" - .string "ZIGZACHS-\n" - .string "Aufdruck.$" - -gItemDescription_HarborMail: @ 83C2F84 - .string "BRIEF (Tragen) mit \n" - .string "WINGULL-\n" - .string "Aufdruck.$" - -gItemDescription_GlitterMail: @ 83C2FB2 - .string "BRIEF (Tragen) mit \n" - .string "PIKACHU-\n" - .string "Aufdruck.$" - -gItemDescription_MechMail: @ 83C2FE0 - .string "BRIEF (Tragen) mit \n" - .string "MAGNETILO-\n" - .string "Aufdruck.$" - -gItemDescription_WoodMail: @ 83C3010 - .string "BRIEF (Tragen) mit \n" - .string "BUMMELZ-\n" - .string "Aufdruck.$" - -gItemDescription_WaveMail: @ 83C303E - .string "BRIEF (Tragen) mit \n" - .string "WAILMER-\n" - .string "Aufdruck.$" - -gItemDescription_BeadMail: @ 83C306C - .string "BRIEF mit Abbildung\n" - .string "des POKéMON, das\n" - .string "ihn trägt.$" - -gItemDescription_ShadowMail: @ 83C309C - .string "BRIEF (Tragen) mit \n" - .string "ZWIRRLICHT-\n" - .string "Aufdruck.$" - -gItemDescription_TropicMail: @ 83C30CA - .string "BRIEF (Tragen) mit \n" - .string "BLUBELLA-\n" - .string "Aufdruck.$" - -gItemDescription_DreamMail: @ 83C30FA - .string "BRIEF mit Abbildung\n" - .string "des POKéMON, das\n" - .string "ihn trägt.$" - -gItemDescription_FabMail: @ 83C312A - .string "BRIEF (Tragen) mit \n" - .string "edlem Aufdruck.$" - -gItemDescription_RetroMail: @ 83C3159 - .string "BRIEF mit den Ab-\n" - .string "bildungen dreier\n" - .string "POKéMON-Gesichter.$" - -gItemDescription_CheriBerry: @ 83C3187 - .string "Item (Tragen) be-\n" - .string "wirkt Selbstheilung\n" - .string "bei Paralyse.$" - -gItemDescription_ChestoBerry: @ 83C31B3 - .string "Item (Tragen)\n" - .string "weckt schlafendes\n" - .string "POKéMON im Kampf.$" - -gItemDescription_PechaBerry: @ 83C31DF - .string "Item (Tragen) be-\n" - .string "wirkt Selbstheilung\n" - .string "bei Vergiftung.$" - -gItemDescription_RawstBerry: @ 83C320B - .string "Item (Tragen) be-\n" - .string "wirkt Selbstheilung\n" - .string "bei Verbrennung.$" - -gItemDescription_AspearBerry: @ 83C3234 - .string "Item (Tragen) be-\n" - .string "wirkt Selbstheilung\n" - .string "bei Frost.$" - -gItemDescription_LeppaBerry: @ 83C3261 - .string "Item (Tragen) füllt\n" - .string "AP im Kampf um\n" - .string "10 Punkte auf.$" - -gItemDescription_OranBerry: @ 83C328C - .string "Item (Tragen) füllt\n" - .string "KP im Kampf um\n" - .string "10 Punkte auf.$" - -gItemDescription_PersimBerry: @ 83C32B7 - .string "Item (Tragen) be-\n" - .string "wirkt Selbstheilung\n" - .string "bei Verwirrung.$" - -gItemDescription_LumBerry: @ 83C32E3 - .string "Item (Tragen) be-\n" - .string "wirkt Selbstheilung\n" - .string "bei Statusproblem.$" - -gItemDescription_SitrusBerry: @ 83C330C - .string "Item (Tragen) füllt\n" - .string "KP im Kampf um\n" - .string "30 Punkte auf.$" - -gItemDescription_FigyBerry: @ 83C3337 - .string "Item (Tragen) füllt\n" - .string "im Kampf KP auf, be-\n" - .string "wirkt evtl. Verwirr.$" - -gItemDescription_WikiBerry: @ 83C3365 - .string "Item (Tragen) füllt\n" - .string "KP auf, bewirkt\n" - .string "evtl. Verwirrung.$" - -gItemDescription_MagoBerry: @ 83C3393 - .string "Item (Tragen) füllt\n" - .string "KP auf, bewirkt\n" - .string "evtl. Verwirrung.$" - -gItemDescription_AguavBerry: @ 83C33C1 - .string "Item (Tragen) füllt\n" - .string "KP auf, bewirkt\n" - .string "evtl. Verwirrung.$" - -gItemDescription_IapapaBerry: @ 83C33EF - .string "Item (Tragen) füllt\n" - .string "KP auf, bewirkt\n" - .string "evtl. Verwirrung.$" - -gItemDescription_RazzBerry: @ 83C341D - .string "Säe {POKEBLOCK}-Zutat\n" - .string "in Lehmboden, damit\n" - .string "HIMMIH wächst.$" - -gItemDescription_BlukBerry: @ 83C3451 - .string "Säe {POKEBLOCK}-Zutat\n" - .string "in Lehmboden, damit\n" - .string "MORB wächst.$" - -gItemDescription_NanabBerry: @ 83C3485 - .string "Säe {POKEBLOCK}-Zutat\n" - .string "in Lehmboden, damit\n" - .string "NANAB wächst.$" - -gItemDescription_WepearBerry: @ 83C34BA - .string "Säe {POKEBLOCK}-Zutat\n" - .string "in Lehmboden, damit\n" - .string "NIRBE wächst.$" - -gItemDescription_PinapBerry: @ 83C34F0 - .string "Säe {POKEBLOCK}-Zutat\n" - .string "in Lehmboden, damit\n" - .string "SANANA wächst.$" - -gItemDescription_PomegBerry: @ 83C3525 - .string "Säe {POKEBLOCK}-Zutat\n" - .string "in Lehmboden, damit\n" - .string "GRANA wächst.$" - -gItemDescription_KelpsyBerry: @ 83C355A - .string "Säe {POKEBLOCK}-Zutat\n" - .string "in Lehmboden, damit\n" - .string "SETANG wächst.$" - -gItemDescription_QualotBerry: @ 83C3590 - .string "Säe {POKEBLOCK}-Zutat\n" - .string "in Lehmboden, damit\n" - .string "QUALOT wächst.$" - -gItemDescription_HondewBerry: @ 83C35C6 - .string "Säe {POKEBLOCK}-Zutat\n" - .string "in Lehmboden, damit\n" - .string "HONMEL wächst.$" - -gItemDescription_GrepaBerry: @ 83C35FC - .string "Säe {POKEBLOCK}-Zutat\n" - .string "in Lehmboden, damit\n" - .string "LABRUS wächst.$" - -gItemDescription_TamatoBerry: @ 83C3631 - .string "Säe {POKEBLOCK}-Zutat\n" - .string "in Lehmboden, damit\n" - .string "TAMOT wächst.$" - -gItemDescription_CornnBerry: @ 83C3667 - .string "Säe {POKEBLOCK}-Zutat\n" - .string "in Lehmboden, damit\n" - .string "SAIM wächst.$" - -gItemDescription_MagostBerry: @ 83C369C - .string "Säe {POKEBLOCK}-Zutat\n" - .string "in Lehmboden, damit\n" - .string "MAGOST wächst.$" - -gItemDescription_RabutaBerry: @ 83C36D2 - .string "Säe {POKEBLOCK}-Zutat\n" - .string "in Lehmboden, damit\n" - .string "RABUTA wächst.$" - -gItemDescription_NomelBerry: @ 83C3708 - .string "Säe {POKEBLOCK}-Zutat\n" - .string "in Lehmboden, damit\n" - .string "TRONZI wächst.$" - -gItemDescription_SpelonBerry: @ 83C373D - .string "Säe {POKEBLOCK}-Zutat\n" - .string "in Lehmboden, damit\n" - .string "KIWAN wächst.$" - -gItemDescription_PamtreBerry: @ 83C3773 - .string "Säe {POKEBLOCK}-Zutat\n" - .string "in Lehmboden, damit\n" - .string "PALLM wächst.$" - -gItemDescription_WatmelBerry: @ 83C37A9 - .string "Säe {POKEBLOCK}-Zutat\n" - .string "in Lehmboden, damit\n" - .string "WASMEL wächst.$" - -gItemDescription_DurinBerry: @ 83C37DF - .string "Säe {POKEBLOCK}-Zutat\n" - .string "in Lehmboden, damit\n" - .string "DURIN wächst.$" - -gItemDescription_BelueBerry: @ 83C3814 - .string "Säe {POKEBLOCK}-Zutat\n" - .string "in Lehmboden, damit\n" - .string "MYRTIL wächst.$" - -gItemDescription_LiechiBerry: @ 83C3849 - .string "Item (Tragen) hebt\n" - .string "ANGR.-Wert in einer\n" - .string "Notlage.$" - -gItemDescription_GanlonBerry: @ 83C3874 - .string "Item (Tragen) hebt\n" - .string "VERT.-Wert in einer\n" - .string "Notlage.$" - -gItemDescription_SalacBerry: @ 83C38A0 - .string "Item (Tragen) hebt\n" - .string "INIT.-Wert in einer\n" - .string "Notlage.$" - -gItemDescription_PetayaBerry: @ 83C38CA - .string "Item (Tragen) hebt\n" - .string "SP. ANGR.-Wert\n" - .string "in einer Notlage.$" - -gItemDescription_ApicotBerry: @ 83C38F6 - .string "Item (Tragen) hebt\n" - .string "SP. VERT.-Wert\n" - .string "in einer Notlage.$" - -gItemDescription_LansatBerry: @ 83C3922 - .string "Item (Tragen) hebt\n" - .string "Volltrefferquote\n" - .string "in einer Notlage.$" - -gItemDescription_StarfBerry: @ 83C395A - .string "Item (Tragen) hebt\n" - .string "einen Statuswert\n" - .string "in einer Notlage.$" - -gItemDescription_EnigmaBerry: @ 83C398D - .string "Säe {POKEBLOCK}-Zutat\n" - .string "in Lehmboden, damit\n" - .string "Mysterium wächst.$" - -gItemDescription_BrightPowder: @ 83C39C6 - .string "Item (Tragen)\n" - .string "senkt die Genauig-\n" - .string "keit des Gegners.$" - -gItemDescription_WhiteHerb: @ 83C39F9 - .string "Item (Tragen) hebt\n" - .string "jede Statusverän-\n" - .string "derung auf.$" - -gItemDescription_MachoBrace: @ 83C3A25 - .string "Item (Tragen) för-\n" - .string "dert Wachstum,\n" - .string "aber senkt INIT.$" - -gItemDescription_ExpShare: @ 83C3A5A - .string "Item (Tragen) teilt\n" - .string "die Kampf-EP.$" - -gItemDescription_QuickClaw: @ 83C3A8A - .string "Item (Tragen) hebt\n" - .string "die Erstschlag-\n" - .string "quote.$" - -gItemDescription_SootheBell: @ 83C3AC1 - .string "Item (Tragen) be-\n" - .string "sänftigt und för-\n" - .string "dert Sympathie.$" - -gItemDescription_MentalHerb: @ 83C3AF8 - .string "Item (Tragen) er-\n" - .string "löst POKéMON von\n" - .string "der Anziehung.$" - -gItemDescription_ChoiceBand: @ 83C3B2B - .string "Stärkt eine Atta-\n" - .string "cke. Aber nur diese\n" - .string "ist einsetzbar.$" - -gItemDescription_KingsRock: @ 83C3B5E - .string "Item (Tragen) kann\n" - .string "Gegner zurück-\n" - .string "weichen lassen.$" - -gItemDescription_SilverPowder: @ 83C3B98 - .string "Item (Tragen) ver-\n" - .string "bessert KÄFER-\n" - .string "Attacken.$" - -gItemDescription_AmuletCoin: @ 83C3BCD - .string "Doppelter Geldbe-\n" - .string "trag, wenn Träger \n" - .string "am Kampf teilnimmt.$" - -gItemDescription_CleanseTag: @ 83C3BFF - .string "Item (Tragen) kann\n" - .string "wilde POKéMON\n" - .string "abhalten.$" - -gItemDescription_SoulDew: @ 83C3C2A - .string "Item (Tragen) hebt\n" - .string "SP.ANG & SP.VER von\n" - .string "LATIOS & LATIAS.$" - -gItemDescription_DeepSeaTooth: @ 83C3C62 - .string "Item (Tragen) hebt\n" - .string "SP. ANGR. von\n" - .string "PERLU.$" - -gItemDescription_DeepSeaScale: @ 83C3C93 - .string "Item (Tragen) hebt\n" - .string "SP. VERT. von\n" - .string "PERLU.$" - -gItemDescription_SmokeBall: @ 83C3CC4 - .string "Item (Tragen) er-\n" - .string "möglicht Flucht vor\n" - .string "wilden POKéMON.$" - -gItemDescription_Everstone: @ 83C3CFE - .string "Wundersamer Stein\n" - .string "zum Tragen. Bewirkt\n" - .string "Entwicklungsstopp.$" - -gItemDescription_FocusBand: @ 83C3D36 - .string "Item (Tragen) kann\n" - .string "manchmal K.O.\n" - .string "verhindern.$" - -gItemDescription_LuckyEgg: @ 83C3D67 - .string "Item (Tragen)\n" - .string "erhöht im Kampf er-\n" - .string "haltene Extra-EP.$" - -gItemDescription_ScopeLens: @ 83C3D9D - .string "Item (Tragen)\n" - .string "erhöht die\n" - .string "Volltrefferquote.$" - -gItemDescription_MetalCoat: @ 83C3DCD - .string "Item (Tragen)\n" - .string "verstärkt STAHL-\n" - .string "Attacken.$" - -gItemDescription_Leftovers: @ 83C3E04 - .string "Item (Tragen) füllt\n" - .string "im Kampf langsam\n" - .string "KP wieder auf.$" - -gItemDescription_DragonScale: @ 83C3E36 - .string "Seltsame Haut zum\n" - .string "Tragen für POKéMON\n" - .string "des Typs DRACHEN.$" - -gItemDescription_LightBall: @ 83C3E64 - .string "Item (Tragen)\n" - .string "erhöht PIKACHUS\n" - .string "SP. ANGR.$" - -gItemDescription_SoftSand: @ 83C3E94 - .string "Item (Tragen)\n" - .string "verstärkt BODEN-\n" - .string "Attacken.$" - -gItemDescription_HardStone: @ 83C3ECC - .string "Item (Tragen)\n" - .string "verstärkt GESTEIN-\n" - .string "Attacken.$" - -gItemDescription_MiracleSeed: @ 83C3F02 - .string "Item (Tragen)\n" - .string "verstärkt PFLAN-\n" - .string "ZEN-Attacken.$" - -gItemDescription_BlackGlasses: @ 83C3F39 - .string "Item (Tragen)\n" - .string "verstärkt UNLICHT-\n" - .string "Attacken.$" - -gItemDescription_BlackBelt: @ 83C3F6F - .string "Item (Tragen)\n" - .string "verstärkt KAMPF-\n" - .string "Attacken.$" - -gItemDescription_Magnet: @ 83C3F9D - .string "Item (Tragen)\n" - .string "verstärkt ELEKTRO-\n" - .string "Attacken.$" - -gItemDescription_MysticWater: @ 83C3FCB - .string "Item (Tragen)\n" - .string "verstärkt WASSER-\n" - .string "Attacken.$" - -gItemDescription_SharpBeak: @ 83C4002 - .string "Item (Tragen)\n" - .string "verstärkt FLUG-\n" - .string "Attacken.$" - -gItemDescription_PoisonBarb: @ 83C403A - .string "Item (Tragen)\n" - .string "verstärkt GIFT-\n" - .string "Attacken.$" - -gItemDescription_NeverMeltIce: @ 83C4072 - .string "Item (Tragen)\n" - .string "verstärkt EIS-\n" - .string "Attacken.$" - -gItemDescription_SpellTag: @ 83C40A7 - .string "Item (Tragen)\n" - .string "verstärkt GEIST-\n" - .string "Attacken.$" - -gItemDescription_TwistedSpoon: @ 83C40DE - .string "Item (Tragen)\n" - .string "verstärkt PSYCHO-\n" - .string "Attacken.$" - -gItemDescription_Charcoal: @ 83C410B - .string "Item (Tragen)\n" - .string "verstärkt FEUER-\n" - .string "Attacken.$" - -gItemDescription_DragonFang: @ 83C4141 - .string "Item (Tragen)\n" - .string "verstärkt DRACHEN-\n" - .string "Attacken.$" - -gItemDescription_SilkScarf: @ 83C4179 - .string "Item (Tragen)\n" - .string "verstärkt NORMAL-\n" - .string "Attacken.$" - -gItemDescription_UpGrade: @ 83C41B1 - .string "Eine mysteriöse\n" - .string "Box der SILPH CO.$" - -gItemDescription_ShellBell: @ 83C41D2 - .string "Item (Tragen) füllt\n" - .string "im Kampf langsam \n" - .string "KP wieder auf.$" - -gItemDescription_SeaIncense: @ 83C4206 - .string "Item (Tragen)\n" - .string "verstärkt WASSER-\n" - .string "Attacken.$" - -gItemDescription_LaxIncense: @ 83C4239 - .string "Item (Tragen)\n" - .string "senkt Genauigkeit\n" - .string "des Gegners.$" - -gItemDescription_LuckyPunch: @ 83C426E - .string "Item (Tragen)\n" - .string "erhöht CHANEIRAS\n" - .string "Volltrefferquote.$" - -gItemDescription_MetalPowder: @ 83C42A3 - .string "Item (Tragen)\n" - .string "erhöht VERT.-Wert\n" - .string "von DITTO.$" - -gItemDescription_ThickClub: @ 83C42C4 - .string "Irgendeine Art\n" - .string "Knochen von\n" - .string "geringem Wert.$" - -gItemDescription_Stick: @ 83C42F1 - .string "Gemeiner Lauch,\n" - .string "der nur von\n" - .string "geringem Wert ist.$" - -gItemDescription_RedScarf: @ 83C431A - .string "Item (Tragen) hebt\n" - .string "COOL.-Wert für den\n" - .string "WETTBEWERB.$" - -gItemDescription_BlueScarf: @ 83C4344 - .string "Item (Tragen) hebt\n" - .string "SCHÖN.-Wert für den\n" - .string "WETTBEWERB.$" - -gItemDescription_PinkScarf: @ 83C4370 - .string "Item (Tragen) hebt\n" - .string "ANMUT-Wert für den\n" - .string "WETTBEWERB.$" - -gItemDescription_GreenScarf: @ 83C439A - .string "Item (Tragen) hebt\n" - .string "KLUG.-Wert für den\n" - .string "WETTBEWERB.$" - -gItemDescription_YellowScarf: @ 83C43C5 - .string "Item (Tragen) hebt\n" - .string "STÄRKE-Wert für\n" - .string "den WETTBEWERB.$" - -gItemDescription_MachBike: @ 83C43F0 - .string "Klapprad, das dop-\n" - .string "pelt so schnell ist\n" - .string "wie ein Fußgänger.$" - -gItemDescription_CoinCase: @ 83C4425 - .string "Kann bis zu 9.999\n" - .string "MÜNZEN aufnehmen.$" - -gItemDescription_Itemfinder: @ 83C444A - .string "Ein Gerät, das ver-\n" - .string "borgene Items via \n" - .string "Schallwellen ortet.$" - -gItemDescription_OldRod: @ 83C447C - .string "Damit kannst du in\n" - .string "jedem Gewässer\n" - .string "POKéMON angeln.$" - -gItemDescription_GoodRod: @ 83C44AF - .string "Eine recht gute\n" - .string "Angel zum\n" - .string "POKéMON-Fischen.$" - -gItemDescription_SuperRod: @ 83C44DF - .string "Die beste Angel,\n" - .string "um nach POKéMON\n" - .string "zu fischen.$" - -gItemDescription_SSTicket: @ 83C450F - .string "Ein Ticket zur\n" - .string "Fahrt auf\n" - .string "einer Fähre.$" - -gItemDescription_ContestPass: @ 83C453B - .string "Ausweis zur Teil-\n" - .string "nahme an POKéMON- \n" - .string "WETTBEWERBEN.$" - -gItemDescription_WailmerPail: @ 83C456C - .string "Ein Gegenstand zum\n" - .string "Gießen von Pflan-\n" - .string "zen wie BEEREN.$" - -gItemDescription_DevonGoods: @ 83C4599 - .string "Päckchen, das Ma-\n" - .string "schinenteile von\n" - .string "DEVON enthält.$" - -gItemDescription_SootSack: @ 83C45C8 - .string "Beutel zum Sammeln\n" - .string "und Aufbewahren\n" - .string "von Vulkanasche.$" - -gItemDescription_BasementKey: @ 83C45F5 - .string "Schlüssel für NEU\n" - .string "MALVENFROH unter\n" - .string "MALVENFROH CITY.$" - -gItemDescription_AcroBike: @ 83C4625 - .string "Klapprad ermög-\n" - .string "licht Sprünge und\n" - .string "Wheelies.$" - -gItemDescription_PokeblockCase: @ 83C4656 - .string "Box für {POKEBLOCK},\n" - .string "die im BEERENMIXER\n" - .string "hergestellt werden.$" - -gItemDescription_Letter: @ 83C468B - .string "Brief an TROY\n" - .string "vom PRÄSIDENTEN\n" - .string "der DEVON CORP.$" - -gItemDescription_EonTicket: @ 83C46C4 - .string "Bootsticket zu\n" - .string "einer fernen Insel\n" - .string "im Süden.$" - -gItemDescription_RedOrb: @ 83C46F9 - .string "Rot glühende Kugel,\n" - .string "die eine uralte\n" - .string "Macht bergen soll.$" - -gItemDescription_BlueOrb: @ 83C472E - .string "Blau glühende Kugel,\n" - .string "die eine uralte\n" - .string "Macht bergen soll.$" - -gItemDescription_Scanner: @ 83C4764 - .string "Ein Gerät, das\n" - .string "im SCHIFFSWRACK\n" - .string "gefunden wurde.$" - -gItemDescription_GoGoggles: @ 83C478E - .string "Schicke Brille, die\n" - .string "die Augen vor Sand-\n" - .string "stürmen schützt.$" - -gItemDescription_Meteorite: @ 83C47C6 - .string "Meteorit. Fundort:\n" - .string "METEORFÄLLE.$" - -gItemDescription_Room1Key: @ 83C47E9 - .string "Schlüssel zur Tür\n" - .string "einer Kabine auf\n" - .string "dem SCHIFFSWRACK.$" - -gItemDescription_Room2Key: @ 83C481C - .string "Schlüssel zur Tür\n" - .string "einer Kabine auf\n" - .string "dem SCHIFFSWRACK.$" - -gItemDescription_Room4Key: @ 83C484F - .string "Schlüssel zur Tür\n" - .string "einer Kabine auf\n" - .string "dem SCHIFFSWRACK.$" - -gItemDescription_Room6Key: @ 83C4882 - .string "Schlüssel zur Tür\n" - .string "einer Kabine auf\n" - .string "dem SCHIFFSWRACK.$" - -gItemDescription_StorageKey: @ 83C48B5 - .string "Schlüssel zum\n" - .string "Lagerraum auf\n" - .string "dem SCHIFFSWRACK.$" - -gItemDescription_RootFossil: @ 83C48E7 - .string "Fossil eines ural-\n" - .string "ten POKéMON, das in\n" - .string "der Tiefsee lebte.$" - -gItemDescription_ClawFossil: @ 83C491B - .string "Fossil eines ural-\n" - .string "ten POKéMON, das in\n" - .string "der Tiefsee lebte.$" - -gItemDescription_DevonScope: @ 83C494F - .string "Gerät von DEVON, \n" - .string "das unsichtbare\n" - .string "POKéMON entlarvt.$" - -gItemDescription_TM01: @ 83C4985 - .string "Stark. POKéMON er-\n" - .string "schrickt vielleicht\n" - .string "bei gegn. Attacke.$" - -gItemDescription_TM02: @ 83C49BC - .string "Gegner wird mit\n" - .string "langen, scharfen\n" - .string "Krallen attackiert.$" - -gItemDescription_TM03: @ 83C49EE - .string "Eine Ultraschall-\n" - .string "welle, die den Geg-\n" - .string "ner verwirren kann.$" - -gItemDescription_TM04: @ 83C4A1D - .string "Verstärkt SP. ANGR.\n" - .string "und SP. VERT. durch\n" - .string "Konzentration.$" - -gItemDescription_TM05: @ 83C4A4E - .string "Brüller schlägt Geg-\n" - .string "ner in die Flucht \n" - .string "und beendet Kampf.$" - -gItemDescription_TM06: @ 83C4A88 - .string "Vergiftet den Geg-\n" - .string "ner und schadet \n" - .string "ihm zunehmend.$" - -gItemDescription_TM07: @ 83C4ABD - .string "Hagelsturm schadet\n" - .string "allen POKéMON außer\n" - .string "denen des Typs EIS.$" - -gItemDescription_TM08: @ 83C4AF2 - .string "Stärkt den Körper.\n" - .string "So steigt ANGR.-\n" - .string "und VERT.-Wert.$" - -gItemDescription_TM09: @ 83C4B24 - .string "Bepflanzt den\n" - .string "Gegner mit 2 bis 5\n" - .string "Samen auf einmal.$" - -gItemDescription_TM10: @ 83C4B54 - .string "Die Stärke dieser\n" - .string "Attacke hängt vom \n" - .string "jew. POKéMON ab.$" - -gItemDescription_TM11: @ 83C4B85 - .string "Verstärkt FEUER-\n" - .string "Attacken über \n" - .string "5 Runden.$" - -gItemDescription_TM12: @ 83C4BB6 - .string "Reizt Geg. so, dass\n" - .string "er nur Angriffs-\n" - .string "attacken einsetzt.$" - -gItemDescription_TM13: @ 83C4BE7 - .string "Eisig kalter Strahl,\n" - .string "der den Gegner\n" - .string "einfrieren kann.$" - -gItemDescription_TM14: @ 83C4C17 - .string "Eis- und Schnee- \n" - .string "Attacke, die Gegner\n" - .string "einfrieren kann.$" - -gItemDescription_TM15: @ 83C4C50 - .string "Stark, muss sich\n" - .string "aber in der nächs-\n" - .string "ten Runde aufladen.$" - -gItemDescription_TM16: @ 83C4C7E - .string "Wand aus Licht, die\n" - .string "Senkung des SP.\n" - .string "ANGR. verringert.$" - -gItemDescription_TM17: @ 83C4CB2 - .string "Schützt, könnte\n" - .string "aber bei häufigem\n" - .string "Einsatz versagen.$" - -gItemDescription_TM18: @ 83C4CEA - .string "Verstärkt WASSER-\n" - .string "Attacken über\n" - .string "5 Runden.$" - -gItemDescription_TM19: @ 83C4D1C - .string "Füllt KP um die Hälf-\n" - .string "te der zugefügten\n" - .string "Schadenspunkte.$" - -gItemDescription_TM20: @ 83C4D54 - .string "Mystische Macht\n" - .string "verhindert Status-\n" - .string "veränderungen.$" - -gItemDescription_TM21: @ 83C4D87 - .string "Je unbeliebter der\n" - .string "Trainer, desto grö-\n" - .string "ßer die Wirkung.$" - -gItemDescription_TM22: @ 83C4DC1 - .string "Erst wird Sonnen-\n" - .string "licht absorbiert,\n" - .string "dann erfolgt Angr.$" - -gItemDescription_TM23: @ 83C4DFB - .string "Schlag mit harter\n" - .string "Rute. Kann gleichz.\n" - .string "VERT.-Wert senken.$" - -gItemDescription_TM24: @ 83C4E31 - .string "Starke Elektro-\n" - .string "Attacke kann\n" - .string "Paralyse bewirken.$" - -gItemDescription_TM25: @ 83C4E66 - .string "Mächtiger Donner-\n" - .string "schlag, der Paraly-\n" - .string "se bewirken kann.$" - -gItemDescription_TM26: @ 83C4E9B - .string "Starkes Beben hat\n" - .string "keinen Einfluss auf\n" - .string "fliegende Gegner.$" - -gItemDescription_TM27: @ 83C4ECD - .string "Je beliebter der\n" - .string "Trainer, desto grö-\n" - .string "ßer die Wirkung.$" - -gItemDescription_TM28: @ 83C4F07 - .string "Erst gräbt sich An-\n" - .string "greifer ein, dann\n" - .string "erfolgt Angriff.$" - -gItemDescription_TM29: @ 83C4F3E - .string "Starke PSYCHO-At-\n" - .string "tacke, die SP. VERT.\n" - .string "senken kann.$" - -gItemDescription_TM30: @ 83C4F70 - .string "Dunkler Klumpen,\n" - .string "der SP. VERT.\n" - .string "senken kann.$" - -gItemDescription_TM31: @ 83C4FA4 - .string "Zerstört Barrieren\n" - .string "wie SCHUTZSCHILD,\n" - .string "fügt Schaden zu.$" - -gItemDescription_TM32: @ 83C4FDB - .string "Virtueller Doppel-\n" - .string "gänger erhöht\n" - .string "den Flucht-Wert.$" - -gItemDescription_TM33: @ 83C500B - .string "Wand aus Licht, die\n" - .string "physische Atta-\n" - .string "cken schwächt.$" - -gItemDescription_TM34: @ 83C5042 - .string "Fügt Gegner einen\n" - .string "Stromschlag zu,\n" - .string "der nie verfehlt.$" - -gItemDescription_TM35: @ 83C507D - .string "Entfesselt Feuer-\n" - .string "strahl, der Gegner\n" - .string "verbrennen kann.$" - -gItemDescription_TM36: @ 83C50AC - .string "Bewirft Gegner mit\n" - .string "Matsch, der ihn\n" - .string "vergiften kann.$" - -gItemDescription_TM37: @ 83C50DC - .string "Sandsturm trifft\n" - .string "etliche Runden lang\n" - .string "die Kämpfenden.$" - -gItemDescription_TM38: @ 83C5115 - .string "Kraftvolle FEUER-\n" - .string "Attacke, die Gegner\n" - .string "verbrennen kann.$" - -gItemDescription_TM39: @ 83C5143 - .string "Stoppt GESTEIN-\n" - .string "Attacken. Kann\n" - .string "INIT.-Wert senken.$" - -gItemDescription_TM40: @ 83C517A - .string "Eine extrem schnel-\n" - .string "le Attacke, die\n" - .string "unausweichlich ist.$" - -gItemDescription_TM41: @ 83C51AA - .string "Blockiert gerade\n" - .string "verwendete Atta-\n" - .string "cke des Gegners.$" - -gItemDescription_TM42: @ 83C51DE - .string "Stärkt ANGR.-Wert\n" - .string "bei Gift, Brand oder\n" - .string "Paralyse.$" - -gItemDescription_TM43: @ 83C5211 - .string "Die Umgebung\n" - .string "beeinflusst die Art\n" - .string "der Attacke.$" - -gItemDescription_TM44: @ 83C5245 - .string "POKéMON schläft\n" - .string "2 Runden. Füllt KP\n" - .string "und heilt Status.$" - -gItemDescription_TM45: @ 83C527F - .string "Erschwert Angriff\n" - .string "auf Gegner des an-\n" - .string "deren Geschlechts.$" - -gItemDescription_TM46: @ 83C52B6 - .string "Beim Angriff wird\n" - .string "Item des Gegners\n" - .string "evtl. gestohlen.$" - -gItemDescription_TM47: @ 83C52E9 - .string "Den Gegner\n" - .string "treffen stählerne\n" - .string "Flügelschläge.$" - -gItemDescription_TM48: @ 83C531A - .string "Austausch der\n" - .string "Fähigkeiten bei der\n" - .string "nächsten Attacke.$" - -gItemDescription_TM49: @ 83C5354 - .string "Stiehlt die\n" - .string "Effekte der gegne-\n" - .string "rischen Attacke.$" - -gItemDescription_TM50: @ 83C538D - .string "Höchste Kraft,\n" - .string "aber senkt SP.\n" - .string "ANGR. enorm.$" - -gItemDescription_HM01: @ 83C53C4 - .string "Gegner wird mit\n" - .string "klingenscharfen\n" - .string "Krallen attackiert.$" - -gItemDescription_HM02: @ 83C53F0 - .string "PKMN fliegt hoch,\n" - .string "dann erfolgt rasan-\n" - .string "ter Luftangriff.$" - -gItemDescription_HM03: @ 83C5424 - .string "Eine riesige Flut-\n" - .string "welle ergießt sich\n" - .string "über dem Gegner.$" - -gItemDescription_HM04: @ 83C545A - .string "Den Gegner trifft \n" - .string "ein energiegelade-\n" - .string "ner Kraftschlag.$" - -gItemDescription_HM05: @ 83C5485 - .string "Ein gleißender\n" - .string "Lichtstrahl, der\n" - .string "Genau. senken kann.$" - -gItemDescription_HM06: @ 83C54BD - .string "Steinbrecherische\n" - .string "Attacke, die VERT.-\n" - .string "Wert senken kann.$" - -gItemDescription_HM07: @ 83C54F4 - .string "Mächtige Attacke,\n" - .string "die Wasserfälle\n" - .string "bezwingbar macht.$" - -gItemDescription_HM08: @ 83C552B - .string "PKMN taucht ab,\n" - .string "dann erfolgt An-\n" - .string "griff aus der Tiefe.$" - -gItemDescription_Dummy: @ 83C5562 - .string "$" diff --git a/data-de/text/storyteller.inc b/data-de/text/storyteller.inc index ee2068766..abcc8a4a8 100644 --- a/data-de/text/storyteller.inc +++ b/data-de/text/storyteller.inc @@ -1,25 +1,25 @@ -MauvilleCity_PokemonCenter_1F_Text_1AECC6:: @ 81AECC6 +gTextStoryteller_Introduction:: @ 81AECC6 .string "Ich bin der GESCHICHTENERZÄHLER.\n" .string "Ich erzähle dir die Geschichten von\l" .string "legendären TRAINERN.\p" .string "Soll ich dir etwas erzählen?$" -MauvilleCity_PokemonCenter_1F_Text_1AED1D:: @ 81AED1D +gTextStoryteller_OhIFeelStifled:: @ 81AED1D .string "Oh...\n" .string "Keiner mag mich...$" -MauvilleCity_PokemonCenter_1F_Text_1AED35:: @ 81AED35 +gTextStoryteller_WhichTale:: @ 81AED35 .string "Ich kenne viele dieser Legenden.\n" .string "Welche möchtest du hören?$" -MauvilleCity_PokemonCenter_1F_Text_1AED70:: @ 81AED70 +gTextStoryteller_ButIKnowOfNoLegendaryTrainers:: @ 81AED70 .string "Aber ich weiß nichts über legendäre\n" .string "TRAINER. Also habe ich keine Ge-\l" .string "schichte auf Lager.\p" .string "Wo findet man wohl einen TRAINER, der\n" .string "einer lebenden Legende gleicht?$" -MauvilleCity_PokemonCenter_1F_Text_1AEDE8:: @ 81AEDE8 +gTextStoryteller_BirthOfANewLegend:: @ 81AEDE8 .string "Was ist?\n" .string "Du... Du...\p" .string "{STR_VAR_2}\n" @@ -27,39 +27,39 @@ MauvilleCity_PokemonCenter_1F_Text_1AEDE8:: @ 81AEDE8 .string "Das ist einfach großartig!\n" .string "Die Geburt einer neuen Legende!$" -MauvilleCity_PokemonCenter_1F_Text_1AEE50:: @ 81AEE50 +gTextStoryteller_CouldThereBeOtherTrainers:: @ 81AEE50 .string "Ich überlege, ob es nicht noch andere\n" .string "TRAINER gibt, die mir beeindruckende\l" .string "Geschichten erzählen können.$" -MauvilleCity_PokemonCenter_1F_Text_1AEEB4:: @ 81AEEB4 +gTextStoryteller_HaveYouAnyTales:: @ 81AEEB4 .string "Bist du ein TRAINER?\p" .string "Dann sag mir, ob du Geschichten\n" .string "für mich hast, die legendär sind?$" -MauvilleCity_PokemonCenter_1F_Text_1AEF0A:: @ 81AEF0A +gTextStoryteller_HearAnotherLegendaryTale:: @ 81AEF0A .string "Übrigens... Möchtest du eine weitere\n" .string "legendäre Geschichte hören?$" -MauvilleCity_PokemonCenter_1F_Text_1AEF49:: @ 81AEF49 +gTextStoryteller_ImNotSatisfied:: @ 81AEF49 .string "Hmm...\n" .string "Ich bin nicht zufrieden...\p" .string "Ich wünschte, du würdest mir Neuig-\n" .string "keiten erzählen, die den Titel Legende\l" .string "verdienen.$" -MauvilleCity_PokemonCenter_1F_Text_1AEFA5:: @ 81AEFA5 +gTextStoryteller_WishMorePeopleWould:: @ 81AEFA5 .string "Ich wollte, mehr Leute würden sich für\n" .string "meine epischen Geschichten über\l" .string "legendäre TRAINER interessieren.$" -UnknownString_81AEFFC:: @ 81AEFFC +gTextStoryteller_Story1Title:: @ 81AEFFC .string "Der speicherfreudige TRAINER$" -UnknownString_81AF013:: @ 81AF013 +gTextStoryteller_Story1Action:: @ 81AF013 .string "Hast das Spiel gespeichert?$" -UnknownString_81AF022:: @ 81AF022 +gTextStoryteller_Story1Text:: @ 81AF022 .string "Dies ist die Geschichte eines TRAINERS\n" .string "namens {STR_VAR_3}.\p" .string "Dieser TRAINER hat das Spiel\n" @@ -67,13 +67,13 @@ UnknownString_81AF022:: @ 81AF022 .string "Einen vorsichtigeren TRAINER als\n" .string "{STR_VAR_3} wird man nicht finden!$" -UnknownString_81AF0A3:: @ 81AF0A3 +gTextStoryteller_Story2Title:: @ 81AF0A3 .string "Der TRAINER als Trendsetter$" -UnknownString_81AF0BB:: @ 81AF0BB +gTextStoryteller_Story2Action:: @ 81AF0BB .string "Hast Trends gesetzt?$" -UnknownString_81AF0CA:: @ 81AF0CA +gTextStoryteller_Story2Text:: @ 81AF0CA .string "Dies ist die Geschichte eines TRAINERS\n" .string "namens {STR_VAR_3}.\p" .string "Dieser TRAINER hat {STR_VAR_1}-mal\n" @@ -81,13 +81,13 @@ UnknownString_81AF0CA:: @ 81AF0CA .string "{STR_VAR_3} setzt den Trend für alle - in\n" .string "der ganzen HOENN-Region!$" -UnknownString_81AF149:: @ 81AF149 +gTextStoryteller_Story3Title:: @ 81AF149 .string "Der BEEREN pflanzende TRAINER$" -UnknownString_81AF164:: @ 81AF164 +gTextStoryteller_Story3Action:: @ 81AF164 .string "Hast BEEREN gepflanzt?$" -UnknownString_81AF174:: @ 81AF174 +gTextStoryteller_Story3Text:: @ 81AF174 .string "Dies ist die Geschichte eines TRAINERS\n" .string "namens {STR_VAR_3}.\p" .string "Dieser TRAINER hat {STR_VAR_1}-mal\n" @@ -95,13 +95,13 @@ UnknownString_81AF174:: @ 81AF174 .string "{STR_VAR_3} ist ein legendärer Lieb-\n" .string "haber von BEEREN!$" -UnknownString_81AF1E5:: @ 81AF1E5 +gTextStoryteller_Story4Title:: @ 81AF1E5 .string "Der RAD verrückte TRAINER$" -UnknownString_81AF1FD:: @ 81AF1FD +gTextStoryteller_Story4Action:: @ 81AF1FD .string "Hast RÄDER getauscht?$" -UnknownString_81AF20A:: @ 81AF20A +gTextStoryteller_Story4Text:: @ 81AF20A .string "Dies ist die Geschichte eines TRAINERS\n" .string "namens {STR_VAR_3}.\p" .string "Dieser TRAINER hat {STR_VAR_1}-mal\n" @@ -109,13 +109,13 @@ UnknownString_81AF20A:: @ 81AF20A .string "{STR_VAR_3} ist ein TRAINER, dessen\n" .string "Passion das RADfahren ist!$" -UnknownString_81AF281:: @ 81AF281 +gTextStoryteller_Story5Title:: @ 81AF281 .string "Der Interviews gebende TRAINER$" -UnknownString_81AF299:: @ 81AF299 +gTextStoryteller_Story5Action:: @ 81AF299 .string "Hast Interviews gegeben?$" -UnknownString_81AF2A9:: @ 81AF2A9 +gTextStoryteller_Story5Text:: @ 81AF2A9 .string "Dies ist die Geschichte eines TRAINERS\n" .string "namens {STR_VAR_3}.\p" .string "Dieser TRAINER wurde {STR_VAR_1}-mal\n" @@ -123,13 +123,13 @@ UnknownString_81AF2A9:: @ 81AF2A9 .string "{STR_VAR_3} ist ein TRAINER, der überall\n" .string "Aufmerksamkeit erregt!$" -UnknownString_81AF32C:: @ 81AF32C +gTextStoryteller_Story6Title:: @ 81AF32C .string "Der kampfliebende TRAINER$" -UnknownString_81AF345:: @ 81AF345 +gTextStoryteller_Story6Action:: @ 81AF345 .string "Hast oft gekämpft?$" -UnknownString_81AF34D:: @ 81AF34D +gTextStoryteller_Story6Text:: @ 81AF34D .string "Dies ist die Geschichte eines TRAINERS\n" .string "namens {STR_VAR_3}.\p" .string "Dieser TRAINER hat {STR_VAR_1}-mal\n" @@ -137,13 +137,13 @@ UnknownString_81AF34D:: @ 81AF34D .string "{STR_VAR_3} ist ein TRAINER, der zu\n" .string "einem Kampf nicht nein sagt!$" -UnknownString_81AF3D0:: @ 81AF3D0 +gTextStoryteller_Story7Title:: @ 81AF3D0 .string "Der POKéMON fangende TRAINER$" -UnknownString_81AF3ED:: @ 81AF3ED +gTextStoryteller_Story7Action:: @ 81AF3ED .string "Hast POKéMON gefangen?$" -UnknownString_81AF3FC:: @ 81AF3FC +gTextStoryteller_Story7Text:: @ 81AF3FC .string "Dies ist die Geschichte eines TRAINERS\n" .string "namens {STR_VAR_3}.\p" .string "Dieser TRAINER hat {STR_VAR_1}\n" @@ -151,13 +151,13 @@ UnknownString_81AF3FC:: @ 81AF3FC .string "{STR_VAR_3} ist ein legendärer Fänger\n" .string "von POKéMON!$" -UnknownString_81AF46D:: @ 81AF46D +gTextStoryteller_Story8Title:: @ 81AF46D .string "Der angelnde TRAINER$" -UnknownString_81AF481:: @ 81AF481 +gTextStoryteller_Story8Action:: @ 81AF481 .string "Hast POKéMON mit einer ANGEL gefangen?$" -UnknownString_81AF49B:: @ 81AF49B +gTextStoryteller_Story8Text:: @ 81AF49B .string "Dies ist die Geschichte eines TRAINERS\n" .string "namens {STR_VAR_3}.\p" .string "Dieser TRAINER hat {STR_VAR_1}\n" @@ -165,13 +165,13 @@ UnknownString_81AF49B:: @ 81AF49B .string "{STR_VAR_3} ist ein legendärer Angel-\n" .string "experte!$" -UnknownString_81AF511:: @ 81AF511 +gTextStoryteller_Story9Title:: @ 81AF511 .string "Der EIER wärmende TRAINER$" -UnknownString_81AF529:: @ 81AF529 +gTextStoryteller_Story9Action:: @ 81AF529 .string "Hast EIER ausgebrütet?$" -UnknownString_81AF536:: @ 81AF536 +gTextStoryteller_Story9Text:: @ 81AF536 .string "Dies ist die Geschichte eines TRAINERS\n" .string "namens {STR_VAR_3}.\p" .string "Es passierte {STR_VAR_1}-mal, dass der TRAINER\n" @@ -179,13 +179,13 @@ UnknownString_81AF536:: @ 81AF536 .string "{STR_VAR_3} ist ein legendärer Pfleger\n" .string "von EIERN!$" -UnknownString_81AF5A9:: @ 81AF5A9 +gTextStoryteller_Story10Title:: @ 81AF5A9 .string "Der TRAINER der Entwicklungen$" -UnknownString_81AF5BD:: @ 81AF5BD +gTextStoryteller_Story10Action:: @ 81AF5BD .string "Hast POKéMON sich entwickeln lassen?$" -UnknownString_81AF5CD:: @ 81AF5CD +gTextStoryteller_Story10Text:: @ 81AF5CD .string "Dies ist die Geschichte eines TRAINERS\n" .string "namens {STR_VAR_3}.\p" .string "Dieser TRAINER hat {STR_VAR_1}\n" @@ -193,13 +193,13 @@ UnknownString_81AF5CD:: @ 81AF5CD .string "{STR_VAR_3} ist der ultimative Ent-\n" .string "wickler von POKéMON!$" -UnknownString_81AF63F:: @ 81AF63F +gTextStoryteller_Story11Title:: @ 81AF63F .string "Der PKMN-CENTER liebende TRAINER$" -UnknownString_81AF661:: @ 81AF661 +gTextStoryteller_Story11Action:: @ 81AF661 .string "Gingst in ein POKéMON-CENTER?$" -UnknownString_81AF676:: @ 81AF676 +gTextStoryteller_Story11Text:: @ 81AF676 .string "Dies ist die Geschichte eines TRAINERS\n" .string "namens {STR_VAR_3}.\p" .string "Dieser TRAINER hat POKéMON\n" @@ -208,13 +208,13 @@ UnknownString_81AF676:: @ 81AF676 .string "Es gibt keinen größeren Fan der\n" .string "POKéMON-CENTER als {STR_VAR_3}!$" -UnknownString_81AF711:: @ 81AF711 +gTextStoryteller_Story12Title:: @ 81AF711 .string "Der gastfreundliche TRAINER$" -UnknownString_81AF726:: @ 81AF726 +gTextStoryteller_Story12Action:: @ 81AF726 .string "POKéMON haben sich bei dir erholt?$" -UnknownString_81AF73D:: @ 81AF73D +gTextStoryteller_Story12Text:: @ 81AF73D .string "Dies ist die Geschichte eines TRAINERS\n" .string "namens {STR_VAR_3}.\p" .string "Dieser TRAINER hat POKéMON\n" @@ -223,13 +223,13 @@ UnknownString_81AF73D:: @ 81AF73D .string "Kein TRAINER ist so gastfreundlich\n" .string "wie {STR_VAR_3}!$" -UnknownString_81AF7BF:: @ 81AF7BF +gTextStoryteller_Story13Title:: @ 81AF7BF .string "Der SAFARI liebende TRAINER$" -UnknownString_81AF7D9:: @ 81AF7D9 +gTextStoryteller_Story13Action:: @ 81AF7D9 .string "Bist in die SAFARI-ZONE gegangen?$" -UnknownString_81AF7F1:: @ 81AF7F1 +gTextStoryteller_Story13Text:: @ 81AF7F1 .string "Dies ist die Geschichte eines TRAINERS\n" .string "namens {STR_VAR_3}.\p" .string "Dieser TRAINER ist {STR_VAR_1}-mal in die\n" @@ -238,13 +238,13 @@ UnknownString_81AF7F1:: @ 81AF7F1 .string "wilde Seite in der SAFARI-ZONE zum\l" .string "Vorschein kommt!$" -UnknownString_81AF88A:: @ 81AF88A +gTextStoryteller_Story14Title:: @ 81AF88A .string "Der TRAINER als ZERSCHNEIDER$" -UnknownString_81AF8A1:: @ 81AF8A1 +gTextStoryteller_Story14Action:: @ 81AF8A1 .string "Hast ZERSCHNEIDER eingesetzt?$" -UnknownString_81AF8AA:: @ 81AF8AA +gTextStoryteller_Story14Text:: @ 81AF8AA .string "Dies ist die Geschichte eines TRAINERS\n" .string "namens {STR_VAR_3}.\p" .string "Dieser TRAINER hat {STR_VAR_1}-mal\n" @@ -252,13 +252,13 @@ UnknownString_81AF8AA:: @ 81AF8AA .string "{STR_VAR_3} ist ein TRAINER, der es\n" .string "liebt, etwas zu ZERSCHNEIDEN.$" -UnknownString_81AF91B:: @ 81AF91B +gTextStoryteller_Story15Title:: @ 81AF91B .string "Der TRAINER als ZERTRÜMMERER$" -UnknownString_81AF935:: @ 81AF935 +gTextStoryteller_Story15Action:: @ 81AF935 .string "Hast Felsen ZERTRÜMMERT?$" -UnknownString_81AF943:: @ 81AF943 +gTextStoryteller_Story15Text:: @ 81AF943 .string "Dies ist die Geschichte eines TRAINERS\n" .string "namens {STR_VAR_3}.\p" .string "Dieser TRAINER hat {STR_VAR_1}-mal\n" @@ -266,13 +266,13 @@ UnknownString_81AF943:: @ 81AF943 .string "{STR_VAR_3} ist ein TRAINER, der keinen\n" .string "Felsen unbeschädigt lassen kann.$" -UnknownString_81AF9C8:: @ 81AF9C8 +gTextStoryteller_Story16Title:: @ 81AF9C8 .string "Der Umzüge liebende TRAINER$" -UnknownString_81AF9E0:: @ 81AF9E0 +gTextStoryteller_Story16Action:: @ 81AF9E0 .string "Bist du mit der GEHEIMBASIS umgezogen?$" -UnknownString_81AF9F6:: @ 81AF9F6 +gTextStoryteller_Story16Text:: @ 81AF9F6 .string "Dies ist die Geschichte eines TRAINERS\n" .string "namens {STR_VAR_3}.\p" .string "Dieser TRAINER ist {STR_VAR_1}-mal mit\n" @@ -280,13 +280,13 @@ UnknownString_81AF9F6:: @ 81AF9F6 .string "{STR_VAR_3} ist ein TRAINER, der es\n" .string "liebt, sich ein neues Haus einzurichten.$" -UnknownString_81AFA79:: @ 81AFA79 +gTextStoryteller_Story17Title:: @ 81AFA79 .string "Der PLATSCHER des TRAINERS$" -UnknownString_81AFA92:: @ 81AFA92 +gTextStoryteller_Story17Action:: @ 81AFA92 .string "Hast PLATSCHER eingesetzt?$" -UnknownString_81AFA9E:: @ 81AFA9E +gTextStoryteller_Story17Text:: @ 81AFA9E .string "Dies ist die Geschichte eines TRAINERS\n" .string "namens {STR_VAR_3}.\p" .string "Dieser TRAINER hat {STR_VAR_1}-mal\n" @@ -294,13 +294,13 @@ UnknownString_81AFA9E:: @ 81AFA9E .string "{STR_VAR_3} ist ein TRAINER, der es\n" .string "liebt, zu PLATSCHEN.$" -UnknownString_81AFB17:: @ 81AFB17 +gTextStoryteller_Story18Title:: @ 81AFB17 .string "Der verbissene TRAINER$" -UnknownString_81AFB2D:: @ 81AFB2D +gTextStoryteller_Story18Action:: @ 81AFB2D .string "Hast VERZWEIFLER angewendet?$" -UnknownString_81AFB48:: @ 81AFB48 +gTextStoryteller_Story18Text:: @ 81AFB48 .string "Dies ist die Geschichte eines TRAINERS\n" .string "namens {STR_VAR_3}.\p" .string "Dieser TRAINER hat sich {STR_VAR_1}-mal\n" @@ -308,13 +308,13 @@ UnknownString_81AFB48:: @ 81AFB48 .string "{STR_VAR_3}... Ein verbissener TRAINER,\n" .string "der auch in der Not nicht aufgibt.$" -UnknownString_81AFBD8:: @ 81AFBD8 +gTextStoryteller_Story19Title:: @ 81AFBD8 .string "Der König der EINARMIGEN BANDITEN$" -UnknownString_81AFBE7:: @ 81AFBE7 +gTextStoryteller_Story19Action:: @ 81AFBE7 .string "Hast den EINARMIGEN BANDITEN besiegt?$" -UnknownString_81AFC04:: @ 81AFC04 +gTextStoryteller_Story19Text:: @ 81AFC04 .string "Dies ist die Geschichte eines TRAINERS\n" .string "namens {STR_VAR_3}.\p" .string "Dieser TRAINER hat {STR_VAR_1}-mal\n" @@ -322,13 +322,13 @@ UnknownString_81AFC04:: @ 81AFC04 .string "{STR_VAR_3}... Ein TRAINER, der am\n" .string "EINARMIGEN BANDITEN Glück hat.$" -UnknownString_81AFC8A:: @ 81AFC8A +gTextStoryteller_Story20Title:: @ 81AFC8A .string "Der König des ROULETTES$" -UnknownString_81AFC9D:: @ 81AFC9D +gTextStoryteller_Story20Action:: @ 81AFC9D .string "Hast in Folge beim ROULETTE gewonnen,$" -UnknownString_81AFCBE:: @ 81AFCBE +gTextStoryteller_Story20Text:: @ 81AFCBE .string "Dies ist die Geschichte eines TRAINERS\n" .string "namens {STR_VAR_3}.\p" .string "Dieser TRAINER hat {STR_VAR_1}-mal in Folge\n" @@ -336,13 +336,13 @@ UnknownString_81AFCBE:: @ 81AFCBE .string "{STR_VAR_3}... Ein TRAINER, dem die Kugel\n" .string "beim ROULETTE gehorcht.$" -UnknownString_81AFD44:: @ 81AFD44 +gTextStoryteller_Story21Title:: @ 81AFD44 .string "Der Herausforderer im DUELLTURM$" -UnknownString_81AFD60:: @ 81AFD60 +gTextStoryteller_Story21Action:: @ 81AFD60 .string "Hast Gegner im DUELLTURM gefordert?$" -UnknownString_81AFD80:: @ 81AFD80 +gTextStoryteller_Story21Text:: @ 81AFD80 .string "Dies ist die Geschichte eines TRAINERS\n" .string "namens {STR_VAR_3}.\p" .string "Dieser TRAINER hat {STR_VAR_1}-mal Gegner\n" @@ -350,13 +350,13 @@ UnknownString_81AFD80:: @ 81AFD80 .string "{STR_VAR_3}... Ein TRAINER, der im DUELL-\n" .string "TURM nach Perfektion strebt.$" -UnknownString_81AFE1D:: @ 81AFE1D +gTextStoryteller_Story22Title:: @ 81AFE1D .string "Der mixende TRAINER$" -UnknownString_81AFE36:: @ 81AFE36 +gTextStoryteller_Story22Action:: @ 81AFE36 .string "Hast {POKEBLOCK} hergestellt?$" -UnknownString_81AFE42:: @ 81AFE42 +gTextStoryteller_Story22Text:: @ 81AFE42 .string "Dies ist die Geschichte eines TRAINERS\n" .string "namens {STR_VAR_3}.\p" .string "Dieser TRAINER hat {STR_VAR_1}-mal\n" @@ -364,13 +364,13 @@ UnknownString_81AFE42:: @ 81AFE42 .string "Niemand bedient den BEERENMIXER\n" .string "besser als {STR_VAR_3}.$" -UnknownString_81AFEC2:: @ 81AFEC2 +gTextStoryteller_Story23Title:: @ 81AFEC2 .string "Der Fan der WETTBEWERBE$" -UnknownString_81AFEDD:: @ 81AFEDD +gTextStoryteller_Story23Action:: @ 81AFEDD .string "Hast an WETTBEWERBEN teilgenommen?$" -UnknownString_81AFEEE:: @ 81AFEEE +gTextStoryteller_Story23Text:: @ 81AFEEE .string "Dies ist die Geschichte eines TRAINERS\n" .string "namens {STR_VAR_3}.\p" .string "Dieser TRAINER hat {STR_VAR_1}-mal\n" @@ -378,13 +378,13 @@ UnknownString_81AFEEE:: @ 81AFEEE .string "{STR_VAR_3} liebt es, anderen seine\n" .string "POKéMON zu zeigen.$" -UnknownString_81AFF68:: @ 81AFF68 +gTextStoryteller_Story24Title:: @ 81AFF68 .string "Der Meister der WETTBEWERBE$" -UnknownString_81AFF7B:: @ 81AFF7B +gTextStoryteller_Story24Action:: @ 81AFF7B .string "Hast WETTBEWERBE gewonnen?$" -UnknownString_81AFF88:: @ 81AFF88 +gTextStoryteller_Story24Text:: @ 81AFF88 .string "Dies ist die Geschichte eines TRAINERS\n" .string "namens {STR_VAR_3}.\p" .string "Dieser TRAINER hat {STR_VAR_1}-mal\n" @@ -392,26 +392,26 @@ UnknownString_81AFF88:: @ 81AFF88 .string "{STR_VAR_3} ist ein unvergleichlicher\n" .string "Meister der WETTBEWERBE.$" -UnknownString_81AFFFB:: @ 81AFFFB +gTextStoryteller_Story25Title:: @ 81AFFFB .string "Der glückliche Einkäufer$" -UnknownString_81B000D:: @ 81B000D +gTextStoryteller_Story25Action:: @ 81B000D .string "Bist einkaufen gegangen?$" -UnknownString_81B0015:: @ 81B0015 +gTextStoryteller_Story25Text:: @ 81B0015 .string "Dies ist die Geschichte eines TRAINERS\n" .string "namens {STR_VAR_3}.\p" .string "Dieser TRAINER hat {STR_VAR_1}-mal\n" .string "in einem Geschäft Items gekauft!\p" .string "{STR_VAR_3} ein geborener Einkäufer.$" -UnknownString_81B009D:: @ 81B009D +gTextStoryteller_Story26Title:: @ 81B009D .string "Der TRAINER, der Items findet$" -UnknownString_81B00B6:: @ 81B00B6 +gTextStoryteller_Story26Action:: @ 81B00B6 .string "Hast den DETEKTOR eingesetzt?$" -UnknownString_81B00C9:: @ 81B00C9 +gTextStoryteller_Story26Text:: @ 81B00C9 .string "Dies ist die Geschichte eines TRAINERS\n" .string "namens {STR_VAR_3}.\p" .string "Dieser TRAINER hat {STR_VAR_1}-mal\n" @@ -419,13 +419,13 @@ UnknownString_81B00C9:: @ 81B00C9 .string "{STR_VAR_3} liebt es, den Boden nach\n" .string "verborgenen Items abzusuchen.$" -UnknownString_81B014D:: @ 81B014D +gTextStoryteller_Story27Title:: @ 81B014D .string "Der regennasse TRAINER$" -UnknownString_81B0165:: @ 81B0165 +gTextStoryteller_Story27Action:: @ 81B0165 .string "Wurdest nass geregnet?$" -UnknownString_81B0173:: @ 81B0173 +gTextStoryteller_Story27Text:: @ 81B0173 .string "Dies ist die Geschichte eines TRAINERS\n" .string "namens {STR_VAR_3}.\p" .string "Dieser TRAINER wurde {STR_VAR_1}-mal\n" @@ -433,13 +433,13 @@ UnknownString_81B0173:: @ 81B0173 .string "Das Charisma von {STR_VAR_3} zieht\n" .string "sogar den Regen an.$" -UnknownString_81B01E9:: @ 81B01E9 +gTextStoryteller_Story28Title:: @ 81B01E9 .string "Der passionierte POKéDEX-Leser$" -UnknownString_81B0201:: @ 81B0201 +gTextStoryteller_Story28Action:: @ 81B0201 .string "Hast im POKéDEX nachgeschlagen?$" -UnknownString_81B0213:: @ 81B0213 +gTextStoryteller_Story28Text:: @ 81B0213 .string "Dies ist die Geschichte eines TRAINERS\n" .string "namens {STR_VAR_3}.\p" .string "Dieser TRAINER hat {STR_VAR_1}-mal\n" @@ -447,13 +447,13 @@ UnknownString_81B0213:: @ 81B0213 .string "{STR_VAR_3} liebt es, alles über\n" .string "POKéMON im POKéDEX nachzulesen.$" -UnknownString_81B0290:: @ 81B0290 +gTextStoryteller_Story29Title:: @ 81B0290 .string "Der Sammler der BÄNDER$" -UnknownString_81B02A5:: @ 81B02A5 +gTextStoryteller_Story29Action:: @ 81B02A5 .string "Hast BÄNDER erhalten?$" -UnknownString_81B02B6:: @ 81B02B6 +gTextStoryteller_Story29Text:: @ 81B02B6 .string "Dies ist die Geschichte eines TRAINERS\n" .string "namens {STR_VAR_3}.\p" .string "Dieser TRAINER hat {STR_VAR_1}\n" @@ -461,13 +461,13 @@ UnknownString_81B02B6:: @ 81B02B6 .string "{STR_VAR_3} ist ein TRAINER, der es\n" .string "liebt, BÄNDER zu sammeln.$" -UnknownString_81B0337:: @ 81B0337 +gTextStoryteller_Story30Title:: @ 81B0337 .string "Der springende TRAINER$" -UnknownString_81B0351:: @ 81B0351 +gTextStoryteller_Story30Action:: @ 81B0351 .string "Bist Absätze heruntergesprungen?$" -UnknownString_81B0364:: @ 81B0364 +gTextStoryteller_Story30Text:: @ 81B0364 .string "Dies ist die Geschichte eines TRAINERS\n" .string "namens {STR_VAR_3}.\p" .string "Dieser TRAINER ist {STR_VAR_1}-mal\n" @@ -476,26 +476,26 @@ UnknownString_81B0364:: @ 81B0364 .string "TRAINER {STR_VAR_3} einfach hinab-\l" .string "springen.$" -UnknownString_81B03E9:: @ 81B03E9 +gTextStoryteller_Story31Title:: @ 81B03E9 .string "Der legendäre Fernsehzuschauer$" -UnknownString_81B0401:: @ 81B0401 +gTextStoryteller_Story31Action:: @ 81B0401 .string "Hast ferngeschaut?$" -UnknownString_81B040C:: @ 81B040C +gTextStoryteller_Story31Text:: @ 81B040C .string "Dies ist die Geschichte eines TRAINERS\n" .string "namens {STR_VAR_3}.\p" .string "Dieser TRAINER hat {STR_VAR_1}-mal\n" .string "Fernsehen geschaut!\p" .string "{STR_VAR_3} liebt es, fernzusehen.$" -UnknownString_81B046E:: @ 81B046E +gTextStoryteller_Story32Title:: @ 81B046E .string "Der zeitbewusste TRAINER$" -UnknownString_81B0489:: @ 81B0489 +gTextStoryteller_Story32Action:: @ 81B0489 .string "Hast nach der Uhrzeit gesehen?$" -UnknownString_81B049A:: @ 81B049A +gTextStoryteller_Story32Text:: @ 81B049A .string "Dies ist die Geschichte eines TRAINERS\n" .string "namens {STR_VAR_3}.\p" .string "Dieser TRAINER hat {STR_VAR_1}-mal\n" @@ -503,13 +503,13 @@ UnknownString_81B049A:: @ 81B049A .string "{STR_VAR_3} ist ein pünktlicher\n" .string "TRAINER, der sich der Zeit bewusst ist.$" -UnknownString_81B0523:: @ 81B0523 +gTextStoryteller_Story33Title:: @ 81B0523 .string "Der Zauberer der POKéMON-LOTTERIE$" -UnknownString_81B053E:: @ 81B053E +gTextStoryteller_Story33Action:: @ 81B053E .string "Hast in der LOTTERIE gewonnen?$" -UnknownString_81B0554:: @ 81B0554 +gTextStoryteller_Story33Text:: @ 81B0554 .string "Dies ist die Geschichte eines TRAINERS\n" .string "namens {STR_VAR_3}.\p" .string "Dieser TRAINER hat {STR_VAR_1}-mal\n" @@ -517,13 +517,13 @@ UnknownString_81B0554:: @ 81B0554 .string "TRAINER {STR_VAR_3} hat viele Freunde,\n" .string "die mit ihm POKéMON tauschen.$" -UnknownString_81B05D8:: @ 81B05D8 +gTextStoryteller_Story34Title:: @ 81B05D8 .string "Der TRAINER und die PENSION$" -UnknownString_81B05F3:: @ 81B05F3 +gTextStoryteller_Story34Action:: @ 81B05F3 .string "Hast POKéMON in die PENSION gebracht?$" -UnknownString_81B0610:: @ 81B0610 +gTextStoryteller_Story34Text:: @ 81B0610 .string "Dies ist die Geschichte eines TRAINERS\n" .string "namens {STR_VAR_3}.\p" .string "Dieser TRAINER hat {STR_VAR_1}-mal\n" @@ -532,13 +532,13 @@ UnknownString_81B0610:: @ 81B0610 .string "alles für die Entwicklung seiner\l" .string "POKéMON tut.$" -UnknownString_81B06A9:: @ 81B06A9 +gTextStoryteller_Story35Title:: @ 81B06A9 .string "Der SEILBAHN verrückte TRAINER$" -UnknownString_81B06C6:: @ 81B06C6 +gTextStoryteller_Story35Action:: @ 81B06C6 .string "Bist mit der SEILBAHN gefahren?$" -UnknownString_81B06D9:: @ 81B06D9 +gTextStoryteller_Story35Text:: @ 81B06D9 .string "Dies ist die Geschichte eines TRAINERS\n" .string "namens {STR_VAR_3}.\p" .string "Dieser TRAINER ist {STR_VAR_1}-mal\n" @@ -547,13 +547,13 @@ UnknownString_81B06D9:: @ 81B06D9 .string "TRAINER, der ständig rauf und runter\l" .string "fährt.$" -UnknownString_81B0763:: @ 81B0763 +gTextStoryteller_Story36Title:: @ 81B0763 .string "Der Liebhaber der Heißen Quellen$" -UnknownString_81B0781:: @ 81B0781 +gTextStoryteller_Story36Action:: @ 81B0781 .string "Hast in den Heißen Quellen gebadet?$" -UnknownString_81B0797:: @ 81B0797 +gTextStoryteller_Story36Text:: @ 81B0797 .string "Dies ist die Geschichte eines TRAINERS\n" .string "namens {STR_VAR_3}.\p" .string "Dieser TRAINER hat {STR_VAR_1}-mal\n" diff --git a/data-de/text/trader.inc b/data-de/text/trader.inc index adf5d3aeb..dae453e8b 100644 --- a/data-de/text/trader.inc +++ b/data-de/text/trader.inc @@ -1,58 +1,58 @@ -MauvilleCity_PokemonCenter_1F_Text_1AE88F:: @ 81AE88F +gTextTrader_Introduction:: @ 81AE88F .string "Hallo! Ich bin der HÄNDLER. Möchtest\n" .string "du Dekorationen mit mir tauschen?$" -MauvilleCity_PokemonCenter_1F_Text_1AE8C6:: @ 81AE8C6 +gTextTrader_FeelUnwanted1:: @ 81AE8C6 .string "Oh...\n" .string "Ich fühle mich überflüssig...$" -MauvilleCity_PokemonCenter_1F_Text_1AE8DF:: @ 81AE8DF +gTextTrader_TradedAlready:: @ 81AE8DF .string "Aber wir beide haben doch bereits\n" .string "Dekorationen ausgetauscht.$" -MauvilleCity_PokemonCenter_1F_Text_1AE910:: @ 81AE910 +gTextTrader_MenuPrompt:: @ 81AE910 .string "Wenn du etwas Dekoratives siehst, das\n" .string "du haben möchtest, lass es mich wissen.$" -MauvilleCity_PokemonCenter_1F_Text_1AE950:: @ 81AE950 +gTextTrader_DontWantAnything:: @ 81AE950 .string "Du möchtest nichts haben?\n" .string "Ich fühle mich so überflüssig...$" -MauvilleCity_PokemonCenter_1F_Text_1AE97C:: @ 81AE97C +gTextTrader_ItemOnceBelongedTo:: @ 81AE97C .string "Das dekorative Item gehörte einst\n" .string "{STR_VAR_1}.\p" .string "Möchtest du es haben?$" -MauvilleCity_PokemonCenter_1F_Text_1AE9B6:: @ 81AE9B6 +gTextTrader_YouDontHaveDecorations:: @ 81AE9B6 .string "Äh... Warte eine Sekunde. Du hast über-\n" .string "haupt kein dekoratives Item!$" -MauvilleCity_PokemonCenter_1F_Text_1AE9F8:: @ 81AE9F8 +gTextTrader_PickDecorationYoullTrade:: @ 81AE9F8 .string "Okay, wähle die Dekoration aus, die du\n" .string "mit mir tauschen willst.$" -MauvilleCity_PokemonCenter_1F_Text_1AEA2B:: @ 81AEA2B +gTextTrader_FeelUnwanted2:: @ 81AEA2B .string "Du willst nicht mit mir tauschen?\n" .string "Ich fühle mich überflüssig...$" -MauvilleCity_PokemonCenter_1F_Text_1AEA57:: @ 81AEA57 +gTextTrader_NoRoomForThis:: @ 81AEA57 .string "Du hast keinen Platz mehr für eine/n\n" .string "{STR_VAR_2}.$" -MauvilleCity_PokemonCenter_1F_Text_1AEA9B:: @ 81AEA9B +gTextTrader_SoWellTrade:: @ 81AEA9B .string "Okay, dann lass uns tauschen:\n" .string "{STR_VAR_3} gegen\l" .string "{STR_VAR_2}!$" -MauvilleCity_PokemonCenter_1F_Text_1AEAC3:: @ 81AEAC3 +gTextTrader_InUseYouCantTradeIt:: @ 81AEAC3 .string "Dieses Dekorationsstück ist im Ge-\n" .string "brauch. Das kannst du nicht tauschen.$" -MauvilleCity_PokemonCenter_1F_Text_1AEAFB:: @ 81AEAFB +gTextTrader_ThenWellTrade:: @ 81AEAFB .string "Dann lass uns tauschen! Ich werde meine\n" .string "Dekorationen auf deinen PC senden.$" -MauvilleCity_PokemonCenter_1F_Text_1AEB31:: @ 81AEB31 +gTextTrader_ICantTradeThatOneAway:: @ 81AEB31 .string "Huups! Tut mir Leid!\n" .string "Das ist ein ganz seltenes Stück!\l" .string "Das kann ich nicht tauschen!\p" diff --git a/data/battle_811DA74.s b/data/battle_811DA74.s deleted file mode 100644 index 873c76eb9..000000000 --- a/data/battle_811DA74.s +++ /dev/null @@ -1,64 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - - .align 2 -gLinkPartnerBufferCommands:: @ 83FE4F4 - .4byte LinkPartnerHandleGetAttributes - .4byte sub_811EC04 - .4byte LinkPartnerHandleSetAttributes - .4byte sub_811F664 - .4byte sub_811F6D8 - .4byte sub_811F7F4 - .4byte sub_811F9D0 - .4byte sub_811FAE4 - .4byte sub_811FC30 - .4byte sub_811FC3C - .4byte sub_811FCE8 - .4byte sub_811FDCC - .4byte sub_811FDD8 - .4byte sub_811FDE4 - .4byte sub_811FDF0 - .4byte sub_811FDFC - .4byte sub_8120094 - .4byte sub_81200F8 - .4byte sub_8120104 - .4byte sub_8120110 - .4byte sub_812011C - .4byte sub_8120128 - .4byte sub_8120134 - .4byte sub_8120140 - .4byte LinkPartnerHandleHealthBarUpdate - .4byte LinkPartnerHandleExpBarUpdate - .4byte LinkPartnerHandleStatusIconUpdate - .4byte LinkPartnerHandleStatusAnimation - .4byte sub_8120324 - .4byte sub_8120330 - .4byte sub_812033C - .4byte sub_8120348 - .4byte sub_8120354 - .4byte sub_8120360 - .4byte sub_812036C - .4byte sub_8120378 - .4byte sub_8120384 - .4byte sub_8120390 - .4byte sub_81203AC - .4byte sub_81203E4 - .4byte sub_81203FC - .4byte LinkPartnerHandleHitAnimation - .4byte sub_8120494 - .4byte LinkPartnerHandleEffectivenessSound - .4byte sub_81204E4 - .4byte LinkPartnerHandleFaintingCry - .4byte dp01t_2E_3_battle_intro - .4byte sub_8120588 - .4byte dp01t_30_3_80EB11C - .4byte sub_8120920 - .4byte sub_812096C - .4byte sub_8120978 - .4byte sub_81209D8 - .4byte sub_8120A40 - .4byte sub_8120A4C - .4byte sub_8120A58 - .4byte nullsub_75 diff --git a/data/battle_anim_807B69C.s b/data/battle_anim_807B69C.s deleted file mode 100644 index 0ed7d7cf0..000000000 --- a/data/battle_anim_807B69C.s +++ /dev/null @@ -1,23 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - - .align 2 -gSubspriteTable_83931B8:: @ 83931B8 - subsprite -16, -16, 2, 0, 64x64 - subsprite -16, 48, 2, 64, 64x32 - subsprite 48, -16, 2, 96, 32x64 - subsprite 48, 48, 2, 128, 32x32 - - .align 2 -gSubspriteTables_83931D8:: @ 83931D8 - .4byte 4, gSubspriteTable_83931B8 - - .align 2 -gSpriteTemplate_83931E0:: @ 83931E0 - spr_template 10010, 10010, gOamData_837E05C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - - .align 2 -gSpriteTemplate_83931F8:: @ 83931F8 - spr_template 10136, 10136, gOamData_837DF24, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_807B870 diff --git a/data/battle_anim_81258BC.s b/data/battle_anim_81258BC.s deleted file mode 100644 index 993adbc2e..000000000 --- a/data/battle_anim_81258BC.s +++ /dev/null @@ -1,64 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - - .align 2 -gSafariBufferCommands:: @ 8402080 - .4byte SafariHandleGetAttributes - .4byte sub_812B870 - .4byte sub_812B87C - .4byte sub_812B888 - .4byte sub_812B894 - .4byte sub_812B8A0 - .4byte sub_812B8AC - .4byte sub_812B8B8 - .4byte sub_812B994 - .4byte sub_812B9A0 - .4byte sub_812B9AC - .4byte sub_812B9B8 - .4byte sub_812B9C4 - .4byte sub_812BA14 - .4byte sub_812BA70 - .4byte sub_812BA7C - .4byte SafariHandlePrintString - .4byte SafariHandlePrintStringPlayerOnly - .4byte sub_812BB10 - .4byte sub_812BBFC - .4byte sub_812BC08 - .4byte sub_812BC14 - .4byte sub_812BC54 - .4byte sub_812BC60 - .4byte sub_812BC6C - .4byte sub_812BC78 - .4byte sub_812BC84 - .4byte sub_812BCC0 - .4byte sub_812BCCC - .4byte sub_812BCD8 - .4byte sub_812BCE4 - .4byte sub_812BCF0 - .4byte sub_812BCFC - .4byte sub_812BD08 - .4byte sub_812BD14 - .4byte sub_812BD20 - .4byte sub_812BD2C - .4byte sub_812BD38 - .4byte sub_812BD44 - .4byte sub_812BD50 - .4byte sub_812BD5C - .4byte sub_812BD68 - .4byte sub_812BD74 - .4byte sub_812BD80 - .4byte sub_812BDC4 - .4byte sub_812BDF4 - .4byte dp01t_2E_6_battle_intro - .4byte sub_812BE64 - .4byte sub_812BEB0 - .4byte sub_812BEBC - .4byte sub_812BEC8 - .4byte sub_812BED4 - .4byte sub_812BEE0 - .4byte sub_812BF3C - .4byte sub_812BF48 - .4byte sub_812BF54 - .4byte nullsub_78 diff --git a/data/battle_anim_8137220.s b/data/battle_anim_8137220.s deleted file mode 100644 index c1673af9a..000000000 --- a/data/battle_anim_8137220.s +++ /dev/null @@ -1,64 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - - .align 2 -gWallyBufferCommands:: @ 84061A4 - .4byte dp01t_00_5_getattr - .4byte sub_8138230 - .4byte sub_813823C - .4byte sub_8138C90 - .4byte sub_8138C9C - .4byte sub_8138CA8 - .4byte sub_8138CB4 - .4byte sub_8138D38 - .4byte sub_8138E04 - .4byte sub_8138ED0 - .4byte sub_8138EDC - .4byte sub_8138EE8 - .4byte sub_8138EF4 - .4byte sub_8138F44 - .4byte sub_8138FA0 - .4byte sub_8138FAC - .4byte sub_8139208 - .4byte dp01t_11_5_message_for_player_only - .4byte sub_8139298 - .4byte sub_8139378 - .4byte sub_8139384 - .4byte sub_81393EC - .4byte sub_813942C - .4byte sub_8139438 - .4byte sub_8139444 - .4byte sub_8139544 - .4byte sub_8139550 - .4byte sub_813955C - .4byte sub_8139568 - .4byte sub_8139574 - .4byte sub_8139580 - .4byte sub_813958C - .4byte sub_8139598 - .4byte sub_81395A4 - .4byte sub_81395B0 - .4byte sub_81395BC - .4byte sub_81395C8 - .4byte sub_81395D4 - .4byte sub_81395E0 - .4byte sub_81395EC - .4byte sub_81395F8 - .4byte sub_8139604 - .4byte sub_8139674 - .4byte sub_8139680 - .4byte sub_81396B0 - .4byte sub_81396E0 - .4byte dp01t_2E_5_battle_intro - .4byte sub_8139750 - .4byte sub_8139AA0 - .4byte sub_8139B20 - .4byte sub_8139B2C - .4byte sub_8139B38 - .4byte sub_8139B44 - .4byte sub_8139BA0 - .4byte sub_8139BAC - .4byte sub_8139BB8 - .4byte nullsub_80 diff --git a/data/battle_moves.inc b/data/battle_moves.s similarity index 99% rename from data/battle_moves.inc rename to data/battle_moves.s index ff7e2cb33..ea32446d2 100644 --- a/data/battle_moves.inc +++ b/data/battle_moves.s @@ -1,3 +1,8 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .section .rodata + .align 2 gBattleMoves:: @ 81FB12C @ NONE diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index fbb0826fc..e046794b3 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -4,7 +4,7 @@ .section script_data, "aw", %progbits -gUnknown_081D6BBC:: @ 81D6BBC +gBattleScriptsEffectsTable:: @ 81D6BBC .4byte MoveEffect_Hit .4byte MoveEffect_Sleep .4byte MoveEffect_PoisonHit @@ -305,11 +305,11 @@ MoveEffect_Sleep: @ 81D6F81 attackcanceler attackstring ppreduce - jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_1D83D6 + jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_ButItFailed jumpifstatus TARGET, SLP, BattleScript_1D6FC4 jumpifcannotsleep BattleScript_1D6FE0 - jumpifstatus TARGET, SLP | PSN | BRN | FRZ | PAR | TOX, BattleScript_1D83D6 - accuracycheck BattleScript_1D83D6, 0 + jumpifstatus TARGET, SLP | PSN | BRN | FRZ | PAR | TOX, BattleScript_ButItFailed + accuracycheck BattleScript_ButItFailed, 0 jumpifhalverset TARGET, 32, BattleScript_1D9037 attackanimation waitanimation @@ -638,9 +638,9 @@ MoveEffect_Roar: @ 81D72C5 ppreduce jumpifability TARGET, ABILITY_SUCTION_CUPS, BattleScript_1D988D jumpifspecialstatusflag TARGET, 0x400, 0, BattleScript_1D93EC - accuracycheck BattleScript_1D83D6, 65535 + accuracycheck BattleScript_ButItFailed, 65535 accuracycheck BattleScript_1D6F77, 0 - forcerandomswitch BattleScript_1D83D6 + forcerandomswitch BattleScript_ButItFailed MoveEffect_MultiHit: @ 81D72ED attackcanceler @@ -707,7 +707,7 @@ MoveEffect_Conversion: @ 81D73B1 attackcanceler attackstring ppreduce - changetypestoenemyattacktype BattleScript_1D83D6 + changetypestoenemyattacktype BattleScript_ButItFailed attackanimation waitanimation printstring BATTLE_TEXT_TypeTransform @@ -737,13 +737,13 @@ MoveEffect_Toxic: @ 81D73F4 attackstring ppreduce jumpifability TARGET, ABILITY_IMMUNITY, BattleScript_1D7463 - jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_1D83D6 + jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_ButItFailed jumpifstatus TARGET, PSN, BattleScript_1D7455 jumpifstatus TARGET, TOX, BattleScript_1D7455 - jumpifstatus TARGET, SLP | PSN | BRN | FRZ | PAR | TOX, BattleScript_1D83D6 + jumpifstatus TARGET, SLP | PSN | BRN | FRZ | PAR | TOX, BattleScript_ButItFailed jumpiftype TARGET, TYPE_POISON, BattleScript_1D83E8 jumpiftype TARGET, TYPE_STEEL, BattleScript_1D83E8 - accuracycheck BattleScript_1D83D6, 0 + accuracycheck BattleScript_ButItFailed, 0 jumpifhalverset TARGET, 32, BattleScript_1D9037 attackanimation waitanimation @@ -810,7 +810,7 @@ MoveEffect_Ohko: @ 81D74E4 attackcanceler attackstring ppreduce - accuracycheck BattleScript_1D83D6, 65535 + accuracycheck BattleScript_ButItFailed, 65535 atk6 jumpifbyte 4, 0x2024c68, 41, BattleScript_1D6F48 koplussomethings BattleScript_1D7505 @@ -939,7 +939,7 @@ MoveEffect_FocusEnergy: @ 81D7689 attackcanceler attackstring ppreduce - jumpifsecondarytstatus USER, S_FOCUS_ENERGY, BattleScript_1D83D6 + jumpifsecondarytstatus USER, S_FOCUS_ENERGY, BattleScript_ButItFailed setincreasedcriticalchance attackanimation waitanimation @@ -958,9 +958,9 @@ MoveEffect_Confuse: @ 81D76BF attackstring ppreduce jumpifability TARGET, ABILITY_OWN_TEMPO, BattleScript_1D98E5 - jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_1D83D6 + jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_ButItFailed jumpifsecondarytstatus TARGET, S_CONFUSED, BattleScript_1D76FE - accuracycheck BattleScript_1D83D6, 0 + accuracycheck BattleScript_ButItFailed, 0 jumpifhalverset TARGET, 32, BattleScript_1D9037 attackanimation waitanimation @@ -1041,13 +1041,13 @@ MoveEffect_Poison: @ 81D7795 attackstring ppreduce jumpifability TARGET, ABILITY_IMMUNITY, BattleScript_1D7463 - jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_1D83D6 + jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_ButItFailed jumpifstatus TARGET, PSN, BattleScript_1D7455 jumpifstatus TARGET, TOX, BattleScript_1D7455 jumpiftype TARGET, TYPE_POISON, BattleScript_1D83E8 jumpiftype TARGET, TYPE_STEEL, BattleScript_1D83E8 - jumpifstatus TARGET, SLP | PSN | BRN | FRZ | PAR | TOX, BattleScript_1D83D6 - accuracycheck BattleScript_1D83D6, 0 + jumpifstatus TARGET, SLP | PSN | BRN | FRZ | PAR | TOX, BattleScript_ButItFailed + accuracycheck BattleScript_ButItFailed, 0 jumpifhalverset TARGET, 32, BattleScript_1D9037 attackanimation waitanimation @@ -1062,12 +1062,12 @@ MoveEffect_Paralyze: @ 81D77F6 attackstring ppreduce jumpifability TARGET, ABILITY_LIMBER, BattleScript_1D7859 - jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_1D83D6 + jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_ButItFailed atk6 - jumpifbyte 4, 0x2024c68, 41, BattleScript_1D83D6 + jumpifbyte 4, 0x2024c68, 41, BattleScript_ButItFailed jumpifstatus TARGET, PAR, BattleScript_1D784B - jumpifstatus TARGET, SLP | PSN | BRN | FRZ | PAR | TOX, BattleScript_1D83D6 - accuracycheck BattleScript_1D83D6, 0 + jumpifstatus TARGET, SLP | PSN | BRN | FRZ | PAR | TOX, BattleScript_ButItFailed + accuracycheck BattleScript_ButItFailed, 0 jumpifhalverset TARGET, 32, BattleScript_1D9037 attackanimation waitanimation @@ -1168,7 +1168,7 @@ MoveEffect_Recharge: @ 81D7943 setbyte 0x2024d21, 221 jump BattleScript_1D6F42 -gUnknown_081D7956:: @ 81D7956 +BattleScript_MoveUsedMustRecharge:: @ 81D7956 printstring BATTLE_TEXT_MustRecharge waitmessage 64 jump BattleScript_EndTurn @@ -1190,9 +1190,9 @@ MoveEffect_Mimic: @ 81D7988 attackcanceler attackstring ppreduce - jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_1D83D6 - accuracycheck BattleScript_1D83D6, 65535 - copyattack BattleScript_1D83D6 + jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_ButItFailed + accuracycheck BattleScript_ButItFailed, 65535 + copyattack BattleScript_ButItFailed attackanimation waitanimation printstring BATTLE_TEXT_LearnedMove2 @@ -1214,7 +1214,7 @@ MoveEffect_LeechSeed: @ 81D79C2 attackstring pause 32 ppreduce - jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_1D83D6 + jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_ButItFailed accuracycheck BattleScript_1D79D9, 0 BattleScript_1D79D9: @ 81D79D9 @@ -1240,8 +1240,8 @@ MoveEffect_Disable: @ 81D79FB attackcanceler attackstring ppreduce - accuracycheck BattleScript_1D83D6, 0 - disablelastusedattack BattleScript_1D83D6 + accuracycheck BattleScript_ButItFailed, 0 + disablelastusedattack BattleScript_ButItFailed attackanimation waitanimation printstring BATTLE_TEXT_MoveWasDisabled @@ -1285,7 +1285,7 @@ MoveEffect_Encore: @ 81D7A5D accuracycheck BattleScript_1D6F72, 0 attackstring ppreduce - setencore BattleScript_1D83D6 + setencore BattleScript_ButItFailed attackanimation waitanimation printstring BATTLE_TEXT_EncoreGot @@ -1296,8 +1296,8 @@ MoveEffect_PainSplit: @ 81D7A79 attackcanceler attackstring ppreduce - accuracycheck BattleScript_1D83D6, 65535 - painsplitdamagecalculator BattleScript_1D83D6 + accuracycheck BattleScript_ButItFailed, 65535 + painsplitdamagecalculator BattleScript_ButItFailed attackanimation waitanimation orword 0x2024c6c, 0x100 @@ -1315,7 +1315,7 @@ MoveEffect_Snore: @ 81D7AB0 jumpifstatus USER, SLP, BattleScript_1D7AC2 attackstring ppreduce - jump BattleScript_1D83D6 + jump BattleScript_ButItFailed BattleScript_1D7AC2: @ 81D7AC2 jumpifhalfword 0, 0x2024be8, 214, BattleScript_1D7AD6 @@ -1334,7 +1334,7 @@ MoveEffect_Conversion2: @ 81D7AEA attackcanceler attackstring ppreduce - settypetorandomresistance BattleScript_1D83D6 + settypetorandomresistance BattleScript_ButItFailed attackanimation waitanimation printstring BATTLE_TEXT_TypeTransform @@ -1345,8 +1345,8 @@ MoveEffect_LockOn: @ 81D7AFF attackcanceler attackstring ppreduce - jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_1D83D6 - accuracycheck BattleScript_1D83D6, 0 + jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_ButItFailed + accuracycheck BattleScript_ButItFailed, 0 setalwayshitflag attackanimation waitanimation @@ -1358,8 +1358,8 @@ MoveEffect_Sketch: @ 81D7B21 attackcanceler attackstring ppreduce - jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_1D83D6 - copymovepermanently BattleScript_1D83D6 + jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_ButItFailed + copymovepermanently BattleScript_ButItFailed attackanimation waitanimation printstring BATTLE_TEXT_SketchedMove @@ -1371,7 +1371,7 @@ MoveEffect_SleepTalk: @ 81D7B40 jumpifstatus USER, SLP, BattleScript_1D7B52 attackstring ppreduce - jump BattleScript_1D83D6 + jump BattleScript_ButItFailed BattleScript_1D7B52: @ 81D7B52 printstring BATTLE_TEXT_FastAsleep @@ -1382,7 +1382,7 @@ BattleScript_1D7B52: @ 81D7B52 orword 0x2024c6c, 0x800 selectrandommovefromusermoves BattleScript_1D7B72 pause 64 - jump BattleScript_1D83D6 + jump BattleScript_ButItFailed BattleScript_1D7B72: @ 81D7B72 attackanimation @@ -1410,8 +1410,8 @@ MoveEffect_Spite: @ 81D7B99 attackcanceler attackstring ppreduce - accuracycheck BattleScript_1D83D6, 0 - reducepprandom BattleScript_1D83D6 + accuracycheck BattleScript_ButItFailed, 0 + reducepprandom BattleScript_ButItFailed attackanimation waitanimation printstring BATTLE_TEXT_ReducedBy @@ -1512,8 +1512,8 @@ MoveEffect_MeanLook: @ 81D7CCC attackcanceler attackstring ppreduce - accuracycheck BattleScript_1D83D6, 65534 - jumpifsecondarytstatus TARGET, S_MEAN_LOOK, BattleScript_1D83D6 + accuracycheck BattleScript_ButItFailed, 65534 + jumpifsecondarytstatus TARGET, S_MEAN_LOOK, BattleScript_ButItFailed attackanimation waitanimation setbyte 0x2024d21, 32 @@ -1526,10 +1526,10 @@ MoveEffect_Nightmare: @ 81D7CF4 attackcanceler attackstring ppreduce - jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_1D83D6 - jumpifsecondarytstatus TARGET, S_NIGHTMARE, BattleScript_1D83D6 + jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_ButItFailed + jumpifsecondarytstatus TARGET, S_NIGHTMARE, BattleScript_ButItFailed jumpifstatus TARGET, SLP, BattleScript_1D7D1A - jump BattleScript_1D83D6 + jump BattleScript_ButItFailed BattleScript_1D7D1A: @ 81D7D1A attackanimation @@ -1553,7 +1553,7 @@ MoveEffect_Curse: @ 81D7D3B ppreduce jumpifstat USER, 2, 3, 0, BattleScript_1D7D60 jumpifstat USER, 1, 1, 12, BattleScript_1D7D60 - jumpifstat USER, 0, 2, 12, BattleScript_1D83D6 + jumpifstat USER, 0, 2, 12, BattleScript_ButItFailed BattleScript_1D7D60: @ 81D7D60 copyarray 0x2024c08, 0x2024c07, 1 @@ -1588,8 +1588,8 @@ BattleScript_1D7DC4: @ 81D7DC4 attackcanceler attackstring ppreduce - jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_1D83D6 - cursetarget BattleScript_1D83D6 + jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_ButItFailed + cursetarget BattleScript_ButItFailed orword 0x2024c6c, 0x100 setbyte 0x2016002, 0 attackanimation @@ -1640,7 +1640,7 @@ MoveEffect_PerishSong: @ 81D7E3D attackcanceler attackstring ppreduce - setperishsong BattleScript_1D83D6 + setperishsong BattleScript_ButItFailed attackanimation waitanimation printstring BATTLE_TEXT_PerishSong @@ -1687,7 +1687,7 @@ MoveEffect_Swagger: @ 81D7EA2 accuracycheck BattleScript_1D6F72, 0 attackstring ppreduce - jumpifconfusedandattackmaxed 1, BattleScript_1D83D6 + jumpifconfusedandattackmaxed 1, BattleScript_ButItFailed attackanimation waitanimation setbyte 0x201601e, 33 @@ -1724,8 +1724,8 @@ MoveEffect_Attract: @ 81D7F1F attackcanceler attackstring ppreduce - accuracycheck BattleScript_1D83D6, 0 - tryinfatuatetarget BattleScript_1D83D6 + accuracycheck BattleScript_ButItFailed, 0 + tryinfatuatetarget BattleScript_ButItFailed attackanimation waitanimation printstring BATTLE_TEXT_FellLove @@ -1773,10 +1773,10 @@ MoveEffect_BatonPass: @ 81D7F7C attackcanceler attackstring ppreduce - jumpifcannotswitch 129, BattleScript_1D83D6 + jumpifcannotswitch 129, BattleScript_ButItFailed attackanimation waitanimation - openpartyscreen USER, BattleScript_1D83D6 + openpartyscreen USER, BattleScript_ButItFailed atke2 USER waitstateatk atk51 USER, 2 @@ -1858,7 +1858,7 @@ MoveEffect_BellyDrum: @ 81D8038 attackcanceler attackstring ppreduce - maxattackhalvehp BattleScript_1D83D6 + maxattackhalvehp BattleScript_ButItFailed orword 0x2024c6c, 0x100 attackanimation waitanimation @@ -1872,7 +1872,7 @@ MoveEffect_PsychUp: @ 81D805A attackcanceler attackstring ppreduce - copyfoestats BattleScript_1D83D6 + copyfoestats BattleScript_ButItFailed attackanimation waitanimation printstring BATTLE_TEXT_CopyStatChanges @@ -1971,7 +1971,7 @@ MoveEffect_FutureSight: @ 81D817D attackcanceler attackstring ppreduce - setfutureattack BattleScript_1D83D6 + setfutureattack BattleScript_ButItFailed attackanimation waitanimation printfromtable BattleTextList_4015E2 @@ -2017,9 +2017,9 @@ MoveEffect_Teleport: @ 81D8233 attackcanceler attackstring ppreduce - jumpifhalfword 4, 0x20239f8, 8, BattleScript_1D83D6 + jumpifhalfword 4, 0x20239f8, 8, BattleScript_ButItFailed atk76 USER, 2 - jumpifbyte 0, 0x2024d1e, 1, BattleScript_1D83D6 + jumpifbyte 0, 0x2024d1e, 1, BattleScript_ButItFailed jumpifbyte 0, 0x2024d1e, 2, BattleScript_1D8839 attackanimation waitanimation @@ -2038,7 +2038,7 @@ MoveEffect_BeatUp: @ 81D826E BattleScript_1D8281: @ 81D8281 atk25 - beatupcalculation BattleScript_1D82C4, BattleScript_1D83D6 + beatupcalculation BattleScript_1D82C4, BattleScript_ButItFailed printstring BATTLE_TEXT_PokeAttack critcalc jumpifbyte 1, 0x2024c0d, 2, BattleScript_1D829C @@ -2156,7 +2156,7 @@ BattleScript_1D83D4: @ 81D83D4 BattleScript_1D83D5: @ 81D83D5 ppreduce -BattleScript_1D83D6:: @ 81D83D6 +BattleScript_ButItFailed:: @ 81D83D6 pause 32 orbyte 0x2024c68, 32 resultmessage @@ -2243,8 +2243,8 @@ MoveEffect_Torment: @ 81D8495 attackcanceler attackstring ppreduce - accuracycheck BattleScript_1D83D6, 0 - settorment BattleScript_1D83D6 + accuracycheck BattleScript_ButItFailed, 0 + settorment BattleScript_ButItFailed attackanimation waitanimation printstring BATTLE_TEXT_TormentSubject @@ -2257,7 +2257,7 @@ MoveEffect_Flatter: @ 81D84B1 accuracycheck BattleScript_1D6F72, 0 attackstring ppreduce - jumpifconfusedandattackmaxed 4, BattleScript_1D83D6 + jumpifconfusedandattackmaxed 4, BattleScript_ButItFailed attackanimation waitanimation setbyte 0x201601e, 20 @@ -2279,12 +2279,12 @@ MoveEffect_WillOWisp: @ 81D850F attackcanceler attackstring ppreduce - jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_1D83D6 + jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_ButItFailed jumpifstatus TARGET, BRN, BattleScript_1D8575 jumpiftype TARGET, TYPE_FIRE, BattleScript_1D83E8 jumpifability TARGET, ABILITY_WATER_VEIL, BattleScript_1D855B - jumpifstatus TARGET, SLP | PSN | BRN | FRZ | PAR | TOX, BattleScript_1D83D6 - accuracycheck BattleScript_1D83D6, 0 + jumpifstatus TARGET, SLP | PSN | BRN | FRZ | PAR | TOX, BattleScript_ButItFailed + accuracycheck BattleScript_ButItFailed, 0 jumpifhalverset TARGET, 32, BattleScript_1D9037 attackanimation waitanimation @@ -2309,7 +2309,7 @@ MoveEffect_Memento: @ 81D8583 jumpifbyte 0, 0x2024d24, 1, BattleScript_1D860A attackstring ppreduce - jumpifattackandspecialattackcannotfall BattleScript_1D83D6 + jumpifattackandspecialattackcannotfall BattleScript_ButItFailed setuserhptozero attackanimation waitanimation @@ -2415,8 +2415,8 @@ MoveEffect_Taunt: @ 81D86AB attackcanceler attackstring ppreduce - accuracycheck BattleScript_1D83D6, 0 - settaunt BattleScript_1D83D6 + accuracycheck BattleScript_ButItFailed, 0 + settaunt BattleScript_ButItFailed attackanimation waitanimation printstring BATTLE_TEXT_TauntFell @@ -2427,7 +2427,7 @@ MoveEffect_HelpingHand: @ 81D86C7 attackcanceler attackstring ppreduce - sethelpinghand BattleScript_1D83D6 + sethelpinghand BattleScript_ButItFailed attackanimation waitanimation printstring BATTLE_TEXT_ReadyToHelp @@ -2438,9 +2438,9 @@ MoveEffect_Trick: @ 81D86DC attackcanceler attackstring ppreduce - jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_1D83D6 - accuracycheck BattleScript_1D83D6, 0 - itemswap BattleScript_1D83D6 + jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_ButItFailed + accuracycheck BattleScript_ButItFailed, 0 + itemswap BattleScript_ButItFailed attackanimation waitanimation printstring BATTLE_TEXT_SwitchedItems @@ -2453,8 +2453,8 @@ MoveEffect_RolePlay: @ 81D870A attackcanceler attackstring ppreduce - accuracycheck BattleScript_1D83D6, 65535 - copyability BattleScript_1D83D6 + accuracycheck BattleScript_ButItFailed, 65535 + copyability BattleScript_ButItFailed attackanimation waitanimation printstring BATTLE_TEXT_CopiedObject @@ -2465,7 +2465,7 @@ MoveEffect_Wish: @ 81D8726 attackcanceler attackstring ppreduce - atkd4 0, BattleScript_1D83D6 + atkd4 0, BattleScript_ButItFailed attackanimation waitanimation jump BattleScript_EndTurn @@ -2484,7 +2484,7 @@ MoveEffect_Ingrain: @ 81D874D attackcanceler attackstring ppreduce - setroots BattleScript_1D83D6 + setroots BattleScript_ButItFailed attackanimation waitanimation printstring BATTLE_TEXT_PlantedRoots @@ -2510,7 +2510,7 @@ MoveEffect_Recycle: @ 81D8782 attackcanceler attackstring ppreduce - recycleitem BattleScript_1D83D6 + recycleitem BattleScript_ButItFailed attackanimation waitanimation printstring BATTLE_TEXT_FoundOne @@ -2562,11 +2562,11 @@ MoveEffect_Yawn: @ 81D87EE ppreduce jumpifability TARGET, ABILITY_VITAL_SPIRIT, BattleScript_1D882F jumpifability TARGET, ABILITY_INSOMNIA, BattleScript_1D882F - jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_1D83D6 + jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_ButItFailed jumpifhalverset TARGET, 32, BattleScript_1D9037 - accuracycheck BattleScript_1D83D6, 65535 - jumpifcannotsleep BattleScript_1D83D6 - setyawn BattleScript_1D83D6 + accuracycheck BattleScript_ButItFailed, 65535 + jumpifcannotsleep BattleScript_ButItFailed + setyawn BattleScript_ButItFailed attackanimation waitanimation printstring BATTLE_TEXT_DrowsyMade @@ -2590,7 +2590,7 @@ MoveEffect_Endeavor: @ 81D8852 attackcanceler attackstring ppreduce - setdamagetohealthdifference BattleScript_1D83D6 + setdamagetohealthdifference BattleScript_ButItFailed copyarray 0x2024bf0, 0x2024bec, 4 accuracycheck BattleScript_1D6F77, 0 atk6 @@ -2608,8 +2608,8 @@ MoveEffect_SkillSwap: @ 81D8893 attackcanceler attackstring ppreduce - accuracycheck BattleScript_1D83D6, 65535 - abilityswap BattleScript_1D83D6 + accuracycheck BattleScript_ButItFailed, 65535 + abilityswap BattleScript_ButItFailed attackanimation waitanimation printstring BATTLE_TEXT_AbilitySwap @@ -2620,7 +2620,7 @@ MoveEffect_Imprison: @ 81D88AF attackcanceler attackstring ppreduce - imprisoneffect BattleScript_1D83D6 + imprisoneffect BattleScript_ButItFailed attackanimation waitanimation printstring BATTLE_TEXT_SealedMove @@ -2631,7 +2631,7 @@ MoveEffect_Refresh: @ 81D88C4 attackcanceler attackstring ppreduce - cureifburnedparalysedorpoisoned BattleScript_1D83D6 + cureifburnedparalysedorpoisoned BattleScript_ButItFailed attackanimation waitanimation printstring BATTLE_TEXT_StatusNormal @@ -2643,7 +2643,7 @@ MoveEffect_Grudge: @ 81D88DB attackcanceler attackstring ppreduce - setgrudge BattleScript_1D83D6 + setgrudge BattleScript_ButItFailed attackanimation waitanimation printstring BATTLE_TEXT_GrudgeBear @@ -2740,7 +2740,7 @@ MoveEffect_WaterSport: @ 81D89D7 attackcanceler attackstring ppreduce - settypebasedhalvers BattleScript_1D83D6 + settypebasedhalvers BattleScript_ButItFailed attackanimation waitanimation printfromtable BattleTextList_4015D4 @@ -2767,7 +2767,7 @@ MoveEffect_Tickle: @ 81D8A0A jumpifstat TARGET, 0, 2, 0, BattleScript_1D8A7D BattleScript_1D8A1F: @ 81D8A1F - accuracycheck BattleScript_1D83D6, 0 + accuracycheck BattleScript_ButItFailed, 0 attackanimation waitanimation setbyte 0x20160dc, 0 @@ -2924,7 +2924,7 @@ MoveEffect_Camouflage: @ 81D8C43 attackcanceler attackstring ppreduce - settypetoterrain BattleScript_1D83D6 + settypetoterrain BattleScript_ButItFailed attackanimation waitanimation printstring BATTLE_TEXT_TypeTransform @@ -3311,7 +3311,7 @@ gUnknown_081D9041:: @ 81D9041 waitmessage 64 end2 -gUnknown_081D904B:: @ 81D904B +BattleScript_LeechSeedTurnDrain:: @ 81D904B playanimation USER, 14, 0x20160a4 orword 0x2024c6c, 0x100100 graphicalhpupdate USER @@ -3335,12 +3335,12 @@ BattleScript_1D9083: @ 81D9083 faintpokemon TARGET, 0, 0x0 end2 -gUnknown_081D90A7:: @ 81D90A7 +BattleScript_BideStoringEnergy:: @ 81D90A7 printstring BATTLE_TEXT_StoringEnergy waitmessage 64 jump BattleScript_EndTurn -gUnknown_081D90B2:: @ 81D90B2 +BattleScript_BideAttack:: @ 81D90B2 printstring BATTLE_TEXT_UnleashedEnergy waitmessage 64 accuracycheck BattleScript_1D6F77, 0 @@ -3361,10 +3361,10 @@ gUnknown_081D90B2:: @ 81D90B2 faintpokemon TARGET, 0, 0x0 jump BattleScript_EndTurn -gUnknown_081D90F1:: @ 81D90F1 +BattleScript_BideNoEnergyToAttack:: @ 81D90F1 printstring BATTLE_TEXT_UnleashedEnergy waitmessage 64 - jump BattleScript_1D83D6 + jump BattleScript_ButItFailed gUnknown_081D90FC:: @ 81D90FC attackanimation @@ -3385,7 +3385,7 @@ BattleScript_1D9116: @ 81D9116 atk52 TARGET jump BattleScript_EndTurn -gUnknown_081D9128:: @ 81D9128 +BattleScript_MistProtected:: @ 81D9128 pause 32 printstring BATTLE_TEXT_MistProtect waitmessage 64 @@ -3396,21 +3396,21 @@ gUnknown_081D9132:: @ 81D9132 waitmessage 64 return -gUnknown_081D9139:: @ 81D9139 +BattleScript_MoveUsedIsDisabled:: @ 81D9139 printstring BATTLE_TEXT_MoveIsDisabled waitmessage 64 jump BattleScript_EndTurn -gUnknown_081D9144:: @ 81D9144 +BattleScript_MoveSelectionDisabledMove:: @ 81D9144 printstring2 BATTLE_TEXT_MoveIsDisabled atk44 -gUnknown_081D9148:: @ 81D9148 +BattleScript_DisabledNoMore:: @ 81D9148 printstring BATTLE_TEXT_DisabledNoMore waitmessage 64 end2 -gUnknown_081D914F:: @ 81D914F +BattleScript_EncoredNoMore:: @ 81D914F printstring BATTLE_TEXT_EncoreEnded waitmessage 64 end2 @@ -3471,7 +3471,7 @@ BattleScript_1D91FB: @ 81D91FB waitmessage 64 return -gUnknown_081D9202:: @ 81D9202 +BattleScript_PerishSongHits:: @ 81D9202 printstring BATTLE_TEXT_PerishSongFell waitmessage 64 orword 0x2024c6c, 0x100100 @@ -3480,12 +3480,12 @@ gUnknown_081D9202:: @ 81D9202 faintpokemon USER, 0, 0x0 end2 -gUnknown_081D921D:: @ 81D921D +BattleScript_PerishSongTimerGoesDown:: @ 81D921D printstring BATTLE_TEXT_PerishSongFell waitmessage 64 end2 -gUnknown_081D9224:: @ 81D9224 +BattleScript_AllStatsUp:: @ 81D9224 jumpifstat USER, 3, 1, 12, BattleScript_1D9251 jumpifstat USER, 3, 2, 12, BattleScript_1D9251 jumpifstat USER, 3, 3, 12, BattleScript_1D9251 @@ -3531,22 +3531,22 @@ BattleScript_RapidSpinAway:: @ 81D92C0 breakfree return -gUnknown_081D92C2:: @ 81D92C2 +BattleScript_WrapFree:: @ 81D92C2 printstring BATTLE_TEXT_GotFreeFrom waitmessage 64 return -gUnknown_081D92C9:: @ 81D92C9 +BattleScript_LeechSeedFree:: @ 81D92C9 printstring BATTLE_TEXT_LeechShed waitmessage 64 return -gUnknown_081D92D0:: @ 81D92D0 +BattleScript_SpikesFree:: @ 81D92D0 printstring BATTLE_TEXT_SpikesBlownAway waitmessage 64 return -gUnknown_081D92D7:: @ 81D92D7 +BattleScript_FutureSightHits:: @ 81D92D7 printstring BATTLE_TEXT_TookAttack waitmessage 64 jumpifbyte 1, 0x2024d23, 0, BattleScript_1D92F4 @@ -3593,11 +3593,11 @@ BattleScript_1D934B: @ 81D934B setbyte 0x2024c68, 0 end2 -gUnknown_081D9365:: @ 81D9365 +BattleScript_NoMovesLeft:: @ 81D9365 printstring2 BATTLE_TEXT_NoMovesLeft atk44 -gUnknown_081D9369:: @ 81D9369 +BattleScript_MoveSelectionNoPP:: @ 81D9369 printstring2 BATTLE_TEXT_NoPP1 atk44 @@ -3608,23 +3608,23 @@ BattleScript_NoPPForMove:: @ 81D936D waitmessage 64 jump BattleScript_EndTurn -gUnknown_081D937C:: @ 81D937C +BattleScript_MoveSelectionTormented:: @ 81D937C printstring2 BATTLE_TEXT_TormentNoUse atk44 printstring BATTLE_TEXT_TormentNoUse waitmessage 64 jump BattleScript_EndTurn -gUnknown_081D938B:: @ 81D938B +BattleScript_MoveSelectionTaunted:: @ 81D938B printstring2 BATTLE_TEXT_TauntNoUse atk44 -gUnknown_081D938F:: @ 81D938F +BattleScript_MoveUsedIsTaunted:: @ 81D938F printstring BATTLE_TEXT_TauntNoUse waitmessage 64 jump BattleScript_EndTurn -gUnknown_081D939A:: @ 81D939A +BattleScript_WishComesTrue:: @ 81D939A atkd4 1, BattleScript_1D93C1 playanimation TARGET, 22, 0x0 printstring BATTLE_TEXT_WishTrue @@ -3644,7 +3644,7 @@ BattleScript_1D93C1: @ 81D93C1 waitmessage 64 end2 -gUnknown_081D93D1:: @ 81D93D1 +BattleScript_IngrainTurnHeal:: @ 81D93D1 playanimation USER, 21, 0x0 printstring BATTLE_TEXT_AbsorbNutrients waitmessage 64 @@ -3659,7 +3659,7 @@ BattleScript_1D93EC: @ 81D93EC waitmessage 64 jump BattleScript_EndTurn -gUnknown_081D93FA:: @ 81D93FA +BattleScript_AtkDefDown:: @ 81D93FA setbyte 0x20160dc, 0 playstatchangeanimation USER, 6, 13 playstatchangeanimation USER, 2, 9 @@ -3686,12 +3686,12 @@ BattleScript_KnockedOff:: @ 81D944B waitmessage 64 return -gUnknown_081D9459:: @ 81D9459 +BattleScript_MoveUsedIsImprisoned:: @ 81D9459 printstring BATTLE_TEXT_SealedNoUse waitmessage 64 jump BattleScript_EndTurn -gUnknown_081D9464:: @ 81D9464 +BattleScript_MoveSelectionImprisoned:: @ 81D9464 printstring2 BATTLE_TEXT_SealedNoUse atk44 @@ -3731,7 +3731,7 @@ BattleScript_OneHitKOMsg:: @ 81D94A9 waitmessage 64 return -gUnknown_081D94B0:: @ 81D94B0 +BattleScript_SAtkDown2:: @ 81D94B0 setbyte 0x20160dc, 0 playstatchangeanimation USER, 16, 11 setbyte 0x201601e, 164 @@ -3751,13 +3751,13 @@ gUnknown_081D94DA:: @ 81D94DA waitmessage 64 end2 -gUnknown_081D94EE:: @ 81D94EE +BattleScript_MoveUsedIsAsleep:: @ 81D94EE printstring BATTLE_TEXT_FastAsleep waitmessage 64 statusanimation USER jump BattleScript_EndTurn -gUnknown_081D94FB:: @ 81D94FB +BattleScript_MoveUsedWokeUp:: @ 81D94FB bicword 0x2024c6c, 0x10 printfromtable BattleTextList_401562 waitmessage 64 @@ -3770,7 +3770,7 @@ gUnknown_081D950F:: @ 81D950F atk98 1 end2 -gUnknown_081D9518:: @ 81D9518 +BattleScript_PoisonTurnDmg:: @ 81D9518 printstring BATTLE_TEXT_PoisonHurt waitmessage 64 @@ -3787,18 +3787,18 @@ BattleScript_1D9520: @ 81D9520 BattleScript_1D9539: @ 81D9539 end2 -gUnknown_081D953A:: @ 81D953A +BattleScript_BurnTurnDmg:: @ 81D953A printstring BATTLE_TEXT_BurnHurt waitmessage 64 jump BattleScript_1D951E -gUnknown_081D9545:: @ 81D9545 +BattleScript_MoveUsedIsFrozen:: @ 81D9545 printstring BATTLE_TEXT_FrozenSolid waitmessage 64 statusanimation USER jump BattleScript_EndTurn -gUnknown_081D9552:: @ 81D9552 +BattleScript_MoveUsedUnfroze:: @ 81D9552 printfromtable BattleTextList_4015C4 waitmessage 64 atk98 1 @@ -3810,13 +3810,13 @@ gUnknown_081D955D:: @ 81D955D atk98 0 return -gUnknown_081D9566:: @ 81D9566 +BattleScript_MoveUsedIsParalyzed:: @ 81D9566 printstring BATTLE_TEXT_Paralyzed3 waitmessage 64 statusanimation USER jump BattleScript_EndTurn -gUnknown_081D9573:: @ 81D9573 +BattleScript_MoveUsedFlinched:: @ 81D9573 printstring BATTLE_TEXT_Flinched waitmessage 64 jump BattleScript_EndTurn @@ -3826,13 +3826,13 @@ gUnknown_081D957E:: @ 81D957E waitmessage 64 end2 -gUnknown_081D9587:: @ 81D9587 +BattleScript_ThrashConfuses:: @ 81D9587 atk66 1, 1, S_CONFUSED printstring BATTLE_TEXT_FatigueConfuse waitmessage 64 end2 -gUnknown_081D9595:: @ 81D9595 +BattleScript_MoveUsedIsConfused:: @ 81D9595 printstring BATTLE_TEXT_Confused waitmessage 64 atk65 1, 0x7 @@ -3855,7 +3855,7 @@ BattleScript_1D95AC: @ 81D95AC BattleScript_1D95D3: @ 81D95D3 return -gUnknown_081D95D4:: @ 81D95D4 +BattleScript_MoveUsedIsConfusedNoMore:: @ 81D95D4 printstring BATTLE_TEXT_ConfusionSnapOut waitmessage 64 return @@ -3865,35 +3865,35 @@ gUnknown_081D95DB:: @ 81D95DB waitmessage 64 return -gUnknown_081D95E2:: @ 81D95E2 +BattleScript_WrapTurnDmg:: @ 81D95E2 playanimation USER, 6, 0x20160a4 printstring BATTLE_TEXT_HurtBy waitmessage 64 jump BattleScript_1D9520 -gUnknown_081D95F4:: @ 81D95F4 +BattleScript_WrapEnds:: @ 81D95F4 printstring BATTLE_TEXT_FreedFrom waitmessage 64 end2 -gUnknown_081D95FB:: @ 81D95FB +BattleScript_MoveUsedIsInLove:: @ 81D95FB printstring BATTLE_TEXT_InLoveWith waitmessage 64 atk65 1, 0xf0000 return -gUnknown_081D9608:: @ 81D9608 +BattleScript_MoveUsedIsParalyzedCantAttack:: @ 81D9608 printstring BATTLE_TEXT_ImmobilizedBy waitmessage 64 jump BattleScript_EndTurn -gUnknown_081D9613:: @ 81D9613 +BattleScript_NightmareTurnDmg:: @ 81D9613 printstring BATTLE_TEXT_NightmareLock waitmessage 64 atk65 1, Start jump BattleScript_1D9520 -gUnknown_081D9624:: @ 81D9624 +BattleScript_CurseTurnDmg:: @ 81D9624 printstring BATTLE_TEXT_CurseAfflict waitmessage 64 atk65 1, 0x10000000 @@ -3915,7 +3915,7 @@ BattleScript_1D9648: @ 81D9648 waitstateatk return -gUnknown_081D964C:: @ 81D964C +BattleScript_YawnMakesAsleep:: @ 81D964C statusanimation 2 printstring BATTLE_TEXT_FellAsleep waitmessage 64 @@ -3996,7 +3996,7 @@ BattleScript_ItemSteal:: @ 81D96F6 waitmessage 64 return -gUnknown_081D9704:: @ 81D9704 +BattleScript_DrizzleActivates:: @ 81D9704 pause 32 printstring BATTLE_TEXT_RainMade waitstateatk @@ -4004,19 +4004,19 @@ gUnknown_081D9704:: @ 81D9704 callatk BattleScript_1D9761 end3 -gUnknown_081D9718:: @ 81D9718 +BattleScript_SpeedBoostActivates:: @ 81D9718 playanimation USER, 1, 0x20160a4 printstring BATTLE_TEXT_SpeedRisen waitmessage 64 end3 -gUnknown_081D9726:: @ 81D9726 +BattleScript_TraceActivates:: @ 81D9726 pause 32 printstring BATTLE_TEXT_Traced waitmessage 64 end3 -gUnknown_081D9730:: @ 81D9730 +BattleScript_RainDishActivates:: @ 81D9730 printstring BATTLE_TEXT_RestoredHPByItem waitmessage 64 orword 0x2024c6c, 0x100 @@ -4024,7 +4024,7 @@ gUnknown_081D9730:: @ 81D9730 datahpupdate USER end3 -gUnknown_081D9744:: @ 81D9744 +BattleScript_SandstreamActivates:: @ 81D9744 pause 32 printstring BATTLE_TEXT_WhipSandstorm waitstateatk @@ -4032,7 +4032,7 @@ gUnknown_081D9744:: @ 81D9744 callatk BattleScript_1D9761 end3 -gUnknown_081D9758:: @ 81D9758 +BattleScript_ShedSkinActivates:: @ 81D9758 printstring BATTLE_TEXT_CuredProblem waitmessage 64 atk98 1 @@ -4047,7 +4047,7 @@ BattleScript_1D9767: @ 81D9767 jumpifarraynotequal 0x2016003, 0x2024a68, 1, BattleScript_1D9767 return -gUnknown_081D977D:: @ 81D977D +BattleScript_CastformChange:: @ 81D977D callatk BattleScript_1D9783 end3 @@ -4095,7 +4095,7 @@ BattleScript_1D97F0: @ 81D97F0 waitmessage 64 jump BattleScript_1D97E4 -gUnknown_081D97FE:: @ 81D97FE +BattleScript_DroughtActivates:: @ 81D97FE pause 32 printstring BATTLE_TEXT_SunIntensified waitstateatk @@ -4123,10 +4123,10 @@ gUnknown_081D9834:: @ 81D9834 pause 64 jump BattleScript_EndTurn -gUnknown_081D9842:: @ 81D9842 +BattleScript_MoveHPDrain_PPLoss:: @ 81D9842 ppreduce -gUnknown_081D9843:: @ 81D9843 +BattleScript_MoveHPDrain:: @ 81D9843 attackstring pause 32 orword 0x2024c6c, 0x100 @@ -4137,10 +4137,10 @@ gUnknown_081D9843:: @ 81D9843 orbyte 0x2024c68, 8 jump BattleScript_EndTurn -gUnknown_081D9865:: @ 81D9865 +BattleScript_MoveHPDrain_FullHP_PPLoss:: @ 81D9865 ppreduce -gUnknown_081D9866:: @ 81D9866 +BattleScript_MoveHPDrain_FullHP:: @ 81D9866 attackstring pause 32 printstring BATTLE_TEXT_MadeUseless @@ -4148,10 +4148,10 @@ gUnknown_081D9866:: @ 81D9866 orbyte 0x2024c68, 8 jump BattleScript_EndTurn -gUnknown_081D987B:: @ 81D987B +BattleScript_FlashFireBoost_PPLoss:: @ 81D987B ppreduce -gUnknown_081D987C:: @ 81D987C +BattleScript_FlashFireBoost:: @ 81D987C attackstring pause 32 printfromtable BattleTextList_401648 @@ -4164,7 +4164,7 @@ BattleScript_1D988D: @ 81D988D waitmessage 64 jump BattleScript_EndTurn -gUnknown_081D989B:: @ 81D989B +BattleScript_AbilityNoStatLoss:: @ 81D989B pause 32 printstring BATTLE_TEXT_PreventedStatLoss waitmessage 64 @@ -4188,7 +4188,7 @@ BattleScript_PSNPrevention:: @ 81D98BD waitmessage 64 return -gUnknown_081D98C9:: @ 81D98C9 +BattleScript_ObliviousPreventsAttraction:: @ 81D98C9 pause 32 printstring BATTLE_TEXT_PreventedRomance waitmessage 64 @@ -4206,7 +4206,7 @@ BattleScript_1D98E5: @ 81D98E5 waitmessage 64 jump BattleScript_EndTurn -gUnknown_081D98F3:: @ 81D98F3 +BattleScript_SoundproofProtected:: @ 81D98F3 attackstring ppreduce pause 32 @@ -4214,7 +4214,7 @@ gUnknown_081D98F3:: @ 81D98F3 waitmessage 64 jump BattleScript_EndTurn -gUnknown_081D9903:: @ 81D9903 +BattleScript_AbilityNoSpecificStatLoss:: @ 81D9903 pause 32 printstring BATTLE_TEXT_PreventedLoss waitmessage 64 @@ -4227,12 +4227,12 @@ BattleScript_NoItemSteal:: @ 81D9913 waitmessage 64 jump BattleScript_EndTurn -gUnknown_081D9921:: @ 81D9921 +BattleScript_ColorChangeActivates:: @ 81D9921 printstring BATTLE_TEXT_MadeType waitmessage 64 return -gUnknown_081D9928:: @ 81D9928 +BattleScript_RoughSkinActivates:: @ 81D9928 orword 0x2024c6c, 0x100100 graphicalhpupdate USER datahpupdate USER @@ -4241,18 +4241,18 @@ gUnknown_081D9928:: @ 81D9928 faintpokemon USER, 0, 0x0 return -gUnknown_081D9943:: @ 81D9943 +BattleScript_CuteCharmActivates:: @ 81D9943 atk65 1, 0xf0000 printstring BATTLE_TEXT_InfatuatedPoke waitmessage 64 return -gUnknown_081D9950:: @ 81D9950 +BattleScript_ApplySecondaryEffect:: @ 81D9950 waitstateatk seteffectuser return -gUnknown_081D9953:: @ 81D9953 +BattleScript_SynchronizeActivates:: @ 81D9953 waitstateatk seteffecttarget return @@ -4275,7 +4275,7 @@ gUnknown_081D996F:: @ 81D996F waitmessage 64 jumptoattack TARGET -gUnknown_081D9977:: @ 81D9977 +BattleScript_MoveUsedLoafingAround:: @ 81D9977 printfromtable BattleTextList_40160E waitmessage 64 setbyte 0x201600c, 0 @@ -4301,11 +4301,11 @@ BattleScript_SubstituteFade:: @ 81D99AB printstring BATTLE_TEXT_SubFaded return -gUnknown_081D99B6:: @ 81D99B6 - callatk gUnknown_081D99BC +BattleScript_BerryCurePrlzEnd2:: @ 81D99B6 + callatk BattleScript_BerryCureParRet end2 -gUnknown_081D99BC:: @ 81D99BC +BattleScript_BerryCureParRet:: @ 81D99BC playanimation 10, 7, 0x0 printstring BATTLE_TEXT_CuredParalysis waitmessage 64 @@ -4313,11 +4313,11 @@ gUnknown_081D99BC:: @ 81D99BC removeitem 10 return -gUnknown_081D99CE:: @ 81D99CE - callatk gUnknown_081D99D4 +BattleScript_BerryCurePsnEnd2:: @ 81D99CE + callatk BattleScript_BerryCurePsnRet end2 -gUnknown_081D99D4:: @ 81D99D4 +BattleScript_BerryCurePsnRet:: @ 81D99D4 playanimation 10, 7, 0x0 printstring BATTLE_TEXT_CuredPoison waitmessage 64 @@ -4325,11 +4325,11 @@ gUnknown_081D99D4:: @ 81D99D4 removeitem 10 return -gUnknown_081D99E6:: @ 81D99E6 - callatk gUnknown_081D99EC +BattleScript_BerryCureBrnEnd2:: @ 81D99E6 + callatk BattleScript_BerryCureBrnRet end2 -gUnknown_081D99EC:: @ 81D99EC +BattleScript_BerryCureBrnRet:: @ 81D99EC playanimation 10, 7, 0x0 printstring BATTLE_TEXT_CuredBurn waitmessage 64 @@ -4337,11 +4337,11 @@ gUnknown_081D99EC:: @ 81D99EC removeitem 10 return -gUnknown_081D99FE:: @ 81D99FE - callatk gUnknown_081D9A04 +BattleScript_BerryCureFrzEnd2:: @ 81D99FE + callatk BattleScript_BerryCureFrzRet end2 -gUnknown_081D9A04:: @ 81D9A04 +BattleScript_BerryCureFrzRet:: @ 81D9A04 playanimation 10, 7, 0x0 printstring BATTLE_TEXT_CuredFreeze waitmessage 64 @@ -4349,11 +4349,11 @@ gUnknown_081D9A04:: @ 81D9A04 removeitem 10 return -gUnknown_081D9A16:: @ 81D9A16 - callatk gUnknown_081D9A1C +BattleScript_BerryCureSlpEnd2:: @ 81D9A16 + callatk BattleScript_BerryCureSlpRet end2 -gUnknown_081D9A1C:: @ 81D9A1C +BattleScript_BerryCureSlpRet:: @ 81D9A1C playanimation 10, 7, 0x0 printstring BATTLE_TEXT_CuredSleep waitmessage 64 @@ -4361,11 +4361,11 @@ gUnknown_081D9A1C:: @ 81D9A1C removeitem 10 return -gUnknown_081D9A2E:: @ 81D9A2E - callatk gUnknown_081D9A34 +BattleScript_BerryCureConfusionEnd2:: @ 81D9A2E + callatk BattleScript_BerryCureConfusionRet end2 -gUnknown_081D9A34:: @ 81D9A34 +BattleScript_BerryCureConfusionRet:: @ 81D9A34 playanimation 10, 7, 0x0 printstring BATTLE_TEXT_CuredConfusion waitmessage 64 @@ -4384,18 +4384,18 @@ gUnknown_081D9A4A:: @ 81D9A4A removeitem 10 return -gUnknown_081D9A5E:: @ 81D9A5E - callatk gUnknown_081D9A64 +BattleScript_WhiteHerbEnd2:: @ 81D9A5E + callatk BattleScript_WhiteHerbRet end2 -gUnknown_081D9A64:: @ 81D9A64 +BattleScript_WhiteHerbRet:: @ 81D9A64 playanimation 10, 7, 0x0 printstring BATTLE_TEXT_RestoredStatus waitmessage 64 removeitem 10 return -gUnknown_081D9A74:: @ 81D9A74 +BattleScript_ItemHealHP_RemoveItem:: @ 81D9A74 playanimation USER, 7, 0x0 printstring BATTLE_TEXT_RestoredHealth waitmessage 64 @@ -4405,18 +4405,18 @@ gUnknown_081D9A74:: @ 81D9A74 removeitem USER end2 -gUnknown_081D9A91:: @ 81D9A91 +BattleScript_BerryPPHealEnd2:: @ 81D9A91 playanimation USER, 7, 0x0 printstring BATTLE_TEXT_RestoredPP waitmessage 64 removeitem USER end2 -gUnknown_081D9AA1:: @ 81D9AA1 - callatk gUnknown_081D9AA7 +BattleScript_ItemHealHP_End2:: @ 81D9AA1 + callatk BattleScript_ItemHealHP_Ret end2 -gUnknown_081D9AA7:: @ 81D9AA7 +BattleScript_ItemHealHP_Ret:: @ 81D9AA7 playanimation USER, 7, 0x0 printstring BATTLE_TEXT_RestoredHPLittle waitmessage 64 @@ -4425,7 +4425,7 @@ gUnknown_081D9AA7:: @ 81D9AA7 datahpupdate USER return -gUnknown_081D9AC2:: @ 81D9AC2 +BattleScript_MoveSelectionChoiceBanded:: @ 81D9AC2 printstring2 BATTLE_TEXT_ChoiceBand atk44 @@ -4435,7 +4435,7 @@ BattleScript_HangedOnMsg:: @ 81D9AC6 waitmessage 64 return -gUnknown_081D9AD4:: @ 81D9AD4 +BattleScript_BerryConfuseHealEnd2:: @ 81D9AD4 playanimation USER, 7, 0x0 printstring BATTLE_TEXT_RestoredHealth waitmessage 64 @@ -4449,7 +4449,7 @@ gUnknown_081D9AD4:: @ 81D9AD4 removeitem USER end2 -gUnknown_081D9AFE:: @ 81D9AFE +BattleScript_BerryStatRaiseEnd2:: @ 81D9AFE playanimation USER, 7, 0x0 statbuffchange 65, BattleScript_1D9B0B @@ -4459,7 +4459,7 @@ BattleScript_1D9B0B: @ 81D9B0B removeitem USER end2 -gUnknown_081D9B19:: @ 81D9B19 +BattleScript_BerryFocusEnergyEnd2:: @ 81D9B19 playanimation USER, 7, 0x0 printstring BATTLE_TEXT_HustleUse waitmessage 64 diff --git a/data/battle_scripts_2.s b/data/battle_scripts_2.s index 3f0dc8af1..b10b7f96f 100644 --- a/data/battle_scripts_2.s +++ b/data/battle_scripts_2.s @@ -51,7 +51,7 @@ BattleScript_1D9EBC: @ 81D9EBC atk98 1 pokemoncatchfunction -gUnknown_081D9EC2:: @ 81D9EC2 +BattleScript_SuccessBallThrow:: @ 81D9EC2 jumpifhalfword 0, gLastUsedItem, 5, BattleScript_1D9ED0 atk60 11 @@ -76,12 +76,12 @@ BattleScript_1D9EF8: @ 81D9EF8 setbyte gBattleOutcome, 7 activesidesomething -gUnknown_081D9F00:: @ 81D9F00 +BattleScript_WallyBallThrow:: @ 81D9F00 printstring BATTLE_TEXT_BallCaught2 setbyte gBattleOutcome, 7 activesidesomething -gUnknown_081D9F0A:: @ 81D9F0A +BattleScript_ShakeBallThrow:: @ 81D9F0A printfromtable BattleTextList_4015E6 waitmessage 64 jumpifbyte 5, gBattleTypeFlags, 128, BattleScript_1D9F34 @@ -93,7 +93,7 @@ gUnknown_081D9F0A:: @ 81D9F0A BattleScript_1D9F34: @ 81D9F34 atkf6 -gUnknown_081D9F35:: @ 81D9F35 +BattleScript_TrainerBallBlock:: @ 81D9F35 waitmessage 64 printstring BATTLE_TEXT_BlockBall waitmessage 64 diff --git a/data/battle_transition.s b/data/battle_transition.s deleted file mode 100644 index 0d463ddef..000000000 --- a/data/battle_transition.s +++ /dev/null @@ -1,399 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - - .align 2 -gUnknown_083FBB88:: @ 83FBB88 - .incbin "graphics/battle_transitions/big_pokeball.4bpp" - - .align 2 -gUnknown_083FC108:: @ 83FC108 - .incbin "graphics/battle_transitions/pokeball_trail.4bpp" - - .align 2 -gSpriteImage_83FC148:: @ 83FC148 - .incbin "graphics/battle_transitions/pokeball.4bpp" - - .align 2 -gUnknown_083FC348:: @ 83FC348 - .incbin "graphics/battle_transitions/elite_four_bg.4bpp" - - .align 2 -gSpriteImage_83FC528:: @ 83FC528 - .incbin "graphics/battle_transitions/unused_brendan.4bpp" - - .align 2 -gSpriteImage_83FCD28:: @ 83FCD28 - .incbin "graphics/battle_transitions/unused_lass.4bpp" - - .align 2 -gUnknown_083FD528:: @ 83FD528 - .incbin "graphics/battle_transitions/shrinking_box.4bpp" - - .align 2 -gUnknown_083FD708:: @ 83FD708 - .4byte 0x0200c000 - - .align 2 -gUnknown_083FD70C:: @ 83FD70C - .4byte sub_811AC64 - .4byte sub_811AC64 - .4byte sub_811AC64 - .4byte sub_811AC64 - .4byte sub_811AC64 - .4byte sub_811AC64 - .4byte sub_811AC64 - .4byte sub_811AC64 - .4byte sub_811AC64 - .4byte sub_811AC64 - .4byte sub_811AC64 - .4byte sub_811AC64 - .4byte sub_811AC64 - .4byte sub_811AC64 - .4byte sub_811AC64 - .4byte sub_811AC64 - .4byte sub_811AC64 - - .align 2 -gBattleTransitionFuncs:: @ 83FD750 - .4byte sub_811ACB4 - .4byte sub_811ADAC - .4byte sub_811AF44 - .4byte sub_811B0F0 - .4byte sub_811B578 - .4byte sub_811B7E8 - .4byte sub_811BCBC - .4byte sub_811BEA0 - .4byte sub_811CA5C - .4byte sub_811CCDC - .4byte sub_811D0B8 - .4byte sub_811D1C8 - .4byte sub_811C08C - .4byte sub_811C0AC - .4byte sub_811C0CC - .4byte sub_811C0EC - .4byte sub_811C10C - - .align 2 -gUnknown_083FD794:: @ 83FD794 - .4byte sub_811AB88 - .4byte sub_811ABD8 - .4byte sub_811AC0C - .4byte sub_811AC34 - - .align 2 -gUnknown_083FD7A4:: @ 83FD7A4 - .4byte sub_811ACEC - .4byte sub_811AD1C - .4byte sub_811AD80 - - .align 2 -gUnknown_083FD7B0:: @ 83FD7B0 - .4byte sub_811ADE4 - .4byte sub_811AE70 - - .align 2 -gUnknown_083FD7B8:: @ 83FD7B8 - .4byte sub_811AF7C - .4byte sub_811B000 - - .align 2 -gUnknown_083FD7C0:: @ 83FD7C0 - .4byte sub_811B128 - .4byte sub_811B1D8 - .4byte sub_811B268 - .4byte sub_811B2F4 - .4byte sub_811B380 - .4byte sub_811B3EC - - .align 2 -gUnknown_083FD7D8:: @ 83FD7D8 - .4byte sub_811B5B0 - .4byte sub_811B5FC - .4byte sub_811B688 - - .align 1 -gUnknown_083FD7E4:: @ 83FD7E4 - .2byte -16 - .2byte 256 - - .align 1 -gUnknown_083FD7E8:: @ 83FD7E8 - .2byte 0 - .2byte 32 - .2byte 64 - .2byte 18 - .2byte 48 - - .align 1 -gUnknown_083FD7F2:: @ 83FD7F2 - .2byte 8 - .2byte -8 - - .align 2 -gUnknown_083FD7F8:: @ 83FD7F8 - .4byte sub_811B820 - .4byte sub_811B884 - .4byte sub_811B90C - .4byte sub_811B9F0 - .4byte sub_811BA70 - .4byte sub_811BB60 - .4byte sub_811BBEC - - .align 2 -gUnknown_083FD814:: @ 83FD814 - .4byte sub_811BCF4 - .4byte sub_811BD60 - - .align 2 -gUnknown_083FD81C:: @ 83FD81C - .4byte sub_811BED8 - .4byte sub_811BF2C - .4byte sub_811BFC4 - - .align 2 -gUnknown_083FD828:: @ 83FD828 - .4byte sub_811C164 - .4byte sub_811C1CC - .4byte sub_811C2A4 - .4byte sub_811C38C - .4byte sub_811C400 - .4byte sub_811C43C - .4byte sub_811C4F0 - .4byte sub_811C5B4 - .4byte sub_811C5E8 - .4byte sub_811C630 - -gUnknown_083FD850:: @ 83FD850 - .byte TRAINER_PIC_SIDNEY - .byte TRAINER_PIC_PHOEBE - .byte TRAINER_PIC_GLACIA - .byte TRAINER_PIC_DRAKE - .byte TRAINER_PIC_STEVEN - - .align 1 -gUnknown_083FD856:: @ 83FD856 - .2byte 0x200, 0x200 - .2byte 0x200, 0x200 - .2byte 0x1B0, 0x1B0 - .2byte 0x1A0, 0x1A0 - .2byte 0x188, 0x188 - - .align 1 -gUnknown_083FD86A:: @ 83FD86A - .2byte 0, 0 - .2byte 0, 0 - .2byte -4, 4 - .2byte 0, 5 - .2byte 0, 7 - - .align 2 -gUnknown_083FD880:: @ 83FD880 - .4byte sub_811C934 - .4byte sub_811C938 - .4byte sub_811C984 - .4byte sub_811C9B8 - .4byte sub_811C934 - .4byte sub_811C9E4 - .4byte sub_811C934 - - .align 1 -gUnknown_083FD89C:: @ 83FD89C - .2byte 12, -12 - - .align 1 -gUnknown_083FD8A0:: @ 83FD8A0 - .2byte -1, 1 - - .align 2 -gUnknown_083FD8A4:: @ 83FD8A4 - .4byte sub_811CA94 - .4byte sub_811CB20 - .4byte sub_811CBE8 - - .align 2 -gUnknown_083FD8B0:: @ 83FD8B0 - .4byte sub_811CD14 - .4byte sub_811CDA0 - .4byte sub_811CE14 - .4byte sub_811CE4C - .4byte sub_811CEB0 - - .align 1 -gUnknown_083FD8C4:: @ 83FD8C4 - .2byte 0 - .2byte 20 - .2byte 15 - .2byte 40 - .2byte 10 - .2byte 25 - .2byte 35 - .2byte 5 - - .align 2 -gUnknown_083FD8D4:: @ 83FD8D4 - .4byte sub_811D0F0 - .4byte sub_811D144 - .4byte sub_811D19C - - .align 2 -gUnknown_083FD8E0:: @ 83FD8E0 - .4byte sub_811D200 - .4byte sub_811D260 - .4byte sub_811D2D8 - .4byte sub_811D3B0 - .4byte sub_811D41C - - .align 1 -gUnknown_083FD8F4:: @ 83FD8F4 - .2byte 56, 0, 0, 160, 0 - .2byte 104, 160, 240, 88, 1 - .2byte 240, 72, 56, 0, 1 - .2byte 0, 32, 144, 160, 0 - .2byte 144, 160, 184, 0, 1 - .2byte 56, 0, 168, 160, 0 - .2byte 168, 160, 48, 0, 1 - - .align 1 -gUnknown_083FD93A:: @ 83FD93A - .2byte 8 - .2byte 4 - .2byte 2 - .2byte 1 - .2byte 1 - .2byte 1 - .2byte 0 - - .align 2 -gUnknown_083FD948:: @ 83FD948 - .4byte sub_811D584 - .4byte sub_811D5E0 - - .align 2 -gSpriteImageTable_83FD950:: @ 83FD950 - obj_frame_tiles gSpriteImage_83FC148, 0x200 - - .align 2 -gSpriteAnim_83FD958:: @ 83FD958 - obj_image_anim_frame 0, 1 - obj_image_anim_end - - .align 2 -gSpriteAnimTable_83FD960:: @ 83FD960 - .4byte gSpriteAnim_83FD958 - - .align 2 -gSpriteAffineAnim_83FD964:: @ 83FD964 - obj_rot_scal_anim_frame 0x0, 0x0, -4, 1 - obj_rot_scal_anim_jump 0 - - .align 2 -gSpriteAffineAnim_83FD974:: @ 83FD974 - obj_rot_scal_anim_frame 0x0, 0x0, 4, 1 - obj_rot_scal_anim_jump 0 - - .align 2 -gSpriteAffineAnimTable_83FD984:: @ 83FD984 - .4byte gSpriteAffineAnim_83FD964 - .4byte gSpriteAffineAnim_83FD974 - - .align 2 -gSpriteTemplate_83FD98C:: @ 83FD98C - spr_template 0xFFFF, 4105, gFieldOamData_32x32, gSpriteAnimTable_83FD960, gSpriteImageTable_83FD950, gSpriteAffineAnimTable_83FD984, sub_811B720 - - .align 2 -gOamData_83FD9A4:: @ 83FD9A4 - .2byte 0x0000 - .2byte 0xC000 - .2byte 0x0000 - - .align 2 -gSpriteImageTable_83FD9AC:: @ 83FD9AC - obj_frame_tiles gSpriteImage_83FC528, 0x800 - - .align 2 -gSpriteImageTable_83FD9B4:: @ 83FD9B4 - obj_frame_tiles gSpriteImage_83FCD28, 0x800 - - .align 2 -gSpriteAnim_83FD9BC:: @ 83FD9BC - obj_image_anim_frame 0, 1 - obj_image_anim_end - - .align 2 -gSpriteAnimTable_83FD9C4:: @ 83FD9C4 - .4byte gSpriteAnim_83FD9BC - - .align 2 -gSpriteTemplate_83FD9C8:: @ 83FD9C8 - spr_template 0xFFFF, 4106, gOamData_83FD9A4, gSpriteAnimTable_83FD9C4, gSpriteImageTable_83FD9AC, gDummySpriteAffineAnimTable, sub_811C90C - - .align 2 -gSpriteTemplate_83FD9E0:: @ 83FD9E0 - spr_template 0xFFFF, 4106, gOamData_83FD9A4, gSpriteAnimTable_83FD9C4, gSpriteImageTable_83FD9B4, gDummySpriteAffineAnimTable, sub_811C90C - - .align 2 -gFieldEffectObjectPalette10:: @ 83FD9F8 - .incbin "graphics/field_effect_objects/palettes/10.gbapal" - - .align 2 -gFieldEffectObjectPaletteInfo10:: @ 83FDA18 - obj_pal gFieldEffectObjectPalette10, 0x1009 - - .align 2 -Unknown_83FDA20: - .incbin "graphics/battle_transitions/sidney_bg.gbapal" - - .align 2 -Unknown_83FDA40: - .incbin "graphics/battle_transitions/phoebe_bg.gbapal" - - .align 2 -Unknown_83FDA60: - .incbin "graphics/battle_transitions/glacia_bg.gbapal" - - .align 2 -Unknown_83FDA80: - .incbin "graphics/battle_transitions/drake_bg.gbapal" - - .align 2 -Unknown_83FDAA0: - .incbin "graphics/battle_transitions/steven_bg.gbapal" - - .align 2 -Unknown_83FDAC0: - .incbin "graphics/battle_transitions/brendan_bg.gbapal" - - .align 2 -Unknown_83FDAE0: - .incbin "graphics/battle_transitions/may_bg.gbapal" - - .align 2 -gUnknown_083FDB00:: @ 83FDB00 - .4byte Unknown_83FDA20 - .4byte Unknown_83FDA40 - .4byte Unknown_83FDA60 - .4byte Unknown_83FDA80 - .4byte Unknown_83FDAA0 - - .align 2 -gUnknown_083FDB14:: @ 83FDB14 - .4byte Unknown_83FDAC0 - .4byte Unknown_83FDAE0 - - .align 2 -UnusedTrainerPalette: - .incbin "graphics/battle_transitions/unused_trainer.gbapal" - - .align 2 -gSpritePalette_UnusedTrainer:: @ 83FDB3C - obj_pal UnusedTrainerPalette, 0x100A - - .align 2 -gUnknown_083FDB44:: @ 83FDB44 - .incbin "graphics/battle_transitions/big_pokeball_map.bin" - - .align 2 -gUnknown_083FDFF4:: @ 83FDFF4 - .incbin "graphics/battle_transitions/elite_four_bg_map.bin" diff --git a/data/berry_blender.s b/data/berry_blender.s deleted file mode 100644 index ff0f06473..000000000 --- a/data/berry_blender.s +++ /dev/null @@ -1,456 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - - .align 2 -gUnknown_08215C0C:: @ 8215C0C - .incbin "graphics/berry_blender/center.gbapal" - - .align 2 -gUnknown_08215C2C:: @ 8215C2C - .incbin "graphics/berry_blender/center_map.bin" - - .align 2 -gUnknown_0821602C:: @ 821602C - .incbin "graphics/berry_blender/outer.gbapal" - - .incbin "graphics/unused/unknown/821604C.gbapal" - - .space 0x1C0 - - .string "▶$" - .string " $" - .string "カッコイ$" @ "cool" (missing an イ at the end) - .string "カワイイ$" @ "cute" - .string "ウツクシ$" @ "beautiful" (missing an イ at the end) - .string "カシコイ$" @ "smart" - .string "タクマシ$" @ "tough" (missing an イ at the end) - -gUnknown_08216249:: @ 8216249 - .string "\p$" - -@ unreferenced -@ These appear to be the first names of four people who worked on the game. - .string "てつじ$", 10 @ Tetsuji (Ohta) - .string "あきと$", 10 @ Akito (Mori) - .string "シゲル$", 10 @ Shigeru (Ohmori) - .string "ヨシノリ$", 10 @ Yoshinori (Matsuda) - -UnknownText_2Pok: - .string "2Pok$" -UnknownText_3Pok: - .string "3Pok$" -UnknownText_4Pok: - .string "4Pok$" - - .align 2 -gUnknown_08216284:: @ 8216284 - .4byte UnknownText_2Pok - .4byte UnknownText_3Pok - .4byte UnknownText_4Pok - -@ unreferenced - .string "1P$", 4 - .string "2P$", 4 - .string "3P$", 4 - .string "4P$", 4 - -.ifdef ENGLISH -UnknownText_Mister: - .string "MISTER$" -UnknownText_Laddie: - .string "LADDIE$" -UnknownText_Lassie: - .string "LASSIE$" -.else -UnknownText_Mister: - .string "OPI$" -UnknownText_Laddie: - .string "KUMPEL$" -UnknownText_Lassie: - .string "TUSSI$" -.endif - - .align 2 -gUnknown_082162B8:: @ 82162B8 - .4byte UnknownText_Mister - .4byte UnknownText_Laddie - .4byte UnknownText_Lassie - -gUnknown_082162C4:: @ 82162C4 - .string "{COLOR RED}$" - -gUnknown_082162C8:: @ 82162C8 - .string "\n$" - - .string " $" - -gUnknown_082162CC:: @ 82162CC - .byte -1, -1 - .byte 1, -1 - .byte -1, 1 - .byte 1, 1 - -gUnknown_082162D4:: @ 82162D4 - .byte 2, 6 - .byte 23, 6 - .byte 2, 12 - .byte 23, 12 - .byte 1, 6 - .byte 22, 6 - .byte 1, 12 - .byte 22, 12 - -gUnknown_082162E4:: @ 82162E4 - .byte 72, 32 - .byte 168, 32 - .byte 72, 128 - .byte 168, 128 - -gUnknown_082162EC:: @ 82162EC - .byte -1, 0, 1, -1 - .byte -1, 0, 1, 2 - .byte 0, 1, 2, 3 - - .align 1 -gUnknown_082162F8:: @ 82162F8 - .2byte 0x0000, 0xC000, 0x4000, 0x8000 - -gUnknown_08216300:: @ 8216300 - .byte 1 - .byte 1 - .byte 0 - -gUnknown_08216303:: @ 8216303 - .byte 32 - .byte 224 - .byte 96 - .byte 160 - .byte 0 - - .align 2 -gUnknown_08216308:: @ 8216308 - .4byte sub_804F8C8 - .4byte sub_804F9F4 - .4byte sub_804FB1C - - .align 2 -gOamData_8216314:: @ 8216314 - .2byte 0x0000 - .2byte 0x8000 - .2byte 0x0400 - - .align 2 -gSpriteAnim_821631C:: @ 821631C - obj_image_anim_frame 16, 5, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_end - - .align 2 -gSpriteAnim_8216324:: @ 8216324 - obj_image_anim_frame 16, 5, OBJ_IMAGE_ANIM_V_FLIP - obj_image_anim_end - - .align 2 -gSpriteAnim_821632C:: @ 821632C - obj_image_anim_frame 16, 5, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_end - - .align 2 -gSpriteAnim_8216334:: @ 8216334 - obj_image_anim_frame 16, 5 - obj_image_anim_end - - .align 2 -gSpriteAnim_821633C:: @ 821633C - obj_image_anim_frame 48, 2, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 32, 5, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 48, 3, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 16, 5, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_end - - .align 2 -gSpriteAnim_8216350:: @ 8216350 - obj_image_anim_frame 48, 2, OBJ_IMAGE_ANIM_V_FLIP - obj_image_anim_frame 32, 5, OBJ_IMAGE_ANIM_V_FLIP - obj_image_anim_frame 48, 3, OBJ_IMAGE_ANIM_V_FLIP - obj_image_anim_frame 16, 5, OBJ_IMAGE_ANIM_V_FLIP - obj_image_anim_end - - .align 2 -gSpriteAnim_8216364:: @ 8216364 - obj_image_anim_frame 48, 2, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 32, 5, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 48, 3, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 16, 5, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_end - - .align 2 -gSpriteAnim_8216378:: @ 8216378 - obj_image_anim_frame 48, 2 - obj_image_anim_frame 32, 5 - obj_image_anim_frame 48, 3 - obj_image_anim_frame 16, 5 - obj_image_anim_end - - .align 2 -gSpriteAnim_821638C:: @ 821638C - obj_image_anim_frame 0, 5, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_end - - .align 2 -gSpriteAnim_8216394:: @ 8216394 - obj_image_anim_frame 0, 5, OBJ_IMAGE_ANIM_V_FLIP - obj_image_anim_end - - .align 2 -gSpriteAnim_821639C:: @ 821639C - obj_image_anim_frame 0, 5, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_end - - .align 2 -gSpriteAnim_82163A4:: @ 82163A4 - obj_image_anim_frame 0, 5 - obj_image_anim_end - - .align 2 -gSpriteAnimTable_82163AC:: @ 82163AC - .4byte gSpriteAnim_821631C - .4byte gSpriteAnim_8216324 - .4byte gSpriteAnim_821632C - .4byte gSpriteAnim_8216334 - .4byte gSpriteAnim_821633C - .4byte gSpriteAnim_8216350 - .4byte gSpriteAnim_8216364 - .4byte gSpriteAnim_8216378 - .4byte gSpriteAnim_821638C - .4byte gSpriteAnim_8216394 - .4byte gSpriteAnim_821639C - .4byte gSpriteAnim_82163A4 - - .align 2 -gUnknown_082163DC:: @ 82163DC - obj_tiles gBerryBlenderArrowTiles, 0x800, 46545 - - .align 2 -gUnknown_082163E4:: @ 82163E4 - obj_pal gBerryBlenderMiscPalette, 46546 - - .align 2 -gUnknown_082163EC:: @ 82163EC - obj_pal gBerryBlenderArrowPalette, 12312 - - .align 2 -gSpriteTemplate_82163F4:: @ 82163F4 - spr_template 46545, 12312, gOamData_8216314, gSpriteAnimTable_82163AC, NULL, gDummySpriteAffineAnimTable, sub_8051C04 - - .align 2 -gOamData_821640C:: @ 821640C - .2byte 0x0000 - .2byte 0x4000 - .2byte 0x0000 - - .align 2 -gSpriteAnim_8216414:: @ 8216414 - obj_image_anim_frame 0, 20 - obj_image_anim_end - - .align 2 -gSpriteAnim_821641C:: @ 821641C - obj_image_anim_frame 4, 20, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_end - - .align 2 -gSpriteAnim_8216424:: @ 8216424 - obj_image_anim_frame 8, 4 - obj_image_anim_frame 12, 4 - obj_image_anim_frame 8, 4 - obj_image_anim_frame 12, 4 - obj_image_anim_frame 8, 4 - obj_image_anim_end - - .align 2 -gSpriteAnim_821643C:: @ 821643C - obj_image_anim_frame 8, 4 - obj_image_anim_end - - .align 2 -gSpriteAnimTable_8216444:: @ 8216444 - .4byte gSpriteAnim_8216414 - .4byte gSpriteAnim_821641C - .4byte gSpriteAnim_8216424 - .4byte gSpriteAnim_821643C - - .align 2 -gUnknown_08216454:: @ 8216454 - obj_tiles gBerryBlenderMarubatsuTiles, 0x200, 48888 - - .align 2 -gSpriteTemplate_821645C:: @ 821645C - spr_template 48888, 46546, gOamData_821640C, gSpriteAnimTable_8216444, NULL, gDummySpriteAffineAnimTable, sub_8051650 - - .align 2 -gOamData_8216474:: @ 8216474 - .2byte 0x0000 - .2byte 0x0000 - .2byte 0x0400 - - .align 2 -gSpriteAnim_821647C:: @ 821647C - obj_image_anim_frame 0, 3 - obj_image_anim_frame 1, 4 - obj_image_anim_frame 3, 5 - obj_image_anim_frame 1, 4 - obj_image_anim_frame 0, 3 - obj_image_anim_end - - .align 2 -gSpriteAnim_8216494:: @ 8216494 - obj_image_anim_frame 0, 3 - obj_image_anim_frame 2, 4 - obj_image_anim_frame 4, 5 - obj_image_anim_frame 2, 4 - obj_image_anim_frame 0, 3 - obj_image_anim_end - - .align 2 -gSpriteAnim_82164AC:: @ 82164AC - obj_image_anim_frame 0, 2 - obj_image_anim_frame 1, 2 - obj_image_anim_frame 2, 2 - obj_image_anim_frame 4, 4 - obj_image_anim_frame 3, 3 - obj_image_anim_frame 2, 2 - obj_image_anim_frame 1, 2 - obj_image_anim_frame 0, 2 - obj_image_anim_end - - .align 2 -gSpriteAnim_82164D0:: @ 82164D0 - obj_image_anim_frame 5, 5, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_end - - .align 2 -gSpriteAnim_82164D8:: @ 82164D8 - obj_image_anim_frame 6, 5, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_end - - .align 2 -gSpriteAnimTable_82164E0:: @ 82164E0 - .4byte gSpriteAnim_821647C - .4byte gSpriteAnim_8216494 - .4byte gSpriteAnim_82164AC - .4byte gSpriteAnim_82164D0 - .4byte gSpriteAnim_82164D8 - - .align 2 -gUnknown_082164F4:: @ 82164F4 - obj_tiles gBerryBlenderParticlesTiles, 0xE0, 23456 - - .align 2 -gSpriteTemplate_82164FC:: @ 82164FC - spr_template 23456, 46546, gOamData_8216474, gSpriteAnimTable_82164E0, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - - .align 2 -gOamData_8216514:: @ 8216514 - .2byte 0x0000 - .2byte 0x8000 - .2byte 0x0400 - - .align 2 -gSpriteAnim_821651C:: @ 821651C - obj_image_anim_frame 32, 30 - obj_image_anim_end - - .align 2 -gSpriteAnim_8216524:: @ 8216524 - obj_image_anim_frame 16, 30 - obj_image_anim_end - - .align 2 -gSpriteAnim_821652C:: @ 821652C - obj_image_anim_frame 0, 30 - obj_image_anim_end - - .align 2 -gSpriteAnimTable_8216534:: @ 8216534 - .4byte gSpriteAnim_821651C - .4byte gSpriteAnim_8216524 - .4byte gSpriteAnim_821652C - - .align 2 -gUnknown_08216540:: @ 8216540 - obj_tiles gBerryBlenderCountdownNumbersTiles, 0x600, 12345 - - .align 2 -gSpriteTemplate_8216548:: @ 8216548 - spr_template 12345, 46546, gOamData_8216514, gSpriteAnimTable_8216534, NULL, gDummySpriteAffineAnimTable, sub_805181C - - .align 2 -gOamData_8216560:: @ 8216560 - .2byte 0x4000 - .2byte 0xC000 - .2byte 0x0400 - - .align 2 -gSpriteAnim_8216568:: @ 8216568 - obj_image_anim_frame 0, 30 - obj_image_anim_end - - .align 2 -gSpriteAnimTable_8216570:: @ 8216570 - .4byte gSpriteAnim_8216568 - - .align 2 -gUnknown_08216574:: @ 8216574 - obj_tiles gBerryBlenderStartTiles, 0x400, 12346 - - .align 2 -gSpriteTemplate_821657C:: @ 821657C - spr_template 12346, 46546, gOamData_8216560, gSpriteAnimTable_8216570, NULL, gDummySpriteAffineAnimTable, sub_80518CC - - .align 1 -gUnknown_08216594:: @ 8216594 - .2byte -10, 20, 10, 2, 1 - .2byte 250, 20, 10, -2, 1 - .2byte -10, 140, 10, 2, -1 - .2byte 250, 140, 10, -2, -1 - -gUnknown_082165BC:: @ 82165BC - .byte 4, 3, 2 - .byte 0, 4, 3 - .byte 1, 0, 4 - .byte 2, 1, 0 - .byte 3, 2, 1 - .byte 0, 2, 3 - .byte 1, 3, 4 - .byte 2, 4, 0 - .byte 3, 0, 1 - .byte 4, 1, 2 - -gUnknown_082165DA:: @ 82165DA - .byte 1, 1, 2, 3, 4 - -gUnknown_082165DF:: @ 82165DF - .byte 0x1C, 0x16, 0x13, 0x1A, 0x19, 0x0E, 0x0D, 0x0B, 0x07, 0x15 - -gUnknown_082165E9:: @ 82165E9 - .byte 6, 6, 6, 6, 5 - -gUnknown_082165EE:: @ 82165EE - .byte 3, 3, 3, 2, 2 - -gUnknown_082165F3:: @ 82165F3 - .byte 3, 3, 3, 3, 2 - -gUnknown_082165F8:: @ 82165F8 - .string " $" - -gOtherText_BPMAndDash:: @ 82165FA - .string "BPM$" - .string "-$" - -gUnknown_08216600:: @ 8216600 - .string "\n$" - - .string "\n$" diff --git a/data/berry_tag_screen.s b/data/berry_tag_screen.s deleted file mode 100644 index d1be8a9d7..000000000 --- a/data/berry_tag_screen.s +++ /dev/null @@ -1,12 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - - .align 2 -gUnknown_0841192C:: @ 841192C - .4byte ContestStatsText_VerySoft - .4byte ContestStatsText_Soft - .4byte ContestStatsText_Hard - .4byte ContestStatsText_VeryHard - .4byte ContestStatsText_SuperHard diff --git a/data/crc16_table.inc b/data/crc16_table.inc deleted file mode 100644 index a1f8babd0..000000000 --- a/data/crc16_table.inc +++ /dev/null @@ -1,34 +0,0 @@ - .align 1 -gCrc16Table:: @ 82087DC - .2byte 0x0000, 0x1189, 0x2312, 0x329B, 0x4624, 0x57AD, 0x6536, 0x74BF - .2byte 0x8C48, 0x9DC1, 0xAF5A, 0xBED3, 0xCA6C, 0xDBE5, 0xE97E, 0xF8F7 - .2byte 0x1081, 0x0108, 0x3393, 0x221A, 0x56A5, 0x472C, 0x75B7, 0x643E - .2byte 0x9CC9, 0x8D40, 0xBFDB, 0xAE52, 0xDAED, 0xCB64, 0xF9FF, 0xE876 - .2byte 0x2102, 0x308B, 0x0210, 0x1399, 0x6726, 0x76AF, 0x4434, 0x55BD - .2byte 0xAD4A, 0xBCC3, 0x8E58, 0x9FD1, 0xEB6E, 0xFAE7, 0xC87C, 0xD9F5 - .2byte 0x3183, 0x200A, 0x1291, 0x0318, 0x77A7, 0x662E, 0x54B5, 0x453C - .2byte 0xBDCB, 0xAC42, 0x9ED9, 0x8F50, 0xFBEF, 0xEA66, 0xD8FD, 0xC974 - .2byte 0x4204, 0x538D, 0x6116, 0x709F, 0x0420, 0x15A9, 0x2732, 0x36BB - .2byte 0xCE4C, 0xDFC5, 0xED5E, 0xFCD7, 0x8868, 0x99E1, 0xAB7A, 0xBAF3 - .2byte 0x5285, 0x430C, 0x7197, 0x601E, 0x14A1, 0x0528, 0x37B3, 0x263A - .2byte 0xDECD, 0xCF44, 0xFDDF, 0xEC56, 0x98E9, 0x8960, 0xBBFB, 0xAA72 - .2byte 0x6306, 0x728F, 0x4014, 0x519D, 0x2522, 0x34AB, 0x0630, 0x17B9 - .2byte 0xEF4E, 0xFEC7, 0xCC5C, 0xDDD5, 0xA96A, 0xB8E3, 0x8A78, 0x9BF1 - .2byte 0x7387, 0x620E, 0x5095, 0x411C, 0x35A3, 0x242A, 0x16B1, 0x0738 - .2byte 0xFFCF, 0xEE46, 0xDCDD, 0xCD54, 0xB9EB, 0xA862, 0x9AF9, 0x8B70 - .2byte 0x8408, 0x9581, 0xA71A, 0xB693, 0xC22C, 0xD3A5, 0xE13E, 0xF0B7 - .2byte 0x0840, 0x19C9, 0x2B52, 0x3ADB, 0x4E64, 0x5FED, 0x6D76, 0x7CFF - .2byte 0x9489, 0x8500, 0xB79B, 0xA612, 0xD2AD, 0xC324, 0xF1BF, 0xE036 - .2byte 0x18C1, 0x0948, 0x3BD3, 0x2A5A, 0x5EE5, 0x4F6C, 0x7DF7, 0x6C7E - .2byte 0xA50A, 0xB483, 0x8618, 0x9791, 0xE32E, 0xF2A7, 0xC03C, 0xD1B5 - .2byte 0x2942, 0x38CB, 0x0A50, 0x1BD9, 0x6F66, 0x7EEF, 0x4C74, 0x5DFD - .2byte 0xB58B, 0xA402, 0x9699, 0x8710, 0xF3AF, 0xE226, 0xD0BD, 0xC134 - .2byte 0x39C3, 0x284A, 0x1AD1, 0x0B58, 0x7FE7, 0x6E6E, 0x5CF5, 0x4D7C - .2byte 0xC60C, 0xD785, 0xE51E, 0xF497, 0x8028, 0x91A1, 0xA33A, 0xB2B3 - .2byte 0x4A44, 0x5BCD, 0x6956, 0x78DF, 0x0C60, 0x1DE9, 0x2F72, 0x3EFB - .2byte 0xD68D, 0xC704, 0xF59F, 0xE416, 0x90A9, 0x8120, 0xB3BB, 0xA232 - .2byte 0x5AC5, 0x4B4C, 0x79D7, 0x685E, 0x1CE1, 0x0D68, 0x3FF3, 0x2E7A - .2byte 0xE70E, 0xF687, 0xC41C, 0xD595, 0xA12A, 0xB0A3, 0x8238, 0x93B1 - .2byte 0x6B46, 0x7ACF, 0x4854, 0x59DD, 0x2D62, 0x3CEB, 0x0E70, 0x1FF9 - .2byte 0xF78F, 0xE606, 0xD49D, 0xC514, 0xB1AB, 0xA022, 0x92B9, 0x8330 - .2byte 0x7BC7, 0x6A4E, 0x58D5, 0x495C, 0x3DE3, 0x2C6A, 0x1EF1, 0x0F78 diff --git a/data/data2.s b/data/data2a.s similarity index 55% rename from data/data2.s rename to data/data2a.s index 00ef5c26e..657fc6908 100644 --- a/data/data2.s +++ b/data/data2a.s @@ -1015,7 +1015,7 @@ gUnknown_081FA71F:: @ 81FA71F .byte 4, 4, 4, 4 .align 1 -gUnknown_081FA724:: @ 81FA724 +gSoundMovesTable:: @ 81FA724 .2byte 0x2D .2byte 0x2E .2byte 0x2F @@ -1027,778 +1027,3 @@ gUnknown_081FA724:: @ 81FA724 .2byte 0x140 .2byte 0x130 .2byte 0xFFFF - - .align 2 -gBattleScriptingCommandsTable:: @ 81FA73C - .4byte atk00_attackcanceler - .4byte atk01_accuracycheck - .4byte atk02_attackstring - .4byte atk03_ppreduce - .4byte atk04_critcalc - .4byte atk05_damagecalc1 - .4byte atk06_typecalc - .4byte atk07_dmg_adjustment - .4byte atk08_dmg_adjustment2 - .4byte atk09_attackanimation - .4byte atk0A_waitanimation - .4byte atk0B_healthbarupdate - .4byte atk0C_datahpupdate - .4byte atk0D_critmessage - .4byte atk0E_effectiveness_sound - .4byte atk0F_resultmessage - .4byte atk10_printstring - .4byte atk11_printstring_playeronly - .4byte atk12_waitmessage - .4byte atk13_printfromtable - .4byte atk14_printfromtable_playeronly - .4byte atk15_seteffectwithchancetarget - .4byte atk16_seteffectprimary - .4byte atk17_seteffectsecondary - .4byte atk18_status_effect_clear - .4byte atk19_faint_pokemon - .4byte atk1A_faint_animation - .4byte atk1B_faint_effects_clear - .4byte atk1C_jumpifstatus - .4byte atk1D_jumpifstatus2 - .4byte atk1E_jumpifability - .4byte atk1F_jumpifsideaffecting - .4byte atk20_jumpifstat - .4byte atk21_jumpifstatus3 - .4byte atk22_jumpiftype - .4byte atk23_getexp - .4byte atk24 - .4byte atk25_move_values_cleanup - .4byte atk26_set_multihit - .4byte atk27_decrement_multihit - .4byte atk28_goto - .4byte atk29_jumpifbyte - .4byte atk2A_jumpifhalfword - .4byte atk2B_jumpifword - .4byte atk2C_jumpifarrayequal - .4byte atk2D_jumpifarraynotequal - .4byte atk2E_setbyte - .4byte atk2F_addbyte - .4byte atk30_subbyte - .4byte atk31_copyarray - .4byte atk32_copyarray_withindex - .4byte atk33_orbyte - .4byte atk34_orhalfword - .4byte atk35_orword - .4byte atk36_bicbyte - .4byte atk37_bichalfword - .4byte atk38_bicword - .4byte atk39_pause - .4byte atk3A_waitstate - .4byte atk3B_healthbar_update - .4byte atk3C_return - .4byte atk3D_end - .4byte atk3E_end2 - .4byte atk3F_end3 - .4byte atk40_jump_if_move_affected_by_protect - .4byte atk41_call - .4byte atk42_jumpiftype2 - .4byte atk43_jumpifabilitypresent - .4byte atk44 - .4byte atk45_playanimation - .4byte atk46_playanimation2 - .4byte atk47_setgraphicalstatchangevalues_setgraphicalstatchangevalues_setgraphicalstatchangevalues - .4byte atk48_playstatchangeanimation - .4byte sub_80217F8 - .4byte atk4A_damageflags - .4byte atk4B_cmd4b - .4byte atk4C_switch1 - .4byte sub_80225F0 - .4byte sub_8022784 - .4byte sub_8022830 - .4byte atk50_openpartyscreen - .4byte sub_802331C - .4byte sub_8023524 - .4byte sub_80237CC - .4byte atk54_802511C - .4byte sub_8023848 - .4byte atk56_8025194 - .4byte atk57_80251C4_flee - .4byte atk58_cmd58 - .4byte atk59_8025230 - .4byte sub_8023AF8 - .4byte atk5B_80256E0 - .4byte atk5C_cmd5c - .4byte sub_8024014 - .4byte atk5E_8025A70 - .4byte atk5F_8025B24 - .4byte atk60_cmd60 - .4byte atk61_8025BA4 - .4byte atk62_08025C6C - .4byte atk63_jumptoattack - .4byte atk64_statusanimation - .4byte atk65_8025D90 - .4byte atk66_8025E38 - .4byte atk67_8025ECC - .4byte sub_80246A0 - .4byte atk69_8025FE0 - .4byte atk6A_stash_item_for_side - .4byte sub_80248C0 - .4byte sub_80248FC - .4byte sub_8024C4C - .4byte atk6E_state0_side_becomes_attacker - .4byte atk6F_8026810 - .4byte atk70_record_ability_usage_of_side - .4byte atk71_80268A0 - .4byte atk72_flee - .4byte atk73_cmd73 - .4byte atk74_hp_tresholds_2 - .4byte atk75_8026A58 - .4byte sub_8024F40 - .4byte atk77_setprotect - .4byte atk78_faintifabilitynotdamp - .4byte atk79_setuserhptozero - .4byte sub_80253E8 - .4byte sub_802548C - .4byte sub_8025508 - .4byte sub_80256D0 - .4byte atk7E_setreflect - .4byte sub_80257DC - .4byte atk80_manipulatedamage - .4byte atk81_setrest - .4byte atk82_jumpifnotfirstturn - .4byte sub_8025A34 - .4byte sub_8025AE0 - .4byte sub_8025B5C - .4byte atk86_stockpiletobasedamage - .4byte sub_8025D00 - .4byte atk88_negativedamage - .4byte atk89_statbuffchange - .4byte atk8A_normalisebuffs - .4byte atk8B_setbide - .4byte atk8C_confuseifrepeatingattackends - .4byte atk8D_setloopcounter - .4byte sub_8026468 - .4byte sub_8026590 - .4byte sub_802688C - .4byte atk91_givemoney - .4byte atk92_setlightscreen - .4byte sub_8026B78 - .4byte atk94_gethalfcurrentenemyhp - .4byte sub_8026E94 - .4byte sub_8026EEC - .4byte sub_8027064 - .4byte sub_8027238 - .4byte sub_8027348 - .4byte atk9A_setincreasedcriticalchance - .4byte atk9B_transformdataexecution - .4byte sub_80275D8 - .4byte atk9D_copyattack - .4byte sub_80278B8 - .4byte sub_8027960 - .4byte atkA0_psywavedamageeffect - .4byte atkA1_counterdamagecalculator - .4byte atkA2_mirrorcoatdamagecalculator - .4byte atkA3_disablelastusedattack - .4byte atkA4_setencore - .4byte sub_8027E4C - .4byte sub_8027F44 - .4byte atkA7_setalwayshitflag - .4byte atkA8_copymovepermanently - .4byte sub_8028420 - .4byte sub_8028558 - .4byte atkAB_802A458 - .4byte atkAC_remaininghptopower - .4byte sub_8028668 - .4byte sub_8028858 - .4byte sub_8028AD4 - .4byte sub_8028B70 - .4byte sub_8028BFC - .4byte atkB2_setperishsong - .4byte atkB3_rolloutdamagecalculation - .4byte atkB4_jumpifconfusedandattackmaxed - .4byte sub_8028EC8 - .4byte atkB6_happinesstodamagecalculation - .4byte atkB7_presentdamagecalculation - .4byte sub_80290BC - .4byte atkB9_magnitudedamagecalculation - .4byte sub_8029270 - .4byte sub_80293E8 - .4byte atkBC_maxattackhalvehp - .4byte atkBD_copyfoestats - .4byte atkBE_breakfree - .4byte sub_802964C - .4byte atkC0_recoverbasedonsunlight - .4byte sub_8029784 - .4byte atkC2_selectnexttarget - .4byte atkC3_setfutureattack - .4byte atkC4_802B910 - .4byte atkC5_hidepreattack - .4byte atkC6_unhidepostattack - .4byte atkC7_setminimize - .4byte sub_8029DAC - .4byte atkC9_jumpifattackandspecialattackcannotfall - .4byte atkCA_setforcedtarget - .4byte atkCB_setcharge - .4byte atkCC_callterrainattack - .4byte atkCD_cureifburnedparalysedorpoisoned - .4byte atkCE_settorment - .4byte atkCF_jumpifnodamage - .4byte atkD0_settaunt - .4byte sub_802A170 - .4byte sub_802A218 - .4byte sub_802A4B0 - .4byte atkD4_802C408 - .4byte sub_802A5FC - .4byte atkD6_doubledamagedealtifdamaged - .4byte sub_802A6BC - .4byte atkD8_setdamagetohealthdifference - .4byte atkD9_scaledamagebyhealthratio - .4byte atkDA_abilityswap - .4byte atkDB_imprisoneffect - .4byte atkDC_setgrudge - .4byte atkDD_weightdamagecalculation - .4byte atkDE_asistattackselect - .4byte atkDF_setmagiccoat - .4byte atkE0_setstealstatchange - .4byte atkE1_802CBE4 - .4byte sub_802ADD8 - .4byte atkE3_jumpiffainted - .4byte sub_802AEB0 - .4byte sub_802AF68 - .4byte atkE6_castform_transform - .4byte atkE7_castform_switch - .4byte atkE8_settypebasedhalvers - .4byte sub_802B1C0 - .4byte atkEA_recycleitem - .4byte atkEB_settypetoterrain - .4byte sub_802B3E0 - .4byte sub_802B4B4 - .4byte sub_802B51C - .4byte sub_802B5B8 - .4byte sub_802B960 - .4byte sub_802B9E0 - .4byte sub_802BA90 - .4byte atkF3_receive_new_pokemon_maybe - .4byte sub_802BEF0 - .4byte sub_802BF20 - .4byte sub_802BF48 - .4byte sub_802BF54 - - .align 2 -gAccuracyStageRatios:: @ 81FAB1C - .byte 33, 100, 0, 0 @ -6 - .byte 36, 100, 0, 0 @ -5 - .byte 43, 100, 0, 0 @ -4 - .byte 50, 100, 0, 0 @ -3 - .byte 60, 100, 0, 0 @ -2 - .byte 75, 100, 0, 0 @ -1 - .byte 1, 1, 0, 0 @ 0 - .byte 133, 100, 0, 0 @ +1 - .byte 166, 100, 0, 0 @ +2 - .byte 2, 1, 0, 0 @ +3 - .byte 233, 100, 0, 0 @ +4 - .byte 133, 50, 0, 0 @ +5 - .byte 3, 1, 0, 0 @ +6 - -@ The chance is 1/N for each stage. - .align 1 -gCriticalHitChance:: @ 81FAB50 - .2byte 16 @ +0 - .2byte 8 @ +1 - .2byte 4 @ +2 - .2byte 3 @ +3 - .2byte 2 @ +4 - - .align 2 -gStatusFlagsForMoveEffects:: @ 81FAB5C - .4byte 0x00000000 - .4byte 0x00000007 - .4byte 0x00000008 - .4byte 0x00000010 - .4byte 0x00000020 - .4byte 0x00000040 - .4byte 0x00000080 - .4byte 0x00000007 - .4byte 0x00000008 - .4byte 0x00000000 - .4byte 0x00000070 - .4byte 0x00000000 - .4byte 0x00001000 - .4byte 0x0000E000 - .4byte 0x00000000 - .4byte 0x00000000 - .4byte 0x00000000 - .4byte 0x00000000 - .4byte 0x00000000 - .4byte 0x00000000 - .4byte 0x00000000 - .4byte 0x00000000 - .4byte 0x00000000 - .4byte 0x00000000 - .4byte 0x00000000 - .4byte 0x00000000 - .4byte 0x00000000 - .4byte 0x00000000 - .4byte 0x00000000 - .4byte 0x00400000 - .4byte 0x00000000 - .4byte 0x00000000 - .4byte 0x04000000 - .4byte 0x08000000 - .4byte 0x00000000 - .4byte 0x00000000 - .4byte 0x00000000 - .4byte 0x00000000 - .4byte 0x00000000 - .4byte 0x00000000 - .4byte 0x00000000 - .4byte 0x00000000 - .4byte 0x00000000 - .4byte 0x00000000 - .4byte 0x00000000 - .4byte 0x00000000 - .4byte 0x00000000 - .4byte 0x00000000 - .4byte 0x00000000 - .4byte 0x00000000 - .4byte 0x00000000 - .4byte 0x00000000 - .4byte 0x00000000 - .4byte 0x00000C00 - .4byte 0x00000000 - .4byte 0x00000000 - .4byte 0x00000000 - .4byte 0x00000000 - .4byte 0x00000000 - .4byte 0x00000000 - - .align 2 -gMoveEffectBS_Ptrs:: @ 81FAC4C - .4byte BattleScript_1D963E - .4byte BattleScript_1D963E - .4byte BattleScript_1D965A - .4byte BattleScript_1D9669 - .4byte BattleScript_1D9678 - .4byte BattleScript_1D9687 - .4byte BattleScript_1D969D - .4byte BattleScript_1D96BA - .4byte BattleScript_1D963E - .4byte BattleScript_1D963E - .4byte BattleScript_1D9696 - .4byte BattleScript_1D96AA - .4byte BattleScript_1D963E - .4byte BattleScript_1D96B1 - .4byte BattleScript_1D96C8 - .4byte BattleScript_1D963E - .4byte BattleScript_1D963E - .4byte BattleScript_1D963E - .4byte BattleScript_1D963E - .4byte BattleScript_1D963E - .4byte BattleScript_1D963E - .4byte BattleScript_1D963E - .4byte BattleScript_1D963E - .4byte BattleScript_1D963E - .4byte BattleScript_1D963E - .4byte BattleScript_1D963E - .4byte BattleScript_1D963E - .4byte BattleScript_1D963E - .4byte BattleScript_1D963E - .4byte BattleScript_1D963E - .4byte BattleScript_1D963E - .4byte BattleScript_1D963E - .4byte BattleScript_1D963E - .4byte BattleScript_1D963E - .4byte BattleScript_1D963E - .4byte BattleScript_1D963E - .4byte BattleScript_1D963E - .4byte BattleScript_1D963E - .4byte BattleScript_1D96C8 - -@ unreferenced bit masks - .byte 0x00, 0x01, 0x03, 0x07, 0x0F, 0x1F, 0x3F - -gLevelUpStatBoxStats:: @ 81FACEF - .byte 0x3A @ HP - .byte 0x3E @ Sp. Attack - .byte 0x3B @ Attack - .byte 0x3F @ Sp. Defense - .byte 0x3C @ Defense - .byte 0x3D @ Speed - - .align 1 -gProtectSuccessRates:: @ 81FACF6 - .2byte 0xFFFF, 0x7FFF, 0x3FFF, 0x1FFF - - .align 1 -gUnknown_081FACFE:: @ 81FACFE - .2byte MOVE_METRONOME - .2byte MOVE_STRUGGLE - .2byte MOVE_SKETCH - .2byte MOVE_MIMIC - .2byte 0xFFFE - .2byte MOVE_COUNTER - .2byte MOVE_MIRROR_COAT - .2byte MOVE_PROTECT - .2byte MOVE_DETECT - .2byte MOVE_ENDURE - .2byte MOVE_DESTINY_BOND - .2byte MOVE_SLEEP_TALK - .2byte MOVE_THIEF - .2byte MOVE_FOLLOW_ME - .2byte MOVE_SNATCH - .2byte MOVE_HELPING_HAND - .2byte MOVE_COVET - .2byte MOVE_TRICK - .2byte MOVE_FOCUS_PUNCH - .2byte 0xFFFF - -gUnknown_081FAD26:: @ 81FAD26 - .byte 1, 200 - .byte 4, 150 - .byte 9, 100 - .byte 16, 80 - .byte 32, 40 - .byte 48, 20 - - .align 1 -gNaturePowerMoves:: @ 81FAD32 - .2byte MOVE_STUN_SPORE - .2byte MOVE_RAZOR_LEAF - .2byte MOVE_EARTHQUAKE - .2byte MOVE_HYDRO_PUMP - .2byte MOVE_SURF - .2byte MOVE_BUBBLE_BEAM - .2byte MOVE_ROCK_SLIDE - .2byte MOVE_SHADOW_BALL - .2byte MOVE_SWIFT - .2byte MOVE_SWIFT - -@ weight-based damage table for Low Kick -@ format: min. weight (hectograms), base power - - .align 1 -gWeightDamage:: @ 81FAD46 - .2byte 100, 20 - .2byte 250, 40 - .2byte 500, 60 - .2byte 1000, 80 - .2byte 2000, 100 - .2byte -1, -1 - - .align 1 -gPickupItems:: @ 81FAD5E - .2byte ITEM_SUPER_POTION, 30 - .2byte ITEM_FULL_HEAL, 40 - .2byte ITEM_ULTRA_BALL, 50 - .2byte ITEM_RARE_CANDY, 60 - .2byte ITEM_FULL_RESTORE, 70 - .2byte ITEM_REVIVE, 80 - .2byte ITEM_NUGGET, 90 - .2byte ITEM_PROTEIN, 95 - .2byte ITEM_PP_UP, 99 - .2byte ITEM_KINGS_ROCK, 1 - -gTerrainToType:: @ 81FAD86 - .byte TYPE_GRASS @ tall grass - .byte TYPE_GRASS @ long grass - .byte TYPE_GROUND @ sand - .byte TYPE_WATER @ underwater - .byte TYPE_WATER @ water - .byte TYPE_WATER @ pond water - .byte TYPE_ROCK @ rock - .byte TYPE_ROCK @ cave - .byte TYPE_NORMAL @ building - .byte TYPE_NORMAL @ plain - -gBallCatchBonuses:: @ 81FAD90 - .byte 20 @ Ultra Ball - .byte 15 @ Great Ball - .byte 10 @ Poké Ball - .byte 15 @ Safari Ball - - .string "ターン$" @ "turn" - - .align 2 -gPlayerBufferCommands:: @ 81FAD98 - .4byte PlayerHandleGetAttributes - .4byte sub_802ECF0 - .4byte PlayerHandleSetAttributes - .4byte sub_802F7CC - .4byte PlayerHandleLoadPokeSprite - .4byte PlayerHandleSendOutPoke - .4byte PlayerHandleReturnPokeToBall - .4byte PlayerHandleTrainerThrow - .4byte PlayerHandleTrainerSlide - .4byte PlayerHandleTrainerSlideBack - .4byte sub_802FE7C - .4byte sub_802FF60 - .4byte sub_802FF80 - .4byte PlayerHandleBallThrow - .4byte PlayerHandlePuase - .4byte PlayerHandleMoveAnimation - .4byte PlayerHandlePrintString - .4byte PlayerHandlePrintStringPlayerOnly - .4byte sub_803037C - .4byte nullsub_42 - .4byte sub_8030468 - .4byte PlayerHandleOpenBag - .4byte sub_8030594 - .4byte sub_8030674 - .4byte PlayerHandleHealthBarUpdate - .4byte PlayerHandleExpBarUpdate - .4byte PlayerHandleStatusIconUpdate - .4byte PlayerHandleStatusAnimation - .4byte PlayerHandleStatusXor - .4byte sub_803097C - .4byte PlayerHandleDMATransfer - .4byte sub_8030A3C - .4byte sub_8030A6C - .4byte sub_8030A78 - .4byte sub_8030A8C - .4byte sub_8030AA0 - .4byte sub_8030AB4 - .4byte sub_8030AC8 - .4byte sub_8030AE4 - .4byte sub_8030B1C - .4byte sub_8030B34 - .4byte PlayerHandleHitAnimation - .4byte sub_8030BCC - .4byte PlayerHandleEffectivenessSound - .4byte sub_8030C1C - .4byte PlayerHandleFaintingCry - .4byte PlayerHandleIntroSlide - .4byte PlayerHandleTrainerBallThrow - .4byte sub_8030FAC - .4byte sub_80310A4 - .4byte sub_80310F0 - .4byte PlayerHandleSpriteInvisibility - .4byte PlayerHandleBattleAnimation - .4byte PlayerHandleLinkStandbyMsg - .4byte PlayerHandleResetActionMoveSelection - .4byte sub_80312A0 - .4byte nullsub_43 - -gUnknown_081FAE7C:: @ 81FAE7C - .byte 0, 2, 3, 1 - -gUnknown_081FAE80:: @ 81FAE80 - .string "{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW WHITE LIGHT_BLUE WHITE2}$" - -gUnknown_081FAE89:: @ 81FAE89 - .byte 8, 120 - .byte 88, 120 - .byte 8, 136 - .byte 88, 136 - -gUnknown_081FAE91:: @ 81FAE91 - .byte 144, 120 - .byte 190, 120 - .byte 144, 136 - .byte 190, 136 - .byte 72, 72 - .byte 32, 90 - .byte 80, 80 - .byte 80, 88 - - .align 2 -gUnknown_081FAEA4:: @ 81FAEA4 - obj_tiles gSmokescreenImpactTiles, 0x180, 55019 - - .align 2 -gUnknown_081FAEAC:: @ 81FAEAC - obj_pal gSmokescreenImpactPalette, 55019 - - .align 2 -gOamData_81FAEB4:: @ 81FAEB4 - .2byte 0x0000 - .2byte 0x4000 - .2byte 0x0400 - - .align 2 -gSpriteAnim_81FAEBC:: @ 81FAEBC - obj_image_anim_frame 0, 4 - obj_image_anim_frame 4, 4 - obj_image_anim_frame 8, 4 - obj_image_anim_end - - .align 2 -gSpriteAnim_81FAECC:: @ 81FAECC - obj_image_anim_frame 0, 4, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 4, 4, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 8, 4, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_end - - .align 2 -gSpriteAnim_81FAEDC:: @ 81FAEDC - obj_image_anim_frame 0, 4, OBJ_IMAGE_ANIM_V_FLIP - obj_image_anim_frame 4, 4, OBJ_IMAGE_ANIM_V_FLIP - obj_image_anim_frame 8, 4, OBJ_IMAGE_ANIM_V_FLIP - obj_image_anim_end - - .align 2 -gSpriteAnim_81FAEEC:: @ 81FAEEC - obj_image_anim_frame 0, 4, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 4, 4, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 8, 4, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_end - - .align 2 -gSpriteAnimTable_81FAEFC:: @ 81FAEFC - .4byte gSpriteAnim_81FAEBC - .4byte gSpriteAnim_81FAECC - .4byte gSpriteAnim_81FAEDC - .4byte gSpriteAnim_81FAEEC - - .align 2 -gSpriteTemplate_81FAF0C:: @ 81FAF0C - spr_template 55019, 55019, gOamData_81FAEB4, gSpriteAnimTable_81FAEFC, NULL, gDummySpriteAffineAnimTable, sub_80463CC - - .align 2 -gUnknown_081FAF24:: @ 81FAF24 - obj_tiles gEnemyMonShadow_Gfx, 128, 0xD759 - - .align 2 -gOamData_81FAF2C:: @ 81FAF2C - .2byte 0x4000 - .2byte 0x4000 - .2byte 0x0C00 - - .align 2 -gSpriteTemplate_81FAF34:: @ 81FAF34 - spr_template 55129, 55039, gOamData_81FAF2C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8032978 - - .align 2 -gUnknown_081FAF4C:: @ 81FAF4C - .4byte 0x02008000 - .4byte 0x0200a000 - .4byte 0x0200c000 - .4byte 0x0200e000 - - .align 2 -gOpponentBufferCommands:: @ 81FAF5C - .4byte OpponentHandleGetAttributes - .4byte dp01t_01_2_read_pokmon_data_slice - .4byte OpponentHandleSetAttributes - .4byte sub_8034744 - .4byte OpponentHandleLoadPokeSprite - .4byte OpponentHandleSendOutPoke - .4byte OpponentHandleReturnPokeToBall - .4byte OpponentHandleTrainerThrow - .4byte OpponentHandleTrainerSlide - .4byte OpponentHandleTrainerSlideBack - .4byte sub_8035030 - .4byte sub_80350D4 - .4byte sub_80350E0 - .4byte OpponentHandleBallThrow - .4byte OpponentHandlePause - .4byte OpponentHandleMoveAnimation - .4byte OpponentHandlePrintString - .4byte OpponentHandlePrintStringPlayerOnly - .4byte sub_803540C - .4byte sub_803541C - .4byte sub_8035428 - .4byte sub_8035590 - .4byte sub_80355C0 - .4byte sub_80356C0 - .4byte OpponentHandleHealthBarUpdate - .4byte OpponentHandleExpBarUpdate - .4byte OpponentHandleStatusIconUpdate - .4byte OpponentHandleStatusAnimation - .4byte OpponentHandleStatusXor - .4byte sub_80358B0 - .4byte OpponentHandleDMATransfer - .4byte sub_80358C8 - .4byte sub_80358D4 - .4byte sub_80358E0 - .4byte sub_80358EC - .4byte sub_80358F8 - .4byte sub_8035904 - .4byte sub_8035910 - .4byte sub_803592C - .4byte sub_8035964 - .4byte sub_803597C - .4byte OpponentHandleHitAnimation - .4byte sub_8035A14 - .4byte OpponentHandleEffectivenessSound - .4byte sub_8035A64 - .4byte OpponentHandleFaintingCry - .4byte dp01t_2E_7_battle_intro - .4byte sub_8035B04 - .4byte dp01t_30_7_0803D67C - .4byte sub_8035E6C - .4byte sub_8035EB8 - .4byte OpponentHandleSpriteInvisibility - .4byte OpponentHandleBattleAnimation - .4byte OpponentHandleLinkStandbyMsg - .4byte OpponentHandleResetActionMoveSelection - .4byte sub_8035FA4 - .4byte nullsub_46 - -@ unreferenced unknown values - .byte 0xB0, 0xB0, 0xC8, 0x98, 0x28, 0x28, 0x28, 0x20 - - .align 2 -gLinkOpponentBufferCommands:: @ 81FB048 - .4byte LinkOpponentHandleGetAttributes - .4byte sub_803889C - .4byte sub_80388A8 - .4byte sub_8039220 - .4byte sub_8039294 - .4byte sub_80393E4 - .4byte sub_80395B4 - .4byte sub_80396D0 - .4byte sub_80398A4 - .4byte sub_80398B0 - .4byte sub_803995C - .4byte sub_8039A00 - .4byte sub_8039A0C - .4byte sub_8039A18 - .4byte sub_8039A24 - .4byte sub_8039A30 - .4byte sub_8039CC8 - .4byte sub_8039D2C - .4byte sub_8039D38 - .4byte sub_8039D44 - .4byte sub_8039D50 - .4byte sub_8039D5C - .4byte sub_8039D68 - .4byte sub_8039D74 - .4byte sub_8039D80 - .4byte sub_8039E70 - .4byte sub_8039E7C - .4byte sub_8039EF0 - .4byte sub_8039F58 - .4byte sub_8039F64 - .4byte sub_8039F70 - .4byte sub_8039F7C - .4byte sub_8039F88 - .4byte sub_8039F94 - .4byte sub_8039FA0 - .4byte sub_8039FAC - .4byte sub_8039FB8 - .4byte sub_8039FC4 - .4byte sub_8039FE0 - .4byte sub_803A018 - .4byte sub_803A030 - .4byte dp01t_29_4_blink - .4byte sub_803A0C8 - .4byte sub_803A0D4 - .4byte sub_803A118 - .4byte sub_803A148 - .4byte dp01t_2E_4_battle_intro - .4byte sub_803A1B8 - .4byte sub_803A3DC - .4byte sub_803A520 - .4byte sub_803A56C - .4byte sub_803A578 - .4byte bx_exec_buffer_A_ch0_tbl4 - .4byte sub_803A640 - .4byte sub_803A64C - .4byte sub_803A658 - .4byte nullsub_48 - -@ 81FB12C - .include "data/battle_moves.inc" - - .align 2 -gUnknown_081FC1D0:: @ 81FC1D0 - .2byte 0x34, 0x10, 0x101 - .space 2 - - .2byte -1, -1, -1 - .space 2 diff --git a/data/data2b.s b/data/data2b.s new file mode 100644 index 000000000..329384396 --- /dev/null +++ b/data/data2b.s @@ -0,0 +1,78 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .section .rodata + + .align 2 +gUnknown_081FAEA4:: @ 81FAEA4 + obj_tiles gSmokescreenImpactTiles, 0x180, 55019 + + .align 2 +gUnknown_081FAEAC:: @ 81FAEAC + obj_pal gSmokescreenImpactPalette, 55019 + + .align 2 +gOamData_81FAEB4:: @ 81FAEB4 + .2byte 0x0000 + .2byte 0x4000 + .2byte 0x0400 + + .align 2 +gSpriteAnim_81FAEBC:: @ 81FAEBC + obj_image_anim_frame 0, 4 + obj_image_anim_frame 4, 4 + obj_image_anim_frame 8, 4 + obj_image_anim_end + + .align 2 +gSpriteAnim_81FAECC:: @ 81FAECC + obj_image_anim_frame 0, 4, OBJ_IMAGE_ANIM_H_FLIP + obj_image_anim_frame 4, 4, OBJ_IMAGE_ANIM_H_FLIP + obj_image_anim_frame 8, 4, OBJ_IMAGE_ANIM_H_FLIP + obj_image_anim_end + + .align 2 +gSpriteAnim_81FAEDC:: @ 81FAEDC + obj_image_anim_frame 0, 4, OBJ_IMAGE_ANIM_V_FLIP + obj_image_anim_frame 4, 4, OBJ_IMAGE_ANIM_V_FLIP + obj_image_anim_frame 8, 4, OBJ_IMAGE_ANIM_V_FLIP + obj_image_anim_end + + .align 2 +gSpriteAnim_81FAEEC:: @ 81FAEEC + obj_image_anim_frame 0, 4, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP + obj_image_anim_frame 4, 4, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP + obj_image_anim_frame 8, 4, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP + obj_image_anim_end + + .align 2 +gSpriteAnimTable_81FAEFC:: @ 81FAEFC + .4byte gSpriteAnim_81FAEBC + .4byte gSpriteAnim_81FAECC + .4byte gSpriteAnim_81FAEDC + .4byte gSpriteAnim_81FAEEC + + .align 2 +gSpriteTemplate_81FAF0C:: @ 81FAF0C + spr_template 55019, 55019, gOamData_81FAEB4, gSpriteAnimTable_81FAEFC, NULL, gDummySpriteAffineAnimTable, sub_80463CC + + .align 2 +gUnknown_081FAF24:: @ 81FAF24 + obj_tiles gEnemyMonShadow_Gfx, 128, 0xD759 + + .align 2 +gOamData_81FAF2C:: @ 81FAF2C + .2byte 0x4000 + .2byte 0x4000 + .2byte 0x0C00 + + .align 2 +gSpriteTemplate_81FAF34:: @ 81FAF34 + spr_template 55129, 55039, gOamData_81FAF2C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8032978 + + .align 2 +gUnknown_081FAF4C:: @ 81FAF4C + .4byte 0x02008000 + .4byte 0x0200a000 + .4byte 0x0200c000 + .4byte 0x0200e000 diff --git a/data/daycare.s b/data/daycare.s deleted file mode 100644 index 92eb4637e..000000000 --- a/data/daycare.s +++ /dev/null @@ -1,17 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - -@ 82091DC - .include "data/egg_moves.inc" - - .align 2 -gUnknown_08209AC4:: @ 8209AC4 - .4byte DaycareText_GetAlongVeryWell - .4byte DaycareText_GetAlong - .4byte DaycareText_DontLikeOther - .4byte DaycareText_PlayOther - -gUnknown_08209AD4:: @ 8209AD4 - .string "タマゴ$" diff --git a/data/diploma.s b/data/diploma.s deleted file mode 100644 index 508e86c63..000000000 --- a/data/diploma.s +++ /dev/null @@ -1,5 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - diff --git a/data/egg_hatch.s b/data/egg_hatch.s deleted file mode 100644 index 1823409dd..000000000 --- a/data/egg_hatch.s +++ /dev/null @@ -1,122 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - -EggPalette:: @ 8209AD8 - .incbin "graphics/pokemon/egg/palette.gbapal" - -EggHatchTiles:: @ 8209AF8 - .incbin "graphics/misc/egg_hatch.4bpp" - -EggShardTiles:: @ 820A2F8 - .incbin "graphics/misc/egg_shard.4bpp" - - .align 2 -gOamData_820A378:: @ 820A378 - .2byte 0x0000 - .2byte 0x8000 - .2byte 0x0400 - - .align 2 -gSpriteAnim_820A380:: @ 820A380 - obj_image_anim_frame 0, 5 - obj_image_anim_end - - .align 2 -gSpriteAnim_820A388:: @ 820A388 - obj_image_anim_frame 16, 5 - obj_image_anim_end - - .align 2 -gSpriteAnim_820A390:: @ 820A390 - obj_image_anim_frame 32, 5 - obj_image_anim_end - - .align 2 -gSpriteAnim_820A398:: @ 820A398 - obj_image_anim_frame 48, 5 - obj_image_anim_end - - .align 2 -gSpriteAnimTable_820A3A0:: @ 820A3A0 - .4byte gSpriteAnim_820A380 - .4byte gSpriteAnim_820A388 - .4byte gSpriteAnim_820A390 - .4byte gSpriteAnim_820A398 - - .align 2 -gUnknown_0820A3B0:: @ 820A3B0 - obj_tiles EggHatchTiles, 2048, 12345 - - .align 2 -gUnknown_0820A3B8:: @ 820A3B8 - obj_tiles EggShardTiles, 128, 23456 - - .align 2 -gUnknown_0820A3C0:: @ 820A3C0 - obj_pal EggPalette, 54321 - - .align 2 -gSpriteTemplate_820A3C8:: @ 820A3C8 - spr_template 12345, 54321, gOamData_820A378, gSpriteAnimTable_820A3A0, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - - .align 2 -gOamData_820A3E0:: @ 820A3E0 - .2byte 0x0000 - .2byte 0x0000 - .2byte 0x0800 - - .align 2 -gSpriteAnim_820A3E8:: @ 820A3E8 - obj_image_anim_frame 0, 5 - obj_image_anim_end - - .align 2 -gSpriteAnim_820A3F0:: @ 820A3F0 - obj_image_anim_frame 1, 5 - obj_image_anim_end - - .align 2 -gSpriteAnim_820A3F8:: @ 820A3F8 - obj_image_anim_frame 2, 5 - obj_image_anim_end - - .align 2 -gSpriteAnim_820A400:: @ 820A400 - obj_image_anim_frame 3, 5 - obj_image_anim_end - - .align 2 -gSpriteAnimTable_820A408:: @ 820A408 - .4byte gSpriteAnim_820A3E8 - .4byte gSpriteAnim_820A3F0 - .4byte gSpriteAnim_820A3F8 - .4byte gSpriteAnim_820A400 - - .align 2 -gSpriteTemplate_820A418:: @ 820A418 - spr_template 23456, 54321, gOamData_820A3E0, gSpriteAnimTable_820A408, NULL, gDummySpriteAffineAnimTable, SpriteCB_EggShard - -@ The values are Q8.8 fixed-point numbers. - .align 1 -gEggShardVelocities:: @ 820A430 - .2byte 0xFE80, 0xFC40 @ (-1.5, -3.75) - .2byte 0xFB00, 0xFD00 @ (-5, -3) - .2byte 0x0380, 0xFD00 @ (3.5, -3) - .2byte 0xFC00, 0xFC40 @ (-4, -3.75) - .2byte 0x0200, 0xFE80 @ (2, -1.5) - .2byte 0xFF80, 0xF940 @ (-0.5, -6.75) - .2byte 0x0500, 0xFDC0 @ (5, -2.25) - .2byte 0xFE80, 0xFC40 @ (-1.5, -3.75) - .2byte 0x0480, 0xFE80 @ (4.5, -1.5) - .2byte 0xFF00, 0xF940 @ (-1, -6.75) - .2byte 0x0400, 0xFDC0 @ (4, -2.25) - .2byte 0xFC80, 0xFC40 @ (-3.5, -3.75) - .2byte 0x0100, 0xFE80 @ (1, -1.5) - .2byte 0xFC7C, 0xF940 @ (-3.515625, -6.75) - .2byte 0x0480, 0xFDC0 @ (4.5, -2.25) - .2byte 0xFF80, 0xF880 @ (-0.5, -7.5) - .2byte 0x0100, 0xFB80 @ (1, -4.5) - .2byte 0xFD80, 0xFDC0 @ (-2.5, -2.25) - .2byte 0x0280, 0xF880 @ (2.5, -7.5) diff --git a/data/egg_moves.inc b/data/egg_moves.inc deleted file mode 100644 index e684e04ce..000000000 --- a/data/egg_moves.inc +++ /dev/null @@ -1,1306 +0,0 @@ - .align 2 -gEggMoves:: @ 82091DC - egg_moves_begin SPECIES_BULBASAUR - .2byte MOVE_LIGHT_SCREEN - .2byte MOVE_SKULL_BASH - .2byte MOVE_SAFEGUARD - .2byte MOVE_CHARM - .2byte MOVE_PETAL_DANCE - .2byte MOVE_MAGICAL_LEAF - .2byte MOVE_GRASS_WHISTLE - .2byte MOVE_CURSE - - egg_moves_begin SPECIES_CHARMANDER - .2byte MOVE_BELLY_DRUM - .2byte MOVE_ANCIENT_POWER - .2byte MOVE_ROCK_SLIDE - .2byte MOVE_BITE - .2byte MOVE_OUTRAGE - .2byte MOVE_BEAT_UP - .2byte MOVE_SWORDS_DANCE - .2byte MOVE_DRAGON_DANCE - - egg_moves_begin SPECIES_SQUIRTLE - .2byte MOVE_MIRROR_COAT - .2byte MOVE_HAZE - .2byte MOVE_MIST - .2byte MOVE_FORESIGHT - .2byte MOVE_FLAIL - .2byte MOVE_REFRESH - .2byte MOVE_MUD_SPORT - .2byte MOVE_YAWN - - egg_moves_begin SPECIES_PIDGEY - .2byte MOVE_PURSUIT - .2byte MOVE_FAINT_ATTACK - .2byte MOVE_FORESIGHT - .2byte MOVE_STEEL_WING - .2byte MOVE_AIR_CUTTER - - egg_moves_begin SPECIES_RATTATA - .2byte MOVE_SCREECH - .2byte MOVE_FLAME_WHEEL - .2byte MOVE_FURY_SWIPES - .2byte MOVE_BITE - .2byte MOVE_COUNTER - .2byte MOVE_REVERSAL - .2byte MOVE_UPROAR - .2byte MOVE_SWAGGER - - egg_moves_begin SPECIES_SPEAROW - .2byte MOVE_FAINT_ATTACK - .2byte MOVE_FALSE_SWIPE - .2byte MOVE_SCARY_FACE - .2byte MOVE_QUICK_ATTACK - .2byte MOVE_TRI_ATTACK - .2byte MOVE_ASTONISH - .2byte MOVE_SKY_ATTACK - - egg_moves_begin SPECIES_EKANS - .2byte MOVE_PURSUIT - .2byte MOVE_SLAM - .2byte MOVE_SPITE - .2byte MOVE_BEAT_UP - .2byte MOVE_POISON_FANG - - egg_moves_begin SPECIES_SANDSHREW - .2byte MOVE_FLAIL - .2byte MOVE_SAFEGUARD - .2byte MOVE_COUNTER - .2byte MOVE_RAPID_SPIN - .2byte MOVE_ROCK_SLIDE - .2byte MOVE_METAL_CLAW - .2byte MOVE_SWORDS_DANCE - .2byte MOVE_CRUSH_CLAW - - egg_moves_begin SPECIES_NIDORAN_F - .2byte MOVE_SUPERSONIC - .2byte MOVE_DISABLE - .2byte MOVE_TAKE_DOWN - .2byte MOVE_FOCUS_ENERGY - .2byte MOVE_CHARM - .2byte MOVE_COUNTER - .2byte MOVE_BEAT_UP - - egg_moves_begin SPECIES_NIDORAN_M - .2byte MOVE_COUNTER - .2byte MOVE_DISABLE - .2byte MOVE_SUPERSONIC - .2byte MOVE_TAKE_DOWN - .2byte MOVE_AMNESIA - .2byte MOVE_CONFUSION - .2byte MOVE_BEAT_UP - - egg_moves_begin SPECIES_VULPIX - .2byte MOVE_FAINT_ATTACK - .2byte MOVE_HYPNOSIS - .2byte MOVE_FLAIL - .2byte MOVE_SPITE - .2byte MOVE_DISABLE - .2byte MOVE_HOWL - .2byte MOVE_PSYCH_UP - .2byte MOVE_HEAT_WAVE - - egg_moves_begin SPECIES_ZUBAT - .2byte MOVE_QUICK_ATTACK - .2byte MOVE_PURSUIT - .2byte MOVE_FAINT_ATTACK - .2byte MOVE_GUST - .2byte MOVE_WHIRLWIND - .2byte MOVE_CURSE - - egg_moves_begin SPECIES_ODDISH - .2byte MOVE_SWORDS_DANCE - .2byte MOVE_RAZOR_LEAF - .2byte MOVE_FLAIL - .2byte MOVE_SYNTHESIS - .2byte MOVE_CHARM - .2byte MOVE_INGRAIN - - egg_moves_begin SPECIES_PARAS - .2byte MOVE_FALSE_SWIPE - .2byte MOVE_SCREECH - .2byte MOVE_COUNTER - .2byte MOVE_PSYBEAM - .2byte MOVE_FLAIL - .2byte MOVE_SWEET_SCENT - .2byte MOVE_LIGHT_SCREEN - .2byte MOVE_PURSUIT - - egg_moves_begin SPECIES_VENONAT - .2byte MOVE_BATON_PASS - .2byte MOVE_SCREECH - .2byte MOVE_GIGA_DRAIN - .2byte MOVE_SIGNAL_BEAM - - egg_moves_begin SPECIES_DIGLETT - .2byte MOVE_FAINT_ATTACK - .2byte MOVE_SCREECH - .2byte MOVE_ANCIENT_POWER - .2byte MOVE_PURSUIT - .2byte MOVE_BEAT_UP - .2byte MOVE_UPROAR - .2byte MOVE_ROCK_SLIDE - - egg_moves_begin SPECIES_MEOWTH - .2byte MOVE_SPITE - .2byte MOVE_CHARM - .2byte MOVE_HYPNOSIS - .2byte MOVE_AMNESIA - .2byte MOVE_PSYCH_UP - .2byte MOVE_ASSIST - - egg_moves_begin SPECIES_PSYDUCK - .2byte MOVE_HYPNOSIS - .2byte MOVE_PSYBEAM - .2byte MOVE_FORESIGHT - .2byte MOVE_LIGHT_SCREEN - .2byte MOVE_FUTURE_SIGHT - .2byte MOVE_PSYCHIC - .2byte MOVE_CROSS_CHOP - .2byte MOVE_REFRESH - - egg_moves_begin SPECIES_MANKEY - .2byte MOVE_ROCK_SLIDE - .2byte MOVE_FORESIGHT - .2byte MOVE_MEDITATE - .2byte MOVE_COUNTER - .2byte MOVE_REVERSAL - .2byte MOVE_BEAT_UP - .2byte MOVE_REVENGE - .2byte MOVE_SMELLING_SALT - - egg_moves_begin SPECIES_GROWLITHE - .2byte MOVE_BODY_SLAM - .2byte MOVE_SAFEGUARD - .2byte MOVE_CRUNCH - .2byte MOVE_THRASH - .2byte MOVE_FIRE_SPIN - .2byte MOVE_HOWL - .2byte MOVE_HEAT_WAVE - - egg_moves_begin SPECIES_POLIWAG - .2byte MOVE_MIST - .2byte MOVE_SPLASH - .2byte MOVE_BUBBLE_BEAM - .2byte MOVE_HAZE - .2byte MOVE_MIND_READER - .2byte MOVE_WATER_SPORT - .2byte MOVE_ICE_BALL - - egg_moves_begin SPECIES_ABRA - .2byte MOVE_ENCORE - .2byte MOVE_BARRIER - .2byte MOVE_KNOCK_OFF - .2byte MOVE_FIRE_PUNCH - .2byte MOVE_THUNDER_PUNCH - .2byte MOVE_ICE_PUNCH - - egg_moves_begin SPECIES_MACHOP - .2byte MOVE_LIGHT_SCREEN - .2byte MOVE_MEDITATE - .2byte MOVE_ROLLING_KICK - .2byte MOVE_ENCORE - .2byte MOVE_SMELLING_SALT - .2byte MOVE_COUNTER - .2byte MOVE_ROCK_SLIDE - - egg_moves_begin SPECIES_BELLSPROUT - .2byte MOVE_SWORDS_DANCE - .2byte MOVE_ENCORE - .2byte MOVE_REFLECT - .2byte MOVE_SYNTHESIS - .2byte MOVE_LEECH_LIFE - .2byte MOVE_INGRAIN - .2byte MOVE_MAGICAL_LEAF - - egg_moves_begin SPECIES_TENTACOOL - .2byte MOVE_AURORA_BEAM - .2byte MOVE_MIRROR_COAT - .2byte MOVE_RAPID_SPIN - .2byte MOVE_HAZE - .2byte MOVE_SAFEGUARD - .2byte MOVE_CONFUSE_RAY - - egg_moves_begin SPECIES_GEODUDE - .2byte MOVE_MEGA_PUNCH - .2byte MOVE_ROCK_SLIDE - .2byte MOVE_BLOCK - - egg_moves_begin SPECIES_PONYTA - .2byte MOVE_FLAME_WHEEL - .2byte MOVE_THRASH - .2byte MOVE_DOUBLE_KICK - .2byte MOVE_HYPNOSIS - .2byte MOVE_CHARM - .2byte MOVE_DOUBLE_EDGE - - egg_moves_begin SPECIES_SLOWPOKE - .2byte MOVE_SAFEGUARD - .2byte MOVE_BELLY_DRUM - .2byte MOVE_FUTURE_SIGHT - .2byte MOVE_STOMP - .2byte MOVE_MUD_SPORT - .2byte MOVE_SLEEP_TALK - .2byte MOVE_SNORE - - egg_moves_begin SPECIES_FARFETCHD - .2byte MOVE_STEEL_WING - .2byte MOVE_FORESIGHT - .2byte MOVE_MIRROR_MOVE - .2byte MOVE_GUST - .2byte MOVE_QUICK_ATTACK - .2byte MOVE_FLAIL - .2byte MOVE_FEATHER_DANCE - .2byte MOVE_CURSE - - egg_moves_begin SPECIES_DODUO - .2byte MOVE_QUICK_ATTACK - .2byte MOVE_SUPERSONIC - .2byte MOVE_HAZE - .2byte MOVE_FAINT_ATTACK - .2byte MOVE_FLAIL - .2byte MOVE_ENDEAVOR - - egg_moves_begin SPECIES_SEEL - .2byte MOVE_LICK - .2byte MOVE_PERISH_SONG - .2byte MOVE_DISABLE - .2byte MOVE_HORN_DRILL - .2byte MOVE_SLAM - .2byte MOVE_ENCORE - .2byte MOVE_FAKE_OUT - .2byte MOVE_ICICLE_SPEAR - - egg_moves_begin SPECIES_GRIMER - .2byte MOVE_HAZE - .2byte MOVE_MEAN_LOOK - .2byte MOVE_LICK - .2byte MOVE_IMPRISON - .2byte MOVE_CURSE - .2byte MOVE_SHADOW_PUNCH - .2byte MOVE_EXPLOSION - - egg_moves_begin SPECIES_SHELLDER - .2byte MOVE_BUBBLE_BEAM - .2byte MOVE_TAKE_DOWN - .2byte MOVE_BARRIER - .2byte MOVE_RAPID_SPIN - .2byte MOVE_SCREECH - .2byte MOVE_ICICLE_SPEAR - - egg_moves_begin SPECIES_GASTLY - .2byte MOVE_PSYWAVE - .2byte MOVE_PERISH_SONG - .2byte MOVE_HAZE - .2byte MOVE_ASTONISH - .2byte MOVE_WILL_O_WISP - .2byte MOVE_GRUDGE - .2byte MOVE_EXPLOSION - - egg_moves_begin SPECIES_ONIX - .2byte MOVE_ROCK_SLIDE - .2byte MOVE_FLAIL - .2byte MOVE_EXPLOSION - .2byte MOVE_BLOCK - - egg_moves_begin SPECIES_DROWZEE - .2byte MOVE_BARRIER - .2byte MOVE_ASSIST - .2byte MOVE_ROLE_PLAY - .2byte MOVE_FIRE_PUNCH - .2byte MOVE_THUNDER_PUNCH - .2byte MOVE_ICE_PUNCH - - egg_moves_begin SPECIES_KRABBY - .2byte MOVE_DIG - .2byte MOVE_HAZE - .2byte MOVE_AMNESIA - .2byte MOVE_FLAIL - .2byte MOVE_SLAM - .2byte MOVE_KNOCK_OFF - .2byte MOVE_SWORDS_DANCE - - egg_moves_begin SPECIES_EXEGGCUTE - .2byte MOVE_SYNTHESIS - .2byte MOVE_MOONLIGHT - .2byte MOVE_REFLECT - .2byte MOVE_ANCIENT_POWER - .2byte MOVE_PSYCH_UP - .2byte MOVE_INGRAIN - .2byte MOVE_CURSE - - egg_moves_begin SPECIES_CUBONE - .2byte MOVE_ROCK_SLIDE - .2byte MOVE_ANCIENT_POWER - .2byte MOVE_BELLY_DRUM - .2byte MOVE_SCREECH - .2byte MOVE_SKULL_BASH - .2byte MOVE_PERISH_SONG - .2byte MOVE_SWORDS_DANCE - - egg_moves_begin SPECIES_LICKITUNG - .2byte MOVE_BELLY_DRUM - .2byte MOVE_MAGNITUDE - .2byte MOVE_BODY_SLAM - .2byte MOVE_CURSE - .2byte MOVE_SMELLING_SALT - .2byte MOVE_SLEEP_TALK - .2byte MOVE_SNORE - .2byte MOVE_SUBSTITUTE - - egg_moves_begin SPECIES_KOFFING - .2byte MOVE_SCREECH - .2byte MOVE_PSYWAVE - .2byte MOVE_PSYBEAM - .2byte MOVE_DESTINY_BOND - .2byte MOVE_PAIN_SPLIT - .2byte MOVE_WILL_O_WISP - - egg_moves_begin SPECIES_RHYHORN - .2byte MOVE_CRUNCH - .2byte MOVE_REVERSAL - .2byte MOVE_ROCK_SLIDE - .2byte MOVE_COUNTER - .2byte MOVE_MAGNITUDE - .2byte MOVE_SWORDS_DANCE - .2byte MOVE_CURSE - .2byte MOVE_CRUSH_CLAW - - egg_moves_begin SPECIES_CHANSEY - .2byte MOVE_PRESENT - .2byte MOVE_METRONOME - .2byte MOVE_HEAL_BELL - .2byte MOVE_AROMATHERAPY - .2byte MOVE_SUBSTITUTE - - egg_moves_begin SPECIES_TANGELA - .2byte MOVE_FLAIL - .2byte MOVE_CONFUSION - .2byte MOVE_MEGA_DRAIN - .2byte MOVE_REFLECT - .2byte MOVE_AMNESIA - .2byte MOVE_LEECH_SEED - .2byte MOVE_NATURE_POWER - - egg_moves_begin SPECIES_KANGASKHAN - .2byte MOVE_STOMP - .2byte MOVE_FORESIGHT - .2byte MOVE_FOCUS_ENERGY - .2byte MOVE_SAFEGUARD - .2byte MOVE_DISABLE - .2byte MOVE_COUNTER - .2byte MOVE_CRUSH_CLAW - .2byte MOVE_SUBSTITUTE - - egg_moves_begin SPECIES_HORSEA - .2byte MOVE_FLAIL - .2byte MOVE_AURORA_BEAM - .2byte MOVE_OCTAZOOKA - .2byte MOVE_DISABLE - .2byte MOVE_SPLASH - .2byte MOVE_DRAGON_RAGE - .2byte MOVE_DRAGON_BREATH - - egg_moves_begin SPECIES_GOLDEEN - .2byte MOVE_PSYBEAM - .2byte MOVE_HAZE - .2byte MOVE_HYDRO_PUMP - .2byte MOVE_SLEEP_TALK - .2byte MOVE_MUD_SPORT - - egg_moves_begin SPECIES_MR_MIME - .2byte MOVE_FUTURE_SIGHT - .2byte MOVE_HYPNOSIS - .2byte MOVE_MIMIC - .2byte MOVE_PSYCH_UP - .2byte MOVE_FAKE_OUT - .2byte MOVE_TRICK - - egg_moves_begin SPECIES_SCYTHER - .2byte MOVE_COUNTER - .2byte MOVE_SAFEGUARD - .2byte MOVE_BATON_PASS - .2byte MOVE_RAZOR_WIND - .2byte MOVE_REVERSAL - .2byte MOVE_LIGHT_SCREEN - .2byte MOVE_ENDURE - .2byte MOVE_SILVER_WIND - - egg_moves_begin SPECIES_PINSIR - .2byte MOVE_FURY_ATTACK - .2byte MOVE_FLAIL - .2byte MOVE_FALSE_SWIPE - .2byte MOVE_FAINT_ATTACK - - egg_moves_begin SPECIES_LAPRAS - .2byte MOVE_FORESIGHT - .2byte MOVE_SUBSTITUTE - .2byte MOVE_TICKLE - .2byte MOVE_REFRESH - .2byte MOVE_DRAGON_DANCE - .2byte MOVE_CURSE - .2byte MOVE_SLEEP_TALK - .2byte MOVE_HORN_DRILL - - egg_moves_begin SPECIES_EEVEE - .2byte MOVE_CHARM - .2byte MOVE_FLAIL - .2byte MOVE_ENDURE - .2byte MOVE_CURSE - .2byte MOVE_TICKLE - .2byte MOVE_WISH - - egg_moves_begin SPECIES_OMANYTE - .2byte MOVE_BUBBLE_BEAM - .2byte MOVE_AURORA_BEAM - .2byte MOVE_SLAM - .2byte MOVE_SUPERSONIC - .2byte MOVE_HAZE - .2byte MOVE_ROCK_SLIDE - .2byte MOVE_SPIKES - - egg_moves_begin SPECIES_KABUTO - .2byte MOVE_BUBBLE_BEAM - .2byte MOVE_AURORA_BEAM - .2byte MOVE_RAPID_SPIN - .2byte MOVE_DIG - .2byte MOVE_FLAIL - .2byte MOVE_KNOCK_OFF - .2byte MOVE_CONFUSE_RAY - - egg_moves_begin SPECIES_AERODACTYL - .2byte MOVE_WHIRLWIND - .2byte MOVE_PURSUIT - .2byte MOVE_FORESIGHT - .2byte MOVE_STEEL_WING - .2byte MOVE_DRAGON_BREATH - .2byte MOVE_CURSE - - egg_moves_begin SPECIES_SNORLAX - .2byte MOVE_LICK - .2byte MOVE_CHARM - .2byte MOVE_DOUBLE_EDGE - .2byte MOVE_CURSE - .2byte MOVE_FISSURE - .2byte MOVE_SUBSTITUTE - - egg_moves_begin SPECIES_DRATINI - .2byte MOVE_LIGHT_SCREEN - .2byte MOVE_MIST - .2byte MOVE_HAZE - .2byte MOVE_SUPERSONIC - .2byte MOVE_DRAGON_BREATH - .2byte MOVE_DRAGON_DANCE - - egg_moves_begin SPECIES_CHIKORITA - .2byte MOVE_VINE_WHIP - .2byte MOVE_LEECH_SEED - .2byte MOVE_COUNTER - .2byte MOVE_ANCIENT_POWER - .2byte MOVE_FLAIL - .2byte MOVE_NATURE_POWER - .2byte MOVE_INGRAIN - .2byte MOVE_GRASS_WHISTLE - - egg_moves_begin SPECIES_CYNDAQUIL - .2byte MOVE_FURY_SWIPES - .2byte MOVE_QUICK_ATTACK - .2byte MOVE_REVERSAL - .2byte MOVE_THRASH - .2byte MOVE_FORESIGHT - .2byte MOVE_COVET - .2byte MOVE_HOWL - .2byte MOVE_CRUSH_CLAW - - egg_moves_begin SPECIES_TOTODILE - .2byte MOVE_CRUNCH - .2byte MOVE_THRASH - .2byte MOVE_HYDRO_PUMP - .2byte MOVE_ANCIENT_POWER - .2byte MOVE_ROCK_SLIDE - .2byte MOVE_MUD_SPORT - .2byte MOVE_WATER_SPORT - .2byte MOVE_DRAGON_CLAW - - egg_moves_begin SPECIES_SENTRET - .2byte MOVE_DOUBLE_EDGE - .2byte MOVE_PURSUIT - .2byte MOVE_SLASH - .2byte MOVE_FOCUS_ENERGY - .2byte MOVE_REVERSAL - .2byte MOVE_SUBSTITUTE - .2byte MOVE_TRICK - .2byte MOVE_ASSIST - - egg_moves_begin SPECIES_HOOTHOOT - .2byte MOVE_MIRROR_MOVE - .2byte MOVE_SUPERSONIC - .2byte MOVE_FAINT_ATTACK - .2byte MOVE_WING_ATTACK - .2byte MOVE_WHIRLWIND - .2byte MOVE_SKY_ATTACK - .2byte MOVE_FEATHER_DANCE - - egg_moves_begin SPECIES_LEDYBA - .2byte MOVE_PSYBEAM - .2byte MOVE_BIDE - .2byte MOVE_SILVER_WIND - - egg_moves_begin SPECIES_SPINARAK - .2byte MOVE_PSYBEAM - .2byte MOVE_DISABLE - .2byte MOVE_SONIC_BOOM - .2byte MOVE_BATON_PASS - .2byte MOVE_PURSUIT - .2byte MOVE_SIGNAL_BEAM - - egg_moves_begin SPECIES_CHINCHOU - .2byte MOVE_FLAIL - .2byte MOVE_SCREECH - .2byte MOVE_AMNESIA - - egg_moves_begin SPECIES_PICHU - .2byte MOVE_REVERSAL - .2byte MOVE_BIDE - .2byte MOVE_PRESENT - .2byte MOVE_ENCORE - .2byte MOVE_DOUBLE_SLAP - .2byte MOVE_WISH - .2byte MOVE_CHARGE - - egg_moves_begin SPECIES_CLEFFA - .2byte MOVE_PRESENT - .2byte MOVE_METRONOME - .2byte MOVE_AMNESIA - .2byte MOVE_BELLY_DRUM - .2byte MOVE_SPLASH - .2byte MOVE_MIMIC - .2byte MOVE_WISH - .2byte MOVE_SUBSTITUTE - - egg_moves_begin SPECIES_IGGLYBUFF - .2byte MOVE_PERISH_SONG - .2byte MOVE_PRESENT - .2byte MOVE_FAINT_ATTACK - .2byte MOVE_WISH - .2byte MOVE_FAKE_TEARS - - egg_moves_begin SPECIES_TOGEPI - .2byte MOVE_PRESENT - .2byte MOVE_MIRROR_MOVE - .2byte MOVE_PECK - .2byte MOVE_FORESIGHT - .2byte MOVE_FUTURE_SIGHT - .2byte MOVE_SUBSTITUTE - .2byte MOVE_PSYCH_UP - - egg_moves_begin SPECIES_NATU - .2byte MOVE_HAZE - .2byte MOVE_DRILL_PECK - .2byte MOVE_QUICK_ATTACK - .2byte MOVE_FAINT_ATTACK - .2byte MOVE_STEEL_WING - .2byte MOVE_PSYCH_UP - .2byte MOVE_FEATHER_DANCE - .2byte MOVE_REFRESH - - egg_moves_begin SPECIES_MAREEP - .2byte MOVE_TAKE_DOWN - .2byte MOVE_BODY_SLAM - .2byte MOVE_SAFEGUARD - .2byte MOVE_SCREECH - .2byte MOVE_REFLECT - .2byte MOVE_ODOR_SLEUTH - .2byte MOVE_CHARGE - - egg_moves_begin SPECIES_MARILL - .2byte MOVE_LIGHT_SCREEN - .2byte MOVE_PRESENT - .2byte MOVE_AMNESIA - .2byte MOVE_FUTURE_SIGHT - .2byte MOVE_BELLY_DRUM - .2byte MOVE_PERISH_SONG - .2byte MOVE_SUPERSONIC - .2byte MOVE_SUBSTITUTE - - egg_moves_begin SPECIES_SUDOWOODO - .2byte MOVE_SELF_DESTRUCT - - egg_moves_begin SPECIES_HOPPIP - .2byte MOVE_CONFUSION - .2byte MOVE_ENCORE - .2byte MOVE_DOUBLE_EDGE - .2byte MOVE_REFLECT - .2byte MOVE_AMNESIA - .2byte MOVE_HELPING_HAND - .2byte MOVE_PSYCH_UP - - egg_moves_begin SPECIES_AIPOM - .2byte MOVE_COUNTER - .2byte MOVE_SCREECH - .2byte MOVE_PURSUIT - .2byte MOVE_AGILITY - .2byte MOVE_SPITE - .2byte MOVE_SLAM - .2byte MOVE_DOUBLE_SLAP - .2byte MOVE_BEAT_UP - - egg_moves_begin SPECIES_SUNKERN - .2byte MOVE_GRASS_WHISTLE - .2byte MOVE_ENCORE - .2byte MOVE_LEECH_SEED - .2byte MOVE_NATURE_POWER - .2byte MOVE_CURSE - .2byte MOVE_HELPING_HAND - - egg_moves_begin SPECIES_YANMA - .2byte MOVE_WHIRLWIND - .2byte MOVE_REVERSAL - .2byte MOVE_LEECH_LIFE - .2byte MOVE_SIGNAL_BEAM - .2byte MOVE_SILVER_WIND - - egg_moves_begin SPECIES_WOOPER - .2byte MOVE_BODY_SLAM - .2byte MOVE_ANCIENT_POWER - .2byte MOVE_SAFEGUARD - .2byte MOVE_CURSE - .2byte MOVE_MUD_SPORT - .2byte MOVE_STOCKPILE - .2byte MOVE_SWALLOW - .2byte MOVE_SPIT_UP - - egg_moves_begin SPECIES_MURKROW - .2byte MOVE_WHIRLWIND - .2byte MOVE_DRILL_PECK - .2byte MOVE_MIRROR_MOVE - .2byte MOVE_WING_ATTACK - .2byte MOVE_SKY_ATTACK - .2byte MOVE_CONFUSE_RAY - .2byte MOVE_FEATHER_DANCE - .2byte MOVE_PERISH_SONG - - egg_moves_begin SPECIES_MISDREAVUS - .2byte MOVE_SCREECH - .2byte MOVE_DESTINY_BOND - .2byte MOVE_PSYCH_UP - .2byte MOVE_IMPRISON - - egg_moves_begin SPECIES_GIRAFARIG - .2byte MOVE_TAKE_DOWN - .2byte MOVE_AMNESIA - .2byte MOVE_FORESIGHT - .2byte MOVE_FUTURE_SIGHT - .2byte MOVE_BEAT_UP - .2byte MOVE_PSYCH_UP - .2byte MOVE_WISH - .2byte MOVE_MAGIC_COAT - - egg_moves_begin SPECIES_PINECO - .2byte MOVE_REFLECT - .2byte MOVE_PIN_MISSILE - .2byte MOVE_FLAIL - .2byte MOVE_SWIFT - .2byte MOVE_COUNTER - .2byte MOVE_SAND_TOMB - - egg_moves_begin SPECIES_DUNSPARCE - .2byte MOVE_BIDE - .2byte MOVE_ANCIENT_POWER - .2byte MOVE_ROCK_SLIDE - .2byte MOVE_BITE - .2byte MOVE_HEADBUTT - .2byte MOVE_ASTONISH - .2byte MOVE_CURSE - - egg_moves_begin SPECIES_GLIGAR - .2byte MOVE_METAL_CLAW - .2byte MOVE_WING_ATTACK - .2byte MOVE_RAZOR_WIND - .2byte MOVE_COUNTER - .2byte MOVE_SAND_TOMB - - egg_moves_begin SPECIES_SNUBBULL - .2byte MOVE_METRONOME - .2byte MOVE_FAINT_ATTACK - .2byte MOVE_REFLECT - .2byte MOVE_PRESENT - .2byte MOVE_CRUNCH - .2byte MOVE_HEAL_BELL - .2byte MOVE_SNORE - .2byte MOVE_SMELLING_SALT - - egg_moves_begin SPECIES_QWILFISH - .2byte MOVE_FLAIL - .2byte MOVE_HAZE - .2byte MOVE_BUBBLE_BEAM - .2byte MOVE_SUPERSONIC - .2byte MOVE_ASTONISH - - egg_moves_begin SPECIES_SHUCKLE - .2byte MOVE_SWEET_SCENT - - egg_moves_begin SPECIES_HERACROSS - .2byte MOVE_HARDEN - .2byte MOVE_BIDE - .2byte MOVE_FLAIL - .2byte MOVE_FALSE_SWIPE - - egg_moves_begin SPECIES_SNEASEL - .2byte MOVE_COUNTER - .2byte MOVE_SPITE - .2byte MOVE_FORESIGHT - .2byte MOVE_REFLECT - .2byte MOVE_BITE - .2byte MOVE_CRUSH_CLAW - .2byte MOVE_FAKE_OUT - - egg_moves_begin SPECIES_TEDDIURSA - .2byte MOVE_CRUNCH - .2byte MOVE_TAKE_DOWN - .2byte MOVE_SEISMIC_TOSS - .2byte MOVE_COUNTER - .2byte MOVE_METAL_CLAW - .2byte MOVE_FAKE_TEARS - .2byte MOVE_YAWN - .2byte MOVE_SLEEP_TALK - - egg_moves_begin SPECIES_SLUGMA - .2byte MOVE_ACID_ARMOR - .2byte MOVE_HEAT_WAVE - - egg_moves_begin SPECIES_SWINUB - .2byte MOVE_TAKE_DOWN - .2byte MOVE_BITE - .2byte MOVE_BODY_SLAM - .2byte MOVE_ROCK_SLIDE - .2byte MOVE_ANCIENT_POWER - .2byte MOVE_MUD_SHOT - .2byte MOVE_ICICLE_SPEAR - .2byte MOVE_DOUBLE_EDGE - - egg_moves_begin SPECIES_CORSOLA - .2byte MOVE_ROCK_SLIDE - .2byte MOVE_SCREECH - .2byte MOVE_MIST - .2byte MOVE_AMNESIA - .2byte MOVE_BARRIER - .2byte MOVE_INGRAIN - .2byte MOVE_CONFUSE_RAY - .2byte MOVE_ICICLE_SPEAR - - egg_moves_begin SPECIES_REMORAID - .2byte MOVE_AURORA_BEAM - .2byte MOVE_OCTAZOOKA - .2byte MOVE_SUPERSONIC - .2byte MOVE_HAZE - .2byte MOVE_SCREECH - .2byte MOVE_THUNDER_WAVE - .2byte MOVE_ROCK_BLAST - - egg_moves_begin SPECIES_DELIBIRD - .2byte MOVE_AURORA_BEAM - .2byte MOVE_QUICK_ATTACK - .2byte MOVE_FUTURE_SIGHT - .2byte MOVE_SPLASH - .2byte MOVE_RAPID_SPIN - .2byte MOVE_ICE_BALL - - egg_moves_begin SPECIES_MANTINE - .2byte MOVE_TWISTER - .2byte MOVE_HYDRO_PUMP - .2byte MOVE_HAZE - .2byte MOVE_SLAM - .2byte MOVE_MUD_SPORT - .2byte MOVE_ROCK_SLIDE - - egg_moves_begin SPECIES_SKARMORY - .2byte MOVE_DRILL_PECK - .2byte MOVE_PURSUIT - .2byte MOVE_WHIRLWIND - .2byte MOVE_SKY_ATTACK - .2byte MOVE_CURSE - - egg_moves_begin SPECIES_HOUNDOUR - .2byte MOVE_FIRE_SPIN - .2byte MOVE_RAGE - .2byte MOVE_PURSUIT - .2byte MOVE_COUNTER - .2byte MOVE_SPITE - .2byte MOVE_REVERSAL - .2byte MOVE_BEAT_UP - .2byte MOVE_WILL_O_WISP - - egg_moves_begin SPECIES_PHANPY - .2byte MOVE_FOCUS_ENERGY - .2byte MOVE_BODY_SLAM - .2byte MOVE_ANCIENT_POWER - .2byte MOVE_SNORE - .2byte MOVE_COUNTER - .2byte MOVE_FISSURE - - egg_moves_begin SPECIES_STANTLER - .2byte MOVE_SPITE - .2byte MOVE_DISABLE - .2byte MOVE_BITE - .2byte MOVE_SWAGGER - .2byte MOVE_PSYCH_UP - .2byte MOVE_EXTRASENSORY - - egg_moves_begin SPECIES_TYROGUE - .2byte MOVE_RAPID_SPIN - .2byte MOVE_HI_JUMP_KICK - .2byte MOVE_MACH_PUNCH - .2byte MOVE_MIND_READER - .2byte MOVE_HELPING_HAND - - egg_moves_begin SPECIES_SMOOCHUM - .2byte MOVE_MEDITATE - .2byte MOVE_PSYCH_UP - .2byte MOVE_FAKE_OUT - .2byte MOVE_WISH - .2byte MOVE_ICE_PUNCH - - egg_moves_begin SPECIES_ELEKID - .2byte MOVE_KARATE_CHOP - .2byte MOVE_BARRIER - .2byte MOVE_ROLLING_KICK - .2byte MOVE_MEDITATE - .2byte MOVE_CROSS_CHOP - .2byte MOVE_FIRE_PUNCH - .2byte MOVE_ICE_PUNCH - - egg_moves_begin SPECIES_MAGBY - .2byte MOVE_KARATE_CHOP - .2byte MOVE_MEGA_PUNCH - .2byte MOVE_BARRIER - .2byte MOVE_SCREECH - .2byte MOVE_CROSS_CHOP - .2byte MOVE_THUNDER_PUNCH - - egg_moves_begin SPECIES_MILTANK - .2byte MOVE_PRESENT - .2byte MOVE_REVERSAL - .2byte MOVE_SEISMIC_TOSS - .2byte MOVE_ENDURE - .2byte MOVE_PSYCH_UP - .2byte MOVE_CURSE - .2byte MOVE_HELPING_HAND - .2byte MOVE_SLEEP_TALK - - egg_moves_begin SPECIES_LARVITAR - .2byte MOVE_PURSUIT - .2byte MOVE_STOMP - .2byte MOVE_OUTRAGE - .2byte MOVE_FOCUS_ENERGY - .2byte MOVE_ANCIENT_POWER - .2byte MOVE_DRAGON_DANCE - .2byte MOVE_CURSE - - egg_moves_begin SPECIES_TREECKO - .2byte MOVE_CRUNCH - .2byte MOVE_MUD_SPORT - .2byte MOVE_ENDEAVOR - .2byte MOVE_LEECH_SEED - .2byte MOVE_DRAGON_BREATH - .2byte MOVE_CRUSH_CLAW - - egg_moves_begin SPECIES_TORCHIC - .2byte MOVE_COUNTER - .2byte MOVE_REVERSAL - .2byte MOVE_ENDURE - .2byte MOVE_SWAGGER - .2byte MOVE_ROCK_SLIDE - .2byte MOVE_SMELLING_SALT - - egg_moves_begin SPECIES_MUDKIP - .2byte MOVE_REFRESH - .2byte MOVE_UPROAR - .2byte MOVE_CURSE - .2byte MOVE_STOMP - .2byte MOVE_ICE_BALL - .2byte MOVE_MIRROR_COAT - - egg_moves_begin SPECIES_POOCHYENA - .2byte MOVE_ASTONISH - .2byte MOVE_POISON_FANG - .2byte MOVE_COVET - .2byte MOVE_LEER - .2byte MOVE_YAWN - - egg_moves_begin SPECIES_ZIGZAGOON - .2byte MOVE_CHARM - .2byte MOVE_PURSUIT - .2byte MOVE_SUBSTITUTE - .2byte MOVE_TICKLE - .2byte MOVE_TRICK - - egg_moves_begin SPECIES_LOTAD - .2byte MOVE_SYNTHESIS - .2byte MOVE_RAZOR_LEAF - .2byte MOVE_SWEET_SCENT - .2byte MOVE_LEECH_SEED - .2byte MOVE_FLAIL - .2byte MOVE_WATER_GUN - - egg_moves_begin SPECIES_SEEDOT - .2byte MOVE_LEECH_SEED - .2byte MOVE_AMNESIA - .2byte MOVE_QUICK_ATTACK - .2byte MOVE_RAZOR_WIND - .2byte MOVE_TAKE_DOWN - .2byte MOVE_FALSE_SWIPE - - egg_moves_begin SPECIES_NINCADA - .2byte MOVE_ENDURE - .2byte MOVE_FAINT_ATTACK - .2byte MOVE_GUST - .2byte MOVE_SILVER_WIND - - egg_moves_begin SPECIES_TAILLOW - .2byte MOVE_PURSUIT - .2byte MOVE_SUPERSONIC - .2byte MOVE_REFRESH - .2byte MOVE_MIRROR_MOVE - .2byte MOVE_RAGE - .2byte MOVE_SKY_ATTACK - - egg_moves_begin SPECIES_SHROOMISH - .2byte MOVE_FAKE_TEARS - .2byte MOVE_SWAGGER - .2byte MOVE_CHARM - .2byte MOVE_FALSE_SWIPE - .2byte MOVE_HELPING_HAND - - egg_moves_begin SPECIES_SPINDA - .2byte MOVE_ENCORE - .2byte MOVE_ROCK_SLIDE - .2byte MOVE_ASSIST - .2byte MOVE_DISABLE - .2byte MOVE_BATON_PASS - .2byte MOVE_WISH - .2byte MOVE_TRICK - .2byte MOVE_SMELLING_SALT - - egg_moves_begin SPECIES_WINGULL - .2byte MOVE_MIST - .2byte MOVE_TWISTER - .2byte MOVE_AGILITY - .2byte MOVE_GUST - .2byte MOVE_WATER_SPORT - - egg_moves_begin SPECIES_SURSKIT - .2byte MOVE_FORESIGHT - .2byte MOVE_MUD_SHOT - .2byte MOVE_PSYBEAM - .2byte MOVE_HYDRO_PUMP - .2byte MOVE_MIND_READER - - egg_moves_begin SPECIES_WAILMER - .2byte MOVE_DOUBLE_EDGE - .2byte MOVE_THRASH - .2byte MOVE_SWAGGER - .2byte MOVE_SNORE - .2byte MOVE_SLEEP_TALK - .2byte MOVE_CURSE - .2byte MOVE_FISSURE - .2byte MOVE_TICKLE - - egg_moves_begin SPECIES_SKITTY - .2byte MOVE_HELPING_HAND - .2byte MOVE_PSYCH_UP - .2byte MOVE_UPROAR - .2byte MOVE_FAKE_TEARS - .2byte MOVE_WISH - .2byte MOVE_BATON_PASS - .2byte MOVE_SUBSTITUTE - .2byte MOVE_TICKLE - - egg_moves_begin SPECIES_KECLEON - .2byte MOVE_DISABLE - .2byte MOVE_MAGIC_COAT - .2byte MOVE_TRICK - - egg_moves_begin SPECIES_NOSEPASS - .2byte MOVE_MAGNITUDE - .2byte MOVE_ROLLOUT - .2byte MOVE_EXPLOSION - - egg_moves_begin SPECIES_TORKOAL - .2byte MOVE_ERUPTION - .2byte MOVE_ENDURE - .2byte MOVE_SLEEP_TALK - .2byte MOVE_YAWN - - egg_moves_begin SPECIES_SABLEYE - .2byte MOVE_PSYCH_UP - .2byte MOVE_RECOVER - .2byte MOVE_MOONLIGHT - - egg_moves_begin SPECIES_BARBOACH - .2byte MOVE_THRASH - .2byte MOVE_WHIRLPOOL - .2byte MOVE_SPARK - - egg_moves_begin SPECIES_LUVDISC - .2byte MOVE_SPLASH - .2byte MOVE_SUPERSONIC - .2byte MOVE_WATER_SPORT - .2byte MOVE_MUD_SPORT - - egg_moves_begin SPECIES_CORPHISH - .2byte MOVE_MUD_SPORT - .2byte MOVE_ENDEAVOR - .2byte MOVE_BODY_SLAM - .2byte MOVE_ANCIENT_POWER - - egg_moves_begin SPECIES_FEEBAS - .2byte MOVE_MIRROR_COAT - .2byte MOVE_DRAGON_BREATH - .2byte MOVE_MUD_SPORT - .2byte MOVE_HYPNOSIS - .2byte MOVE_LIGHT_SCREEN - .2byte MOVE_CONFUSE_RAY - - egg_moves_begin SPECIES_CARVANHA - .2byte MOVE_HYDRO_PUMP - .2byte MOVE_DOUBLE_EDGE - .2byte MOVE_THRASH - - egg_moves_begin SPECIES_TRAPINCH - .2byte MOVE_FOCUS_ENERGY - .2byte MOVE_QUICK_ATTACK - .2byte MOVE_GUST - - egg_moves_begin SPECIES_MAKUHITA - .2byte MOVE_FAINT_ATTACK - .2byte MOVE_DETECT - .2byte MOVE_FORESIGHT - .2byte MOVE_HELPING_HAND - .2byte MOVE_CROSS_CHOP - .2byte MOVE_REVENGE - .2byte MOVE_DYNAMIC_PUNCH - .2byte MOVE_COUNTER - - egg_moves_begin SPECIES_ELECTRIKE - .2byte MOVE_CRUNCH - .2byte MOVE_HEADBUTT - .2byte MOVE_UPROAR - .2byte MOVE_CURSE - .2byte MOVE_SWIFT - - egg_moves_begin SPECIES_NUMEL - .2byte MOVE_HOWL - .2byte MOVE_SCARY_FACE - .2byte MOVE_BODY_SLAM - .2byte MOVE_ROLLOUT - .2byte MOVE_DEFENSE_CURL - .2byte MOVE_STOMP - - egg_moves_begin SPECIES_SPHEAL - .2byte MOVE_WATER_SPORT - .2byte MOVE_STOCKPILE - .2byte MOVE_SWALLOW - .2byte MOVE_SPIT_UP - .2byte MOVE_YAWN - .2byte MOVE_ROCK_SLIDE - .2byte MOVE_CURSE - .2byte MOVE_FISSURE - - egg_moves_begin SPECIES_CACNEA - .2byte MOVE_GRASS_WHISTLE - .2byte MOVE_ACID - .2byte MOVE_TEETER_DANCE - .2byte MOVE_DYNAMIC_PUNCH - .2byte MOVE_COUNTER - - egg_moves_begin SPECIES_SNORUNT - .2byte MOVE_BLOCK - .2byte MOVE_SPIKES - - egg_moves_begin SPECIES_AZURILL - .2byte MOVE_ENCORE - .2byte MOVE_SING - .2byte MOVE_REFRESH - .2byte MOVE_SLAM - .2byte MOVE_TICKLE - - egg_moves_begin SPECIES_SPOINK - .2byte MOVE_FUTURE_SIGHT - .2byte MOVE_EXTRASENSORY - .2byte MOVE_SUBSTITUTE - .2byte MOVE_TRICK - - egg_moves_begin SPECIES_PLUSLE - .2byte MOVE_SUBSTITUTE - .2byte MOVE_WISH - - egg_moves_begin SPECIES_MINUN - .2byte MOVE_SUBSTITUTE - .2byte MOVE_WISH - - egg_moves_begin SPECIES_MAWILE - .2byte MOVE_SWORDS_DANCE - .2byte MOVE_FALSE_SWIPE - .2byte MOVE_POISON_FANG - .2byte MOVE_PSYCH_UP - .2byte MOVE_ANCIENT_POWER - .2byte MOVE_TICKLE - - egg_moves_begin SPECIES_MEDITITE - .2byte MOVE_FIRE_PUNCH - .2byte MOVE_THUNDER_PUNCH - .2byte MOVE_ICE_PUNCH - .2byte MOVE_FORESIGHT - .2byte MOVE_FAKE_OUT - .2byte MOVE_BATON_PASS - .2byte MOVE_DYNAMIC_PUNCH - - egg_moves_begin SPECIES_SWABLU - .2byte MOVE_AGILITY - .2byte MOVE_HAZE - .2byte MOVE_PURSUIT - .2byte MOVE_RAGE - - egg_moves_begin SPECIES_DUSKULL - .2byte MOVE_IMPRISON - .2byte MOVE_DESTINY_BOND - .2byte MOVE_PAIN_SPLIT - .2byte MOVE_GRUDGE - .2byte MOVE_MEMENTO - .2byte MOVE_FAINT_ATTACK - - egg_moves_begin SPECIES_ROSELIA - .2byte MOVE_SPIKES - .2byte MOVE_SYNTHESIS - .2byte MOVE_PIN_MISSILE - .2byte MOVE_COTTON_SPORE - - egg_moves_begin SPECIES_SLAKOTH - .2byte MOVE_PURSUIT - .2byte MOVE_SLASH - .2byte MOVE_BODY_SLAM - .2byte MOVE_SNORE - .2byte MOVE_CRUSH_CLAW - .2byte MOVE_CURSE - .2byte MOVE_SLEEP_TALK - - egg_moves_begin SPECIES_GULPIN - .2byte MOVE_DREAM_EATER - .2byte MOVE_ACID_ARMOR - .2byte MOVE_SMOG - .2byte MOVE_PAIN_SPLIT - - egg_moves_begin SPECIES_TROPIUS - .2byte MOVE_HEADBUTT - .2byte MOVE_SLAM - .2byte MOVE_RAZOR_WIND - .2byte MOVE_LEECH_SEED - .2byte MOVE_NATURE_POWER - - egg_moves_begin SPECIES_WHISMUR - .2byte MOVE_TAKE_DOWN - .2byte MOVE_SNORE - .2byte MOVE_SWAGGER - .2byte MOVE_EXTRASENSORY - .2byte MOVE_SMELLING_SALT - - egg_moves_begin SPECIES_CLAMPERL - .2byte MOVE_REFRESH - .2byte MOVE_MUD_SPORT - .2byte MOVE_BODY_SLAM - .2byte MOVE_SUPERSONIC - .2byte MOVE_BARRIER - .2byte MOVE_CONFUSE_RAY - - egg_moves_begin SPECIES_ABSOL - .2byte MOVE_BATON_PASS - .2byte MOVE_FAINT_ATTACK - .2byte MOVE_DOUBLE_EDGE - .2byte MOVE_MAGIC_COAT - .2byte MOVE_CURSE - .2byte MOVE_SUBSTITUTE - - egg_moves_begin SPECIES_SHUPPET - .2byte MOVE_DISABLE - .2byte MOVE_DESTINY_BOND - .2byte MOVE_FORESIGHT - .2byte MOVE_ASTONISH - .2byte MOVE_IMPRISON - - egg_moves_begin SPECIES_SEVIPER - .2byte MOVE_STOCKPILE - .2byte MOVE_SWALLOW - .2byte MOVE_SPIT_UP - .2byte MOVE_BODY_SLAM - - egg_moves_begin SPECIES_ZANGOOSE - .2byte MOVE_FLAIL - .2byte MOVE_DOUBLE_KICK - .2byte MOVE_RAZOR_WIND - .2byte MOVE_COUNTER - .2byte MOVE_ROAR - .2byte MOVE_CURSE - - egg_moves_begin SPECIES_RELICANTH - .2byte MOVE_MAGNITUDE - .2byte MOVE_SKULL_BASH - .2byte MOVE_WATER_SPORT - .2byte MOVE_AMNESIA - .2byte MOVE_SLEEP_TALK - .2byte MOVE_ROCK_SLIDE - - egg_moves_begin SPECIES_ARON - .2byte MOVE_ENDEAVOR - .2byte MOVE_BODY_SLAM - .2byte MOVE_STOMP - .2byte MOVE_SMELLING_SALT - - egg_moves_begin SPECIES_CASTFORM - .2byte MOVE_FUTURE_SIGHT - .2byte MOVE_PSYCH_UP - - egg_moves_begin SPECIES_VOLBEAT - .2byte MOVE_BATON_PASS - .2byte MOVE_SILVER_WIND - .2byte MOVE_TRICK - - egg_moves_begin SPECIES_ILLUMISE - .2byte MOVE_BATON_PASS - .2byte MOVE_SILVER_WIND - .2byte MOVE_GROWTH - - egg_moves_begin SPECIES_LILEEP - .2byte MOVE_BARRIER - .2byte MOVE_RECOVER - .2byte MOVE_MIRROR_COAT - .2byte MOVE_ROCK_SLIDE - - egg_moves_begin SPECIES_ANORITH - .2byte MOVE_RAPID_SPIN - .2byte MOVE_KNOCK_OFF - .2byte MOVE_SWORDS_DANCE - .2byte MOVE_ROCK_SLIDE - - egg_moves_begin SPECIES_RALTS - .2byte MOVE_DISABLE - .2byte MOVE_WILL_O_WISP - .2byte MOVE_MEAN_LOOK - .2byte MOVE_MEMENTO - .2byte MOVE_DESTINY_BOND - - egg_moves_begin SPECIES_BAGON - .2byte MOVE_HYDRO_PUMP - .2byte MOVE_THRASH - .2byte MOVE_DRAGON_RAGE - .2byte MOVE_TWISTER - .2byte MOVE_DRAGON_DANCE - - egg_moves_begin SPECIES_CHIMECHO - .2byte MOVE_DISABLE - .2byte MOVE_CURSE - .2byte MOVE_HYPNOSIS - .2byte MOVE_DREAM_EATER - - .2byte -1 diff --git a/data/event_scripts.s b/data/event_scripts.s index d909f1006..854b52c9e 100644 --- a/data/event_scripts.s +++ b/data/event_scripts.s @@ -386,27 +386,27 @@ gStdScripts_End:: gUnknown_0815F36C:: @ 815F36C lockall - playsfx 2 + playse 2 message UnknownString_81A3A72 - doanimation 61 + dofieldeffect 61 waitstate - waittext + waitmessage waitbutton - playsfx 5 - jump EventScript_15F384 + playse 5 + goto EventScript_15F384 end EventScript_15F384: message UnknownString_81A3A87 - waittext + waitmessage checkflag 268 - jumpeq EventScript_15F3A0 - jump EventScript_15F3E2 + goto_if_eq EventScript_15F3A0 + goto EventScript_15F3E2 end gUnknown_0815F399:: @ 815F399 lockall - jump EventScript_15F384 + goto EventScript_15F384 end EventScript_15F3A0: @@ -431,35 +431,35 @@ EventScript_15F3E2: EventScript_15F419: msgbox UnknownString_81A38FB, 5 compare RESULT, 0 - jumpeq EventScript_15F384 - closebutton - special 10 + goto_if_eq EventScript_15F384 + closemessage + special SecretBasePC_PackUp releaseall end EventScript_15F432: - special 14 + special SecretBasePC_Decoration end EventScript_15F436: - special 15 + special SecretBasePC_Registry end gUnknown_0815F43A:: @ 815F43A lockall message UnknownString_81A3A72 - playsfx 2 - doanimation 61 + playse 2 + dofieldeffect 61 waitstate - waittext + waitmessage waitbutton - playsfx 5 - jump EventScript_15F452 + playse 5 + goto EventScript_15F452 end EventScript_15F452: message UnknownString_81A3A87 - waittext + waitmessage multichoice 0, 0, 7, 0 switch RESULT case 0, EventScript_15F4A1 @@ -471,69 +471,69 @@ EventScript_15F452: gUnknown_0815F49A:: @ 815F49A lockall - jump EventScript_15F452 + goto EventScript_15F452 end EventScript_15F4A1: - special 12 + special sub_80BC56C compare RESULT, 1 - jumpeq EventScript_15F4E0 + goto_if_eq EventScript_15F4E0 compare RESULT, 2 - jumpeq EventScript_15F503 - special 303 + goto_if_eq EventScript_15F503 + special sub_80BC224 msgbox UnknownString_81A3958, 5 compare RESULT, 0 - jumpeq EventScript_15F452 + goto_if_eq EventScript_15F452 msgbox UnknownString_81A3A22, 3 - special 13 - special 26 + special sub_80BC5BC + special sub_80C683C releaseall end EventScript_15F4E0: msgbox UnknownString_81A3982, 5 compare RESULT, 0 - jumpeq EventScript_15F452 + goto_if_eq EventScript_15F452 msgbox UnknownString_81A3A3A, 3 - special 13 - special 26 + special sub_80BC5BC + special sub_80C683C releaseall end EventScript_15F503: msgbox UnknownString_81A39C0, 3 - special 26 - closebutton + special sub_80C683C + closemessage releaseall end EventScript_15F511: message UnknownString_81A3AA2 - waittext - jump EventScript_15F452 + waitmessage + goto EventScript_15F452 end EventScript_15F51D: - special 26 - closebutton + special sub_80C683C + closemessage releaseall end gUnknown_0815F523:: @ 815F523 - doanimation 52 + dofieldeffect 52 waitstate end gUnknown_0815F528:: @ 815F528 - special 307 + special GetShieldToyTVDecorationInfo compare RESULT, 0 - jumpeq EventScript_15F558 + goto_if_eq EventScript_15F558 compare RESULT, 1 - jumpeq EventScript_15F561 + goto_if_eq EventScript_15F561 compare RESULT, 2 - jumpeq EventScript_15F56A + goto_if_eq EventScript_15F56A compare RESULT, 3 - jumpeq EventScript_15F573 + goto_if_eq EventScript_15F573 end EventScript_15F558: @@ -890,7 +890,7 @@ Std_2: lock faceplayer message 0x0 - waittext + waitmessage waitbutton release return @@ -898,137 +898,132 @@ Std_2: Std_3: lockall message 0x0 - waittext + waitmessage waitbutton releaseall return Std_4: message 0x0 - waittext + waitmessage waitbutton return Std_5: message 0x0 - waittext + waitmessage yesnobox 20, 8 return @ 819F805 return -BattleTower_Lobby_EventScript_19F806:: @ 819F806 -FallarborTown_ContestLobby_EventScript_19F806:: @ 819F806 -LilycoveCity_ContestLobby_EventScript_19F806:: @ 819F806 -MossdeepCity_GameCorner_1F_EventScript_19F806:: @ 819F806 -OldaleTown_PokemonCenter_2F_EventScript_19F806:: @ 819F806 -SecretBase_RedCave1_EventScript_19F806:: @ 819F806 - special 93 +S_DoSaveDialog:: @ 819F806 + special ScrSpecial_DoSaveDialog waitstate return gUnknown_0819F80B:: @ 819F80B lock - special 56 - special 55 + special PlayTrainerEncounterMusic + special ScrSpecial_EndTrainerApproach waitstate - jump EventScript_19F8F2 + goto EventScript_19F8F2 gUnknown_0819F818:: @ 819F818 lock faceplayer - move LAST_TALKED, Movement_19F8F0 - waitmove 0 - specialval RESULT, 54 + applymovement LAST_TALKED, Movement_19F8F0 + waitmovement 0 + specialvar RESULT, ScrSpecial_HasTrainerBeenFought compare RESULT, 0 - jumpif 5, EventScript_19F83F - special 56 - special 314 - jump EventScript_19F8F2 + goto_if 5, EventScript_19F83F + special PlayTrainerEncounterMusic + special sub_8082524 + goto EventScript_19F8F2 EventScript_19F83F: - endtrainerbattle + ontrainerbattleend gUnknown_0819F840:: @ 819F840 lock faceplayer call EventScript_19F8E5 - specialval RESULT, 54 + specialvar RESULT, ScrSpecial_HasTrainerBeenFought compare RESULT, 0 - jumpif 5, EventScript_19F877 - special 61 + goto_if 5, EventScript_19F877 + special CheckForAlivePartyMons compare RESULT, 0 - jumpif 5, EventScript_19F870 - special 56 - special 314 - jump EventScript_19F8F2 + goto_if 5, EventScript_19F870 + special PlayTrainerEncounterMusic + special sub_8082524 + goto EventScript_19F8F2 EventScript_19F870: - special 53 - waittext + special ScrSpecial_ShowTrainerNonBattlingSpeech + waitmessage waitbutton release end EventScript_19F877: - endtrainerbattle + ontrainerbattleend gUnknown_0819F878:: @ 819F878 - move LAST_TALKED, Movement_19F8F0 - waitmove 0 - special 56 - reptrainerbattle - endtrainerbattle + applymovement LAST_TALKED, Movement_19F8F0 + waitmovement 0 + special PlayTrainerEncounterMusic + battlebegin + ontrainerbattleend gUnknown_0819F887:: @ 819F887 call EventScript_19F8E5 - specialval RESULT, 58 + specialvar RESULT, ScrSpecial_GetTrainerEyeRematchFlag compare RESULT, 0 - jumpeq EventScript_19F8AD - special 56 - special 314 - special 52 - waittext + goto_if_eq EventScript_19F8AD + special PlayTrainerEncounterMusic + special sub_8082524 + special ScrSpecial_ShowTrainerIntroSpeech + waitmessage waitbutton - special 59 + special ScrSpecial_StartTrainerEyeRematch waitstate releaseall end EventScript_19F8AD: - endtrainerbattle + ontrainerbattleend gUnknown_0819F8AE:: @ 819F8AE - specialval RESULT, 58 + specialvar RESULT, ScrSpecial_GetTrainerEyeRematchFlag compare RESULT, 0 - jumpeq EventScript_19F8DD - special 61 + goto_if_eq EventScript_19F8DD + special CheckForAlivePartyMons compare RESULT, 0 - jumpif 5, EventScript_19F8DE - special 56 - special 314 - special 52 - waittext + goto_if 5, EventScript_19F8DE + special PlayTrainerEncounterMusic + special sub_8082524 + special ScrSpecial_ShowTrainerIntroSpeech + waitmessage waitbutton - special 59 + special ScrSpecial_StartTrainerEyeRematch waitstate releaseall end EventScript_19F8DD: - endtrainerbattle + ontrainerbattleend EventScript_19F8DE: - special 53 - waittext + special ScrSpecial_ShowTrainerNonBattlingSpeech + waitmessage waitbutton release end EventScript_19F8E5: - move LAST_TALKED, Movement_19F8F0 - waitmove 0 + applymovement LAST_TALKED, Movement_19F8F0 + waitmovement 0 return Movement_19F8F0:: @@ -1036,117 +1031,117 @@ Movement_19F8F0:: step_end EventScript_19F8F2: - special 52 - waittext + special ScrSpecial_ShowTrainerIntroSpeech + waitmessage waitbutton - reptrainerbattle - specialval RESULT, 51 + battlebegin + specialvar RESULT, ScrSpecial_GetTrainerBattleMode compare RESULT, 0 - jumpeq EventScript_19F934 + goto_if_eq EventScript_19F934 compare RESULT, 2 - jumpeq EventScript_19F936 + goto_if_eq EventScript_19F936 compare RESULT, 1 - jumpeq EventScript_19F936 + goto_if_eq EventScript_19F936 compare RESULT, 6 - jumpeq EventScript_19F936 + goto_if_eq EventScript_19F936 compare RESULT, 8 - jumpeq EventScript_19F936 + goto_if_eq EventScript_19F936 EventScript_19F934: releaseall end EventScript_19F936: - endtrainerbattle2 + ontrainerbattleendgoto Std_6:: message 0x0 - waittext + waitmessage waitbutton release return Event_ResetBerryTrees: @ 19F940 - event_8a 2, 7, 5 - event_8a 1, 3, 5 - event_8a 11, 7, 5 - event_8a 13, 3, 5 - event_8a 4, 7, 5 - event_8a 76, 1, 5 - event_8a 8, 1, 5 - event_8a 10, 6, 5 - event_8a 25, 20, 5 - event_8a 26, 2, 5 - event_8a 66, 2, 5 - event_8a 67, 20, 5 - event_8a 69, 22, 5 - event_8a 70, 22, 5 - event_8a 71, 22, 5 - event_8a 55, 17, 5 - event_8a 56, 17, 5 - event_8a 5, 1, 5 - event_8a 6, 6, 5 - event_8a 7, 1, 5 - event_8a 16, 18, 5 - event_8a 17, 18, 5 - event_8a 18, 18, 5 - event_8a 29, 19, 5 - event_8a 28, 19, 5 - event_8a 27, 19, 5 - event_8a 24, 4, 5 - event_8a 23, 3, 5 - event_8a 22, 3, 5 - event_8a 21, 4, 5 - event_8a 19, 16, 5 - event_8a 20, 16, 5 - event_8a 80, 7, 5 - event_8a 81, 7, 5 - event_8a 77, 8, 5 - event_8a 78, 8, 5 - event_8a 68, 8, 5 - event_8a 31, 10, 5 - event_8a 33, 10, 5 - event_8a 34, 21, 5 - event_8a 35, 21, 5 - event_8a 36, 21, 5 - event_8a 83, 24, 5 - event_8a 84, 24, 5 - event_8a 85, 10, 5 - event_8a 86, 6, 5 - event_8a 37, 5, 5 - event_8a 38, 5, 5 - event_8a 39, 5, 5 - event_8a 40, 3, 5 - event_8a 41, 3, 5 - event_8a 42, 3, 5 - event_8a 46, 19, 5 - event_8a 45, 20, 5 - event_8a 44, 18, 5 - event_8a 43, 16, 5 - event_8a 47, 8, 5 - event_8a 48, 5, 5 - event_8a 49, 4, 5 - event_8a 50, 2, 5 - event_8a 52, 18, 5 - event_8a 53, 18, 5 - event_8a 62, 6, 5 - event_8a 64, 6, 5 - event_8a 58, 21, 5 - event_8a 59, 21, 5 - event_8a 60, 25, 5 - event_8a 61, 25, 5 - event_8a 79, 23, 5 - event_8a 14, 23, 5 - event_8a 15, 21, 5 - event_8a 30, 21, 5 - event_8a 65, 25, 5 - event_8a 72, 25, 5 - event_8a 73, 23, 5 - event_8a 74, 23, 5 - event_8a 87, 3, 5 - event_8a 88, 10, 5 - event_8a 89, 4, 5 - event_8a 82, 36, 5 + plantberrytree 2, 7, 5 + plantberrytree 1, 3, 5 + plantberrytree 11, 7, 5 + plantberrytree 13, 3, 5 + plantberrytree 4, 7, 5 + plantberrytree 76, 1, 5 + plantberrytree 8, 1, 5 + plantberrytree 10, 6, 5 + plantberrytree 25, 20, 5 + plantberrytree 26, 2, 5 + plantberrytree 66, 2, 5 + plantberrytree 67, 20, 5 + plantberrytree 69, 22, 5 + plantberrytree 70, 22, 5 + plantberrytree 71, 22, 5 + plantberrytree 55, 17, 5 + plantberrytree 56, 17, 5 + plantberrytree 5, 1, 5 + plantberrytree 6, 6, 5 + plantberrytree 7, 1, 5 + plantberrytree 16, 18, 5 + plantberrytree 17, 18, 5 + plantberrytree 18, 18, 5 + plantberrytree 29, 19, 5 + plantberrytree 28, 19, 5 + plantberrytree 27, 19, 5 + plantberrytree 24, 4, 5 + plantberrytree 23, 3, 5 + plantberrytree 22, 3, 5 + plantberrytree 21, 4, 5 + plantberrytree 19, 16, 5 + plantberrytree 20, 16, 5 + plantberrytree 80, 7, 5 + plantberrytree 81, 7, 5 + plantberrytree 77, 8, 5 + plantberrytree 78, 8, 5 + plantberrytree 68, 8, 5 + plantberrytree 31, 10, 5 + plantberrytree 33, 10, 5 + plantberrytree 34, 21, 5 + plantberrytree 35, 21, 5 + plantberrytree 36, 21, 5 + plantberrytree 83, 24, 5 + plantberrytree 84, 24, 5 + plantberrytree 85, 10, 5 + plantberrytree 86, 6, 5 + plantberrytree 37, 5, 5 + plantberrytree 38, 5, 5 + plantberrytree 39, 5, 5 + plantberrytree 40, 3, 5 + plantberrytree 41, 3, 5 + plantberrytree 42, 3, 5 + plantberrytree 46, 19, 5 + plantberrytree 45, 20, 5 + plantberrytree 44, 18, 5 + plantberrytree 43, 16, 5 + plantberrytree 47, 8, 5 + plantberrytree 48, 5, 5 + plantberrytree 49, 4, 5 + plantberrytree 50, 2, 5 + plantberrytree 52, 18, 5 + plantberrytree 53, 18, 5 + plantberrytree 62, 6, 5 + plantberrytree 64, 6, 5 + plantberrytree 58, 21, 5 + plantberrytree 59, 21, 5 + plantberrytree 60, 25, 5 + plantberrytree 61, 25, 5 + plantberrytree 79, 23, 5 + plantberrytree 14, 23, 5 + plantberrytree 15, 21, 5 + plantberrytree 30, 21, 5 + plantberrytree 65, 25, 5 + plantberrytree 72, 25, 5 + plantberrytree 73, 23, 5 + plantberrytree 74, 23, 5 + plantberrytree 87, 3, 5 + plantberrytree 88, 10, 5 + plantberrytree 89, 4, 5 + plantberrytree 82, 36, 5 return gUnknown_0819FA81:: @ 819FA81 @@ -1295,15 +1290,15 @@ EverGrandeCity_HallOfFame_EventScript_19FC13:: @ 819FC13 clearflag 751 clearflag 860 clearflag 861 - special 169 + special sub_810FAA0 checkflag 291 - callif 0, EverGrandeCity_HallOfFame_EventScript_19FC62 + call_if 0, EverGrandeCity_HallOfFame_EventScript_19FC62 checkflag 255 - callif 0, EverGrandeCity_HallOfFame_EventScript_19FC70 + call_if 0, EverGrandeCity_HallOfFame_EventScript_19FC70 checkflag 298 - callif 0, EverGrandeCity_HallOfFame_EventScript_19FC5A + call_if 0, EverGrandeCity_HallOfFame_EventScript_19FC5A checkflag 123 - callif 0, EverGrandeCity_HallOfFame_EventScript_19FC5E + call_if 0, EverGrandeCity_HallOfFame_EventScript_19FC5E return EverGrandeCity_HallOfFame_EventScript_19FC5A:: @ 819FC5A @@ -1324,28 +1319,28 @@ EverGrandeCity_HallOfFame_EventScript_19FC70:: @ 819FC70 setflag 2141 return -EventScript_LeagueWhiteOut:: @ 819FC74 +S_WhiteOut:: @ 819FC74 call EverGrandeCity_HallOfFame_EventScript_19FD09 call EventScript_19FC84 - jump gUnknown_0819FC9F + goto gUnknown_0819FC9F end EventScript_19FC84: checkflag 221 - jumpeq Route101_EventScript_1A14DC + goto_if_eq Route101_EventScript_1A14DC checkflag 1213 - jumpif 0, Route101_EventScript_1A14DC + goto_if 0, Route101_EventScript_1A14DC clearflag 929 setvar 0x4053, 2 return gUnknown_0819FC9F:: @ 819FC9F compare 0x4096, 1 - jumpeq EventScript_19FCC1 + goto_if_eq EventScript_19FCC1 compare 0x4096, 2 - jumpeq EventScript_19FCD7 + goto_if_eq EventScript_19FCD7 compare 0x4096, 3 - jumpeq EventScript_19FCF0 + goto_if_eq EventScript_19FCF0 end EventScript_19FCC1: @@ -1398,15 +1393,15 @@ RustboroCity_PokemonCenter_1F_EventScript_19FD1B:: @ 819FD1B SlateportCity_PokemonCenter_1F_EventScript_19FD1B:: @ 819FD1B VerdanturfTown_PokemonCenter_1F_EventScript_19FD1B:: @ 819FD1B checkflag 188 - jumpif 0, OldaleTown_PokemonCenter_1F_EventScript_1A14DC + goto_if 0, OldaleTown_PokemonCenter_1F_EventScript_1A14DC checkflag 1217 - jumpeq OldaleTown_PokemonCenter_1F_EventScript_1A14DC + goto_if_eq OldaleTown_PokemonCenter_1F_EventScript_1A14DC checkflag 742 - jumpif 0, OldaleTown_PokemonCenter_1F_EventScript_19FD49 + goto_if 0, OldaleTown_PokemonCenter_1F_EventScript_19FD49 checkflag 740 - jumpif 0, OldaleTown_PokemonCenter_1F_EventScript_19FD4F + goto_if 0, OldaleTown_PokemonCenter_1F_EventScript_19FD4F checkflag 741 - jumpif 0, OldaleTown_PokemonCenter_1F_EventScript_19FD55 + goto_if 0, OldaleTown_PokemonCenter_1F_EventScript_19FD55 return OldaleTown_PokemonCenter_1F_EventScript_19FD49:: @ 819FD49 @@ -1437,54 +1432,54 @@ SootopolisCity_PokemonCenter_1F_EventScript_19FD5B:: @ 819FD5B VerdanturfTown_PokemonCenter_1F_EventScript_19FD5B:: @ 819FD5B lock faceplayer - msgbox OldaleTown_PokemonCenter_1F_Text_1A0A7D, 5 + msgbox gText_NurseJoy_Welcome, MSGBOX_YESNO compare RESULT, 1 - jumpeq OldaleTown_PokemonCenter_1F_EventScript_19FD7C + goto_if_eq do_heal_party compare RESULT, 0 - jumpeq OldaleTown_PokemonCenter_1F_EventScript_19FDC7 + goto_if_eq dont_heal_party end -OldaleTown_PokemonCenter_1F_EventScript_19FD7C:: @ 819FD7C - inccounter GAME_STAT_USED_POKECENTER - message OldaleTown_PokemonCenter_1F_Text_1A1245 - waittext - move 0x800b, OldaleTown_PokemonCenter_1F_Movement_1A083F - waitmove 0 - doanimation 25 - checkanimation 25 - move 0x800b, OldaleTown_PokemonCenter_1F_Movement_1A0845 - waitmove 0 - special 0 +do_heal_party:: @ 819FD7C + incrementgamestat GAME_STAT_USED_POKECENTER + message gText_NurseJoy_OkayIllTakeYourPokemon + waitmessage + applymovement 0x800b, OldaleTown_PokemonCenter_1F_Movement_1A083F + waitmovement 0 + dofieldeffect 25 + waitfieldeffect 25 + applymovement 0x800b, OldaleTown_PokemonCenter_1F_Movement_1A0845 + waitmovement 0 + special ScrSpecial_HealPlayerParty checkflag 273 - jumpif 0, OldaleTown_PokemonCenter_1F_EventScript_19FDCE - jump OldaleTown_PokemonCenter_1F_EventScript_19FDB0 + goto_if 0, OldaleTown_PokemonCenter_1F_EventScript_19FDCE + goto OldaleTown_PokemonCenter_1F_EventScript_19FDB0 end OldaleTown_PokemonCenter_1F_EventScript_19FDB0:: @ 819FDB0 - message OldaleTown_PokemonCenter_1F_Text_1A0B14 - waittext - move 0x800b, OldaleTown_PokemonCenter_1F_Movement_19FDF4 - waitmove 0 - message OldaleTown_PokemonCenter_1F_Text_1A0AFA - waittext + message gText_NurseJoy_ThankYouForWaiting + waitmessage + applymovement 0x800b, OldaleTown_PokemonCenter_1F_Movement_19FDF4 + waitmovement 0 + message gText_NurseJoy_WeHopeToSeeYouAgain + waitmessage return -OldaleTown_PokemonCenter_1F_EventScript_19FDC7:: @ 819FDC7 - message OldaleTown_PokemonCenter_1F_Text_1A0AFA - waittext +dont_heal_party:: @ 819FDC7 + message gText_NurseJoy_WeHopeToSeeYouAgain + waitmessage return OldaleTown_PokemonCenter_1F_EventScript_19FDCE:: @ 819FDCE - specialval RESULT, 308 + specialvar RESULT, IsPokerusInParty compare RESULT, 1 - jumpeq OldaleTown_PokemonCenter_1F_EventScript_19FDEA + goto_if_eq OldaleTown_PokemonCenter_1F_EventScript_19FDEA compare RESULT, 0 - jumpeq OldaleTown_PokemonCenter_1F_EventScript_19FDB0 + goto_if_eq OldaleTown_PokemonCenter_1F_EventScript_19FDB0 end OldaleTown_PokemonCenter_1F_EventScript_19FDEA:: @ 819FDEA - message OldaleTown_PokemonCenter_1F_Text_1A1275 - waittext + message gText_NurseJoy_Pokerus + waitmessage setflag 273 return @@ -1500,13 +1495,13 @@ Std_ObtainItem: @ 819FDF7 return Std_ObtainItem_: @ 819FE07 - bufferitem 1, 0x8000 + getitemname 1, 0x8000 checkitemtype 0x8000 call GetItem_HandlePocket compare 0x8007, 0x1 - callif 1, Std_ObtainItem_Success + call_if 1, Std_ObtainItem_Success compare 0x8007, 0x0 - callif 1, Std_ObtainItem_Fail + call_if 1, Std_ObtainItem_Fail return GetItem_HandlePocket: @@ -1519,39 +1514,39 @@ GetItem_HandlePocket: end GetItem_HandlePocket_Items: - bufferstd 2, 0xE + getstdstring 2, 0xE compare 0x8007, 1 - callif 1, PlayGetItemFanfare + call_if 1, PlayGetItemFanfare return GetItem_HandlePocket_KeyItems: - bufferstd 2, 0xF + getstdstring 2, 0xF compare 0x8007, 1 - callif 1, PlayGetItemFanfare + call_if 1, PlayGetItemFanfare return GetItem_HandlePocket_PokeBalls: - bufferstd 2, 0x10 + getstdstring 2, 0x10 compare 0x8007, 1 - callif 1, PlayGetItemFanfare + call_if 1, PlayGetItemFanfare return GetItem_HandlePocket_TMsHMs: - bufferstd 2, 0x11 + getstdstring 2, 0x11 compare 0x8007, 1 - callif 1, PlayGetTMHMFanfare + call_if 1, PlayGetTMHMFanfare return GetItem_HandlePocket_Berries: - bufferstd 2, 0x12 + getstdstring 2, 0x12 compare 0x8007, 1 - callif 1, PlayGetItemFanfare + call_if 1, PlayGetItemFanfare return Std_ObtainItem_Success: @ 819FEB7 message Message_ObtainedItem waitfanfare - waittext + waitmessage msgbox Message_PutAwayItem setvar RESULT, 1 return @@ -1561,11 +1556,11 @@ Std_ObtainItem_Fail: @ 819FECC return PlayGetItemFanfare: - fanfare 0x172 + playfanfare 0x172 return PlayGetTMHMFanfare: - fanfare 0x174 + playfanfare 0x174 return Std_ObtainDecoration: @ 819FEDA @@ -1575,18 +1570,18 @@ Std_ObtainDecoration: @ 819FEDA return Std_ObtainDecoration_: @ 819FEE8 - bufferdecor 1, 0x8000 + getdecorname 1, 0x8000 compare 0x8007, 1 - callif 1, Std_ObtainDecoration_Success + call_if 1, Std_ObtainDecoration_Success compare 0x8007, 0 - callif 1, Std_ObtainDecoration_Fail + call_if 1, Std_ObtainDecoration_Fail return Std_ObtainDecoration_Success: @ 819FF03 - fanfare 0x172 + playfanfare 0x172 message Message_ObtainedDecoration waitfanfare - waittext + waitmessage msgbox Message_TransferredToPC setvar RESULT, 1 return @@ -1598,24 +1593,24 @@ Std_ObtainDecoration_Fail: @ 819FF1B Std_FindItem: @ 819FF21 lock faceplayer - checksound + waitse additem 0x8000, 0x8001 copyvar 0x8007, RESULT - bufferitem 1, 0x8000 + getitemname 1, 0x8000 checkitemtype 0x8000 call GetItem_HandlePocket compare 0x8007, 1 - callif 1, Std_FindItem_Success + call_if 1, Std_FindItem_Success compare 0x8007, 0 - callif 1, Std_FindItem_Fail + call_if 1, Std_FindItem_Fail release return Std_FindItem_Success: @ 819FF52 - disappear LAST_TALKED + removeobject LAST_TALKED message Message_FoundOneItem waitfanfare - waittext + waitmessage msgbox Message_PutAwayItem return @@ -1627,24 +1622,24 @@ Std_FindItem_Fail: @ 819FF65 HiddenItemScript:: @ 819FF7B lockall - checksound + waitse additem 0x8005, 1 copyvar 0x8007, RESULT - bufferitem 0x1, 0x8005 + getitemname 0x1, 0x8005 checkitemtype 0x8005 call GetItem_HandlePocket compare 0x8007, 1 - jumpeq HiddenItemScript_Success + goto_if_eq HiddenItemScript_Success compare 0x8007, 0 - jumpeq HiddenItemScript_Fail + goto_if_eq HiddenItemScript_Fail end HiddenItemScript_Success: message Message_FoundOneItem waitfanfare - waittext + waitmessage msgbox Message_PutAwayItem - special 0x96 + special SetFlagInVar releaseall end @@ -1660,18 +1655,18 @@ UnusedMixRecordsScript: @ 819FFD5 faceplayer msgbox UnusedMixRecordsPromptText, 5 compare RESULT, 1 - jumpeq UnusedMixRecordsScript_Yes + goto_if_eq UnusedMixRecordsScript_Yes compare RESULT, 0 - jumpeq UnusedMixRecordsScript_Done - jump UnusedMixRecordsScript_Done + goto_if_eq UnusedMixRecordsScript_Done + goto UnusedMixRecordsScript_Done UnusedMixRecordsScript_Yes: @ 819FFFA - special 0x1B + special sub_80B929C waitstate lock faceplayer UnusedMixRecordsScript_Done: @ 81A0000 message UnusedMixRecordsSeeYouAgainText - waittext + waitmessage waitbutton release end @@ -1679,18 +1674,18 @@ UnusedMixRecordsScript_Done: @ 81A0000 gUnknown_081A0009:: @ 81A0009 lockall setvar 0x8004, 0 - special 214 - playsfx 4 + special DoPCTurnOnEffect + playse 4 msgbox UnknownString_81A09EC, 4 - jump EventScript_1A0023 + goto EventScript_1A0023 end EventScript_1A0023: message gPCText_WhichPCShouldBeAccessed - waittext - special 262 + waitmessage + special ScrSpecial_CreatePCMenu waitstate - jump EventScript_1A0033 + goto EventScript_1A0033 end EventScript_1A0033: @@ -1703,23 +1698,23 @@ EventScript_1A0033: end EventScript_1A0070: - playsfx 2 + playse 2 msgbox UnknownString_81A0A54, 4 - special 250 + special PlayerPC waitstate - jump EventScript_1A0023 + goto EventScript_1A0023 end EventScript_1A0085: - playsfx 2 + playse 2 checkflag 2123 - callif 0, EventScript_1A00AC + call_if 0, EventScript_1A00AC checkflag 2123 - callif 1, EventScript_1A00B5 + call_if 1, EventScript_1A00B5 msgbox UnknownString_81A0A35, 4 - special 60 + special ShowPokemonStorageSystem waitstate - jump EventScript_1A0023 + goto EventScript_1A0023 end EventScript_1A00AC: @@ -1732,18 +1727,18 @@ EventScript_1A00B5: EventScript_1A00BE: setvar 0x8004, 0 - playsfx 3 - special 215 + playse 3 + special DoPCTurnOffEffect releaseall end EventScript_1A00CB: checkflag 2052 - jumpif 0, EventScript_1A00BE - playsfx 2 - special 263 + goto_if 0, EventScript_1A00BE + playse 2 + special AccessHallOfFamePC waitstate - jump EventScript_1A0033 + goto EventScript_1A0033 end FallarborTown_EventScript_1A00E1:: @ 81A00E1 @@ -1788,7 +1783,7 @@ Route123_BerryMastersHouse_EventScript_1A00F3:: @ 81A00F3 SlateportCity_OceanicMuseum_1F_EventScript_1A00F3:: @ 81A00F3 SlateportCity_PokemonFanClub_EventScript_1A00F3:: @ 81A00F3 fadescreen 1 - special 95 + special sub_80E60D8 fadescreen 0 return @@ -1802,9 +1797,9 @@ RustboroCity_Gym_EventScript_1A00FB:: @ 81A00FB DewfordTown_EventScript_1A0102:: @ 81A0102 DewfordTown_Hall_EventScript_1A0102:: @ 81A0102 - checkdailyflags + dodailyevents setvar 0x8004, 0 - special 126 + special sub_80FA5BC return DewfordTown_EventScript_1A010C:: @ 81A010C @@ -1815,17 +1810,17 @@ Route109_EventScript_1A010C:: @ 81A010C return UseSurfScript:: @ 81A0117 - checkattack MOVE_SURF + checkpokemove MOVE_SURF compare RESULT, 6 - jumpeq UseSurfScript_NoMon - bufferpartypoke 0, RESULT - setanimation 0, RESULT + goto_if_eq UseSurfScript_NoMon + getpartypokename 0, RESULT + setfieldeffect 0, RESULT lockall msgbox UseSurfPromptText, 5 compare RESULT, 0 - jumpeq UseSurfScript_No + goto_if_eq UseSurfScript_No msgbox UsedSurfText, 4 - doanimation 9 + dofieldeffect 9 UseSurfScript_No: @ 81A014C releaseall UseSurfScript_NoMon: @ 81A014D @@ -1840,11 +1835,11 @@ Route103_EventScript_1A014E:: @ 81A014E Route110_EventScript_1A014E:: @ 81A014E Route119_EventScript_1A014E:: @ 81A014E RustboroCity_EventScript_1A014E:: @ 81A014E - checkgender + checkplayergender compare RESULT, 0 - jumpeq RustboroCity_EventScript_1A0166 + goto_if_eq RustboroCity_EventScript_1A0166 compare RESULT, 1 - jumpeq RustboroCity_EventScript_1A016C + goto_if_eq RustboroCity_EventScript_1A016C end RustboroCity_EventScript_1A0166:: @ 81A0166 @@ -1858,11 +1853,11 @@ RustboroCity_EventScript_1A016C:: @ 81A016C LavaridgeTown_EventScript_1A0172:: @ 81A0172 Route110_EventScript_1A0172:: @ 81A0172 Route119_EventScript_1A0172:: @ 81A0172 - checkgender + checkplayergender compare RESULT, 0 - jumpeq LavaridgeTown_EventScript_1A018A + goto_if_eq LavaridgeTown_EventScript_1A018A compare RESULT, 1 - jumpeq LavaridgeTown_EventScript_1A0190 + goto_if_eq LavaridgeTown_EventScript_1A0190 end LavaridgeTown_EventScript_1A018A:: @ 81A018A @@ -1944,66 +1939,66 @@ SootopolisCity_Gym_1F_EventScript_1A01C0:: @ 81A01C0 end DewfordTown_Gym_EventScript_1A021E:: @ 81A021E - cleartrainerflag OPPONENT_JOSH - cleartrainerflag OPPONENT_TOMMY + settrainerflag OPPONENT_JOSH + settrainerflag OPPONENT_TOMMY return DewfordTown_Gym_EventScript_1A0225:: @ 81A0225 - cleartrainerflag OPPONENT_HIDEKI - cleartrainerflag OPPONENT_TESSA - cleartrainerflag OPPONENT_LAURA + settrainerflag OPPONENT_HIDEKI + settrainerflag OPPONENT_TESSA + settrainerflag OPPONENT_LAURA return DewfordTown_Gym_EventScript_1A022F:: @ 81A022F - cleartrainerflag OPPONENT_KIRK - cleartrainerflag OPPONENT_SHAWN - cleartrainerflag OPPONENT_BEN - cleartrainerflag OPPONENT_VIVIAN + settrainerflag OPPONENT_KIRK + settrainerflag OPPONENT_SHAWN + settrainerflag OPPONENT_BEN + settrainerflag OPPONENT_VIVIAN return DewfordTown_Gym_EventScript_1A023C:: @ 81A023C - cleartrainerflag OPPONENT_COLE - cleartrainerflag OPPONENT_AXLE - cleartrainerflag OPPONENT_ANDY - cleartrainerflag OPPONENT_ZANE - cleartrainerflag OPPONENT_SADIE + settrainerflag OPPONENT_COLE + settrainerflag OPPONENT_AXLE + settrainerflag OPPONENT_ANDY + settrainerflag OPPONENT_ZANE + settrainerflag OPPONENT_SADIE return DewfordTown_Gym_EventScript_1A024C:: @ 81A024C - cleartrainerflag OPPONENT_RANDALL - cleartrainerflag OPPONENT_PARKER - cleartrainerflag OPPONENT_GEORGE - cleartrainerflag OPPONENT_BERKE - cleartrainerflag OPPONENT_MARY - cleartrainerflag OPPONENT_LORI - cleartrainerflag OPPONENT_JODY + settrainerflag OPPONENT_RANDALL + settrainerflag OPPONENT_PARKER + settrainerflag OPPONENT_GEORGE + settrainerflag OPPONENT_BERKE + settrainerflag OPPONENT_MARY + settrainerflag OPPONENT_LORI + settrainerflag OPPONENT_JODY return DewfordTown_Gym_EventScript_1A0262:: @ 81A0262 - cleartrainerflag OPPONENT_JARED - cleartrainerflag OPPONENT_TERRELL - cleartrainerflag OPPONENT_KYLEE - cleartrainerflag OPPONENT_WILL + settrainerflag OPPONENT_JARED + settrainerflag OPPONENT_TERRELL + settrainerflag OPPONENT_KYLEE + settrainerflag OPPONENT_WILL return DewfordTown_Gym_EventScript_1A026F:: @ 81A026F - cleartrainerflag OPPONENT_PRESTON - cleartrainerflag OPPONENT_VIRGIL - cleartrainerflag OPPONENT_FRITZ - cleartrainerflag OPPONENT_HANNAH - cleartrainerflag OPPONENT_SAMANTHA - cleartrainerflag OPPONENT_MAURA + settrainerflag OPPONENT_PRESTON + settrainerflag OPPONENT_VIRGIL + settrainerflag OPPONENT_FRITZ + settrainerflag OPPONENT_HANNAH + settrainerflag OPPONENT_SAMANTHA + settrainerflag OPPONENT_MAURA return DewfordTown_Gym_EventScript_1A0282:: @ 81A0282 - cleartrainerflag OPPONENT_ANDREA - cleartrainerflag OPPONENT_CRISSY - cleartrainerflag OPPONENT_BRIANNA_2 - cleartrainerflag OPPONENT_CONNIE - cleartrainerflag OPPONENT_BRIDGET - cleartrainerflag OPPONENT_OLIVIA - cleartrainerflag OPPONENT_TIFFANY - cleartrainerflag OPPONENT_MARISSA + settrainerflag OPPONENT_ANDREA + settrainerflag OPPONENT_CRISSY + settrainerflag OPPONENT_BRIANNA_2 + settrainerflag OPPONENT_CONNIE + settrainerflag OPPONENT_BRIDGET + settrainerflag OPPONENT_OLIVIA + settrainerflag OPPONENT_TIFFANY + settrainerflag OPPONENT_MARISSA return DewfordTown_Gym_EventScript_1A029B:: @ 81A029B @@ -2100,7 +2095,7 @@ MossdeepCity_Gym_EventScript_1A02C5:: @ 81A02C5 PetalburgCity_Gym_EventScript_1A02C5:: @ 81A02C5 RustboroCity_Gym_EventScript_1A02C5:: @ 81A02C5 SootopolisCity_Gym_1F_EventScript_1A02C5:: @ 81A02C5 - fanfare 369 + playfanfare 369 waitfanfare return @@ -2109,9 +2104,9 @@ Route111_OldLadysRestStop_EventScript_1A02CA:: @ 81A02CA Route119_WeatherInstitute_1F_EventScript_1A02CA:: @ 81A02CA SSTidalRooms_EventScript_1A02CA:: @ 81A02CA fadescreen 1 - fanfare 368 + playfanfare 368 waitfanfare - special 0 + special ScrSpecial_HealPlayerParty fadescreen 0 return @@ -2119,7 +2114,7 @@ Event_WorldMap:: @ 81A02D6 lockall msgbox UnknownString_817303D, 4 fadescreen 1 - special 251 + special FieldShowRegionMap waitstate releaseall end @@ -2128,37 +2123,37 @@ DewfordTown_EventScript_1A02E7:: @ 81A02E7 Route104_EventScript_1A02E7:: @ 81A02E7 Route109_EventScript_1A02E7:: @ 81A02E7 setflag 0x4001 - playmusic 431, 0 + playbgm 431, 0 return DewfordTown_EventScript_1A02EF:: @ 81A02EF Route104_EventScript_1A02EF:: @ 81A02EF Route109_EventScript_1A02EF:: @ 81A02EF clearflag 0x4001 - fadedefault + fadedefaultbgm return LittlerootTown_ProfessorBirchsLab_EventScript_1A02F4:: @ 81A02F4 Route101_EventScript_1A02F4:: @ 81A02F4 Route103_EventScript_1A02F4:: @ 81A02F4 compare 0x4085, 0 - jumpeq Route101_EventScript_1A14DC + goto_if_eq Route101_EventScript_1A14DC compare 0x4049, 0 - callif 1, Route101_EventScript_1A0358 + call_if 1, Route101_EventScript_1A0358 compare 0x4049, 1 - callif 1, Route101_EventScript_1A0358 + call_if 1, Route101_EventScript_1A0358 compare 0x4049, 2 - callif 1, Route101_EventScript_1A0365 + call_if 1, Route101_EventScript_1A0365 compare 0x4049, 3 - callif 1, Route101_EventScript_1A0365 + call_if 1, Route101_EventScript_1A0365 compare 0x4049, 4 - callif 1, Route101_EventScript_1A0372 + call_if 1, Route101_EventScript_1A0372 compare 0x4049, 5 - callif 1, Route101_EventScript_1A0372 + call_if 1, Route101_EventScript_1A0372 compare 0x4049, 6 - callif 1, Route101_EventScript_1A0358 + call_if 1, Route101_EventScript_1A0358 compare 0x4049, 7 - callif 1, Route101_EventScript_1A0358 + call_if 1, Route101_EventScript_1A0358 return Route101_EventScript_1A0358:: @ 81A0358 @@ -2189,7 +2184,7 @@ Route103_EventScript_1A037F:: @ 81A037F faceplayer msgbox Route101_Text_1C4449, 5 compare RESULT, 0 - jumpeq Route101_EventScript_1A039B + goto_if_eq Route101_EventScript_1A039B call Route101_EventScript_1A03B0 release end @@ -2201,39 +2196,39 @@ Route101_EventScript_1A039B:: @ 81A039B Route101_EventScript_1A03A5:: @ 81A03A5 copyvar 0x8004, 0x8009 - special 213 - waittext + special ShowPokedexRatingMessage + waitmessage waitbutton return EverGrandeCity_ChampionsRoom_EventScript_1A03B0:: @ 81A03B0 Route101_EventScript_1A03B0:: @ 81A03B0 setvar 0x8004, 0 - specialval RESULT, 212 + specialvar RESULT, ScriptGetPokedexInfo copyvar 0x8008, 0x8005 copyvar 0x8009, 0x8006 copyvar 0x800a, RESULT - buffernum 0, 0x8008 - buffernum 1, 0x8009 + getnumberstring 0, 0x8008 + getnumberstring 1, 0x8009 msgbox Route101_Text_1C44DC, 4 call Route101_EventScript_1A03A5 compare 0x800a, 0 - jumpeq Route101_EventScript_1A14DC + goto_if_eq Route101_EventScript_1A14DC setvar 0x8004, 1 - specialval RESULT, 212 + specialvar RESULT, ScriptGetPokedexInfo copyvar 0x8008, 0x8005 copyvar 0x8009, 0x8006 - buffernum 0, 0x8008 - buffernum 1, 0x8009 + getnumberstring 0, 0x8008 + getnumberstring 1, 0x8009 msgbox Route101_Text_1C4B05, 4 return BattleTower_Outside_EventScript_1A040E:: @ 81A040E LilycoveCity_Harbor_EventScript_1A040E:: @ 81A040E SlateportCity_Harbor_EventScript_1A040E:: @ 81A040E - pause 60 - move 0x8004, SlateportCity_Harbor_Movement_1A041C - waitmove 0 + delay 60 + applymovement 0x8004, SlateportCity_Harbor_Movement_1A041C + waitmovement 0 return SlateportCity_Harbor_Movement_1A041C:: @ 81A041C @@ -2259,8 +2254,8 @@ PetalburgCity_Gym_EventScript_1A0424:: @ 81A0424 return RusturfTunnel_EventScript_1A0442:: @ 81A0442 - disappear 1 - disappear 10 + removeobject 1 + removeobject 10 clearflag 808 clearflag 984 setvar 0x409a, 6 @@ -2268,14 +2263,14 @@ RusturfTunnel_EventScript_1A0442:: @ 81A0442 return EventScript_1A0457: @ unreferenced? - pause 30 - move 255, SlateportCity_OceanicMuseum_2F_Movement_1A0841 - waitmove 0 - spritevisible 255, 0, 0 - pause 30 - move 255, Movement_1A047A - waitmove 0 - pause 30 + delay 30 + applymovement 255, SlateportCity_OceanicMuseum_2F_Movement_1A0841 + waitmovement 0 + showobject 255, 0, 0 + delay 30 + applymovement 255, Movement_1A047A + waitmovement 0 + delay 30 return Movement_1A047A: @@ -2285,18 +2280,18 @@ Movement_1A047A: BattleTower_Outside_EventScript_1A047C:: @ 81A047C SouthernIsland_Exterior_EventScript_1A047C:: @ 81A047C compare FACING, 1 - callif 1, BattleTower_Outside_EventScript_160B2F + call_if 1, BattleTower_Outside_EventScript_160B2F compare FACING, 3 - callif 1, BattleTower_Outside_EventScript_160B3A - pause 30 - spriteinvisible 255, 0, 0 + call_if 1, BattleTower_Outside_EventScript_160B3A + delay 30 + hideobject 255, 0, 0 call BattleTower_Outside_EventScript_1A040E return CaveOfOrigin_B4F_EventScript_1A04A0:: @ 81A04A0 lockall - checksound - pokecry SPECIES_GROUDON_OR_KYOGRE, 2 + waitse + playpokecry SPECIES_GROUDON_OR_KYOGRE, 2 waitpokecry setvar 0x4005, 1 releaseall @@ -2308,27 +2303,27 @@ CaveOfOrigin_B2F_EventScript_1A04AF:: @ 81A04AF CaveOfOrigin_B3F_EventScript_1A04AF:: @ 81A04AF lockall setvar 0x4001, 1 - jump CaveOfOrigin_1F_EventScript_1A04D3 + goto CaveOfOrigin_1F_EventScript_1A04D3 end CaveOfOrigin_B2F_EventScript_1A04BB:: @ 81A04BB CaveOfOrigin_B3F_EventScript_1A04BB:: @ 81A04BB lockall setvar 0x4002, 1 - jump CaveOfOrigin_B2F_EventScript_1A04D3 + goto CaveOfOrigin_B2F_EventScript_1A04D3 end @ 81A04C7 lockall setvar 0x4003, 1 - jump CaveOfOrigin_B2F_EventScript_1A04D3 + goto CaveOfOrigin_B2F_EventScript_1A04D3 end CaveOfOrigin_1F_EventScript_1A04D3:: @ 81A04D3 CaveOfOrigin_B2F_EventScript_1A04D3:: @ 81A04D3 setvar 0x8004, 1 setvar 0x8005, 1 - special 310 + special sub_810F758 waitstate releaseall end @@ -2350,9 +2345,9 @@ MagmaHideout_B1F_EventScript_1A04FD:: @ 81A04FD lock faceplayer setwildbattle SPECIES_ELECTRODE, 30, ITEM_NONE - checksound - pokecry SPECIES_ELECTRODE, 2 - pause 40 + waitse + playpokecry SPECIES_ELECTRODE, 2 + delay 40 waitpokecry setflag 977 setflag 2145 @@ -2366,9 +2361,9 @@ MagmaHideout_B1F_EventScript_1A051B:: @ 81A051B lock faceplayer setwildbattle SPECIES_ELECTRODE, 30, ITEM_NONE - checksound - pokecry SPECIES_ELECTRODE, 2 - pause 40 + waitse + playpokecry SPECIES_ELECTRODE, 2 + delay 40 waitpokecry setflag 978 setflag 2145 @@ -2381,56 +2376,56 @@ Route120_EventScript_1A0539:: @ 81A0539 lock faceplayer setvar 0x8004, 1 - jump Route120_EventScript_1A0594 + goto Route120_EventScript_1A0594 end Route120_EventScript_1A0546:: @ 81A0546 lock faceplayer setvar 0x8004, 2 - jump Route120_EventScript_1A0594 + goto Route120_EventScript_1A0594 end Route120_EventScript_1A0553:: @ 81A0553 lock faceplayer setvar 0x8004, 3 - jump Route120_EventScript_1A0594 + goto Route120_EventScript_1A0594 end Route120_EventScript_1A0560:: @ 81A0560 lock faceplayer setvar 0x8004, 4 - jump Route120_EventScript_1A0594 + goto Route120_EventScript_1A0594 end Route120_EventScript_1A056D:: @ 81A056D lock faceplayer setvar 0x8004, 5 - jump Route120_EventScript_1A0594 + goto Route120_EventScript_1A0594 end Route119_EventScript_1A057A:: @ 81A057A lock faceplayer setvar 0x8004, 6 - jump Route119_EventScript_1A0594 + goto Route119_EventScript_1A0594 end Route119_EventScript_1A0587:: @ 81A0587 lock faceplayer setvar 0x8004, 7 - jump Route119_EventScript_1A0594 + goto Route119_EventScript_1A0594 end Route119_EventScript_1A0594:: @ 81A0594 Route120_EventScript_1A0594:: @ 81A0594 checkitem ITEM_DEVON_SCOPE, 1 compare RESULT, 1 - jumpeq Route119_EventScript_1A05AE + goto_if_eq Route119_EventScript_1A05AE msgbox Route119_Text_171B93, 4 release end @@ -2438,36 +2433,36 @@ Route120_EventScript_1A0594:: @ 81A0594 Route119_EventScript_1A05AE:: @ 81A05AE msgbox Route119_Text_171BB6, 5 compare RESULT, 1 - jumpeq Route119_EventScript_1A05C3 + goto_if_eq Route119_EventScript_1A05C3 release end Route119_EventScript_1A05C3:: @ 81A05C3 msgbox Route119_Text_171BF6, 4 - closebutton - move LAST_TALKED, Route119_Movement_1A0839 - waitmove 0 - move LAST_TALKED, Route119_Movement_1A0662 - waitmove 0 - checksound - pokecry SPECIES_KECLEON, 2 - pause 40 + closemessage + applymovement LAST_TALKED, Route119_Movement_1A0839 + waitmovement 0 + applymovement LAST_TALKED, Route119_Movement_1A0662 + waitmovement 0 + waitse + playpokecry SPECIES_KECLEON, 2 + delay 40 waitpokecry setwildbattle SPECIES_KECLEON, 30, ITEM_NONE compare 0x8004, 1 - callif 1, Route119_EventScript_1A0646 + call_if 1, Route119_EventScript_1A0646 compare 0x8004, 2 - callif 1, Route119_EventScript_1A064A + call_if 1, Route119_EventScript_1A064A compare 0x8004, 3 - callif 1, Route119_EventScript_1A064E + call_if 1, Route119_EventScript_1A064E compare 0x8004, 4 - callif 1, Route119_EventScript_1A0652 + call_if 1, Route119_EventScript_1A0652 compare 0x8004, 5 - callif 1, Route119_EventScript_1A0656 + call_if 1, Route119_EventScript_1A0656 compare 0x8004, 6 - callif 1, Route119_EventScript_1A065A + call_if 1, Route119_EventScript_1A065A compare 0x8004, 7 - callif 1, Route119_EventScript_1A065E + call_if 1, Route119_EventScript_1A065E setflag 2145 dowildbattle clearflag 2145 @@ -2533,7 +2528,7 @@ MossdeepCity_StevensHouse_EventScript_1A0678:: @ 81A0678 RustboroCity_DevonCorp_2F_EventScript_1A0678:: @ 81A0678 SlateportCity_House1_EventScript_1A0678:: @ 81A0678 fadescreen 1 - special 158 + special sub_80BF9F8 waitstate return @@ -2541,10 +2536,10 @@ FallarborTown_House1_EventScript_1A067F:: @ 81A067F GraniteCave_StevensRoom_EventScript_1A067F:: @ 81A067F MtPyre_Summit_EventScript_1A067F:: @ 81A067F SlateportCity_OceanicMuseum_2F_EventScript_1A067F:: @ 81A067F - bufferitem 0, 0x8004 - fanfare 372 + getitemname 0, 0x8004 + playfanfare 372 message FallarborTown_House1_Text_1A1498 - waittext + waitmessage waitfanfare removeitem 0x8004, 1 return @@ -2553,9 +2548,9 @@ EverGrandeCity_DrakesRoom_EventScript_1A0693:: @ 81A0693 EverGrandeCity_GlaciasRoom_EventScript_1A0693:: @ 81A0693 EverGrandeCity_PhoebesRoom_EventScript_1A0693:: @ 81A0693 EverGrandeCity_SidneysRoom_EventScript_1A0693:: @ 81A0693 - move 255, EverGrandeCity_SidneysRoom_Movement_1A0853 - waitmove 0 - playsfx 8 + applymovement 255, EverGrandeCity_SidneysRoom_Movement_1A0853 + waitmovement 0 + playse 8 setmaptile 6, 1, 836, 0 setmaptile 6, 2, 837, 0 setmaptile 0, 2, 734, 1 @@ -2568,23 +2563,23 @@ EverGrandeCity_SidneysRoom_EventScript_1A0693:: @ 81A0693 setmaptile 10, 2, 733, 1 setmaptile 11, 2, 734, 1 setmaptile 12, 2, 733, 1 - special 142 + special DrawWholeMapView return EverGrandeCity_DrakesRoom_EventScript_1A0710:: @ 81A0710 EverGrandeCity_GlaciasRoom_EventScript_1A0710:: @ 81A0710 EverGrandeCity_PhoebesRoom_EventScript_1A0710:: @ 81A0710 EverGrandeCity_SidneysRoom_EventScript_1A0710:: @ 81A0710 - move 255, EverGrandeCity_SidneysRoom_Movement_1A0847 - waitmove 0 - playsfx 52 + applymovement 255, EverGrandeCity_SidneysRoom_Movement_1A0847 + waitmovement 0 + playse 52 setmaptile 5, 12, 518, 1 setmaptile 6, 12, 518, 1 setmaptile 7, 12, 518, 1 setmaptile 5, 13, 526, 1 setmaptile 6, 13, 526, 1 setmaptile 7, 13, 526, 1 - special 142 + special DrawWholeMapView return EverGrandeCity_DrakesRoom_EventScript_1A0757:: @ 81A0757 @@ -2985,17 +2980,17 @@ UnknownString_81A0A54: @ 81A0A54 UnknownString_81A0A66: @ 81A0A66 .string "Accessed LANETTE’s PC.$" -OldaleTown_PokemonCenter_1F_Text_1A0A7D:: @ 81A0A7D +gText_NurseJoy_Welcome:: @ 81A0A7D .string "Hello, and welcome to the POKéMON\n" .string "CENTER.\p" .string "We restore your tired POKéMON to\n" .string "full health.\p" .string "Would you like to rest your POKéMON?$" -OldaleTown_PokemonCenter_1F_Text_1A0AFA:: @ 81A0AFA +gText_NurseJoy_WeHopeToSeeYouAgain:: @ 81A0AFA .string "We hope to see you again!$" -OldaleTown_PokemonCenter_1F_Text_1A0B14:: @ 81A0B14 +gText_NurseJoy_ThankYouForWaiting:: @ 81A0B14 .string "Thank you for waiting.\p" .string "We’ve restored your POKéMON to\n" .string "full health.$" @@ -3209,11 +3204,11 @@ SlateportCity_Text_1A116E:: @ 81A116E .string "We’ll accept you as a member and sell\n" .string "you good stuff in secrecy.$" -OldaleTown_PokemonCenter_1F_Text_1A1245:: @ 81A1245 +gText_NurseJoy_OkayIllTakeYourPokemon:: @ 81A1245 .string "Okay, I’ll take your POKéMON for a\n" .string "few seconds.$" -OldaleTown_PokemonCenter_1F_Text_1A1275:: @ 81A1275 +gText_NurseJoy_Pokerus:: @ 81A1275 .string "Your POKéMON may be infected with\n" .string "POKéRUS.\p" .string "Little is known about the POKéRUS\n" @@ -3256,21 +3251,21 @@ Event_NoRegisteredItem:: @ 81A14AF gUnknown_081A14B8:: @ 81A14B8 lockall - special 199 + special ExecuteWhiteOut waitstate compare RESULT, 1 - jumpeq EventScript_1A14CA + goto_if_eq EventScript_1A14CA releaseall end EventScript_1A14CA:: message UnknownString_81A1141 - waittext + waitmessage waitbutton - special 332 + special sub_8081924 waitstate fadescreen 1 - special 200 + special sp0C8_whiteout_maybe waitstate end @@ -3600,47 +3595,47 @@ SecretBase_RedCave1_Text_1A2BA4:: @ 81A2BA4 .string "Are you speechless?$" gUnknown_081A2C51:: @ 81A2C51 - special 21 - special 7 + special sub_80BB70C + special sub_80BB63C compare RESULT, 1 - jumpeq EventScript_1A2E45 - checkattack MOVE_SECRET_POWER - setanimation 0, RESULT - bufferattack 1, MOVE_SECRET_POWER + goto_if_eq EventScript_1A2E45 + checkpokemove MOVE_SECRET_POWER + setfieldeffect 0, RESULT + getmovename 1, MOVE_SECRET_POWER compare 0x8007, 1 - jumpeq EventScript_1A2CB0 + goto_if_eq EventScript_1A2CB0 compare 0x8007, 2 - jumpeq EventScript_1A2CB0 + goto_if_eq EventScript_1A2CB0 compare 0x8007, 3 - jumpeq EventScript_1A2CB0 + goto_if_eq EventScript_1A2CB0 compare 0x8007, 4 - jumpeq EventScript_1A2CB0 + goto_if_eq EventScript_1A2CB0 compare 0x8007, 5 - jumpeq EventScript_1A2D08 + goto_if_eq EventScript_1A2D08 compare 0x8007, 6 - jumpeq EventScript_1A2D60 + goto_if_eq EventScript_1A2D60 end EventScript_1A2CB0: lockall compare RESULT, 6 - jumpeq EventScript_1A2CF1 - bufferpartypoke 0, RESULT + goto_if_eq EventScript_1A2CF1 + getpartypokename 0, RESULT msgbox UnknownString_8198F34, 5 compare RESULT, 0 - jumpeq EventScript_1A2F3A + goto_if_eq EventScript_1A2F3A msgbox UsedCutRockSmashText, 4 - closebutton - doanimation 11 + closemessage + dofieldeffect 11 waitstate - jump EventScript_1A2CFA + goto EventScript_1A2CFA end gUnknown_081A2CE6:: @ 81A2CE6 lockall - doanimation 11 + dofieldeffect 11 waitstate - jump EventScript_1A2CFA + goto EventScript_1A2CFA end EventScript_1A2CF1: @@ -3649,29 +3644,29 @@ EventScript_1A2CF1: EventScript_1A2CFA: msgbox UnknownString_8198F6E, 4 - jump EventScript_1A2DB8 + goto EventScript_1A2DB8 end EventScript_1A2D08: lockall compare RESULT, 6 - jumpeq EventScript_1A2D49 - bufferpartypoke 0, RESULT + goto_if_eq EventScript_1A2D49 + getpartypokename 0, RESULT msgbox UnknownString_81A197B, 5 compare RESULT, 0 - jumpeq EventScript_1A2F3A + goto_if_eq EventScript_1A2F3A msgbox UsedCutRockSmashText, 4 - closebutton - doanimation 26 + closemessage + dofieldeffect 26 waitstate - jump EventScript_1A2D52 + goto EventScript_1A2D52 end gUnknown_081A2D3E:: @ 81A2D3E lockall - doanimation 26 + dofieldeffect 26 waitstate - jump EventScript_1A2D52 + goto EventScript_1A2D52 end EventScript_1A2D49: @@ -3680,29 +3675,29 @@ EventScript_1A2D49: EventScript_1A2D52: msgbox UnknownString_81A19C4, 4 - jump EventScript_1A2DB8 + goto EventScript_1A2DB8 end EventScript_1A2D60: lockall compare RESULT, 6 - jumpeq EventScript_1A2DA1 - bufferpartypoke 0, RESULT + goto_if_eq EventScript_1A2DA1 + getpartypokename 0, RESULT msgbox UnknownString_81A1A4B, 5 compare RESULT, 0 - jumpeq EventScript_1A2F3A + goto_if_eq EventScript_1A2F3A msgbox UsedCutRockSmashText, 4 - closebutton - doanimation 27 + closemessage + dofieldeffect 27 waitstate - jump EventScript_1A2DAA + goto EventScript_1A2DAA end gUnknown_081A2D96:: @ 81A2D96 lockall - doanimation 27 + dofieldeffect 27 waitstate - jump EventScript_1A2DAA + goto EventScript_1A2DAA end EventScript_1A2DA1: @@ -3711,39 +3706,39 @@ EventScript_1A2DA1: EventScript_1A2DAA: msgbox UnknownString_81A1AA9, 4 - jump EventScript_1A2DB8 + goto EventScript_1A2DB8 end EventScript_1A2DB8: - closebutton - playsfx 9 + closemessage + playse 9 setvar 0x4097, 0 setflag 173 - special 6 - special 8 + special sub_80BB8CC + special sub_80BBAF0 setvar 0x8004, 0 setvar 0x8005, 0 - special 18 + special sub_80BBDD0 setvar 0x4089, 1 waitstate end SecretBase_RedCave1_EventScript_1A2DDE:: @ 81A2DDE - move 255, SecretBase_RedCave1_Movement_1A2E11 - waitmove 0 + applymovement 255, SecretBase_RedCave1_Movement_1A2E11 + waitmovement 0 setvar 0x4097, 1 msgbox SecretBase_RedCave1_Text_198F89, 5 compare RESULT, 1 - jumpeq SecretBase_RedCave1_EventScript_1A2E08 - closebutton - playsfx 9 - special 9 + goto_if_eq SecretBase_RedCave1_EventScript_1A2E08 + closemessage + playse 9 + special sub_80BC440 end SecretBase_RedCave1_EventScript_1A2E08:: @ 81A2E08 - closebutton + closemessage setflag 96 - special 24 + special sub_80BBC78 waitstate end @@ -3755,81 +3750,81 @@ SecretBase_RedCave1_Movement_1A2E11:: @ 81A2E11 gUnknown_081A2E14:: @ 81A2E14 lockall setvar 0x4097, 1 - playsfx 9 - special 11 + playse 9 + special sub_80BC114 compare RESULT, 0 - jumpeq EventScript_1A2E38 + goto_if_eq EventScript_1A2E38 clearflag 173 - special 8 + special sub_80BBAF0 setvar 0x4089, 0 waitstate end EventScript_1A2E38: setflag 173 - special 8 + special sub_80BBAF0 setvar 0x4089, 0 waitstate end EventScript_1A2E45: - checkattack MOVE_SECRET_POWER + checkpokemove MOVE_SECRET_POWER compare RESULT, 6 - jumpeq EventScript_1A2EF7 - setanimation 0, RESULT + goto_if_eq EventScript_1A2EF7 + setfieldeffect 0, RESULT setorcopyvar 0x8004, RESULT lockall - special 278 + special GetSecretBaseNearbyMapName msgbox UnknownString_81A3C71, 5 compare RESULT, 0 - jumpeq EventScript_1A2F3A + goto_if_eq EventScript_1A2F3A msgbox UnknownString_81A38FB, 5 compare RESULT, 0 - jumpeq EventScript_1A2F3A + goto_if_eq EventScript_1A2F3A fadescreen 1 - special 330 - closebutton + special sub_80BC50C + closemessage fadescreen 0 msgbox UnknownString_81A3CC9, 5 compare RESULT, 0 - jumpeq EventScript_1A2F3A - bufferpartypoke 0, 0x8004 - bufferattack 1, MOVE_SECRET_POWER + goto_if_eq EventScript_1A2F3A + getpartypokename 0, 0x8004 + getmovename 1, MOVE_SECRET_POWER msgbox UsedCutRockSmashText, 4 - closebutton - closebutton + closemessage + closemessage compare 0x8007, 1 - jumpeq gUnknown_081A2CE6 + goto_if_eq gUnknown_081A2CE6 compare 0x8007, 2 - jumpeq gUnknown_081A2CE6 + goto_if_eq gUnknown_081A2CE6 compare 0x8007, 3 - jumpeq gUnknown_081A2CE6 + goto_if_eq gUnknown_081A2CE6 compare 0x8007, 4 - jumpeq gUnknown_081A2CE6 + goto_if_eq gUnknown_081A2CE6 compare 0x8007, 5 - jumpeq gUnknown_081A2D3E + goto_if_eq gUnknown_081A2D3E compare 0x8007, 6 - jumpeq gUnknown_081A2D96 + goto_if_eq gUnknown_081A2D96 releaseall end EventScript_1A2EF7:: compare 0x8007, 1 - jumpeq EventScript_1A2CF1 + goto_if_eq EventScript_1A2CF1 compare 0x8007, 2 - jumpeq EventScript_1A2CF1 + goto_if_eq EventScript_1A2CF1 compare 0x8007, 3 - jumpeq EventScript_1A2CF1 + goto_if_eq EventScript_1A2CF1 compare 0x8007, 4 - jumpeq EventScript_1A2CF1 + goto_if_eq EventScript_1A2CF1 compare 0x8007, 5 - jumpeq EventScript_1A2D49 + goto_if_eq EventScript_1A2D49 compare 0x8007, 6 - jumpeq EventScript_1A2DA1 + goto_if_eq EventScript_1A2DA1 end EventScript_1A2F3A:: - closebutton + closemessage releaseall end @@ -3857,34 +3852,34 @@ LittlerootTown_MaysHouse_2F_EventScript_1A2F68:: @ 81A2F68 SecretBase_RedCave1_EventScript_1A2F68:: @ 81A2F68 setvar 0x8004, 0 setvar 0x8005, 0 - special 18 + special sub_80BBDD0 setvar 0x4089, 1 end gUnknown_081A2F7B:: @ 81A2F7B setvar 0x8005, 0 - jump EventScript_1A2F86 + goto EventScript_1A2F86 end EventScript_1A2F86: - special 19 + special sub_80FF474 end gUnknown_081A2F8A:: @ 81A2F8A setvar 0x8004, 0 - jump EventScript_1A2F95 + goto EventScript_1A2F95 end EventScript_1A2F95: - special 23 + special sub_8100A7C compare RESULT, 1 - jumpeq EventScript_1A2FBF + goto_if_eq EventScript_1A2FBF addvar 0x8004, 1 compare 0x8005, 0 - jumpeq EventScript_1A2F95 - disappear 0x8006 + goto_if_eq EventScript_1A2F95 + removeobject 0x8006 setflag 0x8005 - jump EventScript_1A2F95 + goto EventScript_1A2F95 end EventScript_1A2FBF: @@ -3914,47 +3909,47 @@ SecretBase_YellowCave1_EventScript_1A2FC0:: @ 81A2FC0 SecretBase_YellowCave2_EventScript_1A2FC0:: @ 81A2FC0 SecretBase_YellowCave3_EventScript_1A2FC0:: @ 81A2FC0 SecretBase_YellowCave4_EventScript_1A2FC0:: @ 81A2FC0 - special 17 + special sub_80BCE90 compare 0x8004, 0 - jumpeq SecretBase_RedCave1_EventScript_1A3032 + goto_if_eq SecretBase_RedCave1_EventScript_1A3032 compare 0x8004, 1 - jumpeq SecretBase_RedCave1_EventScript_1A30AE + goto_if_eq SecretBase_RedCave1_EventScript_1A30AE compare 0x8004, 2 - jumpeq SecretBase_RedCave1_EventScript_1A312A + goto_if_eq SecretBase_RedCave1_EventScript_1A312A compare 0x8004, 3 - jumpeq SecretBase_RedCave1_EventScript_1A31A6 + goto_if_eq SecretBase_RedCave1_EventScript_1A31A6 compare 0x8004, 4 - jumpeq SecretBase_RedCave1_EventScript_1A3222 + goto_if_eq SecretBase_RedCave1_EventScript_1A3222 compare 0x8004, 5 - jumpeq SecretBase_RedCave1_EventScript_1A329E + goto_if_eq SecretBase_RedCave1_EventScript_1A329E compare 0x8004, 6 - jumpeq SecretBase_RedCave1_EventScript_1A331A + goto_if_eq SecretBase_RedCave1_EventScript_1A331A compare 0x8004, 7 - jumpeq SecretBase_RedCave1_EventScript_1A3396 + goto_if_eq SecretBase_RedCave1_EventScript_1A3396 compare 0x8004, 8 - jumpeq SecretBase_RedCave1_EventScript_1A3412 + goto_if_eq SecretBase_RedCave1_EventScript_1A3412 compare 0x8004, 9 - jumpeq SecretBase_RedCave1_EventScript_1A348E + goto_if_eq SecretBase_RedCave1_EventScript_1A348E end SecretBase_RedCave1_EventScript_1A3032:: @ 81A3032 checkflag 2052 - jumpif 0, SecretBase_RedCave1_EventScript_1A3086 + goto_if 0, SecretBase_RedCave1_EventScript_1A3086 compare RESULT, 1 - jumpeq SecretBase_RedCave1_EventScript_1A30A5 + goto_if_eq SecretBase_RedCave1_EventScript_1A30A5 lock faceplayer msgbox SecretBase_RedCave1_Text_1A1AEA, 5 compare RESULT, 0 - jumpeq SecretBase_RedCave1_EventScript_1A308F + goto_if_eq SecretBase_RedCave1_EventScript_1A308F setvar RESULT, 1 - special 25 - call SecretBase_RedCave1_EventScript_19F806 + special sub_80BCE4C + call S_DoSaveDialog compare RESULT, 0 - jumpeq SecretBase_RedCave1_EventScript_1A308F - hidebox 0, 0, 15, 10 + goto_if_eq SecretBase_RedCave1_EventScript_1A308F + erasebox 0, 0, 15, 10 msgbox SecretBase_RedCave1_Text_1A1B83, 4 - jump SecretBase_RedCave1_EventScript_1A350A + goto SecretBase_RedCave1_EventScript_1A350A end SecretBase_RedCave1_EventScript_1A3086:: @ 81A3086 @@ -3963,8 +3958,8 @@ SecretBase_RedCave1_EventScript_1A3086:: @ 81A3086 SecretBase_RedCave1_EventScript_1A308F:: @ 81A308F setvar RESULT, 0 - special 25 - hidebox 0, 0, 15, 10 + special sub_80BCE4C + erasebox 0, 0, 15, 10 msgbox SecretBase_RedCave1_Text_1A1B97, 2 end @@ -3974,22 +3969,22 @@ SecretBase_RedCave1_EventScript_1A30A5:: @ 81A30A5 SecretBase_RedCave1_EventScript_1A30AE:: @ 81A30AE checkflag 2052 - jumpif 0, SecretBase_RedCave1_EventScript_1A3102 + goto_if 0, SecretBase_RedCave1_EventScript_1A3102 compare RESULT, 1 - jumpeq SecretBase_RedCave1_EventScript_1A3121 + goto_if_eq SecretBase_RedCave1_EventScript_1A3121 lock faceplayer msgbox SecretBase_RedCave1_Text_1A1E67, 5 compare RESULT, 0 - jumpeq SecretBase_RedCave1_EventScript_1A310B + goto_if_eq SecretBase_RedCave1_EventScript_1A310B setvar RESULT, 1 - special 25 - call SecretBase_RedCave1_EventScript_19F806 + special sub_80BCE4C + call S_DoSaveDialog compare RESULT, 0 - jumpeq SecretBase_RedCave1_EventScript_1A310B - hidebox 0, 0, 15, 10 + goto_if_eq SecretBase_RedCave1_EventScript_1A310B + erasebox 0, 0, 15, 10 msgbox SecretBase_RedCave1_Text_1A1F04, 4 - jump SecretBase_RedCave1_EventScript_1A350A + goto SecretBase_RedCave1_EventScript_1A350A end SecretBase_RedCave1_EventScript_1A3102:: @ 81A3102 @@ -3998,8 +3993,8 @@ SecretBase_RedCave1_EventScript_1A3102:: @ 81A3102 SecretBase_RedCave1_EventScript_1A310B:: @ 81A310B setvar RESULT, 0 - special 25 - hidebox 0, 0, 15, 10 + special sub_80BCE4C + erasebox 0, 0, 15, 10 msgbox SecretBase_RedCave1_Text_1A1F2E, 2 end @@ -4009,22 +4004,22 @@ SecretBase_RedCave1_EventScript_1A3121:: @ 81A3121 SecretBase_RedCave1_EventScript_1A312A:: @ 81A312A checkflag 2052 - jumpif 0, SecretBase_RedCave1_EventScript_1A317E + goto_if 0, SecretBase_RedCave1_EventScript_1A317E compare RESULT, 1 - jumpeq SecretBase_RedCave1_EventScript_1A319D + goto_if_eq SecretBase_RedCave1_EventScript_1A319D lock faceplayer msgbox SecretBase_RedCave1_Text_1A218F, 5 compare RESULT, 0 - jumpeq SecretBase_RedCave1_EventScript_1A3187 + goto_if_eq SecretBase_RedCave1_EventScript_1A3187 setvar RESULT, 1 - special 25 - call SecretBase_RedCave1_EventScript_19F806 + special sub_80BCE4C + call S_DoSaveDialog compare RESULT, 0 - jumpeq SecretBase_RedCave1_EventScript_1A3187 - hidebox 0, 0, 15, 10 + goto_if_eq SecretBase_RedCave1_EventScript_1A3187 + erasebox 0, 0, 15, 10 msgbox SecretBase_RedCave1_Text_1A2220, 4 - jump SecretBase_RedCave1_EventScript_1A350A + goto SecretBase_RedCave1_EventScript_1A350A end SecretBase_RedCave1_EventScript_1A317E:: @ 81A317E @@ -4033,8 +4028,8 @@ SecretBase_RedCave1_EventScript_1A317E:: @ 81A317E SecretBase_RedCave1_EventScript_1A3187:: @ 81A3187 setvar RESULT, 0 - special 25 - hidebox 0, 0, 15, 10 + special sub_80BCE4C + erasebox 0, 0, 15, 10 msgbox SecretBase_RedCave1_Text_1A2230, 2 end @@ -4044,22 +4039,22 @@ SecretBase_RedCave1_EventScript_1A319D:: @ 81A319D SecretBase_RedCave1_EventScript_1A31A6:: @ 81A31A6 checkflag 2052 - jumpif 0, SecretBase_RedCave1_EventScript_1A31FA + goto_if 0, SecretBase_RedCave1_EventScript_1A31FA compare RESULT, 1 - jumpeq SecretBase_RedCave1_EventScript_1A3219 + goto_if_eq SecretBase_RedCave1_EventScript_1A3219 lock faceplayer msgbox SecretBase_RedCave1_Text_1A24E1, 5 compare RESULT, 0 - jumpeq SecretBase_RedCave1_EventScript_1A3203 + goto_if_eq SecretBase_RedCave1_EventScript_1A3203 setvar RESULT, 1 - special 25 - call SecretBase_RedCave1_EventScript_19F806 + special sub_80BCE4C + call S_DoSaveDialog compare RESULT, 0 - jumpeq SecretBase_RedCave1_EventScript_1A3203 - hidebox 0, 0, 15, 10 + goto_if_eq SecretBase_RedCave1_EventScript_1A3203 + erasebox 0, 0, 15, 10 msgbox SecretBase_RedCave1_Text_1A256F, 4 - jump SecretBase_RedCave1_EventScript_1A350A + goto SecretBase_RedCave1_EventScript_1A350A end SecretBase_RedCave1_EventScript_1A31FA:: @ 81A31FA @@ -4068,8 +4063,8 @@ SecretBase_RedCave1_EventScript_1A31FA:: @ 81A31FA SecretBase_RedCave1_EventScript_1A3203:: @ 81A3203 setvar RESULT, 0 - special 25 - hidebox 0, 0, 15, 10 + special sub_80BCE4C + erasebox 0, 0, 15, 10 msgbox SecretBase_RedCave1_Text_1A258A, 2 end @@ -4079,22 +4074,22 @@ SecretBase_RedCave1_EventScript_1A3219:: @ 81A3219 SecretBase_RedCave1_EventScript_1A3222:: @ 81A3222 checkflag 2052 - jumpif 0, SecretBase_RedCave1_EventScript_1A3276 + goto_if 0, SecretBase_RedCave1_EventScript_1A3276 compare RESULT, 1 - jumpeq SecretBase_RedCave1_EventScript_1A3295 + goto_if_eq SecretBase_RedCave1_EventScript_1A3295 lock faceplayer msgbox SecretBase_RedCave1_Text_1A2830, 5 compare RESULT, 0 - jumpeq SecretBase_RedCave1_EventScript_1A327F + goto_if_eq SecretBase_RedCave1_EventScript_1A327F setvar RESULT, 1 - special 25 - call SecretBase_RedCave1_EventScript_19F806 + special sub_80BCE4C + call S_DoSaveDialog compare RESULT, 0 - jumpeq SecretBase_RedCave1_EventScript_1A327F - hidebox 0, 0, 15, 10 + goto_if_eq SecretBase_RedCave1_EventScript_1A327F + erasebox 0, 0, 15, 10 msgbox SecretBase_RedCave1_Text_1A28D7, 4 - jump SecretBase_RedCave1_EventScript_1A350A + goto SecretBase_RedCave1_EventScript_1A350A end SecretBase_RedCave1_EventScript_1A3276:: @ 81A3276 @@ -4103,8 +4098,8 @@ SecretBase_RedCave1_EventScript_1A3276:: @ 81A3276 SecretBase_RedCave1_EventScript_1A327F:: @ 81A327F setvar RESULT, 0 - special 25 - hidebox 0, 0, 15, 10 + special sub_80BCE4C + erasebox 0, 0, 15, 10 msgbox SecretBase_RedCave1_Text_1A28F4, 2 end @@ -4114,22 +4109,22 @@ SecretBase_RedCave1_EventScript_1A3295:: @ 81A3295 SecretBase_RedCave1_EventScript_1A329E:: @ 81A329E checkflag 2052 - jumpif 0, SecretBase_RedCave1_EventScript_1A32F2 + goto_if 0, SecretBase_RedCave1_EventScript_1A32F2 compare RESULT, 1 - jumpeq SecretBase_RedCave1_EventScript_1A3311 + goto_if_eq SecretBase_RedCave1_EventScript_1A3311 lock faceplayer msgbox SecretBase_RedCave1_Text_1A1CB2, 5 compare RESULT, 0 - jumpeq SecretBase_RedCave1_EventScript_1A32FB + goto_if_eq SecretBase_RedCave1_EventScript_1A32FB setvar RESULT, 1 - special 25 - call SecretBase_RedCave1_EventScript_19F806 + special sub_80BCE4C + call S_DoSaveDialog compare RESULT, 0 - jumpeq SecretBase_RedCave1_EventScript_1A32FB - hidebox 0, 0, 15, 10 + goto_if_eq SecretBase_RedCave1_EventScript_1A32FB + erasebox 0, 0, 15, 10 msgbox SecretBase_RedCave1_Text_1A1D48, 4 - jump SecretBase_RedCave1_EventScript_1A350A + goto SecretBase_RedCave1_EventScript_1A350A end SecretBase_RedCave1_EventScript_1A32F2:: @ 81A32F2 @@ -4138,8 +4133,8 @@ SecretBase_RedCave1_EventScript_1A32F2:: @ 81A32F2 SecretBase_RedCave1_EventScript_1A32FB:: @ 81A32FB setvar RESULT, 0 - special 25 - hidebox 0, 0, 15, 10 + special sub_80BCE4C + erasebox 0, 0, 15, 10 msgbox SecretBase_RedCave1_Text_1A1D59, 2 end @@ -4149,22 +4144,22 @@ SecretBase_RedCave1_EventScript_1A3311:: @ 81A3311 SecretBase_RedCave1_EventScript_1A331A:: @ 81A331A checkflag 2052 - jumpif 0, SecretBase_RedCave1_EventScript_1A336E + goto_if 0, SecretBase_RedCave1_EventScript_1A336E compare RESULT, 1 - jumpeq SecretBase_RedCave1_EventScript_1A338D + goto_if_eq SecretBase_RedCave1_EventScript_1A338D lock faceplayer msgbox SecretBase_RedCave1_Text_1A2026, 5 compare RESULT, 0 - jumpeq SecretBase_RedCave1_EventScript_1A3377 + goto_if_eq SecretBase_RedCave1_EventScript_1A3377 setvar RESULT, 1 - special 25 - call SecretBase_RedCave1_EventScript_19F806 + special sub_80BCE4C + call S_DoSaveDialog compare RESULT, 0 - jumpeq SecretBase_RedCave1_EventScript_1A3377 - hidebox 0, 0, 15, 10 + goto_if_eq SecretBase_RedCave1_EventScript_1A3377 + erasebox 0, 0, 15, 10 msgbox SecretBase_RedCave1_Text_1A2095, 4 - jump SecretBase_RedCave1_EventScript_1A350A + goto SecretBase_RedCave1_EventScript_1A350A end SecretBase_RedCave1_EventScript_1A336E:: @ 81A336E @@ -4173,8 +4168,8 @@ SecretBase_RedCave1_EventScript_1A336E:: @ 81A336E SecretBase_RedCave1_EventScript_1A3377:: @ 81A3377 setvar RESULT, 0 - special 25 - hidebox 0, 0, 15, 10 + special sub_80BCE4C + erasebox 0, 0, 15, 10 msgbox SecretBase_RedCave1_Text_1A20AE, 2 end @@ -4184,22 +4179,22 @@ SecretBase_RedCave1_EventScript_1A338D:: @ 81A338D SecretBase_RedCave1_EventScript_1A3396:: @ 81A3396 checkflag 2052 - jumpif 0, SecretBase_RedCave1_EventScript_1A33EA + goto_if 0, SecretBase_RedCave1_EventScript_1A33EA compare RESULT, 1 - jumpeq SecretBase_RedCave1_EventScript_1A3409 + goto_if_eq SecretBase_RedCave1_EventScript_1A3409 lock faceplayer msgbox SecretBase_RedCave1_Text_1A236A, 5 compare RESULT, 0 - jumpeq SecretBase_RedCave1_EventScript_1A33F3 + goto_if_eq SecretBase_RedCave1_EventScript_1A33F3 setvar RESULT, 1 - special 25 - call SecretBase_RedCave1_EventScript_19F806 + special sub_80BCE4C + call S_DoSaveDialog compare RESULT, 0 - jumpeq SecretBase_RedCave1_EventScript_1A33F3 - hidebox 0, 0, 15, 10 + goto_if_eq SecretBase_RedCave1_EventScript_1A33F3 + erasebox 0, 0, 15, 10 msgbox SecretBase_RedCave1_Text_1A2405, 4 - jump SecretBase_RedCave1_EventScript_1A350A + goto SecretBase_RedCave1_EventScript_1A350A end SecretBase_RedCave1_EventScript_1A33EA:: @ 81A33EA @@ -4208,8 +4203,8 @@ SecretBase_RedCave1_EventScript_1A33EA:: @ 81A33EA SecretBase_RedCave1_EventScript_1A33F3:: @ 81A33F3 setvar RESULT, 0 - special 25 - hidebox 0, 0, 15, 10 + special sub_80BCE4C + erasebox 0, 0, 15, 10 msgbox SecretBase_RedCave1_Text_1A2420, 2 end @@ -4219,22 +4214,22 @@ SecretBase_RedCave1_EventScript_1A3409:: @ 81A3409 SecretBase_RedCave1_EventScript_1A3412:: @ 81A3412 checkflag 2052 - jumpif 0, SecretBase_RedCave1_EventScript_1A3466 + goto_if 0, SecretBase_RedCave1_EventScript_1A3466 compare RESULT, 1 - jumpeq SecretBase_RedCave1_EventScript_1A3485 + goto_if_eq SecretBase_RedCave1_EventScript_1A3485 lock faceplayer msgbox SecretBase_RedCave1_Text_1A2663, 5 compare RESULT, 0 - jumpeq SecretBase_RedCave1_EventScript_1A346F + goto_if_eq SecretBase_RedCave1_EventScript_1A346F setvar RESULT, 1 - special 25 - call SecretBase_RedCave1_EventScript_19F806 + special sub_80BCE4C + call S_DoSaveDialog compare RESULT, 0 - jumpeq SecretBase_RedCave1_EventScript_1A346F - hidebox 0, 0, 15, 10 + goto_if_eq SecretBase_RedCave1_EventScript_1A346F + erasebox 0, 0, 15, 10 msgbox SecretBase_RedCave1_Text_1A2710, 4 - jump SecretBase_RedCave1_EventScript_1A350A + goto SecretBase_RedCave1_EventScript_1A350A end SecretBase_RedCave1_EventScript_1A3466:: @ 81A3466 @@ -4243,8 +4238,8 @@ SecretBase_RedCave1_EventScript_1A3466:: @ 81A3466 SecretBase_RedCave1_EventScript_1A346F:: @ 81A346F setvar RESULT, 0 - special 25 - hidebox 0, 0, 15, 10 + special sub_80BCE4C + erasebox 0, 0, 15, 10 msgbox SecretBase_RedCave1_Text_1A2736, 2 end @@ -4254,22 +4249,22 @@ SecretBase_RedCave1_EventScript_1A3485:: @ 81A3485 SecretBase_RedCave1_EventScript_1A348E:: @ 81A348E checkflag 2052 - jumpif 0, SecretBase_RedCave1_EventScript_1A34E2 + goto_if 0, SecretBase_RedCave1_EventScript_1A34E2 compare RESULT, 1 - jumpeq SecretBase_RedCave1_EventScript_1A3501 + goto_if_eq SecretBase_RedCave1_EventScript_1A3501 lock faceplayer msgbox SecretBase_RedCave1_Text_1A2A13, 5 compare RESULT, 0 - jumpeq SecretBase_RedCave1_EventScript_1A34EB + goto_if_eq SecretBase_RedCave1_EventScript_1A34EB setvar RESULT, 1 - special 25 - call SecretBase_RedCave1_EventScript_19F806 + special sub_80BCE4C + call S_DoSaveDialog compare RESULT, 0 - jumpeq SecretBase_RedCave1_EventScript_1A34EB - hidebox 0, 0, 15, 10 + goto_if_eq SecretBase_RedCave1_EventScript_1A34EB + erasebox 0, 0, 15, 10 msgbox SecretBase_RedCave1_Text_1A2AE2, 4 - jump SecretBase_RedCave1_EventScript_1A350A + goto SecretBase_RedCave1_EventScript_1A350A end SecretBase_RedCave1_EventScript_1A34E2:: @ 81A34E2 @@ -4278,8 +4273,8 @@ SecretBase_RedCave1_EventScript_1A34E2:: @ 81A34E2 SecretBase_RedCave1_EventScript_1A34EB:: @ 81A34EB setvar RESULT, 0 - special 25 - hidebox 0, 0, 15, 10 + special sub_80BCE4C + erasebox 0, 0, 15, 10 msgbox SecretBase_RedCave1_Text_1A2AFB, 2 end @@ -4288,12 +4283,12 @@ SecretBase_RedCave1_EventScript_1A3501:: @ 81A3501 end SecretBase_RedCave1_EventScript_1A350A:: @ 81A350A - special 16 + special sub_80BCE1C setvar 0x8004, 1 setvar 0x8005, 0 - special 236 + special sub_813556C waitstate - special 0 + special ScrSpecial_HealPlayerParty release end @@ -4378,22 +4373,22 @@ BattleTower_Lobby_EventScript_1ADE46:: @ 81ADE46 FallarborTown_ContestLobby_EventScript_1ADE46:: @ 81ADE46 SlateportCity_OceanicMuseum_1F_EventScript_1ADE46:: @ 81ADE46 SlateportCity_PokemonFanClub_EventScript_1ADE46:: @ 81ADE46 - special 68 - inccounter GAME_STAT_GOT_INTERVIEWED + special sub_80BDE48 + incrementgamestat GAME_STAT_GOT_INTERVIEWED release end SlateportCity_PokemonFanClub_EventScript_1ADE4D:: @ 81ADE4D setvar 0x8005, 1 - special 67 + special sub_80BF2C4 compare RESULT, 1 - jumpeq SlateportCity_PokemonFanClub_EventScript_1ADED6 + goto_if_eq SlateportCity_PokemonFanClub_EventScript_1ADED6 copyvar 0x8009, 0x8006 msgbox SlateportCity_PokemonFanClub_Text_1A8704, 5 compare RESULT, 1 - jumpeq SlateportCity_PokemonFanClub_EventScript_1ADE84 + goto_if_eq SlateportCity_PokemonFanClub_EventScript_1ADE84 compare RESULT, 0 - jumpeq SlateportCity_PokemonFanClub_EventScript_1ADEB9 + goto_if_eq SlateportCity_PokemonFanClub_EventScript_1ADEB9 end SlateportCity_PokemonFanClub_EventScript_1ADE84:: @ 81ADE84 @@ -4405,9 +4400,9 @@ SlateportCity_PokemonFanClub_EventScript_1ADE84:: @ 81ADE84 lock faceplayer compare RESULT, 1 - jumpeq SlateportCity_PokemonFanClub_EventScript_1ADEC3 + goto_if_eq SlateportCity_PokemonFanClub_EventScript_1ADEC3 compare RESULT, 0 - jumpeq SlateportCity_PokemonFanClub_EventScript_1ADEB9 + goto_if_eq SlateportCity_PokemonFanClub_EventScript_1ADEB9 end SlateportCity_PokemonFanClub_EventScript_1ADEB9:: @ 81ADEB9 @@ -4418,7 +4413,7 @@ SlateportCity_PokemonFanClub_EventScript_1ADEB9:: @ 81ADEB9 SlateportCity_PokemonFanClub_EventScript_1ADEC3:: @ 81ADEC3 msgbox SlateportCity_PokemonFanClub_Text_1A8818, 4 setvar 0x8005, 1 - jump SlateportCity_PokemonFanClub_EventScript_1ADE46 + goto SlateportCity_PokemonFanClub_EventScript_1ADE46 end SlateportCity_PokemonFanClub_EventScript_1ADED6:: @ 81ADED6 @@ -4430,26 +4425,26 @@ SlateportCity_OceanicMuseum_1F_EventScript_1ADEE0:: @ 81ADEE0 lock faceplayer setvar 0x8005, 2 - special 67 + special sub_80BF2C4 compare RESULT, 1 - jumpeq SlateportCity_OceanicMuseum_1F_EventScript_1ADF96 + goto_if_eq SlateportCity_OceanicMuseum_1F_EventScript_1ADF96 copyvar 0x8009, 0x8006 checkflag 105 - jumpeq SlateportCity_OceanicMuseum_1F_EventScript_1ADF25 + goto_if_eq SlateportCity_OceanicMuseum_1F_EventScript_1ADF25 setflag 105 msgbox SlateportCity_OceanicMuseum_1F_Text_1A927F, 5 compare RESULT, 1 - jumpeq SlateportCity_OceanicMuseum_1F_EventScript_1ADF44 + goto_if_eq SlateportCity_OceanicMuseum_1F_EventScript_1ADF44 compare RESULT, 0 - jumpeq SlateportCity_OceanicMuseum_1F_EventScript_1ADF79 + goto_if_eq SlateportCity_OceanicMuseum_1F_EventScript_1ADF79 end SlateportCity_OceanicMuseum_1F_EventScript_1ADF25:: @ 81ADF25 msgbox SlateportCity_OceanicMuseum_1F_Text_1A934C, 5 compare RESULT, 1 - jumpeq SlateportCity_OceanicMuseum_1F_EventScript_1ADF44 + goto_if_eq SlateportCity_OceanicMuseum_1F_EventScript_1ADF44 compare RESULT, 0 - jumpeq SlateportCity_OceanicMuseum_1F_EventScript_1ADF79 + goto_if_eq SlateportCity_OceanicMuseum_1F_EventScript_1ADF79 end SlateportCity_OceanicMuseum_1F_EventScript_1ADF44:: @ 81ADF44 @@ -4461,9 +4456,9 @@ SlateportCity_OceanicMuseum_1F_EventScript_1ADF44:: @ 81ADF44 lock faceplayer compare RESULT, 1 - jumpeq SlateportCity_OceanicMuseum_1F_EventScript_1ADF83 + goto_if_eq SlateportCity_OceanicMuseum_1F_EventScript_1ADF83 compare RESULT, 0 - jumpeq SlateportCity_OceanicMuseum_1F_EventScript_1ADF79 + goto_if_eq SlateportCity_OceanicMuseum_1F_EventScript_1ADF79 end SlateportCity_OceanicMuseum_1F_EventScript_1ADF79:: @ 81ADF79 @@ -4474,7 +4469,7 @@ SlateportCity_OceanicMuseum_1F_EventScript_1ADF79:: @ 81ADF79 SlateportCity_OceanicMuseum_1F_EventScript_1ADF83:: @ 81ADF83 msgbox SlateportCity_OceanicMuseum_1F_Text_1A949A, 4 setvar 0x8005, 2 - jump SlateportCity_OceanicMuseum_1F_EventScript_1ADE46 + goto SlateportCity_OceanicMuseum_1F_EventScript_1ADE46 end SlateportCity_OceanicMuseum_1F_EventScript_1ADF96:: @ 81ADF96 @@ -4485,19 +4480,19 @@ SlateportCity_OceanicMuseum_1F_EventScript_1ADF96:: @ 81ADF96 SlateportCity_PokemonFanClub_EventScript_1ADFA0:: @ 81ADFA0 lock faceplayer - specialval RESULT, 69 + specialvar RESULT, sub_80BF544 compare RESULT, 0 - jumpeq SlateportCity_PokemonFanClub_EventScript_1ADE4D + goto_if_eq SlateportCity_PokemonFanClub_EventScript_1ADE4D setvar 0x8005, 3 - special 67 + special sub_80BF2C4 compare RESULT, 1 - jumpeq SlateportCity_PokemonFanClub_EventScript_1AE0AC + goto_if_eq SlateportCity_PokemonFanClub_EventScript_1AE0AC copyvar 0x8009, 0x8006 msgbox SlateportCity_PokemonFanClub_Text_1A82F1, 5 compare RESULT, 1 - jumpeq SlateportCity_PokemonFanClub_EventScript_1ADFE9 + goto_if_eq SlateportCity_PokemonFanClub_EventScript_1ADFE9 compare RESULT, 0 - jumpeq SlateportCity_PokemonFanClub_EventScript_1AE0A2 + goto_if_eq SlateportCity_PokemonFanClub_EventScript_1AE0A2 end SlateportCity_PokemonFanClub_EventScript_1ADFE9:: @ 81ADFE9 @@ -4512,17 +4507,17 @@ SlateportCity_PokemonFanClub_EventScript_1ADFE9:: @ 81ADFE9 SlateportCity_PokemonFanClub_EventScript_1AE020:: @ 81AE020 msgbox SlateportCity_PokemonFanClub_Text_1A8414, 4 - jump SlateportCity_PokemonFanClub_EventScript_1AE04A + goto SlateportCity_PokemonFanClub_EventScript_1AE04A end SlateportCity_PokemonFanClub_EventScript_1AE02E:: @ 81AE02E msgbox SlateportCity_PokemonFanClub_Text_1A8470, 4 - jump SlateportCity_PokemonFanClub_EventScript_1AE04A + goto SlateportCity_PokemonFanClub_EventScript_1AE04A end SlateportCity_PokemonFanClub_EventScript_1AE03C:: @ 81AE03C msgbox SlateportCity_PokemonFanClub_Text_1A84D5, 4 - jump SlateportCity_PokemonFanClub_EventScript_1AE04A + goto SlateportCity_PokemonFanClub_EventScript_1AE04A end SlateportCity_PokemonFanClub_EventScript_1AE04A:: @ 81AE04A @@ -4533,18 +4528,18 @@ SlateportCity_PokemonFanClub_EventScript_1AE04A:: @ 81AE04A lock faceplayer compare RESULT, 0 - jumpeq SlateportCity_PokemonFanClub_EventScript_1AE0A2 + goto_if_eq SlateportCity_PokemonFanClub_EventScript_1AE0A2 msgbox SlateportCity_PokemonFanClub_Text_1A852D, 4 setvar 0x8006, 1 call SlateportCity_PokemonFanClub_EventScript_1A00F3 lock faceplayer compare RESULT, 0 - jumpeq SlateportCity_PokemonFanClub_EventScript_1AE0A2 + goto_if_eq SlateportCity_PokemonFanClub_EventScript_1AE0A2 msgbox SlateportCity_PokemonFanClub_Text_1A85A6, 4 copyvar 0x8007, 0x800a setvar 0x8005, 3 - jump SlateportCity_PokemonFanClub_EventScript_1ADE46 + goto SlateportCity_PokemonFanClub_EventScript_1ADE46 end SlateportCity_PokemonFanClub_EventScript_1AE0A2:: @ 81AE0A2 @@ -4564,17 +4559,17 @@ VerdanturfTown_ContestLobby_EventScript_1AE0B6:: @ 81AE0B6 lock faceplayer checkflag 2 - jumpeq FallarborTown_ContestLobby_EventScript_1AE17E + goto_if_eq FallarborTown_ContestLobby_EventScript_1AE17E setvar 0x8005, 6 - special 67 + special sub_80BF2C4 compare RESULT, 1 - jumpeq FallarborTown_ContestLobby_EventScript_1AE17E + goto_if_eq FallarborTown_ContestLobby_EventScript_1AE17E copyvar 0x8009, 0x8006 msgbox FallarborTown_ContestLobby_Text_1A6F7C, 5 compare RESULT, 1 - jumpeq FallarborTown_ContestLobby_EventScript_1AE0F8 + goto_if_eq FallarborTown_ContestLobby_EventScript_1AE0F8 compare RESULT, 0 - jumpeq FallarborTown_ContestLobby_EventScript_1AE12D + goto_if_eq FallarborTown_ContestLobby_EventScript_1AE12D end FallarborTown_ContestLobby_EventScript_1AE0F8:: @ 81AE0F8 @@ -4586,9 +4581,9 @@ FallarborTown_ContestLobby_EventScript_1AE0F8:: @ 81AE0F8 lock faceplayer compare RESULT, 1 - jumpeq FallarborTown_ContestLobby_EventScript_1AE137 + goto_if_eq FallarborTown_ContestLobby_EventScript_1AE137 compare RESULT, 0 - jumpeq FallarborTown_ContestLobby_EventScript_1AE12D + goto_if_eq FallarborTown_ContestLobby_EventScript_1AE12D end FallarborTown_ContestLobby_EventScript_1AE12D:: @ 81AE12D @@ -4598,7 +4593,7 @@ FallarborTown_ContestLobby_EventScript_1AE12D:: @ 81AE12D FallarborTown_ContestLobby_EventScript_1AE137:: @ 81AE137 setvar 0x8004, 24 - special 70 + special SetContestCategoryStringVarForInterview msgbox FallarborTown_ContestLobby_Text_1A70A5, 4 setvar 0x8004, 11 copyvar 0x8005, 0x8009 @@ -4607,11 +4602,11 @@ FallarborTown_ContestLobby_EventScript_1AE137:: @ 81AE137 lock faceplayer compare RESULT, 0 - jumpeq FallarborTown_ContestLobby_EventScript_1AE12D + goto_if_eq FallarborTown_ContestLobby_EventScript_1AE12D msgbox FallarborTown_ContestLobby_Text_1A7153, 4 setflag 2 setvar 0x8005, 6 - jump FallarborTown_ContestLobby_EventScript_1ADE46 + goto FallarborTown_ContestLobby_EventScript_1ADE46 end FallarborTown_ContestLobby_EventScript_1AE17E:: @ 81AE17E @@ -4624,11 +4619,11 @@ LilycoveCity_ContestLobby_EventScript_1AE188:: @ 81AE188 SlateportCity_ContestLobby_EventScript_1AE188:: @ 81AE188 VerdanturfTown_ContestLobby_EventScript_1AE188:: @ 81AE188 compare 0x4086, 2 - jumpif 5, FallarborTown_ContestLobby_EventScript_1AE1FE + goto_if 5, FallarborTown_ContestLobby_EventScript_1AE1FE setvar 0x8005, 6 - special 67 + special sub_80BF2C4 compare RESULT, 1 - jumpeq FallarborTown_ContestLobby_EventScript_1AE1FE + goto_if_eq FallarborTown_ContestLobby_EventScript_1AE1FE switch 0x4088 case 0, FallarborTown_ContestLobby_EventScript_1AE1FE case 2, FallarborTown_ContestLobby_EventScript_1AE1EE @@ -4661,28 +4656,28 @@ BattleTower_Lobby_EventScript_1AE1FF:: @ 81AE1FF lock faceplayer checkflag 2 - jumpeq BattleTower_Lobby_EventScript_1AE2E3 + goto_if_eq BattleTower_Lobby_EventScript_1AE2E3 setvar 0x8005, 7 - special 67 + special sub_80BF2C4 compare RESULT, 1 - jumpeq BattleTower_Lobby_EventScript_1AE2E3 + goto_if_eq BattleTower_Lobby_EventScript_1AE2E3 copyvar 0x8009, 0x8006 msgbox BattleTower_Lobby_Text_1A776D, 5 compare RESULT, 1 - jumpeq BattleTower_Lobby_EventScript_1AE241 + goto_if_eq BattleTower_Lobby_EventScript_1AE241 compare RESULT, 0 - jumpeq BattleTower_Lobby_EventScript_1AE297 + goto_if_eq BattleTower_Lobby_EventScript_1AE297 end BattleTower_Lobby_EventScript_1AE241:: @ 81AE241 message BattleTower_Lobby_Text_1A7823 - waittext + waitmessage multichoice 19, 8, 45, 1 copyvar 0x8008, RESULT compare RESULT, 0 - callif 1, BattleTower_Lobby_EventScript_1AE2A1 + call_if 1, BattleTower_Lobby_EventScript_1AE2A1 compare RESULT, 1 - callif 1, BattleTower_Lobby_EventScript_1AE2AA + call_if 1, BattleTower_Lobby_EventScript_1AE2AA msgbox BattleTower_Lobby_Text_1A79EB, 4 setvar 0x8004, 12 copyvar 0x8005, 0x8009 @@ -4690,9 +4685,9 @@ BattleTower_Lobby_EventScript_1AE241:: @ 81AE241 lock faceplayer compare RESULT, 1 - jumpeq BattleTower_Lobby_EventScript_1AE2B3 + goto_if_eq BattleTower_Lobby_EventScript_1AE2B3 compare RESULT, 0 - jumpeq BattleTower_Lobby_EventScript_1AE2D9 + goto_if_eq BattleTower_Lobby_EventScript_1AE2D9 end BattleTower_Lobby_EventScript_1AE297:: @ 81AE297 @@ -4710,12 +4705,12 @@ BattleTower_Lobby_EventScript_1AE2AA:: @ 81AE2AA BattleTower_Lobby_EventScript_1AE2B3:: @ 81AE2B3 compare RESULT, 0 - jumpeq BattleTower_Lobby_EventScript_1AE2D9 + goto_if_eq BattleTower_Lobby_EventScript_1AE2D9 msgbox BattleTower_Lobby_Text_1A7A6E, 4 setflag 2 copyvar 0x8004, 0x8008 setvar 0x8005, 7 - jump BattleTower_Lobby_EventScript_1ADE46 + goto BattleTower_Lobby_EventScript_1ADE46 end BattleTower_Lobby_EventScript_1AE2D9:: @ 81AE2D9 @@ -4730,11 +4725,11 @@ BattleTower_Lobby_EventScript_1AE2E3:: @ 81AE2E3 BattleTower_Lobby_EventScript_1AE2ED:: @ 81AE2ED compare 0x40bc, 0 - jumpeq BattleTower_Lobby_EventScript_1AE30F + goto_if_eq BattleTower_Lobby_EventScript_1AE30F setvar 0x8005, 7 - special 67 + special sub_80BF2C4 compare RESULT, 1 - jumpeq BattleTower_Lobby_EventScript_1AE30F + goto_if_eq BattleTower_Lobby_EventScript_1AE30F clearflag 918 return @@ -4744,16 +4739,7 @@ BattleTower_Lobby_EventScript_1AE30F:: @ 81AE30F .include "data/scripts/gabby_and_ty.inc" - .include "data/scripts/bard.inc" - .include "data/scripts/hipster.inc" - .include "data/text/trader.inc" - .include "data/scripts/trader.inc" - .include "data/text/storyteller.inc" - .include "data/scripts/storyteller.inc" - .include "data/text/giddy.inc" - .include "data/scripts/giddy.inc" - .include "data/text/bard.inc" - .include "data/text/hipster.inc" + .include "data/scripts/mauville_man.inc" .include "data/field_move_scripts.inc" .include "data/item_ball_scripts.inc" @@ -4777,13 +4763,13 @@ BattleTower_Lobby_EventScript_1AE30F:: @ 81AE30F .include "data/text/magma_summit.inc" gUnknown_081B694A:: @ 81B694A - lighten 1 - darken 1 + animdarklevel 1 + setdarklevel 1 end .include "data/scripts/players_house.inc" -Event_RunningShoesManual:: @ 81B6E5A +S_RunningShoesManual:: @ 81B6E5A msgbox UnknownString_81728E3, 3 end @@ -4792,7 +4778,7 @@ Event_RunningShoesManual:: @ 81B6E5A .include "data/text/trainers.inc" -Event_RepelWoreOff:: @ 81C33E6 +S_RepelWoreOff:: @ 81C33E6 msgbox Text_RepelWoreOff, 3 end @@ -4805,29 +4791,29 @@ Text_RepelWoreOff: @ 81C33EF MauvilleCity_GameCorner_EventScript_1C407E:: @ 81C407E checkitem ITEM_COIN_CASE, 1 compare RESULT, 0 - jumpeq MauvilleCity_GameCorner_EventScript_1572B5 + goto_if_eq MauvilleCity_GameCorner_EventScript_1572B5 setvar 0x8004, 0 - event_96 2 + getpricereduction 2 compare RESULT, 0 - jumpeq MauvilleCity_GameCorner_EventScript_1C40DA + goto_if_eq MauvilleCity_GameCorner_EventScript_1C40DA addvar 0x8004, 128 - jump MauvilleCity_GameCorner_EventScript_1C40DA + goto MauvilleCity_GameCorner_EventScript_1C40DA end MauvilleCity_GameCorner_EventScript_1C40AC:: @ 81C40AC checkitem ITEM_COIN_CASE, 1 compare RESULT, 0 - jumpeq MauvilleCity_GameCorner_EventScript_1572B5 + goto_if_eq MauvilleCity_GameCorner_EventScript_1572B5 setvar 0x8004, 1 - event_96 2 + getpricereduction 2 compare RESULT, 0 - jumpeq MauvilleCity_GameCorner_EventScript_1C40DA + goto_if_eq MauvilleCity_GameCorner_EventScript_1C40DA addvar 0x8004, 128 - jump MauvilleCity_GameCorner_EventScript_1C40DA + goto MauvilleCity_GameCorner_EventScript_1C40DA end MauvilleCity_GameCorner_EventScript_1C40DA:: @ 81C40DA - special 162 + special PlayRoulette waitstate end @@ -4872,7 +4858,7 @@ GraniteCave_B1F_MapScript2_1C6BB5:: @ 81C6BB5 MtPyre_2F_MapScript2_1C6BB5:: @ 81C6BB5 SkyPillar_2F_MapScript2_1C6BB5:: @ 81C6BB5 SkyPillar_4F_MapScript2_1C6BB5:: @ 81C6BB5 - map_script_2 0x4022, 0, GraniteCave_B1F_EventScript_1C6BC5 + map_script_2 0x4022, 0, S_FallDownHole .2byte 0 GraniteCave_B1F_MapScript1_1C6BBF:: @ 81C6BBF @@ -4882,25 +4868,25 @@ SkyPillar_4F_MapScript1_1C6BBF:: @ 81C6BBF copyvar 0x4022, 0x1 end -GraniteCave_B1F_EventScript_1C6BC5:: @ 81C6BC5 +S_FallDownHole:: @ 81C6BC5 lockall - pause 20 - move 255, GraniteCave_B1F_Movement_1C6BF7 - waitmove 0 - playsfx 43 - pause 60 + delay 20 + applymovement 255, GraniteCave_B1F_Movement_1C6BF7 + waitmovement 0 + playse 43 + delay 60 warphole UNDEFINED waitstate end gUnknown_081C6BDE:: @ 81C6BDE lockall - pause 20 - move 255, GraniteCave_B1F_Movement_1C6BF7 - waitmove 0 - playsfx 43 - pause 60 - special 319 + delay 20 + applymovement 255, GraniteCave_B1F_Movement_1C6BF7 + waitmovement 0 + playse 43 + delay 60 + special sp13F_fall_to_last_warp waitstate end @@ -4931,9 +4917,9 @@ gUnknown_081C6C02:: @ 81C6C02 @ 81C6C1D lockall - braillemsg Underwater_SealedChamber_Braille_1C533D + braillemessage Underwater_SealedChamber_Braille_1C533D waitbutton - hidebox 0, 0, 29, 19 + erasebox 0, 0, 29, 19 releaseall end diff --git a/data/evolution_graphics.s b/data/evolution_graphics.s deleted file mode 100644 index e362b4dba..000000000 --- a/data/evolution_graphics.s +++ /dev/null @@ -1,70 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - - .align 2 -gEvoSparklePalette: @ 8416E44 - .incbin "graphics/misc/evo_sparkle.gbapal" - - .align 2 -gEvoSparkleTiles: @ 8416E64 - .incbin "graphics/misc/evo_sparkle.4bpp.lz" - -gUnknown_08416E84:: @ 8416E84 - obj_tiles gEvoSparkleTiles, 0x20, 1001 - .space 8 - -gUnknown_08416E94:: @ 8416E94 - obj_pal gEvoSparklePalette, 1001 - .space 8 - - .align 2 -gOamData_8416EA4:: @ 8416EA4 - .2byte 0x00A0 - .2byte 0x0000 - .2byte 0x0400 - - .align 2 -gSpriteAnim_8416EAC:: @ 8416EAC - obj_image_anim_frame 0, 8 - obj_image_anim_end - - .align 2 -gSpriteAnimTable_8416EB4:: @ 8416EB4 - .4byte gSpriteAnim_8416EAC - - .align 2 -gSpriteTemplate_8416EB8:: @ 8416EB8 - spr_template 1001, 1001, gOamData_8416EA4, gSpriteAnimTable_8416EB4, NULL, gDummySpriteAffineAnimTable, nullsub_84 - - .align 1 -gUnknown_08416ED0:: @ 8416ED0 - .2byte 0x3C0 - .2byte 0x380 - .2byte 0x340 - .2byte 0x300 - .2byte 0x2C0 - .2byte 0x280 - .2byte 0x240 - .2byte 0x200 - .2byte 0x1C0 - .2byte 0x180 - .2byte 0x140 - .2byte 0x100 - .2byte 0xFFFC - .2byte 0x10 - .2byte 0xFFFD - .2byte 0x30 - .2byte 0xFFFE - .2byte 0x50 - .2byte 0xFFFF - .2byte 0x70 - .2byte 0x1 - .2byte 0x70 - .2byte 0x2 - .2byte 0x50 - .2byte 0x3 - .2byte 0x30 - .2byte 0x4 - .2byte 0x10 diff --git a/data/evolution_scene.s b/data/evolution_scene.s deleted file mode 100644 index 24744a196..000000000 --- a/data/evolution_scene.s +++ /dev/null @@ -1,14 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - -gUnknown_083F868C:: @ 83F868C - .string "ヌケニン$" - - .string "{COLOR DARK_GREY}{HIGHLIGHT WHITE2}{SHADOW LIGHT_GREY}$" - .string "▶\n $" - .string " \n▶$" - .string " \n $" - - .space 9 diff --git a/data/field_effect_helpers.s b/data/field_effect_helpers.s deleted file mode 100644 index d22bd8dde..000000000 --- a/data/field_effect_helpers.s +++ /dev/null @@ -1,37 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - -@ XXX: Unused? Probably aligned because it's at the beginning of an object file. - .align 2 - .string "タマゴ$" - - .align 1 -gUnknown_08401E2C:: @ 8401E2C - .2byte 0xC, 0x1C, 0x2C - -gUnknown_08401E32:: @ 8401E32 - .byte 0, 1, 2, 3 - - .align 1 -gUnknown_08401E36:: @ 8401E36 - .2byte 4, 4, 4, 16 - - .align 2 -gUnknown_08401E40:: @ 8401E40 - .4byte sub_81275A0 - .4byte sub_81275C4 - - .align 2 -gUnknown_08401E48:: @ 8401E48 - .4byte sub_8127DA0 - .4byte sub_8127DD0 - .4byte sub_8127E30 - -gUnknown_08401E54:: @ 8401E54 - .byte 0, 0, 1, 2, 3 - - .align 1 -gUnknown_08401E5A:: @ 8401E5A - .2byte 3, 7 diff --git a/data/field_ground_effect.s b/data/field_ground_effect.s deleted file mode 100644 index d3dbceedb..000000000 --- a/data/field_ground_effect.s +++ /dev/null @@ -1,72 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - - .align 2 -gUnknown_08376040:: @ 8376040 - .4byte MetatileBehavior_IsJumpSouth - .4byte MetatileBehavior_IsJumpNorth - .4byte MetatileBehavior_IsJumpWest - .4byte MetatileBehavior_IsJumpEast - -gUnknown_08376050:: @ 8376050 - .byte 0x73, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x00, 0x00, 0x73 - -@ Each byte corresponds to a sprite priority for a field object. -@ This is directly the inverse of gFieldObjectPriorities_08376070. -gFieldObjectPriorities_08376060:: @ 8376060 - .byte 2, 2, 2, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 0, 0, 2 - -@ Each byte corresponds to a sprite priority for a field object. -@ This is the inverse of gFieldObjectPriorities_08376060. -@ 1 = Above player sprite -@ 2 = Below player sprite -gFieldObjectPriorities_08376070:: @ 8376070 - .byte 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 0, 0, 1 - - .align 2 -gUnknown_08376080:: @ 8376080 - .4byte nullsub_50 - .4byte DoTracksGroundEffect_Footprints - .4byte DoTracksGroundEffect_BikeTireTracks - -@ First byte is a Field Effect script id. (gFieldEffectScriptPointers) -@ Last three bytes are unknown. -gSandFootprints_FieldEffectData:: @ 837608C - .byte 0xD, 0x0, 0x18, 0x0 - -@ Specifies which bike track shape to show next. -@ For example, when the bike turns from up to right, it will show -@ a track that curves to the right. -@ Each 4-byte row corresponds to the initial direction of the bike, and -@ each byte in that row is for the next direction of the bike in the order -@ of down, up, left, right. -gBikeTireTracks_Transitions:: @ 8376090 - .byte 1, 2, 7, 8 - .byte 1, 2, 6, 5 - .byte 5, 8, 3, 4 - .byte 6, 7, 3, 4 - - .align 2 -gUnknown_083760A0:: @ 83760A0 - .4byte GroundEffect_SpawnOnTallGrass - .4byte sub_8063E94 - .4byte sub_8063EE0 - .4byte sub_8063F2C - .4byte GroundEffect_WaterReflection - .4byte GroundEffect_IceReflection - .4byte GroundEffect_FlowingWater - .4byte sub_8063FA0 - .4byte sub_8063FCC - .4byte GroundEffect_Ripple - .4byte GroundEffect_StepOnPuddle - .4byte GroundEffect_SandPile - .4byte GroundEffect_JumpOnTallGrass - .4byte GroundEffect_JumpOnLongGrass - .4byte GroundEffect_JumpOnShallowWater - .4byte GroundEffect_JumpOnWater - .4byte GroundEffect_JumpLandingDust - .4byte GroundEffect_ShortGrass - .4byte GroundEffect_HotSprings - .4byte GroundEffect_Seaweed diff --git a/data/field_move_scripts.inc b/data/field_move_scripts.inc index 413ab351a..c36f95460 100644 --- a/data/field_move_scripts.inc +++ b/data/field_move_scripts.inc @@ -1,34 +1,34 @@ -CuttableTreeScript:: @ 81B0DCC +S_CuttableTree:: @ 81B0DCC lockall checkflag 2055 - jumpif 0, CannotUseCut - checkattack MOVE_CUT + goto_if 0, CannotUseCut + checkpokemove MOVE_CUT compare RESULT, 6 - jumpeq CannotUseCut - setanimation 0, RESULT - bufferpartypoke 0, RESULT - bufferattack 1, MOVE_CUT + goto_if_eq CannotUseCut + setfieldeffect 0, RESULT + getpartypokename 0, RESULT + getmovename 1, MOVE_CUT msgbox UseCutPromptText, 5 compare RESULT, 0 - jumpeq Cut_ChoseNo + goto_if_eq Cut_ChoseNo msgbox UsedCutRockSmashText, 4 - closebutton - doanimation 2 + closemessage + dofieldeffect 2 waitstate - jump DoTreeCutMovement + goto DoTreeCutMovement end -UseCutScript:: @ 81B0E16 +S_UseCut:: @ 81B0E16 lockall - doanimation 2 + dofieldeffect 2 waitstate - jump DoTreeCutMovement + goto DoTreeCutMovement end DoTreeCutMovement: @ 81B0E21 - move LAST_TALKED, TreeCutMovement @ tree cut animation - waitmove 0 - disappear LAST_TALKED @ tree disappears + applymovement LAST_TALKED, TreeCutMovement @ tree cut animation + waitmovement 0 + removeobject LAST_TALKED @ tree disappears releaseall end @@ -42,7 +42,7 @@ CannotUseCut: @ 81B0E32 end Cut_ChoseNo: @ 81B0E3C - closebutton + closemessage releaseall end @@ -56,43 +56,43 @@ UsedCutRockSmashText: @ 81B0E82 CannotUseCutText: @ 81B0E8E .string "This tree looks like it can be CUT down.$" -BreakableRockScript:: @ 81B0EB7 +S_BreakableRock:: @ 81B0EB7 lockall checkflag 2057 - jumpif 0, CannotUseRockSmash - checkattack MOVE_ROCK_SMASH + goto_if 0, CannotUseRockSmash + checkpokemove MOVE_ROCK_SMASH compare RESULT, 6 - jumpeq CannotUseRockSmash - setanimation 0, RESULT - bufferpartypoke 0, RESULT - bufferattack 1, MOVE_ROCK_SMASH + goto_if_eq CannotUseRockSmash + setfieldeffect 0, RESULT + getpartypokename 0, RESULT + getmovename 1, MOVE_ROCK_SMASH msgbox UseRockSmashPromptText, 5 compare RESULT, 0 - jumpeq RockSmash_ChoseNo + goto_if_eq RockSmash_ChoseNo msgbox UsedCutRockSmashText, 4 - closebutton - doanimation 37 + closemessage + dofieldeffect 37 waitstate - jump DoRockSmashMovement + goto DoRockSmashMovement end -UseRockSmashScript:: @ 81B0F01 +S_UseRockSmash:: @ 81B0F01 lockall - doanimation 37 + dofieldeffect 37 waitstate - jump DoRockSmashMovement + goto DoRockSmashMovement end DoRockSmashMovement: @ 81B0F0C - move LAST_TALKED, RockSmashMovement - waitmove 0 - disappear LAST_TALKED - specialval RESULT, 298 + applymovement LAST_TALKED, RockSmashMovement + waitmovement 0 + removeobject LAST_TALKED + specialvar RESULT, sub_810F5BC compare RESULT, 1 - jumpeq DoRockSmashMovement_Done - special 171 + goto_if_eq DoRockSmashMovement_Done + special ScrSpecial_RockSmashWildEncounter compare RESULT, 0 - jumpeq DoRockSmashMovement_Done + goto_if_eq DoRockSmashMovement_Done waitstate releaseall end @@ -111,7 +111,7 @@ CannotUseRockSmash: @ 81B0F3E end RockSmash_ChoseNo: @ 81B0F48 - closebutton + closemessage releaseall end @@ -123,30 +123,30 @@ CannotUseRockSmashText: @ 81B0F90 .string "It’s a rugged rock, but a POKéMON\n" .string "may be able to smash it.$" -PushableBoulderScript:: @ 81B0FCB +S_PushableBoulder:: @ 81B0FCB lockall checkflag 2058 - jumpif 0, CannotUseStrength + goto_if 0, CannotUseStrength checkflag 2089 - jumpeq AlreadyUsedStrength - checkattack 70 + goto_if_eq AlreadyUsedStrength + checkpokemove 70 compare RESULT, 6 - jumpeq CannotUseStrength - setanimation 0, RESULT + goto_if_eq CannotUseStrength + setfieldeffect 0, RESULT msgbox UseStrengthPromptText, 5 compare RESULT, 0 - jumpeq Strength_ChoseNo - closebutton - doanimation 40 + goto_if_eq Strength_ChoseNo + closemessage + dofieldeffect 40 waitstate - jump UsedStrength + goto UsedStrength end -UseStrengthScript:: @ 81B100E +S_UseStrength:: @ 81B100E lockall - doanimation 40 + dofieldeffect 40 waitstate - jump UsedStrength + goto UsedStrength end UsedStrength: @ 81B1019 @@ -166,7 +166,7 @@ AlreadyUsedStrength: @ 81B1030 end Strength_ChoseNo: @ 81B103A - closebutton + closemessage releaseall end @@ -188,21 +188,21 @@ AlreadyUsedStrengthText: @ 81B1127 .string "STRENGTH made it possible to move\n" .string "boulders around.$" -UseWaterfallScript:: @ 81B115A +S_UseWaterfall:: @ 81B115A lockall - checkattack MOVE_WATERFALL + checkpokemove MOVE_WATERFALL compare RESULT, 6 - jumpeq Waterfall_NoMonKnows - bufferpartypoke 0, RESULT - setanimation 0, RESULT + goto_if_eq Waterfall_NoMonKnows + getpartypokename 0, RESULT + setfieldeffect 0, RESULT msgbox UseWaterfallPromptText, 5 compare RESULT, 0 - jumpeq Waterfall_Done + goto_if_eq Waterfall_Done msgbox UsedWaterfallText, 4 - doanimation 43 - jump Waterfall_Done + dofieldeffect 43 + goto Waterfall_Done -CannotUseWaterfallScript:: @ 81B1194 +S_CannotUseWaterfall:: @ 81B1194 lockall Waterfall_NoMonKnows: @ 81B1195 msgbox CannotUseWaterfallText, 4 @@ -223,18 +223,18 @@ UsedWaterfallText: @ 81B120D UseDiveScript:: @ 81B1220 lockall - checkattack MOVE_DIVE + checkpokemove MOVE_DIVE compare RESULT, 6 - jumpeq CannotUseDive - bufferpartypoke 0, RESULT - setanimation 0, RESULT - setanimation 1, 1 + goto_if_eq CannotUseDive + getpartypokename 0, RESULT + setfieldeffect 0, RESULT + setfieldeffect 1, 1 msgbox UseDivePromptText, 5 compare RESULT, 0 - jumpeq Dive_Done + goto_if_eq Dive_Done msgbox UsedDiveText, 4 - doanimation 44 - jump Dive_Done + dofieldeffect 44 + goto Dive_Done lockall CannotUseDive: @ 81B125F @@ -244,25 +244,25 @@ Dive_Done: @ 81B1267 releaseall end -UnderwaterUseDiveScript:: @ 81B1269 +S_UseDiveUnderwater:: @ 81B1269 lockall - checkattack MOVE_DIVE + checkpokemove MOVE_DIVE compare RESULT, 6 - jumpeq UnderwaterCannotUseDive - bufferpartypoke 0, RESULT - setanimation 0, RESULT - setanimation 1, 1 + goto_if_eq UnderwaterCannotUseDive + getpartypokename 0, RESULT + setfieldeffect 0, RESULT + setfieldeffect 1, 1 msgbox UnderwaterUseDivePromptText, 5 compare RESULT, 0 - jumpeq UnderwaterDive_Done + goto_if_eq UnderwaterDive_Done msgbox UsedDiveText, 4 - doanimation 44 - jump UnderwaterDive_Done + dofieldeffect 44 + goto UnderwaterDive_Done UnderwaterCannotUseDive: @ 81B12A7 lockall msgbox UnderwaterCannotUseDiveText, 4 - jump UnderwaterDive_Done + goto UnderwaterDive_Done @ not used SurfacingBlocked: @ 81B12B5 diff --git a/data/graphics/berries/graphics.inc b/data/graphics/berries/graphics.inc index 19207ee32..e8edf9a3b 100644 --- a/data/graphics/berries/graphics.inc +++ b/data/graphics/berries/graphics.inc @@ -1,343 +1,343 @@ .align 2 gBerryPic_Cheri:: @ 8E78D00 - .incbin "graphics/berries/cheri/pic.4bpp.lz" + .incbin "graphics/berries/cheri.4bpp.lz" .align 2 gBerryPic_Oran:: @ 8E78E54 - .incbin "graphics/berries/oran/pic.4bpp.lz" + .incbin "graphics/berries/oran.4bpp.lz" .align 2 gBerryPic_Pecha:: @ 8E78FC8 - .incbin "graphics/berries/pecha/pic.4bpp.lz" + .incbin "graphics/berries/pecha.4bpp.lz" .align 2 gBerryPic_Rawst:: @ 8E7913C - .incbin "graphics/berries/rawst/pic.4bpp.lz" + .incbin "graphics/berries/rawst.4bpp.lz" .align 2 gBerryPic_Aspear:: @ 8E792D4 - .incbin "graphics/berries/aspear/pic.4bpp.lz" + .incbin "graphics/berries/aspear.4bpp.lz" .align 2 gBerryPic_Leppa:: @ 8E7947C - .incbin "graphics/berries/leppa/pic.4bpp.lz" + .incbin "graphics/berries/leppa.4bpp.lz" .align 2 gBerryPic_Chesto:: @ 8E795EC - .incbin "graphics/berries/chesto/pic.4bpp.lz" + .incbin "graphics/berries/chesto.4bpp.lz" .align 2 gBerryPic_Persim:: @ 8E797D0 - .incbin "graphics/berries/persim/pic.4bpp.lz" + .incbin "graphics/berries/persim.4bpp.lz" .align 2 gBerryPic_Lum:: @ 8E79920 - .incbin "graphics/berries/lum/pic.4bpp.lz" + .incbin "graphics/berries/lum.4bpp.lz" .align 2 gBerryPic_Sitrus:: @ 8E79A3C - .incbin "graphics/berries/sitrus/pic.4bpp.lz" + .incbin "graphics/berries/sitrus.4bpp.lz" .align 2 gBerryPic_Figy:: @ 8E79BE0 - .incbin "graphics/berries/figy/pic.4bpp.lz" + .incbin "graphics/berries/figy.4bpp.lz" .align 2 gBerryPic_Wiki:: @ 8E79D8C - .incbin "graphics/berries/wiki/pic.4bpp.lz" + .incbin "graphics/berries/wiki.4bpp.lz" .align 2 gBerryPic_Mago:: @ 8E79F80 - .incbin "graphics/berries/mago/pic.4bpp.lz" + .incbin "graphics/berries/mago.4bpp.lz" .align 2 gBerryPic_Aguav:: @ 8E7A134 - .incbin "graphics/berries/aguav/pic.4bpp.lz" + .incbin "graphics/berries/aguav.4bpp.lz" .align 2 gBerryPic_Iapapa:: @ 8E7A2A8 - .incbin "graphics/berries/iapapa/pic.4bpp.lz" + .incbin "graphics/berries/iapapa.4bpp.lz" .align 2 gBerryPic_Razz:: @ 8E7A560 - .incbin "graphics/berries/razz/pic.4bpp.lz" + .incbin "graphics/berries/razz.4bpp.lz" .align 2 gBerryPic_Bluk:: @ 8E7A790 - .incbin "graphics/berries/bluk/pic.4bpp.lz" + .incbin "graphics/berries/bluk.4bpp.lz" .align 2 gBerryPic_Nanab:: @ 8E7A978 - .incbin "graphics/berries/nanab/pic.4bpp.lz" + .incbin "graphics/berries/nanab.4bpp.lz" .align 2 gBerryPic_Wepear:: @ 8E7AAEC - .incbin "graphics/berries/wepear/pic.4bpp.lz" + .incbin "graphics/berries/wepear.4bpp.lz" .align 2 gBerryPic_Pinap:: @ 8E7ACB4 - .incbin "graphics/berries/pinap/pic.4bpp.lz" + .incbin "graphics/berries/pinap.4bpp.lz" .align 2 gBerryPic_Pomeg:: @ 8E7AEC8 - .incbin "graphics/berries/pomeg/pic.4bpp.lz" + .incbin "graphics/berries/pomeg.4bpp.lz" .align 2 gBerryPic_Kelpsy:: @ 8E7B070 - .incbin "graphics/berries/kelpsy/pic.4bpp.lz" + .incbin "graphics/berries/kelpsy.4bpp.lz" .align 2 gBerryPic_Qualot:: @ 8E7B218 - .incbin "graphics/berries/qualot/pic.4bpp.lz" + .incbin "graphics/berries/qualot.4bpp.lz" .align 2 gBerryPic_Hondew:: @ 8E7B3E4 - .incbin "graphics/berries/hondew/pic.4bpp.lz" + .incbin "graphics/berries/hondew.4bpp.lz" .align 2 gBerryPic_Grepa:: @ 8E7B63C - .incbin "graphics/berries/grepa/pic.4bpp.lz" + .incbin "graphics/berries/grepa.4bpp.lz" .align 2 gBerryPic_Tamato:: @ 8E7B7CC - .incbin "graphics/berries/tamato/pic.4bpp.lz" + .incbin "graphics/berries/tamato.4bpp.lz" .align 2 gBerryPic_Cornn:: @ 8E7BA90 - .incbin "graphics/berries/cornn/pic.4bpp.lz" + .incbin "graphics/berries/cornn.4bpp.lz" .align 2 gBerryPic_Magost:: @ 8E7BC94 - .incbin "graphics/berries/magost/pic.4bpp.lz" + .incbin "graphics/berries/magost.4bpp.lz" .align 2 gBerryPic_Rabuta:: @ 8E7BE38 - .incbin "graphics/berries/rabuta/pic.4bpp.lz" + .incbin "graphics/berries/rabuta.4bpp.lz" .align 2 gBerryPic_Nomel:: @ 8E7C12C - .incbin "graphics/berries/nomel/pic.4bpp.lz" + .incbin "graphics/berries/nomel.4bpp.lz" .align 2 gBerryPic_Spelon:: @ 8E7C308 - .incbin "graphics/berries/spelon/pic.4bpp.lz" + .incbin "graphics/berries/spelon.4bpp.lz" .align 2 gBerryPic_Pamtre:: @ 8E7C4F8 - .incbin "graphics/berries/pamtre/pic.4bpp.lz" + .incbin "graphics/berries/pamtre.4bpp.lz" .align 2 gBerryPic_Watmel:: @ 8E7C748 - .incbin "graphics/berries/watmel/pic.4bpp.lz" + .incbin "graphics/berries/watmel.4bpp.lz" .align 2 gBerryPic_Durin:: @ 8E7CA2C - .incbin "graphics/berries/durin/pic.4bpp.lz" + .incbin "graphics/berries/durin.4bpp.lz" .align 2 gBerryPic_Belue:: @ 8E7CDF8 - .incbin "graphics/berries/belue/pic.4bpp.lz" + .incbin "graphics/berries/belue.4bpp.lz" .align 2 gBerryPic_Liechi:: @ 8E7D0D0 - .incbin "graphics/berries/liechi/pic.4bpp.lz" + .incbin "graphics/berries/liechi.4bpp.lz" .align 2 gBerryPic_Ganlon:: @ 8E7D328 - .incbin "graphics/berries/ganlon/pic.4bpp.lz" + .incbin "graphics/berries/ganlon.4bpp.lz" .align 2 gBerryPic_Salac:: @ 8E7D4C0 - .incbin "graphics/berries/salac/pic.4bpp.lz" + .incbin "graphics/berries/salac.4bpp.lz" .align 2 gBerryPic_Petaya:: @ 8E7D704 - .incbin "graphics/berries/petaya/pic.4bpp.lz" + .incbin "graphics/berries/petaya.4bpp.lz" .align 2 gBerryPic_Apicot:: @ 8E7D9AC - .incbin "graphics/berries/apicot/pic.4bpp.lz" + .incbin "graphics/berries/apicot.4bpp.lz" .align 2 gBerryPic_Lansat:: @ 8E7DB3C - .incbin "graphics/berries/lansat/pic.4bpp.lz" + .incbin "graphics/berries/lansat.4bpp.lz" .align 2 gBerryPic_Starf:: @ 8E7DD30 - .incbin "graphics/berries/starf/pic.4bpp.lz" + .incbin "graphics/berries/starf.4bpp.lz" .align 2 gBerryPic_Enigma:: @ 8E7DF00 - .incbin "graphics/berries/enigma/pic.4bpp.lz" + .incbin "graphics/berries/enigma.4bpp.lz" .align 2 gBerryPalette_Cheri:: @ 8E7E118 - .incbin "graphics/berries/cheri/palette.gbapal.lz" + .incbin "graphics/berries/cheri.gbapal.lz" .align 2 gBerryPalette_Oran:: @ 8E7E140 - .incbin "graphics/berries/oran/palette.gbapal.lz" + .incbin "graphics/berries/oran.gbapal.lz" .align 2 gBerryPalette_Pecha:: @ 8E7E168 - .incbin "graphics/berries/pecha/palette.gbapal.lz" + .incbin "graphics/berries/pecha.gbapal.lz" .align 2 gBerryPalette_Rawst:: @ 8E7E190 - .incbin "graphics/berries/rawst/palette.gbapal.lz" + .incbin "graphics/berries/rawst.gbapal.lz" .align 2 gBerryPalette_Aspear:: @ 8E7E1B8 - .incbin "graphics/berries/aspear/palette.gbapal.lz" + .incbin "graphics/berries/aspear.gbapal.lz" .align 2 gBerryPalette_Leppa:: @ 8E7E1E0 - .incbin "graphics/berries/leppa/palette.gbapal.lz" + .incbin "graphics/berries/leppa.gbapal.lz" .align 2 gBerryPalette_Chesto:: @ 8E7E208 - .incbin "graphics/berries/chesto/palette.gbapal.lz" + .incbin "graphics/berries/chesto.gbapal.lz" .align 2 gBerryPalette_Persim:: @ 8E7E230 - .incbin "graphics/berries/persim/palette.gbapal.lz" + .incbin "graphics/berries/persim.gbapal.lz" .align 2 gBerryPalette_Lum:: @ 8E7E258 - .incbin "graphics/berries/lum/palette.gbapal.lz" + .incbin "graphics/berries/lum.gbapal.lz" .align 2 gBerryPalette_Sitrus:: @ 8E7E280 - .incbin "graphics/berries/sitrus/palette.gbapal.lz" + .incbin "graphics/berries/sitrus.gbapal.lz" .align 2 gBerryPalette_Figy:: @ 8E7E2A8 - .incbin "graphics/berries/figy/palette.gbapal.lz" + .incbin "graphics/berries/figy.gbapal.lz" .align 2 gBerryPalette_Wiki:: @ 8E7E2D0 - .incbin "graphics/berries/wiki/palette.gbapal.lz" + .incbin "graphics/berries/wiki.gbapal.lz" .align 2 gBerryPalette_Mago:: @ 8E7E2F8 - .incbin "graphics/berries/mago/palette.gbapal.lz" + .incbin "graphics/berries/mago.gbapal.lz" .align 2 gBerryPalette_Aguav:: @ 8E7E320 - .incbin "graphics/berries/aguav/palette.gbapal.lz" + .incbin "graphics/berries/aguav.gbapal.lz" .align 2 gBerryPalette_Iapapa:: @ 8E7E348 - .incbin "graphics/berries/iapapa/palette.gbapal.lz" + .incbin "graphics/berries/iapapa.gbapal.lz" .align 2 gBerryPalette_Razz:: @ 8E7E370 - .incbin "graphics/berries/razz/palette.gbapal.lz" + .incbin "graphics/berries/razz.gbapal.lz" .align 2 gBerryPalette_Bluk:: @ 8E7E398 - .incbin "graphics/berries/bluk/palette.gbapal.lz" + .incbin "graphics/berries/bluk.gbapal.lz" .align 2 gBerryPalette_Nanab:: @ 8E7E3C0 - .incbin "graphics/berries/nanab/palette.gbapal.lz" + .incbin "graphics/berries/nanab.gbapal.lz" .align 2 gBerryPalette_Wepear:: @ 8E7E3E8 - .incbin "graphics/berries/wepear/palette.gbapal.lz" + .incbin "graphics/berries/wepear.gbapal.lz" .align 2 gBerryPalette_Pinap:: @ 8E7E410 - .incbin "graphics/berries/pinap/palette.gbapal.lz" + .incbin "graphics/berries/pinap.gbapal.lz" .align 2 gBerryPalette_Pomeg:: @ 8E7E438 - .incbin "graphics/berries/pomeg/palette.gbapal.lz" + .incbin "graphics/berries/pomeg.gbapal.lz" .align 2 gBerryPalette_Kelpsy:: @ 8E7E460 - .incbin "graphics/berries/kelpsy/palette.gbapal.lz" + .incbin "graphics/berries/kelpsy.gbapal.lz" .align 2 gBerryPalette_Qualot:: @ 8E7E488 - .incbin "graphics/berries/qualot/palette.gbapal.lz" + .incbin "graphics/berries/qualot.gbapal.lz" .align 2 gBerryPalette_Hondew:: @ 8E7E4B0 - .incbin "graphics/berries/hondew/palette.gbapal.lz" + .incbin "graphics/berries/hondew.gbapal.lz" .align 2 gBerryPalette_Grepa:: @ 8E7E4D8 - .incbin "graphics/berries/grepa/palette.gbapal.lz" + .incbin "graphics/berries/grepa.gbapal.lz" .align 2 gBerryPalette_Tamato:: @ 8E7E500 - .incbin "graphics/berries/tamato/palette.gbapal.lz" + .incbin "graphics/berries/tamato.gbapal.lz" .align 2 gBerryPalette_Cornn:: @ 8E7E528 - .incbin "graphics/berries/cornn/palette.gbapal.lz" + .incbin "graphics/berries/cornn.gbapal.lz" .align 2 gBerryPalette_Magost:: @ 8E7E550 - .incbin "graphics/berries/magost/palette.gbapal.lz" + .incbin "graphics/berries/magost.gbapal.lz" .align 2 gBerryPalette_Rabuta:: @ 8E7E578 - .incbin "graphics/berries/rabuta/palette.gbapal.lz" + .incbin "graphics/berries/rabuta.gbapal.lz" .align 2 gBerryPalette_Nomel:: @ 8E7E5A0 - .incbin "graphics/berries/nomel/palette.gbapal.lz" + .incbin "graphics/berries/nomel.gbapal.lz" .align 2 gBerryPalette_Spelon:: @ 8E7E5C8 - .incbin "graphics/berries/spelon/palette.gbapal.lz" + .incbin "graphics/berries/spelon.gbapal.lz" .align 2 gBerryPalette_Pamtre:: @ 8E7E5F0 - .incbin "graphics/berries/pamtre/palette.gbapal.lz" + .incbin "graphics/berries/pamtre.gbapal.lz" .align 2 gBerryPalette_Watmel:: @ 8E7E618 - .incbin "graphics/berries/watmel/palette.gbapal.lz" + .incbin "graphics/berries/watmel.gbapal.lz" .align 2 gBerryPalette_Durin:: @ 8E7E640 - .incbin "graphics/berries/durin/palette.gbapal.lz" + .incbin "graphics/berries/durin.gbapal.lz" .align 2 gBerryPalette_Belue:: @ 8E7E668 - .incbin "graphics/berries/belue/palette.gbapal.lz" + .incbin "graphics/berries/belue.gbapal.lz" .align 2 gBerryPalette_Liechi:: @ 8E7E690 - .incbin "graphics/berries/liechi/palette.gbapal.lz" + .incbin "graphics/berries/liechi.gbapal.lz" .align 2 gBerryPalette_Ganlon:: @ 8E7E6B8 - .incbin "graphics/berries/ganlon/palette.gbapal.lz" + .incbin "graphics/berries/ganlon.gbapal.lz" .align 2 gBerryPalette_Salac:: @ 8E7E6E0 - .incbin "graphics/berries/salac/palette.gbapal.lz" + .incbin "graphics/berries/salac.gbapal.lz" .align 2 gBerryPalette_Petaya:: @ 8E7E708 - .incbin "graphics/berries/petaya/palette.gbapal.lz" + .incbin "graphics/berries/petaya.gbapal.lz" .align 2 gBerryPalette_Apicot:: @ 8E7E730 - .incbin "graphics/berries/apicot/palette.gbapal.lz" + .incbin "graphics/berries/apicot.gbapal.lz" .align 2 gBerryPalette_Lansat:: @ 8E7E758 - .incbin "graphics/berries/lansat/palette.gbapal.lz" + .incbin "graphics/berries/lansat.gbapal.lz" .align 2 gBerryPalette_Starf:: @ 8E7E780 - .incbin "graphics/berries/starf/palette.gbapal.lz" + .incbin "graphics/berries/starf.gbapal.lz" .align 2 gBerryPalette_Enigma:: @ 8E7E7A8 - .incbin "graphics/berries/enigma/palette.gbapal.lz" + .incbin "graphics/berries/enigma.gbapal.lz" diff --git a/data/graphics/berries/graphics_table.inc b/data/graphics/berries/graphics_table.inc deleted file mode 100644 index 78af1c48b..000000000 --- a/data/graphics/berries/graphics_table.inc +++ /dev/null @@ -1,45 +0,0 @@ - .align 2 -gBerryGraphicsTable:: @ 83C1E1C - .4byte gBerryPic_Cheri, gBerryPalette_Cheri - .4byte gBerryPic_Chesto, gBerryPalette_Chesto - .4byte gBerryPic_Pecha, gBerryPalette_Pecha - .4byte gBerryPic_Rawst, gBerryPalette_Rawst - .4byte gBerryPic_Aspear, gBerryPalette_Aspear - .4byte gBerryPic_Leppa, gBerryPalette_Leppa - .4byte gBerryPic_Oran, gBerryPalette_Oran - .4byte gBerryPic_Persim, gBerryPalette_Persim - .4byte gBerryPic_Lum, gBerryPalette_Lum - .4byte gBerryPic_Sitrus, gBerryPalette_Sitrus - .4byte gBerryPic_Figy, gBerryPalette_Figy - .4byte gBerryPic_Wiki, gBerryPalette_Wiki - .4byte gBerryPic_Mago, gBerryPalette_Mago - .4byte gBerryPic_Aguav, gBerryPalette_Aguav - .4byte gBerryPic_Iapapa, gBerryPalette_Iapapa - .4byte gBerryPic_Razz, gBerryPalette_Razz - .4byte gBerryPic_Bluk, gBerryPalette_Bluk - .4byte gBerryPic_Nanab, gBerryPalette_Nanab - .4byte gBerryPic_Wepear, gBerryPalette_Wepear - .4byte gBerryPic_Pinap, gBerryPalette_Pinap - .4byte gBerryPic_Pomeg, gBerryPalette_Pomeg - .4byte gBerryPic_Kelpsy, gBerryPalette_Kelpsy - .4byte gBerryPic_Qualot, gBerryPalette_Qualot - .4byte gBerryPic_Hondew, gBerryPalette_Hondew - .4byte gBerryPic_Grepa, gBerryPalette_Grepa - .4byte gBerryPic_Tamato, gBerryPalette_Tamato - .4byte gBerryPic_Cornn, gBerryPalette_Cornn - .4byte gBerryPic_Magost, gBerryPalette_Magost - .4byte gBerryPic_Rabuta, gBerryPalette_Rabuta - .4byte gBerryPic_Nomel, gBerryPalette_Nomel - .4byte gBerryPic_Spelon, gBerryPalette_Spelon - .4byte gBerryPic_Pamtre, gBerryPalette_Pamtre - .4byte gBerryPic_Watmel, gBerryPalette_Watmel - .4byte gBerryPic_Durin, gBerryPalette_Durin - .4byte gBerryPic_Belue, gBerryPalette_Belue - .4byte gBerryPic_Liechi, gBerryPalette_Liechi - .4byte gBerryPic_Ganlon, gBerryPalette_Ganlon - .4byte gBerryPic_Salac, gBerryPalette_Salac - .4byte gBerryPic_Petaya, gBerryPalette_Petaya - .4byte gBerryPic_Apicot, gBerryPalette_Apicot - .4byte gBerryPic_Lansat, gBerryPalette_Lansat - .4byte gBerryPic_Starf, gBerryPalette_Starf - .4byte gBerryPic_Enigma, gBerryPalette_Enigma diff --git a/data/graphics/pokemon/icon_palette_indices.inc b/data/graphics/pokemon/icon_palette_indices.inc deleted file mode 100644 index f37ec2a7a..000000000 --- a/data/graphics/pokemon/icon_palette_indices.inc +++ /dev/null @@ -1,442 +0,0 @@ - .align 2 -gMonIconPaletteIndices:: @ 83BC400 - .byte 0 @ ?????????? - .byte 1 @ Bulbasaur - .byte 1 @ Ivysaur - .byte 1 @ Venusaur - .byte 0 @ Charmander - .byte 0 @ Charmeleon - .byte 0 @ Charizard - .byte 0 @ Squirtle - .byte 2 @ Wartortle - .byte 2 @ Blastoise - .byte 1 @ Caterpie - .byte 1 @ Metapod - .byte 0 @ Butterfree - .byte 1 @ Weedle - .byte 2 @ Kakuna - .byte 2 @ Beedrill - .byte 0 @ Pidgey - .byte 0 @ Pidgeotto - .byte 0 @ Pidgeot - .byte 2 @ Rattata - .byte 1 @ Raticate - .byte 0 @ Spearow - .byte 0 @ Fearow - .byte 2 @ Ekans - .byte 2 @ Arbok - .byte 2 @ Pikachu - .byte 0 @ Raichu - .byte 2 @ Sandshrew - .byte 2 @ Sandslash - .byte 2 @ Nidoran♀ - .byte 2 @ Nidorina - .byte 2 @ Nidoqueen - .byte 2 @ Nidoran♂ - .byte 2 @ Nidorino - .byte 2 @ Nidoking - .byte 0 @ Clefairy - .byte 0 @ Clefable - .byte 2 @ Vulpix - .byte 1 @ Ninetales - .byte 0 @ Jigglypuff - .byte 0 @ Wigglytuff - .byte 2 @ Zubat - .byte 2 @ Golbat - .byte 1 @ Oddish - .byte 0 @ Gloom - .byte 0 @ Vileplume - .byte 0 @ Paras - .byte 0 @ Parasect - .byte 0 @ Venonat - .byte 2 @ Venomoth - .byte 2 @ Diglett - .byte 2 @ Dugtrio - .byte 1 @ Meowth - .byte 1 @ Persian - .byte 1 @ Psyduck - .byte 2 @ Golduck - .byte 1 @ Mankey - .byte 2 @ Primeape - .byte 0 @ Growlithe - .byte 0 @ Arcanine - .byte 0 @ Poliwag - .byte 0 @ Poliwhirl - .byte 0 @ Poliwrath - .byte 2 @ Abra - .byte 2 @ Kadabra - .byte 2 @ Alakazam - .byte 0 @ Machop - .byte 2 @ Machoke - .byte 0 @ Machamp - .byte 1 @ Bellsprout - .byte 1 @ Weepinbell - .byte 1 @ Victreebel - .byte 2 @ Tentacool - .byte 2 @ Tentacruel - .byte 1 @ Geodude - .byte 1 @ Graveler - .byte 1 @ Golem - .byte 0 @ Ponyta - .byte 0 @ Rapidash - .byte 0 @ Slowpoke - .byte 0 @ Slowbro - .byte 0 @ Magnemite - .byte 0 @ Magneton - .byte 1 @ Farfetch'd - .byte 2 @ Doduo - .byte 2 @ Dodrio - .byte 2 @ Seel - .byte 2 @ Dewgong - .byte 2 @ Grimer - .byte 2 @ Muk - .byte 2 @ Shellder - .byte 2 @ Cloyster - .byte 2 @ Gastly - .byte 2 @ Haunter - .byte 2 @ Gengar - .byte 2 @ Onix - .byte 2 @ Drowzee - .byte 1 @ Hypno - .byte 2 @ Krabby - .byte 2 @ Kingler - .byte 0 @ Voltorb - .byte 0 @ Electrode - .byte 0 @ Exeggcute - .byte 1 @ Exeggutor - .byte 1 @ Cubone - .byte 1 @ Marowak - .byte 2 @ Hitmonlee - .byte 2 @ Hitmonchan - .byte 1 @ Lickitung - .byte 2 @ Koffing - .byte 2 @ Weezing - .byte 1 @ Rhyhorn - .byte 1 @ Rhydon - .byte 0 @ Chansey - .byte 0 @ Tangela - .byte 1 @ Kangaskhan - .byte 0 @ Horsea - .byte 0 @ Seadra - .byte 0 @ Goldeen - .byte 0 @ Seaking - .byte 2 @ Staryu - .byte 2 @ Starmie - .byte 0 @ Mr. mime - .byte 1 @ Scyther - .byte 2 @ Jynx - .byte 1 @ Electabuzz - .byte 0 @ Magmar - .byte 2 @ Pinsir - .byte 2 @ Tauros - .byte 0 @ Magikarp - .byte 0 @ Gyarados - .byte 2 @ Lapras - .byte 2 @ Ditto - .byte 2 @ Eevee - .byte 0 @ Vaporeon - .byte 0 @ Jolteon - .byte 0 @ Flareon - .byte 0 @ Porygon - .byte 0 @ Omanyte - .byte 0 @ Omastar - .byte 2 @ Kabuto - .byte 2 @ Kabutops - .byte 0 @ Aerodactyl - .byte 1 @ Snorlax - .byte 0 @ Articuno - .byte 0 @ Zapdos - .byte 0 @ Moltres - .byte 0 @ Dratini - .byte 0 @ Dragonair - .byte 2 @ Dragonite - .byte 2 @ Mewtwo - .byte 0 @ Mew - .byte 1 @ Chikorita - .byte 1 @ Bayleef - .byte 1 @ Meganium - .byte 1 @ Cyndaquil - .byte 1 @ Quilava - .byte 1 @ Typhlosion - .byte 2 @ Totodile - .byte 2 @ Croconaw - .byte 2 @ Feraligatr - .byte 2 @ Sentret - .byte 2 @ Furret - .byte 2 @ Hoothoot - .byte 2 @ Noctowl - .byte 0 @ Ledyba - .byte 0 @ Ledian - .byte 1 @ Spinarak - .byte 0 @ Ariados - .byte 2 @ Crobat - .byte 2 @ Chinchou - .byte 0 @ Lanturn - .byte 0 @ Pichu - .byte 0 @ Cleffa - .byte 1 @ Igglybuff - .byte 2 @ Togepi - .byte 2 @ Togetic - .byte 0 @ Natu - .byte 0 @ Xatu - .byte 2 @ Mareep - .byte 0 @ Flaaffy - .byte 0 @ Ampharos - .byte 1 @ Bellossom - .byte 2 @ Marill - .byte 2 @ Azumarill - .byte 1 @ Sudowoodo - .byte 1 @ Politoed - .byte 1 @ Hoppip - .byte 1 @ Skiploom - .byte 2 @ Jumpluff - .byte 2 @ Aipom - .byte 1 @ Sunkern - .byte 1 @ Sunflora - .byte 1 @ Yanma - .byte 0 @ Wooper - .byte 0 @ Quagsire - .byte 2 @ Espeon - .byte 2 @ Umbreon - .byte 2 @ Murkrow - .byte 0 @ Slowking - .byte 0 @ Misdreavus - .byte 0 @ Unown A - .byte 0 @ Wobbuffet - .byte 1 @ Girafarig - .byte 0 @ Pineco - .byte 2 @ Forretress - .byte 2 @ Dunsparce - .byte 2 @ Gligar - .byte 0 @ Steelix - .byte 0 @ Snubbull - .byte 2 @ Granbull - .byte 0 @ Qwilfish - .byte 0 @ Scizor - .byte 1 @ Shuckle - .byte 2 @ Heracross - .byte 0 @ Sneasel - .byte 0 @ Teddiursa - .byte 2 @ Ursaring - .byte 0 @ Slugma - .byte 0 @ Magcargo - .byte 2 @ Swinub - .byte 2 @ Piloswine - .byte 0 @ Corsola - .byte 0 @ Remoraid - .byte 0 @ Octillery - .byte 0 @ Delibird - .byte 2 @ Mantine - .byte 0 @ Skarmory - .byte 0 @ Houndour - .byte 0 @ Houndoom - .byte 0 @ Kingdra - .byte 0 @ Phanpy - .byte 0 @ Donphan - .byte 0 @ Porygon2 - .byte 2 @ Stantler - .byte 1 @ Smeargle - .byte 2 @ Tyrogue - .byte 2 @ Hitmontop - .byte 1 @ Smoochum - .byte 1 @ Elekid - .byte 1 @ Magby - .byte 1 @ Miltank - .byte 1 @ Blissey - .byte 0 @ Raikou - .byte 2 @ Entei - .byte 0 @ Suicune - .byte 1 @ Larvitar - .byte 0 @ Pupitar - .byte 1 @ Tyranitar - .byte 0 @ Lugia - .byte 1 @ Ho-Oh - .byte 1 @ Celebi - .byte 0 @ ? - .byte 0 @ ? - .byte 0 @ ? - .byte 0 @ ? - .byte 0 @ ? - .byte 0 @ ? - .byte 0 @ ? - .byte 0 @ ? - .byte 0 @ ? - .byte 0 @ ? - .byte 0 @ ? - .byte 0 @ ? - .byte 0 @ ? - .byte 0 @ ? - .byte 0 @ ? - .byte 0 @ ? - .byte 0 @ ? - .byte 0 @ ? - .byte 0 @ ? - .byte 0 @ ? - .byte 0 @ ? - .byte 0 @ ? - .byte 0 @ ? - .byte 0 @ ? - .byte 0 @ ? - .byte 1 @ Treecko - .byte 0 @ Grovyle - .byte 1 @ Sceptile - .byte 0 @ Torchic - .byte 0 @ Combusken - .byte 0 @ Blaziken - .byte 0 @ Mudkip - .byte 0 @ Marshtomp - .byte 0 @ Swampert - .byte 2 @ Poochyena - .byte 2 @ Mightyena - .byte 2 @ Zigzagoon - .byte 2 @ Linoone - .byte 0 @ Wurmple - .byte 2 @ Silcoon - .byte 0 @ Beautifly - .byte 2 @ Cascoon - .byte 1 @ Dustox - .byte 1 @ Lotad - .byte 1 @ Lombre - .byte 1 @ Ludicolo - .byte 1 @ Seedot - .byte 1 @ Nuzleaf - .byte 0 @ Shiftry - .byte 1 @ Nincada - .byte 1 @ Ninjask - .byte 1 @ Shedinja - .byte 2 @ Taillow - .byte 2 @ Swellow - .byte 1 @ Shroomish - .byte 1 @ Breloom - .byte 1 @ Spinda - .byte 0 @ Wingull - .byte 0 @ Pelipper - .byte 2 @ Surskit - .byte 0 @ Masquerain - .byte 2 @ Wailmer - .byte 0 @ Wailord - .byte 0 @ Skitty - .byte 2 @ Delcatty - .byte 1 @ Kecleon - .byte 1 @ Baltoy - .byte 0 @ Claydol - .byte 0 @ Nosepass - .byte 1 @ Torkoal - .byte 2 @ Sableye - .byte 0 @ Barboach - .byte 0 @ Whiscash - .byte 0 @ Luvdisc - .byte 0 @ Corphish - .byte 0 @ Crawdaunt - .byte 2 @ Feebas - .byte 0 @ Milotic - .byte 0 @ Carvanha - .byte 0 @ Sharpedo - .byte 1 @ Trapinch - .byte 1 @ Vibrava - .byte 1 @ Flygon - .byte 2 @ Makuhita - .byte 1 @ Hariyama - .byte 1 @ Electrike - .byte 0 @ Manectric - .byte 1 @ Numel - .byte 0 @ Camerupt - .byte 2 @ Spheal - .byte 2 @ Sealeo - .byte 0 @ Walrein - .byte 1 @ Cacnea - .byte 1 @ Cacturne - .byte 2 @ Snorunt - .byte 0 @ Glalie - .byte 1 @ Lunatone - .byte 0 @ Solrock - .byte 2 @ Azurill - .byte 0 @ Spoink - .byte 2 @ Grumpig - .byte 0 @ Plusle - .byte 0 @ Minun - .byte 2 @ Mawile - .byte 0 @ Meditite - .byte 0 @ Medicham - .byte 0 @ Swablu - .byte 0 @ Altaria - .byte 0 @ Wynaut - .byte 0 @ Duskull - .byte 0 @ Dusclops - .byte 0 @ Roselia - .byte 2 @ Slakoth - .byte 2 @ Vigoroth - .byte 1 @ Slaking - .byte 1 @ Gulpin - .byte 2 @ Swalot - .byte 1 @ Tropius - .byte 0 @ Whismur - .byte 2 @ Loudred - .byte 2 @ Exploud - .byte 0 @ Clamperl - .byte 0 @ Huntail - .byte 0 @ Gorebyss - .byte 0 @ Absol - .byte 0 @ Shuppet - .byte 0 @ Banette - .byte 2 @ Seviper - .byte 0 @ Zangoose - .byte 1 @ Relicanth - .byte 2 @ Aron - .byte 2 @ Lairon - .byte 2 @ Aggron - .byte 0 @ Castform - .byte 0 @ Volbeat - .byte 2 @ Illumise - .byte 2 @ Lileep - .byte 0 @ Cradily - .byte 0 @ Anorith - .byte 0 @ Armaldo - .byte 1 @ Ralts - .byte 1 @ Kirlia - .byte 1 @ Gardevoir - .byte 2 @ Bagon - .byte 2 @ Shelgon - .byte 0 @ Salamence - .byte 0 @ Beldum - .byte 0 @ Metang - .byte 0 @ Metagross - .byte 2 @ Regirock - .byte 2 @ Regice - .byte 2 @ Registeel - .byte 2 @ Kyogre - .byte 0 @ Groudon - .byte 1 @ Rayquaza - .byte 0 @ Latias - .byte 2 @ Latios - .byte 0 @ Jirachi - .byte 0 @ Deoxys - .byte 0 @ Chimecho - .byte 1 @ Egg - .byte 0 @ Unown B - .byte 0 @ Unown C - .byte 0 @ Unown D - .byte 0 @ Unown E - .byte 0 @ Unown F - .byte 0 @ Unown G - .byte 0 @ Unown H - .byte 0 @ Unown I - .byte 0 @ Unown J - .byte 0 @ Unown K - .byte 0 @ Unown L - .byte 0 @ Unown M - .byte 0 @ Unown N - .byte 0 @ Unown O - .byte 0 @ Unown P - .byte 0 @ Unown Q - .byte 0 @ Unown R - .byte 0 @ Unown S - .byte 0 @ Unown T - .byte 0 @ Unown U - .byte 0 @ Unown V - .byte 0 @ Unown W - .byte 0 @ Unown X - .byte 0 @ Unown Y - .byte 0 @ Unown Z - .byte 0 @ Unown Exclamation Mark - .byte 0 @ Unown Question Mark diff --git a/data/graphics/pokemon/icon_palette_table.inc b/data/graphics/pokemon/icon_palette_table.inc deleted file mode 100644 index d9da61ab2..000000000 --- a/data/graphics/pokemon/icon_palette_table.inc +++ /dev/null @@ -1,11 +0,0 @@ - .align 2 -gMonIconPaletteTable:: @ 83BC5B8 - obj_pal gMonIconPalettes + 0 * 32, 56000 - obj_pal gMonIconPalettes + 1 * 32, 56001 - obj_pal gMonIconPalettes + 2 * 32, 56002 - -@ These palettes are actually part of the title screen BG palette and are not -@ used for Pokémon icons. - obj_pal gMonIconPalettes + 3 * 32, 56003 - obj_pal gMonIconPalettes + 4 * 32, 56004 - obj_pal gMonIconPalettes + 5 * 32, 56005 diff --git a/data/graphics/pokemon/icon_table.inc b/data/graphics/pokemon/icon_table.inc deleted file mode 100644 index eeb064208..000000000 --- a/data/graphics/pokemon/icon_table.inc +++ /dev/null @@ -1,442 +0,0 @@ - .align 2 -gMonIconTable:: @ 83BBD20 - .4byte gMonIcon_Bulbasaur - .4byte gMonIcon_Bulbasaur - .4byte gMonIcon_Ivysaur - .4byte gMonIcon_Venusaur - .4byte gMonIcon_Charmander - .4byte gMonIcon_Charmeleon - .4byte gMonIcon_Charizard - .4byte gMonIcon_Squirtle - .4byte gMonIcon_Wartortle - .4byte gMonIcon_Blastoise - .4byte gMonIcon_Caterpie - .4byte gMonIcon_Metapod - .4byte gMonIcon_Butterfree - .4byte gMonIcon_Weedle - .4byte gMonIcon_Kakuna - .4byte gMonIcon_Beedrill - .4byte gMonIcon_Pidgey - .4byte gMonIcon_Pidgeotto - .4byte gMonIcon_Pidgeot - .4byte gMonIcon_Rattata - .4byte gMonIcon_Raticate - .4byte gMonIcon_Spearow - .4byte gMonIcon_Fearow - .4byte gMonIcon_Ekans - .4byte gMonIcon_Arbok - .4byte gMonIcon_Pikachu - .4byte gMonIcon_Raichu - .4byte gMonIcon_Sandshrew - .4byte gMonIcon_Sandslash - .4byte gMonIcon_NidoranF - .4byte gMonIcon_Nidorina - .4byte gMonIcon_Nidoqueen - .4byte gMonIcon_NidoranM - .4byte gMonIcon_Nidorino - .4byte gMonIcon_Nidoking - .4byte gMonIcon_Clefairy - .4byte gMonIcon_Clefable - .4byte gMonIcon_Vulpix - .4byte gMonIcon_Ninetales - .4byte gMonIcon_Jigglypuff - .4byte gMonIcon_Wigglytuff - .4byte gMonIcon_Zubat - .4byte gMonIcon_Golbat - .4byte gMonIcon_Oddish - .4byte gMonIcon_Gloom - .4byte gMonIcon_Vileplume - .4byte gMonIcon_Paras - .4byte gMonIcon_Parasect - .4byte gMonIcon_Venonat - .4byte gMonIcon_Venomoth - .4byte gMonIcon_Diglett - .4byte gMonIcon_Dugtrio - .4byte gMonIcon_Meowth - .4byte gMonIcon_Persian - .4byte gMonIcon_Psyduck - .4byte gMonIcon_Golduck - .4byte gMonIcon_Mankey - .4byte gMonIcon_Primeape - .4byte gMonIcon_Growlithe - .4byte gMonIcon_Arcanine - .4byte gMonIcon_Poliwag - .4byte gMonIcon_Poliwhirl - .4byte gMonIcon_Poliwrath - .4byte gMonIcon_Abra - .4byte gMonIcon_Kadabra - .4byte gMonIcon_Alakazam - .4byte gMonIcon_Machop - .4byte gMonIcon_Machoke - .4byte gMonIcon_Machamp - .4byte gMonIcon_Bellsprout - .4byte gMonIcon_Weepinbell - .4byte gMonIcon_Victreebel - .4byte gMonIcon_Tentacool - .4byte gMonIcon_Tentacruel - .4byte gMonIcon_Geodude - .4byte gMonIcon_Graveler - .4byte gMonIcon_Golem - .4byte gMonIcon_Ponyta - .4byte gMonIcon_Rapidash - .4byte gMonIcon_Slowpoke - .4byte gMonIcon_Slowbro - .4byte gMonIcon_Magnemite - .4byte gMonIcon_Magneton - .4byte gMonIcon_Farfetchd - .4byte gMonIcon_Doduo - .4byte gMonIcon_Dodrio - .4byte gMonIcon_Seel - .4byte gMonIcon_Dewgong - .4byte gMonIcon_Grimer - .4byte gMonIcon_Muk - .4byte gMonIcon_Shellder - .4byte gMonIcon_Cloyster - .4byte gMonIcon_Gastly - .4byte gMonIcon_Haunter - .4byte gMonIcon_Gengar - .4byte gMonIcon_Onix - .4byte gMonIcon_Drowzee - .4byte gMonIcon_Hypno - .4byte gMonIcon_Krabby - .4byte gMonIcon_Kingler - .4byte gMonIcon_Voltorb - .4byte gMonIcon_Electrode - .4byte gMonIcon_Exeggcute - .4byte gMonIcon_Exeggutor - .4byte gMonIcon_Cubone - .4byte gMonIcon_Marowak - .4byte gMonIcon_Hitmonlee - .4byte gMonIcon_Hitmonchan - .4byte gMonIcon_Lickitung - .4byte gMonIcon_Koffing - .4byte gMonIcon_Weezing - .4byte gMonIcon_Rhyhorn - .4byte gMonIcon_Rhydon - .4byte gMonIcon_Chansey - .4byte gMonIcon_Tangela - .4byte gMonIcon_Kangaskhan - .4byte gMonIcon_Horsea - .4byte gMonIcon_Seadra - .4byte gMonIcon_Goldeen - .4byte gMonIcon_Seaking - .4byte gMonIcon_Staryu - .4byte gMonIcon_Starmie - .4byte gMonIcon_Mrmime - .4byte gMonIcon_Scyther - .4byte gMonIcon_Jynx - .4byte gMonIcon_Electabuzz - .4byte gMonIcon_Magmar - .4byte gMonIcon_Pinsir - .4byte gMonIcon_Tauros - .4byte gMonIcon_Magikarp - .4byte gMonIcon_Gyarados - .4byte gMonIcon_Lapras - .4byte gMonIcon_Ditto - .4byte gMonIcon_Eevee - .4byte gMonIcon_Vaporeon - .4byte gMonIcon_Jolteon - .4byte gMonIcon_Flareon - .4byte gMonIcon_Porygon - .4byte gMonIcon_Omanyte - .4byte gMonIcon_Omastar - .4byte gMonIcon_Kabuto - .4byte gMonIcon_Kabutops - .4byte gMonIcon_Aerodactyl - .4byte gMonIcon_Snorlax - .4byte gMonIcon_Articuno - .4byte gMonIcon_Zapdos - .4byte gMonIcon_Moltres - .4byte gMonIcon_Dratini - .4byte gMonIcon_Dragonair - .4byte gMonIcon_Dragonite - .4byte gMonIcon_Mewtwo - .4byte gMonIcon_Mew - .4byte gMonIcon_Chikorita - .4byte gMonIcon_Bayleef - .4byte gMonIcon_Meganium - .4byte gMonIcon_Cyndaquil - .4byte gMonIcon_Quilava - .4byte gMonIcon_Typhlosion - .4byte gMonIcon_Totodile - .4byte gMonIcon_Croconaw - .4byte gMonIcon_Feraligatr - .4byte gMonIcon_Sentret - .4byte gMonIcon_Furret - .4byte gMonIcon_Hoothoot - .4byte gMonIcon_Noctowl - .4byte gMonIcon_Ledyba - .4byte gMonIcon_Ledian - .4byte gMonIcon_Spinarak - .4byte gMonIcon_Ariados - .4byte gMonIcon_Crobat - .4byte gMonIcon_Chinchou - .4byte gMonIcon_Lanturn - .4byte gMonIcon_Pichu - .4byte gMonIcon_Cleffa - .4byte gMonIcon_Igglybuff - .4byte gMonIcon_Togepi - .4byte gMonIcon_Togetic - .4byte gMonIcon_Natu - .4byte gMonIcon_Xatu - .4byte gMonIcon_Mareep - .4byte gMonIcon_Flaaffy - .4byte gMonIcon_Ampharos - .4byte gMonIcon_Bellossom - .4byte gMonIcon_Marill - .4byte gMonIcon_Azumarill - .4byte gMonIcon_Sudowoodo - .4byte gMonIcon_Politoed - .4byte gMonIcon_Hoppip - .4byte gMonIcon_Skiploom - .4byte gMonIcon_Jumpluff - .4byte gMonIcon_Aipom - .4byte gMonIcon_Sunkern - .4byte gMonIcon_Sunflora - .4byte gMonIcon_Yanma - .4byte gMonIcon_Wooper - .4byte gMonIcon_Quagsire - .4byte gMonIcon_Espeon - .4byte gMonIcon_Umbreon - .4byte gMonIcon_Murkrow - .4byte gMonIcon_Slowking - .4byte gMonIcon_Misdreavus - .4byte gMonIcon_UnownA - .4byte gMonIcon_Wobbuffet - .4byte gMonIcon_Girafarig - .4byte gMonIcon_Pineco - .4byte gMonIcon_Forretress - .4byte gMonIcon_Dunsparce - .4byte gMonIcon_Gligar - .4byte gMonIcon_Steelix - .4byte gMonIcon_Snubbull - .4byte gMonIcon_Granbull - .4byte gMonIcon_Qwilfish - .4byte gMonIcon_Scizor - .4byte gMonIcon_Shuckle - .4byte gMonIcon_Heracross - .4byte gMonIcon_Sneasel - .4byte gMonIcon_Teddiursa - .4byte gMonIcon_Ursaring - .4byte gMonIcon_Slugma - .4byte gMonIcon_Magcargo - .4byte gMonIcon_Swinub - .4byte gMonIcon_Piloswine - .4byte gMonIcon_Corsola - .4byte gMonIcon_Remoraid - .4byte gMonIcon_Octillery - .4byte gMonIcon_Delibird - .4byte gMonIcon_Mantine - .4byte gMonIcon_Skarmory - .4byte gMonIcon_Houndour - .4byte gMonIcon_Houndoom - .4byte gMonIcon_Kingdra - .4byte gMonIcon_Phanpy - .4byte gMonIcon_Donphan - .4byte gMonIcon_Porygon2 - .4byte gMonIcon_Stantler - .4byte gMonIcon_Smeargle - .4byte gMonIcon_Tyrogue - .4byte gMonIcon_Hitmontop - .4byte gMonIcon_Smoochum - .4byte gMonIcon_Elekid - .4byte gMonIcon_Magby - .4byte gMonIcon_Miltank - .4byte gMonIcon_Blissey - .4byte gMonIcon_Raikou - .4byte gMonIcon_Entei - .4byte gMonIcon_Suicune - .4byte gMonIcon_Larvitar - .4byte gMonIcon_Pupitar - .4byte gMonIcon_Tyranitar - .4byte gMonIcon_Lugia - .4byte gMonIcon_HoOh - .4byte gMonIcon_Celebi - .4byte gMonIcon_QuestionMark - .4byte gMonIcon_QuestionMark - .4byte gMonIcon_QuestionMark - .4byte gMonIcon_QuestionMark - .4byte gMonIcon_QuestionMark - .4byte gMonIcon_QuestionMark - .4byte gMonIcon_QuestionMark - .4byte gMonIcon_QuestionMark - .4byte gMonIcon_QuestionMark - .4byte gMonIcon_QuestionMark - .4byte gMonIcon_QuestionMark - .4byte gMonIcon_QuestionMark - .4byte gMonIcon_QuestionMark - .4byte gMonIcon_QuestionMark - .4byte gMonIcon_QuestionMark - .4byte gMonIcon_QuestionMark - .4byte gMonIcon_QuestionMark - .4byte gMonIcon_QuestionMark - .4byte gMonIcon_QuestionMark - .4byte gMonIcon_QuestionMark - .4byte gMonIcon_QuestionMark - .4byte gMonIcon_QuestionMark - .4byte gMonIcon_QuestionMark - .4byte gMonIcon_QuestionMark - .4byte gMonIcon_QuestionMark - .4byte gMonIcon_Treecko - .4byte gMonIcon_Grovyle - .4byte gMonIcon_Sceptile - .4byte gMonIcon_Torchic - .4byte gMonIcon_Combusken - .4byte gMonIcon_Blaziken - .4byte gMonIcon_Mudkip - .4byte gMonIcon_Marshtomp - .4byte gMonIcon_Swampert - .4byte gMonIcon_Poochyena - .4byte gMonIcon_Mightyena - .4byte gMonIcon_Zigzagoon - .4byte gMonIcon_Linoone - .4byte gMonIcon_Wurmple - .4byte gMonIcon_Silcoon - .4byte gMonIcon_Beautifly - .4byte gMonIcon_Cascoon - .4byte gMonIcon_Dustox - .4byte gMonIcon_Lotad - .4byte gMonIcon_Lombre - .4byte gMonIcon_Ludicolo - .4byte gMonIcon_Seedot - .4byte gMonIcon_Nuzleaf - .4byte gMonIcon_Shiftry - .4byte gMonIcon_Nincada - .4byte gMonIcon_Ninjask - .4byte gMonIcon_Shedinja - .4byte gMonIcon_Taillow - .4byte gMonIcon_Swellow - .4byte gMonIcon_Shroomish - .4byte gMonIcon_Breloom - .4byte gMonIcon_Spinda - .4byte gMonIcon_Wingull - .4byte gMonIcon_Pelipper - .4byte gMonIcon_Surskit - .4byte gMonIcon_Masquerain - .4byte gMonIcon_Wailmer - .4byte gMonIcon_Wailord - .4byte gMonIcon_Skitty - .4byte gMonIcon_Delcatty - .4byte gMonIcon_Kecleon - .4byte gMonIcon_Baltoy - .4byte gMonIcon_Claydol - .4byte gMonIcon_Nosepass - .4byte gMonIcon_Torkoal - .4byte gMonIcon_Sableye - .4byte gMonIcon_Barboach - .4byte gMonIcon_Whiscash - .4byte gMonIcon_Luvdisc - .4byte gMonIcon_Corphish - .4byte gMonIcon_Crawdaunt - .4byte gMonIcon_Feebas - .4byte gMonIcon_Milotic - .4byte gMonIcon_Carvanha - .4byte gMonIcon_Sharpedo - .4byte gMonIcon_Trapinch - .4byte gMonIcon_Vibrava - .4byte gMonIcon_Flygon - .4byte gMonIcon_Makuhita - .4byte gMonIcon_Hariyama - .4byte gMonIcon_Electrike - .4byte gMonIcon_Manectric - .4byte gMonIcon_Numel - .4byte gMonIcon_Camerupt - .4byte gMonIcon_Spheal - .4byte gMonIcon_Sealeo - .4byte gMonIcon_Walrein - .4byte gMonIcon_Cacnea - .4byte gMonIcon_Cacturne - .4byte gMonIcon_Snorunt - .4byte gMonIcon_Glalie - .4byte gMonIcon_Lunatone - .4byte gMonIcon_Solrock - .4byte gMonIcon_Azurill - .4byte gMonIcon_Spoink - .4byte gMonIcon_Grumpig - .4byte gMonIcon_Plusle - .4byte gMonIcon_Minun - .4byte gMonIcon_Mawile - .4byte gMonIcon_Meditite - .4byte gMonIcon_Medicham - .4byte gMonIcon_Swablu - .4byte gMonIcon_Altaria - .4byte gMonIcon_Wynaut - .4byte gMonIcon_Duskull - .4byte gMonIcon_Dusclops - .4byte gMonIcon_Roselia - .4byte gMonIcon_Slakoth - .4byte gMonIcon_Vigoroth - .4byte gMonIcon_Slaking - .4byte gMonIcon_Gulpin - .4byte gMonIcon_Swalot - .4byte gMonIcon_Tropius - .4byte gMonIcon_Whismur - .4byte gMonIcon_Loudred - .4byte gMonIcon_Exploud - .4byte gMonIcon_Clamperl - .4byte gMonIcon_Huntail - .4byte gMonIcon_Gorebyss - .4byte gMonIcon_Absol - .4byte gMonIcon_Shuppet - .4byte gMonIcon_Banette - .4byte gMonIcon_Seviper - .4byte gMonIcon_Zangoose - .4byte gMonIcon_Relicanth - .4byte gMonIcon_Aron - .4byte gMonIcon_Lairon - .4byte gMonIcon_Aggron - .4byte gMonIcon_Castform - .4byte gMonIcon_Volbeat - .4byte gMonIcon_Illumise - .4byte gMonIcon_Lileep - .4byte gMonIcon_Cradily - .4byte gMonIcon_Anorith - .4byte gMonIcon_Armaldo - .4byte gMonIcon_Ralts - .4byte gMonIcon_Kirlia - .4byte gMonIcon_Gardevoir - .4byte gMonIcon_Bagon - .4byte gMonIcon_Shelgon - .4byte gMonIcon_Salamence - .4byte gMonIcon_Beldum - .4byte gMonIcon_Metang - .4byte gMonIcon_Metagross - .4byte gMonIcon_Regirock - .4byte gMonIcon_Regice - .4byte gMonIcon_Registeel - .4byte gMonIcon_Kyogre - .4byte gMonIcon_Groudon - .4byte gMonIcon_Rayquaza - .4byte gMonIcon_Latias - .4byte gMonIcon_Latios - .4byte gMonIcon_Jirachi - .4byte gMonIcon_Deoxys - .4byte gMonIcon_Chimecho - .4byte gMonIcon_Egg - .4byte gMonIcon_UnownB - .4byte gMonIcon_UnownC - .4byte gMonIcon_UnownD - .4byte gMonIcon_UnownE - .4byte gMonIcon_UnownF - .4byte gMonIcon_UnownG - .4byte gMonIcon_UnownH - .4byte gMonIcon_UnownI - .4byte gMonIcon_UnownJ - .4byte gMonIcon_UnownK - .4byte gMonIcon_UnownL - .4byte gMonIcon_UnownM - .4byte gMonIcon_UnownN - .4byte gMonIcon_UnownO - .4byte gMonIcon_UnownP - .4byte gMonIcon_UnownQ - .4byte gMonIcon_UnownR - .4byte gMonIcon_UnownS - .4byte gMonIcon_UnownT - .4byte gMonIcon_UnownU - .4byte gMonIcon_UnownV - .4byte gMonIcon_UnownW - .4byte gMonIcon_UnownX - .4byte gMonIcon_UnownY - .4byte gMonIcon_UnownZ - .4byte gMonIcon_UnownExclamationMark - .4byte gMonIcon_UnownQuestionMark diff --git a/data/graphics/trainers/graphics.inc b/data/graphics/trainers/graphics.inc index 09f34ca31..3a2be8723 100644 --- a/data/graphics/trainers/graphics.inc +++ b/data/graphics/trainers/graphics.inc @@ -1,675 +1,675 @@ .align 2 gTrainerFrontPic_Lass:: @ 8E48D38 - .incbin "graphics/trainers/lass/front.4bpp.lz" + .incbin "graphics/trainers/lass.4bpp.lz" .align 2 gTrainerFrontPic_Youngster:: @ 8E49010 - .incbin "graphics/trainers/youngster/front.4bpp.lz" + .incbin "graphics/trainers/youngster.4bpp.lz" .align 2 gTrainerFrontPic_Brendan:: @ 8E492B8 - .incbin "graphics/trainers/brendan/front.4bpp.lz" + .incbin "graphics/trainers/brendan.4bpp.lz" .align 2 gTrainerFrontPic_May:: @ 8E495CC - .incbin "graphics/trainers/may/front.4bpp.lz" + .incbin "graphics/trainers/may.4bpp.lz" .align 2 gTrainerFrontPic_Hiker:: @ 8E498CC - .incbin "graphics/trainers/hiker/front.4bpp.lz" + .incbin "graphics/trainers/hiker.4bpp.lz" .align 2 gTrainerFrontPic_Beauty:: @ 8E49D4C - .incbin "graphics/trainers/beauty/front.4bpp.lz" + .incbin "graphics/trainers/beauty.4bpp.lz" .align 2 gTrainerFrontPic_Fisherman:: @ 8E4A034 - .incbin "graphics/trainers/fisherman/front.4bpp.lz" + .incbin "graphics/trainers/fisherman.4bpp.lz" .align 2 gTrainerFrontPic_Lady:: @ 8E4A418 - .incbin "graphics/trainers/lady/front.4bpp.lz" + .incbin "graphics/trainers/lady.4bpp.lz" .align 2 gTrainerFrontPic_CyclingTriathleteM:: @ 8E4A7CC - .incbin "graphics/trainers/cycling_triathlete_m/front.4bpp.lz" + .incbin "graphics/trainers/cycling_triathlete_m.4bpp.lz" .align 2 gTrainerFrontPic_AquaGruntM:: @ 8E4ABDC - .incbin "graphics/trainers/aqua_grunt_m/front.4bpp.lz" + .incbin "graphics/trainers/aqua_grunt_m.4bpp.lz" .align 2 gTrainerFrontPic_Twins:: @ 8E4AF3C - .incbin "graphics/trainers/twins/front.4bpp.lz" + .incbin "graphics/trainers/twins.4bpp.lz" .align 2 gTrainerFrontPic_SwimmerF:: @ 8E4B300 - .incbin "graphics/trainers/swimmer_f/front.4bpp.lz" + .incbin "graphics/trainers/swimmer_f.4bpp.lz" .align 2 gTrainerFrontPic_BugCatcher:: @ 8E4B5D0 - .incbin "graphics/trainers/bug_catcher/front.4bpp.lz" + .incbin "graphics/trainers/bug_catcher.4bpp.lz" .align 2 gTrainerFrontPic_SchoolKidM:: @ 8E4B8FC - .incbin "graphics/trainers/school_kid_m/front.4bpp.lz" + .incbin "graphics/trainers/school_kid_m.4bpp.lz" .align 2 gTrainerFrontPic_RichBoy:: @ 8E4BBBC - .incbin "graphics/trainers/rich_boy/front.4bpp.lz" + .incbin "graphics/trainers/rich_boy.4bpp.lz" .align 2 gTrainerFrontPic_SrAndJr:: @ 8E4BE70 - .incbin "graphics/trainers/sr_and_jr/front.4bpp.lz" + .incbin "graphics/trainers/sr_and_jr.4bpp.lz" .align 2 gTrainerFrontPic_BlackBelt:: @ 8E4C2E0 - .incbin "graphics/trainers/black_belt/front.4bpp.lz" + .incbin "graphics/trainers/black_belt.4bpp.lz" .align 2 gTrainerFrontPic_Wally:: @ 8E4C644 - .incbin "graphics/trainers/wally/front.4bpp.lz" + .incbin "graphics/trainers/wally.4bpp.lz" .align 2 gTrainerFrontPic_AquaGruntF:: @ 8E4C914 - .incbin "graphics/trainers/aqua_grunt_f/front.4bpp.lz" + .incbin "graphics/trainers/aqua_grunt_f.4bpp.lz" .align 2 gTrainerFrontPic_TuberF:: @ 8E4CC50 - .incbin "graphics/trainers/tuber_f/front.4bpp.lz" + .incbin "graphics/trainers/tuber_f.4bpp.lz" .align 2 gTrainerFrontPic_HexManiac:: @ 8E4CEF4 - .incbin "graphics/trainers/hex_maniac/front.4bpp.lz" + .incbin "graphics/trainers/hex_maniac.4bpp.lz" .align 2 gTrainerFrontPic_PokemonBreederF:: @ 8E4D260 - .incbin "graphics/trainers/pokemon_breeder_f/front.4bpp.lz" + .incbin "graphics/trainers/pokemon_breeder_f.4bpp.lz" .align 2 gTrainerFrontPic_MagmaGruntM:: @ 8E4D594 - .incbin "graphics/trainers/magma_grunt_m/front.4bpp.lz" + .incbin "graphics/trainers/magma_grunt_m.4bpp.lz" .align 2 gTrainerFrontPic_MagmaGruntF:: @ 8E4D914 - .incbin "graphics/trainers/magma_grunt_f/front.4bpp.lz" + .incbin "graphics/trainers/magma_grunt_f.4bpp.lz" .align 2 gTrainerFrontPic_Interviewer:: @ 8E4DCA0 - .incbin "graphics/trainers/interviewer/front.4bpp.lz" + .incbin "graphics/trainers/interviewer.4bpp.lz" .align 2 gTrainerFrontPic_TuberM:: @ 8E4E144 - .incbin "graphics/trainers/tuber_m/front.4bpp.lz" + .incbin "graphics/trainers/tuber_m.4bpp.lz" .align 2 gTrainerFrontPic_YoungCouple:: @ 8E4E3D0 - .incbin "graphics/trainers/young_couple/front.4bpp.lz" + .incbin "graphics/trainers/young_couple.4bpp.lz" .align 2 gTrainerFrontPic_Guitarist:: @ 8E4E790 - .incbin "graphics/trainers/guitarist/front.4bpp.lz" + .incbin "graphics/trainers/guitarist.4bpp.lz" .align 2 gTrainerFrontPic_Gentleman:: @ 8E4EB14 - .incbin "graphics/trainers/gentleman/front.4bpp.lz" + .incbin "graphics/trainers/gentleman.4bpp.lz" .align 2 gTrainerFrontPic_Steven:: @ 8E4EE14 - .incbin "graphics/trainers/steven/front.4bpp.lz" + .incbin "graphics/trainers/steven.4bpp.lz" .align 2 gTrainerFrontPic_Maxie:: @ 8E4F14C - .incbin "graphics/trainers/maxie/front.4bpp.lz" + .incbin "graphics/trainers/maxie.4bpp.lz" .align 2 gTrainerFrontPic_RunningTriathleteF:: @ 8E4F440 - .incbin "graphics/trainers/running_triathlete_f/front.4bpp.lz" + .incbin "graphics/trainers/running_triathlete_f.4bpp.lz" .align 2 gTrainerFrontPic_RunningTriathleteM:: @ 8E4F6E4 - .incbin "graphics/trainers/running_triathlete_m/front.4bpp.lz" + .incbin "graphics/trainers/running_triathlete_m.4bpp.lz" .align 2 gTrainerFrontPic_BattleGirl:: @ 8E4F99C - .incbin "graphics/trainers/battle_girl/front.4bpp.lz" + .incbin "graphics/trainers/battle_girl.4bpp.lz" .align 2 gTrainerFrontPic_CyclingTriathleteF:: @ 8E4FCBC - .incbin "graphics/trainers/cycling_triathlete_f/front.4bpp.lz" + .incbin "graphics/trainers/cycling_triathlete_f.4bpp.lz" .align 2 gTrainerFrontPic_SwimmerM:: @ 8E500C8 - .incbin "graphics/trainers/swimmer_m/front.4bpp.lz" + .incbin "graphics/trainers/swimmer_m.4bpp.lz" .align 2 gTrainerFrontPic_PokefanF:: @ 8E50388 - .incbin "graphics/trainers/pokefan_f/front.4bpp.lz" + .incbin "graphics/trainers/pokefan_f.4bpp.lz" .align 2 gTrainerFrontPic_ExpertM:: @ 8E50754 - .incbin "graphics/trainers/expert_m/front.4bpp.lz" + .incbin "graphics/trainers/expert_m.4bpp.lz" .align 2 gTrainerFrontPic_ExpertF:: @ 8E50A94 - .incbin "graphics/trainers/expert_f/front.4bpp.lz" + .incbin "graphics/trainers/expert_f.4bpp.lz" .align 2 gTrainerFrontPic_SwimmingTriathleteM:: @ 8E50DB0 - .incbin "graphics/trainers/swimming_triathlete_m/front.4bpp.lz" + .incbin "graphics/trainers/swimming_triathlete_m.4bpp.lz" .align 2 gTrainerFrontPic_SwimmingTriathleteF:: @ 8E510DC - .incbin "graphics/trainers/swimming_triathlete_f/front.4bpp.lz" + .incbin "graphics/trainers/swimming_triathlete_f.4bpp.lz" .align 2 gTrainerFrontPic_DragonTamer:: @ 8E513B8 - .incbin "graphics/trainers/dragon_tamer/front.4bpp.lz" + .incbin "graphics/trainers/dragon_tamer.4bpp.lz" .align 2 gTrainerFrontPic_BirdKeeper:: @ 8E5170C - .incbin "graphics/trainers/bird_keeper/front.4bpp.lz" + .incbin "graphics/trainers/bird_keeper.4bpp.lz" .align 2 gTrainerFrontPic_NinjaBoy:: @ 8E51A44 - .incbin "graphics/trainers/ninja_boy/front.4bpp.lz" + .incbin "graphics/trainers/ninja_boy.4bpp.lz" .align 2 gTrainerFrontPic_ParasolLady:: @ 8E51D20 - .incbin "graphics/trainers/parasol_lady/front.4bpp.lz" + .incbin "graphics/trainers/parasol_lady.4bpp.lz" .align 2 gTrainerFrontPic_BugManiac:: @ 8E52058 - .incbin "graphics/trainers/bug_maniac/front.4bpp.lz" + .incbin "graphics/trainers/bug_maniac.4bpp.lz" .align 2 gTrainerFrontPic_Sailor:: @ 8E524A8 - .incbin "graphics/trainers/sailor/front.4bpp.lz" + .incbin "graphics/trainers/sailor.4bpp.lz" .align 2 gTrainerFrontPic_Collector:: @ 8E52858 - .incbin "graphics/trainers/collector/front.4bpp.lz" + .incbin "graphics/trainers/collector.4bpp.lz" .align 2 gTrainerFrontPic_PokemonBreederM:: @ 8E52C5C - .incbin "graphics/trainers/pokemon_breeder_m/front.4bpp.lz" + .incbin "graphics/trainers/pokemon_breeder_m.4bpp.lz" .align 2 gTrainerFrontPic_PokemonRangerM:: @ 8E52F8C - .incbin "graphics/trainers/pokemon_ranger_m/front.4bpp.lz" + .incbin "graphics/trainers/pokemon_ranger_m.4bpp.lz" .align 2 gTrainerFrontPic_PokemonRangerF:: @ 8E532D4 - .incbin "graphics/trainers/pokemon_ranger_f/front.4bpp.lz" + .incbin "graphics/trainers/pokemon_ranger_f.4bpp.lz" .align 2 gTrainerFrontPic_MagmaAdminM:: @ 8E53608 - .incbin "graphics/trainers/magma_admin_m/front.4bpp.lz" + .incbin "graphics/trainers/magma_admin_m.4bpp.lz" .align 2 gTrainerFrontPic_MagmaAdminF:: @ 8E539E0 - .incbin "graphics/trainers/magma_admin_f/front.4bpp.lz" + .incbin "graphics/trainers/magma_admin_f.4bpp.lz" .align 2 gTrainerFrontPic_AromaLady:: @ 8E53D90 - .incbin "graphics/trainers/aroma_lady/front.4bpp.lz" + .incbin "graphics/trainers/aroma_lady.4bpp.lz" .align 2 gTrainerFrontPic_RuinManiac:: @ 8E54054 - .incbin "graphics/trainers/ruin_maniac/front.4bpp.lz" + .incbin "graphics/trainers/ruin_maniac.4bpp.lz" .align 2 gTrainerFrontPic_CoolTrainerM:: @ 8E543F0 - .incbin "graphics/trainers/cool_trainer_m/front.4bpp.lz" + .incbin "graphics/trainers/cool_trainer_m.4bpp.lz" .align 2 gTrainerFrontPic_CoolTrainerF:: @ 8E546D8 - .incbin "graphics/trainers/cool_trainer_f/front.4bpp.lz" + .incbin "graphics/trainers/cool_trainer_f.4bpp.lz" .align 2 gTrainerFrontPic_Pokemaniac:: @ 8E549EC - .incbin "graphics/trainers/pokemaniac/front.4bpp.lz" + .incbin "graphics/trainers/pokemaniac.4bpp.lz" .align 2 gTrainerFrontPic_Kindler:: @ 8E54D5C - .incbin "graphics/trainers/kindler/front.4bpp.lz" + .incbin "graphics/trainers/kindler.4bpp.lz" .align 2 gTrainerFrontPic_Camper:: @ 8E550C8 - .incbin "graphics/trainers/camper/front.4bpp.lz" + .incbin "graphics/trainers/camper.4bpp.lz" .align 2 gTrainerFrontPic_Picnicker:: @ 8E553B0 - .incbin "graphics/trainers/picnicker/front.4bpp.lz" + .incbin "graphics/trainers/picnicker.4bpp.lz" .align 2 gTrainerFrontPic_PsychicM:: @ 8E55690 - .incbin "graphics/trainers/psychic_m/front.4bpp.lz" + .incbin "graphics/trainers/psychic_m.4bpp.lz" .align 2 gTrainerFrontPic_PsychicF:: @ 8E559BC - .incbin "graphics/trainers/psychic_f/front.4bpp.lz" + .incbin "graphics/trainers/psychic_f.4bpp.lz" .align 2 gTrainerFrontPic_SchoolKidF:: @ 8E55CE4 - .incbin "graphics/trainers/school_kid_f/front.4bpp.lz" + .incbin "graphics/trainers/school_kid_f.4bpp.lz" .align 2 gTrainerFrontPic_PokefanM:: @ 8E55F80 - .incbin "graphics/trainers/pokefan_m/front.4bpp.lz" + .incbin "graphics/trainers/pokefan_m.4bpp.lz" .align 2 gTrainerFrontPic_SisAndBro:: @ 8E5633C - .incbin "graphics/trainers/sis_and_bro/front.4bpp.lz" + .incbin "graphics/trainers/sis_and_bro.4bpp.lz" .align 2 gTrainerFrontPic_OldCouple:: @ 8E56788 - .incbin "graphics/trainers/old_couple/front.4bpp.lz" + .incbin "graphics/trainers/old_couple.4bpp.lz" .align 2 gTrainerFrontPic_AquaAdminM:: @ 8E56C98 - .incbin "graphics/trainers/aqua_admin_m/front.4bpp.lz" + .incbin "graphics/trainers/aqua_admin_m.4bpp.lz" .align 2 gTrainerFrontPic_AquaAdminF:: @ 8E5704C - .incbin "graphics/trainers/aqua_admin_f/front.4bpp.lz" + .incbin "graphics/trainers/aqua_admin_f.4bpp.lz" .align 2 gTrainerFrontPic_UnusedAqua:: @ 8E57410 - .incbin "graphics/trainers/unused_aqua/front.4bpp.lz" + .incbin "graphics/trainers/unused_aqua.4bpp.lz" .align 2 gTrainerFrontPic_Archie:: @ 8E5778C - .incbin "graphics/trainers/archie/front.4bpp.lz" + .incbin "graphics/trainers/archie.4bpp.lz" .align 2 gTrainerBackPic_Brendan:: @ 8E57AC8 - .incbin "graphics/trainers/brendan/back.4bpp.lz" + .incbin "graphics/trainers/brendan_back.4bpp.lz" .align 2 gTrainerBackPic_May:: @ 8E5889C - .incbin "graphics/trainers/may/back.4bpp.lz" + .incbin "graphics/trainers/may_back.4bpp.lz" .align 2 gTrainerBackPic_Wally:: @ 8E59588 - .incbin "graphics/trainers/wally/back.4bpp.lz" + .incbin "graphics/trainers/wally_back.4bpp.lz" .align 2 gTrainerPalette_Lass:: @ 8E59FD8 - .incbin "graphics/trainers/lass/palette.gbapal.lz" + .incbin "graphics/trainers/lass.gbapal.lz" .align 2 gTrainerPalette_Youngster:: @ 8E5A000 - .incbin "graphics/trainers/youngster/palette.gbapal.lz" + .incbin "graphics/trainers/youngster.gbapal.lz" .align 2 gTrainerPalette_Brendan:: @ 8E5A028 - .incbin "graphics/trainers/brendan/palette.gbapal.lz" + .incbin "graphics/trainers/brendan.gbapal.lz" .align 2 gTrainerPalette_May:: @ 8E5A050 - .incbin "graphics/trainers/may/palette.gbapal.lz" + .incbin "graphics/trainers/may.gbapal.lz" .align 2 gTrainerPalette_Hiker:: @ 8E5A078 - .incbin "graphics/trainers/hiker/palette.gbapal.lz" + .incbin "graphics/trainers/hiker.gbapal.lz" .align 2 gTrainerPalette_Beauty:: @ 8E5A0A0 - .incbin "graphics/trainers/beauty/palette.gbapal.lz" + .incbin "graphics/trainers/beauty.gbapal.lz" .align 2 gTrainerPalette_Fisherman:: @ 8E5A0C8 - .incbin "graphics/trainers/fisherman/palette.gbapal.lz" + .incbin "graphics/trainers/fisherman.gbapal.lz" .align 2 gTrainerPalette_Lady:: @ 8E5A0F0 - .incbin "graphics/trainers/lady/palette.gbapal.lz" + .incbin "graphics/trainers/lady.gbapal.lz" .align 2 gTrainerPalette_CyclingTriathleteM:: @ 8E5A118 - .incbin "graphics/trainers/cycling_triathlete_m/palette.gbapal.lz" + .incbin "graphics/trainers/cycling_triathlete_m.gbapal.lz" .align 2 gTrainerPalette_AquaGruntM:: @ 8E5A140 - .incbin "graphics/trainers/aqua_grunt_m/palette.gbapal.lz" + .incbin "graphics/trainers/aqua_grunt_m.gbapal.lz" .align 2 gTrainerPalette_Twins:: @ 8E5A168 - .incbin "graphics/trainers/twins/palette.gbapal.lz" + .incbin "graphics/trainers/twins.gbapal.lz" .align 2 gTrainerPalette_SwimmerF:: @ 8E5A190 - .incbin "graphics/trainers/swimmer_f/palette.gbapal.lz" + .incbin "graphics/trainers/swimmer_f.gbapal.lz" .align 2 gTrainerPalette_BugCatcher:: @ 8E5A1B8 - .incbin "graphics/trainers/bug_catcher/palette.gbapal.lz" + .incbin "graphics/trainers/bug_catcher.gbapal.lz" .align 2 gTrainerPalette_SchoolKidM:: @ 8E5A1E0 - .incbin "graphics/trainers/school_kid_m/palette.gbapal.lz" + .incbin "graphics/trainers/school_kid_m.gbapal.lz" .align 2 gTrainerPalette_RichBoy:: @ 8E5A208 - .incbin "graphics/trainers/rich_boy/palette.gbapal.lz" + .incbin "graphics/trainers/rich_boy.gbapal.lz" .align 2 gTrainerPalette_SrAndJr:: @ 8E5A230 - .incbin "graphics/trainers/sr_and_jr/palette.gbapal.lz" + .incbin "graphics/trainers/sr_and_jr.gbapal.lz" .align 2 gTrainerPalette_BlackBelt:: @ 8E5A258 - .incbin "graphics/trainers/black_belt/palette.gbapal.lz" + .incbin "graphics/trainers/black_belt.gbapal.lz" .align 2 gTrainerPalette_Wally:: @ 8E5A280 - .incbin "graphics/trainers/wally/palette.gbapal.lz" + .incbin "graphics/trainers/wally.gbapal.lz" .align 2 gTrainerPalette_AquaGruntF:: @ 8E5A2A8 - .incbin "graphics/trainers/aqua_grunt_f/palette.gbapal.lz" + .incbin "graphics/trainers/aqua_grunt_f.gbapal.lz" .align 2 gTrainerPalette_TuberF:: @ 8E5A2D0 - .incbin "graphics/trainers/tuber_f/palette.gbapal.lz" + .incbin "graphics/trainers/tuber_f.gbapal.lz" .align 2 gTrainerPalette_HexManiac:: @ 8E5A2F8 - .incbin "graphics/trainers/hex_maniac/palette.gbapal.lz" + .incbin "graphics/trainers/hex_maniac.gbapal.lz" .align 2 gTrainerPalette_PokemonBreederF:: @ 8E5A320 - .incbin "graphics/trainers/pokemon_breeder_f/palette.gbapal.lz" + .incbin "graphics/trainers/pokemon_breeder_f.gbapal.lz" .align 2 gTrainerPalette_MagmaGruntM:: @ 8E5A348 - .incbin "graphics/trainers/magma_grunt_m/palette.gbapal.lz" + .incbin "graphics/trainers/magma_grunt_m.gbapal.lz" .align 2 gTrainerPalette_MagmaGruntF:: @ 8E5A370 - .incbin "graphics/trainers/magma_grunt_f/palette.gbapal.lz" + .incbin "graphics/trainers/magma_grunt_f.gbapal.lz" .align 2 gTrainerPalette_Interviewer:: @ 8E5A398 - .incbin "graphics/trainers/interviewer/palette.gbapal.lz" + .incbin "graphics/trainers/interviewer.gbapal.lz" .align 2 gTrainerPalette_TuberM:: @ 8E5A3C0 - .incbin "graphics/trainers/tuber_m/palette.gbapal.lz" + .incbin "graphics/trainers/tuber_m.gbapal.lz" .align 2 gTrainerPalette_YoungCouple:: @ 8E5A3E8 - .incbin "graphics/trainers/young_couple/palette.gbapal.lz" + .incbin "graphics/trainers/young_couple.gbapal.lz" .align 2 gTrainerPalette_Guitarist:: @ 8E5A410 - .incbin "graphics/trainers/guitarist/palette.gbapal.lz" + .incbin "graphics/trainers/guitarist.gbapal.lz" .align 2 gTrainerPalette_Gentleman:: @ 8E5A438 - .incbin "graphics/trainers/gentleman/palette.gbapal.lz" + .incbin "graphics/trainers/gentleman.gbapal.lz" .align 2 gTrainerPalette_Steven:: @ 8E5A460 - .incbin "graphics/trainers/steven/palette.gbapal.lz" + .incbin "graphics/trainers/steven.gbapal.lz" .align 2 gTrainerPalette_Maxie:: @ 8E5A488 - .incbin "graphics/trainers/maxie/palette.gbapal.lz" + .incbin "graphics/trainers/maxie.gbapal.lz" .align 2 gTrainerPalette_RunningTriathleteF:: @ 8E5A4B0 - .incbin "graphics/trainers/running_triathlete_f/palette.gbapal.lz" + .incbin "graphics/trainers/running_triathlete_f.gbapal.lz" .align 2 gTrainerPalette_RunningTriathleteM:: @ 8E5A4D8 - .incbin "graphics/trainers/running_triathlete_m/palette.gbapal.lz" + .incbin "graphics/trainers/running_triathlete_m.gbapal.lz" .align 2 gTrainerPalette_BattleGirl:: @ 8E5A500 - .incbin "graphics/trainers/battle_girl/palette.gbapal.lz" + .incbin "graphics/trainers/battle_girl.gbapal.lz" .align 2 gTrainerPalette_CyclingTriathleteF:: @ 8E5A528 - .incbin "graphics/trainers/cycling_triathlete_f/palette.gbapal.lz" + .incbin "graphics/trainers/cycling_triathlete_f.gbapal.lz" .align 2 gTrainerPalette_SwimmerM:: @ 8E5A550 - .incbin "graphics/trainers/swimmer_m/palette.gbapal.lz" + .incbin "graphics/trainers/swimmer_m.gbapal.lz" .align 2 gTrainerPalette_PokefanF:: @ 8E5A578 - .incbin "graphics/trainers/pokefan_f/palette.gbapal.lz" + .incbin "graphics/trainers/pokefan_f.gbapal.lz" .align 2 gTrainerPalette_ExpertM:: @ 8E5A5A0 - .incbin "graphics/trainers/expert_m/palette.gbapal.lz" + .incbin "graphics/trainers/expert_m.gbapal.lz" .align 2 gTrainerPalette_ExpertF:: @ 8E5A5C8 - .incbin "graphics/trainers/expert_f/palette.gbapal.lz" + .incbin "graphics/trainers/expert_f.gbapal.lz" .align 2 gTrainerPalette_SwimmingTriathleteM:: @ 8E5A5F0 - .incbin "graphics/trainers/swimming_triathlete_m/palette.gbapal.lz" + .incbin "graphics/trainers/swimming_triathlete_m.gbapal.lz" .align 2 gTrainerPalette_SwimmingTriathleteF:: @ 8E5A618 - .incbin "graphics/trainers/swimming_triathlete_f/palette.gbapal.lz" + .incbin "graphics/trainers/swimming_triathlete_f.gbapal.lz" .align 2 gTrainerPalette_DragonTamer:: @ 8E5A640 - .incbin "graphics/trainers/dragon_tamer/palette.gbapal.lz" + .incbin "graphics/trainers/dragon_tamer.gbapal.lz" .align 2 gTrainerPalette_BirdKeeper:: @ 8E5A668 - .incbin "graphics/trainers/bird_keeper/palette.gbapal.lz" + .incbin "graphics/trainers/bird_keeper.gbapal.lz" .align 2 gTrainerPalette_NinjaBoy:: @ 8E5A690 - .incbin "graphics/trainers/ninja_boy/palette.gbapal.lz" + .incbin "graphics/trainers/ninja_boy.gbapal.lz" .align 2 gTrainerPalette_ParasolLady:: @ 8E5A6B8 - .incbin "graphics/trainers/parasol_lady/palette.gbapal.lz" + .incbin "graphics/trainers/parasol_lady.gbapal.lz" .align 2 gTrainerPalette_BugManiac:: @ 8E5A6E0 - .incbin "graphics/trainers/bug_maniac/palette.gbapal.lz" + .incbin "graphics/trainers/bug_maniac.gbapal.lz" .align 2 gTrainerPalette_Sailor:: @ 8E5A708 - .incbin "graphics/trainers/sailor/palette.gbapal.lz" + .incbin "graphics/trainers/sailor.gbapal.lz" .align 2 gTrainerPalette_Collector:: @ 8E5A730 - .incbin "graphics/trainers/collector/palette.gbapal.lz" + .incbin "graphics/trainers/collector.gbapal.lz" .align 2 gTrainerPalette_PokemonBreederM:: @ 8E5A758 - .incbin "graphics/trainers/pokemon_breeder_m/palette.gbapal.lz" + .incbin "graphics/trainers/pokemon_breeder_m.gbapal.lz" .align 2 gTrainerPalette_PokemonRangerM:: @ 8E5A780 - .incbin "graphics/trainers/pokemon_ranger_m/palette.gbapal.lz" + .incbin "graphics/trainers/pokemon_ranger_m.gbapal.lz" .align 2 gTrainerPalette_PokemonRangerF:: @ 8E5A7A8 - .incbin "graphics/trainers/pokemon_ranger_f/palette.gbapal.lz" + .incbin "graphics/trainers/pokemon_ranger_f.gbapal.lz" .align 2 gTrainerPalette_MagmaAdminM:: @ 8E5A7D0 - .incbin "graphics/trainers/magma_admin_m/palette.gbapal.lz" + .incbin "graphics/trainers/magma_admin_m.gbapal.lz" .align 2 gTrainerPalette_MagmaAdminF:: @ 8E5A7F8 - .incbin "graphics/trainers/magma_admin_f/palette.gbapal.lz" + .incbin "graphics/trainers/magma_admin_f.gbapal.lz" .align 2 gTrainerPalette_AromaLady:: @ 8E5A820 - .incbin "graphics/trainers/aroma_lady/palette.gbapal.lz" + .incbin "graphics/trainers/aroma_lady.gbapal.lz" .align 2 gTrainerPalette_RuinManiac:: @ 8E5A848 - .incbin "graphics/trainers/ruin_maniac/palette.gbapal.lz" + .incbin "graphics/trainers/ruin_maniac.gbapal.lz" .align 2 gTrainerPalette_CoolTrainerM:: @ 8E5A870 - .incbin "graphics/trainers/cool_trainer_m/palette.gbapal.lz" + .incbin "graphics/trainers/cool_trainer_m.gbapal.lz" .align 2 gTrainerPalette_CoolTrainerF:: @ 8E5A898 - .incbin "graphics/trainers/cool_trainer_f/palette.gbapal.lz" + .incbin "graphics/trainers/cool_trainer_f.gbapal.lz" .align 2 gTrainerPalette_Pokemaniac:: @ 8E5A8C0 - .incbin "graphics/trainers/pokemaniac/palette.gbapal.lz" + .incbin "graphics/trainers/pokemaniac.gbapal.lz" .align 2 gTrainerPalette_Kindler:: @ 8E5A8E8 - .incbin "graphics/trainers/kindler/palette.gbapal.lz" + .incbin "graphics/trainers/kindler.gbapal.lz" .align 2 gTrainerPalette_Camper:: @ 8E5A910 - .incbin "graphics/trainers/camper/palette.gbapal.lz" + .incbin "graphics/trainers/camper.gbapal.lz" .align 2 gTrainerPalette_Picnicker:: @ 8E5A938 - .incbin "graphics/trainers/picnicker/palette.gbapal.lz" + .incbin "graphics/trainers/picnicker.gbapal.lz" .align 2 gTrainerPalette_PsychicM:: @ 8E5A960 - .incbin "graphics/trainers/psychic_m/palette.gbapal.lz" + .incbin "graphics/trainers/psychic_m.gbapal.lz" .align 2 gTrainerPalette_PsychicF:: @ 8E5A988 - .incbin "graphics/trainers/psychic_f/palette.gbapal.lz" + .incbin "graphics/trainers/psychic_f.gbapal.lz" .align 2 gTrainerPalette_SchoolKidF:: @ 8E5A9B0 - .incbin "graphics/trainers/school_kid_f/palette.gbapal.lz" + .incbin "graphics/trainers/school_kid_f.gbapal.lz" .align 2 gTrainerPalette_PokefanM:: @ 8E5A9D8 - .incbin "graphics/trainers/pokefan_m/palette.gbapal.lz" + .incbin "graphics/trainers/pokefan_m.gbapal.lz" .align 2 gTrainerPalette_SisAndBro:: @ 8E5AA00 - .incbin "graphics/trainers/sis_and_bro/palette.gbapal.lz" + .incbin "graphics/trainers/sis_and_bro.gbapal.lz" .align 2 gTrainerPalette_OldCouple:: @ 8E5AA28 - .incbin "graphics/trainers/old_couple/palette.gbapal.lz" + .incbin "graphics/trainers/old_couple.gbapal.lz" .align 2 gTrainerPalette_AquaAdminM:: @ 8E5AA50 - .incbin "graphics/trainers/aqua_admin_m/palette.gbapal.lz" + .incbin "graphics/trainers/aqua_admin_m.gbapal.lz" .align 2 gTrainerPalette_AquaAdminF:: @ 8E5AA78 - .incbin "graphics/trainers/aqua_admin_f/palette.gbapal.lz" + .incbin "graphics/trainers/aqua_admin_f.gbapal.lz" .align 2 gTrainerPalette_UnusedAqua:: @ 8E5AAA0 - .incbin "graphics/trainers/unused_aqua/palette.gbapal.lz" + .incbin "graphics/trainers/unused_aqua.gbapal.lz" .align 2 gTrainerPalette_Archie:: @ 8E5AAC8 - .incbin "graphics/trainers/archie/palette.gbapal.lz" + .incbin "graphics/trainers/archie.gbapal.lz" .align 2 gTrainerFrontPic_Roxanne:: @ 8E5AAF0 - .incbin "graphics/trainers/roxanne/front.4bpp.lz" + .incbin "graphics/trainers/roxanne.4bpp.lz" .align 2 gTrainerFrontPic_Brawly:: @ 8E5ADDC - .incbin "graphics/trainers/brawly/front.4bpp.lz" + .incbin "graphics/trainers/brawly.4bpp.lz" .align 2 gTrainerFrontPic_Wattson:: @ 8E5B170 - .incbin "graphics/trainers/wattson/front.4bpp.lz" + .incbin "graphics/trainers/wattson.4bpp.lz" .align 2 gTrainerFrontPic_Flannery:: @ 8E5B4B8 - .incbin "graphics/trainers/flannery/front.4bpp.lz" + .incbin "graphics/trainers/flannery.4bpp.lz" .align 2 gTrainerFrontPic_Norman:: @ 8E5B838 - .incbin "graphics/trainers/norman/front.4bpp.lz" + .incbin "graphics/trainers/norman.4bpp.lz" .align 2 gTrainerFrontPic_Winona:: @ 8E5BB74 - .incbin "graphics/trainers/winona/front.4bpp.lz" + .incbin "graphics/trainers/winona.4bpp.lz" .align 2 gTrainerFrontPic_TateAndLiza:: @ 8E5BEF4 - .incbin "graphics/trainers/tate_and_liza/front.4bpp.lz" + .incbin "graphics/trainers/tate_and_liza.4bpp.lz" .align 2 gTrainerFrontPic_Wallace:: @ 8E5C338 - .incbin "graphics/trainers/wallace/front.4bpp.lz" + .incbin "graphics/trainers/wallace.4bpp.lz" .align 2 gTrainerFrontPic_Sidney:: @ 8E5C6B0 - .incbin "graphics/trainers/sidney/front.4bpp.lz" + .incbin "graphics/trainers/sidney.4bpp.lz" .align 2 gTrainerFrontPic_Phoebe:: @ 8E5C9E4 - .incbin "graphics/trainers/phoebe/front.4bpp.lz" + .incbin "graphics/trainers/phoebe.4bpp.lz" .align 2 gTrainerFrontPic_Glacia:: @ 8E5CCE4 - .incbin "graphics/trainers/glacia/front.4bpp.lz" + .incbin "graphics/trainers/glacia.4bpp.lz" .align 2 gTrainerFrontPic_Drake:: @ 8E5D068 - .incbin "graphics/trainers/drake/front.4bpp.lz" + .incbin "graphics/trainers/drake.4bpp.lz" .align 2 gTrainerPalette_Roxanne:: @ 8E5D410 - .incbin "graphics/trainers/roxanne/palette.gbapal.lz" + .incbin "graphics/trainers/roxanne.gbapal.lz" .align 2 gTrainerPalette_Brawly:: @ 8E5D438 - .incbin "graphics/trainers/brawly/palette.gbapal.lz" + .incbin "graphics/trainers/brawly.gbapal.lz" .align 2 gTrainerPalette_Wattson:: @ 8E5D460 - .incbin "graphics/trainers/wattson/palette.gbapal.lz" + .incbin "graphics/trainers/wattson.gbapal.lz" .align 2 gTrainerPalette_Flannery:: @ 8E5D488 - .incbin "graphics/trainers/flannery/palette.gbapal.lz" + .incbin "graphics/trainers/flannery.gbapal.lz" .align 2 gTrainerPalette_Norman:: @ 8E5D4B0 - .incbin "graphics/trainers/norman/palette.gbapal.lz" + .incbin "graphics/trainers/norman.gbapal.lz" .align 2 gTrainerPalette_Winona:: @ 8E5D4D8 - .incbin "graphics/trainers/winona/palette.gbapal.lz" + .incbin "graphics/trainers/winona.gbapal.lz" .align 2 gTrainerPalette_TateAndLiza:: @ 8E5D500 - .incbin "graphics/trainers/tate_and_liza/palette.gbapal.lz" + .incbin "graphics/trainers/tate_and_liza.gbapal.lz" .align 2 gTrainerPalette_Wallace:: @ 8E5D528 - .incbin "graphics/trainers/wallace/palette.gbapal.lz" + .incbin "graphics/trainers/wallace.gbapal.lz" .align 2 gTrainerPalette_Sidney:: @ 8E5D550 - .incbin "graphics/trainers/sidney/palette.gbapal.lz" + .incbin "graphics/trainers/sidney.gbapal.lz" .align 2 gTrainerPalette_Phoebe:: @ 8E5D578 - .incbin "graphics/trainers/phoebe/palette.gbapal.lz" + .incbin "graphics/trainers/phoebe.gbapal.lz" .align 2 gTrainerPalette_Glacia:: @ 8E5D5A0 - .incbin "graphics/trainers/glacia/palette.gbapal.lz" + .incbin "graphics/trainers/glacia.gbapal.lz" .align 2 gTrainerPalette_Drake:: @ 8E5D5C8 - .incbin "graphics/trainers/drake/palette.gbapal.lz" + .incbin "graphics/trainers/drake.gbapal.lz" diff --git a/data/hall_of_fame.s b/data/hall_of_fame.s deleted file mode 100644 index 0795e7389..000000000 --- a/data/hall_of_fame.s +++ /dev/null @@ -1,230 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - - .align 2 -gUnknown_0840B514:: @ 840B514 - obj_tiles gContestConfetti_Gfx, 0x220, 1001 - .space 8 - -gUnknown_0840B524:: @ 840B524 - obj_pal gContestConfetti_Pal, 1001 - .space 8 - - .align 2 -gUnknown_0840B534:: @ 840B534 - .2byte 120,210,120, 40 - .2byte 326,220, 56, 40 - .2byte -86,220,184, 40 - .2byte 120,-62,120, 88 - .2byte -25,-62,200, 88 - .2byte 265,-62, 40, 88 - - .align 2 -gUnknown_0840B564:: @ 840B564 - .2byte 120,214,120, 64 - .2byte 281,214, 56, 64 - .2byte -41,214,184, 64 - - .align 2 -gUnknown_0840B57C:: @ 840B57C - .2byte 1002 - .2byte 1002 - .space 0x10 - -@ unused data? - .byte 2, 1, 3, 6, 4, 5 - - .align 2 -gOamData_840B598:: @ 840B598 - .2byte 0x0000 - .2byte 0xC000 - .2byte 0x0000 - - .align 2 -gUnknown_0840B5A0:: @ 840B5A0 - .4byte 0x02008000 - .4byte 0x0200A000 - .4byte 0x0200C000 - .4byte 0x0200E000 - .4byte 0x02010000 - .4byte 0x02014000 - .4byte 0x02018000 - - .align 2 -gSpriteImageTable_840B5BC:: @ 840B5BC - obj_frame_tiles 0x02008000, 0x800 - obj_frame_tiles 0x02008800, 0x800 - obj_frame_tiles 0x02009000, 0x800 - obj_frame_tiles 0x02009800, 0x800 - - .align 2 -gSpriteImageTable_840B5DC:: @ 840B5DC - obj_frame_tiles 0x0200A000, 0x800 - obj_frame_tiles 0x0200A800, 0x800 - obj_frame_tiles 0x0200B000, 0x800 - obj_frame_tiles 0x0200B800, 0x800 - - .align 2 -gSpriteImageTable_840B5FC:: @ 840B5FC - obj_frame_tiles 0x0200C000, 0x800 - obj_frame_tiles 0x0200C800, 0x800 - obj_frame_tiles 0x0200D000, 0x800 - obj_frame_tiles 0x0200D800, 0x800 - - .align 2 -gSpriteImageTable_840B61C:: @ 840B61C - obj_frame_tiles 0x0200E000, 0x800 - obj_frame_tiles 0x0200E800, 0x800 - obj_frame_tiles 0x0200F000, 0x800 - obj_frame_tiles 0x0200F800, 0x800 - - .align 2 -gSpriteImageTable_840B63C:: @ 840B63C - obj_frame_tiles 0x02010000, 0x800 - obj_frame_tiles 0x02010800, 0x800 - obj_frame_tiles 0x02011000, 0x800 - obj_frame_tiles 0x02011800, 0x800 - - .align 2 -gSpriteImageTable_840B65C:: @ 840B65C - obj_frame_tiles 0x02014000, 0x800 - obj_frame_tiles 0x02014800, 0x800 - obj_frame_tiles 0x02015000, 0x800 - obj_frame_tiles 0x02015800, 0x800 - - .align 2 -gSpriteImageTable_840B67C:: @ 840B67C - obj_frame_tiles 0x02018000, 0x800 - obj_frame_tiles 0x02018800, 0x800 - obj_frame_tiles 0x02019000, 0x800 - obj_frame_tiles 0x02019800, 0x800 - - .align 2 -gUnknown_0840B69C:: @ 840B69C - .4byte gSpriteImageTable_840B5BC - .4byte gSpriteImageTable_840B5DC - .4byte gSpriteImageTable_840B5FC - .4byte gSpriteImageTable_840B61C - .4byte gSpriteImageTable_840B63C - .4byte gSpriteImageTable_840B65C - .4byte gSpriteImageTable_840B67C - -gUnknown_0840B6B8:: @ 840B6B8 - spr_template -1, -1, gOamData_840B598, NULL, gSpriteImageTable_840B5BC, gDummySpriteAffineAnimTable, nullsub_81 - - .align 2 -gOamData_840B6D0:: @ 840B6D0 - .2byte 0x0000 - .2byte 0x0000 - .2byte 0x0000 - - .align 2 -gSpriteAnim_840B6D8:: @ 840B6D8 - obj_image_anim_frame 0, 30 - obj_image_anim_end - - .align 2 -gSpriteAnim_840B6E0:: @ 840B6E0 - obj_image_anim_frame 1, 30 - obj_image_anim_end - - .align 2 -gSpriteAnim_840B6E8:: @ 840B6E8 - obj_image_anim_frame 2, 30 - obj_image_anim_end - - .align 2 -gSpriteAnim_840B6F0:: @ 840B6F0 - obj_image_anim_frame 3, 30 - obj_image_anim_end - - .align 2 -gSpriteAnim_840B6F8:: @ 840B6F8 - obj_image_anim_frame 4, 30 - obj_image_anim_end - - .align 2 -gSpriteAnim_840B700:: @ 840B700 - obj_image_anim_frame 5, 30 - obj_image_anim_end - - .align 2 -gSpriteAnim_840B708:: @ 840B708 - obj_image_anim_frame 6, 30 - obj_image_anim_end - - .align 2 -gSpriteAnim_840B710:: @ 840B710 - obj_image_anim_frame 7, 30 - obj_image_anim_end - - .align 2 -gSpriteAnim_840B718:: @ 840B718 - obj_image_anim_frame 8, 30 - obj_image_anim_end - - .align 2 -gSpriteAnim_840B720:: @ 840B720 - obj_image_anim_frame 9, 30 - obj_image_anim_end - - .align 2 -gSpriteAnim_840B728:: @ 840B728 - obj_image_anim_frame 10, 30 - obj_image_anim_end - - .align 2 -gSpriteAnim_840B730:: @ 840B730 - obj_image_anim_frame 11, 30 - obj_image_anim_end - - .align 2 -gSpriteAnim_840B738:: @ 840B738 - obj_image_anim_frame 12, 30 - obj_image_anim_end - - .align 2 -gSpriteAnim_840B740:: @ 840B740 - obj_image_anim_frame 13, 30 - obj_image_anim_end - - .align 2 -gSpriteAnim_840B748:: @ 840B748 - obj_image_anim_frame 14, 30 - obj_image_anim_end - - .align 2 -gSpriteAnim_840B750:: @ 840B750 - obj_image_anim_frame 15, 30 - obj_image_anim_end - - .align 2 -gSpriteAnim_840B758:: @ 840B758 - obj_image_anim_frame 16, 30 - obj_image_anim_end - - .align 2 -gSpriteAnimTable_840B760:: @ 840B760 - .4byte gSpriteAnim_840B6D8 - .4byte gSpriteAnim_840B6E0 - .4byte gSpriteAnim_840B6E8 - .4byte gSpriteAnim_840B6F0 - .4byte gSpriteAnim_840B6F8 - .4byte gSpriteAnim_840B700 - .4byte gSpriteAnim_840B708 - .4byte gSpriteAnim_840B710 - .4byte gSpriteAnim_840B718 - .4byte gSpriteAnim_840B720 - .4byte gSpriteAnim_840B728 - .4byte gSpriteAnim_840B730 - .4byte gSpriteAnim_840B738 - .4byte gSpriteAnim_840B740 - .4byte gSpriteAnim_840B748 - .4byte gSpriteAnim_840B750 - .4byte gSpriteAnim_840B758 - - .align 2 -gSpriteTemplate_840B7A4:: @ 840B7A4 - spr_template 1001, 1001, gOamData_840B6D0, gSpriteAnimTable_840B760, NULL, gDummySpriteAffineAnimTable, sub_814386C diff --git a/data/ingame_trades.inc b/data/ingame_trades.inc deleted file mode 100644 index f5258e26c..000000000 --- a/data/ingame_trades.inc +++ /dev/null @@ -1,108 +0,0 @@ - .align 2 -gIngameTrades:: @ 8215AC4 - .string "MAKIT$", 11 @ nickname - .space 1 - .2byte SPECIES_MAKUHITA @ NPC mon species - .byte 5 @ HP IV - .byte 5 @ attack IV - .byte 4 @ defense IV - .byte 4 @ speed IV - .byte 4 @ sp. attack IV - .byte 4 @ sp. defense IV - .byte TRUE @ second ability - .space 3 - .4byte 49562 @ OT ID - .byte 5 @ cool - .byte 5 @ beauty - .byte 5 @ cute - .byte 5 @ smart - .byte 30 @ tough - .space 3 - .4byte 0x9C40 @ personality value - .2byte ITEM_X_ATTACK @ held item - .byte -1 @ mail num - .string "ELYSSA$", 11 @ OT name - .byte MALE @ OT gender - .byte 10 @ sheen - .2byte SPECIES_SLAKOTH @ player mon species - .space 2 - - .string "SKITIT$", 11 @ nickname - .space 1 - .2byte SPECIES_SKITTY @ NPC mon species - .byte 5 @ HP IV - .byte 4 @ attack IV - .byte 4 @ defense IV - .byte 5 @ speed IV - .byte 4 @ sp. attack IV - .byte 4 @ sp. defense IV - .byte FALSE @ second ability - .space 3 - .4byte 2259 @ OT ID - .byte 5 @ cool - .byte 5 @ beauty - .byte 30 @ cute - .byte 5 @ smart - .byte 5 @ tough - .space 3 - .4byte 0x498A2E17 @ personality value - .2byte ITEM_GLITTER_MAIL @ held item - .byte 0 @ mail num - .string "DARRELL$", 11 @ OT name - .byte FEMALE @ OT gender - .byte 10 @ sheen - .2byte SPECIES_PIKACHU @ player mon species - .space 2 - - .string "COROSO$", 11 @ nickname - .space 1 - .2byte SPECIES_CORSOLA @ NPC mon species - .byte 4 @ HP IV - .byte 4 @ attack IV - .byte 5 @ defense IV - .byte 4 @ speed IV - .byte 4 @ sp. attack IV - .byte 5 @ sp. defense IV - .byte TRUE @ second ability - .space 3 - .4byte 50183 @ OT ID - .byte 5 @ cool - .byte 30 @ beauty - .byte 5 @ cute - .byte 5 @ smart - .byte 5 @ tough - .space 3 - .4byte 0x4C970B7F @ personality value - .2byte ITEM_TROPIC_MAIL @ held item - .byte 1 @ mail num - .string "LANE$", 11 @ OT name - .byte FEMALE @ OT gender - .byte 10 @ sheen - .2byte SPECIES_BELLOSSOM @ player mon species - .space 2 - - .align 1 -gIngameTradeMail:: @ 8215B78 -@ 0 - ec_pokemon1 PIKACHU - ec_word THANK_YOU - ec_word EXCL - ec_word MY - ec_pokemon1 SKITTY - ec_word EATS - ec_word A_LOT - ec_word NOW - ec_word EXCL - .2byte 0 - -@ 1 - ec_word I - ec_word WANT - ec_word TO - ec_word SEE - ec_word A - ec_move2 PETAL_DANCE - ec_word IT_S - ec_word SO - ec_word PRETTY - .2byte 0 diff --git a/data/intro_credits_graphics.s b/data/intro_credits_graphics.s index 82931f6ee..8c096e1cd 100644 --- a/data/intro_credits_graphics.s +++ b/data/intro_credits_graphics.s @@ -338,11 +338,11 @@ gSpriteAnimTable_8416D28:: @ 8416D28 .4byte gSpriteAnim_8416D14 .align 2 -gSpriteTemplate_8416D2C:: @ 8416D2C +gSpriteTemplate_Brendan:: @ 8416D2C spr_template 1001, 1002, gOamData_8416D0C, gSpriteAnimTable_8416D28, NULL, gDummySpriteAffineAnimTable, sub_81492A0 .align 2 -gSpriteTemplate_8416D44:: @ 8416D44 +gSpriteTemplate_May:: @ 8416D44 spr_template 1001, 1003, gOamData_8416D0C, gSpriteAnimTable_8416D28, NULL, gDummySpriteAffineAnimTable, sub_81492A0 .align 2 diff --git a/data/item.s b/data/item.s deleted file mode 100644 index 0c2aa8593..000000000 --- a/data/item.s +++ /dev/null @@ -1,10 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - -@ 83C2028 - .include "data/text/item_descriptions.inc" - -@ 83C5564 - .include "data/items.inc" diff --git a/data/item_menu.s b/data/item_menu.s deleted file mode 100644 index f66961b46..000000000 --- a/data/item_menu.s +++ /dev/null @@ -1,289 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - -@ pointer to items, capacity - .align 2 -gBagPockets:: @ 83C1618 - .4byte gSaveBlock1 + 0x560, 20 @ Items - .4byte gSaveBlock1 + 0x600, 16 @ Poké Balls - .4byte gSaveBlock1 + 0x640, 64 @ TMs & HMs - .4byte gSaveBlock1 + 0x740, 46 @ Berries - .4byte gSaveBlock1 + 0x5B0, 20 @ Key Items - - .align 2 -gUnknown_083C1640:: @ 83C1640 - .4byte OtherText_Use, sub_80A5B78 - .4byte OtherText_Toss, sub_80A5F14 - .4byte gOtherText_CancelNoTerminator, sub_80A5F80 - .4byte OtherText_Register, sub_80A5FAC - .4byte OtherText_Use, ItemMenu_UseInBattle - .4byte gOtherText_CancelNoTerminator, sub_80A7124 - .4byte OtherText_Give2, ItemMenu_Give - .4byte OtherText_CheckTag, sub_80A6178 - .4byte gOtherText_CancelWithTerminator, 0x0 - .4byte OtherText_Confirm, sub_80A69E0 - -@ 6-byte entries; format of entry is unknown -gUnknown_083C1690:: @ 83C1690 - .byte 0, 1, 6, 2, 0, 0 - .byte 6, 1, 8, 2, 0, 0 - .byte 0, 8, 6, 2, 0, 0 - .byte 7, 0, 1, 8, 6, 2 - .byte 0, 8, 3, 2, 0, 0 - -gUnknown_083C16AE:: @ 83C16AE - .byte 6, 2 - .byte 6, 2 - .byte 6, 2 - .byte 6, 2 - .byte 2, 0 - -gUnknown_083C16B8:: @ 83C16B8 - .byte 7, 9, 8, 2 - - .align 2 -gUnknown_083C16BC:: @ 83C16BC - .4byte sub_80A59D0 - .4byte sub_80A599C - .4byte sub_80A7024 - .4byte sub_80A70D8 - .4byte sub_80A6214 - .4byte sub_80A61EC - .4byte sub_80A6354 - .4byte sub_80A631C - .4byte sub_80A6918 - .4byte sub_80A68F0 - .4byte sub_80A59D0 - .4byte sub_80A69B8 - .4byte sub_80A6C6C - .4byte sub_80A6A4C - - .align 2 -gUnknown_083C16F4:: @ 83C16F4 - .4byte sub_80A5E60 - .4byte sub_80A5E90 - - .align 2 -gUnknown_083C16FC:: @ 83C16FC - .4byte sub_80A65AC - .4byte sub_80A6618 - - .align 1 -gUnknown_083C1704:: @ 83C1704 - .2byte 0x41EE, 0x7FFF - -gUnknown_083C1708:: @ 83C1708 - .byte 4, 5 - -gUnknown_083C170A:: @ 83C170A - .byte 5, 0 - - .align 2 -gPalette_83C170C:: @ 83C170C - .incbin "graphics/unknown/83C170C.gbapal" - - .align 2 -gSpriteImage_83C172C:: @ 83C172C - .incbin "graphics/unknown_sprites/83C172C.4bpp" - - .align 2 - .incbin "graphics/unused/cherry.4bpp" - - .align 2 - .incbin "graphics/unused/cherry.gbapal" - - .align 2 -gOamData_83C1C4C:: @ 83C1C4C - .2byte 0x0000 - .2byte 0xC000 - .2byte 0x7800 - - .align 2 -gSpriteAnim_83C1C54:: @ 83C1C54 - obj_image_anim_frame 0, 4 - obj_image_anim_end - - .align 2 -gSpriteAnim_83C1C5C:: @ 83C1C5C - obj_image_anim_frame 64, 4 - obj_image_anim_end - - .align 2 -gSpriteAnim_83C1C64:: @ 83C1C64 - obj_image_anim_frame 128, 4 - obj_image_anim_end - - .align 2 -gSpriteAnim_83C1C6C:: @ 83C1C6C - obj_image_anim_frame 192, 4 - obj_image_anim_end - - .align 2 -gSpriteAnim_83C1C74:: @ 83C1C74 - obj_image_anim_frame 256, 4 - obj_image_anim_end - - .align 2 -gSpriteAnim_83C1C7C:: @ 83C1C7C - obj_image_anim_frame 320, 4 - obj_image_anim_end - - .align 2 -gSpriteAnimTable_83C1C84:: @ 83C1C84 - .4byte gSpriteAnim_83C1C54 - .4byte gSpriteAnim_83C1C5C - .4byte gSpriteAnim_83C1C6C - .4byte gSpriteAnim_83C1C74 - .4byte gSpriteAnim_83C1C7C - .4byte gSpriteAnim_83C1C64 - - .align 2 -gSpriteAffineAnim_83C1C9C:: @ 83C1C9C - obj_rot_scal_anim_frame 0x0, 0x0, -2, 2 - obj_rot_scal_anim_frame 0x0, 0x0, 2, 4 - obj_rot_scal_anim_frame 0x0, 0x0, -2, 4 - obj_rot_scal_anim_frame 0x0, 0x0, 2, 2 - obj_rot_scal_anim_end - - .align 2 -gSpriteAffineAnimTable_83C1CC4:: @ 83C1CC4 - .4byte gSpriteAffineAnim_83C1C9C - - .align 2 -gUnknown_083C1CC8:: @ 83C1CC8 - obj_tiles gBagMaleTiles, 0x3000, 30000 - - .align 2 -gUnknown_083C1CD0:: @ 83C1CD0 - obj_tiles gBagFemaleTiles, 0x3000, 30000 - - .align 2 -gUnknown_083C1CD8:: @ 83C1CD8 - obj_pal gBagPalette, 30000 - - .align 2 -gSpriteTemplate_83C1CE0:: @ 83C1CE0 - spr_template 30000, 30000, gOamData_83C1C4C, gSpriteAnimTable_83C1C84, NULL, gSpriteAffineAnimTable_83C1CC4, sub_80A7998 - - .align 2 -gOamData_83C1CF8:: @ 83C1CF8 - .2byte 0x0000 - .2byte 0x4800 - .2byte 0x8800 - - .align 2 -gSpriteAffineAnim_83C1D00:: @ 83C1D00 - obj_rot_scal_anim_frame 0x0, 0x0, 8, 32 - obj_rot_scal_anim_end - - .align 2 -gSpriteAffineAnim_83C1D10:: @ 83C1D10 - obj_rot_scal_anim_frame 0x0, 0x0, -8, 32 - obj_rot_scal_anim_end - - .align 2 -gSpriteAffineAnimTable_83C1D20:: @ 83C1D20 - .4byte gSpriteAffineAnim_83C1D00 - .4byte gSpriteAffineAnim_83C1D10 - - .align 2 -gSpriteImageTable_83C1D28:: @ 83C1D28 - obj_frame_tiles gSpriteImage_83C172C, 0x80 - - .align 2 -gUnknown_083C1D30:: @ 83C1D30 - obj_pal gPalette_83C170C, 8 - - .align 2 -gSpriteTemplate_83C1D38:: @ 83C1D38 - spr_template 0xFFFF, 8, gOamData_83C1CF8, gSpriteAnimTable_83C1C84, gSpriteImageTable_83C1D28, gSpriteAffineAnimTable_83C1D20, sub_80A7B28 - - .align 2 -gOamData_83C1D50:: @ 83C1D50 - .2byte 0x0000 - .2byte 0xC000 - .2byte 0x7400 - - .align 2 -gOamData_83C1D58:: @ 83C1D58 - .2byte 0x0300 - .2byte 0xC000 - .2byte 0x7000 - - .align 2 -gSpriteAnim_83C1D60:: @ 83C1D60 - obj_image_anim_frame 0, 0 - obj_image_anim_end - - .align 2 -gSpriteAnimTable_83C1D68:: @ 83C1D68 - .4byte gSpriteAnim_83C1D60 - - .align 2 -gSpriteImageTable_83C1D6C:: @ 83C1D6C - obj_frame_tiles 0x02000000, 0x800 - - .align 2 -gSpriteTemplate_83C1D74:: @ 83C1D74 - spr_template 0xFFFF, 30020, gOamData_83C1D50, gSpriteAnimTable_83C1D68, gSpriteImageTable_83C1D6C, gDummySpriteAffineAnimTable, sub_80A7DC4 - - .align 2 -gSpriteAffineAnim_83C1D8C:: @ 83C1D8C - obj_rot_scal_anim_frame 0xFFFF, 0xFFFF, -3, 96 - obj_rot_scal_anim_frame 0x0, 0x0, 0, 16 - obj_rot_scal_anim_frame 0xFFFE, 0xFFFE, -1, 64 - obj_rot_scal_anim_frame 0xFFF8, 0x0, 0, 16 - obj_rot_scal_anim_frame 0x0, 0xFFF8, 0, 16 - obj_rot_scal_anim_frame 0x100, 0x100, 0, 0 - obj_rot_scal_anim_jump 0 - - .align 2 -gSpriteAffineAnim_83C1DC4:: @ 83C1DC4 - obj_rot_scal_anim_frame 0xFFFF, 0xFFFF, 3, 96 - obj_rot_scal_anim_frame 0x0, 0x0, 0, 16 - obj_rot_scal_anim_frame 0xFFFE, 0xFFFE, 1, 64 - obj_rot_scal_anim_frame 0xFFF8, 0x0, 0, 16 - obj_rot_scal_anim_frame 0x0, 0xFFF8, 0, 16 - obj_rot_scal_anim_frame 0x100, 0x100, 0, 0 - obj_rot_scal_anim_jump 0 - - .align 2 -gSpriteAffineAnimTable_83C1DFC:: @ 83C1DFC - .4byte gSpriteAffineAnim_83C1D8C - .4byte gSpriteAffineAnim_83C1DC4 - - .align 2 -gSpriteTemplate_83C1E04:: @ 83C1E04 - spr_template 0xFFFF, 30020, gOamData_83C1D58, gSpriteAnimTable_83C1D68, gSpriteImageTable_83C1D6C, gSpriteAffineAnimTable_83C1DFC, SpriteCallbackDummy - -@ 83C1E1C - .include "data/graphics/berries/graphics_table.inc" - - .align 2 -gUnknown_083C1F74:: @ 83C1F74 - obj_tiles gBerryCheckCircle_Gfx, 2048, 0x2710 - - .align 2 -gUnknown_083C1F7C:: @ 83C1F7C - obj_pal gBerryCheck_Pal, 0x2710 - - .align 2 -gOamData_83C1F84:: @ 83C1F84 - .2byte 0x0000 - .2byte 0x8000 - .2byte 0x0400 - - .align 2 -gSpriteAnim_83C1F8C:: @ 83C1F8C - obj_image_anim_frame 0, 0 - obj_image_anim_end - - .align 2 -gSpriteAnimTable_83C1F94:: @ 83C1F94 - .4byte gSpriteAnim_83C1F8C - - .align 2 -gSpriteTemplate_83C1F98:: @ 83C1F98 - spr_template 10000, 10000, gOamData_83C1F84, gSpriteAnimTable_83C1F94, NULL, gDummySpriteAffineAnimTable, sub_80A7DC4 diff --git a/data/items.inc b/data/items.inc deleted file mode 100644 index 0074a6bfa..000000000 --- a/data/items.inc +++ /dev/null @@ -1,5236 +0,0 @@ - .align 2 -gItems:: @ 83C5564 - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "MASTER BALL$", 14 - .2byte ITEM_MASTER_BALL - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_MasterBall - .byte 0 - .byte 0 - .byte POCKET_POKE_BALLS - .byte 0 - .4byte NULL - .4byte 2 - .4byte ItemUseInBattle_PokeBall - .4byte 0 - - .string "ULTRA BALL$", 14 - .2byte ITEM_ULTRA_BALL - .2byte 1200 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_UltraBall - .byte 0 - .byte 0 - .byte POCKET_POKE_BALLS - .byte 1 - .4byte NULL - .4byte 2 - .4byte ItemUseInBattle_PokeBall - .4byte 1 - - .string "GREAT BALL$", 14 - .2byte ITEM_GREAT_BALL - .2byte 600 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_GreatBall - .byte 0 - .byte 0 - .byte POCKET_POKE_BALLS - .byte 2 - .4byte NULL - .4byte 2 - .4byte ItemUseInBattle_PokeBall - .4byte 2 - - .string "POKé BALL$", 14 - .2byte ITEM_POKE_BALL - .2byte 200 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_PokeBall - .byte 0 - .byte 0 - .byte POCKET_POKE_BALLS - .byte 3 - .4byte NULL - .4byte 2 - .4byte ItemUseInBattle_PokeBall - .4byte 3 - - .string "SAFARI BALL$", 14 - .2byte ITEM_SAFARI_BALL - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_SafariBall - .byte 0 - .byte 0 - .byte POCKET_POKE_BALLS - .byte 4 - .4byte NULL - .4byte 2 - .4byte ItemUseInBattle_PokeBall - .4byte 4 - - .string "NET BALL$", 14 - .2byte ITEM_NET_BALL - .2byte 1000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_NetBall - .byte 0 - .byte 0 - .byte POCKET_POKE_BALLS - .byte 5 - .4byte NULL - .4byte 2 - .4byte ItemUseInBattle_PokeBall - .4byte 5 - - .string "DIVE BALL$", 14 - .2byte ITEM_DIVE_BALL - .2byte 1000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_DiveBall - .byte 0 - .byte 0 - .byte POCKET_POKE_BALLS - .byte 6 - .4byte NULL - .4byte 2 - .4byte ItemUseInBattle_PokeBall - .4byte 6 - - .string "NEST BALL$", 14 - .2byte ITEM_NEST_BALL - .2byte 1000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_NestBall - .byte 0 - .byte 0 - .byte POCKET_POKE_BALLS - .byte 7 - .4byte NULL - .4byte 2 - .4byte ItemUseInBattle_PokeBall - .4byte 7 - - .string "REPEAT BALL$", 14 - .2byte ITEM_REPEAT_BALL - .2byte 1000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_RepeatBall - .byte 0 - .byte 0 - .byte POCKET_POKE_BALLS - .byte 8 - .4byte NULL - .4byte 2 - .4byte ItemUseInBattle_PokeBall - .4byte 8 - - .string "TIMER BALL$", 14 - .2byte ITEM_TIMER_BALL - .2byte 1000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TimerBall - .byte 0 - .byte 0 - .byte POCKET_POKE_BALLS - .byte 9 - .4byte NULL - .4byte 2 - .4byte ItemUseInBattle_PokeBall - .4byte 9 - - .string "LUXURY BALL$", 14 - .2byte ITEM_LUXURY_BALL - .2byte 1000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_LuxuryBall - .byte 0 - .byte 0 - .byte POCKET_POKE_BALLS - .byte 10 - .4byte NULL - .4byte 2 - .4byte ItemUseInBattle_PokeBall - .4byte 10 - - .string "PREMIER BALL$", 14 - .2byte ITEM_PREMIER_BALL - .2byte 200 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_PremierBall - .byte 0 - .byte 0 - .byte POCKET_POKE_BALLS - .byte 11 - .4byte NULL - .4byte 2 - .4byte ItemUseInBattle_PokeBall - .4byte 11 - - .string "POTION$", 14 - .2byte ITEM_POTION - .2byte 300 @ price - .byte HOLD_EFFECT_NONE - .byte 20 - .4byte gItemDescription_Potion - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 1 - .4byte ItemUseOutOfBattle_Medicine - .4byte 1 - .4byte ItemUseInBattle_Medicine - .4byte 0 - - .string "ANTIDOTE$", 14 - .2byte ITEM_ANTIDOTE - .2byte 100 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Antidote - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 1 - .4byte ItemUseOutOfBattle_Medicine - .4byte 1 - .4byte ItemUseInBattle_Medicine - .4byte 0 - - .string "BURN HEAL$", 14 - .2byte ITEM_BURN_HEAL - .2byte 250 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_BurnHeal - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 1 - .4byte ItemUseOutOfBattle_Medicine - .4byte 1 - .4byte ItemUseInBattle_Medicine - .4byte 0 - - .string "ICE HEAL$", 14 - .2byte ITEM_ICE_HEAL - .2byte 250 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_IceHeal - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 1 - .4byte ItemUseOutOfBattle_Medicine - .4byte 1 - .4byte ItemUseInBattle_Medicine - .4byte 0 - - .string "AWAKENING$", 14 - .2byte ITEM_AWAKENING - .2byte 250 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Awakening - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 1 - .4byte ItemUseOutOfBattle_Medicine - .4byte 1 - .4byte ItemUseInBattle_Medicine - .4byte 0 - - .string "PARLYZ HEAL$", 14 - .2byte ITEM_PARALYZE_HEAL - .2byte 200 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_ParalyzeHeal - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 1 - .4byte ItemUseOutOfBattle_Medicine - .4byte 1 - .4byte ItemUseInBattle_Medicine - .4byte 0 - - .string "FULL RESTORE$", 14 - .2byte ITEM_FULL_RESTORE - .2byte 3000 @ price - .byte HOLD_EFFECT_NONE - .byte 255 - .4byte gItemDescription_FullRestore - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 1 - .4byte ItemUseOutOfBattle_Medicine - .4byte 1 - .4byte ItemUseInBattle_Medicine - .4byte 0 - - .string "MAX POTION$", 14 - .2byte ITEM_MAX_POTION - .2byte 2500 @ price - .byte HOLD_EFFECT_NONE - .byte 255 - .4byte gItemDescription_MaxPotion - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 1 - .4byte ItemUseOutOfBattle_Medicine - .4byte 1 - .4byte ItemUseInBattle_Medicine - .4byte 0 - - .string "HYPER POTION$", 14 - .2byte ITEM_HYPER_POTION - .2byte 1200 @ price - .byte HOLD_EFFECT_NONE - .byte 200 - .4byte gItemDescription_HyperPotion - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 1 - .4byte ItemUseOutOfBattle_Medicine - .4byte 1 - .4byte ItemUseInBattle_Medicine - .4byte 0 - - .string "SUPER POTION$", 14 - .2byte ITEM_SUPER_POTION - .2byte 700 @ price - .byte HOLD_EFFECT_NONE - .byte 50 - .4byte gItemDescription_SuperPotion - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 1 - .4byte ItemUseOutOfBattle_Medicine - .4byte 1 - .4byte ItemUseInBattle_Medicine - .4byte 0 - - .string "FULL HEAL$", 14 - .2byte ITEM_FULL_HEAL - .2byte 600 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_FullHeal - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 1 - .4byte ItemUseOutOfBattle_Medicine - .4byte 1 - .4byte ItemUseInBattle_Medicine - .4byte 0 - - .string "REVIVE$", 14 - .2byte ITEM_REVIVE - .2byte 1500 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Revive - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 1 - .4byte ItemUseOutOfBattle_Medicine - .4byte 1 - .4byte ItemUseInBattle_Medicine - .4byte 0 - - .string "MAX REVIVE$", 14 - .2byte ITEM_MAX_REVIVE - .2byte 4000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_MaxRevive - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 1 - .4byte ItemUseOutOfBattle_Medicine - .4byte 1 - .4byte ItemUseInBattle_Medicine - .4byte 0 - - .string "FRESH WATER$", 14 - .2byte ITEM_FRESH_WATER - .2byte 200 @ price - .byte HOLD_EFFECT_NONE - .byte 50 - .4byte gItemDescription_FreshWater - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 1 - .4byte ItemUseOutOfBattle_Medicine - .4byte 1 - .4byte ItemUseInBattle_Medicine - .4byte 0 - - .string "SODA POP$", 14 - .2byte ITEM_SODA_POP - .2byte 300 @ price - .byte HOLD_EFFECT_NONE - .byte 60 - .4byte gItemDescription_SodaPop - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 1 - .4byte ItemUseOutOfBattle_Medicine - .4byte 1 - .4byte ItemUseInBattle_Medicine - .4byte 0 - - .string "LEMONADE$", 14 - .2byte ITEM_LEMONADE - .2byte 350 @ price - .byte HOLD_EFFECT_NONE - .byte 80 - .4byte gItemDescription_Lemonade - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 1 - .4byte ItemUseOutOfBattle_Medicine - .4byte 1 - .4byte ItemUseInBattle_Medicine - .4byte 0 - - .string "MOOMOO MILK$", 14 - .2byte ITEM_MOOMOO_MILK - .2byte 500 @ price - .byte HOLD_EFFECT_NONE - .byte 100 - .4byte gItemDescription_MoomooMilk - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 1 - .4byte ItemUseOutOfBattle_Medicine - .4byte 1 - .4byte ItemUseInBattle_Medicine - .4byte 0 - - .string "ENERGYPOWDER$", 14 - .2byte ITEM_ENERGY_POWDER - .2byte 500 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_EnergyPowder - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 1 - .4byte ItemUseOutOfBattle_Medicine - .4byte 1 - .4byte ItemUseInBattle_Medicine - .4byte 0 - - .string "ENERGY ROOT$", 14 - .2byte ITEM_ENERGY_ROOT - .2byte 800 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_EnergyRoot - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 1 - .4byte ItemUseOutOfBattle_Medicine - .4byte 1 - .4byte ItemUseInBattle_Medicine - .4byte 0 - - .string "HEAL POWDER$", 14 - .2byte ITEM_HEAL_POWDER - .2byte 450 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_HealPowder - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 1 - .4byte ItemUseOutOfBattle_Medicine - .4byte 1 - .4byte ItemUseInBattle_Medicine - .4byte 0 - - .string "REVIVAL HERB$", 14 - .2byte ITEM_REVIVAL_HERB - .2byte 2800 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_RevivalHerb - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 1 - .4byte ItemUseOutOfBattle_Medicine - .4byte 1 - .4byte ItemUseInBattle_Medicine - .4byte 0 - - .string "ETHER$", 14 - .2byte ITEM_ETHER - .2byte 1200 @ price - .byte HOLD_EFFECT_NONE - .byte 10 - .4byte gItemDescription_Ether - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 1 - .4byte ItemUseOutOfBattle_PPRecovery - .4byte 1 - .4byte ItemUseInBattle_PPRecovery - .4byte 0 - - .string "MAX ETHER$", 14 - .2byte ITEM_MAX_ETHER - .2byte 2000 @ price - .byte HOLD_EFFECT_NONE - .byte 255 - .4byte gItemDescription_MaxEther - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 1 - .4byte ItemUseOutOfBattle_PPRecovery - .4byte 1 - .4byte ItemUseInBattle_PPRecovery - .4byte 0 - - .string "ELIXIR$", 14 - .2byte ITEM_ELIXIR - .2byte 3000 @ price - .byte HOLD_EFFECT_NONE - .byte 10 - .4byte gItemDescription_Elixir - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 1 - .4byte ItemUseOutOfBattle_PPRecovery - .4byte 1 - .4byte ItemUseInBattle_PPRecovery - .4byte 0 - - .string "MAX ELIXIR$", 14 - .2byte ITEM_MAX_ELIXIR - .2byte 4500 @ price - .byte HOLD_EFFECT_NONE - .byte 255 - .4byte gItemDescription_MaxElixir - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 1 - .4byte ItemUseOutOfBattle_PPRecovery - .4byte 1 - .4byte ItemUseInBattle_PPRecovery - .4byte 0 - - .string "LAVA COOKIE$", 14 - .2byte ITEM_LAVA_COOKIE - .2byte 200 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_LavaCookie - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 1 - .4byte ItemUseOutOfBattle_Medicine - .4byte 1 - .4byte ItemUseInBattle_Medicine - .4byte 0 - - .string "BLUE FLUTE$", 14 - .2byte ITEM_BLUE_FLUTE - .2byte 100 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_BlueFlute - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 1 - .4byte ItemUseOutOfBattle_Medicine - .4byte 1 - .4byte ItemUseInBattle_Medicine - .4byte 0 - - .string "YELLOW FLUTE$", 14 - .2byte ITEM_YELLOW_FLUTE - .2byte 200 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_YellowFlute - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 1 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 1 - .4byte ItemUseInBattle_Medicine - .4byte 0 - - .string "RED FLUTE$", 14 - .2byte ITEM_RED_FLUTE - .2byte 300 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_RedFlute - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 1 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 1 - .4byte ItemUseInBattle_Medicine - .4byte 0 - - .string "BLACK FLUTE$", 14 - .2byte ITEM_BLACK_FLUTE - .2byte 400 @ price - .byte HOLD_EFFECT_NONE - .byte 50 - .4byte gItemDescription_BlackFlute - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 1 - .4byte ItemUseOutOfBattle_BlackWhiteFlute - .4byte 0 - .4byte NULL - .4byte 0 - - .string "WHITE FLUTE$", 14 - .2byte ITEM_WHITE_FLUTE - .2byte 500 @ price - .byte HOLD_EFFECT_NONE - .byte 150 - .4byte gItemDescription_WhiteFlute - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 1 - .4byte ItemUseOutOfBattle_BlackWhiteFlute - .4byte 0 - .4byte NULL - .4byte 0 - - .string "BERRY JUICE$", 14 - .2byte ITEM_BERRY_JUICE - .2byte 100 @ price - .byte HOLD_EFFECT_RESTORE_HP - .byte 20 - .4byte gItemDescription_BerryJuice - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 1 - .4byte ItemUseOutOfBattle_Medicine - .4byte 1 - .4byte ItemUseInBattle_Medicine - .4byte 0 - - .string "SACRED ASH$", 14 - .2byte ITEM_SACRED_ASH - .2byte 200 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_SacredAsh - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 1 - .4byte ItemUseOutOfBattle_SacredAsh - .4byte 0 - .4byte NULL - .4byte 0 - - .string "SHOAL SALT$", 14 - .2byte ITEM_SHOAL_SALT - .2byte 20 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_ShoalSalt - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "SHOAL SHELL$", 14 - .2byte ITEM_SHOAL_SHELL - .2byte 20 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_ShoalShell - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "RED SHARD$", 14 - .2byte ITEM_RED_SHARD - .2byte 200 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_RedShard - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "BLUE SHARD$", 14 - .2byte ITEM_BLUE_SHARD - .2byte 200 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_BlueShard - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "YELLOW SHARD$", 14 - .2byte ITEM_YELLOW_SHARD - .2byte 200 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_YellowShard - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "GREEN SHARD$", 14 - .2byte ITEM_GREEN_SHARD - .2byte 200 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_GreenShard - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "HP UP$", 14 - .2byte ITEM_HP_UP - .2byte 9800 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_HPUp - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 1 - .4byte ItemUseOutOfBattle_Medicine - .4byte 0 - .4byte NULL - .4byte 0 - - .string "PROTEIN$", 14 - .2byte ITEM_PROTEIN - .2byte 9800 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Protein - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 1 - .4byte ItemUseOutOfBattle_Medicine - .4byte 0 - .4byte NULL - .4byte 0 - - .string "IRON$", 14 - .2byte ITEM_IRON - .2byte 9800 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Iron - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 1 - .4byte ItemUseOutOfBattle_Medicine - .4byte 0 - .4byte NULL - .4byte 0 - - .string "CARBOS$", 14 - .2byte ITEM_CARBOS - .2byte 9800 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Carbos - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 1 - .4byte ItemUseOutOfBattle_Medicine - .4byte 0 - .4byte NULL - .4byte 0 - - .string "CALCIUM$", 14 - .2byte ITEM_CALCIUM - .2byte 9800 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Calcium - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 1 - .4byte ItemUseOutOfBattle_Medicine - .4byte 0 - .4byte NULL - .4byte 0 - - .string "RARE CANDY$", 14 - .2byte ITEM_RARE_CANDY - .2byte 4800 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_RareCandy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 1 - .4byte ItemUseOutOfBattle_RareCandy - .4byte 0 - .4byte NULL - .4byte 0 - - .string "PP UP$", 14 - .2byte ITEM_PP_UP - .2byte 9800 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_PPUp - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 1 - .4byte ItemUseOutOfBattle_PPUp - .4byte 0 - .4byte NULL - .4byte 0 - - .string "ZINC$", 14 - .2byte ITEM_ZINC - .2byte 9800 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Zinc - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 1 - .4byte ItemUseOutOfBattle_Medicine - .4byte 0 - .4byte NULL - .4byte 0 - - .string "PP MAX$", 14 - .2byte ITEM_PP_MAX - .2byte 9800 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_PPMax - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 1 - .4byte ItemUseOutOfBattle_PPUp - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "GUARD SPEC.$", 14 - .2byte ITEM_GUARD_SPEC - .2byte 700 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_GuardSpec - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 2 - .4byte ItemUseInBattle_StatIncrease - .4byte 0 - - .string "DIRE HIT$", 14 - .2byte ITEM_DIRE_HIT - .2byte 650 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_DireHit - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 2 - .4byte ItemUseInBattle_StatIncrease - .4byte 0 - - .string "X ATTACK$", 14 - .2byte ITEM_X_ATTACK - .2byte 500 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_XAttack - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 2 - .4byte ItemUseInBattle_StatIncrease - .4byte 0 - - .string "X DEFEND$", 14 - .2byte ITEM_X_DEFEND - .2byte 550 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_XDefend - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 2 - .4byte ItemUseInBattle_StatIncrease - .4byte 0 - - .string "X SPEED$", 14 - .2byte ITEM_X_SPEED - .2byte 350 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_XSpeed - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 2 - .4byte ItemUseInBattle_StatIncrease - .4byte 0 - - .string "X ACCURACY$", 14 - .2byte ITEM_X_ACCURACY - .2byte 950 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_XAccuracy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 2 - .4byte ItemUseInBattle_StatIncrease - .4byte 0 - - .string "X SPECIAL$", 14 - .2byte ITEM_X_SPECIAL - .2byte 350 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_XSpecial - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 2 - .4byte ItemUseInBattle_StatIncrease - .4byte 0 - - .string "POKé DOLL$", 14 - .2byte ITEM_POKE_DOLL - .2byte 1000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_PokeDoll - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 2 - .4byte ItemUseInBattle_Escape - .4byte 0 - - .string "FLUFFY TAIL$", 14 - .2byte ITEM_FLUFFY_TAIL - .2byte 1000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_FluffyTail - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 2 - .4byte ItemUseInBattle_Escape - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "SUPER REPEL$", 14 - .2byte ITEM_SUPER_REPEL - .2byte 500 @ price - .byte HOLD_EFFECT_NONE - .byte 200 - .4byte gItemDescription_SuperRepel - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_Repel - .4byte 0 - .4byte NULL - .4byte 0 - - .string "MAX REPEL$", 14 - .2byte ITEM_MAX_REPEL - .2byte 700 @ price - .byte HOLD_EFFECT_NONE - .byte 250 - .4byte gItemDescription_MaxRepel - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_Repel - .4byte 0 - .4byte NULL - .4byte 0 - - .string "ESCAPE ROPE$", 14 - .2byte ITEM_ESCAPE_ROPE - .2byte 550 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_EscapeRope - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 2 - .4byte ItemUseOutOfBattle_EscapeRope - .4byte 0 - .4byte NULL - .4byte 0 - - .string "REPEL$", 14 - .2byte ITEM_REPEL - .2byte 350 @ price - .byte HOLD_EFFECT_NONE - .byte 100 - .4byte gItemDescription_Repel - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_Repel - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "SUN STONE$", 14 - .2byte ITEM_SUN_STONE - .2byte 2100 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_SunStone - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 1 - .4byte ItemUseOutOfBattle_EvolutionStone - .4byte 0 - .4byte NULL - .4byte 0 - - .string "MOON STONE$", 14 - .2byte ITEM_MOON_STONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_MoonStone - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 1 - .4byte ItemUseOutOfBattle_EvolutionStone - .4byte 0 - .4byte NULL - .4byte 0 - - .string "FIRE STONE$", 14 - .2byte ITEM_FIRE_STONE - .2byte 2100 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_FireStone - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 1 - .4byte ItemUseOutOfBattle_EvolutionStone - .4byte 0 - .4byte NULL - .4byte 0 - - .string "THUNDERSTONE$", 14 - .2byte ITEM_THUNDER_STONE - .2byte 2100 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_ThunderStone - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 1 - .4byte ItemUseOutOfBattle_EvolutionStone - .4byte 0 - .4byte NULL - .4byte 0 - - .string "WATER STONE$", 14 - .2byte ITEM_WATER_STONE - .2byte 2100 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_WaterStone - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 1 - .4byte ItemUseOutOfBattle_EvolutionStone - .4byte 0 - .4byte NULL - .4byte 0 - - .string "LEAF STONE$", 14 - .2byte ITEM_LEAF_STONE - .2byte 2100 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_LeafStone - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 1 - .4byte ItemUseOutOfBattle_EvolutionStone - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TINYMUSHROOM$", 14 - .2byte ITEM_TINY_MUSHROOM - .2byte 500 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TinyMushroom - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "BIG MUSHROOM$", 14 - .2byte ITEM_BIG_MUSHROOM - .2byte 5000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_BigMushroom - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "PEARL$", 14 - .2byte ITEM_PEARL - .2byte 1400 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Pearl - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "BIG PEARL$", 14 - .2byte ITEM_BIG_PEARL - .2byte 7500 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_BigPearl - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "STARDUST$", 14 - .2byte ITEM_STARDUST - .2byte 2000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Stardust - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "STAR PIECE$", 14 - .2byte ITEM_STAR_PIECE - .2byte 9800 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_StarPiece - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "NUGGET$", 14 - .2byte ITEM_NUGGET - .2byte 10000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Nugget - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "HEART SCALE$", 14 - .2byte ITEM_HEART_SCALE - .2byte 100 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_HeartScale - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "ORANGE MAIL$", 14 - .2byte ITEM_ORANGE_MAIL - .2byte 50 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_OrangeMail - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 0 - .4byte ItemUseOutOfBattle_Mail - .4byte 0 - .4byte NULL - .4byte 0 - - .string "HARBOR MAIL$", 14 - .2byte ITEM_HARBOR_MAIL - .2byte 50 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_HarborMail - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 0 - .4byte ItemUseOutOfBattle_Mail - .4byte 0 - .4byte NULL - .4byte 1 - - .string "GLITTER MAIL$", 14 - .2byte ITEM_GLITTER_MAIL - .2byte 50 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_GlitterMail - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 0 - .4byte ItemUseOutOfBattle_Mail - .4byte 0 - .4byte NULL - .4byte 2 - - .string "MECH MAIL$", 14 - .2byte ITEM_MECH_MAIL - .2byte 50 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_MechMail - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 0 - .4byte ItemUseOutOfBattle_Mail - .4byte 0 - .4byte NULL - .4byte 3 - - .string "WOOD MAIL$", 14 - .2byte ITEM_WOOD_MAIL - .2byte 50 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_WoodMail - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 0 - .4byte ItemUseOutOfBattle_Mail - .4byte 0 - .4byte NULL - .4byte 4 - - .string "WAVE MAIL$", 14 - .2byte ITEM_WAVE_MAIL - .2byte 50 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_WaveMail - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 0 - .4byte ItemUseOutOfBattle_Mail - .4byte 0 - .4byte NULL - .4byte 5 - - .string "BEAD MAIL$", 14 - .2byte ITEM_BEAD_MAIL - .2byte 50 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_BeadMail - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 0 - .4byte ItemUseOutOfBattle_Mail - .4byte 0 - .4byte NULL - .4byte 6 - - .string "SHADOW MAIL$", 14 - .2byte ITEM_SHADOW_MAIL - .2byte 50 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_ShadowMail - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 0 - .4byte ItemUseOutOfBattle_Mail - .4byte 0 - .4byte NULL - .4byte 7 - - .string "TROPIC MAIL$", 14 - .2byte ITEM_TROPIC_MAIL - .2byte 50 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TropicMail - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 0 - .4byte ItemUseOutOfBattle_Mail - .4byte 0 - .4byte NULL - .4byte 8 - - .string "DREAM MAIL$", 14 - .2byte ITEM_DREAM_MAIL - .2byte 50 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_DreamMail - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 0 - .4byte ItemUseOutOfBattle_Mail - .4byte 0 - .4byte NULL - .4byte 9 - - .string "FAB MAIL$", 14 - .2byte ITEM_FAB_MAIL - .2byte 50 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_FabMail - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 0 - .4byte ItemUseOutOfBattle_Mail - .4byte 0 - .4byte NULL - .4byte 10 - - .string "RETRO MAIL$", 14 - .2byte ITEM_RETRO_MAIL - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_RetroMail - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 0 - .4byte ItemUseOutOfBattle_Mail - .4byte 0 - .4byte NULL - .4byte 11 - - .string "CHERI BERRY$", 14 - .2byte ITEM_CHERI_BERRY - .2byte 20 @ price - .byte HOLD_EFFECT_CURE_PAR - .byte 0 - .4byte gItemDescription_CheriBerry - .byte 0 - .byte 0 - .byte POCKET_BERRIES - .byte 1 - .4byte ItemUseOutOfBattle_Medicine - .4byte 1 - .4byte ItemUseInBattle_Medicine - .4byte 0 - - .string "CHESTO BERRY$", 14 - .2byte ITEM_CHESTO_BERRY - .2byte 20 @ price - .byte HOLD_EFFECT_CURE_SLP - .byte 0 - .4byte gItemDescription_ChestoBerry - .byte 0 - .byte 0 - .byte POCKET_BERRIES - .byte 1 - .4byte ItemUseOutOfBattle_Medicine - .4byte 1 - .4byte ItemUseInBattle_Medicine - .4byte 0 - - .string "PECHA BERRY$", 14 - .2byte ITEM_PECHA_BERRY - .2byte 20 @ price - .byte HOLD_EFFECT_CURE_PSN - .byte 0 - .4byte gItemDescription_PechaBerry - .byte 0 - .byte 0 - .byte POCKET_BERRIES - .byte 1 - .4byte ItemUseOutOfBattle_Medicine - .4byte 1 - .4byte ItemUseInBattle_Medicine - .4byte 0 - - .string "RAWST BERRY$", 14 - .2byte ITEM_RAWST_BERRY - .2byte 20 @ price - .byte HOLD_EFFECT_CURE_BRN - .byte 0 - .4byte gItemDescription_RawstBerry - .byte 0 - .byte 0 - .byte POCKET_BERRIES - .byte 1 - .4byte ItemUseOutOfBattle_Medicine - .4byte 1 - .4byte ItemUseInBattle_Medicine - .4byte 0 - - .string "ASPEAR BERRY$", 14 - .2byte ITEM_ASPEAR_BERRY - .2byte 20 @ price - .byte HOLD_EFFECT_CURE_FRZ - .byte 0 - .4byte gItemDescription_AspearBerry - .byte 0 - .byte 0 - .byte POCKET_BERRIES - .byte 1 - .4byte ItemUseOutOfBattle_Medicine - .4byte 1 - .4byte ItemUseInBattle_Medicine - .4byte 0 - - .string "LEPPA BERRY$", 14 - .2byte ITEM_LEPPA_BERRY - .2byte 20 @ price - .byte HOLD_EFFECT_RESTORE_PP - .byte 10 - .4byte gItemDescription_LeppaBerry - .byte 0 - .byte 0 - .byte POCKET_BERRIES - .byte 1 - .4byte ItemUseOutOfBattle_PPRecovery - .4byte 1 - .4byte ItemUseInBattle_PPRecovery - .4byte 0 - - .string "ORAN BERRY$", 14 - .2byte ITEM_ORAN_BERRY - .2byte 20 @ price - .byte HOLD_EFFECT_RESTORE_HP - .byte 10 - .4byte gItemDescription_OranBerry - .byte 0 - .byte 0 - .byte POCKET_BERRIES - .byte 1 - .4byte ItemUseOutOfBattle_Medicine - .4byte 1 - .4byte ItemUseInBattle_Medicine - .4byte 0 - - .string "PERSIM BERRY$", 14 - .2byte ITEM_PERSIM_BERRY - .2byte 20 @ price - .byte HOLD_EFFECT_CURE_CONFUSION - .byte 0 - .4byte gItemDescription_PersimBerry - .byte 0 - .byte 0 - .byte POCKET_BERRIES - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 1 - .4byte ItemUseInBattle_Medicine - .4byte 0 - - .string "LUM BERRY$", 14 - .2byte ITEM_LUM_BERRY - .2byte 20 @ price - .byte HOLD_EFFECT_CURE_STATUS - .byte 0 - .4byte gItemDescription_LumBerry - .byte 0 - .byte 0 - .byte POCKET_BERRIES - .byte 1 - .4byte ItemUseOutOfBattle_Medicine - .4byte 1 - .4byte ItemUseInBattle_Medicine - .4byte 0 - - .string "SITRUS BERRY$", 14 - .2byte ITEM_SITRUS_BERRY - .2byte 20 @ price - .byte HOLD_EFFECT_RESTORE_HP - .byte 30 - .4byte gItemDescription_SitrusBerry - .byte 0 - .byte 0 - .byte POCKET_BERRIES - .byte 1 - .4byte ItemUseOutOfBattle_Medicine - .4byte 1 - .4byte ItemUseInBattle_Medicine - .4byte 0 - - .string "FIGY BERRY$", 14 - .2byte ITEM_FIGY_BERRY - .2byte 20 @ price - .byte HOLD_EFFECT_CONFUSE_SPICY - .byte 8 - .4byte gItemDescription_FigyBerry - .byte 0 - .byte 0 - .byte POCKET_BERRIES - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "WIKI BERRY$", 14 - .2byte ITEM_WIKI_BERRY - .2byte 20 @ price - .byte HOLD_EFFECT_CONFUSE_DRY - .byte 8 - .4byte gItemDescription_WikiBerry - .byte 0 - .byte 0 - .byte POCKET_BERRIES - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "MAGO BERRY$", 14 - .2byte ITEM_MAGO_BERRY - .2byte 20 @ price - .byte HOLD_EFFECT_CONFUSE_SWEET - .byte 8 - .4byte gItemDescription_MagoBerry - .byte 0 - .byte 0 - .byte POCKET_BERRIES - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "AGUAV BERRY$", 14 - .2byte ITEM_AGUAV_BERRY - .2byte 20 @ price - .byte HOLD_EFFECT_CONFUSE_BITTER - .byte 8 - .4byte gItemDescription_AguavBerry - .byte 0 - .byte 0 - .byte POCKET_BERRIES - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "IAPAPA BERRY$", 14 - .2byte ITEM_IAPAPA_BERRY - .2byte 20 @ price - .byte HOLD_EFFECT_CONFUSE_SOUR - .byte 8 - .4byte gItemDescription_IapapaBerry - .byte 0 - .byte 0 - .byte POCKET_BERRIES - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "RAZZ BERRY$", 14 - .2byte ITEM_RAZZ_BERRY - .2byte 20 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_RazzBerry - .byte 0 - .byte 0 - .byte POCKET_BERRIES - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "BLUK BERRY$", 14 - .2byte ITEM_BLUK_BERRY - .2byte 20 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_BlukBerry - .byte 0 - .byte 0 - .byte POCKET_BERRIES - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "NANAB BERRY$", 14 - .2byte ITEM_NANAB_BERRY - .2byte 20 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_NanabBerry - .byte 0 - .byte 0 - .byte POCKET_BERRIES - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "WEPEAR BERRY$", 14 - .2byte ITEM_WEPEAR_BERRY - .2byte 20 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_WepearBerry - .byte 0 - .byte 0 - .byte POCKET_BERRIES - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "PINAP BERRY$", 14 - .2byte ITEM_PINAP_BERRY - .2byte 20 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_PinapBerry - .byte 0 - .byte 0 - .byte POCKET_BERRIES - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "POMEG BERRY$", 14 - .2byte ITEM_POMEG_BERRY - .2byte 20 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_PomegBerry - .byte 0 - .byte 0 - .byte POCKET_BERRIES - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "KELPSY BERRY$", 14 - .2byte ITEM_KELPSY_BERRY - .2byte 20 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_KelpsyBerry - .byte 0 - .byte 0 - .byte POCKET_BERRIES - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "QUALOT BERRY$", 14 - .2byte ITEM_QUALOT_BERRY - .2byte 20 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_QualotBerry - .byte 0 - .byte 0 - .byte POCKET_BERRIES - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "HONDEW BERRY$", 14 - .2byte ITEM_HONDEW_BERRY - .2byte 20 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_HondewBerry - .byte 0 - .byte 0 - .byte POCKET_BERRIES - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "GREPA BERRY$", 14 - .2byte ITEM_GREPA_BERRY - .2byte 20 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_GrepaBerry - .byte 0 - .byte 0 - .byte POCKET_BERRIES - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TAMATO BERRY$", 14 - .2byte ITEM_TAMATO_BERRY - .2byte 20 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TamatoBerry - .byte 0 - .byte 0 - .byte POCKET_BERRIES - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "CORNN BERRY$", 14 - .2byte ITEM_CORNN_BERRY - .2byte 20 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_CornnBerry - .byte 0 - .byte 0 - .byte POCKET_BERRIES - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "MAGOST BERRY$", 14 - .2byte ITEM_MAGOST_BERRY - .2byte 20 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_MagostBerry - .byte 0 - .byte 0 - .byte POCKET_BERRIES - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "RABUTA BERRY$", 14 - .2byte ITEM_RABUTA_BERRY - .2byte 20 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_RabutaBerry - .byte 0 - .byte 0 - .byte POCKET_BERRIES - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "NOMEL BERRY$", 14 - .2byte ITEM_NOMEL_BERRY - .2byte 20 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_NomelBerry - .byte 0 - .byte 0 - .byte POCKET_BERRIES - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "SPELON BERRY$", 14 - .2byte ITEM_SPELON_BERRY - .2byte 20 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_SpelonBerry - .byte 0 - .byte 0 - .byte POCKET_BERRIES - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "PAMTRE BERRY$", 14 - .2byte ITEM_PAMTRE_BERRY - .2byte 20 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_PamtreBerry - .byte 0 - .byte 0 - .byte POCKET_BERRIES - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "WATMEL BERRY$", 14 - .2byte ITEM_WATMEL_BERRY - .2byte 20 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_WatmelBerry - .byte 0 - .byte 0 - .byte POCKET_BERRIES - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "DURIN BERRY$", 14 - .2byte ITEM_DURIN_BERRY - .2byte 20 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_DurinBerry - .byte 0 - .byte 0 - .byte POCKET_BERRIES - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "BELUE BERRY$", 14 - .2byte ITEM_BELUE_BERRY - .2byte 20 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_BelueBerry - .byte 0 - .byte 0 - .byte POCKET_BERRIES - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "LIECHI BERRY$", 14 - .2byte ITEM_LIECHI_BERRY - .2byte 20 @ price - .byte HOLD_EFFECT_ATTACK_UP - .byte 4 - .4byte gItemDescription_LiechiBerry - .byte 0 - .byte 0 - .byte POCKET_BERRIES - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "GANLON BERRY$", 14 - .2byte ITEM_GANLON_BERRY - .2byte 20 @ price - .byte HOLD_EFFECT_DEFENSE_UP - .byte 4 - .4byte gItemDescription_GanlonBerry - .byte 0 - .byte 0 - .byte POCKET_BERRIES - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "SALAC BERRY$", 14 - .2byte ITEM_SALAC_BERRY - .2byte 20 @ price - .byte HOLD_EFFECT_SPEED_UP - .byte 4 - .4byte gItemDescription_SalacBerry - .byte 0 - .byte 0 - .byte POCKET_BERRIES - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "PETAYA BERRY$", 14 - .2byte ITEM_PETAYA_BERRY - .2byte 20 @ price - .byte HOLD_EFFECT_SP_ATTACK_UP - .byte 4 - .4byte gItemDescription_PetayaBerry - .byte 0 - .byte 0 - .byte POCKET_BERRIES - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "APICOT BERRY$", 14 - .2byte ITEM_APICOT_BERRY - .2byte 20 @ price - .byte HOLD_EFFECT_SP_DEFENSE_UP - .byte 4 - .4byte gItemDescription_ApicotBerry - .byte 0 - .byte 0 - .byte POCKET_BERRIES - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "LANSAT BERRY$", 14 - .2byte ITEM_LANSAT_BERRY - .2byte 20 @ price - .byte HOLD_EFFECT_CRITICAL_UP - .byte 4 - .4byte gItemDescription_LansatBerry - .byte 0 - .byte 0 - .byte POCKET_BERRIES - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "STARF BERRY$", 14 - .2byte ITEM_STARF_BERRY - .2byte 20 @ price - .byte HOLD_EFFECT_RANDOM_STAT_UP - .byte 4 - .4byte gItemDescription_StarfBerry - .byte 0 - .byte 0 - .byte POCKET_BERRIES - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "ENIGMA BERRY$", 14 - .2byte ITEM_ENIGMA_BERRY - .2byte 20 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_EnigmaBerry - .byte 0 - .byte 0 - .byte POCKET_BERRIES - .byte 4 - .4byte ItemUseOutOfBattle_EnigmaBerry - .4byte 1 - .4byte ItemUseInBattle_EnigmaBerry - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "BRIGHTPOWDER$", 14 - .2byte ITEM_BRIGHT_POWDER - .2byte 10 @ price - .byte HOLD_EFFECT_EVASION_UP - .byte 10 - .4byte gItemDescription_BrightPowder - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "WHITE HERB$", 14 - .2byte ITEM_WHITE_HERB - .2byte 100 @ price - .byte HOLD_EFFECT_RESTORE_STATS - .byte 0 - .4byte gItemDescription_WhiteHerb - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "MACHO BRACE$", 14 - .2byte ITEM_MACHO_BRACE - .2byte 3000 @ price - .byte HOLD_EFFECT_MACHO_BRACE - .byte 0 - .4byte gItemDescription_MachoBrace - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "EXP. SHARE$", 14 - .2byte ITEM_EXP_SHARE - .2byte 3000 @ price - .byte HOLD_EFFECT_EXP_SHARE - .byte 0 - .4byte gItemDescription_ExpShare - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "QUICK CLAW$", 14 - .2byte ITEM_QUICK_CLAW - .2byte 100 @ price - .byte HOLD_EFFECT_QUICK_CLAW - .byte 20 - .4byte gItemDescription_QuickClaw - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "SOOTHE BELL$", 14 - .2byte ITEM_SOOTHE_BELL - .2byte 100 @ price - .byte HOLD_EFFECT_HAPPINESS_UP - .byte 0 - .4byte gItemDescription_SootheBell - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "MENTAL HERB$", 14 - .2byte ITEM_MENTAL_HERB - .2byte 100 @ price - .byte HOLD_EFFECT_CURE_ATTRACT - .byte 0 - .4byte gItemDescription_MentalHerb - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "CHOICE BAND$", 14 - .2byte ITEM_CHOICE_BAND - .2byte 100 @ price - .byte HOLD_EFFECT_CHOICE_BAND - .byte 0 - .4byte gItemDescription_ChoiceBand - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "KING’S ROCK$", 14 - .2byte ITEM_KINGS_ROCK - .2byte 100 @ price - .byte HOLD_EFFECT_FLINCH - .byte 10 - .4byte gItemDescription_KingsRock - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "SILVERPOWDER$", 14 - .2byte ITEM_SILVER_POWDER - .2byte 100 @ price - .byte HOLD_EFFECT_BUG_POWER - .byte 10 - .4byte gItemDescription_SilverPowder - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "AMULET COIN$", 14 - .2byte ITEM_AMULET_COIN - .2byte 100 @ price - .byte HOLD_EFFECT_DOUBLE_PRIZE - .byte 10 - .4byte gItemDescription_AmuletCoin - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "CLEANSE TAG$", 14 - .2byte ITEM_CLEANSE_TAG - .2byte 200 @ price - .byte HOLD_EFFECT_REPEL - .byte 0 - .4byte gItemDescription_CleanseTag - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "SOUL DEW$", 14 - .2byte ITEM_SOUL_DEW - .2byte 200 @ price - .byte HOLD_EFFECT_SOUL_DEW - .byte 0 - .4byte gItemDescription_SoulDew - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "DEEPSEATOOTH$", 14 - .2byte ITEM_DEEP_SEA_TOOTH - .2byte 200 @ price - .byte HOLD_EFFECT_DEEP_SEA_TOOTH - .byte 0 - .4byte gItemDescription_DeepSeaTooth - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "DEEPSEASCALE$", 14 - .2byte ITEM_DEEP_SEA_SCALE - .2byte 200 @ price - .byte HOLD_EFFECT_DEEP_SEA_SCALE - .byte 0 - .4byte gItemDescription_DeepSeaScale - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "SMOKE BALL$", 14 - .2byte ITEM_SMOKE_BALL - .2byte 200 @ price - .byte HOLD_EFFECT_CAN_ALWAYS_RUN - .byte 0 - .4byte gItemDescription_SmokeBall - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "EVERSTONE$", 14 - .2byte ITEM_EVERSTONE - .2byte 200 @ price - .byte HOLD_EFFECT_PREVENT_EVOLVE - .byte 0 - .4byte gItemDescription_Everstone - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "FOCUS BAND$", 14 - .2byte ITEM_FOCUS_BAND - .2byte 200 @ price - .byte HOLD_EFFECT_FOCUS_BAND - .byte 10 - .4byte gItemDescription_FocusBand - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "LUCKY EGG$", 14 - .2byte ITEM_LUCKY_EGG - .2byte 200 @ price - .byte HOLD_EFFECT_LUCKY_EGG - .byte 0 - .4byte gItemDescription_LuckyEgg - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "SCOPE LENS$", 14 - .2byte ITEM_SCOPE_LENS - .2byte 200 @ price - .byte HOLD_EFFECT_SCOPE_LENS - .byte 0 - .4byte gItemDescription_ScopeLens - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "METAL COAT$", 14 - .2byte ITEM_METAL_COAT - .2byte 100 @ price - .byte HOLD_EFFECT_STEEL_POWER - .byte 10 - .4byte gItemDescription_MetalCoat - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "LEFTOVERS$", 14 - .2byte ITEM_LEFTOVERS - .2byte 200 @ price - .byte HOLD_EFFECT_LEFTOVERS - .byte 10 - .4byte gItemDescription_Leftovers - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "DRAGON SCALE$", 14 - .2byte ITEM_DRAGON_SCALE - .2byte 2100 @ price - .byte HOLD_EFFECT_DRAGON_SCALE - .byte 10 - .4byte gItemDescription_DragonScale - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "LIGHT BALL$", 14 - .2byte ITEM_LIGHT_BALL - .2byte 100 @ price - .byte HOLD_EFFECT_LIGHT_BALL - .byte 0 - .4byte gItemDescription_LightBall - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "SOFT SAND$", 14 - .2byte ITEM_SOFT_SAND - .2byte 100 @ price - .byte HOLD_EFFECT_GROUND_POWER - .byte 10 - .4byte gItemDescription_SoftSand - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "HARD STONE$", 14 - .2byte ITEM_HARD_STONE - .2byte 100 @ price - .byte HOLD_EFFECT_ROCK_POWER - .byte 10 - .4byte gItemDescription_HardStone - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "MIRACLE SEED$", 14 - .2byte ITEM_MIRACLE_SEED - .2byte 100 @ price - .byte HOLD_EFFECT_GRASS_POWER - .byte 10 - .4byte gItemDescription_MiracleSeed - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "BLACKGLASSES$", 14 - .2byte ITEM_BLACK_GLASSES - .2byte 100 @ price - .byte HOLD_EFFECT_DARK_POWER - .byte 10 - .4byte gItemDescription_BlackGlasses - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "BLACK BELT$", 14 - .2byte ITEM_BLACK_BELT - .2byte 100 @ price - .byte HOLD_EFFECT_FIGHTING_POWER - .byte 10 - .4byte gItemDescription_BlackBelt - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "MAGNET$", 14 - .2byte ITEM_MAGNET - .2byte 100 @ price - .byte HOLD_EFFECT_ELECTRIC_POWER - .byte 10 - .4byte gItemDescription_Magnet - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "MYSTIC WATER$", 14 - .2byte ITEM_MYSTIC_WATER - .2byte 100 @ price - .byte HOLD_EFFECT_WATER_POWER - .byte 10 - .4byte gItemDescription_MysticWater - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "SHARP BEAK$", 14 - .2byte ITEM_SHARP_BEAK - .2byte 100 @ price - .byte HOLD_EFFECT_FLYING_POWER - .byte 10 - .4byte gItemDescription_SharpBeak - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "POISON BARB$", 14 - .2byte ITEM_POISON_BARB - .2byte 100 @ price - .byte HOLD_EFFECT_POISON_POWER - .byte 10 - .4byte gItemDescription_PoisonBarb - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "NEVERMELTICE$", 14 - .2byte ITEM_NEVER_MELT_ICE - .2byte 100 @ price - .byte HOLD_EFFECT_ICE_POWER - .byte 10 - .4byte gItemDescription_NeverMeltIce - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "SPELL TAG$", 14 - .2byte ITEM_SPELL_TAG - .2byte 100 @ price - .byte HOLD_EFFECT_GHOST_POWER - .byte 10 - .4byte gItemDescription_SpellTag - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TWISTEDSPOON$", 14 - .2byte ITEM_TWISTED_SPOON - .2byte 100 @ price - .byte HOLD_EFFECT_PSYCHIC_POWER - .byte 10 - .4byte gItemDescription_TwistedSpoon - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "CHARCOAL$", 14 - .2byte ITEM_CHARCOAL - .2byte 9800 @ price - .byte HOLD_EFFECT_FIRE_POWER - .byte 10 - .4byte gItemDescription_Charcoal - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "DRAGON FANG$", 14 - .2byte ITEM_DRAGON_FANG - .2byte 100 @ price - .byte HOLD_EFFECT_DRAGON_POWER - .byte 10 - .4byte gItemDescription_DragonFang - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "SILK SCARF$", 14 - .2byte ITEM_SILK_SCARF - .2byte 100 @ price - .byte HOLD_EFFECT_NORMAL_POWER - .byte 10 - .4byte gItemDescription_SilkScarf - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "UP-GRADE$", 14 - .2byte ITEM_UP_GRADE - .2byte 2100 @ price - .byte HOLD_EFFECT_UP_GRADE - .byte 0 - .4byte gItemDescription_UpGrade - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "SHELL BELL$", 14 - .2byte ITEM_SHELL_BELL - .2byte 200 @ price - .byte HOLD_EFFECT_SHELL_BELL - .byte 8 - .4byte gItemDescription_ShellBell - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "SEA INCENSE$", 14 - .2byte ITEM_SEA_INCENSE - .2byte 9600 @ price - .byte HOLD_EFFECT_WATER_POWER - .byte 5 - .4byte gItemDescription_SeaIncense - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "LAX INCENSE$", 14 - .2byte ITEM_LAX_INCENSE - .2byte 9600 @ price - .byte HOLD_EFFECT_EVASION_UP - .byte 5 - .4byte gItemDescription_LaxIncense - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "LUCKY PUNCH$", 14 - .2byte ITEM_LUCKY_PUNCH - .2byte 10 @ price - .byte HOLD_EFFECT_LUCKY_PUNCH - .byte 0 - .4byte gItemDescription_LuckyPunch - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "METAL POWDER$", 14 - .2byte ITEM_METAL_POWDER - .2byte 10 @ price - .byte HOLD_EFFECT_METAL_POWDER - .byte 0 - .4byte gItemDescription_MetalPowder - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "THICK CLUB$", 14 - .2byte ITEM_THICK_CLUB - .2byte 500 @ price - .byte HOLD_EFFECT_THICK_CLUB - .byte 0 - .4byte gItemDescription_ThickClub - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "STICK$", 14 - .2byte ITEM_STICK - .2byte 200 @ price - .byte HOLD_EFFECT_STICK - .byte 0 - .4byte gItemDescription_Stick - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "RED SCARF$", 14 - .2byte ITEM_RED_SCARF - .2byte 100 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_RedScarf - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "BLUE SCARF$", 14 - .2byte ITEM_BLUE_SCARF - .2byte 100 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_BlueScarf - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "PINK SCARF$", 14 - .2byte ITEM_PINK_SCARF - .2byte 100 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_PinkScarf - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "GREEN SCARF$", 14 - .2byte ITEM_GREEN_SCARF - .2byte 100 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_GreenScarf - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "YELLOW SCARF$", 14 - .2byte ITEM_YELLOW_SCARF - .2byte 100 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_YellowScarf - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "MACH BIKE$", 14 - .2byte ITEM_MACH_BIKE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_MachBike - .byte 1 - .byte 1 - .byte POCKET_KEY_ITEMS - .byte 2 - .4byte ItemUseOutOfBattle_Bike - .4byte 0 - .4byte NULL - .4byte 0 - - .string "COIN CASE$", 14 - .2byte ITEM_COIN_CASE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_CoinCase - .byte 1 - .byte 0 - .byte POCKET_KEY_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CoinCase - .4byte 0 - .4byte NULL - .4byte 0 - - .string "ITEMFINDER$", 14 - .2byte ITEM_ITEMFINDER - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Itemfinder - .byte 1 - .byte 1 - .byte POCKET_KEY_ITEMS - .byte 2 - .4byte ItemUseOutOfBattle_Itemfinder - .4byte 0 - .4byte NULL - .4byte 0 - - .string "OLD ROD$", 14 - .2byte ITEM_OLD_ROD - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_OldRod - .byte 1 - .byte 1 - .byte POCKET_KEY_ITEMS - .byte 2 - .4byte ItemUseOutOfBattle_Rod - .4byte 0 - .4byte NULL - .4byte 0 - - .string "GOOD ROD$", 14 - .2byte ITEM_GOOD_ROD - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_GoodRod - .byte 1 - .byte 1 - .byte POCKET_KEY_ITEMS - .byte 2 - .4byte ItemUseOutOfBattle_Rod - .4byte 0 - .4byte NULL - .4byte 1 - - .string "SUPER ROD$", 14 - .2byte ITEM_SUPER_ROD - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_SuperRod - .byte 1 - .byte 1 - .byte POCKET_KEY_ITEMS - .byte 2 - .4byte ItemUseOutOfBattle_Rod - .4byte 0 - .4byte NULL - .4byte 2 - - .string "S.S. TICKET$", 14 - .2byte ITEM_SS_TICKET - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_SSTicket - .byte 1 - .byte 0 - .byte POCKET_KEY_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "CONTEST PASS$", 14 - .2byte ITEM_CONTEST_PASS - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_ContestPass - .byte 1 - .byte 0 - .byte POCKET_KEY_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "WAILMER PAIL$", 14 - .2byte ITEM_WAILMER_PAIL - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_WailmerPail - .byte 1 - .byte 0 - .byte POCKET_KEY_ITEMS - .byte 2 - .4byte ItemUseOutOfBattle_WailmerPail - .4byte 0 - .4byte NULL - .4byte 0 - - .string "DEVON GOODS$", 14 - .2byte ITEM_DEVON_GOODS - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_DevonGoods - .byte 2 - .byte 0 - .byte POCKET_KEY_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "SOOT SACK$", 14 - .2byte ITEM_SOOT_SACK - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_SootSack - .byte 1 - .byte 0 - .byte POCKET_KEY_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "BASEMENT KEY$", 14 - .2byte ITEM_BASEMENT_KEY - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_BasementKey - .byte 1 - .byte 0 - .byte POCKET_KEY_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "ACRO BIKE$", 14 - .2byte ITEM_ACRO_BIKE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_AcroBike - .byte 1 - .byte 1 - .byte POCKET_KEY_ITEMS - .byte 2 - .4byte ItemUseOutOfBattle_Bike - .4byte 0 - .4byte NULL - .4byte 1 - - .string "{POKEBLOCK} CASE$", 14 - .2byte ITEM_POKEBLOCK_CASE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_PokeblockCase - .byte 1 - .byte 1 - .byte POCKET_KEY_ITEMS - .byte 3 - .4byte ItemUseOutOfBattle_PokeblockCase - .4byte 0 - .4byte NULL - .4byte 0 - - .string "LETTER$", 14 - .2byte ITEM_LETTER - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Letter - .byte 2 - .byte 0 - .byte POCKET_KEY_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "EON TICKET$", 14 - .2byte ITEM_EON_TICKET - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_EonTicket - .byte 1 - .byte 0 - .byte POCKET_KEY_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 1 - - .string "RED ORB$", 14 - .2byte ITEM_RED_ORB - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_RedOrb - .byte 2 - .byte 0 - .byte POCKET_KEY_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "BLUE ORB$", 14 - .2byte ITEM_BLUE_ORB - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_BlueOrb - .byte 2 - .byte 0 - .byte POCKET_KEY_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "SCANNER$", 14 - .2byte ITEM_SCANNER - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Scanner - .byte 1 - .byte 0 - .byte POCKET_KEY_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "GO-GOGGLES$", 14 - .2byte ITEM_GO_GOGGLES - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_GoGoggles - .byte 1 - .byte 0 - .byte POCKET_KEY_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "METEORITE$", 14 - .2byte ITEM_METEORITE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Meteorite - .byte 1 - .byte 0 - .byte POCKET_KEY_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "RM. 1 KEY$", 14 - .2byte ITEM_ROOM_1_KEY - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Room1Key - .byte 1 - .byte 0 - .byte POCKET_KEY_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "RM. 2 KEY$", 14 - .2byte ITEM_ROOM_2_KEY - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Room2Key - .byte 1 - .byte 0 - .byte POCKET_KEY_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "RM. 4 KEY$", 14 - .2byte ITEM_ROOM_4_KEY - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Room4Key - .byte 1 - .byte 0 - .byte POCKET_KEY_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "RM. 6 KEY$", 14 - .2byte ITEM_ROOM_6_KEY - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Room6Key - .byte 1 - .byte 0 - .byte POCKET_KEY_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "STORAGE KEY$", 14 - .2byte ITEM_STORAGE_KEY - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_StorageKey - .byte 1 - .byte 0 - .byte POCKET_KEY_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "ROOT FOSSIL$", 14 - .2byte ITEM_ROOT_FOSSIL - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_RootFossil - .byte 1 - .byte 0 - .byte POCKET_KEY_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "CLAW FOSSIL$", 14 - .2byte ITEM_CLAW_FOSSIL - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_ClawFossil - .byte 1 - .byte 0 - .byte POCKET_KEY_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "DEVON SCOPE$", 14 - .2byte ITEM_DEVON_SCOPE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_DevonScope - .byte 1 - .byte 0 - .byte POCKET_KEY_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TM01$", 14 - .2byte ITEM_TM01 - .2byte 3000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TM01 - .byte 0 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TM02$", 14 - .2byte ITEM_TM02 - .2byte 3000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TM02 - .byte 0 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TM03$", 14 - .2byte ITEM_TM03 - .2byte 3000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TM03 - .byte 0 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TM04$", 14 - .2byte ITEM_TM04 - .2byte 3000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TM04 - .byte 0 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TM05$", 14 - .2byte ITEM_TM05 - .2byte 1000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TM05 - .byte 0 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TM06$", 14 - .2byte ITEM_TM06 - .2byte 3000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TM06 - .byte 0 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TM07$", 14 - .2byte ITEM_TM07 - .2byte 3000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TM07 - .byte 0 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TM08$", 14 - .2byte ITEM_TM08 - .2byte 3000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TM08 - .byte 0 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TM09$", 14 - .2byte ITEM_TM09 - .2byte 3000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TM09 - .byte 0 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TM10$", 14 - .2byte ITEM_TM10 - .2byte 3000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TM10 - .byte 0 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TM11$", 14 - .2byte ITEM_TM11 - .2byte 2000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TM11 - .byte 0 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TM12$", 14 - .2byte ITEM_TM12 - .2byte 3000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TM12 - .byte 0 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TM13$", 14 - .2byte ITEM_TM13 - .2byte 3000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TM13 - .byte 0 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TM14$", 14 - .2byte ITEM_TM14 - .2byte 5500 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TM14 - .byte 0 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TM15$", 14 - .2byte ITEM_TM15 - .2byte 7500 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TM15 - .byte 0 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TM16$", 14 - .2byte ITEM_TM16 - .2byte 3000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TM16 - .byte 0 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TM17$", 14 - .2byte ITEM_TM17 - .2byte 3000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TM17 - .byte 0 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TM18$", 14 - .2byte ITEM_TM18 - .2byte 2000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TM18 - .byte 0 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TM19$", 14 - .2byte ITEM_TM19 - .2byte 3000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TM19 - .byte 0 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TM20$", 14 - .2byte ITEM_TM20 - .2byte 3000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TM20 - .byte 0 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TM21$", 14 - .2byte ITEM_TM21 - .2byte 1000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TM21 - .byte 0 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TM22$", 14 - .2byte ITEM_TM22 - .2byte 3000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TM22 - .byte 0 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TM23$", 14 - .2byte ITEM_TM23 - .2byte 3000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TM23 - .byte 0 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TM24$", 14 - .2byte ITEM_TM24 - .2byte 3000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TM24 - .byte 0 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TM25$", 14 - .2byte ITEM_TM25 - .2byte 5500 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TM25 - .byte 0 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TM26$", 14 - .2byte ITEM_TM26 - .2byte 3000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TM26 - .byte 0 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TM27$", 14 - .2byte ITEM_TM27 - .2byte 1000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TM27 - .byte 0 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TM28$", 14 - .2byte ITEM_TM28 - .2byte 2000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TM28 - .byte 0 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TM29$", 14 - .2byte ITEM_TM29 - .2byte 2000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TM29 - .byte 0 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TM30$", 14 - .2byte ITEM_TM30 - .2byte 3000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TM30 - .byte 0 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TM31$", 14 - .2byte ITEM_TM31 - .2byte 3000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TM31 - .byte 0 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TM32$", 14 - .2byte ITEM_TM32 - .2byte 2000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TM32 - .byte 0 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TM33$", 14 - .2byte ITEM_TM33 - .2byte 3000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TM33 - .byte 0 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TM34$", 14 - .2byte ITEM_TM34 - .2byte 3000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TM34 - .byte 0 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TM35$", 14 - .2byte ITEM_TM35 - .2byte 3000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TM35 - .byte 0 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TM36$", 14 - .2byte ITEM_TM36 - .2byte 1000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TM36 - .byte 0 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TM37$", 14 - .2byte ITEM_TM37 - .2byte 2000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TM37 - .byte 0 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TM38$", 14 - .2byte ITEM_TM38 - .2byte 5500 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TM38 - .byte 0 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TM39$", 14 - .2byte ITEM_TM39 - .2byte 3000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TM39 - .byte 0 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TM40$", 14 - .2byte ITEM_TM40 - .2byte 3000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TM40 - .byte 0 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TM41$", 14 - .2byte ITEM_TM41 - .2byte 3000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TM41 - .byte 0 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TM42$", 14 - .2byte ITEM_TM42 - .2byte 3000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TM42 - .byte 0 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TM43$", 14 - .2byte ITEM_TM43 - .2byte 3000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TM43 - .byte 0 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TM44$", 14 - .2byte ITEM_TM44 - .2byte 3000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TM44 - .byte 0 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TM45$", 14 - .2byte ITEM_TM45 - .2byte 3000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TM45 - .byte 0 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TM46$", 14 - .2byte ITEM_TM46 - .2byte 3000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TM46 - .byte 0 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TM47$", 14 - .2byte ITEM_TM47 - .2byte 3000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TM47 - .byte 0 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TM48$", 14 - .2byte ITEM_TM48 - .2byte 3000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TM48 - .byte 0 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TM49$", 14 - .2byte ITEM_TM49 - .2byte 3000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TM49 - .byte 0 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "TM50$", 14 - .2byte ITEM_TM50 - .2byte 3000 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_TM50 - .byte 0 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "HM01$", 14 - .2byte ITEM_HM01 - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_HM01 - .byte 1 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "HM02$", 14 - .2byte ITEM_HM02 - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_HM02 - .byte 1 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "HM03$", 14 - .2byte ITEM_HM03 - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_HM03 - .byte 1 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "HM04$", 14 - .2byte ITEM_HM04 - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_HM04 - .byte 1 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "HM05$", 14 - .2byte ITEM_HM05 - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_HM05 - .byte 1 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "HM06$", 14 - .2byte ITEM_HM06 - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_HM06 - .byte 1 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "HM07$", 14 - .2byte ITEM_HM07 - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_HM07 - .byte 1 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "HM08$", 14 - .2byte ITEM_HM08 - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_HM08 - .byte 1 - .byte 0 - .byte POCKET_TM_HM - .byte 1 - .4byte ItemUseOutOfBattle_TMHM - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 - - .string "????????$", 14 - .2byte ITEM_NONE - .2byte 0 @ price - .byte HOLD_EFFECT_NONE - .byte 0 - .4byte gItemDescription_Dummy - .byte 0 - .byte 0 - .byte POCKET_ITEMS - .byte 4 - .4byte ItemUseOutOfBattle_CannotUse - .4byte 0 - .4byte NULL - .4byte 0 diff --git a/data/learn_move.s b/data/learn_move.s deleted file mode 100644 index 369fbfdf0..000000000 --- a/data/learn_move.s +++ /dev/null @@ -1,150 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - - .align 2 -gDexArrows_Pal:: - .incbin "graphics/pokedex/arrows.gbapal" - - .align 2 -gDexArrows_Gfx:: - .incbin "graphics/pokedex/arrows.4bpp" - -gUnknown_08402CF8:: @ 8402CF8 - .byte 0, 0, 9, 13 - .byte 10, 0, 29, 7 - .byte 2, 14, 27, 19 - .byte 10, 8, 29, 13 - -gUnknown_08402D08:: @ 8402D08 - .4byte OtherText_Battle - .byte 1, 1, 0, 0 - .4byte OtherText_Power - .byte 1, 4, 1, 0 - .4byte OtherText_Accuracy - .byte 1, 9, 2, 0 - .space 8 - - .4byte OtherText_Contest - .byte 1, 1, 0, 0 - .4byte OtherText_Appeal - .byte 1, 4, 1, 0 - .4byte OtherText_Jam - .byte 1, 9, 2, 0 - .space 8 - - .4byte 0xFF00FFEF - .4byte gTileBuffer - - .align 2 -gOamData_8402D50:: @ 8402D50 - .2byte 0x0000 - .2byte 0x0000 - .2byte 0x0000 - - .align 2 -gOamData_8402D58:: @ 8402D58 - .2byte 0x8000 - .2byte 0x0000 - .2byte 0x0000 - - .align 2 -gOamData_8402D60:: @ 8402D60 - .2byte 0x4000 - .2byte 0x0000 - .2byte 0x0000 - - .align 2 -gSpriteAnim_8402D68:: @ 8402D68 - obj_image_anim_frame 2, 5 - obj_image_anim_end - - .align 2 -gSpriteAnim_8402D70:: @ 8402D70 - obj_image_anim_frame 0, 5 - obj_image_anim_end - - .align 2 -gSpriteAnimTable_8402D78:: @ 8402D78 - .4byte gSpriteAnim_8402D68 - .4byte gSpriteAnim_8402D70 - - .align 2 -gUnknown_08402D80:: @ 8402D80 - obj_tiles gDexArrows_Gfx, 384, 0x1595 - - .align 2 -gUnknown_08402D88:: @ 8402D88 - obj_pal gDexArrows_Pal, 0x1596 - - .align 2 -gSpriteTemplate_8402D90:: @ 8402D90 - spr_template 5525, 5526, gOamData_8402D58, gSpriteAnimTable_8402D78, NULL, gDummySpriteAffineAnimTable, sub_8133300 - - .align 2 -gSpriteAnim_8402DA8:: @ 8402DA8 - obj_image_anim_frame 4, 5 - obj_image_anim_end - - .align 2 -gSpriteAnim_8402DB0:: @ 8402DB0 - obj_image_anim_frame 6, 5 - obj_image_anim_end - - .align 2 -gSpriteAnimTable_8402DB8:: @ 8402DB8 - .4byte gSpriteAnim_8402DA8 - .4byte gSpriteAnim_8402DB0 - - .align 2 -gSpriteTemplate_8402DC0:: @ 8402DC0 - spr_template 5525, 5526, gOamData_8402D60, gSpriteAnimTable_8402DB8, NULL, gDummySpriteAffineAnimTable, sub_8133300 - - .align 2 -gSpriteAnim_8402DD8:: @ 8402DD8 - obj_image_anim_frame 8, 5 - obj_image_anim_end - - .align 2 -gSpriteAnim_8402DE0:: @ 8402DE0 - obj_image_anim_frame 9, 5 - obj_image_anim_end - - .align 2 -gSpriteAnim_8402DE8:: @ 8402DE8 - obj_image_anim_frame 10, 5 - obj_image_anim_end - - .align 2 -gSpriteAnim_8402DF0:: @ 8402DF0 - obj_image_anim_frame 11, 5 - obj_image_anim_end - - .align 2 -gSpriteAnimTable_8402DF8:: @ 8402DF8 - .4byte gSpriteAnim_8402DD8 - .4byte gSpriteAnim_8402DE0 - .4byte gSpriteAnim_8402DE8 - .4byte gSpriteAnim_8402DF0 - - .align 2 -gSpriteTemplate_8402E08:: @ 8402E08 - spr_template 5525, 5526, gOamData_8402D50, gSpriteAnimTable_8402DF8, NULL, gDummySpriteAffineAnimTable, sub_8133300 - - .string "あきと$" @ programmer Akito Mori? - -gUnknown_08402E24:: @ 8402E24 - .byte 11, 1, 1 - .byte 3, 6, 2 - .byte 24, 1, 3 - .byte 3, 11, 4 - .byte 5, 4, 5 - .byte 3, 6, 6 - .byte 3, 11, 7 - -gUnknown_08402E39:: @ 8402E39 - .byte 0, 1, 2, 3 - -gUnknown_08402E3D:: @ 8402E3D - .byte 4, 5, 6 diff --git a/data/maps/events/FieryPath.inc b/data/maps/events/FieryPath.inc index 01b7b3efe..a4ac688d8 100644 --- a/data/maps/events/FieryPath.inc +++ b/data/maps/events/FieryPath.inc @@ -1,11 +1,11 @@ FieryPath_MapObjects:: @ 838C718 object_event 1, MAP_OBJ_GFX_ITEM_BALL, 0, 8, 0, 3, 0, 3, 1, 17, 0, 0, 0, 0, 0, FieryPath_EventScript_1B17EE, 1091, 0, 0 - object_event 2, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 10, 0, 15, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 17, 0, 0 - object_event 3, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 17, 0, 15, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 18, 0, 0 - object_event 4, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 8, 0, 11, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 19, 0, 0 - object_event 5, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 3, 0, 12, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 20, 0, 0 - object_event 6, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 6, 0, 23, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 21, 0, 0 - object_event 7, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 5, 0, 24, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 22, 0, 0 + object_event 2, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 10, 0, 15, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 17, 0, 0 + object_event 3, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 17, 0, 15, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 18, 0, 0 + object_event 4, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 8, 0, 11, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 19, 0, 0 + object_event 5, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 3, 0, 12, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 20, 0, 0 + object_event 6, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 6, 0, 23, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 21, 0, 0 + object_event 7, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 5, 0, 24, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 22, 0, 0 object_event 8, MAP_OBJ_GFX_ITEM_BALL, 0, 7, 0, 32, 0, 3, 1, 17, 0, 0, 0, 0, 0, FieryPath_EventScript_1B17E1, 1111, 0, 0 FieryPath_MapWarps:: @ 838C7D8 diff --git a/data/maps/events/GraniteCave_B2F.inc b/data/maps/events/GraniteCave_B2F.inc index 49c0bace0..158577482 100644 --- a/data/maps/events/GraniteCave_B2F.inc +++ b/data/maps/events/GraniteCave_B2F.inc @@ -1,13 +1,13 @@ GraniteCave_B2F_MapObjects:: @ 838BFEC object_event 1, MAP_OBJ_GFX_ITEM_BALL, 0, 4, 0, 4, 0, 3, 1, 0, 0, 0, 0, 0, 0, GraniteCave_B2F_EventScript_1B17BA, 1053, 0, 0 object_event 2, MAP_OBJ_GFX_ITEM_BALL, 0, 29, 0, 4, 0, 3, 1, 0, 0, 0, 0, 0, 0, GraniteCave_B2F_EventScript_1B17C7, 1054, 0, 0 - object_event 3, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 5, 0, 14, 0, 3, 1, 17, 0, 0, 0, 0, 0, BreakableRockScript, 17, 0, 0 - object_event 4, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 3, 0, 14, 0, 3, 1, 17, 0, 0, 0, 0, 0, BreakableRockScript, 18, 0, 0 - object_event 5, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 2, 0, 16, 0, 3, 1, 17, 0, 0, 0, 0, 0, BreakableRockScript, 19, 0, 0 - object_event 6, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 7, 0, 12, 0, 3, 1, 17, 0, 0, 0, 0, 0, BreakableRockScript, 20, 0, 0 - object_event 7, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 4, 0, 22, 0, 3, 1, 17, 0, 0, 0, 0, 0, BreakableRockScript, 21, 0, 0 - object_event 8, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 6, 0, 22, 0, 3, 1, 17, 0, 0, 0, 0, 0, BreakableRockScript, 22, 0, 0 - object_event 9, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 3, 0, 21, 0, 3, 1, 17, 0, 0, 0, 0, 0, BreakableRockScript, 23, 0, 0 + object_event 3, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 5, 0, 14, 0, 3, 1, 17, 0, 0, 0, 0, 0, S_BreakableRock, 17, 0, 0 + object_event 4, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 3, 0, 14, 0, 3, 1, 17, 0, 0, 0, 0, 0, S_BreakableRock, 18, 0, 0 + object_event 5, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 2, 0, 16, 0, 3, 1, 17, 0, 0, 0, 0, 0, S_BreakableRock, 19, 0, 0 + object_event 6, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 7, 0, 12, 0, 3, 1, 17, 0, 0, 0, 0, 0, S_BreakableRock, 20, 0, 0 + object_event 7, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 4, 0, 22, 0, 3, 1, 17, 0, 0, 0, 0, 0, S_BreakableRock, 21, 0, 0 + object_event 8, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 6, 0, 22, 0, 3, 1, 17, 0, 0, 0, 0, 0, S_BreakableRock, 22, 0, 0 + object_event 9, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 3, 0, 21, 0, 3, 1, 17, 0, 0, 0, 0, 0, S_BreakableRock, 23, 0, 0 GraniteCave_B2F_MapWarps:: @ 838C0C4 warp_def 29, 13, 3, 2, GraniteCave_B1F diff --git a/data/maps/events/PetalburgWoods.inc b/data/maps/events/PetalburgWoods.inc index 0ec69c1a2..cb0ff7ca1 100644 --- a/data/maps/events/PetalburgWoods.inc +++ b/data/maps/events/PetalburgWoods.inc @@ -1,6 +1,6 @@ PetalburgWoods_MapObjects:: @ 838C14C - object_event 1, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 19, 0, 10, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 17, 0, 0 - object_event 2, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 19, 0, 11, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 18, 0, 0 + object_event 1, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 19, 0, 10, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 17, 0, 0 + object_event 2, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 19, 0, 11, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 18, 0, 0 object_event 3, 241, 0, 26, 0, 17, 0, 3, 10, 0, 0, 0, 0, 0, 0, 0x0, 725, 0, 0 object_event 4, MAP_OBJ_GFX_MAN_2, 0, 26, 0, 20, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0x0, 724, 0, 0 object_event 5, MAP_OBJ_GFX_ITEM_BALL, 0, 45, 0, 7, 0, 3, 8, 0, 0, 0, 0, 0, 0, PetalburgWoods_EventScript_1B175F, 1056, 0, 0 diff --git a/data/maps/events/Route102.inc b/data/maps/events/Route102.inc index 9cf97de4b..7ffa0e191 100644 --- a/data/maps/events/Route102.inc +++ b/data/maps/events/Route102.inc @@ -5,8 +5,8 @@ Route102_MapObjects:: @ 83811FC object_event 4, MAP_OBJ_GFX_LASS, 0, 8, 0, 7, 0, 3, 18, 0, 0, 1, 0, 3, 0, Route102_EventScript_14EB53, 0, 0, 0 object_event 5, MAP_OBJ_GFX_BOY_1, 0, 37, 0, 4, 0, 3, 2, 17, 0, 0, 0, 0, 0, Route102_EventScript_14EAF5, 0, 0, 0 object_event 6, MAP_OBJ_GFX_ITEM_BALL, 0, 11, 0, 15, 0, 3, 8, 0, 0, 0, 0, 0, 0, Route102_EventScript_1B1439, 1000, 0, 0 - object_event 7, MAP_OBJ_GFX_BERRY_TREE, 0, 24, 0, 2, 0, 3, 12, 0, 0, 0, 0, 2, 0, BerryTreeScript, 0, 0, 0 - object_event 8, MAP_OBJ_GFX_BERRY_TREE, 0, 25, 0, 2, 0, 3, 12, 0, 0, 0, 0, 1, 0, BerryTreeScript, 0, 0, 0 + object_event 7, MAP_OBJ_GFX_BERRY_TREE, 0, 24, 0, 2, 0, 3, 12, 0, 0, 0, 0, 2, 0, S_BerryTree, 0, 0, 0 + object_event 8, MAP_OBJ_GFX_BERRY_TREE, 0, 25, 0, 2, 0, 3, 12, 0, 0, 0, 0, 1, 0, S_BerryTree, 0, 0, 0 object_event 9, MAP_OBJ_GFX_YOUNGSTER, 0, 19, 0, 4, 0, 3, 8, 17, 0, 1, 0, 3, 0, Route102_EventScript_14EB6A, 0, 0, 0 Route102_MapBGEvents:: @ 83812D4 diff --git a/data/maps/events/Route103.inc b/data/maps/events/Route103.inc index 01640eb65..462fe1a3b 100644 --- a/data/maps/events/Route103.inc +++ b/data/maps/events/Route103.inc @@ -5,15 +5,15 @@ Route103_MapObjects:: @ 8381300 object_event 4, MAP_OBJ_GFX_LITTLE_GIRL_1, 0, 65, 0, 11, 0, 3, 8, 0, 0, 1, 0, 0, 0, Route103_EventScript_14EDF1, 0, 0, 0 object_event 5, MAP_OBJ_GFX_LITTLE_GIRL_1, 0, 64, 0, 11, 0, 3, 8, 0, 0, 1, 0, 0, 0, Route103_EventScript_14EDAB, 0, 0, 0 object_event 6, MAP_OBJ_GFX_FISHERMAN, 0, 50, 0, 8, 0, 3, 26, 16, 0, 1, 0, 3, 0, Route103_EventScript_14EE37, 0, 0, 0 - object_event 7, MAP_OBJ_GFX_BERRY_TREE, 0, 58, 0, 5, 0, 3, 12, 0, 0, 0, 0, 5, 0, BerryTreeScript, 0, 0, 0 - object_event 8, MAP_OBJ_GFX_BERRY_TREE, 0, 59, 0, 5, 0, 3, 12, 0, 0, 0, 0, 6, 0, BerryTreeScript, 0, 0, 0 - object_event 9, MAP_OBJ_GFX_BERRY_TREE, 0, 60, 0, 5, 0, 3, 12, 0, 0, 0, 0, 7, 0, BerryTreeScript, 0, 0, 0 + object_event 7, MAP_OBJ_GFX_BERRY_TREE, 0, 58, 0, 5, 0, 3, 12, 0, 0, 0, 0, 5, 0, S_BerryTree, 0, 0, 0 + object_event 8, MAP_OBJ_GFX_BERRY_TREE, 0, 59, 0, 5, 0, 3, 12, 0, 0, 0, 0, 6, 0, S_BerryTree, 0, 0, 0 + object_event 9, MAP_OBJ_GFX_BERRY_TREE, 0, 60, 0, 5, 0, 3, 12, 0, 0, 0, 0, 7, 0, S_BerryTree, 0, 0, 0 object_event 10, MAP_OBJ_GFX_BOY_1, 0, 20, 0, 10, 0, 3, 2, 33, 0, 0, 0, 0, 0, Route103_EventScript_14ED79, 0, 0, 0 object_event 11, MAP_OBJ_GFX_PROF_BIRCH, 0, 7, 0, 3, 0, 3, 2, 17, 0, 0, 0, 0, 0, Route103_EventScript_1A037F, 898, 0, 0 object_event 12, MAP_OBJ_GFX_MAN_3, 0, 56, 0, 12, 0, 3, 10, 0, 0, 1, 0, 5, 0, Route103_EventScript_14EE4E, 0, 0, 0 object_event 13, MAP_OBJ_GFX_ITEM_BALL, 0, 63, 0, 8, 0, 3, 1, 17, 0, 0, 0, 0, 0, Route103_EventScript_1B1446, 1114, 0, 0 - object_event 14, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 67, 0, 7, 0, 3, 1, 17, 0, 0, 0, 0, 0, CuttableTreeScript, 18, 0, 0 - object_event 15, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 69, 0, 7, 0, 3, 1, 17, 0, 0, 0, 0, 0, CuttableTreeScript, 19, 0, 0 + object_event 14, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 67, 0, 7, 0, 3, 1, 17, 0, 0, 0, 0, 0, S_CuttableTree, 18, 0, 0 + object_event 15, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 69, 0, 7, 0, 3, 1, 17, 0, 0, 0, 0, 0, S_CuttableTree, 19, 0, 0 Route103_MapBGEvents:: @ 8381468 bg_event 11, 9, 0, 0, 0, Route103_EventScript_14ED8B diff --git a/data/maps/events/Route104.inc b/data/maps/events/Route104.inc index da4b5ffc1..b4c8a2834 100644 --- a/data/maps/events/Route104.inc +++ b/data/maps/events/Route104.inc @@ -8,17 +8,17 @@ Route104_MapObjects:: @ 8381488 object_event 7, MAP_OBJ_GFX_MR_BRINEYS_BOAT, 0, 12, 0, 54, 0, 1, 7, 0, 0, 0, 0, 0, 0, 0x0, 742, 0, 0 object_event 8, MAP_OBJ_GFX_OLD_MAN_1, 0, 12, 0, 51, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0x0, 738, 0, 0 object_event 9, MAP_OBJ_GFX_FISHERMAN, 0, 29, 0, 8, 0, 3, 8, 0, 0, 1, 0, 0, 0, Route104_EventScript_14F172, 0, 0, 0 - object_event 10, MAP_OBJ_GFX_BERRY_TREE, 0, 34, 0, 6, 0, 3, 12, 0, 0, 0, 0, 8, 0, BerryTreeScript, 0, 0, 0 - object_event 11, MAP_OBJ_GFX_BERRY_TREE, 0, 35, 0, 6, 0, 3, 12, 0, 0, 0, 0, 9, 0, BerryTreeScript, 0, 0, 0 - object_event 12, MAP_OBJ_GFX_BERRY_TREE, 0, 36, 0, 6, 0, 3, 12, 0, 0, 0, 0, 10, 0, BerryTreeScript, 0, 0, 0 - object_event 13, MAP_OBJ_GFX_BERRY_TREE, 0, 22, 0, 41, 0, 3, 12, 0, 0, 0, 0, 11, 0, BerryTreeScript, 0, 0, 0 - object_event 14, MAP_OBJ_GFX_BERRY_TREE, 0, 23, 0, 41, 0, 3, 12, 0, 0, 0, 0, 12, 0, BerryTreeScript, 0, 0, 0 - object_event 15, MAP_OBJ_GFX_BERRY_TREE, 0, 24, 0, 41, 0, 3, 12, 0, 0, 0, 0, 13, 0, BerryTreeScript, 0, 0, 0 + object_event 10, MAP_OBJ_GFX_BERRY_TREE, 0, 34, 0, 6, 0, 3, 12, 0, 0, 0, 0, 8, 0, S_BerryTree, 0, 0, 0 + object_event 11, MAP_OBJ_GFX_BERRY_TREE, 0, 35, 0, 6, 0, 3, 12, 0, 0, 0, 0, 9, 0, S_BerryTree, 0, 0, 0 + object_event 12, MAP_OBJ_GFX_BERRY_TREE, 0, 36, 0, 6, 0, 3, 12, 0, 0, 0, 0, 10, 0, S_BerryTree, 0, 0, 0 + object_event 13, MAP_OBJ_GFX_BERRY_TREE, 0, 22, 0, 41, 0, 3, 12, 0, 0, 0, 0, 11, 0, S_BerryTree, 0, 0, 0 + object_event 14, MAP_OBJ_GFX_BERRY_TREE, 0, 23, 0, 41, 0, 3, 12, 0, 0, 0, 0, 12, 0, S_BerryTree, 0, 0, 0 + object_event 15, MAP_OBJ_GFX_BERRY_TREE, 0, 24, 0, 41, 0, 3, 12, 0, 0, 0, 0, 13, 0, S_BerryTree, 0, 0, 0 object_event 16, MAP_OBJ_GFX_OLD_WOMAN_1, 0, 37, 0, 8, 0, 3, 9, 17, 0, 0, 0, 0, 0, Route104_EventScript_14EEC8, 0, 0, 0 - object_event 17, MAP_OBJ_GFX_BERRY_TREE, 0, 3, 0, 22, 0, 3, 12, 0, 0, 0, 0, 3, 0, BerryTreeScript, 0, 0, 0 - object_event 18, MAP_OBJ_GFX_BERRY_TREE, 0, 3, 0, 23, 0, 3, 12, 0, 0, 0, 0, 4, 0, BerryTreeScript, 0, 0, 0 - object_event 19, MAP_OBJ_GFX_BERRY_TREE, 0, 3, 0, 24, 0, 3, 12, 0, 0, 0, 0, 75, 0, BerryTreeScript, 0, 0, 0 - object_event 20, MAP_OBJ_GFX_BERRY_TREE, 0, 3, 0, 25, 0, 3, 12, 0, 0, 0, 0, 76, 0, BerryTreeScript, 0, 0, 0 + object_event 17, MAP_OBJ_GFX_BERRY_TREE, 0, 3, 0, 22, 0, 3, 12, 0, 0, 0, 0, 3, 0, S_BerryTree, 0, 0, 0 + object_event 18, MAP_OBJ_GFX_BERRY_TREE, 0, 3, 0, 23, 0, 3, 12, 0, 0, 0, 0, 4, 0, S_BerryTree, 0, 0, 0 + object_event 19, MAP_OBJ_GFX_BERRY_TREE, 0, 3, 0, 24, 0, 3, 12, 0, 0, 0, 0, 75, 0, S_BerryTree, 0, 0, 0 + object_event 20, MAP_OBJ_GFX_BERRY_TREE, 0, 3, 0, 25, 0, 3, 12, 0, 0, 0, 0, 76, 0, S_BerryTree, 0, 0, 0 object_event 21, MAP_OBJ_GFX_ITEM_BALL, 0, 39, 0, 15, 0, 3, 1, 0, 0, 0, 0, 0, 0, Route104_EventScript_1B1453, 1002, 0, 0 object_event 22, MAP_OBJ_GFX_WOMAN_7, 0, 8, 0, 19, 0, 3, 5, 1, 0, 0, 0, 0, 0, Route104_EventScript_14EF09, 906, 0, 0 object_event 23, MAP_OBJ_GFX_LITTLE_GIRL_1, 0, 27, 0, 15, 0, 3, 8, 0, 0, 1, 0, 0, 0, Route104_EventScript_14F25A, 0, 0, 0 @@ -28,7 +28,7 @@ Route104_MapObjects:: @ 8381488 object_event 27, MAP_OBJ_GFX_ITEM_BALL, 0, 29, 0, 53, 0, 3, 1, 17, 0, 0, 0, 0, 0, Route104_EventScript_1B1460, 1057, 0, 0 object_event 28, MAP_OBJ_GFX_YOUNGSTER, 0, 18, 0, 67, 0, 3, 46, 101, 0, 1, 0, 2, 0, Route104_EventScript_14F189, 0, 0, 0 object_event 29, MAP_OBJ_GFX_ITEM_BALL, 0, 37, 0, 22, 0, 3, 1, 17, 0, 0, 0, 0, 0, Route104_EventScript_1B146D, 1115, 0, 0 - object_event 30, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 35, 0, 22, 0, 3, 1, 17, 0, 0, 0, 0, 0, CuttableTreeScript, 17, 0, 0 + object_event 30, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 35, 0, 22, 0, 3, 1, 17, 0, 0, 0, 0, 0, S_CuttableTree, 17, 0, 0 object_event 31, MAP_OBJ_GFX_ITEM_BALL, 0, 5, 0, 8, 0, 3, 1, 17, 0, 0, 0, 0, 0, Route104_EventScript_1B147A, 1135, 0, 0 object_event 32, MAP_OBJ_GFX_BOY_2, 0, 5, 0, 26, 0, 3, 1, 17, 0, 0, 0, 0, 0, Route104_EventScript_14EF93, 0, 0, 0 diff --git a/data/maps/events/Route110.inc b/data/maps/events/Route110.inc index 4ece25549..3db4ce8e8 100644 --- a/data/maps/events/Route110.inc +++ b/data/maps/events/Route110.inc @@ -14,9 +14,9 @@ Route110_MapObjects:: @ 8381D58 object_event 13, MAP_OBJ_GFX_LASS, 0, 33, 0, 15, 0, 3, 9, 0, 0, 1, 0, 1, 0, Route110_EventScript_14FAA5, 0, 0, 0 object_event 14, MAP_OBJ_GFX_MANIAC, 0, 23, 0, 40, 0, 3, 20, 0, 0, 1, 0, 3, 0, Route110_EventScript_14FABC, 0, 0, 0 object_event 15, MAP_OBJ_GFX_FISHERMAN, 0, 10, 0, 19, 0, 3, 8, 0, 0, 1, 0, 1, 0, Route110_EventScript_14FAFA, 0, 0, 0 - object_event 16, MAP_OBJ_GFX_BERRY_TREE, 0, 5, 0, 11, 0, 3, 12, 0, 0, 0, 0, 16, 0, BerryTreeScript, 0, 0, 0 - object_event 17, MAP_OBJ_GFX_BERRY_TREE, 0, 6, 0, 11, 0, 3, 12, 0, 0, 0, 0, 17, 0, BerryTreeScript, 0, 0, 0 - object_event 18, MAP_OBJ_GFX_BERRY_TREE, 0, 7, 0, 11, 0, 3, 12, 0, 0, 0, 0, 18, 0, BerryTreeScript, 0, 0, 0 + object_event 16, MAP_OBJ_GFX_BERRY_TREE, 0, 5, 0, 11, 0, 3, 12, 0, 0, 0, 0, 16, 0, S_BerryTree, 0, 0, 0 + object_event 17, MAP_OBJ_GFX_BERRY_TREE, 0, 6, 0, 11, 0, 3, 12, 0, 0, 0, 0, 17, 0, S_BerryTree, 0, 0, 0 + object_event 18, MAP_OBJ_GFX_BERRY_TREE, 0, 7, 0, 11, 0, 3, 12, 0, 0, 0, 0, 18, 0, S_BerryTree, 0, 0, 0 object_event 19, MAP_OBJ_GFX_ITEM_BALL, 0, 30, 0, 69, 0, 3, 1, 0, 0, 0, 0, 0, 0, Route110_EventScript_1B14BB, 1007, 0, 0 object_event 20, MAP_OBJ_GFX_ITEM_BALL, 0, 26, 0, 47, 0, 3, 1, 0, 0, 0, 0, 0, 0, Route110_EventScript_1B14AE, 1006, 0, 0 object_event 21, MAP_OBJ_GFX_CYCLING_TRIATHLETE_M, 0, 27, 0, 92, 0, 3, 8, 0, 0, 0, 0, 0, 0, Route110_EventScript_14FA53, 0, 0, 0 diff --git a/data/maps/events/Route110_TrickHousePuzzle1.inc b/data/maps/events/Route110_TrickHousePuzzle1.inc index 7e282f0e8..3660e3c3f 100644 --- a/data/maps/events/Route110_TrickHousePuzzle1.inc +++ b/data/maps/events/Route110_TrickHousePuzzle1.inc @@ -2,22 +2,22 @@ Route110_TrickHousePuzzle1_MapObjects:: @ 839225C object_event 1, MAP_OBJ_GFX_LASS, 0, 13, 0, 21, 0, 3, 9, 0, 0, 1, 0, 5, 0, Route110_TrickHousePuzzle1_EventScript_161D31, 0, 0, 0 object_event 2, MAP_OBJ_GFX_YOUNGSTER, 0, 13, 0, 7, 0, 3, 8, 0, 0, 1, 0, 2, 0, Route110_TrickHousePuzzle1_EventScript_161D48, 0, 0, 0 object_event 3, MAP_OBJ_GFX_LASS, 0, 3, 0, 8, 0, 3, 9, 0, 0, 1, 0, 3, 0, Route110_TrickHousePuzzle1_EventScript_161D5F, 0, 0, 0 - object_event 4, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 3, 0, 18, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 19, 0, 0 - object_event 5, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 7, 0, 21, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 17, 0, 0 - object_event 6, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 12, 0, 18, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 18, 0, 0 - object_event 7, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 10, 0, 16, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 20, 0, 0 - object_event 8, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 12, 0, 12, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 23, 0, 0 - object_event 9, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 3, 0, 12, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 22, 0, 0 - object_event 10, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 0, 0, 14, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 21, 0, 0 - object_event 11, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 6, 0, 10, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 25, 0, 0 - object_event 12, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 2, 0, 10, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 24, 0, 0 - object_event 13, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 9, 0, 8, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 26, 0, 0 - object_event 14, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 2, 0, 4, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 28, 0, 0 - object_event 15, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 0, 0, 6, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 27, 0, 0 - object_event 16, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 6, 0, 4, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 29, 0, 0 - object_event 17, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 11, 0, 4, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 30, 0, 0 + object_event 4, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 3, 0, 18, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 19, 0, 0 + object_event 5, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 7, 0, 21, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 17, 0, 0 + object_event 6, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 12, 0, 18, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 18, 0, 0 + object_event 7, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 10, 0, 16, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 20, 0, 0 + object_event 8, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 12, 0, 12, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 23, 0, 0 + object_event 9, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 3, 0, 12, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 22, 0, 0 + object_event 10, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 0, 0, 14, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 21, 0, 0 + object_event 11, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 6, 0, 10, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 25, 0, 0 + object_event 12, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 2, 0, 10, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 24, 0, 0 + object_event 13, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 9, 0, 8, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 26, 0, 0 + object_event 14, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 2, 0, 4, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 28, 0, 0 + object_event 15, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 0, 0, 6, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 27, 0, 0 + object_event 16, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 6, 0, 4, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 29, 0, 0 + object_event 17, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 11, 0, 4, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 30, 0, 0 object_event 18, MAP_OBJ_GFX_ITEM_BALL, 0, 9, 0, 12, 0, 3, 1, 0, 0, 0, 0, 0, 0, Route110_TrickHousePuzzle1_EventScript_1B1A51, 1060, 0, 0 - object_event 19, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 14, 0, 14, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 31, 0, 0 + object_event 19, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 14, 0, 14, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 31, 0, 0 Route110_TrickHousePuzzle1_MapWarps:: @ 8392424 warp_def 0, 21, 3, 2, Route110_TrickHouseEntrance diff --git a/data/maps/events/Route110_TrickHousePuzzle3.inc b/data/maps/events/Route110_TrickHousePuzzle3.inc index b7a902a54..abccae1d4 100644 --- a/data/maps/events/Route110_TrickHousePuzzle3.inc +++ b/data/maps/events/Route110_TrickHousePuzzle3.inc @@ -2,14 +2,14 @@ Route110_TrickHousePuzzle3_MapObjects:: @ 839254C object_event 1, MAP_OBJ_GFX_CAMPER, 0, 10, 0, 16, 0, 3, 8, 0, 0, 1, 0, 1, 0, Route110_TrickHousePuzzle3_EventScript_162708, 0, 0, 0 object_event 2, MAP_OBJ_GFX_PICNICKER, 0, 1, 0, 13, 0, 3, 10, 0, 0, 1, 0, 1, 0, Route110_TrickHousePuzzle3_EventScript_16271F, 0, 0, 0 object_event 3, MAP_OBJ_GFX_HIKER, 0, 11, 0, 4, 0, 3, 8, 0, 0, 1, 0, 1, 0, Route110_TrickHousePuzzle3_EventScript_162736, 0, 0, 0 - object_event 4, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 4, 0, 12, 0, 3, 1, 0, 0, 0, 0, 0, 0, BreakableRockScript, 17, 0, 0 - object_event 5, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 1, 0, 3, 0, 3, 1, 0, 0, 0, 0, 0, 0, BreakableRockScript, 18, 0, 0 - object_event 6, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 11, 0, 10, 0, 3, 1, 0, 0, 0, 0, 0, 0, BreakableRockScript, 19, 0, 0 - object_event 7, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 13, 0, 7, 0, 3, 1, 0, 0, 0, 0, 0, 0, BreakableRockScript, 20, 0, 0 + object_event 4, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 4, 0, 12, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_BreakableRock, 17, 0, 0 + object_event 5, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 1, 0, 3, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_BreakableRock, 18, 0, 0 + object_event 6, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 11, 0, 10, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_BreakableRock, 19, 0, 0 + object_event 7, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 13, 0, 7, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_BreakableRock, 20, 0, 0 object_event 8, MAP_OBJ_GFX_ITEM_BALL, 0, 0, 0, 11, 0, 3, 1, 0, 0, 0, 0, 0, 0, Route110_TrickHousePuzzle3_EventScript_1B1A85, 1064, 0, 0 object_event 9, MAP_OBJ_GFX_ITEM_BALL, 0, 7, 0, 2, 0, 3, 1, 0, 0, 0, 0, 0, 0, Route110_TrickHousePuzzle3_EventScript_1B1A78, 1063, 0, 0 - object_event 10, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 1, 0, 20, 0, 3, 1, 17, 0, 0, 0, 0, 0, BreakableRockScript, 21, 0, 0 - object_event 11, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 2, 0, 21, 0, 3, 1, 17, 0, 0, 0, 0, 0, BreakableRockScript, 22, 0, 0 + object_event 10, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 1, 0, 20, 0, 3, 1, 17, 0, 0, 0, 0, 0, S_BreakableRock, 21, 0, 0 + object_event 11, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 2, 0, 21, 0, 3, 1, 17, 0, 0, 0, 0, 0, S_BreakableRock, 22, 0, 0 Route110_TrickHousePuzzle3_MapWarps:: @ 8392654 warp_def 0, 21, 3, 2, Route110_TrickHouseEntrance diff --git a/data/maps/events/Route110_TrickHousePuzzle4.inc b/data/maps/events/Route110_TrickHousePuzzle4.inc index ac3e152a2..ef450800d 100644 --- a/data/maps/events/Route110_TrickHousePuzzle4.inc +++ b/data/maps/events/Route110_TrickHousePuzzle4.inc @@ -3,17 +3,17 @@ Route110_TrickHousePuzzle4_MapObjects:: @ 83926FC object_event 2, MAP_OBJ_GFX_GIRL_3, 0, 10, 0, 4, 0, 3, 10, 0, 0, 1, 0, 1, 0, Route110_TrickHousePuzzle4_EventScript_162799, 0, 0, 0 object_event 3, MAP_OBJ_GFX_BLACK_BELT, 0, 7, 0, 4, 0, 3, 9, 0, 0, 1, 0, 2, 0, Route110_TrickHousePuzzle4_EventScript_162782, 0, 0, 0 object_event 4, MAP_OBJ_GFX_ITEM_BALL, 0, 4, 0, 4, 0, 0, 1, 0, 0, 0, 0, 0, 0, Route110_TrickHousePuzzle4_EventScript_1B1A92, 1065, 0, 0 - object_event 5, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 13, 0, 3, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 17, 0, 0 - object_event 6, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 6, 0, 14, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 18, 0, 0 - object_event 7, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 2, 0, 12, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 19, 0, 0 - object_event 8, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 3, 0, 9, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 20, 0, 0 - object_event 9, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 12, 0, 2, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 21, 0, 0 - object_event 10, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 8, 0, 8, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 22, 0, 0 - object_event 11, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 9, 0, 7, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 23, 0, 0 - object_event 12, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 11, 0, 13, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 24, 0, 0 - object_event 13, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 14, 0, 2, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 25, 0, 0 - object_event 14, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 4, 0, 14, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 26, 0, 0 - object_event 15, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 14, 0, 9, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 27, 0, 0 + object_event 5, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 13, 0, 3, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 17, 0, 0 + object_event 6, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 6, 0, 14, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 18, 0, 0 + object_event 7, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 2, 0, 12, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 19, 0, 0 + object_event 8, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 3, 0, 9, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 20, 0, 0 + object_event 9, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 12, 0, 2, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 21, 0, 0 + object_event 10, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 8, 0, 8, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 22, 0, 0 + object_event 11, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 9, 0, 7, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 23, 0, 0 + object_event 12, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 11, 0, 13, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 24, 0, 0 + object_event 13, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 14, 0, 2, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 25, 0, 0 + object_event 14, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 4, 0, 14, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 26, 0, 0 + object_event 15, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 14, 0, 9, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 27, 0, 0 Route110_TrickHousePuzzle4_MapWarps:: @ 8392864 warp_def 0, 21, 3, 2, Route110_TrickHouseEntrance diff --git a/data/maps/events/Route111.inc b/data/maps/events/Route111.inc index 9eeed5ede..e36cd7e74 100644 --- a/data/maps/events/Route111.inc +++ b/data/maps/events/Route111.inc @@ -4,8 +4,8 @@ Route111_MapObjects:: @ 83821A0 object_event 3, MAP_OBJ_GFX_LASS, 0, 13, 0, 113, 0, 0, 8, 1, 0, 0, 0, 0, 0, 0x0, 770, 0, 0 object_event 4, MAP_OBJ_GFX_OLD_WOMAN_1, 0, 13, 0, 113, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0x0, 771, 0, 0 object_event 5, MAP_OBJ_GFX_PICNICKER, 0, 28, 0, 51, 0, 3, 17, 0, 0, 1, 0, 3, 0, Route111_EventScript_1503BE, 0, 0, 0 - object_event 6, MAP_OBJ_GFX_BERRY_TREE, 0, 22, 0, 5, 0, 3, 12, 0, 0, 0, 0, 19, 0, BerryTreeScript, 0, 0, 0 - object_event 7, MAP_OBJ_GFX_BERRY_TREE, 0, 23, 0, 5, 0, 3, 12, 0, 0, 0, 0, 20, 0, BerryTreeScript, 0, 0, 0 + object_event 6, MAP_OBJ_GFX_BERRY_TREE, 0, 22, 0, 5, 0, 3, 12, 0, 0, 0, 0, 19, 0, S_BerryTree, 0, 0, 0 + object_event 7, MAP_OBJ_GFX_BERRY_TREE, 0, 23, 0, 5, 0, 3, 12, 0, 0, 0, 0, 20, 0, S_BerryTree, 0, 0, 0 object_event 8, MAP_OBJ_GFX_MAN_4, 0, 8, 0, 91, 0, 3, 2, 17, 0, 0, 0, 0, 0, Route111_EventScript_150395, 0, 0, 0 object_event 9, MAP_OBJ_GFX_CAMPER, 0, 24, 0, 60, 0, 3, 21, 0, 0, 1, 0, 3, 0, Route111_EventScript_1503A7, 0, 0, 0 object_event 10, MAP_OBJ_GFX_HIKER, 0, 27, 0, 69, 0, 3, 50, 34, 0, 1, 0, 2, 0, Route111_EventScript_150403, 0, 0, 0 @@ -13,19 +13,19 @@ Route111_MapObjects:: @ 83821A0 object_event 12, MAP_OBJ_GFX_PICNICKER, 0, 32, 0, 72, 0, 3, 24, 0, 0, 1, 0, 3, 0, Route111_EventScript_1503EC, 0, 0, 0 object_event 13, MAP_OBJ_GFX_CAMERAMAN, 0, 14, 0, 86, 0, 3, 8, 0, 0, 0, 0, 0, 0, Route111_EventScript_1AE442, 796, 0, 0 object_event 14, MAP_OBJ_GFX_REPORTER_F, 0, 13, 0, 86, 0, 3, 8, 0, 0, 0, 0, 0, 0, Route111_EventScript_1AE422, 796, 0, 0 - object_event 15, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 18, 0, 101, 0, 3, 1, 0, 0, 0, 0, 0, 0, BreakableRockScript, 17, 0, 0 - object_event 16, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 19, 0, 100, 0, 3, 1, 0, 0, 0, 0, 0, 0, BreakableRockScript, 18, 0, 0 + object_event 15, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 18, 0, 101, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_BreakableRock, 17, 0, 0 + object_event 16, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 19, 0, 100, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_BreakableRock, 18, 0, 0 object_event 17, MAP_OBJ_GFX_GIRL_1, 0, 23, 0, 8, 0, 3, 5, 1, 0, 0, 0, 0, 0, Route111_EventScript_1500C5, 0, 0, 0 object_event 18, MAP_OBJ_GFX_ITEM_BALL, 0, 32, 0, 105, 0, 3, 1, 0, 0, 0, 0, 0, 0, Route111_EventScript_1B14C8, 1008, 0, 0 - object_event 19, MAP_OBJ_GFX_BERRY_TREE, 0, 18, 0, 5, 0, 3, 12, 0, 0, 0, 0, 80, 0, BerryTreeScript, 0, 0, 0 - object_event 20, MAP_OBJ_GFX_BERRY_TREE, 0, 19, 0, 5, 0, 3, 12, 0, 0, 0, 0, 81, 0, BerryTreeScript, 0, 0, 0 + object_event 19, MAP_OBJ_GFX_BERRY_TREE, 0, 18, 0, 5, 0, 3, 12, 0, 0, 0, 0, 80, 0, S_BerryTree, 0, 0, 0 + object_event 20, MAP_OBJ_GFX_BERRY_TREE, 0, 19, 0, 5, 0, 3, 12, 0, 0, 0, 0, 81, 0, S_BerryTree, 0, 0, 0 object_event 21, MAP_OBJ_GFX_REPORTER_F, 0, 13, 0, 86, 0, 3, 8, 0, 0, 0, 0, 0, 0, Route111_EventScript_1AE4E2, 799, 0, 0 object_event 22, MAP_OBJ_GFX_CAMERAMAN, 0, 14, 0, 86, 0, 3, 8, 0, 0, 0, 0, 0, 0, Route111_EventScript_1AE502, 799, 0, 0 object_event 23, MAP_OBJ_GFX_REPORTER_F, 0, 13, 0, 86, 0, 3, 8, 0, 0, 0, 0, 0, 0, Route111_EventScript_1AE562, 903, 0, 0 object_event 24, MAP_OBJ_GFX_CAMERAMAN, 0, 14, 0, 86, 0, 3, 8, 0, 0, 0, 0, 0, 0, Route111_EventScript_1AE582, 903, 0, 0 object_event 25, MAP_OBJ_GFX_ITEM_BALL, 0, 12, 0, 54, 0, 3, 1, 0, 0, 0, 0, 0, 0, Route111_EventScript_1B14D5, 1009, 0, 0 object_event 26, MAP_OBJ_GFX_ITEM_BALL, 0, 3, 0, 114, 0, 3, 1, 0, 0, 0, 0, 0, 0, Route111_EventScript_1B14E2, 1010, 0, 0 - object_event 27, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 22, 0, 21, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 19, 0, 0 + object_event 27, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 22, 0, 21, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 19, 0, 0 object_event 28, MAP_OBJ_GFX_PICNICKER, 0, 10, 0, 82, 0, 3, 14, 0, 0, 1, 0, 2, 0, Route111_EventScript_150458, 0, 0, 0 object_event 29, MAP_OBJ_GFX_CAMPER, 0, 11, 0, 71, 0, 3, 22, 0, 0, 1, 0, 3, 0, Route111_EventScript_150441, 0, 0, 0 object_event 30, MAP_OBJ_GFX_BLACK_BELT, 0, 32, 0, 29, 0, 3, 28, 1, 0, 1, 0, 2, 0, Route111_EventScript_15046F, 0, 0, 0 diff --git a/data/maps/events/Route112.inc b/data/maps/events/Route112.inc index f6dfcfbe5..a4991a907 100644 --- a/data/maps/events/Route112.inc +++ b/data/maps/events/Route112.inc @@ -5,10 +5,10 @@ Route112_MapObjects:: @ 8382818 object_event 4, MAP_OBJ_GFX_PICNICKER, 0, 22, 0, 46, 0, 3, 23, 0, 0, 1, 0, 3, 0, Route112_EventScript_1505B5, 0, 0, 0 object_event 5, MAP_OBJ_GFX_HIKER, 0, 17, 0, 40, 0, 3, 16, 0, 0, 1, 0, 4, 0, Route112_EventScript_150560, 0, 0, 0 object_event 6, 241, 0, 27, 0, 30, 0, 3, 8, 0, 0, 0, 0, 0, 0, Route112_EventScript_15051C, 819, 0, 0 - object_event 7, MAP_OBJ_GFX_BERRY_TREE, 0, 27, 0, 6, 0, 0, 12, 0, 0, 0, 0, 24, 0, BerryTreeScript, 0, 0, 0 - object_event 8, MAP_OBJ_GFX_BERRY_TREE, 0, 28, 0, 6, 0, 0, 12, 0, 0, 0, 0, 23, 0, BerryTreeScript, 0, 0, 0 - object_event 9, MAP_OBJ_GFX_BERRY_TREE, 0, 29, 0, 6, 0, 0, 12, 0, 0, 0, 0, 22, 0, BerryTreeScript, 0, 0, 0 - object_event 10, MAP_OBJ_GFX_BERRY_TREE, 0, 30, 0, 6, 0, 3, 12, 0, 0, 0, 0, 21, 0, BerryTreeScript, 0, 0, 0 + object_event 7, MAP_OBJ_GFX_BERRY_TREE, 0, 27, 0, 6, 0, 0, 12, 0, 0, 0, 0, 24, 0, S_BerryTree, 0, 0, 0 + object_event 8, MAP_OBJ_GFX_BERRY_TREE, 0, 28, 0, 6, 0, 0, 12, 0, 0, 0, 0, 23, 0, S_BerryTree, 0, 0, 0 + object_event 9, MAP_OBJ_GFX_BERRY_TREE, 0, 29, 0, 6, 0, 0, 12, 0, 0, 0, 0, 22, 0, S_BerryTree, 0, 0, 0 + object_event 10, MAP_OBJ_GFX_BERRY_TREE, 0, 30, 0, 6, 0, 3, 12, 0, 0, 0, 0, 21, 0, S_BerryTree, 0, 0, 0 object_event 11, MAP_OBJ_GFX_HIKER, 0, 8, 0, 50, 0, 3, 26, 48, 0, 0, 0, 0, 0, Route112_EventScript_150540, 0, 0, 0 object_event 12, MAP_OBJ_GFX_ITEM_BALL, 0, 14, 0, 43, 0, 3, 1, 0, 0, 0, 0, 0, 0, Route112_EventScript_1B14EF, 1011, 0, 0 diff --git a/data/maps/events/Route114.inc b/data/maps/events/Route114.inc index a2d948d33..1f4d761e3 100644 --- a/data/maps/events/Route114.inc +++ b/data/maps/events/Route114.inc @@ -1,25 +1,25 @@ Route114_MapObjects:: @ 8382C48 - object_event 1, MAP_OBJ_GFX_BERRY_TREE, 0, 31, 0, 43, 0, 3, 12, 0, 0, 0, 0, 77, 0, BerryTreeScript, 0, 0, 0 - object_event 2, MAP_OBJ_GFX_BERRY_TREE, 0, 31, 0, 44, 0, 3, 12, 0, 0, 0, 0, 78, 0, BerryTreeScript, 0, 0, 0 + object_event 1, MAP_OBJ_GFX_BERRY_TREE, 0, 31, 0, 43, 0, 3, 12, 0, 0, 0, 0, 77, 0, S_BerryTree, 0, 0, 0 + object_event 2, MAP_OBJ_GFX_BERRY_TREE, 0, 31, 0, 44, 0, 3, 12, 0, 0, 0, 0, 78, 0, S_BerryTree, 0, 0, 0 object_event 3, MAP_OBJ_GFX_HIKER, 0, 15, 0, 65, 0, 7, 10, 0, 0, 1, 0, 6, 0, Route114_EventScript_1507F1, 0, 0, 0 object_event 4, MAP_OBJ_GFX_HIKER, 0, 30, 0, 72, 0, 5, 15, 0, 0, 1, 0, 4, 0, Route114_EventScript_150808, 0, 0, 0 object_event 5, MAP_OBJ_GFX_CAMPER, 0, 22, 0, 50, 0, 3, 10, 0, 0, 1, 0, 3, 0, Route114_EventScript_15081F, 0, 0, 0 object_event 6, MAP_OBJ_GFX_PICNICKER, 0, 19, 0, 35, 0, 3, 1, 0, 0, 1, 0, 3, 0, Route114_EventScript_150836, 0, 0, 0 object_event 7, MAP_OBJ_GFX_MANIAC, 0, 20, 0, 56, 0, 3, 7, 0, 0, 1, 0, 3, 0, Route114_EventScript_15084D, 0, 0, 0 - object_event 8, MAP_OBJ_GFX_BERRY_TREE, 0, 31, 0, 45, 0, 3, 12, 0, 0, 0, 0, 68, 0, BerryTreeScript, 0, 0, 0 + object_event 8, MAP_OBJ_GFX_BERRY_TREE, 0, 31, 0, 45, 0, 3, 12, 0, 0, 0, 0, 68, 0, S_BerryTree, 0, 0, 0 object_event 9, MAP_OBJ_GFX_ITEM_BALL, 0, 7, 0, 6, 0, 3, 1, 0, 0, 0, 0, 0, 0, Route114_EventScript_1B1516, 1014, 0, 0 object_event 10, MAP_OBJ_GFX_ITEM_BALL, 0, 11, 0, 37, 0, 4, 1, 0, 0, 0, 0, 0, 0, Route114_EventScript_1B1523, 1015, 0, 0 - object_event 11, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 12, 0, 43, 0, 4, 1, 0, 0, 0, 0, 0, 0, BreakableRockScript, 17, 0, 0 + object_event 11, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 12, 0, 43, 0, 4, 1, 0, 0, 0, 0, 0, 0, S_BreakableRock, 17, 0, 0 object_event 12, MAP_OBJ_GFX_GENTLEMAN, 0, 19, 0, 11, 0, 3, 10, 0, 0, 0, 0, 0, 0, Route114_EventScript_150782, 0, 0, 0 object_event 13, MAP_OBJ_GFX_POOCHYENA, 0, 19, 0, 12, 0, 3, 10, 0, 0, 0, 0, 0, 0, Route114_EventScript_1507C3, 0, 0, 0 object_event 14, MAP_OBJ_GFX_MAN_5, 0, 27, 0, 42, 0, 3, 3, 16, 0, 0, 0, 0, 0, Route114_EventScript_150733, 0, 0, 0 object_event 15, MAP_OBJ_GFX_FISHERMAN, 0, 23, 0, 20, 0, 3, 8, 0, 0, 1, 0, 0, 0, Route114_EventScript_1508E0, 0, 0, 0 object_event 16, MAP_OBJ_GFX_FISHERMAN, 0, 19, 0, 26, 0, 3, 9, 0, 0, 1, 0, 0, 0, Route114_EventScript_1508C9, 0, 0, 0 object_event 17, MAP_OBJ_GFX_MAN_6, 0, 30, 0, 58, 0, 5, 23, 0, 0, 1, 0, 3, 0, Route114_EventScript_15088B, 0, 0, 0 - object_event 18, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 29, 0, 53, 0, 5, 1, 17, 0, 0, 0, 0, 0, BreakableRockScript, 18, 0, 0 - object_event 19, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 30, 0, 54, 0, 5, 1, 17, 0, 0, 0, 0, 0, BreakableRockScript, 19, 0, 0 - object_event 20, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 22, 0, 69, 0, 7, 1, 17, 0, 0, 0, 0, 0, BreakableRockScript, 20, 0, 0 - object_event 21, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 11, 0, 64, 0, 5, 1, 17, 0, 0, 0, 0, 0, BreakableRockScript, 21, 0, 0 + object_event 18, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 29, 0, 53, 0, 5, 1, 17, 0, 0, 0, 0, 0, S_BreakableRock, 18, 0, 0 + object_event 19, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 30, 0, 54, 0, 5, 1, 17, 0, 0, 0, 0, 0, S_BreakableRock, 19, 0, 0 + object_event 20, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 22, 0, 69, 0, 7, 1, 17, 0, 0, 0, 0, 0, S_BreakableRock, 20, 0, 0 + object_event 21, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 11, 0, 64, 0, 5, 1, 17, 0, 0, 0, 0, 0, S_BreakableRock, 21, 0, 0 object_event 22, MAP_OBJ_GFX_LASS, 0, 24, 0, 44, 0, 3, 8, 17, 0, 1, 0, 0, 0, Route114_EventScript_150912, 0, 0, 0 object_event 23, MAP_OBJ_GFX_LASS, 0, 23, 0, 44, 0, 3, 8, 17, 0, 1, 0, 0, 0, Route114_EventScript_1508F7, 0, 0, 0 diff --git a/data/maps/events/Route115.inc b/data/maps/events/Route115.inc index cba3c3e7d..ddca08fad 100644 --- a/data/maps/events/Route115.inc +++ b/data/maps/events/Route115.inc @@ -2,18 +2,18 @@ Route115_MapObjects:: @ 8382F2C object_event 1, MAP_OBJ_GFX_WOMAN_3, 0, 18, 0, 68, 0, 3, 2, 17, 0, 0, 0, 0, 0, Route115_EventScript_15092E, 0, 0, 0 object_event 2, MAP_OBJ_GFX_OLD_MAN_1, 0, 5, 0, 15, 0, 3, 10, 0, 0, 1, 0, 6, 0, Route115_EventScript_150949, 0, 0, 0 object_event 3, MAP_OBJ_GFX_BLACK_BELT, 0, 27, 0, 53, 0, 3, 15, 17, 0, 1, 0, 4, 0, Route115_EventScript_15099E, 0, 0, 0 - object_event 4, MAP_OBJ_GFX_BERRY_TREE, 0, 11, 0, 5, 0, 3, 12, 0, 0, 0, 0, 69, 0, BerryTreeScript, 0, 0, 0 - object_event 5, MAP_OBJ_GFX_BERRY_TREE, 0, 12, 0, 5, 0, 3, 12, 0, 0, 0, 0, 70, 0, BerryTreeScript, 0, 0, 0 - object_event 6, MAP_OBJ_GFX_BERRY_TREE, 0, 13, 0, 5, 0, 3, 12, 0, 0, 0, 0, 71, 0, BerryTreeScript, 0, 0, 0 + object_event 4, MAP_OBJ_GFX_BERRY_TREE, 0, 11, 0, 5, 0, 3, 12, 0, 0, 0, 0, 69, 0, S_BerryTree, 0, 0, 0 + object_event 5, MAP_OBJ_GFX_BERRY_TREE, 0, 12, 0, 5, 0, 3, 12, 0, 0, 0, 0, 70, 0, S_BerryTree, 0, 0, 0 + object_event 6, MAP_OBJ_GFX_BERRY_TREE, 0, 13, 0, 5, 0, 3, 12, 0, 0, 0, 0, 71, 0, S_BerryTree, 0, 0, 0 object_event 7, MAP_OBJ_GFX_GIRL_3, 0, 15, 0, 50, 0, 3, 64, 0, 0, 1, 0, 3, 0, Route115_EventScript_1509DC, 0, 0, 0 object_event 8, MAP_OBJ_GFX_BLACK_BELT, 0, 17, 0, 17, 0, 3, 50, 51, 0, 1, 0, 2, 0, Route115_EventScript_150987, 0, 0, 0 object_event 9, MAP_OBJ_GFX_MANIAC, 0, 25, 0, 61, 0, 3, 14, 0, 0, 1, 0, 3, 0, Route115_EventScript_150A1A, 0, 0, 0 object_event 10, MAP_OBJ_GFX_ITEM_BALL, 0, 20, 0, 60, 0, 3, 1, 0, 0, 0, 0, 0, 0, Route115_EventScript_1B1530, 1016, 0, 0 object_event 11, MAP_OBJ_GFX_ITEM_BALL, 0, 19, 0, 5, 0, 3, 1, 0, 0, 0, 0, 0, 0, Route115_EventScript_1B153D, 1017, 0, 0 object_event 12, MAP_OBJ_GFX_ITEM_BALL, 0, 23, 0, 29, 0, 3, 1, 0, 0, 0, 0, 0, 0, Route115_EventScript_1B154A, 1018, 0, 0 - object_event 13, MAP_OBJ_GFX_BERRY_TREE, 0, 31, 0, 64, 0, 3, 12, 0, 0, 0, 0, 55, 0, BerryTreeScript, 0, 0, 0 - object_event 14, MAP_OBJ_GFX_BERRY_TREE, 0, 31, 0, 65, 0, 3, 12, 0, 0, 0, 0, 56, 0, BerryTreeScript, 0, 0, 0 - object_event 15, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 29, 0, 50, 0, 3, 1, 17, 0, 0, 0, 0, 0, BreakableRockScript, 17, 0, 0 + object_event 13, MAP_OBJ_GFX_BERRY_TREE, 0, 31, 0, 64, 0, 3, 12, 0, 0, 0, 0, 55, 0, S_BerryTree, 0, 0, 0 + object_event 14, MAP_OBJ_GFX_BERRY_TREE, 0, 31, 0, 65, 0, 3, 12, 0, 0, 0, 0, 56, 0, S_BerryTree, 0, 0, 0 + object_event 15, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 29, 0, 50, 0, 3, 1, 17, 0, 0, 0, 0, 0, S_BreakableRock, 17, 0, 0 object_event 16, MAP_OBJ_GFX_ITEM_BALL, 0, 31, 0, 56, 0, 3, 1, 17, 0, 0, 0, 0, 0, Route115_EventScript_1B1557, 1118, 0, 0 Route115_MapWarps:: @ 83830AC diff --git a/data/maps/events/Route116.inc b/data/maps/events/Route116.inc index 18717be4e..b5f922524 100644 --- a/data/maps/events/Route116.inc +++ b/data/maps/events/Route116.inc @@ -1,18 +1,18 @@ Route116_MapObjects:: @ 8383170 - object_event 1, MAP_OBJ_GFX_BERRY_TREE, 0, 18, 0, 2, 0, 3, 12, 0, 0, 0, 0, 25, 0, BerryTreeScript, 0, 0, 0 - object_event 2, MAP_OBJ_GFX_BERRY_TREE, 0, 19, 0, 2, 0, 3, 12, 0, 0, 0, 0, 26, 0, BerryTreeScript, 0, 0, 0 + object_event 1, MAP_OBJ_GFX_BERRY_TREE, 0, 18, 0, 2, 0, 3, 12, 0, 0, 0, 0, 25, 0, S_BerryTree, 0, 0, 0 + object_event 2, MAP_OBJ_GFX_BERRY_TREE, 0, 19, 0, 2, 0, 3, 12, 0, 0, 0, 0, 26, 0, S_BerryTree, 0, 0, 0 object_event 3, MAP_OBJ_GFX_YOUNGSTER, 0, 12, 0, 7, 0, 3, 16, 0, 0, 1, 0, 3, 0, Route116_EventScript_150C62, 0, 0, 0 - object_event 4, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 21, 0, 6, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 17, 0, 0 - object_event 5, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 33, 0, 8, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 18, 0, 0 + object_event 4, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 21, 0, 6, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 17, 0, 0 + object_event 5, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 33, 0, 8, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 18, 0, 0 object_event 6, MAP_OBJ_GFX_BUG_CATCHER, 0, 13, 0, 17, 0, 3, 24, 0, 0, 1, 0, 2, 0, Route116_EventScript_150C79, 0, 0, 0 object_event 7, MAP_OBJ_GFX_ITEM_BALL, 0, 19, 0, 6, 0, 3, 1, 0, 0, 0, 0, 0, 0, Route116_EventScript_1B1571, 1019, 0, 0 object_event 8, MAP_OBJ_GFX_ITEM_BALL, 0, 10, 0, 17, 0, 3, 1, 0, 0, 0, 0, 0, 0, Route116_EventScript_1B157E, 1020, 0, 0 - object_event 9, MAP_OBJ_GFX_BERRY_TREE, 0, 20, 0, 2, 0, 3, 12, 0, 0, 0, 0, 66, 0, BerryTreeScript, 0, 0, 0 - object_event 10, MAP_OBJ_GFX_BERRY_TREE, 0, 21, 0, 2, 0, 3, 12, 0, 0, 0, 0, 67, 0, BerryTreeScript, 0, 0, 0 + object_event 9, MAP_OBJ_GFX_BERRY_TREE, 0, 20, 0, 2, 0, 3, 12, 0, 0, 0, 0, 66, 0, S_BerryTree, 0, 0, 0 + object_event 10, MAP_OBJ_GFX_BERRY_TREE, 0, 21, 0, 2, 0, 3, 12, 0, 0, 0, 0, 67, 0, S_BerryTree, 0, 0, 0 object_event 11, MAP_OBJ_GFX_OLD_MAN_1, 0, 46, 0, 9, 0, 3, 1, 0, 0, 0, 0, 0, 0, Route116_EventScript_150B5D, 891, 0, 0 - object_event 12, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 30, 0, 6, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 19, 0, 0 + object_event 12, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 30, 0, 6, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 19, 0, 0 object_event 13, MAP_OBJ_GFX_HIKER, 0, 36, 0, 15, 0, 3, 13, 0, 0, 1, 0, 2, 0, Route116_EventScript_150CCE, 0, 0, 0 - object_event 14, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 24, 0, 9, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 20, 0, 0 + object_event 14, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 24, 0, 9, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 20, 0, 0 object_event 15, MAP_OBJ_GFX_ITEM_BALL, 0, 80, 0, 8, 0, 3, 1, 0, 0, 0, 0, 0, 0, Route116_EventScript_1B158B, 1021, 0, 0 object_event 16, MAP_OBJ_GFX_LASS, 0, 22, 0, 16, 0, 3, 13, 0, 0, 1, 0, 3, 0, Route116_EventScript_150CE5, 0, 0, 0 object_event 17, MAP_OBJ_GFX_GIRL_3, 0, 25, 0, 4, 0, 3, 8, 0, 0, 1, 0, 2, 0, Route116_EventScript_150CFC, 0, 0, 0 diff --git a/data/maps/events/Route117.inc b/data/maps/events/Route117.inc index b53e3de57..bf6aeb5d0 100644 --- a/data/maps/events/Route117.inc +++ b/data/maps/events/Route117.inc @@ -9,11 +9,11 @@ Route117_MapObjects:: @ 8383440 object_event 8, MAP_OBJ_GFX_RUNNING_TRIATHLETE_M, 0, 35, 0, 7, 0, 3, 28, 7, 0, 1, 0, 4, 0, Route117_EventScript_150E09, 0, 0, 0 object_event 9, MAP_OBJ_GFX_WOMAN_3, 0, 31, 0, 11, 0, 3, 23, 0, 0, 1, 0, 3, 0, Route117_EventScript_150DCB, 0, 0, 0 object_event 10, MAP_OBJ_GFX_MAN_5, 0, 10, 0, 9, 0, 3, 18, 0, 0, 1, 0, 3, 0, Route117_EventScript_150D8D, 0, 0, 0 - object_event 11, MAP_OBJ_GFX_BERRY_TREE, 0, 41, 0, 13, 0, 3, 12, 0, 0, 0, 0, 29, 0, BerryTreeScript, 0, 0, 0 - object_event 12, MAP_OBJ_GFX_BERRY_TREE, 0, 42, 0, 13, 0, 3, 12, 0, 0, 0, 0, 28, 0, BerryTreeScript, 0, 0, 0 - object_event 13, MAP_OBJ_GFX_BERRY_TREE, 0, 43, 0, 13, 0, 3, 12, 0, 0, 0, 0, 27, 0, BerryTreeScript, 0, 0, 0 + object_event 11, MAP_OBJ_GFX_BERRY_TREE, 0, 41, 0, 13, 0, 3, 12, 0, 0, 0, 0, 29, 0, S_BerryTree, 0, 0, 0 + object_event 12, MAP_OBJ_GFX_BERRY_TREE, 0, 42, 0, 13, 0, 3, 12, 0, 0, 0, 0, 28, 0, S_BerryTree, 0, 0, 0 + object_event 13, MAP_OBJ_GFX_BERRY_TREE, 0, 43, 0, 13, 0, 3, 12, 0, 0, 0, 0, 27, 0, S_BerryTree, 0, 0, 0 object_event 14, MAP_OBJ_GFX_ITEM_BALL, 0, 16, 0, 18, 0, 3, 1, 0, 0, 0, 0, 0, 0, Route117_EventScript_1B1598, 1022, 0, 0 - object_event 15, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 15, 0, 2, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 17, 0, 0 + object_event 15, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 15, 0, 2, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 17, 0, 0 object_event 16, MAP_OBJ_GFX_ITEM_BALL, 0, 9, 0, 1, 0, 3, 1, 0, 0, 0, 0, 0, 0, Route117_EventScript_1B15A5, 1023, 0, 0 object_event 17, MAP_OBJ_GFX_RUNNING_TRIATHLETE_F, 0, 21, 0, 1, 0, 3, 40, 68, 0, 1, 0, 3, 0, Route117_EventScript_150E47, 0, 0, 0 object_event 18, MAP_OBJ_GFX_MANIAC, 0, 17, 0, 12, 0, 3, 7, 17, 0, 1, 0, 4, 0, Route117_EventScript_150E85, 0, 0, 0 diff --git a/data/maps/events/Route118.inc b/data/maps/events/Route118.inc index f912b6fbd..df887ba1e 100644 --- a/data/maps/events/Route118.inc +++ b/data/maps/events/Route118.inc @@ -1,7 +1,7 @@ Route118_MapObjects:: @ 8383684 - object_event 1, MAP_OBJ_GFX_BERRY_TREE, 0, 35, 0, 5, 0, 3, 12, 0, 0, 0, 0, 31, 0, BerryTreeScript, 0, 0, 0 - object_event 2, MAP_OBJ_GFX_BERRY_TREE, 0, 36, 0, 5, 0, 3, 12, 0, 0, 0, 0, 32, 0, BerryTreeScript, 0, 0, 0 - object_event 3, MAP_OBJ_GFX_BERRY_TREE, 0, 37, 0, 5, 0, 3, 12, 0, 0, 0, 0, 33, 0, BerryTreeScript, 0, 0, 0 + object_event 1, MAP_OBJ_GFX_BERRY_TREE, 0, 35, 0, 5, 0, 3, 12, 0, 0, 0, 0, 31, 0, S_BerryTree, 0, 0, 0 + object_event 2, MAP_OBJ_GFX_BERRY_TREE, 0, 36, 0, 5, 0, 3, 12, 0, 0, 0, 0, 32, 0, S_BerryTree, 0, 0, 0 + object_event 3, MAP_OBJ_GFX_BERRY_TREE, 0, 37, 0, 5, 0, 3, 12, 0, 0, 0, 0, 33, 0, S_BerryTree, 0, 0, 0 object_event 4, MAP_OBJ_GFX_MAN_6, 0, 64, 0, 10, 0, 3, 8, 0, 0, 1, 0, 3, 0, Route118_EventScript_151139, 0, 0, 0 object_event 5, MAP_OBJ_GFX_REPORTER_F, 0, 33, 0, 8, 0, 3, 8, 0, 0, 0, 0, 0, 0, Route118_EventScript_1AE462, 797, 0, 0 object_event 6, MAP_OBJ_GFX_CAMERAMAN, 0, 34, 0, 8, 0, 3, 8, 0, 0, 0, 0, 0, 0, Route118_EventScript_1AE482, 797, 0, 0 @@ -10,7 +10,7 @@ Route118_MapObjects:: @ 8383684 object_event 9, MAP_OBJ_GFX_CAMERAMAN, 0, 34, 0, 8, 0, 3, 8, 0, 0, 0, 0, 0, 0, Route118_EventScript_1AE542, 901, 0, 0 object_event 10, MAP_OBJ_GFX_REPORTER_F, 0, 33, 0, 8, 0, 3, 8, 0, 0, 0, 0, 0, 0, Route118_EventScript_1AE562, 904, 0, 0 object_event 11, MAP_OBJ_GFX_CAMERAMAN, 0, 34, 0, 8, 0, 3, 8, 0, 0, 0, 0, 0, 0, Route118_EventScript_1AE582, 904, 0, 0 - object_event 12, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 38, 0, 8, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 17, 0, 0 + object_event 12, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 38, 0, 8, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 17, 0, 0 object_event 13, MAP_OBJ_GFX_FISHERMAN, 0, 28, 0, 8, 0, 3, 9, 0, 0, 0, 0, 0, 0, Route118_EventScript_150F34, 0, 0, 0 object_event 14, MAP_OBJ_GFX_WOMAN_3, 0, 7, 0, 10, 0, 3, 24, 0, 0, 1, 0, 4, 0, Route118_EventScript_15108F, 0, 0, 0 object_event 15, MAP_OBJ_GFX_FISHERMAN, 0, 14, 0, 14, 0, 3, 8, 0, 0, 1, 0, 0, 0, Route118_EventScript_1510E4, 0, 0, 0 diff --git a/data/maps/events/Route119.inc b/data/maps/events/Route119.inc index 966ae6058..08e6e3649 100644 --- a/data/maps/events/Route119.inc +++ b/data/maps/events/Route119.inc @@ -1,7 +1,7 @@ Route119_MapObjects:: @ 8383914 - object_event 1, MAP_OBJ_GFX_BERRY_TREE, 0, 24, 0, 5, 0, 3, 12, 0, 0, 0, 0, 34, 0, BerryTreeScript, 0, 0, 0 - object_event 2, MAP_OBJ_GFX_BERRY_TREE, 0, 25, 0, 5, 0, 3, 12, 0, 0, 0, 0, 35, 0, BerryTreeScript, 0, 0, 0 - object_event 3, MAP_OBJ_GFX_BERRY_TREE, 0, 26, 0, 5, 0, 3, 12, 0, 0, 0, 0, 36, 0, BerryTreeScript, 0, 0, 0 + object_event 1, MAP_OBJ_GFX_BERRY_TREE, 0, 24, 0, 5, 0, 3, 12, 0, 0, 0, 0, 34, 0, S_BerryTree, 0, 0, 0 + object_event 2, MAP_OBJ_GFX_BERRY_TREE, 0, 25, 0, 5, 0, 3, 12, 0, 0, 0, 0, 35, 0, S_BerryTree, 0, 0, 0 + object_event 3, MAP_OBJ_GFX_BERRY_TREE, 0, 26, 0, 5, 0, 3, 12, 0, 0, 0, 0, 36, 0, S_BerryTree, 0, 0, 0 object_event 4, MAP_OBJ_GFX_BUG_CATCHER, 0, 12, 0, 123, 0, 3, 59, 0, 0, 1, 0, 1, 0, Route119_EventScript_151491, 0, 0, 0 object_event 5, MAP_OBJ_GFX_MANIAC, 0, 26, 0, 123, 0, 3, 60, 0, 0, 1, 0, 1, 0, Route119_EventScript_151463, 0, 0, 0 object_event 6, MAP_OBJ_GFX_MANIAC, 0, 5, 0, 125, 0, 3, 62, 0, 0, 1, 0, 1, 0, Route119_EventScript_15144C, 0, 0, 0 @@ -25,10 +25,10 @@ Route119_MapObjects:: @ 8383914 object_event 24, 241, 0, 13, 0, 34, 0, 4, 10, 0, 0, 0, 0, 0, 0, Route119_EventScript_1515DC, 890, 0, 0 object_event 25, 243, 0, 17, 0, 33, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0x0, 923, 0, 0 object_event 26, MAP_OBJ_GFX_BOY_3, 0, 31, 0, 109, 0, 3, 8, 17, 0, 0, 0, 0, 0, Route119_EventScript_1515F3, 0, 0, 0 - object_event 27, MAP_OBJ_GFX_BERRY_TREE, 0, 8, 0, 23, 0, 3, 12, 0, 0, 0, 0, 83, 0, BerryTreeScript, 0, 0, 0 - object_event 28, MAP_OBJ_GFX_BERRY_TREE, 0, 9, 0, 23, 0, 3, 12, 0, 0, 0, 0, 84, 0, BerryTreeScript, 0, 0, 0 - object_event 29, MAP_OBJ_GFX_BERRY_TREE, 0, 29, 0, 90, 0, 3, 12, 0, 0, 0, 0, 85, 0, BerryTreeScript, 0, 0, 0 - object_event 30, MAP_OBJ_GFX_BERRY_TREE, 0, 30, 0, 90, 0, 3, 12, 0, 0, 0, 0, 86, 0, BerryTreeScript, 0, 0, 0 + object_event 27, MAP_OBJ_GFX_BERRY_TREE, 0, 8, 0, 23, 0, 3, 12, 0, 0, 0, 0, 83, 0, S_BerryTree, 0, 0, 0 + object_event 28, MAP_OBJ_GFX_BERRY_TREE, 0, 9, 0, 23, 0, 3, 12, 0, 0, 0, 0, 84, 0, S_BerryTree, 0, 0, 0 + object_event 29, MAP_OBJ_GFX_BERRY_TREE, 0, 29, 0, 90, 0, 3, 12, 0, 0, 0, 0, 85, 0, S_BerryTree, 0, 0, 0 + object_event 30, MAP_OBJ_GFX_BERRY_TREE, 0, 30, 0, 90, 0, 3, 12, 0, 0, 0, 0, 86, 0, S_BerryTree, 0, 0, 0 object_event 31, MAP_OBJ_GFX_CYCLING_TRIATHLETE_M, 0, 19, 0, 133, 0, 3, 5, 18, 0, 0, 0, 0, 0, Route119_EventScript_15141A, 0, 0, 0 object_event 32, MAP_OBJ_GFX_ITEM_BALL, 0, 3, 0, 56, 0, 3, 1, 17, 0, 0, 0, 0, 0, Route119_EventScript_1B160D, 1106, 0, 0 object_event 33, MAP_OBJ_GFX_BOY_2, 0, 35, 0, 93, 0, 4, 2, 17, 0, 0, 0, 0, 0, Route119_EventScript_1515FC, 0, 0, 0 diff --git a/data/maps/events/Route120.inc b/data/maps/events/Route120.inc index 43a67ee99..81fa21c7f 100644 --- a/data/maps/events/Route120.inc +++ b/data/maps/events/Route120.inc @@ -1,14 +1,14 @@ Route120_MapObjects:: @ 8383F30 - object_event 1, MAP_OBJ_GFX_BERRY_TREE, 0, 4, 0, 79, 0, 3, 12, 0, 0, 0, 0, 46, 0, BerryTreeScript, 0, 0, 0 - object_event 2, MAP_OBJ_GFX_BERRY_TREE, 0, 5, 0, 79, 0, 3, 12, 0, 0, 0, 0, 45, 0, BerryTreeScript, 0, 0, 0 - object_event 3, MAP_OBJ_GFX_BERRY_TREE, 0, 6, 0, 79, 0, 3, 12, 0, 0, 0, 0, 44, 0, BerryTreeScript, 0, 0, 0 - object_event 4, MAP_OBJ_GFX_BERRY_TREE, 0, 7, 0, 79, 0, 3, 12, 0, 0, 0, 0, 43, 0, BerryTreeScript, 0, 0, 0 - object_event 5, MAP_OBJ_GFX_BERRY_TREE, 0, 34, 0, 24, 0, 3, 12, 0, 0, 0, 0, 37, 0, BerryTreeScript, 0, 0, 0 - object_event 6, MAP_OBJ_GFX_BERRY_TREE, 0, 35, 0, 24, 0, 3, 12, 0, 0, 0, 0, 38, 0, BerryTreeScript, 0, 0, 0 - object_event 7, MAP_OBJ_GFX_BERRY_TREE, 0, 36, 0, 24, 0, 3, 12, 0, 0, 0, 0, 39, 0, BerryTreeScript, 0, 0, 0 - object_event 8, MAP_OBJ_GFX_BERRY_TREE, 0, 9, 0, 92, 0, 5, 12, 0, 0, 0, 0, 40, 0, BerryTreeScript, 0, 0, 0 - object_event 9, MAP_OBJ_GFX_BERRY_TREE, 0, 10, 0, 92, 0, 5, 12, 0, 0, 0, 0, 41, 0, BerryTreeScript, 0, 0, 0 - object_event 10, MAP_OBJ_GFX_BERRY_TREE, 0, 11, 0, 92, 0, 5, 12, 0, 0, 0, 0, 42, 0, BerryTreeScript, 0, 0, 0 + object_event 1, MAP_OBJ_GFX_BERRY_TREE, 0, 4, 0, 79, 0, 3, 12, 0, 0, 0, 0, 46, 0, S_BerryTree, 0, 0, 0 + object_event 2, MAP_OBJ_GFX_BERRY_TREE, 0, 5, 0, 79, 0, 3, 12, 0, 0, 0, 0, 45, 0, S_BerryTree, 0, 0, 0 + object_event 3, MAP_OBJ_GFX_BERRY_TREE, 0, 6, 0, 79, 0, 3, 12, 0, 0, 0, 0, 44, 0, S_BerryTree, 0, 0, 0 + object_event 4, MAP_OBJ_GFX_BERRY_TREE, 0, 7, 0, 79, 0, 3, 12, 0, 0, 0, 0, 43, 0, S_BerryTree, 0, 0, 0 + object_event 5, MAP_OBJ_GFX_BERRY_TREE, 0, 34, 0, 24, 0, 3, 12, 0, 0, 0, 0, 37, 0, S_BerryTree, 0, 0, 0 + object_event 6, MAP_OBJ_GFX_BERRY_TREE, 0, 35, 0, 24, 0, 3, 12, 0, 0, 0, 0, 38, 0, S_BerryTree, 0, 0, 0 + object_event 7, MAP_OBJ_GFX_BERRY_TREE, 0, 36, 0, 24, 0, 3, 12, 0, 0, 0, 0, 39, 0, S_BerryTree, 0, 0, 0 + object_event 8, MAP_OBJ_GFX_BERRY_TREE, 0, 9, 0, 92, 0, 5, 12, 0, 0, 0, 0, 40, 0, S_BerryTree, 0, 0, 0 + object_event 9, MAP_OBJ_GFX_BERRY_TREE, 0, 10, 0, 92, 0, 5, 12, 0, 0, 0, 0, 41, 0, S_BerryTree, 0, 0, 0 + object_event 10, MAP_OBJ_GFX_BERRY_TREE, 0, 11, 0, 92, 0, 5, 12, 0, 0, 0, 0, 42, 0, S_BerryTree, 0, 0, 0 object_event 11, MAP_OBJ_GFX_MAN_6, 0, 5, 0, 22, 0, 3, 14, 0, 0, 1, 0, 3, 0, Route120_EventScript_1519B3, 0, 0, 0 object_event 12, MAP_OBJ_GFX_MAN_6, 0, 32, 0, 14, 0, 3, 10, 0, 0, 1, 0, 3, 0, Route120_EventScript_1519CA, 0, 0, 0 object_event 13, MAP_OBJ_GFX_CAMPER, 0, 27, 0, 51, 0, 3, 9, 0, 0, 1, 0, 7, 0, Route120_EventScript_151A08, 0, 0, 0 @@ -19,7 +19,7 @@ Route120_MapObjects:: @ 8383F30 object_event 18, MAP_OBJ_GFX_REPORTER_F, 0, 36, 0, 5, 0, 3, 8, 0, 0, 0, 0, 0, 0, Route120_EventScript_1AE4A2, 798, 0, 0 object_event 19, MAP_OBJ_GFX_REPORTER_F, 0, 36, 0, 5, 0, 3, 8, 0, 0, 0, 0, 0, 0, Route120_EventScript_1AE562, 902, 0, 0 object_event 20, MAP_OBJ_GFX_CAMERAMAN, 0, 37, 0, 5, 0, 3, 8, 0, 0, 0, 0, 0, 0, Route120_EventScript_1AE582, 902, 0, 0 - object_event 21, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 35, 0, 32, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 17, 0, 0 + object_event 21, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 35, 0, 32, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 17, 0, 0 object_event 22, MAP_OBJ_GFX_ITEM_BALL, 0, 7, 0, 89, 0, 3, 1, 0, 0, 0, 0, 0, 0, Route120_EventScript_1B1627, 1031, 0, 0 object_event 23, MAP_OBJ_GFX_BEAUTY, 0, 14, 0, 92, 0, 5, 5, 1, 0, 0, 0, 0, 0, Route120_EventScript_151739, 0, 0, 0 object_event 24, MAP_OBJ_GFX_WOMAN_7, 0, 28, 0, 35, 0, 3, 15, 0, 0, 1, 0, 4, 0, Route120_EventScript_151A74, 0, 0, 0 @@ -30,8 +30,8 @@ Route120_MapObjects:: @ 8383F30 object_event 29, MAP_OBJ_GFX_ITEM_BALL, 0, 23, 0, 82, 0, 5, 1, 17, 0, 0, 0, 0, 0, Route120_EventScript_1B1634, 1107, 0, 0 object_event 30, MAP_OBJ_GFX_KECLEON_1, 0, 12, 0, 16, 0, 4, 76, 17, 0, 0, 0, 0, 0, Route120_EventScript_151998, 970, 0, 0 object_event 31, MAP_OBJ_GFX_STEVEN, 0, 13, 0, 15, 0, 4, 8, 17, 0, 0, 0, 0, 0, Route120_EventScript_151853, 972, 0, 0 - object_event 32, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 20, 0, 1, 0, 3, 1, 17, 0, 0, 0, 0, 0, CuttableTreeScript, 20, 0, 0 - object_event 33, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 15, 0, 1, 0, 3, 1, 17, 0, 0, 0, 0, 0, CuttableTreeScript, 18, 0, 0 + object_event 32, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 20, 0, 1, 0, 3, 1, 17, 0, 0, 0, 0, 0, S_CuttableTree, 20, 0, 0 + object_event 33, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 15, 0, 1, 0, 3, 1, 17, 0, 0, 0, 0, 0, S_CuttableTree, 18, 0, 0 object_event 34, MAP_OBJ_GFX_LITTLE_BOY_1, 0, 10, 0, 72, 0, 3, 58, 17, 0, 1, 0, 3, 0, Route120_EventScript_151AD0, 0, 0, 0 object_event 35, MAP_OBJ_GFX_LITTLE_BOY_1, 0, 19, 0, 28, 0, 3, 57, 17, 0, 1, 0, 3, 0, Route120_EventScript_151AE7, 0, 0, 0 object_event 36, MAP_OBJ_GFX_KECLEON_2, 0, 12, 0, 16, 0, 3, 8, 17, 0, 0, 0, 0, 0, 0x0, 981, 0, 0 diff --git a/data/maps/events/Route121.inc b/data/maps/events/Route121.inc index 514f51349..9961344a8 100644 --- a/data/maps/events/Route121.inc +++ b/data/maps/events/Route121.inc @@ -1,26 +1,26 @@ Route121_MapObjects:: @ 8384504 object_event 1, MAP_OBJ_GFX_WOMAN_4, 0, 29, 0, 14, 0, 3, 10, 17, 0, 0, 0, 0, 0, Route121_EventScript_151B0A, 0, 0, 0 - object_event 2, MAP_OBJ_GFX_BERRY_TREE, 0, 14, 0, 2, 0, 3, 12, 0, 0, 0, 0, 47, 0, BerryTreeScript, 0, 0, 0 - object_event 3, MAP_OBJ_GFX_BERRY_TREE, 0, 15, 0, 2, 0, 3, 12, 0, 0, 0, 0, 48, 0, BerryTreeScript, 0, 0, 0 - object_event 4, MAP_OBJ_GFX_BERRY_TREE, 0, 16, 0, 2, 0, 3, 12, 0, 0, 0, 0, 49, 0, BerryTreeScript, 0, 0, 0 - object_event 5, MAP_OBJ_GFX_BERRY_TREE, 0, 17, 0, 2, 0, 3, 12, 0, 0, 0, 0, 50, 0, BerryTreeScript, 0, 0, 0 - object_event 6, MAP_OBJ_GFX_BERRY_TREE, 0, 64, 0, 14, 0, 3, 12, 0, 0, 0, 0, 51, 0, BerryTreeScript, 0, 0, 0 - object_event 7, MAP_OBJ_GFX_BERRY_TREE, 0, 65, 0, 14, 0, 3, 12, 0, 0, 0, 0, 52, 0, BerryTreeScript, 0, 0, 0 - object_event 8, MAP_OBJ_GFX_BERRY_TREE, 0, 66, 0, 14, 0, 3, 12, 0, 0, 0, 0, 53, 0, BerryTreeScript, 0, 0, 0 - object_event 9, MAP_OBJ_GFX_BERRY_TREE, 0, 67, 0, 14, 0, 3, 12, 0, 0, 0, 0, 54, 0, BerryTreeScript, 0, 0, 0 + object_event 2, MAP_OBJ_GFX_BERRY_TREE, 0, 14, 0, 2, 0, 3, 12, 0, 0, 0, 0, 47, 0, S_BerryTree, 0, 0, 0 + object_event 3, MAP_OBJ_GFX_BERRY_TREE, 0, 15, 0, 2, 0, 3, 12, 0, 0, 0, 0, 48, 0, S_BerryTree, 0, 0, 0 + object_event 4, MAP_OBJ_GFX_BERRY_TREE, 0, 16, 0, 2, 0, 3, 12, 0, 0, 0, 0, 49, 0, S_BerryTree, 0, 0, 0 + object_event 5, MAP_OBJ_GFX_BERRY_TREE, 0, 17, 0, 2, 0, 3, 12, 0, 0, 0, 0, 50, 0, S_BerryTree, 0, 0, 0 + object_event 6, MAP_OBJ_GFX_BERRY_TREE, 0, 64, 0, 14, 0, 3, 12, 0, 0, 0, 0, 51, 0, S_BerryTree, 0, 0, 0 + object_event 7, MAP_OBJ_GFX_BERRY_TREE, 0, 65, 0, 14, 0, 3, 12, 0, 0, 0, 0, 52, 0, S_BerryTree, 0, 0, 0 + object_event 8, MAP_OBJ_GFX_BERRY_TREE, 0, 66, 0, 14, 0, 3, 12, 0, 0, 0, 0, 53, 0, S_BerryTree, 0, 0, 0 + object_event 9, MAP_OBJ_GFX_BERRY_TREE, 0, 67, 0, 14, 0, 3, 12, 0, 0, 0, 0, 54, 0, S_BerryTree, 0, 0, 0 object_event 10, MAP_OBJ_GFX_LASS, 0, 39, 0, 9, 0, 3, 8, 0, 0, 1, 0, 0, 0, Route121_EventScript_151BDE, 0, 0, 0 object_event 11, MAP_OBJ_GFX_LASS, 0, 40, 0, 9, 0, 3, 8, 0, 0, 1, 0, 0, 0, Route121_EventScript_151BF9, 0, 0, 0 object_event 12, 241, 0, 30, 0, 8, 0, 3, 7, 0, 0, 0, 0, 0, 0, 0x0, 914, 0, 0 object_event 13, 241, 0, 30, 0, 7, 0, 3, 10, 0, 0, 0, 0, 0, 0, 0x0, 914, 0, 0 object_event 14, 241, 0, 31, 0, 7, 0, 3, 9, 0, 0, 0, 0, 0, 0, 0x0, 914, 0, 0 - object_event 15, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 32, 0, 5, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 17, 0, 0 - object_event 16, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 65, 0, 4, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 18, 0, 0 + object_event 15, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 32, 0, 5, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 17, 0, 0 + object_event 16, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 65, 0, 4, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 18, 0, 0 object_event 17, MAP_OBJ_GFX_WOMAN_2, 0, 63, 0, 5, 0, 3, 9, 0, 0, 1, 0, 4, 0, Route121_EventScript_151B72, 0, 0, 0 object_event 18, MAP_OBJ_GFX_GENTLEMAN, 0, 55, 0, 8, 0, 3, 17, 0, 0, 1, 0, 3, 0, Route121_EventScript_151B89, 0, 0, 0 object_event 19, MAP_OBJ_GFX_HEX_MANIAC, 0, 11, 0, 10, 0, 3, 15, 0, 0, 1, 0, 4, 0, Route121_EventScript_151BC7, 0, 0, 0 object_event 20, MAP_OBJ_GFX_BEAUTY, 0, 22, 0, 5, 0, 3, 17, 0, 0, 1, 0, 4, 0, Route121_EventScript_151C14, 0, 0, 0 object_event 21, MAP_OBJ_GFX_ITEM_BALL, 0, 55, 0, 10, 0, 3, 1, 17, 0, 0, 0, 0, 0, Route121_EventScript_1B164E, 1103, 0, 0 - object_event 22, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 26, 0, 12, 0, 3, 1, 17, 0, 0, 0, 0, 0, CuttableTreeScript, 19, 0, 0 + object_event 22, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 26, 0, 12, 0, 3, 1, 17, 0, 0, 0, 0, 0, S_CuttableTree, 19, 0, 0 Route121_MapWarps:: @ 8384714 warp_def 37, 5, 0, 2, Route121_SafariZoneEntrance diff --git a/data/maps/events/Route123.inc b/data/maps/events/Route123.inc index 6b97bafe5..dc5ac0fb4 100644 --- a/data/maps/events/Route123.inc +++ b/data/maps/events/Route123.inc @@ -1,30 +1,30 @@ Route123_MapObjects:: @ 83847F8 - object_event 1, MAP_OBJ_GFX_BERRY_TREE, 0, 11, 0, 3, 0, 3, 12, 0, 0, 0, 0, 58, 0, BerryTreeScript, 0, 0, 0 - object_event 2, MAP_OBJ_GFX_BERRY_TREE, 0, 12, 0, 3, 0, 3, 12, 0, 0, 0, 0, 59, 0, BerryTreeScript, 0, 0, 0 - object_event 3, MAP_OBJ_GFX_BERRY_TREE, 0, 14, 0, 3, 0, 3, 12, 0, 0, 0, 0, 60, 0, BerryTreeScript, 0, 0, 0 - object_event 4, MAP_OBJ_GFX_BERRY_TREE, 0, 15, 0, 3, 0, 3, 12, 0, 0, 0, 0, 61, 0, BerryTreeScript, 0, 0, 0 - object_event 5, MAP_OBJ_GFX_BERRY_TREE, 0, 81, 0, 1, 0, 3, 12, 0, 0, 0, 0, 62, 0, BerryTreeScript, 0, 0, 0 - object_event 6, MAP_OBJ_GFX_BERRY_TREE, 0, 82, 0, 1, 0, 3, 12, 0, 0, 0, 0, 63, 0, BerryTreeScript, 0, 0, 0 - object_event 7, MAP_OBJ_GFX_BERRY_TREE, 0, 83, 0, 1, 0, 3, 12, 0, 0, 0, 0, 64, 0, BerryTreeScript, 0, 0, 0 + object_event 1, MAP_OBJ_GFX_BERRY_TREE, 0, 11, 0, 3, 0, 3, 12, 0, 0, 0, 0, 58, 0, S_BerryTree, 0, 0, 0 + object_event 2, MAP_OBJ_GFX_BERRY_TREE, 0, 12, 0, 3, 0, 3, 12, 0, 0, 0, 0, 59, 0, S_BerryTree, 0, 0, 0 + object_event 3, MAP_OBJ_GFX_BERRY_TREE, 0, 14, 0, 3, 0, 3, 12, 0, 0, 0, 0, 60, 0, S_BerryTree, 0, 0, 0 + object_event 4, MAP_OBJ_GFX_BERRY_TREE, 0, 15, 0, 3, 0, 3, 12, 0, 0, 0, 0, 61, 0, S_BerryTree, 0, 0, 0 + object_event 5, MAP_OBJ_GFX_BERRY_TREE, 0, 81, 0, 1, 0, 3, 12, 0, 0, 0, 0, 62, 0, S_BerryTree, 0, 0, 0 + object_event 6, MAP_OBJ_GFX_BERRY_TREE, 0, 82, 0, 1, 0, 3, 12, 0, 0, 0, 0, 63, 0, S_BerryTree, 0, 0, 0 + object_event 7, MAP_OBJ_GFX_BERRY_TREE, 0, 83, 0, 1, 0, 3, 12, 0, 0, 0, 0, 64, 0, S_BerryTree, 0, 0, 0 object_event 8, MAP_OBJ_GFX_WOMAN_7, 0, 70, 0, 12, 0, 3, 24, 0, 0, 1, 0, 1, 0, Route123_EventScript_151CD1, 0, 0, 0 object_event 9, MAP_OBJ_GFX_MAN_4, 0, 58, 0, 7, 0, 3, 17, 0, 0, 1, 0, 2, 0, Route123_EventScript_151CE8, 0, 0, 0 - object_event 10, MAP_OBJ_GFX_BERRY_TREE, 0, 14, 0, 5, 0, 3, 12, 0, 0, 0, 0, 65, 0, BerryTreeScript, 0, 0, 0 - object_event 11, MAP_OBJ_GFX_BERRY_TREE, 0, 15, 0, 5, 0, 3, 12, 0, 0, 0, 0, 72, 0, BerryTreeScript, 0, 0, 0 - object_event 12, MAP_OBJ_GFX_BERRY_TREE, 0, 17, 0, 5, 0, 3, 12, 0, 0, 0, 0, 73, 0, BerryTreeScript, 0, 0, 0 - object_event 13, MAP_OBJ_GFX_BERRY_TREE, 0, 18, 0, 5, 0, 3, 12, 0, 0, 0, 0, 74, 0, BerryTreeScript, 0, 0, 0 - object_event 14, MAP_OBJ_GFX_BERRY_TREE, 0, 17, 0, 3, 0, 3, 12, 0, 0, 0, 0, 79, 0, BerryTreeScript, 0, 0, 0 - object_event 15, MAP_OBJ_GFX_BERRY_TREE, 0, 18, 0, 3, 0, 3, 12, 0, 0, 0, 0, 14, 0, BerryTreeScript, 0, 0, 0 - object_event 16, MAP_OBJ_GFX_BERRY_TREE, 0, 11, 0, 5, 0, 3, 12, 0, 0, 0, 0, 15, 0, BerryTreeScript, 0, 0, 0 - object_event 17, MAP_OBJ_GFX_BERRY_TREE, 0, 12, 0, 5, 0, 3, 12, 0, 0, 0, 0, 30, 0, BerryTreeScript, 0, 0, 0 - object_event 18, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 101, 0, 13, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 17, 0, 0 - object_event 19, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 129, 0, 14, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 18, 0, 0 - object_event 20, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 92, 0, 9, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 19, 0, 0 + object_event 10, MAP_OBJ_GFX_BERRY_TREE, 0, 14, 0, 5, 0, 3, 12, 0, 0, 0, 0, 65, 0, S_BerryTree, 0, 0, 0 + object_event 11, MAP_OBJ_GFX_BERRY_TREE, 0, 15, 0, 5, 0, 3, 12, 0, 0, 0, 0, 72, 0, S_BerryTree, 0, 0, 0 + object_event 12, MAP_OBJ_GFX_BERRY_TREE, 0, 17, 0, 5, 0, 3, 12, 0, 0, 0, 0, 73, 0, S_BerryTree, 0, 0, 0 + object_event 13, MAP_OBJ_GFX_BERRY_TREE, 0, 18, 0, 5, 0, 3, 12, 0, 0, 0, 0, 74, 0, S_BerryTree, 0, 0, 0 + object_event 14, MAP_OBJ_GFX_BERRY_TREE, 0, 17, 0, 3, 0, 3, 12, 0, 0, 0, 0, 79, 0, S_BerryTree, 0, 0, 0 + object_event 15, MAP_OBJ_GFX_BERRY_TREE, 0, 18, 0, 3, 0, 3, 12, 0, 0, 0, 0, 14, 0, S_BerryTree, 0, 0, 0 + object_event 16, MAP_OBJ_GFX_BERRY_TREE, 0, 11, 0, 5, 0, 3, 12, 0, 0, 0, 0, 15, 0, S_BerryTree, 0, 0, 0 + object_event 17, MAP_OBJ_GFX_BERRY_TREE, 0, 12, 0, 5, 0, 3, 12, 0, 0, 0, 0, 30, 0, S_BerryTree, 0, 0, 0 + object_event 18, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 101, 0, 13, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 17, 0, 0 + object_event 19, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 129, 0, 14, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 18, 0, 0 + object_event 20, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 92, 0, 9, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 19, 0, 0 object_event 21, MAP_OBJ_GFX_ITEM_BALL, 0, 31, 0, 8, 0, 3, 1, 0, 0, 0, 0, 0, 0, Route123_EventScript_1B165B, 1032, 0, 0 object_event 22, MAP_OBJ_GFX_ITEM_BALL, 0, 139, 0, 18, 0, 3, 1, 0, 0, 0, 0, 0, 0, Route123_EventScript_1B1668, 1033, 0, 0 object_event 23, MAP_OBJ_GFX_GIRL_3, 0, 108, 0, 13, 0, 3, 15, 0, 0, 0, 0, 0, 0, Route123_EventScript_151C5D, 0, 0, 0 - object_event 24, MAP_OBJ_GFX_BERRY_TREE, 0, 109, 0, 13, 0, 3, 12, 0, 0, 0, 0, 87, 0, BerryTreeScript, 0, 0, 0 - object_event 25, MAP_OBJ_GFX_BERRY_TREE, 0, 110, 0, 13, 0, 3, 12, 0, 0, 0, 0, 88, 0, BerryTreeScript, 0, 0, 0 - object_event 26, MAP_OBJ_GFX_BERRY_TREE, 0, 111, 0, 13, 0, 3, 12, 0, 0, 0, 0, 89, 0, BerryTreeScript, 0, 0, 0 + object_event 24, MAP_OBJ_GFX_BERRY_TREE, 0, 109, 0, 13, 0, 3, 12, 0, 0, 0, 0, 87, 0, S_BerryTree, 0, 0, 0 + object_event 25, MAP_OBJ_GFX_BERRY_TREE, 0, 110, 0, 13, 0, 3, 12, 0, 0, 0, 0, 88, 0, S_BerryTree, 0, 0, 0 + object_event 26, MAP_OBJ_GFX_BERRY_TREE, 0, 111, 0, 13, 0, 3, 12, 0, 0, 0, 0, 89, 0, S_BerryTree, 0, 0, 0 object_event 27, MAP_OBJ_GFX_WOMAN_3, 0, 16, 0, 9, 0, 3, 23, 0, 0, 1, 0, 2, 0, Route123_EventScript_151CFF, 0, 0, 0 object_event 28, MAP_OBJ_GFX_LITTLE_GIRL_1, 0, 38, 0, 13, 0, 3, 8, 0, 0, 1, 0, 0, 0, Route123_EventScript_151DAD, 0, 0, 0 object_event 29, MAP_OBJ_GFX_LITTLE_GIRL_1, 0, 37, 0, 13, 0, 3, 8, 0, 0, 1, 0, 0, 0, Route123_EventScript_151D92, 0, 0, 0 diff --git a/data/maps/events/Route130.inc b/data/maps/events/Route130.inc index f2c72ef2d..009604d4b 100644 --- a/data/maps/events/Route130.inc +++ b/data/maps/events/Route130.inc @@ -1,7 +1,7 @@ Route130_MapObjects:: @ 838523C object_event 1, MAP_OBJ_GFX_SWIMMER_M, 0, 7, 0, 26, 0, 1, 29, 99, 0, 1, 0, 3, 0, Route130_EventScript_152410, 0, 0, 0 object_event 2, MAP_OBJ_GFX_SWIMMER_F, 0, 68, 0, 22, 0, 1, 13, 17, 0, 1, 0, 3, 0, Route130_EventScript_152427, 0, 0, 0 - object_event 3, MAP_OBJ_GFX_BERRY_TREE, 0, 52, 0, 9, 0, 3, 12, 0, 0, 0, 0, 82, 0, BerryTreeScript, 17, 0, 0 + object_event 3, MAP_OBJ_GFX_BERRY_TREE, 0, 52, 0, 9, 0, 3, 12, 0, 0, 0, 0, 82, 0, S_BerryTree, 17, 0, 0 Route130_MapEvents:: @ 8385284 map_events Route130_MapObjects, 0x0, 0x0, 0x0 diff --git a/data/maps/events/RusturfTunnel.inc b/data/maps/events/RusturfTunnel.inc index 490afda7b..ef1559687 100644 --- a/data/maps/events/RusturfTunnel.inc +++ b/data/maps/events/RusturfTunnel.inc @@ -1,12 +1,12 @@ RusturfTunnel_MapObjects:: @ 838BD2C object_event 1, MAP_OBJ_GFX_BLACK_BELT, 0, 23, 0, 5, 0, 3, 10, 0, 0, 0, 0, 0, 0, RusturfTunnel_EventScript_15C799, 807, 0, 0 - object_event 2, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 24, 0, 5, 0, 3, 1, 0, 0, 0, 0, 0, 0, BreakableRockScript, 931, 0, 0 + object_event 2, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 24, 0, 5, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_BreakableRock, 931, 0, 0 object_event 3, MAP_OBJ_GFX_ITEM_BALL, 0, 3, 0, 1, 0, 3, 1, 0, 0, 0, 0, 0, 0, RusturfTunnel_EventScript_1B1786, 1048, 0, 0 object_event 4, MAP_OBJ_GFX_ITEM_BALL, 0, 30, 0, 2, 0, 3, 1, 0, 0, 0, 0, 0, 0, RusturfTunnel_EventScript_1B1793, 1049, 0, 0 object_event 5, MAP_OBJ_GFX_OLD_MAN_1, 0, 5, 0, 4, 0, 3, 10, 0, 0, 0, 0, 0, 0, 0x0, 879, 0, 0 object_event 6, 241, 0, 14, 0, 5, 0, 3, 9, 0, 0, 0, 0, 0, 0, RusturfTunnel_EventScript_15C9EA, 878, 0, 0 object_event 7, MAP_OBJ_GFX_WINGULL, 0, 14, 0, 4, 0, 3, 9, 0, 0, 0, 0, 0, 0, RusturfTunnel_EventScript_15C9D7, 880, 0, 0 - object_event 8, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 24, 0, 4, 0, 3, 8, 0, 0, 0, 0, 0, 0, BreakableRockScript, 932, 0, 0 + object_event 8, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 24, 0, 4, 0, 3, 8, 0, 0, 0, 0, 0, 0, S_BreakableRock, 932, 0, 0 object_event 9, MAP_OBJ_GFX_HIKER, 0, 32, 0, 13, 0, 3, 9, 17, 0, 1, 0, 3, 0, RusturfTunnel_EventScript_15CACD, 0, 0, 0 object_event 10, MAP_OBJ_GFX_WOMAN_3, 0, 25, 0, 4, 0, 3, 9, 17, 0, 0, 0, 0, 0, RusturfTunnel_EventScript_15C782, 983, 0, 0 diff --git a/data/maps/events/SafariZone_Northeast.inc b/data/maps/events/SafariZone_Northeast.inc index 30921f095..cea87fb14 100644 --- a/data/maps/events/SafariZone_Northeast.inc +++ b/data/maps/events/SafariZone_Northeast.inc @@ -1,12 +1,12 @@ SafariZone_Northeast_MapObjects:: @ 8391A2C object_event 1, MAP_OBJ_GFX_FISHERMAN, 0, 22, 0, 9, 0, 3, 2, 17, 0, 0, 0, 0, 0, SafariZone_Northeast_EventScript_160011, 0, 0, 0 object_event 2, MAP_OBJ_GFX_MAN_5, 0, 6, 0, 29, 0, 3, 2, 17, 0, 0, 0, 0, 0, SafariZone_Northeast_EventScript_16001A, 0, 0, 0 - object_event 3, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 25, 0, 10, 0, 3, 1, 17, 0, 0, 0, 0, 0, BreakableRockScript, 17, 0, 0 - object_event 4, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 25, 0, 13, 0, 3, 1, 17, 0, 0, 0, 0, 0, BreakableRockScript, 18, 0, 0 - object_event 5, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 28, 0, 14, 0, 3, 1, 17, 0, 0, 0, 0, 0, BreakableRockScript, 19, 0, 0 - object_event 6, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 23, 0, 6, 0, 3, 1, 17, 0, 0, 0, 0, 0, BreakableRockScript, 20, 0, 0 - object_event 7, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 20, 0, 7, 0, 3, 1, 17, 0, 0, 0, 0, 0, BreakableRockScript, 21, 0, 0 - object_event 8, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 27, 0, 7, 0, 3, 1, 17, 0, 0, 0, 0, 0, BreakableRockScript, 22, 0, 0 + object_event 3, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 25, 0, 10, 0, 3, 1, 17, 0, 0, 0, 0, 0, S_BreakableRock, 17, 0, 0 + object_event 4, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 25, 0, 13, 0, 3, 1, 17, 0, 0, 0, 0, 0, S_BreakableRock, 18, 0, 0 + object_event 5, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 28, 0, 14, 0, 3, 1, 17, 0, 0, 0, 0, 0, S_BreakableRock, 19, 0, 0 + object_event 6, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 23, 0, 6, 0, 3, 1, 17, 0, 0, 0, 0, 0, S_BreakableRock, 20, 0, 0 + object_event 7, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 20, 0, 7, 0, 3, 1, 17, 0, 0, 0, 0, 0, S_BreakableRock, 21, 0, 0 + object_event 8, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 27, 0, 7, 0, 3, 1, 17, 0, 0, 0, 0, 0, S_BreakableRock, 22, 0, 0 object_event 9, MAP_OBJ_GFX_ITEM_BALL, 0, 7, 0, 6, 0, 3, 1, 17, 0, 0, 0, 0, 0, SafariZone_Northeast_EventScript_1B1919, 1119, 0, 0 SafariZone_Northeast_MapEvents:: @ 8391B04 diff --git a/data/maps/events/SeafloorCavern_Room1.inc b/data/maps/events/SeafloorCavern_Room1.inc index 1e791f884..093934481 100644 --- a/data/maps/events/SeafloorCavern_Room1.inc +++ b/data/maps/events/SeafloorCavern_Room1.inc @@ -1,7 +1,7 @@ SeafloorCavern_Room1_MapObjects:: @ 838D0B8 - object_event 1, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 5, 0, 11, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 17, 0, 0 - object_event 2, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 12, 0, 11, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 18, 0, 0 - object_event 3, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 5, 0, 10, 0, 3, 1, 0, 0, 0, 0, 0, 0, BreakableRockScript, 19, 0, 0 + object_event 1, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 5, 0, 11, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 17, 0, 0 + object_event 2, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 12, 0, 11, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 18, 0, 0 + object_event 3, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 5, 0, 10, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_BreakableRock, 19, 0, 0 object_event 4, 241, 0, 8, 0, 6, 0, 3, 1, 17, 0, 1, 0, 2, 0, SeafloorCavern_Room1_EventScript_15DA6D, 946, 0, 0 object_event 5, 241, 0, 15, 0, 10, 0, 3, 16, 17, 0, 1, 0, 3, 0, SeafloorCavern_Room1_EventScript_15DA84, 946, 0, 0 diff --git a/data/maps/events/SeafloorCavern_Room2.inc b/data/maps/events/SeafloorCavern_Room2.inc index 3dbe5e8a7..86a0354e4 100644 --- a/data/maps/events/SeafloorCavern_Room2.inc +++ b/data/maps/events/SeafloorCavern_Room2.inc @@ -1,13 +1,13 @@ SeafloorCavern_Room2_MapObjects:: @ 838D15C - object_event 1, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 6, 0, 14, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 17, 0, 0 - object_event 2, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 6, 0, 10, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 18, 0, 0 - object_event 3, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 6, 0, 6, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 19, 0, 0 - object_event 4, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 11, 0, 6, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 20, 0, 0 - object_event 5, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 11, 0, 10, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 21, 0, 0 - object_event 6, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 11, 0, 14, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 22, 0, 0 - object_event 7, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 11, 0, 9, 0, 3, 1, 0, 0, 0, 0, 0, 0, BreakableRockScript, 24, 0, 0 - object_event 8, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 7, 0, 6, 0, 3, 1, 0, 0, 0, 0, 0, 0, BreakableRockScript, 25, 0, 0 - object_event 9, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 15, 0, 11, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 23, 0, 0 + object_event 1, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 6, 0, 14, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 17, 0, 0 + object_event 2, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 6, 0, 10, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 18, 0, 0 + object_event 3, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 6, 0, 6, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 19, 0, 0 + object_event 4, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 11, 0, 6, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 20, 0, 0 + object_event 5, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 11, 0, 10, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 21, 0, 0 + object_event 6, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 11, 0, 14, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 22, 0, 0 + object_event 7, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 11, 0, 9, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_BreakableRock, 24, 0, 0 + object_event 8, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 7, 0, 6, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_BreakableRock, 25, 0, 0 + object_event 9, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 15, 0, 11, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 23, 0, 0 SeafloorCavern_Room2_MapWarps:: @ 838D234 warp_def 12, 19, 3, 2, SeafloorCavern_Room1 diff --git a/data/maps/events/SeafloorCavern_Room3.inc b/data/maps/events/SeafloorCavern_Room3.inc index 98e6066f2..5c5c9c219 100644 --- a/data/maps/events/SeafloorCavern_Room3.inc +++ b/data/maps/events/SeafloorCavern_Room3.inc @@ -1,13 +1,13 @@ SeafloorCavern_Room3_MapObjects:: @ 838D268 - object_event 1, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 6, 0, 13, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 17, 0, 0 - object_event 2, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 8, 0, 12, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 18, 0, 0 - object_event 3, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 7, 0, 11, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 19, 0, 0 - object_event 4, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 9, 0, 11, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 20, 0, 0 - object_event 5, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 6, 0, 10, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 21, 0, 0 - object_event 6, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 8, 0, 10, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 22, 0, 0 - object_event 7, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 5, 0, 9, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 23, 0, 0 - object_event 8, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 7, 0, 9, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 24, 0, 0 - object_event 9, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 9, 0, 9, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 25, 0, 0 + object_event 1, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 6, 0, 13, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 17, 0, 0 + object_event 2, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 8, 0, 12, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 18, 0, 0 + object_event 3, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 7, 0, 11, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 19, 0, 0 + object_event 4, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 9, 0, 11, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 20, 0, 0 + object_event 5, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 6, 0, 10, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 21, 0, 0 + object_event 6, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 8, 0, 10, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 22, 0, 0 + object_event 7, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 5, 0, 9, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 23, 0, 0 + object_event 8, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 7, 0, 9, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 24, 0, 0 + object_event 9, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 9, 0, 9, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 25, 0, 0 object_event 10, 242, 0, 10, 0, 5, 0, 3, 8, 17, 0, 1, 0, 3, 0, SeafloorCavern_Room3_EventScript_15DAA8, 946, 0, 0 SeafloorCavern_Room3_MapWarps:: @ 838D358 diff --git a/data/maps/events/SeafloorCavern_Room5.inc b/data/maps/events/SeafloorCavern_Room5.inc index 0ebd46a56..37a501512 100644 --- a/data/maps/events/SeafloorCavern_Room5.inc +++ b/data/maps/events/SeafloorCavern_Room5.inc @@ -1,10 +1,10 @@ SeafloorCavern_Room5_MapObjects:: @ 838D3D0 - object_event 1, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 3, 0, 11, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 17, 0, 0 - object_event 2, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 4, 0, 11, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 18, 0, 0 - object_event 3, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 11, 0, 7, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 19, 0, 0 - object_event 4, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 3, 0, 13, 0, 3, 1, 0, 0, 0, 0, 0, 0, BreakableRockScript, 21, 0, 0 - object_event 5, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 13, 0, 8, 0, 3, 1, 0, 0, 0, 0, 0, 0, BreakableRockScript, 22, 0, 0 - object_event 6, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 12, 0, 8, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 20, 0, 0 + object_event 1, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 3, 0, 11, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 17, 0, 0 + object_event 2, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 4, 0, 11, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 18, 0, 0 + object_event 3, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 11, 0, 7, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 19, 0, 0 + object_event 4, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 3, 0, 13, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_BreakableRock, 21, 0, 0 + object_event 5, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 13, 0, 8, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_BreakableRock, 22, 0, 0 + object_event 6, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 12, 0, 8, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 20, 0, 0 SeafloorCavern_Room5_MapWarps:: @ 838D460 warp_def 4, 1, 3, 1, SeafloorCavern_Room1 diff --git a/data/maps/events/SeafloorCavern_Room8.inc b/data/maps/events/SeafloorCavern_Room8.inc index 610937753..2d7329aec 100644 --- a/data/maps/events/SeafloorCavern_Room8.inc +++ b/data/maps/events/SeafloorCavern_Room8.inc @@ -1,16 +1,16 @@ SeafloorCavern_Room8_MapObjects:: @ 838D4DC - object_event 1, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 4, 0, 7, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 17, 0, 0 - object_event 2, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 5, 0, 7, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 18, 0, 0 - object_event 3, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 6, 0, 7, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 19, 0, 0 - object_event 4, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 3, 0, 6, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 20, 0, 0 - object_event 5, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 7, 0, 6, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 21, 0, 0 - object_event 6, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 4, 0, 5, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 22, 0, 0 - object_event 7, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 5, 0, 5, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 23, 0, 0 - object_event 8, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 6, 0, 5, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 24, 0, 0 - object_event 9, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 3, 0, 4, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 25, 0, 0 - object_event 10, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 4, 0, 4, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 26, 0, 0 - object_event 11, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 6, 0, 4, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 27, 0, 0 - object_event 12, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 7, 0, 4, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 28, 0, 0 + object_event 1, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 4, 0, 7, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 17, 0, 0 + object_event 2, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 5, 0, 7, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 18, 0, 0 + object_event 3, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 6, 0, 7, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 19, 0, 0 + object_event 4, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 3, 0, 6, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 20, 0, 0 + object_event 5, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 7, 0, 6, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 21, 0, 0 + object_event 6, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 4, 0, 5, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 22, 0, 0 + object_event 7, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 5, 0, 5, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 23, 0, 0 + object_event 8, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 6, 0, 5, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 24, 0, 0 + object_event 9, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 3, 0, 4, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 25, 0, 0 + object_event 10, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 4, 0, 4, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 26, 0, 0 + object_event 11, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 6, 0, 4, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 27, 0, 0 + object_event 12, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 7, 0, 4, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 28, 0, 0 SeafloorCavern_Room8_MapWarps:: @ 838D5FC warp_def 5, 2, 3, 0, SeafloorCavern_Room9 diff --git a/data/maps/events/ShoalCave_LowTideLowerRoom.inc b/data/maps/events/ShoalCave_LowTideLowerRoom.inc index a1770b5bb..858f919e0 100644 --- a/data/maps/events/ShoalCave_LowTideLowerRoom.inc +++ b/data/maps/events/ShoalCave_LowTideLowerRoom.inc @@ -1,5 +1,5 @@ ShoalCave_LowTideLowerRoom_MapObjects:: @ 838DE3C - object_event 1, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 25, 0, 3, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 17, 0, 0 + object_event 1, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 25, 0, 3, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 17, 0, 0 object_event 2, MAP_OBJ_GFX_BLACK_BELT, 0, 11, 0, 4, 0, 3, 2, 17, 0, 0, 0, 0, 0, ShoalCave_LowTideLowerRoom_EventScript_15E44F, 0, 0, 0 ShoalCave_LowTideLowerRoom_MapWarps:: @ 838DE6C diff --git a/data/maps/events/VictoryRoad_B1F.inc b/data/maps/events/VictoryRoad_B1F.inc index a4f778c4d..b00074990 100644 --- a/data/maps/events/VictoryRoad_B1F.inc +++ b/data/maps/events/VictoryRoad_B1F.inc @@ -1,21 +1,21 @@ VictoryRoad_B1F_MapObjects:: @ 838DA04 - object_event 1, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 20, 0, 5, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 19, 0, 0 - object_event 2, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 21, 0, 4, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 20, 0, 0 - object_event 3, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 4, 0, 7, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 17, 0, 0 - object_event 4, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 9, 0, 10, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 18, 0, 0 - object_event 5, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 20, 0, 26, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 23, 0, 0 - object_event 6, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 21, 0, 25, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 22, 0, 0 - object_event 7, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 35, 0, 6, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 30, 0, 0 - object_event 8, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 19, 0, 5, 0, 3, 1, 0, 0, 0, 0, 0, 0, BreakableRockScript, 25, 0, 0 - object_event 9, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 20, 0, 4, 0, 3, 1, 0, 0, 0, 0, 0, 0, BreakableRockScript, 26, 0, 0 - object_event 10, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 18, 0, 12, 0, 3, 1, 0, 0, 0, 0, 0, 0, BreakableRockScript, 27, 0, 0 - object_event 11, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 20, 0, 25, 0, 3, 1, 0, 0, 0, 0, 0, 0, BreakableRockScript, 28, 0, 0 - object_event 12, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 21, 0, 26, 0, 3, 1, 0, 0, 0, 0, 0, 0, BreakableRockScript, 29, 0, 0 - object_event 13, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 34, 0, 4, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 31, 0, 0 + object_event 1, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 20, 0, 5, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 19, 0, 0 + object_event 2, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 21, 0, 4, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 20, 0, 0 + object_event 3, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 4, 0, 7, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 17, 0, 0 + object_event 4, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 9, 0, 10, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 18, 0, 0 + object_event 5, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 20, 0, 26, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 23, 0, 0 + object_event 6, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 21, 0, 25, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 22, 0, 0 + object_event 7, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 35, 0, 6, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 30, 0, 0 + object_event 8, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 19, 0, 5, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_BreakableRock, 25, 0, 0 + object_event 9, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 20, 0, 4, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_BreakableRock, 26, 0, 0 + object_event 10, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 18, 0, 12, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_BreakableRock, 27, 0, 0 + object_event 11, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 20, 0, 25, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_BreakableRock, 28, 0, 0 + object_event 12, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 21, 0, 26, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_BreakableRock, 29, 0, 0 + object_event 13, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 34, 0, 4, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 31, 0, 0 object_event 14, MAP_OBJ_GFX_MAN_4, 0, 37, 0, 12, 0, 3, 9, 0, 0, 1, 0, 3, 0, VictoryRoad_B1F_EventScript_15DFB5, 0, 0, 0 object_event 15, MAP_OBJ_GFX_WOMAN_7, 0, 26, 0, 16, 0, 3, 7, 0, 0, 1, 0, 4, 0, VictoryRoad_B1F_EventScript_15DFCC, 0, 0, 0 object_event 16, MAP_OBJ_GFX_WOMAN_7, 0, 5, 0, 21, 0, 3, 9, 0, 0, 1, 0, 2, 0, VictoryRoad_B1F_EventScript_15DFE3, 0, 0, 0 - object_event 17, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 34, 0, 3, 0, 3, 1, 17, 0, 0, 0, 0, 0, BreakableRockScript, 32, 0, 0 + object_event 17, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 34, 0, 3, 0, 3, 1, 17, 0, 0, 0, 0, 0, S_BreakableRock, 32, 0, 0 object_event 18, MAP_OBJ_GFX_ITEM_BALL, 0, 42, 0, 8, 0, 4, 1, 17, 0, 0, 0, 0, 0, VictoryRoad_B1F_EventScript_1B1AE0, 1086, 0, 0 object_event 19, MAP_OBJ_GFX_ITEM_BALL, 0, 32, 0, 3, 0, 3, 1, 17, 0, 0, 0, 0, 0, VictoryRoad_B1F_EventScript_1B1AED, 1087, 0, 0 diff --git a/data/mauville_old_man.s b/data/mauville_old_man.s deleted file mode 100644 index 5c4bd47b9..000000000 --- a/data/mauville_old_man.s +++ /dev/null @@ -1,101 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - - .align 1 -gUnknown_083E537C:: @ 83E537C -.ifdef ENGLISH - ec_word SISTER - ec_word EATS - ec_word SWEETS - ec_word VORACIOUS - ec_word AND - ec_word DROOLING -.else - ec_word SISTER - ec_word MUST_BE - ec_word SWEETS - ec_word VORACIOUS - ec_word DROOLING - ec_word THICK -.endif - - - .align 2 -gUnknown_083E5388:: @ 83E5388 - .4byte OtherText_SoPretty - .4byte OtherText_SoDarling - .4byte OtherText_SoRelaxed - .4byte OtherText_SoSunny - .4byte OtherText_SoDesirable - .4byte OtherText_SoExciting - .4byte OtherText_SoAmusing - .4byte OtherText_SoMagical - - .align 2 -gUnknown_083E53A8:: @ 83E53A8 - .4byte OtherText_WantVacationNicePlace - .4byte OtherText_BoughtCrayonsIsNice - .4byte OtherText_IfWeCouldFloat - .4byte OtherText_SandWashesAwayMakeSad - .4byte OtherText_WhatsBottomSeaLike - .4byte OtherText_SeeSettingSun - .4byte OtherText_LyingInGreenGrass - .4byte OtherText_SecretBasesWonderful - - .align 1 -gUnknown_083E53C8:: @ 83E53C8 - .2byte 0x0, 0 - .2byte 0xC, 0 - .2byte 0xD, 0 - .2byte 0x12, 0 - .2byte 0x13, 0 - .2byte 0x15, 0 - - .align 2 -gUnknown_083E53E0:: @ 83E53E0 - .4byte 0x132, UnknownString_81AEFFC, UnknownString_81AF013, UnknownString_81AF022 - .4byte 0x102, UnknownString_81AF0A3, UnknownString_81AF0BB, UnknownString_81AF0CA - .4byte 0x103, UnknownString_81AF149, UnknownString_81AF164, UnknownString_81AF174 - .4byte 0x104, UnknownString_81AF1E5, UnknownString_81AF1FD, UnknownString_81AF20A - .4byte 0x106, UnknownString_81AF281, UnknownString_81AF299, UnknownString_81AF2A9 - .4byte 0x109, UnknownString_81AF32C, UnknownString_81AF345, UnknownString_81AF34D - .4byte 0x10b, UnknownString_81AF3D0, UnknownString_81AF3ED, UnknownString_81AF3FC - .4byte 0x10c, UnknownString_81AF46D, UnknownString_81AF481, UnknownString_81AF49B - .4byte 0x10d, UnknownString_81AF511, UnknownString_81AF529, UnknownString_81AF536 - .4byte 0x10e, UnknownString_81AF5A9, UnknownString_81AF5BD, UnknownString_81AF5CD - .4byte 0x10f, UnknownString_81AF63F, UnknownString_81AF661, UnknownString_81AF676 - .4byte 0x110, UnknownString_81AF711, UnknownString_81AF726, UnknownString_81AF73D - .4byte 0x111, UnknownString_81AF7BF, UnknownString_81AF7D9, UnknownString_81AF7F1 - .4byte 0x112, UnknownString_81AF88A, UnknownString_81AF8A1, UnknownString_81AF8AA - .4byte 0x113, UnknownString_81AF91B, UnknownString_81AF935, UnknownString_81AF943 - .4byte 0x114, UnknownString_81AF9C8, UnknownString_81AF9E0, UnknownString_81AF9F6 - .4byte 0x11a, UnknownString_81AFA79, UnknownString_81AFA92, UnknownString_81AFA9E - .4byte 0x11b, UnknownString_81AFB17, UnknownString_81AFB2D, UnknownString_81AFB48 - .4byte 0x11c, UnknownString_81AFBD8, UnknownString_81AFBE7, UnknownString_81AFC04 - .4byte 0x21d, UnknownString_81AFC8A, UnknownString_81AFC9D, UnknownString_81AFCBE - .4byte 0x11e, UnknownString_81AFD44, UnknownString_81AFD60, UnknownString_81AFD80 - .4byte 0x121, UnknownString_81AFE1D, UnknownString_81AFE36, UnknownString_81AFE42 - .4byte 0x124, UnknownString_81AFEC2, UnknownString_81AFEDD, UnknownString_81AFEEE - .4byte 0x125, UnknownString_81AFF68, UnknownString_81AFF7B, UnknownString_81AFF88 - .4byte 0x126, UnknownString_81AFFFB, UnknownString_81B000D, UnknownString_81B0015 - .4byte 0x127, UnknownString_81B009D, UnknownString_81B00B6, UnknownString_81B00C9 - .4byte 0x128, UnknownString_81B014D, UnknownString_81B0165, UnknownString_81B0173 - .4byte 0x129, UnknownString_81B01E9, UnknownString_81B0201, UnknownString_81B0213 - .4byte 0x12a, UnknownString_81B0290, UnknownString_81B02A5, UnknownString_81B02B6 - .4byte 0x12b, UnknownString_81B0337, UnknownString_81B0351, UnknownString_81B0364 - .4byte 0x12c, UnknownString_81B03E9, UnknownString_81B0401, UnknownString_81B040C - .4byte 0x12d, UnknownString_81B046E, UnknownString_81B0489, UnknownString_81B049A - .4byte 0x12e, UnknownString_81B0523, UnknownString_81B053E, UnknownString_81B0554 - .4byte 0x12f, UnknownString_81B05D8, UnknownString_81B05F3, UnknownString_81B0610 - .4byte 0x130, UnknownString_81B06A9, UnknownString_81B06C6, UnknownString_81B06D9 - -gUnknown_083E5610:: @ 83E5610 - .4byte 0x131, UnknownString_81B0763, UnknownString_81B0781, UnknownString_81B0797 - - .align 2 -gUnknown_083E5620:: @ 83E5620 - .4byte 0x24 - .4byte gSaveBlock1 + 0x2D94 - .4byte 0xC diff --git a/data/menu_helpers.s b/data/menu_helpers.s deleted file mode 100644 index 29d42cb4b..000000000 --- a/data/menu_helpers.s +++ /dev/null @@ -1,102 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - - .align 2 -gSpriteImage_83E5808:: @ 83E5808 - .incbin "graphics/unknown_sprites/83E59A0/0.4bpp" - - .align 2 -gSpriteImage_83E5848:: @ 83E5848 - .incbin "graphics/unknown_sprites/83E59A0/1.4bpp" - - .align 2 -gSpriteImage_83E5888:: @ 83E5888 - .incbin "graphics/unknown_sprites/83E59B0/0.4bpp" - - .align 2 -gSpriteImage_83E58C8:: @ 83E58C8 - .incbin "graphics/unknown_sprites/83E59B0/1.4bpp" - - .align 2 -gSpriteImage_83E5908:: @ 83E5908 - .incbin "graphics/unknown_sprites/83E59C0/0.4bpp" - - .align 2 -gSpriteImage_83E5928:: @ 83E5928 - .incbin "graphics/unknown_sprites/83E59C0/1.4bpp" - - .align 2 -Palette_3E5948: @ 83E5948 - .incbin "graphics/interface/83E5948.gbapal" - - .align 2 -gUnknown_083E5968:: @ 83E5968 - obj_pal Palette_3E5948, 6 - - .align 2 -gOamData_83E5970:: @ 83E5970 - .2byte 0x0000 - .2byte 0x0000 - .2byte 0x0001 - - .align 2 -gOamData_83E5978:: @ 83E5978 - .2byte 0x4000 - .2byte 0x0000 - .2byte 0x0001 - - .align 2 -gOamData_83E5980:: @ 83E5980 - .2byte 0x8000 - .2byte 0x0000 - .2byte 0x0001 - - .align 2 -gSpriteAnim_83E5988:: @ 83E5988 - obj_image_anim_frame 0, 0 - obj_image_anim_end - - .align 2 -gSpriteAnim_83E5990:: @ 83E5990 - obj_image_anim_frame 1, 0 - obj_image_anim_end - - .align 2 -gSpriteAnimTable_83E5998:: @ 83E5998 - .4byte gSpriteAnim_83E5988 - .4byte gSpriteAnim_83E5990 - - .align 2 -gSpriteImageTable_83E59A0:: @ 83E59A0 - obj_frame_tiles gSpriteImage_83E5808, 0x40 - obj_frame_tiles gSpriteImage_83E5848, 0x40 - - .align 2 -gSpriteImageTable_83E59B0:: @ 83E59B0 - obj_frame_tiles gSpriteImage_83E5888, 0x40 - obj_frame_tiles gSpriteImage_83E58C8, 0x40 - - .align 2 -gSpriteImageTable_83E59C0:: @ 83E59C0 - obj_frame_tiles gSpriteImage_83E5908, 0x20 - obj_frame_tiles gSpriteImage_83E5928, 0x20 - - .align 2 -gSpriteTemplate_83E59D0:: @ 83E59D0 - spr_template 0xFFFF, 6, gOamData_83E5978, gSpriteAnimTable_83E5998, gSpriteImageTable_83E59A0, gDummySpriteAffineAnimTable, sub_80F9834 - - .align 2 -gSpriteTemplate_83E59E8:: @ 83E59E8 - spr_template 0xFFFF, 6, gOamData_83E5980, gSpriteAnimTable_83E5998, gSpriteImageTable_83E59B0, gDummySpriteAffineAnimTable, sub_80F9834 - - .align 2 -gSpriteTemplate_83E5A00:: @ 83E5A00 - spr_template 0xFFFF, 6, gOamData_83E5970, gSpriteAnimTable_83E5998, gSpriteImageTable_83E59C0, gDummySpriteAffineAnimTable, SpriteCallbackDummy - -gUnknown_083E5A18:: @ 83E5A18 - .string "{PALETTE 0}$" - -gUnknown_083E5A1C:: @ 83E5A1C - .string "▶$" diff --git a/data/mon_pokeblock_anims.inc b/data/mon_pokeblock_anims.inc deleted file mode 100644 index d8df29c1d..000000000 --- a/data/mon_pokeblock_anims.inc +++ /dev/null @@ -1,133 +0,0 @@ -gNatureToMonPokeblockAnim:: @ 8411A10 - .byte 0, 0 @ HARDY - .byte 3, 0 @ LONELY - .byte 4, 1 @ BRAVE - .byte 5, 0 @ ADAMANT - .byte 10, 0 @ NAUGHTY - .byte 13, 0 @ BOLD - .byte 15, 0 @ DOCILE - .byte 16, 2 @ RELAXED - .byte 18, 0 @ IMPISH - .byte 19, 0 @ LAX - .byte 20, 0 @ TIMID - .byte 25, 0 @ HASTY - .byte 27, 3 @ SERIOUS - .byte 28, 0 @ JOLLY - .byte 29, 0 @ NAIVE - .byte 33, 4 @ MODEST - .byte 36, 0 @ MILD - .byte 37, 0 @ QUIET - .byte 39, 0 @ BASHFUL - .byte 42, 0 @ RASH - .byte 45, 0 @ CALM - .byte 46, 5 @ GENTLE - .byte 47, 6 @ SASSY - .byte 48, 0 @ CAREFUL - .byte 53, 0 @ QUIRKY - - .align 1 -gMonPokeblockAnims:: @ 8411A42 - @ HARDY - .2byte 0, 4, 0, 8, 24, 0, 0, 0, 12, 0 - .2byte 0, 4, 0, 16, 24, 0, 0, 0, 12, 0 - .2byte 0, 4, 0, 32, 32, 0, 0, 0, 16, 1 - - @ LONELY - .2byte 0, 3, 6, 0, 48, 0, 0, 0, 24, 1 - - @ BRAVE - .2byte 64, 16, -24, 0, 32, 0, 0, 0, 0, 1 - - @ ADAMANT - .2byte 0, 4, 8, 0, 16, 0, -8, 0, 0, 0 - .2byte 0, 0, 0, 0, 16, 0, 0, 0, 0, 0 - .2byte 0, 4, 8, 0, 16, 0, -8, 0, 0, 0 - .2byte 0, 0, 0, 0, 16, 0, 0, 0, 0, 0 - .2byte 0, 4, -16, 0, 4, 0, 16, 0, 0, 1 - - @ NAUGHTY - .2byte 0, 3, 6, 0, 12, 0, 0, 0, 6, 0 - .2byte 0, 3, -6, 0, 12, 0, 0, 0, 6, 0 - .2byte 0, 16, 16, 0, 45, 1, 0, 0, 0, 1 - - @ BOLD - .2byte 0, 16, 0, 24, 32, 0, 0, 0, 16, 0 - .2byte 0, 16, 0, 23, 32, 0, 0, 0, 16, 1 - - @ DOCILE - .2byte 0, 0, 0, 0, 80, 0, 0, 0, 0, 1 - - @ RELAXED - .2byte 0, 2, 8, 0, 32, 0, 0, 0, 0, 0 - .2byte 0, 2, -8, 0, 32, 0, 0, 0, 0, 1 - - @ IMPISH - .2byte 0, 32, 2, 1, 48, 1, 0, 0, 24, 1 - - @ LAX - .2byte 0, 2, 16, 16, 128, 0, 0, 0, 0, 1 - - @ TIMID - .2byte 0, 2, -8, 0, 48, 0, -24, 0, 0, 0 - .2byte 0, 0, 0, 0, 8, 0, 0, 0, 0, 0 - .2byte 64, 32, 2, 0, 36, 0, 0, 0, 0, 0 - .2byte 0, 0, 0, 0, 8, 0, 0, 0, 0, 0 - .2byte 0, 2, 8, 0, 48, 0, 24, 0, 0, 1 - - @ HASTY - .2byte 64, 24, 16, 0, 32, 0, 0, 0, 0, 0 - .2byte 0, 28, 2, 1, 32, 1, 0, 0, 16, 1 - - @ SERIOUS - .2byte 0, 0, 0, 0, 32, 0, 0, 0, 0, 1 - - @ JOLLY - .2byte 64, 16, -16, 2, 48, 0, 0, 0, 32, 1 - - @ NAIVE - .2byte 0, 12, -8, 4, 24, 0, 8, 0, 12, 0 - .2byte 0, 12, 8, 8, 24, 0, -16, 0, 12, 0 - .2byte 0, 12, -8, 16, 24, 0, 16, 0, 12, 0 - .2byte 0, 12, 8, 28, 24, 0, -8, 0, 12, 1 - - @ MODEST - .2byte 0, 0, 0, 0, 8, 0, 0, 0, 0, 0 - .2byte 64, 16, -4, 0, 32, 0, 0, 0, 0, 0 - .2byte 0, 0, 0, 0, 8, 0, 0, 0, 0, 1 - - @ MILD - .2byte 128, 4, 0, 8, 64, 0, 0, 0, 0, 1 - - @ QUIET - .2byte 0, 2, 16, 0, 48, 0, 0, 0, 0, 0 - .2byte 128, 2, 16, 0, 48, 0, 0, 0, 0, 1 - - @ BASHFUL - .2byte 0, 2, -4, 0, 48, 0, -48, 0, 0, 0 - .2byte 0, 0, 0, 0, 80, 0, 0, 0, 0, 0 - .2byte 0, 2, 8, 0, 24, 0, 48, 0, 0, 1 - - @ RASH - .2byte 64, 4, 64, 58, 52, 0, -88, 0, 0, 0 - .2byte 0, 0, 0, 0, 80, 0, 0, 0, 0, 0 - .2byte 0, 24, 80, 0, 32, 0, 88, 0, 0, 1 - - @ CALM - .2byte 0, 2, 16, 4, 64, 0, 0, 0, 0, 1 - - @ GENTLE - .2byte 0, 0, 0, 0, 32, 0, 0, 0, 0, 1 - - @ SASSY - .2byte 0, 0, 0, 0, 42, 0, 0, 0, 0, 1 - - @ CAREFUL - .2byte 0, 4, 0, 8, 24, 0, 0, 0, 12, 0 - .2byte 0, 0, 0, 0, 12, 0, 0, 0, 0, 0 - .2byte 0, 4, 0, 12, 24, 0, 0, 0, 12, 0 - .2byte 0, 0, 0, 0, 12, 0, 0, 0, 0, 0 - .2byte 0, 4, 0, 4, 24, 0, 0, 0, 12, 1 - - @ QUIRKY - .2byte 0, 4, 16, 12, 64, 0, 0, 0, 0, 0 - .2byte 0, -4, 16, 12, 64, 0, 0, 0, 0, 1 diff --git a/data/mystery_event_script_cmd_table.s b/data/mystery_event_script_cmd_table.s new file mode 100644 index 000000000..171c35b4e --- /dev/null +++ b/data/mystery_event_script_cmd_table.s @@ -0,0 +1,22 @@ + .section script_data, "aw", %progbits + + .align 2 +gMysteryEventScriptCmdTable:: @ 81DCAF4 + .4byte MEScrCmd_nop + .4byte MEScrCmd_checkcompat + .4byte MEScrCmd_end + .4byte MEScrCmd_setmsg + .4byte MEScrCmd_setstatus + .4byte MEScrCmd_runscript + .4byte MEScrCmd_initramscript + .4byte MEScrCmd_setenigmaberry + .4byte MEScrCmd_giveribbon + .4byte MEScrCmd_givenationaldex + .4byte MEScrCmd_addrareword + .4byte MEScrCmd_setrecordmixinggift + .4byte MEScrCmd_givepokemon + .4byte MEScrCmd_addtrainer + .4byte MEScrCmd_enableresetrtc + .4byte MEScrCmd_checksum + .4byte MEScrCmd_crc +gMysteryEventScriptCmdTableEnd:: diff --git a/data/option_menu.s b/data/option_menu.s deleted file mode 100644 index cb517cc89..000000000 --- a/data/option_menu.s +++ /dev/null @@ -1,13 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - - .align 2 -gUnknown_0839F5FC:: @ 839F5FC - .incbin "graphics/misc/option_menu_text.gbapal" - -@ note: this is only used in the Japanese release - .align 2 -gUnknown_0839F63C:: @ 839F63C - .incbin "graphics/misc/option_menu_equals_sign.4bpp" diff --git a/data/party_menu.s b/data/party_menu.s deleted file mode 100644 index 5596ff2ed..000000000 --- a/data/party_menu.s +++ /dev/null @@ -1,744 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - - .align 1 -gUnknown_08376504:: @ 8376504 - .2byte MOVE_FOCUS_PUNCH - .2byte MOVE_DRAGON_CLAW - .2byte MOVE_WATER_PULSE - .2byte MOVE_CALM_MIND - .2byte MOVE_ROAR - .2byte MOVE_TOXIC - .2byte MOVE_HAIL - .2byte MOVE_BULK_UP - .2byte MOVE_BULLET_SEED - .2byte MOVE_HIDDEN_POWER - .2byte MOVE_SUNNY_DAY - .2byte MOVE_TAUNT - .2byte MOVE_ICE_BEAM - .2byte MOVE_BLIZZARD - .2byte MOVE_HYPER_BEAM - .2byte MOVE_LIGHT_SCREEN - .2byte MOVE_PROTECT - .2byte MOVE_RAIN_DANCE - .2byte MOVE_GIGA_DRAIN - .2byte MOVE_SAFEGUARD - .2byte MOVE_FRUSTRATION - .2byte MOVE_SOLAR_BEAM - .2byte MOVE_IRON_TAIL - .2byte MOVE_THUNDERBOLT - .2byte MOVE_THUNDER - .2byte MOVE_EARTHQUAKE - .2byte MOVE_RETURN - .2byte MOVE_DIG - .2byte MOVE_PSYCHIC - .2byte MOVE_SHADOW_BALL - .2byte MOVE_BRICK_BREAK - .2byte MOVE_DOUBLE_TEAM - .2byte MOVE_REFLECT - .2byte MOVE_SHOCK_WAVE - .2byte MOVE_FLAMETHROWER - .2byte MOVE_SLUDGE_BOMB - .2byte MOVE_SANDSTORM - .2byte MOVE_FIRE_BLAST - .2byte MOVE_ROCK_TOMB - .2byte MOVE_AERIAL_ACE - .2byte MOVE_TORMENT - .2byte MOVE_FACADE - .2byte MOVE_SECRET_POWER - .2byte MOVE_REST - .2byte MOVE_ATTRACT - .2byte MOVE_THIEF - .2byte MOVE_STEEL_WING - .2byte MOVE_SKILL_SWAP - .2byte MOVE_SNATCH - .2byte MOVE_OVERHEAT - .2byte MOVE_CUT - .2byte MOVE_FLY - .2byte MOVE_SURF - .2byte MOVE_STRENGTH - .2byte MOVE_FLASH - .2byte MOVE_ROCK_SMASH - .2byte MOVE_WATERFALL - .2byte MOVE_DIVE - - .4byte gTileBuffer @ unreferenced? - -MenuGfx_HoldIcons: - .incbin "graphics/interface/hold_icons.4bpp" -MenuPal_HoldIcons: - .incbin "graphics/interface/hold_icons.gbapal" - - .align 2 -gUnknown_083765DC:: @ 83765DC - obj_tiles MenuGfx_HoldIcons, 64, 0xd750 - - .align 2 -gUnknown_083765E4:: @ 83765E4 - obj_pal MenuPal_HoldIcons, 0xd750 - - .align 2 -gOamData_83765EC:: @ 83765EC - .2byte 0x0000 - .2byte 0x0000 - .2byte 0x0400 - - .align 2 -gSpriteAnim_83765F4:: @ 83765F4 - obj_image_anim_frame 0, 1 - obj_image_anim_end - - .align 2 -gSpriteAnim_83765FC:: @ 83765FC - obj_image_anim_frame 1, 1 - obj_image_anim_end - - .align 2 -gSpriteAnimTable_8376604:: @ 8376604 - .4byte gSpriteAnim_83765F4 - .4byte gSpriteAnim_83765FC - - .align 2 -gSpriteTemplate_837660C:: @ 837660C - spr_template 55120, 55120, gOamData_83765EC, gSpriteAnimTable_8376604, NULL, gDummySpriteAffineAnimTable, SpriteCB_HeldItemIcon_806DD7C - - .align 2 -gUnknown_08376624:: @ 8376624 - .4byte OtherText_ChoosePoke - .4byte OtherText_MovePokeTo - .4byte OtherText_TeachWhat - .4byte OtherText_UseWhat - .4byte OtherText_GiveWhat - .4byte OtherText_DoWhat - .4byte OtherText_NothingToCut - .4byte OtherText_CantSurf - .4byte OtherText_AlreadySurfing - .4byte OtherText_CantUseThatHere - .4byte OtherText_RestoreWhatMove - .4byte OtherText_BoostPP - .4byte gOtherText_CancelWithTerminator - .4byte OtherText_DoWhatWithItem - .4byte OtherText_NoPokeForBattle - .4byte OtherText_ChoosePoke2 - .4byte OtherText_NotEnoughHP - .4byte OtherText_ThreePokeNeeded - .4byte OtherText_PokeCantBeSame - .4byte OtherText_NoIdenticalHoldItems - .4byte OtherText_TeachWhichPoke - - .align 2 -gUnknown_08376678:: @ 8376678 - .byte 16, 40, 0, 0 - .byte 104, 18, 0, 0 - .byte 104, 42, 0, 0 - .byte 104, 66, 0, 0 - .byte 104, 90, 0, 0 - .byte 104, 114, 0, 0 - .byte 16, 24, 0, 0 - .byte 16, 80, 0, 0 - .byte 104, 18, 0, 0 - .byte 104, 50, 0, 0 - .byte 104, 82, 0, 0 - .byte 104, 114, 0, 0 - .byte 16, 24, 0, 0 - .byte 16, 80, 0, 0 - .byte 104, 26, 0, 0 - .byte 104, 50, 0, 0 - .byte 104, 82, 0, 0 - .byte 104, 106, 0, 0 - .byte 16, 24, 0, 0 - .byte 104, 26, 0, 0 - .byte 104, 50, 0, 0 - .byte 16, 80, 0, 0 - .byte 104, 82, 0, 0 - .byte 104, 106, 0, 0 - .byte 5, 4, 0, 0 - .byte 16, 1, 0, 0 - .byte 16, 4, 0, 0 - .byte 16, 7, 0, 0 - .byte 16, 10, 0, 0 - .byte 16, 13, 0, 0 - .byte 5, 2, 0, 0 - .byte 5, 9, 0, 0 - .byte 16, 1, 0, 0 - .byte 16, 5, 0, 0 - .byte 16, 9, 0, 0 - .byte 16, 13, 0, 0 - .byte 5, 2, 0, 0 - .byte 5, 9, 0, 0 - .byte 16, 2, 0, 0 - .byte 16, 5, 0, 0 - .byte 16, 9, 0, 0 - .byte 16, 12, 0, 0 - .byte 5, 2, 0, 0 - .byte 16, 2, 0, 0 - .byte 16, 5, 0, 0 - .byte 5, 9, 0, 0 - .byte 16, 9, 0, 0 - .byte 16, 12, 0, 0 - - .align 2 -gUnknown_08376738:: @ 8376738 - .byte 6, 5, 0, 0 - .byte 17, 2, 0, 0 - .byte 17, 5, 0, 0 - .byte 17, 8, 0, 0 - .byte 17, 11, 0, 0 - .byte 17, 14, 0, 0 - .byte 6, 3, 0, 0 - .byte 6, 10, 0, 0 - .byte 17, 2, 0, 0 - .byte 17, 6, 0, 0 - .byte 17, 10, 0, 0 - .byte 17, 14, 0, 0 - .byte 6, 3, 0, 0 - .byte 6, 10, 0, 0 - .byte 17, 3, 0, 0 - .byte 17, 6, 0, 0 - .byte 17, 10, 0, 0 - .byte 17, 13, 0, 0 - .byte 6, 3, 0, 0 - .byte 17, 3, 0, 0 - .byte 17, 6, 0, 0 - .byte 6, 10, 0, 0 - .byte 17, 10, 0, 0 - .byte 17, 13, 0, 0 - .byte 3, 7, 0, 0 - .byte 22, 2, 0, 0 - .byte 22, 5, 0, 0 - .byte 22, 8, 0, 0 - .byte 22, 11, 0, 0 - .byte 22, 14, 0, 0 - .byte 3, 5, 0, 0 - .byte 3, 12, 0, 0 - .byte 22, 2, 0, 0 - .byte 22, 6, 0, 0 - .byte 22, 10, 0, 0 - .byte 22, 14, 0, 0 - .byte 3, 5, 0, 0 - .byte 3, 12, 0, 0 - .byte 22, 3, 0, 0 - .byte 22, 6, 0, 0 - .byte 22, 10, 0, 0 - .byte 22, 13, 0, 0 - .byte 3, 5, 0, 0 - .byte 22, 3, 0, 0 - .byte 22, 6, 0, 0 - .byte 3, 12, 0, 0 - .byte 22, 10, 0, 0 - .byte 22, 13, 0, 0 - .byte 7, 7, 0, 0 - .byte 26, 2, 0, 0 - .byte 26, 5, 0, 0 - .byte 26, 8, 0, 0 - .byte 26, 11, 0, 0 - .byte 26, 14, 0, 0 - .byte 7, 5, 0, 0 - .byte 7, 12, 0, 0 - .byte 26, 2, 0, 0 - .byte 26, 6, 0, 0 - .byte 26, 10, 0, 0 - .byte 26, 14, 0, 0 - .byte 7, 5, 0, 0 - .byte 7, 12, 0, 0 - .byte 26, 3, 0, 0 - .byte 26, 6, 0, 0 - .byte 26, 10, 0, 0 - .byte 26, 13, 0, 0 - .byte 7, 5, 0, 0 - .byte 26, 3, 0, 0 - .byte 26, 6, 0, 0 - .byte 7, 12, 0, 0 - .byte 26, 10, 0, 0 - .byte 26, 13, 0, 0 - - .align 2 -gUnknown_08376858:: @ 8376858 - .4byte BG_VRAM + 0xF1C8 - .4byte BG_VRAM + 0xF0AE - .4byte BG_VRAM + 0xF16E - .4byte BG_VRAM + 0xF22E - .4byte BG_VRAM + 0xF2EE - .4byte BG_VRAM + 0xF3AE - .4byte BG_VRAM + 0xF148 - .4byte BG_VRAM + 0xF308 - .4byte BG_VRAM + 0xF0AE - .4byte BG_VRAM + 0xF1AE - .4byte BG_VRAM + 0xF2AE - .4byte BG_VRAM + 0xF3AE - .4byte BG_VRAM + 0xF148 - .4byte BG_VRAM + 0xF308 - .4byte BG_VRAM + 0xF0EE - .4byte BG_VRAM + 0xF1AE - .4byte BG_VRAM + 0xF2AE - .4byte BG_VRAM + 0xF36E - .4byte BG_VRAM + 0xF148 - .4byte BG_VRAM + 0xF0EE - .4byte BG_VRAM + 0xF1AE - .4byte BG_VRAM + 0xF308 - .4byte BG_VRAM + 0xF2AE - .4byte BG_VRAM + 0xF36E - - .align 2 -gUnknown_083768B8:: @ 83768B8 - .byte 8, 44, 0, 0 - .byte 92, 22, 0, 0 - .byte 92, 46, 0, 0 - .byte 92, 70, 0, 0 - .byte 92, 94, 0, 0 - .byte 92, 118, 0, 0 - .byte 196, 136, 0, 0 - .byte 196, 152, 0, 0 - .byte 8, 28, 0, 0 - .byte 8, 84, 0, 0 - .byte 92, 22, 0, 0 - .byte 92, 54, 0, 0 - .byte 92, 86, 0, 0 - .byte 92, 118, 0, 0 - .byte 196, 136, 0, 0 - .byte 196, 152, 0, 0 - .byte 8, 28, 0, 0 - .byte 8, 84, 0, 0 - .byte 92, 30, 0, 0 - .byte 92, 54, 0, 0 - .byte 92, 86, 0, 0 - .byte 92, 110, 0, 0 - .byte 196, 136, 0, 0 - .byte 196, 152, 0, 0 - - .align 2 -gUnknown_08376918:: @ 8376918 - .4byte BG_VRAM + 0xF1C6 - .4byte BG_VRAM + 0xF06C - .4byte BG_VRAM + 0xF12C - .4byte BG_VRAM + 0xF1EC - .4byte BG_VRAM + 0xF2AC - .4byte BG_VRAM + 0xF36C - .4byte BG_VRAM + 0xF148 - .4byte BG_VRAM + 0xF308 - .4byte BG_VRAM + 0xF0AE - .4byte BG_VRAM + 0xF1AE - .4byte BG_VRAM + 0xF2AE - .4byte BG_VRAM + 0xF3AE - - .align 2 -gUnknown_08376948:: @ 8376948 - .byte 2, 4, 10, 9 - .byte 16, 1, 29, 3 - .byte 16, 4, 29, 6 - .byte 16, 7, 29, 9 - .byte 16, 10, 29, 12 - .byte 16, 13, 29, 15 - .byte 2, 2, 10, 7 - .byte 2, 9, 10, 14 - .byte 16, 1, 29, 3 - .byte 16, 5, 29, 7 - .byte 16, 9, 29, 11 - .byte 16, 13, 29, 15 - - .align 2 -gUnknown_08376978:: @ 8376978 - .byte 2, 7, 10, 9 - .byte 21, 1, 29, 3 - .byte 21, 4, 29, 6 - .byte 21, 7, 29, 9 - .byte 21, 10, 29, 12 - .byte 21, 13, 29, 15 - .byte 2, 2, 10, 7 - .byte 2, 9, 10, 14 - .byte 16, 1, 29, 3 - .byte 16, 5, 29, 7 - .byte 16, 9, 29, 11 - .byte 16, 13, 29, 15 - - .align 2 -gUnknown_083769A8:: @ 83769A8 - .byte 0, 3, 11, 1, 11, 4, 11, 7, 11, 10, 11, 13 - .byte 0, 1, 0, 8, 11, 1, 11, 5, 11, 9, 11, 13 - - .align 2 -gUnknown_083769C0:: @ 83769C0 - .byte 0, 1 - .byte 0, 8 - .byte 11, 2 - .byte 11, 5 - .byte 11, 9 - .byte 11, 12 - .byte 0, 1 - .byte 0, 8 - .byte 11, 2 - .byte 11, 5 - .byte 11, 9 - .byte 11, 12 - -gUnknown_083769D8:: @ 83769D8 - .byte 0x24,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x27 - .byte 0x34,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x37 - .byte 0x34,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x37 - .byte 0x34,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x37 - .byte 0x44,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x47 - .byte 0x44,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x47 - .byte 0x54,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x57 - -gUnknown_08376A25:: @ 8376A25 - .byte 0x50,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x53 - .byte 0x60,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x63 - .byte 0x70,0x71,0x71,0x71,0x71,0x71,0x71,0x71,0x71,0x71,0x71,0x71,0x71,0x71,0x71,0x71,0x71,0x71,0x73 - -gUnknown_08376A5E:: @ 8376A5E - .byte 0x20,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x23 - .byte 0x30,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x33 - .byte 0x40,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x43 - -@ unknown, unreferenced data - .byte 0x0C - .byte 0x0D - .byte 0x0E - .byte 0x0F - .byte 0x00 - .byte 0x01 - .byte 0x02 - .byte 0x03 - .byte 0x04 - .byte 0x05 - .byte 0x0F - .byte 0x10 - .byte 0x11 - .byte 0x12 - .byte 0x13 - .byte 0x14 - .byte 0x15 - .byte 0x0F - .byte 0x06 - .byte 0x05 - .byte 0x01 - .byte 0x07 - .byte 0x08 - .byte 0x09 - .byte 0x0F - .byte 0x16 - .byte 0x15 - .byte 0x11 - .byte 0x17 - .byte 0x18 - .byte 0x19 - .byte 0x0F - .byte 0x09 - .byte 0x0A - .byte 0x0B - .byte 0x05 - .byte 0x0C - .byte 0x0F - .byte 0x0F - .byte 0x19 - .byte 0x1A - .byte 0x1B - .byte 0x15 - .byte 0x1C - .byte 0x0F - .byte 0x0F - .byte 0x0D - .byte 0x0B - .byte 0x05 - .byte 0x0C - .byte 0x0F - .byte 0x0F - .byte 0x0F - .byte 0x1D - .byte 0x1B - .byte 0x15 - .byte 0x1C - .byte 0x0F - .byte 0x0F - .byte 0x0F - .byte 0x06 - .byte 0x05 - .byte 0x0B - .byte 0x05 - .byte 0x0C - .byte 0x0F - .byte 0x0F - .byte 0x16 - .byte 0x15 - .byte 0x1B - .byte 0x15 - .byte 0x1C - .byte 0x0F - .byte 0x0F - .byte 0x0F - .byte 0x0F - .byte 0x20 - .byte 0x0C - .byte 0x09 - .byte 0x0F - .byte 0x0F - .byte 0x0F - .byte 0x1F - .byte 0x30 - .byte 0x1C - .byte 0x19 - .byte 0x0F - .byte 0x0F - .byte 0x0F - .byte 0x25 - .byte 0x0F - .byte 0x22 - .byte 0x24 - .byte 0x0F - .byte 0x0F - .byte 0x0F - .byte 0x35 - .byte 0x41 - .byte 0x32 - .byte 0x34 - .byte 0x0F - .byte 0x0F - .byte 0x0F - .byte 0x26 - .byte 0x0F - .byte 0x23 - .byte 0x0E - .byte 0x0F - .byte 0x0F - .byte 0x0F - .byte 0x36 - .byte 0x43 - .byte 0x33 - .byte 0x1E - .byte 0x0F - .byte 0x0F - .byte 0x27 - .byte 0x28 - .byte 0x29 - .byte 0x03 - .byte 0x2A - .byte 0x0F - .byte 0x0F - .byte 0x37 - .byte 0x38 - .byte 0x39 - .byte 0x13 - .byte 0x3A - .byte 0x0F - .byte 0x0F - .byte 0x27 - .byte 0x28 - .byte 0x29 - .byte 0x03 - .byte 0x04 - .byte 0x05 - .byte 0x0F - .byte 0x37 - .byte 0x38 - .byte 0x39 - .byte 0x13 - .byte 0x14 - .byte 0x15 - .byte 0x0F - .byte 0x2B - .byte 0x2C - .byte 0x02 - .byte 0x28 - .byte 0x29 - .byte 0x2D - .byte 0x21 - .byte 0x3B - .byte 0x3C - .byte 0x12 - .byte 0x38 - .byte 0x39 - .byte 0x3D - .byte 0x31 - .byte 0x2B - .byte 0x2C - .byte 0x02 - .byte 0x28 - .byte 0x29 - .byte 0x08 - .byte 0x09 - .byte 0x3B - .byte 0x3C - .byte 0x12 - .byte 0x38 - .byte 0x39 - .byte 0x18 - .byte 0x19 - .byte 0x2E - .byte 0x2F - .byte 0x2B - .byte 0x2C - .byte 0x02 - .byte 0x27 - .byte 0x2D - .byte 0x3E - .byte 0x3F - .byte 0x3B - .byte 0x3C - .byte 0x12 - .byte 0x45 - .byte 0x3D - - .align 2 -gUnknown_08376B54:: @ 8376B54 - .4byte ItemUseMoveMenu_HandleMoveSelection - .4byte ItemUseMoveMenu_HandleCancel - - .align 1 -Unknown_08376B5C: - .2byte 0x4000, 0x4018, 0xF400 - .2byte 0x4000, 0x4038, 0xF404 - .2byte 0x4008, 0x4018, 0xF408 - .2byte 0x4008, 0x4038, 0xF40C - .2byte 0x4010, 0x4020, 0xF410 - .2byte 0x4020, 0x4025, 0xF418 - .2byte 0x4020, 0x4045, 0xF41C - .2byte -1 - - .align 1 -Unknown_08376B88: - .2byte 0x4000, 0x4018, 0xF400 - .2byte 0x4000, 0x4038, 0xF404 - .2byte 0x4008, 0x4018, 0xF408 - .2byte 0x4008, 0x4038, 0xF40C - .2byte 0x4010, 0x4020, 0xF410 - .2byte 0x4010, 0x4065, 0xF418 - .2byte 0x4010, 0x4085, 0xF41C - .2byte -1 - - .align 2 -gUnknown_08376BB4:: @ 8376BB4 - .byte 0x1, 0x4 - .space 2 - .4byte Unknown_08376B5C - - .byte 0xC, 0x1 - .space 2 - .4byte Unknown_08376B88 - - .byte 0xC, 0x4 - .space 2 - .4byte Unknown_08376B88 - - .byte 0xC, 0x7 - .space 2 - .4byte Unknown_08376B88 - - .byte 0xC, 0xA - .space 2 - .4byte Unknown_08376B88 - - .byte 0xC, 0xD - .space 2 - .4byte Unknown_08376B88 - - .byte 0x1, 0x2 - .space 2 - .4byte Unknown_08376B5C - - .byte 0x1, 0x9 - .space 2 - .4byte Unknown_08376B5C - - .byte 0xC, 0x1 - .space 2 - .4byte Unknown_08376B88 - - .byte 0xC, 0x5 - .space 2 - .4byte Unknown_08376B88 - - .byte 0xC, 0x9 - .space 2 - .4byte Unknown_08376B88 - - .byte 0xC, 0xD - .space 2 - .4byte Unknown_08376B88 - - .byte 0x1, 0x2 - .space 2 - .4byte Unknown_08376B5C - - .byte 0x1, 0x9 - .space 2 - .4byte Unknown_08376B5C - - .byte 0xC, 0x2 - .space 2 - .4byte Unknown_08376B88 - - .byte 0xC, 0x5 - .space 2 - .4byte Unknown_08376B88 - - .byte 0xC, 0x9 - .space 2 - .4byte Unknown_08376B88 - - .byte 0xC, 0xC - .space 2 - .4byte Unknown_08376B88 - - .byte 0x1, 0x2 - .space 2 - .4byte Unknown_08376B5C - - .byte 0xC, 0x2 - .space 2 - .4byte Unknown_08376B88 - - .byte 0xC, 0x5 - .space 2 - .4byte Unknown_08376B88 - - .byte 0x1, 0x9 - .space 2 - .4byte Unknown_08376B5C - - .byte 0xC, 0x9 - .space 2 - .4byte Unknown_08376B88 - - .byte 0xC, 0xC - .space 2 - .4byte Unknown_08376B88 - - .align 2 -gUnknown_08376C74:: @ 8376C74 - .4byte sub_8089CD4, sub_806AFD0, 0 - .4byte SetUpBattlePokemonMenu, SetUpBattlePartyMenu, 0 - .4byte sub_80F9C6C, sub_80F9ACC, 0 - .4byte sub_80F9C6C, sub_806AFD0, 0 - .4byte sub_81222B0, sub_8121E78, 0 - .4byte sub_8122A48, sub_8122854, 0xFF - .4byte sub_8122E0C, sub_806AFD0, 0x0F - .4byte sub_80F9E64, sub_80F9CE8, 0 - - .align 2 -gUnknown_08376CD4:: @ 8376CD4 - .2byte 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F - .2byte 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F - - .align 2 -gUnknown_08376CEC:: @ 8376CEC - .2byte 0x2A, 0x0B, 0x0C, 0x0D, 0x0E, 0x2F - .2byte 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F - - .align 2 -gUnknown_08376D04:: @ 8376D04 - .4byte gOtherText_HP - .4byte gOtherText_Attack - .4byte gOtherText_Defense - .4byte gOtherText_SpAtk - .4byte gOtherText_SpDef - .4byte gOtherText_Speed - -gUnknown_08376D1C:: @ 8376D1C - .byte 0x3A @ HP - .byte 0x3B @ Attack - .byte 0x3C @ Defense - .byte 0x3E @ Sp. Attack - .byte 0x3F @ Sp. Defense - .byte 0x3D @ Speed diff --git a/data/pokeblock_feed.s b/data/pokeblock_feed.s deleted file mode 100644 index ae5b17d12..000000000 --- a/data/pokeblock_feed.s +++ /dev/null @@ -1,225 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - -@ 8411A10 - .include "data/mon_pokeblock_anims.inc" - - .align 2 -gSpriteAffineAnim_8411E90:: @ 8411E90 - obj_rot_scal_anim_frame 0xFF00, 0x100, 0, 0 - obj_rot_scal_anim_end - - .align 2 -gSpriteAffineAnim_8411EA0:: @ 8411EA0 - obj_rot_scal_anim_frame 0x0, 0x0, 12, 1 - obj_rot_scal_anim_frame 0x0, 0x0, 0, 30 - obj_rot_scal_anim_frame 0x0, 0x0, -12, 1 - obj_rot_scal_anim_end - - .align 2 -gSpriteAffineAnim_8411EC0:: @ 8411EC0 - obj_rot_scal_anim_frame 0xFF00, 0x100, 0, 0 - obj_rot_scal_anim_frame 0x0, 0x0, 12, 1 - obj_rot_scal_anim_frame 0x0, 0x0, 0, 28 - obj_rot_scal_anim_frame 0x0, 0x0, -4, 3 - obj_rot_scal_anim_end - - .align 2 -gSpriteAffineAnim_8411EE8:: @ 8411EE8 - obj_rot_scal_anim_frame 0x0, 0x0, 1, 16 - obj_rot_scal_anim_frame 0x0, 0x0, -1, 32 - obj_rot_scal_anim_frame 0x0, 0x0, 1, 16 - obj_rot_scal_anim_end - - .align 2 -gSpriteAffineAnim_8411F08:: @ 8411F08 - obj_rot_scal_anim_frame 0xFF00, 0x100, 0, 0 - obj_rot_scal_anim_frame 0x0, 0x0, 1, 16 - obj_rot_scal_anim_frame 0x0, 0x0, -1, 32 - obj_rot_scal_anim_frame 0x0, 0x0, 1, 16 - obj_rot_scal_anim_end - - .align 2 -gSpriteAffineAnim_8411F30:: @ 8411F30 - obj_rot_scal_anim_frame 0x0, 0x0, -1, 8 - obj_rot_scal_anim_frame 0x0, 0x0, 0, 16 - obj_rot_scal_anim_frame 0x0, 0x0, 1, 8 - obj_rot_scal_anim_end - - .align 2 -gSpriteAffineAnim_8411F50:: @ 8411F50 - obj_rot_scal_anim_frame 0xFF00, 0x100, 0, 0 - obj_rot_scal_anim_frame 0x0, 0x0, -1, 8 - obj_rot_scal_anim_frame 0x0, 0x0, 0, 16 - obj_rot_scal_anim_frame 0x0, 0x0, 1, 8 - obj_rot_scal_anim_end - - .align 2 -gSpriteAffineAnim_8411F78:: @ 8411F78 - obj_rot_scal_anim_frame 0x0, 0x0, -1, 8 - obj_rot_scal_anim_frame 0x0, 0x0, 0, 32 - obj_rot_scal_anim_frame 0x0, 0x0, 1, 8 - obj_rot_scal_anim_end - - .align 2 -gSpriteAffineAnim_8411F98:: @ 8411F98 - obj_rot_scal_anim_frame 0xFF00, 0x100, 0, 0 - obj_rot_scal_anim_frame 0x0, 0x0, -1, 8 - obj_rot_scal_anim_frame 0x0, 0x0, 0, 32 - obj_rot_scal_anim_frame 0x0, 0x0, 1, 8 - obj_rot_scal_anim_end - - .align 2 -gSpriteAffineAnim_8411FC0:: @ 8411FC0 - obj_rot_scal_anim_frame 0x0, 0x0, -1, 4 - obj_rot_scal_anim_frame 0x0, 0x0, 0, 24 - obj_rot_scal_anim_frame 0x0, 0x0, 1, 4 - obj_rot_scal_anim_end - - .align 2 -gSpriteAffineAnim_8411FE0:: @ 8411FE0 - obj_rot_scal_anim_frame 0xFF00, 0x100, 0, 0 - obj_rot_scal_anim_frame 0x0, 0x0, -1, 4 - obj_rot_scal_anim_frame 0x0, 0x0, 0, 24 - obj_rot_scal_anim_frame 0x0, 0x0, 1, 4 - obj_rot_scal_anim_end - - .align 2 -gSpriteAffineAnim_8412008:: @ 8412008 - obj_rot_scal_anim_frame 0x0, 0x0, 1, 24 - obj_rot_scal_anim_frame 0x0, 0x0, 0, 16 - obj_rot_scal_anim_frame 0x0, 0x0, -12, 2 - obj_rot_scal_anim_end - - .align 2 -gSpriteAffineAnim_8412028:: @ 8412028 - obj_rot_scal_anim_frame 0xFF00, 0x100, 0, 0 - obj_rot_scal_anim_frame 0x0, 0x0, 1, 24 - obj_rot_scal_anim_frame 0x0, 0x0, 0, 16 - obj_rot_scal_anim_frame 0x0, 0x0, -12, 2 - obj_rot_scal_anim_end - - .align 2 -gSpriteAffineAnimTable_8412050:: @ 8412050 - .4byte gSpriteAffineAnim_8411E90 - .4byte gSpriteAffineAnim_8411EA0 - .4byte gSpriteAffineAnim_8411EE8 - .4byte gSpriteAffineAnim_8411F30 - .4byte gSpriteAffineAnim_8411F78 - .4byte gSpriteAffineAnim_8411FC0 - .4byte gSpriteAffineAnim_8412008 - .4byte gSpriteAffineAnim_8411E90 - .4byte gSpriteAffineAnim_8411E90 - .4byte gSpriteAffineAnim_8411E90 - .4byte gSpriteAffineAnim_8411E90 - .4byte gSpriteAffineAnim_8411EC0 - .4byte gSpriteAffineAnim_8411F08 - .4byte gSpriteAffineAnim_8411F50 - .4byte gSpriteAffineAnim_8411F98 - .4byte gSpriteAffineAnim_8411FE0 - .4byte gSpriteAffineAnim_8412028 - .4byte gSpriteAffineAnim_8411E90 - .4byte gSpriteAffineAnim_8411E90 - .4byte gSpriteAffineAnim_8411E90 - .4byte gSpriteAffineAnim_8411E90 - - .align 2 -gUnknown_084120A4:: @ 84120A4 - .4byte gPokeblockRed_Pal - .4byte gPokeblockBlue_Pal - .4byte gPokeblockPink_Pal - .4byte gPokeblockGreen_Pal - .4byte gPokeblockYellow_Pal - .4byte gPokeblockPurple_Pal - .4byte gPokeblockIndigo_Pal - .4byte gPokeblockBrown_Pal - .4byte gPokeblockLiteBlue_Pal - .4byte gPokeblockOlive_Pal - .4byte gPokeblockGray_Pal - .4byte gPokeblockBlack_Pal - .4byte gPokeblockWhite_Pal - .4byte gPokeblockGold_Pal - - .align 2 -gSpriteAffineAnim_84120DC:: @ 84120DC - obj_rot_scal_anim_frame 0xFF00, 0x100, 0, 0 - obj_rot_scal_anim_end - - .align 2 -gSpriteAffineAnimTable_84120EC:: @ 84120EC - .4byte gSpriteAffineAnim_84120DC - - .align 2 -gSpriteAffineAnim_84120F0:: @ 84120F0 - obj_rot_scal_anim_frame 0xFF00, 0x100, 0, 0 - obj_rot_scal_anim_frame 0x0, 0x0, -8, 1 - obj_rot_scal_anim_frame 0x0, 0x0, -8, 1 - obj_rot_scal_anim_frame 0x0, 0x0, -8, 1 - obj_rot_scal_anim_frame 0x0, 0x0, -8, 1 - obj_rot_scal_anim_frame 0x0, 0x0, 0, 8 - obj_rot_scal_anim_frame 0x0, 0x0, 16, 1 - obj_rot_scal_anim_frame 0x0, 0x0, 16, 1 - obj_rot_scal_anim_frame 0x0, 0x0, 16, 1 - obj_rot_scal_anim_frame 0xFF00, 0x100, 0, 0 - obj_rot_scal_anim_end - - .align 2 -gSpriteAffineAnim_8412148:: @ 8412148 - obj_rot_scal_anim_frame 0xFF00, 0x100, 0, 0 - obj_rot_scal_anim_frame 0x0, 0x0, 8, 1 - obj_rot_scal_anim_frame 0x0, 0x0, 8, 1 - obj_rot_scal_anim_frame 0x0, 0x0, 8, 1 - obj_rot_scal_anim_frame 0x0, 0x0, 8, 1 - obj_rot_scal_anim_frame 0x0, 0x0, 0, 8 - obj_rot_scal_anim_frame 0x0, 0x0, -16, 1 - obj_rot_scal_anim_frame 0x0, 0x0, -16, 1 - obj_rot_scal_anim_frame 0x0, 0x0, -16, 1 - obj_rot_scal_anim_frame 0xFF00, 0x100, 0, 0 - obj_rot_scal_anim_end - - .align 2 -gSpriteAffineAnimTable_84121A0:: @ 84121A0 - .4byte gSpriteAffineAnim_84120DC - - .align 2 -gSpriteAffineAnimTable_84121A4:: @ 84121A4 - .4byte gSpriteAffineAnim_84120F0 - - .align 2 -gSpriteAffineAnimTable_84121A8:: @ 84121A8 - .4byte gSpriteAffineAnim_8412148 - - .align 2 -gOamData_84121AC:: @ 84121AC - .2byte 0x0300 - .2byte 0x0000 - .2byte 0x0400 - - .align 2 -gSpriteAnim_84121B4:: @ 84121B4 - obj_image_anim_frame 0, 0 - obj_image_anim_end - - .align 2 -gSpriteAnimTable_84121BC:: @ 84121BC - .4byte gSpriteAnim_84121B4 - - .align 2 -gSpriteAffineAnim_84121C0:: @ 84121C0 - obj_rot_scal_anim_frame 0x100, 0x100, 0, 0 - obj_rot_scal_anim_frame 0xFFF8, 0xFFF8, 0, 1 - obj_rot_scal_anim_jump 1 - - .align 2 -gSpriteAffineAnimTable_84121D8:: @ 84121D8 - .4byte gSpriteAffineAnim_84121C0 - - .align 2 -gUnknown_084121DC:: @ 84121DC - obj_tiles gPokeblock_Gfx, 0x20, 14818 - - .align 2 -gSpriteTemplate_84121E4:: @ 84121E4 - spr_template 14818, 14818, gOamData_84121AC, gSpriteAnimTable_84121BC, NULL, gSpriteAffineAnimTable_84121D8, sub_81481B0 diff --git a/data/pokemon_icon.s b/data/pokemon_icon.s deleted file mode 100644 index ff5aa33dc..000000000 --- a/data/pokemon_icon.s +++ /dev/null @@ -1,92 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - -@ 83BBD20 - .include "data/graphics/pokemon/icon_table.inc" - -@ 83BC400 - .include "data/graphics/pokemon/icon_palette_indices.inc" - -@ 83BC5B8 - .include "data/graphics/pokemon/icon_palette_table.inc" - - .align 2 -gOamData_83BC5E8:: @ 83BC5E8 - .2byte 0x0000 - .2byte 0x8000 - .2byte 0x0400 - - .align 2 -gSpriteAnim_83BC5F0:: @ 83BC5F0 - obj_image_anim_frame 0, 6 - obj_image_anim_frame 1, 6 - obj_image_anim_jump 0 - - .align 2 -gSpriteAnim_83BC5FC:: @ 83BC5FC - obj_image_anim_frame 0, 8 - obj_image_anim_frame 1, 8 - obj_image_anim_jump 0 - - .align 2 -gSpriteAnim_83BC608:: @ 83BC608 - obj_image_anim_frame 0, 14 - obj_image_anim_frame 1, 14 - obj_image_anim_jump 0 - - .align 2 -gSpriteAnim_83BC614:: @ 83BC614 - obj_image_anim_frame 0, 22 - obj_image_anim_frame 1, 22 - obj_image_anim_jump 0 - - .align 2 -gSpriteAnim_83BC620:: @ 83BC620 - obj_image_anim_frame 0, 29 - obj_image_anim_frame 0, 29 - obj_image_anim_jump 0 - - .align 2 -gSpriteAnimTable_83BC62C:: @ 83BC62C - .4byte gSpriteAnim_83BC5F0 - .4byte gSpriteAnim_83BC5FC - .4byte gSpriteAnim_83BC608 - .4byte gSpriteAnim_83BC614 - .4byte gSpriteAnim_83BC620 - - .align 2 -gSpriteAffineAnim_83BC640:: @ 83BC640 - obj_rot_scal_anim_frame 0x0, 0x0, 0, 10 - obj_rot_scal_anim_end - - .align 2 -gSpriteAffineAnim_83BC650:: @ 83BC650 - obj_rot_scal_anim_frame 0xFFFE, 0xFFFE, 0, 122 - obj_rot_scal_anim_end - - .align 2 -gSpriteAffineAnimTable_83BC660:: @ 83BC660 - .4byte gSpriteAffineAnim_83BC640 - .4byte gSpriteAffineAnim_83BC650 - - .align 1 -gSpriteImageSizes:: @ 83BC668 - @ square - .2byte 0x20 @ 1×1 - .2byte 0x80 @ 2×2 - .2byte 0x200 @ 4×4 - .2byte 0x800 @ 8×8 - - @ horizontal rectangle - .2byte 0x40 @ 2×1 - .2byte 0x80 @ 4×1 - .2byte 0x100 @ 4×2 - .2byte 0x400 @ 8×4 - - @ vertical rectangle - .2byte 0x40 @ 1×2 - .2byte 0x80 @ 1×4 - .2byte 0x100 @ 2×4 - .2byte 0x400 @ 4×8 diff --git a/data/pokemon_menu.s b/data/pokemon_menu.s deleted file mode 100644 index 9e2ce2864..000000000 --- a/data/pokemon_menu.s +++ /dev/null @@ -1,82 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - - .align 2 -gPokemonMenuActions:: @ 839F494 - .4byte OtherText_Summary, PokemonMenu_Summary - .4byte OtherText_Switch2, PokemonMenu_Switch - .4byte OtherText_Item, PokemonMenu_Item - .4byte gOtherText_CancelNoTerminator, PokemonMenu_Cancel - .4byte OtherText_Give2, PokemonMenu_GiveItem - .4byte OtherText_Take2, PokemonMenu_TakeItem - .4byte OtherText_Take, PokemonMenu_TakeMail - .4byte OtherText_Mail, PokemonMenu_Mail - .4byte OtherText_Read2, PokemonMenu_ReadMail - .4byte gOtherText_CancelNoTerminator, PokemonMenu_CancelSubmenu - .4byte gMoveNames + 13 * MOVE_CUT, PokemonMenu_FieldMove - .4byte gMoveNames + 13 * MOVE_FLASH, PokemonMenu_FieldMove - .4byte gMoveNames + 13 * MOVE_ROCK_SMASH, PokemonMenu_FieldMove - .4byte gMoveNames + 13 * MOVE_STRENGTH, PokemonMenu_FieldMove - .4byte gMoveNames + 13 * MOVE_SURF, PokemonMenu_FieldMove - .4byte gMoveNames + 13 * MOVE_FLY, PokemonMenu_FieldMove - .4byte gMoveNames + 13 * MOVE_DIVE, PokemonMenu_FieldMove - .4byte gMoveNames + 13 * MOVE_WATERFALL, PokemonMenu_FieldMove - .4byte gMoveNames + 13 * MOVE_TELEPORT, PokemonMenu_FieldMove - .4byte gMoveNames + 13 * MOVE_DIG, PokemonMenu_FieldMove - .4byte gMoveNames + 13 * MOVE_SECRET_POWER, PokemonMenu_FieldMove - .4byte gMoveNames + 13 * MOVE_MILK_DRINK, PokemonMenu_FieldMove - .4byte gMoveNames + 13 * MOVE_SOFT_BOILED, PokemonMenu_FieldMove - .4byte gMoveNames + 13 * MOVE_SWEET_SCENT, PokemonMenu_FieldMove - - .align 1 -gUnknown_0839F554:: @ 839F554 - .2byte MOVE_CUT - .2byte MOVE_FLASH - .2byte MOVE_ROCK_SMASH - .2byte MOVE_STRENGTH - .2byte MOVE_SURF - .2byte MOVE_FLY - .2byte MOVE_DIVE - .2byte MOVE_WATERFALL - .2byte MOVE_TELEPORT - .2byte MOVE_DIG - .2byte MOVE_SECRET_POWER - .2byte MOVE_MILK_DRINK - .2byte MOVE_SOFT_BOILED - .2byte MOVE_SWEET_SCENT - .2byte 0xFF - -Unknown_39F572: @ 839F572 - .byte 4, 5, 9, 0 - - .align 2 -gUnknown_0839F578:: @ 839F578 - .byte 3, 6, 0, 0 - .4byte Unknown_39F572 - -Unknown_39F580: @ 839F580 - .byte 8, 6, 9, 0 - - .align 2 -gUnknown_0839F584:: @ 839F584 - .byte 3, 9, 0, 0 - .4byte Unknown_39F580 - - .align 2 -gFieldMoveFuncs:: @ 839F58C - .4byte SetUpFieldMove_Cut, 0x6 - .4byte SetUpFieldMove_Flash, 0x9 - .4byte SetUpFieldMove_RockSmash, 0x9 - .4byte SetUpFieldMove_Strength, 0x9 - .4byte SetUpFieldMove_Surf, 0x7 - .4byte SetUpFieldMove_Fly, 0x9 - .4byte SetUpFieldMove_Dive, 0x9 - .4byte SetUpFieldMove_Waterfall, 0x9 - .4byte SetUpFieldMove_Teleport, 0x9 - .4byte SetUpFieldMove_Dig, 0x9 - .4byte SetUpFieldMove_SecretPower, 0x9 - .4byte SetUpFieldMove_SoftBoiled, 0x10 - .4byte SetUpFieldMove_SoftBoiled, 0x10 - .4byte SetUpFieldMove_SweetScent, 0x9 diff --git a/data/record_mixing.s b/data/record_mixing.s deleted file mode 100644 index 8b46e1ed3..000000000 --- a/data/record_mixing.s +++ /dev/null @@ -1,68 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - - .align 2 -recordMixingSecretBases:: @ 83D026C - @ gSaveBlock1.secretBases - .4byte gSaveBlock1 + 0x1A08 - - .align 2 -recordMixingTvShows:: @ 83D0270 - @ gSaveBlock1.tvShows - .4byte gSaveBlock1 + 0x2738 - - .align 2 -gUnknown_083D0274:: @ 83D0274 - .4byte gSaveBlock1 + 0x2ABC - - .align 2 -gUnknown_083D0278:: @ 83D0278 - .4byte gSaveBlock1 + 0x2D94 - - .align 2 -recordMixingEasyChatPairs:: @ 83D027C - @ gSaveBlock1.easyChatPairs - .4byte gSaveBlock1 + 0x2DD4 - - .align 2 -gUnknown_083D0280:: @ 83D0280 - .4byte gUnknown_02038738 - - .align 2 -gUnknown_083D0284:: @ 83D0284 - .4byte gSaveBlock2+0xA8 - -gUnknown_083D0288:: @ 83D0288 - .byte 1, 0 - -gUnknown_083D028A:: @ 83D028A - .byte 1, 2, 0 - .byte 2, 0, 1 - -gUnknown_083D0290:: @ 83D0290 - .byte 1, 0, 3, 2 - .byte 3, 0, 1, 2 - .byte 2, 0, 3, 1 - .byte 1, 3, 0, 2 - .byte 2, 3, 0, 1 - .byte 3, 2, 0, 1 - .byte 1, 2, 3, 0 - .byte 2, 3, 1, 0 - .byte 3, 2, 1, 0 - -gUnknown_083D02B4:: @ 83D02B4 - .byte 0, 1 - .byte 1, 2 - .byte 2, 0 - -gUnknown_083D02BA:: @ 83D02BA - .byte 0, 1 - .byte 2, 3 - - .byte 0, 2 - .byte 1, 3 - - .byte 0, 3 - .byte 2, 1 diff --git a/data/region_map.s b/data/region_map.s deleted file mode 100644 index d4d13f194..000000000 --- a/data/region_map.s +++ /dev/null @@ -1,259 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - - .align 2 -gPokenavCursor_Pal:: - .incbin "graphics/pokenav/cursor.gbapal" - - .align 2 -gUnknown_083E5AF0:: @ 83E5AF0 - .incbin "graphics/pokenav/cursor_small.4bpp.lz" - - .align 2 -gUnknown_083E5B34:: @ 83E5B34 - .incbin "graphics/pokenav/cursor_large.4bpp.lz" - - .align 2 -gRegionMapBrendanIconPalette:: @ 83E5C20 - .incbin "graphics/pokenav/brendan_icon.gbapal" - - .align 2 -gRegionMapBrendanIconTiles:: @ 83E5C40 - .incbin "graphics/pokenav/brendan_icon.4bpp" - - .align 2 -gRegionMapMayIconPalette:: @ 83E5CC0 - .incbin "graphics/pokenav/may_icon.gbapal" - - .align 2 -gRegionMapMayIconTiles:: @ 83E5CE0 - .incbin "graphics/pokenav/may_icon.4bpp" - - .align 2 -gUnknown_083E5D60:: @ 83E5D60 - .incbin "graphics/pokenav/region_map.gbapal", 0xE0, 0x40 - - .align 2 -gUnknown_083E5DA0:: @ 83E5DA0 - .incbin "graphics/pokenav/region_map.8bpp.lz" - - .align 2 -gUnknown_083E6B04:: @ 83E6B04 - .incbin "graphics/pokenav/region_map_map.bin.lz" - -@ 83E6E50 - .include "data/region_map_sections.inc" - -@ 83E6FF4 - .include "data/region_map_locations.inc" - -gUnknown_083E7684:: @ 83E7684 - .2byte 50, 39 - .2byte 51, 41 - .2byte 52, 42 - .2byte 53, 43 - .2byte 54, 14 - .2byte 69, 43 - .2byte 66, 12 - .2byte 79, 49 - .2byte 59, 19 - .2byte 76, 27 - .2byte 65, 37 - .2byte 85, 46 - .2byte 88, 88 - - .align 2 -gOamData_83E76B8:: @ 83E76B8 - .2byte 0x0000 - .2byte 0x4000 - .2byte 0x0400 - - .align 2 -gSpriteAnim_83E76C0:: @ 83E76C0 - obj_image_anim_frame 0, 20 - obj_image_anim_frame 4, 20 - obj_image_anim_jump 0 - - .align 2 -gSpriteAnim_83E76CC:: @ 83E76CC - obj_image_anim_frame 0, 10 - obj_image_anim_frame 16, 10 - obj_image_anim_frame 32, 10 - obj_image_anim_frame 16, 10 - obj_image_anim_jump 0 - - .align 2 -gSpriteAnimTable_83E76E0:: @ 83E76E0 - .4byte gSpriteAnim_83E76C0 - .4byte gSpriteAnim_83E76CC - - .align 2 -gUnknown_083E76E8:: @ 83E76E8 - obj_pal gPokenavCursor_Pal, 0x0000 - - .align 2 -gSpriteTemplate_83E76F0:: @ 83E76F0 - spr_template 0, 0, gOamData_83E76B8, gSpriteAnimTable_83E76E0, NULL, gDummySpriteAffineAnimTable, sub_80FBAF0 - - .align 2 -gOamData_083E7708:: @ 83E7708 - .2byte 0x0000 - .2byte 0x4000 - .2byte 0x0800 - - .align 2 -gSpriteAnim_83E7710: @ 83E7710 - obj_image_anim_frame 0, 5 - obj_image_anim_end - -gSpriteAnimTable_083E7718:: @ 83E7718 ANIMCMD - .4byte gSpriteAnim_83E7710 - -gUnknown_083E771C:: @ 83E771C - .incbin "graphics/pokenav/map_frame.gbapal" - -gUnknown_083E773C:: @ 83E773C - .incbin "graphics/pokenav/map_frame.4bpp.lz" - -gUnknown_083E7774:: @ 83E7774 - .incbin "graphics/pokenav/map_frame.bin.lz" - - .align 2 -gPokenavMapMisc_Pal:: - .incbin "graphics/pokenav/map_misc.gbapal" - -gUnknown_083E784C:: @ 83E784C - .incbin "graphics/pokenav/map_misc.4bpp.lz" - -gUnknown_083E7920:: @ 83E7920 - .byte 0, 9, 1 - .byte 0, 10, 14 - .byte 0, 11, 15 - .byte 0, 12, 16 - .byte 0, 13, 17 - .byte 0, 14, 18 - .byte 0, 15, 19 - .byte 0, 0, 3 - .byte 0, 1, 4 - .byte 0, 2, 5 - .byte 0, 3, 6 - .byte 0, 4, 7 - .byte 0, 5, 8 - .byte 0, 6, 9 - .byte 0, 7, 10 - .byte 0, 8, 11 - .byte 0, 16, 0 - .byte 0, 17, 0 - .byte 0, 18, 0 - .byte 0, 19, 0 - .byte 0, 20, 0 - .byte 0, 21, 0 - .byte 0, 22, 0 - .byte 0, 23, 0 - .byte 0, 24, 0 - .byte 0, 25, 0 - .byte 0, 26, 0 - .byte 0, 27, 0 - .byte 0, 28, 0 - .byte 0, 29, 0 - .byte 0, 30, 0 - .byte 0, 31, 0 - .byte 0, 32, 0 - .byte 0, 33, 0 - .byte 0, 34, 0 - .byte 0, 35, 0 - .byte 0, 36, 0 - .byte 0, 37, 0 - .byte 0, 38, 0 - .byte 0, 39, 0 - .byte 0, 40, 0 - .byte 0, 41, 0 - .byte 0, 42, 0 - .byte 0, 43, 0 - .byte 0, 44, 0 - .byte 0, 45, 0 - .byte 0, 46, 0 - .byte 0, 47, 0 - .byte 0, 48, 0 - .byte 0, 49, 0 - - .align 2 -Unknown_3E79B8: @ 83E79B8 - .4byte OtherText_PokeLeague - .4byte OtherText_PokeCenter - - .align 2 -gUnknown_083E79C0:: @ 83E79C0 - .4byte Unknown_3E79B8 - .2byte 0xF - .2byte 0x854 - -@ XXX: what is this? - .align 2 - .4byte 0x2000000 - - .align 2 -gUnknown_083E79CC:: @ 83E79CC - obj_pal gPokenavMapMisc_Pal, 0x0002 - - .align 2 -gUnknown_083E79D4:: @ 83E79D4 - .2byte 2120, 58 - .2byte 65535, 88 - - .align 2 -gOamData_83E79DC:: @ 83E79DC - .2byte 0x0000 - .2byte 0x0000 - .2byte 0x0800 - - .align 2 -gSpriteAnim_83E79E4:: @ 83E79E4 - obj_image_anim_frame 0, 5 - obj_image_anim_end - - .align 2 -gSpriteAnim_83E79EC:: @ 83E79EC - obj_image_anim_frame 1, 5 - obj_image_anim_end - - .align 2 -gSpriteAnim_83E79F4:: @ 83E79F4 - obj_image_anim_frame 3, 5 - obj_image_anim_end - - .align 2 -gSpriteAnim_83E79FC:: @ 83E79FC - obj_image_anim_frame 5, 5 - obj_image_anim_end - - .align 2 -gSpriteAnim_83E7A04:: @ 83E7A04 - obj_image_anim_frame 6, 5 - obj_image_anim_end - - .align 2 -gSpriteAnim_83E7A0C:: @ 83E7A0C - obj_image_anim_frame 8, 5 - obj_image_anim_end - - .align 2 -gSpriteAnim_83E7A14:: @ 83E7A14 - obj_image_anim_frame 10, 5 - obj_image_anim_end - - .align 2 -gSpriteAnimTable_83E7A1C:: @ 83E7A1C - .4byte gSpriteAnim_83E79E4 - .4byte gSpriteAnim_83E79EC - .4byte gSpriteAnim_83E79F4 - .4byte gSpriteAnim_83E79FC - .4byte gSpriteAnim_83E7A04 - .4byte gSpriteAnim_83E7A0C - .4byte gSpriteAnim_83E7A14 - - .align 2 -gSpriteTemplate_83E7A38:: @ 83E7A38 - spr_template 2, 2, gOamData_83E79DC, gSpriteAnimTable_83E7A1C, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy diff --git a/data/region_map_locations.inc b/data/region_map_locations.inc deleted file mode 100644 index 389b5aa0c..000000000 --- a/data/region_map_locations.inc +++ /dev/null @@ -1,327 +0,0 @@ -gMapName_LittlerootTown: @ 83E6FF4 - .string "LITTLEROOT{NAME_END} TOWN$" - -gMapName_OldaleTown: @ 83E7006 - .string "OLDALE{NAME_END} TOWN$" - -gMapName_DewfordTown: @ 83E7014 - .string "DEWFORD{NAME_END} TOWN$" - -gMapName_LavaridgeTown: @ 83E7023 - .string "LAVARIDGE{NAME_END} TOWN$" - -gMapName_FallarborTown: @ 83E7034 - .string "FALLARBOR{NAME_END} TOWN$" - -gMapName_VerdanturfTown: @ 83E7045 - .string "VERDANTURF{NAME_END} TOWN$" - -gMapName_PacifidlogTown: @ 83E7057 - .string "PACIFIDLOG{NAME_END} TOWN$" - -gMapName_PetalburgCity: @ 83E7069 - .string "PETALBURG{NAME_END} CITY$" - -gMapName_SlateportCity: @ 83E707A - .string "SLATEPORT{NAME_END} CITY$" - -gMapName_MauvilleCity: @ 83E708B - .string "MAUVILLE{NAME_END} CITY$" - -gMapName_RustboroCity: @ 83E709B - .string "RUSTBORO{NAME_END} CITY$" - -gMapName_FortreeCity: @ 83E70AB - .string "FORTREE{NAME_END} CITY$" - -gMapName_LilycoveCity: @ 83E70BA - .string "LILYCOVE{NAME_END} CITY$" - -gMapName_MossdeepCity: @ 83E70CA - .string "MOSSDEEP{NAME_END} CITY$" - -gMapName_SootopolisCity: @ 83E70DA - .string "SOOTOPOLIS{NAME_END} CITY$" - -gMapName_EverGrandeCity: @ 83E70EC - .string "EVER GRANDE{NAME_END} CITY$" - -gMapName_Route101: @ 83E70FF - .string "ROUTE 101$" - -gMapName_Route102: @ 83E7109 - .string "ROUTE 102$" - -gMapName_Route103: @ 83E7113 - .string "ROUTE 103$" - -gMapName_Route104: @ 83E711D - .string "ROUTE 104$" - -gMapName_Route105: @ 83E7127 - .string "ROUTE 105$" - -gMapName_Route106: @ 83E7131 - .string "ROUTE 106$" - -gMapName_Route107: @ 83E713B - .string "ROUTE 107$" - -gMapName_Route108: @ 83E7145 - .string "ROUTE 108$" - -gMapName_Route109: @ 83E714F - .string "ROUTE 109$" - -gMapName_Route110: @ 83E7159 - .string "ROUTE 110$" - -gMapName_Route111: @ 83E7163 - .string "ROUTE 111$" - -gMapName_Route112: @ 83E716D - .string "ROUTE 112$" - -gMapName_Route113: @ 83E7177 - .string "ROUTE 113$" - -gMapName_Route114: @ 83E7181 - .string "ROUTE 114$" - -gMapName_Route115: @ 83E718B - .string "ROUTE 115$" - -gMapName_Route116: @ 83E7195 - .string "ROUTE 116$" - -gMapName_Route117: @ 83E719F - .string "ROUTE 117$" - -gMapName_Route118: @ 83E71A9 - .string "ROUTE 118$" - -gMapName_Route119: @ 83E71B3 - .string "ROUTE 119$" - -gMapName_Route120: @ 83E71BD - .string "ROUTE 120$" - -gMapName_Route121: @ 83E71C7 - .string "ROUTE 121$" - -gMapName_Route122: @ 83E71D1 - .string "ROUTE 122$" - -gMapName_Route123: @ 83E71DB - .string "ROUTE 123$" - -gMapName_Route124: @ 83E71E5 - .string "ROUTE 124$" - -gMapName_Route125: @ 83E71EF - .string "ROUTE 125$" - -gMapName_Route126: @ 83E71F9 - .string "ROUTE 126$" - -gMapName_Route127: @ 83E7203 - .string "ROUTE 127$" - -gMapName_Route128: @ 83E720D - .string "ROUTE 128$" - -gMapName_Route129: @ 83E7217 - .string "ROUTE 129$" - -gMapName_Route130: @ 83E7221 - .string "ROUTE 130$" - -gMapName_Route131: @ 83E722B - .string "ROUTE 131$" - -gMapName_Route132: @ 83E7235 - .string "ROUTE 132$" - -gMapName_Route133: @ 83E723F - .string "ROUTE 133$" - -gMapName_Route134: @ 83E7249 - .string "ROUTE 134$" - -gMapName_Underwater: @ 83E7253 - .string "UNDERWATER$" - -gMapName_GraniteCave: @ 83E725E - .string "GRANITE CAVE$" - -gMapName_MtChimney: @ 83E726B - .string "MT. CHIMNEY$" - -gMapName_SafariZone: @ 83E7277 - .string "SAFARI ZONE$" - -gMapName_BattleTower: @ 83E7283 - .string "BATTLE TOWER$" - -gMapName_PetalburgWoods: @ 83E7290 - .string "PETALBURG WOODS$" - -gMapName_RusturfTunnel: @ 83E72A0 - .string "RUSTURF TUNNEL$" - -gMapName_AbandonedShip: @ 83E72AF - .string "ABANDONED SHIP$" - -gMapName_NewMauville: @ 83E72BE - .string "NEW MAUVILLE$" - -gMapName_MeteorFalls: @ 83E72CB - .string "METEOR FALLS$" - -gMapName_MtPyre: @ 83E72D8 - .string "MT. PYRE$" - -gMapName_EvilTeamHideout: @ 83E72E1 - .string "{EVIL_TEAM} HIDEOUT$" - -gMapName_ShoalCave: @ 83E72EC - .string "SHOAL CAVE$" - -gMapName_SeafloorCavern: @ 83E72F7 - .string "SEAFLOOR CAVERN$" - -gMapName_VictoryRoad: @ 83E7307 - .string "VICTORY ROAD$" - -gMapName_MirageIsland: @ 83E7314 - .string "MIRAGE ISLAND$" - -gMapName_CaveOfOrigin: @ 83E7322 - .string "CAVE OF ORIGIN$" - -gMapName_SouthernIsland: @ 83E7331 - .string "SOUTHERN ISLAND$" - -gMapName_FieryPath: @ 83E7341 - .string "FIERY PATH$" - -gMapName_JaggedPass: @ 83E734C - .string "JAGGED PASS$" - -gMapName_SealedChamber: @ 83E7358 - .string "SEALED CHAMBER$" - -gMapName_ScorchedSlab: @ 83E7367 - .string "SCORCHED SLAB$" - -gMapName_IslandCave: @ 83E7375 - .string "ISLAND CAVE$" - -gMapName_DesertRuins: @ 83E7381 - .string "DESERT RUINS$" - -gMapName_AncientTomb: @ 83E738E - .string "ANCIENT TOMB$" - -gMapName_InsideOfTruck: @ 83E739B - .string "INSIDE OF TRUCK$" - -gMapName_SkyPillar: @ 83E73AB - .string "SKY PILLAR$" - -gMapName_SecretBase: @ 83E73B6 - .string "SECRET BASE$" - -gMapName_None: @ 83E73C2 - .string "$" - - .align 2 -gRegionMapLocations:: @ 83E73C4 - region_map_location 4, 11, 1, 1, LittlerootTown - region_map_location 4, 9, 1, 1, OldaleTown - region_map_location 2, 14, 1, 1, DewfordTown - region_map_location 5, 3, 1, 1, LavaridgeTown - region_map_location 3, 0, 1, 1, FallarborTown - region_map_location 4, 6, 1, 1, VerdanturfTown - region_map_location 17, 10, 1, 1, PacifidlogTown - region_map_location 1, 9, 1, 1, PetalburgCity - region_map_location 8, 10, 1, 2, SlateportCity - region_map_location 8, 6, 2, 1, MauvilleCity - region_map_location 0, 5, 1, 2, RustboroCity - region_map_location 12, 0, 1, 1, FortreeCity - region_map_location 18, 3, 2, 1, LilycoveCity - region_map_location 24, 5, 2, 1, MossdeepCity - region_map_location 21, 7, 1, 1, SootopolisCity - region_map_location 27, 8, 1, 2, EverGrandeCity - region_map_location 4, 10, 1, 1, Route101 - region_map_location 2, 9, 2, 1, Route102 - region_map_location 4, 8, 4, 1, Route103 - region_map_location 0, 7, 1, 3, Route104 - region_map_location 0, 10, 1, 3, Route105 - region_map_location 0, 13, 2, 1, Route106 - region_map_location 3, 14, 3, 1, Route107 - region_map_location 6, 14, 2, 1, Route108 - region_map_location 8, 12, 1, 3, Route109 - region_map_location 8, 7, 1, 3, Route110 - region_map_location 8, 0, 1, 6, Route111 - region_map_location 6, 3, 2, 1, Route112 - region_map_location 4, 0, 4, 1, Route113 - region_map_location 1, 0, 2, 3, Route114 - region_map_location 0, 2, 1, 3, Route115 - region_map_location 1, 5, 4, 1, Route116 - region_map_location 5, 6, 3, 1, Route117 - region_map_location 10, 6, 2, 1, Route118 - region_map_location 11, 0, 1, 6, Route119 - region_map_location 13, 0, 1, 4, Route120 - region_map_location 14, 3, 4, 1, Route121 - region_map_location 16, 4, 1, 2, Route122 - region_map_location 12, 6, 5, 1, Route123 - region_map_location 20, 3, 4, 3, Route124 - region_map_location 24, 3, 2, 2, Route125 - region_map_location 20, 6, 3, 3, Route126 - region_map_location 23, 6, 3, 3, Route127 - region_map_location 23, 9, 4, 1, Route128 - region_map_location 24, 10, 2, 1, Route129 - region_map_location 21, 10, 3, 1, Route130 - region_map_location 18, 10, 3, 1, Route131 - region_map_location 15, 10, 2, 1, Route132 - region_map_location 12, 10, 3, 1, Route133 - region_map_location 9, 10, 3, 1, Route134 - region_map_location 20, 3, 4, 3, Underwater - region_map_location 20, 6, 3, 3, Underwater - region_map_location 23, 6, 3, 3, Underwater - region_map_location 23, 9, 4, 1, Underwater - region_map_location 21, 7, 1, 1, Underwater - region_map_location 1, 13, 1, 1, GraniteCave - region_map_location 6, 2, 1, 1, MtChimney - region_map_location 16, 2, 1, 1, SafariZone - region_map_location 22, 12, 1, 1, BattleTower - region_map_location 0, 8, 1, 1, PetalburgWoods - region_map_location 2, 5, 1, 1, RusturfTunnel - region_map_location 6, 14, 1, 1, AbandonedShip - region_map_location 8, 7, 1, 1, NewMauville - region_map_location 0, 3, 1, 1, MeteorFalls - region_map_location 1, 2, 1, 1, MeteorFalls - region_map_location 16, 4, 1, 1, MtPyre - region_map_location 19, 3, 1, 1, EvilTeamHideout - region_map_location 24, 4, 1, 1, ShoalCave - region_map_location 24, 9, 1, 1, SeafloorCavern - region_map_location 24, 9, 1, 1, Underwater - region_map_location 27, 9, 1, 1, VictoryRoad - region_map_location 17, 10, 1, 1, MirageIsland - region_map_location 21, 7, 1, 1, CaveOfOrigin - region_map_location 12, 14, 1, 1, SouthernIsland - region_map_location 6, 3, 1, 1, FieryPath - region_map_location 7, 3, 1, 1, FieryPath - region_map_location 6, 3, 1, 1, JaggedPass - region_map_location 7, 2, 1, 1, JaggedPass - region_map_location 11, 10, 1, 1, SealedChamber - region_map_location 11, 10, 1, 1, Underwater - region_map_location 13, 0, 1, 1, ScorchedSlab - region_map_location 0, 10, 1, 1, IslandCave - region_map_location 8, 3, 1, 1, DesertRuins - region_map_location 13, 2, 1, 1, AncientTomb - region_map_location 0, 0, 1, 1, InsideOfTruck - region_map_location 19, 10, 1, 1, SkyPillar - region_map_location 0, 0, 1, 1, SecretBase - region_map_location 0, 0, 1, 1, None diff --git a/data/region_map_sections.inc b/data/region_map_sections.inc deleted file mode 100644 index 6336eac0e..000000000 --- a/data/region_map_sections.inc +++ /dev/null @@ -1,16 +0,0 @@ -gRegionMapSections:: @ 83E6E50 - .byte 0x58,0x1D,0x1D,0x04,0x1C,0x1C,0x1C,0x1C,0x1A,0x58,0x58,0x22,0x0B,0x23,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58 - .byte 0x58,0x1D,0x58,0x58,0x58,0x58,0x38,0x38,0x1A,0x58,0x58,0x22,0x58,0x23,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58 - .byte 0x1E,0x1D,0x58,0x58,0x58,0x58,0x38,0x38,0x1A,0x58,0x58,0x22,0x58,0x23,0x58,0x58,0x39,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58 - .byte 0x1E,0x58,0x58,0x58,0x58,0x03,0x1B,0x1B,0x1A,0x58,0x58,0x22,0x58,0x23,0x24,0x24,0x24,0x24,0x0C,0x0C,0x27,0x27,0x27,0x27,0x28,0x28,0x58,0x58 - .byte 0x1E,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x1A,0x58,0x58,0x22,0x58,0x58,0x58,0x58,0x25,0x58,0x58,0x58,0x27,0x27,0x27,0x27,0x28,0x28,0x58,0x58 - .byte 0x0A,0x1F,0x1F,0x1F,0x1F,0x58,0x58,0x58,0x1A,0x58,0x58,0x22,0x58,0x58,0x58,0x58,0x25,0x58,0x58,0x58,0x27,0x27,0x27,0x27,0x0D,0x0D,0x58,0x58 - .byte 0x0A,0x58,0x58,0x58,0x05,0x20,0x20,0x20,0x09,0x09,0x21,0x21,0x26,0x26,0x26,0x26,0x26,0x58,0x58,0x58,0x29,0x29,0x29,0x2A,0x2A,0x2A,0x58,0x58 - .byte 0x13,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x19,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x29,0x0E,0x29,0x2A,0x2A,0x2A,0x58,0x58 - .byte 0x13,0x58,0x58,0x58,0x12,0x12,0x12,0x12,0x19,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x29,0x29,0x29,0x2A,0x2A,0x2A,0x58,0x0F - .byte 0x13,0x07,0x11,0x11,0x01,0x58,0x58,0x58,0x19,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x2B,0x2B,0x2B,0x2B,0x0F - .byte 0x14,0x58,0x58,0x58,0x10,0x58,0x58,0x58,0x08,0x31,0x31,0x31,0x30,0x30,0x30,0x2F,0x2F,0x06,0x2E,0x2E,0x2E,0x2D,0x2D,0x2D,0x2C,0x2C,0x58,0x58 - .byte 0x14,0x58,0x58,0x58,0x00,0x58,0x58,0x58,0x08,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58 - .byte 0x14,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x18,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x3A,0x58,0x58,0x58,0x58,0x58 - .byte 0x15,0x15,0x15,0x58,0x58,0x58,0x58,0x58,0x18,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58 - .byte 0x58,0x58,0x02,0x16,0x16,0x16,0x17,0x17,0x18,0x58,0x58,0x58,0x49,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58 diff --git a/data/rom4.s b/data/rom4.s deleted file mode 100644 index 6f883c64c..000000000 --- a/data/rom4.s +++ /dev/null @@ -1,66 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - - .align 2 -gDummyWarpData:: @ 8216624 - .byte -1 - .byte -1 - .byte -1 - .space 1 - .2byte -1 - .2byte -1 - -@ unused, unknown data - .byte 0xB0, 0x04, 0x00, 0x00 - .byte 0x10, 0x0E, 0x00, 0x00 - .byte 0xB0, 0x04, 0x00, 0x00 - .byte 0x60, 0x09, 0x00, 0x00 - .byte 0x32, 0x00, 0x00, 0x00 - .byte 0x50, 0x00, 0x00, 0x00 - .byte 0xD4, 0xFF, 0xFF, 0xFF - .byte 0x2C, 0x00, 0x00, 0x00 - - .align 2 -gUnknown_0821664C:: @ 821664C - .4byte 0, 0 - .4byte 0, 1 - .4byte 0, -1 - .4byte -1, 0 - .4byte 1, 0 - .4byte -1, 1 - .4byte 1, 1 - .4byte -1, -1 - .4byte 1, -1 - - .align 2 -gUnknown_08216694:: @ 8216694 - .4byte REG_WIN0H - .4byte ((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1 - .4byte 1 - - .align 2 -gUnknown_082166A0:: @ 82166A0 - .4byte sub_8055C68 - .4byte sub_8055C88 - .4byte sub_8055C8C - - .align 2 -gUnknown_082166AC:: @ 82166AC - .4byte sub_8055CAC - .4byte sub_8055CB0 - .4byte sub_8055CB0 - .4byte sub_8055CB0 - .4byte sub_8055CB0 - .4byte sub_8055CAC - .4byte sub_8055CAC - .4byte sub_8055D18 - .4byte sub_8055D18 - .4byte sub_8055D18 - .4byte sub_8055D18 - - .align 2 -gUnknown_082166D8:: @ 82166D8 - .4byte sub_8055D30 - .4byte sub_8055D38 diff --git a/data/rom_8080874.s b/data/rom_8080874.s deleted file mode 100644 index 220ec5f96..000000000 --- a/data/rom_8080874.s +++ /dev/null @@ -1,18 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - - .align 1 -gUnknown_0839ACDC:: @ 839ACDC - .2byte 0xC8, 0x48, 0x38, 0x28, 0x18, 0x0 - - .align 2 -gUnknown_0839ACE8:: @ 839ACE8 - .4byte 4 - - .align 2 -gUnknown_0839ACEC:: @ 839ACEC - .4byte REG_WIN0H - .4byte ((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1 - .4byte 1 diff --git a/data/script_cmd_table.inc b/data/script_cmd_table.inc index a68f2ca8d..b6b7401f3 100644 --- a/data/script_cmd_table.inc +++ b/data/script_cmd_table.inc @@ -1,203 +1,203 @@ .align 2 gScriptCmdTable:: @ 814AE30 - .4byte ScrCmd_snop - .4byte ScrCmd_snop1 - .4byte ScrCmd_end - .4byte ScrCmd_return - .4byte ScrCmd_call - .4byte ScrCmd_jump - .4byte ScrCmd_jumpif - .4byte ScrCmd_callif - .4byte ScrCmd_jumpstd - .4byte ScrCmd_callstd - .4byte ScrCmd_jumpstdif - .4byte ScrCmd_callstdif - .4byte ScrCmd_jumpram - .4byte ScrCmd_die - .4byte ScrCmd_setbyte - .4byte ScrCmd_loadptr - .4byte ScrCmd_setbufferbyte - .4byte ScrCmd_writebytetooffset - .4byte ScrCmd_loadbytefrompointer - .4byte ScrCmd_setptrbyte - .4byte ScrCmd_copybuffers - .4byte ScrCmd_copybyte - .4byte ScrCmd_setvar - .4byte ScrCmd_addvar - .4byte ScrCmd_subvar - .4byte ScrCmd_copyvar - .4byte ScrCmd_setorcopyvar - .4byte ScrCmd_comparebuffers - .4byte ScrCmd_comparebuffertobyte - .4byte ScrCmd_comparebuffertoptrbyte - .4byte ScrCmd_compareptrbytetobuffer - .4byte ScrCmd_compareptrbytetobyte - .4byte ScrCmd_compareptrbytes - .4byte ScrCmd_compare - .4byte ScrCmd_comparevars - .4byte ScrCmd_callasm - .4byte ScrCmd_jumpasm - .4byte ScrCmd_special - .4byte ScrCmd_specialval - .4byte ScrCmd_waitstate - .4byte ScrCmd_pause - .4byte ScrCmd_setflag - .4byte ScrCmd_clearflag - .4byte ScrCmd_checkflag - .4byte ScrCmd_compareflags - .4byte ScrCmd_checkdailyflags - .4byte ScrCmd_resetvars - .4byte ScrCmd_playsfx - .4byte ScrCmd_checksound - .4byte ScrCmd_fanfare - .4byte ScrCmd_waitfanfare - .4byte ScrCmd_playmusic - .4byte ScrCmd_playmusicbattle - .4byte ScrCmd_fadedefault - .4byte ScrCmd_fademusic - .4byte ScrCmd_fadeout - .4byte ScrCmd_fadein - .4byte ScrCmd_warp - .4byte ScrCmd_warpmuted - .4byte ScrCmd_warpwalk - .4byte ScrCmd_warphole - .4byte ScrCmd_warpteleport - .4byte ScrCmd_warp3 - .4byte ScrCmd_warpplace - .4byte ScrCmd_warp4 - .4byte ScrCmd_warp5 - .4byte ScrCmd_getplayerxy - .4byte ScrCmd_countpokemon - .4byte ScrCmd_additem - .4byte ScrCmd_removeitem - .4byte ScrCmd_checkitemspace - .4byte ScrCmd_checkitem - .4byte ScrCmd_checkitemtype - .4byte ScrCmd_addpcitem - .4byte ScrCmd_checkpcitem - .4byte ScrCmd_adddecor - .4byte ScrCmd_removedecor - .4byte ScrCmd_testdecor - .4byte ScrCmd_checkdecor - .4byte ScrCmd_move - .4byte ScrCmd_movecoords - .4byte ScrCmd_waitmove - .4byte ScrCmd_waitmovexy - .4byte ScrCmd_disappear - .4byte ScrCmd_disappearxy - .4byte ScrCmd_reappear - .4byte ScrCmd_reappearxy - .4byte ScrCmd_movesprite - .4byte ScrCmd_spritevisible - .4byte ScrCmd_spriteinvisible - .4byte ScrCmd_faceplayer - .4byte ScrCmd_spriteface - .4byte ScrCmd_trainerbattle - .4byte ScrCmd_reptrainerbattle - .4byte ScrCmd_endtrainerbattle - .4byte ScrCmd_endtrainerbattle2 - .4byte ScrCmd_checktrainerflag - .4byte ScrCmd_cleartrainerflag - .4byte ScrCmd_settrainerflag - .4byte ScrCmd_movespriteperm - .4byte ScrCmd_moveoffscreen - .4byte ScrCmd_spritebehave - .4byte ScrCmd_waittext - .4byte ScrCmd_message - .4byte ScrCmd_closebutton - .4byte ScrCmd_lockall - .4byte ScrCmd_lock - .4byte ScrCmd_releaseall - .4byte ScrCmd_release - .4byte ScrCmd_waitbutton - .4byte ScrCmd_yesnobox - .4byte ScrCmd_multichoice - .4byte ScrCmd_multichoicedef - .4byte ScrCmd_multichoicerow - .4byte ScrCmd_showbox - .4byte ScrCmd_hidebox - .4byte ScrCmd_clearbox - .4byte ScrCmd_showpokepic - .4byte ScrCmd_hidepokepic - .4byte ScrCmd_showcontestwinner - .4byte ScrCmd_braillemsg - .4byte ScrCmd_givepokemon - .4byte ScrCmd_giveegg - .4byte ScrCmd_setpokemove - .4byte ScrCmd_checkattack - .4byte ScrCmd_bufferpoke - .4byte ScrCmd_bufferfirstpoke - .4byte ScrCmd_bufferpartypoke - .4byte ScrCmd_bufferitem - .4byte ScrCmd_bufferdecor - .4byte ScrCmd_bufferattack - .4byte ScrCmd_buffernum - .4byte ScrCmd_bufferstd - .4byte ScrCmd_buffertext - .4byte ScrCmd_pokemart - .4byte ScrCmd_pokemartdecor - .4byte ScrCmd_pokemartbp - .4byte ScrCmd_pokecasino - .4byte ScrCmd_event_8a - .4byte ScrCmd_choosecontestpkmn - .4byte ScrCmd_startcontest - .4byte ScrCmd_showcontestresults - .4byte ScrCmd_contestlinktransfer - .4byte ScrCmd_random - .4byte ScrCmd_givemoney - .4byte ScrCmd_paymoney - .4byte ScrCmd_checkmoney - .4byte ScrCmd_showmoney - .4byte ScrCmd_hidemoney - .4byte ScrCmd_updatemoney - .4byte ScrCmd_event_96 - .4byte ScrCmd_fadescreen - .4byte ScrCmd_fadescreendelay - .4byte ScrCmd_darken - .4byte ScrCmd_lighten - .4byte ScrCmd_message2 - .4byte ScrCmd_doanimation - .4byte ScrCmd_setanimation - .4byte ScrCmd_checkanimation - .4byte ScrCmd_sethealplace - .4byte ScrCmd_checkgender - .4byte ScrCmd_pokecry - .4byte ScrCmd_setmaptile - .4byte ScrCmd_resetweather - .4byte ScrCmd_setweather - .4byte ScrCmd_doweather - .4byte ScrCmd_tileeffect - .4byte ScrCmd_setmapfooter - .4byte ScrCmd_spritelevelup - .4byte ScrCmd_restorespritelevel - .4byte ScrCmd_createvsprite - .4byte ScrCmd_vspriteface - .4byte ScrCmd_setdooropened - .4byte ScrCmd_setdoorclosed - .4byte ScrCmd_doorchange - .4byte ScrCmd_setdooropened2 - .4byte ScrCmd_setdoorclosed2 - .4byte ScrCmd_event_b1 - .4byte ScrCmd_event_b2 - .4byte ScrCmd_checkcoins - .4byte ScrCmd_givecoins - .4byte ScrCmd_removecoins - .4byte ScrCmd_setwildbattle - .4byte ScrCmd_dowildbattle - .4byte ScrCmd_setvaddress - .4byte ScrCmd_vjump - .4byte ScrCmd_vcall - .4byte ScrCmd_if5 - .4byte ScrCmd_if6 - .4byte ScrCmd_vtext - .4byte ScrCmd_vloadptr - .4byte ScrCmd_vbuffer - .4byte ScrCmd_showcoins - .4byte ScrCmd_hidecoins - .4byte ScrCmd_updatecoins - .4byte ScrCmd_inccounter - .4byte ScrCmd_warp6 - .4byte ScrCmd_waitpokecry + .4byte ScrCmd_nop @ 0x00 + .4byte ScrCmd_nop1 @ 0x01 + .4byte ScrCmd_end @ 0x02 + .4byte ScrCmd_return @ 0x03 + .4byte ScrCmd_call @ 0x04 + .4byte ScrCmd_goto @ 0x05 + .4byte ScrCmd_goto_if @ 0x06 + .4byte ScrCmd_call_if @ 0x07 + .4byte ScrCmd_gotostd @ 0x08 + .4byte ScrCmd_callstd @ 0x09 + .4byte ScrCmd_gotostd_if @ 0x0A + .4byte ScrCmd_callstd_if @ 0x0B + .4byte ScrCmd_gotoram @ 0x0C + .4byte ScrCmd_killscript @ 0x0D + .4byte ScrCmd_setmysteryeventstatus @ 0x0E + .4byte ScrCmd_loadword @ 0x0F + .4byte ScrCmd_loadbyte @ 0x10 + .4byte ScrCmd_writebytetoaddr @ 0x11 + .4byte ScrCmd_loadbytefromaddr @ 0x12 + .4byte ScrCmd_setptrbyte @ 0x13 + .4byte ScrCmd_copylocal @ 0x14 + .4byte ScrCmd_copybyte @ 0x15 + .4byte ScrCmd_setvar @ 0x16 + .4byte ScrCmd_addvar @ 0x17 + .4byte ScrCmd_subvar @ 0x18 + .4byte ScrCmd_copyvar @ 0x19 + .4byte ScrCmd_setorcopyvar @ 0x1A + .4byte ScrCmd_compare_local_to_local @ 0x1B + .4byte ScrCmd_compare_local_to_value @ 0x1C + .4byte ScrCmd_compare_local_to_addr @ 0x1D + .4byte ScrCmd_compare_addr_to_local @ 0x1E + .4byte ScrCmd_compare_addr_to_value @ 0x1F + .4byte ScrCmd_compare_addr_to_addr @ 0x20 + .4byte ScrCmd_compare_var_to_value @ 0x21 + .4byte ScrCmd_compare_var_to_var @ 0x22 + .4byte ScrCmd_callnative @ 0x23 + .4byte ScrCmd_gotonative @ 0x24 + .4byte ScrCmd_special @ 0x25 + .4byte ScrCmd_specialvar @ 0x26 + .4byte ScrCmd_waitstate @ 0x27 + .4byte ScrCmd_delay @ 0x28 + .4byte ScrCmd_setflag @ 0x29 + .4byte ScrCmd_clearflag @ 0x2A + .4byte ScrCmd_checkflag @ 0x2B + .4byte ScrCmd_initclock @ 0x2C + .4byte ScrCmd_dodailyevents @ 0x2D + .4byte ScrCmd_gettime @ 0x2E + .4byte ScrCmd_playse @ 0x2F + .4byte ScrCmd_waitse @ 0x30 + .4byte ScrCmd_playfanfare @ 0x31 + .4byte ScrCmd_waitfanfare @ 0x32 + .4byte ScrCmd_playbgm @ 0x33 + .4byte ScrCmd_savebgm @ 0x34 + .4byte ScrCmd_fadedefaultbgm @ 0x35 + .4byte ScrCmd_fadenewbgm @ 0x36 + .4byte ScrCmd_fadeoutbgm @ 0x37 + .4byte ScrCmd_fadeinbgm @ 0x38 + .4byte ScrCmd_warp @ 0x39 + .4byte ScrCmd_warpsilent @ 0x3A + .4byte ScrCmd_warpdoor @ 0x3B + .4byte ScrCmd_warphole @ 0x3C + .4byte ScrCmd_warpteleport @ 0x3D + .4byte ScrCmd_setwarp @ 0x3E + .4byte ScrCmd_setdynamicwarp @ 0x3F + .4byte ScrCmd_setdivewarp @ 0x40 + .4byte ScrCmd_setholewarp @ 0x41 + .4byte ScrCmd_getplayerxy @ 0x42 + .4byte ScrCmd_countpokemon @ 0x43 + .4byte ScrCmd_additem @ 0x44 + .4byte ScrCmd_removeitem @ 0x45 + .4byte ScrCmd_checkitemspace @ 0x46 + .4byte ScrCmd_checkitem @ 0x47 + .4byte ScrCmd_checkitemtype @ 0x48 + .4byte ScrCmd_addpcitem @ 0x49 + .4byte ScrCmd_checkpcitem @ 0x4A + .4byte ScrCmd_adddecor @ 0x4B + .4byte ScrCmd_removedecor @ 0x4C + .4byte ScrCmd_hasdecor @ 0x4D + .4byte ScrCmd_checkdecor @ 0x4E + .4byte ScrCmd_applymovement @ 0x4F + .4byte ScrCmd_applymovement_at @ 0x50 + .4byte ScrCmd_waitmovement @ 0x51 + .4byte ScrCmd_waitmovement_at @ 0x52 + .4byte ScrCmd_removeobject @ 0x53 + .4byte ScrCmd_removeobject_at @ 0x54 + .4byte ScrCmd_addobject @ 0x55 + .4byte ScrCmd_addobject_at @ 0x56 + .4byte ScrCmd_setobjectxy @ 0x57 + .4byte ScrCmd_showobject @ 0x58 + .4byte ScrCmd_hideobject @ 0x59 + .4byte ScrCmd_faceplayer @ 0x5A + .4byte ScrCmd_turnobject @ 0x5B + .4byte ScrCmd_trainerbattle @ 0x5C + .4byte ScrCmd_battlebegin @ 0x5D + .4byte ScrCmd_ontrainerbattleend @ 0x5E + .4byte ScrCmd_ontrainerbattleendgoto @ 0x5F + .4byte ScrCmd_checktrainerflag @ 0x60 + .4byte ScrCmd_settrainerflag @ 0x61 + .4byte ScrCmd_cleartrainerflag @ 0x62 + .4byte ScrCmd_setobjectxyperm @ 0x63 + .4byte ScrCmd_moveobjectoffscreen @ 0x64 + .4byte ScrCmd_setobjectmovementtype @ 0x65 + .4byte ScrCmd_waitmessage @ 0x66 + .4byte ScrCmd_message @ 0x67 + .4byte ScrCmd_closemessage @ 0x68 + .4byte ScrCmd_lockall @ 0x69 + .4byte ScrCmd_lock @ 0x6A + .4byte ScrCmd_releaseall @ 0x6B + .4byte ScrCmd_release @ 0x6C + .4byte ScrCmd_waitbutton @ 0x6D + .4byte ScrCmd_yesnobox @ 0x6E + .4byte ScrCmd_multichoice @ 0x6F + .4byte ScrCmd_multichoicedefault @ 0x70 + .4byte ScrCmd_multichoicegrid @ 0x71 + .4byte ScrCmd_drawbox @ 0x72 + .4byte ScrCmd_erasebox @ 0x73 + .4byte ScrCmd_drawboxtext @ 0x74 + .4byte ScrCmd_drawpokepic @ 0x75 + .4byte ScrCmd_erasepokepic @ 0x76 + .4byte ScrCmd_drawcontestwinner @ 0x77 + .4byte ScrCmd_braillemessage @ 0x78 + .4byte ScrCmd_givepoke @ 0x79 + .4byte ScrCmd_giveegg @ 0x7A + .4byte ScrCmd_setpokemove @ 0x7B + .4byte ScrCmd_checkpokemove @ 0x7C + .4byte ScrCmd_getspeciesname @ 0x7D + .4byte ScrCmd_getfirstpartypokename @ 0x7E + .4byte ScrCmd_getpartypokename @ 0x7F + .4byte ScrCmd_getitemname @ 0x80 + .4byte ScrCmd_getdecorname @ 0x81 + .4byte ScrCmd_getmovename @ 0x82 + .4byte ScrCmd_getnumberstring @ 0x83 + .4byte ScrCmd_getstdstring @ 0x84 + .4byte ScrCmd_getstring @ 0x85 + .4byte ScrCmd_pokemart @ 0x86 + .4byte ScrCmd_pokemartdecor @ 0x87 + .4byte ScrCmd_pokemartbp @ 0x88 + .4byte ScrCmd_playslotmachine @ 0x89 + .4byte ScrCmd_plantberrytree @ 0x8A + .4byte ScrCmd_choosecontestpkmn @ 0x8B + .4byte ScrCmd_startcontest @ 0x8C + .4byte ScrCmd_showcontestresults @ 0x8D + .4byte ScrCmd_contestlinktransfer @ 0x8E + .4byte ScrCmd_random @ 0x8F + .4byte ScrCmd_givemoney @ 0x90 + .4byte ScrCmd_takemoney @ 0x91 + .4byte ScrCmd_checkmoney @ 0x92 + .4byte ScrCmd_showmoneybox @ 0x93 + .4byte ScrCmd_hidemoneybox @ 0x94 + .4byte ScrCmd_updatemoneybox @ 0x95 + .4byte ScrCmd_getpricereduction @ 0x96 + .4byte ScrCmd_fadescreen @ 0x97 + .4byte ScrCmd_fadescreendelay @ 0x98 + .4byte ScrCmd_setdarklevel @ 0x99 + .4byte ScrCmd_animdarklevel @ 0x9A + .4byte ScrCmd_messageautoscroll @ 0x9B + .4byte ScrCmd_dofieldeffect @ 0x9C + .4byte ScrCmd_setfieldeffect @ 0x9D + .4byte ScrCmd_waitfieldeffect @ 0x9E + .4byte ScrCmd_sethealplace @ 0x9F + .4byte ScrCmd_checkplayergender @ 0xA0 + .4byte ScrCmd_playpokecry @ 0xA1 + .4byte ScrCmd_setmaptile @ 0xA2 + .4byte ScrCmd_resetweather @ 0xA3 + .4byte ScrCmd_setweather @ 0xA4 + .4byte ScrCmd_doweather @ 0xA5 + .4byte ScrCmd_tileeffect @ 0xA6 + .4byte ScrCmd_setmaplayoutindex @ 0xA7 + .4byte ScrCmd_setobjectpriority @ 0xA8 + .4byte ScrCmd_resetobjectpriority @ 0xA9 + .4byte ScrCmd_createvobject @ 0xAA + .4byte ScrCmd_turnvobject @ 0xAB + .4byte ScrCmd_opendoor @ 0xAC + .4byte ScrCmd_closedoor @ 0xAD + .4byte ScrCmd_waitdooranim @ 0xAE + .4byte ScrCmd_setdooropen @ 0xAF + .4byte ScrCmd_setdoorclosed @ 0xB0 + .4byte ScrCmd_addelevmenuitem @ 0xB1 + .4byte ScrCmd_showelevmenu @ 0xB2 + .4byte ScrCmd_checkcoins @ 0xB3 + .4byte ScrCmd_givecoins @ 0xB4 + .4byte ScrCmd_takecoins @ 0xB5 + .4byte ScrCmd_setwildbattle @ 0xB6 + .4byte ScrCmd_dowildbattle @ 0xB7 + .4byte ScrCmd_setvaddress @ 0xB8 + .4byte ScrCmd_vgoto @ 0xB9 + .4byte ScrCmd_vcall @ 0xBA + .4byte ScrCmd_vgoto_if @ 0xBB + .4byte ScrCmd_vcall_if @ 0xBC + .4byte ScrCmd_vmessage @ 0xBD + .4byte ScrCmd_vloadword @ 0xBE + .4byte ScrCmd_vgetstring @ 0xBF + .4byte ScrCmd_showcoinsbox @ 0xC0 + .4byte ScrCmd_hidecoinsbox @ 0xC1 + .4byte ScrCmd_updatecoinsbox @ 0xC2 + .4byte ScrCmd_incrementgamestat @ 0xC3 + .4byte ScrCmd_setescapewarp @ 0xC4 + .4byte ScrCmd_waitpokecry @ 0xC5 gScriptCmdTableEnd:: - .4byte ScrCmd_snop + .4byte ScrCmd_nop diff --git a/data/script_funcs.s b/data/script_funcs.s deleted file mode 100644 index 23d7a76f5..000000000 --- a/data/script_funcs.s +++ /dev/null @@ -1,22 +0,0 @@ - .section script_data, "aw", %progbits - - .align 2 -gScriptFuncs:: @ 81DCAF4 - .4byte sub_81263D0 - .4byte sub_8126380 - .4byte script_status_stop_and_ret_1 - .4byte sub_81263E4 - .4byte sub_81263D4 - .4byte sub_812641C - .4byte sub_8126524 - .4byte sub_8126438 - .4byte sub_81264F0 - .4byte sub_812658C - .4byte sub_81265B0 - .4byte sub_81265DC - .4byte sub_8126608 - .4byte sub_8126714 - .4byte sub_8126754 - .4byte sub_8126778 - .4byte sub_81267C0 -gScriptFuncs_End:: diff --git a/data/scripts/bard.inc b/data/scripts/bard.inc deleted file mode 100644 index a30045fc8..000000000 --- a/data/scripts/bard.inc +++ /dev/null @@ -1,67 +0,0 @@ -MauvilleCity_PokemonCenter_1F_EventScript_1AE744:: @ 81AE744 - special 97 - switch RESULT - case 0, MauvilleCity_PokemonCenter_1F_EventScript_1AE784 - case 1, MauvilleCity_PokemonCenter_1F_EventScript_1AE845 - case 2, MauvilleCity_PokemonCenter_1F_EventScript_1AEBAB - case 3, MauvilleCity_PokemonCenter_1F_EventScript_1B0816 - case 4, MauvilleCity_PokemonCenter_1F_EventScript_1B09EB - end - -MauvilleCity_PokemonCenter_1F_EventScript_1AE784:: @ 81AE784 - lock - faceplayer - msgbox MauvilleCity_PokemonCenter_1F_Text_1B0A91, 5 - compare RESULT, 1 - jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1AE7A5 - compare RESULT, 0 - jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1AE7C8 - end - -MauvilleCity_PokemonCenter_1F_EventScript_1AE7A5:: @ 81AE7A5 - setvar 0x8004, 0 - special 103 - pause 60 - special 98 - compare RESULT, 0 - jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1AE7D2 - msgbox MauvilleCity_PokemonCenter_1F_Text_1B0AED, 4 - release - end - -MauvilleCity_PokemonCenter_1F_EventScript_1AE7C8:: @ 81AE7C8 - msgbox MauvilleCity_PokemonCenter_1F_Text_1B0AC3, 4 - release - end - -MauvilleCity_PokemonCenter_1F_EventScript_1AE7D2:: @ 81AE7D2 - msgbox MauvilleCity_PokemonCenter_1F_Text_1B0B2C, 5 - compare RESULT, 1 - jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1AE7F1 - compare RESULT, 0 - jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1AE83B - end - -MauvilleCity_PokemonCenter_1F_EventScript_1AE7F1:: @ 81AE7F1 - setvar 0x8004, 6 - call MauvilleCity_PokemonCenter_1F_EventScript_1A00F3 - lock - faceplayer - compare RESULT, 0 - jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1AE83B - msgbox MauvilleCity_PokemonCenter_1F_Text_1B0BD0, 4 - setvar 0x8004, 1 - special 103 - pause 60 - msgbox MauvilleCity_PokemonCenter_1F_Text_1B0BFA, 5 - compare RESULT, 0 - jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1AE7F1 - special 99 - msgbox MauvilleCity_PokemonCenter_1F_Text_1B0C23, 4 - release - end - -MauvilleCity_PokemonCenter_1F_EventScript_1AE83B:: @ 81AE83B - msgbox MauvilleCity_PokemonCenter_1F_Text_1B0BA6, 4 - release - end diff --git a/data/scripts/berry_tree.inc b/data/scripts/berry_tree.inc index fcf32d15d..9e219a339 100644 --- a/data/scripts/berry_tree.inc +++ b/data/scripts/berry_tree.inc @@ -1,5 +1,5 @@ -BerryTreeScript:: @ 81A14DD - special 43 +S_BerryTree:: @ 81A14DD + special FieldObjectInteractionGetBerryTreeData switch 0x8004 case 255, Route102_EventScript_1A1533 case 0, Route102_EventScript_1A153D @@ -13,7 +13,7 @@ BerryTreeScript:: @ 81A14DD Route102_EventScript_1A1533:: @ 81A1533 lockall message Route102_Text_1A1946 - waittext + waitmessage waitbutton releaseall end @@ -21,11 +21,11 @@ Route102_EventScript_1A1533:: @ 81A1533 Route102_EventScript_1A153D:: @ 81A153D lock faceplayer - specialval RESULT, 49 + specialvar RESULT, PlayerHasBerries compare RESULT, 1 - jumpeq Route102_EventScript_1A1558 + goto_if_eq Route102_EventScript_1A1558 message Route102_Text_1A16B6 - waittext + waitmessage waitbutton release end @@ -33,18 +33,18 @@ Route102_EventScript_1A153D:: @ 81A153D Route102_EventScript_1A1558:: @ 81A1558 msgbox Route102_Text_1A16CD, 5 compare RESULT, 1 - jumpeq Route102_EventScript_1A1577 + goto_if_eq Route102_EventScript_1A1577 compare RESULT, 0 - jumpeq Route102_EventScript_1A1593 + goto_if_eq Route102_EventScript_1A1593 end Route102_EventScript_1A1577:: @ 81A1577 fadescreen 1 - closebutton - special 44 + closemessage + special sub_80B4EE4 waitstate compare ITEM_ID, 0 - jumpeq Route102_EventScript_1A1593 + goto_if_eq Route102_EventScript_1A1593 removeitem ITEM_ID, 1 call Route102_EventScript_1A16A9 @@ -55,91 +55,91 @@ Route102_EventScript_1A1593:: @ 81A1593 Route102_EventScript_1A1595:: @ 81A1595 lockall message Route102_Text_1A172C - waittext + waitmessage waitbutton - jump Route102_EventScript_1A165F + goto Route102_EventScript_1A165F Route102_EventScript_1A15A2:: @ 81A15A2 lockall message Route102_Text_1A174B - waittext + waitmessage waitbutton - jump Route102_EventScript_1A165F + goto Route102_EventScript_1A165F Route102_EventScript_1A15AF:: @ 81A15AF lockall message Route102_Text_1A175C - waittext + waitmessage waitbutton - jump Route102_EventScript_1A165F + goto Route102_EventScript_1A165F Route102_EventScript_1A15BC:: @ 81A15BC call Route102_EventScript_1A15CE lockall message Route102_Text_1A177D - waittext + waitmessage waitbutton - jump Route102_EventScript_1A165F + goto Route102_EventScript_1A165F Route102_EventScript_1A15CE:: @ 81A15CE compare 0x8005, 0 - jumpeq Route102_EventScript_1A15F2 + goto_if_eq Route102_EventScript_1A15F2 compare 0x8005, 4 - jumpeq Route102_EventScript_1A15EB - buffertext 1, Route102_Text_1A17B7 + goto_if_eq Route102_EventScript_1A15EB + getstring 1, Route102_Text_1A17B7 return Route102_EventScript_1A15EB:: @ 81A15EB - buffertext 1, Route102_Text_1A179F + getstring 1, Route102_Text_1A179F return Route102_EventScript_1A15F2:: @ 81A15F2 - buffertext 1, Route102_Text_1A17B0 + getstring 1, Route102_Text_1A17B0 return Route102_EventScript_1A15F9:: @ 81A15F9 - buffernum 1, 0x8006 + getnumberstring 1, 0x8006 lock faceplayer msgbox Route102_Text_1A17C0, 5 compare RESULT, 1 - jumpeq Route102_EventScript_1A161D + goto_if_eq Route102_EventScript_1A161D compare RESULT, 0 - jumpeq Route102_EventScript_1A164B + goto_if_eq Route102_EventScript_1A164B Route102_EventScript_1A161D:: @ 81A161D - special 46 + special FieldObjectInteractionPickBerryTree compare 0x8004, 0 - jumpeq Route102_EventScript_1A1642 - special 47 + goto_if_eq Route102_EventScript_1A1642 + special FieldObjectInteractionRemoveBerryTree message Route102_Text_1A17FD - fanfare 387 - waittext + playfanfare 387 + waitmessage waitfanfare waitbutton message Route102_Text_1A181A - waittext + waitmessage waitbutton release end Route102_EventScript_1A1642:: @ 81A1642 message Route102_Text_1A1881 - waittext + waitmessage waitbutton release end Route102_EventScript_1A164B:: @ 81A164B message Route102_Text_1A18C5 - waittext + waitmessage waitbutton release end gUnknown_081A1654:: @ 81A1654 lockall - special 43 + special FieldObjectInteractionGetBerryTreeData call Route102_EventScript_1A16A9 releaseall end @@ -147,37 +147,37 @@ gUnknown_081A1654:: @ 81A1654 Route102_EventScript_1A165F:: @ 81A165F checkitem ITEM_WAILMER_PAIL, 1 compare RESULT, 0 - jumpeq Route102_EventScript_1A168D + goto_if_eq Route102_EventScript_1A168D msgbox Route102_Text_1A18E6, 5 compare RESULT, 1 - jumpeq Route102_EventScript_1A1693 + goto_if_eq Route102_EventScript_1A1693 compare RESULT, 0 - jumpeq Route102_EventScript_1A168D + goto_if_eq Route102_EventScript_1A168D Route102_EventScript_1A168D:: @ 81A168D releaseall end gUnknown_081A168F:: @ 81A168F - special 43 + special FieldObjectInteractionGetBerryTreeData lockall Route102_EventScript_1A1693:: @ 81A1693 message Route102_Text_1A1912 - waittext - special 48 - special 94 + waitmessage + special FieldObjectInteractionWaterBerryTree + special DoWateringBerryTreeAnim waitstate message Route102_Text_1A1925 - waittext + waitmessage waitbutton releaseall end Route102_EventScript_1A16A9:: @ 81A16A9 - special 45 - inccounter GAME_STAT_PLANTED_BERRIES + special FieldObjectInteractionPlantBerryTree + incrementgamestat GAME_STAT_PLANTED_BERRIES message Route102_Text_1A16FB - waittext + waitmessage waitbutton return diff --git a/data/scripts/cable_club.inc b/data/scripts/cable_club.inc index c8f701d95..9f44e131b 100644 --- a/data/scripts/cable_club.inc +++ b/data/scripts/cable_club.inc @@ -21,7 +21,7 @@ VerdanturfTown_PokemonCenter_2F_MapScript2_1A3D03:: @ 81A3D03 .2byte 0 OldaleTown_PokemonCenter_2F_EventScript_1A3D2D:: @ 81A3D2D - spriteface 0x8007, 4 + turnobject 0x8007, 4 end DewfordTown_PokemonCenter_2F_MapScript1_1A3D32:: @ 81A3D32 @@ -40,15 +40,15 @@ SlateportCity_PokemonCenter_2F_MapScript1_1A3D32:: @ 81A3D32 SootopolisCity_PokemonCenter_2F_MapScript1_1A3D32:: @ 81A3D32 VerdanturfTown_PokemonCenter_2F_MapScript1_1A3D32:: @ 81A3D32 compare 0x4087, 1 - jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A3D6A + goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A3D6A compare 0x4087, 2 - jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A3D6A + goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A3D6A compare 0x4087, 5 - jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A3D6A + goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A3D6A compare 0x4087, 3 - jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A3D74 + goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A3D74 compare 0x4087, 4 - jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A3D7E + goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A3D7E end OldaleTown_PokemonCenter_2F_EventScript_1A3D6A:: @ 81A3D6A @@ -86,77 +86,77 @@ VerdanturfTown_PokemonCenter_2F_MapScript2_1A3D88:: @ 81A3D88 .2byte 0 OldaleTown_PokemonCenter_2F_EventScript_1A3DB2:: @ 81A3DB2 - special 31 + special CloseLink setvar 0x4087, 0 - move 255, OldaleTown_PokemonCenter_2F_Movement_1A4358 - waitmove 0 + applymovement 255, OldaleTown_PokemonCenter_2F_Movement_1A4358 + waitmovement 0 compare 0x8007, 0 - jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A3DD9 - move 0x8007, OldaleTown_PokemonCenter_2F_Movement_1A4354 - waitmove 0 + goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A3DD9 + applymovement 0x8007, OldaleTown_PokemonCenter_2F_Movement_1A4354 + waitmovement 0 OldaleTown_PokemonCenter_2F_EventScript_1A3DD9:: @ 81A3DD9 return OldaleTown_PokemonCenter_2F_EventScript_1A3DDA:: @ 81A3DDA - special 31 + special CloseLink setvar 0x4087, 0 compare 0x8007, 0 - jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A3E0C - move 0x8007, OldaleTown_PokemonCenter_2F_Movement_1A4356 - waitmove 0 - move 255, OldaleTown_PokemonCenter_2F_Movement_1A4358 - waitmove 0 - move 0x8007, OldaleTown_PokemonCenter_2F_Movement_1A4354 - waitmove 0 + goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A3E0C + applymovement 0x8007, OldaleTown_PokemonCenter_2F_Movement_1A4356 + waitmovement 0 + applymovement 255, OldaleTown_PokemonCenter_2F_Movement_1A4358 + waitmovement 0 + applymovement 0x8007, OldaleTown_PokemonCenter_2F_Movement_1A4354 + waitmovement 0 return OldaleTown_PokemonCenter_2F_EventScript_1A3E0C:: @ 81A3E0C - move 255, OldaleTown_PokemonCenter_2F_Movement_1A4358 - waitmove 0 + applymovement 255, OldaleTown_PokemonCenter_2F_Movement_1A4358 + waitmovement 0 return OldaleTown_PokemonCenter_2F_EventScript_1A3E17:: @ 81A3E17 lockall call OldaleTown_PokemonCenter_2F_EventScript_1A3E30 setmaptile 8, 3, 605, 1 - special 142 - hidebox 0, 0, 29, 19 + special DrawWholeMapView + erasebox 0, 0, 29, 19 releaseall end OldaleTown_PokemonCenter_2F_EventScript_1A3E30:: @ 81A3E30 - special 31 + special CloseLink setvar 0x4087, 0 compare 0x8007, 0 - jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A3E0C - move 255, OldaleTown_PokemonCenter_2F_Movement_1A4361 - waitmove 0 - move 0x8007, OldaleTown_PokemonCenter_2F_Movement_1A4356 - waitmove 0 + goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A3E0C + applymovement 255, OldaleTown_PokemonCenter_2F_Movement_1A4361 + waitmovement 0 + applymovement 0x8007, OldaleTown_PokemonCenter_2F_Movement_1A4356 + waitmovement 0 message OldaleTown_PokemonCenter_2F_Text_1A4E50 - waittext - playsfx 21 + waitmessage + playse 21 message OldaleTown_PokemonCenter_2F_Text_1A4E79 - waittext - move 255, OldaleTown_PokemonCenter_2F_Movement_1A4358 - waitmove 0 - move 0x8007, OldaleTown_PokemonCenter_2F_Movement_1A4354 - waitmove 0 + waitmessage + applymovement 255, OldaleTown_PokemonCenter_2F_Movement_1A4358 + waitmovement 0 + applymovement 0x8007, OldaleTown_PokemonCenter_2F_Movement_1A4354 + waitmovement 0 return OldaleTown_PokemonCenter_2F_EventScript_1A3E7B:: @ 81A3E7B call OldaleTown_PokemonCenter_2F_EventScript_1A3DB2 setmaptile 11, 3, 605, 1 - special 142 + special DrawWholeMapView end OldaleTown_PokemonCenter_2F_EventScript_1A3E8D:: @ 81A3E8D lockall call OldaleTown_PokemonCenter_2F_EventScript_1A3DDA setmaptile 5, 3, 605, 1 - special 142 - hidebox 0, 0, 29, 19 + special DrawWholeMapView + erasebox 0, 0, 29, 19 releaseall end @@ -175,12 +175,12 @@ SlateportCity_PokemonCenter_2F_EventScript_1A3EA6:: @ 81A3EA6 SootopolisCity_PokemonCenter_2F_EventScript_1A3EA6:: @ 81A3EA6 VerdanturfTown_PokemonCenter_2F_EventScript_1A3EA6:: @ 81A3EA6 checkflag 2049 - jumpif 0, OldaleTown_PokemonCenter_2F_EventScript_1A4342 + goto_if 0, OldaleTown_PokemonCenter_2F_EventScript_1A4342 copyvar 0x8007, LAST_TALKED lock faceplayer message OldaleTown_PokemonCenter_2F_Text_1A4510 - waittext + waitmessage OldaleTown_PokemonCenter_2F_EventScript_1A3EBC:: @ 81A3EBC multichoice 17, 6, 17, 0 @@ -191,78 +191,78 @@ OldaleTown_PokemonCenter_2F_EventScript_1A3EBC:: @ 81A3EBC case 127, OldaleTown_PokemonCenter_2F_EventScript_1A4319 OldaleTown_PokemonCenter_2F_EventScript_1A3EF2:: @ 81A3EF2 - call OldaleTown_PokemonCenter_2F_EventScript_19F806 + call S_DoSaveDialog compare RESULT, 0 - jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A4319 + goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A4319 call OldaleTown_PokemonCenter_2F_EventScript_1A3FEF compare 0x8004, 0 - jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A4319 + goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A4319 message OldaleTown_PokemonCenter_2F_Text_1A490C - waittext - special 28 + waitmessage + special sub_808347C waitstate compare RESULT, 1 - jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A3F5E + goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A3F5E compare RESULT, 2 - jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A4301 + goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A4301 compare RESULT, 3 - jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A430D + goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A430D compare RESULT, 4 - jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A4068 + goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A4068 compare RESULT, 5 - jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A4319 + goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A4319 compare RESULT, 6 - jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A42F5 + goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A42F5 OldaleTown_PokemonCenter_2F_EventScript_1A3F5E:: @ 81A3F5E - special 0 - special 39 - special 331 + special ScrSpecial_HealPlayerParty + special SavePlayerParty + special LoadPlayerBag copyvar 0x4087, 0x8004 - message2 OldaleTown_PokemonCenter_2F_Text_1A4A22 - waittext + messageautoscroll OldaleTown_PokemonCenter_2F_Text_1A4A22 + waitmessage setmaptile 5, 3, 514, 0 - special 142 - pause 60 - move LAST_TALKED, OldaleTown_PokemonCenter_2F_Movement_1A4356 - waitmove 0 - closebutton - move 255, OldaleTown_PokemonCenter_2F_Movement_1A435B - waitmove 0 - setdooropened 5, 1 - doorchange - move 255, OldaleTown_PokemonCenter_2F_Movement_1A435F - waitmove 0 - spriteinvisible 255, 0, 0 - setdoorclosed 5, 1 - doorchange + special DrawWholeMapView + delay 60 + applymovement LAST_TALKED, OldaleTown_PokemonCenter_2F_Movement_1A4356 + waitmovement 0 + closemessage + applymovement 255, OldaleTown_PokemonCenter_2F_Movement_1A435B + waitmovement 0 + opendoor 5, 1 + waitdooranim + applymovement 255, OldaleTown_PokemonCenter_2F_Movement_1A435F + waitmovement 0 + hideobject 255, 0, 0 + closedoor 5, 1 + waitdooranim release compare 0x8004, 5 - jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A3FCD - special 1 + goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A3FCD + special SetCableClubWarp warp SingleBattleColosseum, 255, 6, 8 - special 2 + special DoCableClubWarp waitstate end OldaleTown_PokemonCenter_2F_EventScript_1A3FCD:: @ 81A3FCD - special 1 + special SetCableClubWarp warp DoubleBattleColosseum, 255, 5, 8 - special 2 + special DoCableClubWarp waitstate end OldaleTown_PokemonCenter_2F_EventScript_1A3FDD:: @ 81A3FDD message OldaleTown_PokemonCenter_2F_Text_1A4696 - waittext + waitmessage waitbutton message OldaleTown_PokemonCenter_2F_Text_1A4826 - waittext - jump OldaleTown_PokemonCenter_2F_EventScript_1A3EBC + waitmessage + goto OldaleTown_PokemonCenter_2F_EventScript_1A3EBC OldaleTown_PokemonCenter_2F_EventScript_1A3FEF:: @ 81A3FEF message OldaleTown_PokemonCenter_2F_Text_1A4840 - waittext + waitmessage multichoice 0, 0, 18, 0 switch RESULT case 0, OldaleTown_PokemonCenter_2F_EventScript_1A4062 @@ -280,17 +280,17 @@ OldaleTown_PokemonCenter_2F_EventScript_1A403C:: @ 81A403C return OldaleTown_PokemonCenter_2F_EventScript_1A4042:: @ 81A4042 - special 61 + special CheckForAlivePartyMons compare RESULT, 0 - jumpif 5, OldaleTown_PokemonCenter_2F_EventScript_1A4056 + goto_if 5, OldaleTown_PokemonCenter_2F_EventScript_1A4056 setvar 0x8004, 2 return OldaleTown_PokemonCenter_2F_EventScript_1A4056:: @ 81A4056 message OldaleTown_PokemonCenter_2F_Text_1A486A - waittext + waitmessage waitbutton - jump OldaleTown_PokemonCenter_2F_EventScript_1A3FEF + goto OldaleTown_PokemonCenter_2F_EventScript_1A3FEF OldaleTown_PokemonCenter_2F_EventScript_1A4062:: @ 81A4062 setvar 0x8004, 1 @@ -301,33 +301,33 @@ OldaleTown_PokemonCenter_2F_EventScript_1A4068:: @ 81A4068 case 1, OldaleTown_PokemonCenter_2F_EventScript_1A40B1 case 2, OldaleTown_PokemonCenter_2F_EventScript_1A40A2 case 5, OldaleTown_PokemonCenter_2F_EventScript_1A4093 - jump OldaleTown_PokemonCenter_2F_EventScript_1A432D + goto OldaleTown_PokemonCenter_2F_EventScript_1A432D OldaleTown_PokemonCenter_2F_EventScript_1A4093:: @ 81A4093 - special 31 + special CloseLink message OldaleTown_PokemonCenter_2F_Text_1A4C03 - waittext + waitmessage waitbutton - jump OldaleTown_PokemonCenter_2F_EventScript_1A40C0 + goto OldaleTown_PokemonCenter_2F_EventScript_1A40C0 OldaleTown_PokemonCenter_2F_EventScript_1A40A2:: @ 81A40A2 - special 31 + special CloseLink message OldaleTown_PokemonCenter_2F_Text_1A4BCC - waittext + waitmessage waitbutton - jump OldaleTown_PokemonCenter_2F_EventScript_1A40C0 + goto OldaleTown_PokemonCenter_2F_EventScript_1A40C0 OldaleTown_PokemonCenter_2F_EventScript_1A40B1:: @ 81A40B1 - special 31 + special CloseLink message OldaleTown_PokemonCenter_2F_Text_1A4B95 - waittext + waitmessage waitbutton - jump OldaleTown_PokemonCenter_2F_EventScript_1A40C0 + goto OldaleTown_PokemonCenter_2F_EventScript_1A40C0 OldaleTown_PokemonCenter_2F_EventScript_1A40C0:: @ 81A40C0 - special 31 + special CloseLink message OldaleTown_PokemonCenter_2F_Text_1A4C38 - waittext + waitmessage waitbutton release end @@ -347,83 +347,83 @@ SlateportCity_PokemonCenter_2F_EventScript_1A40CC:: @ 81A40CC SootopolisCity_PokemonCenter_2F_EventScript_1A40CC:: @ 81A40CC VerdanturfTown_PokemonCenter_2F_EventScript_1A40CC:: @ 81A40CC checkflag 2049 - jumpif 0, OldaleTown_PokemonCenter_2F_EventScript_1A4339 + goto_if 0, OldaleTown_PokemonCenter_2F_EventScript_1A4339 copyvar 0x8007, LAST_TALKED lock faceplayer msgbox OldaleTown_PokemonCenter_2F_Text_1A457E, 5 compare RESULT, 0 - jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A4319 + goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A4319 compare RESULT, 1 - jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A40FA + goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A40FA OldaleTown_PokemonCenter_2F_EventScript_1A40FA:: @ 81A40FA call OldaleTown_PokemonCenter_2F_EventScript_1A41BB compare RESULT, 0 - jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A4319 - call OldaleTown_PokemonCenter_2F_EventScript_19F806 + goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A4319 + call S_DoSaveDialog compare RESULT, 0 - jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A4319 + goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A4319 message OldaleTown_PokemonCenter_2F_Text_1A490C - waittext - special 29 + waitmessage + special sub_80834E4 waitstate compare RESULT, 1 - jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A4166 + goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A4166 compare RESULT, 2 - jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A4301 + goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A4301 compare RESULT, 3 - jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A430D + goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A430D compare RESULT, 4 - jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A432D + goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A432D compare RESULT, 5 - jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A4319 + goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A4319 compare RESULT, 6 - jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A42F5 + goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A42F5 OldaleTown_PokemonCenter_2F_EventScript_1A4166:: @ 81A4166 setvar 0x8004, 3 copyvar 0x4087, 0x8004 - message2 OldaleTown_PokemonCenter_2F_Text_1A4A22 - waittext + messageautoscroll OldaleTown_PokemonCenter_2F_Text_1A4A22 + waitmessage setmaptile 8, 3, 514, 0 - special 142 - pause 60 - move LAST_TALKED, OldaleTown_PokemonCenter_2F_Movement_1A4356 - waitmove 0 - closebutton - move 255, OldaleTown_PokemonCenter_2F_Movement_1A435B - waitmove 0 - setdooropened 8, 1 - doorchange - move 255, OldaleTown_PokemonCenter_2F_Movement_1A435F - waitmove 0 - spriteinvisible 255, 0, 0 - setdoorclosed 8, 1 - doorchange + special DrawWholeMapView + delay 60 + applymovement LAST_TALKED, OldaleTown_PokemonCenter_2F_Movement_1A4356 + waitmovement 0 + closemessage + applymovement 255, OldaleTown_PokemonCenter_2F_Movement_1A435B + waitmovement 0 + opendoor 8, 1 + waitdooranim + applymovement 255, OldaleTown_PokemonCenter_2F_Movement_1A435F + waitmovement 0 + hideobject 255, 0, 0 + closedoor 8, 1 + waitdooranim release - jump OldaleTown_PokemonCenter_2F_EventScript_1A4325 + goto OldaleTown_PokemonCenter_2F_EventScript_1A4325 OldaleTown_PokemonCenter_2F_EventScript_1A41BB:: @ 81A41BB - specialval RESULT, 131 + specialvar RESULT, CalculatePlayerPartyCount compare RESULT, 2 - jumpif 0, OldaleTown_PokemonCenter_2F_EventScript_1A41E1 - specialval RESULT, 339 + goto_if 0, OldaleTown_PokemonCenter_2F_EventScript_1A41E1 + specialvar RESULT, GetNameOfEnigmaBerryInPlayerParty compare RESULT, 1 - jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A41EE + goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A41EE setvar RESULT, 1 return OldaleTown_PokemonCenter_2F_EventScript_1A41E1:: @ 81A41E1 message OldaleTown_PokemonCenter_2F_Text_1A48A3 - waittext + waitmessage waitbutton setvar RESULT, 0 return OldaleTown_PokemonCenter_2F_EventScript_1A41EE:: @ 81A41EE message OldaleTown_PokemonCenter_2F_Text_1A48DD - waittext + waitmessage waitbutton setvar RESULT, 0 return @@ -444,114 +444,114 @@ SlateportCity_PokemonCenter_2F_EventScript_1A41FB:: @ 81A41FB SootopolisCity_PokemonCenter_2F_EventScript_1A41FB:: @ 81A41FB VerdanturfTown_PokemonCenter_2F_EventScript_1A41FB:: @ 81A41FB checkflag 2072 - jumpif 0, OldaleTown_PokemonCenter_2F_EventScript_1A434B + goto_if 0, OldaleTown_PokemonCenter_2F_EventScript_1A434B copyvar 0x8007, LAST_TALKED lock faceplayer msgbox OldaleTown_PokemonCenter_2F_Text_1A45FE, 5 compare RESULT, 0 - jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A4319 + goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A4319 compare RESULT, 1 - jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A4229 + goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A4229 OldaleTown_PokemonCenter_2F_EventScript_1A4229:: @ 81A4229 - call OldaleTown_PokemonCenter_2F_EventScript_19F806 + call S_DoSaveDialog compare RESULT, 0 - jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A4319 + goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A4319 message OldaleTown_PokemonCenter_2F_Text_1A490C - waittext - special 30 + waitmessage + special sub_808350C waitstate - special 341 + special sub_80835D8 waitstate compare RESULT, 1 - jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A4294 + goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A4294 compare RESULT, 2 - jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A4301 + goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A4301 compare RESULT, 3 - jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A430D + goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A430D compare RESULT, 4 - jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A432D + goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A432D compare RESULT, 5 - jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A4319 + goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A4319 compare RESULT, 6 - jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A42F5 + goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A42F5 compare RESULT, 7 - jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A42E9 + goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A42E9 OldaleTown_PokemonCenter_2F_EventScript_1A4294:: @ 81A4294 setvar 0x8004, 4 copyvar 0x4087, 0x8004 - message2 OldaleTown_PokemonCenter_2F_Text_1A4A22 - waittext + messageautoscroll OldaleTown_PokemonCenter_2F_Text_1A4A22 + waitmessage setmaptile 11, 3, 514, 0 - special 142 - pause 60 - move LAST_TALKED, OldaleTown_PokemonCenter_2F_Movement_1A4356 - waitmove 0 - closebutton - move 255, OldaleTown_PokemonCenter_2F_Movement_1A435B - waitmove 0 - setdooropened 11, 1 - doorchange - move 255, OldaleTown_PokemonCenter_2F_Movement_1A435F - waitmove 0 - spriteinvisible 255, 0, 0 - setdoorclosed 11, 1 - doorchange + special DrawWholeMapView + delay 60 + applymovement LAST_TALKED, OldaleTown_PokemonCenter_2F_Movement_1A4356 + waitmovement 0 + closemessage + applymovement 255, OldaleTown_PokemonCenter_2F_Movement_1A435B + waitmovement 0 + opendoor 11, 1 + waitdooranim + applymovement 255, OldaleTown_PokemonCenter_2F_Movement_1A435F + waitmovement 0 + hideobject 255, 0, 0 + closedoor 11, 1 + waitdooranim release - jump OldaleTown_PokemonCenter_2F_EventScript_1A4325 + goto OldaleTown_PokemonCenter_2F_EventScript_1A4325 OldaleTown_PokemonCenter_2F_EventScript_1A42E9:: @ 81A42E9 - special 31 + special CloseLink message OldaleTown_PokemonCenter_2F_Text_1A4AC8 - waittext + waitmessage waitbutton release end OldaleTown_PokemonCenter_2F_EventScript_1A42F5:: @ 81A42F5 - special 31 + special CloseLink message OldaleTown_PokemonCenter_2F_Text_1A4A85 - waittext + waitmessage waitbutton release end OldaleTown_PokemonCenter_2F_EventScript_1A4301:: @ 81A4301 - special 31 + special CloseLink message OldaleTown_PokemonCenter_2F_Text_1A4A30 - waittext + waitmessage waitbutton release end OldaleTown_PokemonCenter_2F_EventScript_1A430D:: @ 81A430D - special 31 + special CloseLink message OldaleTown_PokemonCenter_2F_Text_1A4B1D - waittext + waitmessage waitbutton release end OldaleTown_PokemonCenter_2F_EventScript_1A4319:: @ 81A4319 - special 31 + special CloseLink message OldaleTown_PokemonCenter_2F_Text_1A4B59 - waittext + waitmessage waitbutton release end OldaleTown_PokemonCenter_2F_EventScript_1A4325:: @ 81A4325 - special 1 - special 2 + special SetCableClubWarp + special DoCableClubWarp waitstate end OldaleTown_PokemonCenter_2F_EventScript_1A432D:: @ 81A432D - special 31 + special CloseLink message OldaleTown_PokemonCenter_2F_Text_1A4B6C - waittext + waitmessage waitbutton release end @@ -597,65 +597,65 @@ OldaleTown_PokemonCenter_2F_Movement_1A4361:: @ 81A4361 gUnknown_081A4363:: @ 81A4363 lockall - special 196 + special ShowLinkBattleRecords waitbutton - hidebox 0, 0, 29, 19 + erasebox 0, 0, 29, 19 releaseall end SingleBattleColosseum_EventScript_1A436F:: @ 81A436F setvar 0x8005, 0 - special 32 + special sub_8083B90 waitstate end SingleBattleColosseum_EventScript_1A4379:: @ 81A4379 setvar 0x8005, 1 - special 32 + special sub_8083B90 waitstate end DoubleBattleColosseum_EventScript_1A4383:: @ 81A4383 fadescreen 1 - special 41 + special sub_80C5568 waitstate compare RESULT, 0 - jumpeq DoubleBattleColosseum_EventScript_1A43EF + goto_if_eq DoubleBattleColosseum_EventScript_1A43EF setvar 0x8005, 0 - special 32 + special sub_8083B90 waitstate end DoubleBattleColosseum_EventScript_1A439E:: @ 81A439E fadescreen 1 - special 41 + special sub_80C5568 waitstate compare RESULT, 0 - jumpeq DoubleBattleColosseum_EventScript_1A43EF + goto_if_eq DoubleBattleColosseum_EventScript_1A43EF setvar 0x8005, 1 - special 32 + special sub_8083B90 waitstate end DoubleBattleColosseum_EventScript_1A43B9:: @ 81A43B9 fadescreen 1 - special 41 + special sub_80C5568 waitstate compare RESULT, 0 - jumpeq DoubleBattleColosseum_EventScript_1A43EF + goto_if_eq DoubleBattleColosseum_EventScript_1A43EF setvar 0x8005, 2 - special 32 + special sub_8083B90 waitstate end DoubleBattleColosseum_EventScript_1A43D4:: @ 81A43D4 fadescreen 1 - special 41 + special sub_80C5568 waitstate compare RESULT, 0 - jumpeq DoubleBattleColosseum_EventScript_1A43EF + goto_if_eq DoubleBattleColosseum_EventScript_1A43EF setvar 0x8005, 3 - special 32 + special sub_8083B90 waitstate end @@ -664,146 +664,146 @@ DoubleBattleColosseum_EventScript_1A43EF:: @ 81A43EF TradeCenter_EventScript_1A43F0:: @ 81A43F0 setvar 0x8005, 0 - special 33 + special sub_8083B5C waitstate end TradeCenter_EventScript_1A43FA:: @ 81A43FA setvar 0x8005, 1 - special 33 + special sub_8083B5C waitstate end @ 81A4404 setvar 0x8005, 2 - special 33 + special sub_8083B5C waitstate end @ 81A440E setvar 0x8005, 3 - special 33 + special sub_8083B5C waitstate end RecordCorner_EventScript_1A4418:: @ 81A4418 setvar 0x8005, 0 - special 27 + special sub_80B929C waitstate compare 0x4001, 0 - jumpif 5, RecordCorner_EventScript_1A446C + goto_if 5, RecordCorner_EventScript_1A446C end RecordCorner_EventScript_1A442D:: @ 81A442D setvar 0x8005, 1 - special 27 + special sub_80B929C waitstate compare 0x4001, 0 - jumpif 5, RecordCorner_EventScript_1A446C + goto_if 5, RecordCorner_EventScript_1A446C end RecordCorner_EventScript_1A4442:: @ 81A4442 setvar 0x8005, 2 - special 27 + special sub_80B929C waitstate compare 0x4001, 0 - jumpif 5, RecordCorner_EventScript_1A446C + goto_if 5, RecordCorner_EventScript_1A446C end RecordCorner_EventScript_1A4457:: @ 81A4457 setvar 0x8005, 3 - special 27 + special sub_80B929C waitstate compare 0x4001, 0 - jumpif 5, RecordCorner_EventScript_1A446C + goto_if 5, RecordCorner_EventScript_1A446C end RecordCorner_EventScript_1A446C:: @ 81A446C - bufferitem 1, 0x4001 + getitemname 1, 0x4001 message RecordCorner_Text_1A4E3B - waittext + waitmessage waitbutton releaseall end TradeRoom_ReadTrainerCard1:: @ 81A4479 message CableClub_LookAtTrainerCard1 - waittext + waitmessage waitbutton fadescreen 1 - special 42 + special sub_8083BDC waitstate end TradeRoom_ReadTrainerCard2:: @ 81A4487 message CableClub_LookAtTrainerCard2 - waittext + waitmessage waitbutton fadescreen 1 - special 42 + special sub_8083BDC waitstate end TradeRoom_TooBusyToNotice:: @ 81A4495 message CableClub_TooBusyToNotice - waittext + waitmessage waitbutton - closebutton + closemessage end SingleBattleColosseum_EventScript_1A449E:: @ 81A449E - special 295 + special sub_8064EAC message SingleBattleColosseum_Text_1A4D7E - waittext + waitmessage waitbutton - special 296 - closebutton + special sub_8064ED4 + closemessage end TradeCenter_EventScript_1A44AD:: @ 81A44AD - special 295 + special sub_8064EAC message TradeCenter_Text_1A4DAB - waittext + waitmessage waitbutton - special 296 - closebutton + special sub_8064ED4 + closemessage end RecordCorner_EventScript_1A44BC:: @ 81A44BC compare 0x4000, 0 - jumpif 5, RecordCorner_EventScript_1A44D6 - special 295 + goto_if 5, RecordCorner_EventScript_1A44D6 + special sub_8064EAC message RecordCorner_Text_1A4DD7 - waittext + waitmessage waitbutton - special 296 - closebutton + special sub_8064ED4 + closemessage end RecordCorner_EventScript_1A44D6:: @ 81A44D6 - special 295 + special sub_8064EAC message RecordCorner_Text_1A4DF7 - waittext + waitmessage waitbutton - special 296 - closebutton + special sub_8064ED4 + closemessage end TradeRoom_PromptToCancelLink:: @ 81A44E5 msgbox TradeRoom_WillLinkBeTerminated, 5 compare RESULT, 1 - jumpeq TradeRoom_TerminateLink - hidebox 0, 0, 29, 19 + goto_if_eq TradeRoom_TerminateLink + erasebox 0, 0, 29, 19 end TradeRoom_TerminateLink:: @ 81A44FE - message2 TradeRoom_TerminatingLink - waittext - special 5 + messageautoscroll TradeRoom_TerminatingLink + waitmessage + special sub_80839D0 end gUnknown_081A4508:: @ 81A4508 - special 4 - special 3 + special sub_80839A4 + special sub_80810DC waitstate end diff --git a/data/scripts/contest_hall.inc b/data/scripts/contest_hall.inc index a8b134c0b..1b5c29fee 100644 --- a/data/scripts/contest_hall.inc +++ b/data/scripts/contest_hall.inc @@ -6,18 +6,18 @@ VerdanturfTown_ContestLobby_EventScript_1A4E92:: @ 81A4E92 faceplayer checkitem ITEM_CONTEST_PASS, 1 compare RESULT, 0 - callif 1, FallarborTown_ContestLobby_EventScript_1A4EDD + call_if 1, FallarborTown_ContestLobby_EventScript_1A4EDD compare 0x408a, 0 - jumpif 5, FallarborTown_ContestLobby_EventScript_1A4F4E + goto_if 5, FallarborTown_ContestLobby_EventScript_1A4F4E checkflag 1 - jumpeq FallarborTown_ContestLobby_EventScript_1A4F8F - bufferstd 0, 0x800b + goto_if_eq FallarborTown_ContestLobby_EventScript_1A4F8F + getstdstring 0, 0x800b msgbox FallarborTown_ContestLobby_Text_1A5DFC, 4 checkitem ITEM_CONTEST_PASS, 1 compare RESULT, 0 - jumpeq FallarborTown_ContestLobby_EventScript_1A4EE1 + goto_if_eq FallarborTown_ContestLobby_EventScript_1A4EE1 setflag 1 - jump FallarborTown_ContestLobby_EventScript_1A4F8F + goto FallarborTown_ContestLobby_EventScript_1A4F8F end FallarborTown_ContestLobby_EventScript_1A4EDD:: @ 81A4EDD @@ -26,7 +26,7 @@ FallarborTown_ContestLobby_EventScript_1A4EDD:: @ 81A4EDD FallarborTown_ContestLobby_EventScript_1A4EE1:: @ 81A4EE1 compare CONTEST_RANK, 0 - jumpeq FallarborTown_ContestLobby_EventScript_1A4EF6 + goto_if_eq FallarborTown_ContestLobby_EventScript_1A4EF6 msgbox FallarborTown_ContestLobby_Text_1A6340, 4 releaseall end @@ -34,20 +34,20 @@ FallarborTown_ContestLobby_EventScript_1A4EE1:: @ 81A4EE1 FallarborTown_ContestLobby_EventScript_1A4EF6:: @ 81A4EF6 msgbox FallarborTown_ContestLobby_Text_1A64F4, 5 compare RESULT, 1 - jumpeq FallarborTown_ContestLobby_EventScript_1A4F13 + goto_if_eq FallarborTown_ContestLobby_EventScript_1A4F13 msgbox FallarborTown_ContestLobby_Text_1A65EA, 4 releaseall end FallarborTown_ContestLobby_EventScript_1A4F13:: @ 81A4F13 checkflag 150 - jumpeq FallarborTown_ContestLobby_EventScript_1A4F44 + goto_if_eq FallarborTown_ContestLobby_EventScript_1A4F44 msgbox FallarborTown_ContestLobby_Text_1A6583, 4 giveitem ITEM_CONTEST_PASS setflag 150 setflag 1 msgbox FallarborTown_ContestLobby_Text_1A5E98, 4 - jump FallarborTown_ContestLobby_EventScript_1A4F8F + goto FallarborTown_ContestLobby_EventScript_1A4F8F end FallarborTown_ContestLobby_EventScript_1A4F44:: @ 81A4F44 @@ -64,9 +64,9 @@ FallarborTown_ContestLobby_EventScript_1A4F4E:: @ 81A4F4E FallarborTown_ContestLobby_EventScript_1A4F67:: @ 81A4F67 giveitem ITEM_LUXURY_BALL compare RESULT, 0 - jumpeq FallarborTown_ContestLobby_EventScript_1A4F86 + goto_if_eq FallarborTown_ContestLobby_EventScript_1A4F86 setvar 0x408a, 0 - closebutton + closemessage release end @@ -76,7 +76,7 @@ FallarborTown_ContestLobby_EventScript_1A4F86:: @ 81A4F86 FallarborTown_ContestLobby_EventScript_1A4F8F:: @ 81A4F8F message FallarborTown_ContestLobby_Text_1A5E46 - waittext + waitmessage multichoice 0, 0, 2, 0 switch RESULT case 0, FallarborTown_ContestLobby_EventScript_1A5097 @@ -87,7 +87,7 @@ FallarborTown_ContestLobby_EventScript_1A4F8F:: @ 81A4F8F FallarborTown_ContestLobby_EventScript_1A4FCC:: @ 81A4FCC message FallarborTown_ContestLobby_Text_1A5E7C - waittext + waitmessage multichoice 0, 0, 3, 0 switch RESULT case 0, FallarborTown_ContestLobby_EventScript_1A5014 @@ -99,17 +99,17 @@ FallarborTown_ContestLobby_EventScript_1A4FCC:: @ 81A4FCC FallarborTown_ContestLobby_EventScript_1A5014:: @ 81A5014 msgbox FallarborTown_ContestLobby_Text_1A5E98, 4 - jump FallarborTown_ContestLobby_EventScript_1A4FCC + goto FallarborTown_ContestLobby_EventScript_1A4FCC end FallarborTown_ContestLobby_EventScript_1A5022:: @ 81A5022 msgbox FallarborTown_ContestLobby_Text_1A609B, 4 - jump FallarborTown_ContestLobby_EventScript_1A4FCC + goto FallarborTown_ContestLobby_EventScript_1A4FCC end FallarborTown_ContestLobby_EventScript_1A5030:: @ 81A5030 msgbox FallarborTown_ContestLobby_Text_1A613F, 4 - jump FallarborTown_ContestLobby_EventScript_1A4FCC + goto FallarborTown_ContestLobby_EventScript_1A4FCC end FallarborTown_ContestLobby_EventScript_1A503E:: @ 81A503E @@ -121,34 +121,34 @@ FallarborTown_ContestLobby_EventScript_1A5048:: @ 81A5048 msgbox FallarborTown_ContestLobby_Text_1A6319, 4 choosecontestpkmn compare 0x8004, 255 - jumpeq FallarborTown_ContestLobby_EventScript_1A5097 - special 84 + goto_if_eq FallarborTown_ContestLobby_EventScript_1A5097 + special sub_80C43F4 compare RESULT, 0 - jumpeq FallarborTown_ContestLobby_EventScript_1A50C8 + goto_if_eq FallarborTown_ContestLobby_EventScript_1A50C8 compare RESULT, 1 - jumpeq FallarborTown_ContestLobby_EventScript_1A50D7 + goto_if_eq FallarborTown_ContestLobby_EventScript_1A50D7 compare RESULT, 2 - jumpeq FallarborTown_ContestLobby_EventScript_1A50FB + goto_if_eq FallarborTown_ContestLobby_EventScript_1A50FB compare RESULT, 3 - jumpeq FallarborTown_ContestLobby_EventScript_1A511F + goto_if_eq FallarborTown_ContestLobby_EventScript_1A511F compare RESULT, 4 - jumpeq FallarborTown_ContestLobby_EventScript_1A512E + goto_if_eq FallarborTown_ContestLobby_EventScript_1A512E end FallarborTown_ContestLobby_EventScript_1A5097:: @ 81A5097 message FallarborTown_ContestLobby_Text_1A6623 - waittext + waitmessage multichoice 0, 0, 4, 0 switch RESULT case 5, FallarborTown_ContestLobby_EventScript_1A503E case 127, FallarborTown_ContestLobby_EventScript_1A503E copyvar CONTEST_CATEGORY, RESULT - jump FallarborTown_ContestLobby_EventScript_1A5048 + goto FallarborTown_ContestLobby_EventScript_1A5048 end FallarborTown_ContestLobby_EventScript_1A50C8:: @ 81A50C8 msgbox FallarborTown_ContestLobby_Text_1A664A, 4 - jump FallarborTown_ContestLobby_EventScript_1A5048 + goto FallarborTown_ContestLobby_EventScript_1A5048 release end @@ -168,19 +168,19 @@ FallarborTown_ContestLobby_EventScript_1A50FB:: @ 81A50FB FallarborTown_ContestLobby_EventScript_1A511F:: @ 81A511F msgbox FallarborTown_ContestLobby_Text_1A669F, 4 - jump FallarborTown_ContestLobby_EventScript_1A5048 + goto FallarborTown_ContestLobby_EventScript_1A5048 release end FallarborTown_ContestLobby_EventScript_1A512E:: @ 81A512E msgbox FallarborTown_ContestLobby_Text_1A66DC, 4 - jump FallarborTown_ContestLobby_EventScript_1A5048 + goto FallarborTown_ContestLobby_EventScript_1A5048 release end FallarborTown_ContestLobby_EventScript_1A513D:: @ 81A513D msgbox FallarborTown_ContestLobby_Text_1A67C1, 4 - closebutton + closemessage releaseall setvar 0x4086, 1 return @@ -188,10 +188,10 @@ FallarborTown_ContestLobby_EventScript_1A513D:: @ 81A513D LinkContestRoom1_EventScript_1A514D:: @ 81A514D setvar 0x8006, 0 lockall - move 14, LinkContestRoom1_Movement_1A5DBF - waitmove 0 - move 1, LinkContestRoom1_Movement_1A5D85 - waitmove 0 + applymovement 14, LinkContestRoom1_Movement_1A5DBF + waitmovement 0 + applymovement 1, LinkContestRoom1_Movement_1A5D85 + waitmovement 0 releaseall call LinkContestRoom1_EventScript_1A51A0 call LinkContestRoom1_EventScript_1A51EA @@ -260,24 +260,24 @@ LinkContestRoom1_EventScript_1A523F:: @ 81A523F return LinkContestRoom1_EventScript_1A5245:: @ 81A5245 - bufferstd 1, 0x8008 - bufferstd 2, 0x8009 + getstdstring 1, 0x8008 + getstdstring 2, 0x8009 call LinkContestRoom1_EventScript_1A525F lockall - move 1, LinkContestRoom1_Movement_1A5D87 - waitmove 0 + applymovement 1, LinkContestRoom1_Movement_1A5D87 + waitmovement 0 releaseall return LinkContestRoom1_EventScript_1A525F:: @ 81A525F compare 0x4088, 5 - jumpeq LinkContestRoom1_EventScript_1A5273 + goto_if_eq LinkContestRoom1_EventScript_1A5273 msgbox LinkContestRoom1_Text_1A68F0, 3 return LinkContestRoom1_EventScript_1A5273:: @ 81A5273 - message2 LinkContestRoom1_Text_1A6976 - waittext + messageautoscroll LinkContestRoom1_Text_1A6976 + waitmessage return LinkContestRoom1_EventScript_1A527A:: @ 81A527A @@ -288,159 +288,159 @@ LinkContestRoom1_EventScript_1A527A:: @ 81A527A call LinkContestRoom1_EventScript_1A5880 addvar 0x8006, 1 compare 0x8006, 4 - jumpif 5, LinkContestRoom1_EventScript_1A527A + goto_if 5, LinkContestRoom1_EventScript_1A527A call LinkContestRoom1_EventScript_1A5377 setvar 0x4001, 6 return LinkContestRoom1_EventScript_1A52AE:: @ 81A52AE compare 0x8006, 0 - jumpeq LinkContestRoom1_EventScript_1A52DB + goto_if_eq LinkContestRoom1_EventScript_1A52DB compare 0x8006, 1 - jumpeq LinkContestRoom1_EventScript_1A52ED + goto_if_eq LinkContestRoom1_EventScript_1A52ED compare 0x8006, 2 - jumpeq LinkContestRoom1_EventScript_1A52FF + goto_if_eq LinkContestRoom1_EventScript_1A52FF compare 0x8006, 3 - jumpeq LinkContestRoom1_EventScript_1A5311 + goto_if_eq LinkContestRoom1_EventScript_1A5311 return LinkContestRoom1_EventScript_1A52DB:: @ 81A52DB lockall - move 3, LinkContestRoom1_Movement_1A5DCE - waitmove 0 + applymovement 3, LinkContestRoom1_Movement_1A5DCE + waitmovement 0 releaseall setvar 0x800b, 3 return LinkContestRoom1_EventScript_1A52ED:: @ 81A52ED lockall - move 4, LinkContestRoom1_Movement_1A5DDA - waitmove 0 + applymovement 4, LinkContestRoom1_Movement_1A5DDA + waitmovement 0 releaseall setvar 0x800b, 4 return LinkContestRoom1_EventScript_1A52FF:: @ 81A52FF lockall - move 5, LinkContestRoom1_Movement_1A5DE2 - waitmove 0 + applymovement 5, LinkContestRoom1_Movement_1A5DE2 + waitmovement 0 releaseall setvar 0x800b, 5 return LinkContestRoom1_EventScript_1A5311:: @ 81A5311 lockall - move 14, LinkContestRoom1_Movement_1A5DEA - waitmove 0 + applymovement 14, LinkContestRoom1_Movement_1A5DEA + waitmovement 0 releaseall setvar 0x800b, 14 return LinkContestRoom1_EventScript_1A5323:: @ 81A5323 - special 81 + special sub_80C4C64 addvar 0x8006, 1 - buffernum 1, 0x8006 + getnumberstring 1, 0x8006 lockall - move 0x800b, LinkContestRoom1_Movement_1A5D9C - waitmove 0 + applymovement 0x800b, LinkContestRoom1_Movement_1A5D9C + waitmovement 0 releaseall - reappear 13 - playsfx 10 + addobject 13 + playse 10 lockall - move 0x800b, LinkContestRoom1_Movement_1A5D9C - waitmove 0 + applymovement 0x800b, LinkContestRoom1_Movement_1A5D9C + waitmovement 0 releaseall addvar 0x8006, -1 - playsfx 15 - special 320 + playse 15 + special ShowContestEntryMonPic call LinkContestRoom1_EventScript_1A535E return LinkContestRoom1_EventScript_1A535E:: @ 81A535E compare 0x4088, 5 - jumpeq LinkContestRoom1_EventScript_1A5370 + goto_if_eq LinkContestRoom1_EventScript_1A5370 message LinkContestRoom1_Text_1A6A04 - waittext + waitmessage return LinkContestRoom1_EventScript_1A5370:: @ 81A5370 - message2 LinkContestRoom1_Text_1A6A04 - waittext + messageautoscroll LinkContestRoom1_Text_1A6A04 + waitmessage return LinkContestRoom1_EventScript_1A5377:: @ 81A5377 call LinkContestRoom1_EventScript_1A53B3 call LinkContestRoom1_EventScript_1A53CE - playsfx 223 - waittext + playse 223 + waitmessage call LinkContestRoom1_EventScript_1A5A90 - move 1, LinkContestRoom1_Movement_1A5D9F - waitmove 0 - move 2, LinkContestRoom1_Movement_1A5DA1 - waitmove 0 - pause 20 - move 1, LinkContestRoom1_Movement_1A5D8F - move 2, LinkContestRoom1_Movement_1A5D8F - waitmove 0 + applymovement 1, LinkContestRoom1_Movement_1A5D9F + waitmovement 0 + applymovement 2, LinkContestRoom1_Movement_1A5DA1 + waitmovement 0 + delay 20 + applymovement 1, LinkContestRoom1_Movement_1A5D8F + applymovement 2, LinkContestRoom1_Movement_1A5D8F + waitmovement 0 return LinkContestRoom1_EventScript_1A53B3:: @ 81A53B3 compare 0x4088, 5 - jumpeq LinkContestRoom1_EventScript_1A53C7 + goto_if_eq LinkContestRoom1_EventScript_1A53C7 msgbox LinkContestRoom1_Text_1A6A1F, 4 return LinkContestRoom1_EventScript_1A53C7:: @ 81A53C7 - message2 LinkContestRoom1_Text_1A6A1F - waittext + messageautoscroll LinkContestRoom1_Text_1A6A1F + waitmessage return LinkContestRoom1_EventScript_1A53CE:: @ 81A53CE compare 0x4088, 5 - jumpeq LinkContestRoom1_EventScript_1A53DF + goto_if_eq LinkContestRoom1_EventScript_1A53DF message LinkContestRoom1_Text_1A6AE1 return LinkContestRoom1_EventScript_1A53DF:: @ 81A53DF - message2 LinkContestRoom1_Text_1A6AE1 + messageautoscroll LinkContestRoom1_Text_1A6AE1 return LinkContestRoom1_EventScript_1A53E5:: @ 81A53E5 - move 1, LinkContestRoom1_Movement_1A5DAF - waitmove 0 - playsfx 223 + applymovement 1, LinkContestRoom1_Movement_1A5DAF + waitmovement 0 + playse 223 call LinkContestRoom1_EventScript_1A5AE4 - move 9, LinkContestRoom1_Movement_1A5DB7 - move 12, LinkContestRoom1_Movement_1A5DBB - move 7, LinkContestRoom1_Movement_1A5DB7 - waitmove 0 - move 1, LinkContestRoom1_Movement_1A5DB7 - waitmove 0 - move 10, LinkContestRoom1_Movement_1A5DAF - move 11, LinkContestRoom1_Movement_1A5DBB - move 6, LinkContestRoom1_Movement_1A5DB3 - move 8, LinkContestRoom1_Movement_1A5DAF - waitmove 0 - move 1, LinkContestRoom1_Movement_1A5DC1 - waitmove 0 - move 1, LinkContestRoom1_Movement_1A5DCA - move 2, LinkContestRoom1_Movement_1A5DC5 - waitmove 0 + applymovement 9, LinkContestRoom1_Movement_1A5DB7 + applymovement 12, LinkContestRoom1_Movement_1A5DBB + applymovement 7, LinkContestRoom1_Movement_1A5DB7 + waitmovement 0 + applymovement 1, LinkContestRoom1_Movement_1A5DB7 + waitmovement 0 + applymovement 10, LinkContestRoom1_Movement_1A5DAF + applymovement 11, LinkContestRoom1_Movement_1A5DBB + applymovement 6, LinkContestRoom1_Movement_1A5DB3 + applymovement 8, LinkContestRoom1_Movement_1A5DAF + waitmovement 0 + applymovement 1, LinkContestRoom1_Movement_1A5DC1 + waitmovement 0 + applymovement 1, LinkContestRoom1_Movement_1A5DCA + applymovement 2, LinkContestRoom1_Movement_1A5DC5 + waitmovement 0 releaseall return LinkContestRoom1_EventScript_1A5455:: @ 81A5455 - special 87 + special sub_80C47A0 compare 0x4088, 1 - callif 1, LinkContestRoom1_EventScript_1A555A + call_if 1, LinkContestRoom1_EventScript_1A555A compare 0x4088, 2 - callif 1, LinkContestRoom1_EventScript_1A55B8 + call_if 1, LinkContestRoom1_EventScript_1A55B8 compare 0x4088, 3 - callif 1, LinkContestRoom1_EventScript_1A5616 + call_if 1, LinkContestRoom1_EventScript_1A5616 compare 0x4088, 4 - callif 1, LinkContestRoom1_EventScript_1A5674 + call_if 1, LinkContestRoom1_EventScript_1A5674 compare 0x4088, 5 - callif 1, LinkContestRoom1_EventScript_1A56D2 + call_if 1, LinkContestRoom1_EventScript_1A56D2 setvar 0x4001, 9 setvar 0x4002, 9 setvar 0x4003, 9 @@ -450,7 +450,7 @@ LinkContestRoom1_EventScript_1A5455:: @ 81A5455 setvar 0x4007, 9 setvar 0x4008, 9 compare 0x4000, 0 - callif 2, LinkContestRoom1_EventScript_1A54EB + call_if 2, LinkContestRoom1_EventScript_1A54EB setvar 0x4001, 0 setvar 0x4002, 0 setvar 0x4003, 0 @@ -463,125 +463,125 @@ LinkContestRoom1_EventScript_1A5455:: @ 81A5455 LinkContestRoom1_EventScript_1A54EB:: @ 81A54EB setvar RESULT, 8 - special 340 + special ScriptRandom compare RESULT, 0 - callif 1, LinkContestRoom1_EventScript_1A5760 + call_if 1, LinkContestRoom1_EventScript_1A5760 compare RESULT, 1 - callif 1, LinkContestRoom1_EventScript_1A5784 + call_if 1, LinkContestRoom1_EventScript_1A5784 compare RESULT, 2 - callif 1, LinkContestRoom1_EventScript_1A57A8 + call_if 1, LinkContestRoom1_EventScript_1A57A8 compare RESULT, 3 - callif 1, LinkContestRoom1_EventScript_1A57CC + call_if 1, LinkContestRoom1_EventScript_1A57CC compare RESULT, 4 - callif 1, LinkContestRoom1_EventScript_1A57F0 + call_if 1, LinkContestRoom1_EventScript_1A57F0 compare RESULT, 5 - callif 1, LinkContestRoom1_EventScript_1A5814 + call_if 1, LinkContestRoom1_EventScript_1A5814 compare RESULT, 6 - callif 1, LinkContestRoom1_EventScript_1A5838 + call_if 1, LinkContestRoom1_EventScript_1A5838 compare RESULT, 7 - callif 1, LinkContestRoom1_EventScript_1A585C + call_if 1, LinkContestRoom1_EventScript_1A585C compare 0x4000, 0 - jumpif 2, LinkContestRoom1_EventScript_1A54EB - waitmove 0 + goto_if 2, LinkContestRoom1_EventScript_1A54EB + waitmovement 0 return LinkContestRoom1_EventScript_1A555A:: @ 81A555A compare 0x8004, 80 - jumpif 2, LinkContestRoom1_EventScript_1A575A + goto_if 2, LinkContestRoom1_EventScript_1A575A compare 0x8004, 70 - jumpif 2, LinkContestRoom1_EventScript_1A5754 + goto_if 2, LinkContestRoom1_EventScript_1A5754 compare 0x8004, 60 - jumpif 2, LinkContestRoom1_EventScript_1A574E + goto_if 2, LinkContestRoom1_EventScript_1A574E compare 0x8004, 50 - jumpif 2, LinkContestRoom1_EventScript_1A5748 + goto_if 2, LinkContestRoom1_EventScript_1A5748 compare 0x8004, 40 - jumpif 2, LinkContestRoom1_EventScript_1A5742 + goto_if 2, LinkContestRoom1_EventScript_1A5742 compare 0x8004, 30 - jumpif 2, LinkContestRoom1_EventScript_1A573C + goto_if 2, LinkContestRoom1_EventScript_1A573C compare 0x8004, 20 - jumpif 2, LinkContestRoom1_EventScript_1A5736 + goto_if 2, LinkContestRoom1_EventScript_1A5736 compare 0x8004, 10 - jumpif 2, LinkContestRoom1_EventScript_1A5730 + goto_if 2, LinkContestRoom1_EventScript_1A5730 setvar 0x4000, 0 return LinkContestRoom1_EventScript_1A55B8:: @ 81A55B8 compare 0x8004, 230 - jumpif 2, LinkContestRoom1_EventScript_1A575A + goto_if 2, LinkContestRoom1_EventScript_1A575A compare 0x8004, 210 - jumpif 2, LinkContestRoom1_EventScript_1A5754 + goto_if 2, LinkContestRoom1_EventScript_1A5754 compare 0x8004, 190 - jumpif 2, LinkContestRoom1_EventScript_1A574E + goto_if 2, LinkContestRoom1_EventScript_1A574E compare 0x8004, 170 - jumpif 2, LinkContestRoom1_EventScript_1A5748 + goto_if 2, LinkContestRoom1_EventScript_1A5748 compare 0x8004, 150 - jumpif 2, LinkContestRoom1_EventScript_1A5742 + goto_if 2, LinkContestRoom1_EventScript_1A5742 compare 0x8004, 130 - jumpif 2, LinkContestRoom1_EventScript_1A573C + goto_if 2, LinkContestRoom1_EventScript_1A573C compare 0x8004, 110 - jumpif 2, LinkContestRoom1_EventScript_1A5736 + goto_if 2, LinkContestRoom1_EventScript_1A5736 compare 0x8004, 90 - jumpif 2, LinkContestRoom1_EventScript_1A5730 + goto_if 2, LinkContestRoom1_EventScript_1A5730 setvar 0x4000, 0 return LinkContestRoom1_EventScript_1A5616:: @ 81A5616 compare 0x8004, 380 - jumpif 2, LinkContestRoom1_EventScript_1A575A + goto_if 2, LinkContestRoom1_EventScript_1A575A compare 0x8004, 350 - jumpif 2, LinkContestRoom1_EventScript_1A5754 + goto_if 2, LinkContestRoom1_EventScript_1A5754 compare 0x8004, 320 - jumpif 2, LinkContestRoom1_EventScript_1A574E + goto_if 2, LinkContestRoom1_EventScript_1A574E compare 0x8004, 290 - jumpif 2, LinkContestRoom1_EventScript_1A5748 + goto_if 2, LinkContestRoom1_EventScript_1A5748 compare 0x8004, 260 - jumpif 2, LinkContestRoom1_EventScript_1A5742 + goto_if 2, LinkContestRoom1_EventScript_1A5742 compare 0x8004, 230 - jumpif 2, LinkContestRoom1_EventScript_1A573C + goto_if 2, LinkContestRoom1_EventScript_1A573C compare 0x8004, 200 - jumpif 2, LinkContestRoom1_EventScript_1A5736 + goto_if 2, LinkContestRoom1_EventScript_1A5736 compare 0x8004, 170 - jumpif 2, LinkContestRoom1_EventScript_1A5730 + goto_if 2, LinkContestRoom1_EventScript_1A5730 setvar 0x4000, 0 return LinkContestRoom1_EventScript_1A5674:: @ 81A5674 compare 0x8004, 600 - jumpif 2, LinkContestRoom1_EventScript_1A575A + goto_if 2, LinkContestRoom1_EventScript_1A575A compare 0x8004, 560 - jumpif 2, LinkContestRoom1_EventScript_1A5754 + goto_if 2, LinkContestRoom1_EventScript_1A5754 compare 0x8004, 520 - jumpif 2, LinkContestRoom1_EventScript_1A574E + goto_if 2, LinkContestRoom1_EventScript_1A574E compare 0x8004, 480 - jumpif 2, LinkContestRoom1_EventScript_1A5748 + goto_if 2, LinkContestRoom1_EventScript_1A5748 compare 0x8004, 440 - jumpif 2, LinkContestRoom1_EventScript_1A5742 + goto_if 2, LinkContestRoom1_EventScript_1A5742 compare 0x8004, 400 - jumpif 2, LinkContestRoom1_EventScript_1A573C + goto_if 2, LinkContestRoom1_EventScript_1A573C compare 0x8004, 360 - jumpif 2, LinkContestRoom1_EventScript_1A5736 + goto_if 2, LinkContestRoom1_EventScript_1A5736 compare 0x8004, 320 - jumpif 2, LinkContestRoom1_EventScript_1A5730 + goto_if 2, LinkContestRoom1_EventScript_1A5730 setvar 0x4000, 0 return LinkContestRoom1_EventScript_1A56D2:: @ 81A56D2 compare 0x8004, 600 - jumpif 2, LinkContestRoom1_EventScript_1A575A + goto_if 2, LinkContestRoom1_EventScript_1A575A compare 0x8004, 550 - jumpif 2, LinkContestRoom1_EventScript_1A5754 + goto_if 2, LinkContestRoom1_EventScript_1A5754 compare 0x8004, 500 - jumpif 2, LinkContestRoom1_EventScript_1A574E + goto_if 2, LinkContestRoom1_EventScript_1A574E compare 0x8004, 450 - jumpif 2, LinkContestRoom1_EventScript_1A5748 + goto_if 2, LinkContestRoom1_EventScript_1A5748 compare 0x8004, 400 - jumpif 2, LinkContestRoom1_EventScript_1A5742 + goto_if 2, LinkContestRoom1_EventScript_1A5742 compare 0x8004, 300 - jumpif 2, LinkContestRoom1_EventScript_1A573C + goto_if 2, LinkContestRoom1_EventScript_1A573C compare 0x8004, 200 - jumpif 2, LinkContestRoom1_EventScript_1A5736 + goto_if 2, LinkContestRoom1_EventScript_1A5736 compare 0x8004, 100 - jumpif 2, LinkContestRoom1_EventScript_1A5730 + goto_if 2, LinkContestRoom1_EventScript_1A5730 setvar 0x4000, 0 return @@ -619,10 +619,10 @@ LinkContestRoom1_EventScript_1A575A:: @ 81A575A LinkContestRoom1_EventScript_1A5760:: @ 81A5760 compare 0x4001, 1 - jumpeq LinkContestRoom1_EventScript_1A5783 - move 6, LinkContestRoom1_Movement_1A5D8D - playsfx 21 - pause 14 + goto_if_eq LinkContestRoom1_EventScript_1A5783 + applymovement 6, LinkContestRoom1_Movement_1A5D8D + playse 21 + delay 14 setvar 0x4001, 1 addvar 0x4000, 65535 return @@ -632,10 +632,10 @@ LinkContestRoom1_EventScript_1A5783:: @ 81A5783 LinkContestRoom1_EventScript_1A5784:: @ 81A5784 compare 0x4002, 1 - jumpeq LinkContestRoom1_EventScript_1A57A7 - move 12, LinkContestRoom1_Movement_1A5D8D - playsfx 21 - pause 14 + goto_if_eq LinkContestRoom1_EventScript_1A57A7 + applymovement 12, LinkContestRoom1_Movement_1A5D8D + playse 21 + delay 14 setvar 0x4002, 1 addvar 0x4000, 65535 return @@ -645,10 +645,10 @@ LinkContestRoom1_EventScript_1A57A7:: @ 81A57A7 LinkContestRoom1_EventScript_1A57A8:: @ 81A57A8 compare 0x4003, 1 - jumpeq LinkContestRoom1_EventScript_1A57CB - move 7, LinkContestRoom1_Movement_1A5D8D - playsfx 21 - pause 14 + goto_if_eq LinkContestRoom1_EventScript_1A57CB + applymovement 7, LinkContestRoom1_Movement_1A5D8D + playse 21 + delay 14 setvar 0x4003, 1 addvar 0x4000, 65535 return @@ -658,10 +658,10 @@ LinkContestRoom1_EventScript_1A57CB:: @ 81A57CB LinkContestRoom1_EventScript_1A57CC:: @ 81A57CC compare 0x4004, 1 - jumpeq LinkContestRoom1_EventScript_1A57EF - move 8, LinkContestRoom1_Movement_1A5D8D - playsfx 21 - pause 14 + goto_if_eq LinkContestRoom1_EventScript_1A57EF + applymovement 8, LinkContestRoom1_Movement_1A5D8D + playse 21 + delay 14 setvar 0x4004, 1 addvar 0x4000, 65535 return @@ -671,10 +671,10 @@ LinkContestRoom1_EventScript_1A57EF:: @ 81A57EF LinkContestRoom1_EventScript_1A57F0:: @ 81A57F0 compare 0x4005, 1 - jumpeq LinkContestRoom1_EventScript_1A5813 - move 9, LinkContestRoom1_Movement_1A5D8D - playsfx 21 - pause 14 + goto_if_eq LinkContestRoom1_EventScript_1A5813 + applymovement 9, LinkContestRoom1_Movement_1A5D8D + playse 21 + delay 14 setvar 0x4005, 1 addvar 0x4000, 65535 return @@ -684,10 +684,10 @@ LinkContestRoom1_EventScript_1A5813:: @ 81A5813 LinkContestRoom1_EventScript_1A5814:: @ 81A5814 compare 0x4006, 1 - jumpeq LinkContestRoom1_EventScript_1A5837 - move 10, LinkContestRoom1_Movement_1A5D8D - playsfx 21 - pause 14 + goto_if_eq LinkContestRoom1_EventScript_1A5837 + applymovement 10, LinkContestRoom1_Movement_1A5D8D + playse 21 + delay 14 setvar 0x4006, 1 addvar 0x4000, 65535 return @@ -697,10 +697,10 @@ LinkContestRoom1_EventScript_1A5837:: @ 81A5837 LinkContestRoom1_EventScript_1A5838:: @ 81A5838 compare 0x4007, 1 - jumpeq LinkContestRoom1_EventScript_1A585B - move 11, LinkContestRoom1_Movement_1A5D8D - playsfx 21 - pause 14 + goto_if_eq LinkContestRoom1_EventScript_1A585B + applymovement 11, LinkContestRoom1_Movement_1A5D8D + playse 21 + delay 14 setvar 0x4007, 1 addvar 0x4000, 65535 return @@ -710,10 +710,10 @@ LinkContestRoom1_EventScript_1A585B:: @ 81A585B LinkContestRoom1_EventScript_1A585C:: @ 81A585C compare 0x4008, 1 - jumpeq LinkContestRoom1_EventScript_1A587F - move 15, LinkContestRoom1_Movement_1A5D8D - playsfx 21 - pause 14 + goto_if_eq LinkContestRoom1_EventScript_1A587F + applymovement 15, LinkContestRoom1_Movement_1A5D8D + playse 21 + delay 14 setvar 0x4008, 1 addvar 0x4000, 65535 return @@ -722,10 +722,10 @@ LinkContestRoom1_EventScript_1A587F:: @ 81A587F return LinkContestRoom1_EventScript_1A5880:: @ 81A5880 - closebutton + closemessage release - disappear 13 - special 321 + removeobject 13 + special sub_80C5164 switch 0x8006 case 0, LinkContestRoom1_EventScript_1A58BA case 1, LinkContestRoom1_EventScript_1A58C7 @@ -735,129 +735,129 @@ LinkContestRoom1_EventScript_1A5880:: @ 81A5880 LinkContestRoom1_EventScript_1A58BA:: @ 81A58BA lockall - move 0x800b, LinkContestRoom1_Movement_1A5DD4 - waitmove 0 + applymovement 0x800b, LinkContestRoom1_Movement_1A5DD4 + waitmovement 0 releaseall return LinkContestRoom1_EventScript_1A58C7:: @ 81A58C7 lockall - move 0x800b, LinkContestRoom1_Movement_1A5DDE - waitmove 0 + applymovement 0x800b, LinkContestRoom1_Movement_1A5DDE + waitmovement 0 releaseall return LinkContestRoom1_EventScript_1A58D4:: @ 81A58D4 lockall - move 0x800b, LinkContestRoom1_Movement_1A5DE6 - waitmove 0 + applymovement 0x800b, LinkContestRoom1_Movement_1A5DE6 + waitmovement 0 releaseall return LinkContestRoom1_EventScript_1A58E1:: @ 81A58E1 lockall - move 0x800b, LinkContestRoom1_Movement_1A5DF0 - waitmove 0 + applymovement 0x800b, LinkContestRoom1_Movement_1A5DF0 + waitmovement 0 releaseall return LinkContestRoom1_EventScript_1A58EE:: @ 81A58EE lockall - move 1, LinkContestRoom1_Movement_1A5DA3 - waitmove 0 + applymovement 1, LinkContestRoom1_Movement_1A5DA3 + waitmovement 0 call LinkContestRoom1_EventScript_1A5930 - waittext - move 1, LinkContestRoom1_Movement_1A5D91 - move 2, LinkContestRoom1_Movement_1A5D95 - waitmove 0 + waitmessage + applymovement 1, LinkContestRoom1_Movement_1A5D91 + applymovement 2, LinkContestRoom1_Movement_1A5D95 + waitmovement 0 releaseall setvar 0x4009, 1 startcontest setvar 0x4009, 0 lockall - move 1, LinkContestRoom1_Movement_1A5D95 - move 2, LinkContestRoom1_Movement_1A5D91 - waitmove 0 + applymovement 1, LinkContestRoom1_Movement_1A5D95 + applymovement 2, LinkContestRoom1_Movement_1A5D91 + waitmovement 0 releaseall return LinkContestRoom1_EventScript_1A5930:: @ 81A5930 compare 0x4088, 5 - jumpeq LinkContestRoom1_EventScript_1A5944 + goto_if_eq LinkContestRoom1_EventScript_1A5944 msgbox LinkContestRoom1_Text_1A6AF5, 3 return LinkContestRoom1_EventScript_1A5944:: @ 81A5944 - message2 LinkContestRoom1_Text_1A6AF5 + messageautoscroll LinkContestRoom1_Text_1A6AF5 return LinkContestRoom1_EventScript_1A594A:: @ 81A594A call LinkContestRoom1_EventScript_1A5984 call LinkContestRoom1_EventScript_1A59A2 - move 1, LinkContestRoom1_Movement_1A5D8B - waitmove 0 + applymovement 1, LinkContestRoom1_Movement_1A5D8B + waitmovement 0 call LinkContestRoom1_EventScript_1A59C0 call LinkContestRoom1_EventScript_1A59DE - move 1, LinkContestRoom1_Movement_1A5D8F - waitmove 0 - closebutton + applymovement 1, LinkContestRoom1_Movement_1A5D8F + waitmovement 0 + closemessage releaseall setvar 0x4009, 1 showcontestresults setvar 0x4009, 0 - playmusic 439, 0 + playbgm 439, 0 return LinkContestRoom1_EventScript_1A5984:: @ 81A5984 compare 0x4088, 5 - jumpeq LinkContestRoom1_EventScript_1A5998 + goto_if_eq LinkContestRoom1_EventScript_1A5998 msgbox LinkContestRoom1_Text_1A6C06, 4 return LinkContestRoom1_EventScript_1A5998:: @ 81A5998 - message2 LinkContestRoom1_Text_1A6C06 - waittext - pause 30 + messageautoscroll LinkContestRoom1_Text_1A6C06 + waitmessage + delay 30 return LinkContestRoom1_EventScript_1A59A2:: @ 81A59A2 compare 0x4088, 5 - jumpeq LinkContestRoom1_EventScript_1A59B6 + goto_if_eq LinkContestRoom1_EventScript_1A59B6 msgbox LinkContestRoom1_Text_1A6C21, 4 return LinkContestRoom1_EventScript_1A59B6:: @ 81A59B6 - message2 LinkContestRoom1_Text_1A6C21 - waittext - pause 30 + messageautoscroll LinkContestRoom1_Text_1A6C21 + waitmessage + delay 30 return LinkContestRoom1_EventScript_1A59C0:: @ 81A59C0 compare 0x4088, 5 - jumpeq LinkContestRoom1_EventScript_1A59D4 + goto_if_eq LinkContestRoom1_EventScript_1A59D4 msgbox LinkContestRoom1_Text_1A6C9D, 4 return LinkContestRoom1_EventScript_1A59D4:: @ 81A59D4 - message2 LinkContestRoom1_Text_1A6C9D - waittext - pause 30 + messageautoscroll LinkContestRoom1_Text_1A6C9D + waitmessage + delay 30 return LinkContestRoom1_EventScript_1A59DE:: @ 81A59DE compare 0x4088, 5 - jumpeq LinkContestRoom1_EventScript_1A59F2 + goto_if_eq LinkContestRoom1_EventScript_1A59F2 msgbox LinkContestRoom1_Text_1A6D16, 4 return LinkContestRoom1_EventScript_1A59F2:: @ 81A59F2 - message2 LinkContestRoom1_Text_1A6D16 - waittext - pause 30 + messageautoscroll LinkContestRoom1_Text_1A6D16 + waitmessage + delay 30 return LinkContestRoom1_EventScript_1A59FC:: @ 81A59FC - special 76 + special sub_80C47C0 switch 0x8005 case 0, LinkContestRoom1_EventScript_1A5A31 case 1, LinkContestRoom1_EventScript_1A5A37 @@ -882,159 +882,159 @@ LinkContestRoom1_EventScript_1A5A43:: @ 81A5A43 return LinkContestRoom1_EventScript_1A5A49:: @ 81A5A49 - special 79 - special 80 + special sub_80C47F0 + special sub_80C4858 addvar 0x8005, 1 - buffernum 1, 0x8005 + getnumberstring 1, 0x8005 addvar 0x8005, -1 call LinkContestRoom1_EventScript_1A5A75 - move 0x4003, LinkContestRoom1_Movement_1A5D99 - waitmove 0 - playsfx 223 + applymovement 0x4003, LinkContestRoom1_Movement_1A5D99 + waitmovement 0 + playse 223 setvar 0x4001, 0 return LinkContestRoom1_EventScript_1A5A75:: @ 81A5A75 compare 0x4088, 5 - jumpeq LinkContestRoom1_EventScript_1A5A89 + goto_if_eq LinkContestRoom1_EventScript_1A5A89 msgbox LinkContestRoom1_Text_1A6D3C, 4 return LinkContestRoom1_EventScript_1A5A89:: @ 81A5A89 - message2 LinkContestRoom1_Text_1A6D3C - waittext + messageautoscroll LinkContestRoom1_Text_1A6D3C + waitmessage return LinkContestRoom1_EventScript_1A5A90:: @ 81A5A90 addvar 0x4001, 1 lockall compare 0x4088, 1 - callif 2, LinkContestRoom1_EventScript_1A5AE4 - move 9, LinkContestRoom1_Movement_1A5DB7 - move 12, LinkContestRoom1_Movement_1A5DBB - move 7, LinkContestRoom1_Movement_1A5DB7 - pause 30 - move 10, LinkContestRoom1_Movement_1A5DAF - move 11, LinkContestRoom1_Movement_1A5DBB - move 6, LinkContestRoom1_Movement_1A5DB3 - move 8, LinkContestRoom1_Movement_1A5DAF + call_if 2, LinkContestRoom1_EventScript_1A5AE4 + applymovement 9, LinkContestRoom1_Movement_1A5DB7 + applymovement 12, LinkContestRoom1_Movement_1A5DBB + applymovement 7, LinkContestRoom1_Movement_1A5DB7 + delay 30 + applymovement 10, LinkContestRoom1_Movement_1A5DAF + applymovement 11, LinkContestRoom1_Movement_1A5DBB + applymovement 6, LinkContestRoom1_Movement_1A5DB3 + applymovement 8, LinkContestRoom1_Movement_1A5DAF compare 0x4001, 4 - jumpif 5, LinkContestRoom1_EventScript_1A5A90 - pause 30 + goto_if 5, LinkContestRoom1_EventScript_1A5A90 + delay 30 return LinkContestRoom1_EventScript_1A5AE4:: @ 81A5AE4 - vspriteface 0, 1 - vspriteface 2, 1 - vspriteface 4, 4 - vspriteface 6, 1 - vspriteface 8, 1 - vspriteface 10, 1 - vspriteface 12, 1 - vspriteface 14, 1 - vspriteface 16, 1 - vspriteface 18, 1 - vspriteface 20, 4 - vspriteface 22, 4 - vspriteface 25, 4 - vspriteface 27, 3 - vspriteface 28, 4 - pause 10 - vspriteface 0, 4 - vspriteface 2, 4 - vspriteface 4, 4 - vspriteface 6, 4 - vspriteface 8, 4 - vspriteface 10, 3 - vspriteface 12, 3 - vspriteface 14, 3 - vspriteface 16, 3 - vspriteface 18, 3 - vspriteface 20, 1 - vspriteface 22, 1 - vspriteface 25, 2 - vspriteface 27, 2 - vspriteface 28, 2 - pause 10 - vspriteface 1, 2 - vspriteface 3, 2 - vspriteface 5, 2 - vspriteface 7, 2 - vspriteface 9, 4 - vspriteface 11, 2 - vspriteface 15, 2 - vspriteface 13, 2 - vspriteface 17, 2 - vspriteface 19, 2 - vspriteface 21, 3 - vspriteface 23, 3 - vspriteface 24, 3 - vspriteface 26, 4 - vspriteface 29, 3 - vspriteface 30, 3 - pause 10 - vspriteface 1, 4 - vspriteface 3, 4 - vspriteface 5, 4 - vspriteface 7, 4 - vspriteface 9, 4 - vspriteface 11, 3 - vspriteface 15, 3 - vspriteface 13, 3 - vspriteface 17, 3 - vspriteface 19, 3 - vspriteface 21, 1 - vspriteface 23, 1 - vspriteface 24, 1 - vspriteface 26, 2 - vspriteface 29, 2 - vspriteface 30, 2 - pause 10 + turnvobject 0, 1 + turnvobject 2, 1 + turnvobject 4, 4 + turnvobject 6, 1 + turnvobject 8, 1 + turnvobject 10, 1 + turnvobject 12, 1 + turnvobject 14, 1 + turnvobject 16, 1 + turnvobject 18, 1 + turnvobject 20, 4 + turnvobject 22, 4 + turnvobject 25, 4 + turnvobject 27, 3 + turnvobject 28, 4 + delay 10 + turnvobject 0, 4 + turnvobject 2, 4 + turnvobject 4, 4 + turnvobject 6, 4 + turnvobject 8, 4 + turnvobject 10, 3 + turnvobject 12, 3 + turnvobject 14, 3 + turnvobject 16, 3 + turnvobject 18, 3 + turnvobject 20, 1 + turnvobject 22, 1 + turnvobject 25, 2 + turnvobject 27, 2 + turnvobject 28, 2 + delay 10 + turnvobject 1, 2 + turnvobject 3, 2 + turnvobject 5, 2 + turnvobject 7, 2 + turnvobject 9, 4 + turnvobject 11, 2 + turnvobject 15, 2 + turnvobject 13, 2 + turnvobject 17, 2 + turnvobject 19, 2 + turnvobject 21, 3 + turnvobject 23, 3 + turnvobject 24, 3 + turnvobject 26, 4 + turnvobject 29, 3 + turnvobject 30, 3 + delay 10 + turnvobject 1, 4 + turnvobject 3, 4 + turnvobject 5, 4 + turnvobject 7, 4 + turnvobject 9, 4 + turnvobject 11, 3 + turnvobject 15, 3 + turnvobject 13, 3 + turnvobject 17, 3 + turnvobject 19, 3 + turnvobject 21, 1 + turnvobject 23, 1 + turnvobject 24, 1 + turnvobject 26, 2 + turnvobject 29, 2 + turnvobject 30, 2 + delay 10 return LinkContestRoom1_EventScript_1A5BAB:: @ 81A5BAB compare 0x4088, 5 - jumpeq LinkContestRoom1_EventScript_1A5C4C + goto_if_eq LinkContestRoom1_EventScript_1A5C4C call LinkContestRoom1_EventScript_1A5C12 checkflag 2 - jumpeq LinkContestRoom1_EventScript_1A5BF6 + goto_if_eq LinkContestRoom1_EventScript_1A5BF6 msgbox LinkContestRoom1_Text_1A6DC5, 3 - waittext + waitmessage call LinkContestRoom1_EventScript_1A5C7F call LinkContestRoom1_EventScript_1A5CE5 - playsfx 223 + playse 223 setvar 0x4001, 0 call LinkContestRoom1_EventScript_1A5A90 - pause 30 - special 134 + delay 30 + special sub_80C4CF8 compare 0x8004, 1 - jumpeq LinkContestRoom1_EventScript_1A5C46 + goto_if_eq LinkContestRoom1_EventScript_1A5C46 return LinkContestRoom1_EventScript_1A5BF6:: @ 81A5BF6 - inccounter GAME_STAT_WON_CONTEST + incrementgamestat GAME_STAT_WON_CONTEST msgbox LinkContestRoom1_Text_1A6DF1, 3 - pause 90 - special 134 + delay 90 + special sub_80C4CF8 compare 0x8004, 1 - jumpeq LinkContestRoom1_EventScript_1A5C46 + goto_if_eq LinkContestRoom1_EventScript_1A5C46 return LinkContestRoom1_EventScript_1A5C12:: @ 81A5C12 - specialval RESULT, 88 + specialvar RESULT, sub_80C4440 compare RESULT, 1 - jumpeq LinkContestRoom1_EventScript_1A5C23 + goto_if_eq LinkContestRoom1_EventScript_1A5C23 return LinkContestRoom1_EventScript_1A5C23:: @ 81A5C23 - special 76 + special sub_80C47C0 compare 0x8005, 3 - jumpeq LinkContestRoom1_EventScript_1A5C32 + goto_if_eq LinkContestRoom1_EventScript_1A5C32 return LinkContestRoom1_EventScript_1A5C32:: @ 81A5C32 compare CONTEST_RANK, 3 - jumpeq LinkContestRoom1_EventScript_1A5C41 + goto_if_eq LinkContestRoom1_EventScript_1A5C41 setflag 2 return @@ -1050,12 +1050,12 @@ LinkContestRoom1_EventScript_1A5C46:: @ 81A5C46 return LinkContestRoom1_EventScript_1A5C4C:: @ 81A5C4C - pause 60 + delay 60 call LinkContestRoom1_EventScript_1A5C6A - special 134 + special sub_80C4CF8 compare 0x8004, 1 - jumpeq LinkContestRoom1_EventScript_1A5C64 - closebutton + goto_if_eq LinkContestRoom1_EventScript_1A5C64 + closemessage return LinkContestRoom1_EventScript_1A5C64:: @ 81A5C64 @@ -1063,14 +1063,14 @@ LinkContestRoom1_EventScript_1A5C64:: @ 81A5C64 return LinkContestRoom1_EventScript_1A5C6A:: @ 81A5C6A - special 77 - special 76 - comparevars 0x8004, 0x8005 - jumpeq LinkContestRoom1_EventScript_1A5C7C + special sub_80C496C + special sub_80C47C0 + compare 0x8004, 0x8005 + goto_if_eq LinkContestRoom1_EventScript_1A5C7C return LinkContestRoom1_EventScript_1A5C7C:: @ 81A5C7C - inccounter GAME_STAT_WON_LINK_CONTEST + incrementgamestat GAME_STAT_WON_LINK_CONTEST return LinkContestRoom1_EventScript_1A5C7F:: @ 81A5C7F @@ -1083,48 +1083,48 @@ LinkContestRoom1_EventScript_1A5C7F:: @ 81A5C7F LinkContestRoom1_EventScript_1A5CB1:: @ 81A5CB1 lockall - move 0x4003, LinkContestRoom1_Movement_1A5DF6 - waitmove 0 + applymovement 0x4003, LinkContestRoom1_Movement_1A5DF6 + waitmovement 0 releaseall return LinkContestRoom1_EventScript_1A5CBE:: @ 81A5CBE lockall - move 0x4003, LinkContestRoom1_Movement_1A5DFA - waitmove 0 + applymovement 0x4003, LinkContestRoom1_Movement_1A5DFA + waitmovement 0 releaseall return LinkContestRoom1_EventScript_1A5CCB:: @ 81A5CCB lockall - move 0x4003, LinkContestRoom1_Movement_1A5DA5 - waitmove 0 + applymovement 0x4003, LinkContestRoom1_Movement_1A5DA5 + waitmovement 0 releaseall return LinkContestRoom1_EventScript_1A5CD8:: @ 81A5CD8 lockall - move 0x4003, LinkContestRoom1_Movement_1A5DA9 - waitmove 0 + applymovement 0x4003, LinkContestRoom1_Movement_1A5DA9 + waitmovement 0 releaseall return LinkContestRoom1_EventScript_1A5CE5:: @ 81A5CE5 - special 76 + special sub_80C47C0 compare 0x8005, 3 - jumpeq LinkContestRoom1_EventScript_1A5CFC + goto_if_eq LinkContestRoom1_EventScript_1A5CFC msgbox LinkContestRoom1_Text_1A6DF1, 3 return LinkContestRoom1_EventScript_1A5CFC:: @ 81A5CFC compare 0x4088, 2 - callif 1, LinkContestRoom1_EventScript_1A5C42 - inccounter GAME_STAT_WON_CONTEST - specialval RESULT, 88 + call_if 1, LinkContestRoom1_EventScript_1A5C42 + incrementgamestat GAME_STAT_WON_CONTEST + specialvar RESULT, sub_80C4440 compare RESULT, 0 - jumpeq LinkContestRoom1_EventScript_1A5D5B + goto_if_eq LinkContestRoom1_EventScript_1A5D5B compare CONTEST_RANK, 3 - jumpeq LinkContestRoom1_EventScript_1A5D3B + goto_if_eq LinkContestRoom1_EventScript_1A5D3B msgbox LinkContestRoom1_Text_1A6DF1, 3 return @@ -1136,20 +1136,20 @@ LinkContestRoom1_EventScript_1A5D2D:: @ 81A5D2D LinkContestRoom1_EventScript_1A5D3B:: @ 81A5D3B giveitem ITEM_LUXURY_BALL compare RESULT, 0 - jumpeq LinkContestRoom1_EventScript_1A5D2D + goto_if_eq LinkContestRoom1_EventScript_1A5D2D msgbox LinkContestRoom1_Text_1A6DF1, 3 return LinkContestRoom1_EventScript_1A5D5B:: @ 81A5D5B - special 89 - inccounter GAME_STAT_RECEIVED_RIBBONS + special sub_80C44C0 + incrementgamestat GAME_STAT_RECEIVED_RIBBONS setflag 2107 lockall msgbox LinkContestRoom1_Text_1A6D6A, 4 - fanfare 370 + playfanfare 370 msgbox LinkContestRoom1_Text_1A6D96, 4 waitfanfare - special 80 + special sub_80C4858 msgbox LinkContestRoom1_Text_1A6DAC, 4 releaseall return diff --git a/data/scripts/day_care.inc b/data/scripts/day_care.inc index 1e248ba9f..f8151b86a 100644 --- a/data/scripts/day_care.inc +++ b/data/scripts/day_care.inc @@ -1,14 +1,14 @@ Route117_EventScript_1B222D:: @ 81B222D lock faceplayer - special 181 - specialval RESULT, 182 + special sp0B5_daycare + specialvar RESULT, sp0B6_daycare compare RESULT, 1 - jumpeq Route117_EventScript_1B2262 + goto_if_eq Route117_EventScript_1B2262 compare RESULT, 2 - jumpeq Route117_EventScript_1B22E7 + goto_if_eq Route117_EventScript_1B22E7 compare RESULT, 3 - jumpeq Route117_EventScript_1B22FE + goto_if_eq Route117_EventScript_1B22FE msgbox Route117_Text_1B25CB, 4 release end @@ -16,40 +16,40 @@ Route117_EventScript_1B222D:: @ 81B222D Route117_EventScript_1B2262:: @ 81B2262 msgbox Route117_Text_1B2659, 5 compare RESULT, 1 - jumpeq Route117_EventScript_1B2298 + goto_if_eq Route117_EventScript_1B2298 msgbox Route117_Text_1B28C4, 5 compare RESULT, 1 - jumpeq Route117_EventScript_1B2298 + goto_if_eq Route117_EventScript_1B2298 msgbox Route117_Text_1B2745, 4 clearflag 134 - special 183 + special sub_8041E7C release end Route117_EventScript_1B2298:: @ 81B2298 - specialval RESULT, 131 + specialvar RESULT, CalculatePlayerPartyCount compare RESULT, 6 - jumpif 5, Route117_EventScript_1B22B2 + goto_if 5, Route117_EventScript_1B22B2 msgbox Route117_Text_1B2766, 4 release end Route117_EventScript_1B22B2:: @ 81B22B2 message Route117_Text_1B27A2 - fanfare 367 + playfanfare 367 waitfanfare - waittext + waitmessage waitbutton msgbox Route117_Text_1B27CD, 4 - special 184 + special sp0B8_daycare clearflag 134 release end Route117_EventScript_1B22CD:: @ 81B22CD - specialval RESULT, 195 + specialvar RESULT, sub_8042B4C compare RESULT, 1 - callif 1, Route117_EventScript_1B22DE + call_if 1, Route117_EventScript_1B22DE return Route117_EventScript_1B22DE:: @ 81B22DE @@ -57,7 +57,7 @@ Route117_EventScript_1B22DE:: @ 81B22DE return Route117_EventScript_1B22E7:: @ 81B22E7 - special 181 + special sp0B5_daycare msgbox Route117_Text_1B2710, 4 setvar 0x8004, 0 call Route117_EventScript_1B22CD @@ -65,11 +65,11 @@ Route117_EventScript_1B22E7:: @ 81B22E7 end Route117_EventScript_1B22FE:: @ 81B22FE - special 181 + special sp0B5_daycare msgbox Route117_Text_1B2897, 4 - special 185 - special 141 - waittext + special sp0B9_daycare_relationship_comment + special ShowFieldMessageStringVar4 + waitmessage waitbutton setvar 0x8004, 0 call Route117_EventScript_1B22CD @@ -81,43 +81,43 @@ Route117_EventScript_1B22FE:: @ 81B22FE Route117_PokemonDayCare_EventScript_1B2327:: @ 81B2327 lock faceplayer - specialval RESULT, 182 + specialvar RESULT, sp0B6_daycare compare RESULT, 1 - jumpeq Route117_PokemonDayCare_EventScript_1B2407 + goto_if_eq Route117_PokemonDayCare_EventScript_1B2407 compare RESULT, 2 - jumpeq Route117_PokemonDayCare_EventScript_1B242B + goto_if_eq Route117_PokemonDayCare_EventScript_1B242B compare RESULT, 3 - jumpeq Route117_PokemonDayCare_EventScript_1B2558 + goto_if_eq Route117_PokemonDayCare_EventScript_1B2558 msgbox Route117_PokemonDayCare_Text_1B28F2, 5 compare RESULT, 1 - jumpeq Route117_PokemonDayCare_EventScript_1B236C + goto_if_eq Route117_PokemonDayCare_EventScript_1B236C msgbox Route117_PokemonDayCare_Text_1B2A14, 4 release end Route117_PokemonDayCare_EventScript_1B236C:: @ 81B236C - specialval RESULT, 132 + specialvar RESULT, sub_8095B6C compare RESULT, 1 - jumpeq Route117_PokemonDayCare_EventScript_1B23F3 + goto_if_eq Route117_PokemonDayCare_EventScript_1B23F3 msgbox Route117_PokemonDayCare_Text_1B2947, 4 fadescreen 1 - special 188 + special ChooseSendDaycareMon waitstate compare 0x8004, 255 - jumpeq Route117_PokemonDayCare_EventScript_1B23D0 - specialval RESULT, 133 + goto_if_eq Route117_PokemonDayCare_EventScript_1B23D0 + specialvar RESULT, sub_8095C10 compare RESULT, 0 - jumpeq Route117_PokemonDayCare_EventScript_1B23FD - specialval 0x8005, 186 - checksound - pokecry 0x8005, 0 + goto_if_eq Route117_PokemonDayCare_EventScript_1B23FD + specialvar 0x8005, sub_8042328 + waitse + playpokecry 0x8005, 0 msgbox Route117_PokemonDayCare_Text_1B296E, 4 waitpokecry - special 187 - inccounter GAME_STAT_USED_DAYCARE - specialval RESULT, 182 + special Daycare_SendPokemon_Special + incrementgamestat GAME_STAT_USED_DAYCARE + specialvar RESULT, sp0B6_daycare compare RESULT, 2 - jumpeq Route117_PokemonDayCare_EventScript_1B23DA + goto_if_eq Route117_PokemonDayCare_EventScript_1B23DA release end @@ -129,8 +129,8 @@ Route117_PokemonDayCare_EventScript_1B23D0:: @ 81B23D0 Route117_PokemonDayCare_EventScript_1B23DA:: @ 81B23DA msgbox Route117_PokemonDayCare_Text_1B29AD, 5 compare RESULT, 1 - jumpeq Route117_PokemonDayCare_EventScript_1B236C - jump Route117_PokemonDayCare_EventScript_1B23D0 + goto_if_eq Route117_PokemonDayCare_EventScript_1B236C + goto Route117_PokemonDayCare_EventScript_1B23D0 end Route117_PokemonDayCare_EventScript_1B23F3:: @ 81B23F3 @@ -153,9 +153,9 @@ Route117_PokemonDayCare_EventScript_1B2411:: @ 81B2411 return Route117_PokemonDayCare_EventScript_1B241A:: @ 81B241A - specialval RESULT, 190 + specialvar RESULT, sub_80417B8 compare RESULT, 0 - callif 5, Route117_PokemonDayCare_EventScript_1B2411 + call_if 5, Route117_PokemonDayCare_EventScript_1B2411 return Route117_PokemonDayCare_EventScript_1B242B:: @ 81B242B @@ -164,67 +164,67 @@ Route117_PokemonDayCare_EventScript_1B242B:: @ 81B242B call Route117_PokemonDayCare_EventScript_1B241A msgbox Route117_PokemonDayCare_Text_1B29AD, 5 compare RESULT, 1 - jumpeq Route117_PokemonDayCare_EventScript_1B236C + goto_if_eq Route117_PokemonDayCare_EventScript_1B236C msgbox Route117_PokemonDayCare_Text_1B2BF6, 5 compare RESULT, 1 - jumpeq Route117_PokemonDayCare_EventScript_1B2469 - jump Route117_PokemonDayCare_EventScript_1B23D0 + goto_if_eq Route117_PokemonDayCare_EventScript_1B2469 + goto Route117_PokemonDayCare_EventScript_1B23D0 end Route117_PokemonDayCare_EventScript_1B2469:: @ 81B2469 - specialval RESULT, 131 + specialvar RESULT, CalculatePlayerPartyCount compare RESULT, 6 - jumpeq Route117_PokemonDayCare_EventScript_1B2539 - specialval RESULT, 182 + goto_if_eq Route117_PokemonDayCare_EventScript_1B2539 + specialvar RESULT, sp0B6_daycare setvar 0x8004, 0 compare RESULT, 2 - jumpeq Route117_PokemonDayCare_EventScript_1B24A8 - special 189 + goto_if_eq Route117_PokemonDayCare_EventScript_1B24A8 + special ShowDaycareLevelMenu waitstate copyvar 0x8004, RESULT compare RESULT, 2 - jumpeq Route117_PokemonDayCare_EventScript_1B23D0 - jump Route117_PokemonDayCare_EventScript_1B24A8 + goto_if_eq Route117_PokemonDayCare_EventScript_1B23D0 + goto Route117_PokemonDayCare_EventScript_1B24A8 end Route117_PokemonDayCare_EventScript_1B24A8:: @ 81B24A8 - special 191 + special sub_8041770 msgbox Route117_PokemonDayCare_Text_1B2B49, 5 compare RESULT, 1 - jumpeq Route117_PokemonDayCare_EventScript_1B24C4 - jump Route117_PokemonDayCare_EventScript_1B23D0 + goto_if_eq Route117_PokemonDayCare_EventScript_1B24C4 + goto Route117_PokemonDayCare_EventScript_1B23D0 end Route117_PokemonDayCare_EventScript_1B24C4:: @ 81B24C4 - specialval RESULT, 197 + specialvar RESULT, sub_80B7CE8 compare RESULT, 1 - jumpeq Route117_PokemonDayCare_EventScript_1B24DE + goto_if_eq Route117_PokemonDayCare_EventScript_1B24DE msgbox Route117_PokemonDayCare_Text_1B2A30, 4 release end Route117_PokemonDayCare_EventScript_1B24DE:: @ 81B24DE - move 1, Route117_PokemonDayCare_Movement_1B2543 - waitmove 0 - specialval RESULT, 192 - special 198 - playsfx 95 + applymovement 1, Route117_PokemonDayCare_Movement_1B2543 + waitmovement 0 + specialvar RESULT, sub_8041648 + special sub_80B7D0C + playse 95 msgbox Route117_PokemonDayCare_Text_1B2B75, 4 - checksound - pokecry RESULT, 0 + waitse + playpokecry RESULT, 0 msgbox Route117_PokemonDayCare_Text_1B2B93, 4 waitpokecry - specialval RESULT, 182 + specialvar RESULT, sp0B6_daycare compare RESULT, 2 - jumpeq Route117_PokemonDayCare_EventScript_1B2520 - jump Route117_PokemonDayCare_EventScript_1B23D0 + goto_if_eq Route117_PokemonDayCare_EventScript_1B2520 + goto Route117_PokemonDayCare_EventScript_1B23D0 end Route117_PokemonDayCare_EventScript_1B2520:: @ 81B2520 msgbox Route117_PokemonDayCare_Text_1B2A4F, 5 compare RESULT, 1 - jumpeq Route117_PokemonDayCare_EventScript_1B2469 - jump Route117_PokemonDayCare_EventScript_1B23D0 + goto_if_eq Route117_PokemonDayCare_EventScript_1B2469 + goto Route117_PokemonDayCare_EventScript_1B23D0 end Route117_PokemonDayCare_EventScript_1B2539:: @ 81B2539 @@ -265,27 +265,27 @@ Route117_PokemonDayCare_EventScript_1B2558:: @ 81B2558 call Route117_PokemonDayCare_EventScript_1B241A msgbox Route117_PokemonDayCare_Text_1B2BF6, 5 compare RESULT, 1 - jumpeq Route117_PokemonDayCare_EventScript_1B2469 + goto_if_eq Route117_PokemonDayCare_EventScript_1B2469 msgbox Route117_PokemonDayCare_Text_1B2A76, 4 release end @ 81B2591 - special 189 + special ShowDaycareLevelMenu waitstate compare RESULT, 2 - jumpeq Route117_PokemonDayCare_EventScript_1B23D0 + goto_if_eq Route117_PokemonDayCare_EventScript_1B23D0 copyvar 0x8004, RESULT - specialval RESULT, 192 + specialvar RESULT, sub_8041648 msgbox Route117_PokemonDayCare_Text_1B2B75, 4 msgbox Route117_PokemonDayCare_Text_1B2A76, 4 release end -Event_EggHatch:: @ 81B25BC +S_EggHatch:: @ 81B25BC lockall msgbox UnknownString_81B2C68, 4 - special 194 + special EggHatch waitstate releaseall end diff --git a/data/scripts/gabby_and_ty.inc b/data/scripts/gabby_and_ty.inc index f008e892b..214c61142 100644 --- a/data/scripts/gabby_and_ty.inc +++ b/data/scripts/gabby_and_ty.inc @@ -1,8 +1,8 @@ Route111_EventScript_1AE313:: @ 81AE313 Route118_EventScript_1AE313:: @ 81AE313 Route120_EventScript_1AE313:: @ 81AE313 - settrainerflag OPPONENT_GABBY_AND_TY_6 - specialval RESULT, 172 + cleartrainerflag OPPONENT_GABBY_AND_TY_6 + specialvar RESULT, GabbyAndTyGetBattleNum switch RESULT case 0, Route111_EventScript_1AE384 case 1, Route111_EventScript_1AE38A @@ -200,55 +200,55 @@ Route120_EventScript_1AE582:: @ 81AE582 end Route111_EventScript_1AE5A2:: @ 81AE5A2 - special 174 - special 179 + special GabbyAndTyBeforeInterview + special GabbyAndTySetScriptVarsToFieldObjectLocalIds compare FACING, 2 - callif 1, Route111_EventScript_1AE5E0 + call_if 1, Route111_EventScript_1AE5E0 compare FACING, 1 - callif 1, Route111_EventScript_1AE5EB + call_if 1, Route111_EventScript_1AE5EB compare FACING, 4 - callif 1, Route111_EventScript_1AE5FD + call_if 1, Route111_EventScript_1AE5FD checkflag 1 - jumpeq Route111_EventScript_1AE73A + goto_if_eq Route111_EventScript_1AE73A msgbox Route111_Text_1AC015, 5 - jump Route111_EventScript_1AE6F3 + goto Route111_EventScript_1AE6F3 end Route111_EventScript_1AE5E0:: @ 81AE5E0 - move 0x8004, Route111_Movement_1AE699 - waitmove 0 + applymovement 0x8004, Route111_Movement_1AE699 + waitmovement 0 return Route111_EventScript_1AE5EB:: @ 81AE5EB - move 0x8004, Route111_Movement_1AE69B - move 0x8005, Route111_Movement_1A0841 - waitmove 0 + applymovement 0x8004, Route111_Movement_1AE69B + applymovement 0x8005, Route111_Movement_1A0841 + waitmovement 0 return Route111_EventScript_1AE5FD:: @ 81AE5FD - move 0x8004, Route111_Movement_1AE69D - move 0x8005, Route111_Movement_1A083F - waitmove 0 + applymovement 0x8004, Route111_Movement_1AE69D + applymovement 0x8005, Route111_Movement_1A083F + waitmovement 0 return Route111_EventScript_1AE60F:: @ 81AE60F Route118_EventScript_1AE60F:: @ 81AE60F Route120_EventScript_1AE60F:: @ 81AE60F - special 174 - special 179 + special GabbyAndTyBeforeInterview + special GabbyAndTySetScriptVarsToFieldObjectLocalIds compare FACING, 2 - callif 1, Route111_EventScript_1AE5E0 + call_if 1, Route111_EventScript_1AE5E0 compare FACING, 1 - callif 1, Route111_EventScript_1AE5EB + call_if 1, Route111_EventScript_1AE5EB compare FACING, 4 - callif 1, Route111_EventScript_1AE5FD + call_if 1, Route111_EventScript_1AE5FD checkflag 1 - jumpeq Route111_EventScript_1AE73A - specialval RESULT, 177 + goto_if_eq Route111_EventScript_1AE73A + specialvar RESULT, GabbyAndTyGetLastQuote compare RESULT, 0 - jumpeq Route111_EventScript_1AE69F + goto_if_eq Route111_EventScript_1AE69F msgbox Route111_Text_1AC10A, 4 - specialval RESULT, 178 + specialvar RESULT, sub_80BDD18 switch RESULT case 0, Route111_EventScript_1AE6AD case 1, Route111_EventScript_1AE6BB @@ -271,46 +271,46 @@ Route111_Movement_1AE69D:: @ 81AE69D Route111_EventScript_1AE69F:: @ 81AE69F msgbox Route111_Text_1AC60B, 5 - jump Route111_EventScript_1AE6F3 + goto Route111_EventScript_1AE6F3 end Route111_EventScript_1AE6AD:: @ 81AE6AD msgbox Route111_Text_1AC3CF, 5 - jump Route111_EventScript_1AE6F3 + goto Route111_EventScript_1AE6F3 end Route111_EventScript_1AE6BB:: @ 81AE6BB msgbox Route111_Text_1AC18D, 5 - jump Route111_EventScript_1AE6F3 + goto Route111_EventScript_1AE6F3 end Route111_EventScript_1AE6C9:: @ 81AE6C9 msgbox Route111_Text_1AC219, 5 - jump Route111_EventScript_1AE6F3 + goto Route111_EventScript_1AE6F3 end Route111_EventScript_1AE6D7:: @ 81AE6D7 msgbox Route111_Text_1AC2D6, 5 - jump Route111_EventScript_1AE6F3 + goto Route111_EventScript_1AE6F3 end Route111_EventScript_1AE6E5:: @ 81AE6E5 msgbox Route111_Text_1AC355, 5 - jump Route111_EventScript_1AE6F3 + goto Route111_EventScript_1AE6F3 end Route111_EventScript_1AE6F3:: @ 81AE6F3 compare RESULT, 0 - jumpeq Route111_EventScript_1AE72D + goto_if_eq Route111_EventScript_1AE72D msgbox Route111_Text_1AC40F, 4 setvar 0x8004, 10 call Route111_EventScript_1A00F3 lock faceplayer compare RESULT, 0 - jumpeq Route111_EventScript_1AE72D + goto_if_eq Route111_EventScript_1AE72D msgbox Route111_Text_1AC487, 4 - special 173 + special sub_80BDC14 setflag 1 release end diff --git a/data/scripts/giddy.inc b/data/scripts/giddy.inc deleted file mode 100644 index 3cd57ad6e..000000000 --- a/data/scripts/giddy.inc +++ /dev/null @@ -1,51 +0,0 @@ -MauvilleCity_PokemonCenter_1F_EventScript_1B09EB:: @ 81B09EB - lock - faceplayer - msgbox MauvilleCity_PokemonCenter_1F_Text_1B092A, 5 - compare RESULT, 1 - jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1B0A0C - compare RESULT, 0 - jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1B0A6F - end - -MauvilleCity_PokemonCenter_1F_EventScript_1B0A0C:: @ 81B0A0C - special 106 - compare RESULT, 1 - jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1B0A4E - compare RESULT, 0 - jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1B0A79 - end - -MauvilleCity_PokemonCenter_1F_EventScript_1B0A26:: @ 81B0A26 - special 106 - compare RESULT, 1 - jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1B0A40 - compare RESULT, 0 - jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1B0A79 - end - -MauvilleCity_PokemonCenter_1F_EventScript_1B0A40:: @ 81B0A40 - msgbox MauvilleCity_PokemonCenter_1F_Text_1B0998, 4 - jump MauvilleCity_PokemonCenter_1F_EventScript_1B0A4E - end - -MauvilleCity_PokemonCenter_1F_EventScript_1B0A4E:: @ 81B0A4E - special 105 - special 141 - waittext - yesnobox 20, 8 - compare RESULT, 1 - jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1B0A26 - compare RESULT, 0 - jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1B0A26 - end - -MauvilleCity_PokemonCenter_1F_EventScript_1B0A6F:: @ 81B0A6F - msgbox MauvilleCity_PokemonCenter_1F_Text_1B097C, 4 - release - end - -MauvilleCity_PokemonCenter_1F_EventScript_1B0A79:: @ 81B0A79 - msgbox MauvilleCity_PokemonCenter_1F_Text_1B09B0, 4 - release - end diff --git a/data/scripts/hipster.inc b/data/scripts/hipster.inc deleted file mode 100644 index 833bb1605..000000000 --- a/data/scripts/hipster.inc +++ /dev/null @@ -1,25 +0,0 @@ -MauvilleCity_PokemonCenter_1F_EventScript_1AE845:: @ 81AE845 - lock - faceplayer - setflag 2054 - msgbox MauvilleCity_PokemonCenter_1F_Text_1B0C5B, 4 - special 100 - compare RESULT, 0 - jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1AE86A - msgbox MauvilleCity_PokemonCenter_1F_Text_1B0CA7, 4 - release - end - -MauvilleCity_PokemonCenter_1F_EventScript_1AE86A:: @ 81AE86A - special 102 - compare RESULT, 1 - jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1AE882 - msgbox MauvilleCity_PokemonCenter_1F_Text_1B0D11, 4 - release - end - -MauvilleCity_PokemonCenter_1F_EventScript_1AE882:: @ 81AE882 - msgbox MauvilleCity_PokemonCenter_1F_Text_1B0D75, 4 - special 101 - release - end diff --git a/data/scripts/magma_chimney.inc b/data/scripts/magma_chimney.inc index a2f4f67b7..f13b319f4 100644 --- a/data/scripts/magma_chimney.inc +++ b/data/scripts/magma_chimney.inc @@ -2,12 +2,12 @@ MtChimney_EventScript_1B2C95:: @ 81B2C95 lock faceplayer checkflag 219 - callif 0, MtChimney_EventScript_1B2CB9 + call_if 0, MtChimney_EventScript_1B2CB9 checkflag 219 - callif 1, MtChimney_EventScript_1B2CC2 - closebutton - move 1, MtChimney_Movement_1A083D - waitmove 0 + call_if 1, MtChimney_EventScript_1B2CC2 + closemessage + applymovement 1, MtChimney_Movement_1A083D + waitmovement 0 setflag 219 release end @@ -35,13 +35,13 @@ MtChimney_EventScript_1B2CCB:: @ 81B2CCB .else msgbox MtChimney_Text_1B37BB, 4 .endif - move 2, MtChimney_Movement_1A0839 - waitmove 0 - playsfx 21 - move 2, MtChimney_Movement_1A0833 - waitmove 0 - move 2, MtChimney_Movement_1A0835 - waitmove 0 + applymovement 2, MtChimney_Movement_1A0839 + waitmovement 0 + playse 21 + applymovement 2, MtChimney_Movement_1A0833 + waitmovement 0 + applymovement 2, MtChimney_Movement_1A0835 + waitmovement 0 .ifdef SAPPHIRE msgbox MtChimney_Text_1B2ED9, 4 .else @@ -57,33 +57,33 @@ MtChimney_EventScript_1B2CCB:: @ 81B2CCB .else msgbox MtChimney_Text_1B3A90, 4 .endif - closebutton - pause 30 + closemessage + delay 30 fadescreen 1 - disappear 2 - disappear 3 - disappear 22 + removeobject 2 + removeobject 3 + removeobject 22 setflag 926 fadescreen 0 - movespriteperm 1, 10, 12 - reappear 1 + setobjectxyperm 1, 10, 12 + addobject 1 compare FACING, 4 - callif 1, MtChimney_EventScript_1B2D7D + call_if 1, MtChimney_EventScript_1B2D7D compare FACING, 2 - callif 1, MtChimney_EventScript_1B2D88 - move 255, MtChimney_Movement_1A083F - waitmove 0 + call_if 1, MtChimney_EventScript_1B2D88 + applymovement 255, MtChimney_Movement_1A083F + waitmovement 0 .ifdef SAPPHIRE msgbox MtChimney_Text_1B3608, 4 .else msgbox MtChimney_Text_1B3FFE, 4 .endif - closebutton + closemessage compare FACING, 4 - callif 1, MtChimney_EventScript_1B2D93 + call_if 1, MtChimney_EventScript_1B2D93 compare FACING, 2 - callif 1, MtChimney_EventScript_1B2D9E - disappear 1 + call_if 1, MtChimney_EventScript_1B2D9E + removeobject 1 setflag 927 setflag 139 clearflag 928 @@ -92,21 +92,21 @@ MtChimney_EventScript_1B2CCB:: @ 81B2CCB end MtChimney_EventScript_1B2D7D:: @ 81B2D7D - move 1, MtChimney_Movement_15D025 - waitmove 0 + applymovement 1, MtChimney_Movement_15D025 + waitmovement 0 return MtChimney_EventScript_1B2D88:: @ 81B2D88 - move 1, MtChimney_Movement_15D036 - waitmove 0 + applymovement 1, MtChimney_Movement_15D036 + waitmovement 0 return MtChimney_EventScript_1B2D93:: @ 81B2D93 - move 1, MtChimney_Movement_15D02D - waitmove 0 + applymovement 1, MtChimney_Movement_15D02D + waitmovement 0 return MtChimney_EventScript_1B2D9E:: @ 81B2D9E - move 1, MtChimney_Movement_15D03E - waitmove 0 + applymovement 1, MtChimney_Movement_15D03E + waitmovement 0 return diff --git a/data/scripts/maps/AbandonedShip_CaptainsOffice.inc b/data/scripts/maps/AbandonedShip_CaptainsOffice.inc index cf525003e..eb912028a 100644 --- a/data/scripts/maps/AbandonedShip_CaptainsOffice.inc +++ b/data/scripts/maps/AbandonedShip_CaptainsOffice.inc @@ -5,12 +5,12 @@ AbandonedShip_CaptainsOffice_EventScript_15EAF5:: @ 815EAF5 lock faceplayer checkflag 294 - jumpeq AbandonedShip_CaptainsOffice_EventScript_15EB2D + goto_if_eq AbandonedShip_CaptainsOffice_EventScript_15EB2D checkitem ITEM_SCANNER, 1 compare RESULT, 1 - jumpeq AbandonedShip_CaptainsOffice_EventScript_15EB23 + goto_if_eq AbandonedShip_CaptainsOffice_EventScript_15EB23 checkflag 1078 - jumpeq AbandonedShip_CaptainsOffice_EventScript_15EB2D + goto_if_eq AbandonedShip_CaptainsOffice_EventScript_15EB2D msgbox AbandonedShip_CaptainsOffice_Text_198C85, 4 release end diff --git a/data/scripts/maps/AbandonedShip_Corridors_B1F.inc b/data/scripts/maps/AbandonedShip_Corridors_B1F.inc index e6b6a8f3d..f3c3c0aa0 100644 --- a/data/scripts/maps/AbandonedShip_Corridors_B1F.inc +++ b/data/scripts/maps/AbandonedShip_Corridors_B1F.inc @@ -4,14 +4,14 @@ AbandonedShip_Corridors_B1F_MapScripts:: @ 815E98F .byte 0 AbandonedShip_Corridors_B1F_MapScript1_15E99A:: @ 815E99A - warp4 AbandonedShip_Underwater1, 255, 5, 4 + setdivewarp AbandonedShip_Underwater1, 255, 5, 4 end AbandonedShip_Corridors_B1F_MapScript1_15E9A3:: @ 815E9A3 checkflag 239 - callif 0, AbandonedShip_Corridors_B1F_EventScript_15E9B6 + call_if 0, AbandonedShip_Corridors_B1F_EventScript_15E9B6 checkflag 239 - callif 1, AbandonedShip_Corridors_B1F_EventScript_15E9C0 + call_if 1, AbandonedShip_Corridors_B1F_EventScript_15E9C0 end AbandonedShip_Corridors_B1F_EventScript_15E9B6:: @ 815E9B6 @@ -29,16 +29,16 @@ AbandonedShip_Corridors_B1F_EventScript_15E9CA:: @ 815E9CA AbandonedShip_Corridors_B1F_EventScript_15E9D3:: @ 815E9D3 lockall checkflag 239 - jumpeq AbandonedShip_Corridors_B1F_EventScript_15EA14 + goto_if_eq AbandonedShip_Corridors_B1F_EventScript_15EA14 checkitem ITEM_STORAGE_KEY, 1 compare RESULT, 0 - jumpeq AbandonedShip_Corridors_B1F_EventScript_15EA0A + goto_if_eq AbandonedShip_Corridors_B1F_EventScript_15EA0A msgbox AbandonedShip_Corridors_B1F_Text_198692, 4 - playsfx 21 + playse 21 removeitem ITEM_STORAGE_KEY, 1 setflag 239 call AbandonedShip_Corridors_B1F_EventScript_15E9C0 - special 142 + special DrawWholeMapView releaseall end diff --git a/data/scripts/maps/AbandonedShip_HiddenFloorCorridors.inc b/data/scripts/maps/AbandonedShip_HiddenFloorCorridors.inc index 4b634106a..29a89a620 100644 --- a/data/scripts/maps/AbandonedShip_HiddenFloorCorridors.inc +++ b/data/scripts/maps/AbandonedShip_HiddenFloorCorridors.inc @@ -4,26 +4,26 @@ AbandonedShip_HiddenFloorCorridors_MapScripts:: @ 815EB46 .byte 0 AbandonedShip_HiddenFloorCorridors_MapScript1_15EB51:: @ 815EB51 - warp4 AbandonedShip_Underwater1, 255, 5, 4 + setdivewarp AbandonedShip_Underwater1, 255, 5, 4 end AbandonedShip_HiddenFloorCorridors_MapScript1_15EB5A:: @ 815EB5A checkflag 240 - callif 0, AbandonedShip_HiddenFloorCorridors_EventScript_15EBCB + call_if 0, AbandonedShip_HiddenFloorCorridors_EventScript_15EBCB checkflag 241 - callif 0, AbandonedShip_HiddenFloorCorridors_EventScript_15EBD5 + call_if 0, AbandonedShip_HiddenFloorCorridors_EventScript_15EBD5 checkflag 242 - callif 0, AbandonedShip_HiddenFloorCorridors_EventScript_15EBDF + call_if 0, AbandonedShip_HiddenFloorCorridors_EventScript_15EBDF checkflag 243 - callif 0, AbandonedShip_HiddenFloorCorridors_EventScript_15EBE9 + call_if 0, AbandonedShip_HiddenFloorCorridors_EventScript_15EBE9 checkflag 240 - callif 1, AbandonedShip_HiddenFloorCorridors_EventScript_15EBA3 + call_if 1, AbandonedShip_HiddenFloorCorridors_EventScript_15EBA3 checkflag 241 - callif 1, AbandonedShip_HiddenFloorCorridors_EventScript_15EBAD + call_if 1, AbandonedShip_HiddenFloorCorridors_EventScript_15EBAD checkflag 242 - callif 1, AbandonedShip_HiddenFloorCorridors_EventScript_15EBB7 + call_if 1, AbandonedShip_HiddenFloorCorridors_EventScript_15EBB7 checkflag 243 - callif 1, AbandonedShip_HiddenFloorCorridors_EventScript_15EBC1 + call_if 1, AbandonedShip_HiddenFloorCorridors_EventScript_15EBC1 end AbandonedShip_HiddenFloorCorridors_EventScript_15EBA3:: @ 815EBA3 @@ -61,64 +61,64 @@ AbandonedShip_HiddenFloorCorridors_EventScript_15EBE9:: @ 815EBE9 AbandonedShip_HiddenFloorCorridors_EventScript_15EBF3:: @ 815EBF3 lockall checkflag 240 - jumpeq AbandonedShip_HiddenFloorCorridors_EventScript_15ECF7 + goto_if_eq AbandonedShip_HiddenFloorCorridors_EventScript_15ECF7 checkitem ITEM_ROOM_1_KEY, 1 compare RESULT, 0 - jumpeq AbandonedShip_HiddenFloorCorridors_EventScript_15ECCF + goto_if_eq AbandonedShip_HiddenFloorCorridors_EventScript_15ECCF msgbox AbandonedShip_HiddenFloorCorridors_Text_198E90, 4 - playsfx 21 + playse 21 removeitem ITEM_ROOM_1_KEY, 1 setflag 240 call AbandonedShip_HiddenFloorCorridors_EventScript_15EBA3 - special 142 + special DrawWholeMapView releaseall end AbandonedShip_HiddenFloorCorridors_EventScript_15EC2A:: @ 815EC2A lockall checkflag 241 - jumpeq AbandonedShip_HiddenFloorCorridors_EventScript_15ECF7 + goto_if_eq AbandonedShip_HiddenFloorCorridors_EventScript_15ECF7 checkitem ITEM_ROOM_2_KEY, 1 compare RESULT, 0 - jumpeq AbandonedShip_HiddenFloorCorridors_EventScript_15ECD9 + goto_if_eq AbandonedShip_HiddenFloorCorridors_EventScript_15ECD9 msgbox AbandonedShip_HiddenFloorCorridors_Text_198E90, 4 - playsfx 21 + playse 21 removeitem ITEM_ROOM_2_KEY, 1 setflag 241 call AbandonedShip_HiddenFloorCorridors_EventScript_15EBAD - special 142 + special DrawWholeMapView releaseall end AbandonedShip_HiddenFloorCorridors_EventScript_15EC61:: @ 815EC61 lockall checkflag 242 - jumpeq AbandonedShip_HiddenFloorCorridors_EventScript_15ECF7 + goto_if_eq AbandonedShip_HiddenFloorCorridors_EventScript_15ECF7 checkitem ITEM_ROOM_4_KEY, 1 compare RESULT, 0 - jumpeq AbandonedShip_HiddenFloorCorridors_EventScript_15ECE3 + goto_if_eq AbandonedShip_HiddenFloorCorridors_EventScript_15ECE3 msgbox AbandonedShip_HiddenFloorCorridors_Text_198E90, 4 - playsfx 21 + playse 21 removeitem ITEM_ROOM_4_KEY, 1 setflag 242 call AbandonedShip_HiddenFloorCorridors_EventScript_15EBB7 - special 142 + special DrawWholeMapView releaseall end AbandonedShip_HiddenFloorCorridors_EventScript_15EC98:: @ 815EC98 lockall checkflag 243 - jumpeq AbandonedShip_HiddenFloorCorridors_EventScript_15ECF7 + goto_if_eq AbandonedShip_HiddenFloorCorridors_EventScript_15ECF7 checkitem ITEM_ROOM_6_KEY, 1 compare RESULT, 0 - jumpeq AbandonedShip_HiddenFloorCorridors_EventScript_15ECED + goto_if_eq AbandonedShip_HiddenFloorCorridors_EventScript_15ECED msgbox AbandonedShip_HiddenFloorCorridors_Text_198E90, 4 - playsfx 21 + playse 21 removeitem ITEM_ROOM_6_KEY, 1 setflag 243 call AbandonedShip_HiddenFloorCorridors_EventScript_15EBC1 - special 142 + special DrawWholeMapView releaseall end diff --git a/data/scripts/maps/AbandonedShip_HiddenFloorRooms.inc b/data/scripts/maps/AbandonedShip_HiddenFloorRooms.inc index 5e90673fe..eb5c1dccd 100644 --- a/data/scripts/maps/AbandonedShip_HiddenFloorRooms.inc +++ b/data/scripts/maps/AbandonedShip_HiddenFloorRooms.inc @@ -11,11 +11,11 @@ AbandonedShip_HiddenFloorRooms_EventScript_15ED11:: @ 815ED11 getplayerxy 0x4002, 0x4003 setvar 0x4004, 1 compare 0x4002, 21 - callif 1, AbandonedShip_HiddenFloorRooms_EventScript_15ED89 + call_if 1, AbandonedShip_HiddenFloorRooms_EventScript_15ED89 compare 0x4002, 36 - callif 1, AbandonedShip_HiddenFloorRooms_EventScript_15ED8F + call_if 1, AbandonedShip_HiddenFloorRooms_EventScript_15ED8F compare 0x4003, 2 - callif 1, AbandonedShip_HiddenFloorRooms_EventScript_15ED95 + call_if 1, AbandonedShip_HiddenFloorRooms_EventScript_15ED95 switch 0x4004 case 1, AbandonedShip_HiddenFloorRooms_EventScript_15ED9B case 2, AbandonedShip_HiddenFloorRooms_EventScript_15EDC4 @@ -38,102 +38,102 @@ AbandonedShip_HiddenFloorRooms_EventScript_15ED95:: @ 815ED95 return AbandonedShip_HiddenFloorRooms_EventScript_15ED9B:: @ 815ED9B - pause 20 - setanimation 0, 10 - setanimation 1, 10 - setanimation 2, 0 - doanimation 54 - specialval RESULT, 290 + delay 20 + setfieldeffect 0, 10 + setfieldeffect 1, 10 + setfieldeffect 2, 0 + dofieldeffect 54 + specialvar RESULT, sub_810F4D4 compare RESULT, 0 - callif 1, AbandonedShip_HiddenFloorRooms_EventScript_15EE8B - checkanimation 54 - pause 10 + call_if 1, AbandonedShip_HiddenFloorRooms_EventScript_15EE8B + waitfieldeffect 54 + delay 10 end AbandonedShip_HiddenFloorRooms_EventScript_15EDC4:: @ 815EDC4 end AbandonedShip_HiddenFloorRooms_EventScript_15EDC5:: @ 815EDC5 - specialval RESULT, 288 + specialvar RESULT, sub_810F488 compare RESULT, 1 - jumpeq AbandonedShip_HiddenFloorRooms_EventScript_15EDEA - pause 20 + goto_if_eq AbandonedShip_HiddenFloorRooms_EventScript_15EDEA + delay 20 compare RESULT, 0 - callif 1, AbandonedShip_HiddenFloorRooms_EventScript_15EE6B - checkanimation 54 - pause 10 + call_if 1, AbandonedShip_HiddenFloorRooms_EventScript_15EE6B + waitfieldeffect 54 + delay 10 end AbandonedShip_HiddenFloorRooms_EventScript_15EDEA:: @ 815EDEA end AbandonedShip_HiddenFloorRooms_EventScript_15EDEB:: @ 815EDEB - pause 20 - setanimation 0, 8 - setanimation 1, 5 - setanimation 2, 0 - doanimation 54 - setanimation 0, 11 - setanimation 1, 3 - setanimation 2, 0 - doanimation 54 - specialval RESULT, 291 + delay 20 + setfieldeffect 0, 8 + setfieldeffect 1, 5 + setfieldeffect 2, 0 + dofieldeffect 54 + setfieldeffect 0, 11 + setfieldeffect 1, 3 + setfieldeffect 2, 0 + dofieldeffect 54 + specialvar RESULT, sub_810F4FC compare RESULT, 0 - callif 1, AbandonedShip_HiddenFloorRooms_EventScript_15EE9B - checkanimation 54 - pause 10 + call_if 1, AbandonedShip_HiddenFloorRooms_EventScript_15EE9B + waitfieldeffect 54 + delay 10 end AbandonedShip_HiddenFloorRooms_EventScript_15EE23:: @ 815EE23 - pause 20 - setanimation 0, 16 - setanimation 1, 3 - setanimation 2, 0 - doanimation 54 - setanimation 0, 25 - setanimation 1, 2 - setanimation 2, 0 - doanimation 54 - setanimation 0, 24 - setanimation 1, 6 - setanimation 2, 0 - doanimation 54 - specialval RESULT, 289 + delay 20 + setfieldeffect 0, 16 + setfieldeffect 1, 3 + setfieldeffect 2, 0 + dofieldeffect 54 + setfieldeffect 0, 25 + setfieldeffect 1, 2 + setfieldeffect 2, 0 + dofieldeffect 54 + setfieldeffect 0, 24 + setfieldeffect 1, 6 + setfieldeffect 2, 0 + dofieldeffect 54 + specialvar RESULT, sub_810F4B0 compare RESULT, 0 - callif 1, AbandonedShip_HiddenFloorRooms_EventScript_15EE7B - checkanimation 54 - pause 10 + call_if 1, AbandonedShip_HiddenFloorRooms_EventScript_15EE7B + waitfieldeffect 54 + delay 10 end AbandonedShip_HiddenFloorRooms_EventScript_15EE6A:: @ 815EE6A end AbandonedShip_HiddenFloorRooms_EventScript_15EE6B:: @ 815EE6B - setanimation 0, 42 - setanimation 1, 10 - setanimation 2, 0 - doanimation 54 + setfieldeffect 0, 42 + setfieldeffect 1, 10 + setfieldeffect 2, 0 + dofieldeffect 54 return AbandonedShip_HiddenFloorRooms_EventScript_15EE7B:: @ 815EE7B - setanimation 0, 20 - setanimation 1, 5 - setanimation 2, 0 - doanimation 54 + setfieldeffect 0, 20 + setfieldeffect 1, 5 + setfieldeffect 2, 0 + dofieldeffect 54 return AbandonedShip_HiddenFloorRooms_EventScript_15EE8B:: @ 815EE8B - setanimation 0, 1 - setanimation 1, 12 - setanimation 2, 0 - doanimation 54 + setfieldeffect 0, 1 + setfieldeffect 1, 12 + setfieldeffect 2, 0 + dofieldeffect 54 return AbandonedShip_HiddenFloorRooms_EventScript_15EE9B:: @ 815EE9B - setanimation 0, 1 - setanimation 1, 2 - setanimation 2, 0 - doanimation 54 + setfieldeffect 0, 1 + setfieldeffect 1, 2 + setfieldeffect 2, 0 + dofieldeffect 54 return AbandonedShip_HiddenFloorRooms_EventScript_15EEAB:: @ 815EEAB diff --git a/data/scripts/maps/AbandonedShip_Rooms2_1F.inc b/data/scripts/maps/AbandonedShip_Rooms2_1F.inc index b2525d62e..5e8ab1062 100644 --- a/data/scripts/maps/AbandonedShip_Rooms2_1F.inc +++ b/data/scripts/maps/AbandonedShip_Rooms2_1F.inc @@ -3,9 +3,9 @@ AbandonedShip_Rooms2_1F_MapScripts:: @ 815EA67 AbandonedShip_Rooms2_1F_EventScript_15EA68:: @ 815EA68 trainerbattle 4, OPPONENT_LOIS_AND_HAL_1, 0, AbandonedShip_Rooms2_1F_Text_1987C1, AbandonedShip_Rooms2_1F_Text_1987FE, AbandonedShip_Rooms2_1F_Text_19887F - specialval RESULT, 57 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq AbandonedShip_Rooms2_1F_EventScript_15EA93 + goto_if_eq AbandonedShip_Rooms2_1F_EventScript_15EA93 msgbox AbandonedShip_Rooms2_1F_Text_198835, 6 end @@ -16,9 +16,9 @@ AbandonedShip_Rooms2_1F_EventScript_15EA93:: @ 815EA93 AbandonedShip_Rooms2_1F_EventScript_15EAAE:: @ 815EAAE trainerbattle 4, OPPONENT_LOIS_AND_HAL_1, 0, AbandonedShip_Rooms2_1F_Text_1988CC, AbandonedShip_Rooms2_1F_Text_198916, AbandonedShip_Rooms2_1F_Text_19899A - specialval RESULT, 57 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq AbandonedShip_Rooms2_1F_EventScript_15EAD9 + goto_if_eq AbandonedShip_Rooms2_1F_EventScript_15EAD9 msgbox AbandonedShip_Rooms2_1F_Text_198934, 6 end diff --git a/data/scripts/maps/AbandonedShip_Rooms_B1F.inc b/data/scripts/maps/AbandonedShip_Rooms_B1F.inc index 44b8c5f20..218f1a2ca 100644 --- a/data/scripts/maps/AbandonedShip_Rooms_B1F.inc +++ b/data/scripts/maps/AbandonedShip_Rooms_B1F.inc @@ -3,7 +3,7 @@ AbandonedShip_Rooms_B1F_MapScripts:: @ 815EA35 .byte 0 AbandonedShip_Rooms_B1F_MapScript1_15EA3B:: @ 815EA3B - warp4 AbandonedShip_Underwater2, 255, 17, 4 + setdivewarp AbandonedShip_Underwater2, 255, 17, 4 end AbandonedShip_Rooms_B1F_EventScript_15EA44:: @ 815EA44 diff --git a/data/scripts/maps/AbandonedShip_Underwater1.inc b/data/scripts/maps/AbandonedShip_Underwater1.inc index 71d903682..afac470ea 100644 --- a/data/scripts/maps/AbandonedShip_Underwater1.inc +++ b/data/scripts/maps/AbandonedShip_Underwater1.inc @@ -3,5 +3,5 @@ AbandonedShip_Underwater1_MapScripts:: @ 815EA57 .byte 0 AbandonedShip_Underwater1_MapScript1_15EA5D:: @ 815EA5D - warp4 AbandonedShip_HiddenFloorCorridors, 255, 0, 10 + setdivewarp AbandonedShip_HiddenFloorCorridors, 255, 0, 10 end diff --git a/data/scripts/maps/AbandonedShip_Underwater2.inc b/data/scripts/maps/AbandonedShip_Underwater2.inc index f7b434c07..b8facc4ec 100644 --- a/data/scripts/maps/AbandonedShip_Underwater2.inc +++ b/data/scripts/maps/AbandonedShip_Underwater2.inc @@ -3,5 +3,5 @@ AbandonedShip_Underwater2_MapScripts:: @ 815EB37 .byte 0 AbandonedShip_Underwater2_MapScript1_15EB3D:: @ 815EB3D - warp4 AbandonedShip_Rooms_B1F, 255, 13, 7 + setdivewarp AbandonedShip_Rooms_B1F, 255, 13, 7 end diff --git a/data/scripts/maps/AncientTomb.inc b/data/scripts/maps/AncientTomb.inc index f8eba6a9d..188691e73 100644 --- a/data/scripts/maps/AncientTomb.inc +++ b/data/scripts/maps/AncientTomb.inc @@ -6,11 +6,11 @@ AncientTomb_MapScripts:: @ 815EFBE AncientTomb_MapScript1_15EFCE:: @ 815EFCE checkflag 2145 - callif 1, AncientTomb_EventScript_15EFD8 + call_if 1, AncientTomb_EventScript_15EFD8 end AncientTomb_EventScript_15EFD8:: @ 815EFD8 - disappear LAST_TALKED + removeobject LAST_TALKED return AncientTomb_MapScript1_15EFDC:: @ 815EFDC @@ -19,7 +19,7 @@ AncientTomb_MapScript1_15EFDC:: @ 815EFDC AncientTomb_MapScript1_15EFE0:: @ 815EFE0 checkflag 2130 - callif 0, AncientTomb_EventScript_15EFEA + call_if 0, AncientTomb_EventScript_15EFEA end AncientTomb_EventScript_15EFEA:: @ 815EFEA @@ -34,10 +34,10 @@ AncientTomb_EventScript_15EFEA:: @ 815EFEA AncientTomb_EventScript_15F021:: @ 815F021 lockall checkflag 2130 - jumpeq AncientTomb_EventScript_15F038 - braillemsg AncientTomb_Braille_1C552E + goto_if_eq AncientTomb_EventScript_15F038 + braillemessage AncientTomb_Braille_1C552E waitbutton - hidebox 0, 0, 29, 19 + erasebox 0, 0, 29, 19 releaseall end @@ -48,23 +48,23 @@ AncientTomb_EventScript_15F038:: @ 815F038 AncientTomb_EventScript_15F042:: @ 815F042 lockall - braillemsg AncientTomb_Braille_1C552E + braillemessage AncientTomb_Braille_1C552E waitbutton - hidebox 0, 0, 29, 19 + erasebox 0, 0, 29, 19 releaseall end AncientTomb_EventScript_15F050:: @ 815F050 lock faceplayer - checksound - pokecry SPECIES_REGISTEEL, 2 - pause 40 + waitse + playpokecry SPECIES_REGISTEEL, 2 + delay 40 waitpokecry setwildbattle SPECIES_REGISTEEL, 40, ITEM_NONE setflag 937 setflag 2145 - special 313 + special ScrSpecial_StartRegiBattle waitstate clearflag 2145 release diff --git a/data/scripts/maps/AquaHideout_1F.inc b/data/scripts/maps/AquaHideout_1F.inc index cc1ad33b1..2eb2ae7e9 100644 --- a/data/scripts/maps/AquaHideout_1F.inc +++ b/data/scripts/maps/AquaHideout_1F.inc @@ -11,7 +11,7 @@ MagmaHideout_1F_EventScript_15D7CE:: @ 815D7CE lock faceplayer checkflag 111 - jumpeq AquaHideout_1F_EventScript_15D7E3 + goto_if_eq AquaHideout_1F_EventScript_15D7E3 msgbox AquaHideout_1F_Text_196AFD, 4 release end @@ -26,7 +26,7 @@ MagmaHideout_1F_EventScript_15D7ED:: @ 815D7ED lock faceplayer checkflag 111 - jumpeq AquaHideout_1F_EventScript_15D802 + goto_if_eq AquaHideout_1F_EventScript_15D802 msgbox AquaHideout_1F_Text_196C83, 4 release end diff --git a/data/scripts/maps/AquaHideout_B1F.inc b/data/scripts/maps/AquaHideout_B1F.inc index 969d590e3..0001d7574 100644 --- a/data/scripts/maps/AquaHideout_B1F.inc +++ b/data/scripts/maps/AquaHideout_B1F.inc @@ -5,11 +5,11 @@ AquaHideout_B1F_MapScripts:: @ 815D831 AquaHideout_B1F_MapScript1_15D83C:: @ 815D83C checkflag 2145 - callif 1, AquaHideout_B1F_EventScript_15D846 + call_if 1, AquaHideout_B1F_EventScript_15D846 end AquaHideout_B1F_EventScript_15D846:: @ 815D846 - disappear LAST_TALKED + removeobject LAST_TALKED return AquaHideout_B1F_MapScript1_15D84A:: @ 815D84A diff --git a/data/scripts/maps/AquaHideout_B2F.inc b/data/scripts/maps/AquaHideout_B2F.inc index 845b755b7..230d0e2db 100644 --- a/data/scripts/maps/AquaHideout_B2F.inc +++ b/data/scripts/maps/AquaHideout_B2F.inc @@ -10,15 +10,15 @@ AquaHideout_B2F_EventScript_15D8BD:: @ 815D8BD MagmaHideout_B2F_EventScript_15D8BD:: @ 815D8BD lockall setvar 0x8008, 1 - playsfx 21 - move 0x8008, AquaHideout_B2F_Movement_1A0833 - waitmove 0 + playse 21 + applymovement 0x8008, AquaHideout_B2F_Movement_1A0833 + waitmovement 0 .ifdef SAPPHIRE - move 0x8008, AquaHideout_B2F_Movement_1A0839 + applymovement 0x8008, AquaHideout_B2F_Movement_1A0839 .else - move 0x8008, AquaHideout_B2F_Movement_1A0841 + applymovement 0x8008, AquaHideout_B2F_Movement_1A0841 .endif - waitmove 0 + waitmovement 0 setvar 0x4001, 1 releaseall end @@ -38,31 +38,31 @@ AquaHideout_B2F_EventScript_15D8FD:: @ 815D8FD setvar 0x8009, 3 .endif .ifdef SAPPHIRE - move 0x8008, Movement_1A083F + applymovement 0x8008, Movement_1A083F .else - move 0x8008, AquaHideout_B2F_Movement_1A0843 + applymovement 0x8008, AquaHideout_B2F_Movement_1A0843 .endif - waitmove 0 - pause 20 - move 0x8008, AquaHideout_B2F_Movement_1A0839 - waitmove 0 + waitmovement 0 + delay 20 + applymovement 0x8008, AquaHideout_B2F_Movement_1A0839 + waitmovement 0 msgbox AquaHideout_B2F_Text_197162, 4 - closebutton + closemessage .ifdef SAPPHIRE - move 0x8008, Movement_1A083F + applymovement 0x8008, Movement_1A083F .else - move 0x8008, AquaHideout_B2F_Movement_1A0843 + applymovement 0x8008, AquaHideout_B2F_Movement_1A0843 .endif .ifdef SAPPHIRE - move 0x8009, AquaHideout_B2F_Movement_15D958 + applymovement 0x8009, AquaHideout_B2F_Movement_15D958 .else - move 0x8009, AquaHideout_B2F_Movement_15D95D + applymovement 0x8009, AquaHideout_B2F_Movement_15D95D .endif - waitmove 0 - disappear 0x8009 - pause 20 - move 0x8008, AquaHideout_B2F_Movement_1A0839 - waitmove 0 + waitmovement 0 + removeobject 0x8009 + delay 20 + applymovement 0x8008, AquaHideout_B2F_Movement_1A0839 + waitmovement 0 msgbox AquaHideout_B2F_Text_1971AE, 4 setflag 112 setflag 852 diff --git a/data/scripts/maps/BattleTower_BattleRoom.inc b/data/scripts/maps/BattleTower_BattleRoom.inc index d991b8853..3f1aad4a0 100644 --- a/data/scripts/maps/BattleTower_BattleRoom.inc +++ b/data/scripts/maps/BattleTower_BattleRoom.inc @@ -8,55 +8,55 @@ BattleTower_BattleRoom_MapScript2_1608E1:: @ 81608E1 BattleTower_BattleRoom_EventScript_1608EB:: @ 81608EB setvar 0x4000, 1 - move 255, BattleTower_BattleRoom_Movement_160AB7 - waitmove 0 + applymovement 255, BattleTower_BattleRoom_Movement_160AB7 + waitmovement 0 BattleTower_BattleRoom_EventScript_1608FA:: @ 81608FA - special 232 - reappear 1 - move 1, BattleTower_BattleRoom_Movement_160AC0 - waitmove 0 - special 234 + special sub_81347F8 + addobject 1 + applymovement 1, BattleTower_BattleRoom_Movement_160AC0 + waitmovement 0 + special sub_8135474 msgbox 0x20234cc, 4 - waittext - closebutton - special 0 + waitmessage + closemessage + special ScrSpecial_HealPlayerParty setvar 0x8004, 0 setvar 0x8005, 0 - special 236 + special sub_813556C waitstate switch RESULT case 1, BattleTower_BattleRoom_EventScript_160961 - special 40 + special LoadPlayerParty setvar 0x8004, 0 setvar 0x8005, 5 - special 237 + special sub_8135668 setvar 0x8004, 14 - special 237 + special sub_8135668 setvar 0x8004, 3 - special 170 + special sub_810FF60 warp BattleTower_Lobby, 255, 6, 6 waitstate BattleTower_BattleRoom_EventScript_160961:: @ 8160961 setvar 0x8004, 6 - special 237 + special sub_8135668 switch RESULT case 8, BattleTower_BattleRoom_EventScript_160A56 - move 1, BattleTower_BattleRoom_Movement_160AC6 - waitmove 0 - disappear 1 - move 2, BattleTower_BattleRoom_Movement_160ACB - waitmove 0 - move 255, BattleTower_BattleRoom_Movement_160ABC - waitmove 0 + applymovement 1, BattleTower_BattleRoom_Movement_160AC6 + waitmovement 0 + removeobject 1 + applymovement 2, BattleTower_BattleRoom_Movement_160ACB + waitmovement 0 + applymovement 255, BattleTower_BattleRoom_Movement_160ABC + waitmovement 0 msgbox BattleTower_BattleRoom_Text_19ACDC, 4 - special 40 - special 39 - special 239 - fanfare 368 + special LoadPlayerParty + special SavePlayerParty + special sub_8135A14 + playfanfare 368 waitfanfare - special 0 + special ScrSpecial_HealPlayerParty BattleTower_BattleRoom_EventScript_1609B2:: @ 81609B2 msgbox BattleTower_BattleRoom_Text_19AD09, 5 @@ -80,43 +80,43 @@ BattleTower_BattleRoom_EventScript_160A0E:: @ 8160A0E case 127, BattleTower_BattleRoom_EventScript_1609B2 BattleTower_BattleRoom_EventScript_160A3C:: @ 8160A3C - closebutton - move 255, BattleTower_BattleRoom_Movement_160ABE - waitmove 0 - move 2, BattleTower_BattleRoom_Movement_160AD0 - waitmove 0 - jump BattleTower_BattleRoom_EventScript_1608FA + closemessage + applymovement 255, BattleTower_BattleRoom_Movement_160ABE + waitmovement 0 + applymovement 2, BattleTower_BattleRoom_Movement_160AD0 + waitmovement 0 + goto BattleTower_BattleRoom_EventScript_1608FA BattleTower_BattleRoom_EventScript_160A56:: @ 8160A56 - special 40 + special LoadPlayerParty setvar 0x8004, 0 setvar 0x8005, 4 - special 237 + special sub_8135668 setvar 0x8004, 2 setvar 0x8005, 1 - special 237 + special sub_8135668 setvar 0x8004, 7 - special 237 + special sub_8135668 setvar 0x8004, 14 - special 237 + special sub_8135668 setvar 0x8004, 3 - special 170 + special sub_810FF60 warp BattleTower_Lobby, 255, 6, 6 waitstate BattleTower_BattleRoom_EventScript_160A94:: @ 8160A94 setvar 0x8004, 2 - special 240 + special sub_8135BA0 message BattleTower_BattleRoom_Text_1C6CE1 - pause 60 - waittext - playsfx 55 - checksound + delay 60 + waitmessage + playse 55 + waitse msgbox BattleTower_BattleRoom_Text_1C6D05, 4 BattleTower_BattleRoom_EventScript_160AB1:: @ 8160AB1 fadescreen 1 - special 241 + special sub_8135C38 end BattleTower_BattleRoom_Movement_160AB7:: @ 8160AB7 diff --git a/data/scripts/maps/BattleTower_Corridor.inc b/data/scripts/maps/BattleTower_Corridor.inc index 4ccf2028c..9d4fbc844 100644 --- a/data/scripts/maps/BattleTower_Corridor.inc +++ b/data/scripts/maps/BattleTower_Corridor.inc @@ -5,7 +5,7 @@ BattleTower_Corridor_MapScripts:: @ 8160845 BattleTower_Corridor_MapScript1_160850:: @ 8160850 compare 0x8006, 1 - jumpeq BattleTower_Corridor_EventScript_16086E + goto_if_eq BattleTower_Corridor_EventScript_16086E setmaptile 12, 0, 519, 0 setmaptile 12, 1, 527, 0 end @@ -22,16 +22,16 @@ BattleTower_Corridor_MapScript2_160881:: @ 8160881 BattleTower_Corridor_EventScript_16088B:: @ 816088B setvar 0x4000, 1 compare 0x8006, 1 - jumpeq BattleTower_Corridor_EventScript_1608B1 - move 1, BattleTower_Corridor_Movement_1608D5 - move 255, BattleTower_Corridor_Movement_1608D4 - waitmove 0 - jump BattleTower_Corridor_EventScript_1608C2 + goto_if_eq BattleTower_Corridor_EventScript_1608B1 + applymovement 1, BattleTower_Corridor_Movement_1608D5 + applymovement 255, BattleTower_Corridor_Movement_1608D4 + waitmovement 0 + goto BattleTower_Corridor_EventScript_1608C2 BattleTower_Corridor_EventScript_1608B1:: @ 81608B1 - move 1, BattleTower_Corridor_Movement_1608D2 - move 255, BattleTower_Corridor_Movement_1608D1 - waitmove 0 + applymovement 1, BattleTower_Corridor_Movement_1608D2 + applymovement 255, BattleTower_Corridor_Movement_1608D1 + waitmovement 0 BattleTower_Corridor_EventScript_1608C2:: @ 81608C2 setvar 0x4000, 0 diff --git a/data/scripts/maps/BattleTower_Elevator.inc b/data/scripts/maps/BattleTower_Elevator.inc index 7a79cc4e9..a147a3b5a 100644 --- a/data/scripts/maps/BattleTower_Elevator.inc +++ b/data/scripts/maps/BattleTower_Elevator.inc @@ -9,15 +9,15 @@ BattleTower_Elevator_MapScript2_1607DA:: @ 81607DA BattleTower_Elevator_EventScript_1607E4:: @ 81607E4 setvar 0x4000, 1 - move 1, BattleTower_Elevator_Movement_160835 - move 255, BattleTower_Elevator_Movement_160839 - waitmove 0 - special 273 + applymovement 1, BattleTower_Elevator_Movement_160835 + applymovement 255, BattleTower_Elevator_Movement_160839 + waitmovement 0 + special sub_810EBEC waitstate - pause 64 - move 1, BattleTower_Elevator_Movement_16083D - move 255, BattleTower_Elevator_Movement_160841 - waitmove 0 + delay 64 + applymovement 1, BattleTower_Elevator_Movement_16083D + applymovement 255, BattleTower_Elevator_Movement_160841 + waitmovement 0 setvar 0x4000, 0 warp BattleTower_Corridor, 255, 8, 1 waitstate @@ -29,7 +29,7 @@ BattleTower_Elevator_MapScript2_160821:: @ 8160821 BattleTower_Elevator_EventScript_16082B:: @ 816082B setvar 0x4001, 1 - spriteface 255, 2 + turnobject 255, 2 end BattleTower_Elevator_Movement_160835:: @ 8160835 diff --git a/data/scripts/maps/BattleTower_Lobby.inc b/data/scripts/maps/BattleTower_Lobby.inc index cee3d7cec..3227df991 100644 --- a/data/scripts/maps/BattleTower_Lobby.inc +++ b/data/scripts/maps/BattleTower_Lobby.inc @@ -6,30 +6,30 @@ BattleTower_Lobby_MapScripts:: @ 816027E .byte 0 BattleTower_Lobby_MapScript1_160293:: @ 8160293 - special 338 + special sub_813610C call BattleTower_Lobby_EventScript_16029C end BattleTower_Lobby_EventScript_16029C:: @ 816029C setvar 0x8004, 10 - special 237 + special sub_8135668 checkflag 238 - jumpeq BattleTower_Lobby_EventScript_1602E4 + goto_if_eq BattleTower_Lobby_EventScript_1602E4 checkflag 237 - jumpeq BattleTower_Lobby_EventScript_1602CD - specialval 0x8007, 247 + goto_if_eq BattleTower_Lobby_EventScript_1602CD + specialvar 0x8007, sub_810F404 compare 0x8007, 50 - jumpif 0, BattleTower_Lobby_EventScript_1602E4 + goto_if 0, BattleTower_Lobby_EventScript_1602E4 clearflag 941 - special 329 + special sub_810F8FC return BattleTower_Lobby_EventScript_1602CD:: @ 81602CD - specialval 0x8007, 247 + specialvar 0x8007, sub_810F404 compare 0x8007, 100 - jumpif 0, BattleTower_Lobby_EventScript_1602E4 + goto_if 0, BattleTower_Lobby_EventScript_1602E4 clearflag 941 - special 329 + special sub_810F8FC return BattleTower_Lobby_EventScript_1602E4:: @ 81602E4 @@ -46,7 +46,7 @@ BattleTower_Lobby_MapScript2_1602EE:: @ 81602EE BattleTower_Lobby_EventScript_1602F8:: @ 81602F8 setvar 0x4001, 1 - spriteface 255, 2 + turnobject 255, 2 end BattleTower_Lobby_MapScript2_160302:: @ 8160302 @@ -58,14 +58,14 @@ BattleTower_Lobby_MapScript2_160302:: @ 8160302 .2byte 0 BattleTower_Lobby_EventScript_16032C:: @ 816032C - special 231 + special sub_8134548 end BattleTower_Lobby_EventScript_160330:: @ 8160330 lock faceplayer msgbox BattleTower_Lobby_Text_19A3FD, 4 - closebutton + closemessage setvar 0x4000, 5 release end @@ -74,65 +74,65 @@ BattleTower_Lobby_EventScript_160342:: @ 8160342 lock faceplayer message BattleTower_Lobby_Text_19A487 - waittext + waitmessage setvar 0x8004, 0 - special 238 + special sub_81358A4 compare RESULT, 6 - jumpeq BattleTower_Lobby_EventScript_16037D - special 244 + goto_if_eq BattleTower_Lobby_EventScript_16037D + special sub_8135E50 compare RESULT, 0 - jumpeq BattleTower_Lobby_EventScript_16037D + goto_if_eq BattleTower_Lobby_EventScript_16037D message BattleTower_Lobby_Text_19A6BE - waittext - fanfare 370 + waitmessage + playfanfare 370 waitfanfare msgbox BattleTower_Lobby_Text_19A719, 4 BattleTower_Lobby_EventScript_16037D:: @ 816037D setvar 0x8004, 8 - special 238 + special sub_81358A4 compare RESULT, 1 - jumpeq BattleTower_Lobby_EventScript_1603AD + goto_if_eq BattleTower_Lobby_EventScript_1603AD message BattleTower_Lobby_Text_19A589 - waittext + waitmessage setvar 0x8004, 13 - special 237 - special 242 + special sub_8135668 + special sub_8135D84 setvar 0x8004, 3 - special 240 - playsfx 55 - checksound + special sub_8135BA0 + playse 55 + waitse BattleTower_Lobby_EventScript_1603AD:: @ 81603AD setvar 0x8004, 0 setvar 0x8005, 3 - special 237 + special sub_8135668 message BattleTower_Lobby_Text_19A4BB - waittext - special 243 + waitmessage + special sub_8135DEC switch RESULT case 0, BattleTower_Lobby_EventScript_160408 message BattleTower_Lobby_Text_19A506 - waittext - fanfare 370 + waitmessage + playfanfare 370 waitfanfare setvar 0x8004, 9 - special 238 + special sub_81358A4 compare RESULT, 49 - jumpif 5, BattleTower_Lobby_EventScript_1603F8 + goto_if 5, BattleTower_Lobby_EventScript_1603F8 msgbox BattleTower_Lobby_Text_19A617, 4 BattleTower_Lobby_EventScript_1603F8:: @ 81603F8 msgbox BattleTower_Lobby_Text_199FA9, 4 - closebutton + closemessage setvar 0x4000, 5 release end BattleTower_Lobby_EventScript_160408:: @ 8160408 msgbox BattleTower_Lobby_Text_19A520, 4 - waittext - closebutton + waitmessage + closemessage setvar 0x4000, 5 release end @@ -141,17 +141,17 @@ BattleTower_Lobby_EventScript_160419:: @ 8160419 lock faceplayer message BattleTower_Lobby_Text_19A571 - waittext + waitmessage message BattleTower_Lobby_Text_19A589 - waittext + waitmessage setvar 0x8004, 13 - special 237 + special sub_8135668 setvar 0x8004, 0 - special 240 - playsfx 55 - checksound + special sub_8135BA0 + playse 55 + waitse msgbox BattleTower_Lobby_Text_199FA9, 4 - closebutton + closemessage setvar 0x4000, 5 release end @@ -161,21 +161,21 @@ BattleTower_Lobby_EventScript_16044B:: @ 816044B faceplayer setvar 0x40bc, 1 message BattleTower_Lobby_Text_19A5B1 - waittext + waitmessage message BattleTower_Lobby_Text_19A5CE - waittext + waitmessage setvar 0x8004, 1 - special 240 - playsfx 55 - checksound + special sub_8135BA0 + playse 55 + waitse setvar 0x8004, 8 setvar 0x8005, 0 - special 237 + special sub_8135668 setvar 0x4000, 5 - special 39 - special 239 + special SavePlayerParty + special sub_8135A14 msgbox BattleTower_Lobby_Text_19A0A8, 4 - closebutton + closemessage call BattleTower_Lobby_EventScript_160664 warp BattleTower_Elevator, 255, 1, 6 setvar 0x4000, 0 @@ -185,15 +185,15 @@ BattleTower_Lobby_EventScript_16049E:: @ 816049E lock faceplayer setvar 0x8004, 0 - special 238 + special sub_81358A4 compare RESULT, 6 - jumpeq BattleTower_Lobby_EventScript_160342 - special 39 + goto_if_eq BattleTower_Lobby_EventScript_160342 + special SavePlayerParty msgbox BattleTower_Lobby_Text_199F2C, 4 BattleTower_Lobby_EventScript_1604BE:: @ 81604BE message BattleTower_Lobby_Text_199F79 - waittext + waitmessage multichoice 15, 6, 23, 0 switch RESULT case 0, BattleTower_Lobby_EventScript_1604FA @@ -203,24 +203,24 @@ BattleTower_Lobby_EventScript_1604BE:: @ 81604BE BattleTower_Lobby_EventScript_1604FA:: @ 81604FA message BattleTower_Lobby_Text_19A024 - waittext + waitmessage multichoice 18, 6, 24, 0 switch RESULT case 2, BattleTower_Lobby_EventScript_160652 case 127, BattleTower_Lobby_EventScript_160652 - special 233 + special CheckPartyBattleTowerBanlist compare 0x8004, 1 - jumpeq BattleTower_Lobby_EventScript_16060D + goto_if_eq BattleTower_Lobby_EventScript_16060D setvar 0x8004, 1 copyvar 0x8005, RESULT copyvar 0x8006, RESULT - special 237 + special sub_8135668 msgbox BattleTower_Lobby_Text_19A07B, 4 fadescreen 1 - special 245 + special ChooseBattleTowerPlayerParty waitstate compare RESULT, 0 - jumpeq BattleTower_Lobby_EventScript_16064F + goto_if_eq BattleTower_Lobby_EventScript_16064F msgbox BattleTower_Lobby_Text_199FDA, 5 switch RESULT case 0, BattleTower_Lobby_EventScript_16064F @@ -229,30 +229,30 @@ BattleTower_Lobby_EventScript_1604FA:: @ 81604FA BattleTower_Lobby_EventScript_160587:: @ 8160587 setvar 0x8004, 5 - special 237 + special sub_8135668 setvar 0x4000, 0 setvar 0x8004, 11 - special 237 + special sub_8135668 setvar 0x8004, 0 setvar 0x8005, 1 - special 237 + special sub_8135668 setvar 0x8004, 8 setvar 0x8005, 0 - special 237 - special 40 - closebutton - pause 2 - call BattleTower_Lobby_EventScript_19F806 + special sub_8135668 + special LoadPlayerParty + closemessage + delay 2 + call S_DoSaveDialog setvar 0x4000, 5 - hidebox 0, 0, 15, 10 + erasebox 0, 0, 15, 10 compare RESULT, 0 - jumpeq BattleTower_Lobby_EventScript_160642 - inccounter GAME_STAT_ENTERED_BATTLE_TOWER - special 39 - special 239 + goto_if_eq BattleTower_Lobby_EventScript_160642 + incrementgamestat GAME_STAT_ENTERED_BATTLE_TOWER + special SavePlayerParty + special sub_8135A14 setvar 0x40bc, 1 msgbox BattleTower_Lobby_Text_19A0A8, 4 - closebutton + closemessage call BattleTower_Lobby_EventScript_160664 warp BattleTower_Elevator, 255, 1, 6 setvar 0x4000, 0 @@ -260,7 +260,7 @@ BattleTower_Lobby_EventScript_160587:: @ 8160587 BattleTower_Lobby_EventScript_160600:: @ 8160600 msgbox BattleTower_Lobby_Text_19A0D1, 4 - jump BattleTower_Lobby_EventScript_1604BE + goto BattleTower_Lobby_EventScript_1604BE BattleTower_Lobby_EventScript_16060D:: @ 816060D switch RESULT @@ -269,40 +269,40 @@ BattleTower_Lobby_EventScript_16060D:: @ 816060D BattleTower_Lobby_EventScript_160628:: @ 8160628 msgbox BattleTower_Lobby_Text_19A249, 4 - jump BattleTower_Lobby_EventScript_160662 + goto BattleTower_Lobby_EventScript_160662 BattleTower_Lobby_EventScript_160635:: @ 8160635 msgbox BattleTower_Lobby_Text_19A32D, 4 - jump BattleTower_Lobby_EventScript_160662 + goto BattleTower_Lobby_EventScript_160662 BattleTower_Lobby_EventScript_160642:: @ 8160642 setvar 0x8004, 12 - special 237 - jump BattleTower_Lobby_EventScript_160652 + special sub_8135668 + goto BattleTower_Lobby_EventScript_160652 BattleTower_Lobby_EventScript_16064F:: @ 816064F - special 40 + special LoadPlayerParty BattleTower_Lobby_EventScript_160652:: @ 8160652 msgbox BattleTower_Lobby_Text_199FA9, 4 setvar 0x8004, 11 - special 237 + special sub_8135668 BattleTower_Lobby_EventScript_160662:: @ 8160662 release end BattleTower_Lobby_EventScript_160664:: @ 8160664 - move 1, BattleTower_Lobby_Movement_160693 - move 255, BattleTower_Lobby_Movement_160693 - waitmove 0 - setdooropened 6, 1 - doorchange - move 1, BattleTower_Lobby_Movement_160697 - move 255, BattleTower_Lobby_Movement_16069A - waitmove 0 - setdoorclosed 6, 1 - doorchange + applymovement 1, BattleTower_Lobby_Movement_160693 + applymovement 255, BattleTower_Lobby_Movement_160693 + waitmovement 0 + opendoor 6, 1 + waitdooranim + applymovement 1, BattleTower_Lobby_Movement_160697 + applymovement 255, BattleTower_Lobby_Movement_16069A + waitmovement 0 + closedoor 6, 1 + waitdooranim return BattleTower_Lobby_Movement_160693:: @ 8160693 @@ -348,9 +348,9 @@ BattleTower_Lobby_EventScript_1606CC:: @ 81606CC lock faceplayer compare RESULT, 0 - jumpeq BattleTower_Lobby_EventScript_160701 + goto_if_eq BattleTower_Lobby_EventScript_160701 compare RESULT, 1 - jumpeq BattleTower_Lobby_EventScript_16070B + goto_if_eq BattleTower_Lobby_EventScript_16070B end BattleTower_Lobby_EventScript_1606F7:: @ 81606F7 @@ -378,9 +378,9 @@ BattleTower_Lobby_EventScript_16071E:: @ 816071E BattleTower_Lobby_EventScript_160727:: @ 8160727 lockall - special 283 + special ShowBattleTowerRecords waitbutton - hidebox 0, 0, 29, 19 + erasebox 0, 0, 29, 19 releaseall end @@ -388,35 +388,35 @@ BattleTower_Lobby_EventScript_160733:: @ 8160733 lock faceplayer checkflag 238 - jumpeq BattleTower_Lobby_EventScript_1607C5 + goto_if_eq BattleTower_Lobby_EventScript_1607C5 checkflag 237 - jumpeq BattleTower_Lobby_EventScript_160773 + goto_if_eq BattleTower_Lobby_EventScript_160773 msgbox BattleTower_Lobby_Text_19A9EE, 4 setvar 0x8008, 42 givedecoration 42 compare RESULT, 0 - jumpeq BattleTower_Lobby_EventScript_1607AF + goto_if_eq BattleTower_Lobby_EventScript_1607AF setflag 237 msgbox BattleTower_Lobby_Text_19ABAA, 4 release end BattleTower_Lobby_EventScript_160773:: @ 8160773 - specialval RESULT, 247 + specialvar RESULT, sub_810F404 compare RESULT, 100 - jumpif 0, BattleTower_Lobby_EventScript_1607C5 + goto_if 0, BattleTower_Lobby_EventScript_1607C5 msgbox BattleTower_Lobby_Text_19AAC4, 4 setvar 0x8008, 43 givedecoration 43 compare RESULT, 0 - jumpeq BattleTower_Lobby_EventScript_1607AF + goto_if_eq BattleTower_Lobby_EventScript_1607AF setflag 238 msgbox BattleTower_Lobby_Text_19ABAA, 4 release end BattleTower_Lobby_EventScript_1607AF:: @ 81607AF - bufferdecor 1, 0x8008 + getdecorname 1, 0x8008 msgbox BattleTower_Lobby_Text_1A0CEF, 4 msgbox BattleTower_Lobby_Text_19ABED, 4 release diff --git a/data/scripts/maps/BattleTower_Outside.inc b/data/scripts/maps/BattleTower_Outside.inc index 02c4e0c6f..95c5a9d77 100644 --- a/data/scripts/maps/BattleTower_Outside.inc +++ b/data/scripts/maps/BattleTower_Outside.inc @@ -14,14 +14,14 @@ BattleTower_Outside_EventScript_160168:: @ 8160168 msgbox BattleTower_Outside_Text_199D06, 4 checkitem ITEM_SS_TICKET, 1 compare RESULT, 0 - jumpeq BattleTower_Outside_EventScript_1601C6 + goto_if_eq BattleTower_Outside_EventScript_1601C6 message BattleTower_Outside_Text_199D9D - waittext - jump BattleTower_Outside_EventScript_16018E + waitmessage + goto BattleTower_Outside_EventScript_16018E end BattleTower_Outside_EventScript_16018E:: @ 816018E - multichoicedef 21, 6, 53, 2, 0 + multichoicedefault 21, 6, 53, 2, 0 switch RESULT case 0, BattleTower_Outside_EventScript_1601D0 case 1, BattleTower_Outside_EventScript_1601FB @@ -37,7 +37,7 @@ BattleTower_Outside_EventScript_1601C6:: @ 81601C6 BattleTower_Outside_EventScript_1601D0:: @ 81601D0 msgbox BattleTower_Outside_Text_199DF2, 5 compare RESULT, 0 - jumpeq BattleTower_Outside_EventScript_160226 + goto_if_eq BattleTower_Outside_EventScript_160226 msgbox BattleTower_Outside_Text_199E4B, 4 call BattleTower_Outside_EventScript_160232 warp SlateportCity_Harbor, 255, 8, 11 @@ -48,7 +48,7 @@ BattleTower_Outside_EventScript_1601D0:: @ 81601D0 BattleTower_Outside_EventScript_1601FB:: @ 81601FB msgbox BattleTower_Outside_Text_199E0E, 5 compare RESULT, 0 - jumpeq BattleTower_Outside_EventScript_160226 + goto_if_eq BattleTower_Outside_EventScript_160226 msgbox BattleTower_Outside_Text_199E4B, 4 call BattleTower_Outside_EventScript_160232 warp LilycoveCity_Harbor, 255, 8, 11 @@ -58,16 +58,16 @@ BattleTower_Outside_EventScript_1601FB:: @ 81601FB BattleTower_Outside_EventScript_160226:: @ 8160226 message BattleTower_Outside_Text_199E7A - waittext - jump BattleTower_Outside_EventScript_16018E + waitmessage + goto BattleTower_Outside_EventScript_16018E end BattleTower_Outside_EventScript_160232:: @ 8160232 - closebutton - move LAST_TALKED, BattleTower_Outside_Movement_1A0845 - waitmove 0 - pause 30 - spriteinvisible 5, 26, 4 + closemessage + applymovement LAST_TALKED, BattleTower_Outside_Movement_1A0845 + waitmovement 0 + delay 30 + hideobject 5, 26, 4 setvar 0x8004, 4 call BattleTower_Outside_EventScript_1A047C return diff --git a/data/scripts/maps/CaveOfOrigin_1F.inc b/data/scripts/maps/CaveOfOrigin_1F.inc index 7fd365b36..3ad36cc18 100644 --- a/data/scripts/maps/CaveOfOrigin_1F.inc +++ b/data/scripts/maps/CaveOfOrigin_1F.inc @@ -4,5 +4,5 @@ CaveOfOrigin_1F_MapScripts:: @ 815DD6C CaveOfOrigin_1F_MapScript1_15DD72:: @ 815DD72 checkflag 113 - callif 1, CaveOfOrigin_1F_EventScript_1A04E3 + call_if 1, CaveOfOrigin_1F_EventScript_1A04E3 end diff --git a/data/scripts/maps/CaveOfOrigin_B1F.inc b/data/scripts/maps/CaveOfOrigin_B1F.inc index 9603ae83b..c3bbdd45f 100644 --- a/data/scripts/maps/CaveOfOrigin_B1F.inc +++ b/data/scripts/maps/CaveOfOrigin_B1F.inc @@ -4,5 +4,5 @@ CaveOfOrigin_B1F_MapScripts:: @ 815DD7C CaveOfOrigin_B1F_MapScript1_15DD82:: @ 815DD82 checkflag 113 - callif 1, CaveOfOrigin_B1F_EventScript_1A04E3 + call_if 1, CaveOfOrigin_B1F_EventScript_1A04E3 end diff --git a/data/scripts/maps/CaveOfOrigin_B2F.inc b/data/scripts/maps/CaveOfOrigin_B2F.inc index 6b3a55648..fb65de171 100644 --- a/data/scripts/maps/CaveOfOrigin_B2F.inc +++ b/data/scripts/maps/CaveOfOrigin_B2F.inc @@ -4,5 +4,5 @@ CaveOfOrigin_B2F_MapScripts:: @ 815DD8C CaveOfOrigin_B2F_MapScript1_15DD92:: @ 815DD92 checkflag 113 - callif 1, CaveOfOrigin_B2F_EventScript_1A04E3 + call_if 1, CaveOfOrigin_B2F_EventScript_1A04E3 end diff --git a/data/scripts/maps/CaveOfOrigin_B3F.inc b/data/scripts/maps/CaveOfOrigin_B3F.inc index 8e61048d2..c21b04e91 100644 --- a/data/scripts/maps/CaveOfOrigin_B3F.inc +++ b/data/scripts/maps/CaveOfOrigin_B3F.inc @@ -4,5 +4,5 @@ CaveOfOrigin_B3F_MapScripts:: @ 815DD9C CaveOfOrigin_B3F_MapScript1_15DDA2:: @ 815DDA2 checkflag 113 - callif 1, CaveOfOrigin_B3F_EventScript_1A04E3 + call_if 1, CaveOfOrigin_B3F_EventScript_1A04E3 end diff --git a/data/scripts/maps/CaveOfOrigin_B4F.inc b/data/scripts/maps/CaveOfOrigin_B4F.inc index e9f23ff5a..c6c3cd45e 100644 --- a/data/scripts/maps/CaveOfOrigin_B4F.inc +++ b/data/scripts/maps/CaveOfOrigin_B4F.inc @@ -5,69 +5,69 @@ CaveOfOrigin_B4F_MapScripts:: @ 815DDAC CaveOfOrigin_B4F_MapScript1_15DDB7:: @ 815DDB7 checkflag 2145 - callif 1, CaveOfOrigin_B4F_EventScript_15DDC1 + call_if 1, CaveOfOrigin_B4F_EventScript_15DDC1 end CaveOfOrigin_B4F_EventScript_15DDC1:: @ 815DDC1 - disappear 1 + removeobject 1 return CaveOfOrigin_B4F_MapScript1_15DDC5:: @ 815DDC5 .ifdef SAPPHIRE - setmapfooter 163 + setmaplayoutindex 163 .else - setmapfooter 313 + setmaplayoutindex 313 .endif call CaveOfOrigin_B4F_EventScript_1A01B5 checkflag 113 - callif 1, CaveOfOrigin_B4F_EventScript_1A04E3 + call_if 1, CaveOfOrigin_B4F_EventScript_1A04E3 end CaveOfOrigin_B4F_EventScript_15DDD7:: @ 815DDD7 lockall - move 255, CaveOfOrigin_B4F_Movement_1A0841 - waitmove 0 + applymovement 255, CaveOfOrigin_B4F_Movement_1A0841 + waitmovement 0 .ifdef SAPPHIRE msgbox UnknownString_81B4F03, 4 .else msgbox CaveOfOrigin_B4F_Text_1B4FE4, 4 .endif - closebutton + closemessage setweather 0 doweather - special 284 + special WaitWeather waitstate - playsfx 209 - setanimation 0, 9 - setanimation 1, 13 - setanimation 2, 0 - doanimation 54 - checkanimation 54 + playse 209 + setfieldeffect 0, 9 + setfieldeffect 1, 13 + setfieldeffect 2, 0 + dofieldeffect 54 + waitfieldeffect 54 .ifdef SAPPHIRE setvar RESULT, 3 .else setvar RESULT, 2 .endif - playsfx 107 - special 281 + playse 107 + special sub_80818A4 waitstate - special 282 + special sub_80818FC waitstate - move 1, CaveOfOrigin_B4F_Movement_15DE7D - waitmove 0 - pause 60 + applymovement 1, CaveOfOrigin_B4F_Movement_15DE7D + waitmovement 0 + delay 60 setwildbattle SPECIES_GROUDON_OR_KYOGRE, 45, ITEM_NONE - checksound - pokecry SPECIES_GROUDON_OR_KYOGRE, 2 - pause 40 + waitse + playpokecry SPECIES_GROUDON_OR_KYOGRE, 2 + delay 40 waitpokecry setflag 2145 - special 311 + special ScrSpecial_StartGroudonKyogreBattle waitstate clearflag 2145 - specialval RESULT, 180 + specialvar RESULT, sub_810E300 compare RESULT, 1 - callif 1, CaveOfOrigin_B4F_EventScript_15DE73 + call_if 1, CaveOfOrigin_B4F_EventScript_15DE73 setflag 816 setflag 855 setflag 856 @@ -87,7 +87,7 @@ CaveOfOrigin_B4F_EventScript_15DE73:: @ 815DE73 .else msgbox CaveOfOrigin_B4F_Text_1B5009, 4 .endif - closebutton + closemessage return CaveOfOrigin_B4F_Movement_15DE7D:: @ 815DE7D diff --git a/data/scripts/maps/DesertRuins.inc b/data/scripts/maps/DesertRuins.inc index d5787d792..9f6f7b388 100644 --- a/data/scripts/maps/DesertRuins.inc +++ b/data/scripts/maps/DesertRuins.inc @@ -6,16 +6,16 @@ DesertRuins_MapScripts:: @ 815CAF3 DesertRuins_MapScript1_15CB03:: @ 815CB03 checkflag 2145 - callif 1, DesertRuins_EventScript_15CB0D + call_if 1, DesertRuins_EventScript_15CB0D end DesertRuins_EventScript_15CB0D:: @ 815CB0D - disappear LAST_TALKED + removeobject LAST_TALKED return DesertRuins_MapScript1_15CB11:: @ 815CB11 checkflag 2128 - callif 0, DesertRuins_EventScript_15CB1B + call_if 0, DesertRuins_EventScript_15CB1B end DesertRuins_EventScript_15CB1B:: @ 815CB1B @@ -34,10 +34,10 @@ DesertRuins_MapScript1_15CB52:: @ 815CB52 DesertRuins_EventScript_15CB56:: @ 815CB56 lockall checkflag 2128 - jumpeq DesertRuins_EventScript_15CB6D - braillemsg DesertRuins_Braille_1C54C8 + goto_if_eq DesertRuins_EventScript_15CB6D + braillemessage DesertRuins_Braille_1C54C8 waitbutton - hidebox 0, 0, 29, 19 + erasebox 0, 0, 29, 19 releaseall end @@ -48,23 +48,23 @@ DesertRuins_EventScript_15CB6D:: @ 815CB6D DesertRuins_EventScript_15CB77:: @ 815CB77 lockall - braillemsg DesertRuins_Braille_1C54C8 + braillemessage DesertRuins_Braille_1C54C8 waitbutton - hidebox 0, 0, 29, 19 + erasebox 0, 0, 29, 19 releaseall end DesertRuins_EventScript_15CB85:: @ 815CB85 lock faceplayer - checksound - pokecry SPECIES_REGIROCK, 2 - pause 40 + waitse + playpokecry SPECIES_REGIROCK, 2 + delay 40 waitpokecry setwildbattle SPECIES_REGIROCK, 40, ITEM_NONE setflag 935 setflag 2145 - special 313 + special ScrSpecial_StartRegiBattle waitstate clearflag 2145 release diff --git a/data/scripts/maps/DewfordTown.inc b/data/scripts/maps/DewfordTown.inc index 8ca2eb3df..aa3584741 100644 --- a/data/scripts/maps/DewfordTown.inc +++ b/data/scripts/maps/DewfordTown.inc @@ -10,10 +10,10 @@ DewfordTown_EventScript_14E002:: @ 814E002 lock faceplayer checkflag 189 - jumpif 0, DewfordTown_EventScript_14E076 + goto_if 0, DewfordTown_EventScript_14E076 message DewfordTown_Text_16B522 - waittext - multichoicedef 21, 6, 0, 2, 0 + waitmessage + multichoicedefault 21, 6, 0, 2, 0 switch RESULT case 0, DewfordTown_EventScript_14E04B case 1, DewfordTown_EventScript_14E05B @@ -23,36 +23,36 @@ DewfordTown_EventScript_14E002:: @ 814E002 DewfordTown_EventScript_14E04B:: @ 814E04B msgbox DewfordTown_Text_16B57D, 4 - closebutton - jump DewfordTown_EventScript_14E151 + closemessage + goto DewfordTown_EventScript_14E151 release end DewfordTown_EventScript_14E05B:: @ 814E05B msgbox DewfordTown_Text_16B5D2, 4 - closebutton - jump DewfordTown_EventScript_14E1D8 + closemessage + goto DewfordTown_EventScript_14E1D8 release end DewfordTown_EventScript_14E06B:: @ 814E06B msgbox DewfordTown_Text_16B627, 4 - closebutton + closemessage release end DewfordTown_EventScript_14E076:: @ 814E076 msgbox DewfordTown_Text_16B3BC, 5 compare RESULT, 1 - jumpeq DewfordTown_EventScript_14E093 + goto_if_eq DewfordTown_EventScript_14E093 msgbox DewfordTown_Text_16B471, 4 release end DewfordTown_EventScript_14E093:: @ 814E093 msgbox DewfordTown_Text_16B417, 4 - closebutton - jump DewfordTown_EventScript_14E151 + closemessage + goto DewfordTown_EventScript_14E151 end DewfordTown_EventScript_14E0A2:: @ 814E0A2 @@ -75,12 +75,12 @@ DewfordTown_EventScript_14E0C6:: @ 814E0C6 lock faceplayer checkflag 257 - jumpeq DewfordTown_EventScript_14E11B + goto_if_eq DewfordTown_EventScript_14E11B msgbox DewfordTown_Text_16B665, 5 compare RESULT, 1 - jumpeq DewfordTown_EventScript_14E0F0 + goto_if_eq DewfordTown_EventScript_14E0F0 compare RESULT, 0 - jumpeq DewfordTown_EventScript_14E111 + goto_if_eq DewfordTown_EventScript_14E111 end DewfordTown_EventScript_14E0F0:: @ 814E0F0 @@ -98,12 +98,12 @@ DewfordTown_EventScript_14E111:: @ 814E111 DewfordTown_EventScript_14E11B:: @ 814E11B message DewfordTown_Text_16B84E - waittext + waitmessage multichoice 20, 8, 50, 1 compare RESULT, 0 - jumpeq DewfordTown_EventScript_14E13D + goto_if_eq DewfordTown_EventScript_14E13D compare RESULT, 1 - jumpeq DewfordTown_EventScript_14E147 + goto_if_eq DewfordTown_EventScript_14E147 end DewfordTown_EventScript_14E13D:: @ 814E13D @@ -118,30 +118,30 @@ DewfordTown_EventScript_14E147:: @ 814E147 DewfordTown_EventScript_14E151:: @ 814E151 call DewfordTown_EventScript_1A010C - spritelevelup 2, 0, 11, 0 - spritelevelup 255, 0, 11, 0 - move 2, DewfordTown_Movement_14E40E - waitmove 0 - disappear 2 - move 255, DewfordTown_Movement_14E402 - waitmove 0 - spriteinvisible 255, 0, 11 + setobjectpriority 2, 0, 11, 0 + setobjectpriority 255, 0, 11, 0 + applymovement 2, DewfordTown_Movement_14E40E + waitmovement 0 + removeobject 2 + applymovement 255, DewfordTown_Movement_14E402 + waitmovement 0 + hideobject 255, 0, 11 call DewfordTown_EventScript_1A02E7 - move 4, DewfordTown_Movement_14E293 - move 255, DewfordTown_Movement_14E293 - waitmove 0 - spritevisible 255, 0, 19 + applymovement 4, DewfordTown_Movement_14E293 + applymovement 255, DewfordTown_Movement_14E293 + waitmovement 0 + showobject 255, 0, 19 call DewfordTown_EventScript_1A02EF - move 255, DewfordTown_Movement_14E405 - waitmove 0 - spritevisible 255, 0, 19 + applymovement 255, DewfordTown_Movement_14E405 + waitmovement 0 + showobject 255, 0, 19 clearflag 739 clearflag 881 clearflag 742 setflag 743 - spriteinvisible 4, 0, 11 + hideobject 4, 0, 11 setvar 0x408e, 2 - restorespritelevel 255, 0, 11 + resetobjectpriority 255, 0, 11 warp Route104_MrBrineysHouse, 255, 5, 4 copyvar 0x4096, 0x8008 waitstate @@ -150,41 +150,41 @@ DewfordTown_EventScript_14E151:: @ 814E151 DewfordTown_EventScript_14E1D8:: @ 814E1D8 call DewfordTown_EventScript_1A010C - spritelevelup 2, 0, 11, 0 - spritelevelup 255, 0, 11, 1 - move 2, DewfordTown_Movement_14E40E - waitmove 0 - disappear 2 - move 255, DewfordTown_Movement_14E402 - waitmove 0 - spriteinvisible 255, 0, 11 + setobjectpriority 2, 0, 11, 0 + setobjectpriority 255, 0, 11, 1 + applymovement 2, DewfordTown_Movement_14E40E + waitmovement 0 + removeobject 2 + applymovement 255, DewfordTown_Movement_14E402 + waitmovement 0 + hideobject 255, 0, 11 call DewfordTown_EventScript_1A02E7 - move 4, DewfordTown_Movement_14E356 - move 255, DewfordTown_Movement_14E356 - waitmove 0 + applymovement 4, DewfordTown_Movement_14E356 + applymovement 255, DewfordTown_Movement_14E356 + waitmovement 0 call DewfordTown_EventScript_1A02EF - spritevisible 255, 0, 24 - move 255, DewfordTown_Movement_14E409 - waitmove 0 - movespriteperm 2, 21, 26 - reappear 2 - spritelevelup 2, 0, 24, 0 - move 2, DewfordTown_Movement_14E410 - waitmove 0 + showobject 255, 0, 24 + applymovement 255, DewfordTown_Movement_14E409 + waitmovement 0 + setobjectxyperm 2, 21, 26 + addobject 2 + setobjectpriority 2, 0, 24, 0 + applymovement 2, DewfordTown_Movement_14E410 + waitmovement 0 clearflag 741 - reappear 1 + addobject 1 clearflag 744 setflag 743 - spriteinvisible 4, 0, 11 + hideobject 4, 0, 11 checkflag 149 - callif 0, DewfordTown_EventScript_14E281 + call_if 0, DewfordTown_EventScript_14E281 checkflag 149 - callif 1, DewfordTown_EventScript_14E28A - closebutton + call_if 1, DewfordTown_EventScript_14E28A + closemessage copyvar 0x4096, 0x8008 - restorespritelevel 255, 0, 11 - restorespritelevel 2, 0, 24 - moveoffscreen 2 + resetobjectpriority 255, 0, 11 + resetobjectpriority 2, 0, 24 + moveobjectoffscreen 2 release end @@ -600,9 +600,9 @@ DewfordTown_EventScript_14E413:: @ 814E413 call DewfordTown_EventScript_1A0102 msgbox DewfordTown_Text_16B9CE, 5 compare RESULT, 1 - jumpeq DewfordTown_EventScript_14E439 + goto_if_eq DewfordTown_EventScript_14E439 compare RESULT, 0 - jumpeq DewfordTown_EventScript_14E443 + goto_if_eq DewfordTown_EventScript_14E443 end DewfordTown_EventScript_14E439:: @ 814E439 @@ -617,15 +617,15 @@ DewfordTown_EventScript_14E443:: @ 814E443 lock faceplayer compare RESULT, 1 - jumpeq DewfordTown_EventScript_14E46E + goto_if_eq DewfordTown_EventScript_14E46E compare RESULT, 0 - jumpeq DewfordTown_EventScript_14E485 + goto_if_eq DewfordTown_EventScript_14E485 end DewfordTown_EventScript_14E46E:: @ 814E46E - inccounter GAME_STAT_STARTED_TRENDS + incrementgamestat GAME_STAT_STARTED_TRENDS compare 0x8004, 0 - jumpeq DewfordTown_EventScript_14E48F + goto_if_eq DewfordTown_EventScript_14E48F msgbox DewfordTown_Text_16BB44, 4 release end diff --git a/data/scripts/maps/DewfordTown_Gym.inc b/data/scripts/maps/DewfordTown_Gym.inc index 51d4f44ba..92776afb1 100644 --- a/data/scripts/maps/DewfordTown_Gym.inc +++ b/data/scripts/maps/DewfordTown_Gym.inc @@ -8,91 +8,91 @@ DewfordTown_Gym_MapScript1_15306B:: @ 815306B DewfordTown_Gym_EventScript_153071:: @ 8153071 checktrainerflag OPPONENT_BRAWLY - jumpeq DewfordTown_Gym_EventScript_1530AA + goto_if_eq DewfordTown_Gym_EventScript_1530AA call DewfordTown_Gym_EventScript_153122 copyvar 0x8001, 0x8000 compare 0x8000, 0 - jumpeq DewfordTown_Gym_EventScript_1530BA + goto_if_eq DewfordTown_Gym_EventScript_1530BA compare 0x8000, 1 - jumpeq DewfordTown_Gym_EventScript_1530B6 + goto_if_eq DewfordTown_Gym_EventScript_1530B6 compare 0x8000, 2 - jumpeq DewfordTown_Gym_EventScript_1530B2 - jump DewfordTown_Gym_EventScript_1530AE + goto_if_eq DewfordTown_Gym_EventScript_1530B2 + goto DewfordTown_Gym_EventScript_1530AE DewfordTown_Gym_EventScript_1530AA:: @ 81530AA - darken 0 + setdarklevel 0 return DewfordTown_Gym_EventScript_1530AE:: @ 81530AE - darken 1 + setdarklevel 1 return DewfordTown_Gym_EventScript_1530B2:: @ 81530B2 - darken 2 + setdarklevel 2 return DewfordTown_Gym_EventScript_1530B6:: @ 81530B6 - darken 3 + setdarklevel 3 return DewfordTown_Gym_EventScript_1530BA:: @ 81530BA - darken 4 + setdarklevel 4 return DewfordTown_Gym_EventScript_1530BE:: @ 81530BE call DewfordTown_Gym_EventScript_153122 - snop1 - comparevars 0x8000, 0x8001 - jumpeq DewfordTown_Gym_EventScript_1530F5 + nop1 + compare 0x8000, 0x8001 + goto_if_eq DewfordTown_Gym_EventScript_1530F5 copyvar 0x8001, 0x8000 compare 0x8000, 1 - jumpeq DewfordTown_Gym_EventScript_1530F6 + goto_if_eq DewfordTown_Gym_EventScript_1530F6 compare 0x8000, 2 - jumpeq DewfordTown_Gym_EventScript_153101 + goto_if_eq DewfordTown_Gym_EventScript_153101 compare 0x8000, 3 - jumpeq DewfordTown_Gym_EventScript_15310C + goto_if_eq DewfordTown_Gym_EventScript_15310C DewfordTown_Gym_EventScript_1530F5:: @ 81530F5 return DewfordTown_Gym_EventScript_1530F6:: @ 81530F6 - playsfx 35 - lighten 3 + playse 35 + animdarklevel 3 call DewfordTown_Gym_EventScript_153071 return DewfordTown_Gym_EventScript_153101:: @ 8153101 - playsfx 35 - lighten 2 + playse 35 + animdarklevel 2 call DewfordTown_Gym_EventScript_153071 return DewfordTown_Gym_EventScript_15310C:: @ 815310C - playsfx 35 - lighten 1 + playse 35 + animdarklevel 1 call DewfordTown_Gym_EventScript_153071 return DewfordTown_Gym_EventScript_153117:: @ 8153117 - playsfx 35 - lighten 0 + playse 35 + animdarklevel 0 call DewfordTown_Gym_EventScript_153071 return DewfordTown_Gym_EventScript_153122:: @ 8153122 setvar 0x8000, 0 checktrainerflag OPPONENT_HIDEKI - jumpif 0, DewfordTown_Gym_EventScript_153135 + goto_if 0, DewfordTown_Gym_EventScript_153135 addvar 0x8000, 1 DewfordTown_Gym_EventScript_153135:: @ 8153135 checktrainerflag OPPONENT_TESSA - jumpif 0, DewfordTown_Gym_EventScript_153143 + goto_if 0, DewfordTown_Gym_EventScript_153143 addvar 0x8000, 1 DewfordTown_Gym_EventScript_153143:: @ 8153143 checktrainerflag OPPONENT_LAURA - jumpif 0, DewfordTown_Gym_EventScript_153151 + goto_if 0, DewfordTown_Gym_EventScript_153151 addvar 0x8000, 1 DewfordTown_Gym_EventScript_153151:: @ 8153151 @@ -101,7 +101,7 @@ DewfordTown_Gym_EventScript_153151:: @ 8153151 DewfordTown_Gym_EventScript_153152:: @ 8153152 trainerbattle 1, OPPONENT_BRAWLY, 0, DewfordTown_Gym_Text_175182, DewfordTown_Gym_Text_175246, DewfordTown_Gym_EventScript_153177 checkflag 166 - jumpif 0, DewfordTown_Gym_EventScript_1531B5 + goto_if 0, DewfordTown_Gym_EventScript_1531B5 msgbox DewfordTown_Gym_Text_175412, 4 release end @@ -109,23 +109,23 @@ DewfordTown_Gym_EventScript_153152:: @ 8153152 DewfordTown_Gym_EventScript_153177:: @ 8153177 call DewfordTown_Gym_EventScript_153117 message DewfordTown_Gym_Text_1752BB - waittext + waitmessage call DewfordTown_Gym_EventScript_1A02C5 msgbox DewfordTown_Gym_Text_1752E6, 4 setflag 1204 setflag 2056 addvar 0x4085, 1 compare 0x4085, 6 - callif 1, DewfordTown_Gym_EventScript_1A00FB + call_if 1, DewfordTown_Gym_EventScript_1A00FB setvar 0x8008, 2 call DewfordTown_Gym_EventScript_1A01C0 - jump DewfordTown_Gym_EventScript_1531B5 + goto DewfordTown_Gym_EventScript_1531B5 end DewfordTown_Gym_EventScript_1531B5:: @ 81531B5 giveitem ITEM_TM08 compare RESULT, 0 - jumpeq DewfordTown_Gym_EventScript_1A029B + goto_if_eq DewfordTown_Gym_EventScript_1A029B msgbox DewfordTown_Gym_Text_1753BF, 4 setflag 166 release @@ -165,7 +165,7 @@ DewfordTown_Gym_EventScript_15323F:: @ 815323F lock faceplayer checkflag 1204 - jumpeq DewfordTown_Gym_EventScript_153254 + goto_if_eq DewfordTown_Gym_EventScript_153254 msgbox DewfordTown_Gym_Text_174D98, 4 release end @@ -178,15 +178,15 @@ DewfordTown_Gym_EventScript_153254:: @ 8153254 DewfordTown_Gym_EventScript_15325E:: @ 815325E lockall checkflag 2056 - jumpeq DewfordTown_Gym_EventScript_15327E - jump DewfordTown_Gym_EventScript_153288 + goto_if_eq DewfordTown_Gym_EventScript_15327E + goto DewfordTown_Gym_EventScript_153288 end DewfordTown_Gym_EventScript_15326E:: @ 815326E lockall checkflag 2056 - jumpeq DewfordTown_Gym_EventScript_15327E - jump DewfordTown_Gym_EventScript_153288 + goto_if_eq DewfordTown_Gym_EventScript_15327E + goto DewfordTown_Gym_EventScript_153288 end DewfordTown_Gym_EventScript_15327E:: @ 815327E diff --git a/data/scripts/maps/DewfordTown_Hall.inc b/data/scripts/maps/DewfordTown_Hall.inc index 0b25e0aba..ea4016147 100644 --- a/data/scripts/maps/DewfordTown_Hall.inc +++ b/data/scripts/maps/DewfordTown_Hall.inc @@ -5,9 +5,9 @@ DewfordTown_Hall_EventScript_153293:: @ 8153293 lock faceplayer call DewfordTown_Hall_EventScript_1A0102 - special 127 + special sub_80FA5E4 compare RESULT, 1 - jumpeq DewfordTown_Hall_EventScript_1532B2 + goto_if_eq DewfordTown_Hall_EventScript_1532B2 msgbox DewfordTown_Hall_Text_1754C9, 4 release end @@ -29,12 +29,12 @@ DewfordTown_Hall_EventScript_1532CD:: @ 81532CD lock faceplayer call DewfordTown_Hall_EventScript_1A0102 - special 128 + special sub_80EB83C msgbox DewfordTown_Hall_Text_1755F9, 5 compare RESULT, 1 - jumpeq DewfordTown_Hall_EventScript_1532F6 + goto_if_eq DewfordTown_Hall_EventScript_1532F6 compare RESULT, 0 - jumpeq DewfordTown_Hall_EventScript_153300 + goto_if_eq DewfordTown_Hall_EventScript_153300 end DewfordTown_Hall_EventScript_1532F6:: @ 81532F6 @@ -52,9 +52,9 @@ DewfordTown_Hall_EventScript_15330A:: @ 815330A faceplayer call DewfordTown_Hall_EventScript_1A0102 msgbox DewfordTown_Hall_Text_17570D, 4 - closebutton - move 4, DewfordTown_Hall_Movement_1A0841 - waitmove 0 + closemessage + applymovement 4, DewfordTown_Hall_Movement_1A0841 + waitmovement 0 release end @@ -63,9 +63,9 @@ DewfordTown_Hall_EventScript_153326:: @ 8153326 faceplayer call DewfordTown_Hall_EventScript_1A0102 msgbox DewfordTown_Hall_Text_17574C, 4 - closebutton - move 5, DewfordTown_Hall_Movement_1A0841 - waitmove 0 + closemessage + applymovement 5, DewfordTown_Hall_Movement_1A0841 + waitmovement 0 release end @@ -87,7 +87,7 @@ DewfordTown_Hall_EventScript_153353:: @ 8153353 DewfordTown_Hall_EventScript_153363:: @ 8153363 lockall call DewfordTown_Hall_EventScript_1A0102 - special 129 + special sub_80FA648 switch RESULT case 0, DewfordTown_Hall_EventScript_1533CA case 4, DewfordTown_Hall_EventScript_1533CA @@ -122,18 +122,18 @@ DewfordTown_Hall_EventScript_1533E8:: @ 81533E8 DewfordTown_Hall_EventScript_1533F2:: @ 81533F2 lockall setvar 0x8008, 0 - jump DewfordTown_Hall_EventScript_15340A + goto DewfordTown_Hall_EventScript_15340A end DewfordTown_Hall_EventScript_1533FE:: @ 81533FE lockall setvar 0x8008, 1 - jump DewfordTown_Hall_EventScript_15340A + goto DewfordTown_Hall_EventScript_15340A end DewfordTown_Hall_EventScript_15340A:: @ 815340A call DewfordTown_Hall_EventScript_1A0102 - special 129 + special sub_80FA648 switch RESULT case 0, DewfordTown_Hall_EventScript_153470 case 1, DewfordTown_Hall_EventScript_153470 @@ -189,55 +189,55 @@ DewfordTown_Hall_EventScript_1534FC:: @ 81534FC return DewfordTown_Hall_EventScript_1534FD:: @ 81534FD - move 8, DewfordTown_Hall_Movement_153599 - waitmove 0 + applymovement 8, DewfordTown_Hall_Movement_153599 + waitmovement 0 compare 0x8008, 0 - jumpeq DewfordTown_Hall_EventScript_15351E + goto_if_eq DewfordTown_Hall_EventScript_15351E compare 0x8008, 1 - jumpeq DewfordTown_Hall_EventScript_153534 + goto_if_eq DewfordTown_Hall_EventScript_153534 end DewfordTown_Hall_EventScript_15351E:: @ 815351E compare FACING, 4 - jumpeq DewfordTown_Hall_EventScript_1534FC - move 255, DewfordTown_Hall_Movement_1A0843 - waitmove 0 + goto_if_eq DewfordTown_Hall_EventScript_1534FC + applymovement 255, DewfordTown_Hall_Movement_1A0843 + waitmovement 0 return DewfordTown_Hall_EventScript_153534:: @ 8153534 return DewfordTown_Hall_EventScript_153535:: @ 8153535 - move 7, DewfordTown_Hall_Movement_15359B - waitmove 0 + applymovement 7, DewfordTown_Hall_Movement_15359B + waitmovement 0 compare 0x8008, 0 - jumpeq DewfordTown_Hall_EventScript_153556 + goto_if_eq DewfordTown_Hall_EventScript_153556 compare 0x8008, 1 - jumpeq DewfordTown_Hall_EventScript_153583 + goto_if_eq DewfordTown_Hall_EventScript_153583 end DewfordTown_Hall_EventScript_153556:: @ 8153556 compare FACING, 2 - callif 1, DewfordTown_Hall_EventScript_15356D + call_if 1, DewfordTown_Hall_EventScript_15356D compare FACING, 1 - callif 1, DewfordTown_Hall_EventScript_153578 + call_if 1, DewfordTown_Hall_EventScript_153578 return DewfordTown_Hall_EventScript_15356D:: @ 815356D - move 255, DewfordTown_Hall_Movement_1A0841 - waitmove 0 + applymovement 255, DewfordTown_Hall_Movement_1A0841 + waitmovement 0 return DewfordTown_Hall_EventScript_153578:: @ 8153578 - move 255, DewfordTown_Hall_Movement_1A0845 - waitmove 0 + applymovement 255, DewfordTown_Hall_Movement_1A0845 + waitmovement 0 return DewfordTown_Hall_EventScript_153583:: @ 8153583 compare FACING, 3 - jumpeq DewfordTown_Hall_EventScript_1534FC - move 255, DewfordTown_Hall_Movement_1A083F - waitmove 0 + goto_if_eq DewfordTown_Hall_EventScript_1534FC + applymovement 255, DewfordTown_Hall_Movement_1A083F + waitmovement 0 return DewfordTown_Hall_Movement_153599:: @ 8153599 @@ -253,11 +253,11 @@ DewfordTown_Hall_EventScript_15359D:: @ 815359D faceplayer call DewfordTown_Hall_EventScript_1A0102 checkflag 230 - jumpeq DewfordTown_Hall_EventScript_1535D1 + goto_if_eq DewfordTown_Hall_EventScript_1535D1 msgbox DewfordTown_Hall_Text_175E13, 4 giveitem ITEM_TM36 compare RESULT, 0 - jumpeq DewfordTown_Hall_EventScript_1A029B + goto_if_eq DewfordTown_Hall_EventScript_1A029B setflag 230 release end diff --git a/data/scripts/maps/DewfordTown_House1.inc b/data/scripts/maps/DewfordTown_House1.inc index 40e06357c..e8897b974 100644 --- a/data/scripts/maps/DewfordTown_House1.inc +++ b/data/scripts/maps/DewfordTown_House1.inc @@ -12,8 +12,8 @@ DewfordTown_House1_EventScript_152FF8:: @ 8152FF8 DewfordTown_House1_EventScript_153001:: @ 8153001 lock faceplayer - checksound - pokecry SPECIES_ZIGZAGOON, 0 + waitse + playpokecry SPECIES_ZIGZAGOON, 0 msgbox DewfordTown_House1_Text_174CC8, 4 waitpokecry release diff --git a/data/scripts/maps/DewfordTown_House2.inc b/data/scripts/maps/DewfordTown_House2.inc index 529f8bb24..befe47404 100644 --- a/data/scripts/maps/DewfordTown_House2.inc +++ b/data/scripts/maps/DewfordTown_House2.inc @@ -5,11 +5,11 @@ DewfordTown_House2_EventScript_1535DC:: @ 81535DC lock faceplayer checkflag 289 - jumpeq DewfordTown_House2_EventScript_153615 + goto_if_eq DewfordTown_House2_EventScript_153615 msgbox DewfordTown_House2_Text_175EFE, 4 giveitem ITEM_SILK_SCARF compare RESULT, 0 - jumpeq DewfordTown_House2_EventScript_15360B + goto_if_eq DewfordTown_House2_EventScript_15360B setflag 289 release end diff --git a/data/scripts/maps/DewfordTown_PokemonCenter_1F.inc b/data/scripts/maps/DewfordTown_PokemonCenter_1F.inc index 96c198ae5..70e75492e 100644 --- a/data/scripts/maps/DewfordTown_PokemonCenter_1F.inc +++ b/data/scripts/maps/DewfordTown_PokemonCenter_1F.inc @@ -10,7 +10,7 @@ DewfordTown_PokemonCenter_1F_MapScript1_15301A:: @ 815301A DewfordTown_PokemonCenter_1F_EventScript_153023:: @ 8153023 setvar 0x800b, 1 call DewfordTown_PokemonCenter_1F_EventScript_19FD5B - waittext + waitmessage waitbutton release end diff --git a/data/scripts/maps/EverGrandeCity.inc b/data/scripts/maps/EverGrandeCity.inc index 9b6d2a8b7..c9768d006 100644 --- a/data/scripts/maps/EverGrandeCity.inc +++ b/data/scripts/maps/EverGrandeCity.inc @@ -4,7 +4,7 @@ EverGrandeCity_MapScripts:: @ 814D4D5 EverGrandeCity_MapScript1_14D4DB:: @ 814D4DB checkflag 2090 - callif 1, EverGrandeCity_EventScript_1A02C1 + call_if 1, EverGrandeCity_EventScript_1A02C1 end EverGrandeCity_EventScript_14D4E5:: @ 814D4E5 diff --git a/data/scripts/maps/EverGrandeCity_ChampionsRoom.inc b/data/scripts/maps/EverGrandeCity_ChampionsRoom.inc index 0e5dc21b0..90df9ab4e 100644 --- a/data/scripts/maps/EverGrandeCity_ChampionsRoom.inc +++ b/data/scripts/maps/EverGrandeCity_ChampionsRoom.inc @@ -13,7 +13,7 @@ EverGrandeCity_ChampionsRoom_MapScript2_15B7C5:: @ 815B7C5 .2byte 0 EverGrandeCity_ChampionsRoom_EventScript_15B7CF:: @ 815B7CF - spriteface 255, 2 + turnobject 255, 2 end EverGrandeCity_ChampionsRoom_MapScript2_15B7D4:: @ 815B7D4 @@ -22,13 +22,13 @@ EverGrandeCity_ChampionsRoom_MapScript2_15B7D4:: @ 815B7D4 EverGrandeCity_ChampionsRoom_EventScript_15B7DE:: @ 815B7DE lockall - move 255, EverGrandeCity_ChampionsRoom_Movement_1A084E - waitmove 0 - pause 40 - move 255, EverGrandeCity_ChampionsRoom_Movement_15B802 - waitmove 0 + applymovement 255, EverGrandeCity_ChampionsRoom_Movement_1A084E + waitmovement 0 + delay 40 + applymovement 255, EverGrandeCity_ChampionsRoom_Movement_15B802 + waitmovement 0 setvar 0x4001, 1 - jump EverGrandeCity_ChampionsRoom_EventScript_15B805 + goto EverGrandeCity_ChampionsRoom_EventScript_15B805 releaseall end @@ -38,104 +38,104 @@ EverGrandeCity_ChampionsRoom_Movement_15B802:: @ 815B802 step_end EverGrandeCity_ChampionsRoom_EventScript_15B805:: @ 815B805 - playmusic 454, 0 + playbgm 454, 0 msgbox EverGrandeCity_ChampionsRoom_Text_190F9C, 4 trainerbattle 3, OPPONENT_STEVEN, 0, EverGrandeCity_ChampionsRoom_Text_1910A0 - jump EverGrandeCity_ChampionsRoom_EventScript_15B821 + goto EverGrandeCity_ChampionsRoom_EventScript_15B821 end EverGrandeCity_ChampionsRoom_EventScript_15B821:: @ 815B821 - playsfx 8 + playse 8 setmaptile 6, 1, 838, 0 setmaptile 6, 2, 839, 0 - special 142 + special DrawWholeMapView msgbox EverGrandeCity_ChampionsRoom_Text_1910FE, 4 - closebutton - playsfx 8 - checkgender + closemessage + playse 8 + checkplayergender compare RESULT, 0 - callif 1, EverGrandeCity_ChampionsRoom_EventScript_15B87C + call_if 1, EverGrandeCity_ChampionsRoom_EventScript_15B87C compare RESULT, 1 - callif 1, EverGrandeCity_ChampionsRoom_EventScript_15B881 - reappear 2 + call_if 1, EverGrandeCity_ChampionsRoom_EventScript_15B881 + addobject 2 call EverGrandeCity_ChampionsRoom_EventScript_15B9BD - checkgender + checkplayergender compare RESULT, 0 - jumpeq EverGrandeCity_ChampionsRoom_EventScript_15B886 + goto_if_eq EverGrandeCity_ChampionsRoom_EventScript_15B886 compare RESULT, 1 - jumpeq EverGrandeCity_ChampionsRoom_EventScript_15B8BB + goto_if_eq EverGrandeCity_ChampionsRoom_EventScript_15B8BB end EverGrandeCity_ChampionsRoom_EventScript_15B87C:: @ 815B87C - playmusic 415, 0 + playbgm 415, 0 return EverGrandeCity_ChampionsRoom_EventScript_15B881:: @ 815B881 - playmusic 421, 0 + playbgm 421, 0 return EverGrandeCity_ChampionsRoom_EventScript_15B886:: @ 815B886 msgbox EverGrandeCity_ChampionsRoom_Text_191225, 4 - pause 40 - playsfx 21 - move 2, EverGrandeCity_ChampionsRoom_Movement_1A0833 - waitmove 0 - move 2, EverGrandeCity_ChampionsRoom_Movement_1A0835 - waitmove 0 + delay 40 + playse 21 + applymovement 2, EverGrandeCity_ChampionsRoom_Movement_1A0833 + waitmovement 0 + applymovement 2, EverGrandeCity_ChampionsRoom_Movement_1A0835 + waitmovement 0 call EverGrandeCity_ChampionsRoom_EventScript_15B9D2 msgbox EverGrandeCity_ChampionsRoom_Text_191268, 4 - jump EverGrandeCity_ChampionsRoom_EventScript_15B8F0 + goto EverGrandeCity_ChampionsRoom_EventScript_15B8F0 end EverGrandeCity_ChampionsRoom_EventScript_15B8BB:: @ 815B8BB msgbox EverGrandeCity_ChampionsRoom_Text_1912B3, 4 - pause 40 - playsfx 21 - move 2, EverGrandeCity_ChampionsRoom_Movement_1A0833 - waitmove 0 - move 2, EverGrandeCity_ChampionsRoom_Movement_1A0835 - waitmove 0 + delay 40 + playse 21 + applymovement 2, EverGrandeCity_ChampionsRoom_Movement_1A0833 + waitmovement 0 + applymovement 2, EverGrandeCity_ChampionsRoom_Movement_1A0835 + waitmovement 0 call EverGrandeCity_ChampionsRoom_EventScript_15B9D2 msgbox EverGrandeCity_ChampionsRoom_Text_191305, 4 - jump EverGrandeCity_ChampionsRoom_EventScript_15B8F0 + goto EverGrandeCity_ChampionsRoom_EventScript_15B8F0 end EverGrandeCity_ChampionsRoom_EventScript_15B8F0:: @ 815B8F0 - closebutton - reappear 3 - move 3, EverGrandeCity_ChampionsRoom_Movement_15BA03 - waitmove 0 - move 255, EverGrandeCity_ChampionsRoom_Movement_1A0843 - waitmove 0 + closemessage + addobject 3 + applymovement 3, EverGrandeCity_ChampionsRoom_Movement_15BA03 + waitmovement 0 + applymovement 255, EverGrandeCity_ChampionsRoom_Movement_1A0843 + waitmovement 0 msgbox EverGrandeCity_ChampionsRoom_Text_19134D, 4 call EverGrandeCity_ChampionsRoom_EventScript_1A03B0 msgbox EverGrandeCity_ChampionsRoom_Text_1914C6, 4 - move 1, EverGrandeCity_ChampionsRoom_Movement_1A0841 - waitmove 0 - pause 20 - move 1, EverGrandeCity_ChampionsRoom_Movement_1A0845 - waitmove 0 + applymovement 1, EverGrandeCity_ChampionsRoom_Movement_1A0841 + waitmovement 0 + delay 20 + applymovement 1, EverGrandeCity_ChampionsRoom_Movement_1A0845 + waitmovement 0 msgbox EverGrandeCity_ChampionsRoom_Text_191512, 4 - closebutton - pause 30 - move 1, EverGrandeCity_ChampionsRoom_Movement_15B9FB - move 255, EverGrandeCity_ChampionsRoom_Movement_15B9DD - move 3, EverGrandeCity_ChampionsRoom_Movement_1A0841 - move 2, EverGrandeCity_ChampionsRoom_Movement_15B9F8 - waitmove 0 - pause 20 - move 255, EverGrandeCity_ChampionsRoom_Movement_1A0845 - waitmove 0 + closemessage + delay 30 + applymovement 1, EverGrandeCity_ChampionsRoom_Movement_15B9FB + applymovement 255, EverGrandeCity_ChampionsRoom_Movement_15B9DD + applymovement 3, EverGrandeCity_ChampionsRoom_Movement_1A0841 + applymovement 2, EverGrandeCity_ChampionsRoom_Movement_15B9F8 + waitmovement 0 + delay 20 + applymovement 255, EverGrandeCity_ChampionsRoom_Movement_1A0845 + waitmovement 0 msgbox EverGrandeCity_ChampionsRoom_Text_191546, 4 - checkgender + checkplayergender compare RESULT, 0 - callif 1, EverGrandeCity_ChampionsRoom_EventScript_15B9AB + call_if 1, EverGrandeCity_ChampionsRoom_EventScript_15B9AB compare RESULT, 1 - callif 1, EverGrandeCity_ChampionsRoom_EventScript_15B9B4 - closebutton - move 1, EverGrandeCity_ChampionsRoom_Movement_15B9FF - move 255, EverGrandeCity_ChampionsRoom_Movement_15B9E0 - waitmove 0 + call_if 1, EverGrandeCity_ChampionsRoom_EventScript_15B9B4 + closemessage + applymovement 1, EverGrandeCity_ChampionsRoom_Movement_15B9FF + applymovement 255, EverGrandeCity_ChampionsRoom_Movement_15B9E0 + waitmovement 0 setflag 781 warp EverGrandeCity_HallOfFame, 255, 7, 16 waitstate @@ -151,15 +151,15 @@ EverGrandeCity_ChampionsRoom_EventScript_15B9B4:: @ 815B9B4 return EverGrandeCity_ChampionsRoom_EventScript_15B9BD:: @ 815B9BD - move 2, EverGrandeCity_ChampionsRoom_Movement_15B9E6 - waitmove 0 - move 255, EverGrandeCity_ChampionsRoom_Movement_1A083F - waitmove 0 + applymovement 2, EverGrandeCity_ChampionsRoom_Movement_15B9E6 + waitmovement 0 + applymovement 255, EverGrandeCity_ChampionsRoom_Movement_1A083F + waitmovement 0 return EverGrandeCity_ChampionsRoom_EventScript_15B9D2:: @ 815B9D2 - move 2, EverGrandeCity_ChampionsRoom_Movement_15B9EF - waitmove 0 + applymovement 2, EverGrandeCity_ChampionsRoom_Movement_15B9EF + waitmovement 0 return EverGrandeCity_ChampionsRoom_Movement_15B9DD:: @ 815B9DD diff --git a/data/scripts/maps/EverGrandeCity_Corridor1.inc b/data/scripts/maps/EverGrandeCity_Corridor1.inc index 499ad673f..104504960 100644 --- a/data/scripts/maps/EverGrandeCity_Corridor1.inc +++ b/data/scripts/maps/EverGrandeCity_Corridor1.inc @@ -7,5 +7,5 @@ EverGrandeCity_Corridor1_MapScript2_15BA12:: @ 815BA12 .2byte 0 EverGrandeCity_Corridor1_EventScript_15BA1C:: @ 815BA1C - spriteface 255, 2 + turnobject 255, 2 end diff --git a/data/scripts/maps/EverGrandeCity_Corridor2.inc b/data/scripts/maps/EverGrandeCity_Corridor2.inc index 692de1ed9..c7c049020 100644 --- a/data/scripts/maps/EverGrandeCity_Corridor2.inc +++ b/data/scripts/maps/EverGrandeCity_Corridor2.inc @@ -7,5 +7,5 @@ EverGrandeCity_Corridor2_MapScript2_15BA27:: @ 815BA27 .2byte 0 EverGrandeCity_Corridor2_EventScript_15BA31:: @ 815BA31 - spriteface 255, 2 + turnobject 255, 2 end diff --git a/data/scripts/maps/EverGrandeCity_Corridor3.inc b/data/scripts/maps/EverGrandeCity_Corridor3.inc index f8ed19669..1714db5cc 100644 --- a/data/scripts/maps/EverGrandeCity_Corridor3.inc +++ b/data/scripts/maps/EverGrandeCity_Corridor3.inc @@ -7,5 +7,5 @@ EverGrandeCity_Corridor3_MapScript2_15BA3C:: @ 815BA3C .2byte 0 EverGrandeCity_Corridor3_EventScript_15BA46:: @ 815BA46 - spriteface 255, 2 + turnobject 255, 2 end diff --git a/data/scripts/maps/EverGrandeCity_Corridor4.inc b/data/scripts/maps/EverGrandeCity_Corridor4.inc index 616a25ec5..64cc234eb 100644 --- a/data/scripts/maps/EverGrandeCity_Corridor4.inc +++ b/data/scripts/maps/EverGrandeCity_Corridor4.inc @@ -7,5 +7,5 @@ EverGrandeCity_Corridor4_MapScript2_15BA51:: @ 815BA51 .2byte 0 EverGrandeCity_Corridor4_EventScript_15BA5B:: @ 815BA5B - spriteface 255, 2 + turnobject 255, 2 end diff --git a/data/scripts/maps/EverGrandeCity_Corridor5.inc b/data/scripts/maps/EverGrandeCity_Corridor5.inc index 783b03aec..73c0b5a84 100644 --- a/data/scripts/maps/EverGrandeCity_Corridor5.inc +++ b/data/scripts/maps/EverGrandeCity_Corridor5.inc @@ -7,5 +7,5 @@ EverGrandeCity_Corridor5_MapScript2_15BA66:: @ 815BA66 .2byte 0 EverGrandeCity_Corridor5_EventScript_15BA70:: @ 815BA70 - spriteface 255, 2 + turnobject 255, 2 end diff --git a/data/scripts/maps/EverGrandeCity_DrakesRoom.inc b/data/scripts/maps/EverGrandeCity_DrakesRoom.inc index c16bd544f..3d3d56ff9 100644 --- a/data/scripts/maps/EverGrandeCity_DrakesRoom.inc +++ b/data/scripts/maps/EverGrandeCity_DrakesRoom.inc @@ -9,7 +9,7 @@ EverGrandeCity_DrakesRoom_MapScripts:: @ 815B70D .2byte 0 EverGrandeCity_DrakesRoom_EventScript_15B727:: @ 815B727 - spriteface 255, 2 + turnobject 255, 2 end EverGrandeCity_DrakesRoom_MapScript2_15B72C:: @ 815B72C @@ -25,9 +25,9 @@ EverGrandeCity_DrakesRoom_EventScript_15B736:: @ 815B736 EverGrandeCity_DrakesRoom_MapScript1_15B743:: @ 815B743 checkflag 1248 - callif 1, EverGrandeCity_DrakesRoom_EventScript_15B758 + call_if 1, EverGrandeCity_DrakesRoom_EventScript_15B758 compare 0x409c, 4 - callif 1, EverGrandeCity_DrakesRoom_EventScript_15B75E + call_if 1, EverGrandeCity_DrakesRoom_EventScript_15B75E end EverGrandeCity_DrakesRoom_EventScript_15B758:: @ 815B758 @@ -42,11 +42,11 @@ EverGrandeCity_DrakesRoom_EventScript_15B764:: @ 815B764 lock faceplayer checkflag 1248 - jumpeq EverGrandeCity_DrakesRoom_EventScript_15B78B - playmusic 450, 0 + goto_if_eq EverGrandeCity_DrakesRoom_EventScript_15B78B + playbgm 450, 0 msgbox EverGrandeCity_DrakesRoom_Text_190CEB, 4 trainerbattle 3, OPPONENT_DRAKE, 0, EverGrandeCity_DrakesRoom_Text_190E42 - jump EverGrandeCity_DrakesRoom_EventScript_15B795 + goto EverGrandeCity_DrakesRoom_EventScript_15B795 end EverGrandeCity_DrakesRoom_EventScript_15B78B:: @ 815B78B @@ -56,7 +56,7 @@ EverGrandeCity_DrakesRoom_EventScript_15B78B:: @ 815B78B EverGrandeCity_DrakesRoom_EventScript_15B795:: @ 815B795 setvar 0x8004, 0 - special 170 + special sub_810FF60 setflag 1248 call EverGrandeCity_DrakesRoom_EventScript_1A0693 msgbox EverGrandeCity_DrakesRoom_Text_190E5D, 4 diff --git a/data/scripts/maps/EverGrandeCity_GlaciasRoom.inc b/data/scripts/maps/EverGrandeCity_GlaciasRoom.inc index 039b2a772..07f6e8877 100644 --- a/data/scripts/maps/EverGrandeCity_GlaciasRoom.inc +++ b/data/scripts/maps/EverGrandeCity_GlaciasRoom.inc @@ -9,7 +9,7 @@ EverGrandeCity_GlaciasRoom_MapScript2_15B683:: @ 815B683 .2byte 0 EverGrandeCity_GlaciasRoom_EventScript_15B68D:: @ 815B68D - spriteface 255, 2 + turnobject 255, 2 end EverGrandeCity_GlaciasRoom_MapScript2_15B692:: @ 815B692 @@ -25,9 +25,9 @@ EverGrandeCity_GlaciasRoom_EventScript_15B69C:: @ 815B69C EverGrandeCity_GlaciasRoom_MapScript1_15B6A9:: @ 815B6A9 checkflag 1247 - callif 1, EverGrandeCity_GlaciasRoom_EventScript_15B6BE + call_if 1, EverGrandeCity_GlaciasRoom_EventScript_15B6BE compare 0x409c, 3 - callif 1, EverGrandeCity_GlaciasRoom_EventScript_15B6C4 + call_if 1, EverGrandeCity_GlaciasRoom_EventScript_15B6C4 end EverGrandeCity_GlaciasRoom_EventScript_15B6BE:: @ 815B6BE @@ -42,11 +42,11 @@ EverGrandeCity_GlaciasRoom_EventScript_15B6CA:: @ 815B6CA lock faceplayer checkflag 1247 - jumpeq EverGrandeCity_GlaciasRoom_EventScript_15B6F1 - playmusic 450, 0 + goto_if_eq EverGrandeCity_GlaciasRoom_EventScript_15B6F1 + playbgm 450, 0 msgbox EverGrandeCity_GlaciasRoom_Text_190AF9, 4 trainerbattle 3, OPPONENT_GLACIA, 0, EverGrandeCity_GlaciasRoom_Text_190C01 - jump EverGrandeCity_GlaciasRoom_EventScript_15B6FB + goto EverGrandeCity_GlaciasRoom_EventScript_15B6FB end EverGrandeCity_GlaciasRoom_EventScript_15B6F1:: @ 815B6F1 diff --git a/data/scripts/maps/EverGrandeCity_HallOfFame.inc b/data/scripts/maps/EverGrandeCity_HallOfFame.inc index 2e7099110..d9baaee89 100644 --- a/data/scripts/maps/EverGrandeCity_HallOfFame.inc +++ b/data/scripts/maps/EverGrandeCity_HallOfFame.inc @@ -8,7 +8,7 @@ EverGrandeCity_HallOfFame_MapScript2_15BB8F:: @ 815BB8F .2byte 0 EverGrandeCity_HallOfFame_EventScript_15BB99:: @ 815BB99 - spriteface 255, 2 + turnobject 255, 2 end EverGrandeCity_HallOfFame_MapScript2_15BB9E:: @ 815BB9E @@ -17,43 +17,43 @@ EverGrandeCity_HallOfFame_MapScript2_15BB9E:: @ 815BB9E EverGrandeCity_HallOfFame_EventScript_15BBA8:: @ 815BBA8 lockall - move 1, EverGrandeCity_HallOfFame_Movement_15BC59 - move 255, EverGrandeCity_HallOfFame_Movement_15BC59 - waitmove 0 - move 1, EverGrandeCity_HallOfFame_Movement_1A0843 - move 255, EverGrandeCity_HallOfFame_Movement_1A083F - waitmove 0 + applymovement 1, EverGrandeCity_HallOfFame_Movement_15BC59 + applymovement 255, EverGrandeCity_HallOfFame_Movement_15BC59 + waitmovement 0 + applymovement 1, EverGrandeCity_HallOfFame_Movement_1A0843 + applymovement 255, EverGrandeCity_HallOfFame_Movement_1A083F + waitmovement 0 msgbox EverGrandeCity_HallOfFame_Text_191841, 4 - closebutton - move 1, EverGrandeCity_HallOfFame_Movement_15BC60 - move 255, EverGrandeCity_HallOfFame_Movement_15BC60 - waitmove 0 - pause 20 - move 1, EverGrandeCity_HallOfFame_Movement_1A0843 - move 255, EverGrandeCity_HallOfFame_Movement_1A083F - waitmove 0 + closemessage + applymovement 1, EverGrandeCity_HallOfFame_Movement_15BC60 + applymovement 255, EverGrandeCity_HallOfFame_Movement_15BC60 + waitmovement 0 + delay 20 + applymovement 1, EverGrandeCity_HallOfFame_Movement_1A0843 + applymovement 255, EverGrandeCity_HallOfFame_Movement_1A083F + waitmovement 0 msgbox EverGrandeCity_HallOfFame_Text_1918D7, 4 - closebutton - move 1, EverGrandeCity_HallOfFame_Movement_1A0841 - move 255, EverGrandeCity_HallOfFame_Movement_1A0841 - waitmove 0 - pause 20 - doanimation 62 - checkanimation 62 - pause 40 + closemessage + applymovement 1, EverGrandeCity_HallOfFame_Movement_1A0841 + applymovement 255, EverGrandeCity_HallOfFame_Movement_1A0841 + waitmovement 0 + delay 20 + dofieldeffect 62 + waitfieldeffect 62 + delay 40 setvar 0x4001, 1 call EverGrandeCity_HallOfFame_EventScript_19FC13 - checkgender + checkplayergender compare RESULT, 0 - jumpeq EverGrandeCity_HallOfFame_EventScript_15BC41 + goto_if_eq EverGrandeCity_HallOfFame_EventScript_15BC41 compare RESULT, 1 - jumpeq EverGrandeCity_HallOfFame_EventScript_15BC4D + goto_if_eq EverGrandeCity_HallOfFame_EventScript_15BC4D end EverGrandeCity_HallOfFame_EventScript_15BC41:: @ 815BC41 sethealplace 1 fadescreendelay 1, 24 - special 272 + special GameClear waitstate releaseall end @@ -61,7 +61,7 @@ EverGrandeCity_HallOfFame_EventScript_15BC41:: @ 815BC41 EverGrandeCity_HallOfFame_EventScript_15BC4D:: @ 815BC4D sethealplace 2 fadescreendelay 1, 24 - special 272 + special GameClear waitstate releaseall end diff --git a/data/scripts/maps/EverGrandeCity_PhoebesRoom.inc b/data/scripts/maps/EverGrandeCity_PhoebesRoom.inc index 7e8ee131a..b7c1618ba 100644 --- a/data/scripts/maps/EverGrandeCity_PhoebesRoom.inc +++ b/data/scripts/maps/EverGrandeCity_PhoebesRoom.inc @@ -9,7 +9,7 @@ EverGrandeCity_PhoebesRoom_MapScript2_15B5E9:: @ 815B5E9 .2byte 0 EverGrandeCity_PhoebesRoom_EventScript_15B5F3:: @ 815B5F3 - spriteface 255, 2 + turnobject 255, 2 end EverGrandeCity_PhoebesRoom_MapScript2_15B5F8:: @ 815B5F8 @@ -25,9 +25,9 @@ EverGrandeCity_PhoebesRoom_EventScript_15B602:: @ 815B602 EverGrandeCity_PhoebesRoom_MapScript1_15B60F:: @ 815B60F checkflag 1246 - callif 1, EverGrandeCity_PhoebesRoom_EventScript_15B624 + call_if 1, EverGrandeCity_PhoebesRoom_EventScript_15B624 compare 0x409c, 2 - callif 1, EverGrandeCity_PhoebesRoom_EventScript_15B62A + call_if 1, EverGrandeCity_PhoebesRoom_EventScript_15B62A end EverGrandeCity_PhoebesRoom_EventScript_15B624:: @ 815B624 @@ -42,11 +42,11 @@ EverGrandeCity_PhoebesRoom_EventScript_15B630:: @ 815B630 lock faceplayer checkflag 1246 - jumpeq EverGrandeCity_PhoebesRoom_EventScript_15B657 - playmusic 450, 0 + goto_if_eq EverGrandeCity_PhoebesRoom_EventScript_15B657 + playbgm 450, 0 msgbox EverGrandeCity_PhoebesRoom_Text_1908F5, 4 trainerbattle 3, OPPONENT_PHOEBE, 0, EverGrandeCity_PhoebesRoom_Text_190A0C - jump EverGrandeCity_PhoebesRoom_EventScript_15B661 + goto EverGrandeCity_PhoebesRoom_EventScript_15B661 end EverGrandeCity_PhoebesRoom_EventScript_15B657:: @ 815B657 diff --git a/data/scripts/maps/EverGrandeCity_PokemonCenter_1F.inc b/data/scripts/maps/EverGrandeCity_PokemonCenter_1F.inc index 7c0b8b0a4..57262b211 100644 --- a/data/scripts/maps/EverGrandeCity_PokemonCenter_1F.inc +++ b/data/scripts/maps/EverGrandeCity_PokemonCenter_1F.inc @@ -10,7 +10,7 @@ EverGrandeCity_PokemonCenter_1F_EventScript_15BC70:: @ 815BC70 SootopolisCity_PokemonCenter_1F_EventScript_15BC70:: @ 815BC70 setvar 0x800b, 1 call SootopolisCity_PokemonCenter_1F_EventScript_19FD5B - waittext + waitmessage waitbutton release end diff --git a/data/scripts/maps/EverGrandeCity_PokemonLeague.inc b/data/scripts/maps/EverGrandeCity_PokemonLeague.inc index bfb3cdc1b..acbdac899 100644 --- a/data/scripts/maps/EverGrandeCity_PokemonLeague.inc +++ b/data/scripts/maps/EverGrandeCity_PokemonLeague.inc @@ -6,18 +6,18 @@ EverGrandeCity_PokemonLeague_MapScript1_15BA7B:: @ 815BA7B sethealplace 20 setflag 2132 checkflag 263 - callif 0, EverGrandeCity_PokemonLeague_EventScript_15BA8B + call_if 0, EverGrandeCity_PokemonLeague_EventScript_15BA8B end EverGrandeCity_PokemonLeague_EventScript_15BA8B:: @ 815BA8B - movespriteperm 3, 9, 2 - movespriteperm 4, 10, 2 + setobjectxyperm 3, 9, 2 + setobjectxyperm 4, 10, 2 return EverGrandeCity_PokemonLeague_EventScript_15BA9A:: @ 815BA9A setvar 0x800b, 1 call EverGrandeCity_PokemonLeague_EventScript_19FD5B - waittext + waitmessage waitbutton release end @@ -26,7 +26,7 @@ EverGrandeCity_PokemonLeague_EventScript_15BAA8:: @ 815BAA8 lock faceplayer message EverGrandeCity_PokemonLeague_Text_1A0BE4 - waittext + waitmessage pokemart EverGrandeCity_PokemonLeague_Items msgbox EverGrandeCity_PokemonLeague_Text_1A0C02, 4 release @@ -48,56 +48,56 @@ EverGrandeCity_PokemonLeague_Items:: @ 815BAC0 EverGrandeCity_PokemonLeague_EventScript_15BAD2:: @ 815BAD2 lockall checkflag 263 - jumpeq EverGrandeCity_PokemonLeague_EventScript_15BB57 + goto_if_eq EverGrandeCity_PokemonLeague_EventScript_15BB57 getplayerxy 0x4000, 0x4001 compare 0x4000, 11 - callif 4, EverGrandeCity_PokemonLeague_EventScript_15BB34 + call_if 4, EverGrandeCity_PokemonLeague_EventScript_15BB34 compare 0x4000, 8 - callif 3, EverGrandeCity_PokemonLeague_EventScript_15BB3F + call_if 3, EverGrandeCity_PokemonLeague_EventScript_15BB3F message EverGrandeCity_PokemonLeague_Text_1916FD - waittext - pause 75 + waitmessage + delay 75 checkflag 2060 - jumpif 0, EverGrandeCity_PokemonLeague_EventScript_15BB4A - closebutton - move 3, EverGrandeCity_PokemonLeague_Movement_15BB7E - move 4, EverGrandeCity_PokemonLeague_Movement_15BB81 - waitmove 0 - pause 10 - fanfare 369 + goto_if 0, EverGrandeCity_PokemonLeague_EventScript_15BB4A + closemessage + applymovement 3, EverGrandeCity_PokemonLeague_Movement_15BB7E + applymovement 4, EverGrandeCity_PokemonLeague_Movement_15BB81 + waitmovement 0 + delay 10 + playfanfare 369 message EverGrandeCity_PokemonLeague_Text_191804 - waittext + waitmessage waitfanfare - closebutton - moveoffscreen 3 - moveoffscreen 4 + closemessage + moveobjectoffscreen 3 + moveobjectoffscreen 4 setflag 263 releaseall end EverGrandeCity_PokemonLeague_EventScript_15BB34:: @ 815BB34 - move 255, EverGrandeCity_PokemonLeague_Movement_15BB76 - waitmove 0 + applymovement 255, EverGrandeCity_PokemonLeague_Movement_15BB76 + waitmovement 0 return EverGrandeCity_PokemonLeague_EventScript_15BB3F:: @ 815BB3F - move 255, EverGrandeCity_PokemonLeague_Movement_15BB7A - waitmove 0 + applymovement 255, EverGrandeCity_PokemonLeague_Movement_15BB7A + waitmovement 0 return EverGrandeCity_PokemonLeague_EventScript_15BB4A:: @ 815BB4A - playsfx 32 + playse 32 msgbox EverGrandeCity_PokemonLeague_Text_19179C, 4 releaseall end EverGrandeCity_PokemonLeague_EventScript_15BB57:: @ 815BB57 - move LAST_TALKED, EverGrandeCity_PokemonLeague_Movement_1A0839 - waitmove 0 + applymovement LAST_TALKED, EverGrandeCity_PokemonLeague_Movement_1A0839 + waitmovement 0 msgbox EverGrandeCity_PokemonLeague_Text_191804, 4 - closebutton - move LAST_TALKED, EverGrandeCity_PokemonLeague_Movement_1A083D - waitmove 0 + closemessage + applymovement LAST_TALKED, EverGrandeCity_PokemonLeague_Movement_1A083D + waitmovement 0 releaseall end diff --git a/data/scripts/maps/EverGrandeCity_SidneysRoom.inc b/data/scripts/maps/EverGrandeCity_SidneysRoom.inc index 84a6c3fdc..daca98176 100644 --- a/data/scripts/maps/EverGrandeCity_SidneysRoom.inc +++ b/data/scripts/maps/EverGrandeCity_SidneysRoom.inc @@ -6,9 +6,9 @@ EverGrandeCity_SidneysRoom_MapScripts:: @ 815B53F EverGrandeCity_SidneysRoom_MapScript1_15B54F:: @ 815B54F checkflag 1245 - callif 1, EverGrandeCity_SidneysRoom_EventScript_15B564 + call_if 1, EverGrandeCity_SidneysRoom_EventScript_15B564 compare 0x409c, 1 - callif 1, EverGrandeCity_SidneysRoom_EventScript_15B56A + call_if 1, EverGrandeCity_SidneysRoom_EventScript_15B56A end EverGrandeCity_SidneysRoom_EventScript_15B564:: @ 815B564 @@ -25,7 +25,7 @@ EverGrandeCity_SidneysRoom_MapScript2_15B570:: @ 815B570 .2byte 0 EverGrandeCity_SidneysRoom_EventScript_15B57A:: @ 815B57A - spriteface 255, 2 + turnobject 255, 2 end EverGrandeCity_SidneysRoom_MapScript2_15B57F:: @ 815B57F @@ -43,11 +43,11 @@ EverGrandeCity_SidneysRoom_EventScript_15B596:: @ 815B596 lock faceplayer checkflag 1245 - jumpeq EverGrandeCity_SidneysRoom_EventScript_15B5BD - playmusic 450, 0 + goto_if_eq EverGrandeCity_SidneysRoom_EventScript_15B5BD + playbgm 450, 0 msgbox EverGrandeCity_SidneysRoom_Text_190728, 4 trainerbattle 3, OPPONENT_SIDNEY, 0, EverGrandeCity_SidneysRoom_Text_190823 - jump EverGrandeCity_SidneysRoom_EventScript_15B5C7 + goto EverGrandeCity_SidneysRoom_EventScript_15B5C7 end EverGrandeCity_SidneysRoom_EventScript_15B5BD:: @ 815B5BD diff --git a/data/scripts/maps/FallarborTown.inc b/data/scripts/maps/FallarborTown.inc index a48be5b24..13c8a9f2e 100644 --- a/data/scripts/maps/FallarborTown.inc +++ b/data/scripts/maps/FallarborTown.inc @@ -13,7 +13,7 @@ FallarborTown_EventScript_14E7F5:: @ 814E7F5 lock faceplayer checkflag 139 - jumpeq FallarborTown_EventScript_14E80A + goto_if_eq FallarborTown_EventScript_14E80A msgbox FallarborTown_Text_16C7FF, 4 release end @@ -34,8 +34,8 @@ FallarborTown_EventScript_14E81D:: @ 814E81D FallarborTown_EventScript_14E826:: @ 814E826 lock faceplayer - checksound - pokecry SPECIES_AZURILL, 0 + waitse + playpokecry SPECIES_AZURILL, 0 msgbox FallarborTown_Text_16C92C, 4 waitpokecry release diff --git a/data/scripts/maps/FallarborTown_ContestLobby.inc b/data/scripts/maps/FallarborTown_ContestLobby.inc index 706d9aa5f..c4c590b53 100644 --- a/data/scripts/maps/FallarborTown_ContestLobby.inc +++ b/data/scripts/maps/FallarborTown_ContestLobby.inc @@ -11,7 +11,7 @@ FallarborTown_ContestLobby_EventScript_1539CD:: @ 81539CD setvar CONTEST_RANK, 1 call FallarborTown_ContestLobby_EventScript_1A4E92 call FallarborTown_ContestLobby_EventScript_1539F8 - special 83 + special sub_80C4BF0 call FallarborTown_ContestLobby_EventScript_15FBDB setvar 0x4088, 2 warp LinkContestRoom1, 255, 7, 5 @@ -20,28 +20,28 @@ FallarborTown_ContestLobby_EventScript_1539CD:: @ 81539CD FallarborTown_ContestLobby_EventScript_1539F8:: @ 81539F8 lockall - move 1, FallarborTown_ContestLobby_Movement_153A7C - waitmove 0 - playsfx 71 + applymovement 1, FallarborTown_ContestLobby_Movement_153A7C + waitmovement 0 + playse 71 setmaptile 4, 2, 545, 1 setmaptile 4, 3, 609, 1 - special 142 - move 1, FallarborTown_ContestLobby_Movement_153A7F - waitmove 0 - playsfx 71 + special DrawWholeMapView + applymovement 1, FallarborTown_ContestLobby_Movement_153A7F + waitmovement 0 + playse 71 setmaptile 4, 2, 721, 1 setmaptile 4, 3, 729, 1 - special 142 - pause 20 - move 1, FallarborTown_ContestLobby_Movement_153A8C - waitmove 0 - move 255, FallarborTown_ContestLobby_Movement_153A7A - waitmove 0 + special DrawWholeMapView + delay 20 + applymovement 1, FallarborTown_ContestLobby_Movement_153A8C + waitmovement 0 + applymovement 255, FallarborTown_ContestLobby_Movement_153A7A + waitmovement 0 msgbox FallarborTown_ContestLobby_Text_1A6832, 4 - closebutton - move 1, FallarborTown_ContestLobby_Movement_153A83 - move 255, FallarborTown_ContestLobby_Movement_153A70 - waitmove 0 + closemessage + applymovement 1, FallarborTown_ContestLobby_Movement_153A83 + applymovement 255, FallarborTown_ContestLobby_Movement_153A70 + waitmovement 0 releaseall return @@ -93,7 +93,7 @@ FallarborTown_ContestLobby_EventScript_153A8E:: @ 8153A8E FallarborTown_ContestLobby_EventScript_153A97:: @ 8153A97 checkflag 270 - jumpeq FallarborTown_ContestLobby_EventScript_153AA9 + goto_if_eq FallarborTown_ContestLobby_EventScript_153AA9 msgbox FallarborTown_ContestLobby_Text_177246, 2 end @@ -108,14 +108,14 @@ FallarborTown_ContestLobby_EventScript_153AB2:: @ 8153AB2 FallarborTown_ContestLobby_EventScript_153ABB:: @ 8153ABB lockall fadescreen 1 - showcontestwinner 2 + drawcontestwinner 2 releaseall end FallarborTown_ContestLobby_EventScript_153AC2:: @ 8153AC2 lockall - special 259 + special ShowBerryBlenderRecordWindow waitbutton - hidebox 0, 0, 29, 19 + erasebox 0, 0, 29, 19 releaseall end diff --git a/data/scripts/maps/FallarborTown_House1.inc b/data/scripts/maps/FallarborTown_House1.inc index 8a44cdcfb..0228fe25d 100644 --- a/data/scripts/maps/FallarborTown_House1.inc +++ b/data/scripts/maps/FallarborTown_House1.inc @@ -9,25 +9,25 @@ FallarborTown_House1_EventScript_153BB5:: @ 8153BB5 lock faceplayer checkflag 229 - jumpeq FallarborTown_House1_EventScript_153C54 + goto_if_eq FallarborTown_House1_EventScript_153C54 checkitem ITEM_METEORITE, 1 compare RESULT, 1 - jumpeq FallarborTown_House1_EventScript_153BDA + goto_if_eq FallarborTown_House1_EventScript_153BDA msgbox FallarborTown_House1_Text_177755, 4 release end FallarborTown_House1_EventScript_153BDA:: @ 8153BDA checkflag 2 - callif 0, FallarborTown_House1_EventScript_153C2D + call_if 0, FallarborTown_House1_EventScript_153C2D checkflag 2 - callif 1, FallarborTown_House1_EventScript_153C3E + call_if 1, FallarborTown_House1_EventScript_153C3E compare RESULT, 0 - jumpeq FallarborTown_House1_EventScript_153C47 + goto_if_eq FallarborTown_House1_EventScript_153C47 msgbox FallarborTown_House1_Text_1778C4, 4 giveitem ITEM_TM27 compare RESULT, 0 - jumpeq FallarborTown_House1_EventScript_1A029B + goto_if_eq FallarborTown_House1_EventScript_1A029B setvar 0x8004, 280 call FallarborTown_House1_EventScript_1A067F setflag 229 @@ -59,9 +59,9 @@ FallarborTown_House1_EventScript_153C5E:: @ 8153C5E lock faceplayer checkflag 229 - jumpeq FallarborTown_House1_EventScript_153C86 + goto_if_eq FallarborTown_House1_EventScript_153C86 checkflag 139 - jumpeq FallarborTown_House1_EventScript_153C7C + goto_if_eq FallarborTown_House1_EventScript_153C7C msgbox FallarborTown_House1_Text_177A2B, 4 release end diff --git a/data/scripts/maps/FallarborTown_House2.inc b/data/scripts/maps/FallarborTown_House2.inc index 179f281af..3b215a697 100644 --- a/data/scripts/maps/FallarborTown_House2.inc +++ b/data/scripts/maps/FallarborTown_House2.inc @@ -3,58 +3,58 @@ FallarborTown_House2_MapScripts:: @ 8153C90 FallarborTown_House2_EventScript_153C91:: @ 8153C91 lockall - move 1, FallarborTown_House2_Movement_1A0839 - waitmove 0 + applymovement 1, FallarborTown_House2_Movement_1A0839 + waitmovement 0 checkflag 1 - jumpeq FallarborTown_House2_EventScript_153CB6 + goto_if_eq FallarborTown_House2_EventScript_153CB6 msgbox FallarborTown_House2_Text_177AF4, 4 setflag 1 - jump FallarborTown_House2_EventScript_153CB6 + goto FallarborTown_House2_EventScript_153CB6 end FallarborTown_House2_EventScript_153CB6:: @ 8153CB6 checkitem ITEM_HEART_SCALE, 1 compare RESULT, 0 - jumpeq FallarborTown_House2_EventScript_153D60 + goto_if_eq FallarborTown_House2_EventScript_153D60 msgbox FallarborTown_House2_Text_177BDB, 5 switch RESULT case 0, FallarborTown_House2_EventScript_153D60 - jump FallarborTown_House2_EventScript_153CE4 + goto FallarborTown_House2_EventScript_153CE4 end FallarborTown_House2_EventScript_153CE4:: @ 8153CE4 msgbox FallarborTown_House2_Text_177C3F, 4 - special 219 + special sub_80F9A4C waitstate compare 0x8004, 255 - jumpeq FallarborTown_House2_EventScript_153D60 - special 328 + goto_if_eq FallarborTown_House2_EventScript_153D60 + special sub_80FA148 compare RESULT, 1 - jumpeq FallarborTown_House2_EventScript_153D52 + goto_if_eq FallarborTown_House2_EventScript_153D52 compare 0x8005, 0 - jumpeq FallarborTown_House2_EventScript_153D44 - jump FallarborTown_House2_EventScript_153D1A + goto_if_eq FallarborTown_House2_EventScript_153D44 + goto FallarborTown_House2_EventScript_153D1A end FallarborTown_House2_EventScript_153D1A:: @ 8153D1A msgbox FallarborTown_House2_Text_177C5D, 4 - special 224 + special sub_8132670 waitstate compare 0x8004, 0 - jumpeq FallarborTown_House2_EventScript_153CE4 + goto_if_eq FallarborTown_House2_EventScript_153CE4 msgbox FallarborTown_House2_Text_177CC3, 4 removeitem ITEM_HEART_SCALE, 1 - jump FallarborTown_House2_EventScript_153D60 + goto FallarborTown_House2_EventScript_153D60 end FallarborTown_House2_EventScript_153D44:: @ 8153D44 msgbox FallarborTown_House2_Text_177C78, 4 - jump FallarborTown_House2_EventScript_153CE4 + goto FallarborTown_House2_EventScript_153CE4 end FallarborTown_House2_EventScript_153D52:: @ 8153D52 msgbox FallarborTown_House2_Text_177D33, 4 - jump FallarborTown_House2_EventScript_153CE4 + goto FallarborTown_House2_EventScript_153CE4 end FallarborTown_House2_EventScript_153D60:: @ 8153D60 diff --git a/data/scripts/maps/FallarborTown_Mart.inc b/data/scripts/maps/FallarborTown_Mart.inc index 4b66546e8..e6f715697 100644 --- a/data/scripts/maps/FallarborTown_Mart.inc +++ b/data/scripts/maps/FallarborTown_Mart.inc @@ -5,7 +5,7 @@ FallarborTown_Mart_EventScript_153967:: @ 8153967 lock faceplayer message FallarborTown_Mart_Text_1A0BE4 - waittext + waitmessage pokemart FallarborTown_Mart_Items msgbox FallarborTown_Mart_Text_1A0C02, 4 release @@ -40,8 +40,8 @@ FallarborTown_Mart_EventScript_1539A5:: @ 81539A5 FallarborTown_Mart_EventScript_1539AE:: @ 81539AE lock faceplayer - checksound - pokecry SPECIES_SKITTY, 0 + waitse + playpokecry SPECIES_SKITTY, 0 msgbox FallarborTown_Mart_Text_1770D3, 4 waitpokecry release diff --git a/data/scripts/maps/FallarborTown_PokemonCenter_1F.inc b/data/scripts/maps/FallarborTown_PokemonCenter_1F.inc index 636cac8f1..5b1f1c948 100644 --- a/data/scripts/maps/FallarborTown_PokemonCenter_1F.inc +++ b/data/scripts/maps/FallarborTown_PokemonCenter_1F.inc @@ -10,7 +10,7 @@ FallarborTown_PokemonCenter_1F_MapScript1_153AF9:: @ 8153AF9 FallarborTown_PokemonCenter_1F_EventScript_153B02:: @ 8153B02 setvar 0x800b, 1 call FallarborTown_PokemonCenter_1F_EventScript_19FD5B - waittext + waitmessage waitbutton release end @@ -27,27 +27,27 @@ FallarborTown_PokemonCenter_1F_EventScript_153B22:: @ 8153B22 lock faceplayer msgbox FallarborTown_PokemonCenter_1F_Text_1774D4, 4 - closebutton + closemessage switch FACING case 2, FallarborTown_PokemonCenter_1F_EventScript_153B49 case 3, FallarborTown_PokemonCenter_1F_EventScript_153B59 end FallarborTown_PokemonCenter_1F_EventScript_153B49:: @ 8153B49 - move 4, FallarborTown_PokemonCenter_1F_Movement_153B74 - waitmove 0 - jump FallarborTown_PokemonCenter_1F_EventScript_153B69 + applymovement 4, FallarborTown_PokemonCenter_1F_Movement_153B74 + waitmovement 0 + goto FallarborTown_PokemonCenter_1F_EventScript_153B69 end FallarborTown_PokemonCenter_1F_EventScript_153B59:: @ 8153B59 - move 4, FallarborTown_PokemonCenter_1F_Movement_153B81 - waitmove 0 - jump FallarborTown_PokemonCenter_1F_EventScript_153B69 + applymovement 4, FallarborTown_PokemonCenter_1F_Movement_153B81 + waitmovement 0 + goto FallarborTown_PokemonCenter_1F_EventScript_153B69 end FallarborTown_PokemonCenter_1F_EventScript_153B69:: @ 8153B69 - playsfx 18 - disappear 4 + playse 18 + removeobject 4 clearflag 870 release end diff --git a/data/scripts/maps/FortreeCity.inc b/data/scripts/maps/FortreeCity.inc index 7f9d5ae12..6ea89dcb7 100644 --- a/data/scripts/maps/FortreeCity.inc +++ b/data/scripts/maps/FortreeCity.inc @@ -19,7 +19,7 @@ FortreeCity_EventScript_14C95E:: @ 814C95E lock faceplayer checkflag 295 - jumpeq FortreeCity_EventScript_14C973 + goto_if_eq FortreeCity_EventScript_14C973 msgbox FortreeCity_Text_1675C2, 4 release end @@ -58,7 +58,7 @@ FortreeCity_EventScript_14C9B3:: @ 814C9B3 faceplayer checkitem ITEM_DEVON_SCOPE, 1 compare RESULT, 1 - jumpeq FortreeCity_EventScript_14C9CF + goto_if_eq FortreeCity_EventScript_14C9CF msgbox FortreeCity_Text_167868, 4 release end @@ -66,22 +66,22 @@ FortreeCity_EventScript_14C9B3:: @ 814C9B3 FortreeCity_EventScript_14C9CF:: @ 814C9CF msgbox FortreeCity_Text_16788B, 5 compare RESULT, 1 - jumpeq FortreeCity_EventScript_14C9E4 + goto_if_eq FortreeCity_EventScript_14C9E4 release end FortreeCity_EventScript_14C9E4:: @ 814C9E4 msgbox FortreeCity_Text_1678CB, 4 - closebutton - move LAST_TALKED, FortreeCity_Movement_1A0662 - waitmove 0 - checksound - pokecry SPECIES_KECLEON, 2 - pause 40 + closemessage + applymovement LAST_TALKED, FortreeCity_Movement_1A0662 + waitmovement 0 + waitse + playpokecry SPECIES_KECLEON, 2 + delay 40 waitpokecry - move LAST_TALKED, FortreeCity_Movement_14CA13 - waitmove 0 - disappear LAST_TALKED + applymovement LAST_TALKED, FortreeCity_Movement_14CA13 + waitmovement 0 + removeobject LAST_TALKED setflag 295 release end diff --git a/data/scripts/maps/FortreeCity_DecorationShop.inc b/data/scripts/maps/FortreeCity_DecorationShop.inc index c9d9fdd4e..fca20b866 100644 --- a/data/scripts/maps/FortreeCity_DecorationShop.inc +++ b/data/scripts/maps/FortreeCity_DecorationShop.inc @@ -13,7 +13,7 @@ FortreeCity_DecorationShop_EventScript_15826A:: @ 815826A lock faceplayer message FortreeCity_DecorationShop_Text_1A0BE4 - waittext + waitmessage pokemartdecor FortreeCity_DecorationShop_Decorations1 msgbox FortreeCity_DecorationShop_Text_1A0C02, 4 release @@ -37,7 +37,7 @@ FortreeCity_DecorationShop_EventScript_158298:: @ 8158298 lock faceplayer message FortreeCity_DecorationShop_Text_1A0BE4 - waittext + waitmessage pokemartdecor FortreeCity_DecorationShop_Decorations2 msgbox FortreeCity_DecorationShop_Text_1A0C02, 4 release diff --git a/data/scripts/maps/FortreeCity_Gym.inc b/data/scripts/maps/FortreeCity_Gym.inc index 1bf6b0825..7309be0bb 100644 --- a/data/scripts/maps/FortreeCity_Gym.inc +++ b/data/scripts/maps/FortreeCity_Gym.inc @@ -4,7 +4,7 @@ FortreeCity_Gym_MapScripts:: @ 8157ED3 .byte 0 FortreeCity_Gym_MapScript1_157EDE:: @ 8157EDE - special 201 + special RotatingGate_InitPuzzle end FortreeCity_Gym_MapScript2_157EE2:: @ 8157EE2 @@ -12,33 +12,33 @@ FortreeCity_Gym_MapScript2_157EE2:: @ 8157EE2 .2byte 0 FortreeCity_Gym_EventScript_157EEC:: @ 8157EEC - special 202 + special RotatingGate_InitPuzzleAndGraphics end FortreeCity_Gym_EventScript_157EF0:: @ 8157EF0 trainerbattle 1, OPPONENT_WINONA, 0, FortreeCity_Gym_Text_185CCB, FortreeCity_Gym_Text_185DBA, FortreeCity_Gym_EventScript_157F15 checkflag 170 - jumpif 0, FortreeCity_Gym_EventScript_157F3E + goto_if 0, FortreeCity_Gym_EventScript_157F3E msgbox FortreeCity_Gym_Text_185F98, 4 release end FortreeCity_Gym_EventScript_157F15:: @ 8157F15 message FortreeCity_Gym_Text_185E48 - waittext + waitmessage call FortreeCity_Gym_EventScript_1A02C5 msgbox FortreeCity_Gym_Text_185E73, 4 setflag 1225 setflag 2060 setvar 0x8008, 6 call FortreeCity_Gym_EventScript_1A01C0 - jump FortreeCity_Gym_EventScript_157F3E + goto FortreeCity_Gym_EventScript_157F3E end FortreeCity_Gym_EventScript_157F3E:: @ 8157F3E giveitem ITEM_TM40 compare RESULT, 0 - jumpeq FortreeCity_Gym_EventScript_1A029B + goto_if_eq FortreeCity_Gym_EventScript_1A029B msgbox FortreeCity_Gym_Text_185F4A, 4 setflag 170 release @@ -68,7 +68,7 @@ FortreeCity_Gym_EventScript_157FBE:: @ 8157FBE lock faceplayer checkflag 1225 - jumpeq FortreeCity_Gym_EventScript_157FD3 + goto_if_eq FortreeCity_Gym_EventScript_157FD3 msgbox FortreeCity_Gym_Text_18589C, 4 release end @@ -81,15 +81,15 @@ FortreeCity_Gym_EventScript_157FD3:: @ 8157FD3 FortreeCity_Gym_EventScript_157FDD:: @ 8157FDD lockall checkflag 2060 - jumpeq FortreeCity_Gym_EventScript_157FFD - jump FortreeCity_Gym_EventScript_158007 + goto_if_eq FortreeCity_Gym_EventScript_157FFD + goto FortreeCity_Gym_EventScript_158007 end FortreeCity_Gym_EventScript_157FED:: @ 8157FED lockall checkflag 2060 - jumpeq FortreeCity_Gym_EventScript_157FFD - jump FortreeCity_Gym_EventScript_158007 + goto_if_eq FortreeCity_Gym_EventScript_157FFD + goto FortreeCity_Gym_EventScript_158007 end FortreeCity_Gym_EventScript_157FFD:: @ 8157FFD diff --git a/data/scripts/maps/FortreeCity_House1.inc b/data/scripts/maps/FortreeCity_House1.inc index 0ae6e3fbd..7b7ef0b2e 100644 --- a/data/scripts/maps/FortreeCity_House1.inc +++ b/data/scripts/maps/FortreeCity_House1.inc @@ -5,30 +5,30 @@ FortreeCity_House1_EventScript_157E13:: @ 8157E13 lock faceplayer checkflag 155 - jumpeq FortreeCity_House1_EventScript_157EAD + goto_if_eq FortreeCity_House1_EventScript_157EAD setvar 0x8008, 1 copyvar 0x8004, 0x8008 - specialval RESULT, 252 + specialvar RESULT, sub_804D89C copyvar 0x8009, RESULT msgbox FortreeCity_House1_Text_18568C, 5 compare RESULT, 0 - jumpeq FortreeCity_House1_EventScript_157E95 - special 159 + goto_if_eq FortreeCity_House1_EventScript_157E95 + special sub_80F9A0C waitstate copyvar 0x800a, 0x8004 compare 0x8004, 255 - jumpeq FortreeCity_House1_EventScript_157E95 + goto_if_eq FortreeCity_House1_EventScript_157E95 copyvar 0x8005, 0x800a - specialval RESULT, 255 + specialvar RESULT, sub_804DB2C copyvar 0x800b, RESULT - comparevars RESULT, 0x8009 - jumpif 5, FortreeCity_House1_EventScript_157E9F + compare RESULT, 0x8009 + goto_if 5, FortreeCity_House1_EventScript_157E9F copyvar 0x8004, 0x8008 copyvar 0x8005, 0x800a - special 253 - special 254 + special sub_804DB68 + special sub_804E174 waitstate - bufferpoke 0, 0x8009 + getspeciesname 0, 0x8009 msgbox FortreeCity_House1_Text_1856F7, 4 setflag 155 release @@ -40,7 +40,7 @@ FortreeCity_House1_EventScript_157E95:: @ 8157E95 end FortreeCity_House1_EventScript_157E9F:: @ 8157E9F - bufferpoke 0, 0x8009 + getspeciesname 0, 0x8009 msgbox FortreeCity_House1_Text_185737, 4 release end @@ -57,8 +57,8 @@ FortreeCity_House1_EventScript_157EB7:: @ 8157EB7 FortreeCity_House1_EventScript_157EC0:: @ 8157EC0 lock faceplayer - checksound - pokecry SPECIES_ZIGZAGOON, 0 + waitse + playpokecry SPECIES_ZIGZAGOON, 0 msgbox FortreeCity_House1_Text_185888, 4 waitpokecry release diff --git a/data/scripts/maps/FortreeCity_House2.inc b/data/scripts/maps/FortreeCity_House2.inc index ea4aad3d8..f210dd3ac 100644 --- a/data/scripts/maps/FortreeCity_House2.inc +++ b/data/scripts/maps/FortreeCity_House2.inc @@ -5,9 +5,9 @@ FortreeCity_House2_EventScript_1580B4:: @ 81580B4 lock faceplayer checkflag 264 - jumpeq FortreeCity_House2_EventScript_158157 + goto_if_eq FortreeCity_House2_EventScript_158157 checkflag 118 - callif 0, FortreeCity_House2_EventScript_15814B + call_if 0, FortreeCity_House2_EventScript_15814B msgbox FortreeCity_House2_Text_186360, 4 multichoice 21, 8, 54, 1 switch RESULT @@ -23,7 +23,7 @@ FortreeCity_House2_EventScript_1580B4:: @ 81580B4 msgbox FortreeCity_House2_Text_1864C6, 4 giveitem ITEM_TM10 compare RESULT, 0 - jumpeq FortreeCity_House2_EventScript_1A029B + goto_if_eq FortreeCity_House2_EventScript_1A029B setflag 264 msgbox FortreeCity_House2_Text_18652F, 4 release diff --git a/data/scripts/maps/FortreeCity_House4.inc b/data/scripts/maps/FortreeCity_House4.inc index 33d0ed1ae..b261e14fb 100644 --- a/data/scripts/maps/FortreeCity_House4.inc +++ b/data/scripts/maps/FortreeCity_House4.inc @@ -8,42 +8,42 @@ FortreeCity_House4_EventScript_15817F:: @ 815817F FortreeCity_House4_EventScript_158188:: @ 8158188 lockall checkflag 223 - jumpeq FortreeCity_House4_EventScript_158204 + goto_if_eq FortreeCity_House4_EventScript_158204 checkflag 224 - jumpeq FortreeCity_House4_EventScript_1581D6 + goto_if_eq FortreeCity_House4_EventScript_1581D6 checkflag 222 - jumpeq FortreeCity_House4_EventScript_1581C2 + goto_if_eq FortreeCity_House4_EventScript_1581C2 msgbox FortreeCity_House4_Text_186835, 4 - closebutton + closemessage setflag 222 clearflag 934 - move 3, FortreeCity_House4_Movement_158218 - waitmove 0 - disappear 3 + applymovement 3, FortreeCity_House4_Movement_158218 + waitmovement 0 + removeobject 3 releaseall end FortreeCity_House4_EventScript_1581C2:: @ 81581C2 - move LAST_TALKED, FortreeCity_House4_Movement_1A0839 - waitmove 0 + applymovement LAST_TALKED, FortreeCity_House4_Movement_1A0839 + waitmovement 0 msgbox FortreeCity_House4_Text_18684E, 4 releaseall end FortreeCity_House4_EventScript_1581D6:: @ 81581D6 - move LAST_TALKED, FortreeCity_House4_Movement_1A0839 - waitmove 0 + applymovement LAST_TALKED, FortreeCity_House4_Movement_1A0839 + waitmovement 0 msgbox FortreeCity_House4_Text_186881, 4 giveitem ITEM_MENTAL_HERB compare RESULT, 0 - jumpeq FortreeCity_House4_EventScript_1A029B + goto_if_eq FortreeCity_House4_EventScript_1A029B setflag 223 releaseall end FortreeCity_House4_EventScript_158204:: @ 8158204 - move LAST_TALKED, FortreeCity_House4_Movement_1A0839 - waitmove 0 + applymovement LAST_TALKED, FortreeCity_House4_Movement_1A0839 + waitmovement 0 msgbox FortreeCity_House4_Text_186924, 4 releaseall end @@ -59,8 +59,8 @@ FortreeCity_House4_Movement_158218:: @ 8158218 FortreeCity_House4_EventScript_15821E:: @ 815821E lock faceplayer - checksound - pokecry SPECIES_WINGULL, 0 + waitse + playpokecry SPECIES_WINGULL, 0 msgbox FortreeCity_House4_Text_18695C, 4 waitpokecry release diff --git a/data/scripts/maps/FortreeCity_House5.inc b/data/scripts/maps/FortreeCity_House5.inc index 1144a8e81..fe10b53b0 100644 --- a/data/scripts/maps/FortreeCity_House5.inc +++ b/data/scripts/maps/FortreeCity_House5.inc @@ -12,8 +12,8 @@ FortreeCity_House5_EventScript_15823B:: @ 815823B FortreeCity_House5_EventScript_158244:: @ 8158244 lock faceplayer - checksound - pokecry SPECIES_ZIGZAGOON, 0 + waitse + playpokecry SPECIES_ZIGZAGOON, 0 msgbox FortreeCity_House5_Text_186A4F, 4 waitpokecry release diff --git a/data/scripts/maps/FortreeCity_Mart.inc b/data/scripts/maps/FortreeCity_Mart.inc index 9e5f34ff9..076f702af 100644 --- a/data/scripts/maps/FortreeCity_Mart.inc +++ b/data/scripts/maps/FortreeCity_Mart.inc @@ -5,7 +5,7 @@ FortreeCity_Mart_EventScript_158067:: @ 8158067 lock faceplayer message FortreeCity_Mart_Text_1A0BE4 - waittext + waitmessage pokemart FortreeCity_Mart_Items msgbox FortreeCity_Mart_Text_1A0C02, 4 release diff --git a/data/scripts/maps/FortreeCity_PokemonCenter_1F.inc b/data/scripts/maps/FortreeCity_PokemonCenter_1F.inc index 148324abf..5268cbeed 100644 --- a/data/scripts/maps/FortreeCity_PokemonCenter_1F.inc +++ b/data/scripts/maps/FortreeCity_PokemonCenter_1F.inc @@ -9,7 +9,7 @@ FortreeCity_PokemonCenter_1F_MapScript1_158017:: @ 8158017 FortreeCity_PokemonCenter_1F_EventScript_15801B:: @ 815801B setvar 0x800b, 1 call FortreeCity_PokemonCenter_1F_EventScript_19FD5B - waittext + waitmessage waitbutton release end diff --git a/data/scripts/maps/GraniteCave_1F.inc b/data/scripts/maps/GraniteCave_1F.inc index 59aaa2fc3..f389a774e 100644 --- a/data/scripts/maps/GraniteCave_1F.inc +++ b/data/scripts/maps/GraniteCave_1F.inc @@ -5,7 +5,7 @@ GraniteCave_1F_EventScript_15CBA7:: @ 815CBA7 lock faceplayer checkflag 109 - jumpeq GraniteCave_1F_EventScript_15CBD3 + goto_if_eq GraniteCave_1F_EventScript_15CBD3 msgbox GraniteCave_1F_Text_194917, 4 giveitem ITEM_HM05 setflag 109 diff --git a/data/scripts/maps/GraniteCave_B1F.inc b/data/scripts/maps/GraniteCave_B1F.inc index 240de1d98..aa8d705c7 100644 --- a/data/scripts/maps/GraniteCave_B1F.inc +++ b/data/scripts/maps/GraniteCave_B1F.inc @@ -6,5 +6,5 @@ GraniteCave_B1F_MapScripts:: @ 815CBDD GraniteCave_B1F_MapScript1_15CBED:: @ 815CBED tileeffect 7 - warp5 GraniteCave_B2F, 255, 0, 0 + setholewarp GraniteCave_B2F, 255, 0, 0 end diff --git a/data/scripts/maps/GraniteCave_StevensRoom.inc b/data/scripts/maps/GraniteCave_StevensRoom.inc index 895241406..070276e58 100644 --- a/data/scripts/maps/GraniteCave_StevensRoom.inc +++ b/data/scripts/maps/GraniteCave_StevensRoom.inc @@ -11,30 +11,30 @@ GraniteCave_StevensRoom_EventScript_15CBFA:: @ 815CBFA msgbox GraniteCave_StevensRoom_Text_194BDD, 4 giveitem ITEM_TM47 compare RESULT, 0 - callif 1, GraniteCave_StevensRoom_EventScript_15CC83 + call_if 1, GraniteCave_StevensRoom_EventScript_15CC83 msgbox GraniteCave_StevensRoom_Text_194C8D, 4 - closebutton + closemessage compare FACING, 2 - callif 1, GraniteCave_StevensRoom_EventScript_15CC6D + call_if 1, GraniteCave_StevensRoom_EventScript_15CC6D compare FACING, 1 - callif 1, GraniteCave_StevensRoom_EventScript_15CC78 + call_if 1, GraniteCave_StevensRoom_EventScript_15CC78 compare FACING, 3 - callif 1, GraniteCave_StevensRoom_EventScript_15CC6D + call_if 1, GraniteCave_StevensRoom_EventScript_15CC6D compare FACING, 4 - callif 1, GraniteCave_StevensRoom_EventScript_15CC6D - playsfx 9 - disappear 1 + call_if 1, GraniteCave_StevensRoom_EventScript_15CC6D + playse 9 + removeobject 1 release end GraniteCave_StevensRoom_EventScript_15CC6D:: @ 815CC6D - move 1, GraniteCave_StevensRoom_Movement_15CC8C - waitmove 0 + applymovement 1, GraniteCave_StevensRoom_Movement_15CC8C + waitmovement 0 return GraniteCave_StevensRoom_EventScript_15CC78:: @ 815CC78 - move 1, GraniteCave_StevensRoom_Movement_15CC93 - waitmove 0 + applymovement 1, GraniteCave_StevensRoom_Movement_15CC93 + waitmovement 0 return GraniteCave_StevensRoom_EventScript_15CC83:: @ 815CC83 diff --git a/data/scripts/maps/InsideOfTruck.inc b/data/scripts/maps/InsideOfTruck.inc index 0c26f0f88..fc2930aa5 100644 --- a/data/scripts/maps/InsideOfTruck.inc +++ b/data/scripts/maps/InsideOfTruck.inc @@ -16,11 +16,11 @@ InsideOfTruck_MapScript1_15FC26:: @ 815FC26 InsideOfTruck_EventScript_15FC29:: @ 815FC29 lockall setflag 0x4000 - checkgender + checkplayergender compare RESULT, 0 - jumpeq InsideOfTruck_EventScript_15FC45 + goto_if_eq InsideOfTruck_EventScript_15FC45 compare RESULT, 1 - jumpeq InsideOfTruck_EventScript_15FC68 + goto_if_eq InsideOfTruck_EventScript_15FC68 end InsideOfTruck_EventScript_15FC45:: @ 815FC45 @@ -31,7 +31,7 @@ InsideOfTruck_EventScript_15FC45:: @ 815FC45 setflag 784 setflag 760 setvar 0x408c, 1 - warpplace LittlerootTown, 255, 3, 10 + setdynamicwarp LittlerootTown, 255, 3, 10 releaseall end @@ -43,7 +43,7 @@ InsideOfTruck_EventScript_15FC68:: @ 815FC68 setflag 785 setflag 722 setvar 0x4082, 1 - warpplace LittlerootTown, 255, 12, 10 + setdynamicwarp LittlerootTown, 255, 12, 10 releaseall end diff --git a/data/scripts/maps/IslandCave.inc b/data/scripts/maps/IslandCave.inc index c5d932a91..75399bde8 100644 --- a/data/scripts/maps/IslandCave.inc +++ b/data/scripts/maps/IslandCave.inc @@ -6,16 +6,16 @@ IslandCave_MapScripts:: @ 815EEB6 IslandCave_MapScript1_15EEC6:: @ 815EEC6 checkflag 2145 - callif 1, IslandCave_EventScript_15EED0 + call_if 1, IslandCave_EventScript_15EED0 end IslandCave_EventScript_15EED0:: @ 815EED0 - disappear LAST_TALKED + removeobject LAST_TALKED return IslandCave_MapScript1_15EED4:: @ 815EED4 checkflag 2129 - callif 0, IslandCave_EventScript_15EEDE + call_if 0, IslandCave_EventScript_15EEDE end IslandCave_EventScript_15EEDE:: @ 815EEDE @@ -31,26 +31,26 @@ IslandCave_MapScript1_15EF15:: @ 815EF15 setflag 2133 end -gIslandCave_EventScript_OpenRegiiceChamber:: @ 815EF19 +S_OpenRegiceChamber:: @ 815EF19 setmaptile 7, 19, 554, 1 setmaptile 8, 19, 555, 1 setmaptile 9, 19, 556, 1 setmaptile 7, 20, 562, 1 setmaptile 8, 20, 563, 0 setmaptile 9, 20, 564, 1 - special 142 - playsfx SE_BAN + special DrawWholeMapView + playse SE_BAN setflag 2129 end IslandCave_EventScript_15EF59:: @ 815EF59 lockall checkflag 2129 - jumpeq IslandCave_EventScript_15EF72 - braillemsg IslandCave_Braille_1C54FC - special 280 + goto_if_eq IslandCave_EventScript_15EF72 + braillemessage IslandCave_Braille_1C54FC + special DoBrailleWait waitstate - jump IslandCave_EventScript_15EF95 + goto IslandCave_EventScript_15EF95 end IslandCave_EventScript_15EF72:: @ 815EF72 @@ -60,31 +60,31 @@ IslandCave_EventScript_15EF72:: @ 815EF72 IslandCave_EventScript_15EF7C:: @ 815EF7C lockall - braillemsg IslandCave_Braille_1C54FC + braillemessage IslandCave_Braille_1C54FC checkflag 2129 - jumpeq IslandCave_EventScript_15EF95 - special 280 + goto_if_eq IslandCave_EventScript_15EF95 + special DoBrailleWait waitstate - jump IslandCave_EventScript_15EF95 + goto IslandCave_EventScript_15EF95 end IslandCave_EventScript_15EF95:: @ 815EF95 waitbutton - hidebox 0, 0, 29, 19 + erasebox 0, 0, 29, 19 releaseall end IslandCave_EventScript_15EF9D:: @ 815EF9D lock faceplayer - checksound - pokecry SPECIES_REGICE, 2 - pause 40 + waitse + playpokecry SPECIES_REGICE, 2 + delay 40 waitpokecry setwildbattle SPECIES_REGICE, 40, ITEM_NONE setflag 936 setflag 2145 - special 313 + special ScrSpecial_StartRegiBattle waitstate clearflag 2145 release diff --git a/data/scripts/maps/JaggedPass.inc b/data/scripts/maps/JaggedPass.inc index 3ae0882c5..6f910d0ad 100644 --- a/data/scripts/maps/JaggedPass.inc +++ b/data/scripts/maps/JaggedPass.inc @@ -9,7 +9,7 @@ JaggedPass_MapScript1_15D271:: @ 815D271 JaggedPass_MapScript1_15D274:: @ 815D274 compare 0x40bd, 1 - callif 1, JaggedPass_EventScript_15D280 + call_if 1, JaggedPass_EventScript_15D280 end JaggedPass_EventScript_15D280:: @ 815D280 @@ -24,9 +24,9 @@ JaggedPass_EventScript_15D285:: @ 815D285 JaggedPass_EventScript_15D29C:: @ 815D29C trainerbattle 0, OPPONENT_DIANA_1, 0, JaggedPass_Text_195E9E, JaggedPass_Text_195EDF - specialval RESULT, 57 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq JaggedPass_EventScript_15D2C3 + goto_if_eq JaggedPass_EventScript_15D2C3 msgbox JaggedPass_Text_195F04, 6 end @@ -37,9 +37,9 @@ JaggedPass_EventScript_15D2C3:: @ 815D2C3 JaggedPass_EventScript_15D2DA:: @ 815D2DA trainerbattle 0, OPPONENT_ETHAN_1, 0, JaggedPass_Text_195FF2, JaggedPass_Text_196032 - specialval RESULT, 57 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq JaggedPass_EventScript_15D301 + goto_if_eq JaggedPass_EventScript_15D301 msgbox JaggedPass_Text_196077, 6 end diff --git a/data/scripts/maps/LavaridgeTown.inc b/data/scripts/maps/LavaridgeTown.inc index a71bd4854..5192176a7 100644 --- a/data/scripts/maps/LavaridgeTown.inc +++ b/data/scripts/maps/LavaridgeTown.inc @@ -6,16 +6,16 @@ LavaridgeTown_MapScripts:: @ 814E4A3 LavaridgeTown_MapScript1_14E4AE:: @ 814E4AE setflag 2066 checkflag 139 - callif 1, LavaridgeTown_EventScript_14E4DF + call_if 1, LavaridgeTown_EventScript_14E4DF call LavaridgeTown_EventScript_1A014E call LavaridgeTown_EventScript_1A0172 compare 0x4053, 2 - callif 1, LavaridgeTown_EventScript_14E4D0 + call_if 1, LavaridgeTown_EventScript_14E4D0 end LavaridgeTown_EventScript_14E4D0:: @ 814E4D0 - movespriteperm 8, 11, 9 - movespriteperm 7, 11, 9 + setobjectxyperm 8, 11, 9 + setobjectxyperm 7, 11, 9 return LavaridgeTown_EventScript_14E4DF:: @ 814E4DF @@ -29,56 +29,56 @@ LavaridgeTown_MapScript2_14E4E3:: @ 814E4E3 LavaridgeTown_EventScript_14E4ED:: @ 814E4ED lockall setvar 0x8008, 1 - setdooropened 12, 15 - doorchange - reappear 8 - move 8, LavaridgeTown_Movement_14E70E - waitmove 0 - setdoorclosed 12, 15 - doorchange - move 8, LavaridgeTown_Movement_1A083F - waitmove 0 - move 255, LavaridgeTown_Movement_1A0843 - move 8, LavaridgeTown_Movement_1A0833 - waitmove 0 - move 8, LavaridgeTown_Movement_1A0835 - waitmove 0 - checkgender + opendoor 12, 15 + waitdooranim + addobject 8 + applymovement 8, LavaridgeTown_Movement_14E70E + waitmovement 0 + closedoor 12, 15 + waitdooranim + applymovement 8, LavaridgeTown_Movement_1A083F + waitmovement 0 + applymovement 255, LavaridgeTown_Movement_1A0843 + applymovement 8, LavaridgeTown_Movement_1A0833 + waitmovement 0 + applymovement 8, LavaridgeTown_Movement_1A0835 + waitmovement 0 + checkplayergender compare RESULT, 0 - callif 1, LavaridgeTown_EventScript_14E56B + call_if 1, LavaridgeTown_EventScript_14E56B compare RESULT, 1 - callif 1, LavaridgeTown_EventScript_14E570 + call_if 1, LavaridgeTown_EventScript_14E570 compare 0x8008, 1 - callif 1, LavaridgeTown_EventScript_14E68F - checkgender + call_if 1, LavaridgeTown_EventScript_14E68F + checkplayergender compare RESULT, 0 - jumpeq LavaridgeTown_EventScript_14E5AB + goto_if_eq LavaridgeTown_EventScript_14E5AB compare RESULT, 1 - jumpeq LavaridgeTown_EventScript_14E5D0 + goto_if_eq LavaridgeTown_EventScript_14E5D0 end LavaridgeTown_EventScript_14E56B:: @ 814E56B - playmusic 415, 1 + playbgm 415, 1 return LavaridgeTown_EventScript_14E570:: @ 814E570 - playmusic 421, 1 + playbgm 421, 1 return LavaridgeTown_EventScript_14E575:: @ 814E575 lock faceplayer setvar 0x8008, 0 - checkgender + checkplayergender compare RESULT, 0 - callif 1, LavaridgeTown_EventScript_14E56B + call_if 1, LavaridgeTown_EventScript_14E56B compare RESULT, 1 - callif 1, LavaridgeTown_EventScript_14E570 - checkgender + call_if 1, LavaridgeTown_EventScript_14E570 + checkplayergender compare RESULT, 0 - jumpeq LavaridgeTown_EventScript_14E5AB + goto_if_eq LavaridgeTown_EventScript_14E5AB compare RESULT, 1 - jumpeq LavaridgeTown_EventScript_14E5D0 + goto_if_eq LavaridgeTown_EventScript_14E5D0 end LavaridgeTown_EventScript_14E5AB:: @ 814E5AB @@ -86,7 +86,7 @@ LavaridgeTown_EventScript_14E5AB:: @ 814E5AB giveitem ITEM_GO_GOGGLES setflag 221 msgbox LavaridgeTown_Text_16BE7D, 4 - jump LavaridgeTown_EventScript_14E5F5 + goto LavaridgeTown_EventScript_14E5F5 end LavaridgeTown_EventScript_14E5D0:: @ 814E5D0 @@ -94,28 +94,28 @@ LavaridgeTown_EventScript_14E5D0:: @ 814E5D0 giveitem ITEM_GO_GOGGLES setflag 221 msgbox LavaridgeTown_Text_16C020, 4 - jump LavaridgeTown_EventScript_14E5F5 + goto LavaridgeTown_EventScript_14E5F5 end LavaridgeTown_EventScript_14E5F5:: @ 814E5F5 - closebutton + closemessage compare 0x8008, 1 - callif 1, LavaridgeTown_EventScript_14E646 + call_if 1, LavaridgeTown_EventScript_14E646 compare 0x8008, 0 - callif 1, LavaridgeTown_EventScript_14E64E - disappear 8 - reappear 7 - pause 30 + call_if 1, LavaridgeTown_EventScript_14E64E + removeobject 8 + addobject 7 + delay 30 compare 0x8008, 1 - callif 1, LavaridgeTown_EventScript_14E69A + call_if 1, LavaridgeTown_EventScript_14E69A compare 0x8008, 0 - callif 1, LavaridgeTown_EventScript_14E6A5 - disappear 7 + call_if 1, LavaridgeTown_EventScript_14E6A5 + removeobject 7 setvar 0x4053, 2 - playmusicbattle 0 - fadedefault + savebgm 0 + fadedefaultbgm compare 0x8008, 0 - jumpeq LavaridgeTown_EventScript_14E644 + goto_if_eq LavaridgeTown_EventScript_14E644 releaseall end @@ -124,65 +124,65 @@ LavaridgeTown_EventScript_14E644:: @ 814E644 end LavaridgeTown_EventScript_14E646:: @ 814E646 - movespriteperm 7, 6, 16 + setobjectxyperm 7, 6, 16 return LavaridgeTown_EventScript_14E64E:: @ 814E64E compare FACING, 2 - callif 1, LavaridgeTown_EventScript_14E67B + call_if 1, LavaridgeTown_EventScript_14E67B compare FACING, 1 - callif 1, LavaridgeTown_EventScript_14E680 + call_if 1, LavaridgeTown_EventScript_14E680 compare FACING, 3 - callif 1, LavaridgeTown_EventScript_14E685 + call_if 1, LavaridgeTown_EventScript_14E685 compare FACING, 4 - callif 1, LavaridgeTown_EventScript_14E68A + call_if 1, LavaridgeTown_EventScript_14E68A return LavaridgeTown_EventScript_14E67B:: @ 814E67B - spritebehave 7, 8 + setobjectmovementtype 7, 8 return LavaridgeTown_EventScript_14E680:: @ 814E680 - spritebehave 7, 7 + setobjectmovementtype 7, 7 return LavaridgeTown_EventScript_14E685:: @ 814E685 - spritebehave 7, 10 + setobjectmovementtype 7, 10 return LavaridgeTown_EventScript_14E68A:: @ 814E68A - spritebehave 7, 9 + setobjectmovementtype 7, 9 return LavaridgeTown_EventScript_14E68F:: @ 814E68F - move 8, LavaridgeTown_Movement_14E6E8 - waitmove 0 + applymovement 8, LavaridgeTown_Movement_14E6E8 + waitmovement 0 return LavaridgeTown_EventScript_14E69A:: @ 814E69A - move 7, LavaridgeTown_Movement_14E6EF - waitmove 0 + applymovement 7, LavaridgeTown_Movement_14E6EF + waitmovement 0 return LavaridgeTown_EventScript_14E6A5:: @ 814E6A5 compare FACING, 2 - callif 1, LavaridgeTown_EventScript_14E6D2 + call_if 1, LavaridgeTown_EventScript_14E6D2 compare FACING, 1 - callif 1, LavaridgeTown_EventScript_14E6D2 + call_if 1, LavaridgeTown_EventScript_14E6D2 compare FACING, 3 - callif 1, LavaridgeTown_EventScript_14E6DD + call_if 1, LavaridgeTown_EventScript_14E6DD compare FACING, 4 - callif 1, LavaridgeTown_EventScript_14E6D2 + call_if 1, LavaridgeTown_EventScript_14E6D2 return LavaridgeTown_EventScript_14E6D2:: @ 814E6D2 - move 7, LavaridgeTown_Movement_14E6FA - waitmove 0 + applymovement 7, LavaridgeTown_Movement_14E6FA + waitmovement 0 return LavaridgeTown_EventScript_14E6DD:: @ 814E6DD - move 7, LavaridgeTown_Movement_14E703 - waitmove 0 + applymovement 7, LavaridgeTown_Movement_14E703 + waitmovement 0 return LavaridgeTown_Movement_14E6E8:: @ 814E6E8 @@ -236,13 +236,13 @@ LavaridgeTown_Movement_14E70E:: @ 814E70E step_end LavaridgeTown_EventScript_14E710:: @ 814E710 - specialval RESULT, 287 + specialvar RESULT, player_get_direction_lower_nybble compare RESULT, 1 - jumpeq LavaridgeTown_EventScript_14E721 + goto_if_eq LavaridgeTown_EventScript_14E721 end LavaridgeTown_EventScript_14E721:: @ 814E721 - inccounter GAME_STAT_ENTERED_HOT_SPRINGS + incrementgamestat GAME_STAT_ENTERED_HOT_SPRINGS end LavaridgeTown_EventScript_14E724:: @ 814E724 @@ -273,19 +273,19 @@ LavaridgeTown_EventScript_14E75A:: @ 814E75A lock faceplayer checkflag 266 - jumpeq LavaridgeTown_EventScript_14E79E + goto_if_eq LavaridgeTown_EventScript_14E79E msgbox LavaridgeTown_Text_16C174, 5 compare RESULT, 0 - jumpeq LavaridgeTown_EventScript_14E7B2 + goto_if_eq LavaridgeTown_EventScript_14E7B2 countpokemon compare RESULT, 6 - jumpeq LavaridgeTown_EventScript_14E7A8 + goto_if_eq LavaridgeTown_EventScript_14E7A8 msgbox LavaridgeTown_Text_16C2B6, 4 setflag 266 - fanfare 370 + playfanfare 370 message LavaridgeTown_Text_16C2EA waitfanfare - waittext + waitmessage giveegg 360 release end diff --git a/data/scripts/maps/LavaridgeTown_Gym_1F.inc b/data/scripts/maps/LavaridgeTown_Gym_1F.inc index 57506bdb6..2edffe9f0 100644 --- a/data/scripts/maps/LavaridgeTown_Gym_1F.inc +++ b/data/scripts/maps/LavaridgeTown_Gym_1F.inc @@ -14,27 +14,27 @@ LavaridgeTown_Gym_1F_EventScript_15369F:: @ 815369F setvar 0x400e, 0 setvar 0x400f, 0 checktrainerflag OPPONENT_COLE - jumpeq LavaridgeTown_Gym_1F_EventScript_1536C6 + goto_if_eq LavaridgeTown_Gym_1F_EventScript_1536C6 setvar 0x400b, 1 LavaridgeTown_Gym_1F_EventScript_1536C6:: @ 81536C6 checktrainerflag OPPONENT_ZANE - jumpeq LavaridgeTown_Gym_1F_EventScript_1536D4 + goto_if_eq LavaridgeTown_Gym_1F_EventScript_1536D4 setvar 0x400c, 1 LavaridgeTown_Gym_1F_EventScript_1536D4:: @ 81536D4 checktrainerflag OPPONENT_AXLE - jumpeq LavaridgeTown_Gym_1F_EventScript_1536E2 + goto_if_eq LavaridgeTown_Gym_1F_EventScript_1536E2 setvar 0x400d, 1 LavaridgeTown_Gym_1F_EventScript_1536E2:: @ 81536E2 checktrainerflag OPPONENT_SADIE - jumpeq LavaridgeTown_Gym_1F_EventScript_1536F0 + goto_if_eq LavaridgeTown_Gym_1F_EventScript_1536F0 setvar 0x400e, 1 LavaridgeTown_Gym_1F_EventScript_1536F0:: @ 81536F0 checktrainerflag OPPONENT_ANDY - jumpeq LavaridgeTown_Gym_1F_EventScript_1536FE + goto_if_eq LavaridgeTown_Gym_1F_EventScript_1536FE setvar 0x400f, 1 LavaridgeTown_Gym_1F_EventScript_1536FE:: @ 81536FE @@ -42,28 +42,28 @@ LavaridgeTown_Gym_1F_EventScript_1536FE:: @ 81536FE LavaridgeTown_Gym_1F_EventScript_1536FF:: @ 81536FF checktrainerflag OPPONENT_COLE - jumpeq LavaridgeTown_Gym_1F_EventScript_15370C - spritebehave 2, 63 + goto_if_eq LavaridgeTown_Gym_1F_EventScript_15370C + setobjectmovementtype 2, 63 LavaridgeTown_Gym_1F_EventScript_15370C:: @ 815370C checktrainerflag OPPONENT_ZANE - jumpeq LavaridgeTown_Gym_1F_EventScript_153719 - spritebehave 3, 63 + goto_if_eq LavaridgeTown_Gym_1F_EventScript_153719 + setobjectmovementtype 3, 63 LavaridgeTown_Gym_1F_EventScript_153719:: @ 8153719 checktrainerflag OPPONENT_AXLE - jumpeq LavaridgeTown_Gym_1F_EventScript_153726 - spritebehave 4, 63 + goto_if_eq LavaridgeTown_Gym_1F_EventScript_153726 + setobjectmovementtype 4, 63 LavaridgeTown_Gym_1F_EventScript_153726:: @ 8153726 checktrainerflag OPPONENT_SADIE - jumpeq LavaridgeTown_Gym_1F_EventScript_153733 - spritebehave 5, 63 + goto_if_eq LavaridgeTown_Gym_1F_EventScript_153733 + setobjectmovementtype 5, 63 LavaridgeTown_Gym_1F_EventScript_153733:: @ 8153733 checktrainerflag OPPONENT_ANDY - jumpeq LavaridgeTown_Gym_1F_EventScript_153740 - spritebehave 7, 63 + goto_if_eq LavaridgeTown_Gym_1F_EventScript_153740 + setobjectmovementtype 7, 63 LavaridgeTown_Gym_1F_EventScript_153740:: @ 8153740 return @@ -71,32 +71,32 @@ LavaridgeTown_Gym_1F_EventScript_153740:: @ 8153740 LavaridgeTown_Gym_1F_EventScript_153741:: @ 8153741 trainerbattle 1, OPPONENT_FLANNERY, 0, LavaridgeTown_Gym_1F_Text_176801, LavaridgeTown_Gym_1F_Text_176960, LavaridgeTown_Gym_1F_EventScript_153766 checkflag 168 - jumpif 0, LavaridgeTown_Gym_1F_EventScript_1537A7 + goto_if 0, LavaridgeTown_Gym_1F_EventScript_1537A7 msgbox LavaridgeTown_Gym_1F_Text_176C4A, 4 release end LavaridgeTown_Gym_1F_EventScript_153766:: @ 8153766 message LavaridgeTown_Gym_1F_Text_176A62 - waittext + waitmessage call LavaridgeTown_Gym_1F_EventScript_1A02C5 msgbox LavaridgeTown_Gym_1F_Text_176A8C, 4 setflag 1213 setflag 2058 addvar 0x4085, 1 compare 0x4085, 6 - callif 1, LavaridgeTown_Gym_1F_EventScript_1A00FB + call_if 1, LavaridgeTown_Gym_1F_EventScript_1A00FB setvar 0x8008, 4 call LavaridgeTown_Gym_1F_EventScript_1A01C0 setflag 806 setvar 0x4053, 1 - jump LavaridgeTown_Gym_1F_EventScript_1537A7 + goto LavaridgeTown_Gym_1F_EventScript_1537A7 end LavaridgeTown_Gym_1F_EventScript_1537A7:: @ 81537A7 giveitem ITEM_TM50 compare RESULT, 0 - jumpeq LavaridgeTown_Gym_1F_EventScript_1A029B + goto_if_eq LavaridgeTown_Gym_1F_EventScript_1A029B msgbox LavaridgeTown_Gym_1F_Text_176B8F, 4 setflag 168 release @@ -136,7 +136,7 @@ LavaridgeTown_Gym_1F_EventScript_153859:: @ 8153859 lock faceplayer checkflag 1213 - jumpeq LavaridgeTown_Gym_1F_EventScript_15386E + goto_if_eq LavaridgeTown_Gym_1F_EventScript_15386E msgbox LavaridgeTown_Gym_1F_Text_176312, 4 release end @@ -149,15 +149,15 @@ LavaridgeTown_Gym_1F_EventScript_15386E:: @ 815386E LavaridgeTown_Gym_1F_EventScript_153878:: @ 8153878 lockall checkflag 2058 - jumpeq LavaridgeTown_Gym_1F_EventScript_153898 - jump LavaridgeTown_Gym_1F_EventScript_1538A2 + goto_if_eq LavaridgeTown_Gym_1F_EventScript_153898 + goto LavaridgeTown_Gym_1F_EventScript_1538A2 end LavaridgeTown_Gym_1F_EventScript_153888:: @ 8153888 lockall checkflag 2058 - jumpeq LavaridgeTown_Gym_1F_EventScript_153898 - jump LavaridgeTown_Gym_1F_EventScript_1538A2 + goto_if_eq LavaridgeTown_Gym_1F_EventScript_153898 + goto LavaridgeTown_Gym_1F_EventScript_1538A2 end LavaridgeTown_Gym_1F_EventScript_153898:: @ 8153898 diff --git a/data/scripts/maps/LavaridgeTown_HerbShop.inc b/data/scripts/maps/LavaridgeTown_HerbShop.inc index 6ff103ce3..5ec6731d4 100644 --- a/data/scripts/maps/LavaridgeTown_HerbShop.inc +++ b/data/scripts/maps/LavaridgeTown_HerbShop.inc @@ -5,7 +5,7 @@ LavaridgeTown_HerbShop_EventScript_153629:: @ 8153629 lock faceplayer message LavaridgeTown_HerbShop_Text_17615C - waittext + waitmessage pokemart LavaridgeTown_HerbShop_Items msgbox LavaridgeTown_HerbShop_Text_1A0C02, 4 release @@ -29,11 +29,11 @@ LavaridgeTown_HerbShop_EventScript_153655:: @ 8153655 lock faceplayer checkflag 254 - jumpeq LavaridgeTown_HerbShop_EventScript_153684 + goto_if_eq LavaridgeTown_HerbShop_EventScript_153684 msgbox LavaridgeTown_HerbShop_Text_1761A2, 4 giveitem ITEM_CHARCOAL compare RESULT, 0 - jumpeq LavaridgeTown_HerbShop_EventScript_1A029B + goto_if_eq LavaridgeTown_HerbShop_EventScript_1A029B setflag 254 release end diff --git a/data/scripts/maps/LavaridgeTown_House.inc b/data/scripts/maps/LavaridgeTown_House.inc index 944427bb6..c75cb9e4b 100644 --- a/data/scripts/maps/LavaridgeTown_House.inc +++ b/data/scripts/maps/LavaridgeTown_House.inc @@ -8,8 +8,8 @@ LavaridgeTown_House_EventScript_1538AE:: @ 81538AE LavaridgeTown_House_EventScript_1538B7:: @ 81538B7 lock faceplayer - checksound - pokecry SPECIES_ZIGZAGOON, 0 + waitse + playpokecry SPECIES_ZIGZAGOON, 0 msgbox LavaridgeTown_House_Text_176D94, 4 waitpokecry release diff --git a/data/scripts/maps/LavaridgeTown_Mart.inc b/data/scripts/maps/LavaridgeTown_Mart.inc index 4f28e16b0..99b567e06 100644 --- a/data/scripts/maps/LavaridgeTown_Mart.inc +++ b/data/scripts/maps/LavaridgeTown_Mart.inc @@ -5,7 +5,7 @@ LavaridgeTown_Mart_EventScript_1538CB:: @ 81538CB lock faceplayer message LavaridgeTown_Mart_Text_1A0BE4 - waittext + waitmessage pokemart LavaridgeTown_Mart_Items msgbox LavaridgeTown_Mart_Text_1A0C02, 4 release diff --git a/data/scripts/maps/LavaridgeTown_PokemonCenter_1F.inc b/data/scripts/maps/LavaridgeTown_PokemonCenter_1F.inc index c0762bcc3..9d0f31059 100644 --- a/data/scripts/maps/LavaridgeTown_PokemonCenter_1F.inc +++ b/data/scripts/maps/LavaridgeTown_PokemonCenter_1F.inc @@ -10,7 +10,7 @@ LavaridgeTown_PokemonCenter_1F_MapScript1_153912:: @ 8153912 LavaridgeTown_PokemonCenter_1F_EventScript_15391B:: @ 815391B setvar 0x800b, 1 call LavaridgeTown_PokemonCenter_1F_EventScript_19FD5B - waittext + waitmessage waitbutton release end diff --git a/data/scripts/maps/LilycoveCity.inc b/data/scripts/maps/LilycoveCity.inc index ae36e33b5..cf8e2e07d 100644 --- a/data/scripts/maps/LilycoveCity.inc +++ b/data/scripts/maps/LilycoveCity.inc @@ -8,7 +8,7 @@ LilycoveCity_MapScript1_14CA20:: @ 814CA20 setvar 0x4086, 0 setflag 802 checkflag 2090 - callif 1, LilycoveCity_EventScript_1A02C1 + call_if 1, LilycoveCity_EventScript_1A02C1 call LilycoveCity_EventScript_1A0196 call LilycoveCity_EventScript_1A014E end @@ -29,9 +29,9 @@ LilycoveCity_MapScript1_14CA3F:: @ 814CA3F setmaptile 72, 6, 445, 0 .endif checkflag 112 - callif 0, LilycoveCity_EventScript_14CABE + call_if 0, LilycoveCity_EventScript_14CABE checkflag 2061 - callif 1, LilycoveCity_EventScript_14CB2B + call_if 1, LilycoveCity_EventScript_14CB2B end LilycoveCity_EventScript_14CABE:: @ 814CABE @@ -63,15 +63,15 @@ LilycoveCity_EventScript_14CB2B:: @ 814CB2B LilycoveCity_EventScript_14CB74:: @ 814CB74 lock faceplayer - checkdailyflags + dodailyevents checkflag 2255 - jumpeq LilycoveCity_EventScript_14CBB4 + goto_if_eq LilycoveCity_EventScript_14CBB4 msgbox LilycoveCity_Text_1C5A7A, 4 random 10 addvar RESULT, 133 giveitem RESULT compare RESULT, 0 - jumpeq LilycoveCity_EventScript_1A029B + goto_if_eq LilycoveCity_EventScript_1A029B setflag 2255 msgbox LilycoveCity_Text_1C5B1D, 4 release @@ -90,7 +90,7 @@ LilycoveCity_EventScript_14CBC7:: @ 814CBC7 lock faceplayer checkflag 2061 - jumpeq LilycoveCity_EventScript_14CBDC + goto_if_eq LilycoveCity_EventScript_14CBDC msgbox LilycoveCity_Text_168750, 4 release end @@ -108,7 +108,7 @@ LilycoveCity_EventScript_14CBEF:: @ 814CBEF lock faceplayer checkflag 112 - jumpeq LilycoveCity_EventScript_14CC04 + goto_if_eq LilycoveCity_EventScript_14CC04 msgbox LilycoveCity_Text_1688C1, 4 release end @@ -122,7 +122,7 @@ LilycoveCity_EventScript_14CC0E:: @ 814CC0E lock faceplayer checkflag 112 - jumpeq LilycoveCity_EventScript_14CC23 + goto_if_eq LilycoveCity_EventScript_14CC23 msgbox LilycoveCity_Text_1689BF, 4 release end @@ -148,7 +148,7 @@ LilycoveCity_EventScript_14CC48:: @ 814CC48 lock faceplayer checkflag 2061 - jumpeq LilycoveCity_EventScript_14CC5D + goto_if_eq LilycoveCity_EventScript_14CC5D msgbox LilycoveCity_Text_168C16, 4 release end @@ -172,7 +172,7 @@ LilycoveCity_EventScript_14CC79:: @ 814CC79 LilycoveCity_EventScript_14CC82:: @ 814CC82 lockall - specialval 0x8004, 137 + specialvar 0x8004, sub_80C4D50 switch 0x8004 case 0, LilycoveCity_EventScript_14CCA2 msgbox LilycoveCity_Text_168EA4, 4 @@ -187,7 +187,7 @@ LilycoveCity_EventScript_14CCA2:: @ 814CCA2 LilycoveCity_EventScript_14CCAC:: @ 814CCAC lockall checkflag 2052 - jumpeq LilycoveCity_EventScript_14CCC0 + goto_if_eq LilycoveCity_EventScript_14CCC0 msgbox LilycoveCity_Text_168EDA, 4 releaseall end @@ -212,13 +212,13 @@ LilycoveCity_EventScript_14CCDC:: @ 814CCDC LilycoveCity_EventScript_14CCE5:: @ 814CCE5 lockall checkflag 218 - jumpeq LilycoveCity_EventScript_14CD18 + goto_if_eq LilycoveCity_EventScript_14CD18 msgbox LilycoveCity_Text_16864A, 4 - move LAST_TALKED, LilycoveCity_Movement_1A0839 - waitmove 0 + applymovement LAST_TALKED, LilycoveCity_Movement_1A0839 + waitmovement 0 msgbox LilycoveCity_Text_168675, 4 - move LAST_TALKED, LilycoveCity_Movement_1A083D - waitmove 0 + applymovement LAST_TALKED, LilycoveCity_Movement_1A083D + waitmovement 0 setflag 218 releaseall end @@ -247,21 +247,21 @@ LilycoveCity_EventScript_14CD3D:: @ 814CD3D LilycoveCity_EventScript_14CD46:: @ 814CD46 lock faceplayer - checkgender + checkplayergender compare RESULT, 0 - jumpeq LilycoveCity_EventScript_14CD60 + goto_if_eq LilycoveCity_EventScript_14CD60 compare RESULT, 1 - jumpeq LilycoveCity_EventScript_14CDD3 + goto_if_eq LilycoveCity_EventScript_14CDD3 end LilycoveCity_EventScript_14CD60:: @ 814CD60 - playmusic 415, 1 + playbgm 415, 1 checkflag 286 - callif 1, LilycoveCity_EventScript_14CDB0 + call_if 1, LilycoveCity_EventScript_14CDB0 checkflag 286 - callif 0, LilycoveCity_EventScript_14CDB9 + call_if 0, LilycoveCity_EventScript_14CDB9 compare RESULT, 0 - jumpeq LilycoveCity_EventScript_14CDC2 + goto_if_eq LilycoveCity_EventScript_14CDC2 msgbox LilycoveCity_Text_167B94, 4 switch 0x4023 case 0, LilycoveCity_EventScript_14CE46 @@ -280,19 +280,19 @@ LilycoveCity_EventScript_14CDB9:: @ 814CDB9 LilycoveCity_EventScript_14CDC2:: @ 814CDC2 setflag 286 msgbox LilycoveCity_Text_167AEB, 4 - playmusicbattle 0 - fadedefault + savebgm 0 + fadedefaultbgm release end LilycoveCity_EventScript_14CDD3:: @ 814CDD3 - playmusic 421, 1 + playbgm 421, 1 checkflag 286 - callif 1, LilycoveCity_EventScript_14CE23 + call_if 1, LilycoveCity_EventScript_14CE23 checkflag 286 - callif 0, LilycoveCity_EventScript_14CE2C + call_if 0, LilycoveCity_EventScript_14CE2C compare RESULT, 0 - jumpeq LilycoveCity_EventScript_14CE35 + goto_if_eq LilycoveCity_EventScript_14CE35 msgbox LilycoveCity_Text_1680A9, 4 switch 0x4023 case 0, LilycoveCity_EventScript_14CE76 @@ -311,58 +311,58 @@ LilycoveCity_EventScript_14CE2C:: @ 814CE2C LilycoveCity_EventScript_14CE35:: @ 814CE35 setflag 286 msgbox LilycoveCity_Text_16802C, 4 - playmusicbattle 0 - fadedefault + savebgm 0 + fadedefaultbgm release end LilycoveCity_EventScript_14CE46:: @ 814CE46 trainerbattle 3, OPPONENT_MAY_11, 0, LilycoveCity_Text_167BD5 - jump LilycoveCity_EventScript_14CEA6 + goto LilycoveCity_EventScript_14CEA6 end LilycoveCity_EventScript_14CE56:: @ 814CE56 trainerbattle 3, OPPONENT_MAY_12, 0, LilycoveCity_Text_167BD5 - jump LilycoveCity_EventScript_14CEA6 + goto LilycoveCity_EventScript_14CEA6 end LilycoveCity_EventScript_14CE66:: @ 814CE66 trainerbattle 3, OPPONENT_MAY_10, 0, LilycoveCity_Text_167BD5 - jump LilycoveCity_EventScript_14CEA6 + goto LilycoveCity_EventScript_14CEA6 end LilycoveCity_EventScript_14CE76:: @ 814CE76 trainerbattle 3, OPPONENT_BRENDAN_11, 0, LilycoveCity_Text_1680E4 - jump LilycoveCity_EventScript_14CF12 + goto LilycoveCity_EventScript_14CF12 end LilycoveCity_EventScript_14CE86:: @ 814CE86 trainerbattle 3, OPPONENT_BRENDAN_12, 0, LilycoveCity_Text_1680E4 - jump LilycoveCity_EventScript_14CF12 + goto LilycoveCity_EventScript_14CF12 end LilycoveCity_EventScript_14CE96:: @ 814CE96 trainerbattle 3, OPPONENT_BRENDAN_10, 0, LilycoveCity_Text_1680E4 - jump LilycoveCity_EventScript_14CF12 + goto LilycoveCity_EventScript_14CF12 end LilycoveCity_EventScript_14CEA6:: @ 814CEA6 msgbox LilycoveCity_Text_167C6B, 4 setvar RESULT, 0 checkflag 2060 - callif 1, LilycoveCity_EventScript_14CEDE + call_if 1, LilycoveCity_EventScript_14CEDE compare RESULT, 0 - callif 1, LilycoveCity_EventScript_14CEEE + call_if 1, LilycoveCity_EventScript_14CEEE compare RESULT, 1 - callif 1, LilycoveCity_EventScript_14CEF7 + call_if 1, LilycoveCity_EventScript_14CEF7 clearflag 722 clearflag 849 - jump LilycoveCity_EventScript_14CF6B + goto LilycoveCity_EventScript_14CF6B end LilycoveCity_EventScript_14CEDE:: @ 814CEDE checkflag 2062 - jumpeq LilycoveCity_EventScript_14CEE8 + goto_if_eq LilycoveCity_EventScript_14CEE8 return LilycoveCity_EventScript_14CEE8:: @ 814CEE8 @@ -375,7 +375,7 @@ LilycoveCity_EventScript_14CEEE:: @ 814CEEE LilycoveCity_EventScript_14CEF7:: @ 814CEF7 checkflag 2052 - jumpeq LilycoveCity_EventScript_14CF09 + goto_if_eq LilycoveCity_EventScript_14CF09 msgbox LilycoveCity_Text_167DDD, 4 return @@ -387,13 +387,13 @@ LilycoveCity_EventScript_14CF12:: @ 814CF12 msgbox LilycoveCity_Text_168149, 4 setvar RESULT, 0 checkflag 2060 - callif 1, LilycoveCity_EventScript_14CEDE + call_if 1, LilycoveCity_EventScript_14CEDE compare RESULT, 0 - callif 1, LilycoveCity_EventScript_14CF47 + call_if 1, LilycoveCity_EventScript_14CF47 compare RESULT, 1 - callif 1, LilycoveCity_EventScript_14CF50 + call_if 1, LilycoveCity_EventScript_14CF50 clearflag 760 - jump LilycoveCity_EventScript_14CF6B + goto LilycoveCity_EventScript_14CF6B end LilycoveCity_EventScript_14CF47:: @ 814CF47 @@ -402,7 +402,7 @@ LilycoveCity_EventScript_14CF47:: @ 814CF47 LilycoveCity_EventScript_14CF50:: @ 814CF50 checkflag 2052 - jumpeq LilycoveCity_EventScript_14CF62 + goto_if_eq LilycoveCity_EventScript_14CF62 msgbox LilycoveCity_Text_168282, 4 return @@ -411,17 +411,17 @@ LilycoveCity_EventScript_14CF62:: @ 814CF62 return LilycoveCity_EventScript_14CF6B:: @ 814CF6B - closebutton - move LAST_TALKED, LilycoveCity_Movement_1A0845 - waitmove 0 - pause 50 - setanimation 0, 1 - doanimation 30 - pause 15 - disappear LAST_TALKED - checkanimation 30 - playmusicbattle 0 - fadedefault + closemessage + applymovement LAST_TALKED, LilycoveCity_Movement_1A0845 + waitmovement 0 + delay 50 + setfieldeffect 0, 1 + dofieldeffect 30 + delay 15 + removeobject LAST_TALKED + waitfieldeffect 30 + savebgm 0 + fadedefaultbgm setflag 292 release end diff --git a/data/scripts/maps/LilycoveCity_ContestHall.inc b/data/scripts/maps/LilycoveCity_ContestHall.inc index 3601cb455..944857a21 100644 --- a/data/scripts/maps/LilycoveCity_ContestHall.inc +++ b/data/scripts/maps/LilycoveCity_ContestHall.inc @@ -22,48 +22,48 @@ LilycoveCity_ContestHall_EventScript_1590B6:: @ 81590B6 LilycoveCity_ContestHall_EventScript_1590BF:: @ 81590BF msgbox LilycoveCity_ContestHall_Text_189301, 2 lockall - move 4, LilycoveCity_ContestHall_Movement_1A083D - waitmove 0 + applymovement 4, LilycoveCity_ContestHall_Movement_1A083D + waitmovement 0 releaseall end LilycoveCity_ContestHall_EventScript_1590D4:: @ 81590D4 msgbox LilycoveCity_ContestHall_Text_189366, 2 lockall - move 5, LilycoveCity_ContestHall_Movement_1A083D - waitmove 0 + applymovement 5, LilycoveCity_ContestHall_Movement_1A083D + waitmovement 0 releaseall end LilycoveCity_ContestHall_EventScript_1590E9:: @ 81590E9 msgbox LilycoveCity_ContestHall_Text_1893CE, 2 lockall - move 6, LilycoveCity_ContestHall_Movement_1A083D - waitmove 0 + applymovement 6, LilycoveCity_ContestHall_Movement_1A083D + waitmovement 0 releaseall end LilycoveCity_ContestHall_EventScript_1590FE:: @ 81590FE msgbox LilycoveCity_ContestHall_Text_189463, 2 lockall - move 7, LilycoveCity_ContestHall_Movement_1A083D - waitmove 0 + applymovement 7, LilycoveCity_ContestHall_Movement_1A083D + waitmovement 0 releaseall end LilycoveCity_ContestHall_EventScript_159113:: @ 8159113 msgbox LilycoveCity_ContestHall_Text_189512, 2 lockall - move 8, LilycoveCity_ContestHall_Movement_1A083D - waitmove 0 + applymovement 8, LilycoveCity_ContestHall_Movement_1A083D + waitmovement 0 releaseall end LilycoveCity_ContestHall_EventScript_159128:: @ 8159128 msgbox LilycoveCity_ContestHall_Text_18956B, 2 lockall - move 9, LilycoveCity_ContestHall_Movement_1A083D - waitmove 0 + applymovement 9, LilycoveCity_ContestHall_Movement_1A083D + waitmovement 0 releaseall end @@ -74,154 +74,154 @@ LilycoveCity_ContestHall_EventScript_15913D:: @ 815913D LilycoveCity_ContestHall_EventScript_159146:: @ 8159146 msgbox LilycoveCity_ContestHall_Text_189617, 2 lockall - move 12, LilycoveCity_ContestHall_Movement_1A083D - waitmove 0 + applymovement 12, LilycoveCity_ContestHall_Movement_1A083D + waitmovement 0 releaseall end LilycoveCity_ContestHall_EventScript_15915B:: @ 815915B msgbox LilycoveCity_ContestHall_Text_1896BE, 2 lockall - move 22, LilycoveCity_ContestHall_Movement_1A083D - waitmove 0 + applymovement 22, LilycoveCity_ContestHall_Movement_1A083D + waitmovement 0 releaseall end LilycoveCity_ContestHall_EventScript_159170:: @ 8159170 msgbox LilycoveCity_ContestHall_Text_1896FE, 2 lockall - move 11, LilycoveCity_ContestHall_Movement_1A083D - waitmove 0 + applymovement 11, LilycoveCity_ContestHall_Movement_1A083D + waitmovement 0 releaseall end LilycoveCity_ContestHall_EventScript_159185:: @ 8159185 msgbox LilycoveCity_ContestHall_Text_189771, 2 lockall - move 13, LilycoveCity_ContestHall_Movement_1A083D - waitmove 0 + applymovement 13, LilycoveCity_ContestHall_Movement_1A083D + waitmovement 0 releaseall end LilycoveCity_ContestHall_EventScript_15919A:: @ 815919A msgbox LilycoveCity_ContestHall_Text_1897AA, 2 lockall - move 14, LilycoveCity_ContestHall_Movement_1A083D - waitmove 0 + applymovement 14, LilycoveCity_ContestHall_Movement_1A083D + waitmovement 0 releaseall end LilycoveCity_ContestHall_EventScript_1591AF:: @ 81591AF msgbox LilycoveCity_ContestHall_Text_18980B, 2 lockall - move 15, LilycoveCity_ContestHall_Movement_1A083D - waitmove 0 + applymovement 15, LilycoveCity_ContestHall_Movement_1A083D + waitmovement 0 releaseall end LilycoveCity_ContestHall_EventScript_1591C4:: @ 81591C4 msgbox LilycoveCity_ContestHall_Text_189874, 2 lockall - move 16, LilycoveCity_ContestHall_Movement_1A083D - waitmove 0 + applymovement 16, LilycoveCity_ContestHall_Movement_1A083D + waitmovement 0 releaseall end LilycoveCity_ContestHall_EventScript_1591D9:: @ 81591D9 msgbox LilycoveCity_ContestHall_Text_18990A, 2 lockall - move 17, LilycoveCity_ContestHall_Movement_1A083D - waitmove 0 + applymovement 17, LilycoveCity_ContestHall_Movement_1A083D + waitmovement 0 releaseall end LilycoveCity_ContestHall_EventScript_1591EE:: @ 81591EE msgbox LilycoveCity_ContestHall_Text_189981, 2 lockall - move 18, LilycoveCity_ContestHall_Movement_1A083D - waitmove 0 + applymovement 18, LilycoveCity_ContestHall_Movement_1A083D + waitmovement 0 releaseall end LilycoveCity_ContestHall_EventScript_159203:: @ 8159203 msgbox LilycoveCity_ContestHall_Text_189A1D, 2 lockall - move 19, LilycoveCity_ContestHall_Movement_1A083D - waitmove 0 + applymovement 19, LilycoveCity_ContestHall_Movement_1A083D + waitmovement 0 releaseall end LilycoveCity_ContestHall_EventScript_159218:: @ 8159218 msgbox LilycoveCity_ContestHall_Text_189A82, 2 lockall - move 21, LilycoveCity_ContestHall_Movement_1A083D - waitmove 0 + applymovement 21, LilycoveCity_ContestHall_Movement_1A083D + waitmovement 0 releaseall end LilycoveCity_ContestHall_EventScript_15922D:: @ 815922D msgbox LilycoveCity_ContestHall_Text_189AE1, 2 lockall - move 20, LilycoveCity_ContestHall_Movement_1A083D - waitmove 0 + applymovement 20, LilycoveCity_ContestHall_Movement_1A083D + waitmovement 0 releaseall end LilycoveCity_ContestHall_EventScript_159242:: @ 8159242 msgbox LilycoveCity_ContestHall_Text_189B4E, 2 lockall - move 23, LilycoveCity_ContestHall_Movement_1A083D - waitmove 0 + applymovement 23, LilycoveCity_ContestHall_Movement_1A083D + waitmovement 0 releaseall end LilycoveCity_ContestHall_EventScript_159257:: @ 8159257 msgbox LilycoveCity_ContestHall_Text_189BBF, 2 lockall - move 24, LilycoveCity_ContestHall_Movement_1A083D - waitmove 0 + applymovement 24, LilycoveCity_ContestHall_Movement_1A083D + waitmovement 0 releaseall end LilycoveCity_ContestHall_EventScript_15926C:: @ 815926C msgbox LilycoveCity_ContestHall_Text_189C29, 2 lockall - move 25, LilycoveCity_ContestHall_Movement_1A083D - waitmove 0 + applymovement 25, LilycoveCity_ContestHall_Movement_1A083D + waitmovement 0 releaseall end LilycoveCity_ContestHall_EventScript_159281:: @ 8159281 msgbox LilycoveCity_ContestHall_Text_189C67, 2 lockall - move 26, LilycoveCity_ContestHall_Movement_1A083D - waitmove 0 + applymovement 26, LilycoveCity_ContestHall_Movement_1A083D + waitmovement 0 releaseall end LilycoveCity_ContestHall_EventScript_159296:: @ 8159296 msgbox LilycoveCity_ContestHall_Text_189CB3, 2 lockall - move 27, LilycoveCity_ContestHall_Movement_1A083D - waitmove 0 + applymovement 27, LilycoveCity_ContestHall_Movement_1A083D + waitmovement 0 releaseall end LilycoveCity_ContestHall_EventScript_1592AB:: @ 81592AB msgbox LilycoveCity_ContestHall_Text_189D11, 2 lockall - move 28, LilycoveCity_ContestHall_Movement_1A083D - waitmove 0 + applymovement 28, LilycoveCity_ContestHall_Movement_1A083D + waitmovement 0 releaseall end LilycoveCity_ContestHall_EventScript_1592C0:: @ 81592C0 lockall - move 29, LilycoveCity_ContestHall_Movement_1A0839 - waitmove 0 - pause 25 - move 29, LilycoveCity_ContestHall_Movement_1A083D - waitmove 0 + applymovement 29, LilycoveCity_ContestHall_Movement_1A0839 + waitmovement 0 + delay 25 + applymovement 29, LilycoveCity_ContestHall_Movement_1A083D + waitmovement 0 msgbox LilycoveCity_ContestHall_Text_189DA2, 3 releaseall end @@ -229,16 +229,16 @@ LilycoveCity_ContestHall_EventScript_1592C0:: @ 81592C0 LilycoveCity_ContestHall_EventScript_1592E2:: @ 81592E2 msgbox LilycoveCity_ContestHall_Text_189E5F, 2 lockall - move 31, LilycoveCity_ContestHall_Movement_1A083D - waitmove 0 + applymovement 31, LilycoveCity_ContestHall_Movement_1A083D + waitmovement 0 releaseall end LilycoveCity_ContestHall_EventScript_1592F7:: @ 81592F7 msgbox LilycoveCity_ContestHall_Text_189DF3, 2 lockall - move 30, LilycoveCity_ContestHall_Movement_1A083D - waitmove 0 + applymovement 30, LilycoveCity_ContestHall_Movement_1A083D + waitmovement 0 releaseall end diff --git a/data/scripts/maps/LilycoveCity_ContestLobby.inc b/data/scripts/maps/LilycoveCity_ContestLobby.inc index 419e04a8f..a8c32a4fe 100644 --- a/data/scripts/maps/LilycoveCity_ContestLobby.inc +++ b/data/scripts/maps/LilycoveCity_ContestLobby.inc @@ -14,41 +14,41 @@ LilycoveCity_ContestLobby_MapScript2_158877:: @ 8158877 LilycoveCity_ContestLobby_EventScript_158889:: @ 8158889 checkflag 775 - jumpeq LilycoveCity_ContestLobby_EventScript_158898 + goto_if_eq LilycoveCity_ContestLobby_EventScript_158898 setvar 0x4099, 0 end LilycoveCity_ContestLobby_EventScript_158898:: @ 8158898 lockall - reappear 4 - move 4, LilycoveCity_ContestLobby_Movement_158A3B - waitmove 4 - move 255, LilycoveCity_ContestLobby_Movement_158A4C - waitmove 0 + addobject 4 + applymovement 4, LilycoveCity_ContestLobby_Movement_158A3B + waitmovement 4 + applymovement 255, LilycoveCity_ContestLobby_Movement_158A4C + waitmovement 0 msgbox LilycoveCity_ContestLobby_Text_18890F, 4 lockall fadescreen 1 - showcontestwinner 0 + drawcontestwinner 0 lockall msgbox LilycoveCity_ContestLobby_Text_1889FD, 5 compare RESULT, 1 - jumpeq LilycoveCity_ContestLobby_EventScript_1588DE + goto_if_eq LilycoveCity_ContestLobby_EventScript_1588DE compare RESULT, 0 - jumpeq LilycoveCity_ContestLobby_EventScript_158918 + goto_if_eq LilycoveCity_ContestLobby_EventScript_158918 releaseall end LilycoveCity_ContestLobby_EventScript_1588DE:: @ 81588DE msgbox LilycoveCity_ContestLobby_Text_188AE8, 4 - closebutton - special 135 + closemessage + special sub_80C4CEC setvar 0x4099, 0 - specialval RESULT, 91 + specialvar RESULT, GiveMonArtistRibbon compare RESULT, 1 - callif 1, LilycoveCity_ContestLobby_EventScript_158948 - move 4, LilycoveCity_ContestLobby_Movement_158A43 - waitmove 0 - disappear 4 + call_if 1, LilycoveCity_ContestLobby_EventScript_158948 + applymovement 4, LilycoveCity_ContestLobby_Movement_158A43 + waitmovement 0 + removeobject 4 call LilycoveCity_ContestLobby_EventScript_158994 call LilycoveCity_ContestLobby_EventScript_1589EA releaseall @@ -57,37 +57,37 @@ LilycoveCity_ContestLobby_EventScript_1588DE:: @ 81588DE LilycoveCity_ContestLobby_EventScript_158918:: @ 8158918 msgbox LilycoveCity_ContestLobby_Text_188C41, 5 compare RESULT, 1 - jumpeq LilycoveCity_ContestLobby_EventScript_1588DE + goto_if_eq LilycoveCity_ContestLobby_EventScript_1588DE msgbox LilycoveCity_ContestLobby_Text_188CBD, 4 - closebutton - move 4, LilycoveCity_ContestLobby_Movement_158A43 - waitmove 0 + closemessage + applymovement 4, LilycoveCity_ContestLobby_Movement_158A43 + waitmovement 0 setvar 0x4099, 0 - disappear 4 + removeobject 4 releaseall end LilycoveCity_ContestLobby_EventScript_158948:: @ 8158948 - inccounter GAME_STAT_RECEIVED_RIBBONS - special 80 - move 4, LilycoveCity_ContestLobby_Movement_158A4E - waitmove 0 - playsfx 21 - move 4, LilycoveCity_ContestLobby_Movement_1A0833 - waitmove 0 - move 4, LilycoveCity_ContestLobby_Movement_158A52 - waitmove 0 + incrementgamestat GAME_STAT_RECEIVED_RIBBONS + special sub_80C4858 + applymovement 4, LilycoveCity_ContestLobby_Movement_158A4E + waitmovement 0 + playse 21 + applymovement 4, LilycoveCity_ContestLobby_Movement_1A0833 + waitmovement 0 + applymovement 4, LilycoveCity_ContestLobby_Movement_158A52 + waitmovement 0 msgbox LilycoveCity_ContestLobby_Text_188BB5, 4 - fanfare 370 + playfanfare 370 msgbox LilycoveCity_ContestLobby_Text_188C03, 4 waitfanfare msgbox LilycoveCity_ContestLobby_Text_188C19, 4 msgbox LilycoveCity_ContestLobby_Text_188C32, 4 - closebutton + closemessage return LilycoveCity_ContestLobby_EventScript_158994:: @ 8158994 - specialval 0x8004, 137 + specialvar 0x8004, sub_80C4D50 switch 0x8004 case 1, LilycoveCity_ContestLobby_EventScript_1589D6 case 2, LilycoveCity_ContestLobby_EventScript_1589DA @@ -189,39 +189,39 @@ LilycoveCity_ContestLobby_Movement_158A52:: @ 8158A52 LilycoveCity_ContestLobby_EventScript_158A5B:: @ 8158A5B checkflag 775 - jumpeq LilycoveCity_ContestLobby_EventScript_158A6A + goto_if_eq LilycoveCity_ContestLobby_EventScript_158A6A setvar 0x4099, 0 end LilycoveCity_ContestLobby_EventScript_158A6A:: @ 8158A6A lockall - reappear 11 - move 11, LilycoveCity_ContestLobby_Movement_158B64 - waitmove 11 - move 255, LilycoveCity_ContestLobby_Movement_158B76 - waitmove 0 + addobject 11 + applymovement 11, LilycoveCity_ContestLobby_Movement_158B64 + waitmovement 11 + applymovement 255, LilycoveCity_ContestLobby_Movement_158B76 + waitmovement 0 msgbox LilycoveCity_ContestLobby_Text_18890F, 4 lockall fadescreen 1 - showcontestwinner 0 + drawcontestwinner 0 msgbox LilycoveCity_ContestLobby_Text_1889FD, 5 compare RESULT, 1 - jumpeq LilycoveCity_ContestLobby_EventScript_158AAE + goto_if_eq LilycoveCity_ContestLobby_EventScript_158AAE compare RESULT, 0 - jumpeq LilycoveCity_ContestLobby_EventScript_158AE8 + goto_if_eq LilycoveCity_ContestLobby_EventScript_158AE8 end LilycoveCity_ContestLobby_EventScript_158AAE:: @ 8158AAE msgbox LilycoveCity_ContestLobby_Text_188AE8, 4 - closebutton - special 135 + closemessage + special sub_80C4CEC setvar 0x4099, 0 - specialval RESULT, 91 + specialvar RESULT, GiveMonArtistRibbon compare RESULT, 1 - callif 1, LilycoveCity_ContestLobby_EventScript_158B18 - move 11, LilycoveCity_ContestLobby_Movement_158B6D - waitmove 0 - disappear 11 + call_if 1, LilycoveCity_ContestLobby_EventScript_158B18 + applymovement 11, LilycoveCity_ContestLobby_Movement_158B6D + waitmovement 0 + removeobject 11 call LilycoveCity_ContestLobby_EventScript_158994 call LilycoveCity_ContestLobby_EventScript_1589EA releaseall @@ -230,33 +230,33 @@ LilycoveCity_ContestLobby_EventScript_158AAE:: @ 8158AAE LilycoveCity_ContestLobby_EventScript_158AE8:: @ 8158AE8 msgbox LilycoveCity_ContestLobby_Text_188C41, 5 compare RESULT, 1 - jumpeq LilycoveCity_ContestLobby_EventScript_158AAE + goto_if_eq LilycoveCity_ContestLobby_EventScript_158AAE msgbox LilycoveCity_ContestLobby_Text_188CBD, 4 - closebutton - move 11, LilycoveCity_ContestLobby_Movement_158B6D - waitmove 0 + closemessage + applymovement 11, LilycoveCity_ContestLobby_Movement_158B6D + waitmovement 0 setvar 0x4099, 0 - disappear 11 + removeobject 11 releaseall end LilycoveCity_ContestLobby_EventScript_158B18:: @ 8158B18 - inccounter GAME_STAT_RECEIVED_RIBBONS - special 80 - move 11, LilycoveCity_ContestLobby_Movement_158B78 - waitmove 0 - playsfx 21 - move 11, LilycoveCity_ContestLobby_Movement_1A0833 - waitmove 0 - move 11, LilycoveCity_ContestLobby_Movement_158B7C - waitmove 0 + incrementgamestat GAME_STAT_RECEIVED_RIBBONS + special sub_80C4858 + applymovement 11, LilycoveCity_ContestLobby_Movement_158B78 + waitmovement 0 + playse 21 + applymovement 11, LilycoveCity_ContestLobby_Movement_1A0833 + waitmovement 0 + applymovement 11, LilycoveCity_ContestLobby_Movement_158B7C + waitmovement 0 msgbox LilycoveCity_ContestLobby_Text_188BB5, 4 - fanfare 370 + playfanfare 370 msgbox LilycoveCity_ContestLobby_Text_188C03, 4 waitfanfare msgbox LilycoveCity_ContestLobby_Text_188C19, 4 msgbox LilycoveCity_ContestLobby_Text_188C32, 4 - closebutton + closemessage return LilycoveCity_ContestLobby_Movement_158B64:: @ 8158B64 @@ -306,19 +306,19 @@ LilycoveCity_ContestLobby_EventScript_158B85:: @ 8158B85 lockall checkitem ITEM_CONTEST_PASS, 1 compare RESULT, 0 - jumpeq LilycoveCity_ContestLobby_EventScript_158BBA + goto_if_eq LilycoveCity_ContestLobby_EventScript_158BBA checkflag 2 - jumpeq LilycoveCity_ContestLobby_EventScript_158BAE + goto_if_eq LilycoveCity_ContestLobby_EventScript_158BAE message LilycoveCity_ContestLobby_Text_18848C - waittext + waitmessage setflag 2 - jump LilycoveCity_ContestLobby_EventScript_158BF0 + goto LilycoveCity_ContestLobby_EventScript_158BF0 end LilycoveCity_ContestLobby_EventScript_158BAE:: @ 8158BAE message LilycoveCity_ContestLobby_Text_188584 - waittext - jump LilycoveCity_ContestLobby_EventScript_158BF0 + waitmessage + goto LilycoveCity_ContestLobby_EventScript_158BF0 end LilycoveCity_ContestLobby_EventScript_158BBA:: @ 8158BBA @@ -329,11 +329,11 @@ LilycoveCity_ContestLobby_EventScript_158BBA:: @ 8158BBA LilycoveCity_ContestLobby_EventScript_158BC4:: @ 8158BC4 msgbox LilycoveCity_ContestLobby_Text_188521, 5 compare RESULT, 0 - jumpeq LilycoveCity_ContestLobby_EventScript_158C35 - call LilycoveCity_ContestLobby_EventScript_19F806 - hidebox 0, 0, 15, 9 + goto_if_eq LilycoveCity_ContestLobby_EventScript_158C35 + call S_DoSaveDialog + erasebox 0, 0, 15, 9 compare RESULT, 0 - jumpeq LilycoveCity_ContestLobby_EventScript_158C35 + goto_if_eq LilycoveCity_ContestLobby_EventScript_158C35 setflag 3 return @@ -348,7 +348,7 @@ LilycoveCity_ContestLobby_EventScript_158BF0:: @ 8158BF0 LilycoveCity_ContestLobby_EventScript_158C27:: @ 8158C27 msgbox LilycoveCity_ContestLobby_Text_1885A7, 4 - jump LilycoveCity_ContestLobby_EventScript_158B85 + goto LilycoveCity_ContestLobby_EventScript_158B85 end LilycoveCity_ContestLobby_EventScript_158C35:: @ 8158C35 @@ -362,39 +362,39 @@ LilycoveCity_ContestLobby_EventScript_158C42:: @ 8158C42 setvar CONTEST_RANK, 0 choosecontestpkmn compare 0x8004, 255 - jumpeq LilycoveCity_ContestLobby_EventScript_158CEA - special 84 + goto_if_eq LilycoveCity_ContestLobby_EventScript_158CEA + special sub_80C43F4 compare RESULT, 0 - jumpeq LilycoveCity_ContestLobby_EventScript_158C96 + goto_if_eq LilycoveCity_ContestLobby_EventScript_158C96 compare RESULT, 1 - jumpeq LilycoveCity_ContestLobby_EventScript_158CC0 + goto_if_eq LilycoveCity_ContestLobby_EventScript_158CC0 compare RESULT, 2 - jumpeq LilycoveCity_ContestLobby_EventScript_158CC0 + goto_if_eq LilycoveCity_ContestLobby_EventScript_158CC0 compare RESULT, 3 - jumpeq LilycoveCity_ContestLobby_EventScript_158CA4 + goto_if_eq LilycoveCity_ContestLobby_EventScript_158CA4 compare RESULT, 4 - jumpeq LilycoveCity_ContestLobby_EventScript_158CB2 + goto_if_eq LilycoveCity_ContestLobby_EventScript_158CB2 end LilycoveCity_ContestLobby_EventScript_158C96:: @ 8158C96 msgbox LilycoveCity_ContestLobby_Text_1A664A, 4 - jump LilycoveCity_ContestLobby_EventScript_158C42 + goto LilycoveCity_ContestLobby_EventScript_158C42 end LilycoveCity_ContestLobby_EventScript_158CA4:: @ 8158CA4 msgbox LilycoveCity_ContestLobby_Text_1A669F, 4 - jump LilycoveCity_ContestLobby_EventScript_158C42 + goto LilycoveCity_ContestLobby_EventScript_158C42 end LilycoveCity_ContestLobby_EventScript_158CB2:: @ 8158CB2 msgbox LilycoveCity_ContestLobby_Text_1A66DC, 4 - jump LilycoveCity_ContestLobby_EventScript_158C42 + goto LilycoveCity_ContestLobby_EventScript_158C42 end LilycoveCity_ContestLobby_EventScript_158CC0:: @ 8158CC0 copyvar 0x8008, 0x8004 message LilycoveCity_ContestLobby_Text_1A67A3 - waittext + waitmessage yesnobox 20, 8 switch RESULT case 0, LilycoveCity_ContestLobby_EventScript_158C42 @@ -403,31 +403,31 @@ LilycoveCity_ContestLobby_EventScript_158CC0:: @ 8158CC0 LilycoveCity_ContestLobby_EventScript_158CEA:: @ 8158CEA checkflag 3 - callif 0, LilycoveCity_ContestLobby_EventScript_158BC4 + call_if 0, LilycoveCity_ContestLobby_EventScript_158BC4 message LilycoveCity_ContestLobby_Text_1886DC - waittext + waitmessage multichoice 0, 0, 4, 0 switch RESULT case 5, LilycoveCity_ContestLobby_EventScript_158C35 case 127, LilycoveCity_ContestLobby_EventScript_158C35 copyvar CONTEST_CATEGORY, RESULT - jump LilycoveCity_ContestLobby_EventScript_158C42 + goto LilycoveCity_ContestLobby_EventScript_158C42 end LilycoveCity_ContestLobby_EventScript_158D24:: @ 8158D24 message LilycoveCity_ContestLobby_Text_1887C7 - waittext + waitmessage copyvar 0x8004, RESULT - special 92 + special sub_808363C waitstate compare RESULT, 3 - jumpeq LilycoveCity_ContestLobby_EventScript_158D90 + goto_if_eq LilycoveCity_ContestLobby_EventScript_158D90 compare RESULT, 5 - jumpeq LilycoveCity_ContestLobby_EventScript_158DA1 + goto_if_eq LilycoveCity_ContestLobby_EventScript_158DA1 compare RESULT, 6 - jumpeq LilycoveCity_ContestLobby_EventScript_158DB2 - message2 LilycoveCity_ContestLobby_Text_18872A - waittext + goto_if_eq LilycoveCity_ContestLobby_EventScript_158DB2 + messageautoscroll LilycoveCity_ContestLobby_Text_18872A + waitmessage contestlinktransfer switch 0x8004 case 0, LilycoveCity_ContestLobby_EventScript_158DD1 @@ -437,52 +437,52 @@ LilycoveCity_ContestLobby_EventScript_158D24:: @ 8158D24 LilycoveCity_ContestLobby_EventScript_158D82:: @ 8158D82 msgbox LilycoveCity_ContestLobby_Text_188750, 4 - jump LilycoveCity_ContestLobby_EventScript_158CEA + goto LilycoveCity_ContestLobby_EventScript_158CEA end LilycoveCity_ContestLobby_EventScript_158D90:: @ 8158D90 - special 31 + special CloseLink msgbox LilycoveCity_ContestLobby_Text_18878D, 4 - closebutton + closemessage releaseall clearflag 3 end LilycoveCity_ContestLobby_EventScript_158DA1:: @ 8158DA1 - special 31 + special CloseLink msgbox LilycoveCity_ContestLobby_Text_1887F4, 4 - closebutton + closemessage releaseall clearflag 3 end LilycoveCity_ContestLobby_EventScript_158DB2:: @ 8158DB2 - special 31 + special CloseLink msgbox LilycoveCity_ContestLobby_Text_18881F, 4 - closebutton + closemessage releaseall clearflag 3 end LilycoveCity_ContestLobby_EventScript_158DC3:: @ 8158DC3 msgbox LilycoveCity_ContestLobby_Text_18873A, 4 - jump LilycoveCity_ContestLobby_EventScript_158CEA + goto LilycoveCity_ContestLobby_EventScript_158CEA end LilycoveCity_ContestLobby_EventScript_158DD1:: @ 8158DD1 - special 77 + special sub_80C496C addvar 0x8004, 1 - buffernum 1, 32772 - message2 LilycoveCity_ContestLobby_Text_188845 - waittext + getnumberstring 1, 32772 + messageautoscroll LilycoveCity_ContestLobby_Text_188845 + waitmessage addvar 0x8004, 65535 - jump LilycoveCity_ContestLobby_EventScript_158DEE + goto LilycoveCity_ContestLobby_EventScript_158DEE end LilycoveCity_ContestLobby_EventScript_158DEE:: @ 8158DEE call LilycoveCity_ContestLobby_EventScript_158E0B setvar 0x4086, 1 - special 86 + special sub_80C4F70 setvar 0x4088, 5 setvar CONTEST_RANK, 3 call LilycoveCity_ContestLobby_EventScript_158F08 @@ -490,34 +490,34 @@ LilycoveCity_ContestLobby_EventScript_158DEE:: @ 8158DEE LilycoveCity_ContestLobby_EventScript_158E0B:: @ 8158E0B lockall - message2 LilycoveCity_ContestLobby_Text_1888C6 - waittext - pause 20 - closebutton - move 2, LilycoveCity_ContestLobby_Movement_158E9C - waitmove 0 - playsfx 71 + messageautoscroll LilycoveCity_ContestLobby_Text_1888C6 + waitmessage + delay 20 + closemessage + applymovement 2, LilycoveCity_ContestLobby_Movement_158E9C + waitmovement 0 + playse 71 setmaptile 9, 2, 545, 1 setmaptile 9, 3, 609, 1 - special 142 - move 2, LilycoveCity_ContestLobby_Movement_158EA0 - waitmove 0 - playsfx 71 + special DrawWholeMapView + applymovement 2, LilycoveCity_ContestLobby_Movement_158EA0 + waitmovement 0 + playse 71 setmaptile 9, 2, 721, 1 setmaptile 9, 3, 729, 1 - special 142 - pause 20 - move 2, LilycoveCity_ContestLobby_Movement_158EAE - waitmove 0 - move 255, LilycoveCity_ContestLobby_Movement_158E99 - waitmove 0 - message2 LilycoveCity_ContestLobby_Text_1A6832 - waittext - pause 20 - closebutton - move 2, LilycoveCity_ContestLobby_Movement_158EA4 - move 255, LilycoveCity_ContestLobby_Movement_158E8E - waitmove 0 + special DrawWholeMapView + delay 20 + applymovement 2, LilycoveCity_ContestLobby_Movement_158EAE + waitmovement 0 + applymovement 255, LilycoveCity_ContestLobby_Movement_158E99 + waitmovement 0 + messageautoscroll LilycoveCity_ContestLobby_Text_1A6832 + waitmessage + delay 20 + closemessage + applymovement 2, LilycoveCity_ContestLobby_Movement_158EA4 + applymovement 255, LilycoveCity_ContestLobby_Movement_158E8E + waitmovement 0 releaseall return @@ -568,14 +568,14 @@ LilycoveCity_ContestLobby_Movement_158EAE:: @ 8158EAE step_end LilycoveCity_ContestLobby_EventScript_158EB0:: @ 8158EB0 - specialval RESULT, 90 + specialvar RESULT, sub_80C5044 compare RESULT, 1 - jumpeq LilycoveCity_ContestLobby_EventScript_158EE8 + goto_if_eq LilycoveCity_ContestLobby_EventScript_158EE8 setvar 0x800b, 8 setvar CONTEST_RANK, 3 call LilycoveCity_ContestLobby_EventScript_1A4E92 call LilycoveCity_ContestLobby_EventScript_158F86 - special 83 + special sub_80C4BF0 call LilycoveCity_ContestLobby_EventScript_15FBDB setvar 0x4088, 4 call LilycoveCity_ContestLobby_EventScript_158F08 @@ -602,59 +602,59 @@ LilycoveCity_ContestLobby_EventScript_158F08:: @ 8158F08 return LilycoveCity_ContestLobby_EventScript_158F45:: @ 8158F45 - warp3 LinkContestRoom4, 255, 7, 5 - special 300 + setwarp LinkContestRoom4, 255, 7, 5 + special sub_8081334 waitstate return LilycoveCity_ContestLobby_EventScript_158F52:: @ 8158F52 - warp3 LinkContestRoom2, 255, 7, 5 - special 300 + setwarp LinkContestRoom2, 255, 7, 5 + special sub_8081334 waitstate return LilycoveCity_ContestLobby_EventScript_158F5F:: @ 8158F5F - warp3 LinkContestRoom6, 255, 7, 5 - special 300 + setwarp LinkContestRoom6, 255, 7, 5 + special sub_8081334 waitstate return LilycoveCity_ContestLobby_EventScript_158F6C:: @ 8158F6C - warp3 LinkContestRoom5, 255, 7, 5 - special 300 + setwarp LinkContestRoom5, 255, 7, 5 + special sub_8081334 waitstate return LilycoveCity_ContestLobby_EventScript_158F79:: @ 8158F79 - warp3 LinkContestRoom3, 255, 7, 5 - special 300 + setwarp LinkContestRoom3, 255, 7, 5 + special sub_8081334 waitstate return LilycoveCity_ContestLobby_EventScript_158F86:: @ 8158F86 lockall - move 1, LilycoveCity_ContestLobby_Movement_15900B - waitmove 0 - playsfx 71 + applymovement 1, LilycoveCity_ContestLobby_Movement_15900B + waitmovement 0 + playse 71 setmaptile 4, 2, 545, 1 setmaptile 4, 3, 609, 1 - special 142 - move 1, LilycoveCity_ContestLobby_Movement_15900F - waitmove 0 - playsfx 71 + special DrawWholeMapView + applymovement 1, LilycoveCity_ContestLobby_Movement_15900F + waitmovement 0 + playse 71 setmaptile 4, 2, 721, 1 setmaptile 4, 3, 729, 1 - special 142 - pause 20 - move 1, LilycoveCity_ContestLobby_Movement_15901C - waitmove 0 - move 255, LilycoveCity_ContestLobby_Movement_159008 - waitmove 0 + special DrawWholeMapView + delay 20 + applymovement 1, LilycoveCity_ContestLobby_Movement_15901C + waitmovement 0 + applymovement 255, LilycoveCity_ContestLobby_Movement_159008 + waitmovement 0 msgbox LilycoveCity_ContestLobby_Text_1A6832, 4 - closebutton - move 1, LilycoveCity_ContestLobby_Movement_159013 - move 255, LilycoveCity_ContestLobby_Movement_158FFE - waitmove 0 + closemessage + applymovement 1, LilycoveCity_ContestLobby_Movement_159013 + applymovement 255, LilycoveCity_ContestLobby_Movement_158FFE + waitmovement 0 releaseall return @@ -708,7 +708,7 @@ LilycoveCity_ContestLobby_EventScript_15901E:: @ 815901E LilycoveCity_ContestLobby_EventScript_159027:: @ 8159027 checkflag 150 - jumpif 0, LilycoveCity_ContestLobby_EventScript_159039 + goto_if 0, LilycoveCity_ContestLobby_EventScript_159039 msgbox LilycoveCity_ContestLobby_Text_188DDA, 2 end @@ -735,21 +735,21 @@ LilycoveCity_ContestLobby_EventScript_15905D:: @ 815905D LilycoveCity_ContestLobby_EventScript_159066:: @ 8159066 lockall fadescreen 1 - showcontestwinner 6 + drawcontestwinner 6 releaseall end LilycoveCity_ContestLobby_EventScript_15906D:: @ 815906D lockall fadescreen 1 - showcontestwinner 7 + drawcontestwinner 7 releaseall end LilycoveCity_ContestLobby_EventScript_159074:: @ 8159074 lockall fadescreen 1 - showcontestwinner 8 + drawcontestwinner 8 releaseall end @@ -764,8 +764,8 @@ LilycoveCity_ContestLobby_EventScript_159084:: @ 8159084 LilycoveCity_ContestLobby_EventScript_15908D:: @ 815908D SlateportCity_ContestLobby_EventScript_15908D:: @ 815908D lockall - special 259 + special ShowBerryBlenderRecordWindow waitbutton - hidebox 0, 0, 29, 19 + erasebox 0, 0, 29, 19 releaseall end diff --git a/data/scripts/maps/LilycoveCity_CoveLilyMotel_1F.inc b/data/scripts/maps/LilycoveCity_CoveLilyMotel_1F.inc index 95945a595..7b602b2c7 100644 --- a/data/scripts/maps/LilycoveCity_CoveLilyMotel_1F.inc +++ b/data/scripts/maps/LilycoveCity_CoveLilyMotel_1F.inc @@ -4,57 +4,57 @@ LilycoveCity_CoveLilyMotel_1F_MapScripts:: @ 81582C4 LilycoveCity_CoveLilyMotel_1F_EventScript_1582C5:: @ 81582C5 lockall checkflag 2052 - jumpeq LilycoveCity_CoveLilyMotel_1F_EventScript_158326 + goto_if_eq LilycoveCity_CoveLilyMotel_1F_EventScript_158326 checkflag 2061 - jumpeq LilycoveCity_CoveLilyMotel_1F_EventScript_1582FF + goto_if_eq LilycoveCity_CoveLilyMotel_1F_EventScript_1582FF msgbox LilycoveCity_CoveLilyMotel_1F_Text_186B71, 4 - move 1, LilycoveCity_CoveLilyMotel_1F_Movement_1A0839 - waitmove 0 + applymovement 1, LilycoveCity_CoveLilyMotel_1F_Movement_1A0839 + waitmovement 0 msgbox LilycoveCity_CoveLilyMotel_1F_Text_186C2B, 4 - closebutton - move 1, LilycoveCity_CoveLilyMotel_1F_Movement_1A083D - waitmove 0 + closemessage + applymovement 1, LilycoveCity_CoveLilyMotel_1F_Movement_1A083D + waitmovement 0 releaseall end LilycoveCity_CoveLilyMotel_1F_EventScript_1582FF:: @ 81582FF msgbox LilycoveCity_CoveLilyMotel_1F_Text_186CCE, 4 - move 1, LilycoveCity_CoveLilyMotel_1F_Movement_1A0839 - waitmove 0 + applymovement 1, LilycoveCity_CoveLilyMotel_1F_Movement_1A0839 + waitmovement 0 msgbox LilycoveCity_CoveLilyMotel_1F_Text_186D7F, 4 - closebutton - move 1, LilycoveCity_CoveLilyMotel_1F_Movement_1A083D - waitmove 0 + closemessage + applymovement 1, LilycoveCity_CoveLilyMotel_1F_Movement_1A083D + waitmovement 0 releaseall end LilycoveCity_CoveLilyMotel_1F_EventScript_158326:: @ 8158326 msgbox LilycoveCity_CoveLilyMotel_1F_Text_186E57, 4 - move 1, LilycoveCity_CoveLilyMotel_1F_Movement_1A0839 - waitmove 0 + applymovement 1, LilycoveCity_CoveLilyMotel_1F_Movement_1A0839 + waitmovement 0 msgbox LilycoveCity_CoveLilyMotel_1F_Text_186F09, 4 - closebutton - move 1, LilycoveCity_CoveLilyMotel_1F_Movement_1A083D - waitmove 0 + closemessage + applymovement 1, LilycoveCity_CoveLilyMotel_1F_Movement_1A083D + waitmovement 0 releaseall end LilycoveCity_CoveLilyMotel_1F_EventScript_15834D:: @ 815834D lockall - playsfx 21 - move 1, LilycoveCity_CoveLilyMotel_1F_Movement_1A0833 - waitmove 0 - move 1, LilycoveCity_CoveLilyMotel_1F_Movement_1A0835 - waitmove 0 - move 255, LilycoveCity_CoveLilyMotel_1F_Movement_1A0845 - waitmove 0 + playse 21 + applymovement 1, LilycoveCity_CoveLilyMotel_1F_Movement_1A0833 + waitmovement 0 + applymovement 1, LilycoveCity_CoveLilyMotel_1F_Movement_1A0835 + waitmovement 0 + applymovement 255, LilycoveCity_CoveLilyMotel_1F_Movement_1A0845 + waitmovement 0 msgbox LilycoveCity_CoveLilyMotel_1F_Text_186CA6, 4 - closebutton - move 255, LilycoveCity_CoveLilyMotel_1F_Movement_158395 - move 1, LilycoveCity_CoveLilyMotel_1F_Movement_15839A - waitmove 0 - move 1, LilycoveCity_CoveLilyMotel_1F_Movement_15839C - waitmove 0 + closemessage + applymovement 255, LilycoveCity_CoveLilyMotel_1F_Movement_158395 + applymovement 1, LilycoveCity_CoveLilyMotel_1F_Movement_15839A + waitmovement 0 + applymovement 1, LilycoveCity_CoveLilyMotel_1F_Movement_15839C + waitmovement 0 release end diff --git a/data/scripts/maps/LilycoveCity_CoveLilyMotel_2F.inc b/data/scripts/maps/LilycoveCity_CoveLilyMotel_2F.inc index d2a86e0a5..fd9ea8a58 100644 --- a/data/scripts/maps/LilycoveCity_CoveLilyMotel_2F.inc +++ b/data/scripts/maps/LilycoveCity_CoveLilyMotel_2F.inc @@ -5,12 +5,12 @@ LilycoveCity_CoveLilyMotel_2F_EventScript_1583A1:: @ 81583A1 lock faceplayer checkflag 2 - callif 0, LilycoveCity_CoveLilyMotel_2F_EventScript_1583C7 + call_if 0, LilycoveCity_CoveLilyMotel_2F_EventScript_1583C7 checkflag 2 - callif 1, LilycoveCity_CoveLilyMotel_2F_EventScript_1583DD - specialval RESULT, 335 + call_if 1, LilycoveCity_CoveLilyMotel_2F_EventScript_1583DD + specialvar RESULT, sub_8090FC0 compare RESULT, 1 - jumpeq LilycoveCity_CoveLilyMotel_2F_EventScript_1583D0 + goto_if_eq LilycoveCity_CoveLilyMotel_2F_EventScript_1583D0 release end @@ -20,16 +20,16 @@ LilycoveCity_CoveLilyMotel_2F_EventScript_1583C7:: @ 81583C7 LilycoveCity_CoveLilyMotel_2F_EventScript_1583D0:: @ 81583D0 setflag 2 - fanfare 370 + playfanfare 370 waitfanfare - jump LilycoveCity_CoveLilyMotel_2F_EventScript_1583DD + goto LilycoveCity_CoveLilyMotel_2F_EventScript_1583DD end LilycoveCity_CoveLilyMotel_2F_EventScript_1583DD:: @ 81583DD message LilycoveCity_CoveLilyMotel_2F_Text_18708F - waittext + waitmessage call LilycoveCity_CoveLilyMotel_2F_EventScript_1A02C5 - special 264 + special ScrSpecial_ShowDiploma waitstate release end diff --git a/data/scripts/maps/LilycoveCity_DepartmentStoreElevator.inc b/data/scripts/maps/LilycoveCity_DepartmentStoreElevator.inc index c82cc6428..9d04d2e33 100644 --- a/data/scripts/maps/LilycoveCity_DepartmentStoreElevator.inc +++ b/data/scripts/maps/LilycoveCity_DepartmentStoreElevator.inc @@ -5,11 +5,11 @@ LilycoveCity_DepartmentStoreElevator_EventScript_15A39C:: @ 815A39C lock faceplayer checkflag 2 - callif 0, LilycoveCity_DepartmentStoreElevator_EventScript_15A4CF + call_if 0, LilycoveCity_DepartmentStoreElevator_EventScript_15A4CF copyvar 0x8005, 0x4043 - special 306 + special sub_810E944 message LilycoveCity_DepartmentStoreElevator_Text_1A0EF6 - waittext + waitmessage multichoice 0, 0, 57, 0 switch RESULT case 0, LilycoveCity_DepartmentStoreElevator_EventScript_15A402 @@ -21,64 +21,64 @@ LilycoveCity_DepartmentStoreElevator_EventScript_15A39C:: @ 815A39C end LilycoveCity_DepartmentStoreElevator_EventScript_15A402:: @ 815A402 - warpplace LilycoveCity_DepartmentStore_1F, 255, 2, 1 + setdynamicwarp LilycoveCity_DepartmentStore_1F, 255, 2, 1 compare 0x4043, 0 - jumpeq LilycoveCity_DepartmentStoreElevator_EventScript_15A4B1 + goto_if_eq LilycoveCity_DepartmentStoreElevator_EventScript_15A4B1 call LilycoveCity_DepartmentStoreElevator_EventScript_15A4B8 setvar 0x4043, 0 - jump LilycoveCity_DepartmentStoreElevator_EventScript_15A4B1 + goto LilycoveCity_DepartmentStoreElevator_EventScript_15A4B1 end LilycoveCity_DepartmentStoreElevator_EventScript_15A425:: @ 815A425 - warpplace LilycoveCity_DepartmentStore_2F, 255, 2, 1 + setdynamicwarp LilycoveCity_DepartmentStore_2F, 255, 2, 1 compare 0x4043, 1 - jumpeq LilycoveCity_DepartmentStoreElevator_EventScript_15A4B1 + goto_if_eq LilycoveCity_DepartmentStoreElevator_EventScript_15A4B1 call LilycoveCity_DepartmentStoreElevator_EventScript_15A4B8 setvar 0x4043, 1 - jump LilycoveCity_DepartmentStoreElevator_EventScript_15A4B1 + goto LilycoveCity_DepartmentStoreElevator_EventScript_15A4B1 end LilycoveCity_DepartmentStoreElevator_EventScript_15A448:: @ 815A448 - warpplace LilycoveCity_DepartmentStore_3F, 255, 2, 1 + setdynamicwarp LilycoveCity_DepartmentStore_3F, 255, 2, 1 compare 0x4043, 2 - jumpeq LilycoveCity_DepartmentStoreElevator_EventScript_15A4B1 + goto_if_eq LilycoveCity_DepartmentStoreElevator_EventScript_15A4B1 call LilycoveCity_DepartmentStoreElevator_EventScript_15A4B8 setvar 0x4043, 2 - jump LilycoveCity_DepartmentStoreElevator_EventScript_15A4B1 + goto LilycoveCity_DepartmentStoreElevator_EventScript_15A4B1 end LilycoveCity_DepartmentStoreElevator_EventScript_15A46B:: @ 815A46B - warpplace LilycoveCity_DepartmentStore_4F, 255, 2, 1 + setdynamicwarp LilycoveCity_DepartmentStore_4F, 255, 2, 1 compare 0x4043, 3 - jumpeq LilycoveCity_DepartmentStoreElevator_EventScript_15A4B1 + goto_if_eq LilycoveCity_DepartmentStoreElevator_EventScript_15A4B1 call LilycoveCity_DepartmentStoreElevator_EventScript_15A4B8 setvar 0x4043, 3 - jump LilycoveCity_DepartmentStoreElevator_EventScript_15A4B1 + goto LilycoveCity_DepartmentStoreElevator_EventScript_15A4B1 end LilycoveCity_DepartmentStoreElevator_EventScript_15A48E:: @ 815A48E - warpplace LilycoveCity_DepartmentStore_5F, 255, 2, 1 + setdynamicwarp LilycoveCity_DepartmentStore_5F, 255, 2, 1 compare 0x4043, 4 - jumpeq LilycoveCity_DepartmentStoreElevator_EventScript_15A4B1 + goto_if_eq LilycoveCity_DepartmentStoreElevator_EventScript_15A4B1 call LilycoveCity_DepartmentStoreElevator_EventScript_15A4B8 setvar 0x4043, 4 - jump LilycoveCity_DepartmentStoreElevator_EventScript_15A4B1 + goto LilycoveCity_DepartmentStoreElevator_EventScript_15A4B1 end LilycoveCity_DepartmentStoreElevator_EventScript_15A4B1:: @ 815A4B1 - hidebox 0, 0, 29, 19 + erasebox 0, 0, 29, 19 release end LilycoveCity_DepartmentStoreElevator_EventScript_15A4B8:: @ 815A4B8 - hidebox 0, 0, 29, 19 - move LAST_TALKED, LilycoveCity_DepartmentStoreElevator_Movement_1A0845 - waitmove 0 - special 273 + erasebox 0, 0, 29, 19 + applymovement LAST_TALKED, LilycoveCity_DepartmentStoreElevator_Movement_1A0845 + waitmovement 0 + special sub_810EBEC waitstate setflag 2 return LilycoveCity_DepartmentStoreElevator_EventScript_15A4CF:: @ 815A4CF - special 216 + special SetDepartmentStoreFloorVar return diff --git a/data/scripts/maps/LilycoveCity_DepartmentStoreRooftop.inc b/data/scripts/maps/LilycoveCity_DepartmentStoreRooftop.inc index f84c84201..29914a9b5 100644 --- a/data/scripts/maps/LilycoveCity_DepartmentStoreRooftop.inc +++ b/data/scripts/maps/LilycoveCity_DepartmentStoreRooftop.inc @@ -3,11 +3,11 @@ LilycoveCity_DepartmentStoreRooftop_MapScripts:: @ 815A13F .byte 0 LilycoveCity_DepartmentStoreRooftop_MapScript1_15A145:: @ 815A145 - event_96 3 + getpricereduction 3 compare RESULT, 1 - callif 1, LilycoveCity_DepartmentStoreRooftop_EventScript_15A15F + call_if 1, LilycoveCity_DepartmentStoreRooftop_EventScript_15A15F compare RESULT, 0 - callif 1, LilycoveCity_DepartmentStoreRooftop_EventScript_15A163 + call_if 1, LilycoveCity_DepartmentStoreRooftop_EventScript_15A163 end LilycoveCity_DepartmentStoreRooftop_EventScript_15A15F:: @ 815A15F @@ -22,7 +22,7 @@ LilycoveCity_DepartmentStoreRooftop_EventScript_15A167:: @ 815A167 lock faceplayer message LilycoveCity_DepartmentStoreRooftop_Text_1A0BE4 - waittext + waitmessage pokemartdecor LilycoveCity_DepartmentStoreRooftop_Decorations msgbox LilycoveCity_DepartmentStoreRooftop_Text_1A0C02, 4 release @@ -51,9 +51,9 @@ LilycoveCity_DepartmentStoreRooftop_Decorations:: @ 815A180 LilycoveCity_DepartmentStoreRooftop_EventScript_15A1A0:: @ 815A1A0 lock faceplayer - event_96 3 + getpricereduction 3 compare RESULT, 1 - callif 1, LilycoveCity_DepartmentStoreRooftop_EventScript_15A1BA + call_if 1, LilycoveCity_DepartmentStoreRooftop_EventScript_15A1BA msgbox LilycoveCity_DepartmentStoreRooftop_Text_18C61F, 4 release end @@ -70,10 +70,10 @@ LilycoveCity_DepartmentStoreRooftop_EventScript_15A1C4:: @ 815A1C4 LilycoveCity_DepartmentStoreRooftop_EventScript_15A1CD:: @ 815A1CD lockall message LilycoveCity_DepartmentStoreRooftop_Text_18C72B - waittext - showmoney 0, 0 - snop - jump LilycoveCity_DepartmentStoreRooftop_EventScript_15A1DE + waitmessage + showmoneybox 0, 0 + nop + goto LilycoveCity_DepartmentStoreRooftop_EventScript_15A1DE end LilycoveCity_DepartmentStoreRooftop_EventScript_15A1DE:: @ 815A1DE @@ -84,22 +84,22 @@ LilycoveCity_DepartmentStoreRooftop_EventScript_15A1DE:: @ 815A1DE case 1, LilycoveCity_DepartmentStoreRooftop_EventScript_15A227 case 2, LilycoveCity_DepartmentStoreRooftop_EventScript_15A232 msgbox LilycoveCity_DepartmentStoreRooftop_Text_18C7C3, 4 - jump LilycoveCity_DepartmentStoreRooftop_EventScript_15A396 + goto LilycoveCity_DepartmentStoreRooftop_EventScript_15A396 end LilycoveCity_DepartmentStoreRooftop_EventScript_15A21C:: @ 815A21C setvar 0x4000, 26 - jump LilycoveCity_DepartmentStoreRooftop_EventScript_15A267 + goto LilycoveCity_DepartmentStoreRooftop_EventScript_15A267 end LilycoveCity_DepartmentStoreRooftop_EventScript_15A227:: @ 815A227 setvar 0x4000, 27 - jump LilycoveCity_DepartmentStoreRooftop_EventScript_15A267 + goto LilycoveCity_DepartmentStoreRooftop_EventScript_15A267 end LilycoveCity_DepartmentStoreRooftop_EventScript_15A232:: @ 815A232 setvar 0x4000, 28 - jump LilycoveCity_DepartmentStoreRooftop_EventScript_15A267 + goto LilycoveCity_DepartmentStoreRooftop_EventScript_15A267 end LilycoveCity_DepartmentStoreRooftop_EventScript_15A23D:: @ 815A23D @@ -115,88 +115,88 @@ LilycoveCity_DepartmentStoreRooftop_EventScript_15A24B:: @ 815A24B return LilycoveCity_DepartmentStoreRooftop_EventScript_15A252:: @ 815A252 - paymoney 0xc8, 0 + takemoney 0xc8, 0 return LilycoveCity_DepartmentStoreRooftop_EventScript_15A259:: @ 815A259 - paymoney 0x12c, 0 + takemoney 0x12c, 0 return LilycoveCity_DepartmentStoreRooftop_EventScript_15A260:: @ 815A260 - paymoney 0x15e, 0 + takemoney 0x15e, 0 return LilycoveCity_DepartmentStoreRooftop_EventScript_15A267:: @ 815A267 compare 0x4001, 0 - callif 1, LilycoveCity_DepartmentStoreRooftop_EventScript_15A23D + call_if 1, LilycoveCity_DepartmentStoreRooftop_EventScript_15A23D compare 0x4001, 1 - callif 1, LilycoveCity_DepartmentStoreRooftop_EventScript_15A244 + call_if 1, LilycoveCity_DepartmentStoreRooftop_EventScript_15A244 compare 0x4001, 2 - callif 1, LilycoveCity_DepartmentStoreRooftop_EventScript_15A24B + call_if 1, LilycoveCity_DepartmentStoreRooftop_EventScript_15A24B compare RESULT, 0 - jumpeq LilycoveCity_DepartmentStoreRooftop_EventScript_15A37A + goto_if_eq LilycoveCity_DepartmentStoreRooftop_EventScript_15A37A checkitemspace 0x4000, 1 compare RESULT, 0 - jumpeq LilycoveCity_DepartmentStoreRooftop_EventScript_15A388 + goto_if_eq LilycoveCity_DepartmentStoreRooftop_EventScript_15A388 compare 0x4001, 0 - callif 1, LilycoveCity_DepartmentStoreRooftop_EventScript_15A252 + call_if 1, LilycoveCity_DepartmentStoreRooftop_EventScript_15A252 compare 0x4001, 1 - callif 1, LilycoveCity_DepartmentStoreRooftop_EventScript_15A259 + call_if 1, LilycoveCity_DepartmentStoreRooftop_EventScript_15A259 compare 0x4001, 2 - callif 1, LilycoveCity_DepartmentStoreRooftop_EventScript_15A260 - updatemoney 0, 0 - snop - bufferitem 0, 0x4000 - playsfx 106 + call_if 1, LilycoveCity_DepartmentStoreRooftop_EventScript_15A260 + updatemoneybox 0, 0 + nop + getitemname 0, 0x4000 + playse 106 msgbox LilycoveCity_DepartmentStoreRooftop_Text_18C75F, 4 additem 0x4000, 1 - bufferitem 1, 0x4000 - bufferstd 2, 14 + getitemname 1, 0x4000 + getstdstring 2, 14 msgbox LilycoveCity_DepartmentStoreRooftop_Text_1A0C8C, 4 random 64 compare RESULT, 0 - jumpif 5, LilycoveCity_DepartmentStoreRooftop_EventScript_15A36E + goto_if 5, LilycoveCity_DepartmentStoreRooftop_EventScript_15A36E checkitemspace 0x4000, 1 compare RESULT, 0 - jumpeq LilycoveCity_DepartmentStoreRooftop_EventScript_15A388 - playsfx 106 + goto_if_eq LilycoveCity_DepartmentStoreRooftop_EventScript_15A388 + playse 106 msgbox LilycoveCity_DepartmentStoreRooftop_Text_18C780, 4 additem 0x4000, 1 - bufferitem 1, 0x4000 - bufferstd 2, 14 + getitemname 1, 0x4000 + getstdstring 2, 14 msgbox LilycoveCity_DepartmentStoreRooftop_Text_1A0C8C, 4 random 64 compare RESULT, 0 - jumpif 5, LilycoveCity_DepartmentStoreRooftop_EventScript_15A36E + goto_if 5, LilycoveCity_DepartmentStoreRooftop_EventScript_15A36E checkitemspace 0x4000, 1 compare RESULT, 0 - jumpeq LilycoveCity_DepartmentStoreRooftop_EventScript_15A388 - playsfx 106 + goto_if_eq LilycoveCity_DepartmentStoreRooftop_EventScript_15A388 + playse 106 msgbox LilycoveCity_DepartmentStoreRooftop_Text_18C780, 4 additem 0x4000, 1 - bufferitem 1, 0x4000 - bufferstd 2, 14 + getitemname 1, 0x4000 + getstdstring 2, 14 msgbox LilycoveCity_DepartmentStoreRooftop_Text_1A0C8C, 4 - jump LilycoveCity_DepartmentStoreRooftop_EventScript_15A36E + goto LilycoveCity_DepartmentStoreRooftop_EventScript_15A36E end LilycoveCity_DepartmentStoreRooftop_EventScript_15A36E:: @ 815A36E message LilycoveCity_DepartmentStoreRooftop_Text_18C72B - waittext - jump LilycoveCity_DepartmentStoreRooftop_EventScript_15A1DE + waitmessage + goto LilycoveCity_DepartmentStoreRooftop_EventScript_15A1DE end LilycoveCity_DepartmentStoreRooftop_EventScript_15A37A:: @ 815A37A msgbox LilycoveCity_DepartmentStoreRooftop_Text_18C7AF, 4 - jump LilycoveCity_DepartmentStoreRooftop_EventScript_15A396 + goto LilycoveCity_DepartmentStoreRooftop_EventScript_15A396 end LilycoveCity_DepartmentStoreRooftop_EventScript_15A388:: @ 815A388 msgbox LilycoveCity_DepartmentStoreRooftop_Text_1A0C79, 4 - jump LilycoveCity_DepartmentStoreRooftop_EventScript_15A396 + goto LilycoveCity_DepartmentStoreRooftop_EventScript_15A396 end LilycoveCity_DepartmentStoreRooftop_EventScript_15A396:: @ 815A396 - hidemoney 0, 0 + hidemoneybox 0, 0 releaseall end diff --git a/data/scripts/maps/LilycoveCity_DepartmentStore_1F.inc b/data/scripts/maps/LilycoveCity_DepartmentStore_1F.inc index 325c56330..7acd29523 100644 --- a/data/scripts/maps/LilycoveCity_DepartmentStore_1F.inc +++ b/data/scripts/maps/LilycoveCity_DepartmentStore_1F.inc @@ -8,51 +8,51 @@ LilycoveCity_DepartmentStore_1F_EventScript_159D55:: @ 8159D55 LilycoveCity_DepartmentStore_1F_EventScript_159D5E:: @ 8159D5E lock faceplayer - checkdailyflags + dodailyevents compare 0x4045, 0 - jumpif 5, LilycoveCity_DepartmentStore_1F_EventScript_159EB1 + goto_if 5, LilycoveCity_DepartmentStore_1F_EventScript_159EB1 checkflag 2250 - jumpeq LilycoveCity_DepartmentStore_1F_EventScript_159E4C + goto_if_eq LilycoveCity_DepartmentStore_1F_EventScript_159E4C msgbox LilycoveCity_DepartmentStore_1F_Text_1C4B5E, 5 compare RESULT, 0 - jumpeq LilycoveCity_DepartmentStore_1F_EventScript_159E56 + goto_if_eq LilycoveCity_DepartmentStore_1F_EventScript_159E56 setflag 2250 message LilycoveCity_DepartmentStore_1F_Text_1C4CC6 - waittext - special 257 + waitmessage + special RetrieveLotteryNumber copyvar 0x8008, RESULT - special 337 + special sub_810F9AC msgbox LilycoveCity_DepartmentStore_1F_Text_1C4CF6, 4 - move 2, LilycoveCity_DepartmentStore_1F_Movement_1A0843 - waitmove 0 - playsfx 4 - special 217 - special 258 - pause 220 - special 218 - pause 10 - move 2, LilycoveCity_DepartmentStore_1F_Movement_1A0839 - waitmove 0 + applymovement 2, LilycoveCity_DepartmentStore_1F_Movement_1A0843 + waitmovement 0 + playse 4 + special DoLotteryCornerComputerEffect + special PickLotteryCornerTicket + delay 220 + special EndLotteryCornerComputerEffect + delay 10 + applymovement 2, LilycoveCity_DepartmentStore_1F_Movement_1A0839 + waitmovement 0 compare 0x8004, 0 - jumpeq LilycoveCity_DepartmentStore_1F_EventScript_159E60 - inccounter GAME_STAT_WON_POKEMON_LOTTERY + goto_if_eq LilycoveCity_DepartmentStore_1F_EventScript_159E60 + incrementgamestat GAME_STAT_WON_POKEMON_LOTTERY compare 0x8006, 0 - callif 1, LilycoveCity_DepartmentStore_1F_EventScript_159E3A + call_if 1, LilycoveCity_DepartmentStore_1F_EventScript_159E3A compare 0x8006, 1 - callif 1, LilycoveCity_DepartmentStore_1F_EventScript_159E43 - bufferitem 0, 0x8005 + call_if 1, LilycoveCity_DepartmentStore_1F_EventScript_159E43 + getitemname 0, 0x8005 compare 0x8004, 1 - callif 1, LilycoveCity_DepartmentStore_1F_EventScript_159E78 + call_if 1, LilycoveCity_DepartmentStore_1F_EventScript_159E78 compare 0x8004, 2 - callif 1, LilycoveCity_DepartmentStore_1F_EventScript_159E81 + call_if 1, LilycoveCity_DepartmentStore_1F_EventScript_159E81 compare 0x8004, 3 - callif 1, LilycoveCity_DepartmentStore_1F_EventScript_159E8A + call_if 1, LilycoveCity_DepartmentStore_1F_EventScript_159E8A compare 0x8004, 4 - callif 1, LilycoveCity_DepartmentStore_1F_EventScript_159E93 + call_if 1, LilycoveCity_DepartmentStore_1F_EventScript_159E93 giveitem 0x8005 compare RESULT, 0 - jumpeq LilycoveCity_DepartmentStore_1F_EventScript_159E9C - jump LilycoveCity_DepartmentStore_1F_EventScript_159E6E + goto_if_eq LilycoveCity_DepartmentStore_1F_EventScript_159E9C + goto LilycoveCity_DepartmentStore_1F_EventScript_159E6E end LilycoveCity_DepartmentStore_1F_EventScript_159E3A:: @ 8159E3A @@ -75,7 +75,7 @@ LilycoveCity_DepartmentStore_1F_EventScript_159E56:: @ 8159E56 LilycoveCity_DepartmentStore_1F_EventScript_159E60:: @ 8159E60 msgbox LilycoveCity_DepartmentStore_1F_Text_1C4E27, 4 - jump LilycoveCity_DepartmentStore_1F_EventScript_159E6E + goto LilycoveCity_DepartmentStore_1F_EventScript_159E6E end LilycoveCity_DepartmentStore_1F_EventScript_159E6E:: @ 8159E6E @@ -101,7 +101,7 @@ LilycoveCity_DepartmentStore_1F_EventScript_159E93:: @ 8159E93 LilycoveCity_DepartmentStore_1F_EventScript_159E9C:: @ 8159E9C copyvar 0x4045, 0x8005 - jump LilycoveCity_DepartmentStore_1F_EventScript_159EA7 + goto LilycoveCity_DepartmentStore_1F_EventScript_159EA7 end LilycoveCity_DepartmentStore_1F_EventScript_159EA7:: @ 8159EA7 @@ -113,7 +113,7 @@ LilycoveCity_DepartmentStore_1F_EventScript_159EB1:: @ 8159EB1 msgbox LilycoveCity_DepartmentStore_1F_Text_1C4FCC, 4 giveitem 0x4045 compare RESULT, 0 - jumpeq LilycoveCity_DepartmentStore_1F_EventScript_159EA7 + goto_if_eq LilycoveCity_DepartmentStore_1F_EventScript_159EA7 setvar 0x4045, 0 release end @@ -133,8 +133,8 @@ LilycoveCity_DepartmentStore_1F_EventScript_159EE9:: @ 8159EE9 LilycoveCity_DepartmentStore_1F_EventScript_159EF2:: @ 8159EF2 lock faceplayer - checksound - pokecry SPECIES_AZUMARILL, 0 + waitse + playpokecry SPECIES_AZUMARILL, 0 msgbox LilycoveCity_DepartmentStore_1F_Text_18C0C3, 4 waitpokecry release diff --git a/data/scripts/maps/LilycoveCity_DepartmentStore_2F.inc b/data/scripts/maps/LilycoveCity_DepartmentStore_2F.inc index e54883714..25e981628 100644 --- a/data/scripts/maps/LilycoveCity_DepartmentStore_2F.inc +++ b/data/scripts/maps/LilycoveCity_DepartmentStore_2F.inc @@ -17,7 +17,7 @@ LilycoveCity_DepartmentStore_2F_EventScript_159F2A:: @ 8159F2A lock faceplayer message LilycoveCity_DepartmentStore_2F_Text_1A0BE4 - waittext + waitmessage pokemart LilycoveCity_DepartmentStore_2F_Items1 msgbox LilycoveCity_DepartmentStore_2F_Text_1A0C02, 4 release @@ -44,7 +44,7 @@ LilycoveCity_DepartmentStore_2F_EventScript_159F5E:: @ 8159F5E lock faceplayer message LilycoveCity_DepartmentStore_2F_Text_1A0BE4 - waittext + waitmessage pokemart LilycoveCity_DepartmentStore_2F_Items2 msgbox LilycoveCity_DepartmentStore_2F_Text_1A0C02, 4 release diff --git a/data/scripts/maps/LilycoveCity_DepartmentStore_3F.inc b/data/scripts/maps/LilycoveCity_DepartmentStore_3F.inc index e669cef7f..1f55f5018 100644 --- a/data/scripts/maps/LilycoveCity_DepartmentStore_3F.inc +++ b/data/scripts/maps/LilycoveCity_DepartmentStore_3F.inc @@ -5,7 +5,7 @@ LilycoveCity_DepartmentStore_3F_EventScript_159F91:: @ 8159F91 lock faceplayer message LilycoveCity_DepartmentStore_3F_Text_1A0BE4 - waittext + waitmessage pokemart LilycoveCity_DepartmentStore_3F_Items1 msgbox LilycoveCity_DepartmentStore_3F_Text_1A0C02, 4 release @@ -27,7 +27,7 @@ LilycoveCity_DepartmentStore_3F_EventScript_159FB8:: @ 8159FB8 lock faceplayer message LilycoveCity_DepartmentStore_3F_Text_1A0BE4 - waittext + waitmessage pokemart LilycoveCity_DepartmentStore_3F_Items2 msgbox LilycoveCity_DepartmentStore_3F_Text_1A0C02, 4 release diff --git a/data/scripts/maps/LilycoveCity_DepartmentStore_4F.inc b/data/scripts/maps/LilycoveCity_DepartmentStore_4F.inc index 994b3b63f..d922d9181 100644 --- a/data/scripts/maps/LilycoveCity_DepartmentStore_4F.inc +++ b/data/scripts/maps/LilycoveCity_DepartmentStore_4F.inc @@ -17,7 +17,7 @@ LilycoveCity_DepartmentStore_4F_EventScript_15A019:: @ 815A019 lock faceplayer message LilycoveCity_DepartmentStore_4F_Text_1A0BE4 - waittext + waitmessage pokemart LilycoveCity_DepartmentStore_4F_Items1 msgbox LilycoveCity_DepartmentStore_4F_Text_1A0C02, 4 release @@ -37,7 +37,7 @@ LilycoveCity_DepartmentStore_4F_EventScript_15A03C:: @ 815A03C lock faceplayer message LilycoveCity_DepartmentStore_4F_Text_1A0BE4 - waittext + waitmessage pokemart LilycoveCity_DepartmentStore_4F_Items2 msgbox LilycoveCity_DepartmentStore_4F_Text_1A0C02, 4 release diff --git a/data/scripts/maps/LilycoveCity_DepartmentStore_5F.inc b/data/scripts/maps/LilycoveCity_DepartmentStore_5F.inc index 0bef8866a..835a0f48d 100644 --- a/data/scripts/maps/LilycoveCity_DepartmentStore_5F.inc +++ b/data/scripts/maps/LilycoveCity_DepartmentStore_5F.inc @@ -5,7 +5,7 @@ LilycoveCity_DepartmentStore_5F_EventScript_15A061:: @ 815A061 lock faceplayer message LilycoveCity_DepartmentStore_5F_Text_1A0BE4 - waittext + waitmessage pokemartbp LilycoveCity_DepartmentStore_5F_Items1 msgbox LilycoveCity_DepartmentStore_5F_Text_1A0C02, 4 release @@ -33,7 +33,7 @@ LilycoveCity_DepartmentStore_5F_EventScript_15A094:: @ 815A094 lock faceplayer message LilycoveCity_DepartmentStore_5F_Text_1A0BE4 - waittext + waitmessage pokemartbp LilycoveCity_DepartmentStore_5F_Items2 msgbox LilycoveCity_DepartmentStore_5F_Text_1A0C02, 4 release @@ -58,7 +58,7 @@ LilycoveCity_DepartmentStore_5F_EventScript_15A0C2:: @ 815A0C2 lock faceplayer message LilycoveCity_DepartmentStore_5F_Text_1A0BE4 - waittext + waitmessage pokemartbp LilycoveCity_DepartmentStore_5F_Items3 msgbox LilycoveCity_DepartmentStore_5F_Text_1A0C02, 4 release @@ -83,7 +83,7 @@ LilycoveCity_DepartmentStore_5F_EventScript_15A0F2:: @ 815A0F2 lock faceplayer message LilycoveCity_DepartmentStore_5F_Text_1A0BE4 - waittext + waitmessage pokemartbp LilycoveCity_DepartmentStore_5F_Items4 msgbox LilycoveCity_DepartmentStore_5F_Text_1A0C02, 4 release diff --git a/data/scripts/maps/LilycoveCity_Harbor.inc b/data/scripts/maps/LilycoveCity_Harbor.inc index 2f4e4352e..7e14db994 100644 --- a/data/scripts/maps/LilycoveCity_Harbor.inc +++ b/data/scripts/maps/LilycoveCity_Harbor.inc @@ -3,7 +3,7 @@ LilycoveCity_Harbor_MapScripts:: @ 8159893 .byte 0 LilycoveCity_Harbor_MapScript1_159899:: @ 8159899 - warp6 LilycoveCity, 255, 12, 33 + setescapewarp LilycoveCity, 255, 12, 33 end LilycoveCity_Harbor_EventScript_1598A2:: @ 81598A2 @@ -11,13 +11,13 @@ LilycoveCity_Harbor_EventScript_1598A2:: @ 81598A2 faceplayer checkitem ITEM_EON_TICKET, 1 compare RESULT, 1 - jumpeq LilycoveCity_Harbor_EventScript_1599EE - jump LilycoveCity_Harbor_EventScript_1598BA + goto_if_eq LilycoveCity_Harbor_EventScript_1599EE + goto LilycoveCity_Harbor_EventScript_1598BA end LilycoveCity_Harbor_EventScript_1598BA:: @ 81598BA checkflag 2052 - jumpeq LilycoveCity_Harbor_EventScript_1598CD + goto_if_eq LilycoveCity_Harbor_EventScript_1598CD msgbox LilycoveCity_Harbor_Text_18B306, 4 release end @@ -26,14 +26,14 @@ LilycoveCity_Harbor_EventScript_1598CD:: @ 81598CD msgbox LilycoveCity_Harbor_Text_18B36F, 4 checkitem ITEM_SS_TICKET, 1 compare RESULT, 0 - jumpeq LilycoveCity_Harbor_EventScript_159929 + goto_if_eq LilycoveCity_Harbor_EventScript_159929 message LilycoveCity_Harbor_Text_18B406 - waittext - jump LilycoveCity_Harbor_EventScript_1598F1 + waitmessage + goto LilycoveCity_Harbor_EventScript_1598F1 end LilycoveCity_Harbor_EventScript_1598F1:: @ 81598F1 - multichoicedef 18, 6, 56, 2, 0 + multichoicedefault 18, 6, 56, 2, 0 switch RESULT case 0, LilycoveCity_Harbor_EventScript_159933 case 1, LilycoveCity_Harbor_EventScript_15995B @@ -49,7 +49,7 @@ LilycoveCity_Harbor_EventScript_159929:: @ 8159929 LilycoveCity_Harbor_EventScript_159933:: @ 8159933 msgbox LilycoveCity_Harbor_Text_18B47D, 5 compare RESULT, 0 - jumpeq LilycoveCity_Harbor_EventScript_15997E + goto_if_eq LilycoveCity_Harbor_EventScript_15997E setvar 0x40b4, 5 call LilycoveCity_Harbor_EventScript_15998A warp SSTidalCorridor, 255, 1, 10 @@ -60,7 +60,7 @@ LilycoveCity_Harbor_EventScript_159933:: @ 8159933 LilycoveCity_Harbor_EventScript_15995B:: @ 815995B msgbox LilycoveCity_Harbor_Text_18B499, 5 compare RESULT, 0 - jumpeq LilycoveCity_Harbor_EventScript_15997E + goto_if_eq LilycoveCity_Harbor_EventScript_15997E call LilycoveCity_Harbor_EventScript_15998A warp BattleTower_Outside, 255, 19, 23 waitstate @@ -69,35 +69,35 @@ LilycoveCity_Harbor_EventScript_15995B:: @ 815995B LilycoveCity_Harbor_EventScript_15997E:: @ 815997E message LilycoveCity_Harbor_Text_18B4E2 - waittext - jump LilycoveCity_Harbor_EventScript_1598F1 + waitmessage + goto LilycoveCity_Harbor_EventScript_1598F1 end LilycoveCity_Harbor_EventScript_15998A:: @ 815998A msgbox LilycoveCity_Harbor_Text_18B4B3, 4 - closebutton - move LAST_TALKED, LilycoveCity_Harbor_Movement_1A0841 - waitmove 0 - pause 30 - spriteinvisible LAST_TALKED, 13, 10 + closemessage + applymovement LAST_TALKED, LilycoveCity_Harbor_Movement_1A0841 + waitmovement 0 + delay 30 + hideobject LAST_TALKED, 13, 10 compare FACING, 2 - callif 1, LilycoveCity_Harbor_EventScript_1599D9 + call_if 1, LilycoveCity_Harbor_EventScript_1599D9 compare FACING, 4 - callif 1, LilycoveCity_Harbor_EventScript_1599CE - pause 30 - spriteinvisible 255, 0, 0 + call_if 1, LilycoveCity_Harbor_EventScript_1599CE + delay 30 + hideobject 255, 0, 0 setvar 0x8004, 2 call LilycoveCity_Harbor_EventScript_1A040E return LilycoveCity_Harbor_EventScript_1599CE:: @ 81599CE - move 255, LilycoveCity_Harbor_Movement_159A86 - waitmove 0 + applymovement 255, LilycoveCity_Harbor_Movement_159A86 + waitmovement 0 return LilycoveCity_Harbor_EventScript_1599D9:: @ 81599D9 - move 255, LilycoveCity_Harbor_Movement_159A89 - waitmove 0 + applymovement 255, LilycoveCity_Harbor_Movement_159A89 + waitmovement 0 return LilycoveCity_Harbor_EventScript_1599E4:: @ 81599E4 @@ -107,35 +107,35 @@ LilycoveCity_Harbor_EventScript_1599E4:: @ 81599E4 LilycoveCity_Harbor_EventScript_1599EE:: @ 81599EE checkflag 2052 - jumpif 0, LilycoveCity_Harbor_EventScript_1598BA + goto_if 0, LilycoveCity_Harbor_EventScript_1598BA checkflag 206 - jumpeq LilycoveCity_Harbor_EventScript_1598BA + goto_if_eq LilycoveCity_Harbor_EventScript_1598BA checkflag 2131 - jumpif 0, LilycoveCity_Harbor_EventScript_1598BA + goto_if 0, LilycoveCity_Harbor_EventScript_1598BA msgbox LilycoveCity_Harbor_Text_1C50F2, 4 - closebutton - move LAST_TALKED, LilycoveCity_Harbor_Movement_1A0841 - waitmove 0 - pause 30 - spriteinvisible LAST_TALKED, 13, 10 - pause 60 - reappear 4 - pause 30 - move 4, LilycoveCity_Harbor_Movement_1A0839 - waitmove 0 + closemessage + applymovement LAST_TALKED, LilycoveCity_Harbor_Movement_1A0841 + waitmovement 0 + delay 30 + hideobject LAST_TALKED, 13, 10 + delay 60 + addobject 4 + delay 30 + applymovement 4, LilycoveCity_Harbor_Movement_1A0839 + waitmovement 0 msgbox LilycoveCity_Harbor_Text_1C5120, 4 - closebutton - move 4, LilycoveCity_Harbor_Movement_1A0841 - waitmove 0 - pause 30 - disappear 4 + closemessage + applymovement 4, LilycoveCity_Harbor_Movement_1A0841 + waitmovement 0 + delay 30 + removeobject 4 compare FACING, 2 - callif 1, LilycoveCity_Harbor_EventScript_1599D9 + call_if 1, LilycoveCity_Harbor_EventScript_1599D9 compare FACING, 4 - callif 1, LilycoveCity_Harbor_EventScript_1599CE - pause 30 - spriteinvisible 255, 0, 0 - special 0 + call_if 1, LilycoveCity_Harbor_EventScript_1599CE + delay 30 + hideobject 255, 0, 0 + special ScrSpecial_HealPlayerParty setvar 0x8004, 2 call LilycoveCity_Harbor_EventScript_1A040E warp SouthernIsland_Exterior, 255, 13, 22 @@ -160,7 +160,7 @@ LilycoveCity_Harbor_EventScript_159A8D:: @ 8159A8D lock faceplayer checkflag 2052 - jumpeq LilycoveCity_Harbor_EventScript_159AA2 + goto_if_eq LilycoveCity_Harbor_EventScript_159AA2 msgbox LilycoveCity_Harbor_Text_18B504, 4 release end diff --git a/data/scripts/maps/LilycoveCity_House1.inc b/data/scripts/maps/LilycoveCity_House1.inc index 3dae362c1..4defe37b8 100644 --- a/data/scripts/maps/LilycoveCity_House1.inc +++ b/data/scripts/maps/LilycoveCity_House1.inc @@ -8,8 +8,8 @@ LilycoveCity_House1_EventScript_159B86:: @ 8159B86 LilycoveCity_House1_EventScript_159B8F:: @ 8159B8F lock faceplayer - checksound - pokecry SPECIES_KECLEON, 0 + waitse + playpokecry SPECIES_KECLEON, 0 msgbox LilycoveCity_House1_Text_18B82B, 4 waitpokecry release diff --git a/data/scripts/maps/LilycoveCity_House2.inc b/data/scripts/maps/LilycoveCity_House2.inc index 75780667d..d3399f5ac 100644 --- a/data/scripts/maps/LilycoveCity_House2.inc +++ b/data/scripts/maps/LilycoveCity_House2.inc @@ -5,11 +5,11 @@ LilycoveCity_House2_EventScript_159BA3:: @ 8159BA3 lock faceplayer checkflag 234 - jumpeq LilycoveCity_House2_EventScript_159BDA + goto_if_eq LilycoveCity_House2_EventScript_159BDA msgbox LilycoveCity_House2_Text_18B83C, 4 giveitem ITEM_TM44 compare RESULT, 0 - jumpeq LilycoveCity_House2_EventScript_1A029B + goto_if_eq LilycoveCity_House2_EventScript_1A029B setflag 234 msgbox LilycoveCity_House2_Text_18B883, 4 release diff --git a/data/scripts/maps/LilycoveCity_House3.inc b/data/scripts/maps/LilycoveCity_House3.inc index 51e4988b3..f700eed9d 100644 --- a/data/scripts/maps/LilycoveCity_House3.inc +++ b/data/scripts/maps/LilycoveCity_House3.inc @@ -12,19 +12,19 @@ LilycoveCity_House3_EventScript_159BF3:: @ 8159BF3 faceplayer msgbox LilycoveCity_House3_Text_18B8CC, 5 compare RESULT, 0 - jumpeq LilycoveCity_House3_EventScript_159C1D + goto_if_eq LilycoveCity_House3_EventScript_159C1D msgbox LilycoveCity_House3_Text_18BA2B, 4 - closebutton - move LAST_TALKED, LilycoveCity_House3_Movement_1A083D - waitmove 0 + closemessage + applymovement LAST_TALKED, LilycoveCity_House3_Movement_1A083D + waitmovement 0 release end LilycoveCity_House3_EventScript_159C1D:: @ 8159C1D msgbox LilycoveCity_House3_Text_18B9DC, 4 - closebutton - move LAST_TALKED, LilycoveCity_House3_Movement_1A083D - waitmove 0 + closemessage + applymovement LAST_TALKED, LilycoveCity_House3_Movement_1A083D + waitmovement 0 release end @@ -32,9 +32,9 @@ LilycoveCity_House3_EventScript_159C32:: @ 8159C32 lock faceplayer msgbox LilycoveCity_House3_Text_18BD64, 4 - closebutton - move LAST_TALKED, LilycoveCity_House3_Movement_1A083D - waitmove 0 + closemessage + applymovement LAST_TALKED, LilycoveCity_House3_Movement_1A083D + waitmovement 0 release end diff --git a/data/scripts/maps/LilycoveCity_LilycoveMuseum_1F.inc b/data/scripts/maps/LilycoveCity_LilycoveMuseum_1F.inc index a481f9c32..06e82d5f8 100644 --- a/data/scripts/maps/LilycoveCity_LilycoveMuseum_1F.inc +++ b/data/scripts/maps/LilycoveCity_LilycoveMuseum_1F.inc @@ -7,14 +7,14 @@ LilycoveCity_LilycoveMuseum_1F_EventScript_15841C:: @ 815841C LilycoveCity_LilycoveMuseum_1F_EventScript_158425:: @ 8158425 lockall - move 2, LilycoveCity_LilycoveMuseum_1F_Movement_1A0839 + applymovement 2, LilycoveCity_LilycoveMuseum_1F_Movement_1A0839 message LilycoveCity_LilycoveMuseum_1F_Text_1873B9 - waittext + waitmessage multichoice 20, 8, 16, 1 compare RESULT, 0 - jumpeq LilycoveCity_LilycoveMuseum_1F_EventScript_158458 + goto_if_eq LilycoveCity_LilycoveMuseum_1F_EventScript_158458 compare RESULT, 1 - jumpeq LilycoveCity_LilycoveMuseum_1F_EventScript_15844F + goto_if_eq LilycoveCity_LilycoveMuseum_1F_EventScript_15844F end LilycoveCity_LilycoveMuseum_1F_EventScript_15844F:: @ 815844F @@ -24,9 +24,9 @@ LilycoveCity_LilycoveMuseum_1F_EventScript_15844F:: @ 815844F LilycoveCity_LilycoveMuseum_1F_EventScript_158458:: @ 8158458 msgbox LilycoveCity_LilycoveMuseum_1F_Text_187495, 5 compare RESULT, 0 - jumpeq LilycoveCity_LilycoveMuseum_1F_EventScript_158477 + goto_if_eq LilycoveCity_LilycoveMuseum_1F_EventScript_158477 compare RESULT, 1 - jumpeq LilycoveCity_LilycoveMuseum_1F_EventScript_158481 + goto_if_eq LilycoveCity_LilycoveMuseum_1F_EventScript_158481 end LilycoveCity_LilycoveMuseum_1F_EventScript_158477:: @ 8158477 @@ -36,9 +36,9 @@ LilycoveCity_LilycoveMuseum_1F_EventScript_158477:: @ 8158477 LilycoveCity_LilycoveMuseum_1F_EventScript_158481:: @ 8158481 msgbox LilycoveCity_LilycoveMuseum_1F_Text_187534, 3 - move 2, LilycoveCity_LilycoveMuseum_1F_Movement_1584FC - waitmove 0 - disappear 2 + applymovement 2, LilycoveCity_LilycoveMuseum_1F_Movement_1584FC + waitmovement 0 + removeobject 2 switch FACING case 2, LilycoveCity_LilycoveMuseum_1F_EventScript_1584BD case 3, LilycoveCity_LilycoveMuseum_1F_EventScript_1584D2 @@ -47,24 +47,24 @@ LilycoveCity_LilycoveMuseum_1F_EventScript_158481:: @ 8158481 LilycoveCity_LilycoveMuseum_1F_EventScript_1584BD:: @ 81584BD lockall - move 255, LilycoveCity_LilycoveMuseum_1F_Movement_158504 - waitmove 0 + applymovement 255, LilycoveCity_LilycoveMuseum_1F_Movement_158504 + waitmovement 0 warp LilycoveCity_LilycoveMuseum_2F, 255, 11, 8 waitstate end LilycoveCity_LilycoveMuseum_1F_EventScript_1584D2:: @ 81584D2 lockall - move 255, LilycoveCity_LilycoveMuseum_1F_Movement_1584FE - waitmove 0 + applymovement 255, LilycoveCity_LilycoveMuseum_1F_Movement_1584FE + waitmovement 0 warp LilycoveCity_LilycoveMuseum_2F, 255, 11, 8 waitstate end LilycoveCity_LilycoveMuseum_1F_EventScript_1584E7:: @ 81584E7 lockall - move 255, LilycoveCity_LilycoveMuseum_1F_Movement_158501 - waitmove 0 + applymovement 255, LilycoveCity_LilycoveMuseum_1F_Movement_158501 + waitmovement 0 warp LilycoveCity_LilycoveMuseum_2F, 255, 11, 8 waitstate end @@ -152,8 +152,8 @@ LilycoveCity_LilycoveMuseum_1F_EventScript_158585:: @ 8158585 LilycoveCity_LilycoveMuseum_1F_EventScript_15858E:: @ 815858E msgbox LilycoveCity_LilycoveMuseum_1F_Text_187B04, 2 lockall - move 8, LilycoveCity_LilycoveMuseum_1F_Movement_1A083D - waitmove 0 + applymovement 8, LilycoveCity_LilycoveMuseum_1F_Movement_1A083D + waitmovement 0 releaseall end diff --git a/data/scripts/maps/LilycoveCity_LilycoveMuseum_2F.inc b/data/scripts/maps/LilycoveCity_LilycoveMuseum_2F.inc index 2e6d6698f..a4599f14a 100644 --- a/data/scripts/maps/LilycoveCity_LilycoveMuseum_2F.inc +++ b/data/scripts/maps/LilycoveCity_LilycoveMuseum_2F.inc @@ -5,55 +5,55 @@ LilycoveCity_LilycoveMuseum_2F_MapScripts:: @ 81585AC LilycoveCity_LilycoveMuseum_2F_MapScript1_1585B7:: @ 81585B7 checkflag 160 - jumpeq LilycoveCity_LilycoveMuseum_2F_EventScript_1585FD - jump LilycoveCity_LilycoveMuseum_2F_EventScript_1585C6 + goto_if_eq LilycoveCity_LilycoveMuseum_2F_EventScript_1585FD + goto LilycoveCity_LilycoveMuseum_2F_EventScript_1585C6 end LilycoveCity_LilycoveMuseum_2F_EventScript_1585C6:: @ 81585C6 checkflag 161 - jumpeq LilycoveCity_LilycoveMuseum_2F_EventScript_158615 - jump LilycoveCity_LilycoveMuseum_2F_EventScript_1585D5 + goto_if_eq LilycoveCity_LilycoveMuseum_2F_EventScript_158615 + goto LilycoveCity_LilycoveMuseum_2F_EventScript_1585D5 end LilycoveCity_LilycoveMuseum_2F_EventScript_1585D5:: @ 81585D5 checkflag 162 - jumpeq LilycoveCity_LilycoveMuseum_2F_EventScript_15862D - jump LilycoveCity_LilycoveMuseum_2F_EventScript_1585E4 + goto_if_eq LilycoveCity_LilycoveMuseum_2F_EventScript_15862D + goto LilycoveCity_LilycoveMuseum_2F_EventScript_1585E4 end LilycoveCity_LilycoveMuseum_2F_EventScript_1585E4:: @ 81585E4 checkflag 163 - jumpeq LilycoveCity_LilycoveMuseum_2F_EventScript_158645 - jump LilycoveCity_LilycoveMuseum_2F_EventScript_1585F3 + goto_if_eq LilycoveCity_LilycoveMuseum_2F_EventScript_158645 + goto LilycoveCity_LilycoveMuseum_2F_EventScript_1585F3 end LilycoveCity_LilycoveMuseum_2F_EventScript_1585F3:: @ 81585F3 checkflag 164 - jumpeq LilycoveCity_LilycoveMuseum_2F_EventScript_15865D + goto_if_eq LilycoveCity_LilycoveMuseum_2F_EventScript_15865D end LilycoveCity_LilycoveMuseum_2F_EventScript_1585FD:: @ 81585FD setmaptile 10, 6, 606, 1 setmaptile 11, 6, 607, 1 - jump LilycoveCity_LilycoveMuseum_2F_EventScript_1585C6 + goto LilycoveCity_LilycoveMuseum_2F_EventScript_1585C6 end LilycoveCity_LilycoveMuseum_2F_EventScript_158615:: @ 8158615 setmaptile 18, 6, 604, 1 setmaptile 19, 6, 605, 1 - jump LilycoveCity_LilycoveMuseum_2F_EventScript_1585D5 + goto LilycoveCity_LilycoveMuseum_2F_EventScript_1585D5 end LilycoveCity_LilycoveMuseum_2F_EventScript_15862D:: @ 815862D setmaptile 14, 10, 608, 1 setmaptile 15, 10, 609, 1 - jump LilycoveCity_LilycoveMuseum_2F_EventScript_1585E4 + goto LilycoveCity_LilycoveMuseum_2F_EventScript_1585E4 end LilycoveCity_LilycoveMuseum_2F_EventScript_158645:: @ 8158645 setmaptile 6, 10, 602, 1 setmaptile 7, 10, 603, 1 - jump LilycoveCity_LilycoveMuseum_2F_EventScript_1585F3 + goto LilycoveCity_LilycoveMuseum_2F_EventScript_1585F3 end LilycoveCity_LilycoveMuseum_2F_EventScript_15865D:: @ 815865D @@ -67,19 +67,19 @@ LilycoveCity_LilycoveMuseum_2F_MapScript2_158670:: @ 8158670 LilycoveCity_LilycoveMuseum_2F_EventScript_15867A:: @ 815867A lockall - move 1, LilycoveCity_LilycoveMuseum_2F_Movement_1A0839 - move 255, LilycoveCity_LilycoveMuseum_2F_Movement_1586D3 - waitmove 0 + applymovement 1, LilycoveCity_LilycoveMuseum_2F_Movement_1A0839 + applymovement 255, LilycoveCity_LilycoveMuseum_2F_Movement_1586D3 + waitmovement 0 msgbox LilycoveCity_LilycoveMuseum_2F_Text_187C42, 3 - move 1, LilycoveCity_LilycoveMuseum_2F_Movement_1586D5 - waitmove 0 - move 255, LilycoveCity_LilycoveMuseum_2F_Movement_1586D5 - waitmove 0 + applymovement 1, LilycoveCity_LilycoveMuseum_2F_Movement_1586D5 + waitmovement 0 + applymovement 255, LilycoveCity_LilycoveMuseum_2F_Movement_1586D5 + waitmovement 0 msgbox LilycoveCity_LilycoveMuseum_2F_Text_187C64, 3 - move 1, LilycoveCity_LilycoveMuseum_2F_Movement_1A0839 - waitmove 0 - move 255, LilycoveCity_LilycoveMuseum_2F_Movement_1586D3 - waitmove 0 + applymovement 1, LilycoveCity_LilycoveMuseum_2F_Movement_1A0839 + waitmovement 0 + applymovement 255, LilycoveCity_LilycoveMuseum_2F_Movement_1586D3 + waitmovement 0 msgbox LilycoveCity_LilycoveMuseum_2F_Text_187E1D, 3 copyvar 0x4094, 0x1 releaseall @@ -97,8 +97,8 @@ LilycoveCity_LilycoveMuseum_2F_Movement_1586D5:: @ 81586D5 LilycoveCity_LilycoveMuseum_2F_EventScript_1586D8:: @ 81586D8 lockall checkflag 236 - jumpeq LilycoveCity_LilycoveMuseum_2F_EventScript_158793 - specialval 0x8004, 137 + goto_if_eq LilycoveCity_LilycoveMuseum_2F_EventScript_158793 + specialvar 0x8004, sub_80C4D50 switch 0x8004 case 1, LilycoveCity_LilycoveMuseum_2F_EventScript_15872C case 2, LilycoveCity_LilycoveMuseum_2F_EventScript_15872C @@ -113,29 +113,29 @@ LilycoveCity_LilycoveMuseum_2F_EventScript_15872C:: @ 815872C end LilycoveCity_LilycoveMuseum_2F_EventScript_158735:: @ 8158735 - move 1, LilycoveCity_LilycoveMuseum_2F_Movement_1A0839 - waitmove 0 + applymovement 1, LilycoveCity_LilycoveMuseum_2F_Movement_1A0839 + waitmovement 0 msgbox LilycoveCity_LilycoveMuseum_2F_Text_18802F, 4 - move 1, LilycoveCity_LilycoveMuseum_2F_Movement_1586D5 + applymovement 1, LilycoveCity_LilycoveMuseum_2F_Movement_1586D5 msgbox LilycoveCity_LilycoveMuseum_2F_Text_188041, 4 - jump LilycoveCity_LilycoveMuseum_2F_EventScript_15875C + goto LilycoveCity_LilycoveMuseum_2F_EventScript_15875C end LilycoveCity_LilycoveMuseum_2F_EventScript_15875C:: @ 815875C - move 1, LilycoveCity_LilycoveMuseum_2F_Movement_1A0839 + applymovement 1, LilycoveCity_LilycoveMuseum_2F_Movement_1A0839 msgbox LilycoveCity_LilycoveMuseum_2F_Text_188120, 4 givedecoration 44 compare RESULT, 0 - jumpeq LilycoveCity_LilycoveMuseum_2F_EventScript_158783 + goto_if_eq LilycoveCity_LilycoveMuseum_2F_EventScript_158783 setflag 236 - closebutton + closemessage releaseall end LilycoveCity_LilycoveMuseum_2F_EventScript_158783:: @ 8158783 call LilycoveCity_LilycoveMuseum_2F_EventScript_1A02B8 msgbox LilycoveCity_LilycoveMuseum_2F_Text_188166, 4 - closebutton + closemessage releaseall end @@ -147,35 +147,35 @@ LilycoveCity_LilycoveMuseum_2F_EventScript_158793:: @ 8158793 LilycoveCity_LilycoveMuseum_2F_EventScript_15879D:: @ 815879D lockall checkflag 162 - jumpeq LilycoveCity_LilycoveMuseum_2F_EventScript_15883C + goto_if_eq LilycoveCity_LilycoveMuseum_2F_EventScript_15883C msgbox LilycoveCity_LilycoveMuseum_2F_Text_188219, 3 end LilycoveCity_LilycoveMuseum_2F_EventScript_1587B0:: @ 81587B0 lockall checkflag 164 - jumpeq LilycoveCity_LilycoveMuseum_2F_EventScript_158858 + goto_if_eq LilycoveCity_LilycoveMuseum_2F_EventScript_158858 msgbox LilycoveCity_LilycoveMuseum_2F_Text_18824C, 3 end LilycoveCity_LilycoveMuseum_2F_EventScript_1587C3:: @ 81587C3 lockall checkflag 160 - jumpeq LilycoveCity_LilycoveMuseum_2F_EventScript_158820 + goto_if_eq LilycoveCity_LilycoveMuseum_2F_EventScript_158820 msgbox LilycoveCity_LilycoveMuseum_2F_Text_1882B4, 3 end LilycoveCity_LilycoveMuseum_2F_EventScript_1587D6:: @ 81587D6 lockall checkflag 161 - jumpeq LilycoveCity_LilycoveMuseum_2F_EventScript_15882E + goto_if_eq LilycoveCity_LilycoveMuseum_2F_EventScript_15882E msgbox LilycoveCity_LilycoveMuseum_2F_Text_188281, 3 end LilycoveCity_LilycoveMuseum_2F_EventScript_1587E9:: @ 81587E9 lockall checkflag 163 - jumpeq LilycoveCity_LilycoveMuseum_2F_EventScript_15884A + goto_if_eq LilycoveCity_LilycoveMuseum_2F_EventScript_15884A msgbox LilycoveCity_LilycoveMuseum_2F_Text_1882E6, 3 end @@ -198,34 +198,34 @@ LilycoveCity_LilycoveMuseum_2F_EventScript_158817:: @ 8158817 LilycoveCity_LilycoveMuseum_2F_EventScript_158820:: @ 8158820 msgbox LilycoveCity_LilycoveMuseum_2F_Text_18831A, 3 fadescreen 1 - showcontestwinner 9 + drawcontestwinner 9 releaseall end LilycoveCity_LilycoveMuseum_2F_EventScript_15882E:: @ 815882E msgbox LilycoveCity_LilycoveMuseum_2F_Text_18831A, 3 fadescreen 1 - showcontestwinner 10 + drawcontestwinner 10 releaseall end LilycoveCity_LilycoveMuseum_2F_EventScript_15883C:: @ 815883C msgbox LilycoveCity_LilycoveMuseum_2F_Text_18831A, 3 fadescreen 1 - showcontestwinner 11 + drawcontestwinner 11 releaseall end LilycoveCity_LilycoveMuseum_2F_EventScript_15884A:: @ 815884A msgbox LilycoveCity_LilycoveMuseum_2F_Text_18831A, 3 fadescreen 1 - showcontestwinner 12 + drawcontestwinner 12 releaseall end LilycoveCity_LilycoveMuseum_2F_EventScript_158858:: @ 8158858 msgbox LilycoveCity_LilycoveMuseum_2F_Text_18831A, 3 fadescreen 1 - showcontestwinner 13 + drawcontestwinner 13 releaseall end diff --git a/data/scripts/maps/LilycoveCity_MoveDeletersHouse.inc b/data/scripts/maps/LilycoveCity_MoveDeletersHouse.inc index c9b026060..02558e9d3 100644 --- a/data/scripts/maps/LilycoveCity_MoveDeletersHouse.inc +++ b/data/scripts/maps/LilycoveCity_MoveDeletersHouse.inc @@ -3,8 +3,8 @@ LilycoveCity_MoveDeletersHouse_MapScripts:: @ 8159AAD LilycoveCity_MoveDeletersHouse_EventScript_159AAE:: @ 8159AAE lockall - move 1, LilycoveCity_MoveDeletersHouse_Movement_1A0839 - waitmove 0 + applymovement 1, LilycoveCity_MoveDeletersHouse_Movement_1A0839 + waitmovement 0 msgbox LilycoveCity_MoveDeletersHouse_Text_18B622, 5 switch RESULT case 1, LilycoveCity_MoveDeletersHouse_EventScript_159ADE @@ -14,23 +14,23 @@ LilycoveCity_MoveDeletersHouse_EventScript_159AAE:: @ 8159AAE LilycoveCity_MoveDeletersHouse_EventScript_159ADE:: @ 8159ADE msgbox LilycoveCity_MoveDeletersHouse_Text_18B68C, 4 - special 159 + special sub_80F9A0C waitstate compare 0x8004, 255 - jumpeq LilycoveCity_MoveDeletersHouse_EventScript_159B7B - special 328 + goto_if_eq LilycoveCity_MoveDeletersHouse_EventScript_159B7B + special sub_80FA148 compare RESULT, 1 - jumpeq LilycoveCity_MoveDeletersHouse_EventScript_159B71 - special 223 + goto_if_eq LilycoveCity_MoveDeletersHouse_EventScript_159B71 + special ScrSpecial_CountPokemonMoves compare RESULT, 1 - jumpeq LilycoveCity_MoveDeletersHouse_EventScript_159B64 + goto_if_eq LilycoveCity_MoveDeletersHouse_EventScript_159B64 msgbox LilycoveCity_MoveDeletersHouse_Text_18B6B0, 4 fadescreen 1 - special 220 + special sub_80F9EEC fadescreen 0 compare 0x8005, 4 - jumpeq LilycoveCity_MoveDeletersHouse_EventScript_159ADE - special 222 + goto_if_eq LilycoveCity_MoveDeletersHouse_EventScript_159ADE + special ScrSpecial_GetPokemonNicknameAndMoveName msgbox LilycoveCity_MoveDeletersHouse_Text_18B6F2, 5 switch RESULT case 1, LilycoveCity_MoveDeletersHouse_EventScript_159B53 @@ -39,15 +39,15 @@ LilycoveCity_MoveDeletersHouse_EventScript_159ADE:: @ 8159ADE end LilycoveCity_MoveDeletersHouse_EventScript_159B53:: @ 8159B53 - special 221 - fanfare 378 + special sub_80FA0DC + playfanfare 378 waitfanfare msgbox LilycoveCity_MoveDeletersHouse_Text_18B71E, 4 releaseall end LilycoveCity_MoveDeletersHouse_EventScript_159B64:: @ 8159B64 - special 222 + special ScrSpecial_GetPokemonNicknameAndMoveName msgbox LilycoveCity_MoveDeletersHouse_Text_18B6D0, 4 releaseall end diff --git a/data/scripts/maps/LilycoveCity_PokemonCenter_1F.inc b/data/scripts/maps/LilycoveCity_PokemonCenter_1F.inc index 5809e28c8..20b5c5f13 100644 --- a/data/scripts/maps/LilycoveCity_PokemonCenter_1F.inc +++ b/data/scripts/maps/LilycoveCity_PokemonCenter_1F.inc @@ -9,7 +9,7 @@ LilycoveCity_PokemonCenter_1F_MapScript1_15932D:: @ 815932D LilycoveCity_PokemonCenter_1F_EventScript_159331:: @ 8159331 setvar 0x800b, 1 call LilycoveCity_PokemonCenter_1F_EventScript_19FD5B - waittext + waitmessage waitbutton release end @@ -22,7 +22,7 @@ LilycoveCity_PokemonCenter_1F_EventScript_159348:: @ 8159348 lock faceplayer checkflag 2061 - jumpeq LilycoveCity_PokemonCenter_1F_EventScript_15935D + goto_if_eq LilycoveCity_PokemonCenter_1F_EventScript_15935D msgbox LilycoveCity_PokemonCenter_1F_Text_18A048, 4 release end diff --git a/data/scripts/maps/LilycoveCity_PokemonTrainerFanClub.inc b/data/scripts/maps/LilycoveCity_PokemonTrainerFanClub.inc index 9ac66f98e..13217b340 100644 --- a/data/scripts/maps/LilycoveCity_PokemonTrainerFanClub.inc +++ b/data/scripts/maps/LilycoveCity_PokemonTrainerFanClub.inc @@ -9,21 +9,21 @@ LilycoveCity_PokemonTrainerFanClub_MapScript2_159395:: @ 8159395 LilycoveCity_PokemonTrainerFanClub_EventScript_15939F:: @ 815939F lockall - move 1, LilycoveCity_PokemonTrainerFanClub_Movement_1A0845 - waitmove 0 + applymovement 1, LilycoveCity_PokemonTrainerFanClub_Movement_1A0845 + waitmovement 0 msgbox LilycoveCity_PokemonTrainerFanClub_Text_18A1D6, 4 - move 4, LilycoveCity_PokemonTrainerFanClub_Movement_159402 - move 2, LilycoveCity_PokemonTrainerFanClub_Movement_1593FA - waitmove 0 - move 255, LilycoveCity_PokemonTrainerFanClub_Movement_1A0843 - waitmove 0 + applymovement 4, LilycoveCity_PokemonTrainerFanClub_Movement_159402 + applymovement 2, LilycoveCity_PokemonTrainerFanClub_Movement_1593FA + waitmovement 0 + applymovement 255, LilycoveCity_PokemonTrainerFanClub_Movement_1A0843 + waitmovement 0 msgbox LilycoveCity_PokemonTrainerFanClub_Text_18A1E8, 4 - move 4, LilycoveCity_PokemonTrainerFanClub_Movement_159409 - waitmove 0 - move 255, LilycoveCity_PokemonTrainerFanClub_Movement_1A083F - waitmove 0 - move 4, LilycoveCity_PokemonTrainerFanClub_Movement_15940C - waitmove 0 + applymovement 4, LilycoveCity_PokemonTrainerFanClub_Movement_159409 + waitmovement 0 + applymovement 255, LilycoveCity_PokemonTrainerFanClub_Movement_1A083F + waitmovement 0 + applymovement 4, LilycoveCity_PokemonTrainerFanClub_Movement_15940C + waitmovement 0 setvar 0x4095, 2 releaseall end @@ -62,77 +62,77 @@ LilycoveCity_PokemonTrainerFanClub_Movement_15940C:: @ 815940C LilycoveCity_PokemonTrainerFanClub_MapScript1_159412:: @ 8159412 compare 0x4095, 1 - jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_159515 + goto_if_eq LilycoveCity_PokemonTrainerFanClub_EventScript_159515 compare 0x4095, 2 - jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_159429 + goto_if_eq LilycoveCity_PokemonTrainerFanClub_EventScript_159429 end LilycoveCity_PokemonTrainerFanClub_EventScript_159429:: @ 8159429 - special 167 + special sub_810FCE8 setvar 0x8004, 8 - specialval RESULT, 163 + specialvar RESULT, sub_810FD60 compare RESULT, 0 - callif 1, LilycoveCity_PokemonTrainerFanClub_EventScript_1594D5 + call_if 1, LilycoveCity_PokemonTrainerFanClub_EventScript_1594D5 setvar 0x8004, 9 - specialval RESULT, 163 + specialvar RESULT, sub_810FD60 compare RESULT, 0 - callif 1, LilycoveCity_PokemonTrainerFanClub_EventScript_1594DD + call_if 1, LilycoveCity_PokemonTrainerFanClub_EventScript_1594DD setvar 0x8004, 10 - specialval RESULT, 163 + specialvar RESULT, sub_810FD60 compare RESULT, 0 - callif 1, LilycoveCity_PokemonTrainerFanClub_EventScript_1594E5 + call_if 1, LilycoveCity_PokemonTrainerFanClub_EventScript_1594E5 setvar 0x8004, 11 - specialval RESULT, 163 + specialvar RESULT, sub_810FD60 compare RESULT, 0 - callif 1, LilycoveCity_PokemonTrainerFanClub_EventScript_1594ED + call_if 1, LilycoveCity_PokemonTrainerFanClub_EventScript_1594ED setvar 0x8004, 12 - specialval RESULT, 163 + specialvar RESULT, sub_810FD60 compare RESULT, 0 - callif 1, LilycoveCity_PokemonTrainerFanClub_EventScript_1594F5 + call_if 1, LilycoveCity_PokemonTrainerFanClub_EventScript_1594F5 setvar 0x8004, 13 - specialval RESULT, 163 + specialvar RESULT, sub_810FD60 compare RESULT, 0 - callif 1, LilycoveCity_PokemonTrainerFanClub_EventScript_1594FD + call_if 1, LilycoveCity_PokemonTrainerFanClub_EventScript_1594FD setvar 0x8004, 14 - specialval RESULT, 163 + specialvar RESULT, sub_810FD60 compare RESULT, 0 - callif 1, LilycoveCity_PokemonTrainerFanClub_EventScript_159505 + call_if 1, LilycoveCity_PokemonTrainerFanClub_EventScript_159505 setvar 0x8004, 15 - specialval RESULT, 163 + specialvar RESULT, sub_810FD60 compare RESULT, 0 - callif 1, LilycoveCity_PokemonTrainerFanClub_EventScript_15950D + call_if 1, LilycoveCity_PokemonTrainerFanClub_EventScript_15950D end LilycoveCity_PokemonTrainerFanClub_EventScript_1594D5:: @ 81594D5 - movespriteperm 1, 7, 5 + setobjectxyperm 1, 7, 5 return LilycoveCity_PokemonTrainerFanClub_EventScript_1594DD:: @ 81594DD - movespriteperm 3, 3, 4 + setobjectxyperm 3, 3, 4 return LilycoveCity_PokemonTrainerFanClub_EventScript_1594E5:: @ 81594E5 - movespriteperm 4, 7, 2 + setobjectxyperm 4, 7, 2 return LilycoveCity_PokemonTrainerFanClub_EventScript_1594ED:: @ 81594ED - movespriteperm 5, 5, 5 + setobjectxyperm 5, 5, 5 return LilycoveCity_PokemonTrainerFanClub_EventScript_1594F5:: @ 81594F5 - movespriteperm 6, 5, 2 + setobjectxyperm 6, 5, 2 return LilycoveCity_PokemonTrainerFanClub_EventScript_1594FD:: @ 81594FD - movespriteperm 2, 8, 4 + setobjectxyperm 2, 8, 4 return LilycoveCity_PokemonTrainerFanClub_EventScript_159505:: @ 8159505 - movespriteperm 7, 3, 3 + setobjectxyperm 7, 3, 3 return LilycoveCity_PokemonTrainerFanClub_EventScript_15950D:: @ 815950D - movespriteperm 8, 8, 3 + setobjectxyperm 8, 8, 3 return LilycoveCity_PokemonTrainerFanClub_EventScript_159515:: @ 8159515 @@ -147,23 +147,23 @@ LilycoveCity_PokemonTrainerFanClub_EventScript_15952F:: @ 815952F lock faceplayer setvar 0x8004, 13 - special 165 + special sub_810FDAC compare 0x4095, 0 - jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_15959C - specialval RESULT, 163 + goto_if_eq LilycoveCity_PokemonTrainerFanClub_EventScript_15959C + specialvar RESULT, sub_810FD60 compare RESULT, 1 - jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_15956E - specialval RESULT, 164 + goto_if_eq LilycoveCity_PokemonTrainerFanClub_EventScript_15956E + specialvar RESULT, sub_810FCB0 compare RESULT, 7 - jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_159592 + goto_if_eq LilycoveCity_PokemonTrainerFanClub_EventScript_159592 msgbox LilycoveCity_PokemonTrainerFanClub_Text_18A400, 4 release end LilycoveCity_PokemonTrainerFanClub_EventScript_15956E:: @ 815956E - specialval RESULT, 164 + specialvar RESULT, sub_810FCB0 compare RESULT, 1 - jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_159588 + goto_if_eq LilycoveCity_PokemonTrainerFanClub_EventScript_159588 msgbox LilycoveCity_PokemonTrainerFanClub_Text_18A36A, 4 release end @@ -187,23 +187,23 @@ LilycoveCity_PokemonTrainerFanClub_EventScript_1595A6:: @ 81595A6 lock faceplayer setvar 0x8004, 8 - special 165 + special sub_810FDAC compare 0x4095, 0 - jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_159613 - specialval RESULT, 163 + goto_if_eq LilycoveCity_PokemonTrainerFanClub_EventScript_159613 + specialvar RESULT, sub_810FD60 compare RESULT, 1 - jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_1595E5 - specialval RESULT, 164 + goto_if_eq LilycoveCity_PokemonTrainerFanClub_EventScript_1595E5 + specialvar RESULT, sub_810FCB0 compare RESULT, 7 - jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_159609 + goto_if_eq LilycoveCity_PokemonTrainerFanClub_EventScript_159609 msgbox LilycoveCity_PokemonTrainerFanClub_Text_18A629, 4 release end LilycoveCity_PokemonTrainerFanClub_EventScript_1595E5:: @ 81595E5 - specialval RESULT, 164 + specialvar RESULT, sub_810FCB0 compare RESULT, 1 - jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_1595FF + goto_if_eq LilycoveCity_PokemonTrainerFanClub_EventScript_1595FF msgbox LilycoveCity_PokemonTrainerFanClub_Text_18A584, 4 release end @@ -227,23 +227,23 @@ LilycoveCity_PokemonTrainerFanClub_EventScript_15961D:: @ 815961D lock faceplayer setvar 0x8004, 9 - special 165 + special sub_810FDAC compare 0x4095, 0 - jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_15968A - specialval RESULT, 163 + goto_if_eq LilycoveCity_PokemonTrainerFanClub_EventScript_15968A + specialvar RESULT, sub_810FD60 compare RESULT, 1 - jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_15965C - specialval RESULT, 164 + goto_if_eq LilycoveCity_PokemonTrainerFanClub_EventScript_15965C + specialvar RESULT, sub_810FCB0 compare RESULT, 7 - jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_159680 + goto_if_eq LilycoveCity_PokemonTrainerFanClub_EventScript_159680 msgbox LilycoveCity_PokemonTrainerFanClub_Text_18A814, 4 release end LilycoveCity_PokemonTrainerFanClub_EventScript_15965C:: @ 815965C - specialval RESULT, 164 + specialvar RESULT, sub_810FCB0 compare RESULT, 1 - jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_159676 + goto_if_eq LilycoveCity_PokemonTrainerFanClub_EventScript_159676 msgbox LilycoveCity_PokemonTrainerFanClub_Text_18A71E, 4 release end @@ -267,23 +267,23 @@ LilycoveCity_PokemonTrainerFanClub_EventScript_159694:: @ 8159694 lock faceplayer setvar 0x8004, 10 - special 165 + special sub_810FDAC compare 0x4095, 0 - jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_159701 - specialval RESULT, 163 + goto_if_eq LilycoveCity_PokemonTrainerFanClub_EventScript_159701 + specialvar RESULT, sub_810FD60 compare RESULT, 1 - jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_1596D3 - specialval RESULT, 164 + goto_if_eq LilycoveCity_PokemonTrainerFanClub_EventScript_1596D3 + specialvar RESULT, sub_810FCB0 compare RESULT, 7 - jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_1596F7 + goto_if_eq LilycoveCity_PokemonTrainerFanClub_EventScript_1596F7 msgbox LilycoveCity_PokemonTrainerFanClub_Text_18AB0A, 4 release end LilycoveCity_PokemonTrainerFanClub_EventScript_1596D3:: @ 81596D3 - specialval RESULT, 164 + specialvar RESULT, sub_810FCB0 compare RESULT, 1 - jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_1596ED + goto_if_eq LilycoveCity_PokemonTrainerFanClub_EventScript_1596ED msgbox LilycoveCity_PokemonTrainerFanClub_Text_18AA39, 4 release end @@ -307,21 +307,21 @@ LilycoveCity_PokemonTrainerFanClub_EventScript_15970B:: @ 815970B lock faceplayer setvar 0x8004, 11 - special 165 - specialval RESULT, 163 + special sub_810FDAC + specialvar RESULT, sub_810FD60 compare RESULT, 1 - jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_15973F - specialval RESULT, 164 + goto_if_eq LilycoveCity_PokemonTrainerFanClub_EventScript_15973F + specialvar RESULT, sub_810FCB0 compare RESULT, 7 - jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_159763 + goto_if_eq LilycoveCity_PokemonTrainerFanClub_EventScript_159763 msgbox LilycoveCity_PokemonTrainerFanClub_Text_18ACC7, 4 release end LilycoveCity_PokemonTrainerFanClub_EventScript_15973F:: @ 815973F - specialval RESULT, 164 + specialvar RESULT, sub_810FCB0 compare RESULT, 1 - jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_159759 + goto_if_eq LilycoveCity_PokemonTrainerFanClub_EventScript_159759 msgbox LilycoveCity_PokemonTrainerFanClub_Text_18AC15, 4 release end @@ -340,21 +340,21 @@ LilycoveCity_PokemonTrainerFanClub_EventScript_15976D:: @ 815976D lock faceplayer setvar 0x8004, 12 - special 165 - specialval RESULT, 163 + special sub_810FDAC + specialvar RESULT, sub_810FD60 compare RESULT, 1 - jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_1597A1 - specialval RESULT, 164 + goto_if_eq LilycoveCity_PokemonTrainerFanClub_EventScript_1597A1 + specialvar RESULT, sub_810FCB0 compare RESULT, 7 - jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_1597C5 + goto_if_eq LilycoveCity_PokemonTrainerFanClub_EventScript_1597C5 msgbox LilycoveCity_PokemonTrainerFanClub_Text_18AE63, 4 release end LilycoveCity_PokemonTrainerFanClub_EventScript_1597A1:: @ 81597A1 - specialval RESULT, 164 + specialvar RESULT, sub_810FCB0 compare RESULT, 1 - jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_1597BB + goto_if_eq LilycoveCity_PokemonTrainerFanClub_EventScript_1597BB msgbox LilycoveCity_PokemonTrainerFanClub_Text_18AD6D, 4 release end @@ -373,21 +373,21 @@ LilycoveCity_PokemonTrainerFanClub_EventScript_1597CF:: @ 81597CF lock faceplayer setvar 0x8004, 14 - special 165 - specialval RESULT, 163 + special sub_810FDAC + specialvar RESULT, sub_810FD60 compare RESULT, 1 - jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_159803 - specialval RESULT, 164 + goto_if_eq LilycoveCity_PokemonTrainerFanClub_EventScript_159803 + specialvar RESULT, sub_810FCB0 compare RESULT, 7 - jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_159827 + goto_if_eq LilycoveCity_PokemonTrainerFanClub_EventScript_159827 msgbox LilycoveCity_PokemonTrainerFanClub_Text_18B030, 4 release end LilycoveCity_PokemonTrainerFanClub_EventScript_159803:: @ 8159803 - specialval RESULT, 164 + specialvar RESULT, sub_810FCB0 compare RESULT, 1 - jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_15981D + goto_if_eq LilycoveCity_PokemonTrainerFanClub_EventScript_15981D msgbox LilycoveCity_PokemonTrainerFanClub_Text_18AF62, 4 release end @@ -406,21 +406,21 @@ LilycoveCity_PokemonTrainerFanClub_EventScript_159831:: @ 8159831 lock faceplayer setvar 0x8004, 15 - special 165 - specialval RESULT, 163 + special sub_810FDAC + specialvar RESULT, sub_810FD60 compare RESULT, 1 - jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_159865 - specialval RESULT, 164 + goto_if_eq LilycoveCity_PokemonTrainerFanClub_EventScript_159865 + specialvar RESULT, sub_810FCB0 compare RESULT, 7 - jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_159889 + goto_if_eq LilycoveCity_PokemonTrainerFanClub_EventScript_159889 msgbox LilycoveCity_PokemonTrainerFanClub_Text_18B1FD, 4 release end LilycoveCity_PokemonTrainerFanClub_EventScript_159865:: @ 8159865 - specialval RESULT, 164 + specialvar RESULT, sub_810FCB0 compare RESULT, 1 - jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_15987F + goto_if_eq LilycoveCity_PokemonTrainerFanClub_EventScript_15987F msgbox LilycoveCity_PokemonTrainerFanClub_Text_18B16E, 4 release end diff --git a/data/scripts/maps/LittlerootTown.inc b/data/scripts/maps/LittlerootTown.inc index 81692acc5..220aeead7 100644 --- a/data/scripts/maps/LittlerootTown.inc +++ b/data/scripts/maps/LittlerootTown.inc @@ -6,19 +6,19 @@ LittlerootTown_MapScripts:: @ 814D509 LittlerootTown_MapScript1_14D514:: @ 814D514 setflag 2063 compare 0x4092, 2 - callif 1, LittlerootTown_EventScript_14D57B + call_if 1, LittlerootTown_EventScript_14D57B checkflag 82 - callif 0, LittlerootTown_EventScript_14D583 + call_if 0, LittlerootTown_EventScript_14D583 compare 0x4050, 3 - callif 1, LittlerootTown_EventScript_14D5A6 + call_if 1, LittlerootTown_EventScript_14D5A6 compare 0x4082, 4 - callif 1, LittlerootTown_EventScript_14D570 + call_if 1, LittlerootTown_EventScript_14D570 compare 0x408c, 4 - callif 1, LittlerootTown_EventScript_14D570 + call_if 1, LittlerootTown_EventScript_14D570 compare 0x40c7, 1 - callif 1, LittlerootTown_EventScript_14D567 + call_if 1, LittlerootTown_EventScript_14D567 compare 0x408d, 3 - callif 1, LittlerootTown_EventScript_14D563 + call_if 1, LittlerootTown_EventScript_14D563 end LittlerootTown_EventScript_14D563:: @ 814D563 @@ -36,37 +36,37 @@ LittlerootTown_EventScript_14D570:: @ 814D570 return LittlerootTown_EventScript_14D57B:: @ 814D57B - movespriteperm 4, 14, 8 + setobjectxyperm 4, 14, 8 return LittlerootTown_EventScript_14D583:: @ 814D583 compare 0x4050, 0 - jumpeq LittlerootTown_EventScript_14D59A - movespriteperm 1, 10, 1 - spritebehave 1, 7 + goto_if_eq LittlerootTown_EventScript_14D59A + setobjectxyperm 1, 10, 1 + setobjectmovementtype 1, 7 return LittlerootTown_EventScript_14D59A:: @ 814D59A - movespriteperm 1, 7, 2 - spritebehave 1, 8 + setobjectxyperm 1, 7, 2 + setobjectmovementtype 1, 8 return LittlerootTown_EventScript_14D5A6:: @ 814D5A6 clearflag 752 - spritebehave 4, 8 - checkgender + setobjectmovementtype 4, 8 + checkplayergender compare RESULT, 0 - callif 1, LittlerootTown_EventScript_14D5C5 + call_if 1, LittlerootTown_EventScript_14D5C5 compare RESULT, 1 - callif 1, LittlerootTown_EventScript_14D5CD + call_if 1, LittlerootTown_EventScript_14D5CD return LittlerootTown_EventScript_14D5C5:: @ 814D5C5 - movespriteperm 4, 5, 9 + setobjectxyperm 4, 5, 9 return LittlerootTown_EventScript_14D5CD:: @ 814D5CD - movespriteperm 4, 14, 9 + setobjectxyperm 4, 14, 9 return LittlerootTown_MapScript2_14D5D5:: @ 814D5D5 @@ -81,7 +81,7 @@ LittlerootTown_EventScript_14D5EF:: @ 814D5EF setvar 0x8005, 8 call LittlerootTown_EventScript_14D62B setflag 761 - warpmuted LittlerootTown_BrendansHouse_1F, 255, 8, 8 + warpsilent LittlerootTown_BrendansHouse_1F, 255, 8, 8 waitstate releaseall end @@ -92,41 +92,41 @@ LittlerootTown_EventScript_14D60D:: @ 814D60D setvar 0x8005, 8 call LittlerootTown_EventScript_14D62B setflag 762 - warpmuted LittlerootTown_MaysHouse_1F, 255, 2, 8 + warpsilent LittlerootTown_MaysHouse_1F, 255, 2, 8 waitstate releaseall end LittlerootTown_EventScript_14D62B:: @ 814D62B - pause 15 - playsfx 10 - move 255, LittlerootTown_Movement_14D6C0 - waitmove 0 - setdooropened 0x8004, 0x8005 - doorchange - reappear 4 - move 4, LittlerootTown_Movement_14D6AC - waitmove 0 - setdoorclosed 0x8004, 0x8005 - doorchange - pause 10 - move 4, LittlerootTown_Movement_14D6AE - waitmove 0 + delay 15 + playse 10 + applymovement 255, LittlerootTown_Movement_14D6C0 + waitmovement 0 + opendoor 0x8004, 0x8005 + waitdooranim + addobject 4 + applymovement 4, LittlerootTown_Movement_14D6AC + waitmovement 0 + closedoor 0x8004, 0x8005 + waitdooranim + delay 10 + applymovement 4, LittlerootTown_Movement_14D6AE + waitmovement 0 msgbox LittlerootTown_Text_16A7C9, 4 - closebutton - move 4, LittlerootTown_Movement_14D6B1 - move 255, LittlerootTown_Movement_14D6B8 - waitmove 0 - setdooropened 0x8004, 0x8005 - doorchange - move 4, LittlerootTown_Movement_14D6B5 - move 255, LittlerootTown_Movement_14D6BD - waitmove 0 + closemessage + applymovement 4, LittlerootTown_Movement_14D6B1 + applymovement 255, LittlerootTown_Movement_14D6B8 + waitmovement 0 + opendoor 0x8004, 0x8005 + waitdooranim + applymovement 4, LittlerootTown_Movement_14D6B5 + applymovement 255, LittlerootTown_Movement_14D6BD + waitmovement 0 setflag 752 setvar 0x4092, 3 - spriteinvisible 255, 0, 0 - setdoorclosed 0x8004, 0x8005 - doorchange + hideobject 255, 0, 0 + closedoor 0x8004, 0x8005 + waitdooranim clearflag 868 clearflag 0x4000 return @@ -188,26 +188,26 @@ LittlerootTown_EventScript_14D6DF:: @ 814D6DF lock faceplayer checkflag 116 - jumpeq LittlerootTown_EventScript_14D72F + goto_if_eq LittlerootTown_EventScript_14D72F checkflag 82 - jumpeq LittlerootTown_EventScript_14D722 + goto_if_eq LittlerootTown_EventScript_14D722 compare 0x4050, 0 - jumpif 5, LittlerootTown_EventScript_14D708 + goto_if 5, LittlerootTown_EventScript_14D708 msgbox LittlerootTown_Text_16ACEB, 4 release end LittlerootTown_EventScript_14D708:: @ 814D708 msgbox LittlerootTown_Text_16AD82, 4 - closebutton - move 1, LittlerootTown_Movement_1A083D - waitmove 0 + closemessage + applymovement 1, LittlerootTown_Movement_1A083D + waitmovement 0 setvar 0x4050, 2 release end LittlerootTown_EventScript_14D722:: @ 814D722 - special 148 + special GetPlayerBigGuyGirlString msgbox LittlerootTown_Text_16ADF2, 4 release end @@ -219,22 +219,22 @@ LittlerootTown_EventScript_14D72F:: @ 814D72F LittlerootTown_EventScript_14D739:: @ 814D739 lockall - move 1, LittlerootTown_Movement_14D779 - waitmove 0 + applymovement 1, LittlerootTown_Movement_14D779 + waitmovement 0 call LittlerootTown_EventScript_14D755 - move 1, LittlerootTown_Movement_14D789 - waitmove 0 + applymovement 1, LittlerootTown_Movement_14D789 + waitmovement 0 releaseall end LittlerootTown_EventScript_14D755:: @ 814D755 msgbox LittlerootTown_Text_16ACEB, 4 - closebutton - move 1, LittlerootTown_Movement_14D787 - move 255, LittlerootTown_Movement_14D793 - waitmove 0 + closemessage + applymovement 1, LittlerootTown_Movement_14D787 + applymovement 255, LittlerootTown_Movement_14D793 + waitmovement 0 msgbox LittlerootTown_Text_16AD3C, 4 - closebutton + closemessage return LittlerootTown_Movement_14D779:: @ 814D779 @@ -277,11 +277,11 @@ LittlerootTown_Movement_14D793:: @ 814D793 LittlerootTown_EventScript_14D797:: @ 814D797 lockall - move 1, LittlerootTown_Movement_14D7B3 - waitmove 0 + applymovement 1, LittlerootTown_Movement_14D7B3 + waitmovement 0 call LittlerootTown_EventScript_14D755 - move 1, LittlerootTown_Movement_14D7C0 - waitmove 0 + applymovement 1, LittlerootTown_Movement_14D7C0 + waitmovement 0 releaseall end @@ -311,14 +311,14 @@ LittlerootTown_Movement_14D7C0:: @ 814D7C0 LittlerootTown_EventScript_14D7C7:: @ 814D7C7 lockall - move 1, LittlerootTown_Movement_1A0843 - waitmove 0 - move 255, LittlerootTown_Movement_1A083F - waitmove 0 + applymovement 1, LittlerootTown_Movement_1A0843 + waitmovement 0 + applymovement 255, LittlerootTown_Movement_1A083F + waitmovement 0 msgbox LittlerootTown_Text_16AD82, 4 - closebutton - move 1, LittlerootTown_Movement_1A083D - waitmove 0 + closemessage + applymovement 1, LittlerootTown_Movement_1A083D + waitmovement 0 setvar 0x4050, 2 releaseall end @@ -333,11 +333,11 @@ LittlerootTown_EventScript_14D7FF:: @ 814D7FF LittlerootTown_EventScript_14D808:: @ 814D808 lockall - checkgender + checkplayergender compare RESULT, 0 - callif 1, LittlerootTown_EventScript_14D822 + call_if 1, LittlerootTown_EventScript_14D822 compare RESULT, 1 - callif 1, LittlerootTown_EventScript_14D82B + call_if 1, LittlerootTown_EventScript_14D82B releaseall end @@ -351,11 +351,11 @@ LittlerootTown_EventScript_14D82B:: @ 814D82B LittlerootTown_EventScript_14D834:: @ 814D834 lockall - checkgender + checkplayergender compare RESULT, 0 - callif 1, LittlerootTown_EventScript_14D84E + call_if 1, LittlerootTown_EventScript_14D84E compare RESULT, 1 - callif 1, LittlerootTown_EventScript_14D857 + call_if 1, LittlerootTown_EventScript_14D857 releaseall end @@ -370,66 +370,66 @@ LittlerootTown_EventScript_14D857:: @ 814D857 LittlerootTown_EventScript_14D860:: @ 814D860 lockall setvar 0x8008, 0 - movesprite 4, 10, 9 - jump LittlerootTown_EventScript_14D8B6 + setobjectxy 4, 10, 9 + goto LittlerootTown_EventScript_14D8B6 end LittlerootTown_EventScript_14D873:: @ 814D873 lockall setvar 0x8008, 1 - movesprite 4, 11, 9 - jump LittlerootTown_EventScript_14D8B6 + setobjectxy 4, 11, 9 + goto LittlerootTown_EventScript_14D8B6 end LittlerootTown_EventScript_14D886:: @ 814D886 lockall setvar 0x8008, 2 - jump LittlerootTown_EventScript_14D8B6 + goto LittlerootTown_EventScript_14D8B6 end LittlerootTown_EventScript_14D892:: @ 814D892 lockall setvar 0x8008, 3 - jump LittlerootTown_EventScript_14D8B6 + goto LittlerootTown_EventScript_14D8B6 end LittlerootTown_EventScript_14D89E:: @ 814D89E lockall setvar 0x8008, 4 - jump LittlerootTown_EventScript_14D8B6 + goto LittlerootTown_EventScript_14D8B6 end LittlerootTown_EventScript_14D8AA:: @ 814D8AA lockall setvar 0x8008, 5 - jump LittlerootTown_EventScript_14D8B6 + goto LittlerootTown_EventScript_14D8B6 end LittlerootTown_EventScript_14D8B6:: @ 814D8B6 - checkgender + checkplayergender compare RESULT, 0 - callif 1, LittlerootTown_EventScript_14D93C + call_if 1, LittlerootTown_EventScript_14D93C compare RESULT, 1 - callif 1, LittlerootTown_EventScript_14D947 - checkgender + call_if 1, LittlerootTown_EventScript_14D947 + checkplayergender compare RESULT, 0 - callif 1, LittlerootTown_EventScript_14D926 + call_if 1, LittlerootTown_EventScript_14D926 compare RESULT, 1 - callif 1, LittlerootTown_EventScript_14D931 + call_if 1, LittlerootTown_EventScript_14D931 msgbox LittlerootTown_Text_16A8EE, 4 - closebutton - checkgender + closemessage + checkplayergender compare RESULT, 0 - callif 1, LittlerootTown_EventScript_14D952 + call_if 1, LittlerootTown_EventScript_14D952 compare RESULT, 1 - callif 1, LittlerootTown_EventScript_14D995 + call_if 1, LittlerootTown_EventScript_14D995 call LittlerootTown_EventScript_14DD38 - checkgender + checkplayergender compare RESULT, 0 - callif 1, LittlerootTown_EventScript_14DAAA + call_if 1, LittlerootTown_EventScript_14DAAA compare RESULT, 1 - callif 1, LittlerootTown_EventScript_14DAED - jump LittlerootTown_EventScript_14DD2B + call_if 1, LittlerootTown_EventScript_14DAED + goto LittlerootTown_EventScript_14DD2B end LittlerootTown_EventScript_14D926:: @ 814D926 @@ -443,249 +443,249 @@ LittlerootTown_EventScript_14D931:: @ 814D931 return LittlerootTown_EventScript_14D93C:: @ 814D93C - move 4, LittlerootTown_Movement_1A0843 - waitmove 0 + applymovement 4, LittlerootTown_Movement_1A0843 + waitmovement 0 return LittlerootTown_EventScript_14D947:: @ 814D947 - move 4, LittlerootTown_Movement_1A083F - waitmove 0 + applymovement 4, LittlerootTown_Movement_1A083F + waitmovement 0 return LittlerootTown_EventScript_14D952:: @ 814D952 compare 0x8008, 0 - callif 1, LittlerootTown_EventScript_14D9D8 + call_if 1, LittlerootTown_EventScript_14D9D8 compare 0x8008, 1 - callif 1, LittlerootTown_EventScript_14D9ED + call_if 1, LittlerootTown_EventScript_14D9ED compare 0x8008, 2 - callif 1, LittlerootTown_EventScript_14DA02 + call_if 1, LittlerootTown_EventScript_14DA02 compare 0x8008, 3 - callif 1, LittlerootTown_EventScript_14DA17 + call_if 1, LittlerootTown_EventScript_14DA17 compare 0x8008, 4 - callif 1, LittlerootTown_EventScript_14DA2C + call_if 1, LittlerootTown_EventScript_14DA2C compare 0x8008, 5 - callif 1, LittlerootTown_EventScript_14DA41 + call_if 1, LittlerootTown_EventScript_14DA41 return LittlerootTown_EventScript_14D995:: @ 814D995 compare 0x8008, 0 - callif 1, LittlerootTown_EventScript_14D9D8 + call_if 1, LittlerootTown_EventScript_14D9D8 compare 0x8008, 1 - callif 1, LittlerootTown_EventScript_14D9ED + call_if 1, LittlerootTown_EventScript_14D9ED compare 0x8008, 2 - callif 1, LittlerootTown_EventScript_14DA56 + call_if 1, LittlerootTown_EventScript_14DA56 compare 0x8008, 3 - callif 1, LittlerootTown_EventScript_14DA6B + call_if 1, LittlerootTown_EventScript_14DA6B compare 0x8008, 4 - callif 1, LittlerootTown_EventScript_14DA80 + call_if 1, LittlerootTown_EventScript_14DA80 compare 0x8008, 5 - callif 1, LittlerootTown_EventScript_14DA95 + call_if 1, LittlerootTown_EventScript_14DA95 return LittlerootTown_EventScript_14D9D8:: @ 814D9D8 - move 255, LittlerootTown_Movement_1A0845 - waitmove 0 - move 4, LittlerootTown_Movement_14DC76 - waitmove 0 + applymovement 255, LittlerootTown_Movement_1A0845 + waitmovement 0 + applymovement 4, LittlerootTown_Movement_14DC76 + waitmovement 0 return LittlerootTown_EventScript_14D9ED:: @ 814D9ED - move 255, LittlerootTown_Movement_1A0845 - waitmove 0 - move 4, LittlerootTown_Movement_14DC7D - waitmove 0 + applymovement 255, LittlerootTown_Movement_1A0845 + waitmovement 0 + applymovement 4, LittlerootTown_Movement_14DC7D + waitmovement 0 return LittlerootTown_EventScript_14DA02:: @ 814DA02 - move 255, LittlerootTown_Movement_1A083F - waitmove 0 - move 4, LittlerootTown_Movement_14DC84 - waitmove 0 + applymovement 255, LittlerootTown_Movement_1A083F + waitmovement 0 + applymovement 4, LittlerootTown_Movement_14DC84 + waitmovement 0 return LittlerootTown_EventScript_14DA17:: @ 814DA17 - move 255, LittlerootTown_Movement_1A083F - waitmove 0 - move 4, LittlerootTown_Movement_14DC89 - waitmove 0 + applymovement 255, LittlerootTown_Movement_1A083F + waitmovement 0 + applymovement 4, LittlerootTown_Movement_14DC89 + waitmovement 0 return LittlerootTown_EventScript_14DA2C:: @ 814DA2C - move 255, LittlerootTown_Movement_1A083F - waitmove 0 - move 4, LittlerootTown_Movement_14DC8F - waitmove 0 + applymovement 255, LittlerootTown_Movement_1A083F + waitmovement 0 + applymovement 4, LittlerootTown_Movement_14DC8F + waitmovement 0 return LittlerootTown_EventScript_14DA41:: @ 814DA41 - move 255, LittlerootTown_Movement_1A083F - waitmove 0 - move 4, LittlerootTown_Movement_14DC92 - waitmove 0 + applymovement 255, LittlerootTown_Movement_1A083F + waitmovement 0 + applymovement 4, LittlerootTown_Movement_14DC92 + waitmovement 0 return LittlerootTown_EventScript_14DA56:: @ 814DA56 - move 255, LittlerootTown_Movement_1A0843 - waitmove 0 - move 4, LittlerootTown_Movement_14DC96 - waitmove 0 + applymovement 255, LittlerootTown_Movement_1A0843 + waitmovement 0 + applymovement 4, LittlerootTown_Movement_14DC96 + waitmovement 0 return LittlerootTown_EventScript_14DA6B:: @ 814DA6B - move 255, LittlerootTown_Movement_1A0843 - waitmove 0 - move 4, LittlerootTown_Movement_14DC9A - waitmove 0 + applymovement 255, LittlerootTown_Movement_1A0843 + waitmovement 0 + applymovement 4, LittlerootTown_Movement_14DC9A + waitmovement 0 return LittlerootTown_EventScript_14DA80:: @ 814DA80 - move 255, LittlerootTown_Movement_1A0843 - waitmove 0 - move 4, LittlerootTown_Movement_14DC9D - waitmove 0 + applymovement 255, LittlerootTown_Movement_1A0843 + waitmovement 0 + applymovement 4, LittlerootTown_Movement_14DC9D + waitmovement 0 return LittlerootTown_EventScript_14DA95:: @ 814DA95 - move 255, LittlerootTown_Movement_1A0843 - waitmove 0 - move 4, LittlerootTown_Movement_14DCA3 - waitmove 0 + applymovement 255, LittlerootTown_Movement_1A0843 + waitmovement 0 + applymovement 4, LittlerootTown_Movement_14DCA3 + waitmovement 0 return LittlerootTown_EventScript_14DAAA:: @ 814DAAA compare 0x8008, 0 - callif 1, LittlerootTown_EventScript_14DB30 + call_if 1, LittlerootTown_EventScript_14DB30 compare 0x8008, 1 - callif 1, LittlerootTown_EventScript_14DB3B + call_if 1, LittlerootTown_EventScript_14DB3B compare 0x8008, 2 - callif 1, LittlerootTown_EventScript_14DB46 + call_if 1, LittlerootTown_EventScript_14DB46 compare 0x8008, 3 - callif 1, LittlerootTown_EventScript_14DB6C + call_if 1, LittlerootTown_EventScript_14DB6C compare 0x8008, 4 - callif 1, LittlerootTown_EventScript_14DB92 + call_if 1, LittlerootTown_EventScript_14DB92 compare 0x8008, 5 - callif 1, LittlerootTown_EventScript_14DBB8 + call_if 1, LittlerootTown_EventScript_14DBB8 return LittlerootTown_EventScript_14DAED:: @ 814DAED compare 0x8008, 0 - callif 1, LittlerootTown_EventScript_14DB30 + call_if 1, LittlerootTown_EventScript_14DB30 compare 0x8008, 1 - callif 1, LittlerootTown_EventScript_14DB3B + call_if 1, LittlerootTown_EventScript_14DB3B compare 0x8008, 2 - callif 1, LittlerootTown_EventScript_14DBDE + call_if 1, LittlerootTown_EventScript_14DBDE compare 0x8008, 3 - callif 1, LittlerootTown_EventScript_14DC04 + call_if 1, LittlerootTown_EventScript_14DC04 compare 0x8008, 4 - callif 1, LittlerootTown_EventScript_14DC2A + call_if 1, LittlerootTown_EventScript_14DC2A compare 0x8008, 5 - callif 1, LittlerootTown_EventScript_14DC50 + call_if 1, LittlerootTown_EventScript_14DC50 return LittlerootTown_EventScript_14DB30:: @ 814DB30 - move 4, LittlerootTown_Movement_14DCA8 - waitmove 0 + applymovement 4, LittlerootTown_Movement_14DCA8 + waitmovement 0 return LittlerootTown_EventScript_14DB3B:: @ 814DB3B - move 4, LittlerootTown_Movement_14DCAE - waitmove 0 + applymovement 4, LittlerootTown_Movement_14DCAE + waitmovement 0 return LittlerootTown_EventScript_14DB46:: @ 814DB46 - move 4, LittlerootTown_Movement_14DCB4 - waitmove 0 - setdooropened 0x8009, 0x800a - doorchange - move 4, LittlerootTown_Movement_14DCE0 - waitmove 0 - spriteinvisible 4, 0, 9 - setdoorclosed 0x8009, 0x800a - doorchange + applymovement 4, LittlerootTown_Movement_14DCB4 + waitmovement 0 + opendoor 0x8009, 0x800a + waitdooranim + applymovement 4, LittlerootTown_Movement_14DCE0 + waitmovement 0 + hideobject 4, 0, 9 + closedoor 0x8009, 0x800a + waitdooranim return LittlerootTown_EventScript_14DB6C:: @ 814DB6C - move 4, LittlerootTown_Movement_14DCBA - waitmove 0 - setdooropened 0x8009, 0x800a - doorchange - move 4, LittlerootTown_Movement_14DCE0 - waitmove 0 - spriteinvisible 4, 0, 9 - setdoorclosed 0x8009, 0x800a - doorchange + applymovement 4, LittlerootTown_Movement_14DCBA + waitmovement 0 + opendoor 0x8009, 0x800a + waitdooranim + applymovement 4, LittlerootTown_Movement_14DCE0 + waitmovement 0 + hideobject 4, 0, 9 + closedoor 0x8009, 0x800a + waitdooranim return LittlerootTown_EventScript_14DB92:: @ 814DB92 - move 4, LittlerootTown_Movement_14DCC1 - waitmove 0 - setdooropened 0x8009, 0x800a - doorchange - move 4, LittlerootTown_Movement_14DCE0 - waitmove 0 - spriteinvisible 4, 0, 9 - setdoorclosed 0x8009, 0x800a - doorchange + applymovement 4, LittlerootTown_Movement_14DCC1 + waitmovement 0 + opendoor 0x8009, 0x800a + waitdooranim + applymovement 4, LittlerootTown_Movement_14DCE0 + waitmovement 0 + hideobject 4, 0, 9 + closedoor 0x8009, 0x800a + waitdooranim return LittlerootTown_EventScript_14DBB8:: @ 814DBB8 - move 4, LittlerootTown_Movement_14DCC5 - waitmove 0 - setdooropened 0x8009, 0x800a - doorchange - move 4, LittlerootTown_Movement_14DCE0 - waitmove 0 - spriteinvisible 4, 0, 9 - setdoorclosed 0x8009, 0x800a - doorchange + applymovement 4, LittlerootTown_Movement_14DCC5 + waitmovement 0 + opendoor 0x8009, 0x800a + waitdooranim + applymovement 4, LittlerootTown_Movement_14DCE0 + waitmovement 0 + hideobject 4, 0, 9 + closedoor 0x8009, 0x800a + waitdooranim return LittlerootTown_EventScript_14DBDE:: @ 814DBDE - move 4, LittlerootTown_Movement_14DCCA - waitmove 0 - setdooropened 0x8009, 0x800a - doorchange - move 4, LittlerootTown_Movement_14DCE0 - waitmove 0 - spriteinvisible 4, 0, 9 - setdoorclosed 0x8009, 0x800a - doorchange + applymovement 4, LittlerootTown_Movement_14DCCA + waitmovement 0 + opendoor 0x8009, 0x800a + waitdooranim + applymovement 4, LittlerootTown_Movement_14DCE0 + waitmovement 0 + hideobject 4, 0, 9 + closedoor 0x8009, 0x800a + waitdooranim return LittlerootTown_EventScript_14DC04:: @ 814DC04 - move 4, LittlerootTown_Movement_14DCCF - waitmove 0 - setdooropened 0x8009, 0x800a - doorchange - move 4, LittlerootTown_Movement_14DCE0 - waitmove 0 - spriteinvisible 4, 0, 9 - setdoorclosed 0x8009, 0x800a - doorchange + applymovement 4, LittlerootTown_Movement_14DCCF + waitmovement 0 + opendoor 0x8009, 0x800a + waitdooranim + applymovement 4, LittlerootTown_Movement_14DCE0 + waitmovement 0 + hideobject 4, 0, 9 + closedoor 0x8009, 0x800a + waitdooranim return LittlerootTown_EventScript_14DC2A:: @ 814DC2A - move 4, LittlerootTown_Movement_14DCD3 - waitmove 0 - setdooropened 0x8009, 0x800a - doorchange - move 4, LittlerootTown_Movement_14DCE0 - waitmove 0 - spriteinvisible 4, 0, 9 - setdoorclosed 0x8009, 0x800a - doorchange + applymovement 4, LittlerootTown_Movement_14DCD3 + waitmovement 0 + opendoor 0x8009, 0x800a + waitdooranim + applymovement 4, LittlerootTown_Movement_14DCE0 + waitmovement 0 + hideobject 4, 0, 9 + closedoor 0x8009, 0x800a + waitdooranim return LittlerootTown_EventScript_14DC50:: @ 814DC50 - move 4, LittlerootTown_Movement_14DCDA - waitmove 0 - setdooropened 0x8009, 0x800a - doorchange - move 4, LittlerootTown_Movement_14DCE0 - waitmove 0 - spriteinvisible 4, 0, 9 - setdoorclosed 0x8009, 0x800a - doorchange + applymovement 4, LittlerootTown_Movement_14DCDA + waitmovement 0 + opendoor 0x8009, 0x800a + waitdooranim + applymovement 4, LittlerootTown_Movement_14DCE0 + waitmovement 0 + hideobject 4, 0, 9 + closedoor 0x8009, 0x800a + waitdooranim return LittlerootTown_Movement_14DC76:: @ 814DC76 @@ -841,26 +841,26 @@ LittlerootTown_Movement_14DCE0:: @ 814DCE0 LittlerootTown_EventScript_14DCE2:: @ 814DCE2 lock faceplayer - checkgender + checkplayergender compare RESULT, 0 - callif 1, LittlerootTown_EventScript_14D926 + call_if 1, LittlerootTown_EventScript_14D926 compare RESULT, 1 - callif 1, LittlerootTown_EventScript_14D931 + call_if 1, LittlerootTown_EventScript_14D931 call LittlerootTown_EventScript_14DD38 - move 4, LittlerootTown_Movement_1A0841 - waitmove 0 - setdooropened 0x8009, 0x800a - doorchange - move 4, LittlerootTown_Movement_14DCE0 - waitmove 0 - spriteinvisible 4, 0, 9 - setdoorclosed 0x8009, 0x800a - doorchange - jump LittlerootTown_EventScript_14DD2B + applymovement 4, LittlerootTown_Movement_1A0841 + waitmovement 0 + opendoor 0x8009, 0x800a + waitdooranim + applymovement 4, LittlerootTown_Movement_14DCE0 + waitmovement 0 + hideobject 4, 0, 9 + closedoor 0x8009, 0x800a + waitdooranim + goto LittlerootTown_EventScript_14DD2B end LittlerootTown_EventScript_14DD2B:: @ 814DD2B - disappear 4 + removeobject 4 setflag 2144 setvar 0x4050, 4 release @@ -868,13 +868,13 @@ LittlerootTown_EventScript_14DD2B:: @ 814DD2B LittlerootTown_EventScript_14DD38:: @ 814DD38 msgbox LittlerootTown_Text_16A8FD, 4 - fanfare 370 + playfanfare 370 message LittlerootTown_Text_16AA32 waitfanfare - waittext + waitmessage setflag 274 msgbox LittlerootTown_Text_16AA5C, 4 msgbox LittlerootTown_Text_16AB10, 4 - closebutton - pause 30 + closemessage + delay 30 return diff --git a/data/scripts/maps/LittlerootTown_BrendansHouse_1F.inc b/data/scripts/maps/LittlerootTown_BrendansHouse_1F.inc index 9816734d0..04256cacb 100644 --- a/data/scripts/maps/LittlerootTown_BrendansHouse_1F.inc +++ b/data/scripts/maps/LittlerootTown_BrendansHouse_1F.inc @@ -6,9 +6,9 @@ LittlerootTown_BrendansHouse_1F_MapScripts:: @ 815263B LittlerootTown_BrendansHouse_1F_MapScript1_15264B:: @ 815264B compare 0x4092, 6 - callif 0, LittlerootTown_BrendansHouse_1F_EventScript_152660 + call_if 0, LittlerootTown_BrendansHouse_1F_EventScript_152660 checkflag 274 - callif 1, LittlerootTown_BrendansHouse_1F_EventScript_152673 + call_if 1, LittlerootTown_BrendansHouse_1F_EventScript_152673 end LittlerootTown_BrendansHouse_1F_EventScript_152660:: @ 8152660 @@ -17,9 +17,9 @@ LittlerootTown_BrendansHouse_1F_EventScript_152660:: @ 8152660 return LittlerootTown_BrendansHouse_1F_EventScript_152673:: @ 8152673 - checkgender + checkplayergender compare RESULT, 0 - jumpeq LittlerootTown_BrendansHouse_1F_EventScript_152680 + goto_if_eq LittlerootTown_BrendansHouse_1F_EventScript_152680 return LittlerootTown_BrendansHouse_1F_EventScript_152680:: @ 8152680 @@ -28,26 +28,26 @@ LittlerootTown_BrendansHouse_1F_EventScript_152680:: @ 8152680 LittlerootTown_BrendansHouse_1F_MapScript1_15268A:: @ 815268A compare 0x4092, 3 - callif 1, LittlerootTown_BrendansHouse_1F_EventScript_1526C4 + call_if 1, LittlerootTown_BrendansHouse_1F_EventScript_1526C4 compare 0x4092, 5 - callif 1, LittlerootTown_BrendansHouse_1F_EventScript_1526AC + call_if 1, LittlerootTown_BrendansHouse_1F_EventScript_1526AC compare 0x4092, 6 - callif 1, LittlerootTown_BrendansHouse_1F_EventScript_1526B8 + call_if 1, LittlerootTown_BrendansHouse_1F_EventScript_1526B8 end LittlerootTown_BrendansHouse_1F_EventScript_1526AC:: @ 81526AC - movespriteperm 1, 8, 4 - spritebehave 1, 7 + setobjectxyperm 1, 8, 4 + setobjectmovementtype 1, 7 return LittlerootTown_BrendansHouse_1F_EventScript_1526B8:: @ 81526B8 - movespriteperm 1, 4, 5 - spritebehave 1, 7 + setobjectxyperm 1, 4, 5 + setobjectmovementtype 1, 7 return LittlerootTown_BrendansHouse_1F_EventScript_1526C4:: @ 81526C4 - movespriteperm 1, 9, 8 - spritebehave 1, 7 + setobjectxyperm 1, 9, 8 + setobjectmovementtype 1, 7 return LittlerootTown_BrendansHouse_1F_MapScript2_1526D0:: @ 81526D0 @@ -61,10 +61,10 @@ LittlerootTown_BrendansHouse_1F_MapScript2_1526D0:: @ 81526D0 LittlerootTown_BrendansHouse_1F_EventScript_1526FA:: @ 81526FA lockall msgbox LittlerootTown_BrendansHouse_1F_Text_172574, 4 - closebutton - move 255, LittlerootTown_BrendansHouse_1F_Movement_152720 - move 1, LittlerootTown_BrendansHouse_1F_Movement_152720 - waitmove 0 + closemessage + applymovement 255, LittlerootTown_BrendansHouse_1F_Movement_152720 + applymovement 1, LittlerootTown_BrendansHouse_1F_Movement_152720 + waitmovement 0 warp LittlerootTown_BrendansHouse_2F, 255, 7, 1 waitstate releaseall @@ -78,27 +78,27 @@ LittlerootTown_BrendansHouse_1F_EventScript_152722:: @ 8152722 lockall setvar 0x8004, 1 setvar 0x8005, 0 - jump LittlerootTown_BrendansHouse_1F_EventScript_1B6956 + goto LittlerootTown_BrendansHouse_1F_EventScript_1B6956 end LittlerootTown_BrendansHouse_1F_EventScript_152733:: @ 8152733 lockall setvar 0x8004, 0 setvar 0x8005, 1 - jump LittlerootTown_BrendansHouse_1F_EventScript_1B6ABF + goto LittlerootTown_BrendansHouse_1F_EventScript_1B6ABF end LittlerootTown_BrendansHouse_1F_EventScript_152744:: @ 8152744 lockall - playsfx 21 - move 4, LittlerootTown_BrendansHouse_1F_Movement_1A0833 - waitmove 0 - move 4, LittlerootTown_BrendansHouse_1F_Movement_1A0835 - waitmove 0 - move 255, LittlerootTown_BrendansHouse_1F_Movement_1A083F - move 4, LittlerootTown_BrendansHouse_1F_Movement_152782 - waitmove 0 - special 149 + playse 21 + applymovement 4, LittlerootTown_BrendansHouse_1F_Movement_1A0833 + waitmovement 0 + applymovement 4, LittlerootTown_BrendansHouse_1F_Movement_1A0835 + waitmovement 0 + applymovement 255, LittlerootTown_BrendansHouse_1F_Movement_1A083F + applymovement 4, LittlerootTown_BrendansHouse_1F_Movement_152782 + waitmovement 0 + special GetRivalSonDaughterString msgbox LittlerootTown_BrendansHouse_1F_Text_1730C2, 4 setflag 87 setvar 0x4082, 2 @@ -118,7 +118,7 @@ LittlerootTown_BrendansHouse_1F_EventScript_152789:: @ 8152789 lockall setvar 0x8004, 1 setvar 0x8005, 0 - move 0x8004, LittlerootTown_BrendansHouse_1F_Movement_1A083F - waitmove 0 - jump LittlerootTown_BrendansHouse_1F_EventScript_1B69B7 + applymovement 0x8004, LittlerootTown_BrendansHouse_1F_Movement_1A083F + waitmovement 0 + goto LittlerootTown_BrendansHouse_1F_EventScript_1B69B7 end diff --git a/data/scripts/maps/LittlerootTown_BrendansHouse_2F.inc b/data/scripts/maps/LittlerootTown_BrendansHouse_2F.inc index 0c6ec79f7..8ff7f8b81 100644 --- a/data/scripts/maps/LittlerootTown_BrendansHouse_2F.inc +++ b/data/scripts/maps/LittlerootTown_BrendansHouse_2F.inc @@ -5,16 +5,16 @@ LittlerootTown_BrendansHouse_2F_MapScripts:: @ 81527A4 LittlerootTown_BrendansHouse_2F_MapScript1_1527AF:: @ 81527AF checkflag 130 - callif 0, LittlerootTown_BrendansHouse_2F_EventScript_1527CE + call_if 0, LittlerootTown_BrendansHouse_2F_EventScript_1527CE compare 0x4092, 4 - callif 1, LittlerootTown_BrendansHouse_2F_EventScript_1B6950 + call_if 1, LittlerootTown_BrendansHouse_2F_EventScript_1B6950 call LittlerootTown_BrendansHouse_2F_EventScript_1A2F3D setvar 0x4089, 0 end LittlerootTown_BrendansHouse_2F_EventScript_1527CE:: @ 81527CE - movespriteperm 1, 1, 2 - spritebehave 1, 7 + setobjectxyperm 1, 1, 2 + setobjectmovementtype 1, 7 return LittlerootTown_BrendansHouse_2F_MapScript2_1527DA:: @ 81527DA @@ -22,18 +22,18 @@ LittlerootTown_BrendansHouse_2F_MapScript2_1527DA:: @ 81527DA .2byte 0 LittlerootTown_BrendansHouse_2F_EventScript_1527E4:: @ 81527E4 - checkgender + checkplayergender compare RESULT, 0 - jumpeq LittlerootTown_BrendansHouse_2F_EventScript_1A2F68 + goto_if_eq LittlerootTown_BrendansHouse_2F_EventScript_1A2F68 end @ 81527F1 lockall - checkgender + checkplayergender compare RESULT, 0 - jumpeq LittlerootTown_BrendansHouse_2F_EventScript_15280A + goto_if_eq LittlerootTown_BrendansHouse_2F_EventScript_15280A compare RESULT, 1 - jumpeq LittlerootTown_BrendansHouse_2F_EventScript_152814 + goto_if_eq LittlerootTown_BrendansHouse_2F_EventScript_152814 end LittlerootTown_BrendansHouse_2F_EventScript_15280A:: @ 815280A @@ -50,27 +50,27 @@ gUnknown_0815281E:: @ 815281E LittlerootTown_BrendansHouse_2F_EventScript_15281E:: @ 815281E lockall - checkgender + checkplayergender compare RESULT, 0 - jumpeq LittlerootTown_BrendansHouse_2F_EventScript_152837 + goto_if_eq LittlerootTown_BrendansHouse_2F_EventScript_152837 compare RESULT, 1 - jumpeq LittlerootTown_BrendansHouse_2F_EventScript_15285D + goto_if_eq LittlerootTown_BrendansHouse_2F_EventScript_15285D end LittlerootTown_BrendansHouse_2F_EventScript_152837:: @ 8152837 setvar 0x8004, 1 - special 214 - playsfx SE_PC_ON + special DoPCTurnOnEffect + playse SE_PC_ON msgbox LittlerootTown_BrendansHouse_2F_Text_1A10D6, 4 - special 249 + special BedroomPC waitstate releaseall end gBrendanHouse_TurnPCOff:: @ 8152850 setvar 0x8004, 1 - playsfx SE_PC_OFF - special 215 + playse SE_PC_OFF + special DoPCTurnOffEffect releaseall end diff --git a/data/scripts/maps/LittlerootTown_MaysHouse_1F.inc b/data/scripts/maps/LittlerootTown_MaysHouse_1F.inc index 2b9ad42ef..14c7f5d8a 100644 --- a/data/scripts/maps/LittlerootTown_MaysHouse_1F.inc +++ b/data/scripts/maps/LittlerootTown_MaysHouse_1F.inc @@ -6,9 +6,9 @@ LittlerootTown_MaysHouse_1F_MapScripts:: @ 8152879 LittlerootTown_MaysHouse_1F_MapScript1_152889:: @ 8152889 compare 0x4092, 6 - callif 0, LittlerootTown_MaysHouse_1F_EventScript_15289E + call_if 0, LittlerootTown_MaysHouse_1F_EventScript_15289E checkflag 274 - callif 1, LittlerootTown_MaysHouse_1F_EventScript_1528B1 + call_if 1, LittlerootTown_MaysHouse_1F_EventScript_1528B1 end LittlerootTown_MaysHouse_1F_EventScript_15289E:: @ 815289E @@ -17,9 +17,9 @@ LittlerootTown_MaysHouse_1F_EventScript_15289E:: @ 815289E return LittlerootTown_MaysHouse_1F_EventScript_1528B1:: @ 81528B1 - checkgender + checkplayergender compare RESULT, 1 - jumpeq LittlerootTown_MaysHouse_1F_EventScript_1528BE + goto_if_eq LittlerootTown_MaysHouse_1F_EventScript_1528BE return LittlerootTown_MaysHouse_1F_EventScript_1528BE:: @ 81528BE @@ -28,26 +28,26 @@ LittlerootTown_MaysHouse_1F_EventScript_1528BE:: @ 81528BE LittlerootTown_MaysHouse_1F_MapScript1_1528C8:: @ 81528C8 compare 0x4092, 3 - callif 1, LittlerootTown_MaysHouse_1F_EventScript_152902 + call_if 1, LittlerootTown_MaysHouse_1F_EventScript_152902 compare 0x4092, 5 - callif 1, LittlerootTown_MaysHouse_1F_EventScript_1528EA + call_if 1, LittlerootTown_MaysHouse_1F_EventScript_1528EA compare 0x4092, 6 - callif 1, LittlerootTown_MaysHouse_1F_EventScript_1528F6 + call_if 1, LittlerootTown_MaysHouse_1F_EventScript_1528F6 end LittlerootTown_MaysHouse_1F_EventScript_1528EA:: @ 81528EA - movespriteperm 1, 2, 4 - spritebehave 1, 7 + setobjectxyperm 1, 2, 4 + setobjectmovementtype 1, 7 return LittlerootTown_MaysHouse_1F_EventScript_1528F6:: @ 81528F6 - movespriteperm 1, 6, 5 - spritebehave 1, 7 + setobjectxyperm 1, 6, 5 + setobjectmovementtype 1, 7 return LittlerootTown_MaysHouse_1F_EventScript_152902:: @ 8152902 - movespriteperm 1, 1, 8 - spritebehave 1, 7 + setobjectxyperm 1, 1, 8 + setobjectmovementtype 1, 7 return LittlerootTown_MaysHouse_1F_MapScript2_15290E:: @ 815290E @@ -61,10 +61,10 @@ LittlerootTown_MaysHouse_1F_MapScript2_15290E:: @ 815290E LittlerootTown_MaysHouse_1F_EventScript_152938:: @ 8152938 lockall msgbox LittlerootTown_MaysHouse_1F_Text_172574, 4 - closebutton - move 255, LittlerootTown_MaysHouse_1F_Movement_15295E - move 1, LittlerootTown_MaysHouse_1F_Movement_15295E - waitmove 0 + closemessage + applymovement 255, LittlerootTown_MaysHouse_1F_Movement_15295E + applymovement 1, LittlerootTown_MaysHouse_1F_Movement_15295E + waitmovement 0 warp LittlerootTown_MaysHouse_2F, 255, 1, 1 waitstate releaseall @@ -78,27 +78,27 @@ LittlerootTown_MaysHouse_1F_EventScript_152960:: @ 8152960 lockall setvar 0x8004, 1 setvar 0x8005, 1 - jump LittlerootTown_MaysHouse_1F_EventScript_1B6956 + goto LittlerootTown_MaysHouse_1F_EventScript_1B6956 end LittlerootTown_MaysHouse_1F_EventScript_152971:: @ 8152971 lockall setvar 0x8004, 1 setvar 0x8005, 1 - jump LittlerootTown_MaysHouse_1F_EventScript_1B6B2E + goto LittlerootTown_MaysHouse_1F_EventScript_1B6B2E end LittlerootTown_MaysHouse_1F_EventScript_152982:: @ 8152982 lockall - playsfx 21 - move 4, LittlerootTown_MaysHouse_1F_Movement_1A0833 - waitmove 0 - move 4, LittlerootTown_MaysHouse_1F_Movement_1A0835 - waitmove 0 - move 255, LittlerootTown_MaysHouse_1F_Movement_1A0843 - move 4, LittlerootTown_MaysHouse_1F_Movement_1529C0 - waitmove 0 - special 149 + playse 21 + applymovement 4, LittlerootTown_MaysHouse_1F_Movement_1A0833 + waitmovement 0 + applymovement 4, LittlerootTown_MaysHouse_1F_Movement_1A0835 + waitmovement 0 + applymovement 255, LittlerootTown_MaysHouse_1F_Movement_1A0843 + applymovement 4, LittlerootTown_MaysHouse_1F_Movement_1529C0 + waitmovement 0 + special GetRivalSonDaughterString msgbox LittlerootTown_MaysHouse_1F_Text_1730C2, 4 setflag 87 setvar 0x408c, 2 @@ -116,11 +116,11 @@ LittlerootTown_MaysHouse_1F_Movement_1529C0:: @ 81529C0 @ 81529C7 lockall - checkgender + checkplayergender compare RESULT, 0 - callif 1, LittlerootTown_MaysHouse_1F_EventScript_1529E1 + call_if 1, LittlerootTown_MaysHouse_1F_EventScript_1529E1 compare RESULT, 1 - callif 1, LittlerootTown_MaysHouse_1F_EventScript_1529E2 + call_if 1, LittlerootTown_MaysHouse_1F_EventScript_1529E2 releaseall end @@ -136,12 +136,12 @@ LittlerootTown_MaysHouse_1F_EventScript_1529EB:: @ 81529EB lock faceplayer checkflag 130 - jumpeq LittlerootTown_BrendansHouse_1F_EventScript_152A21 + goto_if_eq LittlerootTown_BrendansHouse_1F_EventScript_152A21 checkflag 301 - jumpeq LittlerootTown_BrendansHouse_1F_EventScript_152A17 + goto_if_eq LittlerootTown_BrendansHouse_1F_EventScript_152A17 compare 0x408d, 3 - jumpeq LittlerootTown_BrendansHouse_1F_EventScript_152A2B - special 149 + goto_if_eq LittlerootTown_BrendansHouse_1F_EventScript_152A2B + special GetRivalSonDaughterString msgbox LittlerootTown_BrendansHouse_1F_Text_1731C6, 4 release end @@ -165,7 +165,7 @@ LittlerootTown_MaysHouse_1F_EventScript_152A35:: @ 8152A35 lockall setvar 0x8004, 1 setvar 0x8005, 1 - move 0x8004, LittlerootTown_MaysHouse_1F_Movement_1A0843 - waitmove 0 - jump LittlerootTown_MaysHouse_1F_EventScript_1B69B7 + applymovement 0x8004, LittlerootTown_MaysHouse_1F_Movement_1A0843 + waitmovement 0 + goto LittlerootTown_MaysHouse_1F_EventScript_1B69B7 end diff --git a/data/scripts/maps/LittlerootTown_MaysHouse_2F.inc b/data/scripts/maps/LittlerootTown_MaysHouse_2F.inc index 1aca3f86e..68bdf0fcb 100644 --- a/data/scripts/maps/LittlerootTown_MaysHouse_2F.inc +++ b/data/scripts/maps/LittlerootTown_MaysHouse_2F.inc @@ -5,16 +5,16 @@ LittlerootTown_MaysHouse_2F_MapScripts:: @ 8152A50 LittlerootTown_MaysHouse_2F_MapScript1_152A5B:: @ 8152A5B checkflag 130 - callif 0, LittlerootTown_MaysHouse_2F_EventScript_152A7A + call_if 0, LittlerootTown_MaysHouse_2F_EventScript_152A7A compare 0x4092, 4 - callif 1, LittlerootTown_MaysHouse_2F_EventScript_1B6950 + call_if 1, LittlerootTown_MaysHouse_2F_EventScript_1B6950 call LittlerootTown_MaysHouse_2F_EventScript_1A2F3D setvar 0x4089, 0 end LittlerootTown_MaysHouse_2F_EventScript_152A7A:: @ 8152A7A - movespriteperm 1, 7, 2 - spritebehave 1, 7 + setobjectxyperm 1, 7, 2 + setobjectmovementtype 1, 7 return LittlerootTown_MaysHouse_2F_MapScript2_152A86:: @ 8152A86 @@ -22,114 +22,114 @@ LittlerootTown_MaysHouse_2F_MapScript2_152A86:: @ 8152A86 .2byte 0 LittlerootTown_MaysHouse_2F_EventScript_152A90:: @ 8152A90 - checkgender + checkplayergender compare RESULT, 1 - jumpeq LittlerootTown_MaysHouse_2F_EventScript_1A2F68 + goto_if_eq LittlerootTown_MaysHouse_2F_EventScript_1A2F68 end LittlerootTown_BrendansHouse_2F_EventScript_152A9D:: @ 8152A9D LittlerootTown_MaysHouse_2F_EventScript_152A9D:: @ 8152A9D lockall checkflag 292 - jumpeq LittlerootTown_BrendansHouse_2F_EventScript_152BB5 - checkgender + goto_if_eq LittlerootTown_BrendansHouse_2F_EventScript_152BB5 + checkplayergender compare RESULT, 0 - callif 1, LittlerootTown_BrendansHouse_2F_EventScript_152AD4 + call_if 1, LittlerootTown_BrendansHouse_2F_EventScript_152AD4 compare RESULT, 1 - callif 1, LittlerootTown_BrendansHouse_2F_EventScript_152B4A - playsfx 9 - disappear LAST_TALKED + call_if 1, LittlerootTown_BrendansHouse_2F_EventScript_152B4A + playse 9 + removeobject LAST_TALKED setvar 0x408d, 3 setvar 0x4050, 1 - playmusicbattle 0 - fadedefault + savebgm 0 + fadedefaultbgm releaseall end LittlerootTown_BrendansHouse_2F_EventScript_152AD4:: @ 8152AD4 msgbox LittlerootTown_BrendansHouse_2F_Text_17337E, 4 - playmusic 415, 1 - move LAST_TALKED, LittlerootTown_BrendansHouse_2F_Movement_1A0839 - waitmove 0 - move LAST_TALKED, LittlerootTown_BrendansHouse_2F_Movement_1A0833 - waitmove 0 - move LAST_TALKED, LittlerootTown_BrendansHouse_2F_Movement_1A0835 - waitmove 0 + playbgm 415, 1 + applymovement LAST_TALKED, LittlerootTown_BrendansHouse_2F_Movement_1A0839 + waitmovement 0 + applymovement LAST_TALKED, LittlerootTown_BrendansHouse_2F_Movement_1A0833 + waitmovement 0 + applymovement LAST_TALKED, LittlerootTown_BrendansHouse_2F_Movement_1A0835 + waitmovement 0 msgbox LittlerootTown_BrendansHouse_2F_Text_1733AF, 4 - closebutton + closemessage compare FACING, 4 - callif 1, LittlerootTown_BrendansHouse_2F_EventScript_152B29 + call_if 1, LittlerootTown_BrendansHouse_2F_EventScript_152B29 compare FACING, 2 - callif 1, LittlerootTown_BrendansHouse_2F_EventScript_152B34 + call_if 1, LittlerootTown_BrendansHouse_2F_EventScript_152B34 compare FACING, 3 - callif 1, LittlerootTown_BrendansHouse_2F_EventScript_152B3F + call_if 1, LittlerootTown_BrendansHouse_2F_EventScript_152B3F return LittlerootTown_BrendansHouse_2F_EventScript_152B29:: @ 8152B29 - move LAST_TALKED, LittlerootTown_BrendansHouse_2F_Movement_152C11 - waitmove 0 + applymovement LAST_TALKED, LittlerootTown_BrendansHouse_2F_Movement_152C11 + waitmovement 0 return LittlerootTown_BrendansHouse_2F_EventScript_152B34:: @ 8152B34 - move LAST_TALKED, LittlerootTown_BrendansHouse_2F_Movement_152C1C - waitmove 0 + applymovement LAST_TALKED, LittlerootTown_BrendansHouse_2F_Movement_152C1C + waitmovement 0 return LittlerootTown_BrendansHouse_2F_EventScript_152B3F:: @ 8152B3F - move LAST_TALKED, LittlerootTown_BrendansHouse_2F_Movement_152C1C - waitmove 0 + applymovement LAST_TALKED, LittlerootTown_BrendansHouse_2F_Movement_152C1C + waitmovement 0 return LittlerootTown_BrendansHouse_2F_EventScript_152B4A:: @ 8152B4A msgbox LittlerootTown_BrendansHouse_2F_Text_1735C9, 4 - playmusic 421, 1 - move LAST_TALKED, LittlerootTown_BrendansHouse_2F_Movement_1A0839 - waitmove 0 - move LAST_TALKED, LittlerootTown_BrendansHouse_2F_Movement_1A0833 - waitmove 0 - move LAST_TALKED, LittlerootTown_BrendansHouse_2F_Movement_1A0835 - waitmove 0 + playbgm 421, 1 + applymovement LAST_TALKED, LittlerootTown_BrendansHouse_2F_Movement_1A0839 + waitmovement 0 + applymovement LAST_TALKED, LittlerootTown_BrendansHouse_2F_Movement_1A0833 + waitmovement 0 + applymovement LAST_TALKED, LittlerootTown_BrendansHouse_2F_Movement_1A0835 + waitmovement 0 msgbox LittlerootTown_BrendansHouse_2F_Text_1735FC, 4 - closebutton + closemessage compare FACING, 4 - callif 1, LittlerootTown_BrendansHouse_2F_EventScript_152B9F + call_if 1, LittlerootTown_BrendansHouse_2F_EventScript_152B9F compare FACING, 2 - callif 1, LittlerootTown_BrendansHouse_2F_EventScript_152B9F + call_if 1, LittlerootTown_BrendansHouse_2F_EventScript_152B9F compare FACING, 3 - callif 1, LittlerootTown_BrendansHouse_2F_EventScript_152BAA + call_if 1, LittlerootTown_BrendansHouse_2F_EventScript_152BAA return LittlerootTown_BrendansHouse_2F_EventScript_152B9F:: @ 8152B9F - move LAST_TALKED, LittlerootTown_BrendansHouse_2F_Movement_152C30 - waitmove 0 + applymovement LAST_TALKED, LittlerootTown_BrendansHouse_2F_Movement_152C30 + waitmovement 0 return LittlerootTown_BrendansHouse_2F_EventScript_152BAA:: @ 8152BAA - move LAST_TALKED, LittlerootTown_BrendansHouse_2F_Movement_152C25 - waitmove 0 + applymovement LAST_TALKED, LittlerootTown_BrendansHouse_2F_Movement_152C25 + waitmovement 0 return LittlerootTown_BrendansHouse_2F_EventScript_152BB5:: @ 8152BB5 - move LAST_TALKED, LittlerootTown_BrendansHouse_2F_Movement_1A0839 - waitmove 0 - checkgender + applymovement LAST_TALKED, LittlerootTown_BrendansHouse_2F_Movement_1A0839 + waitmovement 0 + checkplayergender compare RESULT, 0 - callif 1, LittlerootTown_BrendansHouse_2F_EventScript_152BDB + call_if 1, LittlerootTown_BrendansHouse_2F_EventScript_152BDB compare RESULT, 1 - callif 1, LittlerootTown_BrendansHouse_2F_EventScript_152BED + call_if 1, LittlerootTown_BrendansHouse_2F_EventScript_152BED setflag 293 releaseall end LittlerootTown_BrendansHouse_2F_EventScript_152BDB:: @ 8152BDB checkflag 293 - jumpeq LittlerootTown_BrendansHouse_2F_EventScript_152BFF + goto_if_eq LittlerootTown_BrendansHouse_2F_EventScript_152BFF msgbox LittlerootTown_BrendansHouse_2F_Text_1737AE, 4 return LittlerootTown_BrendansHouse_2F_EventScript_152BED:: @ 8152BED checkflag 293 - jumpeq LittlerootTown_BrendansHouse_2F_EventScript_152C08 + goto_if_eq LittlerootTown_BrendansHouse_2F_EventScript_152C08 msgbox LittlerootTown_BrendansHouse_2F_Text_1738F2, 4 return @@ -193,11 +193,11 @@ gUnknown_08152C39:: @ 8152C39 LittlerootTown_MaysHouse_2F_EventScript_152C39:: @ 8152C39 lockall - checkgender + checkplayergender compare RESULT, 0 - jumpeq LittlerootTown_MaysHouse_2F_EventScript_152C52 + goto_if_eq LittlerootTown_MaysHouse_2F_EventScript_152C52 compare RESULT, 1 - jumpeq LittlerootTown_MaysHouse_2F_EventScript_152C5C + goto_if_eq LittlerootTown_MaysHouse_2F_EventScript_152C5C end LittlerootTown_MaysHouse_2F_EventScript_152C52:: @ 8152C52 @@ -207,17 +207,17 @@ LittlerootTown_MaysHouse_2F_EventScript_152C52:: @ 8152C52 LittlerootTown_MaysHouse_2F_EventScript_152C5C:: @ 8152C5C setvar 0x8004, 2 - special 214 - playsfx SE_PC_ON + special DoPCTurnOnEffect + playse SE_PC_ON msgbox LittlerootTown_MaysHouse_2F_Text_1A10D6, 4 - special 249 + special BedroomPC waitstate releaseall end gMayHouse_TurnPCOff:: @ 8152C75 setvar 0x8004, 2 - playsfx SE_PC_OFF - special 215 + playse SE_PC_OFF + special DoPCTurnOffEffect releaseall end diff --git a/data/scripts/maps/LittlerootTown_ProfessorBirchsLab.inc b/data/scripts/maps/LittlerootTown_ProfessorBirchsLab.inc index 94aeadfa6..e7ccd73f6 100644 --- a/data/scripts/maps/LittlerootTown_ProfessorBirchsLab.inc +++ b/data/scripts/maps/LittlerootTown_ProfessorBirchsLab.inc @@ -14,7 +14,7 @@ LittlerootTown_ProfessorBirchsLab_MapScript2_152C9D:: @ 8152C9D .2byte 0 LittlerootTown_ProfessorBirchsLab_EventScript_152CA7:: @ 8152CA7 - spriteface 255, 2 + turnobject 255, 2 end LittlerootTown_ProfessorBirchsLab_MapScript2_152CAC:: @ 8152CAC @@ -24,30 +24,30 @@ LittlerootTown_ProfessorBirchsLab_MapScript2_152CAC:: @ 8152CAC LittlerootTown_ProfessorBirchsLab_EventScript_152CBE:: @ 8152CBE lockall - bufferfirstpoke 0 + getfirstpartypokename 0 message LittlerootTown_ProfessorBirchsLab_Text_173D94 - waittext - fanfare 370 + waitmessage + playfanfare 370 waitfanfare msgbox LittlerootTown_ProfessorBirchsLab_Text_173EF8, 5 compare RESULT, 1 - jumpeq LittlerootTown_ProfessorBirchsLab_EventScript_152CEA + goto_if_eq LittlerootTown_ProfessorBirchsLab_EventScript_152CEA compare RESULT, 0 - jumpeq LittlerootTown_ProfessorBirchsLab_EventScript_152CFA + goto_if_eq LittlerootTown_ProfessorBirchsLab_EventScript_152CFA end LittlerootTown_ProfessorBirchsLab_EventScript_152CEA:: @ 8152CEA setvar 0x8004, 0 call LittlerootTown_ProfessorBirchsLab_EventScript_1A0678 - jump LittlerootTown_ProfessorBirchsLab_EventScript_152CFA + goto LittlerootTown_ProfessorBirchsLab_EventScript_152CFA end LittlerootTown_ProfessorBirchsLab_EventScript_152CFA:: @ 8152CFA msgbox LittlerootTown_ProfessorBirchsLab_Text_173F3D, 5 compare RESULT, 1 - jumpeq LittlerootTown_ProfessorBirchsLab_EventScript_152D19 + goto_if_eq LittlerootTown_ProfessorBirchsLab_EventScript_152D19 compare RESULT, 0 - jumpeq LittlerootTown_ProfessorBirchsLab_EventScript_152D2B + goto_if_eq LittlerootTown_ProfessorBirchsLab_EventScript_152D2B end LittlerootTown_ProfessorBirchsLab_EventScript_152D19:: @ 8152D19 @@ -60,16 +60,16 @@ LittlerootTown_ProfessorBirchsLab_EventScript_152D19:: @ 8152D19 LittlerootTown_ProfessorBirchsLab_EventScript_152D2B:: @ 8152D2B msgbox LittlerootTown_ProfessorBirchsLab_Text_174075, 5 compare RESULT, 1 - jumpeq LittlerootTown_ProfessorBirchsLab_EventScript_152D19 + goto_if_eq LittlerootTown_ProfessorBirchsLab_EventScript_152D19 compare RESULT, 0 - jumpeq LittlerootTown_ProfessorBirchsLab_EventScript_152D2B + goto_if_eq LittlerootTown_ProfessorBirchsLab_EventScript_152D2B end LittlerootTown_ProfessorBirchsLab_EventScript_152D4A:: @ 8152D4A lockall - move 255, LittlerootTown_ProfessorBirchsLab_Movement_152D5B - waitmove 0 - jump LittlerootTown_ProfessorBirchsLab_EventScript_152DBA + applymovement 255, LittlerootTown_ProfessorBirchsLab_Movement_152D5B + waitmovement 0 + goto LittlerootTown_ProfessorBirchsLab_EventScript_152DBA end LittlerootTown_ProfessorBirchsLab_Movement_152D5B:: @ 8152D5B @@ -86,9 +86,9 @@ LittlerootTown_ProfessorBirchsLab_EventScript_152D63:: @ 8152D63 lock faceplayer compare 0x4084, 3 - jumpif 4, LittlerootTown_ProfessorBirchsLab_EventScript_152D90 + goto_if 4, LittlerootTown_ProfessorBirchsLab_EventScript_152D90 checkflag 88 - jumpeq LittlerootTown_ProfessorBirchsLab_EventScript_152D86 + goto_if_eq LittlerootTown_ProfessorBirchsLab_EventScript_152D86 msgbox LittlerootTown_ProfessorBirchsLab_Text_173B29, 4 setflag 88 release @@ -108,9 +108,9 @@ LittlerootTown_ProfessorBirchsLab_EventScript_152D9A:: @ 8152D9A lock faceplayer checkflag 896 - jumpif 0, LittlerootTown_ProfessorBirchsLab_EventScript_1A037F + goto_if 0, LittlerootTown_ProfessorBirchsLab_EventScript_1A037F compare 0x4084, 5 - jumpeq LittlerootTown_ProfessorBirchsLab_EventScript_152E7B + goto_if_eq LittlerootTown_ProfessorBirchsLab_EventScript_152E7B msgbox LittlerootTown_ProfessorBirchsLab_Text_1740B4, 4 release end @@ -119,15 +119,15 @@ LittlerootTown_ProfessorBirchsLab_EventScript_152DBA:: @ 8152DBA msgbox LittlerootTown_ProfessorBirchsLab_Text_17411F, 4 call LittlerootTown_ProfessorBirchsLab_EventScript_152E6D msgbox LittlerootTown_ProfessorBirchsLab_Text_174248, 4 - move 3, LittlerootTown_ProfessorBirchsLab_Movement_152E97 - waitmove 0 - move 255, LittlerootTown_ProfessorBirchsLab_Movement_1A0843 - waitmove 0 - checkgender + applymovement 3, LittlerootTown_ProfessorBirchsLab_Movement_152E97 + waitmovement 0 + applymovement 255, LittlerootTown_ProfessorBirchsLab_Movement_1A0843 + waitmovement 0 + checkplayergender compare RESULT, 0 - callif 1, LittlerootTown_ProfessorBirchsLab_EventScript_152E13 + call_if 1, LittlerootTown_ProfessorBirchsLab_EventScript_152E13 compare RESULT, 1 - callif 1, LittlerootTown_ProfessorBirchsLab_EventScript_152E40 + call_if 1, LittlerootTown_ProfessorBirchsLab_EventScript_152E40 setvar 0x4084, 5 setflag 116 setvar 0x4051, 1 @@ -140,7 +140,7 @@ LittlerootTown_ProfessorBirchsLab_EventScript_152E13:: @ 8152E13 msgbox LittlerootTown_ProfessorBirchsLab_Text_1743D4, 4 giveitem ITEM_POKE_BALL, 5 compare RESULT, 0 - callif 1, LittlerootTown_ProfessorBirchsLab_EventScript_152E85 + call_if 1, LittlerootTown_ProfessorBirchsLab_EventScript_152E85 msgbox LittlerootTown_ProfessorBirchsLab_Text_17443D, 4 setvar RESULT, 0 return @@ -149,16 +149,16 @@ LittlerootTown_ProfessorBirchsLab_EventScript_152E40:: @ 8152E40 msgbox LittlerootTown_ProfessorBirchsLab_Text_17453C, 4 giveitem ITEM_POKE_BALL, 5 compare RESULT, 0 - callif 1, LittlerootTown_ProfessorBirchsLab_EventScript_152E8E + call_if 1, LittlerootTown_ProfessorBirchsLab_EventScript_152E8E msgbox LittlerootTown_ProfessorBirchsLab_Text_17458C, 4 setvar RESULT, 1 return LittlerootTown_ProfessorBirchsLab_EventScript_152E6D:: @ 8152E6D - fanfare 370 + playfanfare 370 message LittlerootTown_ProfessorBirchsLab_Text_17422F waitfanfare - waittext + waitmessage setflag 2049 return @@ -187,11 +187,11 @@ LittlerootTown_ProfessorBirchsLab_EventScript_152E9A:: @ 8152E9A LittlerootTown_ProfessorBirchsLab_EventScript_152EA3:: @ 8152EA3 lock faceplayer - checkgender + checkplayergender compare RESULT, 0 - callif 1, LittlerootTown_ProfessorBirchsLab_EventScript_152EBE + call_if 1, LittlerootTown_ProfessorBirchsLab_EventScript_152EBE compare RESULT, 1 - callif 1, LittlerootTown_ProfessorBirchsLab_EventScript_152EC7 + call_if 1, LittlerootTown_ProfessorBirchsLab_EventScript_152EC7 release end diff --git a/data/scripts/maps/MagmaHideout_B1F.inc b/data/scripts/maps/MagmaHideout_B1F.inc index 0304181fb..780eea4f5 100644 --- a/data/scripts/maps/MagmaHideout_B1F.inc +++ b/data/scripts/maps/MagmaHideout_B1F.inc @@ -4,9 +4,9 @@ MagmaHideout_B1F_MapScripts:: @ 815F2A8 MagmaHideout_B1F_MapScript1_15F2AE:: @ 815F2AE checkflag 2145 - callif 1, MagmaHideout_B1F_EventScript_15F2B8 + call_if 1, MagmaHideout_B1F_EventScript_15F2B8 end MagmaHideout_B1F_EventScript_15F2B8:: @ 815F2B8 - disappear LAST_TALKED + removeobject LAST_TALKED return diff --git a/data/scripts/maps/MauvilleCity.inc b/data/scripts/maps/MauvilleCity.inc index 1b2827f2a..5c93aa252 100644 --- a/data/scripts/maps/MauvilleCity.inc +++ b/data/scripts/maps/MauvilleCity.inc @@ -9,7 +9,7 @@ MauvilleCity_MapScript1_14C038:: @ 814C038 clearflag 99 setvar 0x4093, 0 checkflag 209 - callif 1, MauvilleCity_EventScript_14C053 + call_if 1, MauvilleCity_EventScript_14C053 end MauvilleCity_EventScript_14C053:: @ 814C053 @@ -53,7 +53,7 @@ MauvilleCity_EventScript_14C0A2:: @ 814C0A2 lock faceplayer checkflag 98 - jumpeq MauvilleCity_EventScript_14C0BA + goto_if_eq MauvilleCity_EventScript_14C0BA msgbox MauvilleCity_Text_16674A, 4 setflag 98 release @@ -68,94 +68,94 @@ MauvilleCity_EventScript_14C0C4:: @ 814C0C4 lock faceplayer checkflag 284 - jumpeq MauvilleCity_EventScript_14C0E4 + goto_if_eq MauvilleCity_EventScript_14C0E4 msgbox MauvilleCity_Text_165B76, 4 - closebutton - move 7, MauvilleCity_Movement_1A083D - waitmove 0 + closemessage + applymovement 7, MauvilleCity_Movement_1A083D + waitmovement 0 release end MauvilleCity_EventScript_14C0E4:: @ 814C0E4 msgbox MauvilleCity_Text_165E45, 4 - closebutton - move 7, MauvilleCity_Movement_1A083D - waitmove 0 + closemessage + applymovement 7, MauvilleCity_Movement_1A083D + waitmovement 0 release end MauvilleCity_EventScript_14C0F9:: @ 814C0F9 lockall checkflag 284 - jumpeq MauvilleCity_EventScript_14C292 - move 6, MauvilleCity_Movement_1A0843 - waitmove 0 + goto_if_eq MauvilleCity_EventScript_14C292 + applymovement 6, MauvilleCity_Movement_1A0843 + waitmovement 0 msgbox MauvilleCity_Text_165BE3, 4 msgbox MauvilleCity_Text_165C57, 4 msgbox MauvilleCity_Text_165D01, 4 - move 6, MauvilleCity_Movement_1A0839 - waitmove 0 - playsfx 21 - move 6, MauvilleCity_Movement_1A0833 - waitmove 0 - move 6, MauvilleCity_Movement_1A0835 - waitmove 0 + applymovement 6, MauvilleCity_Movement_1A0839 + waitmovement 0 + playse 21 + applymovement 6, MauvilleCity_Movement_1A0833 + waitmovement 0 + applymovement 6, MauvilleCity_Movement_1A0835 + waitmovement 0 msgbox MauvilleCity_Text_165D50, 5 - jump MauvilleCity_EventScript_14C154 + goto MauvilleCity_EventScript_14C154 end MauvilleCity_EventScript_14C154:: @ 814C154 compare RESULT, 1 - callif 1, MauvilleCity_EventScript_14C23C + call_if 1, MauvilleCity_EventScript_14C23C compare RESULT, 0 - jumpeq MauvilleCity_EventScript_14C285 - closebutton + goto_if_eq MauvilleCity_EventScript_14C285 + closemessage switch FACING case 2, MauvilleCity_EventScript_14C187 case 4, MauvilleCity_EventScript_14C1D9 end MauvilleCity_EventScript_14C187:: @ 814C187 - move 6, MauvilleCity_Movement_14C2AA - move 7, MauvilleCity_Movement_14C2CC - waitmove 0 - move 6, MauvilleCity_Movement_1A0843 - waitmove 0 - pause 30 - move 7, MauvilleCity_Movement_14C2D8 - waitmove 0 - move 255, MauvilleCity_Movement_1A0845 - waitmove 0 + applymovement 6, MauvilleCity_Movement_14C2AA + applymovement 7, MauvilleCity_Movement_14C2CC + waitmovement 0 + applymovement 6, MauvilleCity_Movement_1A0843 + waitmovement 0 + delay 30 + applymovement 7, MauvilleCity_Movement_14C2D8 + waitmovement 0 + applymovement 255, MauvilleCity_Movement_1A0845 + waitmovement 0 msgbox MauvilleCity_Text_1660FA, 4 - closebutton - move 6, MauvilleCity_Movement_14C2B6 - move 7, MauvilleCity_Movement_14C2DF - waitmove 0 - jump MauvilleCity_EventScript_14C22B + closemessage + applymovement 6, MauvilleCity_Movement_14C2B6 + applymovement 7, MauvilleCity_Movement_14C2DF + waitmovement 0 + goto MauvilleCity_EventScript_14C22B end MauvilleCity_EventScript_14C1D9:: @ 814C1D9 - move 6, MauvilleCity_Movement_14C2B0 - move 7, MauvilleCity_Movement_14C2D2 - waitmove 0 - move 6, MauvilleCity_Movement_1A0843 - waitmove 0 - pause 30 - move 7, MauvilleCity_Movement_14C2DC - waitmove 0 - move 255, MauvilleCity_Movement_1A0845 - waitmove 0 + applymovement 6, MauvilleCity_Movement_14C2B0 + applymovement 7, MauvilleCity_Movement_14C2D2 + waitmovement 0 + applymovement 6, MauvilleCity_Movement_1A0843 + waitmovement 0 + delay 30 + applymovement 7, MauvilleCity_Movement_14C2DC + waitmovement 0 + applymovement 255, MauvilleCity_Movement_1A0845 + waitmovement 0 msgbox MauvilleCity_Text_1660FA, 4 - closebutton - move 6, MauvilleCity_Movement_14C2C1 - move 7, MauvilleCity_Movement_14C2E8 - waitmove 0 - jump MauvilleCity_EventScript_14C22B + closemessage + applymovement 6, MauvilleCity_Movement_14C2C1 + applymovement 7, MauvilleCity_Movement_14C2E8 + waitmovement 0 + goto MauvilleCity_EventScript_14C22B end MauvilleCity_EventScript_14C22B:: @ 814C22B - disappear 6 - disappear 7 + removeobject 6 + removeobject 7 clearflag 806 clearflag 809 setflag 190 @@ -165,14 +165,14 @@ MauvilleCity_EventScript_14C22B:: @ 814C22B MauvilleCity_EventScript_14C23C:: @ 814C23C msgbox MauvilleCity_Text_165F0D, 4 trainerbattle 3, OPPONENT_WALLY_2, 0, MauvilleCity_Text_165F38 - move 6, MauvilleCity_Movement_1A0843 - waitmove 0 + applymovement 6, MauvilleCity_Movement_1A0843 + waitmovement 0 msgbox MauvilleCity_Text_165F85, 4 - move 6, MauvilleCity_Movement_1A0839 - waitmove 0 + applymovement 6, MauvilleCity_Movement_1A0839 + waitmovement 0 msgbox MauvilleCity_Text_165FB3, 4 - move 6, MauvilleCity_Movement_1A0843 - waitmove 0 + applymovement 6, MauvilleCity_Movement_1A0843 + waitmovement 0 msgbox MauvilleCity_Text_166050, 4 return @@ -183,10 +183,10 @@ MauvilleCity_EventScript_14C285:: @ 814C285 end MauvilleCity_EventScript_14C292:: @ 814C292 - move 6, MauvilleCity_Movement_1A0839 - waitmove 0 + applymovement 6, MauvilleCity_Movement_1A0839 + waitmovement 0 msgbox MauvilleCity_Text_165EE2, 5 - jump MauvilleCity_EventScript_14C154 + goto MauvilleCity_EventScript_14C154 end MauvilleCity_Movement_14C2AA:: @ 814C2AA @@ -285,11 +285,11 @@ MauvilleCity_EventScript_14C2F2:: @ 814C2F2 lock faceplayer checkflag 209 - jumpeq MauvilleCity_EventScript_14C368 + goto_if_eq MauvilleCity_EventScript_14C368 compare 0x40ba, 2 - jumpeq MauvilleCity_EventScript_14C33C + goto_if_eq MauvilleCity_EventScript_14C33C checkflag 208 - jumpeq MauvilleCity_EventScript_14C332 + goto_if_eq MauvilleCity_EventScript_14C332 msgbox MauvilleCity_Text_1661C1, 4 giveitem ITEM_BASEMENT_KEY setflag 208 @@ -306,7 +306,7 @@ MauvilleCity_EventScript_14C33C:: @ 814C33C msgbox MauvilleCity_Text_1663EB, 4 giveitem ITEM_TM24 compare RESULT, 0 - jumpeq MauvilleCity_EventScript_1A029B + goto_if_eq MauvilleCity_EventScript_1A029B setflag 209 msgbox MauvilleCity_Text_166488, 4 release diff --git a/data/scripts/maps/MauvilleCity_BikeShop.inc b/data/scripts/maps/MauvilleCity_BikeShop.inc index cb3b8505b..a93ff5170 100644 --- a/data/scripts/maps/MauvilleCity_BikeShop.inc +++ b/data/scripts/maps/MauvilleCity_BikeShop.inc @@ -5,28 +5,28 @@ MauvilleCity_BikeShop_EventScript_156796:: @ 8156796 lock faceplayer checkflag 90 - jumpeq MauvilleCity_BikeShop_EventScript_15686E + goto_if_eq MauvilleCity_BikeShop_EventScript_15686E checkflag 89 - jumpeq MauvilleCity_BikeShop_EventScript_1567D1 + goto_if_eq MauvilleCity_BikeShop_EventScript_1567D1 msgbox MauvilleCity_BikeShop_Text_180F9F, 4 msgbox MauvilleCity_BikeShop_Text_181016, 5 compare RESULT, 1 - jumpeq MauvilleCity_BikeShop_EventScript_156824 + goto_if_eq MauvilleCity_BikeShop_EventScript_156824 compare RESULT, 0 - jumpeq MauvilleCity_BikeShop_EventScript_156817 + goto_if_eq MauvilleCity_BikeShop_EventScript_156817 end MauvilleCity_BikeShop_EventScript_1567D1:: @ 81567D1 msgbox MauvilleCity_BikeShop_Text_181016, 5 compare RESULT, 1 - jumpeq MauvilleCity_BikeShop_EventScript_156824 + goto_if_eq MauvilleCity_BikeShop_EventScript_156824 compare RESULT, 0 - jumpeq MauvilleCity_BikeShop_EventScript_156817 + goto_if_eq MauvilleCity_BikeShop_EventScript_156817 end MauvilleCity_BikeShop_EventScript_1567F0:: @ 81567F0 message MauvilleCity_BikeShop_Text_1810B1 - waittext + waitmessage multichoice 21, 8, 12, 1 switch RESULT case 0, MauvilleCity_BikeShop_EventScript_15682D @@ -41,43 +41,43 @@ MauvilleCity_BikeShop_EventScript_156817:: @ 8156817 MauvilleCity_BikeShop_EventScript_156824:: @ 8156824 setflag 90 - jump MauvilleCity_BikeShop_EventScript_1567F0 + goto MauvilleCity_BikeShop_EventScript_1567F0 end MauvilleCity_BikeShop_EventScript_15682D:: @ 815682D msgbox MauvilleCity_BikeShop_Text_181332, 4 giveitem ITEM_MACH_BIKE - jump MauvilleCity_BikeShop_EventScript_156861 + goto MauvilleCity_BikeShop_EventScript_156861 end MauvilleCity_BikeShop_EventScript_156847:: @ 8156847 msgbox MauvilleCity_BikeShop_Text_18134A, 4 giveitem ITEM_ACRO_BIKE - jump MauvilleCity_BikeShop_EventScript_156861 + goto MauvilleCity_BikeShop_EventScript_156861 end MauvilleCity_BikeShop_EventScript_156861:: @ 8156861 msgbox MauvilleCity_BikeShop_Text_181362, 4 - special 130 + special SwapRegisteredBike release end MauvilleCity_BikeShop_EventScript_15686E:: @ 815686E msgbox MauvilleCity_BikeShop_Text_1813A0, 5 compare RESULT, 1 - jumpeq MauvilleCity_BikeShop_EventScript_15688D + goto_if_eq MauvilleCity_BikeShop_EventScript_15688D compare RESULT, 0 - jumpeq MauvilleCity_BikeShop_EventScript_1568BF + goto_if_eq MauvilleCity_BikeShop_EventScript_1568BF end MauvilleCity_BikeShop_EventScript_15688D:: @ 815688D msgbox MauvilleCity_BikeShop_Text_1813D4, 4 checkitem ITEM_ACRO_BIKE, 1 compare RESULT, 1 - jumpeq MauvilleCity_BikeShop_EventScript_1568C9 + goto_if_eq MauvilleCity_BikeShop_EventScript_1568C9 checkitem ITEM_MACH_BIKE, 1 compare RESULT, 1 - jumpeq MauvilleCity_BikeShop_EventScript_1568EA + goto_if_eq MauvilleCity_BikeShop_EventScript_1568EA msgbox MauvilleCity_BikeShop_Text_181498, 4 release end @@ -88,19 +88,19 @@ MauvilleCity_BikeShop_EventScript_1568BF:: @ 81568BF end MauvilleCity_BikeShop_EventScript_1568C9:: @ 81568C9 - inccounter GAME_STAT_TRADED_BIKES + incrementgamestat GAME_STAT_TRADED_BIKES msgbox MauvilleCity_BikeShop_Text_181439, 4 removeitem ITEM_ACRO_BIKE, 1 giveitem ITEM_MACH_BIKE - jump MauvilleCity_BikeShop_EventScript_156861 + goto MauvilleCity_BikeShop_EventScript_156861 end MauvilleCity_BikeShop_EventScript_1568EA:: @ 81568EA - inccounter GAME_STAT_TRADED_BIKES + incrementgamestat GAME_STAT_TRADED_BIKES msgbox MauvilleCity_BikeShop_Text_181408, 4 removeitem ITEM_MACH_BIKE, 1 giveitem ITEM_ACRO_BIKE - jump MauvilleCity_BikeShop_EventScript_156861 + goto MauvilleCity_BikeShop_EventScript_156861 end MauvilleCity_BikeShop_EventScript_15690B:: @ 815690B @@ -109,8 +109,8 @@ MauvilleCity_BikeShop_EventScript_15690B:: @ 815690B MauvilleCity_BikeShop_EventScript_156914:: @ 8156914 message MauvilleCity_BikeShop_Text_1815EA - waittext - jump MauvilleCity_BikeShop_EventScript_156920 + waitmessage + goto MauvilleCity_BikeShop_EventScript_156920 end MauvilleCity_BikeShop_EventScript_156920:: @ 8156920 @@ -125,20 +125,20 @@ MauvilleCity_BikeShop_EventScript_156920:: @ 8156920 MauvilleCity_BikeShop_EventScript_156962:: @ 8156962 message MauvilleCity_BikeShop_Text_18162C - waittext - jump MauvilleCity_BikeShop_EventScript_156920 + waitmessage + goto MauvilleCity_BikeShop_EventScript_156920 end MauvilleCity_BikeShop_EventScript_15696E:: @ 815696E message MauvilleCity_BikeShop_Text_1816F5 - waittext - jump MauvilleCity_BikeShop_EventScript_156920 + waitmessage + goto MauvilleCity_BikeShop_EventScript_156920 end MauvilleCity_BikeShop_EventScript_15697A:: @ 815697A message MauvilleCity_BikeShop_Text_1817BF - waittext - jump MauvilleCity_BikeShop_EventScript_156920 + waitmessage + goto MauvilleCity_BikeShop_EventScript_156920 end MauvilleCity_BikeShop_EventScript_156986:: @ 8156986 @@ -147,8 +147,8 @@ MauvilleCity_BikeShop_EventScript_156986:: @ 8156986 MauvilleCity_BikeShop_EventScript_156988:: @ 8156988 message MauvilleCity_BikeShop_Text_181892 - waittext - jump MauvilleCity_BikeShop_EventScript_156994 + waitmessage + goto MauvilleCity_BikeShop_EventScript_156994 end MauvilleCity_BikeShop_EventScript_156994:: @ 8156994 @@ -163,20 +163,20 @@ MauvilleCity_BikeShop_EventScript_156994:: @ 8156994 MauvilleCity_BikeShop_EventScript_1569D6:: @ 81569D6 message MauvilleCity_BikeShop_Text_1818D4 - waittext - jump MauvilleCity_BikeShop_EventScript_156994 + waitmessage + goto MauvilleCity_BikeShop_EventScript_156994 end MauvilleCity_BikeShop_EventScript_1569E2:: @ 81569E2 message MauvilleCity_BikeShop_Text_18199A - waittext - jump MauvilleCity_BikeShop_EventScript_156994 + waitmessage + goto MauvilleCity_BikeShop_EventScript_156994 end MauvilleCity_BikeShop_EventScript_1569EE:: @ 81569EE message MauvilleCity_BikeShop_Text_181A3D - waittext - jump MauvilleCity_BikeShop_EventScript_156994 + waitmessage + goto MauvilleCity_BikeShop_EventScript_156994 end MauvilleCity_BikeShop_EventScript_1569FA:: @ 81569FA diff --git a/data/scripts/maps/MauvilleCity_GameCorner.inc b/data/scripts/maps/MauvilleCity_GameCorner.inc index a0aab4238..2e0231287 100644 --- a/data/scripts/maps/MauvilleCity_GameCorner.inc +++ b/data/scripts/maps/MauvilleCity_GameCorner.inc @@ -7,65 +7,65 @@ MauvilleCity_GameCorner_EventScript_156A34:: @ 8156A34 msgbox MauvilleCity_GameCorner_Text_181C35, 4 checkitem ITEM_COIN_CASE, 1 compare RESULT, 0 - jumpeq MauvilleCity_GameCorner_EventScript_156B32 + goto_if_eq MauvilleCity_GameCorner_EventScript_156B32 message MauvilleCity_GameCorner_Text_181CB4 - waittext - showmoney 0, 0 - snop - showcoins 0, 5 - jump MauvilleCity_GameCorner_EventScript_156A60 + waitmessage + showmoneybox 0, 0 + nop + showcoinsbox 0, 5 + goto MauvilleCity_GameCorner_EventScript_156A60 MauvilleCity_GameCorner_EventScript_156A60:: @ 8156A60 - multichoicedef 15, 0, 49, 0, 0 + multichoicedefault 15, 0, 49, 0, 0 switch RESULT case 0, MauvilleCity_GameCorner_EventScript_156AAE case 1, MauvilleCity_GameCorner_EventScript_156AF0 - jump MauvilleCity_GameCorner_EventScript_156B4C + goto MauvilleCity_GameCorner_EventScript_156B4C end @ 8156A87 - multichoicedef 15, 0, 49, 1, 0 + multichoicedefault 15, 0, 49, 1, 0 switch RESULT case 0, MauvilleCity_GameCorner_EventScript_156AAE case 1, MauvilleCity_GameCorner_EventScript_156AF0 - jump MauvilleCity_GameCorner_EventScript_156B4C + goto MauvilleCity_GameCorner_EventScript_156B4C end MauvilleCity_GameCorner_EventScript_156AAE:: @ 8156AAE checkcoins 16385 compare 0x4001, 9950 - jumpif 4, MauvilleCity_GameCorner_EventScript_156B5C + goto_if 4, MauvilleCity_GameCorner_EventScript_156B5C checkmoney 0x3e8, 0 compare RESULT, 0 - jumpeq MauvilleCity_GameCorner_EventScript_156B3C + goto_if_eq MauvilleCity_GameCorner_EventScript_156B3C givecoins 50 - paymoney 0x3e8, 0 - updatemoney 0, 0 - snop - updatecoins 0, 5 - playsfx 95 + takemoney 0x3e8, 0 + updatemoneybox 0, 0 + nop + updatecoinsbox 0, 5 + playse 95 msgbox MauvilleCity_GameCorner_Text_181CFE, 4 - hidemoney 0, 0 - hidecoins 0, 5 + hidemoneybox 0, 0 + hidecoinsbox 0, 5 release end MauvilleCity_GameCorner_EventScript_156AF0:: @ 8156AF0 checkcoins 16385 compare 0x4001, 9500 - jumpif 4, MauvilleCity_GameCorner_EventScript_156B5C + goto_if 4, MauvilleCity_GameCorner_EventScript_156B5C checkmoney 0x2710, 0 compare RESULT, 0 - jumpeq MauvilleCity_GameCorner_EventScript_156B3C + goto_if_eq MauvilleCity_GameCorner_EventScript_156B3C givecoins 500 - paymoney 0x2710, 0 - updatemoney 0, 0 - snop - updatecoins 0, 5 - playsfx 95 + takemoney 0x2710, 0 + updatemoneybox 0, 0 + nop + updatecoinsbox 0, 5 + playse 95 msgbox MauvilleCity_GameCorner_Text_181CFE, 4 - hidemoney 0, 0 - hidecoins 0, 5 + hidemoneybox 0, 0 + hidecoinsbox 0, 5 release end @@ -76,22 +76,22 @@ MauvilleCity_GameCorner_EventScript_156B32:: @ 8156B32 MauvilleCity_GameCorner_EventScript_156B3C:: @ 8156B3C msgbox MauvilleCity_GameCorner_Text_181D28, 4 - hidemoney 0, 0 - hidecoins 0, 5 + hidemoneybox 0, 0 + hidecoinsbox 0, 5 release end MauvilleCity_GameCorner_EventScript_156B4C:: @ 8156B4C msgbox MauvilleCity_GameCorner_Text_181D73, 4 - hidemoney 0, 0 - hidecoins 0, 5 + hidemoneybox 0, 0 + hidecoinsbox 0, 5 release end MauvilleCity_GameCorner_EventScript_156B5C:: @ 8156B5C msgbox MauvilleCity_GameCorner_Text_181D57, 4 - hidemoney 0, 0 - hidecoins 0, 5 + hidemoneybox 0, 0 + hidecoinsbox 0, 5 release end @@ -101,21 +101,21 @@ MauvilleCity_GameCorner_EventScript_156B6C:: @ 8156B6C msgbox MauvilleCity_GameCorner_Text_181DE1, 4 checkitem ITEM_COIN_CASE, 1 compare RESULT, 1 - jumpeq MauvilleCity_GameCorner_EventScript_156B88 + goto_if_eq MauvilleCity_GameCorner_EventScript_156B88 release end MauvilleCity_GameCorner_EventScript_156B88:: @ 8156B88 message MauvilleCity_GameCorner_Text_181E17 - waittext - showcoins 0, 0 + waitmessage + showcoinsbox 0, 0 setvar 0x4001, 0 - jump MauvilleCity_GameCorner_EventScript_156BA6 + goto MauvilleCity_GameCorner_EventScript_156BA6 MauvilleCity_GameCorner_EventScript_156B9B:: @ 8156B9B message MauvilleCity_GameCorner_Text_181E17 - waittext - jump MauvilleCity_GameCorner_EventScript_156BA6 + waitmessage + goto MauvilleCity_GameCorner_EventScript_156BA6 MauvilleCity_GameCorner_EventScript_156BA6:: @ 8156BA6 multichoice 12, 0, 48, 0 @@ -124,28 +124,28 @@ MauvilleCity_GameCorner_EventScript_156BA6:: @ 8156BA6 case 1, MauvilleCity_GameCorner_EventScript_156BF0 case 2, MauvilleCity_GameCorner_EventScript_156BFE case 3, MauvilleCity_GameCorner_EventScript_156D0D - jump MauvilleCity_GameCorner_EventScript_156D0D + goto MauvilleCity_GameCorner_EventScript_156D0D end MauvilleCity_GameCorner_EventScript_156BE2:: @ 8156BE2 setvar 0x4001, 1 - bufferdecor 0, 88 - jump MauvilleCity_GameCorner_EventScript_156C0C + getdecorname 0, 88 + goto MauvilleCity_GameCorner_EventScript_156C0C MauvilleCity_GameCorner_EventScript_156BF0:: @ 8156BF0 setvar 0x4001, 2 - bufferdecor 0, 89 - jump MauvilleCity_GameCorner_EventScript_156C0C + getdecorname 0, 89 + goto MauvilleCity_GameCorner_EventScript_156C0C MauvilleCity_GameCorner_EventScript_156BFE:: @ 8156BFE setvar 0x4001, 3 - bufferdecor 0, 90 - jump MauvilleCity_GameCorner_EventScript_156C0C + getdecorname 0, 90 + goto MauvilleCity_GameCorner_EventScript_156C0C MauvilleCity_GameCorner_EventScript_156C0C:: @ 8156C0C msgbox MauvilleCity_GameCorner_Text_181E33, 5 compare RESULT, 0 - jumpeq MauvilleCity_GameCorner_EventScript_156D0D + goto_if_eq MauvilleCity_GameCorner_EventScript_156D0D switch 0x4001 case 1, MauvilleCity_GameCorner_EventScript_156C46 case 2, MauvilleCity_GameCorner_EventScript_156C80 @@ -155,64 +155,64 @@ MauvilleCity_GameCorner_EventScript_156C0C:: @ 8156C0C MauvilleCity_GameCorner_EventScript_156C46:: @ 8156C46 checkcoins 16386 compare 0x4002, 1000 - jumpif 0, MauvilleCity_GameCorner_EventScript_156CF4 - bufferdecor 1, 88 + goto_if 0, MauvilleCity_GameCorner_EventScript_156CF4 + getdecorname 1, 88 checkdecor 88 compare RESULT, 0 - jumpeq MauvilleCity_GameCorner_EventScript_156D02 - removecoins 1000 + goto_if_eq MauvilleCity_GameCorner_EventScript_156D02 + takecoins 1000 adddecor 88 - updatecoins 0, 0 - playsfx 95 + updatecoinsbox 0, 0 + playse 95 msgbox MauvilleCity_GameCorner_Text_181E49, 4 - jump MauvilleCity_GameCorner_EventScript_156B9B + goto MauvilleCity_GameCorner_EventScript_156B9B end MauvilleCity_GameCorner_EventScript_156C80:: @ 8156C80 checkcoins 16386 compare 0x4002, 1000 - jumpif 0, MauvilleCity_GameCorner_EventScript_156CF4 - bufferdecor 1, 89 + goto_if 0, MauvilleCity_GameCorner_EventScript_156CF4 + getdecorname 1, 89 checkdecor 89 compare RESULT, 0 - jumpeq MauvilleCity_GameCorner_EventScript_156D02 - removecoins 1000 + goto_if_eq MauvilleCity_GameCorner_EventScript_156D02 + takecoins 1000 adddecor 89 - updatecoins 0, 0 - playsfx 95 + updatecoinsbox 0, 0 + playse 95 msgbox MauvilleCity_GameCorner_Text_181E49, 4 - jump MauvilleCity_GameCorner_EventScript_156B9B + goto MauvilleCity_GameCorner_EventScript_156B9B end MauvilleCity_GameCorner_EventScript_156CBA:: @ 8156CBA checkcoins 16386 compare 0x4002, 1000 - jumpif 0, MauvilleCity_GameCorner_EventScript_156CF4 - bufferdecor 1, 90 + goto_if 0, MauvilleCity_GameCorner_EventScript_156CF4 + getdecorname 1, 90 checkdecor 90 compare RESULT, 0 - jumpeq MauvilleCity_GameCorner_EventScript_156D02 - removecoins 1000 + goto_if_eq MauvilleCity_GameCorner_EventScript_156D02 + takecoins 1000 adddecor 90 - updatecoins 0, 0 - playsfx 95 + updatecoinsbox 0, 0 + playse 95 msgbox MauvilleCity_GameCorner_Text_181E49, 4 - jump MauvilleCity_GameCorner_EventScript_156B9B + goto MauvilleCity_GameCorner_EventScript_156B9B end MauvilleCity_GameCorner_EventScript_156CF4:: @ 8156CF4 msgbox MauvilleCity_GameCorner_Text_181E76, 4 - jump MauvilleCity_GameCorner_EventScript_156B9B + goto MauvilleCity_GameCorner_EventScript_156B9B end MauvilleCity_GameCorner_EventScript_156D02:: @ 8156D02 call MauvilleCity_GameCorner_EventScript_1A02B8 - jump MauvilleCity_GameCorner_EventScript_156B9B + goto MauvilleCity_GameCorner_EventScript_156B9B end MauvilleCity_GameCorner_EventScript_156D0D:: @ 8156D0D msgbox MauvilleCity_GameCorner_Text_181EC2, 4 - hidecoins 0, 0 + hidecoinsbox 0, 0 release end @@ -222,21 +222,21 @@ MauvilleCity_GameCorner_EventScript_156D1A:: @ 8156D1A msgbox MauvilleCity_GameCorner_Text_181DE1, 4 checkitem ITEM_COIN_CASE, 1 compare RESULT, 1 - jumpeq MauvilleCity_GameCorner_EventScript_156D36 + goto_if_eq MauvilleCity_GameCorner_EventScript_156D36 release end MauvilleCity_GameCorner_EventScript_156D36:: @ 8156D36 message MauvilleCity_GameCorner_Text_181E17 - waittext - showcoins 0, 0 + waitmessage + showcoinsbox 0, 0 setvar 0x4001, 0 - jump MauvilleCity_GameCorner_EventScript_156D54 + goto MauvilleCity_GameCorner_EventScript_156D54 MauvilleCity_GameCorner_EventScript_156D49:: @ 8156D49 message MauvilleCity_GameCorner_Text_181E17 - waittext - jump MauvilleCity_GameCorner_EventScript_156D54 + waitmessage + goto MauvilleCity_GameCorner_EventScript_156D54 MauvilleCity_GameCorner_EventScript_156D54:: @ 8156D54 multichoice 12, 0, 55, 0 @@ -247,38 +247,38 @@ MauvilleCity_GameCorner_EventScript_156D54:: @ 8156D54 case 3, MauvilleCity_GameCorner_EventScript_156DD0 case 4, MauvilleCity_GameCorner_EventScript_156DDE case 5, MauvilleCity_GameCorner_EventScript_156F77 - jump MauvilleCity_GameCorner_EventScript_156F77 + goto MauvilleCity_GameCorner_EventScript_156F77 end MauvilleCity_GameCorner_EventScript_156DA6:: @ 8156DA6 setvar 0x4001, 1 - bufferitem 0, ITEM_TM32 - jump MauvilleCity_GameCorner_EventScript_156DEC + getitemname 0, ITEM_TM32 + goto MauvilleCity_GameCorner_EventScript_156DEC MauvilleCity_GameCorner_EventScript_156DB4:: @ 8156DB4 setvar 0x4001, 2 - bufferitem 0, ITEM_TM29 - jump MauvilleCity_GameCorner_EventScript_156DEC + getitemname 0, ITEM_TM29 + goto MauvilleCity_GameCorner_EventScript_156DEC MauvilleCity_GameCorner_EventScript_156DC2:: @ 8156DC2 setvar 0x4001, 3 - bufferitem 0, ITEM_TM35 - jump MauvilleCity_GameCorner_EventScript_156DEC + getitemname 0, ITEM_TM35 + goto MauvilleCity_GameCorner_EventScript_156DEC MauvilleCity_GameCorner_EventScript_156DD0:: @ 8156DD0 setvar 0x4001, 4 - bufferitem 0, ITEM_TM24 - jump MauvilleCity_GameCorner_EventScript_156DEC + getitemname 0, ITEM_TM24 + goto MauvilleCity_GameCorner_EventScript_156DEC MauvilleCity_GameCorner_EventScript_156DDE:: @ 8156DDE setvar 0x4001, 5 - bufferitem 0, ITEM_TM13 - jump MauvilleCity_GameCorner_EventScript_156DEC + getitemname 0, ITEM_TM13 + goto MauvilleCity_GameCorner_EventScript_156DEC MauvilleCity_GameCorner_EventScript_156DEC:: @ 8156DEC msgbox MauvilleCity_GameCorner_Text_181E33, 5 compare RESULT, 0 - jumpeq MauvilleCity_GameCorner_EventScript_156F77 + goto_if_eq MauvilleCity_GameCorner_EventScript_156F77 switch 0x4001 case 1, MauvilleCity_GameCorner_EventScript_156E3C case 2, MauvilleCity_GameCorner_EventScript_156E76 @@ -290,91 +290,91 @@ MauvilleCity_GameCorner_EventScript_156DEC:: @ 8156DEC MauvilleCity_GameCorner_EventScript_156E3C:: @ 8156E3C checkcoins 16386 compare 0x4002, 1500 - jumpif 0, MauvilleCity_GameCorner_EventScript_156F5E + goto_if 0, MauvilleCity_GameCorner_EventScript_156F5E checkitemspace ITEM_TM32, 1 compare RESULT, 0 - jumpeq MauvilleCity_GameCorner_EventScript_156F6C - removecoins 1500 + goto_if_eq MauvilleCity_GameCorner_EventScript_156F6C + takecoins 1500 additem ITEM_TM32, 1 - updatecoins 0, 0 - playsfx 95 + updatecoinsbox 0, 0 + playse 95 msgbox MauvilleCity_GameCorner_Text_181F08, 4 - jump MauvilleCity_GameCorner_EventScript_156D49 + goto MauvilleCity_GameCorner_EventScript_156D49 end MauvilleCity_GameCorner_EventScript_156E76:: @ 8156E76 checkcoins 16386 compare 0x4002, 3500 - jumpif 0, MauvilleCity_GameCorner_EventScript_156F5E + goto_if 0, MauvilleCity_GameCorner_EventScript_156F5E checkitemspace ITEM_TM29, 1 compare RESULT, 0 - jumpeq MauvilleCity_GameCorner_EventScript_156F6C - removecoins 3500 + goto_if_eq MauvilleCity_GameCorner_EventScript_156F6C + takecoins 3500 additem ITEM_TM29, 1 - updatecoins 0, 0 - playsfx 95 + updatecoinsbox 0, 0 + playse 95 msgbox MauvilleCity_GameCorner_Text_181F08, 4 - jump MauvilleCity_GameCorner_EventScript_156D49 + goto MauvilleCity_GameCorner_EventScript_156D49 end MauvilleCity_GameCorner_EventScript_156EB0:: @ 8156EB0 checkcoins 16386 compare 0x4002, 4000 - jumpif 0, MauvilleCity_GameCorner_EventScript_156F5E + goto_if 0, MauvilleCity_GameCorner_EventScript_156F5E checkitemspace ITEM_TM35, 1 compare RESULT, 0 - jumpeq MauvilleCity_GameCorner_EventScript_156F6C - removecoins 4000 + goto_if_eq MauvilleCity_GameCorner_EventScript_156F6C + takecoins 4000 additem ITEM_TM35, 1 - updatecoins 0, 0 - playsfx 95 + updatecoinsbox 0, 0 + playse 95 msgbox MauvilleCity_GameCorner_Text_181F08, 4 - jump MauvilleCity_GameCorner_EventScript_156D49 + goto MauvilleCity_GameCorner_EventScript_156D49 end MauvilleCity_GameCorner_EventScript_156EEA:: @ 8156EEA checkcoins 16386 compare 0x4002, 4000 - jumpif 0, MauvilleCity_GameCorner_EventScript_156F5E + goto_if 0, MauvilleCity_GameCorner_EventScript_156F5E checkitemspace ITEM_TM24, 1 compare RESULT, 0 - jumpeq MauvilleCity_GameCorner_EventScript_156F6C - removecoins 4000 + goto_if_eq MauvilleCity_GameCorner_EventScript_156F6C + takecoins 4000 additem ITEM_TM24, 1 - updatecoins 0, 0 - playsfx 95 + updatecoinsbox 0, 0 + playse 95 msgbox MauvilleCity_GameCorner_Text_181F08, 4 - jump MauvilleCity_GameCorner_EventScript_156D49 + goto MauvilleCity_GameCorner_EventScript_156D49 end MauvilleCity_GameCorner_EventScript_156F24:: @ 8156F24 checkcoins 16386 compare 0x4002, 4000 - jumpif 0, MauvilleCity_GameCorner_EventScript_156F5E + goto_if 0, MauvilleCity_GameCorner_EventScript_156F5E checkitemspace ITEM_TM13, 1 compare RESULT, 0 - jumpeq MauvilleCity_GameCorner_EventScript_156F6C - removecoins 4000 + goto_if_eq MauvilleCity_GameCorner_EventScript_156F6C + takecoins 4000 additem ITEM_TM13, 1 - updatecoins 0, 0 - playsfx 95 + updatecoinsbox 0, 0 + playse 95 msgbox MauvilleCity_GameCorner_Text_181F08, 4 - jump MauvilleCity_GameCorner_EventScript_156D49 + goto MauvilleCity_GameCorner_EventScript_156D49 end MauvilleCity_GameCorner_EventScript_156F5E:: @ 8156F5E msgbox MauvilleCity_GameCorner_Text_181E76, 4 - jump MauvilleCity_GameCorner_EventScript_156D49 + goto MauvilleCity_GameCorner_EventScript_156D49 end MauvilleCity_GameCorner_EventScript_156F6C:: @ 8156F6C call MauvilleCity_GameCorner_EventScript_1A02A5 - jump MauvilleCity_GameCorner_EventScript_156D49 + goto MauvilleCity_GameCorner_EventScript_156D49 end MauvilleCity_GameCorner_EventScript_156F77:: @ 8156F77 msgbox MauvilleCity_GameCorner_Text_181EC2, 4 - hidecoins 0, 0 + hidecoinsbox 0, 0 release end @@ -390,10 +390,10 @@ MauvilleCity_GameCorner_EventScript_156F96:: @ 8156F96 lock faceplayer checkflag 226 - jumpeq MauvilleCity_GameCorner_EventScript_157072 + goto_if_eq MauvilleCity_GameCorner_EventScript_157072 msgbox MauvilleCity_GameCorner_Text_181F3D, 5 compare RESULT, 0 - jumpeq MauvilleCity_GameCorner_EventScript_157068 + goto_if_eq MauvilleCity_GameCorner_EventScript_157068 switch 0x4023 case 0, MauvilleCity_GameCorner_EventScript_156FDB case 1, MauvilleCity_GameCorner_EventScript_157005 @@ -401,36 +401,36 @@ MauvilleCity_GameCorner_EventScript_156F96:: @ 8156F96 end MauvilleCity_GameCorner_EventScript_156FDB:: @ 8156FDB - bufferdecor 1, 88 + getdecorname 1, 88 checkdecor 88 compare RESULT, 0 - jumpeq MauvilleCity_GameCorner_EventScript_157059 + goto_if_eq MauvilleCity_GameCorner_EventScript_157059 msgbox MauvilleCity_GameCorner_Text_181F89, 4 givedecoration 88 setflag 226 - jump MauvilleCity_GameCorner_EventScript_157072 + goto MauvilleCity_GameCorner_EventScript_157072 end MauvilleCity_GameCorner_EventScript_157005:: @ 8157005 - bufferdecor 1, 89 + getdecorname 1, 89 checkdecor 89 compare RESULT, 0 - jumpeq MauvilleCity_GameCorner_EventScript_157059 + goto_if_eq MauvilleCity_GameCorner_EventScript_157059 msgbox MauvilleCity_GameCorner_Text_181F89, 4 givedecoration 89 setflag 226 - jump MauvilleCity_GameCorner_EventScript_157072 + goto MauvilleCity_GameCorner_EventScript_157072 end MauvilleCity_GameCorner_EventScript_15702F:: @ 815702F - bufferdecor 1, 90 + getdecorname 1, 90 checkdecor 90 compare RESULT, 0 - jumpeq MauvilleCity_GameCorner_EventScript_157059 + goto_if_eq MauvilleCity_GameCorner_EventScript_157059 msgbox MauvilleCity_GameCorner_Text_181F89, 4 givedecoration 90 setflag 226 - jump MauvilleCity_GameCorner_EventScript_157072 + goto MauvilleCity_GameCorner_EventScript_157072 end MauvilleCity_GameCorner_EventScript_157059:: @ 8157059 @@ -454,54 +454,54 @@ MauvilleCity_GameCorner_EventScript_15707C:: @ 815707C faceplayer checkitem ITEM_COIN_CASE, 1 compare RESULT, 1 - jumpeq MauvilleCity_GameCorner_EventScript_15709C + goto_if_eq MauvilleCity_GameCorner_EventScript_15709C msgbox MauvilleCity_GameCorner_Text_18201E, 4 - jump MauvilleCity_GameCorner_EventScript_157108 + goto MauvilleCity_GameCorner_EventScript_157108 end MauvilleCity_GameCorner_EventScript_15709C:: @ 815709C checkflag 225 - jumpeq MauvilleCity_GameCorner_EventScript_1570CA + goto_if_eq MauvilleCity_GameCorner_EventScript_1570CA checkcoins 16385 compare 0x4001, 1 - jumpif 4, MauvilleCity_GameCorner_EventScript_1570CA + goto_if 4, MauvilleCity_GameCorner_EventScript_1570CA setflag 225 givecoins 20 msgbox MauvilleCity_GameCorner_Text_18208E, 4 - playsfx 95 - jump MauvilleCity_GameCorner_EventScript_1570CA + playse 95 + goto MauvilleCity_GameCorner_EventScript_1570CA end MauvilleCity_GameCorner_EventScript_1570CA:: @ 81570CA msgbox MauvilleCity_GameCorner_Text_1820DD, 4 - jump MauvilleCity_GameCorner_EventScript_157108 + goto MauvilleCity_GameCorner_EventScript_157108 end MauvilleCity_GameCorner_EventScript_1570D8:: @ 81570D8 lock faceplayer msgbox MauvilleCity_GameCorner_Text_182120, 4 - jump MauvilleCity_GameCorner_EventScript_157108 + goto MauvilleCity_GameCorner_EventScript_157108 end MauvilleCity_GameCorner_EventScript_1570E8:: @ 81570E8 lock faceplayer msgbox MauvilleCity_GameCorner_Text_18217C, 4 - jump MauvilleCity_GameCorner_EventScript_157108 + goto MauvilleCity_GameCorner_EventScript_157108 end MauvilleCity_GameCorner_EventScript_1570F8:: @ 81570F8 lock faceplayer msgbox MauvilleCity_GameCorner_Text_182241, 4 - jump MauvilleCity_GameCorner_EventScript_157108 + goto MauvilleCity_GameCorner_EventScript_157108 end MauvilleCity_GameCorner_EventScript_157108:: @ 8157108 - closebutton - move LAST_TALKED, MauvilleCity_GameCorner_Movement_1A083D - waitmove 0 + closemessage + applymovement LAST_TALKED, MauvilleCity_GameCorner_Movement_1A083D + waitmovement 0 release end @@ -509,24 +509,24 @@ MauvilleCity_GameCorner_EventScript_157115:: @ 8157115 lock faceplayer msgbox MauvilleCity_GameCorner_Text_182272, 4 - jump MauvilleCity_GameCorner_EventScript_157108 + goto MauvilleCity_GameCorner_EventScript_157108 end MauvilleCity_GameCorner_EventScript_157125:: @ 8157125 lock faceplayer msgbox MauvilleCity_GameCorner_Text_1822F4, 4 - jump MauvilleCity_GameCorner_EventScript_157108 + goto MauvilleCity_GameCorner_EventScript_157108 end MauvilleCity_GameCorner_EventScript_157135:: @ 8157135 lockall checkitem ITEM_COIN_CASE, 1 compare RESULT, 0 - jumpeq MauvilleCity_GameCorner_EventScript_1572B5 + goto_if_eq MauvilleCity_GameCorner_EventScript_1572B5 setvar 0x8004, 0 - specialval RESULT, 286 - pokecasino RESULT + specialvar RESULT, sub_810F424 + playslotmachine RESULT releaseall end @@ -534,10 +534,10 @@ MauvilleCity_GameCorner_EventScript_157155:: @ 8157155 lockall checkitem ITEM_COIN_CASE, 1 compare RESULT, 0 - jumpeq MauvilleCity_GameCorner_EventScript_1572B5 + goto_if_eq MauvilleCity_GameCorner_EventScript_1572B5 setvar 0x8004, 1 - specialval RESULT, 286 - pokecasino RESULT + specialvar RESULT, sub_810F424 + playslotmachine RESULT releaseall end @@ -545,10 +545,10 @@ MauvilleCity_GameCorner_EventScript_157175:: @ 8157175 lockall checkitem ITEM_COIN_CASE, 1 compare RESULT, 0 - jumpeq MauvilleCity_GameCorner_EventScript_1572B5 + goto_if_eq MauvilleCity_GameCorner_EventScript_1572B5 setvar 0x8004, 2 - specialval RESULT, 286 - pokecasino RESULT + specialvar RESULT, sub_810F424 + playslotmachine RESULT releaseall end @@ -556,10 +556,10 @@ MauvilleCity_GameCorner_EventScript_157195:: @ 8157195 lockall checkitem ITEM_COIN_CASE, 1 compare RESULT, 0 - jumpeq MauvilleCity_GameCorner_EventScript_1572B5 + goto_if_eq MauvilleCity_GameCorner_EventScript_1572B5 setvar 0x8004, 3 - specialval RESULT, 286 - pokecasino RESULT + specialvar RESULT, sub_810F424 + playslotmachine RESULT releaseall end @@ -567,10 +567,10 @@ MauvilleCity_GameCorner_EventScript_1571B5:: @ 81571B5 lockall checkitem ITEM_COIN_CASE, 1 compare RESULT, 0 - jumpeq MauvilleCity_GameCorner_EventScript_1572B5 + goto_if_eq MauvilleCity_GameCorner_EventScript_1572B5 setvar 0x8004, 4 - specialval RESULT, 286 - pokecasino RESULT + specialvar RESULT, sub_810F424 + playslotmachine RESULT releaseall end @@ -578,10 +578,10 @@ MauvilleCity_GameCorner_EventScript_1571D5:: @ 81571D5 lockall checkitem ITEM_COIN_CASE, 1 compare RESULT, 0 - jumpeq MauvilleCity_GameCorner_EventScript_1572B5 + goto_if_eq MauvilleCity_GameCorner_EventScript_1572B5 setvar 0x8004, 5 - specialval RESULT, 286 - pokecasino RESULT + specialvar RESULT, sub_810F424 + playslotmachine RESULT releaseall end @@ -589,10 +589,10 @@ MauvilleCity_GameCorner_EventScript_1571F5:: @ 81571F5 lockall checkitem ITEM_COIN_CASE, 1 compare RESULT, 0 - jumpeq MauvilleCity_GameCorner_EventScript_1572B5 + goto_if_eq MauvilleCity_GameCorner_EventScript_1572B5 setvar 0x8004, 6 - specialval RESULT, 286 - pokecasino RESULT + specialvar RESULT, sub_810F424 + playslotmachine RESULT releaseall end @@ -600,10 +600,10 @@ MauvilleCity_GameCorner_EventScript_157215:: @ 8157215 lockall checkitem ITEM_COIN_CASE, 1 compare RESULT, 0 - jumpeq MauvilleCity_GameCorner_EventScript_1572B5 + goto_if_eq MauvilleCity_GameCorner_EventScript_1572B5 setvar 0x8004, 7 - specialval RESULT, 286 - pokecasino RESULT + specialvar RESULT, sub_810F424 + playslotmachine RESULT releaseall end @@ -611,10 +611,10 @@ MauvilleCity_GameCorner_EventScript_157235:: @ 8157235 lockall checkitem ITEM_COIN_CASE, 1 compare RESULT, 0 - jumpeq MauvilleCity_GameCorner_EventScript_1572B5 + goto_if_eq MauvilleCity_GameCorner_EventScript_1572B5 setvar 0x8004, 8 - specialval RESULT, 286 - pokecasino RESULT + specialvar RESULT, sub_810F424 + playslotmachine RESULT releaseall end @@ -622,10 +622,10 @@ MauvilleCity_GameCorner_EventScript_157255:: @ 8157255 lockall checkitem ITEM_COIN_CASE, 1 compare RESULT, 0 - jumpeq MauvilleCity_GameCorner_EventScript_1572B5 + goto_if_eq MauvilleCity_GameCorner_EventScript_1572B5 setvar 0x8004, 9 - specialval RESULT, 286 - pokecasino RESULT + specialvar RESULT, sub_810F424 + playslotmachine RESULT releaseall end @@ -633,10 +633,10 @@ MauvilleCity_GameCorner_EventScript_157275:: @ 8157275 lockall checkitem ITEM_COIN_CASE, 1 compare RESULT, 0 - jumpeq MauvilleCity_GameCorner_EventScript_1572B5 + goto_if_eq MauvilleCity_GameCorner_EventScript_1572B5 setvar 0x8004, 10 - specialval RESULT, 286 - pokecasino RESULT + specialvar RESULT, sub_810F424 + playslotmachine RESULT releaseall end @@ -644,10 +644,10 @@ MauvilleCity_GameCorner_EventScript_157295:: @ 8157295 lockall checkitem ITEM_COIN_CASE, 1 compare RESULT, 0 - jumpeq MauvilleCity_GameCorner_EventScript_1572B5 + goto_if_eq MauvilleCity_GameCorner_EventScript_1572B5 setvar 0x8004, 11 - specialval RESULT, 286 - pokecasino RESULT + specialvar RESULT, sub_810F424 + playslotmachine RESULT releaseall end diff --git a/data/scripts/maps/MauvilleCity_Gym.inc b/data/scripts/maps/MauvilleCity_Gym.inc index 9abac00d7..5221add7a 100644 --- a/data/scripts/maps/MauvilleCity_Gym.inc +++ b/data/scripts/maps/MauvilleCity_Gym.inc @@ -4,7 +4,7 @@ MauvilleCity_Gym_MapScripts:: @ 8156450 MauvilleCity_Gym_MapScript1_156456:: @ 8156456 checkflag 1208 - jumpeq MauvilleCity_Gym_EventScript_1565A7 + goto_if_eq MauvilleCity_Gym_EventScript_1565A7 switch 0x4093 case 0, MauvilleCity_Gym_EventScript_156491 case 1, MauvilleCity_Gym_EventScript_15657D @@ -14,7 +14,7 @@ MauvilleCity_Gym_MapScript1_156456:: @ 8156456 MauvilleCity_Gym_EventScript_156491:: @ 8156491 checkflag 99 - jumpeq MauvilleCity_Gym_EventScript_15649B + goto_if_eq MauvilleCity_Gym_EventScript_15649B end MauvilleCity_Gym_EventScript_15649B:: @ 815649B @@ -47,58 +47,58 @@ MauvilleCity_Gym_EventScript_15649B:: @ 815649B MauvilleCity_Gym_EventScript_15657D:: @ 815657D setvar 0x8004, 0 - special 140 - jump MauvilleCity_Gym_EventScript_156491 + special MauvilleGymSpecial1 + goto MauvilleCity_Gym_EventScript_156491 end MauvilleCity_Gym_EventScript_15658B:: @ 815658B setvar 0x8004, 1 - special 140 - jump MauvilleCity_Gym_EventScript_156491 + special MauvilleGymSpecial1 + goto MauvilleCity_Gym_EventScript_156491 end MauvilleCity_Gym_EventScript_156599:: @ 8156599 setvar 0x8004, 2 - special 140 - jump MauvilleCity_Gym_EventScript_156491 + special MauvilleGymSpecial1 + goto MauvilleCity_Gym_EventScript_156491 end MauvilleCity_Gym_EventScript_1565A7:: @ 81565A7 - special 144 + special MauvilleGymSpecial3 end MauvilleCity_Gym_EventScript_1565AB:: @ 81565AB trainerbattle 1, OPPONENT_WATTSON, 0, MauvilleCity_Gym_Text_180C32, MauvilleCity_Gym_Text_180D64, MauvilleCity_Gym_EventScript_1565DB checkflag 167 - jumpif 0, MauvilleCity_Gym_EventScript_15661D + goto_if 0, MauvilleCity_Gym_EventScript_15661D compare 0x40ba, 2 - jumpeq MauvilleCity_Gym_EventScript_156641 + goto_if_eq MauvilleCity_Gym_EventScript_156641 msgbox MauvilleCity_Gym_Text_180EDB, 4 release end MauvilleCity_Gym_EventScript_1565DB:: @ 81565DB message MauvilleCity_Gym_Text_180DAF - waittext + waitmessage call MauvilleCity_Gym_EventScript_1A02C5 msgbox MauvilleCity_Gym_Text_180DDA, 4 setflag 1208 setflag 2057 addvar 0x4085, 1 compare 0x4085, 6 - callif 1, MauvilleCity_Gym_EventScript_1A00FB + call_if 1, MauvilleCity_Gym_EventScript_1A00FB setvar 0x8008, 3 call MauvilleCity_Gym_EventScript_1A01C0 - special 144 - special 142 - playsfx 44 - jump MauvilleCity_Gym_EventScript_15661D + special MauvilleGymSpecial3 + special DrawWholeMapView + playse 44 + goto MauvilleCity_Gym_EventScript_15661D end MauvilleCity_Gym_EventScript_15661D:: @ 815661D giveitem ITEM_TM34 compare RESULT, 0 - jumpeq MauvilleCity_Gym_EventScript_1A029B + goto_if_eq MauvilleCity_Gym_EventScript_1A029B msgbox MauvilleCity_Gym_Text_180E76, 4 setflag 167 release @@ -112,45 +112,45 @@ MauvilleCity_Gym_EventScript_156641:: @ 8156641 MauvilleCity_Gym_EventScript_15664B:: @ 815664B lockall checkflag 1208 - jumpeq MauvilleCity_Gym_EventScript_1566DA + goto_if_eq MauvilleCity_Gym_EventScript_1566DA compare 0x4093, 1 - jumpeq MauvilleCity_Gym_EventScript_1566DA + goto_if_eq MauvilleCity_Gym_EventScript_1566DA setvar 0x4093, 1 setvar 0x8004, 0 - jump MauvilleCity_Gym_EventScript_1566BA + goto MauvilleCity_Gym_EventScript_1566BA end MauvilleCity_Gym_EventScript_156670:: @ 8156670 lockall checkflag 1208 - jumpeq MauvilleCity_Gym_EventScript_1566DA + goto_if_eq MauvilleCity_Gym_EventScript_1566DA compare 0x4093, 2 - jumpeq MauvilleCity_Gym_EventScript_1566DA + goto_if_eq MauvilleCity_Gym_EventScript_1566DA setvar 0x4093, 2 setvar 0x8004, 1 - jump MauvilleCity_Gym_EventScript_1566BA + goto MauvilleCity_Gym_EventScript_1566BA end MauvilleCity_Gym_EventScript_156695:: @ 8156695 lockall checkflag 1208 - jumpeq MauvilleCity_Gym_EventScript_1566DA + goto_if_eq MauvilleCity_Gym_EventScript_1566DA compare 0x4093, 3 - jumpeq MauvilleCity_Gym_EventScript_1566DA + goto_if_eq MauvilleCity_Gym_EventScript_1566DA setvar 0x4093, 3 setvar 0x8004, 2 - jump MauvilleCity_Gym_EventScript_1566BA + goto MauvilleCity_Gym_EventScript_1566BA end MauvilleCity_Gym_EventScript_1566BA:: @ 81566BA - special 139 - special 140 - special 142 - playsfx 44 + special MauvilleGymSpecial2 + special MauvilleGymSpecial1 + special DrawWholeMapView + playse 44 checkflag 99 - jumpeq MauvilleCity_Gym_EventScript_1566E1 + goto_if_eq MauvilleCity_Gym_EventScript_1566E1 checkflag 99 - jumpif 0, MauvilleCity_Gym_EventScript_1566DC + goto_if 0, MauvilleCity_Gym_EventScript_1566DC releaseall end @@ -192,7 +192,7 @@ MauvilleCity_Gym_EventScript_156742:: @ 8156742 lock faceplayer checkflag 1208 - jumpeq MauvilleCity_Gym_EventScript_156757 + goto_if_eq MauvilleCity_Gym_EventScript_156757 msgbox MauvilleCity_Gym_Text_180815, 4 release end @@ -205,15 +205,15 @@ MauvilleCity_Gym_EventScript_156757:: @ 8156757 MauvilleCity_Gym_EventScript_156761:: @ 8156761 lockall checkflag 2057 - jumpeq MauvilleCity_Gym_EventScript_156781 - jump MauvilleCity_Gym_EventScript_15678B + goto_if_eq MauvilleCity_Gym_EventScript_156781 + goto MauvilleCity_Gym_EventScript_15678B end MauvilleCity_Gym_EventScript_156771:: @ 8156771 lockall checkflag 2057 - jumpeq MauvilleCity_Gym_EventScript_156781 - jump MauvilleCity_Gym_EventScript_15678B + goto_if_eq MauvilleCity_Gym_EventScript_156781 + goto MauvilleCity_Gym_EventScript_15678B end MauvilleCity_Gym_EventScript_156781:: @ 8156781 diff --git a/data/scripts/maps/MauvilleCity_House1.inc b/data/scripts/maps/MauvilleCity_House1.inc index 48ee31be5..e76564847 100644 --- a/data/scripts/maps/MauvilleCity_House1.inc +++ b/data/scripts/maps/MauvilleCity_House1.inc @@ -5,7 +5,7 @@ MauvilleCity_House1_EventScript_1569FD:: @ 81569FD lock faceplayer checkflag 107 - jumpeq MauvilleCity_House1_EventScript_156A29 + goto_if_eq MauvilleCity_House1_EventScript_156A29 msgbox MauvilleCity_House1_Text_181B1A, 4 giveitem ITEM_HM06 setflag 107 diff --git a/data/scripts/maps/MauvilleCity_House2.inc b/data/scripts/maps/MauvilleCity_House2.inc index 8a73af034..a500a246e 100644 --- a/data/scripts/maps/MauvilleCity_House2.inc +++ b/data/scripts/maps/MauvilleCity_House2.inc @@ -5,25 +5,25 @@ MauvilleCity_House2_EventScript_1572C0:: @ 81572C0 lock faceplayer checkflag 258 - jumpeq MauvilleCity_House2_EventScript_15733D + goto_if_eq MauvilleCity_House2_EventScript_15733D msgbox MauvilleCity_House2_Text_18244E, 4 checkitem ITEM_HARBOR_MAIL, 1 compare RESULT, 1 - jumpeq MauvilleCity_House2_EventScript_1572E5 + goto_if_eq MauvilleCity_House2_EventScript_1572E5 release end MauvilleCity_House2_EventScript_1572E5:: @ 81572E5 - playsfx 21 - move LAST_TALKED, MauvilleCity_House2_Movement_1A0833 - waitmove 0 - move LAST_TALKED, MauvilleCity_House2_Movement_1A0835 - waitmove 0 + playse 21 + applymovement LAST_TALKED, MauvilleCity_House2_Movement_1A0833 + waitmovement 0 + applymovement LAST_TALKED, MauvilleCity_House2_Movement_1A0835 + waitmovement 0 msgbox MauvilleCity_House2_Text_1824D8, 5 compare RESULT, 1 - jumpeq MauvilleCity_House2_EventScript_15731B + goto_if_eq MauvilleCity_House2_EventScript_15731B compare RESULT, 0 - jumpeq MauvilleCity_House2_EventScript_157347 + goto_if_eq MauvilleCity_House2_EventScript_157347 end MauvilleCity_House2_EventScript_15731B:: @ 815731B @@ -31,7 +31,7 @@ MauvilleCity_House2_EventScript_15731B:: @ 815731B removeitem ITEM_HARBOR_MAIL, 1 giveitem ITEM_COIN_CASE setflag 258 - jump MauvilleCity_House2_EventScript_15733D + goto MauvilleCity_House2_EventScript_15733D end MauvilleCity_House2_EventScript_15733D:: @ 815733D diff --git a/data/scripts/maps/MauvilleCity_Mart.inc b/data/scripts/maps/MauvilleCity_Mart.inc index fac5906ad..0dd66eddf 100644 --- a/data/scripts/maps/MauvilleCity_Mart.inc +++ b/data/scripts/maps/MauvilleCity_Mart.inc @@ -5,7 +5,7 @@ MauvilleCity_Mart_EventScript_1573BE:: @ 81573BE lock faceplayer message MauvilleCity_Mart_Text_1A0BE4 - waittext + waitmessage pokemart MauvilleCity_Mart_Items msgbox MauvilleCity_Mart_Text_1A0C02, 4 release diff --git a/data/scripts/maps/MauvilleCity_PokemonCenter_1F.inc b/data/scripts/maps/MauvilleCity_PokemonCenter_1F.inc index b943b9c8f..7122b8c3c 100644 --- a/data/scripts/maps/MauvilleCity_PokemonCenter_1F.inc +++ b/data/scripts/maps/MauvilleCity_PokemonCenter_1F.inc @@ -5,17 +5,17 @@ MauvilleCity_PokemonCenter_1F_MapScripts:: @ 8157351 MauvilleCity_PokemonCenter_1F_MapScript1_157357:: @ 8157357 sethealplace 5 call MauvilleCity_PokemonCenter_1F_EventScript_19FD1B - jump MauvilleCity_PokemonCenter_1F_EventScript_157365 + goto MauvilleCity_PokemonCenter_1F_EventScript_157365 end MauvilleCity_PokemonCenter_1F_EventScript_157365:: @ 8157365 - special 104 + special sub_80F83D0 end MauvilleCity_PokemonCenter_1F_EventScript_157369:: @ 8157369 setvar 0x800b, 1 call MauvilleCity_PokemonCenter_1F_EventScript_19FD5B - waittext + waitmessage waitbutton release end diff --git a/data/scripts/maps/MeteorFalls_1F_1R.inc b/data/scripts/maps/MeteorFalls_1F_1R.inc index 3e7155955..06abbc8f6 100644 --- a/data/scripts/maps/MeteorFalls_1F_1R.inc +++ b/data/scripts/maps/MeteorFalls_1F_1R.inc @@ -8,75 +8,75 @@ MeteorFalls_1F_1R_MapScript1_15C496:: @ 815C496 MeteorFalls_1F_1R_EventScript_15C49C:: @ 815C49C lockall - move 255, MeteorFalls_1F_1R_Movement_1A0845 - waitmove 0 - pause 30 - move 5, MeteorFalls_1F_1R_Movement_1A0845 - waitmove 0 + applymovement 255, MeteorFalls_1F_1R_Movement_1A0845 + waitmovement 0 + delay 30 + applymovement 5, MeteorFalls_1F_1R_Movement_1A0845 + waitmovement 0 msgbox MeteorFalls_1F_1R_Text_193237, 4 - closebutton - move 5, MeteorFalls_1F_1R_Movement_1A0841 - move 6, MeteorFalls_1F_1R_Movement_1A0841 - waitmove 0 - playsfx 21 - move 5, MeteorFalls_1F_1R_Movement_1A0833 - waitmove 0 - move 5, MeteorFalls_1F_1R_Movement_1A0835 - waitmove 0 + closemessage + applymovement 5, MeteorFalls_1F_1R_Movement_1A0841 + applymovement 6, MeteorFalls_1F_1R_Movement_1A0841 + waitmovement 0 + playse 21 + applymovement 5, MeteorFalls_1F_1R_Movement_1A0833 + waitmovement 0 + applymovement 5, MeteorFalls_1F_1R_Movement_1A0835 + waitmovement 0 msgbox MeteorFalls_1F_1R_Text_193268, 4 - closebutton - move 5, MeteorFalls_1F_1R_Movement_15C5EE - waitmove 0 + closemessage + applymovement 5, MeteorFalls_1F_1R_Movement_15C5EE + waitmovement 0 msgbox MeteorFalls_1F_1R_Text_1932C5, 4 - closebutton - move 255, MeteorFalls_1F_1R_Movement_1A083F - move 5, MeteorFalls_1F_1R_Movement_1A083F - move 6, MeteorFalls_1F_1R_Movement_1A083F - waitmove 0 - reappear 7 - reappear 8 - reappear 9 - move 7, MeteorFalls_1F_1R_Movement_15C608 - move 8, MeteorFalls_1F_1R_Movement_15C60F - move 9, MeteorFalls_1F_1R_Movement_15C617 - waitmove 0 - move 5, MeteorFalls_1F_1R_Movement_1A083F - move 6, MeteorFalls_1F_1R_Movement_1A083F - waitmove 0 + closemessage + applymovement 255, MeteorFalls_1F_1R_Movement_1A083F + applymovement 5, MeteorFalls_1F_1R_Movement_1A083F + applymovement 6, MeteorFalls_1F_1R_Movement_1A083F + waitmovement 0 + addobject 7 + addobject 8 + addobject 9 + applymovement 7, MeteorFalls_1F_1R_Movement_15C608 + applymovement 8, MeteorFalls_1F_1R_Movement_15C60F + applymovement 9, MeteorFalls_1F_1R_Movement_15C617 + waitmovement 0 + applymovement 5, MeteorFalls_1F_1R_Movement_1A083F + applymovement 6, MeteorFalls_1F_1R_Movement_1A083F + waitmovement 0 msgbox MeteorFalls_1F_1R_Text_193320, 4 - closebutton - move 255, MeteorFalls_1F_1R_Movement_15C64F - move 5, MeteorFalls_1F_1R_Movement_15C5F1 - move 6, MeteorFalls_1F_1R_Movement_15C5FC - waitmove 0 - disappear 5 - disappear 6 - move 7, MeteorFalls_1F_1R_Movement_15C628 - waitmove 0 + closemessage + applymovement 255, MeteorFalls_1F_1R_Movement_15C64F + applymovement 5, MeteorFalls_1F_1R_Movement_15C5F1 + applymovement 6, MeteorFalls_1F_1R_Movement_15C5FC + waitmovement 0 + removeobject 5 + removeobject 6 + applymovement 7, MeteorFalls_1F_1R_Movement_15C628 + waitmovement 0 .ifdef SAPPHIRE msgbox MeteorFalls_1F_1R_Text_1933EC, 4 .else msgbox MeteorFalls_1F_1R_Text_193584, 4 .endif - closebutton - move 8, MeteorFalls_1F_1R_Movement_15C639 - move 9, MeteorFalls_1F_1R_Movement_15C64A - waitmove 0 + closemessage + applymovement 8, MeteorFalls_1F_1R_Movement_15C639 + applymovement 9, MeteorFalls_1F_1R_Movement_15C64A + waitmovement 0 msgbox MeteorFalls_1F_1R_Text_193720, 4 - move 7, MeteorFalls_1F_1R_Movement_1A0845 - waitmove 0 + applymovement 7, MeteorFalls_1F_1R_Movement_1A0845 + waitmovement 0 msgbox MeteorFalls_1F_1R_Text_193747, 4 - move 7, MeteorFalls_1F_1R_Movement_1A083F - waitmove 0 + applymovement 7, MeteorFalls_1F_1R_Movement_1A083F + waitmovement 0 msgbox MeteorFalls_1F_1R_Text_1937AA, 4 - closebutton - move 7, MeteorFalls_1F_1R_Movement_15C61F - move 8, MeteorFalls_1F_1R_Movement_15C62E - move 9, MeteorFalls_1F_1R_Movement_15C63E - waitmove 0 - disappear 7 - disappear 8 - disappear 9 + closemessage + applymovement 7, MeteorFalls_1F_1R_Movement_15C61F + applymovement 8, MeteorFalls_1F_1R_Movement_15C62E + applymovement 9, MeteorFalls_1F_1R_Movement_15C63E + waitmovement 0 + removeobject 7 + removeobject 8 + removeobject 9 setflag 819 setvar 0x40bf, 1 releaseall @@ -216,7 +216,7 @@ MeteorFalls_1F_1R_EventScript_15C656:: @ 815C656 lock faceplayer checkflag 244 - jumpeq MeteorFalls_1F_1R_EventScript_15C66E + goto_if_eq MeteorFalls_1F_1R_EventScript_15C66E setflag 244 msgbox MeteorFalls_1F_1R_Text_1937EB, 4 release diff --git a/data/scripts/maps/MeteorFalls_1F_2R.inc b/data/scripts/maps/MeteorFalls_1F_2R.inc index 6c239043d..b3a0c51fe 100644 --- a/data/scripts/maps/MeteorFalls_1F_2R.inc +++ b/data/scripts/maps/MeteorFalls_1F_2R.inc @@ -3,9 +3,9 @@ MeteorFalls_1F_2R_MapScripts:: @ 815C678 MeteorFalls_1F_2R_EventScript_15C679:: @ 815C679 trainerbattle 0, OPPONENT_NICOLAS_1, 0, MeteorFalls_1F_2R_Text_1939C5, MeteorFalls_1F_2R_Text_193A35 - specialval RESULT, 57 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq MeteorFalls_1F_2R_EventScript_15C6A0 + goto_if_eq MeteorFalls_1F_2R_EventScript_15C6A0 msgbox MeteorFalls_1F_2R_Text_193A60, 6 end @@ -16,9 +16,9 @@ MeteorFalls_1F_2R_EventScript_15C6A0:: @ 815C6A0 MeteorFalls_1F_2R_EventScript_15C6B7:: @ 815C6B7 trainerbattle 4, OPPONENT_JOHN_AND_JAY_1, 0, MeteorFalls_1F_2R_Text_193BB7, MeteorFalls_1F_2R_Text_193C10, MeteorFalls_1F_2R_Text_193C9F - specialval RESULT, 57 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq MeteorFalls_1F_2R_EventScript_15C6E2 + goto_if_eq MeteorFalls_1F_2R_EventScript_15C6E2 msgbox MeteorFalls_1F_2R_Text_193C35, 6 end @@ -29,9 +29,9 @@ MeteorFalls_1F_2R_EventScript_15C6E2:: @ 815C6E2 MeteorFalls_1F_2R_EventScript_15C6FD:: @ 815C6FD trainerbattle 4, OPPONENT_JOHN_AND_JAY_1, 0, MeteorFalls_1F_2R_Text_193D10, MeteorFalls_1F_2R_Text_193D6E, MeteorFalls_1F_2R_Text_193DFB - specialval RESULT, 57 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq MeteorFalls_1F_2R_EventScript_15C728 + goto_if_eq MeteorFalls_1F_2R_EventScript_15C728 msgbox MeteorFalls_1F_2R_Text_193D9A, 6 end diff --git a/data/scripts/maps/MossdeepCity.inc b/data/scripts/maps/MossdeepCity.inc index ddb317364..44deb9d63 100644 --- a/data/scripts/maps/MossdeepCity.inc +++ b/data/scripts/maps/MossdeepCity.inc @@ -8,7 +8,7 @@ MossdeepCity_MapScript1_14CF98:: @ 814CF98 clearflag 102 clearflag 103 checkflag 2090 - callif 1, MossdeepCity_EventScript_1A02C1 + call_if 1, MossdeepCity_EventScript_1A02C1 end MossdeepCity_EventScript_14CFAE:: @ 814CFAE @@ -60,8 +60,8 @@ MossdeepCity_EventScript_14D011:: @ 814D011 lock faceplayer msgbox MossdeepCity_Text_16944E, 4 - move LAST_TALKED, MossdeepCity_Movement_1A083D - waitmove 0 + applymovement LAST_TALKED, MossdeepCity_Movement_1A083D + waitmovement 0 release end @@ -69,14 +69,14 @@ MossdeepCity_EventScript_14D027:: @ 814D027 lock faceplayer checkflag 276 - jumpeq MossdeepCity_EventScript_14D069 + goto_if_eq MossdeepCity_EventScript_14D069 msgbox MossdeepCity_Text_1690A9, 5 compare RESULT, 0 - jumpeq MossdeepCity_EventScript_14D073 + goto_if_eq MossdeepCity_EventScript_14D073 msgbox MossdeepCity_Text_169117, 4 giveitem ITEM_KINGS_ROCK compare RESULT, 0 - jumpeq MossdeepCity_EventScript_1A029B + goto_if_eq MossdeepCity_EventScript_1A029B setflag 276 release end diff --git a/data/scripts/maps/MossdeepCity_GameCorner_1F.inc b/data/scripts/maps/MossdeepCity_GameCorner_1F.inc index c56adb1f3..66ad747f9 100644 --- a/data/scripts/maps/MossdeepCity_GameCorner_1F.inc +++ b/data/scripts/maps/MossdeepCity_GameCorner_1F.inc @@ -5,9 +5,9 @@ MossdeepCity_GameCorner_1F_MapScripts:: @ 815AC52 .byte 0 MossdeepCity_GameCorner_1F_MapScript1_15AC62:: @ 815AC62 - special 246 + special sub_813601C compare RESULT, 1 - callif 1, MossdeepCity_GameCorner_1F_EventScript_15AC71 + call_if 1, MossdeepCity_GameCorner_1F_EventScript_15AC71 end MossdeepCity_GameCorner_1F_EventScript_15AC71:: @ 815AC71 @@ -16,22 +16,22 @@ MossdeepCity_GameCorner_1F_EventScript_15AC71:: @ 815AC71 return MossdeepCity_GameCorner_1F_MapScript1_15AC84:: @ 815AC84 - special 246 + special sub_813601C compare RESULT, 0 - callif 1, MossdeepCity_GameCorner_1F_EventScript_15AC9E + call_if 1, MossdeepCity_GameCorner_1F_EventScript_15AC9E compare 0x40c0, 0 - callif 5, MossdeepCity_GameCorner_1F_EventScript_15ACAF + call_if 5, MossdeepCity_GameCorner_1F_EventScript_15ACAF end MossdeepCity_GameCorner_1F_EventScript_15AC9E:: @ 815AC9E setvar 0x4001, 1 - movespriteperm 1, 3, 2 - spritebehave 1, 8 + setobjectxyperm 1, 3, 2 + setobjectmovementtype 1, 8 return MossdeepCity_GameCorner_1F_EventScript_15ACAF:: @ 815ACAF - movespriteperm 1, 2, 2 - spritebehave 1, 10 + setobjectxyperm 1, 2, 2 + setobjectmovementtype 1, 10 return MossdeepCity_GameCorner_1F_MapScript2_15ACBB:: @ 815ACBB @@ -42,20 +42,20 @@ MossdeepCity_GameCorner_1F_MapScript2_15ACBB:: @ 815ACBB MossdeepCity_GameCorner_1F_EventScript_15ACD5:: @ 815ACD5 lockall - move 255, MossdeepCity_GameCorner_1F_Movement_15AD3D - waitmove 0 - move 1, MossdeepCity_GameCorner_1F_Movement_15AD3F - waitmove 0 - moveoffscreen 1 - move 255, MossdeepCity_GameCorner_1F_Movement_1A0841 - waitmove 0 + applymovement 255, MossdeepCity_GameCorner_1F_Movement_15AD3D + waitmovement 0 + applymovement 1, MossdeepCity_GameCorner_1F_Movement_15AD3F + waitmovement 0 + moveobjectoffscreen 1 + applymovement 255, MossdeepCity_GameCorner_1F_Movement_1A0841 + waitmovement 0 compare 0x40c0, 1 - callif 1, MossdeepCity_GameCorner_1F_EventScript_15AD22 + call_if 1, MossdeepCity_GameCorner_1F_EventScript_15AD22 compare 0x40c0, 2 - callif 1, MossdeepCity_GameCorner_1F_EventScript_15AD2B + call_if 1, MossdeepCity_GameCorner_1F_EventScript_15AD2B compare 0x40c0, 3 - callif 1, MossdeepCity_GameCorner_1F_EventScript_15AD34 - special 40 + call_if 1, MossdeepCity_GameCorner_1F_EventScript_15AD34 + special LoadPlayerParty setvar 0x40c0, 0 releaseall end @@ -85,45 +85,45 @@ MossdeepCity_GameCorner_1F_EventScript_15AD42:: @ 815AD42 lock faceplayer compare 0x4001, 1 - jumpeq MossdeepCity_GameCorner_1F_EventScript_15AD59 + goto_if_eq MossdeepCity_GameCorner_1F_EventScript_15AD59 msgbox MossdeepCity_GameCorner_1F_Text_18E59A, 4 release end MossdeepCity_GameCorner_1F_EventScript_15AD59:: @ 815AD59 - special 39 - special 285 + special SavePlayerParty + special sub_810F414 msgbox MossdeepCity_GameCorner_1F_Text_18E650, 5 compare RESULT, 0 - jumpeq MossdeepCity_GameCorner_1F_EventScript_15ADE8 + goto_if_eq MossdeepCity_GameCorner_1F_EventScript_15ADE8 call MossdeepCity_GameCorner_1F_EventScript_15ADF5 compare RESULT, 0 - jumpeq MossdeepCity_GameCorner_1F_EventScript_15ADE8 + goto_if_eq MossdeepCity_GameCorner_1F_EventScript_15ADE8 msgbox MossdeepCity_GameCorner_1F_Text_18E741, 5 compare RESULT, 0 - callif 1, MossdeepCity_GameCorner_1F_EventScript_15ADE8 - special 40 - call MossdeepCity_GameCorner_1F_EventScript_19F806 + call_if 1, MossdeepCity_GameCorner_1F_EventScript_15ADE8 + special LoadPlayerParty + call S_DoSaveDialog compare RESULT, 0 - jumpeq MossdeepCity_GameCorner_1F_EventScript_15ADE8 - hidebox 0, 0, 15, 10 - special 39 - special 248 + goto_if_eq MossdeepCity_GameCorner_1F_EventScript_15ADE8 + erasebox 0, 0, 15, 10 + special SavePlayerParty + special ReducePlayerPartyToThree msgbox MossdeepCity_GameCorner_1F_Text_18E777, 4 - closebutton + closemessage compare FACING, 2 - callif 1, MossdeepCity_GameCorner_1F_EventScript_15AE04 + call_if 1, MossdeepCity_GameCorner_1F_EventScript_15AE04 compare FACING, 4 - callif 1, MossdeepCity_GameCorner_1F_EventScript_15AE16 + call_if 1, MossdeepCity_GameCorner_1F_EventScript_15AE16 compare FACING, 3 - callif 1, MossdeepCity_GameCorner_1F_EventScript_15AE28 + call_if 1, MossdeepCity_GameCorner_1F_EventScript_15AE28 warp MossdeepCity_GameCorner_B1F, 255, 3, 1 waitstate release end MossdeepCity_GameCorner_1F_EventScript_15ADE8:: @ 815ADE8 - special 40 + special LoadPlayerParty msgbox MossdeepCity_GameCorner_1F_Text_18E698, 4 release end @@ -131,26 +131,26 @@ MossdeepCity_GameCorner_1F_EventScript_15ADE8:: @ 815ADE8 MossdeepCity_GameCorner_1F_EventScript_15ADF5:: @ 815ADF5 msgbox MossdeepCity_GameCorner_1F_Text_18E6DA, 4 fadescreen 1 - special 41 + special sub_80C5568 waitstate return MossdeepCity_GameCorner_1F_EventScript_15AE04:: @ 815AE04 - move LAST_TALKED, MossdeepCity_GameCorner_1F_Movement_15AE46 - move 255, MossdeepCity_GameCorner_1F_Movement_15AE3A - waitmove 0 + applymovement LAST_TALKED, MossdeepCity_GameCorner_1F_Movement_15AE46 + applymovement 255, MossdeepCity_GameCorner_1F_Movement_15AE3A + waitmovement 0 return MossdeepCity_GameCorner_1F_EventScript_15AE16:: @ 815AE16 - move LAST_TALKED, MossdeepCity_GameCorner_1F_Movement_15AE49 - move 255, MossdeepCity_GameCorner_1F_Movement_15AE3E - waitmove 0 + applymovement LAST_TALKED, MossdeepCity_GameCorner_1F_Movement_15AE49 + applymovement 255, MossdeepCity_GameCorner_1F_Movement_15AE3E + waitmovement 0 return MossdeepCity_GameCorner_1F_EventScript_15AE28:: @ 815AE28 - move LAST_TALKED, MossdeepCity_GameCorner_1F_Movement_15AE46 - move 255, MossdeepCity_GameCorner_1F_Movement_15AE42 - waitmove 0 + applymovement LAST_TALKED, MossdeepCity_GameCorner_1F_Movement_15AE46 + applymovement 255, MossdeepCity_GameCorner_1F_Movement_15AE42 + waitmovement 0 return MossdeepCity_GameCorner_1F_Movement_15AE3A:: @ 815AE3A diff --git a/data/scripts/maps/MossdeepCity_GameCorner_B1F.inc b/data/scripts/maps/MossdeepCity_GameCorner_B1F.inc index a733093f9..886c64d29 100644 --- a/data/scripts/maps/MossdeepCity_GameCorner_B1F.inc +++ b/data/scripts/maps/MossdeepCity_GameCorner_B1F.inc @@ -4,7 +4,7 @@ MossdeepCity_GameCorner_B1F_MapScripts:: @ 815AE55 .byte 0 MossdeepCity_GameCorner_B1F_MapScript1_15AE60:: @ 815AE60 - special 322 + special sub_8134AB4 end MossdeepCity_GameCorner_B1F_MapScript2_15AE64:: @ 815AE64 @@ -13,26 +13,26 @@ MossdeepCity_GameCorner_B1F_MapScript2_15AE64:: @ 815AE64 MossdeepCity_GameCorner_B1F_EventScript_15AE6E:: @ 815AE6E lockall - move 255, MossdeepCity_GameCorner_B1F_Movement_15AEF9 - waitmove 0 - special 235 + applymovement 255, MossdeepCity_GameCorner_B1F_Movement_15AEF9 + waitmovement 0 + special sub_81360C0 msgbox 0x20234cc, 4 - closebutton + closemessage setvar 0x8004, 2 setvar 0x8005, 0 - special 236 + special sub_813556C waitstate compare RESULT, 3 - callif 1, MossdeepCity_GameCorner_B1F_EventScript_15AED5 + call_if 1, MossdeepCity_GameCorner_B1F_EventScript_15AED5 compare RESULT, 1 - callif 1, MossdeepCity_GameCorner_B1F_EventScript_15AEE3 + call_if 1, MossdeepCity_GameCorner_B1F_EventScript_15AEE3 compare RESULT, 2 - callif 1, MossdeepCity_GameCorner_B1F_EventScript_15AEEE - closebutton - special 0 - move 255, MossdeepCity_GameCorner_B1F_Movement_15AEFF - waitmove 0 - special 40 + call_if 1, MossdeepCity_GameCorner_B1F_EventScript_15AEEE + closemessage + special ScrSpecial_HealPlayerParty + applymovement 255, MossdeepCity_GameCorner_B1F_Movement_15AEFF + waitmovement 0 + special LoadPlayerParty setvar 0x4001, 1 warp MossdeepCity_GameCorner_1F, 255, 3, 1 waitstate @@ -46,15 +46,15 @@ MossdeepCity_GameCorner_B1F_EventScript_15AED5:: @ 815AED5 MossdeepCity_GameCorner_B1F_EventScript_15AEE3:: @ 815AEE3 setvar 0x40c0, 1 - special 141 - waittext + special ShowFieldMessageStringVar4 + waitmessage waitbutton return MossdeepCity_GameCorner_B1F_EventScript_15AEEE:: @ 815AEEE setvar 0x40c0, 2 - special 141 - waittext + special ShowFieldMessageStringVar4 + waitmessage waitbutton return diff --git a/data/scripts/maps/MossdeepCity_Gym.inc b/data/scripts/maps/MossdeepCity_Gym.inc index 192f9e396..944860f2d 100644 --- a/data/scripts/maps/MossdeepCity_Gym.inc +++ b/data/scripts/maps/MossdeepCity_Gym.inc @@ -4,43 +4,43 @@ MossdeepCity_Gym_MapScripts:: @ 815A4D3 MossdeepCity_Gym_MapScript1_15A4D9:: @ 815A4D9 checkflag 100 - jumpeq MossdeepCity_Gym_EventScript_15A510 - jump MossdeepCity_Gym_EventScript_15A4E8 + goto_if_eq MossdeepCity_Gym_EventScript_15A510 + goto MossdeepCity_Gym_EventScript_15A4E8 end MossdeepCity_Gym_EventScript_15A4E8:: @ 815A4E8 checkflag 101 - jumpeq MossdeepCity_Gym_EventScript_15A528 - jump MossdeepCity_Gym_EventScript_15A4F7 + goto_if_eq MossdeepCity_Gym_EventScript_15A528 + goto MossdeepCity_Gym_EventScript_15A4F7 end MossdeepCity_Gym_EventScript_15A4F7:: @ 815A4F7 checkflag 102 - jumpeq MossdeepCity_Gym_EventScript_15A540 - jump MossdeepCity_Gym_EventScript_15A506 + goto_if_eq MossdeepCity_Gym_EventScript_15A540 + goto MossdeepCity_Gym_EventScript_15A506 end MossdeepCity_Gym_EventScript_15A506:: @ 815A506 checkflag 103 - jumpeq MossdeepCity_Gym_EventScript_15A558 + goto_if_eq MossdeepCity_Gym_EventScript_15A558 end MossdeepCity_Gym_EventScript_15A510:: @ 815A510 setmaptile 5, 5, 516, 0 setmaptile 2, 7, 569, 1 - jump MossdeepCity_Gym_EventScript_15A4E8 + goto MossdeepCity_Gym_EventScript_15A4E8 end MossdeepCity_Gym_EventScript_15A528:: @ 815A528 setmaptile 8, 14, 516, 0 setmaptile 8, 10, 569, 1 - jump MossdeepCity_Gym_EventScript_15A4F7 + goto MossdeepCity_Gym_EventScript_15A4F7 end MossdeepCity_Gym_EventScript_15A540:: @ 815A540 setmaptile 15, 17, 524, 0 setmaptile 17, 15, 569, 1 - jump MossdeepCity_Gym_EventScript_15A506 + goto MossdeepCity_Gym_EventScript_15A506 end MossdeepCity_Gym_EventScript_15A558:: @ 815A558 @@ -51,14 +51,14 @@ MossdeepCity_Gym_EventScript_15A558:: @ 815A558 MossdeepCity_Gym_EventScript_15A56B:: @ 815A56B trainerbattle 8, OPPONENT_TATE_AND_LIZA, 0, MossdeepCity_Gym_Text_18CF02, MossdeepCity_Gym_Text_18D077, MossdeepCity_Gym_Text_18D324, MossdeepCity_Gym_EventScript_15A594 checkflag 171 - jumpif 0, MossdeepCity_Gym_EventScript_15A5C6 + goto_if 0, MossdeepCity_Gym_EventScript_15A5C6 msgbox MossdeepCity_Gym_Text_18D273, 4 release end MossdeepCity_Gym_EventScript_15A594:: @ 815A594 message MossdeepCity_Gym_Text_18D0F9 - waittext + waitmessage call MossdeepCity_Gym_EventScript_1A02C5 msgbox MossdeepCity_Gym_Text_18D128, 4 setflag 1229 @@ -68,13 +68,13 @@ MossdeepCity_Gym_EventScript_15A594:: @ 815A594 setvar 0x8008, 7 call MossdeepCity_Gym_EventScript_1A01C0 clearflag 905 - jump MossdeepCity_Gym_EventScript_15A5C6 + goto MossdeepCity_Gym_EventScript_15A5C6 end MossdeepCity_Gym_EventScript_15A5C6:: @ 815A5C6 giveitem ITEM_TM04 compare RESULT, 0 - jumpeq MossdeepCity_Gym_EventScript_1A029B + goto_if_eq MossdeepCity_Gym_EventScript_1A029B msgbox MossdeepCity_Gym_Text_18D1CF, 4 setflag 171 release @@ -83,91 +83,91 @@ MossdeepCity_Gym_EventScript_15A5C6:: @ 815A5C6 MossdeepCity_Gym_EventScript_15A5EA:: @ 815A5EA lockall checkflag 100 - jumpeq MossdeepCity_Gym_EventScript_15A621 + goto_if_eq MossdeepCity_Gym_EventScript_15A621 setflag 100 - move 255, MossdeepCity_Gym_Movement_15A7F7 - waitmove 0 + applymovement 255, MossdeepCity_Gym_Movement_15A7F7 + waitmovement 0 setmaptile 5, 5, 516, 0 setmaptile 2, 7, 569, 1 - jump MossdeepCity_Gym_EventScript_15A619 + goto MossdeepCity_Gym_EventScript_15A619 end MossdeepCity_Gym_EventScript_15A619:: @ 815A619 - special 142 - playsfx 36 + special DrawWholeMapView + playse 36 releaseall end MossdeepCity_Gym_EventScript_15A621:: @ 815A621 clearflag 100 - move 255, MossdeepCity_Gym_Movement_15A7F7 - waitmove 0 + applymovement 255, MossdeepCity_Gym_Movement_15A7F7 + waitmovement 0 setmaptile 5, 5, 524, 0 setmaptile 2, 7, 568, 1 - jump MossdeepCity_Gym_EventScript_15A619 + goto MossdeepCity_Gym_EventScript_15A619 end MossdeepCity_Gym_EventScript_15A646:: @ 815A646 lockall checkflag 101 - jumpeq MossdeepCity_Gym_EventScript_15A675 + goto_if_eq MossdeepCity_Gym_EventScript_15A675 setflag 101 - move 255, MossdeepCity_Gym_Movement_15A7F7 - waitmove 0 + applymovement 255, MossdeepCity_Gym_Movement_15A7F7 + waitmovement 0 setmaptile 8, 14, 516, 0 setmaptile 8, 10, 569, 1 - jump MossdeepCity_Gym_EventScript_15A619 + goto MossdeepCity_Gym_EventScript_15A619 end MossdeepCity_Gym_EventScript_15A675:: @ 815A675 clearflag 101 - move 255, MossdeepCity_Gym_Movement_15A7F7 - waitmove 0 + applymovement 255, MossdeepCity_Gym_Movement_15A7F7 + waitmovement 0 setmaptile 8, 14, 517, 0 setmaptile 8, 10, 568, 1 - jump MossdeepCity_Gym_EventScript_15A619 + goto MossdeepCity_Gym_EventScript_15A619 end MossdeepCity_Gym_EventScript_15A69A:: @ 815A69A lockall checkflag 102 - jumpeq MossdeepCity_Gym_EventScript_15A6C9 + goto_if_eq MossdeepCity_Gym_EventScript_15A6C9 setflag 102 - move 255, MossdeepCity_Gym_Movement_15A7F7 - waitmove 0 + applymovement 255, MossdeepCity_Gym_Movement_15A7F7 + waitmovement 0 setmaptile 15, 17, 524, 0 setmaptile 17, 15, 569, 1 - jump MossdeepCity_Gym_EventScript_15A619 + goto MossdeepCity_Gym_EventScript_15A619 end MossdeepCity_Gym_EventScript_15A6C9:: @ 815A6C9 clearflag 102 - move 255, MossdeepCity_Gym_Movement_15A7F7 - waitmove 0 + applymovement 255, MossdeepCity_Gym_Movement_15A7F7 + waitmovement 0 setmaptile 15, 17, 516, 0 setmaptile 17, 15, 568, 1 - jump MossdeepCity_Gym_EventScript_15A619 + goto MossdeepCity_Gym_EventScript_15A619 end MossdeepCity_Gym_EventScript_15A6EE:: @ 815A6EE lockall checkflag 103 - jumpeq MossdeepCity_Gym_EventScript_15A71D + goto_if_eq MossdeepCity_Gym_EventScript_15A71D setflag 103 - move 255, MossdeepCity_Gym_Movement_15A7F7 - waitmove 0 + applymovement 255, MossdeepCity_Gym_Movement_15A7F7 + waitmovement 0 setmaptile 1, 23, 525, 0 setmaptile 5, 24, 569, 1 - jump MossdeepCity_Gym_EventScript_15A619 + goto MossdeepCity_Gym_EventScript_15A619 end MossdeepCity_Gym_EventScript_15A71D:: @ 815A71D clearflag 103 - move 255, MossdeepCity_Gym_Movement_15A7F7 - waitmove 0 + applymovement 255, MossdeepCity_Gym_Movement_15A7F7 + waitmovement 0 setmaptile 1, 23, 516, 0 setmaptile 5, 24, 568, 1 - jump MossdeepCity_Gym_EventScript_15A619 + goto MossdeepCity_Gym_EventScript_15A619 end MossdeepCity_Gym_EventScript_15A742:: @ 815A742 @@ -211,7 +211,7 @@ MossdeepCity_Gym_EventScript_15A7D8:: @ 815A7D8 lock faceplayer checkflag 1229 - jumpeq MossdeepCity_Gym_EventScript_15A7ED + goto_if_eq MossdeepCity_Gym_EventScript_15A7ED msgbox MossdeepCity_Gym_Text_18C7E3, 4 release end @@ -229,15 +229,15 @@ MossdeepCity_Gym_Movement_15A7F7:: @ 815A7F7 MossdeepCity_Gym_EventScript_15A7FA:: @ 815A7FA lockall checkflag 2061 - jumpeq MossdeepCity_Gym_EventScript_15A81A - jump MossdeepCity_Gym_EventScript_15A824 + goto_if_eq MossdeepCity_Gym_EventScript_15A81A + goto MossdeepCity_Gym_EventScript_15A824 end MossdeepCity_Gym_EventScript_15A80A:: @ 815A80A lockall checkflag 2061 - jumpeq MossdeepCity_Gym_EventScript_15A81A - jump MossdeepCity_Gym_EventScript_15A824 + goto_if_eq MossdeepCity_Gym_EventScript_15A81A + goto MossdeepCity_Gym_EventScript_15A824 end MossdeepCity_Gym_EventScript_15A81A:: @ 815A81A diff --git a/data/scripts/maps/MossdeepCity_House1.inc b/data/scripts/maps/MossdeepCity_House1.inc index d83e49643..62edffc8b 100644 --- a/data/scripts/maps/MossdeepCity_House1.inc +++ b/data/scripts/maps/MossdeepCity_House1.inc @@ -4,11 +4,11 @@ MossdeepCity_House1_MapScripts:: @ 815A82E MossdeepCity_House1_EventScript_15A82F:: @ 815A82F lock faceplayer - bufferfirstpoke 0 + getfirstpartypokename 0 msgbox MossdeepCity_House1_Text_18D465, 4 - specialval RESULT, 277 + specialvar RESULT, GetPokeblockNameByMonNature compare RESULT, 0 - jumpeq MossdeepCity_House1_EventScript_15A855 + goto_if_eq MossdeepCity_House1_EventScript_15A855 msgbox MossdeepCity_House1_Text_18D475, 4 release end diff --git a/data/scripts/maps/MossdeepCity_House2.inc b/data/scripts/maps/MossdeepCity_House2.inc index f3d07b64e..f7f66b843 100644 --- a/data/scripts/maps/MossdeepCity_House2.inc +++ b/data/scripts/maps/MossdeepCity_House2.inc @@ -12,29 +12,29 @@ MossdeepCity_House2_EventScript_15A872:: @ 815A872 MossdeepCity_House2_EventScript_15A87B:: @ 815A87B lock faceplayer - checksound - pokecry SPECIES_WINGULL, 0 + waitse + playpokecry SPECIES_WINGULL, 0 msgbox MossdeepCity_House2_Text_18D61E, 4 waitpokecry - closebutton + closemessage setflag 224 clearflag 933 compare FACING, 2 - callif 1, MossdeepCity_House2_EventScript_15A8AE + call_if 1, MossdeepCity_House2_EventScript_15A8AE compare FACING, 3 - callif 1, MossdeepCity_House2_EventScript_15A8B9 - disappear 3 + call_if 1, MossdeepCity_House2_EventScript_15A8B9 + removeobject 3 release end MossdeepCity_House2_EventScript_15A8AE:: @ 815A8AE - move 3, MossdeepCity_House2_Movement_15A8C4 - waitmove 0 + applymovement 3, MossdeepCity_House2_Movement_15A8C4 + waitmovement 0 return MossdeepCity_House2_EventScript_15A8B9:: @ 815A8B9 - move 3, MossdeepCity_House2_Movement_15A8CB - waitmove 0 + applymovement 3, MossdeepCity_House2_Movement_15A8CB + waitmovement 0 return MossdeepCity_House2_Movement_15A8C4:: @ 815A8C4 diff --git a/data/scripts/maps/MossdeepCity_House3.inc b/data/scripts/maps/MossdeepCity_House3.inc index fd97ee598..8f9bf4dc5 100644 --- a/data/scripts/maps/MossdeepCity_House3.inc +++ b/data/scripts/maps/MossdeepCity_House3.inc @@ -5,10 +5,10 @@ MossdeepCity_House3_EventScript_15A972:: @ 815A972 lock faceplayer checkflag 152 - jumpeq MossdeepCity_House3_EventScript_15A9B1 + goto_if_eq MossdeepCity_House3_EventScript_15A9B1 msgbox MossdeepCity_House3_Text_18D909, 5 compare RESULT, 0 - jumpeq MossdeepCity_House3_EventScript_15A9BB + goto_if_eq MossdeepCity_House3_EventScript_15A9BB msgbox MossdeepCity_House3_Text_18D9A9, 4 giveitem ITEM_SUPER_ROD setflag 152 diff --git a/data/scripts/maps/MossdeepCity_House4.inc b/data/scripts/maps/MossdeepCity_House4.inc index bc8f44400..fd173899d 100644 --- a/data/scripts/maps/MossdeepCity_House4.inc +++ b/data/scripts/maps/MossdeepCity_House4.inc @@ -5,7 +5,7 @@ MossdeepCity_House4_EventScript_15AB31:: @ 815AB31 lock faceplayer checkflag 2052 - jumpeq MossdeepCity_House4_EventScript_15AB46 + goto_if_eq MossdeepCity_House4_EventScript_15AB46 msgbox MossdeepCity_House4_Text_18E0E3, 4 release end @@ -18,10 +18,10 @@ MossdeepCity_House4_EventScript_15AB46:: @ 815AB46 MossdeepCity_House4_EventScript_15AB50:: @ 815AB50 lock faceplayer - special 7 + special sub_80BB63C compare RESULT, 0 - jumpeq MossdeepCity_House4_EventScript_15AB6D - special 278 + goto_if_eq MossdeepCity_House4_EventScript_15AB6D + special GetSecretBaseNearbyMapName msgbox MossdeepCity_House4_Text_18E17E, 4 release end @@ -34,8 +34,8 @@ MossdeepCity_House4_EventScript_15AB6D:: @ 815AB6D MossdeepCity_House4_EventScript_15AB77:: @ 815AB77 lock faceplayer - checksound - pokecry SPECIES_SKITTY, 0 + waitse + playpokecry SPECIES_SKITTY, 0 msgbox MossdeepCity_House4_Text_18E1E1, 4 waitpokecry release diff --git a/data/scripts/maps/MossdeepCity_Mart.inc b/data/scripts/maps/MossdeepCity_Mart.inc index d1e861b99..ce5845c81 100644 --- a/data/scripts/maps/MossdeepCity_Mart.inc +++ b/data/scripts/maps/MossdeepCity_Mart.inc @@ -5,7 +5,7 @@ MossdeepCity_Mart_EventScript_15A926:: @ 815A926 lock faceplayer message MossdeepCity_Mart_Text_1A0BE4 - waittext + waitmessage pokemart MossdeepCity_Mart_Items msgbox MossdeepCity_Mart_Text_1A0C02, 4 release diff --git a/data/scripts/maps/MossdeepCity_PokemonCenter_1F.inc b/data/scripts/maps/MossdeepCity_PokemonCenter_1F.inc index 988608ffd..4ed3ea57e 100644 --- a/data/scripts/maps/MossdeepCity_PokemonCenter_1F.inc +++ b/data/scripts/maps/MossdeepCity_PokemonCenter_1F.inc @@ -9,7 +9,7 @@ MossdeepCity_PokemonCenter_1F_MapScript1_15A8D6:: @ 815A8D6 MossdeepCity_PokemonCenter_1F_EventScript_15A8DA:: @ 815A8DA setvar 0x800b, 1 call MossdeepCity_PokemonCenter_1F_EventScript_19FD5B - waittext + waitmessage waitbutton release end diff --git a/data/scripts/maps/MossdeepCity_SpaceCenter_1F.inc b/data/scripts/maps/MossdeepCity_SpaceCenter_1F.inc index 3b3a7f083..260cb4b6e 100644 --- a/data/scripts/maps/MossdeepCity_SpaceCenter_1F.inc +++ b/data/scripts/maps/MossdeepCity_SpaceCenter_1F.inc @@ -4,16 +4,16 @@ MossdeepCity_SpaceCenter_1F_MapScripts:: @ 815AB8A MossdeepCity_SpaceCenter_1F_EventScript_15AB8B:: @ 815AB8B lock faceplayer - checkdailyflags - specialval RESULT, 256 - buffernum 0, RESULT + dodailyevents + specialvar RESULT, GetWeekCount + getnumberstring 0, RESULT compare RESULT, 0 - callif 1, MossdeepCity_SpaceCenter_1F_EventScript_15ABBA + call_if 1, MossdeepCity_SpaceCenter_1F_EventScript_15ABBA compare RESULT, 1 - callif 4, MossdeepCity_SpaceCenter_1F_EventScript_15ABC3 - closebutton - move LAST_TALKED, MossdeepCity_SpaceCenter_1F_Movement_1A083D - waitmove 0 + call_if 4, MossdeepCity_SpaceCenter_1F_EventScript_15ABC3 + closemessage + applymovement LAST_TALKED, MossdeepCity_SpaceCenter_1F_Movement_1A083D + waitmovement 0 release end @@ -33,11 +33,11 @@ MossdeepCity_SpaceCenter_1F_EventScript_15ABD5:: @ 815ABD5 lock faceplayer checkflag 192 - jumpeq MossdeepCity_SpaceCenter_1F_EventScript_15AC0C + goto_if_eq MossdeepCity_SpaceCenter_1F_EventScript_15AC0C msgbox MossdeepCity_SpaceCenter_1F_Text_18E335, 4 giveitem ITEM_SUN_STONE compare RESULT, 0 - jumpeq MossdeepCity_SpaceCenter_1F_EventScript_1A029B + goto_if_eq MossdeepCity_SpaceCenter_1F_EventScript_1A029B setflag 192 msgbox MossdeepCity_SpaceCenter_1F_Text_18E39B, 4 release @@ -56,8 +56,8 @@ MossdeepCity_SpaceCenter_1F_EventScript_15AC1F:: @ 815AC1F lock faceplayer msgbox MossdeepCity_SpaceCenter_1F_Text_18E427, 4 - closebutton - move LAST_TALKED, MossdeepCity_SpaceCenter_1F_Movement_1A083D - waitmove 0 + closemessage + applymovement LAST_TALKED, MossdeepCity_SpaceCenter_1F_Movement_1A083D + waitmovement 0 release end diff --git a/data/scripts/maps/MossdeepCity_StevensHouse.inc b/data/scripts/maps/MossdeepCity_StevensHouse.inc index d4477bd39..8bf899780 100644 --- a/data/scripts/maps/MossdeepCity_StevensHouse.inc +++ b/data/scripts/maps/MossdeepCity_StevensHouse.inc @@ -6,7 +6,7 @@ MossdeepCity_StevensHouse_MapScripts:: @ 815A9C5 MossdeepCity_StevensHouse_MapScript1_15A9D5:: @ 815A9D5 checkflag 2052 - callif 0, MossdeepCity_StevensHouse_EventScript_15A9DF + call_if 0, MossdeepCity_StevensHouse_EventScript_15A9DF end MossdeepCity_StevensHouse_EventScript_15A9DF:: @ 815A9DF @@ -15,12 +15,12 @@ MossdeepCity_StevensHouse_EventScript_15A9DF:: @ 815A9DF MossdeepCity_StevensHouse_MapScript1_15A9E9:: @ 815A9E9 compare 0x40c6, 1 - callif 1, MossdeepCity_StevensHouse_EventScript_15A9F5 + call_if 1, MossdeepCity_StevensHouse_EventScript_15A9F5 end MossdeepCity_StevensHouse_EventScript_15A9F5:: @ 815A9F5 - movespriteperm 1, 6, 5 - spritebehave 1, 7 + setobjectxyperm 1, 6, 5 + setobjectmovementtype 1, 7 return MossdeepCity_StevensHouse_MapScript2_15AA01:: @ 815AA01 @@ -29,24 +29,24 @@ MossdeepCity_StevensHouse_MapScript2_15AA01:: @ 815AA01 MossdeepCity_StevensHouse_EventScript_15AA0B:: @ 815AA0B lockall - move 1, MossdeepCity_StevensHouse_Movement_1A083F - waitmove 0 - playsfx 21 - move 1, MossdeepCity_StevensHouse_Movement_1A0833 - waitmove 0 - move 1, MossdeepCity_StevensHouse_Movement_1A0835 - waitmove 0 - move 1, MossdeepCity_StevensHouse_Movement_15AA6E - waitmove 0 + applymovement 1, MossdeepCity_StevensHouse_Movement_1A083F + waitmovement 0 + playse 21 + applymovement 1, MossdeepCity_StevensHouse_Movement_1A0833 + waitmovement 0 + applymovement 1, MossdeepCity_StevensHouse_Movement_1A0835 + waitmovement 0 + applymovement 1, MossdeepCity_StevensHouse_Movement_15AA6E + waitmovement 0 msgbox MossdeepCity_StevensHouse_Text_18DA77, 4 giveitem ITEM_HM08 setflag 123 setflag 302 msgbox MossdeepCity_StevensHouse_Text_18DB22, 4 - closebutton - pause 20 - move 1, MossdeepCity_StevensHouse_Movement_15AA76 - waitmove 0 + closemessage + delay 20 + applymovement 1, MossdeepCity_StevensHouse_Movement_15AA76 + waitmovement 0 setvar 0x40c6, 1 releaseall end @@ -73,21 +73,21 @@ MossdeepCity_StevensHouse_EventScript_15AA7C:: @ 815AA7C lockall msgbox MossdeepCity_StevensHouse_Text_18DD12, 5 compare RESULT, 0 - jumpeq MossdeepCity_StevensHouse_EventScript_15AAE6 + goto_if_eq MossdeepCity_StevensHouse_EventScript_15AAE6 countpokemon compare RESULT, 6 - jumpeq MossdeepCity_StevensHouse_EventScript_15AADC + goto_if_eq MossdeepCity_StevensHouse_EventScript_15AADC copyvar 0x8004, RESULT - disappear 2 - fanfare 370 + removeobject 2 + playfanfare 370 message MossdeepCity_StevensHouse_Text_18DD61 waitfanfare - waittext - givepokemon SPECIES_BELDUM, 5, ITEM_NONE, 0x0, 0x0, 0 - bufferpoke 1, SPECIES_BELDUM + waitmessage + givepoke SPECIES_BELDUM, 5, ITEM_NONE, 0x0, 0x0, 0 + getspeciesname 1, SPECIES_BELDUM msgbox MossdeepCity_StevensHouse_Text_1A1102, 5 compare RESULT, 1 - callif 1, MossdeepCity_StevensHouse_EventScript_1A0678 + call_if 1, MossdeepCity_StevensHouse_EventScript_1A0678 setflag 968 setflag 298 releaseall @@ -114,7 +114,7 @@ MossdeepCity_StevensHouse_EventScript_15AAF9:: @ 815AAF9 MossdeepCity_StevensHouse_EventScript_15AB02:: @ 815AB02 lockall checkflag 302 - jumpeq MossdeepCity_StevensHouse_EventScript_15AB16 + goto_if_eq MossdeepCity_StevensHouse_EventScript_15AB16 msgbox MossdeepCity_StevensHouse_Text_18DF1A, 4 releaseall end diff --git a/data/scripts/maps/MtChimney.inc b/data/scripts/maps/MtChimney.inc index b7a43328b..a8eec9a32 100644 --- a/data/scripts/maps/MtChimney.inc +++ b/data/scripts/maps/MtChimney.inc @@ -15,46 +15,46 @@ MtChimney_MapScript1_15CF92:: @ 815CF92 MtChimney_EventScript_15CF95:: @ 815CF95 lock faceplayer - showmoney 0, 0 - snop + showmoneybox 0, 0 + nop msgbox MtChimney_Text_195760, 5 compare RESULT, 0 - jumpeq MtChimney_EventScript_15D00B + goto_if_eq MtChimney_EventScript_15D00B checkmoney 0xc8, 0 compare RESULT, 0 - jumpeq MtChimney_EventScript_15D018 + goto_if_eq MtChimney_EventScript_15D018 msgbox MtChimney_Text_1957A9, 4 checkitemspace ITEM_LAVA_COOKIE, 1 compare RESULT, 1 - callif 1, MtChimney_EventScript_15D000 + call_if 1, MtChimney_EventScript_15D000 giveitem ITEM_LAVA_COOKIE compare RESULT, 0 - jumpeq MtChimney_EventScript_15CFF3 - hidemoney 0, 0 + goto_if_eq MtChimney_EventScript_15CFF3 + hidemoneybox 0, 0 release end MtChimney_EventScript_15CFF3:: @ 815CFF3 msgbox MtChimney_Text_1A0CC2, 4 - hidemoney 0, 0 + hidemoneybox 0, 0 release end MtChimney_EventScript_15D000:: @ 815D000 - paymoney 0xc8, 0 - updatemoney 0, 0 - snop + takemoney 0xc8, 0 + updatemoneybox 0, 0 + nop return MtChimney_EventScript_15D00B:: @ 815D00B msgbox MtChimney_Text_1957F7, 4 - hidemoney 0, 0 + hidemoneybox 0, 0 release end MtChimney_EventScript_15D018:: @ 815D018 msgbox MtChimney_Text_1957BA, 4 - hidemoney 0, 0 + hidemoneybox 0, 0 release end @@ -407,12 +407,12 @@ MtChimney_EventScript_15D174:: @ 815D174 MtChimney_EventScript_15D17D:: @ 815D17D lockall checkflag 139 - jumpif 0, MtChimney_EventScript_15D1D0 + goto_if 0, MtChimney_EventScript_15D1D0 checkflag 115 - jumpeq MtChimney_EventScript_15D1C6 + goto_if_eq MtChimney_EventScript_15D1C6 msgbox MtChimney_Text_195870, 5 compare RESULT, 0 - jumpeq MtChimney_EventScript_15D1BC + goto_if_eq MtChimney_EventScript_15D1BC msgbox MtChimney_Text_1958C6, 4 giveitem ITEM_METEORITE setflag 115 @@ -440,9 +440,9 @@ MtChimney_EventScript_15D1DA:: @ 815D1DA MtChimney_EventScript_15D1E3:: @ 815D1E3 trainerbattle 0, OPPONENT_SHELBY_1, 0, MtChimney_Text_19597F, MtChimney_Text_1959D8 - specialval RESULT, 57 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq MtChimney_EventScript_15D20A + goto_if_eq MtChimney_EventScript_15D20A msgbox MtChimney_Text_195A04, 6 end diff --git a/data/scripts/maps/MtChimney_CableCarStation.inc b/data/scripts/maps/MtChimney_CableCarStation.inc index c00914f2e..9d99eb5fb 100644 --- a/data/scripts/maps/MtChimney_CableCarStation.inc +++ b/data/scripts/maps/MtChimney_CableCarStation.inc @@ -5,12 +5,12 @@ MtChimney_CableCarStation_MapScripts:: @ 815C0FA MtChimney_CableCarStation_MapScript1_15C105:: @ 815C105 compare 0x40a3, 1 - callif 1, MtChimney_CableCarStation_EventScript_15C111 + call_if 1, MtChimney_CableCarStation_EventScript_15C111 end MtChimney_CableCarStation_EventScript_15C111:: @ 815C111 - movespriteperm 1, 5, 4 - spritebehave 1, 10 + setobjectxyperm 1, 5, 4 + setobjectmovementtype 1, 10 return MtChimney_CableCarStation_MapScript2_15C11D:: @ 815C11D @@ -19,12 +19,12 @@ MtChimney_CableCarStation_MapScript2_15C11D:: @ 815C11D MtChimney_CableCarStation_EventScript_15C127:: @ 815C127 lockall - move 255, MtChimney_CableCarStation_Movement_15C1B4 - move 1, MtChimney_CableCarStation_Movement_15C1AA - waitmove 0 + applymovement 255, MtChimney_CableCarStation_Movement_15C1B4 + applymovement 1, MtChimney_CableCarStation_Movement_15C1AA + waitmovement 0 setvar 0x40a3, 0 - movespriteperm 1, 6, 7 - spritebehave 1, 8 + setobjectxyperm 1, 6, 7 + setobjectmovementtype 1, 8 releaseall end @@ -33,22 +33,22 @@ MtChimney_CableCarStation_EventScript_15C14B:: @ 815C14B faceplayer msgbox MtChimney_CableCarStation_Text_19256A, 5 compare RESULT, 1 - jumpeq MtChimney_CableCarStation_EventScript_15C16C + goto_if_eq MtChimney_CableCarStation_EventScript_15C16C compare RESULT, 0 - jumpeq MtChimney_CableCarStation_EventScript_15C19B + goto_if_eq MtChimney_CableCarStation_EventScript_15C19B end MtChimney_CableCarStation_EventScript_15C16C:: @ 815C16C msgbox MtChimney_CableCarStation_Text_1925A9, 4 - closebutton - move 1, MtChimney_CableCarStation_Movement_15C1A5 - move 255, MtChimney_CableCarStation_Movement_15C1AF - waitmove 0 + closemessage + applymovement 1, MtChimney_CableCarStation_Movement_15C1A5 + applymovement 255, MtChimney_CableCarStation_Movement_15C1AF + waitmovement 0 setvar 0x8004, 1 setvar 0x40a3, 2 - inccounter GAME_STAT_RODE_CABLE_CAR - special 151 - special 152 + incrementgamestat GAME_STAT_RODE_CABLE_CAR + special CableCarWarp + special sub_8123218 waitstate release end diff --git a/data/scripts/maps/MtPyre_1F.inc b/data/scripts/maps/MtPyre_1F.inc index 805c4a8d3..026d54bfe 100644 --- a/data/scripts/maps/MtPyre_1F.inc +++ b/data/scripts/maps/MtPyre_1F.inc @@ -5,11 +5,11 @@ MtPyre_1F_EventScript_15D323:: @ 815D323 lock faceplayer checkflag 282 - jumpeq MtPyre_1F_EventScript_15D352 + goto_if_eq MtPyre_1F_EventScript_15D352 msgbox MtPyre_1F_Text_196151, 4 giveitem ITEM_CLEANSE_TAG compare RESULT, 0 - jumpeq MtPyre_1F_EventScript_1A029B + goto_if_eq MtPyre_1F_EventScript_1A029B setflag 282 release end diff --git a/data/scripts/maps/MtPyre_2F.inc b/data/scripts/maps/MtPyre_2F.inc index c44251af7..8d48dac84 100644 --- a/data/scripts/maps/MtPyre_2F.inc +++ b/data/scripts/maps/MtPyre_2F.inc @@ -6,7 +6,7 @@ MtPyre_2F_MapScripts:: @ 815D36E MtPyre_2F_MapScript1_15D37E:: @ 815D37E tileeffect 7 - warp5 MtPyre_1F, 255, 0, 0 + setholewarp MtPyre_1F, 255, 0, 0 end MtPyre_2F_EventScript_15D389:: @ 815D389 diff --git a/data/scripts/maps/MtPyre_6F.inc b/data/scripts/maps/MtPyre_6F.inc index 3729079bb..433b533b3 100644 --- a/data/scripts/maps/MtPyre_6F.inc +++ b/data/scripts/maps/MtPyre_6F.inc @@ -3,9 +3,9 @@ MtPyre_6F_MapScripts:: @ 815D447 MtPyre_6F_EventScript_15D448:: @ 815D448 trainerbattle 0, OPPONENT_VALERIE_1, 0, MtPyre_6F_Text_1969FE, MtPyre_6F_Text_196A30 - specialval RESULT, 57 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq MtPyre_6F_EventScript_15D46F + goto_if_eq MtPyre_6F_EventScript_15D46F msgbox MtPyre_6F_Text_196A4C, 6 end diff --git a/data/scripts/maps/MtPyre_Exterior.inc b/data/scripts/maps/MtPyre_Exterior.inc index efffc7c3b..550f74d9a 100644 --- a/data/scripts/maps/MtPyre_Exterior.inc +++ b/data/scripts/maps/MtPyre_Exterior.inc @@ -9,7 +9,7 @@ MtPyre_Exterior_MapScript1_15D48C:: @ 815D48C MtPyre_Exterior_EventScript_15D492:: @ 815D492 getplayerxy 0x4000, 0x4001 compare 0x4001, 12 - jumpif 0, MtPyre_Exterior_EventScript_15D4A3 + goto_if 0, MtPyre_Exterior_EventScript_15D4A3 return MtPyre_Exterior_EventScript_15D4A3:: @ 815D4A3 diff --git a/data/scripts/maps/MtPyre_Summit.inc b/data/scripts/maps/MtPyre_Summit.inc index e352ac30e..533fb6e90 100644 --- a/data/scripts/maps/MtPyre_Summit.inc +++ b/data/scripts/maps/MtPyre_Summit.inc @@ -9,55 +9,55 @@ MtPyre_Summit_MapScript1_15D4B7:: @ 815D4B7 MtPyre_Summit_EventScript_15D4BD:: @ 815D4BD lockall setvar 0x8008, 0 - jump MtPyre_Summit_EventScript_15D4E1 + goto MtPyre_Summit_EventScript_15D4E1 end MtPyre_Summit_EventScript_15D4C9:: @ 815D4C9 lockall setvar 0x8008, 1 - jump MtPyre_Summit_EventScript_15D4E1 + goto MtPyre_Summit_EventScript_15D4E1 end MtPyre_Summit_EventScript_15D4D5:: @ 815D4D5 lockall setvar 0x8008, 2 - jump MtPyre_Summit_EventScript_15D4E1 + goto MtPyre_Summit_EventScript_15D4E1 end MtPyre_Summit_EventScript_15D4E1:: @ 815D4E1 - move 255, MtPyre_Summit_Movement_1A0841 - waitmove 0 - move 2, MtPyre_Summit_Movement_1A0845 - waitmove 0 - pause 50 + applymovement 255, MtPyre_Summit_Movement_1A0841 + waitmovement 0 + applymovement 2, MtPyre_Summit_Movement_1A0845 + waitmovement 0 + delay 50 compare 0x8008, 0 - callif 1, MtPyre_Summit_EventScript_15D593 + call_if 1, MtPyre_Summit_EventScript_15D593 compare 0x8008, 1 - callif 1, MtPyre_Summit_EventScript_15D59E + call_if 1, MtPyre_Summit_EventScript_15D59E compare 0x8008, 2 - callif 1, MtPyre_Summit_EventScript_15D59F + call_if 1, MtPyre_Summit_EventScript_15D59F .ifdef SAPPHIRE msgbox UnknownString_81B52B0, 4 .else msgbox MtPyre_Summit_Text_1B5EEC, 4 .endif - closebutton + closemessage fadescreen 1 - disappear 2 - disappear 4 - disappear 5 - disappear 6 + removeobject 2 + removeobject 4 + removeobject 5 + removeobject 6 setflag 916 setflag 917 fadescreen 0 - pause 20 + delay 20 call MtPyre_Summit_EventScript_15D57A compare 0x8008, 0 - callif 1, MtPyre_Summit_EventScript_15D5AA + call_if 1, MtPyre_Summit_EventScript_15D5AA compare 0x8008, 1 - callif 1, MtPyre_Summit_EventScript_15D5BF + call_if 1, MtPyre_Summit_EventScript_15D5BF compare 0x8008, 2 - callif 1, MtPyre_Summit_EventScript_15D5CA + call_if 1, MtPyre_Summit_EventScript_15D5CA .ifdef SAPPHIRE msgbox UnknownString_81B53AB, 4 .else @@ -78,35 +78,35 @@ MtPyre_Summit_EventScript_15D57A:: @ 815D57A return MtPyre_Summit_EventScript_15D593:: @ 815D593 - move 2, MtPyre_Summit_Movement_15D5E9 - waitmove 0 + applymovement 2, MtPyre_Summit_Movement_15D5E9 + waitmovement 0 return MtPyre_Summit_EventScript_15D59E:: @ 815D59E return MtPyre_Summit_EventScript_15D59F:: @ 815D59F - move 2, MtPyre_Summit_Movement_15D5EC - waitmove 0 + applymovement 2, MtPyre_Summit_Movement_15D5EC + waitmovement 0 return MtPyre_Summit_EventScript_15D5AA:: @ 815D5AA - move 3, MtPyre_Summit_Movement_15D5DF - waitmove 0 - move 255, MtPyre_Summit_Movement_1A0843 - waitmove 0 + applymovement 3, MtPyre_Summit_Movement_15D5DF + waitmovement 0 + applymovement 255, MtPyre_Summit_Movement_1A0843 + waitmovement 0 return MtPyre_Summit_EventScript_15D5BF:: @ 815D5BF - move 3, MtPyre_Summit_Movement_15D5E3 - waitmove 0 + applymovement 3, MtPyre_Summit_Movement_15D5E3 + waitmovement 0 return MtPyre_Summit_EventScript_15D5CA:: @ 815D5CA - move 3, MtPyre_Summit_Movement_15D5E5 - waitmove 0 - move 255, MtPyre_Summit_Movement_1A083F - waitmove 0 + applymovement 3, MtPyre_Summit_Movement_15D5E5 + waitmovement 0 + applymovement 255, MtPyre_Summit_Movement_1A083F + waitmovement 0 return MtPyre_Summit_Movement_15D5DF:: @ 815D5DF @@ -144,9 +144,9 @@ MtPyre_Summit_EventScript_15D5EF:: @ 815D5EF msgbox MtPyre_Summit_Text_1B64B3, 5 .endif compare RESULT, 1 - callif 1, MtPyre_Summit_EventScript_15D611 + call_if 1, MtPyre_Summit_EventScript_15D611 compare RESULT, 0 - callif 1, MtPyre_Summit_EventScript_15D61A + call_if 1, MtPyre_Summit_EventScript_15D61A release end @@ -170,11 +170,11 @@ MtPyre_Summit_EventScript_15D623:: @ 815D623 lock faceplayer checkflag 259 - jumpeq MtPyre_Summit_EventScript_15D6C4 + goto_if_eq MtPyre_Summit_EventScript_15D6C4 checkflag 113 - jumpeq MtPyre_Summit_EventScript_15D64A + goto_if_eq MtPyre_Summit_EventScript_15D64A checkflag 129 - jumpeq MtPyre_Summit_EventScript_15D6BA + goto_if_eq MtPyre_Summit_EventScript_15D6BA .ifdef SAPPHIRE msgbox UnknownString_81B54BE, 4 .else @@ -190,21 +190,21 @@ MtPyre_Summit_EventScript_15D64A:: @ 815D64A msgbox MtPyre_Summit_Text_1B6283, 5 .endif compare RESULT, 1 - jumpeq MtPyre_Summit_EventScript_15D669 + goto_if_eq MtPyre_Summit_EventScript_15D669 compare RESULT, 0 - jumpeq MtPyre_Summit_EventScript_15D69B + goto_if_eq MtPyre_Summit_EventScript_15D69B end MtPyre_Summit_EventScript_15D669:: @ 815D669 setvar 0x8004, ITEM_RED_OR_BLUE_ORB call MtPyre_Summit_EventScript_1A067F - closebutton - move LAST_TALKED, MtPyre_Summit_Movement_1A0841 - waitmove 0 - pause 40 - move LAST_TALKED, MtPyre_Summit_Movement_1A0839 - waitmove 0 - pause 10 + closemessage + applymovement LAST_TALKED, MtPyre_Summit_Movement_1A0841 + waitmovement 0 + delay 40 + applymovement LAST_TALKED, MtPyre_Summit_Movement_1A0839 + waitmovement 0 + delay 10 .ifdef SAPPHIRE msgbox UnknownString_81B5762, 4 .else @@ -221,9 +221,9 @@ MtPyre_Summit_EventScript_15D69B:: @ 815D69B msgbox MtPyre_Summit_Text_1B62E7, 5 .endif compare RESULT, 1 - jumpeq MtPyre_Summit_EventScript_15D669 + goto_if_eq MtPyre_Summit_EventScript_15D669 compare RESULT, 0 - jumpeq MtPyre_Summit_EventScript_15D69B + goto_if_eq MtPyre_Summit_EventScript_15D69B end MtPyre_Summit_EventScript_15D6BA:: @ 815D6BA @@ -247,78 +247,78 @@ MtPyre_Summit_EventScript_15D6C4:: @ 815D6C4 MtPyre_Summit_EventScript_15D6CE:: @ 815D6CE lockall setvar 0x8008, 0 - jump MtPyre_Summit_EventScript_15D6F2 + goto MtPyre_Summit_EventScript_15D6F2 end MtPyre_Summit_EventScript_15D6DA:: @ 815D6DA lockall setvar 0x8008, 1 - jump MtPyre_Summit_EventScript_15D6F2 + goto MtPyre_Summit_EventScript_15D6F2 end MtPyre_Summit_EventScript_15D6E6:: @ 815D6E6 lockall setvar 0x8008, 2 - jump MtPyre_Summit_EventScript_15D6F2 + goto MtPyre_Summit_EventScript_15D6F2 end MtPyre_Summit_EventScript_15D6F2:: @ 815D6F2 - move 255, MtPyre_Summit_Movement_1A0841 - waitmove 0 - move 2, MtPyre_Summit_Movement_1A0845 - waitmove 0 - pause 50 + applymovement 255, MtPyre_Summit_Movement_1A0841 + waitmovement 0 + applymovement 2, MtPyre_Summit_Movement_1A0845 + waitmovement 0 + delay 50 compare 0x8008, 0 - callif 1, MtPyre_Summit_EventScript_15D75E + call_if 1, MtPyre_Summit_EventScript_15D75E compare 0x8008, 1 - callif 1, MtPyre_Summit_EventScript_15D769 + call_if 1, MtPyre_Summit_EventScript_15D769 compare 0x8008, 2 - callif 1, MtPyre_Summit_EventScript_15D774 + call_if 1, MtPyre_Summit_EventScript_15D774 .ifdef SAPPHIRE msgbox UnknownString_81B5BFC, 4 .else msgbox MtPyre_Summit_Text_1B6848, 4 .endif - closebutton + closemessage compare 0x8008, 0 - callif 1, MtPyre_Summit_EventScript_15D77F + call_if 1, MtPyre_Summit_EventScript_15D77F compare 0x8008, 1 - callif 1, MtPyre_Summit_EventScript_15D78A + call_if 1, MtPyre_Summit_EventScript_15D78A compare 0x8008, 2 - callif 1, MtPyre_Summit_EventScript_15D795 - disappear 2 + call_if 1, MtPyre_Summit_EventScript_15D795 + removeobject 2 setvar 0x40b9, 3 releaseall end MtPyre_Summit_EventScript_15D75E:: @ 815D75E - move 2, MtPyre_Summit_Movement_15D7A0 - waitmove 0 + applymovement 2, MtPyre_Summit_Movement_15D7A0 + waitmovement 0 return MtPyre_Summit_EventScript_15D769:: @ 815D769 - move 2, MtPyre_Summit_Movement_15D7A3 - waitmove 0 + applymovement 2, MtPyre_Summit_Movement_15D7A3 + waitmovement 0 return MtPyre_Summit_EventScript_15D774:: @ 815D774 - move 2, MtPyre_Summit_Movement_15D7A4 - waitmove 0 + applymovement 2, MtPyre_Summit_Movement_15D7A4 + waitmovement 0 return MtPyre_Summit_EventScript_15D77F:: @ 815D77F - move 2, MtPyre_Summit_Movement_15D7A7 - waitmove 0 + applymovement 2, MtPyre_Summit_Movement_15D7A7 + waitmovement 0 return MtPyre_Summit_EventScript_15D78A:: @ 815D78A - move 2, MtPyre_Summit_Movement_15D7B0 - waitmove 0 + applymovement 2, MtPyre_Summit_Movement_15D7B0 + waitmovement 0 return MtPyre_Summit_EventScript_15D795:: @ 815D795 - move 2, MtPyre_Summit_Movement_15D7B9 - waitmove 0 + applymovement 2, MtPyre_Summit_Movement_15D7B9 + waitmovement 0 return MtPyre_Summit_Movement_15D7A0:: @ 815D7A0 diff --git a/data/scripts/maps/NewMauville_Entrance.inc b/data/scripts/maps/NewMauville_Entrance.inc index dc5885939..6429ff2f9 100644 --- a/data/scripts/maps/NewMauville_Entrance.inc +++ b/data/scripts/maps/NewMauville_Entrance.inc @@ -5,7 +5,7 @@ NewMauville_Entrance_MapScripts:: @ 815E48A NewMauville_Entrance_MapScript1_15E495:: @ 815E495 compare 0x40ba, 0 - callif 1, NewMauville_Entrance_EventScript_15E4A1 + call_if 1, NewMauville_Entrance_EventScript_15E4A1 end NewMauville_Entrance_EventScript_15E4A1:: @ 815E4A1 @@ -23,15 +23,15 @@ NewMauville_Entrance_MapScript1_15E4D8:: @ 815E4D8 NewMauville_Entrance_EventScript_15E4DC:: @ 815E4DC lockall - move 255, NewMauville_Entrance_Movement_1A0841 - waitmove 0 + applymovement 255, NewMauville_Entrance_Movement_1A0841 + waitmovement 0 msgbox NewMauville_Entrance_Text_1982C0, 4 checkitem ITEM_BASEMENT_KEY, 1 compare RESULT, 0 - jumpeq NewMauville_Entrance_EventScript_15E55D + goto_if_eq NewMauville_Entrance_EventScript_15E55D msgbox NewMauville_Entrance_Text_1982D4, 5 compare RESULT, 0 - jumpeq NewMauville_Entrance_EventScript_15E55D + goto_if_eq NewMauville_Entrance_EventScript_15E55D msgbox NewMauville_Entrance_Text_1982EA, 4 setmaptile 3, 0, 707, 0 setmaptile 4, 0, 708, 0 @@ -39,8 +39,8 @@ NewMauville_Entrance_EventScript_15E4DC:: @ 815E4DC setmaptile 3, 1, 715, 1 setmaptile 4, 1, 716, 0 setmaptile 5, 1, 717, 1 - special 142 - playsfx 20 + special DrawWholeMapView + playse 20 setvar 0x40ba, 1 releaseall end diff --git a/data/scripts/maps/NewMauville_Inside.inc b/data/scripts/maps/NewMauville_Inside.inc index 29c42e460..2d2a46ab4 100644 --- a/data/scripts/maps/NewMauville_Inside.inc +++ b/data/scripts/maps/NewMauville_Inside.inc @@ -6,15 +6,15 @@ NewMauville_Inside_MapScripts:: @ 815E55F NewMauville_Inside_MapScript1_15E56F:: @ 815E56F compare 0x4001, 1 - callif 1, NewMauville_Inside_EventScript_15E5DA + call_if 1, NewMauville_Inside_EventScript_15E5DA compare 0x4002, 1 - callif 1, NewMauville_Inside_EventScript_15E728 + call_if 1, NewMauville_Inside_EventScript_15E728 checkflag 2145 - callif 1, NewMauville_Inside_EventScript_15E58F + call_if 1, NewMauville_Inside_EventScript_15E58F end NewMauville_Inside_EventScript_15E58F:: @ 815E58F - disappear LAST_TALKED + removeobject LAST_TALKED return NewMauville_Inside_MapScript1_15E593:: @ 815E593 @@ -24,16 +24,16 @@ NewMauville_Inside_MapScript1_15E593:: @ 815E593 NewMauville_Inside_MapScript1_15E59E:: @ 815E59E compare 0x40ba, 2 - callif 1, NewMauville_Inside_EventScript_15E88B + call_if 1, NewMauville_Inside_EventScript_15E88B end NewMauville_Inside_EventScript_15E5AA:: @ 815E5AA lockall setvar 0x4001, 1 setvar 0x4002, 0 - playsfx 21 + playse 21 call NewMauville_Inside_EventScript_15E5DA - special 142 + special DrawWholeMapView releaseall end @@ -41,9 +41,9 @@ NewMauville_Inside_EventScript_15E5C2:: @ 815E5C2 lockall setvar 0x4001, 0 setvar 0x4002, 1 - playsfx 21 + playse 21 call NewMauville_Inside_EventScript_15E728 - special 142 + special DrawWholeMapView releaseall end @@ -145,13 +145,13 @@ NewMauville_Inside_EventScript_15E88B:: @ 815E88B setmaptile 33, 3, 757, 1 setmaptile 34, 3, 758, 1 setmaptile 35, 3, 759, 1 - special 142 + special DrawWholeMapView return NewMauville_Inside_EventScript_15E8E0:: @ 815E8E0 lockall compare 0x40ba, 2 - jumpeq NewMauville_Inside_EventScript_15E8F6 + goto_if_eq NewMauville_Inside_EventScript_15E8F6 msgbox NewMauville_Inside_Text_198315, 4 releaseall end @@ -165,9 +165,9 @@ NewMauville_Inside_EventScript_15E900:: @ 815E900 lock faceplayer setwildbattle SPECIES_VOLTORB, 25, ITEM_NONE - checksound - pokecry SPECIES_VOLTORB, 2 - pause 40 + waitse + playpokecry SPECIES_VOLTORB, 2 + delay 40 waitpokecry setflag 974 setflag 2145 @@ -180,9 +180,9 @@ NewMauville_Inside_EventScript_15E91E:: @ 815E91E lock faceplayer setwildbattle SPECIES_VOLTORB, 25, ITEM_NONE - checksound - pokecry SPECIES_VOLTORB, 2 - pause 40 + waitse + playpokecry SPECIES_VOLTORB, 2 + delay 40 waitpokecry setflag 975 setflag 2145 @@ -195,9 +195,9 @@ NewMauville_Inside_EventScript_15E93C:: @ 815E93C lock faceplayer setwildbattle SPECIES_VOLTORB, 25, ITEM_NONE - checksound - pokecry SPECIES_VOLTORB, 2 - pause 40 + waitse + playpokecry SPECIES_VOLTORB, 2 + delay 40 waitpokecry setflag 976 setflag 2145 diff --git a/data/scripts/maps/OldaleTown.inc b/data/scripts/maps/OldaleTown.inc index 68ed80949..e80df2cd2 100644 --- a/data/scripts/maps/OldaleTown.inc +++ b/data/scripts/maps/OldaleTown.inc @@ -6,11 +6,11 @@ OldaleTown_MapScript1_14DD68:: @ 814DD68 call OldaleTown_EventScript_1A014E setflag 2064 checkflag 116 - callif 0, OldaleTown_EventScript_14DD92 + call_if 0, OldaleTown_EventScript_14DD92 checkflag 132 - callif 0, OldaleTown_EventScript_14DD9E + call_if 0, OldaleTown_EventScript_14DD9E checkflag 116 - callif 1, OldaleTown_EventScript_14DD8C + call_if 1, OldaleTown_EventScript_14DD8C end OldaleTown_EventScript_14DD8C:: @ 814DD8C @@ -18,13 +18,13 @@ OldaleTown_EventScript_14DD8C:: @ 814DD8C return OldaleTown_EventScript_14DD92:: @ 814DD92 - movespriteperm 3, 1, 11 - spritebehave 3, 9 + setobjectxyperm 3, 1, 11 + setobjectmovementtype 3, 9 return OldaleTown_EventScript_14DD9E:: @ 814DD9E - movespriteperm 2, 13, 14 - spritebehave 2, 8 + setobjectxyperm 2, 13, 14 + setobjectmovementtype 2, 8 return OldaleTown_EventScript_14DDAA:: @ 814DDAA @@ -39,13 +39,13 @@ OldaleTown_EventScript_14DDBC:: @ 814DDBC lock faceplayer checkflag 132 - jumpeq OldaleTown_EventScript_14DE79 + goto_if_eq OldaleTown_EventScript_14DE79 checkflag 1 - jumpeq OldaleTown_EventScript_14DE79 + goto_if_eq OldaleTown_EventScript_14DE79 setflag 1 - playmusic 420, 0 + playbgm 420, 0 msgbox OldaleTown_Text_16AEF2, 4 - closebutton + closemessage switch FACING case 1, OldaleTown_EventScript_14DE07 case 2, OldaleTown_EventScript_14DE1E @@ -53,34 +53,34 @@ OldaleTown_EventScript_14DDBC:: @ 814DDBC end OldaleTown_EventScript_14DE07:: @ 814DE07 - move 2, OldaleTown_Movement_14DE97 - move 255, OldaleTown_Movement_14DEC1 - waitmove 0 - jump OldaleTown_EventScript_14DE4C + applymovement 2, OldaleTown_Movement_14DE97 + applymovement 255, OldaleTown_Movement_14DEC1 + waitmovement 0 + goto OldaleTown_EventScript_14DE4C end OldaleTown_EventScript_14DE1E:: @ 814DE1E - move 2, OldaleTown_Movement_14DEA2 - move 255, OldaleTown_Movement_14DECB - waitmove 0 - jump OldaleTown_EventScript_14DE4C + applymovement 2, OldaleTown_Movement_14DEA2 + applymovement 255, OldaleTown_Movement_14DECB + waitmovement 0 + goto OldaleTown_EventScript_14DE4C end OldaleTown_EventScript_14DE35:: @ 814DE35 - move 255, OldaleTown_Movement_14DEB9 - move 2, OldaleTown_Movement_14DE8E - waitmove 0 - jump OldaleTown_EventScript_14DE4C + applymovement 255, OldaleTown_Movement_14DEB9 + applymovement 2, OldaleTown_Movement_14DE8E + waitmovement 0 + goto OldaleTown_EventScript_14DE4C end OldaleTown_EventScript_14DE4C:: @ 814DE4C msgbox OldaleTown_Text_16AF2F, 4 giveitem ITEM_POTION compare RESULT, 0 - jumpeq OldaleTown_EventScript_14DE83 + goto_if_eq OldaleTown_EventScript_14DE83 msgbox OldaleTown_Text_16AFE1, 4 setflag 132 - fadedefault + fadedefaultbgm release end @@ -91,7 +91,7 @@ OldaleTown_EventScript_14DE79:: @ 814DE79 OldaleTown_EventScript_14DE83:: @ 814DE83 msgbox OldaleTown_Text_1A0CC2, 4 - fadedefault + fadedefaultbgm release end @@ -196,23 +196,23 @@ OldaleTown_EventScript_14DEDF:: @ 814DEDF lock faceplayer checkflag 116 - jumpeq OldaleTown_EventScript_14DF26 + goto_if_eq OldaleTown_EventScript_14DF26 msgbox OldaleTown_Text_16B0CC, 4 - closebutton - move 3, OldaleTown_Movement_1A083D - waitmove 0 + closemessage + applymovement 3, OldaleTown_Movement_1A083D + waitmovement 0 release end OldaleTown_EventScript_14DEFF:: @ 814DEFF lockall - move 255, OldaleTown_Movement_14DFEC - move 3, OldaleTown_Movement_14DFEF - waitmove 0 + applymovement 255, OldaleTown_Movement_14DFEC + applymovement 3, OldaleTown_Movement_14DFEF + waitmovement 0 msgbox OldaleTown_Text_16B045, 4 - closebutton - move 3, OldaleTown_Movement_14DFF5 - waitmove 0 + closemessage + applymovement 3, OldaleTown_Movement_14DFF5 + waitmovement 0 releaseall end @@ -223,61 +223,61 @@ OldaleTown_EventScript_14DF26:: @ 814DF26 OldaleTown_EventScript_14DF30:: @ 814DF30 lockall - move 4, OldaleTown_Movement_1A0839 - waitmove 0 - jump OldaleTown_EventScript_14DF92 + applymovement 4, OldaleTown_Movement_1A0839 + waitmovement 0 + goto OldaleTown_EventScript_14DF92 end OldaleTown_EventScript_14DF41:: @ 814DF41 lockall - move 4, OldaleTown_Movement_14DFDE - waitmove 0 - move 255, OldaleTown_Movement_1A0843 - waitmove 0 - jump OldaleTown_EventScript_14DF92 + applymovement 4, OldaleTown_Movement_14DFDE + waitmovement 0 + applymovement 255, OldaleTown_Movement_1A0843 + waitmovement 0 + goto OldaleTown_EventScript_14DF92 end OldaleTown_EventScript_14DF5C:: @ 814DF5C lockall - move 4, OldaleTown_Movement_14DFE1 - waitmove 0 - move 255, OldaleTown_Movement_1A0843 - waitmove 0 - jump OldaleTown_EventScript_14DF92 + applymovement 4, OldaleTown_Movement_14DFE1 + waitmovement 0 + applymovement 255, OldaleTown_Movement_1A0843 + waitmovement 0 + goto OldaleTown_EventScript_14DF92 end OldaleTown_EventScript_14DF77:: @ 814DF77 lockall - move 4, OldaleTown_Movement_14DFE3 - waitmove 0 - move 255, OldaleTown_Movement_1A0843 - waitmove 0 - jump OldaleTown_EventScript_14DF92 + applymovement 4, OldaleTown_Movement_14DFE3 + waitmovement 0 + applymovement 255, OldaleTown_Movement_1A0843 + waitmovement 0 + goto OldaleTown_EventScript_14DF92 end OldaleTown_EventScript_14DF92:: @ 814DF92 - checkgender + checkplayergender compare RESULT, 0 - jumpeq OldaleTown_EventScript_14DFAA + goto_if_eq OldaleTown_EventScript_14DFAA compare RESULT, 1 - jumpeq OldaleTown_EventScript_14DFB8 + goto_if_eq OldaleTown_EventScript_14DFB8 end OldaleTown_EventScript_14DFAA:: @ 814DFAA msgbox OldaleTown_Text_16B196, 4 - jump OldaleTown_EventScript_14DFC6 + goto OldaleTown_EventScript_14DFC6 end OldaleTown_EventScript_14DFB8:: @ 814DFB8 msgbox OldaleTown_Text_16B1BE, 4 - jump OldaleTown_EventScript_14DFC6 + goto OldaleTown_EventScript_14DFC6 end OldaleTown_EventScript_14DFC6:: @ 814DFC6 - closebutton - move 4, OldaleTown_Movement_14DFE5 - waitmove 0 - disappear 4 + closemessage + applymovement 4, OldaleTown_Movement_14DFE5 + waitmovement 0 + removeobject 4 setvar 0x40c7, 2 setflag 979 releaseall diff --git a/data/scripts/maps/OldaleTown_Mart.inc b/data/scripts/maps/OldaleTown_Mart.inc index 3f4994890..b9698b58f 100644 --- a/data/scripts/maps/OldaleTown_Mart.inc +++ b/data/scripts/maps/OldaleTown_Mart.inc @@ -5,9 +5,9 @@ OldaleTown_Mart_EventScript_152F79:: @ 8152F79 lock faceplayer message OldaleTown_Mart_Text_1A0BE4 - waittext + waitmessage checkflag 116 - jumpeq OldaleTown_Mart_EventScript_152FA8 + goto_if_eq OldaleTown_Mart_EventScript_152FA8 pokemart OldaleTown_Mart_Items1 msgbox OldaleTown_Mart_Text_1A0C02, 4 release @@ -44,7 +44,7 @@ OldaleTown_Mart_EventScript_152FC6:: @ 8152FC6 lock faceplayer checkflag 116 - jumpeq OldaleTown_Mart_EventScript_152FDB + goto_if_eq OldaleTown_Mart_EventScript_152FDB msgbox OldaleTown_Mart_Text_174A8A, 4 release end diff --git a/data/scripts/maps/OldaleTown_PokemonCenter_1F.inc b/data/scripts/maps/OldaleTown_PokemonCenter_1F.inc index 4ba96ddc8..494f109fe 100644 --- a/data/scripts/maps/OldaleTown_PokemonCenter_1F.inc +++ b/data/scripts/maps/OldaleTown_PokemonCenter_1F.inc @@ -10,7 +10,7 @@ OldaleTown_PokemonCenter_1F_MapScript1_152F0E:: @ 8152F0E OldaleTown_PokemonCenter_1F_EventScript_152F17:: @ 8152F17 setvar 0x800b, 1 call OldaleTown_PokemonCenter_1F_EventScript_19FD5B - waittext + waitmessage waitbutton release end @@ -27,7 +27,7 @@ OldaleTown_PokemonCenter_1F_EventScript_152F37:: @ 8152F37 lock faceplayer checkflag 2049 - jumpeq OldaleTown_PokemonCenter_1F_EventScript_152F4C + goto_if_eq OldaleTown_PokemonCenter_1F_EventScript_152F4C msgbox OldaleTown_PokemonCenter_1F_Text_1749C0, 4 release end diff --git a/data/scripts/maps/PacifidlogTown_House2.inc b/data/scripts/maps/PacifidlogTown_House2.inc index b95a41ceb..e04a8caae 100644 --- a/data/scripts/maps/PacifidlogTown_House2.inc +++ b/data/scripts/maps/PacifidlogTown_House2.inc @@ -4,30 +4,30 @@ PacifidlogTown_House2_MapScripts:: @ 8154167 PacifidlogTown_House2_EventScript_154168:: @ 8154168 lock faceplayer - checkdailyflags + dodailyevents call PacifidlogTown_House2_EventScript_1541B4 checkflag 299 - jumpeq PacifidlogTown_House2_EventScript_154254 + goto_if_eq PacifidlogTown_House2_EventScript_154254 checkflag 300 - callif 1, PacifidlogTown_House2_EventScript_1541CE + call_if 1, PacifidlogTown_House2_EventScript_1541CE checkflag 300 - callif 0, PacifidlogTown_House2_EventScript_1541D7 + call_if 0, PacifidlogTown_House2_EventScript_1541D7 setflag 300 - specialval RESULT, 230 + specialvar RESULT, GetLeadMonFriendshipScore compare RESULT, 4 - jumpif 4, PacifidlogTown_House2_EventScript_1541EC - specialval RESULT, 230 + goto_if 4, PacifidlogTown_House2_EventScript_1541EC + specialvar RESULT, GetLeadMonFriendshipScore compare RESULT, 2 - jumpif 4, PacifidlogTown_House2_EventScript_15421B - jump PacifidlogTown_House2_EventScript_154225 + goto_if 4, PacifidlogTown_House2_EventScript_15421B + goto PacifidlogTown_House2_EventScript_154225 end PacifidlogTown_House2_EventScript_1541B4:: @ 81541B4 checkflag 299 - jumpif 0, PacifidlogTown_House2_EventScript_1A14DC - specialval RESULT, 334 + goto_if 0, PacifidlogTown_House2_EventScript_1A14DC + specialvar RESULT, sub_810F908 compare RESULT, 0 - callif 1, PacifidlogTown_House2_EventScript_1541E8 + call_if 1, PacifidlogTown_House2_EventScript_1541E8 return PacifidlogTown_House2_EventScript_1541CE:: @ 81541CE @@ -47,9 +47,9 @@ PacifidlogTown_House2_EventScript_1541EC:: @ 81541EC msgbox PacifidlogTown_House2_Text_179169, 4 giveitem ITEM_TM27 compare RESULT, 0 - jumpeq PacifidlogTown_House2_EventScript_1A029B + goto_if_eq PacifidlogTown_House2_EventScript_1A029B setflag 299 - special 333 + special sub_810F950 msgbox PacifidlogTown_House2_Text_179283, 4 release end @@ -63,16 +63,16 @@ PacifidlogTown_House2_EventScript_154225:: @ 8154225 msgbox PacifidlogTown_House2_Text_17922D, 4 giveitem ITEM_TM21 compare RESULT, 0 - jumpeq PacifidlogTown_House2_EventScript_1A029B + goto_if_eq PacifidlogTown_House2_EventScript_1A029B setflag 299 - special 333 + special sub_810F950 msgbox PacifidlogTown_House2_Text_179283, 4 release end PacifidlogTown_House2_EventScript_154254:: @ 8154254 - specialval RESULT, 334 - buffernum 0, RESULT + specialvar RESULT, sub_810F908 + getnumberstring 0, RESULT msgbox PacifidlogTown_House2_Text_1792F2, 4 release end @@ -80,8 +80,8 @@ PacifidlogTown_House2_EventScript_154254:: @ 8154254 PacifidlogTown_House2_EventScript_154267:: @ 8154267 lock faceplayer - checksound - pokecry SPECIES_AZURILL, 0 + waitse + playpokecry SPECIES_AZURILL, 0 msgbox PacifidlogTown_House2_Text_17938B, 4 waitpokecry msgbox PacifidlogTown_House2_Text_17939B, 4 @@ -91,8 +91,8 @@ PacifidlogTown_House2_EventScript_154267:: @ 8154267 PacifidlogTown_House2_EventScript_154282:: @ 8154282 lock faceplayer - checksound - pokecry SPECIES_AZURILL, 2 + waitse + playpokecry SPECIES_AZURILL, 2 msgbox PacifidlogTown_House2_Text_1793CC, 4 waitpokecry msgbox PacifidlogTown_House2_Text_1793DD, 4 diff --git a/data/scripts/maps/PacifidlogTown_House3.inc b/data/scripts/maps/PacifidlogTown_House3.inc index 7ee815f07..28b9dbd80 100644 --- a/data/scripts/maps/PacifidlogTown_House3.inc +++ b/data/scripts/maps/PacifidlogTown_House3.inc @@ -5,30 +5,30 @@ PacifidlogTown_House3_EventScript_15429E:: @ 815429E lock faceplayer checkflag 154 - jumpeq PacifidlogTown_House3_EventScript_154338 + goto_if_eq PacifidlogTown_House3_EventScript_154338 setvar 0x8008, 2 copyvar 0x8004, 0x8008 - specialval RESULT, 252 + specialvar RESULT, sub_804D89C copyvar 0x8009, RESULT msgbox PacifidlogTown_House3_Text_17940E, 5 compare RESULT, 0 - jumpeq PacifidlogTown_House3_EventScript_154320 - special 159 + goto_if_eq PacifidlogTown_House3_EventScript_154320 + special sub_80F9A0C waitstate copyvar 0x800a, 0x8004 compare 0x8004, 255 - jumpeq PacifidlogTown_House3_EventScript_154320 + goto_if_eq PacifidlogTown_House3_EventScript_154320 copyvar 0x8005, 0x800a - specialval RESULT, 255 + specialvar RESULT, sub_804DB2C copyvar 0x800b, RESULT - comparevars RESULT, 0x8009 - jumpif 5, PacifidlogTown_House3_EventScript_15432A + compare RESULT, 0x8009 + goto_if 5, PacifidlogTown_House3_EventScript_15432A copyvar 0x8004, 0x8008 copyvar 0x8005, 0x800a - special 253 - special 254 + special sub_804DB68 + special sub_804E174 waitstate - bufferpoke 0, 0x8009 + getspeciesname 0, 0x8009 msgbox PacifidlogTown_House3_Text_1794C4, 4 setflag 154 release @@ -40,7 +40,7 @@ PacifidlogTown_House3_EventScript_154320:: @ 8154320 end PacifidlogTown_House3_EventScript_15432A:: @ 815432A - bufferpoke 0, 0x8009 + getspeciesname 0, 0x8009 msgbox PacifidlogTown_House3_Text_1794DF, 4 release end diff --git a/data/scripts/maps/PacifidlogTown_House4.inc b/data/scripts/maps/PacifidlogTown_House4.inc index e48644beb..b7a6c9f86 100644 --- a/data/scripts/maps/PacifidlogTown_House4.inc +++ b/data/scripts/maps/PacifidlogTown_House4.inc @@ -14,9 +14,9 @@ PacifidlogTown_House4_EventScript_15435E:: @ 815435E faceplayer msgbox PacifidlogTown_House4_Text_17963D, 5 compare RESULT, 1 - jumpeq PacifidlogTown_House4_EventScript_15437F + goto_if_eq PacifidlogTown_House4_EventScript_15437F compare RESULT, 0 - jumpeq PacifidlogTown_House4_EventScript_154389 + goto_if_eq PacifidlogTown_House4_EventScript_154389 end PacifidlogTown_House4_EventScript_15437F:: @ 815437F diff --git a/data/scripts/maps/PacifidlogTown_House5.inc b/data/scripts/maps/PacifidlogTown_House5.inc index f20de28df..46b1990df 100644 --- a/data/scripts/maps/PacifidlogTown_House5.inc +++ b/data/scripts/maps/PacifidlogTown_House5.inc @@ -4,9 +4,9 @@ PacifidlogTown_House5_MapScripts:: @ 8154393 PacifidlogTown_House5_EventScript_154394:: @ 8154394 lock faceplayer - specialval RESULT, 209 + specialvar RESULT, IsMirageIslandPresent compare RESULT, 1 - jumpeq PacifidlogTown_House5_EventScript_1543B0 + goto_if_eq PacifidlogTown_House5_EventScript_1543B0 msgbox PacifidlogTown_House5_Text_179718, 4 release end diff --git a/data/scripts/maps/PacifidlogTown_PokemonCenter_1F.inc b/data/scripts/maps/PacifidlogTown_PokemonCenter_1F.inc index 973f80a55..64dd5008c 100644 --- a/data/scripts/maps/PacifidlogTown_PokemonCenter_1F.inc +++ b/data/scripts/maps/PacifidlogTown_PokemonCenter_1F.inc @@ -9,7 +9,7 @@ PacifidlogTown_PokemonCenter_1F_MapScript1_154105:: @ 8154105 @ 8154109 setvar 0x800b, 1 call VerdanturfTown_PokemonCenter_1F_EventScript_19FD5B - waittext + waitmessage waitbutton release end diff --git a/data/scripts/maps/PetalburgCity.inc b/data/scripts/maps/PetalburgCity.inc index 3667eb3cf..1c2711b83 100644 --- a/data/scripts/maps/PetalburgCity.inc +++ b/data/scripts/maps/PetalburgCity.inc @@ -6,17 +6,17 @@ PetalburgCity_MapScripts:: @ 814B70C PetalburgCity_MapScript1_14B717:: @ 814B717 setflag 2070 compare 0x4057, 0 - callif 1, PetalburgCity_EventScript_14B731 + call_if 1, PetalburgCity_EventScript_14B731 compare 0x4057, 2 - callif 1, PetalburgCity_EventScript_14B739 + call_if 1, PetalburgCity_EventScript_14B739 end PetalburgCity_EventScript_14B731:: @ 814B731 - movespriteperm 9, 5, 11 + setobjectxyperm 9, 5, 11 return PetalburgCity_EventScript_14B739:: @ 814B739 - playmusicbattle 420 + savebgm 420 return PetalburgCity_MapScript2_14B73D:: @ 814B73D @@ -26,24 +26,24 @@ PetalburgCity_MapScript2_14B73D:: @ 814B73D PetalburgCity_EventScript_14B747:: @ 814B747 lockall setflag 0x4000 - special 39 - special 301 - move 2, PetalburgCity_Movement_14B7ED - move 255, PetalburgCity_Movement_14B7CC - waitmove 0 + special SavePlayerParty + special PutZigzagoonInPlayerParty + applymovement 2, PetalburgCity_Movement_14B7ED + applymovement 255, PetalburgCity_Movement_14B7CC + waitmovement 0 msgbox PetalburgCity_Text_16D361, 4 - special 157 + special ScrSpecial_StartWallyTutorialBattle waitstate msgbox PetalburgCity_Text_16D3DE, 4 - movecoords 2, PetalburgCity_Movement_1A083F, 0, 0 - waitmovexy 0, 0, 2 + applymovement 2, PetalburgCity_Movement_1A083F, 0, 0 + waitmovement 0, 0, 2 msgbox PetalburgCity_Text_16D408, 4 - closebutton + closemessage clearflag 0x4000 setvar 0x4057, 3 - fadedefault + fadedefaultbgm clearflag 0x4001 - special 40 + special LoadPlayerParty setvar 0x4085, 1 warp PetalburgCity_Gym, 255, 4, 108 waitstate @@ -54,9 +54,9 @@ PetalburgCity_EventScript_14B7AC:: @ 814B7AC lock faceplayer msgbox PetalburgCity_Text_164490, 4 - closebutton - move 3, PetalburgCity_Movement_1A083D - waitmove 0 + closemessage + applymovement 3, PetalburgCity_Movement_1A083D + waitmovement 0 release end @@ -157,114 +157,114 @@ PetalburgCity_EventScript_14B82D:: @ 814B82D PetalburgCity_EventScript_14B836:: @ 814B836 lockall setvar 0x8008, 0 - jump PetalburgCity_EventScript_14B866 + goto PetalburgCity_EventScript_14B866 end PetalburgCity_EventScript_14B842:: @ 814B842 lockall setvar 0x8008, 1 - jump PetalburgCity_EventScript_14B866 + goto PetalburgCity_EventScript_14B866 end PetalburgCity_EventScript_14B84E:: @ 814B84E lockall setvar 0x8008, 2 - jump PetalburgCity_EventScript_14B866 + goto PetalburgCity_EventScript_14B866 end PetalburgCity_EventScript_14B85A:: @ 814B85A lockall setvar 0x8008, 3 - jump PetalburgCity_EventScript_14B866 + goto PetalburgCity_EventScript_14B866 end PetalburgCity_EventScript_14B866:: @ 814B866 - move 9, PetalburgCity_Movement_1A0839 - waitmove 0 - playmusic 420, 0 - playsfx 21 - move 9, PetalburgCity_Movement_1A0833 - waitmove 0 - move 9, PetalburgCity_Movement_1A0835 - waitmove 0 + applymovement 9, PetalburgCity_Movement_1A0839 + waitmovement 0 + playbgm 420, 0 + playse 21 + applymovement 9, PetalburgCity_Movement_1A0833 + waitmovement 0 + applymovement 9, PetalburgCity_Movement_1A0835 + waitmovement 0 compare 0x8008, 0 - callif 1, PetalburgCity_EventScript_14B91B + call_if 1, PetalburgCity_EventScript_14B91B compare 0x8008, 1 - callif 1, PetalburgCity_EventScript_14B930 + call_if 1, PetalburgCity_EventScript_14B930 compare 0x8008, 2 - callif 1, PetalburgCity_EventScript_14B93B + call_if 1, PetalburgCity_EventScript_14B93B compare 0x8008, 3 - callif 1, PetalburgCity_EventScript_14B950 + call_if 1, PetalburgCity_EventScript_14B950 msgbox PetalburgCity_Text_16438A, 4 - closebutton + closemessage compare 0x8008, 0 - callif 1, PetalburgCity_EventScript_14B965 + call_if 1, PetalburgCity_EventScript_14B965 compare 0x8008, 1 - callif 1, PetalburgCity_EventScript_14B977 + call_if 1, PetalburgCity_EventScript_14B977 compare 0x8008, 2 - callif 1, PetalburgCity_EventScript_14B989 + call_if 1, PetalburgCity_EventScript_14B989 compare 0x8008, 3 - callif 1, PetalburgCity_EventScript_14B99B + call_if 1, PetalburgCity_EventScript_14B99B msgbox PetalburgCity_Text_164426, 4 - move 9, PetalburgCity_Movement_1A0843 - move 255, PetalburgCity_Movement_1A0843 - waitmove 0 + applymovement 9, PetalburgCity_Movement_1A0843 + applymovement 255, PetalburgCity_Movement_1A0843 + waitmovement 0 msgbox PetalburgCity_Text_164449, 4 - closebutton - move 9, PetalburgCity_Movement_14B9F4 - waitmove 0 - fadedefault + closemessage + applymovement 9, PetalburgCity_Movement_14B9F4 + waitmovement 0 + fadedefaultbgm releaseall end PetalburgCity_EventScript_14B91B:: @ 814B91B - move 9, PetalburgCity_Movement_14B9B1 - waitmove 0 - move 255, PetalburgCity_Movement_1A0845 - waitmove 0 + applymovement 9, PetalburgCity_Movement_14B9B1 + waitmovement 0 + applymovement 255, PetalburgCity_Movement_1A0845 + waitmovement 0 return PetalburgCity_EventScript_14B930:: @ 814B930 - move 9, PetalburgCity_Movement_14B9B6 - waitmove 0 + applymovement 9, PetalburgCity_Movement_14B9B6 + waitmovement 0 return PetalburgCity_EventScript_14B93B:: @ 814B93B - move 9, PetalburgCity_Movement_14B9B9 - waitmove 0 - move 255, PetalburgCity_Movement_1A0841 - waitmove 0 + applymovement 9, PetalburgCity_Movement_14B9B9 + waitmovement 0 + applymovement 255, PetalburgCity_Movement_1A0841 + waitmovement 0 return PetalburgCity_EventScript_14B950:: @ 814B950 - move 9, PetalburgCity_Movement_14B9BE - waitmove 0 - move 255, PetalburgCity_Movement_1A0841 - waitmove 0 + applymovement 9, PetalburgCity_Movement_14B9BE + waitmovement 0 + applymovement 255, PetalburgCity_Movement_1A0841 + waitmovement 0 return PetalburgCity_EventScript_14B965:: @ 814B965 - move 9, PetalburgCity_Movement_14B9C4 - move 255, PetalburgCity_Movement_14BA01 - waitmove 0 + applymovement 9, PetalburgCity_Movement_14B9C4 + applymovement 255, PetalburgCity_Movement_14BA01 + waitmovement 0 return PetalburgCity_EventScript_14B977:: @ 814B977 - move 9, PetalburgCity_Movement_14B9CF - move 255, PetalburgCity_Movement_14BA0B - waitmove 0 + applymovement 9, PetalburgCity_Movement_14B9CF + applymovement 255, PetalburgCity_Movement_14BA0B + waitmovement 0 return PetalburgCity_EventScript_14B989:: @ 814B989 - move 9, PetalburgCity_Movement_14B9DD - move 255, PetalburgCity_Movement_14BA18 - waitmove 0 + applymovement 9, PetalburgCity_Movement_14B9DD + applymovement 255, PetalburgCity_Movement_14BA18 + waitmovement 0 return PetalburgCity_EventScript_14B99B:: @ 814B99B - move 9, PetalburgCity_Movement_14B9E8 - move 255, PetalburgCity_Movement_14BA22 - waitmove 0 + applymovement 9, PetalburgCity_Movement_14B9E8 + applymovement 255, PetalburgCity_Movement_14BA22 + waitmovement 0 return @ 814B9AD diff --git a/data/scripts/maps/PetalburgCity_Gym.inc b/data/scripts/maps/PetalburgCity_Gym.inc index 9c6802e28..b2d104894 100644 --- a/data/scripts/maps/PetalburgCity_Gym.inc +++ b/data/scripts/maps/PetalburgCity_Gym.inc @@ -7,28 +7,28 @@ PetalburgCity_Gym_MapScripts:: @ 8154477 PetalburgCity_Gym_MapScript1_15448C:: @ 815448C compare 0x4085, 6 - jumpeq PetalburgCity_Gym_EventScript_1544A3 + goto_if_eq PetalburgCity_Gym_EventScript_1544A3 compare 0x4085, 7 - callif 4, PetalburgCity_Gym_EventScript_1544ED + call_if 4, PetalburgCity_Gym_EventScript_1544ED end PetalburgCity_Gym_EventScript_1544A3:: @ 81544A3 setvar 0x8005, 1 call PetalburgCity_Gym_EventScript_154F9A checktrainerflag OPPONENT_RANDALL - callif 1, PetalburgCity_Gym_EventScript_154FBB + call_if 1, PetalburgCity_Gym_EventScript_154FBB checktrainerflag OPPONENT_MARY - callif 1, PetalburgCity_Gym_EventScript_154FDC + call_if 1, PetalburgCity_Gym_EventScript_154FDC checktrainerflag OPPONENT_PARKER - callif 1, PetalburgCity_Gym_EventScript_154FFD + call_if 1, PetalburgCity_Gym_EventScript_154FFD checktrainerflag OPPONENT_LORI - callif 1, PetalburgCity_Gym_EventScript_15501E + call_if 1, PetalburgCity_Gym_EventScript_15501E checktrainerflag OPPONENT_GEORGE - callif 1, PetalburgCity_Gym_EventScript_15503F + call_if 1, PetalburgCity_Gym_EventScript_15503F checktrainerflag OPPONENT_JODY - callif 1, PetalburgCity_Gym_EventScript_155060 + call_if 1, PetalburgCity_Gym_EventScript_155060 checktrainerflag OPPONENT_BERKE - callif 1, PetalburgCity_Gym_EventScript_155081 + call_if 1, PetalburgCity_Gym_EventScript_155081 end PetalburgCity_Gym_EventScript_1544ED:: @ 81544ED @@ -45,23 +45,23 @@ PetalburgCity_Gym_EventScript_1544ED:: @ 81544ED PetalburgCity_Gym_MapScript1_15451B:: @ 815451B compare 0x4085, 1 - callif 1, PetalburgCity_Gym_EventScript_15453B + call_if 1, PetalburgCity_Gym_EventScript_15453B compare 0x4085, 6 - callif 0, PetalburgCity_Gym_EventScript_154543 + call_if 0, PetalburgCity_Gym_EventScript_154543 checkflag 2052 - callif 1, PetalburgCity_Gym_EventScript_15454B + call_if 1, PetalburgCity_Gym_EventScript_15454B end PetalburgCity_Gym_EventScript_15453B:: @ 815453B - movespriteperm 10, 5, 108 + setobjectxyperm 10, 5, 108 return PetalburgCity_Gym_EventScript_154543:: @ 8154543 - movespriteperm 1, 4, 107 + setobjectxyperm 1, 4, 107 return PetalburgCity_Gym_EventScript_15454B:: @ 815454B - movespriteperm 1, 4, 107 + setobjectxyperm 1, 4, 107 return PetalburgCity_Gym_MapScript2_154553:: @ 8154553 @@ -69,7 +69,7 @@ PetalburgCity_Gym_MapScript2_154553:: @ 8154553 .2byte 0 PetalburgCity_Gym_EventScript_15455D:: @ 815455D - spriteface 255, 2 + turnobject 255, 2 end PetalburgCity_Gym_MapScript2_154562:: @ 8154562 @@ -80,16 +80,16 @@ PetalburgCity_Gym_EventScript_15456C:: @ 815456C lockall msgbox PetalburgCity_Gym_Text_17A196, 4 msgbox PetalburgCity_Gym_Text_17A1B0, 4 - closebutton - move 255, PetalburgCity_Gym_Movement_1A0845 - move 10, PetalburgCity_Gym_Movement_1545B4 - waitmove 0 - playsfx 9 - disappear 10 + closemessage + applymovement 255, PetalburgCity_Gym_Movement_1A0845 + applymovement 10, PetalburgCity_Gym_Movement_1545B4 + waitmovement 0 + playse 9 + removeobject 10 setflag 726 - pause 30 - move 255, PetalburgCity_Gym_Movement_1A0841 - waitmove 0 + delay 30 + applymovement 255, PetalburgCity_Gym_Movement_1A0841 + waitmovement 0 msgbox PetalburgCity_Gym_Text_17A2A4, 4 setvar 0x4085, 2 releaseall @@ -113,7 +113,7 @@ PetalburgCity_Gym_EventScript_1545B9:: @ 81545B9 case 6, PetalburgCity_Gym_EventScript_1549D6 case 7, PetalburgCity_Gym_EventScript_15493D msgbox PetalburgCity_Gym_Text_179DF6, 4 - closebutton + closemessage switch FACING case 1, PetalburgCity_Gym_EventScript_15463D case 2, PetalburgCity_Gym_EventScript_154648 @@ -123,197 +123,197 @@ PetalburgCity_Gym_EventScript_1545B9:: @ 81545B9 PetalburgCity_Gym_EventScript_15463D:: @ 815463D setvar 0x8008, 0 - jump PetalburgCity_Gym_EventScript_154669 + goto PetalburgCity_Gym_EventScript_154669 end PetalburgCity_Gym_EventScript_154648:: @ 8154648 setvar 0x8008, 1 - jump PetalburgCity_Gym_EventScript_154669 + goto PetalburgCity_Gym_EventScript_154669 end PetalburgCity_Gym_EventScript_154653:: @ 8154653 setvar 0x8008, 2 - jump PetalburgCity_Gym_EventScript_154669 + goto PetalburgCity_Gym_EventScript_154669 end PetalburgCity_Gym_EventScript_15465E:: @ 815465E setvar 0x8008, 3 - jump PetalburgCity_Gym_EventScript_154669 + goto PetalburgCity_Gym_EventScript_154669 end PetalburgCity_Gym_EventScript_154669:: @ 8154669 - reappear 10 - playsfx 8 + addobject 10 + playse 8 compare 0x8008, 0 - callif 1, PetalburgCity_Gym_EventScript_1547EE + call_if 1, PetalburgCity_Gym_EventScript_1547EE compare 0x8008, 1 - callif 1, PetalburgCity_Gym_EventScript_154800 + call_if 1, PetalburgCity_Gym_EventScript_154800 compare 0x8008, 2 - callif 1, PetalburgCity_Gym_EventScript_15481C + call_if 1, PetalburgCity_Gym_EventScript_15481C compare 0x8008, 3 - callif 1, PetalburgCity_Gym_EventScript_15481C + call_if 1, PetalburgCity_Gym_EventScript_15481C msgbox PetalburgCity_Gym_Text_179F07, 4 msgbox PetalburgCity_Gym_Text_179F37, 4 msgbox PetalburgCity_Gym_Text_179F70, 4 msgbox PetalburgCity_Gym_Text_17A03A, 4 compare 0x8008, 0 - callif 1, PetalburgCity_Gym_EventScript_154884 + call_if 1, PetalburgCity_Gym_EventScript_154884 compare 0x8008, 1 - callif 1, PetalburgCity_Gym_EventScript_15488F + call_if 1, PetalburgCity_Gym_EventScript_15488F compare 0x8008, 2 - callif 1, PetalburgCity_Gym_EventScript_1548A1 + call_if 1, PetalburgCity_Gym_EventScript_1548A1 compare 0x8008, 3 - callif 1, PetalburgCity_Gym_EventScript_1548B3 + call_if 1, PetalburgCity_Gym_EventScript_1548B3 msgbox PetalburgCity_Gym_Text_17A04A, 4 compare 0x8008, 0 - callif 1, PetalburgCity_Gym_EventScript_1548C5 + call_if 1, PetalburgCity_Gym_EventScript_1548C5 compare 0x8008, 1 - callif 1, PetalburgCity_Gym_EventScript_1548D0 + call_if 1, PetalburgCity_Gym_EventScript_1548D0 compare 0x8008, 2 - callif 1, PetalburgCity_Gym_EventScript_1548DB + call_if 1, PetalburgCity_Gym_EventScript_1548DB compare 0x8008, 3 - callif 1, PetalburgCity_Gym_EventScript_1548E6 + call_if 1, PetalburgCity_Gym_EventScript_1548E6 msgbox PetalburgCity_Gym_Text_17A0A8, 4 msgbox PetalburgCity_Gym_Text_17A0EB, 4 msgbox PetalburgCity_Gym_Text_17A156, 4 compare 0x8008, 0 - callif 1, PetalburgCity_Gym_EventScript_15492F + call_if 1, PetalburgCity_Gym_EventScript_15492F compare 0x8008, 1 - callif 1, PetalburgCity_Gym_EventScript_154930 + call_if 1, PetalburgCity_Gym_EventScript_154930 compare 0x8008, 2 - callif 1, PetalburgCity_Gym_EventScript_15493B + call_if 1, PetalburgCity_Gym_EventScript_15493B compare 0x8008, 3 - callif 1, PetalburgCity_Gym_EventScript_15493C + call_if 1, PetalburgCity_Gym_EventScript_15493C compare 0x8008, 0 - callif 1, PetalburgCity_Gym_EventScript_1548F1 + call_if 1, PetalburgCity_Gym_EventScript_1548F1 compare 0x8008, 1 - callif 1, PetalburgCity_Gym_EventScript_1548FC + call_if 1, PetalburgCity_Gym_EventScript_1548FC compare 0x8008, 2 - callif 1, PetalburgCity_Gym_EventScript_1548F1 + call_if 1, PetalburgCity_Gym_EventScript_1548F1 compare 0x8008, 3 - callif 1, PetalburgCity_Gym_EventScript_1548F1 + call_if 1, PetalburgCity_Gym_EventScript_1548F1 msgbox PetalburgCity_Gym_Text_17A171, 4 - closebutton + closemessage setflag 0x4001 - playmusic 420, 0 + playbgm 420, 0 compare 0x8008, 0 - callif 1, PetalburgCity_Gym_EventScript_154835 + call_if 1, PetalburgCity_Gym_EventScript_154835 compare 0x8008, 1 - callif 1, PetalburgCity_Gym_EventScript_15484E + call_if 1, PetalburgCity_Gym_EventScript_15484E compare 0x8008, 2 - callif 1, PetalburgCity_Gym_EventScript_154860 + call_if 1, PetalburgCity_Gym_EventScript_154860 compare 0x8008, 3 - callif 1, PetalburgCity_Gym_EventScript_154872 - disappear 10 + call_if 1, PetalburgCity_Gym_EventScript_154872 + removeobject 10 setflag 728 setvar 0x4085, 1 setvar 0x4057, 2 clearflag 726 clearflag 866 setflag 889 - special 211 + special InitBirchState warp PetalburgCity, 255, 15, 8 waitstate release end PetalburgCity_Gym_EventScript_1547EE:: @ 81547EE - move 1, PetalburgCity_Gym_Movement_1A0845 - move 10, PetalburgCity_Gym_Movement_154B27 - waitmove 0 + applymovement 1, PetalburgCity_Gym_Movement_1A0845 + applymovement 10, PetalburgCity_Gym_Movement_154B27 + waitmovement 0 return PetalburgCity_Gym_EventScript_154800:: @ 8154800 - move 10, PetalburgCity_Gym_Movement_154B1D - waitmove 0 - move 1, PetalburgCity_Gym_Movement_1A0843 - move 255, PetalburgCity_Gym_Movement_1A0843 - waitmove 0 + applymovement 10, PetalburgCity_Gym_Movement_154B1D + waitmovement 0 + applymovement 1, PetalburgCity_Gym_Movement_1A0843 + applymovement 255, PetalburgCity_Gym_Movement_1A0843 + waitmovement 0 return PetalburgCity_Gym_EventScript_15481C:: @ 815481C - move 1, PetalburgCity_Gym_Movement_1A0845 - move 255, PetalburgCity_Gym_Movement_1A0845 - move 10, PetalburgCity_Gym_Movement_154B27 - waitmove 0 + applymovement 1, PetalburgCity_Gym_Movement_1A0845 + applymovement 255, PetalburgCity_Gym_Movement_1A0845 + applymovement 10, PetalburgCity_Gym_Movement_154B27 + waitmovement 0 return PetalburgCity_Gym_EventScript_154835:: @ 8154835 - move 1, PetalburgCity_Gym_Movement_1A0845 - move 10, PetalburgCity_Gym_Movement_154B3E - move 255, PetalburgCity_Gym_Movement_154B4D - waitmove 0 + applymovement 1, PetalburgCity_Gym_Movement_1A0845 + applymovement 10, PetalburgCity_Gym_Movement_154B3E + applymovement 255, PetalburgCity_Gym_Movement_154B4D + waitmovement 0 return PetalburgCity_Gym_EventScript_15484E:: @ 815484E - move 10, PetalburgCity_Gym_Movement_154B2E - move 255, PetalburgCity_Gym_Movement_154B45 - waitmove 0 + applymovement 10, PetalburgCity_Gym_Movement_154B2E + applymovement 255, PetalburgCity_Gym_Movement_154B45 + waitmovement 0 return PetalburgCity_Gym_EventScript_154860:: @ 8154860 - move 10, PetalburgCity_Gym_Movement_154B3E - move 255, PetalburgCity_Gym_Movement_154B57 - waitmove 0 + applymovement 10, PetalburgCity_Gym_Movement_154B3E + applymovement 255, PetalburgCity_Gym_Movement_154B57 + waitmovement 0 return PetalburgCity_Gym_EventScript_154872:: @ 8154872 - move 10, PetalburgCity_Gym_Movement_154B36 - move 255, PetalburgCity_Gym_Movement_154B5F - waitmove 0 + applymovement 10, PetalburgCity_Gym_Movement_154B36 + applymovement 255, PetalburgCity_Gym_Movement_154B5F + waitmovement 0 return PetalburgCity_Gym_EventScript_154884:: @ 8154884 - move 1, PetalburgCity_Gym_Movement_1A0841 - waitmove 0 + applymovement 1, PetalburgCity_Gym_Movement_1A0841 + waitmovement 0 return PetalburgCity_Gym_EventScript_15488F:: @ 815488F - move 1, PetalburgCity_Gym_Movement_1A0845 - move 255, PetalburgCity_Gym_Movement_1A0841 - waitmove 0 + applymovement 1, PetalburgCity_Gym_Movement_1A0845 + applymovement 255, PetalburgCity_Gym_Movement_1A0841 + waitmovement 0 return PetalburgCity_Gym_EventScript_1548A1:: @ 81548A1 - move 1, PetalburgCity_Gym_Movement_1A0843 - move 255, PetalburgCity_Gym_Movement_1A083F - waitmove 0 + applymovement 1, PetalburgCity_Gym_Movement_1A0843 + applymovement 255, PetalburgCity_Gym_Movement_1A083F + waitmovement 0 return PetalburgCity_Gym_EventScript_1548B3:: @ 81548B3 - move 1, PetalburgCity_Gym_Movement_1A083F - move 255, PetalburgCity_Gym_Movement_1A0843 - waitmove 0 + applymovement 1, PetalburgCity_Gym_Movement_1A083F + applymovement 255, PetalburgCity_Gym_Movement_1A0843 + waitmovement 0 return PetalburgCity_Gym_EventScript_1548C5:: @ 81548C5 - move 1, PetalburgCity_Gym_Movement_1A0845 - waitmove 0 + applymovement 1, PetalburgCity_Gym_Movement_1A0845 + waitmovement 0 return PetalburgCity_Gym_EventScript_1548D0:: @ 81548D0 - move 1, PetalburgCity_Gym_Movement_1A0843 - waitmove 0 + applymovement 1, PetalburgCity_Gym_Movement_1A0843 + waitmovement 0 return PetalburgCity_Gym_EventScript_1548DB:: @ 81548DB - move 1, PetalburgCity_Gym_Movement_1A0845 - waitmove 0 + applymovement 1, PetalburgCity_Gym_Movement_1A0845 + waitmovement 0 return PetalburgCity_Gym_EventScript_1548E6:: @ 81548E6 - move 1, PetalburgCity_Gym_Movement_1A0845 - waitmove 0 + applymovement 1, PetalburgCity_Gym_Movement_1A0845 + waitmovement 0 return PetalburgCity_Gym_EventScript_1548F1:: @ 81548F1 - move 10, PetalburgCity_Gym_Movement_1A0839 - waitmove 0 + applymovement 10, PetalburgCity_Gym_Movement_1A0839 + waitmovement 0 return PetalburgCity_Gym_EventScript_1548FC:: @ 81548FC - move 10, PetalburgCity_Gym_Movement_1A0845 - waitmove 0 + applymovement 10, PetalburgCity_Gym_Movement_1A0845 + waitmovement 0 return PetalburgCity_Gym_EventScript_154907:: @ 8154907 @@ -340,8 +340,8 @@ PetalburgCity_Gym_EventScript_15492F:: @ 815492F return PetalburgCity_Gym_EventScript_154930:: @ 8154930 - move 1, PetalburgCity_Gym_Movement_1A0845 - waitmove 0 + applymovement 1, PetalburgCity_Gym_Movement_1A0845 + waitmovement 0 return PetalburgCity_Gym_EventScript_15493B:: @ 815493B @@ -353,27 +353,27 @@ PetalburgCity_Gym_EventScript_15493C:: @ 815493C PetalburgCity_Gym_EventScript_15493D:: @ 815493D call PetalburgCity_Gym_EventScript_154969 compare RESULT, 1 - jumpeq PetalburgCity_Gym_EventScript_1549B8 + goto_if_eq PetalburgCity_Gym_EventScript_1549B8 checkflag 169 - jumpif 0, PetalburgCity_Gym_EventScript_154A2C + goto_if 0, PetalburgCity_Gym_EventScript_154A2C checkflag 2052 - jumpeq PetalburgCity_Gym_EventScript_154B69 + goto_if_eq PetalburgCity_Gym_EventScript_154B69 msgbox PetalburgCity_Gym_Text_17AA6B, 4 release end PetalburgCity_Gym_EventScript_154969:: @ 8154969 - specialval RESULT, 50 + specialvar RESULT, IsEnigmaBerryValid compare RESULT, 0 - jumpeq PetalburgCity_Gym_EventScript_1549B2 + goto_if_eq PetalburgCity_Gym_EventScript_1549B2 checkitem ITEM_ENIGMA_BERRY, 1 compare RESULT, 1 - jumpeq PetalburgCity_Gym_EventScript_1549B2 + goto_if_eq PetalburgCity_Gym_EventScript_1549B2 checkpcitem ITEM_ENIGMA_BERRY, 1 compare RESULT, 1 - jumpeq PetalburgCity_Gym_EventScript_1549B2 + goto_if_eq PetalburgCity_Gym_EventScript_1549B2 compare 0x402d, 0 - jumpeq PetalburgCity_Gym_EventScript_1549B2 + goto_if_eq PetalburgCity_Gym_EventScript_1549B2 msgbox PetalburgCity_Gym_Text_1C5570, 4 setvar RESULT, 1 return @@ -385,7 +385,7 @@ PetalburgCity_Gym_EventScript_1549B2:: @ 81549B2 PetalburgCity_Gym_EventScript_1549B8:: @ 81549B8 giveitem ITEM_ENIGMA_BERRY compare RESULT, 0 - jumpeq PetalburgCity_Gym_EventScript_1A029B + goto_if_eq PetalburgCity_Gym_EventScript_1A029B setvar 0x402d, 0 release end @@ -394,7 +394,7 @@ PetalburgCity_Gym_EventScript_1549D6:: @ 81549D6 msgbox PetalburgCity_Gym_Text_17A653, 4 trainerbattle 3, OPPONENT_NORMAN, 0, PetalburgCity_Gym_Text_17A77A message PetalburgCity_Gym_Text_17A7DD - waittext + waitmessage call PetalburgCity_Gym_EventScript_1A02C5 msgbox PetalburgCity_Gym_Text_17A805, 4 setflag 1217 @@ -407,77 +407,77 @@ PetalburgCity_Gym_EventScript_1549D6:: @ 81549D6 call PetalburgCity_Gym_EventScript_1A01C0 clearflag 940 call PetalburgCity_Gym_EventScript_1544ED - special 142 - jump PetalburgCity_Gym_EventScript_154A2C + special DrawWholeMapView + goto PetalburgCity_Gym_EventScript_154A2C end PetalburgCity_Gym_EventScript_154A2C:: @ 8154A2C giveitem ITEM_TM42 compare RESULT, 0 - jumpeq PetalburgCity_Gym_EventScript_1A029B + goto_if_eq PetalburgCity_Gym_EventScript_1A029B setflag 169 msgbox PetalburgCity_Gym_Text_17A8CF, 4 msgbox PetalburgCity_Gym_Text_17A976, 4 - closebutton + closemessage compare FACING, 2 - callif 1, PetalburgCity_Gym_EventScript_154ABC + call_if 1, PetalburgCity_Gym_EventScript_154ABC compare FACING, 1 - callif 1, PetalburgCity_Gym_EventScript_154AC7 + call_if 1, PetalburgCity_Gym_EventScript_154AC7 compare FACING, 3 - callif 1, PetalburgCity_Gym_EventScript_154AD2 + call_if 1, PetalburgCity_Gym_EventScript_154AD2 compare FACING, 4 - callif 1, PetalburgCity_Gym_EventScript_154ADD - pause 70 + call_if 1, PetalburgCity_Gym_EventScript_154ADD + delay 70 compare FACING, 2 - callif 1, PetalburgCity_Gym_EventScript_154AE8 + call_if 1, PetalburgCity_Gym_EventScript_154AE8 compare FACING, 1 - callif 1, PetalburgCity_Gym_EventScript_154AF3 + call_if 1, PetalburgCity_Gym_EventScript_154AF3 compare FACING, 3 - callif 1, PetalburgCity_Gym_EventScript_154AFE + call_if 1, PetalburgCity_Gym_EventScript_154AFE compare FACING, 4 - callif 1, PetalburgCity_Gym_EventScript_154B09 + call_if 1, PetalburgCity_Gym_EventScript_154B09 msgbox PetalburgCity_Gym_Text_17A9F6, 4 release end PetalburgCity_Gym_EventScript_154ABC:: @ 8154ABC - move 1, PetalburgCity_Gym_Movement_1A0841 - waitmove 0 + applymovement 1, PetalburgCity_Gym_Movement_1A0841 + waitmovement 0 return PetalburgCity_Gym_EventScript_154AC7:: @ 8154AC7 - move 1, PetalburgCity_Gym_Movement_1A0845 - waitmove 0 + applymovement 1, PetalburgCity_Gym_Movement_1A0845 + waitmovement 0 return PetalburgCity_Gym_EventScript_154AD2:: @ 8154AD2 - move 1, PetalburgCity_Gym_Movement_1A083F - waitmove 0 + applymovement 1, PetalburgCity_Gym_Movement_1A083F + waitmovement 0 return PetalburgCity_Gym_EventScript_154ADD:: @ 8154ADD - move 1, PetalburgCity_Gym_Movement_1A0843 - waitmove 0 + applymovement 1, PetalburgCity_Gym_Movement_1A0843 + waitmovement 0 return PetalburgCity_Gym_EventScript_154AE8:: @ 8154AE8 - move 1, PetalburgCity_Gym_Movement_1A0845 - waitmove 0 + applymovement 1, PetalburgCity_Gym_Movement_1A0845 + waitmovement 0 return PetalburgCity_Gym_EventScript_154AF3:: @ 8154AF3 - move 1, PetalburgCity_Gym_Movement_1A0841 - waitmove 0 + applymovement 1, PetalburgCity_Gym_Movement_1A0841 + waitmovement 0 return PetalburgCity_Gym_EventScript_154AFE:: @ 8154AFE - move 1, PetalburgCity_Gym_Movement_1A0843 - waitmove 0 + applymovement 1, PetalburgCity_Gym_Movement_1A0843 + waitmovement 0 return PetalburgCity_Gym_EventScript_154B09:: @ 8154B09 - move 1, PetalburgCity_Gym_Movement_1A083F - waitmove 0 + applymovement 1, PetalburgCity_Gym_Movement_1A083F + waitmovement 0 return @ 8154B14 @@ -593,20 +593,20 @@ PetalburgCity_Gym_EventScript_154B69:: @ 8154B69 PetalburgCity_Gym_EventScript_154B73:: @ 8154B73 lockall compare 0x4085, 6 - jumpif 0, PetalburgCity_Gym_EventScript_154BB9 + goto_if 0, PetalburgCity_Gym_EventScript_154BB9 setvar 0x8008, 7 setvar 0x8009, 85 msgbox PetalburgCity_Gym_Text_17B870, 5 compare RESULT, 1 - jumpeq PetalburgCity_Gym_EventScript_154BA8 + goto_if_eq PetalburgCity_Gym_EventScript_154BA8 compare RESULT, 0 - jumpeq PetalburgCity_Gym_EventScript_154BB7 + goto_if_eq PetalburgCity_Gym_EventScript_154BB7 end PetalburgCity_Gym_EventScript_154BA8:: @ 8154BA8 - closebutton - pause 30 - warpwalk PetalburgCity_Gym, 255, 32776, 32777 + closemessage + delay 30 + warpdoor PetalburgCity_Gym, 255, 32776, 32777 waitstate releaseall end @@ -623,157 +623,157 @@ PetalburgCity_Gym_EventScript_154BB9:: @ 8154BB9 PetalburgCity_Gym_EventScript_154BC3:: @ 8154BC3 lockall compare 0x4085, 6 - jumpif 0, PetalburgCity_Gym_EventScript_154BB9 + goto_if 0, PetalburgCity_Gym_EventScript_154BB9 setvar 0x8008, 1 setvar 0x8009, 98 msgbox PetalburgCity_Gym_Text_17B8D4, 5 compare RESULT, 1 - jumpeq PetalburgCity_Gym_EventScript_154BA8 + goto_if_eq PetalburgCity_Gym_EventScript_154BA8 compare RESULT, 0 - jumpeq PetalburgCity_Gym_EventScript_154BB7 + goto_if_eq PetalburgCity_Gym_EventScript_154BB7 end PetalburgCity_Gym_EventScript_154BF8:: @ 8154BF8 lockall checktrainerflag OPPONENT_RANDALL - jumpif 0, PetalburgCity_Gym_EventScript_154BB9 + goto_if 0, PetalburgCity_Gym_EventScript_154BB9 setvar 0x8008, 7 setvar 0x8009, 46 msgbox PetalburgCity_Gym_Text_17B90F, 5 compare RESULT, 1 - jumpeq PetalburgCity_Gym_EventScript_154BA8 + goto_if_eq PetalburgCity_Gym_EventScript_154BA8 compare RESULT, 0 - jumpeq PetalburgCity_Gym_EventScript_154BB7 + goto_if_eq PetalburgCity_Gym_EventScript_154BB7 end PetalburgCity_Gym_EventScript_154C2B:: @ 8154C2B lockall checktrainerflag OPPONENT_RANDALL - jumpif 0, PetalburgCity_Gym_EventScript_154BB9 + goto_if 0, PetalburgCity_Gym_EventScript_154BB9 setvar 0x8008, 1 setvar 0x8009, 59 msgbox PetalburgCity_Gym_Text_17B950, 5 compare RESULT, 1 - jumpeq PetalburgCity_Gym_EventScript_154BA8 + goto_if_eq PetalburgCity_Gym_EventScript_154BA8 compare RESULT, 0 - jumpeq PetalburgCity_Gym_EventScript_154BB7 + goto_if_eq PetalburgCity_Gym_EventScript_154BB7 end PetalburgCity_Gym_EventScript_154C5E:: @ 8154C5E lockall checktrainerflag OPPONENT_MARY - jumpif 0, PetalburgCity_Gym_EventScript_154BB9 + goto_if 0, PetalburgCity_Gym_EventScript_154BB9 setvar 0x8008, 7 setvar 0x8009, 59 msgbox PetalburgCity_Gym_Text_17B950, 5 compare RESULT, 1 - jumpeq PetalburgCity_Gym_EventScript_154BA8 + goto_if_eq PetalburgCity_Gym_EventScript_154BA8 compare RESULT, 0 - jumpeq PetalburgCity_Gym_EventScript_154BB7 + goto_if_eq PetalburgCity_Gym_EventScript_154BB7 end PetalburgCity_Gym_EventScript_154C91:: @ 8154C91 lockall checktrainerflag OPPONENT_MARY - jumpif 0, PetalburgCity_Gym_EventScript_154BB9 + goto_if 0, PetalburgCity_Gym_EventScript_154BB9 setvar 0x8008, 1 setvar 0x8009, 72 msgbox PetalburgCity_Gym_Text_17B98A, 5 compare RESULT, 1 - jumpeq PetalburgCity_Gym_EventScript_154BA8 + goto_if_eq PetalburgCity_Gym_EventScript_154BA8 compare RESULT, 0 - jumpeq PetalburgCity_Gym_EventScript_154BB7 + goto_if_eq PetalburgCity_Gym_EventScript_154BB7 end PetalburgCity_Gym_EventScript_154CC4:: @ 8154CC4 lockall checktrainerflag OPPONENT_PARKER - jumpif 0, PetalburgCity_Gym_EventScript_154BB9 + goto_if 0, PetalburgCity_Gym_EventScript_154BB9 setvar 0x8008, 1 setvar 0x8009, 20 msgbox PetalburgCity_Gym_Text_17B9C5, 5 compare RESULT, 1 - jumpeq PetalburgCity_Gym_EventScript_154BA8 + goto_if_eq PetalburgCity_Gym_EventScript_154BA8 compare RESULT, 0 - jumpeq PetalburgCity_Gym_EventScript_154BB7 + goto_if_eq PetalburgCity_Gym_EventScript_154BB7 end PetalburgCity_Gym_EventScript_154CF7:: @ 8154CF7 lockall checktrainerflag OPPONENT_LORI - jumpif 0, PetalburgCity_Gym_EventScript_154BB9 + goto_if 0, PetalburgCity_Gym_EventScript_154BB9 setvar 0x8008, 7 setvar 0x8009, 20 msgbox PetalburgCity_Gym_Text_17B9C5, 5 compare RESULT, 1 - jumpeq PetalburgCity_Gym_EventScript_154BA8 + goto_if_eq PetalburgCity_Gym_EventScript_154BA8 compare RESULT, 0 - jumpeq PetalburgCity_Gym_EventScript_154BB7 + goto_if_eq PetalburgCity_Gym_EventScript_154BB7 end PetalburgCity_Gym_EventScript_154D2A:: @ 8154D2A lockall checktrainerflag OPPONENT_LORI - jumpif 0, PetalburgCity_Gym_EventScript_154BB9 + goto_if 0, PetalburgCity_Gym_EventScript_154BB9 setvar 0x8008, 1 setvar 0x8009, 33 msgbox PetalburgCity_Gym_Text_17BA00, 5 compare RESULT, 1 - jumpeq PetalburgCity_Gym_EventScript_154BA8 + goto_if_eq PetalburgCity_Gym_EventScript_154BA8 compare RESULT, 0 - jumpeq PetalburgCity_Gym_EventScript_154BB7 + goto_if_eq PetalburgCity_Gym_EventScript_154BB7 end PetalburgCity_Gym_EventScript_154D5D:: @ 8154D5D lockall checktrainerflag OPPONENT_GEORGE - jumpif 0, PetalburgCity_Gym_EventScript_154BB9 + goto_if 0, PetalburgCity_Gym_EventScript_154BB9 setvar 0x8008, 7 setvar 0x8009, 33 msgbox PetalburgCity_Gym_Text_17BA00, 5 compare RESULT, 1 - jumpeq PetalburgCity_Gym_EventScript_154BA8 + goto_if_eq PetalburgCity_Gym_EventScript_154BA8 compare RESULT, 0 - jumpeq PetalburgCity_Gym_EventScript_154BB7 + goto_if_eq PetalburgCity_Gym_EventScript_154BB7 end PetalburgCity_Gym_EventScript_154D90:: @ 8154D90 lockall checktrainerflag OPPONENT_JODY - jumpif 0, PetalburgCity_Gym_EventScript_154BB9 + goto_if 0, PetalburgCity_Gym_EventScript_154BB9 setvar 0x8008, 1 setvar 0x8009, 7 msgbox PetalburgCity_Gym_Text_17BA3D, 5 compare RESULT, 1 - jumpeq PetalburgCity_Gym_EventScript_154BA8 + goto_if_eq PetalburgCity_Gym_EventScript_154BA8 compare RESULT, 0 - jumpeq PetalburgCity_Gym_EventScript_154BB7 + goto_if_eq PetalburgCity_Gym_EventScript_154BB7 end PetalburgCity_Gym_EventScript_154DC3:: @ 8154DC3 lockall checktrainerflag OPPONENT_BERKE - jumpif 0, PetalburgCity_Gym_EventScript_154BB9 + goto_if 0, PetalburgCity_Gym_EventScript_154BB9 setvar 0x8008, 7 setvar 0x8009, 7 msgbox PetalburgCity_Gym_Text_17BA3D, 5 compare RESULT, 1 - jumpeq PetalburgCity_Gym_EventScript_154BA8 + goto_if_eq PetalburgCity_Gym_EventScript_154BA8 compare RESULT, 0 - jumpeq PetalburgCity_Gym_EventScript_154BB7 + goto_if_eq PetalburgCity_Gym_EventScript_154BB7 end PetalburgCity_Gym_EventScript_154DF6:: @ 8154DF6 trainerbattle 2, OPPONENT_RANDALL, 0, PetalburgCity_Gym_Text_17ADA5, PetalburgCity_Gym_Text_17AE11, PetalburgCity_Gym_EventScript_154E1A checkflag 1217 - jumpeq PetalburgCity_Gym_EventScript_154E29 + goto_if_eq PetalburgCity_Gym_EventScript_154E29 msgbox PetalburgCity_Gym_Text_17AE30, 6 end PetalburgCity_Gym_EventScript_154E1A:: @ 8154E1A setvar 0x8005, 0 call PetalburgCity_Gym_EventScript_154FBB - special 142 + special DrawWholeMapView release end @@ -784,14 +784,14 @@ PetalburgCity_Gym_EventScript_154E29:: @ 8154E29 PetalburgCity_Gym_EventScript_154E32:: @ 8154E32 trainerbattle 2, OPPONENT_PARKER, 0, PetalburgCity_Gym_Text_17AF5A, PetalburgCity_Gym_Text_17AF98, PetalburgCity_Gym_EventScript_154E56 checkflag 1217 - jumpeq PetalburgCity_Gym_EventScript_154E65 + goto_if_eq PetalburgCity_Gym_EventScript_154E65 msgbox PetalburgCity_Gym_Text_17AFD3, 6 end PetalburgCity_Gym_EventScript_154E56:: @ 8154E56 setvar 0x8005, 0 call PetalburgCity_Gym_EventScript_154FFD - special 142 + special DrawWholeMapView release end @@ -802,14 +802,14 @@ PetalburgCity_Gym_EventScript_154E65:: @ 8154E65 PetalburgCity_Gym_EventScript_154E6E:: @ 8154E6E trainerbattle 2, OPPONENT_GEORGE, 0, PetalburgCity_Gym_Text_17B058, PetalburgCity_Gym_Text_17B0F7, PetalburgCity_Gym_EventScript_154E92 checkflag 1217 - jumpeq PetalburgCity_Gym_EventScript_154EA1 + goto_if_eq PetalburgCity_Gym_EventScript_154EA1 msgbox PetalburgCity_Gym_Text_17B12C, 6 end PetalburgCity_Gym_EventScript_154E92:: @ 8154E92 setvar 0x8005, 0 call PetalburgCity_Gym_EventScript_15503F - special 142 + special DrawWholeMapView release end @@ -820,14 +820,14 @@ PetalburgCity_Gym_EventScript_154EA1:: @ 8154EA1 PetalburgCity_Gym_EventScript_154EAA:: @ 8154EAA trainerbattle 2, OPPONENT_BERKE, 0, PetalburgCity_Gym_Text_17B237, PetalburgCity_Gym_Text_17B2C0, PetalburgCity_Gym_EventScript_154ECE checkflag 1217 - jumpeq PetalburgCity_Gym_EventScript_154EDD + goto_if_eq PetalburgCity_Gym_EventScript_154EDD msgbox PetalburgCity_Gym_Text_17B2E4, 6 end PetalburgCity_Gym_EventScript_154ECE:: @ 8154ECE setvar 0x8005, 0 call PetalburgCity_Gym_EventScript_155081 - special 142 + special DrawWholeMapView release end @@ -838,14 +838,14 @@ PetalburgCity_Gym_EventScript_154EDD:: @ 8154EDD PetalburgCity_Gym_EventScript_154EE6:: @ 8154EE6 trainerbattle 2, OPPONENT_MARY, 0, PetalburgCity_Gym_Text_17B3F7, PetalburgCity_Gym_Text_17B454, PetalburgCity_Gym_EventScript_154F0A checkflag 1217 - jumpeq PetalburgCity_Gym_EventScript_154F19 + goto_if_eq PetalburgCity_Gym_EventScript_154F19 msgbox PetalburgCity_Gym_Text_17B46F, 6 end PetalburgCity_Gym_EventScript_154F0A:: @ 8154F0A setvar 0x8005, 0 call PetalburgCity_Gym_EventScript_154FDC - special 142 + special DrawWholeMapView release end @@ -856,14 +856,14 @@ PetalburgCity_Gym_EventScript_154F19:: @ 8154F19 PetalburgCity_Gym_EventScript_154F22:: @ 8154F22 trainerbattle 2, OPPONENT_LORI, 0, PetalburgCity_Gym_Text_17B58D, PetalburgCity_Gym_Text_17B5CB, PetalburgCity_Gym_EventScript_154F46 checkflag 1217 - jumpeq PetalburgCity_Gym_EventScript_154F55 + goto_if_eq PetalburgCity_Gym_EventScript_154F55 msgbox PetalburgCity_Gym_Text_17B5EA, 6 end PetalburgCity_Gym_EventScript_154F46:: @ 8154F46 setvar 0x8005, 0 call PetalburgCity_Gym_EventScript_15501E - special 142 + special DrawWholeMapView release end @@ -874,14 +874,14 @@ PetalburgCity_Gym_EventScript_154F55:: @ 8154F55 PetalburgCity_Gym_EventScript_154F5E:: @ 8154F5E trainerbattle 2, OPPONENT_JODY, 0, PetalburgCity_Gym_Text_17B6D4, PetalburgCity_Gym_Text_17B732, PetalburgCity_Gym_EventScript_154F82 checkflag 1217 - jumpeq PetalburgCity_Gym_EventScript_154F91 + goto_if_eq PetalburgCity_Gym_EventScript_154F91 msgbox PetalburgCity_Gym_Text_17B749, 6 end PetalburgCity_Gym_EventScript_154F82:: @ 8154F82 setvar 0x8005, 0 call PetalburgCity_Gym_EventScript_155060 - special 142 + special DrawWholeMapView release end @@ -892,72 +892,72 @@ PetalburgCity_Gym_EventScript_154F91:: @ 8154F91 PetalburgCity_Gym_EventScript_154F9A:: @ 8154F9A setvar 0x8004, 1 compare 0x8005, 0 - callif 1, PetalburgCity_Gym_EventScript_155182 + call_if 1, PetalburgCity_Gym_EventScript_155182 compare 0x8005, 1 - callif 1, PetalburgCity_Gym_EventScript_155187 + call_if 1, PetalburgCity_Gym_EventScript_155187 call PetalburgCity_Gym_EventScript_1550A2 return PetalburgCity_Gym_EventScript_154FBB:: @ 8154FBB setvar 0x8004, 2 compare 0x8005, 0 - callif 1, PetalburgCity_Gym_EventScript_155182 + call_if 1, PetalburgCity_Gym_EventScript_155182 compare 0x8005, 1 - callif 1, PetalburgCity_Gym_EventScript_155187 + call_if 1, PetalburgCity_Gym_EventScript_155187 call PetalburgCity_Gym_EventScript_1550C7 return PetalburgCity_Gym_EventScript_154FDC:: @ 8154FDC setvar 0x8004, 3 compare 0x8005, 0 - callif 1, PetalburgCity_Gym_EventScript_155182 + call_if 1, PetalburgCity_Gym_EventScript_155182 compare 0x8005, 1 - callif 1, PetalburgCity_Gym_EventScript_155187 + call_if 1, PetalburgCity_Gym_EventScript_155187 call PetalburgCity_Gym_EventScript_1550EC return PetalburgCity_Gym_EventScript_154FFD:: @ 8154FFD setvar 0x8004, 4 compare 0x8005, 0 - callif 1, PetalburgCity_Gym_EventScript_155182 + call_if 1, PetalburgCity_Gym_EventScript_155182 compare 0x8005, 1 - callif 1, PetalburgCity_Gym_EventScript_155187 + call_if 1, PetalburgCity_Gym_EventScript_155187 call PetalburgCity_Gym_EventScript_155111 return PetalburgCity_Gym_EventScript_15501E:: @ 815501E setvar 0x8004, 5 compare 0x8005, 0 - callif 1, PetalburgCity_Gym_EventScript_155182 + call_if 1, PetalburgCity_Gym_EventScript_155182 compare 0x8005, 1 - callif 1, PetalburgCity_Gym_EventScript_155187 + call_if 1, PetalburgCity_Gym_EventScript_155187 call PetalburgCity_Gym_EventScript_155124 return PetalburgCity_Gym_EventScript_15503F:: @ 815503F setvar 0x8004, 6 compare 0x8005, 0 - callif 1, PetalburgCity_Gym_EventScript_155182 + call_if 1, PetalburgCity_Gym_EventScript_155182 compare 0x8005, 1 - callif 1, PetalburgCity_Gym_EventScript_155187 + call_if 1, PetalburgCity_Gym_EventScript_155187 call PetalburgCity_Gym_EventScript_155149 return PetalburgCity_Gym_EventScript_155060:: @ 8155060 setvar 0x8004, 7 compare 0x8005, 0 - callif 1, PetalburgCity_Gym_EventScript_155182 + call_if 1, PetalburgCity_Gym_EventScript_155182 compare 0x8005, 1 - callif 1, PetalburgCity_Gym_EventScript_155187 + call_if 1, PetalburgCity_Gym_EventScript_155187 call PetalburgCity_Gym_EventScript_15515C return PetalburgCity_Gym_EventScript_155081:: @ 8155081 setvar 0x8004, 8 compare 0x8005, 0 - callif 1, PetalburgCity_Gym_EventScript_155182 + call_if 1, PetalburgCity_Gym_EventScript_155182 compare 0x8005, 1 - callif 1, PetalburgCity_Gym_EventScript_155187 + call_if 1, PetalburgCity_Gym_EventScript_155187 call PetalburgCity_Gym_EventScript_15516F return @@ -1010,19 +1010,19 @@ PetalburgCity_Gym_EventScript_15516F:: @ 815516F return PetalburgCity_Gym_EventScript_155182:: @ 8155182 - special 145 + special PetalburgGymSpecial1 waitstate return PetalburgCity_Gym_EventScript_155187:: @ 8155187 - special 146 + special PetalburgGymSpecial2 return PetalburgCity_Gym_EventScript_15518B:: @ 815518B lock faceplayer checkflag 1217 - jumpeq PetalburgCity_Gym_EventScript_1551A0 + goto_if_eq PetalburgCity_Gym_EventScript_1551A0 msgbox PetalburgCity_Gym_Text_17AB96, 4 release end @@ -1035,15 +1035,15 @@ PetalburgCity_Gym_EventScript_1551A0:: @ 81551A0 PetalburgCity_Gym_EventScript_1551AA:: @ 81551AA lockall checkflag 2059 - jumpeq PetalburgCity_Gym_EventScript_1551CA - jump PetalburgCity_Gym_EventScript_1551D4 + goto_if_eq PetalburgCity_Gym_EventScript_1551CA + goto PetalburgCity_Gym_EventScript_1551D4 end PetalburgCity_Gym_EventScript_1551BA:: @ 81551BA lockall checkflag 2059 - jumpeq PetalburgCity_Gym_EventScript_1551CA - jump PetalburgCity_Gym_EventScript_1551D4 + goto_if_eq PetalburgCity_Gym_EventScript_1551CA + goto PetalburgCity_Gym_EventScript_1551D4 end PetalburgCity_Gym_EventScript_1551CA:: @ 81551CA diff --git a/data/scripts/maps/PetalburgCity_Mart.inc b/data/scripts/maps/PetalburgCity_Mart.inc index 2eac03cac..e4186eaae 100644 --- a/data/scripts/maps/PetalburgCity_Mart.inc +++ b/data/scripts/maps/PetalburgCity_Mart.inc @@ -5,9 +5,9 @@ PetalburgCity_Mart_EventScript_1552B0:: @ 81552B0 lock faceplayer message PetalburgCity_Mart_Text_1A0BE4 - waittext + waitmessage checkflag 296 - jumpeq PetalburgCity_Mart_EventScript_1552EA + goto_if_eq PetalburgCity_Mart_EventScript_1552EA pokemart PetalburgCity_Mart_Items1 msgbox PetalburgCity_Mart_Text_1A0C02, 4 release diff --git a/data/scripts/maps/PetalburgCity_PokemonCenter_1F.inc b/data/scripts/maps/PetalburgCity_PokemonCenter_1F.inc index 09d414dcb..e2013a1d6 100644 --- a/data/scripts/maps/PetalburgCity_PokemonCenter_1F.inc +++ b/data/scripts/maps/PetalburgCity_PokemonCenter_1F.inc @@ -10,7 +10,7 @@ PetalburgCity_PokemonCenter_1F_MapScript1_15520A:: @ 815520A PetalburgCity_PokemonCenter_1F_EventScript_155213:: @ 8155213 setvar 0x800b, 1 call PetalburgCity_PokemonCenter_1F_EventScript_19FD5B - waittext + waitmessage waitbutton release end @@ -27,19 +27,19 @@ PetalburgCity_PokemonCenter_1F_EventScript_155233:: @ 8155233 lock faceplayer msgbox PetalburgCity_PokemonCenter_1F_Text_17BDC5, 4 - specialval RESULT, 302 + specialvar RESULT, IsStarterInParty compare RESULT, 1 - jumpeq PetalburgCity_PokemonCenter_1F_EventScript_15524F + goto_if_eq PetalburgCity_PokemonCenter_1F_EventScript_15524F release end PetalburgCity_PokemonCenter_1F_EventScript_15524F:: @ 815524F compare 0x4023, 0 - callif 1, PetalburgCity_PokemonCenter_1F_EventScript_155272 + call_if 1, PetalburgCity_PokemonCenter_1F_EventScript_155272 compare 0x4023, 1 - callif 1, PetalburgCity_PokemonCenter_1F_EventScript_15527B + call_if 1, PetalburgCity_PokemonCenter_1F_EventScript_15527B compare 0x4023, 2 - callif 1, PetalburgCity_PokemonCenter_1F_EventScript_155284 + call_if 1, PetalburgCity_PokemonCenter_1F_EventScript_155284 release end diff --git a/data/scripts/maps/PetalburgCity_WallysHouse.inc b/data/scripts/maps/PetalburgCity_WallysHouse.inc index e8ac407dc..d8e95d8c6 100644 --- a/data/scripts/maps/PetalburgCity_WallysHouse.inc +++ b/data/scripts/maps/PetalburgCity_WallysHouse.inc @@ -5,13 +5,13 @@ PetalburgCity_WallysHouse_EventScript_1543C4:: @ 81543C4 lock faceplayer checkflag 126 - jumpeq PetalburgCity_WallysHouse_EventScript_1543F7 + goto_if_eq PetalburgCity_WallysHouse_EventScript_1543F7 checkflag 122 - jumpeq PetalburgCity_WallysHouse_EventScript_154427 + goto_if_eq PetalburgCity_WallysHouse_EventScript_154427 checkflag 1217 - jumpeq PetalburgCity_WallysHouse_EventScript_154406 + goto_if_eq PetalburgCity_WallysHouse_EventScript_154406 checkflag 135 - jumpeq PetalburgCity_WallysHouse_EventScript_15443B + goto_if_eq PetalburgCity_WallysHouse_EventScript_15443B msgbox PetalburgCity_WallysHouse_Text_179805, 4 setflag 135 release @@ -19,8 +19,8 @@ PetalburgCity_WallysHouse_EventScript_1543C4:: @ 81543C4 PetalburgCity_WallysHouse_EventScript_1543F7:: @ 81543F7 checkflag 122 - jumpeq PetalburgCity_WallysHouse_EventScript_154431 - jump PetalburgCity_WallysHouse_EventScript_154406 + goto_if_eq PetalburgCity_WallysHouse_EventScript_154431 + goto PetalburgCity_WallysHouse_EventScript_154406 end PetalburgCity_WallysHouse_EventScript_154406:: @ 8154406 @@ -50,9 +50,9 @@ PetalburgCity_WallysHouse_EventScript_154445:: @ 8154445 lock faceplayer checkflag 122 - jumpeq PetalburgCity_WallysHouse_EventScript_15446D + goto_if_eq PetalburgCity_WallysHouse_EventScript_15446D checkflag 1217 - jumpeq PetalburgCity_WallysHouse_EventScript_154463 + goto_if_eq PetalburgCity_WallysHouse_EventScript_154463 msgbox PetalburgCity_WallysHouse_Text_179C2C, 4 release end diff --git a/data/scripts/maps/PetalburgWoods.inc b/data/scripts/maps/PetalburgWoods.inc index 8d6946bcd..0b0c72f70 100644 --- a/data/scripts/maps/PetalburgWoods.inc +++ b/data/scripts/maps/PetalburgWoods.inc @@ -9,108 +9,108 @@ PetalburgWoods_MapScript1_15CCA2:: @ 815CCA2 PetalburgWoods_EventScript_15CCA8:: @ 815CCA8 lockall call PetalburgWoods_EventScript_15CDE6 - move 4, PetalburgWoods_Movement_15CE89 - waitmove 0 + applymovement 4, PetalburgWoods_Movement_15CE89 + waitmovement 0 msgbox PetalburgWoods_Text_194D92, 4 - closebutton - playmusic BGM_EVIL_TEAM, 0 - move 3, PetalburgWoods_Movement_15CEC3 - waitmove 0 + closemessage + playbgm BGM_EVIL_TEAM, 0 + applymovement 3, PetalburgWoods_Movement_15CEC3 + waitmovement 0 msgbox PetalburgWoods_Text_194DED, 4 - closebutton - move 3, PetalburgWoods_Movement_15CEB0 - waitmove 0 - move 4, PetalburgWoods_Movement_1A0841 - waitmove 0 + closemessage + applymovement 3, PetalburgWoods_Movement_15CEB0 + waitmovement 0 + applymovement 4, PetalburgWoods_Movement_1A0841 + waitmovement 0 msgbox PetalburgWoods_Text_194E6B, 4 - closebutton - move 4, PetalburgWoods_Movement_15CE9E - waitmove 0 + closemessage + applymovement 4, PetalburgWoods_Movement_15CE9E + waitmovement 0 msgbox PetalburgWoods_Text_194E9A, 4 - move 3, PetalburgWoods_Movement_15CEC8 - waitmove 0 + applymovement 3, PetalburgWoods_Movement_15CEC8 + waitmovement 0 msgbox PetalburgWoods_Text_194EE8, 4 trainerbattle 3, OPPONENT_PETALBURG_WOODS_GRUNT, 0, PetalburgWoods_Text_194F83 - move 3, PetalburgWoods_Movement_15CEB3 - waitmove 0 + applymovement 3, PetalburgWoods_Movement_15CEB3 + waitmovement 0 call PetalburgWoods_EventScript_15CDFA - move 4, PetalburgWoods_Movement_15CE80 - waitmove 0 - jump PetalburgWoods_EventScript_15CE69 + applymovement 4, PetalburgWoods_Movement_15CE80 + waitmovement 0 + goto PetalburgWoods_EventScript_15CE69 end PetalburgWoods_EventScript_15CD42:: @ 815CD42 lockall call PetalburgWoods_EventScript_15CDE6 - move 4, PetalburgWoods_Movement_15CE8E - waitmove 0 - move 255, PetalburgWoods_Movement_1A083F - waitmove 0 + applymovement 4, PetalburgWoods_Movement_15CE8E + waitmovement 0 + applymovement 255, PetalburgWoods_Movement_1A083F + waitmovement 0 msgbox PetalburgWoods_Text_194D92, 4 - closebutton - playmusic BGM_EVIL_TEAM, 0 - move 3, PetalburgWoods_Movement_15CEC3 - waitmove 0 + closemessage + playbgm BGM_EVIL_TEAM, 0 + applymovement 3, PetalburgWoods_Movement_15CEC3 + waitmovement 0 msgbox PetalburgWoods_Text_194DED, 4 - closebutton - move 3, PetalburgWoods_Movement_15CEBF - waitmove 0 - move 4, PetalburgWoods_Movement_1A0841 - waitmove 0 + closemessage + applymovement 3, PetalburgWoods_Movement_15CEBF + waitmovement 0 + applymovement 4, PetalburgWoods_Movement_1A0841 + waitmovement 0 msgbox PetalburgWoods_Text_194E6B, 4 - closebutton - move 4, PetalburgWoods_Movement_15CEA4 - waitmove 0 + closemessage + applymovement 4, PetalburgWoods_Movement_15CEA4 + waitmovement 0 msgbox PetalburgWoods_Text_194E9A, 4 - move 255, PetalburgWoods_Movement_1A0841 - waitmove 0 + applymovement 255, PetalburgWoods_Movement_1A0841 + waitmovement 0 msgbox PetalburgWoods_Text_194EE8, 4 trainerbattle 3, OPPONENT_PETALBURG_WOODS_GRUNT, 0, PetalburgWoods_Text_194F83 - move 3, PetalburgWoods_Movement_15CEB3 - waitmove 0 + applymovement 3, PetalburgWoods_Movement_15CEB3 + waitmovement 0 call PetalburgWoods_EventScript_15CDFA - move 4, PetalburgWoods_Movement_15CE95 - waitmove 0 - jump PetalburgWoods_EventScript_15CE69 + applymovement 4, PetalburgWoods_Movement_15CE95 + waitmovement 0 + goto PetalburgWoods_EventScript_15CE69 end PetalburgWoods_EventScript_15CDE6:: @ 815CDE6 - move 4, PetalburgWoods_Movement_15CE73 - waitmove 0 + applymovement 4, PetalburgWoods_Movement_15CE73 + waitmovement 0 msgbox PetalburgWoods_Text_194D71, 4 - closebutton + closemessage return PetalburgWoods_EventScript_15CDFA:: @ 815CDFA msgbox PetalburgWoods_Text_194FA4, 4 - closebutton - move 3, PetalburgWoods_Movement_15CEB7 - waitmove 0 - disappear 3 - move 255, PetalburgWoods_Movement_1A0845 - waitmove 0 + closemessage + applymovement 3, PetalburgWoods_Movement_15CEB7 + waitmovement 0 + removeobject 3 + applymovement 255, PetalburgWoods_Movement_1A0845 + waitmovement 0 msgbox PetalburgWoods_Text_19507E, 4 giveitem ITEM_GREAT_BALL compare RESULT, 0 - jumpeq PetalburgWoods_EventScript_15CE3F - jump PetalburgWoods_EventScript_15CE4D + goto_if_eq PetalburgWoods_EventScript_15CE3F + goto PetalburgWoods_EventScript_15CE4D end PetalburgWoods_EventScript_15CE3F:: @ 815CE3F msgbox PetalburgWoods_Text_195182, 4 - jump PetalburgWoods_EventScript_15CE4D + goto PetalburgWoods_EventScript_15CE4D end PetalburgWoods_EventScript_15CE4D:: @ 815CE4D msgbox PetalburgWoods_Text_19510A, 4 - move 4, PetalburgWoods_Movement_15CEA8 - waitmove 0 + applymovement 4, PetalburgWoods_Movement_15CEA8 + waitmovement 0 msgbox PetalburgWoods_Text_195153, 4 - closebutton + closemessage return PetalburgWoods_EventScript_15CE69:: @ 815CE69 - disappear 4 + removeobject 4 setvar 0x4098, 1 releaseall end @@ -242,11 +242,11 @@ PetalburgWoods_EventScript_15CEDC:: @ 815CEDC lock faceplayer checkflag 297 - jumpeq PetalburgWoods_EventScript_15CF0B + goto_if_eq PetalburgWoods_EventScript_15CF0B msgbox PetalburgWoods_Text_19549E, 4 giveitem ITEM_MIRACLE_SEED compare RESULT, 0 - jumpeq PetalburgWoods_EventScript_1A029B + goto_if_eq PetalburgWoods_EventScript_1A029B setflag 297 release end @@ -271,9 +271,9 @@ PetalburgWoods_EventScript_15CF27:: @ 815CF27 PetalburgWoods_EventScript_15CF3E:: @ 815CF3E trainerbattle 0, OPPONENT_JAMES_1, 0, PetalburgWoods_Text_19526A, PetalburgWoods_Text_1952AE - specialval RESULT, 57 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq PetalburgWoods_EventScript_15CF65 + goto_if_eq PetalburgWoods_EventScript_15CF65 msgbox PetalburgWoods_Text_1952CC, 6 end diff --git a/data/scripts/maps/Route101.inc b/data/scripts/maps/Route101.inc index 944473e96..2fe80e098 100644 --- a/data/scripts/maps/Route101.inc +++ b/data/scripts/maps/Route101.inc @@ -18,25 +18,25 @@ Route101_EventScript_14E93F:: @ 814E93F Route101_EventScript_14E948:: @ 814E948 lockall - playmusic 410, 1 + playbgm 410, 1 msgbox Route101_Text_16D10E, 4 - closebutton - movesprite 2, 0, 15 - movesprite 4, 0, 16 - move 255, Route101_Movement_14EA2C - move 2, Route101_Movement_14EA50 - move 4, Route101_Movement_14EA1F - waitmove 0 - move 4, Route101_Movement_14EA00 - move 2, Route101_Movement_14EA31 - waitmove 0 - move 2, Route101_Movement_1A0843 - waitmove 0 - move 4, Route101_Movement_14EA27 - move 2, Route101_Movement_14EA58 - waitmove 0 + closemessage + setobjectxy 2, 0, 15 + setobjectxy 4, 0, 16 + applymovement 255, Route101_Movement_14EA2C + applymovement 2, Route101_Movement_14EA50 + applymovement 4, Route101_Movement_14EA1F + waitmovement 0 + applymovement 4, Route101_Movement_14EA00 + applymovement 2, Route101_Movement_14EA31 + waitmovement 0 + applymovement 2, Route101_Movement_1A0843 + waitmovement 0 + applymovement 4, Route101_Movement_14EA27 + applymovement 2, Route101_Movement_14EA58 + waitmovement 0 msgbox Route101_Text_16D119, 4 - closebutton + closemessage setvar 0x4060, 2 releaseall end @@ -44,27 +44,27 @@ Route101_EventScript_14E948:: @ 814E948 Route101_EventScript_14E9B8:: @ 814E9B8 lockall msgbox Route101_Text_16D15E, 4 - closebutton - move 255, Route101_Movement_14E9FA - waitmove 0 + closemessage + applymovement 255, Route101_Movement_14E9FA + waitmovement 0 releaseall end Route101_EventScript_14E9CE:: @ 814E9CE lockall msgbox Route101_Text_16D15E, 4 - closebutton - move 255, Route101_Movement_14E9FC - waitmove 0 + closemessage + applymovement 255, Route101_Movement_14E9FC + waitmovement 0 releaseall end Route101_EventScript_14E9E4:: @ 814E9E4 lockall msgbox Route101_Text_16D15E, 4 - closebutton - move 255, Route101_Movement_14E9FE - waitmove 0 + closemessage + applymovement 255, Route101_Movement_14E9FE + waitmovement 0 releaseall end @@ -220,16 +220,16 @@ Route101_EventScript_14EA7F:: @ 814EA7F setflag 2048 setflag 82 fadescreen 1 - disappear 4 - movesprite 255, 6, 13 - move 255, Route101_Movement_1A083F - waitmove 0 - special 156 + removeobject 4 + setobjectxy 255, 6, 13 + applymovement 255, Route101_Movement_1A083F + waitmovement 0 + special ScrSpecial_ChooseStarter waitstate - move 2, Route101_Movement_14EAD7 - waitmove 0 + applymovement 2, Route101_Movement_14EAD7 + waitmovement 0 msgbox Route101_Text_16D191, 4 - special 0 + special ScrSpecial_HealPlayerParty setflag 720 clearflag 721 setflag 700 diff --git a/data/scripts/maps/Route102.inc b/data/scripts/maps/Route102.inc index 70d25eace..95a0a4a1f 100644 --- a/data/scripts/maps/Route102.inc +++ b/data/scripts/maps/Route102.inc @@ -19,9 +19,9 @@ Route102_EventScript_14EAF5:: @ 814EAF5 Route102_EventScript_14EAFE:: @ 814EAFE trainerbattle 0, OPPONENT_CALVIN_1, 0, Route102_Text_1B79C3, Route102_Text_1B7A2C - specialval RESULT, 57 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq Route102_EventScript_14EB25 + goto_if_eq Route102_EventScript_14EB25 msgbox Route102_Text_1B7A60, 6 end diff --git a/data/scripts/maps/Route103.inc b/data/scripts/maps/Route103.inc index f47f5a824..ff0ccce30 100644 --- a/data/scripts/maps/Route103.inc +++ b/data/scripts/maps/Route103.inc @@ -9,22 +9,22 @@ Route103_MapScript1_14EB87:: @ 814EB87 Route103_EventScript_14EB92:: @ 814EB92 lockall - checkgender + checkplayergender compare RESULT, 0 - jumpeq Route103_EventScript_14EBAB + goto_if_eq Route103_EventScript_14EBAB compare RESULT, 1 - jumpeq Route103_EventScript_14EC04 + goto_if_eq Route103_EventScript_14EC04 end Route103_EventScript_14EBAB:: @ 814EBAB msgbox Route103_Text_16D57A, 4 - playmusic 415, 1 - move 2, Route103_Movement_1A0839 - waitmove 0 - move 2, Route103_Movement_1A0833 - waitmove 0 - move 2, Route103_Movement_1A0835 - waitmove 0 + playbgm 415, 1 + applymovement 2, Route103_Movement_1A0839 + waitmovement 0 + applymovement 2, Route103_Movement_1A0833 + waitmovement 0 + applymovement 2, Route103_Movement_1A0835 + waitmovement 0 msgbox Route103_Text_16D5B6, 4 switch 0x4023 case 0, Route103_EventScript_14EC5D @@ -34,13 +34,13 @@ Route103_EventScript_14EBAB:: @ 814EBAB Route103_EventScript_14EC04:: @ 814EC04 msgbox Route103_Text_16D762, 4 - playmusic 421, 1 - move 2, Route103_Movement_1A0839 - waitmove 0 - move 2, Route103_Movement_1A0833 - waitmove 0 - move 2, Route103_Movement_1A0835 - waitmove 0 + playbgm 421, 1 + applymovement 2, Route103_Movement_1A0839 + waitmovement 0 + applymovement 2, Route103_Movement_1A0833 + waitmovement 0 + applymovement 2, Route103_Movement_1A0835 + waitmovement 0 msgbox Route103_Text_16D7A9, 4 switch 0x4023 case 0, Route103_EventScript_14EC8D @@ -50,46 +50,46 @@ Route103_EventScript_14EC04:: @ 814EC04 Route103_EventScript_14EC5D:: @ 814EC5D trainerbattle 3, OPPONENT_MAY_4, 0, Route103_Text_16D65B - jump Route103_EventScript_14ECBD + goto Route103_EventScript_14ECBD end Route103_EventScript_14EC6D:: @ 814EC6D trainerbattle 3, OPPONENT_MAY_7, 0, Route103_Text_16D65B - jump Route103_EventScript_14ECBD + goto Route103_EventScript_14ECBD end Route103_EventScript_14EC7D:: @ 814EC7D trainerbattle 3, OPPONENT_MAY_1, 0, Route103_Text_16D65B - jump Route103_EventScript_14ECBD + goto Route103_EventScript_14ECBD end Route103_EventScript_14EC8D:: @ 814EC8D trainerbattle 3, OPPONENT_BRENDAN_4, 0, Route103_Text_16D836 - jump Route103_EventScript_14ECCB + goto Route103_EventScript_14ECCB end Route103_EventScript_14EC9D:: @ 814EC9D trainerbattle 3, OPPONENT_BRENDAN_7, 0, Route103_Text_16D836 - jump Route103_EventScript_14ECCB + goto Route103_EventScript_14ECCB end Route103_EventScript_14ECAD:: @ 814ECAD trainerbattle 3, OPPONENT_BRENDAN_1, 0, Route103_Text_16D836 - jump Route103_EventScript_14ECCB + goto Route103_EventScript_14ECCB end Route103_EventScript_14ECBD:: @ 814ECBD msgbox Route103_Text_16D688, 4 - jump Route103_EventScript_14ECD9 + goto Route103_EventScript_14ECD9 end Route103_EventScript_14ECCB:: @ 814ECCB msgbox Route103_Text_16D856, 4 - jump Route103_EventScript_14ECD9 + goto Route103_EventScript_14ECD9 end Route103_EventScript_14ECD9:: @ 814ECD9 - closebutton + closemessage switch FACING case 1, Route103_EventScript_14ED29 case 2, Route103_EventScript_14ED0C @@ -98,33 +98,33 @@ Route103_EventScript_14ECD9:: @ 814ECD9 end Route103_EventScript_14ED0C:: @ 814ED0C - move 2, Route103_Movement_14ED67 - waitmove 0 - playsfx 10 - move 2, Route103_Movement_14ED6B - waitmove 0 - jump Route103_EventScript_14ED46 + applymovement 2, Route103_Movement_14ED67 + waitmovement 0 + playse 10 + applymovement 2, Route103_Movement_14ED6B + waitmovement 0 + goto Route103_EventScript_14ED46 end Route103_EventScript_14ED29:: @ 814ED29 - move 2, Route103_Movement_14ED71 - waitmove 0 - playsfx 10 - move 2, Route103_Movement_14ED74 - waitmove 0 - jump Route103_EventScript_14ED46 + applymovement 2, Route103_Movement_14ED71 + waitmovement 0 + playse 10 + applymovement 2, Route103_Movement_14ED74 + waitmovement 0 + goto Route103_EventScript_14ED46 end Route103_EventScript_14ED46:: @ 814ED46 - disappear 2 + removeobject 2 setvar 0x4062, 1 setvar 0x4084, 4 clearflag 889 setflag 130 setvar 0x40c7, 1 clearflag 979 - playmusicbattle 0 - fadedefault + savebgm 0 + fadedefaultbgm releaseall end @@ -173,9 +173,9 @@ Route103_EventScript_14ED94:: @ 814ED94 Route103_EventScript_14EDAB:: @ 814EDAB trainerbattle 4, OPPONENT_AMY_AND_LIV_1, 0, Route103_Text_1B7DF7, Route103_Text_1B7E3B, Route103_Text_1B7EAC - specialval RESULT, 57 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq Route103_EventScript_14EDD6 + goto_if_eq Route103_EventScript_14EDD6 msgbox Route103_Text_1B7E50, 6 end @@ -186,9 +186,9 @@ Route103_EventScript_14EDD6:: @ 814EDD6 Route103_EventScript_14EDF1:: @ 814EDF1 trainerbattle 4, OPPONENT_AMY_AND_LIV_1, 0, Route103_Text_1B7EFB, Route103_Text_1B7F20, Route103_Text_1B7F8E - specialval RESULT, 57 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq Route103_EventScript_14EE1C + goto_if_eq Route103_EventScript_14EE1C msgbox Route103_Text_1B7F40, 6 end @@ -204,9 +204,9 @@ Route103_EventScript_14EE37:: @ 814EE37 Route103_EventScript_14EE4E:: @ 814EE4E trainerbattle 0, OPPONENT_MIGUEL_1, 0, Route103_Text_1B82A9, Route103_Text_1B82EC - specialval RESULT, 57 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq Route103_EventScript_14EE75 + goto_if_eq Route103_EventScript_14EE75 msgbox Route103_Text_1B830D, 6 end diff --git a/data/scripts/maps/Route104.inc b/data/scripts/maps/Route104.inc index bb98b023d..651f2afb4 100644 --- a/data/scripts/maps/Route104.inc +++ b/data/scripts/maps/Route104.inc @@ -9,7 +9,7 @@ Route104_MapScript2_14EE97:: @ 814EE97 Route104_EventScript_14EEA1:: @ 814EEA1 lockall - jump Route104_EventScript_14EFD5 + goto Route104_EventScript_14EFD5 end Route104_MapScript1_14EEA8:: @ 814EEA8 @@ -18,9 +18,9 @@ Route104_MapScript1_14EEA8:: @ 814EEA8 Route104_EventScript_14EEAE:: @ 814EEAE checkflag 127 - jumpif 0, Route104_EventScript_14EEC4 + goto_if 0, Route104_EventScript_14EEC4 checkflag 2057 - jumpif 0, Route104_EventScript_14EEC4 + goto_if 0, Route104_EventScript_14EEC4 clearflag 906 return @@ -32,11 +32,11 @@ Route104_EventScript_14EEC8:: @ 814EEC8 lock faceplayer checkflag 246 - jumpeq Route104_EventScript_14EEFF + goto_if_eq Route104_EventScript_14EEFF msgbox Route104_Text_1C55B9, 4 giveitem ITEM_CHESTO_BERRY compare RESULT, 0 - jumpeq Route104_EventScript_1A029B + goto_if_eq Route104_EventScript_1A029B setflag 246 msgbox Route104_Text_1C5665, 4 release @@ -51,11 +51,11 @@ Route104_EventScript_14EF09:: @ 814EF09 lock faceplayer checkflag 279 - jumpeq Route104_EventScript_14EF38 + goto_if_eq Route104_EventScript_14EF38 msgbox Route104_Text_16DD91, 4 giveitem ITEM_WHITE_HERB compare RESULT, 0 - jumpeq Route104_EventScript_1A029B + goto_if_eq Route104_EventScript_1A029B setflag 279 release end @@ -105,11 +105,11 @@ Route104_EventScript_14EF93:: @ 814EF93 lock faceplayer checkflag 262 - jumpeq Route104_EventScript_14EFC2 + goto_if_eq Route104_EventScript_14EFC2 msgbox Route104_Text_16DC5F, 4 giveitem ITEM_TM09 compare RESULT, 0 - jumpeq Route104_EventScript_1A029B + goto_if_eq Route104_EventScript_1A029B setflag 262 release end @@ -124,44 +124,44 @@ Route104_EventScript_14EFCC:: @ 814EFCC end Route104_EventScript_14EFD5:: @ 814EFD5 - spritelevelup 8, 0, 19, 0 - spritelevelup 255, 0, 19, 0 - move 8, Route104_Movement_14F16C - waitmove 0 - disappear 8 - move 255, Route104_Movement_14F162 - waitmove 0 - spriteinvisible 255, 0, 19 + setobjectpriority 8, 0, 19, 0 + setobjectpriority 255, 0, 19, 0 + applymovement 8, Route104_Movement_14F16C + waitmovement 0 + removeobject 8 + applymovement 255, Route104_Movement_14F162 + waitmovement 0 + hideobject 255, 0, 19 call Route104_EventScript_1A02E7 - move 7, Route104_Movement_14F09F - move 255, Route104_Movement_14F09F - waitmove 0 - move 255, Route104_Movement_14F166 - waitmove 0 + applymovement 7, Route104_Movement_14F09F + applymovement 255, Route104_Movement_14F09F + waitmovement 0 + applymovement 255, Route104_Movement_14F166 + waitmovement 0 call Route104_EventScript_1A02EF - spritevisible 255, 0, 11 - move 255, Route104_Movement_14F168 - waitmove 0 - movespriteperm 2, 12, 8 - reappear 2 - spritelevelup 2, 0, 11, 0 + showobject 255, 0, 11 + applymovement 255, Route104_Movement_14F168 + waitmovement 0 + setobjectxyperm 2, 12, 8 + addobject 2 + setobjectpriority 2, 0, 11, 0 clearflag 740 - move 2, Route104_Movement_14F16F - waitmove 0 - reappear 4 + applymovement 2, Route104_Movement_14F16F + waitmovement 0 + addobject 4 clearflag 743 call Route104_EventScript_1A02EF setflag 742 - spriteinvisible 7, 0, 19 + hideobject 7, 0, 19 copyvar 0x4096, 0x8008 - restorespritelevel 255, 0, 19 - restorespritelevel 2, 0, 11 - moveoffscreen 2 + resetobjectpriority 255, 0, 19 + resetobjectpriority 2, 0, 11 + moveobjectoffscreen 2 setvar 0x408e, 0 checkflag 189 - jumpif 0, Route104_EventScript_14F08B + goto_if 0, Route104_EventScript_14F08B checkflag 189 - jumpeq Route104_EventScript_14F095 + goto_if_eq Route104_EventScript_14F095 end Route104_EventScript_14F08B:: @ 814F08B @@ -409,9 +409,9 @@ Route104_EventScript_14F189:: @ 814F189 Route104_EventScript_14F1A0:: @ 814F1A0 trainerbattle 0, OPPONENT_HALEY_1, 0, Route104_Text_1B8770, Route104_Text_1B87A7 - specialval RESULT, 57 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq Route104_EventScript_14F1C7 + goto_if_eq Route104_EventScript_14F1C7 msgbox Route104_Text_1B87C3, 6 end @@ -422,9 +422,9 @@ Route104_EventScript_14F1C7:: @ 814F1C7 Route104_EventScript_14F1DE:: @ 814F1DE trainerbattle 0, OPPONENT_WINSTON_1, 0, Route104_Text_1B88D4, Route104_Text_1B8911 - specialval RESULT, 57 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq Route104_EventScript_14F205 + goto_if_eq Route104_EventScript_14F205 msgbox Route104_Text_1B8925, 6 end @@ -435,9 +435,9 @@ Route104_EventScript_14F205:: @ 814F205 Route104_EventScript_14F21C:: @ 814F21C trainerbattle 0, OPPONENT_CINDY_1, 0, Route104_Text_1B8A24, Route104_Text_1B8A61 - specialval RESULT, 57 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq Route104_EventScript_14F243 + goto_if_eq Route104_EventScript_14F243 msgbox Route104_Text_1B8A69, 6 end @@ -448,14 +448,14 @@ Route104_EventScript_14F243:: @ 814F243 Route104_EventScript_14F25A:: @ 814F25A trainerbattle 4, OPPONENT_GINA_AND_MIA_1, 0, Route104_Text_1B83E9, Route104_Text_1B8414, Route104_Text_1B845C - special 148 + special GetPlayerBigGuyGirlString msgbox Route104_Text_1B842C, 4 release end Route104_EventScript_14F279:: @ 814F279 trainerbattle 4, OPPONENT_GINA_AND_MIA_1, 0, Route104_Text_1B84DB, Route104_Text_1B850D, Route104_Text_1B8577 - special 148 + special GetPlayerBigGuyGirlString msgbox Route104_Text_1B853B, 4 release end diff --git a/data/scripts/maps/Route104_MrBrineysHouse.inc b/data/scripts/maps/Route104_MrBrineysHouse.inc index 5c6704e67..f24e92cd4 100644 --- a/data/scripts/maps/Route104_MrBrineysHouse.inc +++ b/data/scripts/maps/Route104_MrBrineysHouse.inc @@ -5,9 +5,9 @@ Route104_MrBrineysHouse_MapScripts:: @ 815BCB2 Route104_MrBrineysHouse_MapScript1_15BCB8:: @ 815BCB8 setflag 2109 compare 0x4090, 1 - callif 1, Route104_MrBrineysHouse_EventScript_15BCD4 + call_if 1, Route104_MrBrineysHouse_EventScript_15BCD4 checkflag 188 - callif 1, Route104_MrBrineysHouse_EventScript_15BCD0 + call_if 1, Route104_MrBrineysHouse_EventScript_15BCD0 end Route104_MrBrineysHouse_EventScript_15BCD0:: @ 815BCD0 @@ -15,22 +15,22 @@ Route104_MrBrineysHouse_EventScript_15BCD0:: @ 815BCD0 return Route104_MrBrineysHouse_EventScript_15BCD4:: @ 815BCD4 - movespriteperm 1, 9, 3 - spritebehave 1, 50 - movespriteperm 2, 9, 6 - spritebehave 2, 51 + setobjectxyperm 1, 9, 3 + setobjectmovementtype 1, 50 + setobjectxyperm 2, 9, 6 + setobjectmovementtype 2, 51 return Route104_MrBrineysHouse_EventScript_15BCEB:: @ 815BCEB lock faceplayer checkflag 147 - callif 0, Route104_MrBrineysHouse_EventScript_15BD0E + call_if 0, Route104_MrBrineysHouse_EventScript_15BD0E checkflag 189 - jumpif 0, Route104_MrBrineysHouse_EventScript_15BD65 + goto_if 0, Route104_MrBrineysHouse_EventScript_15BD65 checkflag 149 - jumpif 0, Route104_MrBrineysHouse_EventScript_15BD7E - jump Route104_MrBrineysHouse_EventScript_15BD32 + goto_if 0, Route104_MrBrineysHouse_EventScript_15BD7E + goto Route104_MrBrineysHouse_EventScript_15BD32 end Route104_MrBrineysHouse_EventScript_15BD0E:: @ 815BD0E @@ -38,14 +38,14 @@ Route104_MrBrineysHouse_EventScript_15BD0E:: @ 815BD0E msgbox Route104_MrBrineysHouse_Text_191A82, 4 msgbox Route104_MrBrineysHouse_Text_191AAD, 5 compare RESULT, 0 - jumpeq Route104_MrBrineysHouse_EventScript_15BD97 - jump Route104_MrBrineysHouse_EventScript_15BDAB + goto_if_eq Route104_MrBrineysHouse_EventScript_15BD97 + goto Route104_MrBrineysHouse_EventScript_15BDAB end Route104_MrBrineysHouse_EventScript_15BD32:: @ 815BD32 message Route104_MrBrineysHouse_Text_191E80 - waittext - multichoicedef 21, 8, 14, 1, 0 + waitmessage + multichoicedefault 21, 8, 14, 1, 0 switch RESULT case 0, Route104_MrBrineysHouse_EventScript_15BDAB case 1, Route104_MrBrineysHouse_EventScript_15BDA1 @@ -55,15 +55,15 @@ Route104_MrBrineysHouse_EventScript_15BD32:: @ 815BD32 Route104_MrBrineysHouse_EventScript_15BD65:: @ 815BD65 msgbox Route104_MrBrineysHouse_Text_191CC3, 5 compare RESULT, 0 - jumpeq Route104_MrBrineysHouse_EventScript_15BD97 - jump Route104_MrBrineysHouse_EventScript_15BDAB + goto_if_eq Route104_MrBrineysHouse_EventScript_15BD97 + goto Route104_MrBrineysHouse_EventScript_15BDAB end Route104_MrBrineysHouse_EventScript_15BD7E:: @ 815BD7E msgbox Route104_MrBrineysHouse_Text_191DA6, 5 compare RESULT, 0 - jumpeq Route104_MrBrineysHouse_EventScript_15BD97 - jump Route104_MrBrineysHouse_EventScript_15BDAB + goto_if_eq Route104_MrBrineysHouse_EventScript_15BD97 + goto Route104_MrBrineysHouse_EventScript_15BDAB end Route104_MrBrineysHouse_EventScript_15BD97:: @ 815BD97 @@ -91,8 +91,8 @@ Route104_MrBrineysHouse_EventScript_15BDAB:: @ 815BDAB Route104_MrBrineysHouse_EventScript_15BDD1:: @ 815BDD1 lock faceplayer - checksound - pokecry SPECIES_WINGULL, 0 + waitse + playpokecry SPECIES_WINGULL, 0 msgbox Route104_MrBrineysHouse_Text_191FB9, 4 waitpokecry release diff --git a/data/scripts/maps/Route104_PrettyPetalFlowerShop.inc b/data/scripts/maps/Route104_PrettyPetalFlowerShop.inc index 02842c62d..4c5becf88 100644 --- a/data/scripts/maps/Route104_PrettyPetalFlowerShop.inc +++ b/data/scripts/maps/Route104_PrettyPetalFlowerShop.inc @@ -5,39 +5,39 @@ Route104_PrettyPetalFlowerShop_MapScripts:: @ 815BDE4 Route104_PrettyPetalFlowerShop_MapScript1_15BDEA:: @ 815BDEA setflag 2108 checkflag 127 - jumpif 0, Route104_PrettyPetalFlowerShop_EventScript_15BE03 + goto_if 0, Route104_PrettyPetalFlowerShop_EventScript_15BE03 checkflag 2057 - jumpif 0, Route104_PrettyPetalFlowerShop_EventScript_15BE03 + goto_if 0, Route104_PrettyPetalFlowerShop_EventScript_15BE03 setflag 1 end Route104_PrettyPetalFlowerShop_EventScript_15BE03:: @ 815BE03 - movespriteperm 1, 4, 6 + setobjectxyperm 1, 4, 6 end Route104_PrettyPetalFlowerShop_EventScript_15BE0B:: @ 815BE0B lock faceplayer checkflag 1 - jumpeq Route104_PrettyPetalFlowerShop_EventScript_15BE7C + goto_if_eq Route104_PrettyPetalFlowerShop_EventScript_15BE7C msgbox Route104_PrettyPetalFlowerShop_Text_1C5EC6, 4 checkflag 127 - jumpeq Route104_PrettyPetalFlowerShop_EventScript_15BE4A + goto_if_eq Route104_PrettyPetalFlowerShop_EventScript_15BE4A setflag 127 msgbox Route104_PrettyPetalFlowerShop_Text_1C5F48, 5 compare RESULT, 1 - callif 1, Route104_PrettyPetalFlowerShop_EventScript_15BE6A + call_if 1, Route104_PrettyPetalFlowerShop_EventScript_15BE6A compare RESULT, 0 - callif 1, Route104_PrettyPetalFlowerShop_EventScript_15BE73 + call_if 1, Route104_PrettyPetalFlowerShop_EventScript_15BE73 release end Route104_PrettyPetalFlowerShop_EventScript_15BE4A:: @ 815BE4A msgbox Route104_PrettyPetalFlowerShop_Text_1C5F1B, 5 compare RESULT, 1 - callif 1, Route104_PrettyPetalFlowerShop_EventScript_15BE6A + call_if 1, Route104_PrettyPetalFlowerShop_EventScript_15BE6A compare RESULT, 0 - callif 1, Route104_PrettyPetalFlowerShop_EventScript_15BE73 + call_if 1, Route104_PrettyPetalFlowerShop_EventScript_15BE73 release end @@ -51,7 +51,7 @@ Route104_PrettyPetalFlowerShop_EventScript_15BE73:: @ 815BE73 Route104_PrettyPetalFlowerShop_EventScript_15BE7C:: @ 815BE7C message Route104_PrettyPetalFlowerShop_Text_1A0C42 - waittext + waitmessage pokemartbp Route104_PrettyPetalFlowerShop_Items msgbox Route104_PrettyPetalFlowerShop_Text_1A0C02, 4 release @@ -73,7 +73,7 @@ Route104_PrettyPetalFlowerShop_EventScript_15BEA4:: @ 815BEA4 lock faceplayer checkflag 94 - jumpif 0, Route104_PrettyPetalFlowerShop_EventScript_15BEB9 + goto_if 0, Route104_PrettyPetalFlowerShop_EventScript_15BEB9 msgbox Route104_PrettyPetalFlowerShop_Text_1C61E8, 4 release end @@ -89,15 +89,15 @@ Route104_PrettyPetalFlowerShop_EventScript_15BEB9:: @ 815BEB9 Route104_PrettyPetalFlowerShop_EventScript_15BEDA:: @ 815BEDA lock faceplayer - checkdailyflags + dodailyevents checkflag 2256 - jumpeq Route104_PrettyPetalFlowerShop_EventScript_15BF1A + goto_if_eq Route104_PrettyPetalFlowerShop_EventScript_15BF1A msgbox Route104_PrettyPetalFlowerShop_Text_1C62DA, 4 random 8 addvar RESULT, 133 giveitem RESULT compare RESULT, 0 - jumpeq Route104_PrettyPetalFlowerShop_EventScript_1A029B + goto_if_eq Route104_PrettyPetalFlowerShop_EventScript_1A029B setflag 2256 msgbox Route104_PrettyPetalFlowerShop_Text_1C6335, 4 release diff --git a/data/scripts/maps/Route104_Prototype.inc b/data/scripts/maps/Route104_Prototype.inc index 184127187..3c218747a 100644 --- a/data/scripts/maps/Route104_Prototype.inc +++ b/data/scripts/maps/Route104_Prototype.inc @@ -5,21 +5,21 @@ Route104_Prototype_EventScript_160C4B:: @ 8160C4B lock faceplayer checktrainerflag OPPONENT_BRIANNA_1 - jumpif 0, Route104_Prototype_EventScript_160C99 + goto_if 0, Route104_Prototype_EventScript_160C99 checktrainerflag OPPONENT_CINDY_2 - jumpif 0, Route104_Prototype_EventScript_160C99 + goto_if 0, Route104_Prototype_EventScript_160C99 checktrainerflag OPPONENT_AMY_AND_LIV_3 - jumpif 0, Route104_Prototype_EventScript_160C99 + goto_if 0, Route104_Prototype_EventScript_160C99 checktrainerflag OPPONENT_GINA_AND_MIA_2 - jumpif 0, Route104_Prototype_EventScript_160C99 + goto_if 0, Route104_Prototype_EventScript_160C99 checktrainerflag OPPONENT_LUCAS_2 - jumpif 0, Route104_Prototype_EventScript_160C99 + goto_if 0, Route104_Prototype_EventScript_160C99 checktrainerflag OPPONENT_MIKE_1 - jumpif 0, Route104_Prototype_EventScript_160C99 + goto_if 0, Route104_Prototype_EventScript_160C99 setflag 215 msgbox Route104_Prototype_Text_19B267, 4 checkflag 216 - jumpeq Route104_Prototype_EventScript_160CFB + goto_if_eq Route104_Prototype_EventScript_160CFB release end @@ -32,21 +32,21 @@ Route104_Prototype_EventScript_160CA3:: @ 8160CA3 lock faceplayer checktrainerflag OPPONENT_BRIANNA_1 - jumpif 0, Route104_Prototype_EventScript_160CF1 + goto_if 0, Route104_Prototype_EventScript_160CF1 checktrainerflag OPPONENT_CINDY_2 - jumpif 0, Route104_Prototype_EventScript_160CF1 + goto_if 0, Route104_Prototype_EventScript_160CF1 checktrainerflag OPPONENT_AMY_AND_LIV_3 - jumpif 0, Route104_Prototype_EventScript_160CF1 + goto_if 0, Route104_Prototype_EventScript_160CF1 checktrainerflag OPPONENT_GINA_AND_MIA_2 - jumpif 0, Route104_Prototype_EventScript_160CF1 + goto_if 0, Route104_Prototype_EventScript_160CF1 checktrainerflag OPPONENT_LUCAS_2 - jumpif 0, Route104_Prototype_EventScript_160CF1 + goto_if 0, Route104_Prototype_EventScript_160CF1 checktrainerflag OPPONENT_MIKE_1 - jumpif 0, Route104_Prototype_EventScript_160CF1 + goto_if 0, Route104_Prototype_EventScript_160CF1 setflag 216 msgbox Route104_Prototype_Text_19B2E9, 4 checkflag 215 - jumpeq Route104_Prototype_EventScript_160CFB + goto_if_eq Route104_Prototype_EventScript_160CFB release end @@ -56,11 +56,11 @@ Route104_Prototype_EventScript_160CF1:: @ 8160CF1 end Route104_Prototype_EventScript_160CFB:: @ 8160CFB - closebutton - pause 60 + closemessage + delay 60 fadescreen 1 - pause 60 - special 271 + delay 60 + special DoSoftReset waitstate release end diff --git a/data/scripts/maps/Route105.inc b/data/scripts/maps/Route105.inc index c71e2ce05..1182dae7e 100644 --- a/data/scripts/maps/Route105.inc +++ b/data/scripts/maps/Route105.inc @@ -4,7 +4,7 @@ Route105_MapScripts:: @ 814F298 Route105_MapScript1_14F29E:: @ 814F29E checkflag 228 - callif 0, Route105_EventScript_14F2A8 + call_if 0, Route105_EventScript_14F2A8 end Route105_EventScript_14F2A8:: @ 814F2A8 diff --git a/data/scripts/maps/Route106.inc b/data/scripts/maps/Route106.inc index 1889eb4d7..2ec903363 100644 --- a/data/scripts/maps/Route106.inc +++ b/data/scripts/maps/Route106.inc @@ -17,9 +17,9 @@ Route106_EventScript_14F34F:: @ 814F34F Route106_EventScript_14F366:: @ 814F366 trainerbattle 0, OPPONENT_ELLIOT_1, 0, Route106_Text_1B8EF0, Route106_Text_1B8F25 - specialval RESULT, 57 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq Route106_EventScript_14F38D + goto_if_eq Route106_EventScript_14F38D msgbox Route106_Text_1B8F55, 6 end diff --git a/data/scripts/maps/Route107.inc b/data/scripts/maps/Route107.inc index ef3407265..b6973407b 100644 --- a/data/scripts/maps/Route107.inc +++ b/data/scripts/maps/Route107.inc @@ -8,9 +8,9 @@ Route107_EventScript_14F3BC:: @ 814F3BC Route107_EventScript_14F3D3:: @ 814F3D3 trainerbattle 0, OPPONENT_TONY_1, 0, Route107_Text_1B933A, Route107_Text_1B9365 - specialval RESULT, 57 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq Route107_EventScript_14F3FA + goto_if_eq Route107_EventScript_14F3FA msgbox Route107_Text_1B938E, 6 end diff --git a/data/scripts/maps/Route109.inc b/data/scripts/maps/Route109.inc index 343a8cab9..9f0ef8c8d 100644 --- a/data/scripts/maps/Route109.inc +++ b/data/scripts/maps/Route109.inc @@ -3,11 +3,11 @@ Route109_MapScripts:: @ 814F4D2 Route109_EventScript_14F4D3:: @ 814F4D3 call Route109_EventScript_1A010C - spritelevelup 2, 0, 24, 0 - spritelevelup 255, 0, 24, 0 - move 2, Route109_Movement_14F67B - waitmove 0 - disappear 2 + setobjectpriority 2, 0, 24, 0 + setobjectpriority 255, 0, 24, 0 + applymovement 2, Route109_Movement_14F67B + waitmovement 0 + removeobject 2 switch FACING case 1, Route109_EventScript_14F518 case 3, Route109_EventScript_14F538 @@ -15,49 +15,49 @@ Route109_EventScript_14F4D3:: @ 814F4D3 end Route109_EventScript_14F518:: @ 814F518 - move 255, Route109_Movement_14F66D - waitmove 0 - jump Route109_EventScript_14F548 + applymovement 255, Route109_Movement_14F66D + waitmovement 0 + goto Route109_EventScript_14F548 end Route109_EventScript_14F528:: @ 814F528 - move 255, Route109_Movement_14F675 - waitmove 0 - jump Route109_EventScript_14F548 + applymovement 255, Route109_Movement_14F675 + waitmovement 0 + goto Route109_EventScript_14F548 end Route109_EventScript_14F538:: @ 814F538 - move 255, Route109_Movement_14F678 - waitmove 0 - jump Route109_EventScript_14F548 + applymovement 255, Route109_Movement_14F678 + waitmovement 0 + goto Route109_EventScript_14F548 end Route109_EventScript_14F548:: @ 814F548 - spriteinvisible 255, 0, 24 + hideobject 255, 0, 24 call Route109_EventScript_1A02E7 - move 1, Route109_Movement_14F5BF - move 255, Route109_Movement_14F5BF - waitmove 0 + applymovement 1, Route109_Movement_14F5BF + applymovement 255, Route109_Movement_14F5BF + waitmovement 0 call Route109_EventScript_1A02EF - spritevisible 255, 0, 11 - move 255, Route109_Movement_14F670 - waitmove 0 - reappear 4 + showobject 255, 0, 11 + applymovement 255, Route109_Movement_14F670 + waitmovement 0 + addobject 4 clearflag 743 - movespriteperm 2, 12, 8 - reappear 2 - spritelevelup 2, 0, 11, 0 - move 2, Route109_Movement_14F67D - waitmove 0 + setobjectxyperm 2, 12, 8 + addobject 2 + setobjectpriority 2, 0, 11, 0 + applymovement 2, Route109_Movement_14F67D + waitmovement 0 clearflag 740 setflag 744 - spriteinvisible 1, 0, 24 + hideobject 1, 0, 24 msgbox Route109_Text_16B4B5, 4 - closebutton + closemessage copyvar 0x4096, 0x8008 - restorespritelevel 255, 0, 24 - restorespritelevel 2, 0, 11 - moveoffscreen 2 + resetobjectpriority 255, 0, 24 + resetobjectpriority 2, 0, 11 + moveobjectoffscreen 2 release end @@ -272,22 +272,22 @@ Route109_EventScript_14F680:: @ 814F680 lock faceplayer checkflag 149 - jumpif 0, Route109_EventScript_14F691 - jump Route109_EventScript_14F6AF + goto_if 0, Route109_EventScript_14F691 + goto Route109_EventScript_14F6AF end Route109_EventScript_14F691:: @ 814F691 message Route109_Text_16E0F9 msgbox Route109_Text_16E0F9, 5 compare RESULT, 0 - jumpeq Route109_EventScript_14F6F1 - jump Route109_EventScript_14F6E2 + goto_if_eq Route109_EventScript_14F6F1 + goto Route109_EventScript_14F6E2 end Route109_EventScript_14F6AF:: @ 814F6AF message Route109_Text_16E26A - waittext - multichoicedef 21, 8, 14, 1, 0 + waitmessage + multichoicedefault 21, 8, 14, 1, 0 switch RESULT case 0, Route109_EventScript_14F6E2 case 1, Route109_EventScript_14F6FB @@ -296,8 +296,8 @@ Route109_EventScript_14F6AF:: @ 814F6AF Route109_EventScript_14F6E2:: @ 814F6E2 msgbox Route109_Text_16E159, 4 - closebutton - jump Route109_EventScript_14F4D3 + closemessage + goto Route109_EventScript_14F4D3 end Route109_EventScript_14F6F1:: @ 814F6F1 @@ -318,33 +318,33 @@ Route109_EventScript_14F70E:: @ 814F70E lock faceplayer msgbox Route109_Text_16E405, 4 - closebutton - move LAST_TALKED, Route109_Movement_1A083D - waitmove 0 + closemessage + applymovement LAST_TALKED, Route109_Movement_1A083D + waitmovement 0 release end Route109_EventScript_14F725:: @ 814F725 lock faceplayer - special 148 + special GetPlayerBigGuyGirlString checkflag 280 - jumpeq Route109_EventScript_14F762 + goto_if_eq Route109_EventScript_14F762 msgbox Route109_Text_16E433, 4 giveitem ITEM_SOFT_SAND compare RESULT, 0 - jumpeq Route109_EventScript_1A029B - closebutton - move LAST_TALKED, Route109_Movement_1A083D - waitmove 0 + goto_if_eq Route109_EventScript_1A029B + closemessage + applymovement LAST_TALKED, Route109_Movement_1A083D + waitmovement 0 setflag 280 release end Route109_EventScript_14F762:: @ 814F762 msgbox Route109_Text_16E446, 4 - move LAST_TALKED, Route109_Movement_1A083D - waitmove 0 + applymovement LAST_TALKED, Route109_Movement_1A083D + waitmovement 0 release end @@ -359,8 +359,8 @@ Route109_EventScript_14F77F:: @ 814F77F Route109_EventScript_14F788:: @ 814F788 lock faceplayer - checksound - pokecry SPECIES_ZIGZAGOON, 0 + waitse + playpokecry SPECIES_ZIGZAGOON, 0 msgbox Route109_Text_16E5CA, 4 waitpokecry release @@ -396,9 +396,9 @@ Route109_EventScript_14F7F2:: @ 814F7F2 Route109_EventScript_14F809:: @ 814F809 trainerbattle 0, OPPONENT_RICKY_1, 0, Route109_Text_1B9C23, Route109_Text_1B9C65 - specialval RESULT, 57 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq Route109_EventScript_14F830 + goto_if_eq Route109_EventScript_14F830 msgbox Route109_Text_1B9C6E, 6 end @@ -409,9 +409,9 @@ Route109_EventScript_14F830:: @ 814F830 Route109_EventScript_14F847:: @ 814F847 trainerbattle 0, OPPONENT_LOLA_1, 0, Route109_Text_1B9D54, Route109_Text_1B9D87 - specialval RESULT, 57 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq Route109_EventScript_14F86E + goto_if_eq Route109_EventScript_14F86E msgbox Route109_Text_1B9D8E, 6 end diff --git a/data/scripts/maps/Route109_SeashoreHouse.inc b/data/scripts/maps/Route109_SeashoreHouse.inc index e1d9c380b..4d8d363aa 100644 --- a/data/scripts/maps/Route109_SeashoreHouse.inc +++ b/data/scripts/maps/Route109_SeashoreHouse.inc @@ -10,11 +10,11 @@ Route109_SeashoreHouse_EventScript_160DD4:: @ 8160DD4 lock faceplayer checkflag 140 - jumpeq Route109_SeashoreHouse_EventScript_160E36 + goto_if_eq Route109_SeashoreHouse_EventScript_160E36 checkflag 141 - jumpeq Route109_SeashoreHouse_EventScript_160E08 + goto_if_eq Route109_SeashoreHouse_EventScript_160E08 checkflag 2 - jumpeq Route109_SeashoreHouse_EventScript_160DFE + goto_if_eq Route109_SeashoreHouse_EventScript_160DFE msgbox Route109_SeashoreHouse_Text_19B4D9, 4 setflag 2 release @@ -29,7 +29,7 @@ Route109_SeashoreHouse_EventScript_160E08:: @ 8160E08 msgbox Route109_SeashoreHouse_Text_19B609, 4 giveitem ITEM_SODA_POP, 6 compare RESULT, 0 - jumpeq Route109_SeashoreHouse_EventScript_160E2C + goto_if_eq Route109_SeashoreHouse_EventScript_160E2C setflag 140 release end @@ -40,41 +40,41 @@ Route109_SeashoreHouse_EventScript_160E2C:: @ 8160E2C end Route109_SeashoreHouse_EventScript_160E36:: @ 8160E36 - showmoney 0, 0 - snop + showmoneybox 0, 0 + nop msgbox Route109_SeashoreHouse_Text_19B702, 5 compare RESULT, 1 - jumpeq Route109_SeashoreHouse_EventScript_160E5A + goto_if_eq Route109_SeashoreHouse_EventScript_160E5A msgbox Route109_SeashoreHouse_Text_19B773, 4 - hidemoney 0, 0 + hidemoneybox 0, 0 release end Route109_SeashoreHouse_EventScript_160E5A:: @ 8160E5A checkmoney 0x12c, 0 compare RESULT, 0 - jumpeq Route109_SeashoreHouse_EventScript_160E9E + goto_if_eq Route109_SeashoreHouse_EventScript_160E9E checkitemspace ITEM_SODA_POP, 1 compare RESULT, 0 - jumpeq Route109_SeashoreHouse_EventScript_160EAB + goto_if_eq Route109_SeashoreHouse_EventScript_160EAB msgbox Route109_SeashoreHouse_Text_19B74C, 4 - paymoney 0x12c, 0 - updatemoney 0, 0 - snop + takemoney 0x12c, 0 + updatemoneybox 0, 0 + nop giveitem ITEM_SODA_POP - hidemoney 0, 0 + hidemoneybox 0, 0 release end Route109_SeashoreHouse_EventScript_160E9E:: @ 8160E9E msgbox Route109_SeashoreHouse_Text_19B759, 4 - hidemoney 0, 0 + hidemoneybox 0, 0 release end Route109_SeashoreHouse_EventScript_160EAB:: @ 8160EAB msgbox Route109_SeashoreHouse_Text_1A0CC2, 4 - hidemoney 0, 0 + hidemoneybox 0, 0 release end @@ -95,11 +95,11 @@ Route109_SeashoreHouse_EventScript_160EEE:: @ 8160EEE Route109_SeashoreHouse_EventScript_160F09:: @ 8160F09 checktrainerflag OPPONENT_DWAYNE - jumpif 0, Route109_SeashoreHouse_EventScript_160F29 + goto_if 0, Route109_SeashoreHouse_EventScript_160F29 checktrainerflag OPPONENT_JOHANNA - jumpif 0, Route109_SeashoreHouse_EventScript_160F29 + goto_if 0, Route109_SeashoreHouse_EventScript_160F29 checktrainerflag OPPONENT_SIMON - jumpif 0, Route109_SeashoreHouse_EventScript_160F29 + goto_if 0, Route109_SeashoreHouse_EventScript_160F29 setflag 141 release end diff --git a/data/scripts/maps/Route110.inc b/data/scripts/maps/Route110.inc index 55c8f67df..146be5959 100644 --- a/data/scripts/maps/Route110.inc +++ b/data/scripts/maps/Route110.inc @@ -5,7 +5,7 @@ Route110_MapScripts:: @ 814F900 .byte 0 Route110_MapScript1_14F910:: @ 814F910 - special 229 + special UpdateCyclingRoadState end Route110_MapScript1_14F914:: @ 814F914 @@ -13,11 +13,11 @@ Route110_MapScript1_14F914:: @ 814F914 call Route110_EventScript_1A014E call Route110_EventScript_1A0172 compare 0x40a9, 1 - callif 1, Route110_EventScript_14F92F + call_if 1, Route110_EventScript_14F92F end Route110_EventScript_14F92F:: @ 814F92F - playmusicbattle 403 @ Bicycle music + savebgm 403 @ Bicycle music return Route110_MapScript2_14F933:: @ 814F933 @@ -25,7 +25,7 @@ Route110_MapScript2_14F933:: @ 814F933 .2byte 0 Route110_EventScript_14F93D:: @ 814F93D - special 226 + special ScrSpecial_BeginCyclingRoadChallenge setvar 0x40a9, 2 return @@ -33,8 +33,8 @@ Route110_EventScript_14F946:: @ 814F946 lock faceplayer msgbox Route110_Text_16E6C0, 4 - move LAST_TALKED, Route110_Movement_1A083D - waitmove 0 + applymovement LAST_TALKED, Route110_Movement_1A083D + waitmovement 0 release end @@ -42,8 +42,8 @@ Route110_EventScript_14F95C:: @ 814F95C lock faceplayer msgbox Route110_Text_16E6F2, 4 - move LAST_TALKED, Route110_Movement_1A083D - waitmove 0 + applymovement LAST_TALKED, Route110_Movement_1A083D + waitmovement 0 release end @@ -51,8 +51,8 @@ Route110_EventScript_14F972:: @ 814F972 lock faceplayer msgbox Route110_Text_16E729, 4 - move LAST_TALKED, Route110_Movement_1A083D - waitmove 0 + applymovement LAST_TALKED, Route110_Movement_1A083D + waitmovement 0 release end @@ -60,8 +60,8 @@ Route110_EventScript_14F988:: @ 814F988 lock faceplayer msgbox Route110_Text_16E76A, 4 - move LAST_TALKED, Route110_Movement_1A083D - waitmove 0 + applymovement LAST_TALKED, Route110_Movement_1A083D + waitmovement 0 release end @@ -131,9 +131,9 @@ Route110_EventScript_14FA25:: @ 814FA25 Route110_EventScript_14FA2E:: @ 814FA2E lockall - specialval RESULT, 225 + specialvar RESULT, GetRecordedCyclingRoadResults compare RESULT, 0 - jumpeq Route110_EventScript_14FA49 + goto_if_eq Route110_EventScript_14FA49 msgbox Route110_Text_16F53A, 4 releaseall end @@ -146,11 +146,11 @@ Route110_EventScript_14FA49:: @ 814FA49 Route110_EventScript_14FA53:: @ 814FA53 lock faceplayer - specialval RESULT, 227 + specialvar RESULT, GetPlayerAvatarBike compare RESULT, 1 - jumpeq Route110_EventScript_14FA84 + goto_if_eq Route110_EventScript_14FA84 compare 0x40a9, 0 - jumpeq Route110_EventScript_14FA7A + goto_if_eq Route110_EventScript_14FA7A msgbox Route110_Text_16F26A, 4 release end @@ -177,9 +177,9 @@ Route110_EventScript_14FAA5:: @ 814FAA5 Route110_EventScript_14FABC:: @ 814FABC trainerbattle 0, OPPONENT_EDWIN_1, 0, Route110_Text_1BA7D2, Route110_Text_1BA803 - specialval RESULT, 57 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq Route110_EventScript_14FAE3 + goto_if_eq Route110_EventScript_14FAE3 msgbox Route110_Text_1BA829, 6 end @@ -205,9 +205,9 @@ Route110_EventScript_14FB28:: @ 814FB28 Route110_EventScript_14FB3F:: @ 814FB3F trainerbattle 0, OPPONENT_BENJAMIN_1, 0, Route110_Text_1BA352, Route110_Text_1BA379 - specialval RESULT, 57 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq Route110_EventScript_14FB66 + goto_if_eq Route110_EventScript_14FB66 msgbox Route110_Text_1BA3A5, 6 end @@ -223,9 +223,9 @@ Route110_EventScript_14FB7D:: @ 814FB7D Route110_EventScript_14FB94:: @ 814FB94 trainerbattle 0, OPPONENT_ABIGAIL_1, 0, Route110_Text_1BA4A0, Route110_Text_1BA50F - specialval RESULT, 57 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq Route110_EventScript_14FBBB + goto_if_eq Route110_EventScript_14FBBB msgbox Route110_Text_1BA52E, 6 end @@ -236,9 +236,9 @@ Route110_EventScript_14FBBB:: @ 814FBBB Route110_EventScript_14FBD2:: @ 814FBD2 trainerbattle 0, OPPONENT_ISABEL_1, 0, Route110_Text_1BA990, Route110_Text_1BA9D0 - specialval RESULT, 57 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq Route110_EventScript_14FBF9 + goto_if_eq Route110_EventScript_14FBF9 msgbox Route110_Text_1BA9E9, 6 end @@ -254,14 +254,14 @@ Route110_EventScript_14FC10:: @ 814FC10 Route110_EventScript_14FC27:: @ 814FC27 lockall - move 21, Route110_Movement_1A0843 - waitmove 0 + applymovement 21, Route110_Movement_1A0843 + waitmovement 0 call Route110_EventScript_14FC39 releaseall end Route110_EventScript_14FC39:: @ 814FC39 - special 228 + special FinishCyclingRoadChallenge msgbox Route110_Text_16EF65, 4 switch RESULT case 10, Route110_EventScript_14FCC3 @@ -279,84 +279,84 @@ Route110_EventScript_14FC39:: @ 814FC39 Route110_EventScript_14FCC3:: @ 814FCC3 msgbox Route110_Text_16EF9F, 4 - jump Route110_EventScript_14FD09 + goto Route110_EventScript_14FD09 end Route110_EventScript_14FCD1:: @ 814FCD1 msgbox Route110_Text_16F012, 4 - jump Route110_EventScript_14FD09 + goto Route110_EventScript_14FD09 end Route110_EventScript_14FCDF:: @ 814FCDF msgbox Route110_Text_16F069, 4 - jump Route110_EventScript_14FD09 + goto Route110_EventScript_14FD09 end Route110_EventScript_14FCED:: @ 814FCED msgbox Route110_Text_16F0D0, 4 - jump Route110_EventScript_14FD09 + goto Route110_EventScript_14FD09 end Route110_EventScript_14FCFB:: @ 814FCFB msgbox Route110_Text_16F139, 4 - jump Route110_EventScript_14FD09 + goto Route110_EventScript_14FD09 end Route110_EventScript_14FD09:: @ 814FD09 setvar 0x40a9, 3 - playmusicbattle 0 - fadedefault + savebgm 0 + fadedefaultbgm return Route110_EventScript_14FD13:: @ 814FD13 setvar 0x8008, 1 - jump Route110_EventScript_14FD34 + goto Route110_EventScript_14FD34 end Route110_EventScript_14FD1E:: @ 814FD1E setvar 0x8008, 2 - jump Route110_EventScript_14FD34 + goto Route110_EventScript_14FD34 end Route110_EventScript_14FD29:: @ 814FD29 setvar 0x8008, 3 - jump Route110_EventScript_14FD34 + goto Route110_EventScript_14FD34 end Route110_EventScript_14FD34:: @ 814FD34 lockall - checkgender + checkplayergender compare RESULT, 0 - callif 1, Route110_EventScript_14FDA7 + call_if 1, Route110_EventScript_14FDA7 compare RESULT, 1 - callif 1, Route110_EventScript_14FDAC - move 28, Route110_Movement_1A0845 - waitmove 0 - move 28, Route110_Movement_1A0833 - waitmove 0 - move 28, Route110_Movement_1A0835 - waitmove 0 - pause 30 + call_if 1, Route110_EventScript_14FDAC + applymovement 28, Route110_Movement_1A0845 + waitmovement 0 + applymovement 28, Route110_Movement_1A0833 + waitmovement 0 + applymovement 28, Route110_Movement_1A0835 + waitmovement 0 + delay 30 compare 0x8008, 1 - callif 1, Route110_EventScript_14FF14 + call_if 1, Route110_EventScript_14FF14 compare 0x8008, 2 - callif 1, Route110_EventScript_14FF1F + call_if 1, Route110_EventScript_14FF1F compare 0x8008, 3 - callif 1, Route110_EventScript_14FF2A - checkgender + call_if 1, Route110_EventScript_14FF2A + checkplayergender compare RESULT, 0 - jumpeq Route110_EventScript_14FDB1 + goto_if_eq Route110_EventScript_14FDB1 compare RESULT, 1 - jumpeq Route110_EventScript_14FE2B + goto_if_eq Route110_EventScript_14FE2B releaseall end Route110_EventScript_14FDA7:: @ 814FDA7 - playmusic 415, 1 + playbgm 415, 1 return Route110_EventScript_14FDAC:: @ 814FDAC - playmusic 421, 1 + playbgm 421, 1 return Route110_EventScript_14FDB1:: @ 814FDB1 @@ -369,24 +369,24 @@ Route110_EventScript_14FDB1:: @ 814FDB1 Route110_EventScript_14FDE0:: @ 814FDE0 trainerbattle 3, OPPONENT_MAY_5, 0, Route110_Text_16E826 - jump Route110_EventScript_14FE10 + goto Route110_EventScript_14FE10 end Route110_EventScript_14FDF0:: @ 814FDF0 trainerbattle 3, OPPONENT_MAY_8, 0, Route110_Text_16E826 - jump Route110_EventScript_14FE10 + goto Route110_EventScript_14FE10 end Route110_EventScript_14FE00:: @ 814FE00 trainerbattle 3, OPPONENT_MAY_2, 0, Route110_Text_16E826 - jump Route110_EventScript_14FE10 + goto Route110_EventScript_14FE10 end Route110_EventScript_14FE10:: @ 814FE10 msgbox Route110_Text_16E84C, 4 call Route110_EventScript_14FEA5 msgbox Route110_Text_16E8B3, 4 - jump Route110_EventScript_14FEB2 + goto Route110_EventScript_14FEB2 end Route110_EventScript_14FE2B:: @ 814FE2B @@ -399,24 +399,24 @@ Route110_EventScript_14FE2B:: @ 814FE2B Route110_EventScript_14FE5A:: @ 814FE5A trainerbattle 3, OPPONENT_BRENDAN_5, 0, Route110_Text_16EA0F - jump Route110_EventScript_14FE8A + goto Route110_EventScript_14FE8A end Route110_EventScript_14FE6A:: @ 814FE6A trainerbattle 3, OPPONENT_BRENDAN_8, 0, Route110_Text_16EA0F - jump Route110_EventScript_14FE8A + goto Route110_EventScript_14FE8A end Route110_EventScript_14FE7A:: @ 814FE7A trainerbattle 3, OPPONENT_BRENDAN_2, 0, Route110_Text_16EA0F - jump Route110_EventScript_14FE8A + goto Route110_EventScript_14FE8A end Route110_EventScript_14FE8A:: @ 814FE8A msgbox Route110_Text_16EA2A, 4 call Route110_EventScript_14FEA5 msgbox Route110_Text_16EA7B, 4 - jump Route110_EventScript_14FEB2 + goto Route110_EventScript_14FEB2 end Route110_EventScript_14FEA5:: @ 814FEA5 @@ -424,71 +424,71 @@ Route110_EventScript_14FEA5:: @ 814FEA5 return Route110_EventScript_14FEB2:: @ 814FEB2 - closebutton + closemessage compare 0x8008, 1 - callif 1, Route110_EventScript_14FF56 + call_if 1, Route110_EventScript_14FF56 compare 0x8008, 2 - callif 1, Route110_EventScript_14FF5E + call_if 1, Route110_EventScript_14FF5E compare 0x8008, 3 - callif 1, Route110_EventScript_14FF66 - spritebehave 28, 10 - spritebehave 29, 10 - disappear 28 - reappear 29 - pause 45 + call_if 1, Route110_EventScript_14FF66 + setobjectmovementtype 28, 10 + setobjectmovementtype 29, 10 + removeobject 28 + addobject 29 + delay 45 compare 0x8008, 1 - callif 1, Route110_EventScript_14FF35 + call_if 1, Route110_EventScript_14FF35 compare 0x8008, 2 - callif 1, Route110_EventScript_14FF40 + call_if 1, Route110_EventScript_14FF40 compare 0x8008, 3 - callif 1, Route110_EventScript_14FF4B - disappear 29 + call_if 1, Route110_EventScript_14FF4B + removeobject 29 setvar 0x4069, 1 - playmusicbattle 0 - fadedefault + savebgm 0 + fadedefaultbgm releaseall end Route110_EventScript_14FF14:: @ 814FF14 - move 28, Route110_Movement_14FF6E - waitmove 0 + applymovement 28, Route110_Movement_14FF6E + waitmovement 0 return Route110_EventScript_14FF1F:: @ 814FF1F - move 28, Route110_Movement_14FF72 - waitmove 0 + applymovement 28, Route110_Movement_14FF72 + waitmovement 0 return Route110_EventScript_14FF2A:: @ 814FF2A - move 28, Route110_Movement_14FF74 - waitmove 0 + applymovement 28, Route110_Movement_14FF74 + waitmovement 0 return Route110_EventScript_14FF35:: @ 814FF35 - move 29, Route110_Movement_14FF78 - waitmove 0 + applymovement 29, Route110_Movement_14FF78 + waitmovement 0 return Route110_EventScript_14FF40:: @ 814FF40 - move 29, Route110_Movement_14FF80 - waitmove 0 + applymovement 29, Route110_Movement_14FF80 + waitmovement 0 return Route110_EventScript_14FF4B:: @ 814FF4B - move 29, Route110_Movement_14FF89 - waitmove 0 + applymovement 29, Route110_Movement_14FF89 + waitmovement 0 return Route110_EventScript_14FF56:: @ 814FF56 - movespriteperm 29, 33, 55 + setobjectxyperm 29, 33, 55 return Route110_EventScript_14FF5E:: @ 814FF5E - movespriteperm 29, 34, 55 + setobjectxyperm 29, 34, 55 return Route110_EventScript_14FF66:: @ 814FF66 - movespriteperm 29, 35, 55 + setobjectxyperm 29, 35, 55 return Route110_Movement_14FF6E:: @ 814FF6E diff --git a/data/scripts/maps/Route110_SeasideCyclingRoadNorthEntrance.inc b/data/scripts/maps/Route110_SeasideCyclingRoadNorthEntrance.inc index 0dbd5dfc4..c60bc366e 100644 --- a/data/scripts/maps/Route110_SeasideCyclingRoadNorthEntrance.inc +++ b/data/scripts/maps/Route110_SeasideCyclingRoadNorthEntrance.inc @@ -4,9 +4,9 @@ Route110_SeasideCyclingRoadNorthEntrance_MapScripts:: @ 81634C8 Route110_SeasideCyclingRoadNorthEntrance_MapScript1_1634CE:: @ 81634CE compare 0x40a9, 3 - callif 1, Route110_SeasideCyclingRoadNorthEntrance_EventScript_1634E5 + call_if 1, Route110_SeasideCyclingRoadNorthEntrance_EventScript_1634E5 compare 0x40a9, 2 - callif 1, Route110_SeasideCyclingRoadNorthEntrance_EventScript_1634E5 + call_if 1, Route110_SeasideCyclingRoadNorthEntrance_EventScript_1634E5 end Route110_SeasideCyclingRoadNorthEntrance_EventScript_1634E5:: @ 81634E5 @@ -23,11 +23,11 @@ Route110_SeasideCyclingRoadNorthEntrance_EventScript_1634EB:: @ 81634EB Route110_SeasideCyclingRoadNorthEntrance_EventScript_1634F7:: @ 81634F7 @ Coord event directly in front of the gatesman heading left to right lockall - specialval RESULT, 227 @ player state? + specialvar RESULT, GetPlayerAvatarBike @ player state? compare RESULT, 2 - callif 1, Route110_SeasideCyclingRoadNorthEntrance_EventScript_16351D + call_if 1, Route110_SeasideCyclingRoadNorthEntrance_EventScript_16351D compare RESULT, 0 - jumpeq Route110_SeasideCyclingRoadNorthEntrance_EventScript_163523 + goto_if_eq Route110_SeasideCyclingRoadNorthEntrance_EventScript_163523 setflag 2091 setvar 0x4001, 1 releaseall @@ -41,9 +41,9 @@ Route110_SeasideCyclingRoadNorthEntrance_EventScript_16351D:: @ 816351D Route110_SeasideCyclingRoadNorthEntrance_EventScript_163523:: @ 8163523 @ You don't have a bike! msgbox Route110_SeasideCyclingRoadNorthEntrance_Text_19E3AD, 4 - closebutton - move 255, Route110_SeasideCyclingRoadNorthEntrance_Movement_163538 - waitmove 0 + closemessage + applymovement 255, Route110_SeasideCyclingRoadNorthEntrance_Movement_163538 + waitmovement 0 releaseall end diff --git a/data/scripts/maps/Route110_SeasideCyclingRoadSouthEntrance.inc b/data/scripts/maps/Route110_SeasideCyclingRoadSouthEntrance.inc index 96fb13f2b..cf18a8e36 100644 --- a/data/scripts/maps/Route110_SeasideCyclingRoadSouthEntrance.inc +++ b/data/scripts/maps/Route110_SeasideCyclingRoadSouthEntrance.inc @@ -10,9 +10,9 @@ Route110_SeasideCyclingRoadSouthEntrance_EventScript_16347F:: @ 816347F Route110_SeasideCyclingRoadSouthEntrance_EventScript_16348B:: @ 816348B lockall - specialval RESULT, 227 + specialvar RESULT, GetPlayerAvatarBike compare RESULT, 0 - jumpeq Route110_SeasideCyclingRoadSouthEntrance_EventScript_1634A6 + goto_if_eq Route110_SeasideCyclingRoadSouthEntrance_EventScript_1634A6 setflag 2091 setvar 0x4001, 1 releaseall @@ -20,9 +20,9 @@ Route110_SeasideCyclingRoadSouthEntrance_EventScript_16348B:: @ 816348B Route110_SeasideCyclingRoadSouthEntrance_EventScript_1634A6:: @ 81634A6 msgbox Route110_SeasideCyclingRoadSouthEntrance_Text_19E3AD, 4 - closebutton - move 255, Route110_SeasideCyclingRoadSouthEntrance_Movement_1634BB - waitmove 0 + closemessage + applymovement 255, Route110_SeasideCyclingRoadSouthEntrance_Movement_1634BB + waitmovement 0 releaseall end diff --git a/data/scripts/maps/Route110_TrickHouseEnd.inc b/data/scripts/maps/Route110_TrickHouseEnd.inc index d2b2eaefb..12309207c 100644 --- a/data/scripts/maps/Route110_TrickHouseEnd.inc +++ b/data/scripts/maps/Route110_TrickHouseEnd.inc @@ -7,13 +7,13 @@ Route110_TrickHouseEnd_MapScripts:: @ 8161936 Route110_TrickHouseEnd_MapScript1_16194B:: @ 816194B compare 0x4001, 1 - callif 1, Route110_TrickHouseEnd_EventScript_161994 + call_if 1, Route110_TrickHouseEnd_EventScript_161994 end Route110_TrickHouseEnd_MapScript1_161957:: @ 8161957 setvar 0x4001, 0 setvar 0x4002, 0 - special 261 + special SetTrickHouseEndRoomFlag end Route110_TrickHouseEnd_MapScript2_161965:: @ 8161965 @@ -21,9 +21,9 @@ Route110_TrickHouseEnd_MapScript2_161965:: @ 8161965 .2byte 0 Route110_TrickHouseEnd_EventScript_16196F:: @ 816196F - reappear 1 - spritevisible 1, 29, 1 - spriteface 1, 4 + addobject 1 + showobject 1, 29, 1 + turnobject 1, 4 end Route110_TrickHouseEnd_MapScript2_16197C:: @ 816197C @@ -33,7 +33,7 @@ Route110_TrickHouseEnd_MapScript2_16197C:: @ 816197C Route110_TrickHouseEnd_EventScript_161986:: @ 8161986 setvar 0x4001, 1 call Route110_TrickHouseEnd_EventScript_161994 - special 142 + special DrawWholeMapView end Route110_TrickHouseEnd_EventScript_161994:: @ 8161994 @@ -62,9 +62,9 @@ Route110_TrickHouseEnd_EventScript_161A0B:: @ 8161A0B setvar 0x40c1, 0 giveitem ITEM_RARE_CANDY compare RESULT, 0 - callif 1, Route110_TrickHouseEnd_EventScript_161C4E + call_if 1, Route110_TrickHouseEnd_EventScript_161C4E msgbox Route110_TrickHouseEnd_Text_19C9BD, 4 - closebutton + closemessage call Route110_TrickHouseEnd_EventScript_161C2E release end @@ -75,9 +75,9 @@ Route110_TrickHouseEnd_EventScript_161A47:: @ 8161A47 setvar 0x40c1, 0 giveitem ITEM_TIMER_BALL compare RESULT, 0 - callif 1, Route110_TrickHouseEnd_EventScript_161C4E + call_if 1, Route110_TrickHouseEnd_EventScript_161C4E msgbox Route110_TrickHouseEnd_Text_19C9BD, 4 - closebutton + closemessage call Route110_TrickHouseEnd_EventScript_161C2E release end @@ -88,9 +88,9 @@ Route110_TrickHouseEnd_EventScript_161A83:: @ 8161A83 setvar 0x40c1, 0 giveitem ITEM_HARD_STONE compare RESULT, 0 - callif 1, Route110_TrickHouseEnd_EventScript_161C4E + call_if 1, Route110_TrickHouseEnd_EventScript_161C4E msgbox Route110_TrickHouseEnd_Text_19C9BD, 4 - closebutton + closemessage call Route110_TrickHouseEnd_EventScript_161C2E release end @@ -101,9 +101,9 @@ Route110_TrickHouseEnd_EventScript_161ABF:: @ 8161ABF setvar 0x40c1, 0 giveitem ITEM_SMOKE_BALL compare RESULT, 0 - callif 1, Route110_TrickHouseEnd_EventScript_161C4E + call_if 1, Route110_TrickHouseEnd_EventScript_161C4E msgbox Route110_TrickHouseEnd_Text_19C9BD, 4 - closebutton + closemessage call Route110_TrickHouseEnd_EventScript_161C2E release end @@ -114,9 +114,9 @@ Route110_TrickHouseEnd_EventScript_161AFB:: @ 8161AFB setvar 0x40c1, 0 giveitem ITEM_TM12 compare RESULT, 0 - callif 1, Route110_TrickHouseEnd_EventScript_161C4E + call_if 1, Route110_TrickHouseEnd_EventScript_161C4E msgbox Route110_TrickHouseEnd_Text_19C9BD, 4 - closebutton + closemessage call Route110_TrickHouseEnd_EventScript_161C2E release end @@ -127,9 +127,9 @@ Route110_TrickHouseEnd_EventScript_161B37:: @ 8161B37 setvar 0x40c1, 0 giveitem ITEM_MAGNET compare RESULT, 0 - callif 1, Route110_TrickHouseEnd_EventScript_161C4E + call_if 1, Route110_TrickHouseEnd_EventScript_161C4E msgbox Route110_TrickHouseEnd_Text_19C9BD, 4 - closebutton + closemessage call Route110_TrickHouseEnd_EventScript_161C2E release end @@ -140,30 +140,30 @@ Route110_TrickHouseEnd_EventScript_161B73:: @ 8161B73 setvar 0x40c1, 0 giveitem ITEM_PP_MAX compare RESULT, 0 - callif 1, Route110_TrickHouseEnd_EventScript_161C4E + call_if 1, Route110_TrickHouseEnd_EventScript_161C4E msgbox Route110_TrickHouseEnd_Text_19C9BD, 4 - closebutton + closemessage call Route110_TrickHouseEnd_EventScript_161C2E release end Route110_TrickHouseEnd_EventScript_161BAF:: @ 8161BAF msgbox Route110_TrickHouseEnd_Text_19C5AF, 4 - closebutton + closemessage compare FACING, 1 - callif 1, Route110_TrickHouseEnd_EventScript_161C74 + call_if 1, Route110_TrickHouseEnd_EventScript_161C74 compare FACING, 2 - callif 1, Route110_TrickHouseEnd_EventScript_161C7F + call_if 1, Route110_TrickHouseEnd_EventScript_161C7F compare FACING, 3 - callif 1, Route110_TrickHouseEnd_EventScript_161C8A + call_if 1, Route110_TrickHouseEnd_EventScript_161C8A compare FACING, 4 - callif 1, Route110_TrickHouseEnd_EventScript_161C95 - pause 30 + call_if 1, Route110_TrickHouseEnd_EventScript_161C95 + delay 30 msgbox Route110_TrickHouseEnd_Text_19C602, 4 - closebutton - move 1, Route110_TrickHouseEnd_Movement_1A0839 - waitmove 0 - pause 30 + closemessage + applymovement 1, Route110_TrickHouseEnd_Movement_1A0839 + waitmovement 0 + delay 30 msgbox Route110_TrickHouseEnd_Text_19C691, 4 setvar 0x40c1, 0 .ifdef SAPPHIRE @@ -172,20 +172,20 @@ Route110_TrickHouseEnd_EventScript_161BAF:: @ 8161BAF givedecoration 31 .endc compare RESULT, 0 - callif 1, Route110_TrickHouseEnd_EventScript_161C61 + call_if 1, Route110_TrickHouseEnd_EventScript_161C61 msgbox Route110_TrickHouseEnd_Text_19C85C, 4 call Route110_TrickHouseEnd_EventScript_161C2E - special 260 + special ResetTrickHouseEndRoomFlag release end Route110_TrickHouseEnd_EventScript_161C2E:: @ 8161C2E - move 1, Route110_TrickHouseEnd_Movement_161315 - waitmove 0 - playsfx 178 - move 1, Route110_TrickHouseEnd_Movement_16131E - waitmove 0 - disappear 1 + applymovement 1, Route110_TrickHouseEnd_Movement_161315 + waitmovement 0 + playse 178 + applymovement 1, Route110_TrickHouseEnd_Movement_16131E + waitmovement 0 + removeobject 1 addvar 0x4044, 1 return @@ -202,43 +202,43 @@ Route110_TrickHouseEnd_EventScript_161C61:: @ 8161C61 return Route110_TrickHouseEnd_EventScript_161C74:: @ 8161C74 - move 1, Route110_TrickHouseEnd_Movement_1A0845 - waitmove 0 + applymovement 1, Route110_TrickHouseEnd_Movement_1A0845 + waitmovement 0 return Route110_TrickHouseEnd_EventScript_161C7F:: @ 8161C7F - move 1, Route110_TrickHouseEnd_Movement_1A0841 - waitmove 0 + applymovement 1, Route110_TrickHouseEnd_Movement_1A0841 + waitmovement 0 return Route110_TrickHouseEnd_EventScript_161C8A:: @ 8161C8A - move 1, Route110_TrickHouseEnd_Movement_1A083F - waitmove 0 + applymovement 1, Route110_TrickHouseEnd_Movement_1A083F + waitmovement 0 return Route110_TrickHouseEnd_EventScript_161C95:: @ 8161C95 - move 1, Route110_TrickHouseEnd_Movement_1A0843 - waitmove 0 + applymovement 1, Route110_TrickHouseEnd_Movement_1A0843 + waitmovement 0 return Route110_TrickHouseEnd_EventScript_161CA0:: @ 8161CA0 lockall - spriteface 1, 3 - playsfx 21 - move 1, Route110_TrickHouseEnd_Movement_1A0833 - waitmove 0 - pause 20 - move 1, Route110_TrickHouseEnd_Movement_161CEA - waitmove 0 - playsfx 178 - move 255, Route110_TrickHouseEnd_Movement_1A0845 - waitmove 0 + turnobject 1, 3 + playse 21 + applymovement 1, Route110_TrickHouseEnd_Movement_1A0833 + waitmovement 0 + delay 20 + applymovement 1, Route110_TrickHouseEnd_Movement_161CEA + waitmovement 0 + playse 178 + applymovement 255, Route110_TrickHouseEnd_Movement_1A0845 + waitmovement 0 msgbox Route110_TrickHouseEnd_Text_19CA8B, 4 - closebutton - move 255, Route110_TrickHouseEnd_Movement_161CE8 - waitmove 0 - pause 4 - spriteface 1, 4 + closemessage + applymovement 255, Route110_TrickHouseEnd_Movement_161CE8 + waitmovement 0 + delay 4 + turnobject 1, 4 releaseall end diff --git a/data/scripts/maps/Route110_TrickHouseEntrance.inc b/data/scripts/maps/Route110_TrickHouseEntrance.inc index 434794b2f..568ba2af6 100644 --- a/data/scripts/maps/Route110_TrickHouseEntrance.inc +++ b/data/scripts/maps/Route110_TrickHouseEntrance.inc @@ -7,17 +7,17 @@ Route110_TrickHouseEntrance_MapScripts:: @ 8160F2B Route110_TrickHouseEntrance_MapScript1_160F3B:: @ 8160F3B setflag 2114 compare 0x40b5, 1 - jumpeq Route110_TrickHouseEntrance_EventScript_160FCE + goto_if_eq Route110_TrickHouseEntrance_EventScript_160FCE compare 0x40c1, 1 - jumpeq Route110_TrickHouseEntrance_EventScript_160FB2 + goto_if_eq Route110_TrickHouseEntrance_EventScript_160FB2 compare 0x40a6, 1 - jumpeq Route110_TrickHouseEntrance_EventScript_16108E + goto_if_eq Route110_TrickHouseEntrance_EventScript_16108E compare 0x40a7, 5 - callif 1, Route110_TrickHouseEntrance_EventScript_160FDE + call_if 1, Route110_TrickHouseEntrance_EventScript_160FDE compare 0x40a7, 3 - callif 1, Route110_TrickHouseEntrance_EventScript_160FDE + call_if 1, Route110_TrickHouseEntrance_EventScript_160FDE compare 0x40a7, 0 - callif 1, Route110_TrickHouseEntrance_EventScript_160FDE + call_if 1, Route110_TrickHouseEntrance_EventScript_160FDE switch 0x40a7 case 0, Route110_TrickHouseEntrance_EventScript_16109A case 1, Route110_TrickHouseEntrance_EventScript_1610A0 @@ -28,7 +28,7 @@ Route110_TrickHouseEntrance_MapScript1_160F3B:: @ 8160F3B Route110_TrickHouseEntrance_EventScript_160FB2:: @ 8160FB2 setvar 0x40a5, 1 compare 0x4044, 8 - jumpeq Route110_TrickHouseEntrance_EventScript_160FC8 + goto_if_eq Route110_TrickHouseEntrance_EventScript_160FC8 setvar 0x40a7, 2 end @@ -45,56 +45,56 @@ Route110_TrickHouseEntrance_EventScript_160FCE:: @ 8160FCE Route110_TrickHouseEntrance_EventScript_160FDE:: @ 8160FDE setvar 0x40a7, 0 compare 0x4044, 1 - callif 1, Route110_TrickHouseEntrance_EventScript_16103C + call_if 1, Route110_TrickHouseEntrance_EventScript_16103C compare 0x4044, 2 - callif 1, Route110_TrickHouseEntrance_EventScript_161046 + call_if 1, Route110_TrickHouseEntrance_EventScript_161046 compare 0x4044, 3 - callif 1, Route110_TrickHouseEntrance_EventScript_161050 + call_if 1, Route110_TrickHouseEntrance_EventScript_161050 compare 0x4044, 4 - callif 1, Route110_TrickHouseEntrance_EventScript_16105A + call_if 1, Route110_TrickHouseEntrance_EventScript_16105A compare 0x4044, 5 - callif 1, Route110_TrickHouseEntrance_EventScript_161064 + call_if 1, Route110_TrickHouseEntrance_EventScript_161064 compare 0x4044, 6 - callif 1, Route110_TrickHouseEntrance_EventScript_16106E + call_if 1, Route110_TrickHouseEntrance_EventScript_16106E compare 0x4044, 7 - callif 1, Route110_TrickHouseEntrance_EventScript_161078 + call_if 1, Route110_TrickHouseEntrance_EventScript_161078 compare 0x4044, 8 - callif 1, Route110_TrickHouseEntrance_EventScript_161082 + call_if 1, Route110_TrickHouseEntrance_EventScript_161082 return Route110_TrickHouseEntrance_EventScript_16103C:: @ 816103C checkflag 2057 - callif 0, Route110_TrickHouseEntrance_EventScript_161088 + call_if 0, Route110_TrickHouseEntrance_EventScript_161088 return Route110_TrickHouseEntrance_EventScript_161046:: @ 8161046 checkflag 2058 - callif 0, Route110_TrickHouseEntrance_EventScript_161088 + call_if 0, Route110_TrickHouseEntrance_EventScript_161088 return Route110_TrickHouseEntrance_EventScript_161050:: @ 8161050 checkflag 2059 - callif 0, Route110_TrickHouseEntrance_EventScript_161088 + call_if 0, Route110_TrickHouseEntrance_EventScript_161088 return Route110_TrickHouseEntrance_EventScript_16105A:: @ 816105A checkflag 2060 - callif 0, Route110_TrickHouseEntrance_EventScript_161088 + call_if 0, Route110_TrickHouseEntrance_EventScript_161088 return Route110_TrickHouseEntrance_EventScript_161064:: @ 8161064 checkflag 2061 - callif 0, Route110_TrickHouseEntrance_EventScript_161088 + call_if 0, Route110_TrickHouseEntrance_EventScript_161088 return Route110_TrickHouseEntrance_EventScript_16106E:: @ 816106E checkflag 2062 - callif 0, Route110_TrickHouseEntrance_EventScript_161088 + call_if 0, Route110_TrickHouseEntrance_EventScript_161088 return Route110_TrickHouseEntrance_EventScript_161078:: @ 8161078 checkflag 2052 - callif 0, Route110_TrickHouseEntrance_EventScript_161088 + call_if 0, Route110_TrickHouseEntrance_EventScript_161088 return Route110_TrickHouseEntrance_EventScript_161082:: @ 8161082 @@ -106,8 +106,8 @@ Route110_TrickHouseEntrance_EventScript_161088:: @ 8161088 return Route110_TrickHouseEntrance_EventScript_16108E:: @ 816108E - movespriteperm 1, 5, 2 - spritebehave 1, 4 + setobjectxyperm 1, 5, 2 + setobjectmovementtype 1, 4 end Route110_TrickHouseEntrance_EventScript_16109A:: @ 816109A @@ -138,15 +138,15 @@ Route110_TrickHouseEntrance_MapScript2_1610B2:: @ 81610B2 .2byte 0 Route110_TrickHouseEntrance_EventScript_1610F4:: @ 81610F4 - reappear 1 - spritevisible 1, 29, 0 - spriteface 1, 4 - spriteface 255, 3 + addobject 1 + showobject 1, 29, 0 + turnobject 1, 4 + turnobject 255, 3 end Route110_TrickHouseEntrance_EventScript_161105:: @ 8161105 - reappear 1 - spriteinvisible 1, 29, 0 + addobject 1 + hideobject 1, 29, 0 switch 0x4044 case 0, Route110_TrickHouseEntrance_EventScript_16116B case 1, Route110_TrickHouseEntrance_EventScript_161173 @@ -159,51 +159,51 @@ Route110_TrickHouseEntrance_EventScript_161105:: @ 8161105 end Route110_TrickHouseEntrance_EventScript_16116B:: @ 816116B - movesprite 1, 6, 3 + setobjectxy 1, 6, 3 end Route110_TrickHouseEntrance_EventScript_161173:: @ 8161173 - movesprite 1, 11, 5 + setobjectxy 1, 11, 5 end Route110_TrickHouseEntrance_EventScript_16117B:: @ 816117B - movesprite 1, 11, 1 + setobjectxy 1, 11, 1 end Route110_TrickHouseEntrance_EventScript_161183:: @ 8161183 - movesprite 1, 3, 1 + setobjectxy 1, 3, 1 end Route110_TrickHouseEntrance_EventScript_16118B:: @ 816118B - movesprite 1, 0, 5 + setobjectxy 1, 0, 5 end Route110_TrickHouseEntrance_EventScript_161193:: @ 8161193 - movesprite 1, 9, 1 + setobjectxy 1, 9, 1 end Route110_TrickHouseEntrance_EventScript_16119B:: @ 816119B - movesprite 1, 8, 1 + setobjectxy 1, 8, 1 end Route110_TrickHouseEntrance_EventScript_1611A3:: @ 81611A3 - movesprite 1, 4, 4 + setobjectxy 1, 4, 4 end Route110_TrickHouseEntrance_EventScript_1611AB:: @ 81611AB - disappear 1 + removeobject 1 end Route110_TrickHouseEntrance_EventScript_1611AF:: @ 81611AF - reappear 1 - movesprite 1, 5, 2 - spriteface 1, 2 + addobject 1 + setobjectxy 1, 5, 2 + turnobject 1, 2 end Route110_TrickHouseEntrance_EventScript_1611BE:: @ 81611BE - reappear 1 - movesprite 1, 5, 2 - spriteface 1, 1 + addobject 1 + setobjectxy 1, 5, 2 + turnobject 1, 1 end Route110_TrickHouseEntrance_MapScript2_1611CD:: @ 81611CD @@ -212,18 +212,18 @@ Route110_TrickHouseEntrance_MapScript2_1611CD:: @ 81611CD Route110_TrickHouseEntrance_EventScript_1611D7:: @ 81611D7 lockall - pause 20 + delay 20 compare 0x4044, 0 - callif 1, Route110_TrickHouseEntrance_EventScript_161327 + call_if 1, Route110_TrickHouseEntrance_EventScript_161327 msgbox Route110_TrickHouseEntrance_Text_19BD82, 4 - closebutton - pause 20 - move 1, Route110_TrickHouseEntrance_Movement_161315 - waitmove 0 - playsfx 178 - move 1, Route110_TrickHouseEntrance_Movement_16131E - waitmove 0 - disappear 1 + closemessage + delay 20 + applymovement 1, Route110_TrickHouseEntrance_Movement_161315 + waitmovement 0 + playse 178 + applymovement 1, Route110_TrickHouseEntrance_Movement_16131E + waitmovement 0 + removeobject 1 setvar 0x40a7, 1 setvar 0x40a6, 0 releaseall @@ -243,28 +243,28 @@ Route110_TrickHouseEntrance_EventScript_16121A:: @ 816121A end Route110_TrickHouseEntrance_EventScript_16124D:: @ 816124D - playsfx 21 - move 255, Route110_TrickHouseEntrance_Movement_1A0833 - waitmove 0 - move 255, Route110_TrickHouseEntrance_Movement_1A0835 - waitmove 0 + playse 21 + applymovement 255, Route110_TrickHouseEntrance_Movement_1A0833 + waitmovement 0 + applymovement 255, Route110_TrickHouseEntrance_Movement_1A0835 + waitmovement 0 compare 0x4044, 0 - callif 1, Route110_TrickHouseEntrance_EventScript_1612CD + call_if 1, Route110_TrickHouseEntrance_EventScript_1612CD compare 0x4044, 1 - callif 1, Route110_TrickHouseEntrance_EventScript_1612D6 + call_if 1, Route110_TrickHouseEntrance_EventScript_1612D6 compare 0x4044, 2 - callif 1, Route110_TrickHouseEntrance_EventScript_1612DF + call_if 1, Route110_TrickHouseEntrance_EventScript_1612DF compare 0x4044, 3 - callif 1, Route110_TrickHouseEntrance_EventScript_1612E8 + call_if 1, Route110_TrickHouseEntrance_EventScript_1612E8 compare 0x4044, 4 - callif 1, Route110_TrickHouseEntrance_EventScript_1612F1 + call_if 1, Route110_TrickHouseEntrance_EventScript_1612F1 compare 0x4044, 5 - callif 1, Route110_TrickHouseEntrance_EventScript_1612FA + call_if 1, Route110_TrickHouseEntrance_EventScript_1612FA compare 0x4044, 6 - callif 1, Route110_TrickHouseEntrance_EventScript_161303 + call_if 1, Route110_TrickHouseEntrance_EventScript_161303 compare 0x4044, 7 - callif 1, Route110_TrickHouseEntrance_EventScript_16130C - closebutton + call_if 1, Route110_TrickHouseEntrance_EventScript_16130C + closemessage setvar 0x40a6, 1 warp Route110_TrickHouseEntrance, 255, 6, 2 waitstate @@ -333,46 +333,46 @@ Route110_TrickHouseEntrance_EventScript_161327:: @ 8161327 Route110_TrickHouseEntrance_EventScript_161330:: @ 8161330 msgbox Route110_TrickHouseEntrance_Text_19BF19, 4 - closebutton - move 1, Route110_TrickHouseEntrance_Movement_1A0839 - waitmove 0 - playsfx 21 - move 1, Route110_TrickHouseEntrance_Movement_1A0833 - waitmove 0 - move 1, Route110_TrickHouseEntrance_Movement_1A0835 - waitmove 0 + closemessage + applymovement 1, Route110_TrickHouseEntrance_Movement_1A0839 + waitmovement 0 + playse 21 + applymovement 1, Route110_TrickHouseEntrance_Movement_1A0833 + waitmovement 0 + applymovement 1, Route110_TrickHouseEntrance_Movement_1A0835 + waitmovement 0 msgbox Route110_TrickHouseEntrance_Text_19BFAB, 4 - move 1, Route110_TrickHouseEntrance_Movement_1A0841 - waitmove 0 + applymovement 1, Route110_TrickHouseEntrance_Movement_1A0841 + waitmovement 0 releaseall end Route110_TrickHouseEntrance_EventScript_16136E:: @ 816136E - move 1, Route110_TrickHouseEntrance_Movement_1A0839 - waitmove 0 + applymovement 1, Route110_TrickHouseEntrance_Movement_1A0839 + waitmovement 0 msgbox Route110_TrickHouseEntrance_Text_19C07E, 4 compare 0x4044, 1 - jumpeq Route110_TrickHouseEntrance_EventScript_1613CE + goto_if_eq Route110_TrickHouseEntrance_EventScript_1613CE compare 0x4044, 2 - jumpeq Route110_TrickHouseEntrance_EventScript_1613FA + goto_if_eq Route110_TrickHouseEntrance_EventScript_1613FA compare 0x4044, 3 - jumpeq Route110_TrickHouseEntrance_EventScript_161426 + goto_if_eq Route110_TrickHouseEntrance_EventScript_161426 compare 0x4044, 4 - jumpeq Route110_TrickHouseEntrance_EventScript_161452 + goto_if_eq Route110_TrickHouseEntrance_EventScript_161452 compare 0x4044, 5 - jumpeq Route110_TrickHouseEntrance_EventScript_16147E + goto_if_eq Route110_TrickHouseEntrance_EventScript_16147E compare 0x4044, 6 - jumpeq Route110_TrickHouseEntrance_EventScript_1614AA + goto_if_eq Route110_TrickHouseEntrance_EventScript_1614AA compare 0x4044, 7 - jumpeq Route110_TrickHouseEntrance_EventScript_1614D6 + goto_if_eq Route110_TrickHouseEntrance_EventScript_1614D6 end Route110_TrickHouseEntrance_EventScript_1613CE:: @ 81613CE giveitem ITEM_RARE_CANDY compare RESULT, 1 - jumpeq Route110_TrickHouseEntrance_EventScript_161502 + goto_if_eq Route110_TrickHouseEntrance_EventScript_161502 compare RESULT, 0 - callif 1, Route110_TrickHouseEntrance_EventScript_1A02A5 + call_if 1, Route110_TrickHouseEntrance_EventScript_1A02A5 msgbox Route110_TrickHouseEntrance_Text_19C0FC, 4 releaseall end @@ -380,9 +380,9 @@ Route110_TrickHouseEntrance_EventScript_1613CE:: @ 81613CE Route110_TrickHouseEntrance_EventScript_1613FA:: @ 81613FA giveitem ITEM_TIMER_BALL compare RESULT, 1 - jumpeq Route110_TrickHouseEntrance_EventScript_161502 + goto_if_eq Route110_TrickHouseEntrance_EventScript_161502 compare RESULT, 0 - callif 1, Route110_TrickHouseEntrance_EventScript_1A02A5 + call_if 1, Route110_TrickHouseEntrance_EventScript_1A02A5 msgbox Route110_TrickHouseEntrance_Text_19C0FC, 4 releaseall end @@ -390,9 +390,9 @@ Route110_TrickHouseEntrance_EventScript_1613FA:: @ 81613FA Route110_TrickHouseEntrance_EventScript_161426:: @ 8161426 giveitem ITEM_HARD_STONE compare RESULT, 1 - jumpeq Route110_TrickHouseEntrance_EventScript_161502 + goto_if_eq Route110_TrickHouseEntrance_EventScript_161502 compare RESULT, 0 - callif 1, Route110_TrickHouseEntrance_EventScript_1A02A5 + call_if 1, Route110_TrickHouseEntrance_EventScript_1A02A5 msgbox Route110_TrickHouseEntrance_Text_19C0FC, 4 releaseall end @@ -400,9 +400,9 @@ Route110_TrickHouseEntrance_EventScript_161426:: @ 8161426 Route110_TrickHouseEntrance_EventScript_161452:: @ 8161452 giveitem ITEM_SMOKE_BALL compare RESULT, 1 - jumpeq Route110_TrickHouseEntrance_EventScript_161502 + goto_if_eq Route110_TrickHouseEntrance_EventScript_161502 compare RESULT, 0 - callif 1, Route110_TrickHouseEntrance_EventScript_1A02A5 + call_if 1, Route110_TrickHouseEntrance_EventScript_1A02A5 msgbox Route110_TrickHouseEntrance_Text_19C0FC, 4 releaseall end @@ -410,9 +410,9 @@ Route110_TrickHouseEntrance_EventScript_161452:: @ 8161452 Route110_TrickHouseEntrance_EventScript_16147E:: @ 816147E giveitem ITEM_TM12 compare RESULT, 1 - jumpeq Route110_TrickHouseEntrance_EventScript_161502 + goto_if_eq Route110_TrickHouseEntrance_EventScript_161502 compare RESULT, 0 - callif 1, Route110_TrickHouseEntrance_EventScript_1A02A5 + call_if 1, Route110_TrickHouseEntrance_EventScript_1A02A5 msgbox Route110_TrickHouseEntrance_Text_19C0FC, 4 releaseall end @@ -420,9 +420,9 @@ Route110_TrickHouseEntrance_EventScript_16147E:: @ 816147E Route110_TrickHouseEntrance_EventScript_1614AA:: @ 81614AA giveitem ITEM_MAGNET compare RESULT, 1 - jumpeq Route110_TrickHouseEntrance_EventScript_161502 + goto_if_eq Route110_TrickHouseEntrance_EventScript_161502 compare RESULT, 0 - callif 1, Route110_TrickHouseEntrance_EventScript_1A02A5 + call_if 1, Route110_TrickHouseEntrance_EventScript_1A02A5 msgbox Route110_TrickHouseEntrance_Text_19C0FC, 4 releaseall end @@ -430,9 +430,9 @@ Route110_TrickHouseEntrance_EventScript_1614AA:: @ 81614AA Route110_TrickHouseEntrance_EventScript_1614D6:: @ 81614D6 giveitem ITEM_PP_MAX compare RESULT, 1 - jumpeq Route110_TrickHouseEntrance_EventScript_161502 + goto_if_eq Route110_TrickHouseEntrance_EventScript_161502 compare RESULT, 0 - callif 1, Route110_TrickHouseEntrance_EventScript_1A02A5 + call_if 1, Route110_TrickHouseEntrance_EventScript_1A02A5 msgbox Route110_TrickHouseEntrance_Text_19C0FC, 4 releaseall end @@ -440,14 +440,14 @@ Route110_TrickHouseEntrance_EventScript_1614D6:: @ 81614D6 Route110_TrickHouseEntrance_EventScript_161502:: @ 8161502 setvar 0x40c1, 0 setvar 0x40a7, 3 - move 1, Route110_TrickHouseEntrance_Movement_1A0841 - waitmove 0 + applymovement 1, Route110_TrickHouseEntrance_Movement_1A0841 + waitmovement 0 releaseall end Route110_TrickHouseEntrance_EventScript_161518:: @ 8161518 - move 1, Route110_TrickHouseEntrance_Movement_1A0839 - waitmove 0 + applymovement 1, Route110_TrickHouseEntrance_Movement_1A0839 + waitmovement 0 msgbox Route110_TrickHouseEntrance_Text_19C128, 4 .ifdef SAPPHIRE givedecoration 32 @@ -455,24 +455,24 @@ Route110_TrickHouseEntrance_EventScript_161518:: @ 8161518 givedecoration 31 .endif compare RESULT, 1 - jumpeq Route110_TrickHouseEntrance_EventScript_161551 + goto_if_eq Route110_TrickHouseEntrance_EventScript_161551 compare RESULT, 0 - callif 1, Route110_TrickHouseEntrance_EventScript_1A02B8 + call_if 1, Route110_TrickHouseEntrance_EventScript_1A02B8 msgbox Route110_TrickHouseEntrance_Text_19C18D, 4 releaseall end Route110_TrickHouseEntrance_EventScript_161551:: @ 8161551 msgbox Route110_TrickHouseEntrance_Text_19C17E, 4 - closebutton - move 1, Route110_TrickHouseEntrance_Movement_16309F - waitmove 0 - move 1, Route110_TrickHouseEntrance_Movement_161315 - waitmove 0 - playsfx 178 - move 1, Route110_TrickHouseEntrance_Movement_16131E - waitmove 0 - disappear 1 + closemessage + applymovement 1, Route110_TrickHouseEntrance_Movement_16309F + waitmovement 0 + applymovement 1, Route110_TrickHouseEntrance_Movement_161315 + waitmovement 0 + playse 178 + applymovement 1, Route110_TrickHouseEntrance_Movement_16131E + waitmovement 0 + removeobject 1 setvar 0x40c1, 0 setvar 0x40a7, 5 releaseall @@ -494,20 +494,20 @@ Route110_TrickHouseEntrance_EventScript_1615BD:: @ 81615BD Route110_TrickHouseEntrance_EventScript_1615C7:: @ 81615C7 msgbox Route110_TrickHouseEntrance_Text_19BE7D, 5 - closebutton + closemessage compare RESULT, 1 - jumpeq Route110_TrickHouseEntrance_EventScript_1615DD + goto_if_eq Route110_TrickHouseEntrance_EventScript_1615DD releaseall end Route110_TrickHouseEntrance_EventScript_1615DD:: @ 81615DD setmaptile 5, 1, 537, 0 - special 142 - pause 20 - move 255, Route110_TrickHouseEntrance_Movement_1A0856 - waitmove 0 - move 255, Route110_TrickHouseEntrance_Movement_16165E - waitmove 0 + special DrawWholeMapView + delay 20 + applymovement 255, Route110_TrickHouseEntrance_Movement_1A0856 + waitmovement 0 + applymovement 255, Route110_TrickHouseEntrance_Movement_16165E + waitmovement 0 switch 0x4044 case 0, Route110_TrickHouseEntrance_EventScript_161660 case 1, Route110_TrickHouseEntrance_EventScript_16166B @@ -578,7 +578,7 @@ Route110_TrickHouseEntrance_EventScript_1616B8:: @ 81616B8 Route110_TrickHouseEntrance_EventScript_1616C2:: @ 81616C2 compare 0x4044, 8 - jumpeq Route110_TrickHouseEntrance_EventScript_1616D7 + goto_if_eq Route110_TrickHouseEntrance_EventScript_1616D7 msgbox Route110_TrickHouseEntrance_Text_19BE6E, 4 releaseall end @@ -603,89 +603,89 @@ gUnknown_081616E1:: @ 81616E1 Route110_TrickHouseEntrance_EventScript_161740:: @ 8161740 compare 0x40AB, 0 - jumpeq Route110_TrickHouseEntrance_EventScript_161888 + goto_if_eq Route110_TrickHouseEntrance_EventScript_161888 msgbox UnknownString_819CAD1, 4 - playsfx SE_PIN + playse SE_PIN setvar 0x40AB, 2 setmaptile 13, 1, 523, 0 - special 142 + special DrawWholeMapView releaseall end Route110_TrickHouseEntrance_EventScript_161769:: @ 8161769 compare 0x40AC, 0 - jumpeq Route110_TrickHouseEntrance_EventScript_161888 + goto_if_eq Route110_TrickHouseEntrance_EventScript_161888 msgbox UnknownString_819CCCB, 4 - playsfx SE_PIN + playse SE_PIN setvar 0x40AC, 2 setmaptile 13, 1, 523, 0 - special 142 + special DrawWholeMapView releaseall end Route110_TrickHouseEntrance_EventScript_161792:: @ 8161792 compare 0x40AD, 0 - jumpeq Route110_TrickHouseEntrance_EventScript_161888 + goto_if_eq Route110_TrickHouseEntrance_EventScript_161888 msgbox UnknownString_819CEF9, 4 - playsfx SE_PIN + playse SE_PIN setvar 0x40AD, 2 setmaptile 13, 1, 523, 0 - special 142 + special DrawWholeMapView releaseall end Route110_TrickHouseEntrance_EventScript_1617BB:: @ 81617BB compare 0x40AE, 0 - jumpeq Route110_TrickHouseEntrance_EventScript_161888 + goto_if_eq Route110_TrickHouseEntrance_EventScript_161888 msgbox UnknownString_819D164, 4 - playsfx SE_PIN + playse SE_PIN setvar 0x40AE, 2 setmaptile 13, 1, 523, 0 - special 142 + special DrawWholeMapView releaseall end Route110_TrickHouseEntrance_EventScript_1617E4:: @ 81617E4 compare 0x40AF, 0 - jumpeq Route110_TrickHouseEntrance_EventScript_161888 + goto_if_eq Route110_TrickHouseEntrance_EventScript_161888 msgbox UnknownString_819D3A5, 4 - playsfx SE_PIN + playse SE_PIN setvar 0x40AF, 2 setmaptile 13, 1, 523, 0 - special 142 + special DrawWholeMapView releaseall end Route110_TrickHouseEntrance_EventScript_16180D:: @ 816180D compare 0x40B0, 0 - jumpeq Route110_TrickHouseEntrance_EventScript_161888 + goto_if_eq Route110_TrickHouseEntrance_EventScript_161888 msgbox UnknownString_819DC0A, 4 - playsfx SE_PIN + playse SE_PIN setvar 0x40B0, 2 setmaptile 13, 1, 523, 0 - special 142 + special DrawWholeMapView releaseall end Route110_TrickHouseEntrance_EventScript_161836:: @ 8161836 compare 0x40B1, 0 - jumpeq Route110_TrickHouseEntrance_EventScript_161888 + goto_if_eq Route110_TrickHouseEntrance_EventScript_161888 msgbox UnknownString_819DE8D, 4 - playsfx SE_PIN + playse SE_PIN setvar 0x40B1, 2 setmaptile 13, 1, 523, 0 - special 142 + special DrawWholeMapView releaseall end Route110_TrickHouseEntrance_EventScript_16185F:: @ 816185F compare 0x40B2, 0 - jumpeq Route110_TrickHouseEntrance_EventScript_161888 + goto_if_eq Route110_TrickHouseEntrance_EventScript_161888 msgbox UnknownString_819E0FF, 4 - playsfx SE_PIN + playse SE_PIN setvar 0x40B2, 2 setmaptile 13, 1, 523, 0 - special 142 + special DrawWholeMapView releaseall end @@ -714,10 +714,10 @@ Route110_TrickHousePuzzle5_EventScript_16189C:: @ 816189C Route110_TrickHousePuzzle6_EventScript_16189C:: @ 816189C Route110_TrickHousePuzzle7_EventScript_16189C:: @ 816189C Route110_TrickHousePuzzle8_EventScript_16189C:: @ 816189C - fanfare 370 + playfanfare 370 message Route110_TrickHousePuzzle1_Text_19C1B8 waitfanfare - waittext + waitmessage msgbox Route110_TrickHousePuzzle1_Text_19C1CB, 4 releaseall end @@ -727,11 +727,11 @@ Route110_TrickHouseEntrance_EventScript_1618B0:: @ 81618B0 msgbox Route110_TrickHouseEntrance_Text_19BA56, 4 releaseall compare 0x4044, 0 - callif 1, Route110_TrickHouseEntrance_EventScript_1618E1 + call_if 1, Route110_TrickHouseEntrance_EventScript_1618E1 compare 0x4044, 1 - callif 1, Route110_TrickHouseEntrance_EventScript_1618F6 + call_if 1, Route110_TrickHouseEntrance_EventScript_1618F6 compare 0x4044, 2 - callif 1, Route110_TrickHouseEntrance_EventScript_16190B + call_if 1, Route110_TrickHouseEntrance_EventScript_16190B setvar 0x40a5, 1 end @@ -757,10 +757,10 @@ Route110_TrickHouseEntrance_EventScript_16190B:: @ 816190B return Route110_TrickHouseEntrance_EventScript_161920:: @ 8161920 - setanimation 0, 32772 - setanimation 1, 32773 - setanimation 2, 32774 - doanimation 54 - checkanimation 54 - pause 10 + setfieldeffect 0, 32772 + setfieldeffect 1, 32773 + setfieldeffect 2, 32774 + dofieldeffect 54 + waitfieldeffect 54 + delay 10 return diff --git a/data/scripts/maps/Route110_TrickHousePuzzle1.inc b/data/scripts/maps/Route110_TrickHousePuzzle1.inc index 6b6d45af2..3a89c2db1 100644 --- a/data/scripts/maps/Route110_TrickHousePuzzle1.inc +++ b/data/scripts/maps/Route110_TrickHousePuzzle1.inc @@ -4,7 +4,7 @@ Route110_TrickHousePuzzle1_MapScripts:: @ 8161CF8 Route110_TrickHousePuzzle1_MapScript1_161CFE:: @ 8161CFE compare 0x40ab, 2 - jumpeq Route110_TrickHousePuzzle1_EventScript_161D0A + goto_if_eq Route110_TrickHousePuzzle1_EventScript_161D0A end Route110_TrickHousePuzzle1_EventScript_161D0A:: @ 8161D0A @@ -14,13 +14,13 @@ Route110_TrickHousePuzzle1_EventScript_161D0A:: @ 8161D0A Route110_TrickHousePuzzle1_EventScript_161D14:: @ 8161D14 lockall compare 0x40ab, 0 - jumpeq Route110_TrickHousePuzzle1_EventScript_161D26 - jump Route110_TrickHousePuzzle1_EventScript_161892 + goto_if_eq Route110_TrickHousePuzzle1_EventScript_161D26 + goto Route110_TrickHousePuzzle1_EventScript_161892 end Route110_TrickHousePuzzle1_EventScript_161D26:: @ 8161D26 setvar 0x40ab, 1 - jump Route110_TrickHousePuzzle1_EventScript_16189C + goto Route110_TrickHousePuzzle1_EventScript_16189C end Route110_TrickHousePuzzle1_EventScript_161D31:: @ 8161D31 diff --git a/data/scripts/maps/Route110_TrickHousePuzzle2.inc b/data/scripts/maps/Route110_TrickHousePuzzle2.inc index 183431bfc..f71a9611a 100644 --- a/data/scripts/maps/Route110_TrickHousePuzzle2.inc +++ b/data/scripts/maps/Route110_TrickHousePuzzle2.inc @@ -5,13 +5,13 @@ Route110_TrickHousePuzzle2_MapScripts:: @ 8161D76 Route110_TrickHousePuzzle2_MapScript1_161D81:: @ 8161D81 compare 0x4001, 1 - callif 1, Route110_TrickHousePuzzle2_EventScript_161E2C + call_if 1, Route110_TrickHousePuzzle2_EventScript_161E2C compare 0x4002, 1 - callif 1, Route110_TrickHousePuzzle2_EventScript_161E3F + call_if 1, Route110_TrickHousePuzzle2_EventScript_161E3F compare 0x4003, 1 - callif 1, Route110_TrickHousePuzzle2_EventScript_161E52 + call_if 1, Route110_TrickHousePuzzle2_EventScript_161E52 compare 0x4004, 1 - callif 1, Route110_TrickHousePuzzle2_EventScript_161E65 + call_if 1, Route110_TrickHousePuzzle2_EventScript_161E65 end Route110_TrickHousePuzzle2_MapScript1_161DAE:: @ 8161DAE @@ -24,48 +24,48 @@ Route110_TrickHousePuzzle2_MapScript1_161DAE:: @ 8161DAE Route110_TrickHousePuzzle2_EventScript_161DC3:: @ 8161DC3 lockall compare 0x40ac, 0 - jumpeq Route110_TrickHousePuzzle2_EventScript_161DD5 - jump Route110_TrickHousePuzzle2_EventScript_161892 + goto_if_eq Route110_TrickHousePuzzle2_EventScript_161DD5 + goto Route110_TrickHousePuzzle2_EventScript_161892 end Route110_TrickHousePuzzle2_EventScript_161DD5:: @ 8161DD5 setvar 0x40ac, 1 - jump Route110_TrickHousePuzzle2_EventScript_16189C + goto Route110_TrickHousePuzzle2_EventScript_16189C end Route110_TrickHousePuzzle2_EventScript_161DE0:: @ 8161DE0 lockall setvar 0x4001, 1 - playsfx 21 + playse 21 call Route110_TrickHousePuzzle2_EventScript_161E2C - special 142 + special DrawWholeMapView releaseall end Route110_TrickHousePuzzle2_EventScript_161DF3:: @ 8161DF3 lockall setvar 0x4002, 1 - playsfx 21 + playse 21 call Route110_TrickHousePuzzle2_EventScript_161E3F - special 142 + special DrawWholeMapView releaseall end Route110_TrickHousePuzzle2_EventScript_161E06:: @ 8161E06 lockall setvar 0x4003, 1 - playsfx 21 + playse 21 call Route110_TrickHousePuzzle2_EventScript_161E52 - special 142 + special DrawWholeMapView releaseall end Route110_TrickHousePuzzle2_EventScript_161E19:: @ 8161E19 lockall setvar 0x4004, 1 - playsfx 21 + playse 21 call Route110_TrickHousePuzzle2_EventScript_161E65 - special 142 + special DrawWholeMapView releaseall end diff --git a/data/scripts/maps/Route110_TrickHousePuzzle3.inc b/data/scripts/maps/Route110_TrickHousePuzzle3.inc index b533dbbe5..a50ecd3ce 100644 --- a/data/scripts/maps/Route110_TrickHousePuzzle3.inc +++ b/data/scripts/maps/Route110_TrickHousePuzzle3.inc @@ -6,9 +6,9 @@ Route110_TrickHousePuzzle3_MapScripts:: @ 8161EBD Route110_TrickHousePuzzle3_MapScript1_161EC8:: @ 8161EC8 call Route110_TrickHousePuzzle3_EventScript_161F12 compare 0x4009, 0 - callif 1, Route110_TrickHousePuzzle3_EventScript_161FE5 + call_if 1, Route110_TrickHousePuzzle3_EventScript_161FE5 compare 0x4009, 1 - callif 1, Route110_TrickHousePuzzle3_EventScript_1622C8 + call_if 1, Route110_TrickHousePuzzle3_EventScript_1622C8 end Route110_TrickHousePuzzle3_MapScript1_161EE4:: @ 8161EE4 @@ -32,19 +32,19 @@ Route110_TrickHousePuzzle3_EventScript_161F12:: @ 8161F12 setmaptile 1, 3, 600, 0 setmaptile 10, 2, 600, 0 compare 0x4008, 1 - callif 1, Route110_TrickHousePuzzle3_EventScript_161F9F + call_if 1, Route110_TrickHousePuzzle3_EventScript_161F9F compare 0x4008, 2 - callif 1, Route110_TrickHousePuzzle3_EventScript_161FA9 + call_if 1, Route110_TrickHousePuzzle3_EventScript_161FA9 compare 0x4008, 3 - callif 1, Route110_TrickHousePuzzle3_EventScript_161FB3 + call_if 1, Route110_TrickHousePuzzle3_EventScript_161FB3 compare 0x4008, 4 - callif 1, Route110_TrickHousePuzzle3_EventScript_161FBD + call_if 1, Route110_TrickHousePuzzle3_EventScript_161FBD compare 0x4008, 5 - callif 1, Route110_TrickHousePuzzle3_EventScript_161FC7 + call_if 1, Route110_TrickHousePuzzle3_EventScript_161FC7 compare 0x4008, 6 - callif 1, Route110_TrickHousePuzzle3_EventScript_161FD1 + call_if 1, Route110_TrickHousePuzzle3_EventScript_161FD1 compare 0x4008, 7 - callif 1, Route110_TrickHousePuzzle3_EventScript_161FDB + call_if 1, Route110_TrickHousePuzzle3_EventScript_161FDB return Route110_TrickHousePuzzle3_EventScript_161F9F:: @ 8161F9F @@ -248,50 +248,50 @@ Route110_TrickHousePuzzle3_EventScript_1622C8:: @ 81622C8 Route110_TrickHousePuzzle3_EventScript_1625AB:: @ 81625AB lockall setvar 0x4008, 1 - jump Route110_TrickHousePuzzle3_EventScript_1625FF + goto Route110_TrickHousePuzzle3_EventScript_1625FF end Route110_TrickHousePuzzle3_EventScript_1625B7:: @ 81625B7 lockall setvar 0x4008, 2 - jump Route110_TrickHousePuzzle3_EventScript_1625FF + goto Route110_TrickHousePuzzle3_EventScript_1625FF end Route110_TrickHousePuzzle3_EventScript_1625C3:: @ 81625C3 lockall setvar 0x4008, 3 - jump Route110_TrickHousePuzzle3_EventScript_1625FF + goto Route110_TrickHousePuzzle3_EventScript_1625FF end Route110_TrickHousePuzzle3_EventScript_1625CF:: @ 81625CF lockall setvar 0x4008, 4 - jump Route110_TrickHousePuzzle3_EventScript_1625FF + goto Route110_TrickHousePuzzle3_EventScript_1625FF end Route110_TrickHousePuzzle3_EventScript_1625DB:: @ 81625DB lockall setvar 0x4008, 5 - jump Route110_TrickHousePuzzle3_EventScript_1625FF + goto Route110_TrickHousePuzzle3_EventScript_1625FF end Route110_TrickHousePuzzle3_EventScript_1625E7:: @ 81625E7 lockall setvar 0x4008, 6 - jump Route110_TrickHousePuzzle3_EventScript_1625FF + goto Route110_TrickHousePuzzle3_EventScript_1625FF end Route110_TrickHousePuzzle3_EventScript_1625F3:: @ 81625F3 lockall setvar 0x4008, 7 - jump Route110_TrickHousePuzzle3_EventScript_1625FF + goto Route110_TrickHousePuzzle3_EventScript_1625FF end Route110_TrickHousePuzzle3_EventScript_1625FF:: @ 81625FF call Route110_TrickHousePuzzle3_EventScript_162612 - playsfx 21 + playse 21 call Route110_TrickHousePuzzle3_EventScript_161F12 - jump Route110_TrickHousePuzzle3_EventScript_1626AD + goto Route110_TrickHousePuzzle3_EventScript_1626AD end Route110_TrickHousePuzzle3_EventScript_162612:: @ 8162612 @@ -303,19 +303,19 @@ Route110_TrickHousePuzzle3_EventScript_162612:: @ 8162612 setvar 0x4006, 0 setvar 0x4007, 0 compare 0x4008, 1 - callif 1, Route110_TrickHousePuzzle3_EventScript_162683 + call_if 1, Route110_TrickHousePuzzle3_EventScript_162683 compare 0x4008, 2 - callif 1, Route110_TrickHousePuzzle3_EventScript_162689 + call_if 1, Route110_TrickHousePuzzle3_EventScript_162689 compare 0x4008, 3 - callif 1, Route110_TrickHousePuzzle3_EventScript_16268F + call_if 1, Route110_TrickHousePuzzle3_EventScript_16268F compare 0x4008, 4 - callif 1, Route110_TrickHousePuzzle3_EventScript_162695 + call_if 1, Route110_TrickHousePuzzle3_EventScript_162695 compare 0x4008, 5 - callif 1, Route110_TrickHousePuzzle3_EventScript_16269B + call_if 1, Route110_TrickHousePuzzle3_EventScript_16269B compare 0x4008, 6 - callif 1, Route110_TrickHousePuzzle3_EventScript_1626A1 + call_if 1, Route110_TrickHousePuzzle3_EventScript_1626A1 compare 0x4008, 7 - callif 1, Route110_TrickHousePuzzle3_EventScript_1626A7 + call_if 1, Route110_TrickHousePuzzle3_EventScript_1626A7 return Route110_TrickHousePuzzle3_EventScript_162683:: @ 8162683 @@ -348,14 +348,14 @@ Route110_TrickHousePuzzle3_EventScript_1626A7:: @ 81626A7 Route110_TrickHousePuzzle3_EventScript_1626AD:: @ 81626AD compare 0x4009, 1 - callif 1, Route110_TrickHousePuzzle3_EventScript_161FE5 + call_if 1, Route110_TrickHousePuzzle3_EventScript_161FE5 compare 0x4009, 0 - callif 1, Route110_TrickHousePuzzle3_EventScript_1622C8 - special 142 + call_if 1, Route110_TrickHousePuzzle3_EventScript_1622C8 + special DrawWholeMapView compare 0x4009, 1 - jumpeq Route110_TrickHousePuzzle3_EventScript_1626DD + goto_if_eq Route110_TrickHousePuzzle3_EventScript_1626DD compare 0x4009, 0 - jumpeq Route110_TrickHousePuzzle3_EventScript_1626E4 + goto_if_eq Route110_TrickHousePuzzle3_EventScript_1626E4 end Route110_TrickHousePuzzle3_EventScript_1626DD:: @ 81626DD @@ -371,13 +371,13 @@ Route110_TrickHousePuzzle3_EventScript_1626E4:: @ 81626E4 Route110_TrickHousePuzzle3_EventScript_1626EB:: @ 81626EB lockall compare 0x40ad, 0 - jumpeq Route110_TrickHousePuzzle3_EventScript_1626FD - jump Route110_TrickHousePuzzle3_EventScript_161892 + goto_if_eq Route110_TrickHousePuzzle3_EventScript_1626FD + goto Route110_TrickHousePuzzle3_EventScript_161892 end Route110_TrickHousePuzzle3_EventScript_1626FD:: @ 81626FD setvar 0x40ad, 1 - jump Route110_TrickHousePuzzle3_EventScript_16189C + goto Route110_TrickHousePuzzle3_EventScript_16189C end Route110_TrickHousePuzzle3_EventScript_162708:: @ 8162708 diff --git a/data/scripts/maps/Route110_TrickHousePuzzle4.inc b/data/scripts/maps/Route110_TrickHousePuzzle4.inc index 89d5e45c3..0c9fc426f 100644 --- a/data/scripts/maps/Route110_TrickHousePuzzle4.inc +++ b/data/scripts/maps/Route110_TrickHousePuzzle4.inc @@ -4,13 +4,13 @@ Route110_TrickHousePuzzle4_MapScripts:: @ 816274D Route110_TrickHousePuzzle4_EventScript_16274E:: @ 816274E lockall compare 0x40ae, 0 - jumpeq Route110_TrickHousePuzzle4_EventScript_162760 - jump Route110_TrickHousePuzzle4_EventScript_161892 + goto_if_eq Route110_TrickHousePuzzle4_EventScript_162760 + goto Route110_TrickHousePuzzle4_EventScript_161892 end Route110_TrickHousePuzzle4_EventScript_162760:: @ 8162760 setvar 0x40ae, 1 - jump Route110_TrickHousePuzzle4_EventScript_16189C + goto Route110_TrickHousePuzzle4_EventScript_16189C end Route110_TrickHousePuzzle4_EventScript_16276B:: @ 816276B diff --git a/data/scripts/maps/Route110_TrickHousePuzzle5.inc b/data/scripts/maps/Route110_TrickHousePuzzle5.inc index cd5d2fbb9..222a71138 100644 --- a/data/scripts/maps/Route110_TrickHousePuzzle5.inc +++ b/data/scripts/maps/Route110_TrickHousePuzzle5.inc @@ -14,163 +14,163 @@ Route110_TrickHousePuzzle5_MapScript1_1627B6:: @ 81627B6 Route110_TrickHousePuzzle5_EventScript_1627D5:: @ 81627D5 lockall compare 0x40af, 0 - jumpeq Route110_TrickHousePuzzle5_EventScript_1627E7 - jump Route110_TrickHousePuzzle5_EventScript_161892 + goto_if_eq Route110_TrickHousePuzzle5_EventScript_1627E7 + goto Route110_TrickHousePuzzle5_EventScript_161892 end Route110_TrickHousePuzzle5_EventScript_1627E7:: @ 81627E7 setvar 0x40af, 1 - jump Route110_TrickHousePuzzle5_EventScript_16189C + goto Route110_TrickHousePuzzle5_EventScript_16189C end Route110_TrickHousePuzzle5_EventScript_1627F2:: @ 81627F2 lockall - move 1, Route110_TrickHousePuzzle5_Movement_1A0839 - waitmove 0 + applymovement 1, Route110_TrickHousePuzzle5_Movement_1A0839 + waitmovement 0 compare 0x4001, 1 - jumpeq Route110_TrickHousePuzzle5_EventScript_162DE9 + goto_if_eq Route110_TrickHousePuzzle5_EventScript_162DE9 setvar 0x4009, 0 - jump Route110_TrickHousePuzzle5_EventScript_16293F + goto Route110_TrickHousePuzzle5_EventScript_16293F end Route110_TrickHousePuzzle5_EventScript_162813:: @ 8162813 lockall - move 2, Route110_TrickHousePuzzle5_Movement_1A0839 - waitmove 0 + applymovement 2, Route110_TrickHousePuzzle5_Movement_1A0839 + waitmovement 0 compare 0x4002, 1 - jumpeq Route110_TrickHousePuzzle5_EventScript_162DE9 + goto_if_eq Route110_TrickHousePuzzle5_EventScript_162DE9 setvar 0x4009, 0 - jump Route110_TrickHousePuzzle5_EventScript_1629B3 + goto Route110_TrickHousePuzzle5_EventScript_1629B3 end Route110_TrickHousePuzzle5_EventScript_162834:: @ 8162834 lockall - move 3, Route110_TrickHousePuzzle5_Movement_1A0839 - waitmove 0 + applymovement 3, Route110_TrickHousePuzzle5_Movement_1A0839 + waitmovement 0 compare 0x4003, 1 - jumpeq Route110_TrickHousePuzzle5_EventScript_162DE9 + goto_if_eq Route110_TrickHousePuzzle5_EventScript_162DE9 setvar 0x4009, 0 - jump Route110_TrickHousePuzzle5_EventScript_162A27 + goto Route110_TrickHousePuzzle5_EventScript_162A27 end Route110_TrickHousePuzzle5_EventScript_162855:: @ 8162855 lockall - move 4, Route110_TrickHousePuzzle5_Movement_1A0839 - waitmove 0 + applymovement 4, Route110_TrickHousePuzzle5_Movement_1A0839 + waitmovement 0 compare 0x4004, 1 - jumpeq Route110_TrickHousePuzzle5_EventScript_162DE9 + goto_if_eq Route110_TrickHousePuzzle5_EventScript_162DE9 setvar 0x4009, 0 - jump Route110_TrickHousePuzzle5_EventScript_162A9B + goto Route110_TrickHousePuzzle5_EventScript_162A9B end Route110_TrickHousePuzzle5_EventScript_162876:: @ 8162876 lockall - move 5, Route110_TrickHousePuzzle5_Movement_1A0839 - waitmove 0 + applymovement 5, Route110_TrickHousePuzzle5_Movement_1A0839 + waitmovement 0 compare 0x4005, 1 - jumpeq Route110_TrickHousePuzzle5_EventScript_162DE9 + goto_if_eq Route110_TrickHousePuzzle5_EventScript_162DE9 setvar 0x4009, 0 - jump Route110_TrickHousePuzzle5_EventScript_162B0F + goto Route110_TrickHousePuzzle5_EventScript_162B0F end Route110_TrickHousePuzzle5_EventScript_162897:: @ 8162897 lockall setvar 0x4009, 0 - jump Route110_TrickHousePuzzle5_EventScript_16293F + goto Route110_TrickHousePuzzle5_EventScript_16293F end Route110_TrickHousePuzzle5_EventScript_1628A3:: @ 81628A3 lockall setvar 0x4009, 1 - jump Route110_TrickHousePuzzle5_EventScript_16293F + goto Route110_TrickHousePuzzle5_EventScript_16293F end Route110_TrickHousePuzzle5_EventScript_1628AF:: @ 81628AF lockall setvar 0x4009, 2 - jump Route110_TrickHousePuzzle5_EventScript_16293F + goto Route110_TrickHousePuzzle5_EventScript_16293F end Route110_TrickHousePuzzle5_EventScript_1628BB:: @ 81628BB lockall setvar 0x4009, 3 - jump Route110_TrickHousePuzzle5_EventScript_16293F + goto Route110_TrickHousePuzzle5_EventScript_16293F end Route110_TrickHousePuzzle5_EventScript_1628C7:: @ 81628C7 lockall setvar 0x4009, 0 - jump Route110_TrickHousePuzzle5_EventScript_1629B3 + goto Route110_TrickHousePuzzle5_EventScript_1629B3 end Route110_TrickHousePuzzle5_EventScript_1628D3:: @ 81628D3 lockall setvar 0x4009, 1 - jump Route110_TrickHousePuzzle5_EventScript_1629B3 + goto Route110_TrickHousePuzzle5_EventScript_1629B3 end Route110_TrickHousePuzzle5_EventScript_1628DF:: @ 81628DF lockall setvar 0x4009, 0 - jump Route110_TrickHousePuzzle5_EventScript_162A27 + goto Route110_TrickHousePuzzle5_EventScript_162A27 end Route110_TrickHousePuzzle5_EventScript_1628EB:: @ 81628EB lockall setvar 0x4009, 1 - jump Route110_TrickHousePuzzle5_EventScript_162A27 + goto Route110_TrickHousePuzzle5_EventScript_162A27 end Route110_TrickHousePuzzle5_EventScript_1628F7:: @ 81628F7 lockall setvar 0x4009, 2 - jump Route110_TrickHousePuzzle5_EventScript_162A27 + goto Route110_TrickHousePuzzle5_EventScript_162A27 end Route110_TrickHousePuzzle5_EventScript_162903:: @ 8162903 lockall setvar 0x4009, 0 - jump Route110_TrickHousePuzzle5_EventScript_162A9B + goto Route110_TrickHousePuzzle5_EventScript_162A9B end Route110_TrickHousePuzzle5_EventScript_16290F:: @ 816290F lockall setvar 0x4009, 1 - jump Route110_TrickHousePuzzle5_EventScript_162A9B + goto Route110_TrickHousePuzzle5_EventScript_162A9B end Route110_TrickHousePuzzle5_EventScript_16291B:: @ 816291B lockall setvar 0x4009, 0 - jump Route110_TrickHousePuzzle5_EventScript_162B0F + goto Route110_TrickHousePuzzle5_EventScript_162B0F end Route110_TrickHousePuzzle5_EventScript_162927:: @ 8162927 lockall setvar 0x4009, 1 - jump Route110_TrickHousePuzzle5_EventScript_162B0F + goto Route110_TrickHousePuzzle5_EventScript_162B0F end Route110_TrickHousePuzzle5_EventScript_162933:: @ 8162933 lockall setvar 0x4009, 2 - jump Route110_TrickHousePuzzle5_EventScript_162B0F + goto Route110_TrickHousePuzzle5_EventScript_162B0F end Route110_TrickHousePuzzle5_EventScript_16293F:: @ 816293F setvar 0x4001, 1 setvar 0x4008, 1 - playsfx 21 - move 1, Route110_TrickHousePuzzle5_Movement_1A0833 - waitmove 0 - move 1, Route110_TrickHousePuzzle5_Movement_1A0835 - waitmove 0 + playse 21 + applymovement 1, Route110_TrickHousePuzzle5_Movement_1A0833 + waitmovement 0 + applymovement 1, Route110_TrickHousePuzzle5_Movement_1A0835 + waitmovement 0 compare 0x4009, 1 - callif 1, Route110_TrickHousePuzzle5_EventScript_162DF3 + call_if 1, Route110_TrickHousePuzzle5_EventScript_162DF3 compare 0x4009, 2 - callif 1, Route110_TrickHousePuzzle5_EventScript_162E2B + call_if 1, Route110_TrickHousePuzzle5_EventScript_162E2B compare 0x4009, 3 - callif 1, Route110_TrickHousePuzzle5_EventScript_162E63 + call_if 1, Route110_TrickHousePuzzle5_EventScript_162E63 msgbox Route110_TrickHousePuzzle5_Text_19D423, 4 random 3 switch RESULT @@ -182,17 +182,17 @@ Route110_TrickHousePuzzle5_EventScript_16293F:: @ 816293F Route110_TrickHousePuzzle5_EventScript_1629B3:: @ 81629B3 setvar 0x4002, 1 setvar 0x4008, 2 - playsfx 21 - move 2, Route110_TrickHousePuzzle5_Movement_1A0833 - waitmove 0 - move 2, Route110_TrickHousePuzzle5_Movement_1A0835 - waitmove 0 + playse 21 + applymovement 2, Route110_TrickHousePuzzle5_Movement_1A0833 + waitmovement 0 + applymovement 2, Route110_TrickHousePuzzle5_Movement_1A0835 + waitmovement 0 compare 0x4009, 1 - callif 1, Route110_TrickHousePuzzle5_EventScript_162E9B + call_if 1, Route110_TrickHousePuzzle5_EventScript_162E9B compare 0x4009, 2 - callif 1, Route110_TrickHousePuzzle5_EventScript_162ED3 + call_if 1, Route110_TrickHousePuzzle5_EventScript_162ED3 compare 0x4009, 3 - callif 1, Route110_TrickHousePuzzle5_EventScript_162F0B + call_if 1, Route110_TrickHousePuzzle5_EventScript_162F0B msgbox Route110_TrickHousePuzzle5_Text_19D636, 4 random 3 switch RESULT @@ -204,17 +204,17 @@ Route110_TrickHousePuzzle5_EventScript_1629B3:: @ 81629B3 Route110_TrickHousePuzzle5_EventScript_162A27:: @ 8162A27 setvar 0x4003, 1 setvar 0x4008, 3 - playsfx 21 - move 3, Route110_TrickHousePuzzle5_Movement_1A0833 - waitmove 0 - move 3, Route110_TrickHousePuzzle5_Movement_1A0835 - waitmove 0 + playse 21 + applymovement 3, Route110_TrickHousePuzzle5_Movement_1A0833 + waitmovement 0 + applymovement 3, Route110_TrickHousePuzzle5_Movement_1A0835 + waitmovement 0 compare 0x4009, 1 - callif 1, Route110_TrickHousePuzzle5_EventScript_162DF3 + call_if 1, Route110_TrickHousePuzzle5_EventScript_162DF3 compare 0x4009, 2 - callif 1, Route110_TrickHousePuzzle5_EventScript_162E2B + call_if 1, Route110_TrickHousePuzzle5_EventScript_162E2B compare 0x4009, 3 - callif 1, Route110_TrickHousePuzzle5_EventScript_162E63 + call_if 1, Route110_TrickHousePuzzle5_EventScript_162E63 msgbox Route110_TrickHousePuzzle5_Text_19D7D3, 4 random 3 switch RESULT @@ -226,17 +226,17 @@ Route110_TrickHousePuzzle5_EventScript_162A27:: @ 8162A27 Route110_TrickHousePuzzle5_EventScript_162A9B:: @ 8162A9B setvar 0x4004, 1 setvar 0x4008, 4 - playsfx 21 - move 4, Route110_TrickHousePuzzle5_Movement_1A0833 - waitmove 0 - move 4, Route110_TrickHousePuzzle5_Movement_1A0835 - waitmove 0 + playse 21 + applymovement 4, Route110_TrickHousePuzzle5_Movement_1A0833 + waitmovement 0 + applymovement 4, Route110_TrickHousePuzzle5_Movement_1A0835 + waitmovement 0 compare 0x4009, 1 - callif 1, Route110_TrickHousePuzzle5_EventScript_162DF3 + call_if 1, Route110_TrickHousePuzzle5_EventScript_162DF3 compare 0x4009, 2 - callif 1, Route110_TrickHousePuzzle5_EventScript_162E2B + call_if 1, Route110_TrickHousePuzzle5_EventScript_162E2B compare 0x4009, 3 - callif 1, Route110_TrickHousePuzzle5_EventScript_162E63 + call_if 1, Route110_TrickHousePuzzle5_EventScript_162E63 msgbox Route110_TrickHousePuzzle5_Text_19D93D, 4 random 3 switch RESULT @@ -248,17 +248,17 @@ Route110_TrickHousePuzzle5_EventScript_162A9B:: @ 8162A9B Route110_TrickHousePuzzle5_EventScript_162B0F:: @ 8162B0F setvar 0x4005, 1 setvar 0x4008, 5 - playsfx 21 - move 5, Route110_TrickHousePuzzle5_Movement_1A0833 - waitmove 0 - move 5, Route110_TrickHousePuzzle5_Movement_1A0835 - waitmove 0 + playse 21 + applymovement 5, Route110_TrickHousePuzzle5_Movement_1A0833 + waitmovement 0 + applymovement 5, Route110_TrickHousePuzzle5_Movement_1A0835 + waitmovement 0 compare 0x4009, 1 - callif 1, Route110_TrickHousePuzzle5_EventScript_162E9B + call_if 1, Route110_TrickHousePuzzle5_EventScript_162E9B compare 0x4009, 2 - callif 1, Route110_TrickHousePuzzle5_EventScript_162ED3 + call_if 1, Route110_TrickHousePuzzle5_EventScript_162ED3 compare 0x4009, 3 - callif 1, Route110_TrickHousePuzzle5_EventScript_162F0B + call_if 1, Route110_TrickHousePuzzle5_EventScript_162F0B msgbox Route110_TrickHousePuzzle5_Text_19DA9A, 4 random 3 switch RESULT @@ -272,7 +272,7 @@ Route110_TrickHousePuzzle5_EventScript_162B83:: @ 8162B83 multichoice 0, 0, 25, 1 switch RESULT case 1, Route110_TrickHousePuzzle5_EventScript_162DDF - jump Route110_TrickHousePuzzle5_EventScript_162D90 + goto Route110_TrickHousePuzzle5_EventScript_162D90 end Route110_TrickHousePuzzle5_EventScript_162BA6:: @ 8162BA6 @@ -280,7 +280,7 @@ Route110_TrickHousePuzzle5_EventScript_162BA6:: @ 8162BA6 multichoice 0, 0, 26, 1 switch RESULT case 0, Route110_TrickHousePuzzle5_EventScript_162DDF - jump Route110_TrickHousePuzzle5_EventScript_162D90 + goto Route110_TrickHousePuzzle5_EventScript_162D90 end Route110_TrickHousePuzzle5_EventScript_162BC9:: @ 8162BC9 @@ -288,7 +288,7 @@ Route110_TrickHousePuzzle5_EventScript_162BC9:: @ 8162BC9 multichoice 0, 0, 27, 1 switch RESULT case 1, Route110_TrickHousePuzzle5_EventScript_162DDF - jump Route110_TrickHousePuzzle5_EventScript_162D90 + goto Route110_TrickHousePuzzle5_EventScript_162D90 end Route110_TrickHousePuzzle5_EventScript_162BEC:: @ 8162BEC @@ -296,7 +296,7 @@ Route110_TrickHousePuzzle5_EventScript_162BEC:: @ 8162BEC multichoice 0, 0, 28, 1 switch RESULT case 2, Route110_TrickHousePuzzle5_EventScript_162DDF - jump Route110_TrickHousePuzzle5_EventScript_162D90 + goto Route110_TrickHousePuzzle5_EventScript_162D90 end Route110_TrickHousePuzzle5_EventScript_162C0F:: @ 8162C0F @@ -304,7 +304,7 @@ Route110_TrickHousePuzzle5_EventScript_162C0F:: @ 8162C0F multichoice 0, 0, 29, 1 switch RESULT case 0, Route110_TrickHousePuzzle5_EventScript_162DDF - jump Route110_TrickHousePuzzle5_EventScript_162D90 + goto Route110_TrickHousePuzzle5_EventScript_162D90 end Route110_TrickHousePuzzle5_EventScript_162C32:: @ 8162C32 @@ -312,7 +312,7 @@ Route110_TrickHousePuzzle5_EventScript_162C32:: @ 8162C32 multichoice 0, 0, 30, 1 switch RESULT case 0, Route110_TrickHousePuzzle5_EventScript_162DDF - jump Route110_TrickHousePuzzle5_EventScript_162D90 + goto Route110_TrickHousePuzzle5_EventScript_162D90 end Route110_TrickHousePuzzle5_EventScript_162C55:: @ 8162C55 @@ -320,7 +320,7 @@ Route110_TrickHousePuzzle5_EventScript_162C55:: @ 8162C55 multichoice 0, 0, 31, 1 switch RESULT case 1, Route110_TrickHousePuzzle5_EventScript_162DDF - jump Route110_TrickHousePuzzle5_EventScript_162D90 + goto Route110_TrickHousePuzzle5_EventScript_162D90 end Route110_TrickHousePuzzle5_EventScript_162C78:: @ 8162C78 @@ -328,7 +328,7 @@ Route110_TrickHousePuzzle5_EventScript_162C78:: @ 8162C78 multichoice 0, 0, 32, 1 switch RESULT case 2, Route110_TrickHousePuzzle5_EventScript_162DDF - jump Route110_TrickHousePuzzle5_EventScript_162D90 + goto Route110_TrickHousePuzzle5_EventScript_162D90 end Route110_TrickHousePuzzle5_EventScript_162C9B:: @ 8162C9B @@ -336,7 +336,7 @@ Route110_TrickHousePuzzle5_EventScript_162C9B:: @ 8162C9B multichoice 0, 0, 33, 1 switch RESULT case 1, Route110_TrickHousePuzzle5_EventScript_162DDF - jump Route110_TrickHousePuzzle5_EventScript_162D90 + goto Route110_TrickHousePuzzle5_EventScript_162D90 end Route110_TrickHousePuzzle5_EventScript_162CBE:: @ 8162CBE @@ -344,7 +344,7 @@ Route110_TrickHousePuzzle5_EventScript_162CBE:: @ 8162CBE multichoice 0, 0, 34, 1 switch RESULT case 1, Route110_TrickHousePuzzle5_EventScript_162DDF - jump Route110_TrickHousePuzzle5_EventScript_162D90 + goto Route110_TrickHousePuzzle5_EventScript_162D90 end Route110_TrickHousePuzzle5_EventScript_162CE1:: @ 8162CE1 @@ -352,7 +352,7 @@ Route110_TrickHousePuzzle5_EventScript_162CE1:: @ 8162CE1 multichoice 0, 0, 35, 1 switch RESULT case 0, Route110_TrickHousePuzzle5_EventScript_162DDF - jump Route110_TrickHousePuzzle5_EventScript_162D90 + goto Route110_TrickHousePuzzle5_EventScript_162D90 end Route110_TrickHousePuzzle5_EventScript_162D04:: @ 8162D04 @@ -360,7 +360,7 @@ Route110_TrickHousePuzzle5_EventScript_162D04:: @ 8162D04 multichoice 0, 0, 36, 1 switch RESULT case 1, Route110_TrickHousePuzzle5_EventScript_162DDF - jump Route110_TrickHousePuzzle5_EventScript_162D90 + goto Route110_TrickHousePuzzle5_EventScript_162D90 end Route110_TrickHousePuzzle5_EventScript_162D27:: @ 8162D27 @@ -368,7 +368,7 @@ Route110_TrickHousePuzzle5_EventScript_162D27:: @ 8162D27 multichoice 0, 0, 37, 1 switch RESULT case 1, Route110_TrickHousePuzzle5_EventScript_162DDF - jump Route110_TrickHousePuzzle5_EventScript_162D90 + goto Route110_TrickHousePuzzle5_EventScript_162D90 end Route110_TrickHousePuzzle5_EventScript_162D4A:: @ 8162D4A @@ -376,7 +376,7 @@ Route110_TrickHousePuzzle5_EventScript_162D4A:: @ 8162D4A multichoice 0, 0, 38, 1 switch RESULT case 0, Route110_TrickHousePuzzle5_EventScript_162DDF - jump Route110_TrickHousePuzzle5_EventScript_162D90 + goto Route110_TrickHousePuzzle5_EventScript_162D90 end Route110_TrickHousePuzzle5_EventScript_162D6D:: @ 8162D6D @@ -384,32 +384,32 @@ Route110_TrickHousePuzzle5_EventScript_162D6D:: @ 8162D6D multichoice 0, 0, 39, 1 switch RESULT case 2, Route110_TrickHousePuzzle5_EventScript_162DDF - jump Route110_TrickHousePuzzle5_EventScript_162D90 + goto Route110_TrickHousePuzzle5_EventScript_162D90 end Route110_TrickHousePuzzle5_EventScript_162D90:: @ 8162D90 - checksound - playsfx 32 + waitse + playse 32 msgbox Route110_TrickHousePuzzle5_Text_19D5CF, 4 - move 1, Route110_TrickHousePuzzle5_Movement_16309F - move 2, Route110_TrickHousePuzzle5_Movement_16309F - move 3, Route110_TrickHousePuzzle5_Movement_16309F - move 4, Route110_TrickHousePuzzle5_Movement_16309F - move 5, Route110_TrickHousePuzzle5_Movement_16309F + applymovement 1, Route110_TrickHousePuzzle5_Movement_16309F + applymovement 2, Route110_TrickHousePuzzle5_Movement_16309F + applymovement 3, Route110_TrickHousePuzzle5_Movement_16309F + applymovement 4, Route110_TrickHousePuzzle5_Movement_16309F + applymovement 5, Route110_TrickHousePuzzle5_Movement_16309F msgbox Route110_TrickHousePuzzle5_Text_19D5ED, 4 - waitmove 0 - closebutton + waitmovement 0 + closemessage msgbox Route110_TrickHousePuzzle5_Text_19D615, 4 - closebutton + closemessage warp Route110_TrickHousePuzzle5, 255, 0, 21 waitstate releaseall end Route110_TrickHousePuzzle5_EventScript_162DDF:: @ 8162DDF - checksound - playsfx 31 - jump Route110_TrickHousePuzzle5_EventScript_162DE9 + waitse + playse 31 + goto Route110_TrickHousePuzzle5_EventScript_162DE9 end Route110_TrickHousePuzzle5_EventScript_162DE9:: @ 8162DE9 @@ -419,230 +419,230 @@ Route110_TrickHousePuzzle5_EventScript_162DE9:: @ 8162DE9 Route110_TrickHousePuzzle5_EventScript_162DF3:: @ 8162DF3 compare 0x4008, 1 - callif 1, Route110_TrickHousePuzzle5_EventScript_162F43 + call_if 1, Route110_TrickHousePuzzle5_EventScript_162F43 compare 0x4008, 2 - callif 1, Route110_TrickHousePuzzle5_EventScript_162F4E + call_if 1, Route110_TrickHousePuzzle5_EventScript_162F4E compare 0x4008, 3 - callif 1, Route110_TrickHousePuzzle5_EventScript_162F59 + call_if 1, Route110_TrickHousePuzzle5_EventScript_162F59 compare 0x4008, 4 - callif 1, Route110_TrickHousePuzzle5_EventScript_162F64 + call_if 1, Route110_TrickHousePuzzle5_EventScript_162F64 compare 0x4008, 5 - callif 1, Route110_TrickHousePuzzle5_EventScript_162F6F + call_if 1, Route110_TrickHousePuzzle5_EventScript_162F6F return Route110_TrickHousePuzzle5_EventScript_162E2B:: @ 8162E2B compare 0x4008, 1 - callif 1, Route110_TrickHousePuzzle5_EventScript_162F7A + call_if 1, Route110_TrickHousePuzzle5_EventScript_162F7A compare 0x4008, 2 - callif 1, Route110_TrickHousePuzzle5_EventScript_162F85 + call_if 1, Route110_TrickHousePuzzle5_EventScript_162F85 compare 0x4008, 3 - callif 1, Route110_TrickHousePuzzle5_EventScript_162F90 + call_if 1, Route110_TrickHousePuzzle5_EventScript_162F90 compare 0x4008, 4 - callif 1, Route110_TrickHousePuzzle5_EventScript_162F9B + call_if 1, Route110_TrickHousePuzzle5_EventScript_162F9B compare 0x4008, 5 - callif 1, Route110_TrickHousePuzzle5_EventScript_162FA6 + call_if 1, Route110_TrickHousePuzzle5_EventScript_162FA6 return Route110_TrickHousePuzzle5_EventScript_162E63:: @ 8162E63 compare 0x4008, 1 - callif 1, Route110_TrickHousePuzzle5_EventScript_162FB1 + call_if 1, Route110_TrickHousePuzzle5_EventScript_162FB1 compare 0x4008, 2 - callif 1, Route110_TrickHousePuzzle5_EventScript_162FBC + call_if 1, Route110_TrickHousePuzzle5_EventScript_162FBC compare 0x4008, 3 - callif 1, Route110_TrickHousePuzzle5_EventScript_162FC7 + call_if 1, Route110_TrickHousePuzzle5_EventScript_162FC7 compare 0x4009, 4 - callif 1, Route110_TrickHousePuzzle5_EventScript_162FD2 + call_if 1, Route110_TrickHousePuzzle5_EventScript_162FD2 compare 0x4009, 5 - callif 1, Route110_TrickHousePuzzle5_EventScript_162FDD + call_if 1, Route110_TrickHousePuzzle5_EventScript_162FDD return Route110_TrickHousePuzzle5_EventScript_162E9B:: @ 8162E9B compare 0x4008, 1 - callif 1, Route110_TrickHousePuzzle5_EventScript_162FE8 + call_if 1, Route110_TrickHousePuzzle5_EventScript_162FE8 compare 0x4008, 2 - callif 1, Route110_TrickHousePuzzle5_EventScript_162FF3 + call_if 1, Route110_TrickHousePuzzle5_EventScript_162FF3 compare 0x4008, 3 - callif 1, Route110_TrickHousePuzzle5_EventScript_162FFE + call_if 1, Route110_TrickHousePuzzle5_EventScript_162FFE compare 0x4008, 4 - callif 1, Route110_TrickHousePuzzle5_EventScript_163009 + call_if 1, Route110_TrickHousePuzzle5_EventScript_163009 compare 0x4008, 5 - callif 1, Route110_TrickHousePuzzle5_EventScript_163014 + call_if 1, Route110_TrickHousePuzzle5_EventScript_163014 return Route110_TrickHousePuzzle5_EventScript_162ED3:: @ 8162ED3 compare 0x4008, 1 - callif 1, Route110_TrickHousePuzzle5_EventScript_16301F + call_if 1, Route110_TrickHousePuzzle5_EventScript_16301F compare 0x4008, 2 - callif 1, Route110_TrickHousePuzzle5_EventScript_16302A + call_if 1, Route110_TrickHousePuzzle5_EventScript_16302A compare 0x4008, 3 - callif 1, Route110_TrickHousePuzzle5_EventScript_163035 + call_if 1, Route110_TrickHousePuzzle5_EventScript_163035 compare 0x4008, 4 - callif 1, Route110_TrickHousePuzzle5_EventScript_163040 + call_if 1, Route110_TrickHousePuzzle5_EventScript_163040 compare 0x4008, 5 - callif 1, Route110_TrickHousePuzzle5_EventScript_16304B + call_if 1, Route110_TrickHousePuzzle5_EventScript_16304B return Route110_TrickHousePuzzle5_EventScript_162F0B:: @ 8162F0B compare 0x4008, 1 - callif 1, Route110_TrickHousePuzzle5_EventScript_163056 + call_if 1, Route110_TrickHousePuzzle5_EventScript_163056 compare 0x4008, 2 - callif 1, Route110_TrickHousePuzzle5_EventScript_163061 + call_if 1, Route110_TrickHousePuzzle5_EventScript_163061 compare 0x4008, 3 - callif 1, Route110_TrickHousePuzzle5_EventScript_16306C + call_if 1, Route110_TrickHousePuzzle5_EventScript_16306C compare 0x4008, 4 - callif 1, Route110_TrickHousePuzzle5_EventScript_163077 + call_if 1, Route110_TrickHousePuzzle5_EventScript_163077 compare 0x4008, 5 - callif 1, Route110_TrickHousePuzzle5_EventScript_163082 + call_if 1, Route110_TrickHousePuzzle5_EventScript_163082 return Route110_TrickHousePuzzle5_EventScript_162F43:: @ 8162F43 - move 1, Route110_TrickHousePuzzle5_Movement_16308D - waitmove 0 + applymovement 1, Route110_TrickHousePuzzle5_Movement_16308D + waitmovement 0 return Route110_TrickHousePuzzle5_EventScript_162F4E:: @ 8162F4E - move 2, Route110_TrickHousePuzzle5_Movement_16308D - waitmove 0 + applymovement 2, Route110_TrickHousePuzzle5_Movement_16308D + waitmovement 0 return Route110_TrickHousePuzzle5_EventScript_162F59:: @ 8162F59 - move 3, Route110_TrickHousePuzzle5_Movement_16308D - waitmove 0 + applymovement 3, Route110_TrickHousePuzzle5_Movement_16308D + waitmovement 0 return Route110_TrickHousePuzzle5_EventScript_162F64:: @ 8162F64 - move 4, Route110_TrickHousePuzzle5_Movement_16308D - waitmove 0 + applymovement 4, Route110_TrickHousePuzzle5_Movement_16308D + waitmovement 0 return Route110_TrickHousePuzzle5_EventScript_162F6F:: @ 8162F6F - move 5, Route110_TrickHousePuzzle5_Movement_16308D - waitmove 0 + applymovement 5, Route110_TrickHousePuzzle5_Movement_16308D + waitmovement 0 return Route110_TrickHousePuzzle5_EventScript_162F7A:: @ 8162F7A - move 1, Route110_TrickHousePuzzle5_Movement_16308F - waitmove 0 + applymovement 1, Route110_TrickHousePuzzle5_Movement_16308F + waitmovement 0 return Route110_TrickHousePuzzle5_EventScript_162F85:: @ 8162F85 - move 2, Route110_TrickHousePuzzle5_Movement_16308F - waitmove 0 + applymovement 2, Route110_TrickHousePuzzle5_Movement_16308F + waitmovement 0 return Route110_TrickHousePuzzle5_EventScript_162F90:: @ 8162F90 - move 3, Route110_TrickHousePuzzle5_Movement_16308F - waitmove 0 + applymovement 3, Route110_TrickHousePuzzle5_Movement_16308F + waitmovement 0 return Route110_TrickHousePuzzle5_EventScript_162F9B:: @ 8162F9B - move 4, Route110_TrickHousePuzzle5_Movement_16308F - waitmove 0 + applymovement 4, Route110_TrickHousePuzzle5_Movement_16308F + waitmovement 0 return Route110_TrickHousePuzzle5_EventScript_162FA6:: @ 8162FA6 - move 5, Route110_TrickHousePuzzle5_Movement_16308F - waitmove 0 + applymovement 5, Route110_TrickHousePuzzle5_Movement_16308F + waitmovement 0 return Route110_TrickHousePuzzle5_EventScript_162FB1:: @ 8162FB1 - move 1, Route110_TrickHousePuzzle5_Movement_163092 - waitmove 0 + applymovement 1, Route110_TrickHousePuzzle5_Movement_163092 + waitmovement 0 return Route110_TrickHousePuzzle5_EventScript_162FBC:: @ 8162FBC - move 2, Route110_TrickHousePuzzle5_Movement_163092 - waitmove 0 + applymovement 2, Route110_TrickHousePuzzle5_Movement_163092 + waitmovement 0 return Route110_TrickHousePuzzle5_EventScript_162FC7:: @ 8162FC7 - move 3, Route110_TrickHousePuzzle5_Movement_163092 - waitmove 0 + applymovement 3, Route110_TrickHousePuzzle5_Movement_163092 + waitmovement 0 return Route110_TrickHousePuzzle5_EventScript_162FD2:: @ 8162FD2 - move 4, Route110_TrickHousePuzzle5_Movement_163092 - waitmove 0 + applymovement 4, Route110_TrickHousePuzzle5_Movement_163092 + waitmovement 0 return Route110_TrickHousePuzzle5_EventScript_162FDD:: @ 8162FDD - move 5, Route110_TrickHousePuzzle5_Movement_163092 - waitmove 0 + applymovement 5, Route110_TrickHousePuzzle5_Movement_163092 + waitmovement 0 return Route110_TrickHousePuzzle5_EventScript_162FE8:: @ 8162FE8 - move 1, Route110_TrickHousePuzzle5_Movement_163096 - waitmove 0 + applymovement 1, Route110_TrickHousePuzzle5_Movement_163096 + waitmovement 0 return Route110_TrickHousePuzzle5_EventScript_162FF3:: @ 8162FF3 - move 2, Route110_TrickHousePuzzle5_Movement_163096 - waitmove 0 + applymovement 2, Route110_TrickHousePuzzle5_Movement_163096 + waitmovement 0 return Route110_TrickHousePuzzle5_EventScript_162FFE:: @ 8162FFE - move 3, Route110_TrickHousePuzzle5_Movement_163096 - waitmove 0 + applymovement 3, Route110_TrickHousePuzzle5_Movement_163096 + waitmovement 0 return Route110_TrickHousePuzzle5_EventScript_163009:: @ 8163009 - move 4, Route110_TrickHousePuzzle5_Movement_163096 - waitmove 0 + applymovement 4, Route110_TrickHousePuzzle5_Movement_163096 + waitmovement 0 return Route110_TrickHousePuzzle5_EventScript_163014:: @ 8163014 - move 5, Route110_TrickHousePuzzle5_Movement_163096 - waitmove 0 + applymovement 5, Route110_TrickHousePuzzle5_Movement_163096 + waitmovement 0 return Route110_TrickHousePuzzle5_EventScript_16301F:: @ 816301F - move 1, Route110_TrickHousePuzzle5_Movement_163098 - waitmove 0 + applymovement 1, Route110_TrickHousePuzzle5_Movement_163098 + waitmovement 0 return Route110_TrickHousePuzzle5_EventScript_16302A:: @ 816302A - move 2, Route110_TrickHousePuzzle5_Movement_163098 - waitmove 0 + applymovement 2, Route110_TrickHousePuzzle5_Movement_163098 + waitmovement 0 return Route110_TrickHousePuzzle5_EventScript_163035:: @ 8163035 - move 3, Route110_TrickHousePuzzle5_Movement_163098 - waitmove 0 + applymovement 3, Route110_TrickHousePuzzle5_Movement_163098 + waitmovement 0 return Route110_TrickHousePuzzle5_EventScript_163040:: @ 8163040 - move 4, Route110_TrickHousePuzzle5_Movement_163098 - waitmove 0 + applymovement 4, Route110_TrickHousePuzzle5_Movement_163098 + waitmovement 0 return Route110_TrickHousePuzzle5_EventScript_16304B:: @ 816304B - move 5, Route110_TrickHousePuzzle5_Movement_163098 - waitmove 0 + applymovement 5, Route110_TrickHousePuzzle5_Movement_163098 + waitmovement 0 return Route110_TrickHousePuzzle5_EventScript_163056:: @ 8163056 - move 1, Route110_TrickHousePuzzle5_Movement_16309B - waitmove 0 + applymovement 1, Route110_TrickHousePuzzle5_Movement_16309B + waitmovement 0 return Route110_TrickHousePuzzle5_EventScript_163061:: @ 8163061 - move 2, Route110_TrickHousePuzzle5_Movement_16309B - waitmove 0 + applymovement 2, Route110_TrickHousePuzzle5_Movement_16309B + waitmovement 0 return Route110_TrickHousePuzzle5_EventScript_16306C:: @ 816306C - move 3, Route110_TrickHousePuzzle5_Movement_16309B - waitmove 0 + applymovement 3, Route110_TrickHousePuzzle5_Movement_16309B + waitmovement 0 return Route110_TrickHousePuzzle5_EventScript_163077:: @ 8163077 - move 4, Route110_TrickHousePuzzle5_Movement_16309B - waitmove 0 + applymovement 4, Route110_TrickHousePuzzle5_Movement_16309B + waitmovement 0 return Route110_TrickHousePuzzle5_EventScript_163082:: @ 8163082 - move 5, Route110_TrickHousePuzzle5_Movement_16309B - waitmove 0 + applymovement 5, Route110_TrickHousePuzzle5_Movement_16309B + waitmovement 0 return Route110_TrickHousePuzzle5_Movement_16308D:: @ 816308D diff --git a/data/scripts/maps/Route110_TrickHousePuzzle6.inc b/data/scripts/maps/Route110_TrickHousePuzzle6.inc index 56d350871..ddf845142 100644 --- a/data/scripts/maps/Route110_TrickHousePuzzle6.inc +++ b/data/scripts/maps/Route110_TrickHousePuzzle6.inc @@ -4,7 +4,7 @@ Route110_TrickHousePuzzle6_MapScripts:: @ 81630CD .byte 0 Route110_TrickHousePuzzle6_MapScript1_1630D8:: @ 81630D8 - special 201 + special RotatingGate_InitPuzzle end Route110_TrickHousePuzzle6_MapScript2_1630DC:: @ 81630DC @@ -12,19 +12,19 @@ Route110_TrickHousePuzzle6_MapScript2_1630DC:: @ 81630DC .2byte 0 Route110_TrickHousePuzzle6_EventScript_1630E6:: @ 81630E6 - special 202 + special RotatingGate_InitPuzzleAndGraphics end Route110_TrickHousePuzzle6_EventScript_1630EA:: @ 81630EA lockall compare 0x40b0, 0 - jumpeq Route110_TrickHousePuzzle6_EventScript_1630FC - jump Route110_TrickHousePuzzle6_EventScript_161892 + goto_if_eq Route110_TrickHousePuzzle6_EventScript_1630FC + goto Route110_TrickHousePuzzle6_EventScript_161892 end Route110_TrickHousePuzzle6_EventScript_1630FC:: @ 81630FC setvar 0x40b0, 1 - jump Route110_TrickHousePuzzle6_EventScript_16189C + goto Route110_TrickHousePuzzle6_EventScript_16189C end Route110_TrickHousePuzzle6_EventScript_163107:: @ 8163107 diff --git a/data/scripts/maps/Route110_TrickHousePuzzle7.inc b/data/scripts/maps/Route110_TrickHousePuzzle7.inc index 1276562d0..3361e3e9d 100644 --- a/data/scripts/maps/Route110_TrickHousePuzzle7.inc +++ b/data/scripts/maps/Route110_TrickHousePuzzle7.inc @@ -11,15 +11,15 @@ Route110_TrickHousePuzzle7_MapScript1_163161:: @ 8163161 Route110_TrickHousePuzzle7_EventScript_163167:: @ 8163167 checkflag 194 - callif 1, Route110_TrickHousePuzzle7_EventScript_163195 + call_if 1, Route110_TrickHousePuzzle7_EventScript_163195 checkflag 195 - callif 1, Route110_TrickHousePuzzle7_EventScript_1631A8 + call_if 1, Route110_TrickHousePuzzle7_EventScript_1631A8 checkflag 196 - callif 1, Route110_TrickHousePuzzle7_EventScript_1631BB + call_if 1, Route110_TrickHousePuzzle7_EventScript_1631BB checkflag 197 - callif 1, Route110_TrickHousePuzzle7_EventScript_1631CE + call_if 1, Route110_TrickHousePuzzle7_EventScript_1631CE checkflag 198 - callif 1, Route110_TrickHousePuzzle7_EventScript_1631E1 + call_if 1, Route110_TrickHousePuzzle7_EventScript_1631E1 return Route110_TrickHousePuzzle7_EventScript_163195:: @ 8163195 @@ -74,7 +74,7 @@ Route110_TrickHousePuzzle7_EventScript_163240:: @ 8163240 Route110_TrickHousePuzzle7_MapScript1_163253:: @ 8163253 compare 0x40b6, 1 - jumpeq Route110_TrickHousePuzzle7_EventScript_16326E + goto_if_eq Route110_TrickHousePuzzle7_EventScript_16326E clearflag 194 clearflag 195 clearflag 196 @@ -87,7 +87,7 @@ Route110_TrickHousePuzzle7_EventScript_16326E:: @ 816326E Route110_TrickHousePuzzle7_MapScript1_16326F:: @ 816326F compare 0x40b6, 1 - callif 1, Route110_TrickHousePuzzle7_EventScript_163167 + call_if 1, Route110_TrickHousePuzzle7_EventScript_163167 end Route110_TrickHousePuzzle7_MapScript2_16327B:: @ 816327B @@ -101,13 +101,13 @@ Route110_TrickHousePuzzle7_EventScript_163285:: @ 8163285 Route110_TrickHousePuzzle7_EventScript_16328B:: @ 816328B lockall compare 0x40b1, 0 - jumpeq Route110_TrickHousePuzzle7_EventScript_16329D - jump Route110_TrickHousePuzzle7_EventScript_161892 + goto_if_eq Route110_TrickHousePuzzle7_EventScript_16329D + goto Route110_TrickHousePuzzle7_EventScript_161892 end Route110_TrickHousePuzzle7_EventScript_16329D:: @ 816329D setvar 0x40b1, 1 - jump Route110_TrickHousePuzzle7_EventScript_16189C + goto Route110_TrickHousePuzzle7_EventScript_16189C end Route110_TrickHousePuzzle7_EventScript_1632A8:: @ 81632A8 @@ -120,77 +120,77 @@ Route110_TrickHousePuzzle7_EventScript_1632A8:: @ 81632A8 Route110_TrickHousePuzzle7_EventScript_1632B9:: @ 81632B9 lockall - pause 32 + delay 32 checkflag 194 - callif 0, Route110_TrickHousePuzzle7_EventScript_163195 + call_if 0, Route110_TrickHousePuzzle7_EventScript_163195 checkflag 194 - callif 1, Route110_TrickHousePuzzle7_EventScript_1631F4 - special 142 - playsfx 36 + call_if 1, Route110_TrickHousePuzzle7_EventScript_1631F4 + special DrawWholeMapView + playse 36 checkflag 194 - jumpif 0, Route110_TrickHousePuzzle7_EventScript_1633A4 + goto_if 0, Route110_TrickHousePuzzle7_EventScript_1633A4 checkflag 194 - jumpeq Route110_TrickHousePuzzle7_EventScript_1633A9 + goto_if_eq Route110_TrickHousePuzzle7_EventScript_1633A9 end Route110_TrickHousePuzzle7_EventScript_1632E8:: @ 81632E8 lockall - pause 32 + delay 32 checkflag 195 - callif 0, Route110_TrickHousePuzzle7_EventScript_1631A8 + call_if 0, Route110_TrickHousePuzzle7_EventScript_1631A8 checkflag 195 - callif 1, Route110_TrickHousePuzzle7_EventScript_163207 - special 142 - playsfx 36 + call_if 1, Route110_TrickHousePuzzle7_EventScript_163207 + special DrawWholeMapView + playse 36 checkflag 195 - jumpif 0, Route110_TrickHousePuzzle7_EventScript_1633AE + goto_if 0, Route110_TrickHousePuzzle7_EventScript_1633AE checkflag 195 - jumpeq Route110_TrickHousePuzzle7_EventScript_1633B3 + goto_if_eq Route110_TrickHousePuzzle7_EventScript_1633B3 end Route110_TrickHousePuzzle7_EventScript_163317:: @ 8163317 lockall - pause 32 + delay 32 checkflag 196 - callif 0, Route110_TrickHousePuzzle7_EventScript_1631BB + call_if 0, Route110_TrickHousePuzzle7_EventScript_1631BB checkflag 196 - callif 1, Route110_TrickHousePuzzle7_EventScript_16321A - special 142 - playsfx 36 + call_if 1, Route110_TrickHousePuzzle7_EventScript_16321A + special DrawWholeMapView + playse 36 checkflag 196 - jumpif 0, Route110_TrickHousePuzzle7_EventScript_1633B8 + goto_if 0, Route110_TrickHousePuzzle7_EventScript_1633B8 checkflag 196 - jumpeq Route110_TrickHousePuzzle7_EventScript_1633BD + goto_if_eq Route110_TrickHousePuzzle7_EventScript_1633BD end Route110_TrickHousePuzzle7_EventScript_163346:: @ 8163346 lockall - pause 32 + delay 32 checkflag 197 - callif 0, Route110_TrickHousePuzzle7_EventScript_1631CE + call_if 0, Route110_TrickHousePuzzle7_EventScript_1631CE checkflag 197 - callif 1, Route110_TrickHousePuzzle7_EventScript_16322D - special 142 - playsfx 36 + call_if 1, Route110_TrickHousePuzzle7_EventScript_16322D + special DrawWholeMapView + playse 36 checkflag 197 - jumpif 0, Route110_TrickHousePuzzle7_EventScript_1633C2 + goto_if 0, Route110_TrickHousePuzzle7_EventScript_1633C2 checkflag 197 - jumpeq Route110_TrickHousePuzzle7_EventScript_1633C7 + goto_if_eq Route110_TrickHousePuzzle7_EventScript_1633C7 end Route110_TrickHousePuzzle7_EventScript_163375:: @ 8163375 lockall - pause 32 + delay 32 checkflag 198 - callif 0, Route110_TrickHousePuzzle7_EventScript_1631E1 + call_if 0, Route110_TrickHousePuzzle7_EventScript_1631E1 checkflag 198 - callif 1, Route110_TrickHousePuzzle7_EventScript_163240 - special 142 - playsfx 36 + call_if 1, Route110_TrickHousePuzzle7_EventScript_163240 + special DrawWholeMapView + playse 36 checkflag 198 - jumpif 0, Route110_TrickHousePuzzle7_EventScript_1633CC + goto_if 0, Route110_TrickHousePuzzle7_EventScript_1633CC checkflag 198 - jumpeq Route110_TrickHousePuzzle7_EventScript_1633D1 + goto_if_eq Route110_TrickHousePuzzle7_EventScript_1633D1 end Route110_TrickHousePuzzle7_EventScript_1633A4:: @ 81633A4 diff --git a/data/scripts/maps/Route110_TrickHousePuzzle8.inc b/data/scripts/maps/Route110_TrickHousePuzzle8.inc index a31c868be..5f0b00684 100644 --- a/data/scripts/maps/Route110_TrickHousePuzzle8.inc +++ b/data/scripts/maps/Route110_TrickHousePuzzle8.inc @@ -4,13 +4,13 @@ Route110_TrickHousePuzzle8_MapScripts:: @ 816341B Route110_TrickHousePuzzle8_EventScript_16341C:: @ 816341C lockall compare 0x40b2, 0 - jumpeq Route110_TrickHousePuzzle8_EventScript_16342E - jump Route110_TrickHousePuzzle8_EventScript_161892 + goto_if_eq Route110_TrickHousePuzzle8_EventScript_16342E + goto Route110_TrickHousePuzzle8_EventScript_161892 end Route110_TrickHousePuzzle8_EventScript_16342E:: @ 816342E setvar 0x40b2, 1 - jump Route110_TrickHousePuzzle8_EventScript_16189C + goto Route110_TrickHousePuzzle8_EventScript_16189C end Route110_TrickHousePuzzle8_EventScript_163439:: @ 8163439 diff --git a/data/scripts/maps/Route111.inc b/data/scripts/maps/Route111.inc index 10b34cf5f..545e62921 100644 --- a/data/scripts/maps/Route111.inc +++ b/data/scripts/maps/Route111.inc @@ -5,7 +5,7 @@ Route111_MapScripts:: @ 814FF91 Route111_MapScript1_14FF9C:: @ 814FF9C checkflag 228 - callif 0, Route111_EventScript_14FFA6 + call_if 0, Route111_EventScript_14FFA6 end Route111_EventScript_14FFA6:: @ 814FFA6 @@ -17,21 +17,21 @@ Route111_MapScript1_14FFB9:: @ 814FFB9 call Route111_EventScript_14FFCD call Route111_EventScript_1AE313 checktrainerflag OPPONENT_VICKY - jumpif 0, Route111_EventScript_15000D + goto_if 0, Route111_EventScript_15000D end Route111_EventScript_14FFCD:: @ 814FFCD getplayerxy 0x4000, 0x4001 compare 0x4001, 34 - jumpif 0, Route111_EventScript_15000C + goto_if 0, Route111_EventScript_15000C compare 0x4001, 107 - jumpif 2, Route111_EventScript_15000C + goto_if 2, Route111_EventScript_15000C compare 0x4001, 72 - jumpif 2, Route111_EventScript_150009 + goto_if 2, Route111_EventScript_150009 compare 0x4000, 2000 - jumpif 2, Route111_EventScript_15000C + goto_if 2, Route111_EventScript_15000C compare 0x4000, 8 - jumpif 0, Route111_EventScript_15000C + goto_if 0, Route111_EventScript_15000C Route111_EventScript_150009:: @ 8150009 setweather 8 @@ -44,25 +44,25 @@ Route111_EventScript_15000D:: @ 815000D setflag 769 setflag 770 setflag 771 - settrainerflag OPPONENT_VICTOR - settrainerflag OPPONENT_VICTORIA - settrainerflag OPPONENT_VIVI + cleartrainerflag OPPONENT_VICTOR + cleartrainerflag OPPONENT_VICTORIA + cleartrainerflag OPPONENT_VIVI end Route111_EventScript_150023:: @ 8150023 lockall msgbox Route111_Text_16FA54, 5 compare RESULT, 0 - jumpeq Route111_EventScript_15005F + goto_if_eq Route111_EventScript_15005F giveitem ITEM_ROOT_FOSSIL - closebutton + closemessage setflag 963 setflag 964 - disappear 34 - pause 30 - move 35, Route111_Movement_1500AF - waitmove 0 - disappear 35 + removeobject 34 + delay 30 + applymovement 35, Route111_Movement_1500AF + waitmovement 0 + removeobject 35 releaseall end @@ -75,16 +75,16 @@ Route111_EventScript_150069:: @ 8150069 lockall msgbox Route111_Text_16FAED, 5 compare RESULT, 0 - jumpeq Route111_EventScript_1500A5 + goto_if_eq Route111_EventScript_1500A5 giveitem ITEM_CLAW_FOSSIL - closebutton + closemessage setflag 964 setflag 963 - disappear 35 - pause 30 - move 34, Route111_Movement_1500AF - waitmove 0 - disappear 34 + removeobject 35 + delay 30 + applymovement 34, Route111_Movement_1500AF + waitmovement 0 + removeobject 34 releaseall end @@ -120,15 +120,15 @@ Route111_Movement_1500AF:: @ 81500AF Route111_EventScript_1500C5:: @ 81500C5 lock faceplayer - checkdailyflags + dodailyevents checkflag 2252 - jumpeq Route111_EventScript_150100 + goto_if_eq Route111_EventScript_150100 msgbox Route111_Text_1C56F0, 4 giveitem ITEM_RAZZ_BERRY compare RESULT, 0 - jumpeq Route111_EventScript_1A029B + goto_if_eq Route111_EventScript_1A029B setflag 2252 - special 148 + special GetPlayerBigGuyGirlString msgbox Route111_Text_1C5781, 4 release end @@ -141,67 +141,67 @@ Route111_EventScript_150100:: @ 8150100 @ 815010A lockall setvar 0x8004, 0 - jump Route111_EventScript_15013A + goto Route111_EventScript_15013A end Route111_EventScript_150116:: @ 8150116 lockall setvar 0x8004, 1 - jump Route111_EventScript_15013A + goto Route111_EventScript_15013A end Route111_EventScript_150122:: @ 8150122 lockall setvar 0x8004, 2 - jump Route111_EventScript_15013A + goto Route111_EventScript_15013A end @ 815012E lockall setvar 0x8004, 3 - jump Route111_EventScript_15013A + goto Route111_EventScript_15013A end Route111_EventScript_15013A:: @ 815013A checkitem ITEM_GO_GOGGLES, 1 compare RESULT, 0 - jumpeq Route111_EventScript_150151 + goto_if_eq Route111_EventScript_150151 setvar 0x4003, 1 releaseall end Route111_EventScript_150151:: @ 8150151 msgbox Route111_Text_1A0F93, 4 - closebutton + closemessage compare 0x8004, 0 - callif 1, Route111_EventScript_150188 + call_if 1, Route111_EventScript_150188 compare 0x8004, 1 - callif 1, Route111_EventScript_150193 + call_if 1, Route111_EventScript_150193 compare 0x8004, 2 - callif 1, Route111_EventScript_15019E + call_if 1, Route111_EventScript_15019E compare 0x8004, 3 - callif 1, Route111_EventScript_1501A9 + call_if 1, Route111_EventScript_1501A9 releaseall end Route111_EventScript_150188:: @ 8150188 - move 255, Route111_Movement_1501B4 - waitmove 0 + applymovement 255, Route111_Movement_1501B4 + waitmovement 0 return Route111_EventScript_150193:: @ 8150193 - move 255, Route111_Movement_1501B6 - waitmove 0 + applymovement 255, Route111_Movement_1501B6 + waitmovement 0 return Route111_EventScript_15019E:: @ 815019E - move 255, Route111_Movement_1501B8 - waitmove 0 + applymovement 255, Route111_Movement_1501B8 + waitmovement 0 return Route111_EventScript_1501A9:: @ 81501A9 - move 255, Route111_Movement_1501BA - waitmove 0 + applymovement 255, Route111_Movement_1501BA + waitmovement 0 return Route111_Movement_1501B4:: @ 81501B4 @@ -222,14 +222,14 @@ Route111_Movement_1501BA:: @ 81501BA Route111_EventScript_1501BC:: @ 81501BC setweather 2 - fademusic 360 + fadenewbgm 360 doweather setvar 0x4003, 0 end Route111_EventScript_1501C9:: @ 81501C9 setweather 8 - fademusic 409 + fadenewbgm 409 doweather end @@ -239,7 +239,7 @@ Route111_EventScript_1501D1:: @ 81501D1 setflag 2115 msgbox Route111_Text_16F705, 5 compare RESULT, 1 - jumpeq Route111_EventScript_1501F3 + goto_if_eq Route111_EventScript_1501F3 msgbox Route111_Text_16F785, 4 release end @@ -247,80 +247,80 @@ Route111_EventScript_1501D1:: @ 81501D1 Route111_EventScript_1501F3:: @ 81501F3 msgbox Route111_Text_16F7B3, 4 trainerbattle 3, OPPONENT_VICTOR, 0, Route111_Text_16F7D2 - move 1, Route111_Movement_1A0841 - waitmove 0 + applymovement 1, Route111_Movement_1A0841 + waitmovement 0 call Route111_EventScript_150348 msgbox Route111_Text_16F7FF, 4 - closebutton - move 1, Route111_Movement_150356 - waitmove 0 - disappear 1 + closemessage + applymovement 1, Route111_Movement_150356 + waitmovement 0 + removeobject 1 call Route111_EventScript_15034F - move 255, Route111_Movement_15035B - waitmove 0 + applymovement 255, Route111_Movement_15035B + waitmovement 0 call Route111_EventScript_150348 - reappear 2 - move 2, Route111_Movement_150359 - waitmove 0 + addobject 2 + applymovement 2, Route111_Movement_150359 + waitmovement 0 call Route111_EventScript_15034F msgbox Route111_Text_16F82D, 4 trainerbattle 3, OPPONENT_VICTORIA, 0, Route111_Text_16F8A6 - move 2, Route111_Movement_1A0841 - waitmove 0 + applymovement 2, Route111_Movement_1A0841 + waitmovement 0 call Route111_EventScript_150348 msgbox Route111_Text_16F8D5, 4 - closebutton - move 2, Route111_Movement_150356 - waitmove 0 - disappear 2 + closemessage + applymovement 2, Route111_Movement_150356 + waitmovement 0 + removeobject 2 call Route111_EventScript_15034F - move 255, Route111_Movement_15035B - waitmove 0 + applymovement 255, Route111_Movement_15035B + waitmovement 0 call Route111_EventScript_150348 - reappear 3 - move 3, Route111_Movement_150359 - waitmove 0 + addobject 3 + applymovement 3, Route111_Movement_150359 + waitmovement 0 call Route111_EventScript_15034F msgbox Route111_Text_16F90E, 4 trainerbattle 3, OPPONENT_VIVI, 0, Route111_Text_16F956 - move 3, Route111_Movement_1A0841 - waitmove 0 + applymovement 3, Route111_Movement_1A0841 + waitmovement 0 call Route111_EventScript_150348 msgbox Route111_Text_16F96C, 4 - closebutton - move 3, Route111_Movement_150356 - waitmove 0 - disappear 3 + closemessage + applymovement 3, Route111_Movement_150356 + waitmovement 0 + removeobject 3 call Route111_EventScript_15034F - move 255, Route111_Movement_15035B - waitmove 0 + applymovement 255, Route111_Movement_15035B + waitmovement 0 call Route111_EventScript_150348 - reappear 4 - move 4, Route111_Movement_150359 - waitmove 0 + addobject 4 + applymovement 4, Route111_Movement_150359 + waitmovement 0 call Route111_EventScript_15034F msgbox Route111_Text_16F991, 4 trainerbattle 3, OPPONENT_VICKY, 0, Route111_Text_16F9EC msgbox Route111_Text_16FA22, 4 - closebutton - move 4, Route111_Movement_1A0841 - waitmove 0 + closemessage + applymovement 4, Route111_Movement_1A0841 + waitmovement 0 call Route111_EventScript_150348 - move 4, Route111_Movement_150356 - waitmove 0 - disappear 4 + applymovement 4, Route111_Movement_150356 + waitmovement 0 + removeobject 4 call Route111_EventScript_15034F release end Route111_EventScript_150348:: @ 8150348 - setdooropened 13, 113 - doorchange + opendoor 13, 113 + waitdooranim return Route111_EventScript_15034F:: @ 815034F - setdoorclosed 13, 113 - doorchange + closedoor 13, 113 + waitdooranim return Route111_Movement_150356:: @ 8150356 @@ -392,9 +392,9 @@ Route111_EventScript_1503EC:: @ 81503EC Route111_EventScript_150403:: @ 8150403 trainerbattle 0, OPPONENT_DUSTY_1, 0, Route111_Text_1BAEC9, Route111_Text_1BAF14 - specialval RESULT, 57 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq Route111_EventScript_15042A + goto_if_eq Route111_EventScript_15042A msgbox Route111_Text_1BAF5B, 6 end @@ -420,9 +420,9 @@ Route111_EventScript_15046F:: @ 815046F Route111_EventScript_150486:: @ 8150486 trainerbattle 0, OPPONENT_WILTON_1, 0, Route111_Text_1BB2E3, Route111_Text_1BB313 - specialval RESULT, 57 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq Route111_EventScript_1504AD + goto_if_eq Route111_EventScript_1504AD msgbox Route111_Text_1BB33E, 6 end @@ -433,9 +433,9 @@ Route111_EventScript_1504AD:: @ 81504AD Route111_EventScript_1504C4:: @ 81504C4 trainerbattle 0, OPPONENT_BROOKE_1, 0, Route111_Text_1BB44F, Route111_Text_1BB49F - specialval RESULT, 57 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq Route111_EventScript_1504EB + goto_if_eq Route111_EventScript_1504EB msgbox Route111_Text_1BB4CE, 6 end diff --git a/data/scripts/maps/Route111_OldLadysRestStop.inc b/data/scripts/maps/Route111_OldLadysRestStop.inc index 107026a4b..5576a44ff 100644 --- a/data/scripts/maps/Route111_OldLadysRestStop.inc +++ b/data/scripts/maps/Route111_OldLadysRestStop.inc @@ -11,20 +11,20 @@ Route111_OldLadysRestStop_EventScript_15BFDB:: @ 815BFDB faceplayer msgbox Route111_OldLadysRestStop_Text_1923AF, 5 compare RESULT, 1 - jumpeq Route111_OldLadysRestStop_EventScript_15BFFC + goto_if_eq Route111_OldLadysRestStop_EventScript_15BFFC compare RESULT, 0 - jumpeq Route111_OldLadysRestStop_EventScript_15C029 + goto_if_eq Route111_OldLadysRestStop_EventScript_15C029 end Route111_OldLadysRestStop_EventScript_15BFFC:: @ 815BFFC msgbox Route111_OldLadysRestStop_Text_192423, 4 - closebutton + closemessage call Route111_OldLadysRestStop_EventScript_1A02CA msgbox Route111_OldLadysRestStop_Text_19244D, 5 compare RESULT, 1 - jumpeq Route111_OldLadysRestStop_EventScript_15BFFC + goto_if_eq Route111_OldLadysRestStop_EventScript_15BFFC compare RESULT, 0 - jumpeq Route111_OldLadysRestStop_EventScript_15C029 + goto_if_eq Route111_OldLadysRestStop_EventScript_15C029 end Route111_OldLadysRestStop_EventScript_15C029:: @ 815C029 diff --git a/data/scripts/maps/Route111_WinstrateFamilysHouse.inc b/data/scripts/maps/Route111_WinstrateFamilysHouse.inc index 3eb514ad2..d9a94ce75 100644 --- a/data/scripts/maps/Route111_WinstrateFamilysHouse.inc +++ b/data/scripts/maps/Route111_WinstrateFamilysHouse.inc @@ -6,7 +6,7 @@ Route111_WinstrateFamilysHouse_EventScript_15BF25:: @ 815BF25 faceplayer setvar 0x8008, 2 msgbox Route111_WinstrateFamilysHouse_Text_191FCE, 4 - jump Route111_WinstrateFamilysHouse_EventScript_15BFC4 + goto Route111_WinstrateFamilysHouse_EventScript_15BFC4 end Route111_WinstrateFamilysHouse_EventScript_15BF3A:: @ 815BF3A @@ -14,18 +14,18 @@ Route111_WinstrateFamilysHouse_EventScript_15BF3A:: @ 815BF3A faceplayer setvar 0x8008, 3 checkflag 277 - jumpeq Route111_WinstrateFamilysHouse_EventScript_15BF72 + goto_if_eq Route111_WinstrateFamilysHouse_EventScript_15BF72 msgbox Route111_WinstrateFamilysHouse_Text_19208A, 4 giveitem ITEM_MACHO_BRACE compare RESULT, 0 - jumpeq Route111_WinstrateFamilysHouse_EventScript_1A029B + goto_if_eq Route111_WinstrateFamilysHouse_EventScript_1A029B setflag 277 - jump Route111_WinstrateFamilysHouse_EventScript_15BFC4 + goto Route111_WinstrateFamilysHouse_EventScript_15BFC4 end Route111_WinstrateFamilysHouse_EventScript_15BF72:: @ 815BF72 msgbox Route111_WinstrateFamilysHouse_Text_19214D, 4 - jump Route111_WinstrateFamilysHouse_EventScript_15BFC4 + goto Route111_WinstrateFamilysHouse_EventScript_15BFC4 end Route111_WinstrateFamilysHouse_EventScript_15BF80:: @ 815BF80 @@ -33,7 +33,7 @@ Route111_WinstrateFamilysHouse_EventScript_15BF80:: @ 815BF80 faceplayer setvar 0x8008, 1 msgbox Route111_WinstrateFamilysHouse_Text_192190, 4 - jump Route111_WinstrateFamilysHouse_EventScript_15BFC4 + goto Route111_WinstrateFamilysHouse_EventScript_15BFC4 end Route111_WinstrateFamilysHouse_EventScript_15BF95:: @ 815BF95 @@ -41,20 +41,20 @@ Route111_WinstrateFamilysHouse_EventScript_15BF95:: @ 815BF95 faceplayer setvar 0x8008, 4 checkflag 4 - jumpeq Route111_WinstrateFamilysHouse_EventScript_15BFB6 + goto_if_eq Route111_WinstrateFamilysHouse_EventScript_15BFB6 msgbox Route111_WinstrateFamilysHouse_Text_192219, 4 setflag 4 - jump Route111_WinstrateFamilysHouse_EventScript_15BFC4 + goto Route111_WinstrateFamilysHouse_EventScript_15BFC4 end Route111_WinstrateFamilysHouse_EventScript_15BFB6:: @ 815BFB6 msgbox Route111_WinstrateFamilysHouse_Text_192334, 4 - jump Route111_WinstrateFamilysHouse_EventScript_15BFC4 + goto Route111_WinstrateFamilysHouse_EventScript_15BFC4 end Route111_WinstrateFamilysHouse_EventScript_15BFC4:: @ 815BFC4 - closebutton - move 0x8008, Route111_WinstrateFamilysHouse_Movement_1A083D - waitmove 0 + closemessage + applymovement 0x8008, Route111_WinstrateFamilysHouse_Movement_1A083D + waitmovement 0 release end diff --git a/data/scripts/maps/Route112.inc b/data/scripts/maps/Route112.inc index c2ad14a02..d0d464207 100644 --- a/data/scripts/maps/Route112.inc +++ b/data/scripts/maps/Route112.inc @@ -38,9 +38,9 @@ Route112_EventScript_150549:: @ 8150549 Route112_EventScript_150560:: @ 8150560 trainerbattle 0, OPPONENT_TRENT_1, 0, Route112_Text_1BB6A0, Route112_Text_1BB707 - specialval RESULT, 57 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq Route112_EventScript_150587 + goto_if_eq Route112_EventScript_150587 msgbox Route112_Text_1BB721, 6 end diff --git a/data/scripts/maps/Route112_CableCarStation.inc b/data/scripts/maps/Route112_CableCarStation.inc index 3e5f75929..22534aa77 100644 --- a/data/scripts/maps/Route112_CableCarStation.inc +++ b/data/scripts/maps/Route112_CableCarStation.inc @@ -4,14 +4,14 @@ Route112_CableCarStation_MapScripts:: @ 815C033 .byte 0 Route112_CableCarStation_MapScript1_15C03E:: @ 815C03E - warp6 Route112, 255, 28, 28 + setescapewarp Route112, 255, 28, 28 compare 0x40a3, 2 - callif 1, Route112_CableCarStation_EventScript_15C052 + call_if 1, Route112_CableCarStation_EventScript_15C052 end Route112_CableCarStation_EventScript_15C052:: @ 815C052 - movespriteperm 1, 7, 4 - spritebehave 1, 9 + setobjectxyperm 1, 7, 4 + setobjectmovementtype 1, 9 return Route112_CableCarStation_MapScript2_15C05E:: @ 815C05E @@ -20,12 +20,12 @@ Route112_CableCarStation_MapScript2_15C05E:: @ 815C05E Route112_CableCarStation_EventScript_15C068:: @ 815C068 lockall - move 255, Route112_CableCarStation_Movement_15C0F5 - move 1, Route112_CableCarStation_Movement_15C0EB - waitmove 0 + applymovement 255, Route112_CableCarStation_Movement_15C0F5 + applymovement 1, Route112_CableCarStation_Movement_15C0EB + waitmovement 0 setvar 0x40a3, 0 - movespriteperm 1, 6, 7 - spritebehave 1, 8 + setobjectxyperm 1, 6, 7 + setobjectmovementtype 1, 8 releaseall end @@ -34,22 +34,22 @@ Route112_CableCarStation_EventScript_15C08C:: @ 815C08C faceplayer msgbox Route112_CableCarStation_Text_1924F5, 5 compare RESULT, 1 - jumpeq Route112_CableCarStation_EventScript_15C0AD + goto_if_eq Route112_CableCarStation_EventScript_15C0AD compare RESULT, 0 - jumpeq Route112_CableCarStation_EventScript_15C0DC + goto_if_eq Route112_CableCarStation_EventScript_15C0DC end Route112_CableCarStation_EventScript_15C0AD:: @ 815C0AD msgbox Route112_CableCarStation_Text_1925A9, 4 - closebutton - move 1, Route112_CableCarStation_Movement_15C0E6 - move 255, Route112_CableCarStation_Movement_15C0F0 - waitmove 0 + closemessage + applymovement 1, Route112_CableCarStation_Movement_15C0E6 + applymovement 255, Route112_CableCarStation_Movement_15C0F0 + waitmovement 0 setvar 0x8004, 0 setvar 0x40a3, 1 - inccounter GAME_STAT_RODE_CABLE_CAR - special 151 - special 152 + incrementgamestat GAME_STAT_RODE_CABLE_CAR + special CableCarWarp + special sub_8123218 waitstate release end diff --git a/data/scripts/maps/Route113.inc b/data/scripts/maps/Route113.inc index c07f537d1..2eb34cdf3 100644 --- a/data/scripts/maps/Route113.inc +++ b/data/scripts/maps/Route113.inc @@ -15,9 +15,9 @@ Route113_MapScript1_1505DA:: @ 81505DA Route113_EventScript_1505E5:: @ 81505E5 getplayerxy 0x4000, 0x4001 compare 0x4000, 19 - jumpif 0, Route113_EventScript_150604 + goto_if 0, Route113_EventScript_150604 compare 0x4000, 84 - jumpif 2, Route113_EventScript_150604 + goto_if 2, Route113_EventScript_150604 setweather 7 return @@ -60,9 +60,9 @@ Route113_EventScript_150652:: @ 8150652 Route113_EventScript_150669:: @ 8150669 trainerbattle 0, OPPONENT_MADELINE_1, 0, Route113_Text_1BBB27, Route113_Text_1BBB7A - specialval RESULT, 57 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq Route113_EventScript_150690 + goto_if_eq Route113_EventScript_150690 msgbox Route113_Text_1BBB9A, 6 end @@ -73,9 +73,9 @@ Route113_EventScript_150690:: @ 8150690 Route113_EventScript_1506A7:: @ 81506A7 trainerbattle 0, OPPONENT_LAO_1, 0, Route113_Text_1BBC59, Route113_Text_1BBC90 - specialval RESULT, 57 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq Route113_EventScript_1506CE + goto_if_eq Route113_EventScript_1506CE msgbox Route113_Text_1BBCAB, 6 end diff --git a/data/scripts/maps/Route113_GlassWorkshop.inc b/data/scripts/maps/Route113_GlassWorkshop.inc index d59942472..d0b608339 100644 --- a/data/scripts/maps/Route113_GlassWorkshop.inc +++ b/data/scripts/maps/Route113_GlassWorkshop.inc @@ -5,7 +5,7 @@ Route113_GlassWorkshop_MapScripts:: @ 816354A Route113_GlassWorkshop_MapScript1_163550:: @ 8163550 setflag 2116 compare 0x40be, 1 - callif 1, Route113_GlassWorkshop_EventScript_16355F + call_if 1, Route113_GlassWorkshop_EventScript_16355F end Route113_GlassWorkshop_EventScript_16355F:: @ 816355F @@ -16,11 +16,11 @@ Route113_GlassWorkshop_EventScript_163565:: @ 8163565 lock faceplayer compare 0x40be, 10 - jumpif 4, Route113_GlassWorkshop_EventScript_1638D2 + goto_if 4, Route113_GlassWorkshop_EventScript_1638D2 compare 0x40be, 2 - jumpeq Route113_GlassWorkshop_EventScript_1635B5 + goto_if_eq Route113_GlassWorkshop_EventScript_1635B5 compare 0x40be, 1 - jumpeq Route113_GlassWorkshop_EventScript_1635AB + goto_if_eq Route113_GlassWorkshop_EventScript_1635AB msgbox Route113_GlassWorkshop_Text_19E4E6, 4 giveitem ITEM_SOOT_SACK setvar 0x40be, 1 @@ -36,13 +36,13 @@ Route113_GlassWorkshop_EventScript_1635AB:: @ 81635AB Route113_GlassWorkshop_EventScript_1635B5:: @ 81635B5 checkitem ITEM_SOOT_SACK, 1 compare RESULT, 0 - jumpeq Route113_GlassWorkshop_EventScript_1635E4 + goto_if_eq Route113_GlassWorkshop_EventScript_1635E4 msgbox Route113_GlassWorkshop_Text_19E65B, 4 compare 0x4048, 250 - jumpif 0, Route113_GlassWorkshop_EventScript_163818 + goto_if 0, Route113_GlassWorkshop_EventScript_163818 message Route113_GlassWorkshop_Text_19E757 - waittext - jump Route113_GlassWorkshop_EventScript_1635EE + waitmessage + goto Route113_GlassWorkshop_EventScript_1635EE end Route113_GlassWorkshop_EventScript_1635E4:: @ 81635E4 @@ -52,7 +52,7 @@ Route113_GlassWorkshop_EventScript_1635E4:: @ 81635E4 Route113_GlassWorkshop_EventScript_1635EE:: @ 81635EE setvar 0x8009, 0 - special 274 + special ShowGlassWorkshopMenu waitstate switch RESULT case 0, Route113_GlassWorkshop_EventScript_163660 @@ -68,102 +68,102 @@ Route113_GlassWorkshop_EventScript_1635EE:: @ 81635EE Route113_GlassWorkshop_EventScript_163660:: @ 8163660 setvar 0x8008, 39 - bufferitem 0, 0x8008 + getitemname 0, 0x8008 setvar 0x800a, 250 compare 0x4048, 250 - jumpif 0, Route113_GlassWorkshop_EventScript_163830 + goto_if 0, Route113_GlassWorkshop_EventScript_163830 msgbox Route113_GlassWorkshop_Text_19E7CD, 5 compare RESULT, 0 - jumpeq Route113_GlassWorkshop_EventScript_163845 + goto_if_eq Route113_GlassWorkshop_EventScript_163845 setvar 0x40be, 10 subvar 0x4048, 250 - jump Route113_GlassWorkshop_EventScript_163851 + goto Route113_GlassWorkshop_EventScript_163851 end Route113_GlassWorkshop_EventScript_16369C:: @ 816369C setvar 0x8008, 40 - bufferitem 0, 0x8008 + getitemname 0, 0x8008 setvar 0x800a, 500 compare 0x4048, 500 - jumpif 0, Route113_GlassWorkshop_EventScript_163830 + goto_if 0, Route113_GlassWorkshop_EventScript_163830 msgbox Route113_GlassWorkshop_Text_19E7CD, 5 compare RESULT, 0 - jumpeq Route113_GlassWorkshop_EventScript_163845 + goto_if_eq Route113_GlassWorkshop_EventScript_163845 setvar 0x40be, 11 subvar 0x4048, 500 - jump Route113_GlassWorkshop_EventScript_163851 + goto Route113_GlassWorkshop_EventScript_163851 end Route113_GlassWorkshop_EventScript_1636D8:: @ 81636D8 setvar 0x8008, 41 - bufferitem 0, 0x8008 + getitemname 0, 0x8008 setvar 0x800a, 500 compare 0x4048, 500 - jumpif 0, Route113_GlassWorkshop_EventScript_163830 + goto_if 0, Route113_GlassWorkshop_EventScript_163830 msgbox Route113_GlassWorkshop_Text_19E7CD, 5 compare RESULT, 0 - jumpeq Route113_GlassWorkshop_EventScript_163845 + goto_if_eq Route113_GlassWorkshop_EventScript_163845 setvar 0x40be, 12 subvar 0x4048, 500 - jump Route113_GlassWorkshop_EventScript_163851 + goto Route113_GlassWorkshop_EventScript_163851 end Route113_GlassWorkshop_EventScript_163714:: @ 8163714 setvar 0x8008, 43 - bufferitem 0, 0x8008 + getitemname 0, 0x8008 setvar 0x800a, 1000 compare 0x4048, 1000 - jumpif 0, Route113_GlassWorkshop_EventScript_163830 + goto_if 0, Route113_GlassWorkshop_EventScript_163830 msgbox Route113_GlassWorkshop_Text_19E7CD, 5 compare RESULT, 0 - jumpeq Route113_GlassWorkshop_EventScript_163845 + goto_if_eq Route113_GlassWorkshop_EventScript_163845 setvar 0x40be, 13 subvar 0x4048, 1000 - jump Route113_GlassWorkshop_EventScript_163851 + goto Route113_GlassWorkshop_EventScript_163851 end Route113_GlassWorkshop_EventScript_163750:: @ 8163750 setvar 0x8008, 42 - bufferitem 0, 0x8008 + getitemname 0, 0x8008 setvar 0x800a, 1000 compare 0x4048, 1000 - jumpif 0, Route113_GlassWorkshop_EventScript_163830 + goto_if 0, Route113_GlassWorkshop_EventScript_163830 msgbox Route113_GlassWorkshop_Text_19E7CD, 5 compare RESULT, 0 - jumpeq Route113_GlassWorkshop_EventScript_163845 + goto_if_eq Route113_GlassWorkshop_EventScript_163845 setvar 0x40be, 14 subvar 0x4048, 1000 - jump Route113_GlassWorkshop_EventScript_163851 + goto Route113_GlassWorkshop_EventScript_163851 end Route113_GlassWorkshop_EventScript_16378C:: @ 816378C setvar 0x8009, 1 setvar 0x8008, 13 - bufferdecor 0, 0x8008 + getdecorname 0, 0x8008 setvar 0x800a, 6000 compare 0x4048, 6000 - jumpif 0, Route113_GlassWorkshop_EventScript_163830 + goto_if 0, Route113_GlassWorkshop_EventScript_163830 msgbox Route113_GlassWorkshop_Text_19E7CD, 5 compare RESULT, 0 - jumpeq Route113_GlassWorkshop_EventScript_163845 + goto_if_eq Route113_GlassWorkshop_EventScript_163845 setvar 0x40be, 15 subvar 0x4048, 6000 - jump Route113_GlassWorkshop_EventScript_163851 + goto Route113_GlassWorkshop_EventScript_163851 end Route113_GlassWorkshop_EventScript_1637CD:: @ 81637CD setvar 0x8009, 1 setvar 0x8008, 6 - bufferdecor 0, 0x8008 + getdecorname 0, 0x8008 setvar 0x800a, 8000 compare 0x4048, 8000 - jumpif 0, Route113_GlassWorkshop_EventScript_163830 + goto_if 0, Route113_GlassWorkshop_EventScript_163830 msgbox Route113_GlassWorkshop_Text_19E7CD, 5 compare RESULT, 0 - jumpeq Route113_GlassWorkshop_EventScript_163845 + goto_if_eq Route113_GlassWorkshop_EventScript_163845 setvar 0x40be, 16 subvar 0x4048, 8000 - jump Route113_GlassWorkshop_EventScript_163851 + goto Route113_GlassWorkshop_EventScript_163851 end Route113_GlassWorkshop_EventScript_16380E:: @ 816380E @@ -174,37 +174,37 @@ Route113_GlassWorkshop_EventScript_16380E:: @ 816380E Route113_GlassWorkshop_EventScript_163818:: @ 8163818 setvar 0x800a, 250 subvar 0x800a, 16456 - buffernum 0, 32778 + getnumberstring 0, 32778 msgbox Route113_GlassWorkshop_Text_19E697, 4 release end Route113_GlassWorkshop_EventScript_163830:: @ 8163830 subvar 0x800a, 16456 - buffernum 1, 32778 + getnumberstring 1, 32778 message Route113_GlassWorkshop_Text_19E890 - waittext - jump Route113_GlassWorkshop_EventScript_1635EE + waitmessage + goto Route113_GlassWorkshop_EventScript_1635EE end Route113_GlassWorkshop_EventScript_163845:: @ 8163845 message Route113_GlassWorkshop_Text_19E802 - waittext - jump Route113_GlassWorkshop_EventScript_1635EE + waitmessage + goto Route113_GlassWorkshop_EventScript_1635EE end Route113_GlassWorkshop_EventScript_163851:: @ 8163851 msgbox Route113_GlassWorkshop_Text_19E827, 4 - closebutton + closemessage fadescreen 1 - playsfx 5 - pause 30 + playse 5 + delay 30 fadescreen 0 msgbox Route113_GlassWorkshop_Text_19E9D7, 4 compare 0x8009, 0 - callif 1, Route113_GlassWorkshop_EventScript_163889 + call_if 1, Route113_GlassWorkshop_EventScript_163889 compare 0x8009, 1 - callif 1, Route113_GlassWorkshop_EventScript_1638A1 + call_if 1, Route113_GlassWorkshop_EventScript_1638A1 setvar 0x40be, 2 release end @@ -212,13 +212,13 @@ Route113_GlassWorkshop_EventScript_163851:: @ 8163851 Route113_GlassWorkshop_EventScript_163889:: @ 8163889 giveitem 0x8008 compare RESULT, 0 - jumpeq Route113_GlassWorkshop_EventScript_1638B4 + goto_if_eq Route113_GlassWorkshop_EventScript_1638B4 return Route113_GlassWorkshop_EventScript_1638A1:: @ 81638A1 givedecoration 0x8008 compare RESULT, 0 - jumpeq Route113_GlassWorkshop_EventScript_1638C3 + goto_if_eq Route113_GlassWorkshop_EventScript_1638C3 return Route113_GlassWorkshop_EventScript_1638B4:: @ 81638B4 @@ -247,58 +247,58 @@ Route113_GlassWorkshop_EventScript_1638D2:: @ 81638D2 Route113_GlassWorkshop_EventScript_163925:: @ 8163925 setvar 0x8009, 0 setvar 0x8008, 39 - bufferitem 0, 0x8008 - jump Route113_GlassWorkshop_EventScript_1639B1 + getitemname 0, 0x8008 + goto Route113_GlassWorkshop_EventScript_1639B1 end Route113_GlassWorkshop_EventScript_163939:: @ 8163939 setvar 0x8009, 0 setvar 0x8008, 40 - bufferitem 0, 0x8008 - jump Route113_GlassWorkshop_EventScript_1639B1 + getitemname 0, 0x8008 + goto Route113_GlassWorkshop_EventScript_1639B1 end Route113_GlassWorkshop_EventScript_16394D:: @ 816394D setvar 0x8009, 0 setvar 0x8008, 41 - bufferitem 0, 0x8008 - jump Route113_GlassWorkshop_EventScript_1639B1 + getitemname 0, 0x8008 + goto Route113_GlassWorkshop_EventScript_1639B1 end Route113_GlassWorkshop_EventScript_163961:: @ 8163961 setvar 0x8009, 0 setvar 0x8008, 43 - bufferitem 0, 0x8008 - jump Route113_GlassWorkshop_EventScript_1639B1 + getitemname 0, 0x8008 + goto Route113_GlassWorkshop_EventScript_1639B1 end Route113_GlassWorkshop_EventScript_163975:: @ 8163975 setvar 0x8009, 0 setvar 0x8008, 42 - bufferitem 0, 0x8008 - jump Route113_GlassWorkshop_EventScript_1639B1 + getitemname 0, 0x8008 + goto Route113_GlassWorkshop_EventScript_1639B1 end Route113_GlassWorkshop_EventScript_163989:: @ 8163989 setvar 0x8009, 1 setvar 0x8008, 13 - bufferdecor 0, 13 - jump Route113_GlassWorkshop_EventScript_1639B1 + getdecorname 0, 13 + goto Route113_GlassWorkshop_EventScript_1639B1 end Route113_GlassWorkshop_EventScript_16399D:: @ 816399D setvar 0x8009, 1 setvar 0x8008, 6 - bufferdecor 0, 6 - jump Route113_GlassWorkshop_EventScript_1639B1 + getdecorname 0, 6 + goto Route113_GlassWorkshop_EventScript_1639B1 end Route113_GlassWorkshop_EventScript_1639B1:: @ 81639B1 msgbox Route113_GlassWorkshop_Text_19E9D7, 4 compare 0x8009, 0 - callif 1, Route113_GlassWorkshop_EventScript_163889 + call_if 1, Route113_GlassWorkshop_EventScript_163889 compare 0x8009, 1 - callif 1, Route113_GlassWorkshop_EventScript_1638A1 + call_if 1, Route113_GlassWorkshop_EventScript_1638A1 setvar 0x40be, 2 release end diff --git a/data/scripts/maps/Route114.inc b/data/scripts/maps/Route114.inc index 33e89be70..0730db23a 100644 --- a/data/scripts/maps/Route114.inc +++ b/data/scripts/maps/Route114.inc @@ -4,16 +4,16 @@ Route114_MapScripts:: @ 8150732 Route114_EventScript_150733:: @ 8150733 lock faceplayer - checkdailyflags + dodailyevents checkflag 2251 - jumpeq Route114_EventScript_150778 + goto_if_eq Route114_EventScript_150778 msgbox Route114_Text_1C5803, 4 random 5 addvar RESULT, 15 addvar RESULT, 133 giveitem RESULT compare RESULT, 0 - jumpeq Route114_EventScript_1A029B + goto_if_eq Route114_EventScript_1A029B setflag 2251 msgbox Route114_Text_1C5861, 4 release @@ -28,11 +28,11 @@ Route114_EventScript_150782:: @ 8150782 lock faceplayer checkflag 231 - jumpeq Route114_EventScript_1507B9 + goto_if_eq Route114_EventScript_1507B9 msgbox Route114_Text_170154, 4 giveitem ITEM_TM05 compare RESULT, 0 - jumpeq Route114_EventScript_1A029B + goto_if_eq Route114_EventScript_1A029B setflag 231 msgbox Route114_Text_1701C5, 4 release @@ -46,8 +46,8 @@ Route114_EventScript_1507B9:: @ 81507B9 Route114_EventScript_1507C3:: @ 81507C3 lock faceplayer - checksound - pokecry SPECIES_POOCHYENA, 2 + waitse + playpokecry SPECIES_POOCHYENA, 2 msgbox Route114_Text_1701F9, 4 waitpokecry release @@ -87,9 +87,9 @@ Route114_EventScript_150836:: @ 8150836 Route114_EventScript_15084D:: @ 815084D trainerbattle 0, OPPONENT_STEVE_1, 0, Route114_Text_1BC2F5, Route114_Text_1BC327 - specialval RESULT, 57 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq Route114_EventScript_150874 + goto_if_eq Route114_EventScript_150874 msgbox Route114_Text_1BC337, 6 end @@ -100,9 +100,9 @@ Route114_EventScript_150874:: @ 8150874 Route114_EventScript_15088B:: @ 815088B trainerbattle 0, OPPONENT_BERNIE_1, 0, Route114_Text_1BC45A, Route114_Text_1BC499 - specialval RESULT, 57 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq Route114_EventScript_1508B2 + goto_if_eq Route114_EventScript_1508B2 msgbox Route114_Text_1BC4B5, 6 end diff --git a/data/scripts/maps/Route114_FossilManiacsHouse.inc b/data/scripts/maps/Route114_FossilManiacsHouse.inc index 50305dc04..b217f24c4 100644 --- a/data/scripts/maps/Route114_FossilManiacsHouse.inc +++ b/data/scripts/maps/Route114_FossilManiacsHouse.inc @@ -10,11 +10,11 @@ Route114_FossilManiacsHouse_EventScript_15C1C3:: @ 815C1C3 lock faceplayer checkflag 261 - jumpeq Route114_FossilManiacsHouse_EventScript_15C1F2 + goto_if_eq Route114_FossilManiacsHouse_EventScript_15C1F2 msgbox Route114_FossilManiacsHouse_Text_1925E1, 4 giveitem ITEM_TM28 compare RESULT, 0 - jumpeq Route114_FossilManiacsHouse_EventScript_1A029B + goto_if_eq Route114_FossilManiacsHouse_EventScript_1A029B setflag 261 release end diff --git a/data/scripts/maps/Route114_FossilManiacsTunnel.inc b/data/scripts/maps/Route114_FossilManiacsTunnel.inc index 7986a0436..13843f758 100644 --- a/data/scripts/maps/Route114_FossilManiacsTunnel.inc +++ b/data/scripts/maps/Route114_FossilManiacsTunnel.inc @@ -5,13 +5,13 @@ Route114_FossilManiacsTunnel_EventScript_15C20F:: @ 815C20F lock faceplayer checkflag 267 - jumpeq Route114_FossilManiacsTunnel_EventScript_15C24E + goto_if_eq Route114_FossilManiacsTunnel_EventScript_15C24E checkitem ITEM_ROOT_FOSSIL, 1 compare RESULT, 1 - jumpeq Route114_FossilManiacsTunnel_EventScript_15C244 + goto_if_eq Route114_FossilManiacsTunnel_EventScript_15C244 checkitem ITEM_CLAW_FOSSIL, 1 compare RESULT, 1 - jumpeq Route114_FossilManiacsTunnel_EventScript_15C244 + goto_if_eq Route114_FossilManiacsTunnel_EventScript_15C244 msgbox Route114_FossilManiacsTunnel_Text_192795, 4 release end diff --git a/data/scripts/maps/Route114_LanettesHouse.inc b/data/scripts/maps/Route114_LanettesHouse.inc index ff8a1c565..e4334647c 100644 --- a/data/scripts/maps/Route114_LanettesHouse.inc +++ b/data/scripts/maps/Route114_LanettesHouse.inc @@ -10,7 +10,7 @@ Route114_LanettesHouse_EventScript_15C262:: @ 815C262 lock faceplayer checkflag 131 - jumpeq Route114_LanettesHouse_EventScript_15C28F + goto_if_eq Route114_LanettesHouse_EventScript_15C28F setflag 2123 msgbox Route114_LanettesHouse_Text_192A0D, 4 .ifdef SAPPHIRE @@ -19,7 +19,7 @@ Route114_LanettesHouse_EventScript_15C262:: @ 815C262 givedecoration 100 .endif compare RESULT, 0 - jumpeq Route114_LanettesHouse_EventScript_1A02AE + goto_if_eq Route114_LanettesHouse_EventScript_1A02AE setflag 131 release end @@ -33,7 +33,7 @@ Route114_LanettesHouse_EventScript_15C299:: @ 815C299 lockall msgbox Route114_LanettesHouse_Text_192B4A, 5 compare RESULT, 1 - jumpeq Route114_LanettesHouse_EventScript_15C2B7 + goto_if_eq Route114_LanettesHouse_EventScript_15C2B7 msgbox Route114_LanettesHouse_Text_192DA9, 4 releaseall end @@ -41,7 +41,7 @@ Route114_LanettesHouse_EventScript_15C299:: @ 815C299 Route114_LanettesHouse_EventScript_15C2B7:: @ 815C2B7 msgbox Route114_LanettesHouse_Text_192C01, 5 compare RESULT, 1 - callif 1, Route114_LanettesHouse_EventScript_15C2CC + call_if 1, Route114_LanettesHouse_EventScript_15C2CC releaseall end diff --git a/data/scripts/maps/Route115.inc b/data/scripts/maps/Route115.inc index e2c00f6fc..8e0eb7855 100644 --- a/data/scripts/maps/Route115.inc +++ b/data/scripts/maps/Route115.inc @@ -15,9 +15,9 @@ Route115_EventScript_150940:: @ 8150940 Route115_EventScript_150949:: @ 8150949 trainerbattle 0, OPPONENT_TIMOTHY_1, 0, Route115_Text_1BC9AC, Route115_Text_1BC9E6 - specialval RESULT, 57 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq Route115_EventScript_150970 + goto_if_eq Route115_EventScript_150970 msgbox Route115_Text_1BCA0E, 6 end @@ -33,9 +33,9 @@ Route115_EventScript_150987:: @ 8150987 Route115_EventScript_15099E:: @ 815099E trainerbattle 0, OPPONENT_NOB_1, 0, Route115_Text_1BCB8A, Route115_Text_1BCBC1 - specialval RESULT, 57 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq Route115_EventScript_1509C5 + goto_if_eq Route115_EventScript_1509C5 msgbox Route115_Text_1BCBDE, 6 end @@ -46,9 +46,9 @@ Route115_EventScript_1509C5:: @ 81509C5 Route115_EventScript_1509DC:: @ 81509DC trainerbattle 0, OPPONENT_CYNDY_1, 0, Route115_Text_1BCCF4, Route115_Text_1BCD32 - specialval RESULT, 57 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq Route115_EventScript_150A03 + goto_if_eq Route115_EventScript_150A03 msgbox Route115_Text_1BCD4C, 6 end diff --git a/data/scripts/maps/Route116.inc b/data/scripts/maps/Route116.inc index c563dce46..beb01e083 100644 --- a/data/scripts/maps/Route116.inc +++ b/data/scripts/maps/Route116.inc @@ -4,20 +4,20 @@ Route116_MapScripts:: @ 8150A31 Route116_MapScript1_150A37:: @ 8150A37 checkflag 143 - callif 1, Route116_EventScript_150A41 + call_if 1, Route116_EventScript_150A41 end Route116_EventScript_150A41:: @ 8150A41 - movespriteperm 21, 41, 10 + setobjectxyperm 21, 41, 10 return Route116_EventScript_150A49:: @ 8150A49 lock faceplayer checkflag 143 - jumpeq Route116_EventScript_150A67 + goto_if_eq Route116_EventScript_150A67 checkflag 142 - jumpeq Route116_EventScript_150A71 + goto_if_eq Route116_EventScript_150A71 msgbox Route116_Text_1703CF, 4 release end @@ -36,45 +36,45 @@ Route116_EventScript_150A7B:: @ 8150A7B lock faceplayer checkflag 287 - jumpeq Route116_EventScript_150B04 + goto_if_eq Route116_EventScript_150B04 msgbox Route116_Text_1705AE, 4 - jump Route116_EventScript_150A94 + goto Route116_EventScript_150A94 end Route116_EventScript_150A94:: @ 8150A94 setflag 287 giveitem ITEM_REPEAT_BALL compare RESULT, 0 - jumpeq Route116_EventScript_150B12 + goto_if_eq Route116_EventScript_150B12 msgbox Route116_Text_1707B8, 4 - closebutton + closemessage compare FACING, 2 - callif 1, Route116_EventScript_150AEE + call_if 1, Route116_EventScript_150AEE compare FACING, 1 - callif 1, Route116_EventScript_150AEE + call_if 1, Route116_EventScript_150AEE compare FACING, 3 - callif 1, Route116_EventScript_150AEE + call_if 1, Route116_EventScript_150AEE compare FACING, 4 - callif 1, Route116_EventScript_150AF9 - disappear LAST_TALKED + call_if 1, Route116_EventScript_150AF9 + removeobject LAST_TALKED clearflag 949 setflag 256 release end Route116_EventScript_150AEE:: @ 8150AEE - move LAST_TALKED, Route116_Movement_150B1C - waitmove 0 + applymovement LAST_TALKED, Route116_Movement_150B1C + waitmovement 0 return Route116_EventScript_150AF9:: @ 8150AF9 - move LAST_TALKED, Route116_Movement_150B25 - waitmove 0 + applymovement LAST_TALKED, Route116_Movement_150B25 + waitmovement 0 return Route116_EventScript_150B04:: @ 8150B04 msgbox Route116_Text_170865, 4 - jump Route116_EventScript_150A94 + goto Route116_EventScript_150A94 end Route116_EventScript_150B12:: @ 8150B12 @@ -136,9 +136,9 @@ Route116_EventScript_150B5D:: @ 8150B5D Route116_EventScript_150B6E:: @ 8150B6E lockall - move 11, Route116_Movement_1A0843 - move 255, Route116_Movement_1A083F - waitmove 0 + applymovement 11, Route116_Movement_1A0843 + applymovement 255, Route116_Movement_1A083F + waitmovement 0 msgbox Route116_Text_17032A, 4 setvar 0x406f, 2 releaseall @@ -149,58 +149,58 @@ Route116_EventScript_150B8F:: @ 8150B8F faceplayer checkitem ITEM_BLACK_GLASSES, 1 compare RESULT, 1 - jumpeq Route116_EventScript_150BCA - specialval RESULT, 316 + goto_if_eq Route116_EventScript_150BCA + specialvar RESULT, sub_810F828 compare RESULT, 1 - jumpeq Route116_EventScript_150BBB + goto_if_eq Route116_EventScript_150BBB msgbox Route116_Text_1708EE, 4 release end Route116_EventScript_150BBB:: @ 8150BBB msgbox Route116_Text_1709B7, 4 - closebutton - jump Route116_EventScript_150C03 + closemessage + goto Route116_EventScript_150C03 end Route116_EventScript_150BCA:: @ 8150BCA msgbox Route116_Text_1708EE, 4 msgbox Route116_Text_170921, 4 - specialval RESULT, 316 + specialvar RESULT, sub_810F828 compare RESULT, 1 - jumpeq Route116_EventScript_150BF4 + goto_if_eq Route116_EventScript_150BF4 msgbox Route116_Text_170A03, 4 release end Route116_EventScript_150BF4:: @ 8150BF4 msgbox Route116_Text_17094D, 4 - closebutton - jump Route116_EventScript_150C03 + closemessage + goto Route116_EventScript_150C03 end Route116_EventScript_150C03:: @ 8150C03 - pause 20 + delay 20 compare FACING, 2 - callif 1, Route116_EventScript_150C37 + call_if 1, Route116_EventScript_150C37 compare FACING, 1 - callif 1, Route116_EventScript_150C37 + call_if 1, Route116_EventScript_150C37 compare FACING, 3 - callif 1, Route116_EventScript_150C37 + call_if 1, Route116_EventScript_150C37 compare FACING, 4 - callif 1, Route116_EventScript_150C42 - disappear LAST_TALKED + call_if 1, Route116_EventScript_150C42 + removeobject LAST_TALKED release end Route116_EventScript_150C37:: @ 8150C37 - move LAST_TALKED, Route116_Movement_150C4D - waitmove 0 + applymovement LAST_TALKED, Route116_Movement_150C4D + waitmovement 0 return Route116_EventScript_150C42:: @ 8150C42 - move LAST_TALKED, Route116_Movement_150C57 - waitmove 0 + applymovement LAST_TALKED, Route116_Movement_150C57 + waitmovement 0 return Route116_Movement_150C4D:: @ 8150C4D @@ -240,9 +240,9 @@ Route116_EventScript_150C79:: @ 8150C79 Route116_EventScript_150C90:: @ 8150C90 trainerbattle 0, OPPONENT_JERRY_1, 0, Route116_Text_1BD1C0, Route116_Text_1BD21A - specialval RESULT, 57 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq Route116_EventScript_150CB7 + goto_if_eq Route116_EventScript_150CB7 msgbox Route116_Text_1BD248, 6 end @@ -263,9 +263,9 @@ Route116_EventScript_150CE5:: @ 8150CE5 Route116_EventScript_150CFC:: @ 8150CFC trainerbattle 0, OPPONENT_KAREN_1, 0, Route116_Text_1BD377, Route116_Text_1BD3AC - specialval RESULT, 57 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq Route116_EventScript_150D23 + goto_if_eq Route116_EventScript_150D23 msgbox Route116_Text_1BD3C3, 6 end diff --git a/data/scripts/maps/Route116_TunnelersRestHouse.inc b/data/scripts/maps/Route116_TunnelersRestHouse.inc index d141fae37..10991c38c 100644 --- a/data/scripts/maps/Route116_TunnelersRestHouse.inc +++ b/data/scripts/maps/Route116_TunnelersRestHouse.inc @@ -18,7 +18,7 @@ Route116_TunnelersRestHouse_EventScript_15C2FA:: @ 815C2FA lock faceplayer checkflag 199 - jumpeq Route116_TunnelersRestHouse_EventScript_15C30F + goto_if_eq Route116_TunnelersRestHouse_EventScript_15C30F msgbox Route116_TunnelersRestHouse_Text_193135, 4 release end diff --git a/data/scripts/maps/Route117.inc b/data/scripts/maps/Route117.inc index 8c738ffff..40affd3fd 100644 --- a/data/scripts/maps/Route117.inc +++ b/data/scripts/maps/Route117.inc @@ -8,8 +8,8 @@ Route117_MapScript1_150D40:: @ 8150D40 Route117_EventScript_150D46:: @ 8150D46 checkflag 134 - jumpif 0, Route117_EventScript_150D56 - movespriteperm 3, 47, 6 + goto_if 0, Route117_EventScript_150D56 + setobjectxyperm 3, 47, 6 Route117_EventScript_150D56:: @ 8150D56 return @@ -40,9 +40,9 @@ Route117_EventScript_150D84:: @ 8150D84 Route117_EventScript_150D8D:: @ 8150D8D trainerbattle 0, OPPONENT_ISAAC_1, 0, Route117_Text_1BD49E, Route117_Text_1BD4D9 - specialval RESULT, 57 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq Route117_EventScript_150DB4 + goto_if_eq Route117_EventScript_150DB4 msgbox Route117_Text_1BD4F9, 6 end @@ -53,9 +53,9 @@ Route117_EventScript_150DB4:: @ 8150DB4 Route117_EventScript_150DCB:: @ 8150DCB trainerbattle 0, OPPONENT_LYDIA_1, 0, Route117_Text_1BD634, Route117_Text_1BD67B - specialval RESULT, 57 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq Route117_EventScript_150DF2 + goto_if_eq Route117_EventScript_150DF2 msgbox Route117_Text_1BD69B, 6 end @@ -66,9 +66,9 @@ Route117_EventScript_150DF2:: @ 8150DF2 Route117_EventScript_150E09:: @ 8150E09 trainerbattle 0, OPPONENT_DYLAN_1, 0, Route117_Text_1BD79A, Route117_Text_1BD7E0 - specialval RESULT, 57 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq Route117_EventScript_150E30 + goto_if_eq Route117_EventScript_150E30 msgbox Route117_Text_1BD7F5, 6 end @@ -79,9 +79,9 @@ Route117_EventScript_150E30:: @ 8150E30 Route117_EventScript_150E47:: @ 8150E47 trainerbattle 0, OPPONENT_MARIA_1, 0, Route117_Text_1BD914, Route117_Text_1BD965 - specialval RESULT, 57 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq Route117_EventScript_150E6E + goto_if_eq Route117_EventScript_150E6E msgbox Route117_Text_1BD98F, 6 end @@ -97,9 +97,9 @@ Route117_EventScript_150E85:: @ 8150E85 Route117_EventScript_150E9C:: @ 8150E9C trainerbattle 4, OPPONENT_ANNA_AND_MEG_1, 0, Route117_Text_1BDBC3, Route117_Text_1BDC07, Route117_Text_1BDC96 - specialval RESULT, 57 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq Route117_EventScript_150EC7 + goto_if_eq Route117_EventScript_150EC7 msgbox Route117_Text_1BDC44, 6 end @@ -110,9 +110,9 @@ Route117_EventScript_150EC7:: @ 8150EC7 Route117_EventScript_150EE2:: @ 8150EE2 trainerbattle 4, OPPONENT_ANNA_AND_MEG_1, 0, Route117_Text_1BDCD2, Route117_Text_1BDD1E, Route117_Text_1BDD8B - specialval RESULT, 57 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq Route117_EventScript_150F0D + goto_if_eq Route117_EventScript_150F0D msgbox Route117_Text_1BDD4E, 6 end diff --git a/data/scripts/maps/Route118.inc b/data/scripts/maps/Route118.inc index 4d739ce68..b96346f15 100644 --- a/data/scripts/maps/Route118.inc +++ b/data/scripts/maps/Route118.inc @@ -10,12 +10,12 @@ Route118_EventScript_150F34:: @ 8150F34 lock faceplayer checkflag 227 - jumpeq Route118_EventScript_150F89 + goto_if_eq Route118_EventScript_150F89 msgbox Route118_Text_170F12, 5 compare RESULT, 1 - jumpeq Route118_EventScript_150F5E + goto_if_eq Route118_EventScript_150F5E compare RESULT, 0 - jumpeq Route118_EventScript_150F7F + goto_if_eq Route118_EventScript_150F7F end Route118_EventScript_150F5E:: @ 8150F5E @@ -51,62 +51,62 @@ Route118_EventScript_150FA5:: @ 8150FA5 Route118_EventScript_150FAE:: @ 8150FAE lockall setvar 0x8008, 0 - move 255, Route118_Movement_1A0841 - waitmove 0 - move 19, Route118_Movement_151069 - waitmove 0 - jump Route118_EventScript_151004 + applymovement 255, Route118_Movement_1A0841 + waitmovement 0 + applymovement 19, Route118_Movement_151069 + waitmovement 0 + goto Route118_EventScript_151004 end Route118_EventScript_150FCE:: @ 8150FCE lockall setvar 0x8008, 1 - move 255, Route118_Movement_1A0841 - waitmove 0 - jump Route118_EventScript_151004 + applymovement 255, Route118_Movement_1A0841 + waitmovement 0 + goto Route118_EventScript_151004 end Route118_EventScript_150FE4:: @ 8150FE4 lockall setvar 0x8008, 2 - move 255, Route118_Movement_1A0841 - waitmove 0 - move 19, Route118_Movement_15106B - waitmove 0 - jump Route118_EventScript_151004 + applymovement 255, Route118_Movement_1A0841 + waitmovement 0 + applymovement 19, Route118_Movement_15106B + waitmovement 0 + goto Route118_EventScript_151004 end Route118_EventScript_151004:: @ 8151004 - playsfx 10 - move 19, Route118_Movement_15106D - waitmove 0 - pause 30 + playse 10 + applymovement 19, Route118_Movement_15106D + waitmovement 0 + delay 30 msgbox Route118_Text_170D66, 4 - closebutton + closemessage compare 0x8008, 0 - callif 1, Route118_EventScript_151048 + call_if 1, Route118_EventScript_151048 compare 0x8008, 1 - callif 1, Route118_EventScript_151053 + call_if 1, Route118_EventScript_151053 compare 0x8008, 2 - callif 1, Route118_EventScript_15105E + call_if 1, Route118_EventScript_15105E setvar 0x4071, 1 - disappear 19 + removeobject 19 releaseall end Route118_EventScript_151048:: @ 8151048 - move 19, Route118_Movement_151071 - waitmove 0 + applymovement 19, Route118_Movement_151071 + waitmovement 0 return Route118_EventScript_151053:: @ 8151053 - move 19, Route118_Movement_15107C - waitmove 0 + applymovement 19, Route118_Movement_15107C + waitmovement 0 return Route118_EventScript_15105E:: @ 815105E - move 19, Route118_Movement_151086 - waitmove 0 + applymovement 19, Route118_Movement_151086 + waitmovement 0 return Route118_Movement_151069:: @ 8151069 @@ -161,9 +161,9 @@ Route118_Movement_151086:: @ 8151086 Route118_EventScript_15108F:: @ 815108F trainerbattle 0, OPPONENT_ROSE_1, 0, Route118_Text_1BDFF4, Route118_Text_1BE03C - specialval RESULT, 57 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq Route118_EventScript_1510B6 + goto_if_eq Route118_EventScript_1510B6 msgbox Route118_Text_1BE05E, 6 end @@ -184,9 +184,9 @@ Route118_EventScript_1510E4:: @ 81510E4 Route118_EventScript_1510FB:: @ 81510FB trainerbattle 0, OPPONENT_DALTON_1, 0, Route118_Text_1BE3E8, Route118_Text_1BE406 - specialval RESULT, 57 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq Route118_EventScript_151122 + goto_if_eq Route118_EventScript_151122 msgbox Route118_Text_1BE413, 6 end diff --git a/data/scripts/maps/Route119.inc b/data/scripts/maps/Route119.inc index 1ccc972bb..2179a7e18 100644 --- a/data/scripts/maps/Route119.inc +++ b/data/scripts/maps/Route119.inc @@ -5,22 +5,22 @@ Route119_MapScripts:: @ 8151167 Route119_MapScript1_151172:: @ 8151172 checkflag 2145 - callif 1, Route119_EventScript_15117C + call_if 1, Route119_EventScript_15117C end Route119_EventScript_15117C:: @ 815117C compare 0x8004, 6 - callif 1, Route119_EventScript_151193 + call_if 1, Route119_EventScript_151193 compare 0x8004, 7 - callif 1, Route119_EventScript_151197 + call_if 1, Route119_EventScript_151197 return Route119_EventScript_151193:: @ 8151193 - disappear 35 + removeobject 35 return Route119_EventScript_151197:: @ 8151197 - disappear 36 + removeobject 36 return Route119_MapScript1_15119B:: @ 815119B @@ -28,8 +28,8 @@ Route119_MapScript1_15119B:: @ 815119B call Route119_EventScript_1A0172 call Route119_EventScript_1A0196 compare 0x40b3, 1 - callif 1, Route119_EventScript_1511B9 - special 324 + call_if 1, Route119_EventScript_1511B9 + special SetRoute119Weather end Route119_EventScript_1511B9:: @ 81511B9 @@ -40,51 +40,51 @@ Route119_EventScript_1511B9:: @ 81511B9 Route119_EventScript_1511C5:: @ 81511C5 setvar 0x4001, 1 - jump Route119_EventScript_1511DB + goto Route119_EventScript_1511DB end Route119_EventScript_1511D0:: @ 81511D0 setvar 0x4001, 2 - jump Route119_EventScript_1511DB + goto Route119_EventScript_1511DB end Route119_EventScript_1511DB:: @ 81511DB lockall - reappear 25 - checkgender + addobject 25 + checkplayergender compare RESULT, 0 - callif 1, Route119_EventScript_151254 + call_if 1, Route119_EventScript_151254 compare RESULT, 1 - callif 1, Route119_EventScript_151259 - pause 65 + call_if 1, Route119_EventScript_151259 + delay 65 compare 0x4001, 1 - callif 1, Route119_EventScript_1513A6 + call_if 1, Route119_EventScript_1513A6 compare 0x4001, 2 - callif 1, Route119_EventScript_1513B1 - move 255, Route119_Movement_1A0845 - waitmove 0 - pause 30 + call_if 1, Route119_EventScript_1513B1 + applymovement 255, Route119_Movement_1A0845 + waitmovement 0 + delay 30 compare 0x4001, 1 - callif 1, Route119_EventScript_1513D2 + call_if 1, Route119_EventScript_1513D2 compare 0x4001, 2 - callif 1, Route119_EventScript_1513E1 - disappear 25 - reappear 16 - pause 30 - checkgender + call_if 1, Route119_EventScript_1513E1 + removeobject 25 + addobject 16 + delay 30 + checkplayergender compare RESULT, 0 - jumpeq Route119_EventScript_15125E + goto_if_eq Route119_EventScript_15125E compare RESULT, 1 - jumpeq Route119_EventScript_1512D8 + goto_if_eq Route119_EventScript_1512D8 releaseall end Route119_EventScript_151254:: @ 8151254 - playmusic 415, 1 + playbgm 415, 1 return Route119_EventScript_151259:: @ 8151259 - playmusic 421, 1 + playbgm 421, 1 return Route119_EventScript_15125E:: @ 815125E @@ -97,24 +97,24 @@ Route119_EventScript_15125E:: @ 815125E Route119_EventScript_15128D:: @ 815128D trainerbattle 3, OPPONENT_MAY_6, 0, Route119_Text_171156 - jump Route119_EventScript_1512BD + goto Route119_EventScript_1512BD end Route119_EventScript_15129D:: @ 815129D trainerbattle 3, OPPONENT_MAY_9, 0, Route119_Text_171156 - jump Route119_EventScript_1512BD + goto Route119_EventScript_1512BD end Route119_EventScript_1512AD:: @ 81512AD trainerbattle 3, OPPONENT_MAY_3, 0, Route119_Text_171156 - jump Route119_EventScript_1512BD + goto Route119_EventScript_1512BD end Route119_EventScript_1512BD:: @ 81512BD msgbox Route119_Text_1711B1, 4 call Route119_EventScript_151352 msgbox Route119_Text_171214, 4 - jump Route119_EventScript_151362 + goto Route119_EventScript_151362 end Route119_EventScript_1512D8:: @ 81512D8 @@ -127,24 +127,24 @@ Route119_EventScript_1512D8:: @ 81512D8 Route119_EventScript_151307:: @ 8151307 trainerbattle 3, OPPONENT_BRENDAN_6, 0, Route119_Text_1713E2 - jump Route119_EventScript_151337 + goto Route119_EventScript_151337 end Route119_EventScript_151317:: @ 8151317 trainerbattle 3, OPPONENT_BRENDAN_9, 0, Route119_Text_1713E2 - jump Route119_EventScript_151337 + goto Route119_EventScript_151337 end Route119_EventScript_151327:: @ 8151327 trainerbattle 3, OPPONENT_BRENDAN_3, 0, Route119_Text_1713E2 - jump Route119_EventScript_151337 + goto Route119_EventScript_151337 end Route119_EventScript_151337:: @ 8151337 msgbox Route119_Text_17140B, 4 call Route119_EventScript_151352 msgbox Route119_Text_171475, 4 - jump Route119_EventScript_151362 + goto Route119_EventScript_151362 end Route119_EventScript_151352:: @ 8151352 @@ -153,53 +153,53 @@ Route119_EventScript_151352:: @ 8151352 return Route119_EventScript_151362:: @ 8151362 - closebutton + closemessage compare 0x4001, 1 - callif 1, Route119_EventScript_1513D2 + call_if 1, Route119_EventScript_1513D2 compare 0x4001, 2 - callif 1, Route119_EventScript_1513E1 - disappear 16 - reappear 25 - pause 30 + call_if 1, Route119_EventScript_1513E1 + removeobject 16 + addobject 25 + delay 30 compare 0x4001, 1 - callif 1, Route119_EventScript_1513BC + call_if 1, Route119_EventScript_1513BC compare 0x4001, 2 - callif 1, Route119_EventScript_1513C7 - disappear 25 + call_if 1, Route119_EventScript_1513C7 + removeobject 25 setvar 0x4072, 1 - playmusicbattle 0 - fadedefault + savebgm 0 + fadedefaultbgm releaseall end Route119_EventScript_1513A6:: @ 81513A6 - move 25, Route119_Movement_1513F0 - waitmove 0 + applymovement 25, Route119_Movement_1513F0 + waitmovement 0 return Route119_EventScript_1513B1:: @ 81513B1 - move 25, Route119_Movement_1513FA - waitmove 0 + applymovement 25, Route119_Movement_1513FA + waitmovement 0 return Route119_EventScript_1513BC:: @ 81513BC - move 25, Route119_Movement_151405 - waitmove 0 + applymovement 25, Route119_Movement_151405 + waitmovement 0 return Route119_EventScript_1513C7:: @ 81513C7 - move 25, Route119_Movement_15140F - waitmove 0 + applymovement 25, Route119_Movement_15140F + waitmovement 0 return Route119_EventScript_1513D2:: @ 81513D2 - movespriteperm 16, 25, 32 - movespriteperm 25, 25, 32 + setobjectxyperm 16, 25, 32 + setobjectxyperm 25, 25, 32 return Route119_EventScript_1513E1:: @ 81513E1 - movespriteperm 16, 26, 32 - movespriteperm 25, 26, 32 + setobjectxyperm 16, 26, 32 + setobjectxyperm 25, 26, 32 return Route119_Movement_1513F0:: @ 81513F0 @@ -296,9 +296,9 @@ Route119_EventScript_1514A8:: @ 81514A8 Route119_EventScript_1514BF:: @ 81514BF trainerbattle 0, OPPONENT_JACKSON_1, 0, Route119_Text_1BE8BB, Route119_Text_1BE90E - specialval RESULT, 57 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq Route119_EventScript_1514E6 + goto_if_eq Route119_EventScript_1514E6 msgbox Route119_Text_1BE937, 6 end @@ -309,9 +309,9 @@ Route119_EventScript_1514E6:: @ 81514E6 Route119_EventScript_1514FD:: @ 81514FD trainerbattle 0, OPPONENT_CATHERINE_1, 0, Route119_Text_1BEA3A, Route119_Text_1BEA88 - specialval RESULT, 57 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq Route119_EventScript_151524 + goto_if_eq Route119_EventScript_151524 msgbox Route119_Text_1BEAB3, 6 end @@ -354,9 +354,9 @@ Route119_EventScript_1515C5:: @ 81515C5 lock faceplayer msgbox Route119_Text_171520, 4 - closebutton - move LAST_TALKED, Route119_Movement_1A083D - waitmove 0 + closemessage + applymovement LAST_TALKED, Route119_Movement_1A083D + waitmovement 0 release end @@ -364,9 +364,9 @@ Route119_EventScript_1515DC:: @ 81515DC lock faceplayer msgbox Route119_Text_17157C, 4 - closebutton - move LAST_TALKED, Route119_Movement_1A083D - waitmove 0 + closemessage + applymovement LAST_TALKED, Route119_Movement_1A083D + waitmovement 0 release end diff --git a/data/scripts/maps/Route119_House.inc b/data/scripts/maps/Route119_House.inc index 6395e40eb..42cc89068 100644 --- a/data/scripts/maps/Route119_House.inc +++ b/data/scripts/maps/Route119_House.inc @@ -8,8 +8,8 @@ Route119_House_EventScript_163DDE:: @ 8163DDE Route119_House_EventScript_163DE7:: @ 8163DE7 lock faceplayer - checksound - pokecry SPECIES_WINGULL, 0 + waitse + playpokecry SPECIES_WINGULL, 0 msgbox Route119_House_Text_19F406, 4 waitpokecry release diff --git a/data/scripts/maps/Route119_WeatherInstitute_1F.inc b/data/scripts/maps/Route119_WeatherInstitute_1F.inc index 36314a59f..3dc9672e3 100644 --- a/data/scripts/maps/Route119_WeatherInstitute_1F.inc +++ b/data/scripts/maps/Route119_WeatherInstitute_1F.inc @@ -5,20 +5,20 @@ Route119_WeatherInstitute_1F_MapScripts:: @ 8163C2A Route119_WeatherInstitute_1F_MapScript1_163C30:: @ 8163C30 call Route119_WeatherInstitute_1F_EventScript_1A0196 compare 0x40b3, 0 - callif 1, Route119_WeatherInstitute_1F_EventScript_163C41 + call_if 1, Route119_WeatherInstitute_1F_EventScript_163C41 end Route119_WeatherInstitute_1F_EventScript_163C41:: @ 8163C41 - movespriteperm 5, 0, 5 - spritebehave 5, 10 + setobjectxyperm 5, 0, 5 + setobjectmovementtype 5, 10 return Route119_WeatherInstitute_1F_EventScript_163C4D:: @ 8163C4D lock faceplayer - special 148 + special GetPlayerBigGuyGirlString compare 0x40b3, 0 - jumpeq Route119_WeatherInstitute_1F_EventScript_163C67 + goto_if_eq Route119_WeatherInstitute_1F_EventScript_163C67 msgbox Route119_WeatherInstitute_1F_Text_19ED22, 4 release end @@ -39,7 +39,7 @@ Route119_WeatherInstitute_1F_EventScript_163C7A:: @ 8163C7A Route119_WeatherInstitute_1F_EventScript_163C83:: @ 8163C83 lockall msgbox Route119_WeatherInstitute_1F_Text_19EE8B, 4 - closebutton + closemessage call Route119_WeatherInstitute_1F_EventScript_1A02CA releaseall end diff --git a/data/scripts/maps/Route119_WeatherInstitute_2F.inc b/data/scripts/maps/Route119_WeatherInstitute_2F.inc index 37f8e9ec6..ac64904a2 100644 --- a/data/scripts/maps/Route119_WeatherInstitute_2F.inc +++ b/data/scripts/maps/Route119_WeatherInstitute_2F.inc @@ -5,19 +5,19 @@ Route119_WeatherInstitute_2F_MapScripts:: @ 8163CC2 Route119_WeatherInstitute_2F_MapScript1_163CC8:: @ 8163CC8 call Route119_WeatherInstitute_2F_EventScript_1A0196 compare 0x40b3, 0 - callif 1, Route119_WeatherInstitute_2F_EventScript_163CE4 + call_if 1, Route119_WeatherInstitute_2F_EventScript_163CE4 compare 0x40b3, 1 - callif 1, Route119_WeatherInstitute_2F_EventScript_163CF0 + call_if 1, Route119_WeatherInstitute_2F_EventScript_163CF0 end Route119_WeatherInstitute_2F_EventScript_163CE4:: @ 8163CE4 - movespriteperm 5, 1, 6 - spritebehave 5, 10 + setobjectxyperm 5, 1, 6 + setobjectmovementtype 5, 10 return Route119_WeatherInstitute_2F_EventScript_163CF0:: @ 8163CF0 - movespriteperm 5, 4, 6 - spritebehave 5, 10 + setobjectxyperm 5, 4, 6 + setobjectmovementtype 5, 10 return Route119_WeatherInstitute_2F_EventScript_163CFC:: @ 8163CFC @@ -37,32 +37,32 @@ Route119_WeatherInstitute_2F_EventScript_163D2A:: @ 8163D2A Route119_WeatherInstitute_2F_EventScript_163D45:: @ 8163D45 msgbox Route119_WeatherInstitute_2F_Text_19F11B, 4 - closebutton + closemessage setvar 0x40b3, 1 clearflag 893 - fadedefault + fadedefaultbgm fadescreen 1 setflag 890 - disappear 1 - disappear 2 - disappear 3 + removeobject 1 + removeobject 2 + removeobject 3 fadescreen 0 - move 5, Route119_WeatherInstitute_2F_Movement_163DC8 - waitmove 0 - moveoffscreen 5 - jump Route119_WeatherInstitute_2F_EventScript_163D7A + applymovement 5, Route119_WeatherInstitute_2F_Movement_163DC8 + waitmovement 0 + moveobjectoffscreen 5 + goto Route119_WeatherInstitute_2F_EventScript_163D7A end Route119_WeatherInstitute_2F_EventScript_163D7A:: @ 8163D7A msgbox Route119_WeatherInstitute_2F_Text_19F1CF, 4 countpokemon compare RESULT, 6 - jumpeq Route119_WeatherInstitute_2F_EventScript_163DB4 - fanfare 370 + goto_if_eq Route119_WeatherInstitute_2F_EventScript_163DB4 + playfanfare 370 message Route119_WeatherInstitute_2F_Text_19F267 waitfanfare - waittext - givepokemon SPECIES_CASTFORM, 25, ITEM_MYSTIC_WATER, 0x0, 0x0, 0 + waitmessage + givepoke SPECIES_CASTFORM, 25, ITEM_MYSTIC_WATER, 0x0, 0x0, 0 setflag 151 msgbox Route119_WeatherInstitute_2F_Text_19F27D, 4 release @@ -88,6 +88,6 @@ Route119_WeatherInstitute_2F_EventScript_163DCC:: @ 8163DCC lock faceplayer checkflag 151 - jumpeq Route119_WeatherInstitute_2F_EventScript_163DBE - jump Route119_WeatherInstitute_2F_EventScript_163D7A + goto_if_eq Route119_WeatherInstitute_2F_EventScript_163DBE + goto Route119_WeatherInstitute_2F_EventScript_163D7A end diff --git a/data/scripts/maps/Route120.inc b/data/scripts/maps/Route120.inc index ada773ffd..868d00324 100644 --- a/data/scripts/maps/Route120.inc +++ b/data/scripts/maps/Route120.inc @@ -6,56 +6,56 @@ Route120_MapScripts:: @ 815160E Route120_MapScript1_15161E:: @ 815161E checkflag 2145 - callif 1, Route120_EventScript_151628 + call_if 1, Route120_EventScript_151628 end Route120_EventScript_151628:: @ 8151628 compare 0x8004, 0 - callif 1, Route120_EventScript_15166B + call_if 1, Route120_EventScript_15166B compare 0x8004, 1 - callif 1, Route120_EventScript_151672 + call_if 1, Route120_EventScript_151672 compare 0x8004, 2 - callif 1, Route120_EventScript_151676 + call_if 1, Route120_EventScript_151676 compare 0x8004, 3 - callif 1, Route120_EventScript_15167A + call_if 1, Route120_EventScript_15167A compare 0x8004, 4 - callif 1, Route120_EventScript_15167E + call_if 1, Route120_EventScript_15167E compare 0x8004, 5 - callif 1, Route120_EventScript_151682 + call_if 1, Route120_EventScript_151682 return Route120_EventScript_15166B:: @ 815166B - disappear 30 - disappear 36 + removeobject 30 + removeobject 36 return Route120_EventScript_151672:: @ 8151672 - disappear 37 + removeobject 37 return Route120_EventScript_151676:: @ 8151676 - disappear 38 + removeobject 38 return Route120_EventScript_15167A:: @ 815167A - disappear 39 + removeobject 39 return Route120_EventScript_15167E:: @ 815167E - disappear 41 + removeobject 41 return Route120_EventScript_151682:: @ 8151682 - disappear 40 + removeobject 40 return Route120_MapScript1_151686:: @ 8151686 checkflag 228 - callif 0, Route120_EventScript_1516A2 + call_if 0, Route120_EventScript_1516A2 checkflag 285 - callif 1, Route120_EventScript_1516B5 + call_if 1, Route120_EventScript_1516B5 checkflag 285 - callif 0, Route120_EventScript_1516DA + call_if 0, Route120_EventScript_1516DA end Route120_EventScript_1516A2:: @ 81516A2 @@ -71,7 +71,7 @@ Route120_EventScript_1516B5:: @ 81516B5 return Route120_EventScript_1516DA:: @ 81516DA - spritebehave 36, 10 + setobjectmovementtype 36, 10 return Route120_MapScript1_1516DF:: @ 81516DF @@ -82,11 +82,11 @@ Route120_MapScript1_1516DF:: @ 81516DF Route120_EventScript_1516EA:: @ 81516EA getplayerxy 0x4000, 0x4001 compare 0x4001, 14 - jumpif 3, Route120_EventScript_151715 + goto_if 3, Route120_EventScript_151715 compare 0x4001, 60 - jumpif 3, Route120_EventScript_151719 + goto_if 3, Route120_EventScript_151719 compare 0x4001, 61 - jumpif 4, Route120_EventScript_151711 + goto_if 4, Route120_EventScript_151711 return Route120_EventScript_151711:: @ 8151711 @@ -99,10 +99,10 @@ Route120_EventScript_151715:: @ 8151715 Route120_EventScript_151719:: @ 8151719 compare 0x4000, 7 - jumpif 3, Route120_EventScript_151735 + goto_if 3, Route120_EventScript_151735 compare 0x4000, 19 - jumpif 3, Route120_EventScript_151715 - jump Route120_EventScript_151735 + goto_if 3, Route120_EventScript_151715 + goto Route120_EventScript_151735 end Route120_EventScript_151735:: @ 8151735 @@ -112,15 +112,15 @@ Route120_EventScript_151735:: @ 8151735 Route120_EventScript_151739:: @ 8151739 lock faceplayer - checkdailyflags + dodailyevents checkflag 2254 - jumpeq Route120_EventScript_151837 + goto_if_eq Route120_EventScript_151837 msgbox Route120_Text_1C58F1, 5 compare RESULT, 1 - callif 1, Route120_EventScript_151841 + call_if 1, Route120_EventScript_151841 compare RESULT, 0 - callif 1, Route120_EventScript_15184A - specialval RESULT, 147 + call_if 1, Route120_EventScript_15184A + specialvar RESULT, GetPlayerTrainerIdOnesDigit switch RESULT case 0, Route120_EventScript_1517DC case 5, Route120_EventScript_1517DC @@ -136,33 +136,33 @@ Route120_EventScript_151739:: @ 8151739 Route120_EventScript_1517DC:: @ 81517DC setvar 0x8004, 143 - jump Route120_EventScript_151813 + goto Route120_EventScript_151813 end Route120_EventScript_1517E7:: @ 81517E7 setvar 0x8004, 144 - jump Route120_EventScript_151813 + goto Route120_EventScript_151813 end Route120_EventScript_1517F2:: @ 81517F2 setvar 0x8004, 145 - jump Route120_EventScript_151813 + goto Route120_EventScript_151813 end Route120_EventScript_1517FD:: @ 81517FD setvar 0x8004, 146 - jump Route120_EventScript_151813 + goto Route120_EventScript_151813 end Route120_EventScript_151808:: @ 8151808 setvar 0x8004, 147 - jump Route120_EventScript_151813 + goto Route120_EventScript_151813 end Route120_EventScript_151813:: @ 8151813 giveitem 0x8004 compare RESULT, 0 - jumpeq Route120_EventScript_1A029B + goto_if_eq Route120_EventScript_1A029B setflag 2254 msgbox Route120_Text_1C5A0B, 4 release @@ -185,11 +185,11 @@ Route120_EventScript_151853:: @ 8151853 lock faceplayer checkflag 290 - jumpeq Route120_EventScript_151884 + goto_if_eq Route120_EventScript_151884 msgbox Route120_Text_171827, 5 compare RESULT, 0 - jumpeq Route120_EventScript_151877 - jump Route120_EventScript_15189D + goto_if_eq Route120_EventScript_151877 + goto Route120_EventScript_15189D end Route120_EventScript_151877:: @ 8151877 @@ -201,71 +201,71 @@ Route120_EventScript_151877:: @ 8151877 Route120_EventScript_151884:: @ 8151884 msgbox Route120_Text_17196F, 5 compare RESULT, 0 - jumpeq Route120_EventScript_151877 - jump Route120_EventScript_15189D + goto_if_eq Route120_EventScript_151877 + goto Route120_EventScript_15189D end Route120_EventScript_15189D:: @ 815189D msgbox Route120_Text_1719A0, 4 - closebutton + closemessage compare FACING, 2 - callif 1, Route120_EventScript_15197F + call_if 1, Route120_EventScript_15197F compare FACING, 3 - callif 1, Route120_EventScript_15198A - move 31, Route120_Movement_1A083F - waitmove 0 - pause 20 + call_if 1, Route120_EventScript_15198A + applymovement 31, Route120_Movement_1A083F + waitmovement 0 + delay 20 msgbox Route120_Text_1719D4, 4 - closebutton - move 30, Route120_Movement_1A0843 - waitmove 0 - move 30, Route120_Movement_1A0662 - waitmove 0 - checksound - pokecry SPECIES_KECLEON, 2 - pause 40 + closemessage + applymovement 30, Route120_Movement_1A0843 + waitmovement 0 + applymovement 30, Route120_Movement_1A0662 + waitmovement 0 + waitse + playpokecry SPECIES_KECLEON, 2 + delay 40 waitpokecry setwildbattle SPECIES_KECLEON, 30, ITEM_NONE setvar 0x8004, 0 setflag 2145 dowildbattle clearflag 2145 - jump Route120_EventScript_151908 + goto Route120_EventScript_151908 end Route120_EventScript_151908:: @ 8151908 - move 31, Route120_Movement_1A0845 - move 255, Route120_Movement_1A0841 - waitmove 0 + applymovement 31, Route120_Movement_1A0845 + applymovement 255, Route120_Movement_1A0841 + waitmovement 0 msgbox Route120_Text_171A40, 4 giveitem ITEM_DEVON_SCOPE setflag 285 msgbox Route120_Text_171B0E, 4 - closebutton - move 31, Route120_Movement_1A0845 - waitmove 0 - pause 50 - setanimation 0, 1 - doanimation 30 - pause 15 - disappear 31 - checkanimation 30 + closemessage + applymovement 31, Route120_Movement_1A0845 + waitmovement 0 + delay 50 + setfieldeffect 0, 1 + dofieldeffect 30 + delay 15 + removeobject 31 + waitfieldeffect 30 setmaptile 13, 15, 663, 0 setmaptile 12, 16, 671, 0 setmaptile 12, 17, 161, 0 setmaptile 13, 17, 161, 0 - special 142 + special DrawWholeMapView release end Route120_EventScript_15197F:: @ 815197F - move 255, Route120_Movement_1A083F - waitmove 0 + applymovement 255, Route120_Movement_1A083F + waitmovement 0 return Route120_EventScript_15198A:: @ 815198A - move 255, Route120_Movement_151995 - waitmove 0 + applymovement 255, Route120_Movement_151995 + waitmovement 0 return Route120_Movement_151995:: @ 8151995 @@ -292,9 +292,9 @@ Route120_EventScript_1519B3:: @ 81519B3 Route120_EventScript_1519CA:: @ 81519CA trainerbattle 0, OPPONENT_ROBERT_1, 0, Route120_Text_1BF07E, Route120_Text_1BF0A5 - specialval RESULT, 57 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq Route120_EventScript_1519F1 + goto_if_eq Route120_EventScript_1519F1 msgbox Route120_Text_1BF0C3, 6 end @@ -315,9 +315,9 @@ Route120_EventScript_151A1F:: @ 8151A1F Route120_EventScript_151A36:: @ 8151A36 trainerbattle 0, OPPONENT_BRANDON_1, 0, Route120_Text_1BF32B, Route120_Text_1BF36B - specialval RESULT, 57 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq Route120_EventScript_151A5D + goto_if_eq Route120_EventScript_151A5D msgbox Route120_Text_1BF38D, 6 end diff --git a/data/scripts/maps/Route121.inc b/data/scripts/maps/Route121.inc index 54912b0bc..39443d2f9 100644 --- a/data/scripts/maps/Route121.inc +++ b/data/scripts/maps/Route121.inc @@ -21,14 +21,14 @@ Route121_EventScript_151B1C:: @ 8151B1C Route121_EventScript_151B25:: @ 8151B25 lockall msgbox Route121_Text_171C8F, 4 - closebutton - move 12, Route121_Movement_151B57 - move 13, Route121_Movement_151B60 - move 14, Route121_Movement_151B69 - waitmove 0 - disappear 12 - disappear 13 - disappear 14 + closemessage + applymovement 12, Route121_Movement_151B57 + applymovement 13, Route121_Movement_151B60 + applymovement 14, Route121_Movement_151B69 + waitmovement 0 + removeobject 12 + removeobject 13 + removeobject 14 setvar 0x4074, 1 releaseall end @@ -73,9 +73,9 @@ Route121_EventScript_151B72:: @ 8151B72 Route121_EventScript_151B89:: @ 8151B89 trainerbattle 0, OPPONENT_WALTER_1, 0, Route121_Text_1BFA1B, Route121_Text_1BFA8C - specialval RESULT, 57 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq Route121_EventScript_151BB0 + goto_if_eq Route121_EventScript_151BB0 msgbox Route121_Text_1BFA9D, 6 end @@ -101,9 +101,9 @@ Route121_EventScript_151BF9:: @ 8151BF9 Route121_EventScript_151C14:: @ 8151C14 trainerbattle 0, OPPONENT_JESSICA_1, 0, Route121_Text_1BFE51, Route121_Text_1BFE80 - specialval RESULT, 57 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq Route121_EventScript_151C3B + goto_if_eq Route121_EventScript_151C3B msgbox Route121_Text_1BFEAE, 6 end diff --git a/data/scripts/maps/Route121_SafariZoneEntrance.inc b/data/scripts/maps/Route121_SafariZoneEntrance.inc index 2056bc328..9649271f4 100644 --- a/data/scripts/maps/Route121_SafariZoneEntrance.inc +++ b/data/scripts/maps/Route121_SafariZoneEntrance.inc @@ -8,9 +8,9 @@ Route121_SafariZoneEntrance_MapScript2_15C329:: @ 815C329 Route121_SafariZoneEntrance_EventScript_15C333:: @ 815C333 lockall - move 255, Route121_SafariZoneEntrance_Movement_15C348 - waitmove 0 - special 206 + applymovement 255, Route121_SafariZoneEntrance_Movement_15C348 + waitmovement 0 + special ExitSafariMode setvar 0x40a4, 0 releaseall end @@ -35,7 +35,7 @@ Route121_SafariZoneEntrance_EventScript_15C35A:: @ 815C35A faceplayer msgbox Route121_SafariZoneEntrance_Text_1C3704, 5 compare RESULT, 1 - jumpeq Route121_SafariZoneEntrance_EventScript_15C379 + goto_if_eq Route121_SafariZoneEntrance_EventScript_15C379 msgbox Route121_SafariZoneEntrance_Text_1C373C, 4 release end @@ -47,40 +47,40 @@ Route121_SafariZoneEntrance_EventScript_15C379:: @ 815C379 Route121_SafariZoneEntrance_EventScript_15C383:: @ 815C383 lockall - move 255, Route121_SafariZoneEntrance_Movement_1A0841 - waitmove 0 - showmoney 0, 0 - snop + applymovement 255, Route121_SafariZoneEntrance_Movement_1A0841 + waitmovement 0 + showmoneybox 0, 0 + nop msgbox Route121_SafariZoneEntrance_Text_1C3832, 5 compare RESULT, 1 - jumpeq Route121_SafariZoneEntrance_EventScript_15C3B3 + goto_if_eq Route121_SafariZoneEntrance_EventScript_15C3B3 msgbox Route121_SafariZoneEntrance_Text_1C3895, 4 - jump Route121_SafariZoneEntrance_EventScript_15C46C + goto Route121_SafariZoneEntrance_EventScript_15C46C end Route121_SafariZoneEntrance_EventScript_15C3B3:: @ 815C3B3 checkitem ITEM_POKEBLOCK_CASE, 1 compare RESULT, 0 - jumpeq Route121_SafariZoneEntrance_EventScript_15C450 + goto_if_eq Route121_SafariZoneEntrance_EventScript_15C450 call Route121_SafariZoneEntrance_EventScript_15C425 checkmoney 0x1f4, 0 compare RESULT, 0 - jumpeq Route121_SafariZoneEntrance_EventScript_15C45E + goto_if_eq Route121_SafariZoneEntrance_EventScript_15C45E msgbox Route121_SafariZoneEntrance_Text_1C38D9, 4 - paymoney 0x1f4, 0 - updatemoney 0, 0 - snop + takemoney 0x1f4, 0 + updatemoneybox 0, 0 + nop msgbox Route121_SafariZoneEntrance_Text_1C38F4, 4 - fanfare 370 + playfanfare 370 message Route121_SafariZoneEntrance_Text_1C3910 waitfanfare - waittext + waitmessage msgbox Route121_SafariZoneEntrance_Text_1C392D, 4 - closebutton - hidemoney 0, 0 - move 255, Route121_SafariZoneEntrance_Movement_15C47E - waitmove 0 - special 205 + closemessage + hidemoneybox 0, 0 + applymovement 255, Route121_SafariZoneEntrance_Movement_15C47E + waitmovement 0 + special EnterSafariMode setvar 0x40a4, 2 warp SafariZone_Southeast, 255, 32, 33 waitstate @@ -89,12 +89,12 @@ Route121_SafariZoneEntrance_EventScript_15C3B3:: @ 815C3B3 Route121_SafariZoneEntrance_EventScript_15C425:: @ 815C425 countpokemon compare RESULT, 6 - jumpif 5, Route121_SafariZoneEntrance_EventScript_15C44F - specialval RESULT, 304 + goto_if 5, Route121_SafariZoneEntrance_EventScript_15C44F + specialvar RESULT, CheckFreePokemonStorageSpace compare RESULT, 1 - jumpeq Route121_SafariZoneEntrance_EventScript_15C44F + goto_if_eq Route121_SafariZoneEntrance_EventScript_15C44F msgbox Route121_SafariZoneEntrance_Text_1C39A3, 4 - jump Route121_SafariZoneEntrance_EventScript_15C46C + goto Route121_SafariZoneEntrance_EventScript_15C46C end Route121_SafariZoneEntrance_EventScript_15C44F:: @ 815C44F @@ -102,19 +102,19 @@ Route121_SafariZoneEntrance_EventScript_15C44F:: @ 815C44F Route121_SafariZoneEntrance_EventScript_15C450:: @ 815C450 msgbox Route121_SafariZoneEntrance_Text_1C39C3, 4 - jump Route121_SafariZoneEntrance_EventScript_15C46C + goto Route121_SafariZoneEntrance_EventScript_15C46C end Route121_SafariZoneEntrance_EventScript_15C45E:: @ 815C45E msgbox Route121_SafariZoneEntrance_Text_1C38B5, 4 - jump Route121_SafariZoneEntrance_EventScript_15C46C + goto Route121_SafariZoneEntrance_EventScript_15C46C end Route121_SafariZoneEntrance_EventScript_15C46C:: @ 815C46C - closebutton - hidemoney 0, 0 - move 255, Route121_SafariZoneEntrance_Movement_15C47C - waitmove 0 + closemessage + hidemoneybox 0, 0 + applymovement 255, Route121_SafariZoneEntrance_Movement_15C47C + waitmovement 0 releaseall end diff --git a/data/scripts/maps/Route123.inc b/data/scripts/maps/Route123.inc index e9248c230..14c5a2dba 100644 --- a/data/scripts/maps/Route123.inc +++ b/data/scripts/maps/Route123.inc @@ -3,22 +3,22 @@ Route123_MapScripts:: @ 8151C53 .byte 0 Route123_MapScript1_151C59:: @ 8151C59 - special 325 + special SetRoute123Weather end Route123_EventScript_151C5D:: @ 8151C5D lock faceplayer checkflag 232 - jumpeq Route123_EventScript_151CAC + goto_if_eq Route123_EventScript_151CAC msgbox Route123_Text_171D83, 4 - special 299 + special IsGrassTypeInParty compare RESULT, 0 - jumpeq Route123_EventScript_151CAA + goto_if_eq Route123_EventScript_151CAA msgbox Route123_Text_171DC2, 4 giveitem ITEM_TM19 compare RESULT, 0 - jumpeq Route123_EventScript_1A029B + goto_if_eq Route123_EventScript_1A029B setflag 232 msgbox Route123_Text_171E34, 4 release @@ -62,9 +62,9 @@ Route123_EventScript_151CFF:: @ 8151CFF Route123_EventScript_151D16:: @ 8151D16 trainerbattle 0, OPPONENT_CAMERON_1, 0, Route123_Text_1C013F, Route123_Text_1C01A3 - specialval RESULT, 57 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq Route123_EventScript_151D3D + goto_if_eq Route123_EventScript_151D3D msgbox Route123_Text_1C01B1, 6 end @@ -75,9 +75,9 @@ Route123_EventScript_151D3D:: @ 8151D3D Route123_EventScript_151D54:: @ 8151D54 trainerbattle 0, OPPONENT_JACKI_1, 0, Route123_Text_1C028C, Route123_Text_1C0303 - specialval RESULT, 57 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq Route123_EventScript_151D7B + goto_if_eq Route123_EventScript_151D7B msgbox Route123_Text_1C030F, 6 end diff --git a/data/scripts/maps/Route123_BerryMastersHouse.inc b/data/scripts/maps/Route123_BerryMastersHouse.inc index 9290f845d..64888759d 100644 --- a/data/scripts/maps/Route123_BerryMastersHouse.inc +++ b/data/scripts/maps/Route123_BerryMastersHouse.inc @@ -9,16 +9,16 @@ Route123_BerryMastersHouse_MapScript1_1639E5:: @ 81639E5 Route123_BerryMastersHouse_EventScript_1639E9:: @ 81639E9 lock faceplayer - checkdailyflags + dodailyevents checkflag 2253 - jumpeq Route123_BerryMastersHouse_EventScript_163A5A + goto_if_eq Route123_BerryMastersHouse_EventScript_163A5A msgbox Route123_BerryMastersHouse_Text_1C5BC4, 4 random 10 addvar RESULT, 20 addvar RESULT, 133 giveitem RESULT compare RESULT, 0 - jumpeq Route123_BerryMastersHouse_EventScript_1A029B + goto_if_eq Route123_BerryMastersHouse_EventScript_1A029B setflag 2253 msgbox Route123_BerryMastersHouse_Text_1C5C66, 4 random 10 @@ -26,7 +26,7 @@ Route123_BerryMastersHouse_EventScript_1639E9:: @ 81639E9 addvar RESULT, 133 giveitem RESULT compare RESULT, 0 - jumpeq Route123_BerryMastersHouse_EventScript_1A029B + goto_if_eq Route123_BerryMastersHouse_EventScript_1A029B msgbox Route123_BerryMastersHouse_Text_1C5C83, 4 release end @@ -39,18 +39,18 @@ Route123_BerryMastersHouse_EventScript_163A5A:: @ 8163A5A Route123_BerryMastersHouse_EventScript_163A64:: @ 8163A64 lock faceplayer - checkdailyflags + dodailyevents checkflag 2257 - jumpeq Route123_BerryMastersHouse_EventScript_163C13 + goto_if_eq Route123_BerryMastersHouse_EventScript_163C13 msgbox Route123_BerryMastersHouse_Text_1C5D24, 4 setvar 0x8004, 13 call Route123_BerryMastersHouse_EventScript_1A00F3 lock faceplayer compare RESULT, 1 - jumpeq Route123_BerryMastersHouse_EventScript_163AAD + goto_if_eq Route123_BerryMastersHouse_EventScript_163AAD compare RESULT, 0 - jumpeq Route123_BerryMastersHouse_EventScript_163A9B + goto_if_eq Route123_BerryMastersHouse_EventScript_163A9B end Route123_BerryMastersHouse_EventScript_163A9B:: @ 8163A9B @@ -61,17 +61,17 @@ Route123_BerryMastersHouse_EventScript_163A9B:: @ 8163A9B Route123_BerryMastersHouse_EventScript_163AAD:: @ 8163AAD compare 0x8004, 0 - jumpeq Route123_BerryMastersHouse_EventScript_163AF0 + goto_if_eq Route123_BerryMastersHouse_EventScript_163AF0 compare 0x8004, 1 - jumpeq Route123_BerryMastersHouse_EventScript_163B1E + goto_if_eq Route123_BerryMastersHouse_EventScript_163B1E compare 0x8004, 2 - jumpeq Route123_BerryMastersHouse_EventScript_163B4F + goto_if_eq Route123_BerryMastersHouse_EventScript_163B4F compare 0x8004, 3 - jumpeq Route123_BerryMastersHouse_EventScript_163B80 + goto_if_eq Route123_BerryMastersHouse_EventScript_163B80 compare 0x8004, 4 - jumpeq Route123_BerryMastersHouse_EventScript_163BB1 + goto_if_eq Route123_BerryMastersHouse_EventScript_163BB1 compare 0x8004, 5 - jumpeq Route123_BerryMastersHouse_EventScript_163BE2 + goto_if_eq Route123_BerryMastersHouse_EventScript_163BE2 end Route123_BerryMastersHouse_EventScript_163AF0:: @ 8163AF0 @@ -80,64 +80,64 @@ Route123_BerryMastersHouse_EventScript_163AF0:: @ 8163AF0 addvar RESULT, 133 giveitem RESULT compare RESULT, 0 - jumpeq Route123_BerryMastersHouse_EventScript_1A029B - jump Route123_BerryMastersHouse_EventScript_163C1D + goto_if_eq Route123_BerryMastersHouse_EventScript_1A029B + goto Route123_BerryMastersHouse_EventScript_163C1D release end Route123_BerryMastersHouse_EventScript_163B1E:: @ 8163B1E checkflag 248 - jumpeq Route123_BerryMastersHouse_EventScript_163AF0 + goto_if_eq Route123_BerryMastersHouse_EventScript_163AF0 msgbox Route123_BerryMastersHouse_Text_1C5DC1, 4 giveitem ITEM_SPELON_BERRY compare RESULT, 0 - jumpeq Route123_BerryMastersHouse_EventScript_1A029B + goto_if_eq Route123_BerryMastersHouse_EventScript_1A029B setflag 248 - jump Route123_BerryMastersHouse_EventScript_163C1D + goto Route123_BerryMastersHouse_EventScript_163C1D end Route123_BerryMastersHouse_EventScript_163B4F:: @ 8163B4F checkflag 249 - jumpeq Route123_BerryMastersHouse_EventScript_163AF0 + goto_if_eq Route123_BerryMastersHouse_EventScript_163AF0 msgbox Route123_BerryMastersHouse_Text_1C5DC1, 4 giveitem ITEM_PAMTRE_BERRY compare RESULT, 0 - jumpeq Route123_BerryMastersHouse_EventScript_1A029B + goto_if_eq Route123_BerryMastersHouse_EventScript_1A029B setflag 249 - jump Route123_BerryMastersHouse_EventScript_163C1D + goto Route123_BerryMastersHouse_EventScript_163C1D end Route123_BerryMastersHouse_EventScript_163B80:: @ 8163B80 checkflag 250 - jumpeq Route123_BerryMastersHouse_EventScript_163AF0 + goto_if_eq Route123_BerryMastersHouse_EventScript_163AF0 msgbox Route123_BerryMastersHouse_Text_1C5DC1, 4 giveitem ITEM_WATMEL_BERRY compare RESULT, 0 - jumpeq Route123_BerryMastersHouse_EventScript_1A029B + goto_if_eq Route123_BerryMastersHouse_EventScript_1A029B setflag 250 - jump Route123_BerryMastersHouse_EventScript_163C1D + goto Route123_BerryMastersHouse_EventScript_163C1D end Route123_BerryMastersHouse_EventScript_163BB1:: @ 8163BB1 checkflag 251 - jumpeq Route123_BerryMastersHouse_EventScript_163AF0 + goto_if_eq Route123_BerryMastersHouse_EventScript_163AF0 msgbox Route123_BerryMastersHouse_Text_1C5DC1, 4 giveitem ITEM_DURIN_BERRY compare RESULT, 0 - jumpeq Route123_BerryMastersHouse_EventScript_1A029B + goto_if_eq Route123_BerryMastersHouse_EventScript_1A029B setflag 251 - jump Route123_BerryMastersHouse_EventScript_163C1D + goto Route123_BerryMastersHouse_EventScript_163C1D end Route123_BerryMastersHouse_EventScript_163BE2:: @ 8163BE2 checkflag 252 - jumpeq Route123_BerryMastersHouse_EventScript_163AF0 + goto_if_eq Route123_BerryMastersHouse_EventScript_163AF0 msgbox Route123_BerryMastersHouse_Text_1C5DC1, 4 giveitem ITEM_BELUE_BERRY compare RESULT, 0 - jumpeq Route123_BerryMastersHouse_EventScript_1A029B + goto_if_eq Route123_BerryMastersHouse_EventScript_1A029B setflag 252 - jump Route123_BerryMastersHouse_EventScript_163C1D + goto Route123_BerryMastersHouse_EventScript_163C1D end Route123_BerryMastersHouse_EventScript_163C13:: @ 8163C13 diff --git a/data/scripts/maps/Route124.inc b/data/scripts/maps/Route124.inc index ea288daa0..ffe4cef97 100644 --- a/data/scripts/maps/Route124.inc +++ b/data/scripts/maps/Route124.inc @@ -4,7 +4,7 @@ Route124_MapScripts:: @ 8151DDF Route124_MapScript1_151DE5:: @ 8151DE5 checkflag 2090 - callif 1, Route124_EventScript_1A02C1 + call_if 1, Route124_EventScript_1A02C1 end Route124_EventScript_151DEF:: @ 8151DEF @@ -23,9 +23,9 @@ Route124_EventScript_151E0F:: @ 8151E0F Route124_EventScript_151E26:: @ 8151E26 trainerbattle 0, OPPONENT_JENNY_1, 0, Route124_Text_1C07B4, Route124_Text_1C07F9 - specialval RESULT, 57 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq Route124_EventScript_151E4D + goto_if_eq Route124_EventScript_151E4D msgbox Route124_Text_1C080E, 6 end @@ -46,9 +46,9 @@ Route124_EventScript_151E7B:: @ 8151E7B Route124_EventScript_151E92:: @ 8151E92 trainerbattle 4, OPPONENT_RITA_AND_SAM_1, 0, Route124_Text_1C0ABD, Route124_Text_1C0B36, Route124_Text_1C0BC8 - specialval RESULT, 57 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq Route124_EventScript_151EBD + goto_if_eq Route124_EventScript_151EBD msgbox Route124_Text_1C0B72, 6 end @@ -59,9 +59,9 @@ Route124_EventScript_151EBD:: @ 8151EBD Route124_EventScript_151ED8:: @ 8151ED8 trainerbattle 4, OPPONENT_RITA_AND_SAM_1, 0, Route124_Text_1C0C0E, Route124_Text_1C0C4F, Route124_Text_1C0CE0 - specialval RESULT, 57 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq Route124_EventScript_151F03 + goto_if_eq Route124_EventScript_151F03 msgbox Route124_Text_1C0C7F, 6 end diff --git a/data/scripts/maps/Route124_DivingTreasureHuntersHouse.inc b/data/scripts/maps/Route124_DivingTreasureHuntersHouse.inc index e1049c8be..7421e94e0 100644 --- a/data/scripts/maps/Route124_DivingTreasureHuntersHouse.inc +++ b/data/scripts/maps/Route124_DivingTreasureHuntersHouse.inc @@ -10,38 +10,38 @@ Route124_DivingTreasureHuntersHouse_EventScript_163E04:: @ 8163E04 lock faceplayer checkflag 217 - jumpeq Route124_DivingTreasureHuntersHouse_EventScript_163E20 + goto_if_eq Route124_DivingTreasureHuntersHouse_EventScript_163E20 msgbox Route124_DivingTreasureHuntersHouse_Text_19F416, 4 setflag 217 - jump Route124_DivingTreasureHuntersHouse_EventScript_163E2E + goto Route124_DivingTreasureHuntersHouse_EventScript_163E2E end Route124_DivingTreasureHuntersHouse_EventScript_163E20:: @ 8163E20 msgbox Route124_DivingTreasureHuntersHouse_Text_19F48F, 4 - jump Route124_DivingTreasureHuntersHouse_EventScript_163E2E + goto Route124_DivingTreasureHuntersHouse_EventScript_163E2E end Route124_DivingTreasureHuntersHouse_EventScript_163E2E:: @ 8163E2E call Route124_DivingTreasureHuntersHouse_EventScript_163E44 compare 0x4001, 0 - jumpeq Route124_DivingTreasureHuntersHouse_EventScript_164329 - jump Route124_DivingTreasureHuntersHouse_EventScript_163EA2 + goto_if_eq Route124_DivingTreasureHuntersHouse_EventScript_164329 + goto Route124_DivingTreasureHuntersHouse_EventScript_163EA2 end Route124_DivingTreasureHuntersHouse_EventScript_163E44:: @ 8163E44 setvar 0x4001, 0 checkitem ITEM_RED_SHARD, 1 compare RESULT, 1 - callif 1, Route124_DivingTreasureHuntersHouse_EventScript_163E8A + call_if 1, Route124_DivingTreasureHuntersHouse_EventScript_163E8A checkitem ITEM_YELLOW_SHARD, 1 compare RESULT, 1 - callif 1, Route124_DivingTreasureHuntersHouse_EventScript_163E90 + call_if 1, Route124_DivingTreasureHuntersHouse_EventScript_163E90 checkitem ITEM_BLUE_SHARD, 1 compare RESULT, 1 - callif 1, Route124_DivingTreasureHuntersHouse_EventScript_163E96 + call_if 1, Route124_DivingTreasureHuntersHouse_EventScript_163E96 checkitem ITEM_GREEN_SHARD, 1 compare RESULT, 1 - callif 1, Route124_DivingTreasureHuntersHouse_EventScript_163E9C + call_if 1, Route124_DivingTreasureHuntersHouse_EventScript_163E9C return Route124_DivingTreasureHuntersHouse_EventScript_163E8A:: @ 8163E8A @@ -62,12 +62,12 @@ Route124_DivingTreasureHuntersHouse_EventScript_163E9C:: @ 8163E9C Route124_DivingTreasureHuntersHouse_EventScript_163EA2:: @ 8163EA2 msgbox Route124_DivingTreasureHuntersHouse_Text_19F544, 4 - jump Route124_DivingTreasureHuntersHouse_EventScript_163EB0 + goto Route124_DivingTreasureHuntersHouse_EventScript_163EB0 end Route124_DivingTreasureHuntersHouse_EventScript_163EB0:: @ 8163EB0 message Route124_DivingTreasureHuntersHouse_Text_19F5C5 - waittext + waitmessage switch 0x4001 case 1, Route124_DivingTreasureHuntersHouse_EventScript_163F61 case 2, Route124_DivingTreasureHuntersHouse_EventScript_163F87 @@ -91,7 +91,7 @@ Route124_DivingTreasureHuntersHouse_EventScript_163F61:: @ 8163F61 switch RESULT case 0, Route124_DivingTreasureHuntersHouse_EventScript_164256 case 1, Route124_DivingTreasureHuntersHouse_EventScript_16431F - jump Route124_DivingTreasureHuntersHouse_EventScript_16431F + goto Route124_DivingTreasureHuntersHouse_EventScript_16431F end Route124_DivingTreasureHuntersHouse_EventScript_163F87:: @ 8163F87 @@ -99,7 +99,7 @@ Route124_DivingTreasureHuntersHouse_EventScript_163F87:: @ 8163F87 switch RESULT case 0, Route124_DivingTreasureHuntersHouse_EventScript_164265 case 1, Route124_DivingTreasureHuntersHouse_EventScript_16431F - jump Route124_DivingTreasureHuntersHouse_EventScript_16431F + goto Route124_DivingTreasureHuntersHouse_EventScript_16431F end Route124_DivingTreasureHuntersHouse_EventScript_163FAD:: @ 8163FAD @@ -108,7 +108,7 @@ Route124_DivingTreasureHuntersHouse_EventScript_163FAD:: @ 8163FAD case 0, Route124_DivingTreasureHuntersHouse_EventScript_164256 case 1, Route124_DivingTreasureHuntersHouse_EventScript_164265 case 2, Route124_DivingTreasureHuntersHouse_EventScript_16431F - jump Route124_DivingTreasureHuntersHouse_EventScript_16431F + goto Route124_DivingTreasureHuntersHouse_EventScript_16431F end Route124_DivingTreasureHuntersHouse_EventScript_163FDE:: @ 8163FDE @@ -116,7 +116,7 @@ Route124_DivingTreasureHuntersHouse_EventScript_163FDE:: @ 8163FDE switch RESULT case 0, Route124_DivingTreasureHuntersHouse_EventScript_164274 case 1, Route124_DivingTreasureHuntersHouse_EventScript_16431F - jump Route124_DivingTreasureHuntersHouse_EventScript_16431F + goto Route124_DivingTreasureHuntersHouse_EventScript_16431F end Route124_DivingTreasureHuntersHouse_EventScript_164004:: @ 8164004 @@ -125,7 +125,7 @@ Route124_DivingTreasureHuntersHouse_EventScript_164004:: @ 8164004 case 0, Route124_DivingTreasureHuntersHouse_EventScript_164256 case 1, Route124_DivingTreasureHuntersHouse_EventScript_164274 case 2, Route124_DivingTreasureHuntersHouse_EventScript_16431F - jump Route124_DivingTreasureHuntersHouse_EventScript_16431F + goto Route124_DivingTreasureHuntersHouse_EventScript_16431F end Route124_DivingTreasureHuntersHouse_EventScript_164035:: @ 8164035 @@ -134,7 +134,7 @@ Route124_DivingTreasureHuntersHouse_EventScript_164035:: @ 8164035 case 0, Route124_DivingTreasureHuntersHouse_EventScript_164265 case 1, Route124_DivingTreasureHuntersHouse_EventScript_164274 case 2, Route124_DivingTreasureHuntersHouse_EventScript_16431F - jump Route124_DivingTreasureHuntersHouse_EventScript_16431F + goto Route124_DivingTreasureHuntersHouse_EventScript_16431F end Route124_DivingTreasureHuntersHouse_EventScript_164066:: @ 8164066 @@ -144,7 +144,7 @@ Route124_DivingTreasureHuntersHouse_EventScript_164066:: @ 8164066 case 1, Route124_DivingTreasureHuntersHouse_EventScript_164265 case 2, Route124_DivingTreasureHuntersHouse_EventScript_164274 case 3, Route124_DivingTreasureHuntersHouse_EventScript_16431F - jump Route124_DivingTreasureHuntersHouse_EventScript_16431F + goto Route124_DivingTreasureHuntersHouse_EventScript_16431F end Route124_DivingTreasureHuntersHouse_EventScript_1640A2:: @ 81640A2 @@ -152,7 +152,7 @@ Route124_DivingTreasureHuntersHouse_EventScript_1640A2:: @ 81640A2 switch RESULT case 0, Route124_DivingTreasureHuntersHouse_EventScript_164283 case 1, Route124_DivingTreasureHuntersHouse_EventScript_16431F - jump Route124_DivingTreasureHuntersHouse_EventScript_16431F + goto Route124_DivingTreasureHuntersHouse_EventScript_16431F end Route124_DivingTreasureHuntersHouse_EventScript_1640C8:: @ 81640C8 @@ -161,7 +161,7 @@ Route124_DivingTreasureHuntersHouse_EventScript_1640C8:: @ 81640C8 case 0, Route124_DivingTreasureHuntersHouse_EventScript_164256 case 1, Route124_DivingTreasureHuntersHouse_EventScript_164283 case 2, Route124_DivingTreasureHuntersHouse_EventScript_16431F - jump Route124_DivingTreasureHuntersHouse_EventScript_16431F + goto Route124_DivingTreasureHuntersHouse_EventScript_16431F end Route124_DivingTreasureHuntersHouse_EventScript_1640F9:: @ 81640F9 @@ -170,7 +170,7 @@ Route124_DivingTreasureHuntersHouse_EventScript_1640F9:: @ 81640F9 case 0, Route124_DivingTreasureHuntersHouse_EventScript_164265 case 1, Route124_DivingTreasureHuntersHouse_EventScript_164283 case 2, Route124_DivingTreasureHuntersHouse_EventScript_16431F - jump Route124_DivingTreasureHuntersHouse_EventScript_16431F + goto Route124_DivingTreasureHuntersHouse_EventScript_16431F end Route124_DivingTreasureHuntersHouse_EventScript_16412A:: @ 816412A @@ -180,7 +180,7 @@ Route124_DivingTreasureHuntersHouse_EventScript_16412A:: @ 816412A case 1, Route124_DivingTreasureHuntersHouse_EventScript_164265 case 2, Route124_DivingTreasureHuntersHouse_EventScript_164283 case 3, Route124_DivingTreasureHuntersHouse_EventScript_16431F - jump Route124_DivingTreasureHuntersHouse_EventScript_16431F + goto Route124_DivingTreasureHuntersHouse_EventScript_16431F end Route124_DivingTreasureHuntersHouse_EventScript_164166:: @ 8164166 @@ -189,7 +189,7 @@ Route124_DivingTreasureHuntersHouse_EventScript_164166:: @ 8164166 case 0, Route124_DivingTreasureHuntersHouse_EventScript_164274 case 1, Route124_DivingTreasureHuntersHouse_EventScript_164283 case 2, Route124_DivingTreasureHuntersHouse_EventScript_16431F - jump Route124_DivingTreasureHuntersHouse_EventScript_16431F + goto Route124_DivingTreasureHuntersHouse_EventScript_16431F end Route124_DivingTreasureHuntersHouse_EventScript_164197:: @ 8164197 @@ -199,7 +199,7 @@ Route124_DivingTreasureHuntersHouse_EventScript_164197:: @ 8164197 case 1, Route124_DivingTreasureHuntersHouse_EventScript_164274 case 2, Route124_DivingTreasureHuntersHouse_EventScript_164283 case 3, Route124_DivingTreasureHuntersHouse_EventScript_16431F - jump Route124_DivingTreasureHuntersHouse_EventScript_16431F + goto Route124_DivingTreasureHuntersHouse_EventScript_16431F end Route124_DivingTreasureHuntersHouse_EventScript_1641D3:: @ 81641D3 @@ -209,7 +209,7 @@ Route124_DivingTreasureHuntersHouse_EventScript_1641D3:: @ 81641D3 case 1, Route124_DivingTreasureHuntersHouse_EventScript_164274 case 2, Route124_DivingTreasureHuntersHouse_EventScript_164283 case 3, Route124_DivingTreasureHuntersHouse_EventScript_16431F - jump Route124_DivingTreasureHuntersHouse_EventScript_16431F + goto Route124_DivingTreasureHuntersHouse_EventScript_16431F end Route124_DivingTreasureHuntersHouse_EventScript_16420F:: @ 816420F @@ -220,42 +220,42 @@ Route124_DivingTreasureHuntersHouse_EventScript_16420F:: @ 816420F case 2, Route124_DivingTreasureHuntersHouse_EventScript_164274 case 3, Route124_DivingTreasureHuntersHouse_EventScript_164283 case 4, Route124_DivingTreasureHuntersHouse_EventScript_16431F - jump Route124_DivingTreasureHuntersHouse_EventScript_16431F + goto Route124_DivingTreasureHuntersHouse_EventScript_16431F end Route124_DivingTreasureHuntersHouse_EventScript_164256:: @ 8164256 setvar 0x8008, 48 setvar 0x8009, 95 - jump Route124_DivingTreasureHuntersHouse_EventScript_164292 + goto Route124_DivingTreasureHuntersHouse_EventScript_164292 Route124_DivingTreasureHuntersHouse_EventScript_164265:: @ 8164265 setvar 0x8008, 50 setvar 0x8009, 96 - jump Route124_DivingTreasureHuntersHouse_EventScript_164292 + goto Route124_DivingTreasureHuntersHouse_EventScript_164292 Route124_DivingTreasureHuntersHouse_EventScript_164274:: @ 8164274 setvar 0x8008, 49 setvar 0x8009, 97 - jump Route124_DivingTreasureHuntersHouse_EventScript_164292 + goto Route124_DivingTreasureHuntersHouse_EventScript_164292 Route124_DivingTreasureHuntersHouse_EventScript_164283:: @ 8164283 setvar 0x8008, 51 setvar 0x8009, 98 - jump Route124_DivingTreasureHuntersHouse_EventScript_164292 + goto Route124_DivingTreasureHuntersHouse_EventScript_164292 Route124_DivingTreasureHuntersHouse_EventScript_164292:: @ 8164292 - bufferitem 0, 0x8008 - bufferitem 1, 0x8009 + getitemname 0, 0x8008 + getitemname 1, 0x8009 msgbox Route124_DivingTreasureHuntersHouse_Text_19F5E0, 5 compare RESULT, 0 - jumpeq Route124_DivingTreasureHuntersHouse_EventScript_16431F + goto_if_eq Route124_DivingTreasureHuntersHouse_EventScript_16431F checkitemspace 0x8009, 1 compare RESULT, 1 - jumpeq Route124_DivingTreasureHuntersHouse_EventScript_1642D3 + goto_if_eq Route124_DivingTreasureHuntersHouse_EventScript_1642D3 checkitem 0x8008, 2 compare RESULT, 0 - jumpeq Route124_DivingTreasureHuntersHouse_EventScript_1642D3 - jump Route124_DivingTreasureHuntersHouse_EventScript_164315 + goto_if_eq Route124_DivingTreasureHuntersHouse_EventScript_1642D3 + goto Route124_DivingTreasureHuntersHouse_EventScript_164315 end Route124_DivingTreasureHuntersHouse_EventScript_1642D3:: @ 81642D3 @@ -264,11 +264,11 @@ Route124_DivingTreasureHuntersHouse_EventScript_1642D3:: @ 81642D3 msgbox Route124_DivingTreasureHuntersHouse_Text_19F606, 4 call Route124_DivingTreasureHuntersHouse_EventScript_163E44 compare 0x4001, 0 - jumpeq Route124_DivingTreasureHuntersHouse_EventScript_164333 + goto_if_eq Route124_DivingTreasureHuntersHouse_EventScript_164333 msgbox Route124_DivingTreasureHuntersHouse_Text_19F629, 5 compare RESULT, 1 - jumpeq Route124_DivingTreasureHuntersHouse_EventScript_163EB0 - jump Route124_DivingTreasureHuntersHouse_EventScript_16431F + goto_if_eq Route124_DivingTreasureHuntersHouse_EventScript_163EB0 + goto Route124_DivingTreasureHuntersHouse_EventScript_16431F end Route124_DivingTreasureHuntersHouse_EventScript_164315:: @ 8164315 diff --git a/data/scripts/maps/Route125.inc b/data/scripts/maps/Route125.inc index 0059fe6aa..489a7314b 100644 --- a/data/scripts/maps/Route125.inc +++ b/data/scripts/maps/Route125.inc @@ -4,7 +4,7 @@ Route125_MapScripts:: @ 8151F1E Route125_MapScript1_151F24:: @ 8151F24 checkflag 2090 - callif 1, Route125_EventScript_1A02C1 + call_if 1, Route125_EventScript_1A02C1 end Route125_EventScript_151F2E:: @ 8151F2E @@ -29,9 +29,9 @@ Route125_EventScript_151F73:: @ 8151F73 Route125_EventScript_151F8A:: @ 8151F8A trainerbattle 0, OPPONENT_ERNEST_1, 0, Route125_Text_1C11AF, Route125_Text_1C11ED - specialval RESULT, 57 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq Route125_EventScript_151FB1 + goto_if_eq Route125_EventScript_151FB1 msgbox Route125_Text_1C1208, 6 end diff --git a/data/scripts/maps/Route126.inc b/data/scripts/maps/Route126.inc index f3d1a77f9..729922681 100644 --- a/data/scripts/maps/Route126.inc +++ b/data/scripts/maps/Route126.inc @@ -4,7 +4,7 @@ Route126_MapScripts:: @ 8151FFE Route126_MapScript1_152004:: @ 8152004 checkflag 2090 - callif 1, Route126_EventScript_1A02C1 + call_if 1, Route126_EventScript_1A02C1 end Route126_EventScript_15200E:: @ 815200E diff --git a/data/scripts/maps/Route127.inc b/data/scripts/maps/Route127.inc index b4461b253..284d1fbd4 100644 --- a/data/scripts/maps/Route127.inc +++ b/data/scripts/maps/Route127.inc @@ -4,7 +4,7 @@ Route127_MapScripts:: @ 815206A Route127_MapScript1_152070:: @ 8152070 checkflag 2090 - callif 1, Route127_EventScript_1A02C1 + call_if 1, Route127_EventScript_1A02C1 end Route127_EventScript_15207A:: @ 815207A diff --git a/data/scripts/maps/Route128.inc b/data/scripts/maps/Route128.inc index 28317c4e3..615662fc1 100644 --- a/data/scripts/maps/Route128.inc +++ b/data/scripts/maps/Route128.inc @@ -5,7 +5,7 @@ Route128_MapScripts:: @ 815211B Route128_MapScript1_152126:: @ 8152126 checkflag 2090 - callif 1, Route128_EventScript_1A02C1 + call_if 1, Route128_EventScript_1A02C1 call Route128_EventScript_1A0196 end @@ -15,73 +15,73 @@ Route128_MapScript2_152135:: @ 8152135 Route128_EventScript_15213F:: @ 815213F lockall - pause 20 + delay 20 .ifndef SAPPHIRE - special 317 + special sub_807E25C waitstate .endif - move 4, Route128_Movement_152271 - waitmove 0 + applymovement 4, Route128_Movement_152271 + waitmovement 0 msgbox Route128_Text_171EE0, 4 - move 4, Route128_Movement_152279 - waitmove 0 + applymovement 4, Route128_Movement_152279 + waitmovement 0 msgbox Route128_Text_171F35, 4 - closebutton - move 5, Route128_Movement_152293 - waitmove 0 - move 4, Route128_Movement_1A0841 - waitmove 0 + closemessage + applymovement 5, Route128_Movement_152293 + waitmovement 0 + applymovement 4, Route128_Movement_1A0841 + waitmovement 0 msgbox Route128_Text_171F4B, 4 - closebutton - move 5, Route128_Movement_1522A1 - waitmove 0 - move 255, Route128_Movement_1A0841 - waitmove 0 + closemessage + applymovement 5, Route128_Movement_1522A1 + waitmovement 0 + applymovement 255, Route128_Movement_1A0841 + waitmovement 0 msgbox Route128_Text_172008, 4 - closebutton - move 4, Route128_Movement_15227E - move 255, Route128_Movement_1A083F - move 5, Route128_Movement_152290 - waitmove 0 + closemessage + applymovement 4, Route128_Movement_15227E + applymovement 255, Route128_Movement_1A083F + applymovement 5, Route128_Movement_152290 + waitmovement 0 msgbox Route128_Text_17210B, 4 - closebutton - pause 40 - move 5, Route128_Movement_152296 - move 4, Route128_Movement_152283 - waitmove 0 - disappear 5 - disappear 4 - pause 100 - setanimation 0, 1 - doanimation 30 - checkanimation 30 - reappear 3 - move 3, Route128_Movement_15226F - waitmove 0 - move 255, Route128_Movement_1A0843 - waitmove 0 + closemessage + delay 40 + applymovement 5, Route128_Movement_152296 + applymovement 4, Route128_Movement_152283 + waitmovement 0 + removeobject 5 + removeobject 4 + delay 100 + setfieldeffect 0, 1 + dofieldeffect 30 + waitfieldeffect 30 + addobject 3 + applymovement 3, Route128_Movement_15226F + waitmovement 0 + applymovement 255, Route128_Movement_1A0843 + waitmovement 0 msgbox Route128_Text_172181, 4 - closebutton - move 3, Route128_Movement_15226D - move 255, Route128_Movement_1A0841 - waitmove 0 + closemessage + applymovement 3, Route128_Movement_15226D + applymovement 255, Route128_Movement_1A0841 + waitmovement 0 .ifdef SAPPHIRE msgbox Route128_Text_1721A2, 4 .else msgbox Route128_Text_1722A1, 4 .endif - move 3, Route128_Movement_1A0845 - waitmove 0 + applymovement 3, Route128_Movement_1A0845 + waitmovement 0 msgbox Route128_Text_1723BE, 4 - closebutton - move 3, Route128_Movement_1A0845 - waitmove 0 - pause 50 - setanimation 0, 1 - doanimation 30 - pause 15 - disappear 3 - checkanimation 30 + closemessage + applymovement 3, Route128_Movement_1A0845 + waitmovement 0 + delay 50 + setfieldeffect 0, 1 + dofieldeffect 30 + delay 15 + removeobject 3 + waitfieldeffect 30 setvar 0x407b, 2 releaseall end @@ -182,9 +182,9 @@ Route128_Movement_1522A1:: @ 81522A1 Route128_EventScript_1522A4:: @ 81522A4 trainerbattle 0, OPPONENT_ISAIAH_1, 0, Route128_Text_1C1C67, Route128_Text_1C1C95 - specialval RESULT, 57 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq Route128_EventScript_1522CB + goto_if_eq Route128_EventScript_1522CB msgbox Route128_Text_1C1CC3, 6 end @@ -195,9 +195,9 @@ Route128_EventScript_1522CB:: @ 81522CB Route128_EventScript_1522E2:: @ 81522E2 trainerbattle 0, OPPONENT_KATELYN_1, 0, Route128_Text_1C1DB0, Route128_Text_1C1E25 - specialval RESULT, 57 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq Route128_EventScript_152309 + goto_if_eq Route128_EventScript_152309 msgbox Route128_Text_1C1E4A, 6 end diff --git a/data/scripts/maps/Route130.inc b/data/scripts/maps/Route130.inc index 38818dba3..69da29471 100644 --- a/data/scripts/maps/Route130.inc +++ b/data/scripts/maps/Route130.inc @@ -3,9 +3,9 @@ Route130_MapScripts:: @ 81523C2 .byte 0 Route130_MapScript1_1523C8:: @ 81523C8 - specialval RESULT, 209 + specialvar RESULT, IsMirageIslandPresent compare RESULT, 1 - jumpeq Route130_EventScript_15240C + goto_if_eq Route130_EventScript_15240C setflag 17 setflag 18 setflag 19 @@ -22,11 +22,11 @@ Route130_MapScript1_1523C8:: @ 81523C8 setflag 30 setflag 31 setflag 32 - setmapfooter 264 + setmaplayoutindex 264 end Route130_EventScript_15240C:: @ 815240C - setmapfooter 46 + setmaplayoutindex 46 end Route130_EventScript_152410:: @ 8152410 diff --git a/data/scripts/maps/Route131.inc b/data/scripts/maps/Route131.inc index 81cb7dc02..50ad4222b 100644 --- a/data/scripts/maps/Route131.inc +++ b/data/scripts/maps/Route131.inc @@ -4,11 +4,11 @@ Route131_MapScripts:: @ 815243E Route131_MapScript1_152444:: @ 8152444 checkflag 2052 - callif 1, Route131_EventScript_15244E + call_if 1, Route131_EventScript_15244E end Route131_EventScript_15244E:: @ 815244E - setmapfooter 320 + setmaplayoutindex 320 return Route131_EventScript_152452:: @ 8152452 diff --git a/data/scripts/maps/Route134.inc b/data/scripts/maps/Route134.inc index b1f77fac1..6b4d330d1 100644 --- a/data/scripts/maps/Route134.inc +++ b/data/scripts/maps/Route134.inc @@ -3,7 +3,7 @@ Route134_MapScripts:: @ 81525B5 .byte 0 Route134_MapScript1_1525BB:: @ 81525BB - warp4 Underwater_Route134, 255, 8, 6 + setdivewarp Underwater_Route134, 255, 8, 6 end Route134_EventScript_1525C4:: @ 81525C4 diff --git a/data/scripts/maps/RustboroCity.inc b/data/scripts/maps/RustboroCity.inc index c338e8b67..916eb8108 100644 --- a/data/scripts/maps/RustboroCity.inc +++ b/data/scripts/maps/RustboroCity.inc @@ -12,7 +12,7 @@ RustboroCity_EventScript_14C386:: @ 814C386 lock faceplayer checkflag 142 - jumpeq RustboroCity_EventScript_14C39B + goto_if_eq RustboroCity_EventScript_14C39B msgbox RustboroCity_Text_16689D, 4 release end @@ -37,7 +37,7 @@ RustboroCity_EventScript_14C3BA:: @ 814C3BA lock faceplayer checkflag 2055 - jumpeq RustboroCity_EventScript_14C3CF + goto_if_eq RustboroCity_EventScript_14C3CF msgbox RustboroCity_Text_16696D, 4 release end @@ -51,7 +51,7 @@ RustboroCity_EventScript_14C3D9:: @ 814C3D9 lock faceplayer checkflag 188 - jumpeq RustboroCity_EventScript_14C3EE + goto_if_eq RustboroCity_EventScript_14C3EE msgbox RustboroCity_Text_166B86, 4 release end @@ -101,8 +101,8 @@ RustboroCity_EventScript_14C449:: @ 814C449 lock faceplayer msgbox RustboroCity_Text_166D59, 4 - move 7, RustboroCity_Movement_1A083D - waitmove 0 + applymovement 7, RustboroCity_Movement_1A083D + waitmovement 0 release end @@ -110,8 +110,8 @@ RustboroCity_EventScript_14C45F:: @ 814C45F lock faceplayer msgbox RustboroCity_Text_166DB0, 4 - move 8, RustboroCity_Movement_1A083D - waitmove 0 + applymovement 8, RustboroCity_Movement_1A083D + waitmovement 0 release end @@ -124,60 +124,60 @@ RustboroCity_EventScript_14C475:: @ 814C475 RustboroCity_EventScript_14C481:: @ 814C481 lockall - movespriteperm 9, 14, 21 - spritebehave 9, 10 + setobjectxyperm 9, 14, 21 + setobjectmovementtype 9, 10 setvar 0x8004, 0 - jump RustboroCity_EventScript_14C4F4 + goto RustboroCity_EventScript_14C4F4 end RustboroCity_EventScript_14C498:: @ 814C498 lockall - movespriteperm 9, 14, 21 - spritebehave 9, 10 + setobjectxyperm 9, 14, 21 + setobjectmovementtype 9, 10 setvar 0x8004, 1 - jump RustboroCity_EventScript_14C4F4 + goto RustboroCity_EventScript_14C4F4 end RustboroCity_EventScript_14C4AF:: @ 814C4AF lockall - movespriteperm 9, 14, 21 - spritebehave 9, 10 + setobjectxyperm 9, 14, 21 + setobjectmovementtype 9, 10 setvar 0x8004, 2 - jump RustboroCity_EventScript_14C4F4 + goto RustboroCity_EventScript_14C4F4 end RustboroCity_EventScript_14C4C6:: @ 814C4C6 lockall - movespriteperm 9, 14, 21 - spritebehave 9, 10 + setobjectxyperm 9, 14, 21 + setobjectmovementtype 9, 10 setvar 0x8004, 3 - jump RustboroCity_EventScript_14C4F4 + goto RustboroCity_EventScript_14C4F4 end RustboroCity_EventScript_14C4DD:: @ 814C4DD lockall - movespriteperm 9, 14, 21 - spritebehave 9, 10 + setobjectxyperm 9, 14, 21 + setobjectmovementtype 9, 10 setvar 0x8004, 4 - jump RustboroCity_EventScript_14C4F4 + goto RustboroCity_EventScript_14C4F4 end RustboroCity_EventScript_14C4F4:: @ 814C4F4 msgbox RustboroCity_Text_166E65, 4 - closebutton - reappear 10 - reappear 9 - move 10, RustboroCity_Movement_14C5C2 - waitmove 0 - disappear 10 - move 9, RustboroCity_Movement_14C5D3 - waitmove 0 + closemessage + addobject 10 + addobject 9 + applymovement 10, RustboroCity_Movement_14C5C2 + waitmovement 0 + removeobject 10 + applymovement 9, RustboroCity_Movement_14C5D3 + waitmovement 0 msgbox RustboroCity_Text_166E7E, 4 - closebutton - move 9, RustboroCity_Movement_14C5DB - waitmove 0 - disappear 9 - movespriteperm 9, 30, 10 + closemessage + applymovement 9, RustboroCity_Movement_14C5DB + waitmovement 0 + removeobject 9 + setobjectxyperm 9, 30, 10 clearflag 732 setflag 142 setvar 0x405a, 2 @@ -200,30 +200,30 @@ RustboroCity_EventScript_14C4F4:: @ 814C4F4 return @ 814C56F - move 9, RustboroCity_Movement_14C5E3 - waitmove 0 + applymovement 9, RustboroCity_Movement_14C5E3 + waitmovement 0 return @ 814C57A - move 9, RustboroCity_Movement_14C5E7 - waitmove 0 + applymovement 9, RustboroCity_Movement_14C5E7 + waitmovement 0 return @ 814C585 - move 9, RustboroCity_Movement_14C5EC - waitmove 0 + applymovement 9, RustboroCity_Movement_14C5EC + waitmovement 0 return @ 814C590 - move 9, RustboroCity_Movement_14C5F1 - waitmove 0 + applymovement 9, RustboroCity_Movement_14C5F1 + waitmovement 0 return @ 814C59B - move 9, RustboroCity_Movement_14C5F7 - waitmove 0 - move 255, RustboroCity_Movement_1A0841 - waitmove 0 + applymovement 9, RustboroCity_Movement_14C5F7 + waitmovement 0 + applymovement 255, RustboroCity_Movement_1A0841 + waitmovement 0 return @ 814C5B0 @@ -327,105 +327,105 @@ RustboroCity_EventScript_14C5FF:: @ 814C5FF lock faceplayer checkflag 143 - jumpeq RustboroCity_EventScript_14C614 + goto_if_eq RustboroCity_EventScript_14C614 msgbox RustboroCity_Text_166F6B, 4 release end RustboroCity_EventScript_14C614:: @ 814C614 - checksound + waitse setvar 0x4001, 4 - jump RustboroCity_EventScript_14C77D + goto RustboroCity_EventScript_14C77D end RustboroCity_EventScript_14C620:: @ 814C620 lockall setvar 0x4001, 0 - jump RustboroCity_EventScript_14C650 + goto RustboroCity_EventScript_14C650 end RustboroCity_EventScript_14C62C:: @ 814C62C lockall setvar 0x4001, 1 - jump RustboroCity_EventScript_14C650 + goto RustboroCity_EventScript_14C650 end RustboroCity_EventScript_14C638:: @ 814C638 lockall setvar 0x4001, 2 - jump RustboroCity_EventScript_14C650 + goto RustboroCity_EventScript_14C650 end RustboroCity_EventScript_14C644:: @ 814C644 lockall setvar 0x4001, 3 - jump RustboroCity_EventScript_14C650 + goto RustboroCity_EventScript_14C650 end RustboroCity_EventScript_14C650:: @ 814C650 compare 0x4001, 0 - callif 1, RustboroCity_EventScript_14C691 + call_if 1, RustboroCity_EventScript_14C691 compare 0x4001, 1 - callif 1, RustboroCity_EventScript_14C6BD + call_if 1, RustboroCity_EventScript_14C6BD compare 0x4001, 2 - callif 1, RustboroCity_EventScript_14C6E9 + call_if 1, RustboroCity_EventScript_14C6E9 compare 0x4001, 3 - callif 1, RustboroCity_EventScript_14C715 + call_if 1, RustboroCity_EventScript_14C715 setflag 159 setvar 0x405a, 3 - moveoffscreen 9 + moveobjectoffscreen 9 msgbox RustboroCity_Text_166EA5, 4 releaseall end RustboroCity_EventScript_14C691:: @ 814C691 - move 9, RustboroCity_Movement_1A0841 - waitmove 0 - playsfx 21 - move 9, RustboroCity_Movement_1A0833 - waitmove 0 - move 9, RustboroCity_Movement_1A0835 - waitmove 0 - move 255, RustboroCity_Movement_1A0845 - waitmove 0 + applymovement 9, RustboroCity_Movement_1A0841 + waitmovement 0 + playse 21 + applymovement 9, RustboroCity_Movement_1A0833 + waitmovement 0 + applymovement 9, RustboroCity_Movement_1A0835 + waitmovement 0 + applymovement 255, RustboroCity_Movement_1A0845 + waitmovement 0 return RustboroCity_EventScript_14C6BD:: @ 814C6BD - move 9, RustboroCity_Movement_1A083F - waitmove 0 - playsfx 21 - move 9, RustboroCity_Movement_1A0833 - waitmove 0 - move 9, RustboroCity_Movement_1A0835 - waitmove 0 - move 255, RustboroCity_Movement_1A0843 - waitmove 0 + applymovement 9, RustboroCity_Movement_1A083F + waitmovement 0 + playse 21 + applymovement 9, RustboroCity_Movement_1A0833 + waitmovement 0 + applymovement 9, RustboroCity_Movement_1A0835 + waitmovement 0 + applymovement 255, RustboroCity_Movement_1A0843 + waitmovement 0 return RustboroCity_EventScript_14C6E9:: @ 814C6E9 - move 9, RustboroCity_Movement_1A0845 - waitmove 0 - playsfx 21 - move 9, RustboroCity_Movement_1A0833 - waitmove 0 - move 9, RustboroCity_Movement_1A0835 - waitmove 0 - move 255, RustboroCity_Movement_1A0841 - waitmove 0 + applymovement 9, RustboroCity_Movement_1A0845 + waitmovement 0 + playse 21 + applymovement 9, RustboroCity_Movement_1A0833 + waitmovement 0 + applymovement 9, RustboroCity_Movement_1A0835 + waitmovement 0 + applymovement 255, RustboroCity_Movement_1A0841 + waitmovement 0 return RustboroCity_EventScript_14C715:: @ 814C715 - move 9, RustboroCity_Movement_1A0845 - waitmove 0 - playsfx 21 - move 9, RustboroCity_Movement_1A0833 - waitmove 0 - move 9, RustboroCity_Movement_1A0835 - waitmove 0 - move 9, RustboroCity_Movement_14C74B - waitmove 0 - move 255, RustboroCity_Movement_1A0841 - waitmove 0 + applymovement 9, RustboroCity_Movement_1A0845 + waitmovement 0 + playse 21 + applymovement 9, RustboroCity_Movement_1A0833 + waitmovement 0 + applymovement 9, RustboroCity_Movement_1A0835 + waitmovement 0 + applymovement 9, RustboroCity_Movement_14C74B + waitmovement 0 + applymovement 255, RustboroCity_Movement_1A0841 + waitmovement 0 return RustboroCity_Movement_14C74B:: @ 814C74B @@ -435,48 +435,48 @@ RustboroCity_Movement_14C74B:: @ 814C74B RustboroCity_EventScript_14C74D:: @ 814C74D lockall setvar 0x4001, 0 - jump RustboroCity_EventScript_14C77D + goto RustboroCity_EventScript_14C77D end RustboroCity_EventScript_14C759:: @ 814C759 lockall setvar 0x4001, 1 - jump RustboroCity_EventScript_14C77D + goto RustboroCity_EventScript_14C77D end RustboroCity_EventScript_14C765:: @ 814C765 lockall setvar 0x4001, 2 - jump RustboroCity_EventScript_14C77D + goto RustboroCity_EventScript_14C77D end RustboroCity_EventScript_14C771:: @ 814C771 lockall setvar 0x4001, 3 - jump RustboroCity_EventScript_14C77D + goto RustboroCity_EventScript_14C77D end RustboroCity_EventScript_14C77D:: @ 814C77D compare 0x4001, 0 - callif 1, RustboroCity_EventScript_14C7FE + call_if 1, RustboroCity_EventScript_14C7FE compare 0x4001, 1 - callif 1, RustboroCity_EventScript_14C82A + call_if 1, RustboroCity_EventScript_14C82A compare 0x4001, 2 - callif 1, RustboroCity_EventScript_14C856 + call_if 1, RustboroCity_EventScript_14C856 compare 0x4001, 3 - callif 1, RustboroCity_EventScript_14C882 + call_if 1, RustboroCity_EventScript_14C882 compare 0x4001, 4 - callif 1, RustboroCity_EventScript_14C8B8 + call_if 1, RustboroCity_EventScript_14C8B8 msgbox RustboroCity_Text_166FB4, 4 giveitem ITEM_GREAT_BALL compare RESULT, 0 - callif 1, RustboroCity_EventScript_14C7F5 + call_if 1, RustboroCity_EventScript_14C7F5 msgbox RustboroCity_Text_16707F, 4 - closebutton + closemessage setflag 144 setflag 732 setvar 0x405a, 5 - pause 30 + delay 30 warp RustboroCity_DevonCorp_3F, 255, 2, 2 waitstate releaseall @@ -487,75 +487,75 @@ RustboroCity_EventScript_14C7F5:: @ 814C7F5 return RustboroCity_EventScript_14C7FE:: @ 814C7FE - move 9, RustboroCity_Movement_1A0841 - waitmove 0 - playsfx 21 - move 9, RustboroCity_Movement_1A0833 - waitmove 0 - move 9, RustboroCity_Movement_1A0835 - waitmove 0 - move 255, RustboroCity_Movement_1A0845 - waitmove 0 + applymovement 9, RustboroCity_Movement_1A0841 + waitmovement 0 + playse 21 + applymovement 9, RustboroCity_Movement_1A0833 + waitmovement 0 + applymovement 9, RustboroCity_Movement_1A0835 + waitmovement 0 + applymovement 255, RustboroCity_Movement_1A0845 + waitmovement 0 return RustboroCity_EventScript_14C82A:: @ 814C82A - move 9, RustboroCity_Movement_1A0843 - waitmove 0 - playsfx 21 - move 9, RustboroCity_Movement_1A0833 - waitmove 0 - move 9, RustboroCity_Movement_1A0835 - waitmove 0 - move 255, RustboroCity_Movement_1A083F - waitmove 0 + applymovement 9, RustboroCity_Movement_1A0843 + waitmovement 0 + playse 21 + applymovement 9, RustboroCity_Movement_1A0833 + waitmovement 0 + applymovement 9, RustboroCity_Movement_1A0835 + waitmovement 0 + applymovement 255, RustboroCity_Movement_1A083F + waitmovement 0 return RustboroCity_EventScript_14C856:: @ 814C856 - move 9, RustboroCity_Movement_1A0845 - waitmove 0 - playsfx 21 - move 9, RustboroCity_Movement_1A0833 - waitmove 0 - move 9, RustboroCity_Movement_1A0835 - waitmove 0 - move 255, RustboroCity_Movement_1A0841 - waitmove 0 + applymovement 9, RustboroCity_Movement_1A0845 + waitmovement 0 + playse 21 + applymovement 9, RustboroCity_Movement_1A0833 + waitmovement 0 + applymovement 9, RustboroCity_Movement_1A0835 + waitmovement 0 + applymovement 255, RustboroCity_Movement_1A0841 + waitmovement 0 return RustboroCity_EventScript_14C882:: @ 814C882 - move 9, RustboroCity_Movement_1A0845 - waitmove 0 - playsfx 21 - move 9, RustboroCity_Movement_1A0833 - waitmove 0 - move 9, RustboroCity_Movement_1A0835 - waitmove 0 - move 9, RustboroCity_Movement_14C74B - waitmove 0 - move 255, RustboroCity_Movement_1A0841 - waitmove 0 + applymovement 9, RustboroCity_Movement_1A0845 + waitmovement 0 + playse 21 + applymovement 9, RustboroCity_Movement_1A0833 + waitmovement 0 + applymovement 9, RustboroCity_Movement_1A0835 + waitmovement 0 + applymovement 9, RustboroCity_Movement_14C74B + waitmovement 0 + applymovement 255, RustboroCity_Movement_1A0841 + waitmovement 0 return RustboroCity_EventScript_14C8B8:: @ 814C8B8 - move 9, RustboroCity_Movement_1A083F - waitmove 0 - playsfx 21 - move 9, RustboroCity_Movement_1A0833 - waitmove 0 - move 9, RustboroCity_Movement_1A0835 - waitmove 0 + applymovement 9, RustboroCity_Movement_1A083F + waitmovement 0 + playse 21 + applymovement 9, RustboroCity_Movement_1A0833 + waitmovement 0 + applymovement 9, RustboroCity_Movement_1A0835 + waitmovement 0 return RustboroCity_EventScript_14C8DA:: @ 814C8DA lock faceplayer checkflag 288 - jumpeq RustboroCity_EventScript_14C917 - checkgender + goto_if_eq RustboroCity_EventScript_14C917 + checkplayergender compare RESULT, 0 - jumpeq RustboroCity_EventScript_14C8FD + goto_if_eq RustboroCity_EventScript_14C8FD compare RESULT, 1 - jumpeq RustboroCity_EventScript_14C90A + goto_if_eq RustboroCity_EventScript_14C90A end RustboroCity_EventScript_14C8FD:: @ 814C8FD @@ -571,11 +571,11 @@ RustboroCity_EventScript_14C90A:: @ 814C90A end RustboroCity_EventScript_14C917:: @ 814C917 - checkgender + checkplayergender compare RESULT, 0 - jumpeq RustboroCity_EventScript_14C92F + goto_if_eq RustboroCity_EventScript_14C92F compare RESULT, 1 - jumpeq RustboroCity_EventScript_14C939 + goto_if_eq RustboroCity_EventScript_14C939 end RustboroCity_EventScript_14C92F:: @ 814C92F diff --git a/data/scripts/maps/RustboroCity_CuttersHouse.inc b/data/scripts/maps/RustboroCity_CuttersHouse.inc index d400de1ef..3e98746f3 100644 --- a/data/scripts/maps/RustboroCity_CuttersHouse.inc +++ b/data/scripts/maps/RustboroCity_CuttersHouse.inc @@ -5,7 +5,7 @@ RustboroCity_CuttersHouse_EventScript_157D27:: @ 8157D27 lock faceplayer checkflag 137 - jumpeq RustboroCity_CuttersHouse_EventScript_157D53 + goto_if_eq RustboroCity_CuttersHouse_EventScript_157D53 msgbox RustboroCity_CuttersHouse_Text_18509C, 4 giveitem ITEM_HM01 setflag 137 diff --git a/data/scripts/maps/RustboroCity_DevonCorp_1F.inc b/data/scripts/maps/RustboroCity_DevonCorp_1F.inc index 97a59257f..48d8aaf9f 100644 --- a/data/scripts/maps/RustboroCity_DevonCorp_1F.inc +++ b/data/scripts/maps/RustboroCity_DevonCorp_1F.inc @@ -4,21 +4,21 @@ RustboroCity_DevonCorp_1F_MapScripts:: @ 8157406 RustboroCity_DevonCorp_1F_MapScript1_15740C:: @ 815740C checkflag 144 - callif 0, RustboroCity_DevonCorp_1F_EventScript_157416 + call_if 0, RustboroCity_DevonCorp_1F_EventScript_157416 end RustboroCity_DevonCorp_1F_EventScript_157416:: @ 8157416 - movespriteperm 2, 14, 2 - spritebehave 2, 8 + setobjectxyperm 2, 14, 2 + setobjectmovementtype 2, 8 return RustboroCity_DevonCorp_1F_EventScript_157422:: @ 8157422 lock faceplayer checkflag 144 - jumpeq RustboroCity_DevonCorp_1F_EventScript_15744A + goto_if_eq RustboroCity_DevonCorp_1F_EventScript_15744A checkflag 142 - jumpeq RustboroCity_DevonCorp_1F_EventScript_157440 + goto_if_eq RustboroCity_DevonCorp_1F_EventScript_157440 msgbox RustboroCity_DevonCorp_1F_Text_1829A4, 4 release end @@ -37,11 +37,11 @@ RustboroCity_DevonCorp_1F_EventScript_157454:: @ 8157454 lock faceplayer checkflag 144 - jumpeq RustboroCity_DevonCorp_1F_EventScript_15747B + goto_if_eq RustboroCity_DevonCorp_1F_EventScript_15747B checkflag 143 - jumpeq RustboroCity_DevonCorp_1F_EventScript_157485 + goto_if_eq RustboroCity_DevonCorp_1F_EventScript_157485 checkflag 142 - jumpeq RustboroCity_DevonCorp_1F_EventScript_157485 + goto_if_eq RustboroCity_DevonCorp_1F_EventScript_157485 msgbox RustboroCity_DevonCorp_1F_Text_182AF0, 4 release end @@ -60,11 +60,11 @@ RustboroCity_DevonCorp_1F_EventScript_15748F:: @ 815748F lock faceplayer checkflag 144 - jumpeq RustboroCity_DevonCorp_1F_EventScript_1574B6 + goto_if_eq RustboroCity_DevonCorp_1F_EventScript_1574B6 checkflag 143 - jumpeq RustboroCity_DevonCorp_1F_EventScript_1574C0 + goto_if_eq RustboroCity_DevonCorp_1F_EventScript_1574C0 checkflag 142 - jumpeq RustboroCity_DevonCorp_1F_EventScript_1574C0 + goto_if_eq RustboroCity_DevonCorp_1F_EventScript_1574C0 msgbox RustboroCity_DevonCorp_1F_Text_1828EE, 4 release end diff --git a/data/scripts/maps/RustboroCity_DevonCorp_2F.inc b/data/scripts/maps/RustboroCity_DevonCorp_2F.inc index e35015b3e..f40c1b87b 100644 --- a/data/scripts/maps/RustboroCity_DevonCorp_2F.inc +++ b/data/scripts/maps/RustboroCity_DevonCorp_2F.inc @@ -4,7 +4,7 @@ RustboroCity_DevonCorp_2F_MapScripts:: @ 81574CA RustboroCity_DevonCorp_2F_MapScript1_1574D0:: @ 81574D0 compare 0x40c4, 1 - callif 1, RustboroCity_DevonCorp_2F_EventScript_1574DC + call_if 1, RustboroCity_DevonCorp_2F_EventScript_1574DC end RustboroCity_DevonCorp_2F_EventScript_1574DC:: @ 81574DC @@ -15,7 +15,7 @@ RustboroCity_DevonCorp_2F_EventScript_1574E2:: @ 81574E2 lock faceplayer compare 0x40c4, 1 - callif 1, RustboroCity_DevonCorp_2F_EventScript_1574DC + call_if 1, RustboroCity_DevonCorp_2F_EventScript_1574DC msgbox RustboroCity_DevonCorp_2F_Text_182B81, 4 release end @@ -24,9 +24,9 @@ RustboroCity_DevonCorp_2F_EventScript_1574F9:: @ 81574F9 lock faceplayer compare 0x40c4, 1 - callif 1, RustboroCity_DevonCorp_2F_EventScript_1574DC + call_if 1, RustboroCity_DevonCorp_2F_EventScript_1574DC checkflag 287 - jumpeq RustboroCity_DevonCorp_2F_EventScript_157519 + goto_if_eq RustboroCity_DevonCorp_2F_EventScript_157519 msgbox RustboroCity_DevonCorp_2F_Text_182BD8, 4 release end @@ -40,9 +40,9 @@ RustboroCity_DevonCorp_2F_EventScript_157523:: @ 8157523 lock faceplayer compare 0x40c4, 1 - callif 1, RustboroCity_DevonCorp_2F_EventScript_1574DC + call_if 1, RustboroCity_DevonCorp_2F_EventScript_1574DC checkflag 188 - jumpeq RustboroCity_DevonCorp_2F_EventScript_157543 + goto_if_eq RustboroCity_DevonCorp_2F_EventScript_157543 msgbox RustboroCity_DevonCorp_2F_Text_182D2A, 4 release end @@ -56,7 +56,7 @@ RustboroCity_DevonCorp_2F_EventScript_15754D:: @ 815754D lock faceplayer compare 0x40c4, 1 - callif 1, RustboroCity_DevonCorp_2F_EventScript_1574DC + call_if 1, RustboroCity_DevonCorp_2F_EventScript_1574DC msgbox RustboroCity_DevonCorp_2F_Text_182E6B, 4 release end @@ -65,30 +65,30 @@ RustboroCity_DevonCorp_2F_EventScript_157564:: @ 8157564 lock faceplayer compare 0x40c4, 2 - jumpeq RustboroCity_DevonCorp_2F_EventScript_15764A + goto_if_eq RustboroCity_DevonCorp_2F_EventScript_15764A compare 0x40c4, 1 - jumpeq RustboroCity_DevonCorp_2F_EventScript_157640 + goto_if_eq RustboroCity_DevonCorp_2F_EventScript_157640 msgbox RustboroCity_DevonCorp_2F_Text_182ED5, 4 checkitem ITEM_ROOT_FOSSIL, 1 compare RESULT, 1 - jumpeq RustboroCity_DevonCorp_2F_EventScript_1575A6 + goto_if_eq RustboroCity_DevonCorp_2F_EventScript_1575A6 checkitem ITEM_CLAW_FOSSIL, 1 compare RESULT, 1 - jumpeq RustboroCity_DevonCorp_2F_EventScript_1575EE + goto_if_eq RustboroCity_DevonCorp_2F_EventScript_1575EE release end RustboroCity_DevonCorp_2F_EventScript_1575A6:: @ 81575A6 - closebutton - playsfx 21 - move 5, RustboroCity_DevonCorp_2F_Movement_1A0833 - waitmove 0 - move 5, RustboroCity_DevonCorp_2F_Movement_1A0835 - waitmove 0 + closemessage + playse 21 + applymovement 5, RustboroCity_DevonCorp_2F_Movement_1A0833 + waitmovement 0 + applymovement 5, RustboroCity_DevonCorp_2F_Movement_1A0835 + waitmovement 0 msgbox RustboroCity_DevonCorp_2F_Text_182F35, 5 compare RESULT, 0 - jumpeq RustboroCity_DevonCorp_2F_EventScript_157636 - bufferitem 0, ITEM_ROOT_FOSSIL + goto_if_eq RustboroCity_DevonCorp_2F_EventScript_157636 + getitemname 0, ITEM_ROOT_FOSSIL msgbox RustboroCity_DevonCorp_2F_Text_183023, 4 removeitem ITEM_ROOT_FOSSIL, 1 setvar 0x40c4, 1 @@ -97,16 +97,16 @@ RustboroCity_DevonCorp_2F_EventScript_1575A6:: @ 81575A6 end RustboroCity_DevonCorp_2F_EventScript_1575EE:: @ 81575EE - closebutton - playsfx 21 - move 5, RustboroCity_DevonCorp_2F_Movement_1A0833 - waitmove 0 - move 5, RustboroCity_DevonCorp_2F_Movement_1A0835 - waitmove 0 + closemessage + playse 21 + applymovement 5, RustboroCity_DevonCorp_2F_Movement_1A0833 + waitmovement 0 + applymovement 5, RustboroCity_DevonCorp_2F_Movement_1A0835 + waitmovement 0 msgbox RustboroCity_DevonCorp_2F_Text_182F35, 5 compare RESULT, 0 - jumpeq RustboroCity_DevonCorp_2F_EventScript_157636 - bufferitem 0, ITEM_CLAW_FOSSIL + goto_if_eq RustboroCity_DevonCorp_2F_EventScript_157636 + getitemname 0, ITEM_CLAW_FOSSIL msgbox RustboroCity_DevonCorp_2F_Text_183023, 4 removeitem ITEM_CLAW_FOSSIL, 1 setvar 0x40c4, 1 @@ -126,48 +126,48 @@ RustboroCity_DevonCorp_2F_EventScript_157640:: @ 8157640 RustboroCity_DevonCorp_2F_EventScript_15764A:: @ 815764A compare 0x40c5, 1 - jumpeq RustboroCity_DevonCorp_2F_EventScript_157661 + goto_if_eq RustboroCity_DevonCorp_2F_EventScript_157661 compare 0x40c5, 2 - jumpeq RustboroCity_DevonCorp_2F_EventScript_1576B4 + goto_if_eq RustboroCity_DevonCorp_2F_EventScript_1576B4 end RustboroCity_DevonCorp_2F_EventScript_157661:: @ 8157661 - bufferpoke 1, SPECIES_LILEEP + getspeciesname 1, SPECIES_LILEEP msgbox RustboroCity_DevonCorp_2F_Text_183124, 4 countpokemon compare RESULT, 6 - jumpeq RustboroCity_DevonCorp_2F_EventScript_157707 + goto_if_eq RustboroCity_DevonCorp_2F_EventScript_157707 copyvar 0x8004, RESULT setvar 0x40c4, 0 setflag 267 - fanfare 370 + playfanfare 370 message RustboroCity_DevonCorp_2F_Text_18319E waitfanfare - waittext - givepokemon SPECIES_LILEEP, 20, ITEM_NONE, 0x0, 0x0, 0 + waitmessage + givepoke SPECIES_LILEEP, 20, ITEM_NONE, 0x0, 0x0, 0 msgbox RustboroCity_DevonCorp_2F_Text_1A1102, 5 compare RESULT, 1 - callif 1, RustboroCity_DevonCorp_2F_EventScript_1A0678 + call_if 1, RustboroCity_DevonCorp_2F_EventScript_1A0678 release end RustboroCity_DevonCorp_2F_EventScript_1576B4:: @ 81576B4 - bufferpoke 1, SPECIES_ANORITH + getspeciesname 1, SPECIES_ANORITH msgbox RustboroCity_DevonCorp_2F_Text_183124, 4 countpokemon compare RESULT, 6 - jumpeq RustboroCity_DevonCorp_2F_EventScript_157707 + goto_if_eq RustboroCity_DevonCorp_2F_EventScript_157707 copyvar 0x8004, RESULT setvar 0x40c4, 0 setflag 267 - fanfare 370 + playfanfare 370 message RustboroCity_DevonCorp_2F_Text_18319E waitfanfare - waittext - givepokemon SPECIES_ANORITH, 20, ITEM_NONE, 0x0, 0x0, 0 + waitmessage + givepoke SPECIES_ANORITH, 20, ITEM_NONE, 0x0, 0x0, 0 msgbox RustboroCity_DevonCorp_2F_Text_1A1102, 5 compare RESULT, 1 - callif 1, RustboroCity_DevonCorp_2F_EventScript_1A0678 + call_if 1, RustboroCity_DevonCorp_2F_EventScript_1A0678 release end diff --git a/data/scripts/maps/RustboroCity_DevonCorp_3F.inc b/data/scripts/maps/RustboroCity_DevonCorp_3F.inc index 2b749c873..6f0152e60 100644 --- a/data/scripts/maps/RustboroCity_DevonCorp_3F.inc +++ b/data/scripts/maps/RustboroCity_DevonCorp_3F.inc @@ -6,12 +6,12 @@ RustboroCity_DevonCorp_3F_MapScripts:: @ 8157711 RustboroCity_DevonCorp_3F_MapScript1_157721:: @ 8157721 compare 0x408f, 0 - callif 1, RustboroCity_DevonCorp_3F_EventScript_15772D + call_if 1, RustboroCity_DevonCorp_3F_EventScript_15772D end RustboroCity_DevonCorp_3F_EventScript_15772D:: @ 815772D - movespriteperm 2, 3, 2 - spritebehave 2, 9 + setobjectxyperm 2, 3, 2 + setobjectmovementtype 2, 9 return RustboroCity_DevonCorp_3F_MapScript2_157739:: @ 8157739 @@ -19,7 +19,7 @@ RustboroCity_DevonCorp_3F_MapScript2_157739:: @ 8157739 .2byte 0 RustboroCity_DevonCorp_3F_EventScript_157743:: @ 8157743 - spriteface 255, 4 + turnobject 255, 4 end RustboroCity_DevonCorp_3F_MapScript2_157748:: @ 8157748 @@ -29,31 +29,31 @@ RustboroCity_DevonCorp_3F_MapScript2_157748:: @ 8157748 RustboroCity_DevonCorp_3F_EventScript_157752:: @ 8157752 lockall msgbox RustboroCity_DevonCorp_3F_Text_18374C, 4 - closebutton - move 2, RustboroCity_DevonCorp_3F_Movement_157815 - waitmove 0 - pause 80 - move 2, RustboroCity_DevonCorp_3F_Movement_15781E - waitmove 0 + closemessage + applymovement 2, RustboroCity_DevonCorp_3F_Movement_157815 + waitmovement 0 + delay 80 + applymovement 2, RustboroCity_DevonCorp_3F_Movement_15781E + waitmovement 0 msgbox RustboroCity_DevonCorp_3F_Text_183903, 4 - closebutton - playmusic 420, 0 - move 2, RustboroCity_DevonCorp_3F_Movement_157803 - move 255, RustboroCity_DevonCorp_3F_Movement_157827 - waitmove 0 + closemessage + playbgm 420, 0 + applymovement 2, RustboroCity_DevonCorp_3F_Movement_157803 + applymovement 255, RustboroCity_DevonCorp_3F_Movement_157827 + waitmovement 0 msgbox RustboroCity_DevonCorp_3F_Text_18394A, 4 - closebutton - fadedefault - move 2, RustboroCity_DevonCorp_3F_Movement_157812 - move 255, RustboroCity_DevonCorp_3F_Movement_157835 - waitmove 0 + closemessage + fadedefaultbgm + applymovement 2, RustboroCity_DevonCorp_3F_Movement_157812 + applymovement 255, RustboroCity_DevonCorp_3F_Movement_157835 + waitmovement 0 msgbox RustboroCity_DevonCorp_3F_Text_18320B, 4 giveitem ITEM_LETTER msgbox RustboroCity_DevonCorp_3F_Text_18337E, 4 - fanfare 370 + playfanfare 370 message RustboroCity_DevonCorp_3F_Text_183422 waitfanfare - waittext + waitmessage setflag 2050 setflag 188 msgbox RustboroCity_DevonCorp_3F_Text_183439, 4 @@ -147,13 +147,13 @@ RustboroCity_DevonCorp_3F_EventScript_15783B:: @ 815783B lock faceplayer checkflag 272 - jumpeq RustboroCity_DevonCorp_3F_EventScript_15789B + goto_if_eq RustboroCity_DevonCorp_3F_EventScript_15789B checkflag 189 - jumpeq RustboroCity_DevonCorp_3F_EventScript_157864 + goto_if_eq RustboroCity_DevonCorp_3F_EventScript_157864 msgbox RustboroCity_DevonCorp_3F_Text_18351E, 4 - closebutton - move LAST_TALKED, RustboroCity_DevonCorp_3F_Movement_1A083D - waitmove 0 + closemessage + applymovement LAST_TALKED, RustboroCity_DevonCorp_3F_Movement_1A083D + waitmovement 0 release end @@ -161,20 +161,20 @@ RustboroCity_DevonCorp_3F_EventScript_157864:: @ 8157864 msgbox RustboroCity_DevonCorp_3F_Text_18353E, 4 giveitem ITEM_EXP_SHARE compare RESULT, 0 - jumpeq RustboroCity_DevonCorp_3F_EventScript_1A029B + goto_if_eq RustboroCity_DevonCorp_3F_EventScript_1A029B setflag 272 msgbox RustboroCity_DevonCorp_3F_Text_1835B3, 4 - closebutton - move LAST_TALKED, RustboroCity_DevonCorp_3F_Movement_1A083D - waitmove 0 + closemessage + applymovement LAST_TALKED, RustboroCity_DevonCorp_3F_Movement_1A083D + waitmovement 0 release end RustboroCity_DevonCorp_3F_EventScript_15789B:: @ 815789B msgbox RustboroCity_DevonCorp_3F_Text_18368D, 4 - closebutton - move LAST_TALKED, RustboroCity_DevonCorp_3F_Movement_1A083D - waitmove 0 + closemessage + applymovement LAST_TALKED, RustboroCity_DevonCorp_3F_Movement_1A083D + waitmovement 0 release end @@ -182,7 +182,7 @@ RustboroCity_DevonCorp_3F_EventScript_1578B0:: @ 81578B0 lock faceplayer checkflag 256 - jumpeq RustboroCity_DevonCorp_3F_EventScript_1578C5 + goto_if_eq RustboroCity_DevonCorp_3F_EventScript_1578C5 msgbox RustboroCity_DevonCorp_3F_Text_18395C, 4 release end diff --git a/data/scripts/maps/RustboroCity_Flat2_1F.inc b/data/scripts/maps/RustboroCity_Flat2_1F.inc index 5aa91d5d1..b6b8b41b1 100644 --- a/data/scripts/maps/RustboroCity_Flat2_1F.inc +++ b/data/scripts/maps/RustboroCity_Flat2_1F.inc @@ -8,8 +8,8 @@ RustboroCity_Flat2_1F_EventScript_157D7A:: @ 8157D7A RustboroCity_Flat2_1F_EventScript_157D83:: @ 8157D83 lock faceplayer - checksound - pokecry SPECIES_SKITTY, 0 + waitse + playpokecry SPECIES_SKITTY, 0 msgbox RustboroCity_Flat2_1F_Text_185410, 4 waitpokecry release diff --git a/data/scripts/maps/RustboroCity_Flat2_2F.inc b/data/scripts/maps/RustboroCity_Flat2_2F.inc index d6e0c92b3..0dfec5cfa 100644 --- a/data/scripts/maps/RustboroCity_Flat2_2F.inc +++ b/data/scripts/maps/RustboroCity_Flat2_2F.inc @@ -9,11 +9,11 @@ RustboroCity_Flat2_2F_EventScript_157DA0:: @ 8157DA0 lock faceplayer checkflag 213 - jumpeq RustboroCity_Flat2_2F_EventScript_157DCF + goto_if_eq RustboroCity_Flat2_2F_EventScript_157DCF msgbox RustboroCity_Flat2_2F_Text_185461, 4 giveitem ITEM_PREMIER_BALL compare RESULT, 0 - jumpeq RustboroCity_Flat2_2F_EventScript_1A029B + goto_if_eq RustboroCity_Flat2_2F_EventScript_1A029B setflag 213 release end diff --git a/data/scripts/maps/RustboroCity_Gym.inc b/data/scripts/maps/RustboroCity_Gym.inc index e4f91f82e..b1bbfb8d8 100644 --- a/data/scripts/maps/RustboroCity_Gym.inc +++ b/data/scripts/maps/RustboroCity_Gym.inc @@ -4,14 +4,14 @@ RustboroCity_Gym_MapScripts:: @ 81578D8 RustboroCity_Gym_EventScript_1578D9:: @ 81578D9 trainerbattle 1, OPPONENT_ROXANNE, 0, RustboroCity_Gym_Text_183EE5, RustboroCity_Gym_Text_183FC4, RustboroCity_Gym_EventScript_1578FE checkflag 165 - jumpif 0, RustboroCity_Gym_EventScript_15793C + goto_if 0, RustboroCity_Gym_EventScript_15793C msgbox RustboroCity_Gym_Text_184252, 4 release end RustboroCity_Gym_EventScript_1578FE:: @ 81578FE message RustboroCity_Gym_Text_1840AB - waittext + waitmessage call RustboroCity_Gym_EventScript_1A02C5 msgbox RustboroCity_Gym_Text_1840D5, 4 setflag 1201 @@ -21,14 +21,14 @@ RustboroCity_Gym_EventScript_1578FE:: @ 81578FE setvar 0x8008, 1 call RustboroCity_Gym_EventScript_1A01C0 compare 0x4085, 6 - callif 1, RustboroCity_Gym_EventScript_1A00FB - jump RustboroCity_Gym_EventScript_15793C + call_if 1, RustboroCity_Gym_EventScript_1A00FB + goto RustboroCity_Gym_EventScript_15793C end RustboroCity_Gym_EventScript_15793C:: @ 815793C giveitem ITEM_TM39 compare RESULT, 0 - jumpeq RustboroCity_Gym_EventScript_1A029B + goto_if_eq RustboroCity_Gym_EventScript_1A029B setflag 165 msgbox RustboroCity_Gym_Text_184170, 4 release @@ -48,7 +48,7 @@ RustboroCity_Gym_EventScript_15798E:: @ 815798E lock faceplayer checkflag 1201 - jumpeq RustboroCity_Gym_EventScript_1579A3 + goto_if_eq RustboroCity_Gym_EventScript_1579A3 msgbox RustboroCity_Gym_Text_183A4B, 4 release end @@ -61,15 +61,15 @@ RustboroCity_Gym_EventScript_1579A3:: @ 81579A3 RustboroCity_Gym_EventScript_1579AD:: @ 81579AD lockall checkflag 2055 - jumpeq RustboroCity_Gym_EventScript_1579CD - jump RustboroCity_Gym_EventScript_1579D7 + goto_if_eq RustboroCity_Gym_EventScript_1579CD + goto RustboroCity_Gym_EventScript_1579D7 end RustboroCity_Gym_EventScript_1579BD:: @ 81579BD lockall checkflag 2055 - jumpeq RustboroCity_Gym_EventScript_1579CD - jump RustboroCity_Gym_EventScript_1579D7 + goto_if_eq RustboroCity_Gym_EventScript_1579CD + goto RustboroCity_Gym_EventScript_1579D7 end RustboroCity_Gym_EventScript_1579CD:: @ 81579CD diff --git a/data/scripts/maps/RustboroCity_House1.inc b/data/scripts/maps/RustboroCity_House1.inc index a10d7b69e..b983617e0 100644 --- a/data/scripts/maps/RustboroCity_House1.inc +++ b/data/scripts/maps/RustboroCity_House1.inc @@ -5,28 +5,28 @@ RustboroCity_House1_EventScript_157C7D:: @ 8157C7D lock faceplayer checkflag 153 - jumpeq RustboroCity_House1_EventScript_157D13 + goto_if_eq RustboroCity_House1_EventScript_157D13 setvar 0x8008, 0 copyvar 0x8004, 0x8008 - specialval RESULT, 252 + specialvar RESULT, sub_804D89C copyvar 0x8009, RESULT msgbox RustboroCity_House1_Text_184EBA, 5 compare RESULT, 0 - jumpeq RustboroCity_House1_EventScript_157CFB - special 159 + goto_if_eq RustboroCity_House1_EventScript_157CFB + special sub_80F9A0C waitstate copyvar 0x800a, 0x8004 compare 0x8004, 255 - jumpeq RustboroCity_House1_EventScript_157CFB + goto_if_eq RustboroCity_House1_EventScript_157CFB copyvar 0x8005, 0x800a - specialval RESULT, 255 + specialvar RESULT, sub_804DB2C copyvar 0x800b, RESULT - comparevars RESULT, 0x8009 - jumpif 5, RustboroCity_House1_EventScript_157D05 + compare RESULT, 0x8009 + goto_if 5, RustboroCity_House1_EventScript_157D05 copyvar 0x8004, 0x8008 copyvar 0x8005, 0x800a - special 253 - special 254 + special sub_804DB68 + special sub_804E174 waitstate msgbox RustboroCity_House1_Text_184F6B, 4 setflag 153 @@ -39,7 +39,7 @@ RustboroCity_House1_EventScript_157CFB:: @ 8157CFB end RustboroCity_House1_EventScript_157D05:: @ 8157D05 - bufferpoke 0, 0x8009 + getspeciesname 0, 0x8009 msgbox RustboroCity_House1_Text_184F8F, 4 release end diff --git a/data/scripts/maps/RustboroCity_House3.inc b/data/scripts/maps/RustboroCity_House3.inc index 0e81ed158..a5088175e 100644 --- a/data/scripts/maps/RustboroCity_House3.inc +++ b/data/scripts/maps/RustboroCity_House3.inc @@ -12,8 +12,8 @@ RustboroCity_House3_EventScript_157DF6:: @ 8157DF6 RustboroCity_House3_EventScript_157DFF:: @ 8157DFF lock faceplayer - checksound - pokecry SPECIES_PIKACHU, 0 + waitse + playpokecry SPECIES_PIKACHU, 0 msgbox RustboroCity_House3_Text_18567D, 4 waitpokecry release diff --git a/data/scripts/maps/RustboroCity_Mart.inc b/data/scripts/maps/RustboroCity_Mart.inc index 6b4ff3a77..cb722a6af 100644 --- a/data/scripts/maps/RustboroCity_Mart.inc +++ b/data/scripts/maps/RustboroCity_Mart.inc @@ -5,11 +5,11 @@ RustboroCity_Mart_EventScript_157BD4:: @ 8157BD4 lock faceplayer message RustboroCity_Mart_Text_1A0BE4 - waittext + waitmessage checkflag 287 - jumpif 0, RustboroCity_Mart_EventScript_157BEF + goto_if 0, RustboroCity_Mart_EventScript_157BEF checkflag 287 - jumpeq RustboroCity_Mart_EventScript_157C18 + goto_if_eq RustboroCity_Mart_EventScript_157C18 end RustboroCity_Mart_EventScript_157BEF:: @ 8157BEF diff --git a/data/scripts/maps/RustboroCity_PokemonCenter_1F.inc b/data/scripts/maps/RustboroCity_PokemonCenter_1F.inc index 896e8e220..53b481832 100644 --- a/data/scripts/maps/RustboroCity_PokemonCenter_1F.inc +++ b/data/scripts/maps/RustboroCity_PokemonCenter_1F.inc @@ -10,7 +10,7 @@ RustboroCity_PokemonCenter_1F_MapScript1_157B7F:: @ 8157B7F RustboroCity_PokemonCenter_1F_EventScript_157B88:: @ 8157B88 setvar 0x800b, 1 call RustboroCity_PokemonCenter_1F_EventScript_19FD5B - waittext + waitmessage waitbutton release end diff --git a/data/scripts/maps/RustboroCity_PokemonSchool.inc b/data/scripts/maps/RustboroCity_PokemonSchool.inc index 8b037a3e7..73b364f5e 100644 --- a/data/scripts/maps/RustboroCity_PokemonSchool.inc +++ b/data/scripts/maps/RustboroCity_PokemonSchool.inc @@ -4,13 +4,13 @@ RustboroCity_PokemonSchool_MapScripts:: @ 81579E1 RustboroCity_PokemonSchool_EventScript_1579E2:: @ 81579E2 lockall msgbox RustboroCity_PokemonSchool_Text_184321, 4 - jump RustboroCity_PokemonSchool_EventScript_1579F1 + goto RustboroCity_PokemonSchool_EventScript_1579F1 end RustboroCity_PokemonSchool_EventScript_1579F1:: @ 81579F1 message RustboroCity_PokemonSchool_Text_184368 - waittext - multichoicerow 8, 1, 13, 3, 0 + waitmessage + multichoicegrid 8, 1, 13, 3, 0 switch RESULT case 0, RustboroCity_PokemonSchool_EventScript_157A50 case 1, RustboroCity_PokemonSchool_EventScript_157A5E @@ -23,27 +23,27 @@ RustboroCity_PokemonSchool_EventScript_1579F1:: @ 81579F1 RustboroCity_PokemonSchool_EventScript_157A50:: @ 8157A50 msgbox RustboroCity_PokemonSchool_Text_184389, 4 - jump RustboroCity_PokemonSchool_EventScript_1579F1 + goto RustboroCity_PokemonSchool_EventScript_1579F1 end RustboroCity_PokemonSchool_EventScript_157A5E:: @ 8157A5E msgbox RustboroCity_PokemonSchool_Text_184447, 4 - jump RustboroCity_PokemonSchool_EventScript_1579F1 + goto RustboroCity_PokemonSchool_EventScript_1579F1 end RustboroCity_PokemonSchool_EventScript_157A6C:: @ 8157A6C msgbox RustboroCity_PokemonSchool_Text_1844EC, 4 - jump RustboroCity_PokemonSchool_EventScript_1579F1 + goto RustboroCity_PokemonSchool_EventScript_1579F1 end RustboroCity_PokemonSchool_EventScript_157A7A:: @ 8157A7A msgbox RustboroCity_PokemonSchool_Text_1845A5, 4 - jump RustboroCity_PokemonSchool_EventScript_1579F1 + goto RustboroCity_PokemonSchool_EventScript_1579F1 end RustboroCity_PokemonSchool_EventScript_157A88:: @ 8157A88 msgbox RustboroCity_PokemonSchool_Text_184627, 4 - jump RustboroCity_PokemonSchool_EventScript_1579F1 + goto RustboroCity_PokemonSchool_EventScript_1579F1 end RustboroCity_PokemonSchool_EventScript_157A96:: @ 8157A96 @@ -78,37 +78,37 @@ RustboroCity_PokemonSchool_EventScript_157ACE:: @ 8157ACE lock faceplayer checkflag 275 - jumpeq RustboroCity_PokemonSchool_EventScript_157B34 + goto_if_eq RustboroCity_PokemonSchool_EventScript_157B34 compare FACING, 4 - callif 1, RustboroCity_PokemonSchool_EventScript_157B1E + call_if 1, RustboroCity_PokemonSchool_EventScript_157B1E compare FACING, 3 - callif 1, RustboroCity_PokemonSchool_EventScript_157B29 + call_if 1, RustboroCity_PokemonSchool_EventScript_157B29 msgbox RustboroCity_PokemonSchool_Text_1846A2, 4 giveitem ITEM_QUICK_CLAW compare RESULT, 0 - jumpeq RustboroCity_PokemonSchool_EventScript_1A029B - closebutton - move LAST_TALKED, RustboroCity_PokemonSchool_Movement_1A0845 - waitmove 0 + goto_if_eq RustboroCity_PokemonSchool_EventScript_1A029B + closemessage + applymovement LAST_TALKED, RustboroCity_PokemonSchool_Movement_1A0845 + waitmovement 0 setflag 275 release end RustboroCity_PokemonSchool_EventScript_157B1E:: @ 8157B1E - move LAST_TALKED, RustboroCity_PokemonSchool_Movement_157B60 - waitmove 0 + applymovement LAST_TALKED, RustboroCity_PokemonSchool_Movement_157B60 + waitmovement 0 return RustboroCity_PokemonSchool_EventScript_157B29:: @ 8157B29 - move LAST_TALKED, RustboroCity_PokemonSchool_Movement_157B49 - waitmove 0 + applymovement LAST_TALKED, RustboroCity_PokemonSchool_Movement_157B49 + waitmovement 0 return RustboroCity_PokemonSchool_EventScript_157B34:: @ 8157B34 msgbox RustboroCity_PokemonSchool_Text_184737, 4 - closebutton - move LAST_TALKED, RustboroCity_PokemonSchool_Movement_1A0845 - waitmove 0 + closemessage + applymovement LAST_TALKED, RustboroCity_PokemonSchool_Movement_1A0845 + waitmovement 0 release end diff --git a/data/scripts/maps/RusturfTunnel.inc b/data/scripts/maps/RusturfTunnel.inc index 129bef7c9..28f6f0ad4 100644 --- a/data/scripts/maps/RusturfTunnel.inc +++ b/data/scripts/maps/RusturfTunnel.inc @@ -11,21 +11,21 @@ RusturfTunnel_MapScript2_15C750:: @ 815C750 RusturfTunnel_MapScript1_15C762:: @ 815C762 call RusturfTunnel_EventScript_1A0196 compare 0x409a, 2 - callif 1, RusturfTunnel_EventScript_15C773 + call_if 1, RusturfTunnel_EventScript_15C773 end RusturfTunnel_EventScript_15C773:: @ 815C773 - movespriteperm 7, 13, 4 - movespriteperm 6, 13, 5 + setobjectxyperm 7, 13, 4 + setobjectxyperm 6, 13, 5 return RusturfTunnel_EventScript_15C782:: @ 815C782 lock faceplayer msgbox RusturfTunnel_Text_194766, 4 - closebutton - move LAST_TALKED, RusturfTunnel_Movement_1A083D - waitmove 0 + closemessage + applymovement LAST_TALKED, RusturfTunnel_Movement_1A083D + waitmovement 0 release end @@ -33,126 +33,126 @@ RusturfTunnel_EventScript_15C799:: @ 815C799 lock faceplayer checkflag 1 - jumpeq RusturfTunnel_EventScript_15C7BC + goto_if_eq RusturfTunnel_EventScript_15C7BC setflag 1 msgbox RusturfTunnel_Text_1944C5, 4 - closebutton - move LAST_TALKED, RusturfTunnel_Movement_1A083D - waitmove 0 + closemessage + applymovement LAST_TALKED, RusturfTunnel_Movement_1A083D + waitmovement 0 release end RusturfTunnel_EventScript_15C7BC:: @ 815C7BC msgbox RusturfTunnel_Text_1945B2, 4 - closebutton - move LAST_TALKED, RusturfTunnel_Movement_1A083D - waitmove 0 + closemessage + applymovement LAST_TALKED, RusturfTunnel_Movement_1A083D + waitmovement 0 release end RusturfTunnel_EventScript_15C7D1:: @ 815C7D1 lockall compare 0x4001, 1 - callif 1, RusturfTunnel_EventScript_15C8CA + call_if 1, RusturfTunnel_EventScript_15C8CA compare 0x4001, 2 - callif 1, RusturfTunnel_EventScript_15C8DF + call_if 1, RusturfTunnel_EventScript_15C8DF compare 0x4001, 3 - callif 1, RusturfTunnel_EventScript_15C8EA + call_if 1, RusturfTunnel_EventScript_15C8EA call RusturfTunnel_EventScript_15C92D msgbox RusturfTunnel_Text_19461D, 4 compare 0x4001, 2 - callif 1, RusturfTunnel_EventScript_15C8EB + call_if 1, RusturfTunnel_EventScript_15C8EB compare 0x4001, 3 - callif 1, RusturfTunnel_EventScript_15C8EB + call_if 1, RusturfTunnel_EventScript_15C8EB giveitem ITEM_HM04 setflag 106 msgbox RusturfTunnel_Text_194693, 4 - closebutton + closemessage compare 0x4001, 1 - callif 1, RusturfTunnel_EventScript_15C880 + call_if 1, RusturfTunnel_EventScript_15C880 compare 0x4001, 2 - callif 1, RusturfTunnel_EventScript_15C892 + call_if 1, RusturfTunnel_EventScript_15C892 compare 0x4001, 3 - callif 1, RusturfTunnel_EventScript_15C8AE + call_if 1, RusturfTunnel_EventScript_15C8AE msgbox RusturfTunnel_Text_194706, 4 - closebutton + closemessage compare 0x4001, 1 - callif 1, RusturfTunnel_EventScript_15C8F7 + call_if 1, RusturfTunnel_EventScript_15C8F7 compare 0x4001, 2 - callif 1, RusturfTunnel_EventScript_15C909 + call_if 1, RusturfTunnel_EventScript_15C909 compare 0x4001, 3 - callif 1, RusturfTunnel_EventScript_15C91B + call_if 1, RusturfTunnel_EventScript_15C91B call RusturfTunnel_EventScript_1A0442 releaseall end RusturfTunnel_EventScript_15C880:: @ 815C880 - move 255, RusturfTunnel_Movement_15C96A - move 1, RusturfTunnel_Movement_15C98F - waitmove 0 + applymovement 255, RusturfTunnel_Movement_15C96A + applymovement 1, RusturfTunnel_Movement_15C98F + waitmovement 0 return RusturfTunnel_EventScript_15C892:: @ 815C892 - move 255, RusturfTunnel_Movement_15C96D - move 1, RusturfTunnel_Movement_15C994 - waitmove 0 - move 10, RusturfTunnel_Movement_1A0845 - waitmove 0 + applymovement 255, RusturfTunnel_Movement_15C96D + applymovement 1, RusturfTunnel_Movement_15C994 + waitmovement 0 + applymovement 10, RusturfTunnel_Movement_1A0845 + waitmovement 0 return RusturfTunnel_EventScript_15C8AE:: @ 815C8AE - move 255, RusturfTunnel_Movement_15C96D - move 1, RusturfTunnel_Movement_15C994 - waitmove 0 - move 10, RusturfTunnel_Movement_1A0845 - waitmove 0 + applymovement 255, RusturfTunnel_Movement_15C96D + applymovement 1, RusturfTunnel_Movement_15C994 + waitmovement 0 + applymovement 10, RusturfTunnel_Movement_1A0845 + waitmovement 0 return RusturfTunnel_EventScript_15C8CA:: @ 815C8CA - move 1, RusturfTunnel_Movement_1A0841 - waitmove 0 - move 255, RusturfTunnel_Movement_1A0845 - waitmove 0 + applymovement 1, RusturfTunnel_Movement_1A0841 + waitmovement 0 + applymovement 255, RusturfTunnel_Movement_1A0845 + waitmovement 0 return RusturfTunnel_EventScript_15C8DF:: @ 815C8DF - move 1, RusturfTunnel_Movement_15C970 - waitmove 0 + applymovement 1, RusturfTunnel_Movement_15C970 + waitmovement 0 return RusturfTunnel_EventScript_15C8EA:: @ 815C8EA return RusturfTunnel_EventScript_15C8EB:: @ 815C8EB - closebutton - move 1, RusturfTunnel_Movement_15C98D - waitmove 0 + closemessage + applymovement 1, RusturfTunnel_Movement_15C98D + waitmovement 0 return RusturfTunnel_EventScript_15C8F7:: @ 815C8F7 - move 10, RusturfTunnel_Movement_15C945 - move 1, RusturfTunnel_Movement_15C973 - waitmove 0 + applymovement 10, RusturfTunnel_Movement_15C945 + applymovement 1, RusturfTunnel_Movement_15C973 + waitmovement 0 return RusturfTunnel_EventScript_15C909:: @ 815C909 - move 10, RusturfTunnel_Movement_15C951 - move 1, RusturfTunnel_Movement_15C980 - waitmove 0 + applymovement 10, RusturfTunnel_Movement_15C951 + applymovement 1, RusturfTunnel_Movement_15C980 + waitmovement 0 return RusturfTunnel_EventScript_15C91B:: @ 815C91B - move 10, RusturfTunnel_Movement_15C951 - move 1, RusturfTunnel_Movement_15C980 - waitmove 0 + applymovement 10, RusturfTunnel_Movement_15C951 + applymovement 1, RusturfTunnel_Movement_15C980 + waitmovement 0 return RusturfTunnel_EventScript_15C92D:: @ 815C92D - playsfx 21 - move 1, RusturfTunnel_Movement_1A0833 - waitmove 0 - move 1, RusturfTunnel_Movement_1A0835 - waitmove 0 + playse 21 + applymovement 1, RusturfTunnel_Movement_1A0833 + waitmovement 0 + applymovement 1, RusturfTunnel_Movement_1A0835 + waitmovement 0 return RusturfTunnel_Movement_15C945:: @ 815C945 @@ -280,12 +280,12 @@ RusturfTunnel_EventScript_15C9A5:: @ 815C9A5 RusturfTunnel_EventScript_15C9AB:: @ 815C9AB lockall msgbox RusturfTunnel_Text_194159, 4 - closebutton - move 6, RusturfTunnel_Movement_15C9D3 - move 7, RusturfTunnel_Movement_15C9D3 - waitmove 0 - moveoffscreen 6 - moveoffscreen 7 + closemessage + applymovement 6, RusturfTunnel_Movement_15C9D3 + applymovement 7, RusturfTunnel_Movement_15C9D3 + waitmovement 0 + moveobjectoffscreen 6 + moveobjectoffscreen 7 setvar 0x409a, 3 releaseall end @@ -299,8 +299,8 @@ RusturfTunnel_Movement_15C9D3:: @ 815C9D3 RusturfTunnel_EventScript_15C9D7:: @ 815C9D7 lock faceplayer - checksound - pokecry SPECIES_WINGULL, 0 + waitse + playpokecry SPECIES_WINGULL, 0 msgbox RusturfTunnel_Text_194188, 4 waitpokecry release @@ -309,38 +309,38 @@ RusturfTunnel_EventScript_15C9D7:: @ 815C9D7 RusturfTunnel_EventScript_15C9EA:: @ 815C9EA lock faceplayer - playmusic BGM_EVIL_TEAM, 0 + playbgm BGM_EVIL_TEAM, 0 msgbox RusturfTunnel_Text_19419B, 4 trainerbattle 3, OPPONENT_RUSTURF_TUNNEL_GRUNT, 0, RusturfTunnel_Text_194243 msgbox RusturfTunnel_Text_194274, 4 giveitem ITEM_DEVON_GOODS - closebutton - move 255, RusturfTunnel_Movement_15CA99 - move 6, RusturfTunnel_Movement_15CAA2 - waitmove 0 - disappear 6 - pause 50 - reappear 5 - move 5, RusturfTunnel_Movement_15CAAC - waitmove 0 - move 255, RusturfTunnel_Movement_15CA9F - move 5, RusturfTunnel_Movement_15CAC0 - waitmove 0 + closemessage + applymovement 255, RusturfTunnel_Movement_15CA99 + applymovement 6, RusturfTunnel_Movement_15CAA2 + waitmovement 0 + removeobject 6 + delay 50 + addobject 5 + applymovement 5, RusturfTunnel_Movement_15CAAC + waitmovement 0 + applymovement 255, RusturfTunnel_Movement_15CA9F + applymovement 5, RusturfTunnel_Movement_15CAC0 + waitmovement 0 msgbox RusturfTunnel_Text_19432A, 4 - move 5, RusturfTunnel_Movement_1A0839 - waitmove 0 + applymovement 5, RusturfTunnel_Movement_1A0839 + waitmovement 0 message RusturfTunnel_Text_19434F - waittext - checksound - pokecry SPECIES_WINGULL, 0 + waitmessage + waitse + playpokecry SPECIES_WINGULL, 0 waitbutton waitpokecry - closebutton - move 5, RusturfTunnel_Movement_15CAB4 - move 7, RusturfTunnel_Movement_15CAC3 - waitmove 0 - disappear 5 - disappear 7 + closemessage + applymovement 5, RusturfTunnel_Movement_15CAB4 + applymovement 7, RusturfTunnel_Movement_15CAC3 + waitmovement 0 + removeobject 5 + removeobject 7 clearflag 142 setflag 143 setvar 0x405a, 4 diff --git a/data/scripts/maps/SSTidalCorridor.inc b/data/scripts/maps/SSTidalCorridor.inc index ff4857852..2c55a9443 100644 --- a/data/scripts/maps/SSTidalCorridor.inc +++ b/data/scripts/maps/SSTidalCorridor.inc @@ -10,10 +10,10 @@ SSTidalCorridor_MapScript2_15FC9A:: @ 815FC9A .2byte 0 SSTidalCorridor_EventScript_15FCBC:: @ 815FCBC - special 203 + special SetSSTidalFlag setvar 0x40b4, 2 lockall - playsfx 73 + playse 73 msgbox SSTidalCorridor_Text_199007, 4 releaseall end @@ -21,54 +21,54 @@ SSTidalCorridor_EventScript_15FCBC:: @ 815FCBC SSTidalCorridor_EventScript_15FCD2:: @ 815FCD2 setvar 0x40b4, 6 lockall - playsfx 73 + playse 73 msgbox SSTidalCorridor_Text_199088, 4 releaseall end SSTidalRooms_EventScript_15FCE5:: @ 815FCE5 - special 203 + special SetSSTidalFlag setvar 0x40b4, 7 - playsfx 73 + playse 73 msgbox SSTidalRooms_Text_199007, 4 return SSTidalRooms_EventScript_15FCF9:: @ 815FCF9 - special 204 + special ResetSSTidalFlag setvar 0x40b4, 4 - playsfx 73 + playse 73 msgbox SSTidalRooms_Text_1990F8, 4 return gUnknown_0815FD0D:: @ 815FD0D compare 0x40B4, 2 - jumpeq SSTidalCorridor_EventScript_15FD24 + goto_if_eq SSTidalCorridor_EventScript_15FD24 compare 0x40B4, 7 - jumpeq SSTidalCorridor_EventScript_15FD3A + goto_if_eq SSTidalCorridor_EventScript_15FD3A end SSTidalCorridor_EventScript_15FD24:: @ 815FD24 - special 204 + special ResetSSTidalFlag setvar 0x40b4, 3 lockall - playsfx 73 + playse 73 msgbox SSTidalCorridor_Text_199088, 4 releaseall end SSTidalCorridor_EventScript_15FD3A:: @ 815FD3A - special 204 + special ResetSSTidalFlag setvar 0x40b4, 8 lockall - playsfx 73 + playse 73 msgbox SSTidalCorridor_Text_1990B4, 4 releaseall end SSTidalRooms_EventScript_15FD50:: @ 815FD50 - special 204 + special ResetSSTidalFlag setvar 0x40b4, 8 - playsfx 73 + playse 73 msgbox SSTidalRooms_Text_1990B4, 4 return @@ -87,8 +87,8 @@ SSTidalCorridor_EventScript_15FD96:: @ 815FD96 SSTidalCorridor_EventScript_15FD9F:: @ 815FD9F lock faceplayer - checksound - pokecry SPECIES_WINGULL, 0 + waitse + playpokecry SPECIES_WINGULL, 0 msgbox SSTidalCorridor_Text_199388, 4 waitpokecry release @@ -114,9 +114,9 @@ SSTidalCorridor_EventScript_15FDD6:: @ 815FDD6 lock faceplayer compare 0x40b4, 4 - jumpeq SSTidalCorridor_EventScript_15FDF8 + goto_if_eq SSTidalCorridor_EventScript_15FDF8 compare 0x40b4, 8 - jumpeq SSTidalCorridor_EventScript_15FE17 + goto_if_eq SSTidalCorridor_EventScript_15FE17 msgbox SSTidalCorridor_Text_19913B, 4 release end @@ -125,7 +125,7 @@ SSTidalCorridor_EventScript_15FDF8:: @ 815FDF8 sethealplace 8 msgbox SSTidalCorridor_Text_1991F4, 4 checkflag 260 - callif 1, SSTidalCorridor_EventScript_15FE36 + call_if 1, SSTidalCorridor_EventScript_15FE36 warp LilycoveCity_Harbor, 255, 8, 11 waitstate release @@ -135,7 +135,7 @@ SSTidalCorridor_EventScript_15FE17:: @ 815FE17 sethealplace 4 msgbox SSTidalCorridor_Text_1991F4, 4 checkflag 260 - callif 1, SSTidalCorridor_EventScript_15FE36 + call_if 1, SSTidalCorridor_EventScript_15FE36 warp SlateportCity_Harbor, 255, 8, 11 waitstate release @@ -148,15 +148,15 @@ SSTidalCorridor_EventScript_15FE36:: @ 815FE36 SSTidalCorridor_EventScript_15FE3A:: @ 815FE3A lockall compare 0x40b4, 2 - jumpeq SSTidalCorridor_EventScript_15FE5B + goto_if_eq SSTidalCorridor_EventScript_15FE5B compare 0x40b4, 7 - jumpeq SSTidalCorridor_EventScript_15FE5B + goto_if_eq SSTidalCorridor_EventScript_15FE5B msgbox SSTidalCorridor_Text_199268, 4 releaseall end SSTidalCorridor_EventScript_15FE5B:: @ 815FE5B - special 270 + special sub_80C7958 waitstate end @@ -164,7 +164,7 @@ SSTidalCorridor_EventScript_15FE60:: @ 815FE60 lock faceplayer checkflag 247 - jumpeq SSTidalCorridor_EventScript_15FE7A + goto_if_eq SSTidalCorridor_EventScript_15FE7A call SSTidalCorridor_EventScript_15FE84 msgbox SSTidalCorridor_Text_199203, 4 release @@ -177,23 +177,23 @@ SSTidalCorridor_EventScript_15FE7A:: @ 815FE7A SSTidalCorridor_EventScript_15FE84:: @ 815FE84 checktrainerflag OPPONENT_PHILLIP - jumpif 0, SSTidalCorridor_EventScript_15FED5 + goto_if 0, SSTidalCorridor_EventScript_15FED5 checktrainerflag OPPONENT_LEONARD - jumpif 0, SSTidalCorridor_EventScript_15FED5 + goto_if 0, SSTidalCorridor_EventScript_15FED5 checktrainerflag OPPONENT_COLTON - jumpif 0, SSTidalCorridor_EventScript_15FED5 + goto_if 0, SSTidalCorridor_EventScript_15FED5 checktrainerflag OPPONENT_TUCKER - jumpif 0, SSTidalCorridor_EventScript_15FED5 + goto_if 0, SSTidalCorridor_EventScript_15FED5 checktrainerflag OPPONENT_THOMAS - jumpif 0, SSTidalCorridor_EventScript_15FED5 + goto_if 0, SSTidalCorridor_EventScript_15FED5 checktrainerflag OPPONENT_LEA_AND_JED - jumpif 0, SSTidalCorridor_EventScript_15FED5 + goto_if 0, SSTidalCorridor_EventScript_15FED5 checktrainerflag OPPONENT_GARRET - jumpif 0, SSTidalCorridor_EventScript_15FED5 + goto_if 0, SSTidalCorridor_EventScript_15FED5 checktrainerflag OPPONENT_ANETTE - jumpif 0, SSTidalCorridor_EventScript_15FED5 + goto_if 0, SSTidalCorridor_EventScript_15FED5 setflag 247 - jump SSTidalCorridor_EventScript_15FE7A + goto SSTidalCorridor_EventScript_15FE7A return SSTidalCorridor_EventScript_15FED5:: @ 815FED5 diff --git a/data/scripts/maps/SSTidalRooms.inc b/data/scripts/maps/SSTidalRooms.inc index 4d588cd46..c7cd4447d 100644 --- a/data/scripts/maps/SSTidalRooms.inc +++ b/data/scripts/maps/SSTidalRooms.inc @@ -5,11 +5,11 @@ SSTidalRooms_EventScript_15FF06:: @ 815FF06 lock faceplayer checkflag 260 - jumpeq SSTidalRooms_EventScript_15FF3D + goto_if_eq SSTidalRooms_EventScript_15FF3D msgbox SSTidalRooms_Text_199B65, 4 giveitem ITEM_TM49 compare RESULT, 0 - jumpeq SSTidalRooms_EventScript_1A029B + goto_if_eq SSTidalRooms_EventScript_1A029B setflag 260 msgbox SSTidalRooms_Text_199C1A, 4 release @@ -23,7 +23,7 @@ SSTidalRooms_EventScript_15FF3D:: @ 815FF3D SSTidalRooms_EventScript_15FF47:: @ 815FF47 lockall msgbox SSTidalRooms_Text_19956B, 4 - closebutton + closemessage call SSTidalRooms_EventScript_1A02CA call SSTidalRooms_EventScript_15FD64 releaseall diff --git a/data/scripts/maps/SafariZone_Southeast.inc b/data/scripts/maps/SafariZone_Southeast.inc index 196efbb35..06a400810 100644 --- a/data/scripts/maps/SafariZone_Southeast.inc +++ b/data/scripts/maps/SafariZone_Southeast.inc @@ -10,22 +10,22 @@ SafariZone_Southeast_MapScript2_160041:: @ 8160041 SafariZone_Southeast_EventScript_16004B:: @ 816004B lockall setvar 0x4001, 0 - move 255, SafariZone_Southeast_Movement_160087 - waitmove 0 - move 1, SafariZone_Southeast_Movement_160089 - waitmove 0 - movespriteperm 1, 32, 34 + applymovement 255, SafariZone_Southeast_Movement_160087 + waitmovement 0 + applymovement 1, SafariZone_Southeast_Movement_160089 + waitmovement 0 + setobjectxyperm 1, 32, 34 setvar 0x40a4, 0 releaseall end SafariZone_Southeast_MapScript1_160073:: @ 8160073 compare 0x40a4, 2 - callif 1, SafariZone_Southeast_EventScript_16007F + call_if 1, SafariZone_Southeast_EventScript_16007F end SafariZone_Southeast_EventScript_16007F:: @ 816007F - movespriteperm 1, 31, 34 + setobjectxyperm 1, 31, 34 return SafariZone_Southeast_Movement_160087:: @ 8160087 @@ -53,10 +53,10 @@ SafariZone_Southeast_EventScript_1600A7:: @ 81600A7 lock faceplayer compare 0x4001, 0 - jumpeq SafariZone_Southeast_EventScript_1600D1 + goto_if_eq SafariZone_Southeast_EventScript_1600D1 msgbox SafariZone_Southeast_Text_1C3A56, 5 compare RESULT, 1 - jumpeq SafariZone_Southeast_EventScript_1600E0 + goto_if_eq SafariZone_Southeast_EventScript_1600E0 msgbox SafariZone_Southeast_Text_1C3A9C, 4 release end @@ -69,32 +69,32 @@ SafariZone_Southeast_EventScript_1600D1:: @ 81600D1 SafariZone_Southeast_EventScript_1600E0:: @ 81600E0 msgbox SafariZone_Southeast_Text_1C3ACA, 4 - closebutton + closemessage switch FACING case 2, SafariZone_Southeast_EventScript_160105 case 4, SafariZone_Southeast_EventScript_16011F end SafariZone_Southeast_EventScript_160105:: @ 8160105 - move 1, SafariZone_Southeast_Movement_160150 - waitmove 0 - move 255, SafariZone_Southeast_Movement_16014B - waitmove 0 - jump SafariZone_Southeast_EventScript_160139 + applymovement 1, SafariZone_Southeast_Movement_160150 + waitmovement 0 + applymovement 255, SafariZone_Southeast_Movement_16014B + waitmovement 0 + goto SafariZone_Southeast_EventScript_160139 end SafariZone_Southeast_EventScript_16011F:: @ 816011F - move 1, SafariZone_Southeast_Movement_160153 - waitmove 0 - move 255, SafariZone_Southeast_Movement_16014D - waitmove 0 - jump SafariZone_Southeast_EventScript_160139 + applymovement 1, SafariZone_Southeast_Movement_160153 + waitmovement 0 + applymovement 255, SafariZone_Southeast_Movement_16014D + waitmovement 0 + goto SafariZone_Southeast_EventScript_160139 end SafariZone_Southeast_EventScript_160139:: @ 8160139 setvar 0x40a4, 1 - special 206 - warpwalk Route121_SafariZoneEntrance, 255, 2, 5 + special ExitSafariMode + warpdoor Route121_SafariZoneEntrance, 255, 2, 5 waitstate end diff --git a/data/scripts/maps/SeafloorCavern_Entrance.inc b/data/scripts/maps/SeafloorCavern_Entrance.inc index 0bf99d2ad..7ea46d9b0 100644 --- a/data/scripts/maps/SeafloorCavern_Entrance.inc +++ b/data/scripts/maps/SeafloorCavern_Entrance.inc @@ -3,6 +3,6 @@ SeafloorCavern_Entrance_MapScripts:: @ 815DA4A .byte 0 SeafloorCavern_Entrance_MapScript1_15DA50:: @ 815DA50 - warp4 Underwater_SeafloorCavern, 255, 6, 5 - warp6 Underwater_SeafloorCavern, 255, 6, 5 + setdivewarp Underwater_SeafloorCavern, 255, 6, 5 + setescapewarp Underwater_SeafloorCavern, 255, 6, 5 end diff --git a/data/scripts/maps/SeafloorCavern_Room9.inc b/data/scripts/maps/SeafloorCavern_Room9.inc index ff8592f7d..eb3d108a6 100644 --- a/data/scripts/maps/SeafloorCavern_Room9.inc +++ b/data/scripts/maps/SeafloorCavern_Room9.inc @@ -6,9 +6,9 @@ SeafloorCavern_Room9_MapScript1_15DAEC:: @ 815DAEC call SeafloorCavern_Room9_EventScript_1A0196 call SeafloorCavern_Room9_EventScript_1A01B5 .ifdef SAPPHIRE - setmapfooter 157 + setmaplayoutindex 157 .else - setmapfooter 327 + setmaplayoutindex 327 .endif end @@ -18,35 +18,35 @@ SeafloorCavern_Room9_EventScript_15DAFA:: @ 815DAFA setvar 0x8005, 3 setvar 0x8006, 4 setvar 0x8007, 5 - move 255, SeafloorCavern_Room9_Movement_1A0841 - waitmove 0 - move 255, SeafloorCavern_Room9_Movement_15DD68 - waitmove 0 + applymovement 255, SeafloorCavern_Room9_Movement_1A0841 + waitmovement 0 + applymovement 255, SeafloorCavern_Room9_Movement_15DD68 + waitmovement 0 .ifdef SAPPHIRE msgbox UnknownString_81B41B8, 4 .else msgbox SeafloorCavern_Room9_Text_1B4850, 4 .endif - closebutton - reappear 0x8004 - move 255, SeafloorCavern_Room9_Movement_1A083F - waitmove 0 - move 0x8004, SeafloorCavern_Room9_Movement_15DD36 - waitmove 0 + closemessage + addobject 0x8004 + applymovement 255, SeafloorCavern_Room9_Movement_1A083F + waitmovement 0 + applymovement 0x8004, SeafloorCavern_Room9_Movement_15DD36 + waitmovement 0 .ifdef SAPPHIRE msgbox UnknownString_81B41D5, 4 .else msgbox SeafloorCavern_Room9_Text_1B486C, 4 .endif - move 0x8004, SeafloorCavern_Room9_Movement_1A0841 - waitmove 0 + applymovement 0x8004, SeafloorCavern_Room9_Movement_1A0841 + waitmovement 0 .ifdef SAPPHIRE msgbox UnknownString_81B4201, 4 .else msgbox SeafloorCavern_Room9_Text_1B4897, 4 .endif - move 0x8004, SeafloorCavern_Room9_Movement_1A0839 - waitmove 0 + applymovement 0x8004, SeafloorCavern_Room9_Movement_1A0839 + waitmovement 0 .ifdef SAPPHIRE msgbox UnknownString_81B4289, 4 .else @@ -64,59 +64,59 @@ SeafloorCavern_Room9_EventScript_15DAFA:: @ 815DAFA .endif setweather 0 doweather - special 332 + special sub_8081924 waitstate .ifdef SAPPHIRE msgbox UnknownString_81B43C4, 4 .else msgbox SeafloorCavern_Room9_Text_1B4A5A, 4 .endif - special 284 + special WaitWeather waitstate .ifdef SAPPHIRE setvar RESULT, 1 .else setvar RESULT, 0 .endif - playsfx 209 - setanimation 0, 16 - setanimation 1, 42 - setanimation 2, 0 - doanimation 54 - checkanimation 54 + playse 209 + setfieldeffect 0, 16 + setfieldeffect 1, 42 + setfieldeffect 2, 0 + dofieldeffect 54 + waitfieldeffect 54 .ifdef SAPPHIRE setvar RESULT, 0 .else setvar RESULT, 1 .endif - fanfare 388 - playsfx 107 - special 281 - move 0x8004, SeafloorCavern_Room9_Movement_1A0841 - move 255, SeafloorCavern_Room9_Movement_1A0841 - waitmove 0 - pause 150 - disappear 7 - reappear 1 + playfanfare 388 + playse 107 + special sub_80818A4 + applymovement 0x8004, SeafloorCavern_Room9_Movement_1A0841 + applymovement 255, SeafloorCavern_Room9_Movement_1A0841 + waitmovement 0 + delay 150 + removeobject 7 + addobject 1 waitstate - pause 60 - move 1, SeafloorCavern_Room9_Movement_15DD4C - waitmove 0 - special 282 + delay 60 + applymovement 1, SeafloorCavern_Room9_Movement_15DD4C + waitmovement 0 + special sub_80818FC waitstate setvar 0x8004, 1 setvar 0x8005, 1 - special 310 + special sub_810F758 waitstate - move 1, SeafloorCavern_Room9_Movement_15DD57 - waitmove 0 - disappear 1 - pause 4 + applymovement 1, SeafloorCavern_Room9_Movement_15DD57 + waitmovement 0 + removeobject 1 + delay 4 setvar 0x8004, 2 setvar 0x8005, 2 - special 310 + special sub_810F758 waitstate - pause 30 + delay 30 setvar 0x8004, 2 setvar 0x8005, 3 setvar 0x8006, 4 @@ -126,52 +126,52 @@ SeafloorCavern_Room9_EventScript_15DAFA:: @ 815DAFA .else msgbox SeafloorCavern_Room9_Text_1B4A89, 4 .endif - playsfx 2 - move 255, SeafloorCavern_Room9_Movement_1A083F - waitmove 0 + playse 2 + applymovement 255, SeafloorCavern_Room9_Movement_1A083F + waitmovement 0 .ifdef SAPPHIRE msgbox UnknownString_81B4443, 4 .else msgbox SeafloorCavern_Room9_Text_1B4ADB, 4 .endif - closebutton - move 0x8004, SeafloorCavern_Room9_Movement_15DD41 - waitmove 0 + closemessage + applymovement 0x8004, SeafloorCavern_Room9_Movement_15DD41 + waitmovement 0 .ifdef SAPPHIRE msgbox UnknownString_81B447A, 4 .else msgbox SeafloorCavern_Room9_Text_1B4B11, 4 .endif - closebutton - playsfx 3 - pause 20 - move 0x8004, SeafloorCavern_Room9_Movement_1A0845 - waitmove 0 + closemessage + playse 3 + delay 20 + applymovement 0x8004, SeafloorCavern_Room9_Movement_1A0845 + waitmovement 0 .ifdef SAPPHIRE msgbox UnknownString_81B45C6, 4 .else msgbox SeafloorCavern_Room9_Text_1B4C79, 4 .endif - closebutton - reappear 0x8005 - reappear 0x8006 - reappear 0x8007 - move 0x8007, SeafloorCavern_Room9_Movement_15DD63 - move 0x8006, SeafloorCavern_Room9_Movement_15DD63 - move 0x8005, SeafloorCavern_Room9_Movement_15DD5A - waitmove 0 - move 0x8004, SeafloorCavern_Room9_Movement_1A083F - waitmove 0 + closemessage + addobject 0x8005 + addobject 0x8006 + addobject 0x8007 + applymovement 0x8007, SeafloorCavern_Room9_Movement_15DD63 + applymovement 0x8006, SeafloorCavern_Room9_Movement_15DD63 + applymovement 0x8005, SeafloorCavern_Room9_Movement_15DD5A + waitmovement 0 + applymovement 0x8004, SeafloorCavern_Room9_Movement_1A083F + waitmovement 0 .ifdef SAPPHIRE msgbox UnknownString_81B464D, 4 .else msgbox SeafloorCavern_Room9_Text_1B4D02, 4 .endif - playsfx 21 - move 0x8004, SeafloorCavern_Room9_Movement_1A0833 - waitmove 0 - move 0x8004, SeafloorCavern_Room9_Movement_1A0835 - waitmove 0 + playse 21 + applymovement 0x8004, SeafloorCavern_Room9_Movement_1A0833 + waitmovement 0 + applymovement 0x8004, SeafloorCavern_Room9_Movement_1A0835 + waitmovement 0 .ifdef SAPPHIRE msgbox UnknownString_81B4723, 4 .else @@ -182,10 +182,10 @@ SeafloorCavern_Room9_EventScript_15DAFA:: @ 815DAFA .else msgbox SeafloorCavern_Room9_Text_1B4E37, 4 .endif - closebutton - move 0x8005, SeafloorCavern_Room9_Movement_15DD60 - move 0x8004, SeafloorCavern_Room9_Movement_15DD46 - waitmove 0 + closemessage + applymovement 0x8005, SeafloorCavern_Room9_Movement_15DD60 + applymovement 0x8004, SeafloorCavern_Room9_Movement_15DD46 + waitmovement 0 .ifdef SAPPHIRE msgbox UnknownString_81B4818, 4 .else diff --git a/data/scripts/maps/SealedChamber_InnerRoom.inc b/data/scripts/maps/SealedChamber_InnerRoom.inc index 16d4c7003..526ada367 100644 --- a/data/scripts/maps/SealedChamber_InnerRoom.inc +++ b/data/scripts/maps/SealedChamber_InnerRoom.inc @@ -3,34 +3,34 @@ SealedChamber_InnerRoom_MapScripts:: @ 815F1E7 SealedChamber_InnerRoom_EventScript_15F1E8:: @ 815F1E8 lockall - braillemsg SealedChamber_InnerRoom_Braille_1C53C1 + braillemessage SealedChamber_InnerRoom_Braille_1C53C1 waitbutton - hidebox 0, 0, 29, 19 + erasebox 0, 0, 29, 19 checkflag 228 - jumpeq SealedChamber_InnerRoom_EventScript_15F247 - specialval RESULT, 279 + goto_if_eq SealedChamber_InnerRoom_EventScript_15F247 + specialvar RESULT, CheckRelicanthWailord compare RESULT, 0 - jumpeq SealedChamber_InnerRoom_EventScript_15F247 - fadeout 0 - playsfx 49 - special 305 + goto_if_eq SealedChamber_InnerRoom_EventScript_15F247 + fadeoutbgm 0 + playse 49 + special DoSealedChamberShakingEffect1 waitstate - pause 40 - special 315 + delay 40 + special DoSealedChamberShakingEffect2 waitstate - playsfx 8 - pause 40 - special 315 + playse 8 + delay 40 + special DoSealedChamberShakingEffect2 waitstate - playsfx 8 - pause 40 - special 315 + playse 8 + delay 40 + special DoSealedChamberShakingEffect2 waitstate - playsfx 8 - pause 40 + playse 8 + delay 40 msgbox SealedChamber_InnerRoom_Text_1A138B, 4 - closebutton - fadein 0 + closemessage + fadeinbgm 0 setflag 228 releaseall end @@ -41,48 +41,48 @@ SealedChamber_InnerRoom_EventScript_15F247:: @ 815F247 SealedChamber_InnerRoom_EventScript_15F249:: @ 815F249 lockall - braillemsg SealedChamber_InnerRoom_Braille_1C53F2 + braillemessage SealedChamber_InnerRoom_Braille_1C53F2 waitbutton - hidebox 0, 0, 29, 19 + erasebox 0, 0, 29, 19 releaseall end SealedChamber_InnerRoom_EventScript_15F257:: @ 815F257 lockall - braillemsg SealedChamber_InnerRoom_Braille_1C5414 + braillemessage SealedChamber_InnerRoom_Braille_1C5414 waitbutton - hidebox 0, 0, 29, 19 + erasebox 0, 0, 29, 19 releaseall end SealedChamber_InnerRoom_EventScript_15F265:: @ 815F265 lockall - braillemsg SealedChamber_InnerRoom_Braille_1C5435 + braillemessage SealedChamber_InnerRoom_Braille_1C5435 waitbutton - hidebox 0, 0, 29, 19 + erasebox 0, 0, 29, 19 releaseall end SealedChamber_InnerRoom_EventScript_15F273:: @ 815F273 lockall - braillemsg SealedChamber_InnerRoom_Braille_1C545C + braillemessage SealedChamber_InnerRoom_Braille_1C545C waitbutton - hidebox 0, 0, 29, 19 + erasebox 0, 0, 29, 19 releaseall end SealedChamber_InnerRoom_EventScript_15F281:: @ 815F281 lockall - braillemsg SealedChamber_InnerRoom_Braille_1C5470 + braillemessage SealedChamber_InnerRoom_Braille_1C5470 waitbutton - hidebox 0, 0, 29, 19 + erasebox 0, 0, 29, 19 releaseall end SealedChamber_InnerRoom_EventScript_15F28F:: @ 815F28F lockall - braillemsg SealedChamber_InnerRoom_Braille_1C549B + braillemessage SealedChamber_InnerRoom_Braille_1C549B waitbutton - hidebox 0, 0, 29, 19 + erasebox 0, 0, 29, 19 releaseall end diff --git a/data/scripts/maps/SealedChamber_OuterRoom.inc b/data/scripts/maps/SealedChamber_OuterRoom.inc index 83ca4e4df..f16a88802 100644 --- a/data/scripts/maps/SealedChamber_OuterRoom.inc +++ b/data/scripts/maps/SealedChamber_OuterRoom.inc @@ -5,8 +5,8 @@ SealedChamber_OuterRoom_MapScripts:: @ 815F0C6 .byte 0 SealedChamber_OuterRoom_MapScript1_15F0D6:: @ 815F0D6 - warp4 Underwater_SealedChamber, 255, 12, 44 - warp6 Underwater_SealedChamber, 255, 12, 44 + setdivewarp Underwater_SealedChamber, 255, 12, 44 + setescapewarp Underwater_SealedChamber, 255, 12, 44 end SealedChamber_OuterRoom_MapScript1_15F0E7:: @ 815F0E7 @@ -15,7 +15,7 @@ SealedChamber_OuterRoom_MapScript1_15F0E7:: @ 815F0E7 SealedChamber_OuterRoom_MapScript1_15F0EB:: @ 815F0EB checkflag 2127 - callif 0, SealedChamber_OuterRoom_EventScript_15F0F5 + call_if 0, SealedChamber_OuterRoom_EventScript_15F0F5 end SealedChamber_OuterRoom_EventScript_15F0F5:: @ 815F0F5 @@ -29,91 +29,91 @@ SealedChamber_OuterRoom_EventScript_15F0F5:: @ 815F0F5 SealedChamber_OuterRoom_EventScript_15F12C:: @ 815F12C lockall - braillemsg SealedChamber_OuterRoom_Braille_1C534F + braillemessage SealedChamber_OuterRoom_Braille_1C534F waitbutton - hidebox 0, 0, 29, 19 + erasebox 0, 0, 29, 19 releaseall end SealedChamber_OuterRoom_EventScript_15F13A:: @ 815F13A lockall - braillemsg SealedChamber_OuterRoom_Braille_1C5359 + braillemessage SealedChamber_OuterRoom_Braille_1C5359 waitbutton - hidebox 0, 0, 29, 19 + erasebox 0, 0, 29, 19 releaseall end SealedChamber_OuterRoom_EventScript_15F148:: @ 815F148 lockall - braillemsg SealedChamber_OuterRoom_Braille_1C5363 + braillemessage SealedChamber_OuterRoom_Braille_1C5363 waitbutton - hidebox 0, 0, 29, 19 + erasebox 0, 0, 29, 19 releaseall end SealedChamber_OuterRoom_EventScript_15F156:: @ 815F156 lockall - braillemsg SealedChamber_OuterRoom_Braille_1C536D + braillemessage SealedChamber_OuterRoom_Braille_1C536D waitbutton - hidebox 0, 0, 29, 19 + erasebox 0, 0, 29, 19 releaseall end SealedChamber_OuterRoom_EventScript_15F164:: @ 815F164 lockall - braillemsg SealedChamber_OuterRoom_Braille_1C5377 + braillemessage SealedChamber_OuterRoom_Braille_1C5377 waitbutton - hidebox 0, 0, 29, 19 + erasebox 0, 0, 29, 19 releaseall end SealedChamber_OuterRoom_EventScript_15F172:: @ 815F172 lockall - braillemsg SealedChamber_OuterRoom_Braille_1C5381 + braillemessage SealedChamber_OuterRoom_Braille_1C5381 waitbutton - hidebox 0, 0, 29, 19 + erasebox 0, 0, 29, 19 releaseall end SealedChamber_OuterRoom_EventScript_15F180:: @ 815F180 lockall - braillemsg SealedChamber_OuterRoom_Braille_1C538B + braillemessage SealedChamber_OuterRoom_Braille_1C538B waitbutton - hidebox 0, 0, 29, 19 + erasebox 0, 0, 29, 19 releaseall end SealedChamber_OuterRoom_EventScript_15F18E:: @ 815F18E lockall - braillemsg SealedChamber_OuterRoom_Braille_1C5396 + braillemessage SealedChamber_OuterRoom_Braille_1C5396 waitbutton - hidebox 0, 0, 29, 19 + erasebox 0, 0, 29, 19 releaseall end SealedChamber_OuterRoom_EventScript_15F19C:: @ 815F19C lockall - braillemsg SealedChamber_OuterRoom_Braille_1C539E + braillemessage SealedChamber_OuterRoom_Braille_1C539E waitbutton - hidebox 0, 0, 29, 19 + erasebox 0, 0, 29, 19 releaseall end SealedChamber_OuterRoom_EventScript_15F1AA:: @ 815F1AA lockall - braillemsg SealedChamber_OuterRoom_Braille_1C53A9 + braillemessage SealedChamber_OuterRoom_Braille_1C53A9 waitbutton - hidebox 0, 0, 29, 19 + erasebox 0, 0, 29, 19 releaseall end SealedChamber_OuterRoom_EventScript_15F1B8:: @ 815F1B8 lockall checkflag 2127 - jumpeq SealedChamber_OuterRoom_EventScript_15F1CF - braillemsg SealedChamber_OuterRoom_Braille_1C53B1 + goto_if_eq SealedChamber_OuterRoom_EventScript_15F1CF + braillemessage SealedChamber_OuterRoom_Braille_1C53B1 waitbutton - hidebox 0, 0, 29, 19 + erasebox 0, 0, 29, 19 releaseall end @@ -124,8 +124,8 @@ SealedChamber_OuterRoom_EventScript_15F1CF:: @ 815F1CF SealedChamber_OuterRoom_EventScript_15F1D9:: @ 815F1D9 lockall - braillemsg SealedChamber_OuterRoom_Braille_1C53B1 + braillemessage SealedChamber_OuterRoom_Braille_1C53B1 waitbutton - hidebox 0, 0, 29, 19 + erasebox 0, 0, 29, 19 releaseall end diff --git a/data/scripts/maps/SecretBase_YellowCave4.inc b/data/scripts/maps/SecretBase_YellowCave4.inc index 4ccbc2f0e..302bc3930 100644 --- a/data/scripts/maps/SecretBase_YellowCave4.inc +++ b/data/scripts/maps/SecretBase_YellowCave4.inc @@ -11,7 +11,7 @@ SecretBase_RedCave1_MapScript1_15F34C:: @ 815F34C SecretBase_RedCave1_MapScript1_15F34F:: @ 815F34F call SecretBase_RedCave1_EventScript_1A2F3D - special 22 + special sub_80BBFA4 end SecretBase_RedCave1_MapScript2_15F358:: @ 815F358 diff --git a/data/scripts/maps/ShoalCave_LowTideEntranceRoom.inc b/data/scripts/maps/ShoalCave_LowTideEntranceRoom.inc index 9b822a473..52d430db5 100644 --- a/data/scripts/maps/ShoalCave_LowTideEntranceRoom.inc +++ b/data/scripts/maps/ShoalCave_LowTideEntranceRoom.inc @@ -3,45 +3,45 @@ ShoalCave_LowTideEntranceRoom_MapScripts:: @ 815E057 .byte 0 ShoalCave_LowTideEntranceRoom_MapScript1_15E05D:: @ 815E05D - special 210 + special UpdateShoalTideFlag checkflag 2106 - jumpeq ShoalCave_LowTideEntranceRoom_EventScript_15E06E - jump ShoalCave_LowTideEntranceRoom_EventScript_15E072 + goto_if_eq ShoalCave_LowTideEntranceRoom_EventScript_15E06E + goto ShoalCave_LowTideEntranceRoom_EventScript_15E072 ShoalCave_LowTideEntranceRoom_EventScript_15E06E:: @ 815E06E - setmapfooter 169 + setmaplayoutindex 169 end ShoalCave_LowTideEntranceRoom_EventScript_15E072:: @ 815E072 - setmapfooter 165 + setmaplayoutindex 165 end ShoalCave_LowTideEntranceRoom_EventScript_15E076:: @ 815E076 lock faceplayer - checkdailyflags + dodailyevents checkflag 2143 - callif 1, ShoalCave_LowTideEntranceRoom_EventScript_15E176 + call_if 1, ShoalCave_LowTideEntranceRoom_EventScript_15E176 checkitem ITEM_SHOAL_SALT, 4 compare RESULT, 0 - jumpeq ShoalCave_LowTideEntranceRoom_EventScript_15E138 + goto_if_eq ShoalCave_LowTideEntranceRoom_EventScript_15E138 checkitem ITEM_SHOAL_SHELL, 4 compare RESULT, 0 - jumpeq ShoalCave_LowTideEntranceRoom_EventScript_15E138 + goto_if_eq ShoalCave_LowTideEntranceRoom_EventScript_15E138 msgbox ShoalCave_LowTideEntranceRoom_Text_1C6793, 5 compare RESULT, 0 - jumpeq ShoalCave_LowTideEntranceRoom_EventScript_15E16C + goto_if_eq ShoalCave_LowTideEntranceRoom_EventScript_15E16C checkitemspace ITEM_SHELL_BELL, 1 compare RESULT, 0 - callif 1, ShoalCave_LowTideEntranceRoom_EventScript_15E106 + call_if 1, ShoalCave_LowTideEntranceRoom_EventScript_15E106 compare RESULT, 2 - jumpeq ShoalCave_LowTideEntranceRoom_EventScript_15E12E + goto_if_eq ShoalCave_LowTideEntranceRoom_EventScript_15E12E msgbox ShoalCave_LowTideEntranceRoom_Text_1C6808, 4 removeitem ITEM_SHOAL_SALT, 4 removeitem ITEM_SHOAL_SHELL, 4 giveitem ITEM_SHELL_BELL compare RESULT, 0 - jumpeq ShoalCave_LowTideEntranceRoom_EventScript_1A029B + goto_if_eq ShoalCave_LowTideEntranceRoom_EventScript_1A029B msgbox ShoalCave_LowTideEntranceRoom_Text_1C688E, 4 setflag 2 release @@ -50,13 +50,13 @@ ShoalCave_LowTideEntranceRoom_EventScript_15E076:: @ 815E076 ShoalCave_LowTideEntranceRoom_EventScript_15E106:: @ 815E106 checkitem ITEM_SHOAL_SALT, 5 compare RESULT, 1 - jumpeq ShoalCave_LowTideEntranceRoom_EventScript_15E117 + goto_if_eq ShoalCave_LowTideEntranceRoom_EventScript_15E117 return ShoalCave_LowTideEntranceRoom_EventScript_15E117:: @ 815E117 checkitem ITEM_SHOAL_SHELL, 5 compare RESULT, 1 - jumpeq ShoalCave_LowTideEntranceRoom_EventScript_15E128 + goto_if_eq ShoalCave_LowTideEntranceRoom_EventScript_15E128 return ShoalCave_LowTideEntranceRoom_EventScript_15E128:: @ 815E128 @@ -71,10 +71,10 @@ ShoalCave_LowTideEntranceRoom_EventScript_15E12E:: @ 815E12E ShoalCave_LowTideEntranceRoom_EventScript_15E138:: @ 815E138 checkitem ITEM_SHOAL_SALT, 1 compare RESULT, 1 - jumpeq ShoalCave_LowTideEntranceRoom_EventScript_15E162 + goto_if_eq ShoalCave_LowTideEntranceRoom_EventScript_15E162 checkitem ITEM_SHOAL_SHELL, 1 compare RESULT, 1 - jumpeq ShoalCave_LowTideEntranceRoom_EventScript_15E162 + goto_if_eq ShoalCave_LowTideEntranceRoom_EventScript_15E162 msgbox ShoalCave_LowTideEntranceRoom_Text_1C6668, 4 release end diff --git a/data/scripts/maps/ShoalCave_LowTideInnerRoom.inc b/data/scripts/maps/ShoalCave_LowTideInnerRoom.inc index eab522a1f..ada997023 100644 --- a/data/scripts/maps/ShoalCave_LowTideInnerRoom.inc +++ b/data/scripts/maps/ShoalCave_LowTideInnerRoom.inc @@ -5,15 +5,15 @@ ShoalCave_LowTideInnerRoom_MapScripts:: @ 815E192 ShoalCave_LowTideInnerRoom_MapScript1_15E19D:: @ 815E19D checkflag 2106 - jumpeq ShoalCave_LowTideInnerRoom_EventScript_15E1AB - jump ShoalCave_LowTideInnerRoom_EventScript_15E1AF + goto_if_eq ShoalCave_LowTideInnerRoom_EventScript_15E1AB + goto ShoalCave_LowTideInnerRoom_EventScript_15E1AF ShoalCave_LowTideInnerRoom_EventScript_15E1AB:: @ 815E1AB - setmapfooter 170 + setmaplayoutindex 170 end ShoalCave_LowTideInnerRoom_EventScript_15E1AF:: @ 815E1AF - setmapfooter 166 + setmaplayoutindex 166 end ShoalCave_LowTideInnerRoom_MapScript1_15E1B3:: @ 815E1B3 @@ -22,46 +22,46 @@ ShoalCave_LowTideInnerRoom_MapScript1_15E1B3:: @ 815E1B3 ShoalCave_LowTideInnerRoom_EventScript_15E1B9:: @ 815E1B9 checkflag 952 - jumpeq ShoalCave_LowTideInnerRoom_EventScript_15E1DA + goto_if_eq ShoalCave_LowTideInnerRoom_EventScript_15E1DA checkflag 2106 - jumpeq ShoalCave_LowTideInnerRoom_EventScript_15E1DA + goto_if_eq ShoalCave_LowTideInnerRoom_EventScript_15E1DA setmaptile 31, 8, 856, 1 - jump ShoalCave_LowTideInnerRoom_EventScript_15E1DA + goto ShoalCave_LowTideInnerRoom_EventScript_15E1DA end ShoalCave_LowTideInnerRoom_EventScript_15E1DA:: @ 815E1DA checkflag 953 - jumpeq ShoalCave_LowTideInnerRoom_EventScript_15E1FB + goto_if_eq ShoalCave_LowTideInnerRoom_EventScript_15E1FB checkflag 2106 - jumpeq ShoalCave_LowTideInnerRoom_EventScript_15E1FB + goto_if_eq ShoalCave_LowTideInnerRoom_EventScript_15E1FB setmaptile 14, 26, 856, 1 - jump ShoalCave_LowTideInnerRoom_EventScript_15E1FB + goto ShoalCave_LowTideInnerRoom_EventScript_15E1FB end ShoalCave_LowTideInnerRoom_EventScript_15E1FB:: @ 815E1FB checkflag 956 - jumpeq ShoalCave_LowTideInnerRoom_EventScript_15E213 + goto_if_eq ShoalCave_LowTideInnerRoom_EventScript_15E213 setmaptile 41, 20, 857, 1 - jump ShoalCave_LowTideInnerRoom_EventScript_15E213 + goto ShoalCave_LowTideInnerRoom_EventScript_15E213 end ShoalCave_LowTideInnerRoom_EventScript_15E213:: @ 815E213 checkflag 957 - jumpeq ShoalCave_LowTideInnerRoom_EventScript_15E22B + goto_if_eq ShoalCave_LowTideInnerRoom_EventScript_15E22B setmaptile 41, 10, 857, 1 - jump ShoalCave_LowTideInnerRoom_EventScript_15E22B + goto ShoalCave_LowTideInnerRoom_EventScript_15E22B end ShoalCave_LowTideInnerRoom_EventScript_15E22B:: @ 815E22B checkflag 958 - jumpeq ShoalCave_LowTideInnerRoom_EventScript_15E243 + goto_if_eq ShoalCave_LowTideInnerRoom_EventScript_15E243 setmaptile 6, 9, 857, 1 - jump ShoalCave_LowTideInnerRoom_EventScript_15E243 + goto ShoalCave_LowTideInnerRoom_EventScript_15E243 end ShoalCave_LowTideInnerRoom_EventScript_15E243:: @ 815E243 checkflag 959 - jumpeq ShoalCave_LowTideInnerRoom_EventScript_15E256 + goto_if_eq ShoalCave_LowTideInnerRoom_EventScript_15E256 setmaptile 16, 13, 857, 1 return @@ -71,12 +71,12 @@ ShoalCave_LowTideInnerRoom_EventScript_15E256:: @ 815E256 ShoalCave_LowTideInnerRoom_EventScript_15E257:: @ 815E257 lockall checkflag 956 - jumpeq ShoalCave_LowTideInnerRoom_EventScript_15E289 + goto_if_eq ShoalCave_LowTideInnerRoom_EventScript_15E289 giveitem ITEM_SHOAL_SHELL compare RESULT, 0 - jumpeq ShoalCave_LowTideInnerRoom_EventScript_1A029B + goto_if_eq ShoalCave_LowTideInnerRoom_EventScript_1A029B setmaptile 41, 20, 859, 0 - special 142 + special DrawWholeMapView setflag 956 releaseall end @@ -89,12 +89,12 @@ ShoalCave_LowTideInnerRoom_EventScript_15E289:: @ 815E289 ShoalCave_LowTideInnerRoom_EventScript_15E293:: @ 815E293 lockall checkflag 957 - jumpeq ShoalCave_LowTideInnerRoom_EventScript_15E289 + goto_if_eq ShoalCave_LowTideInnerRoom_EventScript_15E289 giveitem ITEM_SHOAL_SHELL compare RESULT, 0 - jumpeq ShoalCave_LowTideInnerRoom_EventScript_1A029B + goto_if_eq ShoalCave_LowTideInnerRoom_EventScript_1A029B setmaptile 41, 10, 859, 0 - special 142 + special DrawWholeMapView setflag 957 releaseall end @@ -102,12 +102,12 @@ ShoalCave_LowTideInnerRoom_EventScript_15E293:: @ 815E293 ShoalCave_LowTideInnerRoom_EventScript_15E2C5:: @ 815E2C5 lockall checkflag 958 - jumpeq ShoalCave_LowTideInnerRoom_EventScript_15E289 + goto_if_eq ShoalCave_LowTideInnerRoom_EventScript_15E289 giveitem ITEM_SHOAL_SHELL compare RESULT, 0 - jumpeq ShoalCave_LowTideInnerRoom_EventScript_1A029B + goto_if_eq ShoalCave_LowTideInnerRoom_EventScript_1A029B setmaptile 6, 9, 859, 0 - special 142 + special DrawWholeMapView setflag 958 releaseall end @@ -115,12 +115,12 @@ ShoalCave_LowTideInnerRoom_EventScript_15E2C5:: @ 815E2C5 ShoalCave_LowTideInnerRoom_EventScript_15E2F7:: @ 815E2F7 lockall checkflag 959 - jumpeq ShoalCave_LowTideInnerRoom_EventScript_15E289 + goto_if_eq ShoalCave_LowTideInnerRoom_EventScript_15E289 giveitem ITEM_SHOAL_SHELL compare RESULT, 0 - jumpeq ShoalCave_LowTideInnerRoom_EventScript_1A029B + goto_if_eq ShoalCave_LowTideInnerRoom_EventScript_1A029B setmaptile 16, 13, 859, 0 - special 142 + special DrawWholeMapView setflag 959 releaseall end @@ -128,12 +128,12 @@ ShoalCave_LowTideInnerRoom_EventScript_15E2F7:: @ 815E2F7 ShoalCave_LowTideInnerRoom_EventScript_15E329:: @ 815E329 lockall checkflag 952 - jumpeq ShoalCave_LowTideInnerRoom_EventScript_15E35B + goto_if_eq ShoalCave_LowTideInnerRoom_EventScript_15E35B giveitem ITEM_SHOAL_SALT compare RESULT, 0 - jumpeq ShoalCave_LowTideInnerRoom_EventScript_1A029B + goto_if_eq ShoalCave_LowTideInnerRoom_EventScript_1A029B setmaptile 31, 8, 858, 0 - special 142 + special DrawWholeMapView setflag 952 releaseall end @@ -146,12 +146,12 @@ ShoalCave_LowTideInnerRoom_EventScript_15E35B:: @ 815E35B ShoalCave_LowTideInnerRoom_EventScript_15E365:: @ 815E365 lockall checkflag 953 - jumpeq ShoalCave_LowTideInnerRoom_EventScript_15E35B + goto_if_eq ShoalCave_LowTideInnerRoom_EventScript_15E35B giveitem ITEM_SHOAL_SALT compare RESULT, 0 - jumpeq ShoalCave_LowTideInnerRoom_EventScript_1A029B + goto_if_eq ShoalCave_LowTideInnerRoom_EventScript_1A029B setmaptile 14, 26, 858, 0 - special 142 + special DrawWholeMapView setflag 953 releaseall end diff --git a/data/scripts/maps/ShoalCave_LowTideLowerRoom.inc b/data/scripts/maps/ShoalCave_LowTideLowerRoom.inc index dfcd5b83f..db5779efe 100644 --- a/data/scripts/maps/ShoalCave_LowTideLowerRoom.inc +++ b/data/scripts/maps/ShoalCave_LowTideLowerRoom.inc @@ -8,7 +8,7 @@ ShoalCave_LowTideLowerRoom_MapScript1_15E3F9:: @ 815E3F9 ShoalCave_LowTideLowerRoom_EventScript_15E3FF:: @ 815E3FF checkflag 955 - jumpeq ShoalCave_LowTideLowerRoom_EventScript_15E412 + goto_if_eq ShoalCave_LowTideLowerRoom_EventScript_15E412 setmaptile 18, 2, 856, 1 return @@ -18,12 +18,12 @@ ShoalCave_LowTideLowerRoom_EventScript_15E412:: @ 815E412 ShoalCave_LowTideLowerRoom_EventScript_15E413:: @ 815E413 lockall checkflag 955 - jumpeq ShoalCave_LowTideLowerRoom_EventScript_15E445 + goto_if_eq ShoalCave_LowTideLowerRoom_EventScript_15E445 giveitem ITEM_SHOAL_SALT compare RESULT, 0 - jumpeq ShoalCave_LowTideLowerRoom_EventScript_1A029B + goto_if_eq ShoalCave_LowTideLowerRoom_EventScript_1A029B setmaptile 18, 2, 858, 0 - special 142 + special DrawWholeMapView setflag 955 releaseall end @@ -37,11 +37,11 @@ ShoalCave_LowTideLowerRoom_EventScript_15E44F:: @ 815E44F lock faceplayer checkflag 283 - jumpeq ShoalCave_LowTideLowerRoom_EventScript_15E47E + goto_if_eq ShoalCave_LowTideLowerRoom_EventScript_15E47E msgbox ShoalCave_LowTideLowerRoom_Text_198200, 4 giveitem ITEM_FOCUS_BAND compare RESULT, 0 - jumpeq ShoalCave_LowTideLowerRoom_EventScript_1A029B + goto_if_eq ShoalCave_LowTideLowerRoom_EventScript_1A029B setflag 283 release end diff --git a/data/scripts/maps/ShoalCave_LowTideStairsRoom.inc b/data/scripts/maps/ShoalCave_LowTideStairsRoom.inc index 584a57818..bffb7bd49 100644 --- a/data/scripts/maps/ShoalCave_LowTideStairsRoom.inc +++ b/data/scripts/maps/ShoalCave_LowTideStairsRoom.inc @@ -8,7 +8,7 @@ ShoalCave_LowTideStairsRoom_MapScript1_15E39D:: @ 815E39D ShoalCave_LowTideStairsRoom_EventScript_15E3A3:: @ 815E3A3 checkflag 954 - jumpeq ShoalCave_LowTideStairsRoom_EventScript_15E3B6 + goto_if_eq ShoalCave_LowTideStairsRoom_EventScript_15E3B6 setmaptile 11, 11, 856, 1 return @@ -18,12 +18,12 @@ ShoalCave_LowTideStairsRoom_EventScript_15E3B6:: @ 815E3B6 ShoalCave_LowTideStairsRoom_EventScript_15E3B7:: @ 815E3B7 lockall checkflag 954 - jumpeq ShoalCave_LowTideStairsRoom_EventScript_15E3E9 + goto_if_eq ShoalCave_LowTideStairsRoom_EventScript_15E3E9 giveitem ITEM_SHOAL_SALT compare RESULT, 0 - jumpeq ShoalCave_LowTideStairsRoom_EventScript_1A029B + goto_if_eq ShoalCave_LowTideStairsRoom_EventScript_1A029B setmaptile 11, 11, 858, 0 - special 142 + special DrawWholeMapView setflag 954 releaseall end diff --git a/data/scripts/maps/SkyPillar_2F.inc b/data/scripts/maps/SkyPillar_2F.inc index 62cb389f2..3b3585bf8 100644 --- a/data/scripts/maps/SkyPillar_2F.inc +++ b/data/scripts/maps/SkyPillar_2F.inc @@ -6,5 +6,5 @@ SkyPillar_2F_MapScripts:: @ 815F2C9 SkyPillar_2F_MapScript1_15F2D9:: @ 815F2D9 tileeffect 7 - warp5 SkyPillar_1F, 255, 0, 0 + setholewarp SkyPillar_1F, 255, 0, 0 end diff --git a/data/scripts/maps/SkyPillar_4F.inc b/data/scripts/maps/SkyPillar_4F.inc index 5e1f7f4e6..3d535a25a 100644 --- a/data/scripts/maps/SkyPillar_4F.inc +++ b/data/scripts/maps/SkyPillar_4F.inc @@ -6,5 +6,5 @@ SkyPillar_4F_MapScripts:: @ 815F2E5 SkyPillar_4F_MapScript1_15F2F5:: @ 815F2F5 tileeffect 7 - warp5 SkyPillar_3F, 255, 0, 0 + setholewarp SkyPillar_3F, 255, 0, 0 end diff --git a/data/scripts/maps/SkyPillar_Top.inc b/data/scripts/maps/SkyPillar_Top.inc index b28d89d93..1dee6e9c4 100644 --- a/data/scripts/maps/SkyPillar_Top.inc +++ b/data/scripts/maps/SkyPillar_Top.inc @@ -4,24 +4,24 @@ SkyPillar_Top_MapScripts:: @ 815F302 SkyPillar_Top_MapScript1_15F308:: @ 815F308 checkflag 2145 - callif 1, SkyPillar_Top_EventScript_15F312 + call_if 1, SkyPillar_Top_EventScript_15F312 end SkyPillar_Top_EventScript_15F312:: @ 815F312 - disappear LAST_TALKED + removeobject LAST_TALKED return SkyPillar_Top_EventScript_15F316:: @ 815F316 lock faceplayer setwildbattle SPECIES_RAYQUAZA, 70, ITEM_NONE - checksound - pokecry SPECIES_RAYQUAZA, 2 - pause 40 + waitse + playpokecry SPECIES_RAYQUAZA, 2 + delay 40 waitpokecry setflag 773 setflag 2145 - special 312 + special ScrSpecial_StartRayquazaBattle waitstate clearflag 2145 release diff --git a/data/scripts/maps/SlateportCity.inc b/data/scripts/maps/SlateportCity.inc index 6125c4871..bea1455a7 100644 --- a/data/scripts/maps/SlateportCity.inc +++ b/data/scripts/maps/SlateportCity.inc @@ -13,7 +13,7 @@ SlateportCity_MapScript1_14BA3C:: @ 814BA3C setvar 0x40aa, 0 call SlateportCity_EventScript_14BA5C compare 0x4058, 1 - callif 1, SlateportCity_EventScript_14BA68 + call_if 1, SlateportCity_EventScript_14BA68 end SlateportCity_EventScript_14BA5C:: @ 814BA5C @@ -23,27 +23,27 @@ SlateportCity_EventScript_14BA5C:: @ 814BA5C return SlateportCity_EventScript_14BA68:: @ 814BA68 - movespriteperm 11, 28, 13 - movespriteperm 7, 25, 13 - movespriteperm 3, 25, 14 - movespriteperm 6, 27, 16 - movespriteperm 8, 28, 16 - movespriteperm 1, 29, 16 - movespriteperm 2, 31, 14 - spritebehave 11, 8 - spritebehave 7, 18 - spritebehave 3, 16 - spritebehave 6, 7 - spritebehave 8, 7 - spritebehave 1, 7 - spritebehave 2, 9 + setobjectxyperm 11, 28, 13 + setobjectxyperm 7, 25, 13 + setobjectxyperm 3, 25, 14 + setobjectxyperm 6, 27, 16 + setobjectxyperm 8, 28, 16 + setobjectxyperm 1, 29, 16 + setobjectxyperm 2, 31, 14 + setobjectmovementtype 11, 8 + setobjectmovementtype 7, 18 + setobjectmovementtype 3, 16 + setobjectmovementtype 6, 7 + setobjectmovementtype 8, 7 + setobjectmovementtype 1, 7 + setobjectmovementtype 2, 9 return SlateportCity_EventScript_14BAB6:: @ 814BAB6 lock faceplayer message SlateportCity_Text_164642 - waittext + waitmessage pokemart SlateportCity_Items1 msgbox SlateportCity_Text_1A0C02, 4 release @@ -64,21 +64,21 @@ SlateportCity_Items1:: @ 814BAD0 SlateportCity_EventScript_14BAE0:: @ 814BAE0 lock faceplayer - bufferfirstpoke 0 + getfirstpartypokename 0 msgbox SlateportCity_Text_164682, 4 - specialval RESULT, 292 + specialvar RESULT, LeadMonHasEffortRibbon compare RESULT, 1 - callif 1, SlateportCity_EventScript_14BB35 - specialval RESULT, 294 + call_if 1, SlateportCity_EventScript_14BB35 + specialvar RESULT, ScrSpecial_AreLeadMonEVsMaxedOut compare RESULT, 0 - callif 1, SlateportCity_EventScript_14BB2B + call_if 1, SlateportCity_EventScript_14BB2B msgbox SlateportCity_Text_164691, 4 - fanfare 370 + playfanfare 370 message SlateportCity_Text_1646DD waitfanfare - waittext + waitmessage msgbox SlateportCity_Text_1646FC, 4 - special 293 + special GivLeadMonEffortRibbon release end @@ -96,7 +96,7 @@ SlateportCity_EventScript_14BB3F:: @ 814BB3F lock faceplayer compare 0x4058, 1 - callif 1, SlateportCity_EventScript_14BB56 + call_if 1, SlateportCity_EventScript_14BB56 msgbox SlateportCity_Text_164814, 4 release end @@ -110,7 +110,7 @@ SlateportCity_EventScript_14BB60:: @ 814BB60 lock faceplayer compare 0x4058, 1 - callif 1, SlateportCity_EventScript_14BB77 + call_if 1, SlateportCity_EventScript_14BB77 msgbox SlateportCity_Text_1648A0, 4 release end @@ -124,9 +124,9 @@ SlateportCity_EventScript_14BB81:: @ 814BB81 lock faceplayer compare 0x4058, 1 - callif 1, SlateportCity_EventScript_14BBA1 + call_if 1, SlateportCity_EventScript_14BBA1 checkflag 96 - jumpeq SlateportCity_EventScript_14BBAB + goto_if_eq SlateportCity_EventScript_14BBAB msgbox SlateportCity_Text_164937, 4 release end @@ -145,7 +145,7 @@ SlateportCity_EventScript_14BBB5:: @ 814BBB5 lock faceplayer compare 0x4058, 1 - callif 1, SlateportCity_EventScript_14BBCC + call_if 1, SlateportCity_EventScript_14BBCC msgbox SlateportCity_Text_164A30, 4 release end @@ -157,7 +157,7 @@ SlateportCity_EventScript_14BBCC:: @ 814BBCC SlateportCity_EventScript_14BBD6:: @ 814BBD6 compare 0x4058, 1 - jumpeq SlateportCity_EventScript_14BBEA + goto_if_eq SlateportCity_EventScript_14BBEA msgbox SlateportCity_Text_164AA9, 2 end @@ -169,7 +169,7 @@ SlateportCity_EventScript_14BBF3:: @ 814BBF3 lock faceplayer compare 0x4058, 1 - callif 1, SlateportCity_EventScript_14BC0A + call_if 1, SlateportCity_EventScript_14BC0A msgbox SlateportCity_Text_164B34, 4 release end @@ -183,7 +183,7 @@ SlateportCity_EventScript_14BC14:: @ 814BC14 lock faceplayer checkflag 148 - jumpeq SlateportCity_EventScript_14BC29 + goto_if_eq SlateportCity_EventScript_14BC29 msgbox SlateportCity_Text_164BBF, 4 release end @@ -200,9 +200,9 @@ SlateportCity_EventScript_14BC33:: @ 814BC33 SlateportCity_EventScript_14BC3C:: @ 814BC3C lockall checkflag 2052 - jumpeq SlateportCity_EventScript_14BC63 + goto_if_eq SlateportCity_EventScript_14BC63 checkflag 2061 - jumpeq SlateportCity_EventScript_14BC59 + goto_if_eq SlateportCity_EventScript_14BC59 msgbox SlateportCity_Text_1658A0, 4 releaseall end @@ -236,7 +236,7 @@ SlateportCity_EventScript_14BC88:: @ 814BC88 SlateportCity_EventScript_14BC91:: @ 814BC91 lockall checkflag 2052 - jumpeq SlateportCity_EventScript_14BCA5 + goto_if_eq SlateportCity_EventScript_14BCA5 msgbox SlateportCity_Text_165A8B, 4 releaseall end @@ -254,7 +254,7 @@ SlateportCity_EventScript_14BCB8:: @ 814BCB8 lock faceplayer compare 0x4058, 1 - callif 1, SlateportCity_EventScript_14BCCF + call_if 1, SlateportCity_EventScript_14BCCF msgbox SlateportCity_Text_164F9E, 4 release end @@ -289,9 +289,9 @@ SlateportCity_EventScript_14BD06:: @ 814BD06 faceplayer msgbox SlateportCity_Text_1650F1, 5 compare RESULT, 1 - callif 1, SlateportCity_EventScript_14BD28 + call_if 1, SlateportCity_EventScript_14BD28 compare RESULT, 0 - callif 1, SlateportCity_EventScript_14BD31 + call_if 1, SlateportCity_EventScript_14BD31 release end @@ -307,9 +307,9 @@ SlateportCity_EventScript_14BD3A:: @ 814BD3A lock faceplayer msgbox SlateportCity_Text_164C64, 4 - closebutton - move 5, SlateportCity_Movement_1A083D - waitmove 0 + closemessage + applymovement 5, SlateportCity_Movement_1A083D + waitmovement 0 release end @@ -317,9 +317,9 @@ SlateportCity_EventScript_14BD51:: @ 814BD51 lock faceplayer msgbox SlateportCity_Text_164C9F, 4 - closebutton - move 19, SlateportCity_Movement_1A083D - waitmove 0 + closemessage + applymovement 19, SlateportCity_Movement_1A083D + waitmovement 0 release end @@ -327,9 +327,9 @@ SlateportCity_EventScript_14BD68:: @ 814BD68 lock faceplayer msgbox SlateportCity_Text_164CE8, 4 - closebutton - move 20, SlateportCity_Movement_1A083D - waitmove 0 + closemessage + applymovement 20, SlateportCity_Movement_1A083D + waitmovement 0 release end @@ -337,9 +337,9 @@ SlateportCity_EventScript_14BD7F:: @ 814BD7F lock faceplayer msgbox SlateportCity_Text_164D2B, 4 - closebutton - move 27, SlateportCity_Movement_1A083D - waitmove 0 + closemessage + applymovement 27, SlateportCity_Movement_1A083D + waitmovement 0 release end @@ -347,9 +347,9 @@ SlateportCity_EventScript_14BD96:: @ 814BD96 lock faceplayer msgbox SlateportCity_Text_164D92, 4 - closebutton - move 28, SlateportCity_Movement_1A083D - waitmove 0 + closemessage + applymovement 28, SlateportCity_Movement_1A083D + waitmovement 0 release end @@ -357,9 +357,9 @@ SlateportCity_EventScript_14BDAD:: @ 814BDAD lock faceplayer msgbox SlateportCity_Text_164DD5, 4 - closebutton - move 29, SlateportCity_Movement_1A083D - waitmove 0 + closemessage + applymovement 29, SlateportCity_Movement_1A083D + waitmovement 0 release end @@ -367,9 +367,9 @@ SlateportCity_EventScript_14BDC4:: @ 814BDC4 lock faceplayer msgbox SlateportCity_Text_164DF4, 4 - closebutton - move 30, SlateportCity_Movement_1A083D - waitmove 0 + closemessage + applymovement 30, SlateportCity_Movement_1A083D + waitmovement 0 release end @@ -377,9 +377,9 @@ SlateportCity_EventScript_14BDDB:: @ 814BDDB lock faceplayer msgbox SlateportCity_Text_164E46, 4 - closebutton - move 31, SlateportCity_Movement_1A083D - waitmove 0 + closemessage + applymovement 31, SlateportCity_Movement_1A083D + waitmovement 0 release end @@ -387,7 +387,7 @@ SlateportCity_EventScript_14BDF2:: @ 814BDF2 lock faceplayer message SlateportCity_Text_1A0BE4 - waittext + waitmessage pokemartdecor SlateportCity_Decorations1 msgbox SlateportCity_Text_1A0C02, 4 release @@ -411,9 +411,9 @@ SlateportCity_EventScript_14BE20:: @ 814BE20 lock faceplayer checkflag 96 - jumpif 0, SlateportCity_EventScript_14BE16 + goto_if 0, SlateportCity_EventScript_14BE16 message SlateportCity_Text_1A0BE4 - waittext + waitmessage pokemartdecor SlateportCity_Decorations2 msgbox SlateportCity_Text_1A0C02, 4 release @@ -443,9 +443,9 @@ SlateportCity_Decorations2:: @ 814BE40 lock faceplayer checkflag 96 - jumpif 0, SlateportCity_EventScript_14BE16 + goto_if 0, SlateportCity_EventScript_14BE16 message SlateportCity_Text_1A0BE4 - waittext + waitmessage pokemartdecor SlateportCity_Decorations3 msgbox SlateportCity_Text_1A0C02, 4 release @@ -472,7 +472,7 @@ SlateportCity_EventScript_14BE9A:: @ 814BE9A lock faceplayer message SlateportCity_Text_1A0BE4 - waittext + waitmessage pokemart SlateportCity_Items2 msgbox SlateportCity_Text_1A0C02, 4 release @@ -490,49 +490,49 @@ SlateportCity_EventScript_14BEBC:: @ 814BEBC lockall msgbox SlateportCity_Text_165498, 4 msgbox SlateportCity_Text_1654E0, 4 - closebutton - move 10, SlateportCity_Movement_1A0843 - waitmove 0 - pause 10 - move 9, SlateportCity_Movement_1A0845 - waitmove 0 - pause 25 - move 11, SlateportCity_Movement_14C000 - move 255, SlateportCity_Movement_14C00E - move 10, SlateportCity_Movement_14BFDD - move 9, SlateportCity_Movement_14BFEA - waitmove 0 - disappear 10 - disappear 9 + closemessage + applymovement 10, SlateportCity_Movement_1A0843 + waitmovement 0 + delay 10 + applymovement 9, SlateportCity_Movement_1A0845 + waitmovement 0 + delay 25 + applymovement 11, SlateportCity_Movement_14C000 + applymovement 255, SlateportCity_Movement_14C00E + applymovement 10, SlateportCity_Movement_14BFDD + applymovement 9, SlateportCity_Movement_14BFEA + waitmovement 0 + removeobject 10 + removeobject 9 msgbox SlateportCity_Text_16558D, 4 - move 11, SlateportCity_Movement_1A0841 - waitmove 0 + applymovement 11, SlateportCity_Movement_1A0841 + waitmovement 0 msgbox SlateportCity_Text_1655E7, 4 - playmusic BGM_EVIL_TEAM, 0 + playbgm BGM_EVIL_TEAM, 0 msgbox SlateportCity_Text_1656BC, 4 - move 6, SlateportCity_Movement_1A083F - move 1, SlateportCity_Movement_1A083F - move 7, SlateportCity_Movement_14BFCD - move 3, SlateportCity_Movement_1A0831 - move 2, SlateportCity_Movement_14BFD5 - waitmove 0 - move 11, SlateportCity_Movement_1A0845 - waitmove 0 + applymovement 6, SlateportCity_Movement_1A083F + applymovement 1, SlateportCity_Movement_1A083F + applymovement 7, SlateportCity_Movement_14BFCD + applymovement 3, SlateportCity_Movement_1A0831 + applymovement 2, SlateportCity_Movement_14BFD5 + waitmovement 0 + applymovement 11, SlateportCity_Movement_1A0845 + waitmovement 0 msgbox SlateportCity_Text_16578F, 4 - playsfx 21 - move 11, SlateportCity_Movement_1A0833 - waitmove 0 - move 11, SlateportCity_Movement_1A0835 - waitmove 0 + playse 21 + applymovement 11, SlateportCity_Movement_1A0833 + waitmovement 0 + applymovement 11, SlateportCity_Movement_1A0835 + waitmovement 0 msgbox SlateportCity_Text_1657FA, 4 - move 11, SlateportCity_Movement_1A0839 - waitmove 0 + applymovement 11, SlateportCity_Movement_1A0839 + waitmovement 0 msgbox SlateportCity_Text_16583A, 4 - closebutton - move 11, SlateportCity_Movement_14BFFB - move 255, SlateportCity_Movement_14C008 - waitmove 0 - disappear 11 + closemessage + applymovement 11, SlateportCity_Movement_14BFFB + applymovement 255, SlateportCity_Movement_14C008 + waitmovement 0 + removeobject 11 clearflag 841 clearflag 848 clearflag 845 diff --git a/data/scripts/maps/SlateportCity_ContestHall.inc b/data/scripts/maps/SlateportCity_ContestHall.inc index 559719583..f8070f1a1 100644 --- a/data/scripts/maps/SlateportCity_ContestHall.inc +++ b/data/scripts/maps/SlateportCity_ContestHall.inc @@ -13,11 +13,11 @@ SlateportCity_ContestHall_EventScript_15555E:: @ 815555E lock faceplayer checkflag 265 - jumpeq SlateportCity_ContestHall_EventScript_155595 + goto_if_eq SlateportCity_ContestHall_EventScript_155595 msgbox SlateportCity_ContestHall_Text_17CCE2, 4 giveitem ITEM_TM41 compare RESULT, 0 - jumpeq SlateportCity_ContestHall_EventScript_1A029B + goto_if_eq SlateportCity_ContestHall_EventScript_1A029B setflag 265 msgbox SlateportCity_ContestHall_Text_17CE28, 4 release @@ -31,80 +31,80 @@ SlateportCity_ContestHall_EventScript_155595:: @ 8155595 SlateportCity_ContestHall_EventScript_15559F:: @ 815559F msgbox SlateportCity_ContestHall_Text_17CEF3, 2 lockall - move 3, SlateportCity_ContestHall_Movement_1A083D - waitmove 0 + applymovement 3, SlateportCity_ContestHall_Movement_1A083D + waitmovement 0 releaseall end SlateportCity_ContestHall_EventScript_1555B4:: @ 81555B4 msgbox SlateportCity_ContestHall_Text_17CFA7, 2 lockall - move 4, SlateportCity_ContestHall_Movement_1A083D - waitmove 0 + applymovement 4, SlateportCity_ContestHall_Movement_1A083D + waitmovement 0 releaseall end SlateportCity_ContestHall_EventScript_1555C9:: @ 81555C9 msgbox SlateportCity_ContestHall_Text_17D054, 2 lockall - move 5, SlateportCity_ContestHall_Movement_1A083D - waitmove 0 + applymovement 5, SlateportCity_ContestHall_Movement_1A083D + waitmovement 0 releaseall end SlateportCity_ContestHall_EventScript_1555DE:: @ 81555DE msgbox SlateportCity_ContestHall_Text_17D07F, 2 lockall - move 6, SlateportCity_ContestHall_Movement_1A083D - waitmove 0 + applymovement 6, SlateportCity_ContestHall_Movement_1A083D + waitmovement 0 releaseall end SlateportCity_ContestHall_EventScript_1555F3:: @ 81555F3 msgbox SlateportCity_ContestHall_Text_17D0F9, 2 lockall - move 7, SlateportCity_ContestHall_Movement_1A083D - waitmove 0 + applymovement 7, SlateportCity_ContestHall_Movement_1A083D + waitmovement 0 releaseall end SlateportCity_ContestHall_EventScript_155608:: @ 8155608 msgbox SlateportCity_ContestHall_Text_17D222, 2 lockall - move 8, SlateportCity_ContestHall_Movement_1A083D - waitmove 0 + applymovement 8, SlateportCity_ContestHall_Movement_1A083D + waitmovement 0 releaseall end SlateportCity_ContestHall_EventScript_15561D:: @ 815561D msgbox SlateportCity_ContestHall_Text_17D39A, 2 lockall - move 9, SlateportCity_ContestHall_Movement_1A083D - waitmove 0 + applymovement 9, SlateportCity_ContestHall_Movement_1A083D + waitmovement 0 releaseall end SlateportCity_ContestHall_EventScript_155632:: @ 8155632 msgbox SlateportCity_ContestHall_Text_17D3F0, 2 lockall - move 10, SlateportCity_ContestHall_Movement_1A083D - waitmove 0 + applymovement 10, SlateportCity_ContestHall_Movement_1A083D + waitmovement 0 releaseall end SlateportCity_ContestHall_EventScript_155647:: @ 8155647 msgbox SlateportCity_ContestHall_Text_17D300, 2 lockall - move 12, SlateportCity_ContestHall_Movement_1A083D - waitmove 0 + applymovement 12, SlateportCity_ContestHall_Movement_1A083D + waitmovement 0 releaseall end SlateportCity_ContestHall_EventScript_15565C:: @ 815565C msgbox SlateportCity_ContestHall_Text_17D27F, 2 lockall - move 11, SlateportCity_ContestHall_Movement_1A083D - waitmove 0 + applymovement 11, SlateportCity_ContestHall_Movement_1A083D + waitmovement 0 releaseall end diff --git a/data/scripts/maps/SlateportCity_ContestLobby.inc b/data/scripts/maps/SlateportCity_ContestLobby.inc index b2cce5312..cb4632d77 100644 --- a/data/scripts/maps/SlateportCity_ContestLobby.inc +++ b/data/scripts/maps/SlateportCity_ContestLobby.inc @@ -11,7 +11,7 @@ SlateportCity_ContestLobby_EventScript_15541D:: @ 815541D setvar CONTEST_RANK, 2 call SlateportCity_ContestLobby_EventScript_1A4E92 call SlateportCity_ContestLobby_EventScript_155448 - special 83 + special sub_80C4BF0 call SlateportCity_ContestLobby_EventScript_15FBDB setvar 0x4088, 3 warp LinkContestRoom1, 255, 7, 5 @@ -20,28 +20,28 @@ SlateportCity_ContestLobby_EventScript_15541D:: @ 815541D SlateportCity_ContestLobby_EventScript_155448:: @ 8155448 lockall - move 1, SlateportCity_ContestLobby_Movement_1554CC - waitmove 0 - playsfx 71 + applymovement 1, SlateportCity_ContestLobby_Movement_1554CC + waitmovement 0 + playse 71 setmaptile 4, 2, 545, 1 setmaptile 4, 3, 609, 1 - special 142 - move 1, SlateportCity_ContestLobby_Movement_1554CF - waitmove 0 - playsfx 71 + special DrawWholeMapView + applymovement 1, SlateportCity_ContestLobby_Movement_1554CF + waitmovement 0 + playse 71 setmaptile 4, 2, 721, 1 setmaptile 4, 3, 729, 1 - special 142 - pause 20 - move 1, SlateportCity_ContestLobby_Movement_1554DC - waitmove 0 - move 255, SlateportCity_ContestLobby_Movement_1554CA - waitmove 0 + special DrawWholeMapView + delay 20 + applymovement 1, SlateportCity_ContestLobby_Movement_1554DC + waitmovement 0 + applymovement 255, SlateportCity_ContestLobby_Movement_1554CA + waitmovement 0 msgbox SlateportCity_ContestLobby_Text_1A6832, 4 - closebutton - move 1, SlateportCity_ContestLobby_Movement_1554D3 - move 255, SlateportCity_ContestLobby_Movement_1554C0 - waitmove 0 + closemessage + applymovement 1, SlateportCity_ContestLobby_Movement_1554D3 + applymovement 255, SlateportCity_ContestLobby_Movement_1554C0 + waitmovement 0 releaseall return @@ -102,9 +102,9 @@ SlateportCity_ContestLobby_EventScript_1554F0:: @ 81554F0 SlateportCity_ContestLobby_EventScript_1554F9:: @ 81554F9 lockall checkflag 95 - jumpeq SlateportCity_ContestLobby_EventScript_155526 - move 7, SlateportCity_ContestLobby_Movement_1A0839 - waitmove 0 + goto_if_eq SlateportCity_ContestLobby_EventScript_155526 + applymovement 7, SlateportCity_ContestLobby_Movement_1A0839 + waitmovement 0 msgbox SlateportCity_ContestLobby_Text_17CA67, 4 giveitem ITEM_POKEBLOCK_CASE setflag 95 @@ -118,7 +118,7 @@ SlateportCity_ContestLobby_EventScript_155526:: @ 8155526 SlateportCity_ContestLobby_EventScript_15552F:: @ 815552F lockall fadescreen 1 - showcontestwinner 3 + drawcontestwinner 3 releaseall end @@ -128,8 +128,8 @@ SlateportCity_ContestLobby_EventScript_155536:: @ 8155536 @ 815553F lockall - special 259 + special ShowBerryBlenderRecordWindow waitbutton - hidebox 0, 0, 29, 19 + erasebox 0, 0, 29, 19 releaseall end diff --git a/data/scripts/maps/SlateportCity_Harbor.inc b/data/scripts/maps/SlateportCity_Harbor.inc index d65d28877..f145c4a3d 100644 --- a/data/scripts/maps/SlateportCity_Harbor.inc +++ b/data/scripts/maps/SlateportCity_Harbor.inc @@ -3,12 +3,12 @@ SlateportCity_Harbor_MapScripts:: @ 8155F5D .byte 0 SlateportCity_Harbor_MapScript1_155F63:: @ 8155F63 - warp6 SlateportCity, 255, 28, 13 + setescapewarp SlateportCity, 255, 28, 13 setvar 0x4001, 0 compare 0x40a0, 1 - callif 1, SlateportCity_Harbor_EventScript_155F89 + call_if 1, SlateportCity_Harbor_EventScript_155F89 checkflag 2052 - callif 1, SlateportCity_Harbor_EventScript_155F85 + call_if 1, SlateportCity_Harbor_EventScript_155F85 end SlateportCity_Harbor_EventScript_155F85:: @ 8155F85 @@ -16,89 +16,89 @@ SlateportCity_Harbor_EventScript_155F85:: @ 8155F85 return SlateportCity_Harbor_EventScript_155F89:: @ 8155F89 - playmusicbattle BGM_EVIL_TEAM - movespriteperm 4, 12, 13 - spritebehave 4, 9 + savebgm BGM_EVIL_TEAM + setobjectxyperm 4, 12, 13 + setobjectmovementtype 4, 9 setflag 905 return SlateportCity_Harbor_EventScript_155F9B:: @ 8155F9B lockall setvar 0x8008, 0 - jump SlateportCity_Harbor_EventScript_155FD5 + goto SlateportCity_Harbor_EventScript_155FD5 end SlateportCity_Harbor_EventScript_155FA7:: @ 8155FA7 lockall setvar 0x8008, 1 - jump SlateportCity_Harbor_EventScript_155FD5 + goto SlateportCity_Harbor_EventScript_155FD5 end SlateportCity_Harbor_EventScript_155FB3:: @ 8155FB3 lockall setvar 0x8008, 2 - jump SlateportCity_Harbor_EventScript_155FD5 + goto SlateportCity_Harbor_EventScript_155FD5 end SlateportCity_Harbor_EventScript_155FBF:: @ 8155FBF lockall setvar 0x8008, 3 - move 255, SlateportCity_Harbor_Movement_1560C2 - waitmove 0 - jump SlateportCity_Harbor_EventScript_155FD5 + applymovement 255, SlateportCity_Harbor_Movement_1560C2 + waitmovement 0 + goto SlateportCity_Harbor_EventScript_155FD5 end SlateportCity_Harbor_EventScript_155FD5:: @ 8155FD5 - move 7, SlateportCity_Harbor_Movement_1A0845 - waitmove 0 - move 255, SlateportCity_Harbor_Movement_1A0841 - waitmove 0 + applymovement 7, SlateportCity_Harbor_Movement_1A0845 + waitmovement 0 + applymovement 255, SlateportCity_Harbor_Movement_1A0841 + waitmovement 0 msgbox SlateportCity_Harbor_Text_17FD7D, 4 - closebutton - move 6, SlateportCity_Harbor_Movement_15609B - move 7, SlateportCity_Harbor_Movement_15609B - move 8, SlateportCity_Harbor_Movement_1560A5 - waitmove 0 - disappear 6 - disappear 7 - disappear 8 + closemessage + applymovement 6, SlateportCity_Harbor_Movement_15609B + applymovement 7, SlateportCity_Harbor_Movement_15609B + applymovement 8, SlateportCity_Harbor_Movement_1560A5 + waitmovement 0 + removeobject 6 + removeobject 7 + removeobject 8 setvar 0x40a0, 2 compare 0x8008, 0 - callif 1, SlateportCity_Harbor_EventScript_15605C + call_if 1, SlateportCity_Harbor_EventScript_15605C compare 0x8008, 1 - callif 1, SlateportCity_Harbor_EventScript_156071 + call_if 1, SlateportCity_Harbor_EventScript_156071 compare 0x8008, 2 - callif 1, SlateportCity_Harbor_EventScript_156086 + call_if 1, SlateportCity_Harbor_EventScript_156086 compare 0x8008, 3 - callif 1, SlateportCity_Harbor_EventScript_156086 + call_if 1, SlateportCity_Harbor_EventScript_156086 msgbox SlateportCity_Harbor_Text_17FE60, 4 - closebutton + closemessage setflag 821 setflag 822 - moveoffscreen 4 - spritebehave 4, 10 + moveobjectoffscreen 4 + setobjectmovementtype 4, 10 releaseall end SlateportCity_Harbor_EventScript_15605C:: @ 815605C - move 4, SlateportCity_Harbor_Movement_1560B3 - waitmove 0 - move 255, SlateportCity_Harbor_Movement_1A0845 - waitmove 0 + applymovement 4, SlateportCity_Harbor_Movement_1560B3 + waitmovement 0 + applymovement 255, SlateportCity_Harbor_Movement_1A0845 + waitmovement 0 return SlateportCity_Harbor_EventScript_156071:: @ 8156071 - move 4, SlateportCity_Harbor_Movement_1560B9 - waitmove 0 - move 255, SlateportCity_Harbor_Movement_1A0843 - waitmove 0 + applymovement 4, SlateportCity_Harbor_Movement_1560B9 + waitmovement 0 + applymovement 255, SlateportCity_Harbor_Movement_1A0843 + waitmovement 0 return SlateportCity_Harbor_EventScript_156086:: @ 8156086 - move 4, SlateportCity_Harbor_Movement_1560BE - waitmove 0 - move 255, SlateportCity_Harbor_Movement_1A0843 - waitmove 0 + applymovement 4, SlateportCity_Harbor_Movement_1560BE + waitmovement 0 + applymovement 255, SlateportCity_Harbor_Movement_1A0843 + waitmovement 0 return SlateportCity_Harbor_Movement_15609B:: @ 815609B @@ -160,7 +160,7 @@ SlateportCity_Harbor_EventScript_1560C4:: @ 81560C4 lock faceplayer checkflag 2052 - jumpeq SlateportCity_Harbor_EventScript_1560D9 + goto_if_eq SlateportCity_Harbor_EventScript_1560D9 msgbox SlateportCity_Harbor_Text_17FA0A, 4 release end @@ -169,14 +169,14 @@ SlateportCity_Harbor_EventScript_1560D9:: @ 81560D9 msgbox SlateportCity_Harbor_Text_17FA73, 4 checkitem ITEM_SS_TICKET, 1 compare RESULT, 0 - jumpeq SlateportCity_Harbor_EventScript_156135 + goto_if_eq SlateportCity_Harbor_EventScript_156135 message SlateportCity_Harbor_Text_17FB0A - waittext - jump SlateportCity_Harbor_EventScript_1560FD + waitmessage + goto SlateportCity_Harbor_EventScript_1560FD end SlateportCity_Harbor_EventScript_1560FD:: @ 81560FD - multichoicedef 18, 6, 52, 2, 0 + multichoicedefault 18, 6, 52, 2, 0 switch RESULT case 0, SlateportCity_Harbor_EventScript_15613F case 1, SlateportCity_Harbor_EventScript_156167 @@ -192,7 +192,7 @@ SlateportCity_Harbor_EventScript_156135:: @ 8156135 SlateportCity_Harbor_EventScript_15613F:: @ 815613F msgbox SlateportCity_Harbor_Text_17FB81, 5 compare RESULT, 0 - jumpeq SlateportCity_Harbor_EventScript_15618A + goto_if_eq SlateportCity_Harbor_EventScript_15618A setvar 0x40b4, 1 call SlateportCity_Harbor_EventScript_156196 warp SSTidalCorridor, 255, 1, 10 @@ -203,7 +203,7 @@ SlateportCity_Harbor_EventScript_15613F:: @ 815613F SlateportCity_Harbor_EventScript_156167:: @ 8156167 msgbox SlateportCity_Harbor_Text_17FB9C, 5 compare RESULT, 0 - jumpeq SlateportCity_Harbor_EventScript_15618A + goto_if_eq SlateportCity_Harbor_EventScript_15618A call SlateportCity_Harbor_EventScript_156196 warp BattleTower_Outside, 255, 19, 23 waitstate @@ -212,23 +212,23 @@ SlateportCity_Harbor_EventScript_156167:: @ 8156167 SlateportCity_Harbor_EventScript_15618A:: @ 815618A message SlateportCity_Harbor_Text_17FBE5 - waittext - jump SlateportCity_Harbor_EventScript_1560FD + waitmessage + goto SlateportCity_Harbor_EventScript_1560FD end SlateportCity_Harbor_EventScript_156196:: @ 8156196 msgbox SlateportCity_Harbor_Text_17FBB6, 4 - closebutton - move LAST_TALKED, SlateportCity_Harbor_Movement_1A0841 - waitmove 0 - pause 30 - spriteinvisible LAST_TALKED, 9, 8 + closemessage + applymovement LAST_TALKED, SlateportCity_Harbor_Movement_1A0841 + waitmovement 0 + delay 30 + hideobject LAST_TALKED, 9, 8 compare FACING, 2 - callif 1, SlateportCity_Harbor_EventScript_1561EF + call_if 1, SlateportCity_Harbor_EventScript_1561EF compare FACING, 4 - callif 1, SlateportCity_Harbor_EventScript_1561E4 - pause 30 - spriteinvisible 255, 0, 0 + call_if 1, SlateportCity_Harbor_EventScript_1561E4 + delay 30 + hideobject 255, 0, 0 setvar 0x8004, 5 call SlateportCity_Harbor_EventScript_1A040E return @@ -239,13 +239,13 @@ SlateportCity_Harbor_EventScript_1561DA:: @ 81561DA end SlateportCity_Harbor_EventScript_1561E4:: @ 81561E4 - move 255, SlateportCity_Harbor_Movement_1561FA - waitmove 0 + applymovement 255, SlateportCity_Harbor_Movement_1561FA + waitmovement 0 return SlateportCity_Harbor_EventScript_1561EF:: @ 81561EF - move 255, SlateportCity_Harbor_Movement_1561FD - waitmove 0 + applymovement 255, SlateportCity_Harbor_Movement_1561FD + waitmovement 0 return SlateportCity_Harbor_Movement_1561FA:: @ 81561FA @@ -269,17 +269,17 @@ SlateportCity_Harbor_EventScript_156211:: @ 8156211 lock faceplayer checkflag 2061 - jumpeq SlateportCity_Harbor_EventScript_15626F + goto_if_eq SlateportCity_Harbor_EventScript_15626F checkflag 271 - jumpeq SlateportCity_Harbor_EventScript_156265 + goto_if_eq SlateportCity_Harbor_EventScript_156265 checkflag 112 - jumpeq SlateportCity_Harbor_EventScript_156258 + goto_if_eq SlateportCity_Harbor_EventScript_156258 compare 0x40a0, 2 - jumpeq SlateportCity_Harbor_EventScript_15624E + goto_if_eq SlateportCity_Harbor_EventScript_15624E msgbox SlateportCity_Harbor_Text_17FD1C, 4 - closebutton - move LAST_TALKED, SlateportCity_Harbor_Movement_1A083D - waitmove 0 + closemessage + applymovement LAST_TALKED, SlateportCity_Harbor_Movement_1A083D + waitmovement 0 release end @@ -301,12 +301,12 @@ SlateportCity_Harbor_EventScript_156265:: @ 8156265 SlateportCity_Harbor_EventScript_15626F:: @ 815626F compare 0x4001, 1 - jumpeq SlateportCity_Harbor_EventScript_156380 + goto_if_eq SlateportCity_Harbor_EventScript_156380 checkitem ITEM_SCANNER, 1 compare RESULT, 1 - jumpeq SlateportCity_Harbor_EventScript_1562A7 + goto_if_eq SlateportCity_Harbor_EventScript_1562A7 checkflag 2052 - jumpeq SlateportCity_Harbor_EventScript_15629D + goto_if_eq SlateportCity_Harbor_EventScript_15629D msgbox SlateportCity_Harbor_Text_18017B, 4 release end @@ -318,8 +318,8 @@ SlateportCity_Harbor_EventScript_15629D:: @ 815629D SlateportCity_Harbor_EventScript_1562A7:: @ 81562A7 message SlateportCity_Harbor_Text_18028B - waittext - jump SlateportCity_Harbor_EventScript_1562B3 + waitmessage + goto SlateportCity_Harbor_EventScript_1562B3 end SlateportCity_Harbor_EventScript_1562B3:: @ 81562B3 @@ -334,27 +334,27 @@ SlateportCity_Harbor_EventScript_1562B3:: @ 81562B3 SlateportCity_Harbor_EventScript_1562EA:: @ 81562EA msgbox SlateportCity_Harbor_Text_1803DD, 5 compare RESULT, 0 - jumpeq SlateportCity_Harbor_EventScript_156374 + goto_if_eq SlateportCity_Harbor_EventScript_156374 giveitem ITEM_DEEP_SEA_TOOTH compare RESULT, 0 - jumpeq SlateportCity_Harbor_EventScript_1A029B + goto_if_eq SlateportCity_Harbor_EventScript_1A029B removeitem ITEM_SCANNER, 1 msgbox SlateportCity_Harbor_Text_18046B, 4 setflag 294 - jump SlateportCity_Harbor_EventScript_156380 + goto SlateportCity_Harbor_EventScript_156380 end SlateportCity_Harbor_EventScript_15632A:: @ 815632A msgbox SlateportCity_Harbor_Text_180412, 5 compare RESULT, 0 - jumpeq SlateportCity_Harbor_EventScript_156374 + goto_if_eq SlateportCity_Harbor_EventScript_156374 giveitem ITEM_DEEP_SEA_SCALE compare RESULT, 0 - jumpeq SlateportCity_Harbor_EventScript_1A029B + goto_if_eq SlateportCity_Harbor_EventScript_1A029B removeitem ITEM_SCANNER, 1 msgbox SlateportCity_Harbor_Text_18046B, 4 setflag 294 - jump SlateportCity_Harbor_EventScript_156380 + goto SlateportCity_Harbor_EventScript_156380 end SlateportCity_Harbor_EventScript_15636A:: @ 815636A @@ -364,8 +364,8 @@ SlateportCity_Harbor_EventScript_15636A:: @ 815636A SlateportCity_Harbor_EventScript_156374:: @ 8156374 message SlateportCity_Harbor_Text_180447 - waittext - jump SlateportCity_Harbor_EventScript_1562B3 + waitmessage + goto SlateportCity_Harbor_EventScript_1562B3 end SlateportCity_Harbor_EventScript_156380:: @ 8156380 diff --git a/data/scripts/maps/SlateportCity_House1.inc b/data/scripts/maps/SlateportCity_House1.inc index 702e52d84..c72aa229a 100644 --- a/data/scripts/maps/SlateportCity_House1.inc +++ b/data/scripts/maps/SlateportCity_House1.inc @@ -6,19 +6,19 @@ SlateportCity_House1_EventScript_15567B:: @ 815567B faceplayer msgbox SlateportCity_House1_Text_17D46A, 5 compare RESULT, 1 - jumpeq SlateportCity_House1_EventScript_15569C + goto_if_eq SlateportCity_House1_EventScript_15569C compare RESULT, 0 - jumpeq SlateportCity_House1_EventScript_1556BF + goto_if_eq SlateportCity_House1_EventScript_1556BF end SlateportCity_House1_EventScript_15569C:: @ 815569C msgbox SlateportCity_House1_Text_17D4DB, 4 - special 159 + special sub_80F9A0C waitstate compare 0x8004, 255 - jumpif 5, SlateportCity_House1_EventScript_1556C9 + goto_if 5, SlateportCity_House1_EventScript_1556C9 compare 0x8004, 255 - jumpeq SlateportCity_House1_EventScript_1556BF + goto_if_eq SlateportCity_House1_EventScript_1556BF end SlateportCity_House1_EventScript_1556BF:: @ 81556BF @@ -27,22 +27,22 @@ SlateportCity_House1_EventScript_1556BF:: @ 81556BF end SlateportCity_House1_EventScript_1556C9:: @ 81556C9 - specialval RESULT, 327 + specialvar RESULT, ScriptGetPartyMonSpecies compare RESULT, SPECIES_EGG - jumpeq SlateportCity_House1_EventScript_15571C - special 124 - special 125 + goto_if_eq SlateportCity_House1_EventScript_15571C + special sub_80BFAE0 + special sub_80BFB10 compare RESULT, 1 - jumpeq SlateportCity_House1_EventScript_155726 - specialval RESULT, 336 - special 124 + goto_if_eq SlateportCity_House1_EventScript_155726 + specialvar RESULT, sub_810F96C + special sub_80BFAE0 compare RESULT, 1 - jumpeq SlateportCity_House1_EventScript_155726 + goto_if_eq SlateportCity_House1_EventScript_155726 msgbox SlateportCity_House1_Text_17D505, 5 compare RESULT, 1 - jumpeq SlateportCity_House1_EventScript_155730 + goto_if_eq SlateportCity_House1_EventScript_155730 compare RESULT, 0 - jumpeq SlateportCity_House1_EventScript_1556BF + goto_if_eq SlateportCity_House1_EventScript_1556BF end SlateportCity_House1_EventScript_15571C:: @ 815571C @@ -58,10 +58,10 @@ SlateportCity_House1_EventScript_155726:: @ 8155726 SlateportCity_House1_EventScript_155730:: @ 8155730 msgbox SlateportCity_House1_Text_17D580, 4 call SlateportCity_House1_EventScript_1A0678 - specialval RESULT, 123 - special 124 + specialvar RESULT, sub_80BF9B4 + special sub_80BFAE0 compare RESULT, 1 - jumpeq SlateportCity_House1_EventScript_15575A + goto_if_eq SlateportCity_House1_EventScript_15575A msgbox SlateportCity_House1_Text_17D63A, 4 release end diff --git a/data/scripts/maps/SlateportCity_House2.inc b/data/scripts/maps/SlateportCity_House2.inc index 2d50f0851..934fae153 100644 --- a/data/scripts/maps/SlateportCity_House2.inc +++ b/data/scripts/maps/SlateportCity_House2.inc @@ -10,7 +10,7 @@ SlateportCity_House2_EventScript_156399:: @ 8156399 faceplayer checkitem ITEM_CONTEST_PASS, 1 compare RESULT, 1 - jumpeq SlateportCity_House2_EventScript_1563B5 + goto_if_eq SlateportCity_House2_EventScript_1563B5 msgbox SlateportCity_House2_Text_180567, 4 release end diff --git a/data/scripts/maps/SlateportCity_Mart.inc b/data/scripts/maps/SlateportCity_Mart.inc index 730afe6d4..39a1d5ba2 100644 --- a/data/scripts/maps/SlateportCity_Mart.inc +++ b/data/scripts/maps/SlateportCity_Mart.inc @@ -5,7 +5,7 @@ SlateportCity_Mart_EventScript_156411:: @ 8156411 lock faceplayer message SlateportCity_Mart_Text_1A0BE4 - waittext + waitmessage pokemart SlateportCity_Mart_Items msgbox SlateportCity_Mart_Text_1A0C02, 4 release diff --git a/data/scripts/maps/SlateportCity_OceanicMuseum_1F.inc b/data/scripts/maps/SlateportCity_OceanicMuseum_1F.inc index e84f8ccc6..1ee8ff39b 100644 --- a/data/scripts/maps/SlateportCity_OceanicMuseum_1F.inc +++ b/data/scripts/maps/SlateportCity_OceanicMuseum_1F.inc @@ -18,59 +18,59 @@ SlateportCity_OceanicMuseum_1F_EventScript_155ADB:: @ 8155ADB SlateportCity_OceanicMuseum_1F_EventScript_155AE4:: @ 8155AE4 lockall - move 255, SlateportCity_OceanicMuseum_1F_Movement_1A083F - waitmove 0 - jump SlateportCity_OceanicMuseum_1F_EventScript_155B06 + applymovement 255, SlateportCity_OceanicMuseum_1F_Movement_1A083F + waitmovement 0 + goto SlateportCity_OceanicMuseum_1F_EventScript_155B06 end SlateportCity_OceanicMuseum_1F_EventScript_155AF5:: @ 8155AF5 lockall - move 255, SlateportCity_OceanicMuseum_1F_Movement_1A0843 - waitmove 0 - jump SlateportCity_OceanicMuseum_1F_EventScript_155B06 + applymovement 255, SlateportCity_OceanicMuseum_1F_Movement_1A0843 + waitmovement 0 + goto SlateportCity_OceanicMuseum_1F_EventScript_155B06 end SlateportCity_OceanicMuseum_1F_EventScript_155B06:: @ 8155B06 - showmoney 0, 0 - snop + showmoneybox 0, 0 + nop msgbox SlateportCity_OceanicMuseum_1F_Text_17E18D, 5 compare RESULT, 1 - jumpeq SlateportCity_OceanicMuseum_1F_EventScript_155B2D - closebutton - hidemoney 0, 0 - move 255, SlateportCity_OceanicMuseum_1F_Movement_155B8D - waitmove 0 + goto_if_eq SlateportCity_OceanicMuseum_1F_EventScript_155B2D + closemessage + hidemoneybox 0, 0 + applymovement 255, SlateportCity_OceanicMuseum_1F_Movement_155B8D + waitmovement 0 releaseall end SlateportCity_OceanicMuseum_1F_EventScript_155B2D:: @ 8155B2D checkmoney 0x32, 0 compare RESULT, 0 - jumpeq SlateportCity_OceanicMuseum_1F_EventScript_155B5A - paymoney 0x32, 0 - updatemoney 0, 0 - snop + goto_if_eq SlateportCity_OceanicMuseum_1F_EventScript_155B5A + takemoney 0x32, 0 + updatemoneybox 0, 0 + nop msgbox SlateportCity_OceanicMuseum_1F_Text_17E1DE, 4 setvar 0x40aa, 1 - hidemoney 0, 0 + hidemoneybox 0, 0 releaseall end SlateportCity_OceanicMuseum_1F_EventScript_155B5A:: @ 8155B5A checkflag 149 - jumpif 0, SlateportCity_OceanicMuseum_1F_EventScript_155B7B + goto_if 0, SlateportCity_OceanicMuseum_1F_EventScript_155B7B msgbox SlateportCity_OceanicMuseum_1F_Text_17E1F5, 4 - closebutton - hidemoney 0, 0 - move 255, SlateportCity_OceanicMuseum_1F_Movement_155B8D - waitmove 0 + closemessage + hidemoneybox 0, 0 + applymovement 255, SlateportCity_OceanicMuseum_1F_Movement_155B8D + waitmovement 0 releaseall end SlateportCity_OceanicMuseum_1F_EventScript_155B7B:: @ 8155B7B msgbox SlateportCity_OceanicMuseum_1F_Text_17E22D, 4 setvar 0x40aa, 1 - hidemoney 0, 0 + hidemoneybox 0, 0 releaseall end @@ -157,40 +157,40 @@ SlateportCity_OceanicMuseum_1F_EventScript_155C31:: @ 8155C31 SlateportCity_OceanicMuseum_1F_EventScript_155C3A:: @ 8155C3A lock faceplayer - pause 8 - playsfx 21 - move 13, SlateportCity_OceanicMuseum_1F_Movement_1A0833 - waitmove 0 - move 13, SlateportCity_OceanicMuseum_1F_Movement_1A0835 - waitmove 0 + delay 8 + playse 21 + applymovement 13, SlateportCity_OceanicMuseum_1F_Movement_1A0833 + waitmovement 0 + applymovement 13, SlateportCity_OceanicMuseum_1F_Movement_1A0835 + waitmovement 0 msgbox SlateportCity_OceanicMuseum_1F_Text_17E582, 4 giveitem ITEM_TM46 compare RESULT, 0 - jumpeq SlateportCity_OceanicMuseum_1F_EventScript_155CC2 + goto_if_eq SlateportCity_OceanicMuseum_1F_EventScript_155CC2 setflag 269 msgbox SlateportCity_OceanicMuseum_1F_Text_17E606, 4 - closebutton + closemessage compare FACING, 2 - jumpeq SlateportCity_OceanicMuseum_1F_EventScript_155C98 + goto_if_eq SlateportCity_OceanicMuseum_1F_EventScript_155C98 compare FACING, 2 - jumpif 5, SlateportCity_OceanicMuseum_1F_EventScript_155CAD + goto_if 5, SlateportCity_OceanicMuseum_1F_EventScript_155CAD end SlateportCity_OceanicMuseum_1F_EventScript_155C98:: @ 8155C98 - move 13, SlateportCity_OceanicMuseum_1F_Movement_155CD3 - waitmove 0 + applymovement 13, SlateportCity_OceanicMuseum_1F_Movement_155CD3 + waitmovement 0 setflag 965 - playsfx 9 - disappear 13 + playse 9 + removeobject 13 release end SlateportCity_OceanicMuseum_1F_EventScript_155CAD:: @ 8155CAD - move 13, SlateportCity_OceanicMuseum_1F_Movement_155CCC - waitmove 0 + applymovement 13, SlateportCity_OceanicMuseum_1F_Movement_155CCC + waitmovement 0 setflag 965 - playsfx 9 - disappear 13 + playse 9 + removeobject 13 release end diff --git a/data/scripts/maps/SlateportCity_OceanicMuseum_2F.inc b/data/scripts/maps/SlateportCity_OceanicMuseum_2F.inc index 57bfbbd03..e379c633d 100644 --- a/data/scripts/maps/SlateportCity_OceanicMuseum_2F.inc +++ b/data/scripts/maps/SlateportCity_OceanicMuseum_2F.inc @@ -10,82 +10,82 @@ SlateportCity_OceanicMuseum_2F_EventScript_155CE6:: @ 8155CE6 lock faceplayer msgbox SlateportCity_OceanicMuseum_2F_Text_17ECFD, 4 - closebutton - playmusic BGM_EVIL_TEAM, 1 - reappear 3 - move 3, SlateportCity_OceanicMuseum_2F_Movement_155EB4 - waitmove 0 - reappear 4 - move 4, SlateportCity_OceanicMuseum_2F_Movement_155EC3 - waitmove 0 - move 3, SlateportCity_OceanicMuseum_2F_Movement_155EB8 - move 4, SlateportCity_OceanicMuseum_2F_Movement_155EC5 - waitmove 0 + closemessage + playbgm BGM_EVIL_TEAM, 1 + addobject 3 + applymovement 3, SlateportCity_OceanicMuseum_2F_Movement_155EB4 + waitmovement 0 + addobject 4 + applymovement 4, SlateportCity_OceanicMuseum_2F_Movement_155EC3 + waitmovement 0 + applymovement 3, SlateportCity_OceanicMuseum_2F_Movement_155EB8 + applymovement 4, SlateportCity_OceanicMuseum_2F_Movement_155EC5 + waitmovement 0 compare FACING, 1 - callif 1, SlateportCity_OceanicMuseum_2F_EventScript_155E62 + call_if 1, SlateportCity_OceanicMuseum_2F_EventScript_155E62 compare FACING, 4 - callif 1, SlateportCity_OceanicMuseum_2F_EventScript_155E62 + call_if 1, SlateportCity_OceanicMuseum_2F_EventScript_155E62 msgbox SlateportCity_OceanicMuseum_2F_Text_17EDAE, 4 compare FACING, 4 - callif 5, SlateportCity_OceanicMuseum_2F_EventScript_155E6D + call_if 5, SlateportCity_OceanicMuseum_2F_EventScript_155E6D msgbox SlateportCity_OceanicMuseum_2F_Text_17EDD7, 4 msgbox SlateportCity_OceanicMuseum_2F_Text_17EE01, 4 - closebutton - move 4, SlateportCity_OceanicMuseum_2F_Movement_155EB2 - waitmove 0 + closemessage + applymovement 4, SlateportCity_OceanicMuseum_2F_Movement_155EB2 + waitmovement 0 compare FACING, 1 - callif 1, SlateportCity_OceanicMuseum_2F_EventScript_155E78 + call_if 1, SlateportCity_OceanicMuseum_2F_EventScript_155E78 compare FACING, 3 - callif 1, SlateportCity_OceanicMuseum_2F_EventScript_155E83 + call_if 1, SlateportCity_OceanicMuseum_2F_EventScript_155E83 trainerbattle 3, OPPONENT_MUSEUM_2F_GRUNT_1, 0, SlateportCity_OceanicMuseum_2F_Text_17EE4E msgbox SlateportCity_OceanicMuseum_2F_Text_17EE66, 4 - closebutton - move 4, SlateportCity_OceanicMuseum_2F_Movement_155EBF - waitmove 0 - move 3, SlateportCity_OceanicMuseum_2F_Movement_155EB2 - waitmove 0 + closemessage + applymovement 4, SlateportCity_OceanicMuseum_2F_Movement_155EBF + waitmovement 0 + applymovement 3, SlateportCity_OceanicMuseum_2F_Movement_155EB2 + waitmovement 0 msgbox SlateportCity_OceanicMuseum_2F_Text_17EEA5, 4 - playmusicbattle 0 + savebgm 0 trainerbattle 3, OPPONENT_MUSEUM_2F_GRUNT_2, 0, SlateportCity_OceanicMuseum_2F_Text_17EED6 - move 3, SlateportCity_OceanicMuseum_2F_Movement_155EBF - waitmove 0 - move 3, SlateportCity_OceanicMuseum_2F_Movement_1A0845 - move 4, SlateportCity_OceanicMuseum_2F_Movement_1A0841 - waitmove 0 + applymovement 3, SlateportCity_OceanicMuseum_2F_Movement_155EBF + waitmovement 0 + applymovement 3, SlateportCity_OceanicMuseum_2F_Movement_1A0845 + applymovement 4, SlateportCity_OceanicMuseum_2F_Movement_1A0841 + waitmovement 0 msgbox SlateportCity_OceanicMuseum_2F_Text_17EEEA, 4 - closebutton - pause 35 - reappear 2 - move 2, SlateportCity_OceanicMuseum_2F_Movement_155EA8 - move 4, SlateportCity_OceanicMuseum_2F_Movement_155ECE - waitmove 0 + closemessage + delay 35 + addobject 2 + applymovement 2, SlateportCity_OceanicMuseum_2F_Movement_155EA8 + applymovement 4, SlateportCity_OceanicMuseum_2F_Movement_155ECE + waitmovement 0 msgbox SlateportCity_OceanicMuseum_2F_Text_17EF62, 4 - move 2, SlateportCity_OceanicMuseum_2F_Movement_155EA6 - waitmove 0 + applymovement 2, SlateportCity_OceanicMuseum_2F_Movement_155EA6 + waitmovement 0 .ifdef SAPPHIRE msgbox SlateportCity_OceanicMuseum_2F_Text_17EFC9, 4 .else msgbox SlateportCity_OceanicMuseum_2F_Text_17F17E, 4 .endif - closebutton + closemessage fadescreen 1 - disappear 2 - disappear 3 - disappear 4 + removeobject 2 + removeobject 3 + removeobject 4 fadescreen 0 - pause 30 + delay 30 setflag 883 - move 255, SlateportCity_OceanicMuseum_2F_Movement_1A0843 - waitmove 0 + applymovement 255, SlateportCity_OceanicMuseum_2F_Movement_1A0843 + waitmovement 0 msgbox SlateportCity_OceanicMuseum_2F_Text_17F352, 4 setvar 0x8004, 269 call SlateportCity_OceanicMuseum_2F_EventScript_1A067F msgbox SlateportCity_OceanicMuseum_2F_Text_17F433, 4 - closebutton - move 1, SlateportCity_OceanicMuseum_2F_Movement_155E98 - waitmove 0 - playsfx 9 - disappear 1 + closemessage + applymovement 1, SlateportCity_OceanicMuseum_2F_Movement_155E98 + waitmovement 0 + playse 9 + removeobject 1 setflag 900 setflag 149 clearflag 947 @@ -94,23 +94,23 @@ SlateportCity_OceanicMuseum_2F_EventScript_155CE6:: @ 8155CE6 end SlateportCity_OceanicMuseum_2F_EventScript_155E62:: @ 8155E62 - move 255, SlateportCity_OceanicMuseum_2F_Movement_1A083F - waitmove 0 + applymovement 255, SlateportCity_OceanicMuseum_2F_Movement_1A083F + waitmovement 0 return SlateportCity_OceanicMuseum_2F_EventScript_155E6D:: @ 8155E6D - move 1, SlateportCity_OceanicMuseum_2F_Movement_1A083F - waitmove 0 + applymovement 1, SlateportCity_OceanicMuseum_2F_Movement_1A083F + waitmovement 0 return SlateportCity_OceanicMuseum_2F_EventScript_155E78:: @ 8155E78 - move 255, SlateportCity_OceanicMuseum_2F_Movement_155E8E - waitmove 0 + applymovement 255, SlateportCity_OceanicMuseum_2F_Movement_155E8E + waitmovement 0 return SlateportCity_OceanicMuseum_2F_EventScript_155E83:: @ 8155E83 - move 255, SlateportCity_OceanicMuseum_2F_Movement_155E92 - waitmove 0 + applymovement 255, SlateportCity_OceanicMuseum_2F_Movement_155E92 + waitmovement 0 return SlateportCity_OceanicMuseum_2F_Movement_155E8E:: @ 8155E8E @@ -265,8 +265,8 @@ SlateportCity_OceanicMuseum_2F_EventScript_155F46:: @ 8155F46 lock faceplayer msgbox SlateportCity_OceanicMuseum_2F_Text_17F53B, 4 - closebutton - move LAST_TALKED, SlateportCity_OceanicMuseum_2F_Movement_1A083D - waitmove 0 + closemessage + applymovement LAST_TALKED, SlateportCity_OceanicMuseum_2F_Movement_1A083D + waitmovement 0 release end diff --git a/data/scripts/maps/SlateportCity_PokemonCenter_1F.inc b/data/scripts/maps/SlateportCity_PokemonCenter_1F.inc index c550a6850..9aa326f70 100644 --- a/data/scripts/maps/SlateportCity_PokemonCenter_1F.inc +++ b/data/scripts/maps/SlateportCity_PokemonCenter_1F.inc @@ -10,7 +10,7 @@ SlateportCity_PokemonCenter_1F_MapScript1_1563C5:: @ 81563C5 SlateportCity_PokemonCenter_1F_EventScript_1563CE:: @ 81563CE setvar 0x800b, 1 call SlateportCity_PokemonCenter_1F_EventScript_19FD5B - waittext + waitmessage waitbutton release end diff --git a/data/scripts/maps/SlateportCity_PokemonFanClub.inc b/data/scripts/maps/SlateportCity_PokemonFanClub.inc index 8f0323f77..4195ad43a 100644 --- a/data/scripts/maps/SlateportCity_PokemonFanClub.inc +++ b/data/scripts/maps/SlateportCity_PokemonFanClub.inc @@ -18,27 +18,27 @@ SlateportCity_PokemonFanClub_EventScript_15576B:: @ 815576B SlateportCity_PokemonFanClub_EventScript_155795:: @ 8155795 setvar 0x40b7, 1 msgbox SlateportCity_PokemonFanClub_Text_17D773, 4 - jump SlateportCity_PokemonFanClub_EventScript_155808 + goto SlateportCity_PokemonFanClub_EventScript_155808 end SlateportCity_PokemonFanClub_EventScript_1557A8:: @ 81557A8 setvar 0x4002, 0 checkflag 204 - callif 1, SlateportCity_PokemonFanClub_EventScript_155893 + call_if 1, SlateportCity_PokemonFanClub_EventScript_155893 checkflag 203 - callif 1, SlateportCity_PokemonFanClub_EventScript_155893 + call_if 1, SlateportCity_PokemonFanClub_EventScript_155893 checkflag 202 - callif 1, SlateportCity_PokemonFanClub_EventScript_155893 + call_if 1, SlateportCity_PokemonFanClub_EventScript_155893 checkflag 201 - callif 1, SlateportCity_PokemonFanClub_EventScript_155893 + call_if 1, SlateportCity_PokemonFanClub_EventScript_155893 checkflag 200 - callif 1, SlateportCity_PokemonFanClub_EventScript_155893 + call_if 1, SlateportCity_PokemonFanClub_EventScript_155893 compare 0x4002, 5 - callif 1, SlateportCity_PokemonFanClub_EventScript_15588D + call_if 1, SlateportCity_PokemonFanClub_EventScript_15588D compare 0x40b7, 2 - jumpeq SlateportCity_PokemonFanClub_EventScript_1557FE + goto_if_eq SlateportCity_PokemonFanClub_EventScript_1557FE msgbox SlateportCity_PokemonFanClub_Text_17DA14, 4 - jump SlateportCity_PokemonFanClub_EventScript_155808 + goto SlateportCity_PokemonFanClub_EventScript_155808 end SlateportCity_PokemonFanClub_EventScript_1557FE:: @ 81557FE @@ -50,16 +50,16 @@ SlateportCity_PokemonFanClub_EventScript_155808:: @ 8155808 msgbox SlateportCity_PokemonFanClub_Text_17DA49, 4 setvar 0x4001, 0 checkflag 204 - callif 0, SlateportCity_PokemonFanClub_EventScript_1559FE + call_if 0, SlateportCity_PokemonFanClub_EventScript_1559FE checkflag 203 - callif 0, SlateportCity_PokemonFanClub_EventScript_1559E7 + call_if 0, SlateportCity_PokemonFanClub_EventScript_1559E7 checkflag 202 - callif 0, SlateportCity_PokemonFanClub_EventScript_1559D0 + call_if 0, SlateportCity_PokemonFanClub_EventScript_1559D0 checkflag 201 - callif 0, SlateportCity_PokemonFanClub_EventScript_1559B9 + call_if 0, SlateportCity_PokemonFanClub_EventScript_1559B9 checkflag 200 - callif 0, SlateportCity_PokemonFanClub_EventScript_1559A2 - bufferfirstpoke 0 + call_if 0, SlateportCity_PokemonFanClub_EventScript_1559A2 + getfirstpartypokename 0 switch 0x4001 case 0, SlateportCity_PokemonFanClub_EventScript_155899 case 1, SlateportCity_PokemonFanClub_EventScript_1558A3 @@ -86,7 +86,7 @@ SlateportCity_PokemonFanClub_EventScript_155899:: @ 8155899 SlateportCity_PokemonFanClub_EventScript_1558A3:: @ 81558A3 checkitemspace ITEM_RED_SCARF, 1 compare RESULT, 0 - jumpeq SlateportCity_PokemonFanClub_EventScript_155998 + goto_if_eq SlateportCity_PokemonFanClub_EventScript_155998 msgbox SlateportCity_PokemonFanClub_Text_17DB89, 4 setflag 200 giveitem ITEM_RED_SCARF @@ -97,7 +97,7 @@ SlateportCity_PokemonFanClub_EventScript_1558A3:: @ 81558A3 SlateportCity_PokemonFanClub_EventScript_1558D4:: @ 81558D4 checkitemspace ITEM_BLUE_SCARF, 1 compare RESULT, 0 - jumpeq SlateportCity_PokemonFanClub_EventScript_155998 + goto_if_eq SlateportCity_PokemonFanClub_EventScript_155998 msgbox SlateportCity_PokemonFanClub_Text_17DB89, 4 setflag 201 giveitem ITEM_BLUE_SCARF @@ -108,7 +108,7 @@ SlateportCity_PokemonFanClub_EventScript_1558D4:: @ 81558D4 SlateportCity_PokemonFanClub_EventScript_155905:: @ 8155905 checkitemspace ITEM_PINK_SCARF, 1 compare RESULT, 0 - jumpeq SlateportCity_PokemonFanClub_EventScript_155998 + goto_if_eq SlateportCity_PokemonFanClub_EventScript_155998 msgbox SlateportCity_PokemonFanClub_Text_17DB89, 4 setflag 202 giveitem ITEM_PINK_SCARF @@ -119,7 +119,7 @@ SlateportCity_PokemonFanClub_EventScript_155905:: @ 8155905 SlateportCity_PokemonFanClub_EventScript_155936:: @ 8155936 checkitemspace ITEM_GREEN_SCARF, 1 compare RESULT, 0 - jumpeq SlateportCity_PokemonFanClub_EventScript_155998 + goto_if_eq SlateportCity_PokemonFanClub_EventScript_155998 msgbox SlateportCity_PokemonFanClub_Text_17DB89, 4 setflag 203 giveitem ITEM_GREEN_SCARF @@ -130,7 +130,7 @@ SlateportCity_PokemonFanClub_EventScript_155936:: @ 8155936 SlateportCity_PokemonFanClub_EventScript_155967:: @ 8155967 checkitemspace ITEM_YELLOW_SCARF, 1 compare RESULT, 0 - jumpeq SlateportCity_PokemonFanClub_EventScript_155998 + goto_if_eq SlateportCity_PokemonFanClub_EventScript_155998 msgbox SlateportCity_PokemonFanClub_Text_17DB89, 4 setflag 204 giveitem ITEM_YELLOW_SCARF @@ -144,9 +144,9 @@ SlateportCity_PokemonFanClub_EventScript_155998:: @ 8155998 end SlateportCity_PokemonFanClub_EventScript_1559A2:: @ 81559A2 - specialval RESULT, 265 + specialvar RESULT, CheckLeadMonCool compare RESULT, 1 - callif 1, SlateportCity_PokemonFanClub_EventScript_1559B3 + call_if 1, SlateportCity_PokemonFanClub_EventScript_1559B3 return SlateportCity_PokemonFanClub_EventScript_1559B3:: @ 81559B3 @@ -154,9 +154,9 @@ SlateportCity_PokemonFanClub_EventScript_1559B3:: @ 81559B3 return SlateportCity_PokemonFanClub_EventScript_1559B9:: @ 81559B9 - specialval RESULT, 266 + specialvar RESULT, CheckLeadMonBeauty compare RESULT, 1 - callif 1, SlateportCity_PokemonFanClub_EventScript_1559CA + call_if 1, SlateportCity_PokemonFanClub_EventScript_1559CA return SlateportCity_PokemonFanClub_EventScript_1559CA:: @ 81559CA @@ -164,9 +164,9 @@ SlateportCity_PokemonFanClub_EventScript_1559CA:: @ 81559CA return SlateportCity_PokemonFanClub_EventScript_1559D0:: @ 81559D0 - specialval RESULT, 267 + specialvar RESULT, CheckLeadMonCute compare RESULT, 1 - callif 1, SlateportCity_PokemonFanClub_EventScript_1559E1 + call_if 1, SlateportCity_PokemonFanClub_EventScript_1559E1 return SlateportCity_PokemonFanClub_EventScript_1559E1:: @ 81559E1 @@ -174,9 +174,9 @@ SlateportCity_PokemonFanClub_EventScript_1559E1:: @ 81559E1 return SlateportCity_PokemonFanClub_EventScript_1559E7:: @ 81559E7 - specialval RESULT, 268 + specialvar RESULT, CheckLeadMonSmart compare RESULT, 1 - callif 1, SlateportCity_PokemonFanClub_EventScript_1559F8 + call_if 1, SlateportCity_PokemonFanClub_EventScript_1559F8 return SlateportCity_PokemonFanClub_EventScript_1559F8:: @ 81559F8 @@ -184,9 +184,9 @@ SlateportCity_PokemonFanClub_EventScript_1559F8:: @ 81559F8 return SlateportCity_PokemonFanClub_EventScript_1559FE:: @ 81559FE - specialval RESULT, 269 + specialvar RESULT, CheckLeadMonTough compare RESULT, 1 - callif 1, SlateportCity_PokemonFanClub_EventScript_155A0F + call_if 1, SlateportCity_PokemonFanClub_EventScript_155A0F return SlateportCity_PokemonFanClub_EventScript_155A0F:: @ 8155A0F @@ -197,24 +197,24 @@ SlateportCity_PokemonFanClub_EventScript_155A15:: @ 8155A15 lock faceplayer checkflag 278 - jumpeq SlateportCity_PokemonFanClub_EventScript_155A75 + goto_if_eq SlateportCity_PokemonFanClub_EventScript_155A75 msgbox SlateportCity_PokemonFanClub_Text_17DE6B, 4 - specialval RESULT, 230 + specialvar RESULT, GetLeadMonFriendshipScore compare RESULT, 4 - jumpif 4, SlateportCity_PokemonFanClub_EventScript_155A3A + goto_if 4, SlateportCity_PokemonFanClub_EventScript_155A3A release end SlateportCity_PokemonFanClub_EventScript_155A3A:: @ 8155A3A - playsfx 21 - move LAST_TALKED, SlateportCity_PokemonFanClub_Movement_1A0833 - waitmove 0 - move LAST_TALKED, SlateportCity_PokemonFanClub_Movement_1A0835 - waitmove 0 + playse 21 + applymovement LAST_TALKED, SlateportCity_PokemonFanClub_Movement_1A0833 + waitmovement 0 + applymovement LAST_TALKED, SlateportCity_PokemonFanClub_Movement_1A0835 + waitmovement 0 msgbox SlateportCity_PokemonFanClub_Text_17DF57, 4 giveitem ITEM_SOOTHE_BELL compare RESULT, 0 - jumpeq SlateportCity_PokemonFanClub_EventScript_1A029B + goto_if_eq SlateportCity_PokemonFanClub_EventScript_1A029B setflag 278 release end @@ -235,8 +235,8 @@ SlateportCity_PokemonFanClub_EventScript_155A88:: @ 8155A88 SlateportCity_PokemonFanClub_EventScript_155A91:: @ 8155A91 lock faceplayer - checksound - pokecry SPECIES_SKITTY, 0 + waitse + playpokecry SPECIES_SKITTY, 0 msgbox SlateportCity_PokemonFanClub_Text_17E14E, 4 waitpokecry release @@ -245,8 +245,8 @@ SlateportCity_PokemonFanClub_EventScript_155A91:: @ 8155A91 SlateportCity_PokemonFanClub_EventScript_155AA4:: @ 8155AA4 lock faceplayer - checksound - pokecry SPECIES_ZIGZAGOON, 0 + waitse + playpokecry SPECIES_ZIGZAGOON, 0 msgbox SlateportCity_PokemonFanClub_Text_17E164, 4 waitpokecry release @@ -255,8 +255,8 @@ SlateportCity_PokemonFanClub_EventScript_155AA4:: @ 8155AA4 SlateportCity_PokemonFanClub_EventScript_155AB7:: @ 8155AB7 lock faceplayer - checksound - pokecry SPECIES_AZUMARILL, 0 + waitse + playpokecry SPECIES_AZUMARILL, 0 msgbox SlateportCity_PokemonFanClub_Text_17E178, 4 waitpokecry release diff --git a/data/scripts/maps/SlateportCity_SternsShipyard_1F.inc b/data/scripts/maps/SlateportCity_SternsShipyard_1F.inc index 4c0596d29..9fe7f1f1a 100644 --- a/data/scripts/maps/SlateportCity_SternsShipyard_1F.inc +++ b/data/scripts/maps/SlateportCity_SternsShipyard_1F.inc @@ -4,52 +4,52 @@ SlateportCity_SternsShipyard_1F_MapScripts:: @ 8155335 SlateportCity_SternsShipyard_1F_EventScript_155336:: @ 8155336 lockall checkflag 2052 - jumpeq SlateportCity_SternsShipyard_1F_EventScript_155388 + goto_if_eq SlateportCity_SternsShipyard_1F_EventScript_155388 checkflag 2061 - jumpeq SlateportCity_SternsShipyard_1F_EventScript_15539C + goto_if_eq SlateportCity_SternsShipyard_1F_EventScript_15539C checkflag 149 - jumpeq SlateportCity_SternsShipyard_1F_EventScript_1553CF + goto_if_eq SlateportCity_SternsShipyard_1F_EventScript_1553CF checkflag 148 - jumpeq SlateportCity_SternsShipyard_1F_EventScript_1553B0 + goto_if_eq SlateportCity_SternsShipyard_1F_EventScript_1553B0 msgbox SlateportCity_SternsShipyard_1F_Text_17C14B, 4 - move 1, SlateportCity_SternsShipyard_1F_Movement_1A0839 - waitmove 0 + applymovement 1, SlateportCity_SternsShipyard_1F_Movement_1A0839 + waitmovement 0 msgbox SlateportCity_SternsShipyard_1F_Text_17C1EC, 4 - closebutton - move 1, SlateportCity_SternsShipyard_1F_Movement_1A083D - waitmove 0 + closemessage + applymovement 1, SlateportCity_SternsShipyard_1F_Movement_1A083D + waitmovement 0 setflag 148 setflag 882 releaseall end SlateportCity_SternsShipyard_1F_EventScript_155388:: @ 8155388 - move 1, SlateportCity_SternsShipyard_1F_Movement_1A0839 - waitmove 0 + applymovement 1, SlateportCity_SternsShipyard_1F_Movement_1A0839 + waitmovement 0 msgbox SlateportCity_SternsShipyard_1F_Text_17C472, 4 releaseall end SlateportCity_SternsShipyard_1F_EventScript_15539C:: @ 815539C - move 1, SlateportCity_SternsShipyard_1F_Movement_1A0839 - waitmove 0 + applymovement 1, SlateportCity_SternsShipyard_1F_Movement_1A0839 + waitmovement 0 msgbox SlateportCity_SternsShipyard_1F_Text_17C3F7, 4 releaseall end SlateportCity_SternsShipyard_1F_EventScript_1553B0:: @ 81553B0 - move 1, SlateportCity_SternsShipyard_1F_Movement_1A0839 - waitmove 0 + applymovement 1, SlateportCity_SternsShipyard_1F_Movement_1A0839 + waitmovement 0 msgbox SlateportCity_SternsShipyard_1F_Text_17C2F2, 4 - closebutton - move 1, SlateportCity_SternsShipyard_1F_Movement_1A083D - waitmove 0 + closemessage + applymovement 1, SlateportCity_SternsShipyard_1F_Movement_1A083D + waitmovement 0 releaseall end SlateportCity_SternsShipyard_1F_EventScript_1553CF:: @ 81553CF - move 1, SlateportCity_SternsShipyard_1F_Movement_1A0839 - waitmove 0 + applymovement 1, SlateportCity_SternsShipyard_1F_Movement_1A0839 + waitmovement 0 msgbox SlateportCity_SternsShipyard_1F_Text_17C360, 4 releaseall end diff --git a/data/scripts/maps/SootopolisCity.inc b/data/scripts/maps/SootopolisCity.inc index 3d9c2dc93..bddc5965d 100644 --- a/data/scripts/maps/SootopolisCity.inc +++ b/data/scripts/maps/SootopolisCity.inc @@ -6,19 +6,19 @@ SootopolisCity_MapScripts:: @ 814D07D SootopolisCity_MapScript1_14D08D:: @ 814D08D checkflag 129 - callif 0, SootopolisCity_EventScript_14D0A0 + call_if 0, SootopolisCity_EventScript_14D0A0 checkflag 129 - callif 1, SootopolisCity_EventScript_14D0B1 + call_if 1, SootopolisCity_EventScript_14D0B1 end SootopolisCity_EventScript_14D0A0:: @ 814D0A0 - movespriteperm 3, 31, 18 + setobjectxyperm 3, 31, 18 setmaptile 31, 32, 592, 1 return SootopolisCity_EventScript_14D0B1:: @ 814D0B1 checkflag 113 - callif 0, SootopolisCity_EventScript_14D0BB + call_if 0, SootopolisCity_EventScript_14D0BB return SootopolisCity_EventScript_14D0BB:: @ 814D0BB @@ -36,40 +36,40 @@ SootopolisCity_EventScript_14D0BB:: @ 814D0BB SootopolisCity_MapScript1_14D10D:: @ 814D10D setflag 2077 checkflag 113 - callif 1, SootopolisCity_EventScript_14D159 + call_if 1, SootopolisCity_EventScript_14D159 checkflag 2090 - callif 1, SootopolisCity_EventScript_14D123 + call_if 1, SootopolisCity_EventScript_14D123 end SootopolisCity_EventScript_14D123:: @ 814D123 call SootopolisCity_EventScript_1A02C1 - movespriteperm 1, 29, 19 - movespriteperm 2, 33, 19 + setobjectxyperm 1, 29, 19 + setobjectxyperm 2, 33, 19 compare 0x405e, 1 - callif 1, SootopolisCity_EventScript_14D142 + call_if 1, SootopolisCity_EventScript_14D142 return SootopolisCity_EventScript_14D142:: @ 814D142 - movespriteperm 10, 29, 6 - spritebehave 10, 10 - movespriteperm 5, 30, 6 - spritebehave 5, 9 + setobjectxyperm 10, 29, 6 + setobjectmovementtype 10, 10 + setobjectxyperm 5, 30, 6 + setobjectmovementtype 5, 9 return SootopolisCity_EventScript_14D159:: @ 814D159 - movespriteperm 10, 31, 33 - spritebehave 10, 8 + setobjectxyperm 10, 31, 33 + setobjectmovementtype 10, 8 return SootopolisCity_MapScript1_14D165:: @ 814D165 - warp4 Underwater_SootopolisCity, 255, 9, 6 + setdivewarp Underwater_SootopolisCity, 255, 9, 6 end SootopolisCity_EventScript_14D16E:: @ 814D16E lock faceplayer checkflag 113 - jumpeq SootopolisCity_EventScript_14D183 + goto_if_eq SootopolisCity_EventScript_14D183 msgbox SootopolisCity_Text_1696A4, 4 release end @@ -90,30 +90,30 @@ SootopolisCity_EventScript_14D196:: @ 814D196 SootopolisCity_EventScript_14D19F:: @ 814D19F lock faceplayer - checkdailyflags - special 148 + dodailyevents + special GetPlayerBigGuyGirlString checkflag 2258 - jumpeq SootopolisCity_EventScript_14D241 + goto_if_eq SootopolisCity_EventScript_14D241 msgbox SootopolisCity_Text_1C63F2, 4 random 10 addvar RESULT, 20 addvar RESULT, 133 giveitem RESULT compare RESULT, 0 - jumpeq SootopolisCity_EventScript_1A029B + goto_if_eq SootopolisCity_EventScript_1A029B setflag 2258 msgbox SootopolisCity_Text_1C64D0, 4 random 2 compare RESULT, 0 - jumpeq SootopolisCity_EventScript_14D1FF + goto_if_eq SootopolisCity_EventScript_14D1FF compare RESULT, 1 - jumpeq SootopolisCity_EventScript_14D220 + goto_if_eq SootopolisCity_EventScript_14D220 end SootopolisCity_EventScript_14D1FF:: @ 814D1FF giveitem ITEM_FIGY_BERRY compare RESULT, 0 - jumpeq SootopolisCity_EventScript_1A029B + goto_if_eq SootopolisCity_EventScript_1A029B msgbox SootopolisCity_Text_1C650B, 4 release end @@ -121,7 +121,7 @@ SootopolisCity_EventScript_14D1FF:: @ 814D1FF SootopolisCity_EventScript_14D220:: @ 814D220 giveitem ITEM_IAPAPA_BERRY compare RESULT, 0 - jumpeq SootopolisCity_EventScript_1A029B + goto_if_eq SootopolisCity_EventScript_1A029B msgbox SootopolisCity_Text_1C650B, 4 release end @@ -129,7 +129,7 @@ SootopolisCity_EventScript_14D220:: @ 814D220 SootopolisCity_EventScript_14D241:: @ 814D241 msgbox SootopolisCity_Text_1C6540, 5 compare RESULT, 1 - jumpeq SootopolisCity_EventScript_14D25E + goto_if_eq SootopolisCity_EventScript_14D25E msgbox SootopolisCity_Text_1C6626, 4 release end @@ -143,7 +143,7 @@ SootopolisCity_EventScript_14D268:: @ 814D268 lock faceplayer checkflag 1236 - jumpeq SootopolisCity_EventScript_14D27D + goto_if_eq SootopolisCity_EventScript_14D27D msgbox SootopolisCity_Text_16A4D6, 4 release end @@ -157,7 +157,7 @@ SootopolisCity_EventScript_14D287:: @ 814D287 lock faceplayer checkflag 113 - jumpeq SootopolisCity_EventScript_14D29C + goto_if_eq SootopolisCity_EventScript_14D29C msgbox SootopolisCity_Text_169813, 4 release end @@ -171,7 +171,7 @@ SootopolisCity_EventScript_14D2A6:: @ 814D2A6 lock faceplayer checkflag 113 - jumpeq SootopolisCity_EventScript_14D2BB + goto_if_eq SootopolisCity_EventScript_14D2BB msgbox SootopolisCity_Text_1698A0, 4 release end @@ -185,7 +185,7 @@ SootopolisCity_EventScript_14D2C5:: @ 814D2C5 lock faceplayer checkflag 113 - jumpeq SootopolisCity_EventScript_14D2DA + goto_if_eq SootopolisCity_EventScript_14D2DA msgbox SootopolisCity_Text_1697A7, 4 release end @@ -213,81 +213,81 @@ ClosedSootopolisGymDoorScript:: @ 814D2FF SootopolisCity_EventScript_14D308:: @ 814D308 lockall - move 10, SootopolisCity_Movement_1A083F - move 255, SootopolisCity_Movement_1A0843 - waitmove 0 - playsfx 21 - move 10, SootopolisCity_Movement_1A0833 - waitmove 0 - move 10, SootopolisCity_Movement_1A0835 - waitmove 0 - move 10, SootopolisCity_Movement_14D413 - waitmove 0 + applymovement 10, SootopolisCity_Movement_1A083F + applymovement 255, SootopolisCity_Movement_1A0843 + waitmovement 0 + playse 21 + applymovement 10, SootopolisCity_Movement_1A0833 + waitmovement 0 + applymovement 10, SootopolisCity_Movement_1A0835 + waitmovement 0 + applymovement 10, SootopolisCity_Movement_14D413 + waitmovement 0 .ifdef SAPPHIRE msgbox SootopolisCity_Text_169988, 4 .else msgbox SootopolisCity_Text_169E0F, 4 .endif - closebutton - move 10, SootopolisCity_Movement_14D417 - move 255, SootopolisCity_Movement_14D440 - waitmove 10 + closemessage + applymovement 10, SootopolisCity_Movement_14D417 + applymovement 255, SootopolisCity_Movement_14D440 + waitmovement 10 .ifdef SAPPHIRE msgbox SootopolisCity_Text_1699FD, 4 .else msgbox SootopolisCity_Text_169E82, 4 .endif - playsfx 21 - move 5, SootopolisCity_Movement_1A0833 - waitmove 0 - move 5, SootopolisCity_Movement_1A0835 - waitmove 0 + playse 21 + applymovement 5, SootopolisCity_Movement_1A0833 + waitmovement 0 + applymovement 5, SootopolisCity_Movement_1A0835 + waitmovement 0 .ifdef SAPPHIRE msgbox SootopolisCity_Text_169AB7, 4 .else msgbox SootopolisCity_Text_169F3C, 4 .endif - closebutton - pause 30 - move 5, SootopolisCity_Movement_14D46A - move 10, SootopolisCity_Movement_14D41D - move 255, SootopolisCity_Movement_14D445 - waitmove 0 - move 5, SootopolisCity_Movement_1A0843 - move 255, SootopolisCity_Movement_1A0843 - waitmove 0 - pause 30 - move 10, SootopolisCity_Movement_1A0845 - waitmove 0 + closemessage + delay 30 + applymovement 5, SootopolisCity_Movement_14D46A + applymovement 10, SootopolisCity_Movement_14D41D + applymovement 255, SootopolisCity_Movement_14D445 + waitmovement 0 + applymovement 5, SootopolisCity_Movement_1A0843 + applymovement 255, SootopolisCity_Movement_1A0843 + waitmovement 0 + delay 30 + applymovement 10, SootopolisCity_Movement_1A0845 + waitmovement 0 .ifdef SAPPHIRE msgbox SootopolisCity_Text_169AE7, 4 .else msgbox SootopolisCity_Text_169F6B, 4 .endif - closebutton - pause 30 - move 5, SootopolisCity_Movement_14D47C - move 255, SootopolisCity_Movement_14D457 - move 10, SootopolisCity_Movement_14D42D - waitmove 0 - move 5, SootopolisCity_Movement_1A083F - waitmove 0 + closemessage + delay 30 + applymovement 5, SootopolisCity_Movement_14D47C + applymovement 255, SootopolisCity_Movement_14D457 + applymovement 10, SootopolisCity_Movement_14D42D + waitmovement 0 + applymovement 5, SootopolisCity_Movement_1A083F + waitmovement 0 .ifdef SAPPHIRE msgbox SootopolisCity_Text_169BC7, 4 .else msgbox SootopolisCity_Text_16A06C, 4 .endif - move 255, SootopolisCity_Movement_1A083F - waitmove 0 + applymovement 255, SootopolisCity_Movement_1A083F + waitmovement 0 .ifdef SAPPHIRE msgbox SootopolisCity_Text_169C99, 4 .else msgbox SootopolisCity_Text_16A13E, 4 .endif - moveoffscreen 5 - spritebehave 5, 9 - moveoffscreen 10 - spritebehave 10, 10 + moveobjectoffscreen 5 + setobjectmovementtype 5, 9 + moveobjectoffscreen 10 + setobjectmovementtype 10, 10 setvar 0x405e, 2 releaseall end @@ -446,7 +446,7 @@ SootopolisCity_EventScript_14D498:: @ 814D498 lock faceplayer checkflag 113 - jumpeq SootopolisCity_EventScript_14D4AD + goto_if_eq SootopolisCity_EventScript_14D4AD .ifdef SAPPHIRE msgbox SootopolisCity_Text_169DA6, 4 .else @@ -457,14 +457,14 @@ SootopolisCity_EventScript_14D498:: @ 814D498 SootopolisCity_EventScript_14D4AD:: @ 814D4AD msgbox SootopolisCity_Text_16A33E, 4 - closebutton - move LAST_TALKED, SootopolisCity_Movement_1A0845 - waitmove 0 - pause 50 - setanimation 0, 1 - doanimation 30 - pause 15 - disappear LAST_TALKED - checkanimation 30 + closemessage + applymovement LAST_TALKED, SootopolisCity_Movement_1A0845 + waitmovement 0 + delay 50 + setfieldeffect 0, 1 + dofieldeffect 30 + delay 15 + removeobject LAST_TALKED + waitfieldeffect 30 release end diff --git a/data/scripts/maps/SootopolisCity_Gym_1F.inc b/data/scripts/maps/SootopolisCity_Gym_1F.inc index e28ab4547..51b67ee4b 100644 --- a/data/scripts/maps/SootopolisCity_Gym_1F.inc +++ b/data/scripts/maps/SootopolisCity_Gym_1F.inc @@ -15,16 +15,16 @@ SootopolisCity_Gym_1F_MapScript1_15AF22:: @ 815AF22 SootopolisCity_Gym_1F_MapScript1_15AF25:: @ 815AF25 call SootopolisCity_Gym_1F_EventScript_15AF2E - special 309 + special sub_8069D78 end SootopolisCity_Gym_1F_EventScript_15AF2E:: @ 815AF2E compare 0x4022, 8 - jumpif 0, SootopolisCity_Gym_1F_EventScript_15AF85 + goto_if 0, SootopolisCity_Gym_1F_EventScript_15AF85 compare 0x4022, 28 - jumpif 0, SootopolisCity_Gym_1F_EventScript_15AF73 + goto_if 0, SootopolisCity_Gym_1F_EventScript_15AF73 compare 0x4022, 69 - jumpif 0, SootopolisCity_Gym_1F_EventScript_15AF61 + goto_if 0, SootopolisCity_Gym_1F_EventScript_15AF61 setmaptile 8, 4, 519, 0 setmaptile 8, 5, 519, 0 @@ -48,35 +48,35 @@ SootopolisCity_Gym_1F_MapScript2_15AF86:: @ 815AF86 SootopolisCity_Gym_1F_EventScript_15AFA8:: @ 815AFA8 addvar 0x4022, 1 - pause 40 - playsfx 40 + delay 40 + playse 40 call SootopolisCity_Gym_1F_EventScript_15AF2E - special 142 + special DrawWholeMapView end SootopolisCity_Gym_1F_EventScript_15AFBC:: @ 815AFBC addvar 0x4022, 1 - pause 40 - playsfx 40 + delay 40 + playse 40 call SootopolisCity_Gym_1F_EventScript_15AF2E - special 142 + special DrawWholeMapView end SootopolisCity_Gym_1F_EventScript_15AFD0:: @ 815AFD0 addvar 0x4022, 1 - pause 40 - playsfx 40 + delay 40 + playse 40 call SootopolisCity_Gym_1F_EventScript_15AF2E - special 142 + special DrawWholeMapView end SootopolisCity_Gym_1F_EventScript_15AFE4:: @ 815AFE4 lockall - pause 20 - move 255, SootopolisCity_Gym_1F_Movement_15AFFD - waitmove 0 - playsfx 43 - pause 60 + delay 20 + applymovement 255, SootopolisCity_Gym_1F_Movement_15AFFD + waitmovement 0 + playse 43 + delay 60 warphole SootopolisCity_Gym_B1F waitstate end @@ -88,29 +88,29 @@ SootopolisCity_Gym_1F_Movement_15AFFD:: @ 815AFFD SootopolisCity_Gym_1F_EventScript_15AFFF:: @ 815AFFF trainerbattle 1, OPPONENT_WALLACE, 0, SootopolisCity_Gym_1F_Text_18F0CA, SootopolisCity_Gym_1F_Text_18F282, SootopolisCity_Gym_1F_EventScript_15B02D checkflag 172 - jumpif 0, SootopolisCity_Gym_1F_EventScript_15B056 + goto_if 0, SootopolisCity_Gym_1F_EventScript_15B056 checkflag 2060 - jumpif 0, SootopolisCity_Gym_1F_EventScript_15B07A + goto_if 0, SootopolisCity_Gym_1F_EventScript_15B07A msgbox SootopolisCity_Gym_1F_Text_18F4D7, 4 release end SootopolisCity_Gym_1F_EventScript_15B02D:: @ 815B02D message SootopolisCity_Gym_1F_Text_18F342 - waittext + waitmessage call SootopolisCity_Gym_1F_EventScript_1A02C5 msgbox SootopolisCity_Gym_1F_Text_18F36B, 4 setflag 1236 setflag 2062 setvar 0x8008, 8 call SootopolisCity_Gym_1F_EventScript_1A01C0 - jump SootopolisCity_Gym_1F_EventScript_15B056 + goto SootopolisCity_Gym_1F_EventScript_15B056 end SootopolisCity_Gym_1F_EventScript_15B056:: @ 815B056 giveitem ITEM_TM03 compare RESULT, 0 - jumpeq SootopolisCity_Gym_1F_EventScript_1A029B + goto_if_eq SootopolisCity_Gym_1F_EventScript_1A029B msgbox SootopolisCity_Gym_1F_Text_18F466, 4 setflag 172 release @@ -125,7 +125,7 @@ SootopolisCity_Gym_1F_EventScript_15B084:: @ 815B084 lock faceplayer checkflag 1236 - jumpeq SootopolisCity_Gym_1F_EventScript_15B099 + goto_if_eq SootopolisCity_Gym_1F_EventScript_15B099 msgbox SootopolisCity_Gym_1F_Text_18E8A5, 4 release end @@ -138,15 +138,15 @@ SootopolisCity_Gym_1F_EventScript_15B099:: @ 815B099 SootopolisCity_Gym_1F_EventScript_15B0A3:: @ 815B0A3 lockall checkflag 2062 - jumpeq SootopolisCity_Gym_1F_EventScript_15B0C3 - jump SootopolisCity_Gym_1F_EventScript_15B0CD + goto_if_eq SootopolisCity_Gym_1F_EventScript_15B0C3 + goto SootopolisCity_Gym_1F_EventScript_15B0CD end SootopolisCity_Gym_1F_EventScript_15B0B3:: @ 815B0B3 lockall checkflag 2062 - jumpeq SootopolisCity_Gym_1F_EventScript_15B0C3 - jump SootopolisCity_Gym_1F_EventScript_15B0CD + goto_if_eq SootopolisCity_Gym_1F_EventScript_15B0C3 + goto SootopolisCity_Gym_1F_EventScript_15B0CD end SootopolisCity_Gym_1F_EventScript_15B0C3:: @ 815B0C3 diff --git a/data/scripts/maps/SootopolisCity_House1.inc b/data/scripts/maps/SootopolisCity_House1.inc index 604f04c4f..4877d6d6e 100644 --- a/data/scripts/maps/SootopolisCity_House1.inc +++ b/data/scripts/maps/SootopolisCity_House1.inc @@ -5,7 +5,7 @@ SootopolisCity_House1_EventScript_15B29B:: @ 815B29B lock faceplayer checkflag 121 - jumpeq SootopolisCity_House1_EventScript_15B2C7 + goto_if_eq SootopolisCity_House1_EventScript_15B2C7 msgbox SootopolisCity_House1_Text_18F991, 4 giveitem ITEM_TM31 setflag 121 @@ -21,8 +21,8 @@ SootopolisCity_House1_EventScript_15B2C7:: @ 815B2C7 SootopolisCity_House1_EventScript_15B2D1:: @ 815B2D1 lock faceplayer - checksound - pokecry SPECIES_KECLEON, 0 + waitse + playpokecry SPECIES_KECLEON, 0 msgbox SootopolisCity_House1_Text_18FA50, 4 waitpokecry release diff --git a/data/scripts/maps/SootopolisCity_House2.inc b/data/scripts/maps/SootopolisCity_House2.inc index 409a871a8..011806291 100644 --- a/data/scripts/maps/SootopolisCity_House2.inc +++ b/data/scripts/maps/SootopolisCity_House2.inc @@ -6,9 +6,9 @@ SootopolisCity_House2_EventScript_15B2E5:: @ 815B2E5 faceplayer msgbox SootopolisCity_House2_Text_18FA66, 5 compare RESULT, 1 - callif 1, SootopolisCity_House2_EventScript_15B307 + call_if 1, SootopolisCity_House2_EventScript_15B307 compare RESULT, 0 - callif 1, SootopolisCity_House2_EventScript_15B310 + call_if 1, SootopolisCity_House2_EventScript_15B310 release end diff --git a/data/scripts/maps/SootopolisCity_House3.inc b/data/scripts/maps/SootopolisCity_House3.inc index 88e35730e..f1bf0bf19 100644 --- a/data/scripts/maps/SootopolisCity_House3.inc +++ b/data/scripts/maps/SootopolisCity_House3.inc @@ -6,7 +6,7 @@ SootopolisCity_House3_EventScript_15B31A:: @ 815B31A faceplayer msgbox SootopolisCity_House3_Text_18FB36, 5 compare RESULT, 1 - jumpeq SootopolisCity_House3_EventScript_15B339 + goto_if_eq SootopolisCity_House3_EventScript_15B339 msgbox SootopolisCity_House3_Text_18FBC0, 4 release end diff --git a/data/scripts/maps/SootopolisCity_House4.inc b/data/scripts/maps/SootopolisCity_House4.inc index ee3bfe61b..c192a0340 100644 --- a/data/scripts/maps/SootopolisCity_House4.inc +++ b/data/scripts/maps/SootopolisCity_House4.inc @@ -12,8 +12,8 @@ SootopolisCity_House4_EventScript_15B356:: @ 815B356 SootopolisCity_House4_EventScript_15B35F:: @ 815B35F lock faceplayer - checksound - pokecry SPECIES_AZUMARILL, 0 + waitse + playpokecry SPECIES_AZUMARILL, 0 msgbox SootopolisCity_House4_Text_18FDD8, 4 waitpokecry release diff --git a/data/scripts/maps/SootopolisCity_House6.inc b/data/scripts/maps/SootopolisCity_House6.inc index cccfa78ee..a0fdc5ca4 100644 --- a/data/scripts/maps/SootopolisCity_House6.inc +++ b/data/scripts/maps/SootopolisCity_House6.inc @@ -5,14 +5,14 @@ SootopolisCity_House6_EventScript_15B386:: @ 815B386 lock faceplayer checkflag 245 - jumpeq SootopolisCity_House6_EventScript_15B3CD + goto_if_eq SootopolisCity_House6_EventScript_15B3CD msgbox SootopolisCity_House6_Text_18FEA1, 5 compare RESULT, 0 - callif 1, SootopolisCity_House6_EventScript_15B3C3 + call_if 1, SootopolisCity_House6_EventScript_15B3C3 msgbox SootopolisCity_House6_Text_18FF12, 4 givedecoration 117 compare RESULT, 0 - jumpeq SootopolisCity_House6_EventScript_15B3D7 + goto_if_eq SootopolisCity_House6_EventScript_15B3D7 setflag 245 release end @@ -28,7 +28,7 @@ SootopolisCity_House6_EventScript_15B3CD:: @ 815B3CD end SootopolisCity_House6_EventScript_15B3D7:: @ 815B3D7 - bufferdecor 1, 117 + getdecorname 1, 117 msgbox SootopolisCity_House6_Text_1A0CEF, 4 msgbox SootopolisCity_House6_Text_18FF28, 4 release diff --git a/data/scripts/maps/SootopolisCity_House8.inc b/data/scripts/maps/SootopolisCity_House8.inc index c52965124..df536004e 100644 --- a/data/scripts/maps/SootopolisCity_House8.inc +++ b/data/scripts/maps/SootopolisCity_House8.inc @@ -2,22 +2,22 @@ SootopolisCity_House8_MapScripts:: @ 815B400 .byte 0 SootopolisCity_House8_EventScript_15B401:: @ 815B401 - special 119 + special GetShroomishSizeRecordInfo lock faceplayer msgbox SootopolisCity_House8_Text_1900F7, 4 - special 159 + special sub_80F9A0C waitstate copyvar RESULT, 0x8004 compare RESULT, 255 - jumpeq SootopolisCity_House8_EventScript_15B448 - special 120 + goto_if_eq SootopolisCity_House8_EventScript_15B448 + special CompareShroomishSize compare RESULT, 1 - jumpeq SootopolisCity_House8_EventScript_15B452 + goto_if_eq SootopolisCity_House8_EventScript_15B452 compare RESULT, 2 - jumpeq SootopolisCity_House8_EventScript_15B45C + goto_if_eq SootopolisCity_House8_EventScript_15B45C compare RESULT, 3 - jumpeq SootopolisCity_House8_EventScript_15B466 + goto_if_eq SootopolisCity_House8_EventScript_15B466 release end @@ -40,8 +40,8 @@ SootopolisCity_House8_EventScript_15B466:: @ 815B466 msgbox SootopolisCity_House8_Text_19021D, 4 giveitem ITEM_ELIXIR compare RESULT, 0 - jumpeq SootopolisCity_House8_EventScript_15B488 - closebutton + goto_if_eq SootopolisCity_House8_EventScript_15B488 + closemessage release end @@ -51,22 +51,22 @@ SootopolisCity_House8_EventScript_15B488:: @ 815B488 end SootopolisCity_House8_EventScript_15B492:: @ 815B492 - special 121 + special GetBarboachSizeRecordInfo lock faceplayer msgbox SootopolisCity_House8_Text_190431, 4 - special 159 + special sub_80F9A0C waitstate copyvar RESULT, 0x8004 compare RESULT, 255 - jumpeq SootopolisCity_House8_EventScript_15B4D9 - special 122 + goto_if_eq SootopolisCity_House8_EventScript_15B4D9 + special CompareBarboachSize compare RESULT, 1 - jumpeq SootopolisCity_House8_EventScript_15B4E3 + goto_if_eq SootopolisCity_House8_EventScript_15B4E3 compare RESULT, 2 - jumpeq SootopolisCity_House8_EventScript_15B4ED + goto_if_eq SootopolisCity_House8_EventScript_15B4ED compare RESULT, 3 - jumpeq SootopolisCity_House8_EventScript_15B4F7 + goto_if_eq SootopolisCity_House8_EventScript_15B4F7 release end @@ -89,8 +89,8 @@ SootopolisCity_House8_EventScript_15B4F7:: @ 815B4F7 msgbox SootopolisCity_House8_Text_190536, 4 giveitem ITEM_ELIXIR compare RESULT, 0 - jumpeq SootopolisCity_House8_EventScript_15B519 - closebutton + goto_if_eq SootopolisCity_House8_EventScript_15B519 + closemessage release end @@ -100,14 +100,14 @@ SootopolisCity_House8_EventScript_15B519:: @ 815B519 end SootopolisCity_House8_EventScript_15B523:: @ 815B523 - special 119 + special GetShroomishSizeRecordInfo lockall msgbox SootopolisCity_House8_Text_1903C9, 4 releaseall end SootopolisCity_House8_EventScript_15B531:: @ 815B531 - special 121 + special GetBarboachSizeRecordInfo lockall msgbox SootopolisCity_House8_Text_1906BE, 4 releaseall diff --git a/data/scripts/maps/SootopolisCity_Mart.inc b/data/scripts/maps/SootopolisCity_Mart.inc index 9f37f9d0b..b88347002 100644 --- a/data/scripts/maps/SootopolisCity_Mart.inc +++ b/data/scripts/maps/SootopolisCity_Mart.inc @@ -5,7 +5,7 @@ SootopolisCity_Mart_EventScript_15B21B:: @ 815B21B lock faceplayer message SootopolisCity_Mart_Text_1A0BE4 - waittext + waitmessage pokemart SootopolisCity_Mart_Items msgbox SootopolisCity_Mart_Text_1A0C02, 4 release @@ -30,9 +30,9 @@ SootopolisCity_Mart_EventScript_15B24A:: @ 815B24A lock faceplayer checkflag 113 - jumpeq SootopolisCity_Mart_EventScript_15B268 + goto_if_eq SootopolisCity_Mart_EventScript_15B268 checkflag 129 - jumpif 0, SootopolisCity_Mart_EventScript_15B268 + goto_if 0, SootopolisCity_Mart_EventScript_15B268 msgbox SootopolisCity_Mart_Text_18F8D7, 4 release end @@ -46,9 +46,9 @@ SootopolisCity_Mart_EventScript_15B272:: @ 815B272 lock faceplayer checkflag 113 - jumpeq SootopolisCity_Mart_EventScript_15B290 + goto_if_eq SootopolisCity_Mart_EventScript_15B290 checkflag 129 - jumpif 0, SootopolisCity_Mart_EventScript_15B290 + goto_if 0, SootopolisCity_Mart_EventScript_15B290 msgbox SootopolisCity_Mart_Text_18F96B, 4 release end diff --git a/data/scripts/maps/SootopolisCity_PokemonCenter_1F.inc b/data/scripts/maps/SootopolisCity_PokemonCenter_1F.inc index 29cc06584..cb09d8856 100644 --- a/data/scripts/maps/SootopolisCity_PokemonCenter_1F.inc +++ b/data/scripts/maps/SootopolisCity_PokemonCenter_1F.inc @@ -9,7 +9,7 @@ SootopolisCity_PokemonCenter_1F_MapScript1_15B196:: @ 815B196 @ 815B19A setvar 0x800B, 1 call VerdanturfTown_PokemonCenter_1F_EventScript_19FD5B - waittext + waitmessage waitbutton release end @@ -18,9 +18,9 @@ SootopolisCity_PokemonCenter_1F_EventScript_15B1A8:: @ 815B1A8 lock faceplayer checkflag 113 - jumpeq SootopolisCity_PokemonCenter_1F_EventScript_15B1C6 + goto_if_eq SootopolisCity_PokemonCenter_1F_EventScript_15B1C6 checkflag 129 - jumpif 0, SootopolisCity_PokemonCenter_1F_EventScript_15B1C6 + goto_if 0, SootopolisCity_PokemonCenter_1F_EventScript_15B1C6 msgbox SootopolisCity_PokemonCenter_1F_Text_18F770, 4 release end @@ -34,9 +34,9 @@ SootopolisCity_PokemonCenter_1F_EventScript_15B1D0:: @ 815B1D0 lock faceplayer checkflag 113 - jumpeq SootopolisCity_PokemonCenter_1F_EventScript_15B1EE + goto_if_eq SootopolisCity_PokemonCenter_1F_EventScript_15B1EE checkflag 129 - jumpif 0, SootopolisCity_PokemonCenter_1F_EventScript_15B1EE + goto_if 0, SootopolisCity_PokemonCenter_1F_EventScript_15B1EE msgbox SootopolisCity_PokemonCenter_1F_Text_18F860, 4 release end diff --git a/data/scripts/maps/SouthernIsland_Exterior.inc b/data/scripts/maps/SouthernIsland_Exterior.inc index 9723647cd..3c6426024 100644 --- a/data/scripts/maps/SouthernIsland_Exterior.inc +++ b/data/scripts/maps/SouthernIsland_Exterior.inc @@ -11,13 +11,13 @@ SouthernIsland_Exterior_EventScript_160AE0:: @ 8160AE0 faceplayer msgbox SouthernIsland_Exterior_Text_1C5215, 5 compare RESULT, 0 - jumpeq SouthernIsland_Exterior_EventScript_160B25 + goto_if_eq SouthernIsland_Exterior_EventScript_160B25 msgbox SouthernIsland_Exterior_Text_1C5281, 4 - closebutton - move LAST_TALKED, SouthernIsland_Exterior_Movement_1A0845 - waitmove 0 - pause 30 - spriteinvisible 1, 26, 9 + closemessage + applymovement LAST_TALKED, SouthernIsland_Exterior_Movement_1A0845 + waitmovement 0 + delay 30 + hideobject 1, 26, 9 setvar 0x8004, 2 call SouthernIsland_Exterior_EventScript_1A047C warp LilycoveCity_Harbor, 255, 8, 11 @@ -31,13 +31,13 @@ SouthernIsland_Exterior_EventScript_160B25:: @ 8160B25 end BattleTower_Outside_EventScript_160B2F:: @ 8160B2F - move 255, BattleTower_Outside_Movement_160B45 - waitmove 0 + applymovement 255, BattleTower_Outside_Movement_160B45 + waitmovement 0 return BattleTower_Outside_EventScript_160B3A:: @ 8160B3A - move 255, BattleTower_Outside_Movement_160B47 - waitmove 0 + applymovement 255, BattleTower_Outside_Movement_160B47 + waitmovement 0 return BattleTower_Outside_Movement_160B45:: @ 8160B45 diff --git a/data/scripts/maps/SouthernIsland_Interior.inc b/data/scripts/maps/SouthernIsland_Interior.inc index d3b944f29..bcb316f96 100644 --- a/data/scripts/maps/SouthernIsland_Interior.inc +++ b/data/scripts/maps/SouthernIsland_Interior.inc @@ -5,11 +5,11 @@ SouthernIsland_Interior_MapScripts:: @ 8160B53 SouthernIsland_Interior_MapScript1_160B5E:: @ 8160B5E checkflag 2145 - callif 1, SouthernIsland_Interior_EventScript_160B68 + call_if 1, SouthernIsland_Interior_EventScript_160B68 end SouthernIsland_Interior_EventScript_160B68:: @ 8160B68 - disappear 2 + removeobject 2 return SouthernIsland_Interior_MapScript1_160B6C:: @ 8160B6C @@ -22,11 +22,11 @@ SouthernIsland_Interior_MapScript1_160B6C:: @ 8160B6C end SouthernIsland_Interior_EventScript_160B77:: @ 8160B77 - checkgender + checkplayergender compare RESULT, 0 - jumpeq SouthernIsland_Interior_EventScript_160B8F + goto_if_eq SouthernIsland_Interior_EventScript_160B8F compare RESULT, 1 - jumpeq SouthernIsland_Interior_EventScript_160B95 + goto_if_eq SouthernIsland_Interior_EventScript_160B95 end SouthernIsland_Interior_EventScript_160B8F:: @ 8160B8F @@ -40,34 +40,34 @@ SouthernIsland_Interior_EventScript_160B95:: @ 8160B95 SouthernIsland_Interior_EventScript_160B9B:: @ 8160B9B lockall setvar 0x8008, 12 - jump SouthernIsland_Interior_EventScript_160BA7 + goto SouthernIsland_Interior_EventScript_160BA7 end SouthernIsland_Interior_EventScript_160BA7:: @ 8160BA7 checkflag 206 - jumpeq SouthernIsland_Interior_EventScript_160C08 + goto_if_eq SouthernIsland_Interior_EventScript_160C08 checkflag 2131 - jumpif 0, SouthernIsland_Interior_EventScript_160C08 + goto_if 0, SouthernIsland_Interior_EventScript_160C08 setflag 206 - special 275 - move 127, SouthernIsland_Interior_Movement_160C12 - waitmove 0 - pause 50 - checksound - pokecry SPECIES_LATIAS_OR_LATIOS, 0 - pause 30 + special SpawnCameraDummy + applymovement 127, SouthernIsland_Interior_Movement_160C12 + waitmovement 0 + delay 50 + waitse + playpokecry SPECIES_LATIAS_OR_LATIOS, 0 + delay 30 waitpokecry - reappear 2 - pause 30 - move 127, SouthernIsland_Interior_Movement_160C16 - move 2, SouthernIsland_Interior_Movement_160C22 - waitmove 0 - pause 50 - special 276 + addobject 2 + delay 30 + applymovement 127, SouthernIsland_Interior_Movement_160C16 + applymovement 2, SouthernIsland_Interior_Movement_160C22 + waitmovement 0 + delay 50 + special RemoveCameraDummy setwildbattle SPECIES_LATIAS_OR_LATIOS, 50, ITEM_SOUL_DEW setflag 911 setflag 2145 - special 323 + special ScrSpecial_StartSouthernIslandBattle waitstate clearflag 2145 releaseall diff --git a/data/scripts/maps/Underwater_Route134.inc b/data/scripts/maps/Underwater_Route134.inc index ee79f9799..bbe7e1ce2 100644 --- a/data/scripts/maps/Underwater_Route134.inc +++ b/data/scripts/maps/Underwater_Route134.inc @@ -3,5 +3,5 @@ Underwater_Route134_MapScripts:: @ 815F071 .byte 0 Underwater_Route134_MapScript1_15F077:: @ 815F077 - warp4 Route134, 255, 60, 31 + setdivewarp Route134, 255, 60, 31 end diff --git a/data/scripts/maps/Underwater_SeafloorCavern.inc b/data/scripts/maps/Underwater_SeafloorCavern.inc index c879ec609..3d2fe81b2 100644 --- a/data/scripts/maps/Underwater_SeafloorCavern.inc +++ b/data/scripts/maps/Underwater_SeafloorCavern.inc @@ -7,7 +7,7 @@ Underwater_SeafloorCavern_MapScripts:: @ 815D99E Underwater_SeafloorCavern_MapScript1_15D9AE:: @ 815D9AE setflag 2119 checkflag 129 - jumpeq Underwater_SeafloorCavern_EventScript_15D9BB + goto_if_eq Underwater_SeafloorCavern_EventScript_15D9BB end Underwater_SeafloorCavern_EventScript_15D9BB:: @ 815D9BB @@ -16,7 +16,7 @@ Underwater_SeafloorCavern_EventScript_15D9BB:: @ 815D9BB Underwater_SeafloorCavern_MapScript1_15D9BF:: @ 815D9BF checkflag 129 - callif 1, Underwater_SeafloorCavern_EventScript_15D9C9 + call_if 1, Underwater_SeafloorCavern_EventScript_15D9C9 end Underwater_SeafloorCavern_EventScript_15D9C9:: @ 815D9C9 @@ -35,7 +35,7 @@ Underwater_SeafloorCavern_EventScript_15D9C9:: @ 815D9C9 return Underwater_SeafloorCavern_MapScript1_15DA36:: @ 815DA36 - warp4 SeafloorCavern_Entrance, 255, 10, 17 + setdivewarp SeafloorCavern_Entrance, 255, 10, 17 end Underwater_SeafloorCavern_EventScript_15DA3F:: @ 815DA3F diff --git a/data/scripts/maps/Underwater_SealedChamber.inc b/data/scripts/maps/Underwater_SealedChamber.inc index d7e7aabcb..836ad86e2 100644 --- a/data/scripts/maps/Underwater_SealedChamber.inc +++ b/data/scripts/maps/Underwater_SealedChamber.inc @@ -5,23 +5,23 @@ Underwater_SealedChamber_MapScripts:: @ 815F080 Underwater_SealedChamber_MapScript1_15F086:: @ 815F086 getplayerxy 0x8004, 0x8005 compare 0x8004, 12 - jumpif 5, Underwater_SealedChamber_EventScript_15F0A6 + goto_if 5, Underwater_SealedChamber_EventScript_15F0A6 compare 0x8005, 44 - jumpif 5, Underwater_SealedChamber_EventScript_15F0A6 - jump Underwater_SealedChamber_EventScript_15F0AF + goto_if 5, Underwater_SealedChamber_EventScript_15F0A6 + goto Underwater_SealedChamber_EventScript_15F0AF Underwater_SealedChamber_EventScript_15F0A6:: @ 815F0A6 - warp4 Route134, 255, 60, 31 + setdivewarp Route134, 255, 60, 31 end Underwater_SealedChamber_EventScript_15F0AF:: @ 815F0AF - warp4 SealedChamber_OuterRoom, 255, 10, 19 + setdivewarp SealedChamber_OuterRoom, 255, 10, 19 end Underwater_SealedChamber_EventScript_15F0B8:: @ 815F0B8 lockall - braillemsg Underwater_SealedChamber_Braille_1C533D + braillemessage Underwater_SealedChamber_Braille_1C533D waitbutton - hidebox 0, 0, 29, 19 + erasebox 0, 0, 29, 19 releaseall end diff --git a/data/scripts/maps/Underwater_SootopolisCity.inc b/data/scripts/maps/Underwater_SootopolisCity.inc index 624c2c83e..c9405dfd7 100644 --- a/data/scripts/maps/Underwater_SootopolisCity.inc +++ b/data/scripts/maps/Underwater_SootopolisCity.inc @@ -3,5 +3,5 @@ Underwater_SootopolisCity_MapScripts:: @ 815CAE4 .byte 0 Underwater_SootopolisCity_MapScript1_15CAEA:: @ 815CAEA - warp4 SootopolisCity, 255, 29, 53 + setdivewarp SootopolisCity, 255, 29, 53 end diff --git a/data/scripts/maps/UnknownMap_25_34.inc b/data/scripts/maps/UnknownMap_25_34.inc index f4f1fe61c..34d0bb70b 100644 --- a/data/scripts/maps/UnknownMap_25_34.inc +++ b/data/scripts/maps/UnknownMap_25_34.inc @@ -12,42 +12,42 @@ LinkContestRoom1_MapScript1_15F595:: @ 815F595 end LinkContestRoom1_EventScript_15F5A5:: @ 815F5A5 - special 326 + special ScriptGetMultiplayerId compare RESULT, 0 - callif 1, LinkContestRoom1_EventScript_15F5E0 + call_if 1, LinkContestRoom1_EventScript_15F5E0 compare RESULT, 1 - callif 1, LinkContestRoom1_EventScript_15F5E4 + call_if 1, LinkContestRoom1_EventScript_15F5E4 compare RESULT, 2 - callif 1, LinkContestRoom1_EventScript_15F5E8 + call_if 1, LinkContestRoom1_EventScript_15F5E8 compare RESULT, 3 - callif 1, LinkContestRoom1_EventScript_15F5EC + call_if 1, LinkContestRoom1_EventScript_15F5EC compare RESULT, 4 - callif 1, LinkContestRoom1_EventScript_15F5F0 + call_if 1, LinkContestRoom1_EventScript_15F5F0 return LinkContestRoom1_EventScript_15F5E0:: @ 815F5E0 - playmusicbattle 393 + savebgm 393 return LinkContestRoom1_EventScript_15F5E4:: @ 815F5E4 - playmusicbattle 394 + savebgm 394 return LinkContestRoom1_EventScript_15F5E8:: @ 815F5E8 - playmusicbattle 395 + savebgm 395 return LinkContestRoom1_EventScript_15F5EC:: @ 815F5EC - playmusicbattle 396 + savebgm 396 return LinkContestRoom1_EventScript_15F5F0:: @ 815F5F0 - playmusicbattle 440 + savebgm 440 return LinkContestRoom1_MapScript1_15F5F4:: @ 815F5F4 compare 0x4009, 1 - callif 1, LinkContestRoom1_EventScript_15F600 + call_if 1, LinkContestRoom1_EventScript_15F600 end LinkContestRoom1_EventScript_15F600:: @ 815F600 @@ -68,7 +68,7 @@ LinkContestRoom1_EventScript_15F61A:: @ 815F61A end LinkContestRoom1_EventScript_15F625:: @ 815F625 - spriteinvisible 255, 0, 9 + hideobject 255, 0, 9 call LinkContestRoom1_EventScript_15F919 end @@ -76,7 +76,7 @@ LinkContestRoom1_EventScript_15F630:: @ 815F630 call LinkContestRoom1_EventScript_15F6E6 call LinkContestRoom1_EventScript_15F646 compare 0x4000, 8 - jumpif 0, LinkContestRoom1_EventScript_15F630 + goto_if 0, LinkContestRoom1_EventScript_15F630 return LinkContestRoom1_EventScript_15F646:: @ 815F646 @@ -127,7 +127,7 @@ LinkContestRoom1_EventScript_15F6DB:: @ 815F6DB LinkContestRoom1_EventScript_15F6E6:: @ 815F6E6 setvar RESULT, 32 - special 340 + special ScriptRandom addvar RESULT, 1 switch RESULT case 1, LinkContestRoom1_EventScript_15F859 @@ -302,73 +302,73 @@ LinkContestRoom1_EventScript_15F919:: @ 815F919 return LinkContestRoom1_EventScript_15F956:: @ 815F956 - createvsprite 5, 20, 3, 2, 3, 1 - createvsprite 46, 24, 11, 2, 3, 1 + createvobject 5, 20, 3, 2, 3, 1 + createvobject 46, 24, 11, 2, 3, 1 return LinkContestRoom1_EventScript_15F969:: @ 815F969 - createvsprite 45, 0, 2, 3, 3, 4 - createvsprite 66, 1, 2, 4, 3, 4 - createvsprite 55, 2, 2, 7, 3, 4 - createvsprite 46, 3, 2, 8, 3, 4 - createvsprite 5, 10, 12, 3, 3, 3 - createvsprite 20, 11, 12, 4, 3, 3 - createvsprite 24, 12, 12, 7, 3, 3 - createvsprite 12, 13, 12, 8, 3, 3 - createvsprite 47, 20, 3, 2, 3, 1 - createvsprite 46, 24, 11, 2, 3, 1 + createvobject 45, 0, 2, 3, 3, 4 + createvobject 66, 1, 2, 4, 3, 4 + createvobject 55, 2, 2, 7, 3, 4 + createvobject 46, 3, 2, 8, 3, 4 + createvobject 5, 10, 12, 3, 3, 3 + createvobject 20, 11, 12, 4, 3, 3 + createvobject 24, 12, 12, 7, 3, 3 + createvobject 12, 13, 12, 8, 3, 3 + createvobject 47, 20, 3, 2, 3, 1 + createvobject 46, 24, 11, 2, 3, 1 return LinkContestRoom1_EventScript_15F9C4:: @ 815F9C4 - createvsprite 45, 0, 2, 3, 3, 4 - createvsprite 66, 1, 2, 4, 3, 4 - createvsprite 55, 2, 2, 7, 3, 4 - createvsprite 48, 3, 2, 8, 3, 4 - createvsprite 5, 10, 12, 3, 3, 3 - createvsprite 20, 11, 12, 4, 3, 3 - createvsprite 24, 12, 12, 7, 3, 3 - createvsprite 45, 13, 12, 8, 3, 3 - createvsprite 22, 20, 3, 2, 3, 1 - createvsprite 23, 20, 6, 2, 3, 1 - createvsprite 34, 20, 7, 2, 3, 1 - createvsprite 46, 24, 8, 2, 3, 1 - createvsprite 48, 24, 11, 2, 3, 1 - createvsprite 11, 25, 3, 9, 3, 2 - createvsprite 35, 26, 4, 9, 3, 2 - createvsprite 17, 27, 5, 9, 3, 2 - createvsprite 41, 28, 9, 9, 3, 2 - createvsprite 38, 29, 10, 9, 3, 2 - createvsprite 83, 30, 11, 9, 3, 2 + createvobject 45, 0, 2, 3, 3, 4 + createvobject 66, 1, 2, 4, 3, 4 + createvobject 55, 2, 2, 7, 3, 4 + createvobject 48, 3, 2, 8, 3, 4 + createvobject 5, 10, 12, 3, 3, 3 + createvobject 20, 11, 12, 4, 3, 3 + createvobject 24, 12, 12, 7, 3, 3 + createvobject 45, 13, 12, 8, 3, 3 + createvobject 22, 20, 3, 2, 3, 1 + createvobject 23, 20, 6, 2, 3, 1 + createvobject 34, 20, 7, 2, 3, 1 + createvobject 46, 24, 8, 2, 3, 1 + createvobject 48, 24, 11, 2, 3, 1 + createvobject 11, 25, 3, 9, 3, 2 + createvobject 35, 26, 4, 9, 3, 2 + createvobject 17, 27, 5, 9, 3, 2 + createvobject 41, 28, 9, 9, 3, 2 + createvobject 38, 29, 10, 9, 3, 2 + createvobject 83, 30, 11, 9, 3, 2 return LinkContestRoom1_EventScript_15FA70:: @ 815FA70 - createvsprite 45, 0, 2, 3, 3, 4 - createvsprite 66, 1, 2, 4, 3, 4 - createvsprite 55, 2, 2, 7, 3, 4 - createvsprite 12, 3, 2, 8, 3, 4 - createvsprite 39, 4, 1, 3, 3, 4 - createvsprite 34, 6, 1, 5, 3, 4 - createvsprite 26, 7, 1, 6, 3, 4 - createvsprite 48, 9, 1, 8, 3, 4 - createvsprite 5, 10, 12, 3, 3, 3 - createvsprite 20, 11, 12, 4, 3, 3 - createvsprite 24, 12, 12, 7, 3, 3 - createvsprite 45, 13, 12, 8, 3, 3 - createvsprite 50, 14, 13, 3, 3, 3 - createvsprite 52, 15, 13, 4, 3, 3 - createvsprite 65, 17, 13, 6, 3, 3 - createvsprite 83, 18, 13, 7, 3, 3 - createvsprite 116, 19, 13, 8, 3, 3 - createvsprite 25, 20, 3, 2, 3, 1 - createvsprite 31, 21, 6, 2, 3, 1 - createvsprite 33, 22, 7, 2, 3, 1 - createvsprite 46, 24, 11, 2, 3, 1 - createvsprite 49, 25, 3, 9, 3, 2 - createvsprite 35, 26, 4, 9, 3, 2 - createvsprite 48, 27, 5, 9, 3, 2 - createvsprite 41, 28, 9, 9, 3, 2 - createvsprite 38, 29, 10, 9, 3, 2 - createvsprite 83, 30, 11, 9, 3, 2 + createvobject 45, 0, 2, 3, 3, 4 + createvobject 66, 1, 2, 4, 3, 4 + createvobject 55, 2, 2, 7, 3, 4 + createvobject 12, 3, 2, 8, 3, 4 + createvobject 39, 4, 1, 3, 3, 4 + createvobject 34, 6, 1, 5, 3, 4 + createvobject 26, 7, 1, 6, 3, 4 + createvobject 48, 9, 1, 8, 3, 4 + createvobject 5, 10, 12, 3, 3, 3 + createvobject 20, 11, 12, 4, 3, 3 + createvobject 24, 12, 12, 7, 3, 3 + createvobject 45, 13, 12, 8, 3, 3 + createvobject 50, 14, 13, 3, 3, 3 + createvobject 52, 15, 13, 4, 3, 3 + createvobject 65, 17, 13, 6, 3, 3 + createvobject 83, 18, 13, 7, 3, 3 + createvobject 116, 19, 13, 8, 3, 3 + createvobject 25, 20, 3, 2, 3, 1 + createvobject 31, 21, 6, 2, 3, 1 + createvobject 33, 22, 7, 2, 3, 1 + createvobject 46, 24, 11, 2, 3, 1 + createvobject 49, 25, 3, 9, 3, 2 + createvobject 35, 26, 4, 9, 3, 2 + createvobject 48, 27, 5, 9, 3, 2 + createvobject 41, 28, 9, 9, 3, 2 + createvobject 38, 29, 10, 9, 3, 2 + createvobject 83, 30, 11, 9, 3, 2 return LinkContestRoom1_EventScript_15FB64:: @ 815FB64 @@ -381,25 +381,25 @@ LinkContestRoom1_EventScript_15FB64:: @ 815FB64 return LinkContestRoom1_EventScript_15FBA1:: @ 815FBA1 - inccounter GAME_STAT_ENTERED_CONTEST + incrementgamestat GAME_STAT_ENTERED_CONTEST warp VerdanturfTown_ContestLobby, 255, 5, 4 waitstate end LinkContestRoom1_EventScript_15FBAD:: @ 815FBAD - inccounter GAME_STAT_ENTERED_CONTEST + incrementgamestat GAME_STAT_ENTERED_CONTEST warp FallarborTown_ContestLobby, 255, 5, 4 waitstate end LinkContestRoom1_EventScript_15FBB9:: @ 815FBB9 - inccounter GAME_STAT_ENTERED_CONTEST + incrementgamestat GAME_STAT_ENTERED_CONTEST warp SlateportCity_ContestLobby, 255, 5, 4 waitstate end LinkContestRoom1_EventScript_15FBC5:: @ 815FBC5 - inccounter GAME_STAT_ENTERED_CONTEST + incrementgamestat GAME_STAT_ENTERED_CONTEST warp LilycoveCity_ContestLobby, 255, 6, 4 waitstate end @@ -413,11 +413,11 @@ FallarborTown_ContestLobby_EventScript_15FBDB:: @ 815FBDB LilycoveCity_ContestLobby_EventScript_15FBDB:: @ 815FBDB SlateportCity_ContestLobby_EventScript_15FBDB:: @ 815FBDB VerdanturfTown_ContestLobby_EventScript_15FBDB:: @ 815FBDB - checkgender + checkplayergender compare RESULT, 0 - jumpeq FallarborTown_ContestLobby_EventScript_15FBF3 + goto_if_eq FallarborTown_ContestLobby_EventScript_15FBF3 compare RESULT, 1 - jumpeq FallarborTown_ContestLobby_EventScript_15FBF9 + goto_if_eq FallarborTown_ContestLobby_EventScript_15FBF9 return FallarborTown_ContestLobby_EventScript_15FBF3:: @ 815FBF3 diff --git a/data/scripts/maps/VerdanturfTown.inc b/data/scripts/maps/VerdanturfTown.inc index 610643823..3e8f02302 100644 --- a/data/scripts/maps/VerdanturfTown.inc +++ b/data/scripts/maps/VerdanturfTown.inc @@ -12,17 +12,17 @@ VerdanturfTown_EventScript_14E866:: @ 814E866 lock faceplayer checkflag 199 - jumpeq VerdanturfTown_EventScript_14E885 + goto_if_eq VerdanturfTown_EventScript_14E885 msgbox VerdanturfTown_Text_16CAEB, 4 - move 2, VerdanturfTown_Movement_1A083D - waitmove 0 + applymovement 2, VerdanturfTown_Movement_1A083D + waitmovement 0 release end VerdanturfTown_EventScript_14E885:: @ 814E885 msgbox VerdanturfTown_Text_16CBCE, 4 - move 2, VerdanturfTown_Movement_1A083D - waitmove 0 + applymovement 2, VerdanturfTown_Movement_1A083D + waitmovement 0 release end @@ -38,7 +38,7 @@ VerdanturfTown_EventScript_14E8AB:: @ 814E8AB lock faceplayer checkflag 199 - jumpeq VerdanturfTown_EventScript_14E8C0 + goto_if_eq VerdanturfTown_EventScript_14E8C0 msgbox VerdanturfTown_Text_16CD4D, 4 release end diff --git a/data/scripts/maps/VerdanturfTown_ContestLobby.inc b/data/scripts/maps/VerdanturfTown_ContestLobby.inc index 066ecbdce..8462892e6 100644 --- a/data/scripts/maps/VerdanturfTown_ContestLobby.inc +++ b/data/scripts/maps/VerdanturfTown_ContestLobby.inc @@ -11,7 +11,7 @@ VerdanturfTown_ContestLobby_EventScript_153D76:: @ 8153D76 setvar CONTEST_RANK, 0 call VerdanturfTown_ContestLobby_EventScript_1A4E92 call VerdanturfTown_ContestLobby_EventScript_153DA1 - special 83 + special sub_80C4BF0 call VerdanturfTown_ContestLobby_EventScript_15FBDB setvar 0x4088, 1 warp LinkContestRoom1, 255, 7, 5 @@ -20,28 +20,28 @@ VerdanturfTown_ContestLobby_EventScript_153D76:: @ 8153D76 VerdanturfTown_ContestLobby_EventScript_153DA1:: @ 8153DA1 lockall - move 1, VerdanturfTown_ContestLobby_Movement_153E25 - waitmove 0 - playsfx 71 + applymovement 1, VerdanturfTown_ContestLobby_Movement_153E25 + waitmovement 0 + playse 71 setmaptile 4, 2, 545, 1 setmaptile 4, 3, 609, 1 - special 142 - move 1, VerdanturfTown_ContestLobby_Movement_153E28 - waitmove 0 - playsfx 71 + special DrawWholeMapView + applymovement 1, VerdanturfTown_ContestLobby_Movement_153E28 + waitmovement 0 + playse 71 setmaptile 4, 2, 721, 1 setmaptile 4, 3, 729, 1 - special 142 - pause 20 - move 1, VerdanturfTown_ContestLobby_Movement_153E35 - waitmove 0 - move 255, VerdanturfTown_ContestLobby_Movement_153E23 - waitmove 0 + special DrawWholeMapView + delay 20 + applymovement 1, VerdanturfTown_ContestLobby_Movement_153E35 + waitmovement 0 + applymovement 255, VerdanturfTown_ContestLobby_Movement_153E23 + waitmovement 0 msgbox VerdanturfTown_ContestLobby_Text_1A6832, 4 - closebutton - move 1, VerdanturfTown_ContestLobby_Movement_153E2C - move 255, VerdanturfTown_ContestLobby_Movement_153E19 - waitmove 0 + closemessage + applymovement 1, VerdanturfTown_ContestLobby_Movement_153E2C + applymovement 255, VerdanturfTown_ContestLobby_Movement_153E19 + waitmovement 0 releaseall return @@ -90,7 +90,7 @@ VerdanturfTown_ContestLobby_Movement_153E35:: @ 8153E35 VerdanturfTown_ContestLobby_EventScript_153E37:: @ 8153E37 lockall fadescreen 1 - showcontestwinner 1 + drawcontestwinner 1 releaseall end @@ -102,11 +102,11 @@ VerdanturfTown_ContestLobby_EventScript_153E47:: @ 8153E47 lock faceplayer checkflag 235 - jumpeq VerdanturfTown_ContestLobby_EventScript_153E76 + goto_if_eq VerdanturfTown_ContestLobby_EventScript_153E76 msgbox VerdanturfTown_ContestLobby_Text_177DEC, 4 giveitem ITEM_TM45 compare RESULT, 0 - jumpeq VerdanturfTown_ContestLobby_EventScript_1A029B + goto_if_eq VerdanturfTown_ContestLobby_EventScript_1A029B setflag 235 release end @@ -122,8 +122,8 @@ VerdanturfTown_ContestLobby_EventScript_153E80:: @ 8153E80 VerdanturfTown_ContestLobby_EventScript_153E89:: @ 8153E89 lockall - special 259 + special ShowBerryBlenderRecordWindow waitbutton - hidebox 0, 0, 29, 19 + erasebox 0, 0, 29, 19 releaseall end diff --git a/data/scripts/maps/VerdanturfTown_FriendshipRatersHouse.inc b/data/scripts/maps/VerdanturfTown_FriendshipRatersHouse.inc index 2dc2e1355..1cfa785d3 100644 --- a/data/scripts/maps/VerdanturfTown_FriendshipRatersHouse.inc +++ b/data/scripts/maps/VerdanturfTown_FriendshipRatersHouse.inc @@ -5,7 +5,7 @@ VerdanturfTown_FriendshipRatersHouse_EventScript_154030:: @ 8154030 lock faceplayer msgbox VerdanturfTown_FriendshipRatersHouse_Text_178A9C, 4 - specialval RESULT, 230 + specialvar RESULT, GetLeadMonFriendshipScore switch RESULT case 0, VerdanturfTown_FriendshipRatersHouse_EventScript_154093 case 1, VerdanturfTown_FriendshipRatersHouse_EventScript_15409D @@ -55,8 +55,8 @@ VerdanturfTown_FriendshipRatersHouse_EventScript_1540CF:: @ 81540CF VerdanturfTown_FriendshipRatersHouse_EventScript_1540D9:: @ 81540D9 lock faceplayer - checksound - pokecry SPECIES_PIKACHU, 0 + waitse + playpokecry SPECIES_PIKACHU, 0 msgbox VerdanturfTown_FriendshipRatersHouse_Text_178CFD, 4 waitpokecry release diff --git a/data/scripts/maps/VerdanturfTown_Mart.inc b/data/scripts/maps/VerdanturfTown_Mart.inc index 4227dc8b1..db72de227 100644 --- a/data/scripts/maps/VerdanturfTown_Mart.inc +++ b/data/scripts/maps/VerdanturfTown_Mart.inc @@ -5,7 +5,7 @@ VerdanturfTown_Mart_EventScript_153EBC:: @ 8153EBC lock faceplayer message VerdanturfTown_Mart_Text_1A0BE4 - waittext + waitmessage pokemart VerdanturfTown_Mart_Items msgbox VerdanturfTown_Mart_Text_1A0C02, 4 release diff --git a/data/scripts/maps/VerdanturfTown_PokemonCenter_1F.inc b/data/scripts/maps/VerdanturfTown_PokemonCenter_1F.inc index e0fee3fb8..a0b1f87de 100644 --- a/data/scripts/maps/VerdanturfTown_PokemonCenter_1F.inc +++ b/data/scripts/maps/VerdanturfTown_PokemonCenter_1F.inc @@ -11,7 +11,7 @@ PacifidlogTown_PokemonCenter_1F_EventScript_153F18:: @ 8153F18 VerdanturfTown_PokemonCenter_1F_EventScript_153F18:: @ 8153F18 setvar 0x800b, 1 call VerdanturfTown_PokemonCenter_1F_EventScript_19FD5B - waittext + waitmessage waitbutton release end diff --git a/data/scripts/maps/VerdanturfTown_WandasHouse.inc b/data/scripts/maps/VerdanturfTown_WandasHouse.inc index 80bd6151d..fad64292b 100644 --- a/data/scripts/maps/VerdanturfTown_WandasHouse.inc +++ b/data/scripts/maps/VerdanturfTown_WandasHouse.inc @@ -5,7 +5,7 @@ VerdanturfTown_WandasHouse_EventScript_153F5B:: @ 8153F5B lock faceplayer checkflag 193 - jumpeq VerdanturfTown_WandasHouse_EventScript_153F73 + goto_if_eq VerdanturfTown_WandasHouse_EventScript_153F73 msgbox VerdanturfTown_WandasHouse_Text_1783F6, 4 setflag 193 release @@ -20,9 +20,9 @@ VerdanturfTown_WandasHouse_EventScript_153F7D:: @ 8153F7D lock faceplayer checkflag 126 - jumpeq VerdanturfTown_WandasHouse_EventScript_153FA5 + goto_if_eq VerdanturfTown_WandasHouse_EventScript_153FA5 checkflag 1213 - jumpeq VerdanturfTown_WandasHouse_EventScript_153F9B + goto_if_eq VerdanturfTown_WandasHouse_EventScript_153F9B msgbox VerdanturfTown_WandasHouse_Text_17859A, 4 release end @@ -45,9 +45,9 @@ VerdanturfTown_WandasHouse_EventScript_153FB8:: @ 8153FB8 lock faceplayer checkflag 1213 - jumpeq VerdanturfTown_WandasHouse_EventScript_153FE0 + goto_if_eq VerdanturfTown_WandasHouse_EventScript_153FE0 checkflag 190 - jumpeq VerdanturfTown_WandasHouse_EventScript_153FD6 + goto_if_eq VerdanturfTown_WandasHouse_EventScript_153FD6 msgbox VerdanturfTown_WandasHouse_Text_1787FB, 4 release end @@ -66,11 +66,11 @@ VerdanturfTown_WandasHouse_EventScript_153FEA:: @ 8153FEA lock faceplayer checkflag 126 - jumpeq VerdanturfTown_WandasHouse_EventScript_154025 + goto_if_eq VerdanturfTown_WandasHouse_EventScript_154025 checkflag 1213 - jumpeq VerdanturfTown_WandasHouse_EventScript_15401B + goto_if_eq VerdanturfTown_WandasHouse_EventScript_15401B checkflag 199 - jumpeq VerdanturfTown_WandasHouse_EventScript_154011 + goto_if_eq VerdanturfTown_WandasHouse_EventScript_154011 msgbox VerdanturfTown_WandasHouse_Text_1788B1, 4 release end diff --git a/data/scripts/maps/VictoryRoad_1F.inc b/data/scripts/maps/VictoryRoad_1F.inc index b1f6e732b..fe775d793 100644 --- a/data/scripts/maps/VictoryRoad_1F.inc +++ b/data/scripts/maps/VictoryRoad_1F.inc @@ -4,7 +4,7 @@ VictoryRoad_1F_MapScripts:: @ 815DE83 VictoryRoad_1F_MapScript1_15DE89:: @ 815DE89 checkflag 126 - callif 1, VictoryRoad_1F_EventScript_15DE93 + call_if 1, VictoryRoad_1F_EventScript_15DE93 end VictoryRoad_1F_EventScript_15DE93:: @ 815DE93 @@ -13,36 +13,36 @@ VictoryRoad_1F_EventScript_15DE93:: @ 815DE93 VictoryRoad_1F_EventScript_15DE97:: @ 815DE97 lockall - reappear 4 - move 4, VictoryRoad_1F_Movement_15DF07 - waitmove 0 - jump VictoryRoad_1F_EventScript_15DED3 + addobject 4 + applymovement 4, VictoryRoad_1F_Movement_15DF07 + waitmovement 0 + goto VictoryRoad_1F_EventScript_15DED3 end VictoryRoad_1F_EventScript_15DEAB:: @ 815DEAB lockall - reappear 4 - move 4, VictoryRoad_1F_Movement_15DF13 - waitmove 0 - jump VictoryRoad_1F_EventScript_15DED3 + addobject 4 + applymovement 4, VictoryRoad_1F_Movement_15DF13 + waitmovement 0 + goto VictoryRoad_1F_EventScript_15DED3 end VictoryRoad_1F_EventScript_15DEBF:: @ 815DEBF lockall - reappear 4 - move 4, VictoryRoad_1F_Movement_15DF1E - waitmove 0 - jump VictoryRoad_1F_EventScript_15DED3 + addobject 4 + applymovement 4, VictoryRoad_1F_Movement_15DF1E + waitmovement 0 + goto VictoryRoad_1F_EventScript_15DED3 end VictoryRoad_1F_EventScript_15DED3:: @ 815DED3 - move 255, VictoryRoad_1F_Movement_1A083F - waitmove 0 + applymovement 255, VictoryRoad_1F_Movement_1A083F + waitmovement 0 msgbox VictoryRoad_1F_Text_19782B, 4 trainerbattle 3, OPPONENT_WALLY_1, 0, VictoryRoad_1F_Text_197943 msgbox VictoryRoad_1F_Text_197967, 4 clearflag 858 - moveoffscreen 4 + moveobjectoffscreen 4 setflag 126 setvar 0x40c3, 1 releaseall @@ -93,9 +93,9 @@ VictoryRoad_1F_EventScript_15DF28:: @ 815DF28 VictoryRoad_1F_EventScript_15DF31:: @ 815DF31 trainerbattle 0, OPPONENT_WALLY_3, 0, VictoryRoad_1F_Text_1979BA, VictoryRoad_1F_Text_197A23 - specialval RESULT, 57 + specialvar RESULT, sub_8082C68 compare RESULT, 1 - jumpeq VictoryRoad_1F_EventScript_15DF58 + goto_if_eq VictoryRoad_1F_EventScript_15DF58 msgbox VictoryRoad_1F_Text_197A47, 6 end diff --git a/data/scripts/mauville_man.inc b/data/scripts/mauville_man.inc new file mode 100644 index 000000000..402afae23 --- /dev/null +++ b/data/scripts/mauville_man.inc @@ -0,0 +1,357 @@ +@ From mauville_old_man.h +@ TODO: Put these in a header + +MAUVILLE_MAN_BARD = 0 +MAUVILLE_MAN_HIPSTER = 1 +MAUVILLE_MAN_TRADER = 2 +MAUVILLE_MAN_STORYTELLER = 3 +MAUVILLE_MAN_GIDDY = 4 + +MauvilleCity_PokemonCenter_1F_EventScript_1AE744:: @ 81AE744 + special ScrSpecial_GetCurrentMauvilleMan + switch RESULT + case MAUVILLE_MAN_BARD, SpeakToBard + case MAUVILLE_MAN_HIPSTER, SpeakToHipster + case MAUVILLE_MAN_TRADER, SpeakToTrader + case MAUVILLE_MAN_STORYTELLER, SpeakToStoryteller + case MAUVILLE_MAN_GIDDY, SpeakToGiddy + end + + +@------------------------------------------------------------------------------- +@ Bard +@------------------------------------------------------------------------------- + +SpeakToBard: + lock + faceplayer + msgbox gTextBard_HiImTheBard, MSGBOX_YESNO + compare RESULT, YES + goto_if_eq yes_hear_song + compare RESULT, NO + goto_if_eq dont_hear_song + end + +yes_hear_song: + setvar 0x8004, 0 + @ Give the player ear rape + special ScrSpecial_PlayBardSong + delay 60 + special ScrSpecial_HasBardSongBeenChanged + compare RESULT, FALSE + @ Prompt new lyrics only if song hasn't been changed + goto_if_eq prompt_write_lyrics + msgbox gTextBard_OhWhatAMovingSong, 4 + release + end + +dont_hear_song: + msgbox gTextBard_OhYouveLeftMe, 4 + release + end + +prompt_write_lyrics: + msgbox gTextBard_SoHowDoYouLikeMySong, MSGBOX_YESNO + compare RESULT, YES + goto_if_eq write_lyrics + compare RESULT, NO + goto_if_eq dont_write_lyrics + end + +write_lyrics: + setvar 0x8004, 6 + call MauvilleCity_PokemonCenter_1F_EventScript_1A00F3 + lock + faceplayer + compare RESULT, NO + goto_if_eq dont_write_lyrics + msgbox gTextBard_ThankYouKindly, 4 + setvar 0x8004, 1 + @ Give the player ear rape again + special ScrSpecial_PlayBardSong + delay 60 + msgbox gTextBard_WasThatHowYouWanted, MSGBOX_YESNO + compare RESULT, NO + goto_if_eq write_lyrics @ Keep looping until player responds YES + special ScrSpecial_SaveBardSongLyrics + msgbox gTextBard_OkayThatsIt, 4 + release + end + +dont_write_lyrics: + msgbox gTextBard_OhYouveLeftMe2, 4 + release + end + + +@------------------------------------------------------------------------------- +@ Hipster +@------------------------------------------------------------------------------- + +SpeakToHipster: + lock + faceplayer + setflag 2054 + msgbox gTextHipster_TheyCallMeTheHipster, 4 + special ScrSpecial_GetHipsterSpokenFlag + compare RESULT, FALSE + goto_if_eq hipster_first_time + msgbox gTextHipster_TaughtYouAlready, 4 + release + end + +hipster_first_time: + special ScrSpecial_HipsterTeachWord + compare RESULT, TRUE @ TRUE if player learned a new word + goto_if_eq teach_new_word + msgbox gTextHipster_YouAlreadyKnowALot, 4 + release + end + +teach_new_word: + msgbox gTextHipster_HaveYouHeardAbout, 4 + special ScrSpecial_SetHipsterSpokenFlag + release + end + + +@------------------------------------------------------------------------------- +@ Trader +@------------------------------------------------------------------------------- + + .include "data/text/trader.inc" + +SpeakToTrader: + lock + faceplayer + msgbox gTextTrader_Introduction, MSGBOX_YESNO + compare RESULT, NO + goto_if_eq dont_want_to_trade + special ScrSpecial_GetTraderTradedFlag + compare RESULT, TRUE + goto_if_eq already_traded + message gTextTrader_MenuPrompt + waitmessage + goto do_trader_menu_get + end + +dont_want_to_trade: + msgbox gTextTrader_FeelUnwanted1, 2 + end + +already_traded: + msgbox gTextTrader_TradedAlready, 2 + end + +do_trader_menu_get: + special ScrSpecial_TraderMenuGetDecoration + waitstate + compare 0x8004, 0 + goto_if_eq cancelled_get_menu + compare 0x8004, 65535 + goto_if_eq rare_item_cant_trade_away + msgbox gTextTrader_ItemOnceBelongedTo, MSGBOX_YESNO + compare RESULT, NO + goto_if_eq dont_want_item + special ScrSpecial_DoesPlayerHaveNoDecorations + compare RESULT, TRUE + goto_if_eq player_has_no_decorations + goto do_trader_menu_give + end + +cancelled_get_menu: + msgbox gTextTrader_DontWantAnything, 2 + end + +rare_item_cant_trade_away: + message gTextTrader_ICantTradeThatOneAway + waitmessage + goto do_trader_menu_get + end + +dont_want_item: + message gTextTrader_MenuPrompt + waitmessage + goto do_trader_menu_get + end + +player_has_no_decorations: + msgbox gTextTrader_YouDontHaveDecorations, 2 + end + +do_trader_menu_give: + msgbox gTextTrader_PickDecorationYoullTrade, 4 + special ScrSpecial_TraderMenuGiveDecoration + waitstate + compare 0x8006, 0 + goto_if_eq cancelled_give_menu + compare 0x8006, 65535 + goto_if_eq decoration_is_in_use + special ScrSpecial_IsDecorationFull + compare RESULT, 1 + goto_if_eq decorations_full + msgbox gTextTrader_SoWellTrade, MSGBOX_YESNO + compare RESULT, NO + goto_if_eq do_trader_menu_give + special ScrSpecial_TraderDoDecorationTrade + msgbox gTextTrader_ThenWellTrade, 2 + end + +cancelled_give_menu: + msgbox gTextTrader_FeelUnwanted2, 2 + end + +decoration_is_in_use: + msgbox gTextTrader_InUseYouCantTradeIt, 4 + goto do_trader_menu_give + end + +decorations_full: + msgbox gTextTrader_NoRoomForThis, 2 + end + + +@------------------------------------------------------------------------------- +@ Storyteller +@------------------------------------------------------------------------------- + + .include "data/text/storyteller.inc" + +SpeakToStoryteller: + setvar 0x8008, 0 + setvar 0x8009, 0 + setvar 0x800a, 0 + setvar 0x800b, 0 + lock + faceplayer + msgbox gTextStoryteller_Introduction, MSGBOX_YESNO + compare RESULT, NO + goto_if_eq dont_hear_story + specialvar RESULT, ScrSpecial_StorytellerGetFreeStorySlot + compare RESULT, 0 @ If slot is 0, then the list is empty + goto_if_eq no_stories_recorded +choose_story: + message gTextStoryteller_WhichTale + waitmessage + special ScrSpecial_StorytellerStoryListMenu + waitstate + compare RESULT, FALSE + goto_if_eq cancel_story_menu + setvar 0x8008, 1 + special ScrSpecial_StorytellerDisplayStory + waitmessage + waitbutton + specialvar RESULT, ScrSpecial_StorytellerUpdateStat + compare RESULT, FALSE + goto_if_eq no_stat_update + goto stat_update +cancel_story_menu: + compare 0x8008, 0 + goto_if_eq dont_hear_story + goto yes_hear_story +no_stat_update: + msgbox gTextStoryteller_CouldThereBeOtherTrainers, 4 + msgbox gTextStoryteller_HearAnotherLegendaryTale, MSGBOX_YESNO + compare RESULT, YES + goto_if_eq choose_story +yes_hear_story: + specialvar RESULT, ScrSpecial_HasStorytellerAlreadyRecorded + compare RESULT, TRUE + goto_if_eq cant_record_story @ already recorded story + specialvar RESULT, ScrSpecial_StorytellerGetFreeStorySlot + compare RESULT, 4 + goto_if_eq cant_record_story @ story list is full + goto prompt_record_story +no_stories_recorded: + msgbox gTextStoryteller_ButIKnowOfNoLegendaryTrainers, 4 +prompt_record_story: + msgbox gTextStoryteller_HaveYouAnyTales, MSGBOX_YESNO + compare RESULT, NO + goto_if_eq dont_hear_story + specialvar RESULT, ScrSpecial_StorytellerInitializeRandomStat + compare RESULT, TRUE + goto_if_eq stat_update + msgbox gTextStoryteller_ImNotSatisfied, 4 + closemessage + release + end + +stat_update: + msgbox gTextStoryteller_BirthOfANewLegend, 4 + closemessage + release + end + +dont_hear_story: + msgbox gTextStoryteller_OhIFeelStifled, 4 + closemessage + release + end + +cant_record_story: + msgbox gTextStoryteller_WishMorePeopleWould, 4 + closemessage + release + end + + +@------------------------------------------------------------------------------- +@ Giddy +@------------------------------------------------------------------------------- + + .include "data/text/giddy.inc" + +SpeakToGiddy: + lock + faceplayer + msgbox gTextGiddy_Introduction, MSGBOX_YESNO + compare RESULT, YES + goto_if_eq yes_hear_giddy + compare RESULT, NO + goto_if_eq dont_hear_giddy + end + +yes_hear_giddy: + special ScrSpecial_GiddyShouldTellAnotherTale + compare RESULT, TRUE + goto_if_eq tell_giddy_tale + compare RESULT, FALSE + goto_if_eq bye_bye + end + +tell_another_giddy_tale: + special ScrSpecial_GiddyShouldTellAnotherTale + compare RESULT, TRUE + goto_if_eq also_i_was_thinking + compare RESULT, FALSE + goto_if_eq bye_bye + end + +also_i_was_thinking: + msgbox gTextGiddy_AlsoIWasThinking, 4 + goto tell_giddy_tale + end + +tell_giddy_tale: + special ScrSpecial_GenerateGiddyLine + special ShowFieldMessageStringVar4 + waitmessage + yesnobox 20, 8 + compare RESULT, 1 + goto_if_eq tell_another_giddy_tale + compare RESULT, 0 + goto_if_eq tell_another_giddy_tale + end + +dont_hear_giddy: + msgbox gTextGiddy_YouveDeflatedMe, 4 + release + end + +bye_bye: + msgbox gTextGiddy_ByeBye, 4 + release + end + + .include "data/text/bard.inc" + .include "data/text/hipster.inc" diff --git a/data/scripts/mystery_event_club.inc b/data/scripts/mystery_event_club.inc index 15d4b2a40..df097fc19 100644 --- a/data/scripts/mystery_event_club.inc +++ b/data/scripts/mystery_event_club.inc @@ -2,9 +2,9 @@ PetalburgCity_PokemonCenter_1F_EventScript_1B1B14:: @ 81B1B14 lock faceplayer checkflag 2053 - jumpeq PetalburgCity_PokemonCenter_1F_EventScript_1B1BDB + goto_if_eq PetalburgCity_PokemonCenter_1F_EventScript_1B1BDB msgbox PetalburgCity_PokemonCenter_1F_Text_1B1C97, 4 - jump PetalburgCity_PokemonCenter_1F_EventScript_1B1B2D + goto PetalburgCity_PokemonCenter_1F_EventScript_1B1B2D end PetalburgCity_PokemonCenter_1F_EventScript_1B1B2D:: @ 81B1B2D @@ -19,22 +19,22 @@ PetalburgCity_PokemonCenter_1F_EventScript_1B1B2D:: @ 81B1B2D PetalburgCity_PokemonCenter_1F_EventScript_1B1B6C:: @ 81B1B6C msgbox PetalburgCity_PokemonCenter_1F_Text_1B1D3A, 4 - jump PetalburgCity_PokemonCenter_1F_EventScript_1B1B2D + goto PetalburgCity_PokemonCenter_1F_EventScript_1B1B2D end PetalburgCity_PokemonCenter_1F_EventScript_1B1B7A:: @ 81B1B7A msgbox PetalburgCity_PokemonCenter_1F_Text_1B1F7B, 4 - closebutton + closemessage setvar 0x8004, 0 call PetalburgCity_PokemonCenter_1F_EventScript_1A00F3 lock faceplayer compare 0x8004, 1 - callif 1, PetalburgCity_PokemonCenter_1F_EventScript_1B1C77 + call_if 1, PetalburgCity_PokemonCenter_1F_EventScript_1B1C77 compare RESULT, 0 - jumpeq PetalburgCity_PokemonCenter_1F_EventScript_1B1BB1 + goto_if_eq PetalburgCity_PokemonCenter_1F_EventScript_1B1BB1 compare RESULT, 1 - jumpeq PetalburgCity_PokemonCenter_1F_EventScript_1B1BBB + goto_if_eq PetalburgCity_PokemonCenter_1F_EventScript_1B1BBB end PetalburgCity_PokemonCenter_1F_EventScript_1B1BB1:: @ 81B1BB1 @@ -44,9 +44,9 @@ PetalburgCity_PokemonCenter_1F_EventScript_1B1BB1:: @ 81B1BB1 PetalburgCity_PokemonCenter_1F_EventScript_1B1BBB:: @ 81B1BBB setvar 0x8004, 0 - special 96 - waittext - pause 80 + special sub_80EB7C4 + waitmessage + delay 80 msgbox PetalburgCity_PokemonCenter_1F_Text_1B2137, 4 release end @@ -58,7 +58,7 @@ PetalburgCity_PokemonCenter_1F_EventScript_1B1BD1:: @ 81B1BD1 PetalburgCity_PokemonCenter_1F_EventScript_1B1BDB:: @ 81B1BDB msgbox PetalburgCity_PokemonCenter_1F_Text_1B202F, 4 - jump PetalburgCity_PokemonCenter_1F_EventScript_1B1BE9 + goto PetalburgCity_PokemonCenter_1F_EventScript_1B1BE9 end PetalburgCity_PokemonCenter_1F_EventScript_1B1BE9:: @ 81B1BE9 @@ -73,22 +73,22 @@ PetalburgCity_PokemonCenter_1F_EventScript_1B1BE9:: @ 81B1BE9 PetalburgCity_PokemonCenter_1F_EventScript_1B1C28:: @ 81B1C28 msgbox PetalburgCity_PokemonCenter_1F_Text_1B1D3A, 4 - jump PetalburgCity_PokemonCenter_1F_EventScript_1B1BE9 + goto PetalburgCity_PokemonCenter_1F_EventScript_1B1BE9 end PetalburgCity_PokemonCenter_1F_EventScript_1B1C36:: @ 81B1C36 msgbox PetalburgCity_PokemonCenter_1F_Text_1B207F, 4 - closebutton + closemessage setvar 0x8004, 0 call PetalburgCity_PokemonCenter_1F_EventScript_1A00F3 lock faceplayer compare 0x8004, 1 - callif 1, PetalburgCity_PokemonCenter_1F_EventScript_1B1C77 + call_if 1, PetalburgCity_PokemonCenter_1F_EventScript_1B1C77 compare RESULT, 0 - jumpeq PetalburgCity_PokemonCenter_1F_EventScript_1B1BB1 + goto_if_eq PetalburgCity_PokemonCenter_1F_EventScript_1B1BB1 compare RESULT, 1 - jumpeq PetalburgCity_PokemonCenter_1F_EventScript_1B1BBB + goto_if_eq PetalburgCity_PokemonCenter_1F_EventScript_1B1BBB end PetalburgCity_PokemonCenter_1F_EventScript_1B1C6D:: @ 81B1C6D @@ -98,9 +98,9 @@ PetalburgCity_PokemonCenter_1F_EventScript_1B1C6D:: @ 81B1C6D PetalburgCity_PokemonCenter_1F_EventScript_1B1C77:: @ 81B1C77 checkflag 2059 - jumpif 0, PetalburgCity_PokemonCenter_1F_EventScript_1B1C96 + goto_if 0, PetalburgCity_PokemonCenter_1F_EventScript_1B1C96 checkflag 2124 - jumpeq PetalburgCity_PokemonCenter_1F_EventScript_1B1C96 + goto_if_eq PetalburgCity_PokemonCenter_1F_EventScript_1B1C96 setflag 2124 msgbox PetalburgCity_PokemonCenter_1F_Text_1B21CC, 3 release diff --git a/data/scripts/players_house.inc b/data/scripts/players_house.inc index 9db432c2c..69a4dc3e9 100644 --- a/data/scripts/players_house.inc +++ b/data/scripts/players_house.inc @@ -6,29 +6,29 @@ LittlerootTown_MaysHouse_2F_EventScript_1B6950:: @ 81B6950 LittlerootTown_BrendansHouse_1F_EventScript_1B6956:: @ 81B6956 LittlerootTown_MaysHouse_1F_EventScript_1B6956:: @ 81B6956 msgbox LittlerootTown_BrendansHouse_1F_Text_172429, 4 - move 0x8004, LittlerootTown_BrendansHouse_1F_Movement_1A0839 - waitmove 0 + applymovement 0x8004, LittlerootTown_BrendansHouse_1F_Movement_1A0839 + waitmovement 0 compare 0x8005, 0 - callif 1, LittlerootTown_BrendansHouse_1F_EventScript_1B699F + call_if 1, LittlerootTown_BrendansHouse_1F_EventScript_1B699F compare 0x8005, 1 - callif 1, LittlerootTown_BrendansHouse_1F_EventScript_1B69AA + call_if 1, LittlerootTown_BrendansHouse_1F_EventScript_1B69AA msgbox LittlerootTown_BrendansHouse_1F_Text_172453, 4 - closebutton + closemessage setvar 0x4092, 4 - move 255, LittlerootTown_BrendansHouse_1F_Movement_1B69B5 - move 0x8004, LittlerootTown_BrendansHouse_1F_Movement_1A0841 - waitmove 0 + applymovement 255, LittlerootTown_BrendansHouse_1F_Movement_1B69B5 + applymovement 0x8004, LittlerootTown_BrendansHouse_1F_Movement_1A0841 + waitmovement 0 releaseall end LittlerootTown_BrendansHouse_1F_EventScript_1B699F:: @ 81B699F - move 255, LittlerootTown_BrendansHouse_1F_Movement_1A0843 - waitmove 0 + applymovement 255, LittlerootTown_BrendansHouse_1F_Movement_1A0843 + waitmovement 0 return LittlerootTown_BrendansHouse_1F_EventScript_1B69AA:: @ 81B69AA - move 255, LittlerootTown_BrendansHouse_1F_Movement_1A083F - waitmove 0 + applymovement 255, LittlerootTown_BrendansHouse_1F_Movement_1A083F + waitmovement 0 return LittlerootTown_BrendansHouse_1F_Movement_1B69B5:: @ 81B69B5 @@ -38,83 +38,83 @@ LittlerootTown_BrendansHouse_1F_Movement_1B69B5:: @ 81B69B5 LittlerootTown_BrendansHouse_1F_EventScript_1B69B7:: @ 81B69B7 LittlerootTown_MaysHouse_1F_EventScript_1B69B7:: @ 81B69B7 msgbox LittlerootTown_BrendansHouse_1F_Text_172531, 4 - closebutton - move 0x8004, LittlerootTown_BrendansHouse_1F_Movement_1A0841 - move 255, LittlerootTown_BrendansHouse_1F_Movement_1B6CDC - waitmove 0 + closemessage + applymovement 0x8004, LittlerootTown_BrendansHouse_1F_Movement_1A0841 + applymovement 255, LittlerootTown_BrendansHouse_1F_Movement_1B6CDC + waitmovement 0 releaseall end LittlerootTown_BrendansHouse_2F_EventScript_1B69D3:: @ 81B69D3 lockall setvar 0x8004, 0 - jump LittlerootTown_BrendansHouse_2F_EventScript_1B69EB + goto LittlerootTown_BrendansHouse_2F_EventScript_1B69EB end LittlerootTown_MaysHouse_2F_EventScript_1B69DF:: @ 81B69DF lockall setvar 0x8004, 1 - jump LittlerootTown_MaysHouse_2F_EventScript_1B69EB + goto LittlerootTown_MaysHouse_2F_EventScript_1B69EB end LittlerootTown_BrendansHouse_2F_EventScript_1B69EB:: @ 81B69EB LittlerootTown_MaysHouse_2F_EventScript_1B69EB:: @ 81B69EB checkflag 81 - jumpeq LittlerootTown_BrendansHouse_2F_EventScript_1B6A91 + goto_if_eq LittlerootTown_BrendansHouse_2F_EventScript_1B6A91 msgbox LittlerootTown_BrendansHouse_2F_Text_172E18, 4 call LittlerootTown_BrendansHouse_2F_EventScript_1B6A9B - pause 30 + delay 30 setvar 0x4092, 6 setflag 81 setflag 754 setflag 755 - checkgender + checkplayergender compare RESULT, 0 - callif 1, LittlerootTown_BrendansHouse_2F_EventScript_1B6A31 + call_if 1, LittlerootTown_BrendansHouse_2F_EventScript_1B6A31 compare RESULT, 1 - callif 1, LittlerootTown_BrendansHouse_2F_EventScript_1B6A61 - playsfx 9 - disappear 0x8008 + call_if 1, LittlerootTown_BrendansHouse_2F_EventScript_1B6A61 + playse 9 + removeobject 0x8008 releaseall end LittlerootTown_BrendansHouse_2F_EventScript_1B6A31:: @ 81B6A31 setvar 0x8008, 14 - reappear 0x8008 - move 0x8008, LittlerootTown_BrendansHouse_2F_Movement_1B6AA2 - waitmove 0 - move 255, LittlerootTown_BrendansHouse_2F_Movement_1A0843 - waitmove 0 + addobject 0x8008 + applymovement 0x8008, LittlerootTown_BrendansHouse_2F_Movement_1B6AA2 + waitmovement 0 + applymovement 255, LittlerootTown_BrendansHouse_2F_Movement_1A0843 + waitmovement 0 msgbox LittlerootTown_BrendansHouse_2F_Text_172E4C, 4 - closebutton - move 0x8008, LittlerootTown_BrendansHouse_2F_Movement_1B6AA9 - waitmove 0 + closemessage + applymovement 0x8008, LittlerootTown_BrendansHouse_2F_Movement_1B6AA9 + waitmovement 0 return LittlerootTown_BrendansHouse_2F_EventScript_1B6A61:: @ 81B6A61 setvar 0x8008, 14 - reappear 0x8008 - move 0x8008, LittlerootTown_BrendansHouse_2F_Movement_1B6AAD - waitmove 0 - move 255, LittlerootTown_BrendansHouse_2F_Movement_1A083F - waitmove 0 + addobject 0x8008 + applymovement 0x8008, LittlerootTown_BrendansHouse_2F_Movement_1B6AAD + waitmovement 0 + applymovement 255, LittlerootTown_BrendansHouse_2F_Movement_1A083F + waitmovement 0 msgbox LittlerootTown_BrendansHouse_2F_Text_172E4C, 4 - closebutton - move 0x8008, LittlerootTown_BrendansHouse_2F_Movement_1B6AB4 - waitmove 0 + closemessage + applymovement 0x8008, LittlerootTown_BrendansHouse_2F_Movement_1B6AB4 + waitmovement 0 return LittlerootTown_BrendansHouse_2F_EventScript_1B6A91:: @ 81B6A91 - inccounter GAME_STAT_CHECKED_CLOCK + incrementgamestat GAME_STAT_CHECKED_CLOCK fadescreen 1 - special 155 + special ScrSpecial_ViewWallClock waitstate releaseall end LittlerootTown_BrendansHouse_2F_EventScript_1B6A9B:: @ 81B6A9B fadescreen 1 - special 154 + special StartWallClock waitstate return @@ -155,75 +155,75 @@ LittlerootTown_MaysHouse_1F_EventScript_1B6AB8:: @ 81B6AB8 end LittlerootTown_BrendansHouse_1F_EventScript_1B6ABF:: @ 81B6ABF - move 0x8005, LittlerootTown_BrendansHouse_1F_Movement_1A0843 - waitmove 0 + applymovement 0x8005, LittlerootTown_BrendansHouse_1F_Movement_1A0843 + waitmovement 0 call LittlerootTown_BrendansHouse_1F_EventScript_1B6B9D - move 255, LittlerootTown_BrendansHouse_1F_Movement_1B6CCC - waitmove 0 - playmusic 453, 0 + applymovement 255, LittlerootTown_BrendansHouse_1F_Movement_1B6CCC + waitmovement 0 + playbgm 453, 0 msgbox LittlerootTown_BrendansHouse_1F_Text_1725C9, 4 - closebutton - move 0x8005, LittlerootTown_BrendansHouse_1F_Movement_1B6BDB - waitmove 0 - move 255, LittlerootTown_BrendansHouse_1F_Movement_1B6CD2 - waitmove 0 + closemessage + applymovement 0x8005, LittlerootTown_BrendansHouse_1F_Movement_1B6BDB + waitmovement 0 + applymovement 255, LittlerootTown_BrendansHouse_1F_Movement_1B6CD2 + waitmovement 0 call LittlerootTown_BrendansHouse_1F_EventScript_1B6BBE - move 255, LittlerootTown_BrendansHouse_1F_Movement_1A083F - waitmove 0 + applymovement 255, LittlerootTown_BrendansHouse_1F_Movement_1A083F + waitmovement 0 msgbox LittlerootTown_BrendansHouse_1F_Text_1725FE, 4 msgbox LittlerootTown_BrendansHouse_1F_Text_172644, 4 - closebutton + closemessage setvar 0x4001, 1 - move 0x8005, LittlerootTown_BrendansHouse_1F_Movement_1B6BE1 - waitmove 0 - jump LittlerootTown_BrendansHouse_1F_EventScript_1B6AB8 + applymovement 0x8005, LittlerootTown_BrendansHouse_1F_Movement_1B6BE1 + waitmovement 0 + goto LittlerootTown_BrendansHouse_1F_EventScript_1B6AB8 end LittlerootTown_MaysHouse_1F_EventScript_1B6B2E:: @ 81B6B2E - move 0x8005, LittlerootTown_MaysHouse_1F_Movement_1A083F - waitmove 0 + applymovement 0x8005, LittlerootTown_MaysHouse_1F_Movement_1A083F + waitmovement 0 call LittlerootTown_MaysHouse_1F_EventScript_1B6B9D - move 255, LittlerootTown_MaysHouse_1F_Movement_1B6CD4 - waitmove 0 - playmusic 453, 0 + applymovement 255, LittlerootTown_MaysHouse_1F_Movement_1B6CD4 + waitmovement 0 + playbgm 453, 0 msgbox LittlerootTown_MaysHouse_1F_Text_1725C9, 4 - closebutton - move 0x8005, LittlerootTown_MaysHouse_1F_Movement_1B6BDE - waitmove 0 - move 255, LittlerootTown_MaysHouse_1F_Movement_1B6CDA - waitmove 0 + closemessage + applymovement 0x8005, LittlerootTown_MaysHouse_1F_Movement_1B6BDE + waitmovement 0 + applymovement 255, LittlerootTown_MaysHouse_1F_Movement_1B6CDA + waitmovement 0 call LittlerootTown_MaysHouse_1F_EventScript_1B6BBE - move 255, LittlerootTown_MaysHouse_1F_Movement_1A0843 - waitmove 0 + applymovement 255, LittlerootTown_MaysHouse_1F_Movement_1A0843 + waitmovement 0 msgbox LittlerootTown_MaysHouse_1F_Text_1725FE, 4 msgbox LittlerootTown_MaysHouse_1F_Text_172644, 4 - closebutton + closemessage setvar 0x4001, 1 - move 0x8005, LittlerootTown_MaysHouse_1F_Movement_1B6BE5 - waitmove 0 - jump LittlerootTown_MaysHouse_1F_EventScript_1B6AB8 + applymovement 0x8005, LittlerootTown_MaysHouse_1F_Movement_1B6BE5 + waitmovement 0 + goto LittlerootTown_MaysHouse_1F_EventScript_1B6AB8 end LittlerootTown_BrendansHouse_1F_EventScript_1B6B9D:: @ 81B6B9D LittlerootTown_MaysHouse_1F_EventScript_1B6B9D:: @ 81B6B9D - playsfx 21 - move 0x8005, LittlerootTown_BrendansHouse_1F_Movement_1A0833 - waitmove 0 - move 0x8005, LittlerootTown_BrendansHouse_1F_Movement_1A0835 - waitmove 0 + playse 21 + applymovement 0x8005, LittlerootTown_BrendansHouse_1F_Movement_1A0833 + waitmovement 0 + applymovement 0x8005, LittlerootTown_BrendansHouse_1F_Movement_1A0835 + waitmovement 0 msgbox LittlerootTown_BrendansHouse_1F_Text_1725A3, 4 - closebutton + closemessage return LittlerootTown_BrendansHouse_1F_EventScript_1B6BBE:: @ 81B6BBE LittlerootTown_MaysHouse_1F_EventScript_1B6BBE:: @ 81B6BBE - move 255, LittlerootTown_BrendansHouse_1F_Movement_1A0841 - waitmove 0 + applymovement 255, LittlerootTown_BrendansHouse_1F_Movement_1A0841 + waitmovement 0 msgbox LittlerootTown_BrendansHouse_1F_Text_172841, 4 - fadedefault - special 62 + fadedefaultbgm + special TurnOffTVScreen setflag 2096 - pause 35 + delay 35 return LittlerootTown_BrendansHouse_1F_Movement_1B6BDB:: @ 81B6BDB @@ -253,17 +253,17 @@ LittlerootTown_MaysHouse_1F_EventScript_1B6BE9:: @ 81B6BE9 lock faceplayer compare 0x4082, 4 - jumpeq LittlerootTown_BrendansHouse_1F_EventScript_1B6C33 + goto_if_eq LittlerootTown_BrendansHouse_1F_EventScript_1B6C33 compare 0x408c, 4 - jumpeq LittlerootTown_BrendansHouse_1F_EventScript_1B6C33 + goto_if_eq LittlerootTown_BrendansHouse_1F_EventScript_1B6C33 checkflag 2059 - jumpeq LittlerootTown_BrendansHouse_1F_EventScript_1B6C3D + goto_if_eq LittlerootTown_BrendansHouse_1F_EventScript_1B6C3D checkflag 82 - jumpeq LittlerootTown_BrendansHouse_1F_EventScript_1B6C72 + goto_if_eq LittlerootTown_BrendansHouse_1F_EventScript_1B6C72 compare 0x4001, 1 - jumpeq LittlerootTown_BrendansHouse_1F_EventScript_1B6C80 + goto_if_eq LittlerootTown_BrendansHouse_1F_EventScript_1B6C80 compare 0x4092, 7 - jumpif 4, LittlerootTown_BrendansHouse_1F_EventScript_1B6C9C + goto_if 4, LittlerootTown_BrendansHouse_1F_EventScript_1B6C9C msgbox LittlerootTown_BrendansHouse_1F_Text_172429, 4 release end @@ -275,11 +275,11 @@ LittlerootTown_BrendansHouse_1F_EventScript_1B6C33:: @ 81B6C33 LittlerootTown_BrendansHouse_1F_EventScript_1B6C3D:: @ 81B6C3D checkflag 133 - jumpeq LittlerootTown_BrendansHouse_1F_EventScript_1B6C72 + goto_if_eq LittlerootTown_BrendansHouse_1F_EventScript_1B6C72 msgbox LittlerootTown_BrendansHouse_1F_Text_172782, 4 giveitem ITEM_AMULET_COIN compare RESULT, 0 - jumpeq LittlerootTown_BrendansHouse_1F_EventScript_1A029B + goto_if_eq LittlerootTown_BrendansHouse_1F_EventScript_1A029B msgbox LittlerootTown_BrendansHouse_1F_Text_1727CD, 4 setflag 133 release @@ -287,7 +287,7 @@ LittlerootTown_BrendansHouse_1F_EventScript_1B6C3D:: @ 81B6C3D LittlerootTown_BrendansHouse_1F_EventScript_1B6C72:: @ 81B6C72 msgbox LittlerootTown_BrendansHouse_1F_Text_172717, 4 - jump LittlerootTown_BrendansHouse_1F_EventScript_1B6C8A + goto LittlerootTown_BrendansHouse_1F_EventScript_1B6C8A end LittlerootTown_BrendansHouse_1F_EventScript_1B6C80:: @ 81B6C80 @@ -296,9 +296,9 @@ LittlerootTown_BrendansHouse_1F_EventScript_1B6C80:: @ 81B6C80 end LittlerootTown_BrendansHouse_1F_EventScript_1B6C8A:: @ 81B6C8A - closebutton + closemessage call LittlerootTown_BrendansHouse_1F_EventScript_1A02CA - inccounter GAME_STAT_RESTED_AT_HOME + incrementgamestat GAME_STAT_RESTED_AT_HOME msgbox LittlerootTown_BrendansHouse_1F_Text_17276B, 4 release end @@ -312,8 +312,8 @@ LittlerootTown_BrendansHouse_1F_EventScript_1B6CA6:: @ 81B6CA6 LittlerootTown_MaysHouse_1F_EventScript_1B6CA6:: @ 81B6CA6 lock faceplayer - checksound - pokecry SPECIES_MACHOKE, 0 + waitse + playpokecry SPECIES_MACHOKE, 0 msgbox LittlerootTown_BrendansHouse_1F_Text_17281D, 4 waitpokecry release @@ -323,8 +323,8 @@ LittlerootTown_BrendansHouse_1F_EventScript_1B6CB9:: @ 81B6CB9 LittlerootTown_MaysHouse_1F_EventScript_1B6CB9:: @ 81B6CB9 lock faceplayer - checksound - pokecry SPECIES_MACHOKE, 0 + waitse + playpokecry SPECIES_MACHOKE, 0 msgbox LittlerootTown_BrendansHouse_1F_Text_172831, 4 waitpokecry release @@ -361,43 +361,43 @@ LittlerootTown_BrendansHouse_1F_Movement_1B6CDC:: @ 81B6CDC LittlerootTown_BrendansHouse_1F_EventScript_1B6CDE:: @ 81B6CDE LittlerootTown_MaysHouse_1F_EventScript_1B6CDE:: @ 81B6CDE lockall - checkgender + checkplayergender compare RESULT, 0 - callif 1, LittlerootTown_BrendansHouse_1F_EventScript_1B6DAD + call_if 1, LittlerootTown_BrendansHouse_1F_EventScript_1B6DAD compare RESULT, 1 - callif 1, LittlerootTown_BrendansHouse_1F_EventScript_1B6DBD + call_if 1, LittlerootTown_BrendansHouse_1F_EventScript_1B6DBD compare 0x8008, 0 - callif 1, LittlerootTown_BrendansHouse_1F_EventScript_1B6E1D + call_if 1, LittlerootTown_BrendansHouse_1F_EventScript_1B6E1D compare 0x8008, 1 - callif 1, LittlerootTown_BrendansHouse_1F_EventScript_1B6E28 - move 0x8009, LittlerootTown_BrendansHouse_1F_Movement_1A0839 - waitmove 0 - playsfx 21 - move 0x8009, LittlerootTown_BrendansHouse_1F_Movement_1A0833 - waitmove 0 - move 0x8009, LittlerootTown_BrendansHouse_1F_Movement_1A0835 - waitmove 0 - pause 20 + call_if 1, LittlerootTown_BrendansHouse_1F_EventScript_1B6E28 + applymovement 0x8009, LittlerootTown_BrendansHouse_1F_Movement_1A0839 + waitmovement 0 + playse 21 + applymovement 0x8009, LittlerootTown_BrendansHouse_1F_Movement_1A0833 + waitmovement 0 + applymovement 0x8009, LittlerootTown_BrendansHouse_1F_Movement_1A0835 + waitmovement 0 + delay 20 compare 0x8008, 0 - callif 1, LittlerootTown_BrendansHouse_1F_EventScript_1B6DCD + call_if 1, LittlerootTown_BrendansHouse_1F_EventScript_1B6DCD compare 0x8008, 1 - callif 1, LittlerootTown_BrendansHouse_1F_EventScript_1B6DD8 + call_if 1, LittlerootTown_BrendansHouse_1F_EventScript_1B6DD8 msgbox LittlerootTown_BrendansHouse_1F_Text_17298B, 4 giveitem ITEM_SS_TICKET msgbox LittlerootTown_BrendansHouse_1F_Text_172A7D, 4 - closebutton + closemessage compare 0x8008, 0 - callif 1, LittlerootTown_BrendansHouse_1F_EventScript_1B6DE3 + call_if 1, LittlerootTown_BrendansHouse_1F_EventScript_1B6DE3 compare 0x8008, 1 - callif 1, LittlerootTown_BrendansHouse_1F_EventScript_1B6DEE + call_if 1, LittlerootTown_BrendansHouse_1F_EventScript_1B6DEE msgbox LittlerootTown_BrendansHouse_1F_Text_172B5E, 4 - closebutton + closemessage compare 0x8008, 0 - callif 1, LittlerootTown_BrendansHouse_1F_EventScript_1B6DF9 + call_if 1, LittlerootTown_BrendansHouse_1F_EventScript_1B6DF9 compare 0x8008, 1 - callif 1, LittlerootTown_BrendansHouse_1F_EventScript_1B6E0B - playsfx 8 - disappear 0x8009 + call_if 1, LittlerootTown_BrendansHouse_1F_EventScript_1B6E0B + playse 8 + removeobject 0x8009 setflag 291 setvar 0x4082, 4 setvar 0x408c, 4 @@ -417,45 +417,45 @@ LittlerootTown_BrendansHouse_1F_EventScript_1B6DBD:: @ 81B6DBD return LittlerootTown_BrendansHouse_1F_EventScript_1B6DCD:: @ 81B6DCD - move 0x8009, LittlerootTown_BrendansHouse_1F_Movement_1B6E33 - waitmove 0 + applymovement 0x8009, LittlerootTown_BrendansHouse_1F_Movement_1B6E33 + waitmovement 0 return LittlerootTown_BrendansHouse_1F_EventScript_1B6DD8:: @ 81B6DD8 - move 0x8009, LittlerootTown_BrendansHouse_1F_Movement_1B6E36 - waitmove 0 + applymovement 0x8009, LittlerootTown_BrendansHouse_1F_Movement_1B6E36 + waitmovement 0 return LittlerootTown_BrendansHouse_1F_EventScript_1B6DE3:: @ 81B6DE3 - move 0x8009, LittlerootTown_BrendansHouse_1F_Movement_1B6E39 - waitmove 0 + applymovement 0x8009, LittlerootTown_BrendansHouse_1F_Movement_1B6E39 + waitmovement 0 return LittlerootTown_BrendansHouse_1F_EventScript_1B6DEE:: @ 81B6DEE - move 0x8009, LittlerootTown_BrendansHouse_1F_Movement_1B6E3B - waitmove 0 + applymovement 0x8009, LittlerootTown_BrendansHouse_1F_Movement_1B6E3B + waitmovement 0 return LittlerootTown_BrendansHouse_1F_EventScript_1B6DF9:: @ 81B6DF9 - move 255, LittlerootTown_BrendansHouse_1F_Movement_1B6E4F - move 0x8009, LittlerootTown_BrendansHouse_1F_Movement_1B6E3D - waitmove 0 + applymovement 255, LittlerootTown_BrendansHouse_1F_Movement_1B6E4F + applymovement 0x8009, LittlerootTown_BrendansHouse_1F_Movement_1B6E3D + waitmovement 0 return LittlerootTown_BrendansHouse_1F_EventScript_1B6E0B:: @ 81B6E0B - move 255, LittlerootTown_BrendansHouse_1F_Movement_1B6E4F - move 0x8009, LittlerootTown_BrendansHouse_1F_Movement_1B6E43 - waitmove 0 + applymovement 255, LittlerootTown_BrendansHouse_1F_Movement_1B6E4F + applymovement 0x8009, LittlerootTown_BrendansHouse_1F_Movement_1B6E43 + waitmovement 0 return LittlerootTown_BrendansHouse_1F_EventScript_1B6E1D:: @ 81B6E1D - move 255, LittlerootTown_BrendansHouse_1F_Movement_1B6E49 - waitmove 0 + applymovement 255, LittlerootTown_BrendansHouse_1F_Movement_1B6E49 + waitmovement 0 return LittlerootTown_BrendansHouse_1F_EventScript_1B6E28:: @ 81B6E28 - move 255, LittlerootTown_BrendansHouse_1F_Movement_1B6E54 - waitmove 0 + applymovement 255, LittlerootTown_BrendansHouse_1F_Movement_1B6E54 + waitmovement 0 return LittlerootTown_BrendansHouse_1F_Movement_1B6E33:: @ 81B6E33 diff --git a/data/scripts/pokeblocks.inc b/data/scripts/pokeblocks.inc index 2cb283173..6fe754097 100644 --- a/data/scripts/pokeblocks.inc +++ b/data/scripts/pokeblocks.inc @@ -1,36 +1,36 @@ FallarborTown_ContestLobby_EventScript_1B7604:: @ 81B7604 setvar 0x8008, 4 setvar 0x8009, 1 - move 0x8008, FallarborTown_ContestLobby_Movement_1B7821 - waitmove 0 - jump FallarborTown_ContestLobby_EventScript_1B7681 + applymovement 0x8008, FallarborTown_ContestLobby_Movement_1B7821 + waitmovement 0 + goto FallarborTown_ContestLobby_EventScript_1B7681 end SlateportCity_ContestLobby_EventScript_1B761E:: @ 81B761E setvar 0x8008, 2 setvar 0x8009, 2 - move 6, SlateportCity_ContestLobby_Movement_1A083D - move 0x8008, SlateportCity_ContestLobby_Movement_1B7821 - waitmove 0 - jump SlateportCity_ContestLobby_EventScript_1B7681 + applymovement 6, SlateportCity_ContestLobby_Movement_1A083D + applymovement 0x8008, SlateportCity_ContestLobby_Movement_1B7821 + waitmovement 0 + goto SlateportCity_ContestLobby_EventScript_1B7681 end VerdanturfTown_ContestLobby_EventScript_1B763F:: @ 81B763F setvar 0x8008, 2 setvar 0x8009, 1 - move 0x8008, VerdanturfTown_ContestLobby_Movement_1B7821 - waitmove 0 - jump VerdanturfTown_ContestLobby_EventScript_1B7681 + applymovement 0x8008, VerdanturfTown_ContestLobby_Movement_1B7821 + waitmovement 0 + goto VerdanturfTown_ContestLobby_EventScript_1B7681 end LilycoveCity_ContestLobby_EventScript_1B7659:: @ 81B7659 setvar 0x8008, 3 setvar 0x8009, 3 - move 9, LilycoveCity_ContestLobby_Movement_1A083D - move 10, LilycoveCity_ContestLobby_Movement_1A083D - move 0x8008, LilycoveCity_ContestLobby_Movement_1B7821 - waitmove 0 - jump LilycoveCity_ContestLobby_EventScript_1B7681 + applymovement 9, LilycoveCity_ContestLobby_Movement_1A083D + applymovement 10, LilycoveCity_ContestLobby_Movement_1A083D + applymovement 0x8008, LilycoveCity_ContestLobby_Movement_1B7821 + waitmovement 0 + goto LilycoveCity_ContestLobby_EventScript_1B7681 end FallarborTown_ContestLobby_EventScript_1B7681:: @ 81B7681 @@ -40,24 +40,24 @@ VerdanturfTown_ContestLobby_EventScript_1B7681:: @ 81B7681 lockall msgbox FallarborTown_ContestLobby_Text_1B6E63, 5 compare RESULT, 1 - jumpeq FallarborTown_ContestLobby_EventScript_1B76A1 + goto_if_eq FallarborTown_ContestLobby_EventScript_1B76A1 compare RESULT, 0 - jumpeq FallarborTown_ContestLobby_EventScript_1B76E5 + goto_if_eq FallarborTown_ContestLobby_EventScript_1B76E5 end FallarborTown_ContestLobby_EventScript_1B76A1:: @ 81B76A1 checkitem ITEM_POKEBLOCK_CASE, 1 compare RESULT, 0 - jumpeq FallarborTown_ContestLobby_EventScript_1B7780 - specialval RESULT, 49 + goto_if_eq FallarborTown_ContestLobby_EventScript_1B7780 + specialvar RESULT, PlayerHasBerries compare RESULT, 0 - jumpeq FallarborTown_ContestLobby_EventScript_1B770E + goto_if_eq FallarborTown_ContestLobby_EventScript_1B770E msgbox FallarborTown_ContestLobby_Text_1B6E9D, 4 - specialval RESULT, 160 + specialvar RESULT, sub_810CA00 compare RESULT, 65535 - jumpif 5, FallarborTown_ContestLobby_EventScript_1B76EF + goto_if 5, FallarborTown_ContestLobby_EventScript_1B76EF compare RESULT, 65535 - jumpeq FallarborTown_ContestLobby_EventScript_1B7776 + goto_if_eq FallarborTown_ContestLobby_EventScript_1B7776 end FallarborTown_ContestLobby_EventScript_1B76E5:: @ 81B76E5 @@ -68,33 +68,33 @@ FallarborTown_ContestLobby_EventScript_1B76E5:: @ 81B76E5 FallarborTown_ContestLobby_EventScript_1B76EF:: @ 81B76EF msgbox FallarborTown_ContestLobby_Text_1B6ED0, 5 compare RESULT, 1 - jumpeq FallarborTown_ContestLobby_EventScript_1B7734 + goto_if_eq FallarborTown_ContestLobby_EventScript_1B7734 compare RESULT, 0 - jumpeq FallarborTown_ContestLobby_EventScript_1B7726 + goto_if_eq FallarborTown_ContestLobby_EventScript_1B7726 end FallarborTown_ContestLobby_EventScript_1B770E:: @ 81B770E msgbox FallarborTown_ContestLobby_Text_1B6FF0, 4 - checkdailyflags + dodailyevents checkflag 2241 - jumpeq FallarborTown_ContestLobby_EventScript_1B774F - jump FallarborTown_ContestLobby_EventScript_1B7759 + goto_if_eq FallarborTown_ContestLobby_EventScript_1B774F + goto FallarborTown_ContestLobby_EventScript_1B7759 end FallarborTown_ContestLobby_EventScript_1B7726:: @ 81B7726 msgbox FallarborTown_ContestLobby_Text_1B6F1F, 4 - jump FallarborTown_ContestLobby_EventScript_1B7734 + goto FallarborTown_ContestLobby_EventScript_1B7734 end FallarborTown_ContestLobby_EventScript_1B7734:: @ 81B7734 msgbox FallarborTown_ContestLobby_Text_1B6EF1, 4 - jump FallarborTown_ContestLobby_EventScript_1B7742 + goto FallarborTown_ContestLobby_EventScript_1B7742 end FallarborTown_ContestLobby_EventScript_1B7742:: @ 81B7742 copyvar 0x8004, 0x8009 fadescreen 1 - special 161 + special sub_804E538 waitstate releaseall end @@ -108,7 +108,7 @@ FallarborTown_ContestLobby_EventScript_1B7759:: @ 81B7759 msgbox FallarborTown_ContestLobby_Text_1B704A, 4 giveitem ITEM_PECHA_BERRY setflag 2241 - jump FallarborTown_ContestLobby_EventScript_1B76EF + goto FallarborTown_ContestLobby_EventScript_1B76EF end FallarborTown_ContestLobby_EventScript_1B7776:: @ 81B7776 @@ -123,22 +123,22 @@ FallarborTown_ContestLobby_EventScript_1B7780:: @ 81B7780 FallarborTown_ContestLobby_EventScript_1B778A:: @ 81B778A setvar 0x8008, 4 - jump FallarborTown_ContestLobby_EventScript_1B77B6 + goto FallarborTown_ContestLobby_EventScript_1B77B6 end SlateportCity_ContestLobby_EventScript_1B7795:: @ 81B7795 setvar 0x8008, 2 - jump SlateportCity_ContestLobby_EventScript_1B77B6 + goto SlateportCity_ContestLobby_EventScript_1B77B6 end VerdanturfTown_ContestLobby_EventScript_1B77A0:: @ 81B77A0 setvar 0x8008, 2 - jump VerdanturfTown_ContestLobby_EventScript_1B77B6 + goto VerdanturfTown_ContestLobby_EventScript_1B77B6 end LilycoveCity_ContestLobby_EventScript_1B77AB:: @ 81B77AB setvar 0x8008, 3 - jump LilycoveCity_ContestLobby_EventScript_1B77B6 + goto LilycoveCity_ContestLobby_EventScript_1B77B6 end FallarborTown_ContestLobby_EventScript_1B77B6:: @ 81B77B6 @@ -148,11 +148,11 @@ VerdanturfTown_ContestLobby_EventScript_1B77B6:: @ 81B77B6 lock faceplayer msgbox FallarborTown_ContestLobby_Text_1B742F, 4 - specialval RESULT, 49 + specialvar RESULT, PlayerHasBerries compare RESULT, 1 - jumpeq FallarborTown_ContestLobby_EventScript_1B77DC + goto_if_eq FallarborTown_ContestLobby_EventScript_1B77DC compare RESULT, 0 - jumpeq FallarborTown_ContestLobby_EventScript_1B77E6 + goto_if_eq FallarborTown_ContestLobby_EventScript_1B77E6 end FallarborTown_ContestLobby_EventScript_1B77DC:: @ 81B77DC @@ -161,10 +161,10 @@ FallarborTown_ContestLobby_EventScript_1B77DC:: @ 81B77DC end FallarborTown_ContestLobby_EventScript_1B77E6:: @ 81B77E6 - checkdailyflags + dodailyevents checkflag 2241 - jumpeq FallarborTown_ContestLobby_EventScript_1B77F6 - jump FallarborTown_ContestLobby_EventScript_1B7800 + goto_if_eq FallarborTown_ContestLobby_EventScript_1B77F6 + goto FallarborTown_ContestLobby_EventScript_1B7800 end FallarborTown_ContestLobby_EventScript_1B77F6:: @ 81B77F6 @@ -188,19 +188,19 @@ VerdanturfTown_ContestLobby_Movement_1B7821:: @ 81B7821 step_end FallarborTown_ContestLobby_EventScript_1B7823:: @ 81B7823 - jump FallarborTown_ContestLobby_EventScript_1B783B + goto FallarborTown_ContestLobby_EventScript_1B783B end SlateportCity_ContestLobby_EventScript_1B7829:: @ 81B7829 - jump SlateportCity_ContestLobby_EventScript_1B783B + goto SlateportCity_ContestLobby_EventScript_1B783B end VerdanturfTown_ContestLobby_EventScript_1B782F:: @ 81B782F - jump VerdanturfTown_ContestLobby_EventScript_1B783B + goto VerdanturfTown_ContestLobby_EventScript_1B783B end LilycoveCity_ContestLobby_EventScript_1B7835:: @ 81B7835 - jump LilycoveCity_ContestLobby_EventScript_1B783B + goto LilycoveCity_ContestLobby_EventScript_1B783B end FallarborTown_ContestLobby_EventScript_1B783B:: @ 81B783B @@ -208,25 +208,25 @@ LilycoveCity_ContestLobby_EventScript_1B783B:: @ 81B783B SlateportCity_ContestLobby_EventScript_1B783B:: @ 81B783B VerdanturfTown_ContestLobby_EventScript_1B783B:: @ 81B783B lockall - specialval RESULT, 49 + specialvar RESULT, PlayerHasBerries compare RESULT, 0 - jumpeq FallarborTown_ContestLobby_EventScript_1B7897 + goto_if_eq FallarborTown_ContestLobby_EventScript_1B7897 checkitem ITEM_POKEBLOCK_CASE, 1 compare RESULT, 0 - jumpeq FallarborTown_ContestLobby_EventScript_1B7942 - specialval RESULT, 160 + goto_if_eq FallarborTown_ContestLobby_EventScript_1B7942 + specialvar RESULT, sub_810CA00 compare RESULT, 65535 - jumpif 5, FallarborTown_ContestLobby_EventScript_1B7878 + goto_if 5, FallarborTown_ContestLobby_EventScript_1B7878 compare RESULT, 65535 - jumpeq FallarborTown_ContestLobby_EventScript_1B7938 + goto_if_eq FallarborTown_ContestLobby_EventScript_1B7938 end FallarborTown_ContestLobby_EventScript_1B7878:: @ 81B7878 msgbox FallarborTown_ContestLobby_Text_1B727C, 5 compare RESULT, 1 - jumpeq FallarborTown_ContestLobby_EventScript_1B78A1 + goto_if_eq FallarborTown_ContestLobby_EventScript_1B78A1 compare RESULT, 0 - jumpeq FallarborTown_ContestLobby_EventScript_1B7936 + goto_if_eq FallarborTown_ContestLobby_EventScript_1B7936 end FallarborTown_ContestLobby_EventScript_1B7897:: @ 81B7897 @@ -235,48 +235,48 @@ FallarborTown_ContestLobby_EventScript_1B7897:: @ 81B7897 end FallarborTown_ContestLobby_EventScript_1B78A1:: @ 81B78A1 - call FallarborTown_ContestLobby_EventScript_19F806 + call S_DoSaveDialog compare RESULT, 0 - jumpeq FallarborTown_ContestLobby_EventScript_1B7936 + goto_if_eq FallarborTown_ContestLobby_EventScript_1B7936 message FallarborTown_ContestLobby_Text_1B7304 - waittext - special 36 + waitmessage + special sub_8083614 waitstate compare RESULT, 1 - jumpeq FallarborTown_ContestLobby_EventScript_1B7980 + goto_if_eq FallarborTown_ContestLobby_EventScript_1B7980 compare RESULT, 2 - jumpeq FallarborTown_ContestLobby_EventScript_1B794C + goto_if_eq FallarborTown_ContestLobby_EventScript_1B794C compare RESULT, 3 - jumpeq FallarborTown_ContestLobby_EventScript_1B7959 + goto_if_eq FallarborTown_ContestLobby_EventScript_1B7959 compare RESULT, 5 - jumpeq FallarborTown_ContestLobby_EventScript_1B7966 + goto_if_eq FallarborTown_ContestLobby_EventScript_1B7966 compare RESULT, 6 - jumpeq FallarborTown_ContestLobby_EventScript_1B7973 + goto_if_eq FallarborTown_ContestLobby_EventScript_1B7973 end FallarborTown_ContestLobby_EventScript_1B78F3:: @ 81B78F3 msgbox FallarborTown_ContestLobby_Text_1B733B, 4 - jump FallarborTown_ContestLobby_EventScript_1B791D + goto FallarborTown_ContestLobby_EventScript_1B791D end FallarborTown_ContestLobby_EventScript_1B7901:: @ 81B7901 msgbox FallarborTown_ContestLobby_Text_1B7347, 4 - jump FallarborTown_ContestLobby_EventScript_1B791D + goto FallarborTown_ContestLobby_EventScript_1B791D end FallarborTown_ContestLobby_EventScript_1B790F:: @ 81B790F msgbox FallarborTown_ContestLobby_Text_1B735A, 4 - jump FallarborTown_ContestLobby_EventScript_1B791D + goto FallarborTown_ContestLobby_EventScript_1B791D end FallarborTown_ContestLobby_EventScript_1B791D:: @ 81B791D setvar 0x8004, 0 fadescreen 1 - disappear 240 - disappear 239 - disappear 238 - disappear 237 - special 161 + removeobject 240 + removeobject 239 + removeobject 238 + removeobject 237 + special sub_804E538 waitstate releaseall end @@ -296,36 +296,36 @@ FallarborTown_ContestLobby_EventScript_1B7942:: @ 81B7942 end FallarborTown_ContestLobby_EventScript_1B794C:: @ 81B794C - special 31 + special CloseLink msgbox FallarborTown_ContestLobby_Text_1A4A30, 4 releaseall end FallarborTown_ContestLobby_EventScript_1B7959:: @ 81B7959 - special 31 + special CloseLink msgbox FallarborTown_ContestLobby_Text_1A4B1D, 4 releaseall end FallarborTown_ContestLobby_EventScript_1B7966:: @ 81B7966 - special 31 + special CloseLink msgbox FallarborTown_ContestLobby_Text_1A10EB, 4 releaseall end FallarborTown_ContestLobby_EventScript_1B7973:: @ 81B7973 - special 31 + special CloseLink msgbox FallarborTown_ContestLobby_Text_1A4A85, 4 releaseall end FallarborTown_ContestLobby_EventScript_1B7980:: @ 81B7980 fadescreen 1 - specialval RESULT, 37 + specialvar RESULT, GetLinkPartnerNames copyvar 0x8008, RESULT copyvar 0x8004, 0x8008 - special 38 - jump FallarborTown_ContestLobby_EventScript_1B799A + special SpawnBerryBlenderLinkPlayerSprites + goto FallarborTown_ContestLobby_EventScript_1B799A end FallarborTown_ContestLobby_EventScript_1B799A:: @ 81B799A diff --git a/data/scripts/safari_zone.inc b/data/scripts/safari_zone.inc index c8d519038..d0283f072 100644 --- a/data/scripts/safari_zone.inc +++ b/data/scripts/safari_zone.inc @@ -1,12 +1,12 @@ gUnknown_081C340A:: @ 81C340A setvar 0x40a4, 1 - special 206 - warp3 Route121_SafariZoneEntrance, 255, 2, 5 + special ExitSafariMode + setwarp Route121_SafariZoneEntrance, 255, 2, 5 end EventScript_1C341B: @ 81C341B setvar 0x40a4, 1 - special 206 + special ExitSafariMode warp Route121_SafariZoneEntrance, 255, 2, 5 waitstate end @@ -15,60 +15,60 @@ gUnknown_081C342D:: @ 81C342D lockall msgbox UnknownString_81C34B2, 5 compare RESULT, 1 - jumpeq EventScript_1C3443 + goto_if_eq EventScript_1C3443 releaseall end EventScript_1C3443: - jump EventScript_1C341B + goto EventScript_1C341B gUnknown_081C3448:: @ 81C3448 lockall - playsfx 73 + playse 73 message UnknownString_81C34E4 - waittext + waitmessage waitbutton releaseall - jump EventScript_1C341B + goto EventScript_1C341B gUnknown_081C3459:: @ 81C3459 lockall - playsfx 73 + playse 73 message UnknownString_81C3514 - waittext + waitmessage waitbutton releaseall - jump EventScript_1C341B + goto EventScript_1C341B gUnknown_081C346A:: @ 81C346A lockall - special 207 - compare RESULT, -1 - jumpif 5, EventScript_1C34A9 + special SafariZoneGetPokeblockNameInFeeder + compare RESULT, 0xFFFF + goto_if 5, EventScript_1C34A9 msgbox UnknownString_81C354E, 5 compare RESULT, 1 - jumpeq EventScript_1C348E + goto_if_eq EventScript_1C348E releaseall end EventScript_1C348E: fadescreen 1 - special 208 + special sub_810BAF4 waitstate - compare RESULT, -1 - jumpif 5, EventScript_1C34A0 + compare RESULT, 0xFFFF + goto_if 5, EventScript_1C34A0 end EventScript_1C34A0: message UnknownString_81C35A9 - waittext + waitmessage waitbutton releaseall end EventScript_1C34A9: message UnknownString_81C3583 - waittext + waitmessage waitbutton releaseall end diff --git a/data/scripts/secret_power_tm.inc b/data/scripts/secret_power_tm.inc index 629125030..f3c03a853 100644 --- a/data/scripts/secret_power_tm.inc +++ b/data/scripts/secret_power_tm.inc @@ -3,7 +3,7 @@ Route111_EventScript_1A3858:: @ 81A3858 faceplayer msgbox Route111_Text_1A3520, 5 compare RESULT, 1 - jumpeq Route111_EventScript_1A3877 + goto_if_eq Route111_EventScript_1A3877 msgbox Route111_Text_1A37B5, 4 release end @@ -11,29 +11,29 @@ Route111_EventScript_1A3858:: @ 81A3858 Route111_EventScript_1A3877:: @ 81A3877 giveitem ITEM_TM43 compare RESULT, 0 - jumpeq Route111_EventScript_1A38D9 + goto_if_eq Route111_EventScript_1A38D9 msgbox Route111_Text_1A35C5, 4 - closebutton + closemessage setflag 96 clearflag 948 compare FACING, 3 - callif 1, Route111_EventScript_1A38C3 + call_if 1, Route111_EventScript_1A38C3 compare FACING, 4 - callif 1, Route111_EventScript_1A38C3 + call_if 1, Route111_EventScript_1A38C3 compare FACING, 2 - callif 1, Route111_EventScript_1A38CE - disappear LAST_TALKED + call_if 1, Route111_EventScript_1A38CE + removeobject LAST_TALKED release end Route111_EventScript_1A38C3:: @ 81A38C3 - move LAST_TALKED, Route111_Movement_1A38E3 - waitmove 0 + applymovement LAST_TALKED, Route111_Movement_1A38E3 + waitmovement 0 return Route111_EventScript_1A38CE:: @ 81A38CE - move LAST_TALKED, Route111_Movement_1A38EF - waitmove 0 + applymovement LAST_TALKED, Route111_Movement_1A38EF + waitmovement 0 return Route111_EventScript_1A38D9:: @ 81A38D9 diff --git a/data/scripts/storyteller.inc b/data/scripts/storyteller.inc deleted file mode 100644 index c44480e2f..000000000 --- a/data/scripts/storyteller.inc +++ /dev/null @@ -1,82 +0,0 @@ -MauvilleCity_PokemonCenter_1F_EventScript_1B0816:: @ 81B0816 - setvar 0x8008, 0 - setvar 0x8009, 0 - setvar 0x800a, 0 - setvar 0x800b, 0 - lock - faceplayer - msgbox MauvilleCity_PokemonCenter_1F_Text_1AECC6, 5 - compare RESULT, 0 - jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1B0914 - specialval RESULT, 107 - compare RESULT, 0 - jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1B08D3 - -MauvilleCity_PokemonCenter_1F_EventScript_1B084F:: @ 81B084F - message MauvilleCity_PokemonCenter_1F_Text_1AED35 - waittext - special 109 - waitstate - compare RESULT, 0 - jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1B0883 - setvar 0x8008, 1 - special 108 - waittext - waitbutton - specialval RESULT, 110 - compare RESULT, 0 - jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1B0893 - jump MauvilleCity_PokemonCenter_1F_EventScript_1B0909 - -MauvilleCity_PokemonCenter_1F_EventScript_1B0883:: @ 81B0883 - compare 0x8008, 0 - jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1B0914 - jump MauvilleCity_PokemonCenter_1F_EventScript_1B08AE - -MauvilleCity_PokemonCenter_1F_EventScript_1B0893:: @ 81B0893 - msgbox MauvilleCity_PokemonCenter_1F_Text_1AEE50, 4 - msgbox MauvilleCity_PokemonCenter_1F_Text_1AEF0A, 5 - compare RESULT, 1 - jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1B084F - -MauvilleCity_PokemonCenter_1F_EventScript_1B08AE:: @ 81B08AE - specialval RESULT, 112 - compare RESULT, 1 - jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1B091F - specialval RESULT, 107 - compare RESULT, 4 - jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1B091F - jump MauvilleCity_PokemonCenter_1F_EventScript_1B08DB - -MauvilleCity_PokemonCenter_1F_EventScript_1B08D3:: @ 81B08D3 - msgbox MauvilleCity_PokemonCenter_1F_Text_1AED70, 4 - -MauvilleCity_PokemonCenter_1F_EventScript_1B08DB:: @ 81B08DB - msgbox MauvilleCity_PokemonCenter_1F_Text_1AEEB4, 5 - compare RESULT, 0 - jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1B0914 - specialval RESULT, 111 - compare RESULT, 1 - jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1B0909 - msgbox MauvilleCity_PokemonCenter_1F_Text_1AEF49, 4 - closebutton - release - end - -MauvilleCity_PokemonCenter_1F_EventScript_1B0909:: @ 81B0909 - msgbox MauvilleCity_PokemonCenter_1F_Text_1AEDE8, 4 - closebutton - release - end - -MauvilleCity_PokemonCenter_1F_EventScript_1B0914:: @ 81B0914 - msgbox MauvilleCity_PokemonCenter_1F_Text_1AED1D, 4 - closebutton - release - end - -MauvilleCity_PokemonCenter_1F_EventScript_1B091F:: @ 81B091F - msgbox MauvilleCity_PokemonCenter_1F_Text_1AEFA5, 4 - closebutton - release - end diff --git a/data/scripts/trader.inc b/data/scripts/trader.inc deleted file mode 100644 index b3a302516..000000000 --- a/data/scripts/trader.inc +++ /dev/null @@ -1,88 +0,0 @@ -MauvilleCity_PokemonCenter_1F_EventScript_1AEBAB:: @ 81AEBAB - lock - faceplayer - msgbox MauvilleCity_PokemonCenter_1F_Text_1AE88F, 5 - compare RESULT, 0 - jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1AEBDA - special 114 - compare RESULT, 1 - jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1AEBE3 - message MauvilleCity_PokemonCenter_1F_Text_1AE910 - waittext - jump MauvilleCity_PokemonCenter_1F_EventScript_1AEBEC - end - -MauvilleCity_PokemonCenter_1F_EventScript_1AEBDA:: @ 81AEBDA - msgbox MauvilleCity_PokemonCenter_1F_Text_1AE8C6, 2 - end - -MauvilleCity_PokemonCenter_1F_EventScript_1AEBE3:: @ 81AEBE3 - msgbox MauvilleCity_PokemonCenter_1F_Text_1AE8DF, 2 - end - -MauvilleCity_PokemonCenter_1F_EventScript_1AEBEC:: @ 81AEBEC - special 113 - waitstate - compare 0x8004, 0 - jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1AEC2D - compare 0x8004, 65535 - jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1AEC36 - msgbox MauvilleCity_PokemonCenter_1F_Text_1AE97C, 5 - compare RESULT, 0 - jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1AEC42 - special 115 - compare RESULT, 1 - jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1AEC4E - jump MauvilleCity_PokemonCenter_1F_EventScript_1AEC57 - end - -MauvilleCity_PokemonCenter_1F_EventScript_1AEC2D:: @ 81AEC2D - msgbox MauvilleCity_PokemonCenter_1F_Text_1AE950, 2 - end - -MauvilleCity_PokemonCenter_1F_EventScript_1AEC36:: @ 81AEC36 - message MauvilleCity_PokemonCenter_1F_Text_1AEB31 - waittext - jump MauvilleCity_PokemonCenter_1F_EventScript_1AEBEC - end - -MauvilleCity_PokemonCenter_1F_EventScript_1AEC42:: @ 81AEC42 - message MauvilleCity_PokemonCenter_1F_Text_1AE910 - waittext - jump MauvilleCity_PokemonCenter_1F_EventScript_1AEBEC - end - -MauvilleCity_PokemonCenter_1F_EventScript_1AEC4E:: @ 81AEC4E - msgbox MauvilleCity_PokemonCenter_1F_Text_1AE9B6, 2 - end - -MauvilleCity_PokemonCenter_1F_EventScript_1AEC57:: @ 81AEC57 - msgbox MauvilleCity_PokemonCenter_1F_Text_1AE9F8, 4 - special 117 - waitstate - compare 0x8006, 0 - jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1AECA6 - compare 0x8006, 65535 - jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1AECAF - special 116 - compare RESULT, 1 - jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1AECBD - msgbox MauvilleCity_PokemonCenter_1F_Text_1AEA9B, 5 - compare RESULT, 0 - jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1AEC57 - special 118 - msgbox MauvilleCity_PokemonCenter_1F_Text_1AEAFB, 2 - end - -MauvilleCity_PokemonCenter_1F_EventScript_1AECA6:: @ 81AECA6 - msgbox MauvilleCity_PokemonCenter_1F_Text_1AEA2B, 2 - end - -MauvilleCity_PokemonCenter_1F_EventScript_1AECAF:: @ 81AECAF - msgbox MauvilleCity_PokemonCenter_1F_Text_1AEAC3, 4 - jump MauvilleCity_PokemonCenter_1F_EventScript_1AEC57 - end - -MauvilleCity_PokemonCenter_1F_EventScript_1AECBD:: @ 81AECBD - msgbox MauvilleCity_PokemonCenter_1F_Text_1AEA57, 2 - end diff --git a/data/scripts/tv.inc b/data/scripts/tv.inc index 2b317e725..425f42a85 100644 --- a/data/scripts/tv.inc +++ b/data/scripts/tv.inc @@ -1,39 +1,39 @@ Event_TV:: @ 81A6E72 lockall - inccounter GAME_STAT_WATCHED_TV - special 75 - specialval RESULT, 73 + incrementgamestat GAME_STAT_WATCHED_TV + special sub_80C2014 + specialvar RESULT, CheckForBigMovieOrEmergencyNewsOnTV compare RESULT, 2 - jumpeq EventScript_1A6F01 + goto_if_eq EventScript_1A6F01 compare RESULT, 1 - jumpeq EventScript_1A6F0B + goto_if_eq EventScript_1A6F0B checkflag 2098 - jumpif 0, EventScript_1A6EF1 + goto_if 0, EventScript_1A6EF1 checkflag 2097 - jumpeq EventScript_1A6EF1 - specialval RESULT, 176 + goto_if_eq EventScript_1A6EF1 + specialvar RESULT, IsTVShowInSearchOfTrainersAiring compare RESULT, 1 - jumpeq EventScript_1A6F66 - jump EventScript_1A6F50 + goto_if_eq EventScript_1A6F66 + goto EventScript_1A6F50 end EventScript_1A6EBB: - specialval 0x8004, 65 + specialvar 0x8004, special_0x44 compare 0x8004, 255 - jumpeq EventScript_1A6F3F - specialval RESULT, 71 + goto_if_eq EventScript_1A6F3F + specialvar RESULT, special_0x4a compare RESULT, 255 - jumpeq EventScript_1A6F3F + goto_if_eq EventScript_1A6F3F copyvar 0x8004, RESULT - specialval RESULT, 66 + specialvar RESULT, sub_80BDA0C compare RESULT, 0 - jumpif 5, EventScript_1A6F21 + goto_if 5, EventScript_1A6F21 end EventScript_1A6EF1: - special 74 + special GetMomOrDadStringForTVMessage msgbox UnknownString_81A0E68, 4 - special 62 + special TurnOffTVScreen releaseall end @@ -48,48 +48,48 @@ EventScript_1A6F0B: .else msgbox UnknownString_8172C50, 4 .endif - special 297 + special InitRoamer clearflag 2141 setflag 255 - special 62 + special TurnOffTVScreen releaseall end EventScript_1A6F21: - special 63 - waittext + special DoTVShow + waitmessage waitbutton compare RESULT, 1 - jumpif 5, EventScript_1A6F21 - jump EventScript_1A6F37 + goto_if 5, EventScript_1A6F21 + goto EventScript_1A6F37 end EventScript_1A6F37: - special 62 + special TurnOffTVScreen setflag 2097 releaseall end EventScript_1A6F3F: - special 74 + special GetMomOrDadStringForTVMessage msgbox UnknownString_81A0E68, 4 - jump EventScript_1A6F37 + goto EventScript_1A6F37 end EventScript_1A6F50: - special 64 + special sub_80BECE8 compare RESULT, 0 - jumpeq EventScript_1A6EBB - waittext + goto_if_eq EventScript_1A6EBB + waitmessage waitbutton - jump EventScript_1A6F37 + goto EventScript_1A6F37 end EventScript_1A6F66: - special 175 - waittext + special DoTVShowInSearchOfTrainers + waitmessage waitbutton compare RESULT, 0 - jumpeq EventScript_1A6F66 - jump EventScript_1A6F37 + goto_if_eq EventScript_1A6F66 + goto EventScript_1A6F37 end diff --git a/data/shop.s b/data/shop.s deleted file mode 100644 index 071874d0e..000000000 --- a/data/shop.s +++ /dev/null @@ -1,69 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - - .align 2 -gUnknown_083CC6D0:: @ 83CC6D0 - .4byte MartText_Buy, sub_80B2EFC - .4byte MartText_Sell, sub_80B2F30 - .4byte MartText_Quit2, HandleShopMenuQuit - -gUnknown_083CC6E8:: @ 83CC6E8 - .byte 0, 1, 2 - -gUnknown_083CC6EB:: @ 83CC6EB - .byte 0, 2 - -@ unknown, unreferenced data - .align 1 - .2byte 0x2 - .2byte 0x3 - .2byte 0x4 - .2byte 0xD - .2byte 0x121 - .2byte 0xE - .2byte 0xE - .2byte 0xE - .2byte 0xE - .2byte 0xE - .2byte 0xE - .2byte 0x0 - .2byte 0x0 - - .align 2 -gUnknown_083CC708:: @ 83CC708 - .4byte sub_80B3BF4 - .4byte sub_80B3D7C - - .align 1 -gUnknown_083CC710:: @ 83CC710 - .2byte 0x41EE,0x7FFF - - .align 1 -gUnknown_083CC714:: @ 83CC714 - .2byte 0x284,0x282,0x280 - - .align 1 -gUnknown_083CC71A:: @ 83CC71A - .2byte 0x285,0x283,0x281 - - .align 1 -gUnknown_083CC720:: @ 83CC720 - .2byte 0x28C,0x28A,0x288 - - .align 1 -gUnknown_083CC726:: @ 83CC726 - .2byte 0x28D,0x28B,0x289 - - .align 1 -gUnknown_083CC72C:: @ 83CC72C - .2byte 0x2A0,0x2A2,0x2A4 - - .align 1 -gUnknown_083CC732:: @ 83CC732 - .2byte 0x2A1,0x2A3,0x2A5 - - .align 1 -gUnknown_083CC738:: @ 83CC738 - .2byte 0x2A8,0x2AA,0x2AC diff --git a/data/specials.inc b/data/specials.inc index f7aa3456a..6ce9b5b1e 100644 --- a/data/specials.inc +++ b/data/specials.inc @@ -1,347 +1,354 @@ +.macro def_special ptr +.set SPECIAL_\ptr, __special__ +.set __special__, __special__ + 1 + .4byte \ptr + .endm + +.set __special__, 0 .align 2 gSpecials:: - .4byte HealPlayerParty - .4byte sub_8068FEC - .4byte sub_808102C - .4byte sub_80810DC - .4byte sub_80839A4 - .4byte sub_80839D0 - .4byte sub_80BB8CC - .4byte sub_80BB63C - .4byte sub_80BBAF0 - .4byte sub_80BC440 - .4byte SecretBasePC_PackUp - .4byte sub_80BC114 - .4byte sub_80BC56C - .4byte sub_80BC5BC - .4byte SecretBasePC_Decoration - .4byte SecretBasePC_Registry - .4byte sub_80BCE1C - .4byte sub_80BCE90 - .4byte sub_80BBDD0 - .4byte sub_80FF474 - .4byte sub_8100B20 - .4byte sub_80BB70C - .4byte sub_80BBFA4 - .4byte sub_8100A7C - .4byte sub_80BBC78 - .4byte sub_80BCE4C - .4byte sub_80C683C - .4byte sub_80B929C - .4byte sub_808347C - .4byte sub_80834E4 - .4byte sub_808350C - .4byte CloseLink - .4byte sub_8083B90 - .4byte sub_8083B5C - .4byte sub_8083B80 - .4byte sub_8083820 - .4byte sub_8083614 - .4byte GetLinkPartnerNames - .4byte SpawnBerryBlenderLinkPlayerSprites - .4byte SavePlayerParty - .4byte LoadPlayerParty - .4byte sub_80C5568 - .4byte sub_8083BDC - .4byte FieldObjectInteractionGetBerryTreeData - .4byte sub_80B4EE4 - .4byte FieldObjectInteractionPlantBerryTree - .4byte FieldObjectInteractionPickBerryTree - .4byte FieldObjectInteractionRemoveBerryTree - .4byte FieldObjectInteractionWaterBerryTree - .4byte PlayerHasBerries - .4byte IsEnigmaBerryValid - .4byte sub_8082558 - .4byte sub_80826D8 - .4byte sub_8082718 - .4byte sub_8082564 - .4byte sub_80847C8 - .4byte PlayTrainerEncounterMusic - .4byte sub_8082C68 - .4byte sub_8082C9C - .4byte sub_80826B0 - .4byte ShowPokemonStorageSystem - .4byte CheckForAlivePartyMons - .4byte TurnOffTVScreen - .4byte DoTVShow - .4byte sub_80BECE8 - .4byte special_0x44 - .4byte sub_80BDA0C - .4byte sub_80BF2C4 - .4byte sub_80BDE48 - .4byte sub_80BF544 - .4byte SetContestCategoryStringVarForInterview - .4byte special_0x4a - .4byte sub_80BF974 - .4byte CheckForBigMovieOrEmergencyNewsOnTV - .4byte GetMomOrDadStringForTVMessage - .4byte sub_80C2014 - .4byte sub_80C47C0 - .4byte sub_80C496C - .4byte sub_80C4C28 - .4byte sub_80C47F0 - .4byte sub_80C4858 - .4byte sub_80C4C64 - .4byte sub_80C4758 - .4byte sub_80C4BF0 - .4byte sub_80C43F4 - .4byte sub_80C4D80 - .4byte sub_80C4F70 - .4byte sub_80C47A0 - .4byte sub_80C4440 - .4byte sub_80C44C0 - .4byte sub_80C5044 - .4byte GiveMonArtistRibbon - .4byte sub_808363C - .4byte InitSaveDialog - .4byte DoWateringBerryTreeAnim - .4byte sub_80E60D8 - .4byte sub_80EB7C4 - .4byte sub_80F7B14 - .4byte sub_80F7B2C - .4byte sub_80F7B40 - .4byte sub_80F7C70 - .4byte sub_80F7C84 - .4byte sub_80F7C90 - .4byte sub_80F7C54 - .4byte sub_80F83D0 - .4byte sub_80F7CF4 - .4byte sub_80F7CC8 - .4byte sub_80F889C - .4byte sub_80F8888 - .4byte sub_80F8874 - .4byte sub_80F88AC - .4byte sub_80F88FC - .4byte sub_80F88E0 - .4byte sub_8109E34 - .4byte sub_8109C44 - .4byte sub_8109C58 - .4byte sub_8109C90 - .4byte sub_8109CF0 - .4byte sub_8109DE0 - .4byte GetShroomishSizeRecordInfo - .4byte CompareShroomishSize - .4byte GetBarboachSizeRecordInfo - .4byte CompareBarboachSize - .4byte sub_80BF9B4 - .4byte sub_80BFAE0 - .4byte sub_80BFB10 - .4byte sub_80FA5BC - .4byte sub_80FA5E4 - .4byte sub_80EB83C - .4byte sub_80FA648 - .4byte SwapRegisteredBike - .4byte CalculatePlayerPartyCount - .4byte sub_8095B6C - .4byte sub_8095C10 - .4byte sub_80C4CF8 - .4byte sub_80C4CEC - .4byte sub_80C4C78 - .4byte sub_80C4D50 - .4byte ShowContestWinner - .4byte MauvilleGymSpecial2 - .4byte MauvilleGymSpecial1 - .4byte ShowFieldMessageStringVar4 - .4byte DrawWholeMapView - .4byte StorePlayerCoordsInVars - .4byte MauvilleGymSpecial3 - .4byte PetalburgGymSpecial1 - .4byte PetalburgGymSpecial2 - .4byte GetPlayerTrainerIdOnesDigit - .4byte GetPlayerBigGuyGirlString - .4byte GetRivalSonDaughterString - .4byte SetFlagInVar - .4byte CableCarWarp - .4byte sub_8123218 - .4byte sub_8053E90 - .4byte StartWallClock - .4byte sub_810D6B8 - .4byte ChooseStarter - .4byte StartBattle_WallyTutorial - .4byte sub_80BF9F8 - .4byte sub_80F9A0C - .4byte sub_810CA00 - .4byte sub_804E538 - .4byte PlayRoulette - .4byte sub_810FD60 - .4byte sub_810FCB0 - .4byte sub_810FDAC - .4byte sub_810FA74 - .4byte sub_810FCE8 - .4byte sub_810FF48 - .4byte sub_810FAA0 - .4byte sub_810FF60 - .4byte RockSmashWildEncounter - .4byte GabbyAndTyGetBattleNum - .4byte sub_80BDC14 - .4byte GabbyAndTyBeforeInterview - .4byte DoTVShowInSearchOfTrainers - .4byte IsTVShowInSearchOfTrainersAiring - .4byte GabbyAndTyGetLastQuote - .4byte sub_80BDD18 - .4byte GabbyAndTySetScriptVarsToFieldObjectLocalIds - .4byte sub_810E300 - .4byte sp0B5_daycare - .4byte sp0B6_daycare - .4byte sub_8041E7C - .4byte sp0B8_daycare - .4byte sp0B9_daycare_relationship_comment - .4byte sub_8042328 - .4byte Daycare_SendPokemon_Special - .4byte ChooseSendDaycareMon - .4byte ShowDaycareLevelMenu - .4byte sub_80417B8 - .4byte sub_8041770 - .4byte sub_8041648 - .4byte ScriptHatchMon - .4byte EggHatch - .4byte sub_8042B4C - .4byte ShowLinkBattleRecords - .4byte sub_80B7CE8 - .4byte sub_80B7D0C - .4byte ExecuteWhiteOut - .4byte sp0C8_whiteout_maybe - .4byte RotatingGate_InitPuzzle - .4byte RotatingGate_InitPuzzleAndGraphics - .4byte SetSSTidalFlag - .4byte ResetSSTidalFlag - .4byte EnterSafariMode - .4byte ExitSafariMode - .4byte SafariZoneGetPokeblockNameInFeeder - .4byte sub_810BAF4 - .4byte IsMirageIslandPresent - .4byte UpdateShoalTideFlag - .4byte InitBirchState - .4byte ScriptGetPokedexInfo - .4byte ShowPokedexRatingMessage - .4byte DoPCTurnOnEffect - .4byte DoPCTurnOffEffect - .4byte SetDepartmentStoreFloorVar - .4byte DoLotteryCornerComputerEffect - .4byte EndLotteryCornerComputerEffect - .4byte sub_80F9A4C - .4byte sub_80F9EEC - .4byte sub_80FA0DC - .4byte sub_80F9F84 - .4byte sub_80F9F3C - .4byte sub_8132670 - .4byte GetRecordedCyclingRoadResults - .4byte BeginCyclingRoadChallenge - .4byte GetPlayerAvatarBike - .4byte FinishCyclingRoadChallenge - .4byte UpdateCyclingRoadState - .4byte GetLeadMonFriendshipScore - .4byte sub_8134548 - .4byte sub_81347F8 - .4byte CheckPartyBattleTowerBanlist - .4byte sub_8135474 - .4byte sub_81360C0 - .4byte sub_813556C - .4byte sub_8135668 - .4byte sub_81358A4 - .4byte sub_8135A14 - .4byte sub_8135BA0 - .4byte sub_8135C38 - .4byte sub_8135D84 - .4byte sub_8135DEC - .4byte sub_8135E50 - .4byte ChooseBattleTowerPlayerParty - .4byte sub_813601C - .4byte sub_810F404 - .4byte ReducePlayerPartyToThree - .4byte BedroomPC - .4byte PlayerPC - .4byte FieldShowRegionMap - .4byte sub_804D89C - .4byte sub_804DB68 - .4byte sub_804E174 - .4byte sub_804DB2C - .4byte GetWeekCount - .4byte RetrieveLotteryNumber - .4byte PickLotteryCornerTicket - .4byte ShowBerryBlenderRecordWindow - .4byte ResetTrickHouseEndRoomFlag - .4byte SetTrickHouseEndRoomFlag - .4byte TryCreatePCMenu - .4byte AccessHallOfFamePC - .4byte sub_810D6A4 - .4byte CheckLeadMonCool - .4byte CheckLeadMonBeauty - .4byte CheckLeadMonCute - .4byte CheckLeadMonSmart - .4byte CheckLeadMonTough - .4byte sub_80C7958 - .4byte DoSoftReset - .4byte GameClear - .4byte sub_810EBEC - .4byte ShowGlassWorkshopMenu - .4byte SpawnCameraDummy - .4byte RemoveCameraDummy - .4byte GetPokeblockNameByMonNature - .4byte GetSecretBaseNearbyMapName - .4byte CheckRelicanthWailord - .4byte DoBrailleWait - .4byte sub_80818A4 - .4byte sub_80818FC - .4byte ShowBattleTowerRecords - .4byte WaitWeather - .4byte sub_810F414 - .4byte sub_810F424 - .4byte player_get_direction_lower_nybble - .4byte sub_810F488 - .4byte sub_810F4B0 - .4byte sub_810F4D4 - .4byte sub_810F4FC - .4byte LeadMonHasEffortRibbon - .4byte GivLeadMonEffortRibbon - .4byte GetLeadMonEVCount - .4byte sub_8064EAC - .4byte sub_8064ED4 - .4byte InitRoamer - .4byte sub_810F5BC - .4byte IsGrassTypeInParty - .4byte sub_8081334 - .4byte PutZigzagoonInPlayerParty - .4byte IsStarterInParty - .4byte sub_80BC224 - .4byte CheckFreePokemonStorageSpace - .4byte DoSealedChamberShakingEffect1 - .4byte sub_810E944 - .4byte GetShieldToyTVDecorationInfo - .4byte IsPokerusInParty - .4byte sub_8069D78 - .4byte sub_810F758 - .4byte StartBattle_GroudonKyogre - .4byte StartBattle_Rayquaza - .4byte StartBattle_Regi - .4byte sub_8082524 - .4byte DoSealedChamberShakingEffect2 - .4byte sub_810F828 - .4byte sub_807E25C - .4byte sp13E_warp_to_last_warp - .4byte sp13F_fall_to_last_warp - .4byte ShowContestEntryMonPic - .4byte sub_80C5164 - .4byte sub_8134AB4 - .4byte StartBattle_SouthernIsland - .4byte SetRoute119Weather - .4byte SetRoute123Weather - .4byte ScriptGetMultiplayerId - .4byte ScriptGetPartyMonSpecies - .4byte sub_80FA148 - .4byte sub_810F8FC - .4byte sub_80BC50C - .4byte LoadPlayerBag - .4byte sub_8081924 - .4byte sub_810F950 - .4byte sub_810F908 - .4byte sub_8090FC0 - .4byte sub_810F96C - .4byte sub_810F9AC - .4byte sub_813610C - .4byte GetNameOfEnigmaBerryInPlayerParty - .4byte ScriptRandom - .4byte sub_80835D8 + def_special ScrSpecial_HealPlayerParty + def_special SetCableClubWarp + def_special DoCableClubWarp + def_special sub_80810DC + def_special sub_80839A4 + def_special sub_80839D0 + def_special sub_80BB8CC + def_special sub_80BB63C + def_special sub_80BBAF0 + def_special sub_80BC440 + def_special SecretBasePC_PackUp + def_special sub_80BC114 + def_special sub_80BC56C + def_special sub_80BC5BC + def_special SecretBasePC_Decoration + def_special SecretBasePC_Registry + def_special sub_80BCE1C + def_special sub_80BCE90 + def_special sub_80BBDD0 + def_special sub_80FF474 + def_special sub_8100B20 + def_special sub_80BB70C + def_special sub_80BBFA4 + def_special sub_8100A7C + def_special sub_80BBC78 + def_special sub_80BCE4C + def_special sub_80C683C + def_special sub_80B929C + def_special sub_808347C + def_special sub_80834E4 + def_special sub_808350C + def_special CloseLink + def_special sub_8083B90 + def_special sub_8083B5C + def_special sub_8083B80 + def_special sub_8083820 + def_special sub_8083614 + def_special GetLinkPartnerNames + def_special SpawnBerryBlenderLinkPlayerSprites + def_special SavePlayerParty + def_special LoadPlayerParty + def_special sub_80C5568 + def_special sub_8083BDC + def_special FieldObjectInteractionGetBerryTreeData + def_special sub_80B4EE4 + def_special FieldObjectInteractionPlantBerryTree + def_special FieldObjectInteractionPickBerryTree + def_special FieldObjectInteractionRemoveBerryTree + def_special FieldObjectInteractionWaterBerryTree + def_special PlayerHasBerries + def_special IsEnigmaBerryValid + def_special ScrSpecial_GetTrainerBattleMode + def_special ScrSpecial_ShowTrainerIntroSpeech + def_special ScrSpecial_ShowTrainerNonBattlingSpeech + def_special ScrSpecial_HasTrainerBeenFought + def_special ScrSpecial_EndTrainerApproach + def_special PlayTrainerEncounterMusic + def_special sub_8082C68 + def_special ScrSpecial_GetTrainerEyeRematchFlag + def_special ScrSpecial_StartTrainerEyeRematch + def_special ShowPokemonStorageSystem + def_special CheckForAlivePartyMons + def_special TurnOffTVScreen + def_special DoTVShow + def_special sub_80BECE8 + def_special special_0x44 + def_special sub_80BDA0C + def_special sub_80BF2C4 + def_special sub_80BDE48 + def_special sub_80BF544 + def_special SetContestCategoryStringVarForInterview + def_special special_0x4a + def_special sub_80BF974 + def_special CheckForBigMovieOrEmergencyNewsOnTV + def_special GetMomOrDadStringForTVMessage + def_special sub_80C2014 + def_special sub_80C47C0 + def_special sub_80C496C + def_special sub_80C4C28 + def_special sub_80C47F0 + def_special sub_80C4858 + def_special sub_80C4C64 + def_special sub_80C4758 + def_special sub_80C4BF0 + def_special sub_80C43F4 + def_special sub_80C4D80 + def_special sub_80C4F70 + def_special sub_80C47A0 + def_special sub_80C4440 + def_special sub_80C44C0 + def_special sub_80C5044 + def_special GiveMonArtistRibbon + def_special sub_808363C + def_special ScrSpecial_DoSaveDialog + def_special DoWateringBerryTreeAnim + def_special sub_80E60D8 + def_special sub_80EB7C4 + def_special ScrSpecial_GetCurrentMauvilleMan + def_special ScrSpecial_HasBardSongBeenChanged + def_special ScrSpecial_SaveBardSongLyrics + def_special ScrSpecial_GetHipsterSpokenFlag + def_special ScrSpecial_SetHipsterSpokenFlag + def_special ScrSpecial_HipsterTeachWord + def_special ScrSpecial_PlayBardSong + def_special sub_80F83D0 + def_special ScrSpecial_GenerateGiddyLine + def_special ScrSpecial_GiddyShouldTellAnotherTale + def_special ScrSpecial_StorytellerGetFreeStorySlot + def_special ScrSpecial_StorytellerDisplayStory + def_special ScrSpecial_StorytellerStoryListMenu + def_special ScrSpecial_StorytellerUpdateStat + def_special ScrSpecial_StorytellerInitializeRandomStat + def_special ScrSpecial_HasStorytellerAlreadyRecorded + def_special ScrSpecial_TraderMenuGetDecoration + def_special ScrSpecial_GetTraderTradedFlag + def_special ScrSpecial_DoesPlayerHaveNoDecorations + def_special ScrSpecial_IsDecorationFull + def_special ScrSpecial_TraderMenuGiveDecoration + def_special ScrSpecial_TraderDoDecorationTrade + def_special GetShroomishSizeRecordInfo + def_special CompareShroomishSize + def_special GetBarboachSizeRecordInfo + def_special CompareBarboachSize + def_special sub_80BF9B4 + def_special sub_80BFAE0 + def_special sub_80BFB10 + def_special sub_80FA5BC + def_special sub_80FA5E4 + def_special sub_80EB83C + def_special sub_80FA648 + def_special SwapRegisteredBike + def_special CalculatePlayerPartyCount + def_special sub_8095B6C + def_special sub_8095C10 + def_special sub_80C4CF8 + def_special sub_80C4CEC + def_special sub_80C4C78 + def_special sub_80C4D50 + def_special ShowContestWinner + def_special MauvilleGymSpecial2 + def_special MauvilleGymSpecial1 + def_special ShowFieldMessageStringVar4 + def_special DrawWholeMapView + def_special StorePlayerCoordsInVars + def_special MauvilleGymSpecial3 + def_special PetalburgGymSpecial1 + def_special PetalburgGymSpecial2 + def_special GetPlayerTrainerIdOnesDigit + def_special GetPlayerBigGuyGirlString + def_special GetRivalSonDaughterString + def_special SetFlagInVar + def_special CableCarWarp + def_special sub_8123218 + def_special Overworld_PlaySpecialMapMusic + def_special StartWallClock + def_special ScrSpecial_ViewWallClock + def_special ScrSpecial_ChooseStarter + def_special ScrSpecial_StartWallyTutorialBattle + def_special sub_80BF9F8 + def_special sub_80F9A0C + def_special sub_810CA00 + def_special sub_804E538 + def_special PlayRoulette + def_special sub_810FD60 + def_special sub_810FCB0 + def_special sub_810FDAC + def_special sub_810FA74 + def_special sub_810FCE8 + def_special sub_810FF48 + def_special sub_810FAA0 + def_special sub_810FF60 + def_special ScrSpecial_RockSmashWildEncounter + def_special GabbyAndTyGetBattleNum + def_special sub_80BDC14 + def_special GabbyAndTyBeforeInterview + def_special DoTVShowInSearchOfTrainers + def_special IsTVShowInSearchOfTrainersAiring + def_special GabbyAndTyGetLastQuote + def_special sub_80BDD18 + def_special GabbyAndTySetScriptVarsToFieldObjectLocalIds + def_special sub_810E300 + def_special sp0B5_daycare + def_special sp0B6_daycare + def_special sub_8041E7C + def_special sp0B8_daycare + def_special sp0B9_daycare_relationship_comment + def_special sub_8042328 + def_special Daycare_SendPokemon_Special + def_special ChooseSendDaycareMon + def_special ShowDaycareLevelMenu + def_special sub_80417B8 + def_special sub_8041770 + def_special sub_8041648 + def_special ScriptHatchMon + def_special EggHatch + def_special sub_8042B4C + def_special ShowLinkBattleRecords + def_special sub_80B7CE8 + def_special sub_80B7D0C + def_special ExecuteWhiteOut + def_special sp0C8_whiteout_maybe + def_special RotatingGate_InitPuzzle + def_special RotatingGate_InitPuzzleAndGraphics + def_special SetSSTidalFlag + def_special ResetSSTidalFlag + def_special EnterSafariMode + def_special ExitSafariMode + def_special SafariZoneGetPokeblockNameInFeeder + def_special sub_810BAF4 + def_special IsMirageIslandPresent + def_special UpdateShoalTideFlag + def_special InitBirchState + def_special ScriptGetPokedexInfo + def_special ShowPokedexRatingMessage + def_special DoPCTurnOnEffect + def_special DoPCTurnOffEffect + def_special SetDepartmentStoreFloorVar + def_special DoLotteryCornerComputerEffect + def_special EndLotteryCornerComputerEffect + def_special sub_80F9A4C + def_special sub_80F9EEC + def_special sub_80FA0DC + def_special ScrSpecial_GetPokemonNicknameAndMoveName + def_special ScrSpecial_CountPokemonMoves + def_special sub_8132670 + def_special GetRecordedCyclingRoadResults + def_special ScrSpecial_BeginCyclingRoadChallenge + def_special GetPlayerAvatarBike + def_special FinishCyclingRoadChallenge + def_special UpdateCyclingRoadState + def_special GetLeadMonFriendshipScore + def_special sub_8134548 + def_special sub_81347F8 + def_special CheckPartyBattleTowerBanlist + def_special sub_8135474 + def_special sub_81360C0 + def_special sub_813556C + def_special sub_8135668 + def_special sub_81358A4 + def_special sub_8135A14 + def_special sub_8135BA0 + def_special sub_8135C38 + def_special sub_8135D84 + def_special sub_8135DEC + def_special sub_8135E50 + def_special ChooseBattleTowerPlayerParty + def_special sub_813601C + def_special sub_810F404 + def_special ReducePlayerPartyToThree + def_special BedroomPC + def_special PlayerPC + def_special FieldShowRegionMap + def_special sub_804D89C + def_special sub_804DB68 + def_special sub_804E174 + def_special sub_804DB2C + def_special GetWeekCount + def_special RetrieveLotteryNumber + def_special PickLotteryCornerTicket + def_special ShowBerryBlenderRecordWindow + def_special ResetTrickHouseEndRoomFlag + def_special SetTrickHouseEndRoomFlag + def_special ScrSpecial_CreatePCMenu + def_special AccessHallOfFamePC + def_special ScrSpecial_ShowDiploma + def_special CheckLeadMonCool + def_special CheckLeadMonBeauty + def_special CheckLeadMonCute + def_special CheckLeadMonSmart + def_special CheckLeadMonTough + def_special sub_80C7958 + def_special DoSoftReset + def_special GameClear + def_special sub_810EBEC + def_special ShowGlassWorkshopMenu + def_special SpawnCameraDummy + def_special RemoveCameraDummy + def_special GetPokeblockNameByMonNature + def_special GetSecretBaseNearbyMapName + def_special CheckRelicanthWailord + def_special DoBrailleWait + def_special sub_80818A4 + def_special sub_80818FC + def_special ShowBattleTowerRecords + def_special WaitWeather + def_special sub_810F414 + def_special sub_810F424 + def_special player_get_direction_lower_nybble + def_special sub_810F488 + def_special sub_810F4B0 + def_special sub_810F4D4 + def_special sub_810F4FC + def_special LeadMonHasEffortRibbon + def_special GivLeadMonEffortRibbon + def_special ScrSpecial_AreLeadMonEVsMaxedOut + def_special sub_8064EAC + def_special sub_8064ED4 + def_special InitRoamer + def_special sub_810F5BC + def_special IsGrassTypeInParty + def_special sub_8081334 + def_special PutZigzagoonInPlayerParty + def_special IsStarterInParty + def_special sub_80BC224 + def_special CheckFreePokemonStorageSpace + def_special DoSealedChamberShakingEffect1 + def_special sub_810E944 + def_special GetShieldToyTVDecorationInfo + def_special IsPokerusInParty + def_special sub_8069D78 + def_special sub_810F758 + def_special ScrSpecial_StartGroudonKyogreBattle + def_special ScrSpecial_StartRayquazaBattle + def_special ScrSpecial_StartRegiBattle + def_special sub_8082524 + def_special DoSealedChamberShakingEffect2 + def_special sub_810F828 + def_special sub_807E25C + def_special sp13E_warp_to_last_warp + def_special sp13F_fall_to_last_warp + def_special ShowContestEntryMonPic + def_special sub_80C5164 + def_special sub_8134AB4 + def_special ScrSpecial_StartSouthernIslandBattle + def_special SetRoute119Weather + def_special SetRoute123Weather + def_special ScriptGetMultiplayerId + def_special ScriptGetPartyMonSpecies + def_special sub_80FA148 + def_special sub_810F8FC + def_special sub_80BC50C + def_special LoadPlayerBag + def_special sub_8081924 + def_special sub_810F950 + def_special sub_810F908 + def_special sub_8090FC0 + def_special sub_810F96C + def_special sub_810F9AC + def_special sub_813610C + def_special GetNameOfEnigmaBerryInPlayerParty + def_special ScriptRandom + def_special sub_80835D8 .ifdef GERMAN - .4byte nullsub_814B200 + def_special nullsub_814B200 .endif diff --git a/data/task.s b/data/task.s deleted file mode 100644 index e87c5b1fc..000000000 --- a/data/task.s +++ /dev/null @@ -1,7 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - - .string "TASK OVER\n" - .string "タスクがオーバーしました$" diff --git a/data/text/bard.inc b/data/text/bard.inc index edf4942f6..bd22c97a3 100644 --- a/data/text/bard.inc +++ b/data/text/bard.inc @@ -1,19 +1,19 @@ -UnknownString_81B0A83: @ 81B0A83 +gTextBard_BardTesting: @ 81B0A83 .string "BARD testing!$" -MauvilleCity_PokemonCenter_1F_Text_1B0A91:: @ 81B0A91 +gTextBard_HiImTheBard:: @ 81B0A91 .string "Hi, I’m the BARD.\n" .string "Would you like to hear my song?$" -MauvilleCity_PokemonCenter_1F_Text_1B0AC3:: @ 81B0AC3 +gTextBard_OhYouveLeftMe:: @ 81B0AC3 .string "Oh...\n" .string "You’ve left me feeling the blues...$" -MauvilleCity_PokemonCenter_1F_Text_1B0AED:: @ 81B0AED +gTextBard_OhWhatAMovingSong:: @ 81B0AED .string "Oh, what a moving song...\n" .string "I wish I could play it for others...$" -MauvilleCity_PokemonCenter_1F_Text_1B0B2C:: @ 81B0B2C +gTextBard_SoHowDoYouLikeMySong:: @ 81B0B2C .string "So?\n" .string "How do you like my song?\p" .string "But I’m none too happy about the\n" @@ -21,18 +21,18 @@ MauvilleCity_PokemonCenter_1F_Text_1B0B2C:: @ 81B0B2C .string "How would you like to write some new\n" .string "lyrics for me?$" -MauvilleCity_PokemonCenter_1F_Text_1B0BA6:: @ 81B0BA6 +gTextBard_OhYouveLeftMe2:: @ 81B0BA6 .string "Oh...\n" .string "You’ve left me feeling the blues...$" -MauvilleCity_PokemonCenter_1F_Text_1B0BD0:: @ 81B0BD0 +gTextBard_ThankYouKindly:: @ 81B0BD0 .string "Thank you kindly!\n" .string "Let me sing it for you.$" -MauvilleCity_PokemonCenter_1F_Text_1B0BFA:: @ 81B0BFA +gTextBard_WasThatHowYouWanted:: @ 81B0BFA .string "Was that how you wanted your song\n" .string "to go?$" -MauvilleCity_PokemonCenter_1F_Text_1B0C23:: @ 81B0C23 +gTextBard_OkayThatsIt:: @ 81B0C23 .string "Okay! That’s it, then.\n" .string "I’ll sing this song for a while.$" diff --git a/data/text/giddy.inc b/data/text/giddy.inc index 040ef2ae5..a763776bf 100644 --- a/data/text/giddy.inc +++ b/data/text/giddy.inc @@ -1,16 +1,16 @@ -MauvilleCity_PokemonCenter_1F_Text_1B092A:: @ 81B092A +gTextGiddy_Introduction:: @ 81B092A .string "I’m GIDDY!\n" .string "I have a scintillating story for you!\p" .string "Would you like to hear my story?$" -MauvilleCity_PokemonCenter_1F_Text_1B097C:: @ 81B097C +gTextGiddy_YouveDeflatedMe:: @ 81B097C .string "Oh...\n" .string "You’ve deflated me...$" -MauvilleCity_PokemonCenter_1F_Text_1B0998:: @ 81B0998 +gTextGiddy_AlsoIWasThinking:: @ 81B0998 .string "Also, I was thinking...$" -MauvilleCity_PokemonCenter_1F_Text_1B09B0:: @ 81B09B0 +gTextGiddy_ByeBye:: @ 81B09B0 .string "That’s about it, I think...\p" .string "We should chat again!\n" .string "Bye-bye!$" diff --git a/data/text/hipster.inc b/data/text/hipster.inc index a30943d3a..630db02b2 100644 --- a/data/text/hipster.inc +++ b/data/text/hipster.inc @@ -1,19 +1,19 @@ -MauvilleCity_PokemonCenter_1F_Text_1B0C5B:: @ 81B0C5B +gTextHipster_TheyCallMeTheHipster:: @ 81B0C5B .string "Hey, yo! They call me the HIPSTER.\n" .string "I’ll teach you what’s hip and happening.$" -MauvilleCity_PokemonCenter_1F_Text_1B0CA7:: @ 81B0CA7 +gTextHipster_TaughtYouAlready:: @ 81B0CA7 .string "But, hey, I taught you what’s hip and\n" .string "happening already.\p" .string "I’d like to spread the good word to\n" .string "other folks.$" -MauvilleCity_PokemonCenter_1F_Text_1B0D11:: @ 81B0D11 +gTextHipster_YouAlreadyKnowALot:: @ 81B0D11 .string "But, hey, you already know a lot about\n" .string "what’s hip and happening.\p" .string "I’ve got nothing new to teach you!$" -MauvilleCity_PokemonCenter_1F_Text_1B0D75:: @ 81B0D75 +gTextHipster_HaveYouHeardAbout:: @ 81B0D75 .string "Hey, have you heard about\n" .string "“{STR_VAR_1}”?\p" .string "What’s it mean? Well...\n" diff --git a/data/text/item_descriptions.inc b/data/text/item_descriptions.inc deleted file mode 100644 index 6fda439b0..000000000 --- a/data/text/item_descriptions.inc +++ /dev/null @@ -1,1393 +0,0 @@ -gItemDescription_MasterBall: @ 83C2028 - .string "The best BALL that\n" - .string "catches a POKéMON\n" - .string "without fail.$" - -gItemDescription_UltraBall: @ 83C205B - .string "A better BALL with\n" - .string "a higher catch rate\n" - .string "than a GREAT BALL.$" - -gItemDescription_GreatBall: @ 83C2095 - .string "A good BALL with a\n" - .string "higher catch rate\n" - .string "than a POKé BALL.$" - -gItemDescription_PokeBall: @ 83C20CC - .string "A tool used for\n" - .string "catching wild\n" - .string "POKéMON.$" - -gItemDescription_SafariBall: @ 83C20F3 - .string "A special BALL that\n" - .string "is used only in the\n" - .string "SAFARI ZONE.$" - -gItemDescription_NetBall: @ 83C2128 - .string "A BALL that works\n" - .string "well on WATER- and\n" - .string "BUG-type POKéMON.$" - -gItemDescription_DiveBall: @ 83C215F - .string "A BALL that works\n" - .string "better on POKéMON\n" - .string "on the ocean floor.$" - -gItemDescription_NestBall: @ 83C2197 - .string "A BALL that works\n" - .string "better on weaker\n" - .string "POKéMON.$" - -gItemDescription_RepeatBall: @ 83C21C3 - .string "A BALL that works\n" - .string "better on POKéMON\n" - .string "caught before.$" - -gItemDescription_TimerBall: @ 83C21F6 - .string "More effective as\n" - .string "more turns are\n" - .string "taken in battle.$" - -gItemDescription_LuxuryBall: @ 83C2228 - .string "A cozy BALL that\n" - .string "makes POKéMON\n" - .string "more friendly.$" - -gItemDescription_PremierBall: @ 83C2256 - .string "A rare BALL made\n" - .string "in commemoration\n" - .string "of some event.$" - -gItemDescription_Potion: @ 83C2287 - .string "Restores the HP of\n" - .string "a POKéMON by\n" - .string "20 points.$" - -gItemDescription_Antidote: @ 83C22B2 - .string "Heals a poisoned\n" - .string "POKéMON.$" - -gItemDescription_BurnHeal: @ 83C22CC - .string "Heals POKéMON\n" - .string "of a burn.$" - -gItemDescription_IceHeal: @ 83C22E5 - .string "Defrosts a frozen\n" - .string "POKéMON.$" - -gItemDescription_Awakening: @ 83C2300 - .string "Awakens a sleeping\n" - .string "POKéMON.$" - -gItemDescription_ParalyzeHeal: @ 83C231C - .string "Heals a paralyzed\n" - .string "POKéMON.$" - -gItemDescription_FullRestore: @ 83C2337 - .string "Fully restores the\n" - .string "HP and status of a\n" - .string "POKéMON.$" - -gItemDescription_MaxPotion: @ 83C2366 - .string "Fully restores the\n" - .string "HP of a POKéMON.$" - -gItemDescription_HyperPotion: @ 83C238A - .string "Restores the HP of\n" - .string "a POKéMON by\n" - .string "200 points.$" - -gItemDescription_SuperPotion: @ 83C23B6 - .string "Restores the HP of\n" - .string "a POKéMON by\n" - .string "50 points.$" - -gItemDescription_FullHeal: @ 83C23E1 - .string "Heals all the status\n" - .string "problems of one\n" - .string "POKéMON.$" - -gItemDescription_Revive: @ 83C240F - .string "Revives a fainted\n" - .string "POKéMON with half\n" - .string "its HP.$" - -gItemDescription_MaxRevive: @ 83C243B - .string "Revives a fainted\n" - .string "POKéMON with all\n" - .string "its HP.$" - -gItemDescription_FreshWater: @ 83C2466 - .string "A mineral water\n" - .string "that restores HP\n" - .string "by 50 points.$" - -gItemDescription_SodaPop: @ 83C2495 - .string "A fizzy soda drink\n" - .string "that restores HP\n" - .string "by 60 points.$" - -gItemDescription_Lemonade: @ 83C24C7 - .string "A very sweet drink\n" - .string "that restores HP\n" - .string "by 80 points.$" - -gItemDescription_MoomooMilk: @ 83C24F9 - .string "A nutritious milk\n" - .string "that restores HP\n" - .string "by 100 points.$" - -gItemDescription_EnergyPowder: @ 83C252B - .string "A bitter powder\n" - .string "that restores HP\n" - .string "by 50 points.$" - -gItemDescription_EnergyRoot: @ 83C255A - .string "A bitter root\n" - .string "that restores HP\n" - .string "by 200 points.$" - -gItemDescription_HealPowder: @ 83C2588 - .string "A bitter powder\n" - .string "that heals all\n" - .string "status problems.$" - -gItemDescription_RevivalHerb: @ 83C25B8 - .string "A very bitter herb\n" - .string "that revives a\n" - .string "fainted POKéMON.$" - -gItemDescription_Ether: @ 83C25EB - .string "Restores the PP\n" - .string "of a selected move\n" - .string "by 10.$" - -gItemDescription_MaxEther: @ 83C2615 - .string "Fully restores the\n" - .string "PP of a selected\n" - .string "move.$" - -gItemDescription_Elixir: @ 83C263F - .string "Restores the PP\n" - .string "of all moves by 10.$" - -gItemDescription_MaxElixir: @ 83C2663 - .string "Fully restores the\n" - .string "PP of a POKéMON’s\n" - .string "moves.$" - -gItemDescription_LavaCookie: @ 83C268F - .string "A local specialty\n" - .string "that heals all\n" - .string "status problems.$" - -gItemDescription_BlueFlute: @ 83C26C1 - .string "A glass flute that\n" - .string "awakens sleeping\n" - .string "POKéMON.$" - -gItemDescription_YellowFlute: @ 83C26EE - .string "A glass flute that\n" - .string "snaps POKéMON\n" - .string "out of confusion.$" - -gItemDescription_RedFlute: @ 83C2721 - .string "A glass flute that\n" - .string "snaps POKéMON\n" - .string "out of attraction.$" - -gItemDescription_BlackFlute: @ 83C2755 - .string "A glass flute that\n" - .string "keeps away wild\n" - .string "POKéMON.$" - -gItemDescription_WhiteFlute: @ 83C2781 - .string "A glass flute that\n" - .string "lures wild POKéMON.$" - -gItemDescription_BerryJuice: @ 83C27A8 - .string "A 100% pure juice\n" - .string "that restores HP\n" - .string "by 20 points.$" - -gItemDescription_SacredAsh: @ 83C27D9 - .string "Fully revives and\n" - .string "restores all\n" - .string "fainted POKéMON.$" - -gItemDescription_ShoalSalt: @ 83C2809 - .string "Salt obtained from\n" - .string "deep inside the\n" - .string "SHOAL CAVE.$" - -gItemDescription_ShoalShell: @ 83C2838 - .string "A seashell found\n" - .string "deep inside the\n" - .string "SHOAL CAVE.$" - -gItemDescription_RedShard: @ 83C2865 - .string "A shard from an\n" - .string "ancient item.\n" - .string "Can be sold cheaply.$" - -gItemDescription_BlueShard: @ 83C2898 - .string "A shard from an\n" - .string "ancient item.\n" - .string "Can be sold cheaply.$" - -gItemDescription_YellowShard: @ 83C28CB - .string "A shard from an\n" - .string "ancient item.\n" - .string "Can be sold cheaply.$" - -gItemDescription_GreenShard: @ 83C28FE - .string "A shard from an\n" - .string "ancient item.\n" - .string "Can be sold cheaply.$" - -gItemDescription_HPUp: @ 83C2931 - .string "Raises the HP of\n" - .string "one POKéMON.$" - -gItemDescription_Protein: @ 83C294F - .string "Raises the stat\n" - .string "ATTACK of one\n" - .string "POKéMON.$" - -gItemDescription_Iron: @ 83C2976 - .string "Raises the stat\n" - .string "DEFENSE of one\n" - .string "POKéMON.$" - -gItemDescription_Carbos: @ 83C299E - .string "Raises the stat\n" - .string "SPEED of one\n" - .string "POKéMON.$" - -gItemDescription_Calcium: @ 83C29C4 - .string "Raises the stat\n" - .string "SP. ATK of one\n" - .string "POKéMON.$" - -gItemDescription_RareCandy: @ 83C29EC - .string "Raises the level\n" - .string "of a POKéMON by\n" - .string "one.$" - -gItemDescription_PPUp: @ 83C2A12 - .string "Raises the maximum\n" - .string "PP of a selected\n" - .string "move.$" - -gItemDescription_Zinc: @ 83C2A3C - .string "Raises the stat\n" - .string "SP. DEF of one\n" - .string "POKéMON.$" - -gItemDescription_PPMax: @ 83C2A64 - .string "Raises the PP of a\n" - .string "move to its maximum\n" - .string "points.$" - -gItemDescription_GuardSpec: @ 83C2A93 - .string "Prevents stat\n" - .string "reduction when\n" - .string "used in battle.$" - -gItemDescription_DireHit: @ 83C2AC0 - .string "Raises the\n" - .string "critical-hit ratio\n" - .string "during one battle.$" - -gItemDescription_XAttack: @ 83C2AF1 - .string "Raises the stat\n" - .string "ATTACK during one\n" - .string "battle.$" - -gItemDescription_XDefend: @ 83C2B1B - .string "Raises the stat\n" - .string "DEFENSE during one\n" - .string "battle.$" - -gItemDescription_XSpeed: @ 83C2B46 - .string "Raises the stat\n" - .string "SPEED during one\n" - .string "battle.$" - -gItemDescription_XAccuracy: @ 83C2B6F - .string "Raises accuracy\n" - .string "of attack moves\n" - .string "during one battle.$" - -gItemDescription_XSpecial: @ 83C2BA2 - .string "Raises the stat\n" - .string "SP. ATK during one\n" - .string "battle.$" - -gItemDescription_PokeDoll: @ 83C2BCD - .string "Use to flee from\n" - .string "any battle with\n" - .string "a wild POKéMON.$" - -gItemDescription_FluffyTail: @ 83C2BFE - .string "Use to flee from\n" - .string "any battle with\n" - .string "a wild POKéMON.$" - -gItemDescription_SuperRepel: @ 83C2C2F - .string "Repels weak wild\n" - .string "POKéMON for 200\n" - .string "steps.$" - -gItemDescription_MaxRepel: @ 83C2C57 - .string "Repels weak wild\n" - .string "POKéMON for 250\n" - .string "steps.$" - -gItemDescription_EscapeRope: @ 83C2C7F - .string "Use to escape\n" - .string "instantly from a\n" - .string "cave or a dungeon.$" - -gItemDescription_Repel: @ 83C2CB1 - .string "Repels weak wild\n" - .string "POKéMON for 100\n" - .string "steps.$" - -gItemDescription_SunStone: @ 83C2CD9 - .string "Makes certain\n" - .string "species of POKéMON\n" - .string "evolve.$" - -gItemDescription_MoonStone: @ 83C2D02 - .string "Makes certain\n" - .string "species of POKéMON\n" - .string "evolve.$" - -gItemDescription_FireStone: @ 83C2D2B - .string "Makes certain\n" - .string "species of POKéMON\n" - .string "evolve.$" - -gItemDescription_ThunderStone: @ 83C2D54 - .string "Makes certain\n" - .string "species of POKéMON\n" - .string "evolve.$" - -gItemDescription_WaterStone: @ 83C2D7D - .string "Makes certain\n" - .string "species of POKéMON\n" - .string "evolve.$" - -gItemDescription_LeafStone: @ 83C2DA6 - .string "Makes certain\n" - .string "species of POKéMON\n" - .string "evolve.$" - -gItemDescription_TinyMushroom: @ 83C2DCF - .string "A plain, ordinary\n" - .string "mushroom.\n" - .string "Can be sold cheaply.$" - -gItemDescription_BigMushroom: @ 83C2E00 - .string "A rare mushroom\n" - .string "that would sell at a\n" - .string "high price.$" - -gItemDescription_Pearl: @ 83C2E31 - .string "A pretty pearl.\n" - .string "Can be sold cheaply.$" - -gItemDescription_BigPearl: @ 83C2E56 - .string "A lovely large pearl\n" - .string "that would sell at a\n" - .string "high price.$" - -gItemDescription_Stardust: @ 83C2E8C - .string "Beautiful red sand.\n" - .string "Can be sold at a\n" - .string "high price.$" - -gItemDescription_StarPiece: @ 83C2EBD - .string "A red gem shard.\n" - .string "It would sell for a\n" - .string "very high price.$" - -gItemDescription_Nugget: @ 83C2EF3 - .string "A nugget of pure\n" - .string "gold. Can be sold at\n" - .string "a high price.$" - -gItemDescription_HeartScale: @ 83C2F27 - .string "A lovely scale.\n" - .string "It is coveted by\n" - .string "collectors.$" - -gItemDescription_OrangeMail: @ 83C2F54 - .string "A ZIGZAGOON-print\n" - .string "MAIL to be held by\n" - .string "a POKéMON.$" - -gItemDescription_HarborMail: @ 83C2F84 - .string "A WINGULL-print\n" - .string "MAIL to be held by\n" - .string "a POKéMON.$" - -gItemDescription_GlitterMail: @ 83C2FB2 - .string "A PIKACHU-print\n" - .string "MAIL to be held by\n" - .string "a POKéMON.$" - -gItemDescription_MechMail: @ 83C2FE0 - .string "A MAGNEMITE-print\n" - .string "MAIL to be held by\n" - .string "a POKéMON.$" - -gItemDescription_WoodMail: @ 83C3010 - .string "A SLAKOTH-print\n" - .string "MAIL to be held by\n" - .string "a POKéMON.$" - -gItemDescription_WaveMail: @ 83C303E - .string "A WAILMER-print\n" - .string "MAIL to be held by\n" - .string "a POKéMON.$" - -gItemDescription_BeadMail: @ 83C306C - .string "MAIL featuring a\n" - .string "sketch of the\n" - .string "holding POKéMON.$" - -gItemDescription_ShadowMail: @ 83C309C - .string "A DUSKULL-print\n" - .string "MAIL to be held by\n" - .string "a POKéMON.$" - -gItemDescription_TropicMail: @ 83C30CA - .string "A BELLOSSOM-print\n" - .string "MAIL to be held by\n" - .string "a POKéMON.$" - -gItemDescription_DreamMail: @ 83C30FA - .string "MAIL featuring a\n" - .string "sketch of the\n" - .string "holding POKéMON.$" - -gItemDescription_FabMail: @ 83C312A - .string "A gorgeous-print\n" - .string "MAIL to be held\n" - .string "by a POKéMON.$" - -gItemDescription_RetroMail: @ 83C3159 - .string "MAIL featuring the\n" - .string "drawings of three\n" - .string "POKéMON.$" - -gItemDescription_CheriBerry: @ 83C3187 - .string "A hold item that\n" - .string "heals paralysis\n" - .string "in battle.$" - -gItemDescription_ChestoBerry: @ 83C31B3 - .string "A hold item that\n" - .string "awakens POKéMON\n" - .string "in battle.$" - -gItemDescription_PechaBerry: @ 83C31DF - .string "A hold item that\n" - .string "heals poisoning\n" - .string "in battle.$" - -gItemDescription_RawstBerry: @ 83C320B - .string "A hold item that\n" - .string "heals a burn in\n" - .string "battle.$" - -gItemDescription_AspearBerry: @ 83C3234 - .string "A hold item that\n" - .string "defrosts POKéMON\n" - .string "in battle.$" - -gItemDescription_LeppaBerry: @ 83C3261 - .string "A hold item that\n" - .string "restores 10 PP in\n" - .string "battle.$" - -gItemDescription_OranBerry: @ 83C328C - .string "A hold item that\n" - .string "restores 10 HP in\n" - .string "battle.$" - -gItemDescription_PersimBerry: @ 83C32B7 - .string "A hold item that\n" - .string "heals confusion\n" - .string "in battle.$" - -gItemDescription_LumBerry: @ 83C32E3 - .string "A hold item that\n" - .string "heals status in\n" - .string "battle.$" - -gItemDescription_SitrusBerry: @ 83C330C - .string "A hold item that\n" - .string "restores 30 HP in\n" - .string "battle.$" - -gItemDescription_FigyBerry: @ 83C3337 - .string "A hold item that\n" - .string "restores HP but\n" - .string "may confuse.$" - -gItemDescription_WikiBerry: @ 83C3365 - .string "A hold item that\n" - .string "restores HP but\n" - .string "may confuse.$" - -gItemDescription_MagoBerry: @ 83C3393 - .string "A hold item that\n" - .string "restores HP but\n" - .string "may confuse.$" - -gItemDescription_AguavBerry: @ 83C33C1 - .string "A hold item that\n" - .string "restores HP but\n" - .string "may confuse.$" - -gItemDescription_IapapaBerry: @ 83C33EF - .string "A hold item that\n" - .string "restores HP but\n" - .string "may confuse.$" - -gItemDescription_RazzBerry: @ 83C341D - .string "{POKEBLOCK} ingredient.\n" - .string "Plant in loamy soil\n" - .string "to grow RAZZ.$" - -gItemDescription_BlukBerry: @ 83C3451 - .string "{POKEBLOCK} ingredient.\n" - .string "Plant in loamy soil\n" - .string "to grow BLUK.$" - -gItemDescription_NanabBerry: @ 83C3485 - .string "{POKEBLOCK} ingredient.\n" - .string "Plant in loamy soil\n" - .string "to grow NANAB.$" - -gItemDescription_WepearBerry: @ 83C34BA - .string "{POKEBLOCK} ingredient.\n" - .string "Plant in loamy soil\n" - .string "to grow WEPEAR.$" - -gItemDescription_PinapBerry: @ 83C34F0 - .string "{POKEBLOCK} ingredient.\n" - .string "Plant in loamy soil\n" - .string "to grow PINAP.$" - -gItemDescription_PomegBerry: @ 83C3525 - .string "{POKEBLOCK} ingredient.\n" - .string "Plant in loamy soil\n" - .string "to grow POMEG.$" - -gItemDescription_KelpsyBerry: @ 83C355A - .string "{POKEBLOCK} ingredient.\n" - .string "Plant in loamy soil\n" - .string "to grow KELPSY.$" - -gItemDescription_QualotBerry: @ 83C3590 - .string "{POKEBLOCK} ingredient.\n" - .string "Plant in loamy soil\n" - .string "to grow QUALOT.$" - -gItemDescription_HondewBerry: @ 83C35C6 - .string "{POKEBLOCK} ingredient.\n" - .string "Plant in loamy soil\n" - .string "to grow HONDEW.$" - -gItemDescription_GrepaBerry: @ 83C35FC - .string "{POKEBLOCK} ingredient.\n" - .string "Plant in loamy soil\n" - .string "to grow GREPA.$" - -gItemDescription_TamatoBerry: @ 83C3631 - .string "{POKEBLOCK} ingredient.\n" - .string "Plant in loamy soil\n" - .string "to grow TAMATO.$" - -gItemDescription_CornnBerry: @ 83C3667 - .string "{POKEBLOCK} ingredient.\n" - .string "Plant in loamy soil\n" - .string "to grow CORNN.$" - -gItemDescription_MagostBerry: @ 83C369C - .string "{POKEBLOCK} ingredient.\n" - .string "Plant in loamy soil\n" - .string "to grow MAGOST.$" - -gItemDescription_RabutaBerry: @ 83C36D2 - .string "{POKEBLOCK} ingredient.\n" - .string "Plant in loamy soil\n" - .string "to grow RABUTA.$" - -gItemDescription_NomelBerry: @ 83C3708 - .string "{POKEBLOCK} ingredient.\n" - .string "Plant in loamy soil\n" - .string "to grow NOMEL.$" - -gItemDescription_SpelonBerry: @ 83C373D - .string "{POKEBLOCK} ingredient.\n" - .string "Plant in loamy soil\n" - .string "to grow SPELON.$" - -gItemDescription_PamtreBerry: @ 83C3773 - .string "{POKEBLOCK} ingredient.\n" - .string "Plant in loamy soil\n" - .string "to grow PAMTRE.$" - -gItemDescription_WatmelBerry: @ 83C37A9 - .string "{POKEBLOCK} ingredient.\n" - .string "Plant in loamy soil\n" - .string "to grow WATMEL.$" - -gItemDescription_DurinBerry: @ 83C37DF - .string "{POKEBLOCK} ingredient.\n" - .string "Plant in loamy soil\n" - .string "to grow DURIN.$" - -gItemDescription_BelueBerry: @ 83C3814 - .string "{POKEBLOCK} ingredient.\n" - .string "Plant in loamy soil\n" - .string "to grow BELUE.$" - -gItemDescription_LiechiBerry: @ 83C3849 - .string "A hold item that\n" - .string "raises ATTACK in\n" - .string "a pinch.$" - -gItemDescription_GanlonBerry: @ 83C3874 - .string "A hold item that\n" - .string "raises DEFENSE in\n" - .string "a pinch.$" - -gItemDescription_SalacBerry: @ 83C38A0 - .string "A hold item that\n" - .string "raises SPEED in\n" - .string "a pinch.$" - -gItemDescription_PetayaBerry: @ 83C38CA - .string "A hold item that\n" - .string "raises SP. ATK in\n" - .string "a pinch.$" - -gItemDescription_ApicotBerry: @ 83C38F6 - .string "A hold item that\n" - .string "raises SP. DEF in\n" - .string "a pinch.$" - -gItemDescription_LansatBerry: @ 83C3922 - .string "A hold item that\n" - .string "ups the critical-\n" - .string "hit rate in a pinch.$" - -gItemDescription_StarfBerry: @ 83C395A - .string "A hold item that\n" - .string "sharply boosts a\n" - .string "stat in a pinch.$" - -gItemDescription_EnigmaBerry: @ 83C398D - .string "{POKEBLOCK} ingredient.\n" - .string "Plant in loamy soil\n" - .string "to grow a mystery.$" - -gItemDescription_BrightPowder: @ 83C39C6 - .string "A hold item that\n" - .string "casts a glare to\n" - .string "reduce accuracy.$" - -gItemDescription_WhiteHerb: @ 83C39F9 - .string "A hold item that\n" - .string "restores any\n" - .string "lowered stat.$" - -gItemDescription_MachoBrace: @ 83C3A25 - .string "A hold item that\n" - .string "promotes growth,\n" - .string "but reduces SPEED.$" - -gItemDescription_ExpShare: @ 83C3A5A - .string "A hold item that\n" - .string "gets EXP. points\n" - .string "from battles.$" - -gItemDescription_QuickClaw: @ 83C3A8A - .string "A hold item that\n" - .string "occasionally allows\n" - .string "the first strike.$" - -gItemDescription_SootheBell: @ 83C3AC1 - .string "A hold item that\n" - .string "calms spirits and\n" - .string "fosters friendship.$" - -gItemDescription_MentalHerb: @ 83C3AF8 - .string "A hold item that\n" - .string "snaps POKéMON out\n" - .string "of infatuation.$" - -gItemDescription_ChoiceBand: @ 83C3B2B - .string "Raises a move’s\n" - .string "power, but permits\n" - .string "only that move.$" - -gItemDescription_KingsRock: @ 83C3B5E - .string "A hold item that\n" - .string "may cause flinching\n" - .string "when the foe is hit.$" - -gItemDescription_SilverPowder: @ 83C3B98 - .string "A hold item that\n" - .string "raises the power of\n" - .string "BUG-type moves.$" - -gItemDescription_AmuletCoin: @ 83C3BCD - .string "Doubles money in\n" - .string "battle if the holder\n" - .string "takes part.$" - -gItemDescription_CleanseTag: @ 83C3BFF - .string "A hold item that\n" - .string "helps repel wild\n" - .string "POKéMON.$" - -gItemDescription_SoulDew: @ 83C3C2A - .string "Hold item: Raises\n" - .string "SP. ATK & SP. DEF\n" - .string "of LATIOS & LATIAS.$" - -gItemDescription_DeepSeaTooth: @ 83C3C62 - .string "A hold item that\n" - .string "raises the SP. ATK\n" - .string "of CLAMPERL.$" - -gItemDescription_DeepSeaScale: @ 83C3C93 - .string "A hold item that\n" - .string "raises the SP. DEF\n" - .string "of CLAMPERL.$" - -gItemDescription_SmokeBall: @ 83C3CC4 - .string "A hold item that\n" - .string "can be used to flee\n" - .string "from a wild POKéMON.$" - -gItemDescription_Everstone: @ 83C3CFE - .string "A wondrous stone\n" - .string "& a hold item that\n" - .string "prevents evolution.$" - -gItemDescription_FocusBand: @ 83C3D36 - .string "A hold item that\n" - .string "occasionally\n" - .string "prevents fainting.$" - -gItemDescription_LuckyEgg: @ 83C3D67 - .string "A hold item that\n" - .string "boosts EXP. points\n" - .string "earned in battle.$" - -gItemDescription_ScopeLens: @ 83C3D9D - .string "A hold item that\n" - .string "raises the critical-\n" - .string "hit rate.$" - -gItemDescription_MetalCoat: @ 83C3DCD - .string "A hold item that\n" - .string "raises the power of\n" - .string "STEEL-type moves.$" - -gItemDescription_Leftovers: @ 83C3E04 - .string "A hold item that\n" - .string "gradually restores\n" - .string "HP in battle.$" - -gItemDescription_DragonScale: @ 83C3E36 - .string "A strange scale\n" - .string "held by DRAGON-\n" - .string "type POKéMON.$" - -gItemDescription_LightBall: @ 83C3E64 - .string "A hold item that\n" - .string "raises the SP. ATK\n" - .string "of PIKACHU.$" - -gItemDescription_SoftSand: @ 83C3E94 - .string "A hold item that\n" - .string "raises the power of\n" - .string "GROUND-type moves.$" - -gItemDescription_HardStone: @ 83C3ECC - .string "A hold item that\n" - .string "raises the power of\n" - .string "ROCK-type moves.$" - -gItemDescription_MiracleSeed: @ 83C3F02 - .string "A hold item that\n" - .string "raises the power of\n" - .string "GRASS-type moves.$" - -gItemDescription_BlackGlasses: @ 83C3F39 - .string "A hold item that\n" - .string "raises the power of\n" - .string "DARK-type moves.$" - -gItemDescription_BlackBelt: @ 83C3F6F - .string "A hold item that\n" - .string "boosts FIGHTING-\n" - .string "type moves.$" - -gItemDescription_Magnet: @ 83C3F9D - .string "A hold item that\n" - .string "boosts ELECTRIC-\n" - .string "type moves.$" - -gItemDescription_MysticWater: @ 83C3FCB - .string "A hold item that\n" - .string "raises the power of\n" - .string "WATER-type moves.$" - -gItemDescription_SharpBeak: @ 83C4002 - .string "A hold item that\n" - .string "raises the power of\n" - .string "FLYING-type moves.$" - -gItemDescription_PoisonBarb: @ 83C403A - .string "A hold item that\n" - .string "raises the power of\n" - .string "POISON-type moves.$" - -gItemDescription_NeverMeltIce: @ 83C4072 - .string "A hold item that\n" - .string "raises the power of\n" - .string "ICE-type moves.$" - -gItemDescription_SpellTag: @ 83C40A7 - .string "A hold item that\n" - .string "raises the power of\n" - .string "GHOST-type moves.$" - -gItemDescription_TwistedSpoon: @ 83C40DE - .string "A hold item that\n" - .string "boosts PSYCHIC-\n" - .string "type moves.$" - -gItemDescription_Charcoal: @ 83C410B - .string "A hold item that\n" - .string "raises the power of\n" - .string "FIRE-type moves.$" - -gItemDescription_DragonFang: @ 83C4141 - .string "A hold item that\n" - .string "raises the power of\n" - .string "DRAGON-type moves.$" - -gItemDescription_SilkScarf: @ 83C4179 - .string "A hold item that\n" - .string "raises the power of\n" - .string "NORMAL-type moves.$" - -gItemDescription_UpGrade: @ 83C41B1 - .string "A peculiar box made\n" - .string "by SILPH CO.$" - -gItemDescription_ShellBell: @ 83C41D2 - .string "A hold item that\n" - .string "restores HP upon\n" - .string "striking the foe.$" - -gItemDescription_SeaIncense: @ 83C4206 - .string "A hold item that\n" - .string "slightly boosts\n" - .string "WATER-type moves.$" - -gItemDescription_LaxIncense: @ 83C4239 - .string "A hold item that\n" - .string "slightly lowers the\n" - .string "foe’s accuracy.$" - -gItemDescription_LuckyPunch: @ 83C426E - .string "A hold item that\n" - .string "raises CHANSEY’s\n" - .string "critical-hit rate.$" - -gItemDescription_MetalPowder: @ 83C42A3 - .string "A hold item that\n" - .string "raises DEFENSE.$" - -gItemDescription_ThickClub: @ 83C42C4 - .string "A bone of some\n" - .string "sort. It can be sold\n" - .string "cheaply.$" - -gItemDescription_Stick: @ 83C42F1 - .string "A stick of leek.\n" - .string "It can be sold\n" - .string "cheaply.$" - -gItemDescription_RedScarf: @ 83C431A - .string "A hold item that\n" - .string "raises COOL in\n" - .string "CONTESTS.$" - -gItemDescription_BlueScarf: @ 83C4344 - .string "A hold item that\n" - .string "raises BEAUTY in\n" - .string "CONTESTS.$" - -gItemDescription_PinkScarf: @ 83C4370 - .string "A hold item that\n" - .string "raises CUTE in\n" - .string "CONTESTS.$" - -gItemDescription_GreenScarf: @ 83C439A - .string "A hold item that\n" - .string "raises SMART in\n" - .string "CONTESTS.$" - -gItemDescription_YellowScarf: @ 83C43C5 - .string "A hold item that\n" - .string "raises TOUGH in\n" - .string "CONTESTS.$" - -gItemDescription_MachBike: @ 83C43F0 - .string "A folding bicycle\n" - .string "that more than\n" - .string "doubles foot speed.$" - -gItemDescription_CoinCase: @ 83C4425 - .string "A case that holds\n" - .string "up to 9,999 COINS.$" - -gItemDescription_Itemfinder: @ 83C444A - .string "A device that\n" - .string "signals an invisible\n" - .string "item by sound.$" - -gItemDescription_OldRod: @ 83C447C - .string "Use by any body of\n" - .string "water to fish for\n" - .string "wild POKéMON.$" - -gItemDescription_GoodRod: @ 83C44AF - .string "A decent fishing\n" - .string "rod for catching\n" - .string "wild POKéMON.$" - -gItemDescription_SuperRod: @ 83C44DF - .string "The best fishing\n" - .string "rod for catching\n" - .string "wild POKéMON.$" - -gItemDescription_SSTicket: @ 83C450F - .string "The ticket required\n" - .string "for sailing on a\n" - .string "ferry.$" - -gItemDescription_ContestPass: @ 83C453B - .string "The pass required\n" - .string "for entering\n" - .string "POKéMON CONTESTS.$" - -gItemDescription_WailmerPail: @ 83C456C - .string "A tool used for\n" - .string "watering BERRIES\n" - .string "and plants.$" - -gItemDescription_DevonGoods: @ 83C4599 - .string "A package that\n" - .string "contains DEVON’s\n" - .string "machine parts.$" - -gItemDescription_SootSack: @ 83C45C8 - .string "A sack used to\n" - .string "gather and hold\n" - .string "volcanic ash.$" - -gItemDescription_BasementKey: @ 83C45F5 - .string "The key for NEW\n" - .string "MAUVILLE beneath\n" - .string "MAUVILLE CITY.$" - -gItemDescription_AcroBike: @ 83C4625 - .string "A folding bicycle\n" - .string "capable of jumps\n" - .string "and wheelies.$" - -gItemDescription_PokeblockCase: @ 83C4656 - .string "A case for holding\n" - .string "{POKEBLOCK}S made with\n" - .string "a BERRY BLENDER.$" - -gItemDescription_Letter: @ 83C468B - .string "A letter to STEVEN\n" - .string "from the PRESIDENT\n" - .string "of the DEVON CORP.$" - -gItemDescription_EonTicket: @ 83C46C4 - .string "The ticket for a\n" - .string "ferry to a distant\n" - .string "southern island.$" - -gItemDescription_RedOrb: @ 83C46F9 - .string "A red, glowing orb\n" - .string "said to contain an\n" - .string "ancient power.$" - -gItemDescription_BlueOrb: @ 83C472E - .string "A blue, glowing orb\n" - .string "said to contain an\n" - .string "ancient power.$" - -gItemDescription_Scanner: @ 83C4764 - .string "A device found\n" - .string "inside the\n" - .string "ABANDONED SHIP.$" - -gItemDescription_GoGoggles: @ 83C478E - .string "Nifty goggles that\n" - .string "protect eyes from\n" - .string "desert sandstorms.$" - -gItemDescription_Meteorite: @ 83C47C6 - .string "A meteorite found\n" - .string "at METEOR FALLS.$" - -gItemDescription_Room1Key: @ 83C47E9 - .string "A key that opens a\n" - .string "door inside the\n" - .string "ABANDONED SHIP.$" - -gItemDescription_Room2Key: @ 83C481C - .string "A key that opens a\n" - .string "door inside the\n" - .string "ABANDONED SHIP.$" - -gItemDescription_Room4Key: @ 83C484F - .string "A key that opens a\n" - .string "door inside the\n" - .string "ABANDONED SHIP.$" - -gItemDescription_Room6Key: @ 83C4882 - .string "A key that opens a\n" - .string "door inside the\n" - .string "ABANDONED SHIP.$" - -gItemDescription_StorageKey: @ 83C48B5 - .string "The key to the\n" - .string "storage inside the\n" - .string "ABANDONED SHIP.$" - -gItemDescription_RootFossil: @ 83C48E7 - .string "A fossil of an\n" - .string "ancient, seafloor-\n" - .string "dwelling POKéMON.$" - -gItemDescription_ClawFossil: @ 83C491B - .string "A fossil of an\n" - .string "ancient, seafloor-\n" - .string "dwelling POKéMON.$" - -gItemDescription_DevonScope: @ 83C494F - .string "A device by DEVON\n" - .string "that signals any\n" - .string "unseeable POKéMON.$" - -gItemDescription_TM01: @ 83C4985 - .string "Powerful, but makes\n" - .string "the user flinch if\n" - .string "hit by the foe.$" - -gItemDescription_TM02: @ 83C49BC - .string "Hooks and slashes\n" - .string "the foe with long,\n" - .string "sharp claws.$" - -gItemDescription_TM03: @ 83C49EE - .string "Generates an\n" - .string "ultrasonic wave\n" - .string "that may confuse.$" - -gItemDescription_TM04: @ 83C4A1D - .string "Raises SP. ATK and\n" - .string "SP. DEF by focusing\n" - .string "the mind.$" - -gItemDescription_TM05: @ 83C4A4E - .string "A savage roar that\n" - .string "makes the foe flee \n" - .string "to end the battle.$" - -gItemDescription_TM06: @ 83C4A88 - .string "Poisons the foe\n" - .string "with a toxin that\n" - .string "gradually worsens.$" - -gItemDescription_TM07: @ 83C4ABD - .string "Summons a hailstorm\n" - .string "that hurts all\n" - .string "types except ICE.$" - -gItemDescription_TM08: @ 83C4AF2 - .string "Bulks up the body\n" - .string "to boost both\n" - .string "ATTACK & DEFENSE.$" - -gItemDescription_TM09: @ 83C4B24 - .string "Shoots 2 to 5 seeds\n" - .string "in a row to strike\n" - .string "the foe.$" - -gItemDescription_TM10: @ 83C4B54 - .string "The attack power\n" - .string "varies among\n" - .string "different POKéMON.$" - -gItemDescription_TM11: @ 83C4B85 - .string "Raises the power of\n" - .string "FIRE-type moves\n" - .string "for 5 turns.$" - -gItemDescription_TM12: @ 83C4BB6 - .string "Enrages the foe so\n" - .string "it can only use\n" - .string "attack moves.$" - -gItemDescription_TM13: @ 83C4BE7 - .string "Fires an icy cold\n" - .string "beam that may\n" - .string "freeze the foe.$" - -gItemDescription_TM14: @ 83C4C17 - .string "A vicious snow-and-\n" - .string "wind attack that\n" - .string "may freeze the foe.$" - -gItemDescription_TM15: @ 83C4C50 - .string "Powerful, but needs\n" - .string "recharging the\n" - .string "next turn.$" - -gItemDescription_TM16: @ 83C4C7E - .string "Creates a wall of\n" - .string "light that lowers\n" - .string "SP. ATK damage.$" - -gItemDescription_TM17: @ 83C4CB2 - .string "Negates all damage,\n" - .string "but may fail if used\n" - .string "in succession.$" - -gItemDescription_TM18: @ 83C4CEA - .string "Raises the power of\n" - .string "WATER-type moves\n" - .string "for 5 turns.$" - -gItemDescription_TM19: @ 83C4D1C - .string "Recovers half the\n" - .string "HP of the damage \n" - .string "this move inflicts.$" - -gItemDescription_TM20: @ 83C4D54 - .string "Prevents status\n" - .string "abnormality with a\n" - .string "mystical power.$" - -gItemDescription_TM21: @ 83C4D87 - .string "The less the user\n" - .string "likes you, the more\n" - .string "powerful this move.$" - -gItemDescription_TM22: @ 83C4DC1 - .string "Absorbs sunlight in\n" - .string "the 1st turn, then\n" - .string "attacks next turn.$" - -gItemDescription_TM23: @ 83C4DFB - .string "Slams the foe with\n" - .string "a hard tail. It may\n" - .string "lower DEFENSE.$" - -gItemDescription_TM24: @ 83C4E31 - .string "A powerful electric\n" - .string "attack that may\n" - .string "cause paralysis.$" - -gItemDescription_TM25: @ 83C4E66 - .string "Strikes the foe\n" - .string "with a thunderbolt.\n" - .string "It may paralyze.$" - -gItemDescription_TM26: @ 83C4E9B - .string "Causes a quake\n" - .string "that has no effect\n" - .string "on flying foes.$" - -gItemDescription_TM27: @ 83C4ECD - .string "The more the user\n" - .string "likes you, the more\n" - .string "powerful this move.$" - -gItemDescription_TM28: @ 83C4F07 - .string "Digs underground\n" - .string "the 1st turn, then\n" - .string "strikes next turn.$" - -gItemDescription_TM29: @ 83C4F3E - .string "A powerful psychic\n" - .string "attack that may\n" - .string "lower SP. DEF.$" - -gItemDescription_TM30: @ 83C4F70 - .string "Hurls a dark lump\n" - .string "at the foe. It may\n" - .string "lower SP. DEF.$" - -gItemDescription_TM31: @ 83C4FA4 - .string "Destroys barriers\n" - .string "like LIGHT SCREEN\n" - .string "and causes damage.$" - -gItemDescription_TM32: @ 83C4FDB - .string "Creates illusory\n" - .string "copies to enhance\n" - .string "elusiveness.$" - -gItemDescription_TM33: @ 83C500B - .string "Creates a wall of\n" - .string "light that weakens\n" - .string "physical attacks.$" - -gItemDescription_TM34: @ 83C5042 - .string "Zaps the foe with a\n" - .string "jolt of electricity\n" - .string "that never misses.$" - -gItemDescription_TM35: @ 83C507D - .string "Looses a stream of\n" - .string "fire that may burn\n" - .string "the foe.$" - -gItemDescription_TM36: @ 83C50AC - .string "Hurls sludge at the\n" - .string "foe. It may poison\n" - .string "the foe.$" - -gItemDescription_TM37: @ 83C50DC - .string "Causes a sandstorm\n" - .string "that hits the foe\n" - .string "over several turns.$" - -gItemDescription_TM38: @ 83C5115 - .string "A powerful fire\n" - .string "attack that may\n" - .string "burn the foe.$" - -gItemDescription_TM39: @ 83C5143 - .string "Stops the foe from\n" - .string "moving with rocks.\n" - .string "May lower SPEED.$" - -gItemDescription_TM40: @ 83C517A - .string "An extremely fast\n" - .string "attack that can’t\n" - .string "be avoided.$" - -gItemDescription_TM41: @ 83C51AA - .string "Prevents the foe\n" - .string "from using the same\n" - .string "move in a row.$" - -gItemDescription_TM42: @ 83C51DE - .string "Raises ATTACK when\n" - .string "poisoned, burned,\n" - .string "or paralyzed.$" - -gItemDescription_TM43: @ 83C5211 - .string "Adds an effect to\n" - .string "attack depending\n" - .string "on the location.$" - -gItemDescription_TM44: @ 83C5245 - .string "The user sleeps for\n" - .string "2 turns to restore\n" - .string "health and status.$" - -gItemDescription_TM45: @ 83C527F - .string "Makes it tough to\n" - .string "attack a foe of the\n" - .string "opposite gender.$" - -gItemDescription_TM46: @ 83C52B6 - .string "While attacking,\n" - .string "it may steal the\n" - .string "foe’s held item.$" - -gItemDescription_TM47: @ 83C52E9 - .string "Spreads hard-edged\n" - .string "wings and slams\n" - .string "into the foe.$" - -gItemDescription_TM48: @ 83C531A - .string "Switches abilities\n" - .string "with the foe on the\n" - .string "turn this is used.$" - -gItemDescription_TM49: @ 83C5354 - .string "Steals the effects\n" - .string "of the move the foe\n" - .string "is trying to use.$" - -gItemDescription_TM50: @ 83C538D - .string "Enables full-power\n" - .string "attack, but sharply\n" - .string "lowers SP. ATK.$" - -gItemDescription_HM01: @ 83C53C4 - .string "Attacks the foe\n" - .string "with sharp blades\n" - .string "or claws.$" - -gItemDescription_HM02: @ 83C53F0 - .string "Flies up on the\n" - .string "first turn, then\n" - .string "attacks next turn.$" - -gItemDescription_HM03: @ 83C5424 - .string "Creates a huge\n" - .string "wave, then crashes\n" - .string "it down on the foe.$" - -gItemDescription_HM04: @ 83C545A - .string "Builds enormous\n" - .string "power, then slams\n" - .string "the foe.$" - -gItemDescription_HM05: @ 83C5485 - .string "Looses a powerful\n" - .string "blast of light that\n" - .string "reduces accuracy.$" - -gItemDescription_HM06: @ 83C54BD - .string "A rock-crushingly\n" - .string "tough attack that\n" - .string "may lower DEFENSE.$" - -gItemDescription_HM07: @ 83C54F4 - .string "Attacks the foe\n" - .string "with enough power\n" - .string "to climb waterfalls.$" - -gItemDescription_HM08: @ 83C552B - .string "Dives underwater\n" - .string "the 1st turn, then\n" - .string "attacks next turn.$" - -gItemDescription_Dummy: @ 83C5562 - .string "$" diff --git a/data/text/storyteller.inc b/data/text/storyteller.inc index 3cfa8a698..437a1fa21 100644 --- a/data/text/storyteller.inc +++ b/data/text/storyteller.inc @@ -1,24 +1,24 @@ -MauvilleCity_PokemonCenter_1F_Text_1AECC6:: @ 81AECC6 +gTextStoryteller_Introduction:: @ 81AECC6 .string "I’m the STORYTELLER.\n" .string "I’ll tell you tales of legendary\l" .string "TRAINERS.\p" .string "Will you hear my tale?$" -MauvilleCity_PokemonCenter_1F_Text_1AED1D:: @ 81AED1D +gTextStoryteller_OhIFeelStifled:: @ 81AED1D .string "Oh...\n" .string "I feel stifled...$" -MauvilleCity_PokemonCenter_1F_Text_1AED35:: @ 81AED35 +gTextStoryteller_WhichTale:: @ 81AED35 .string "I know of these legends.\n" .string "Which tale will you have me tell?$" -MauvilleCity_PokemonCenter_1F_Text_1AED70:: @ 81AED70 +gTextStoryteller_ButIKnowOfNoLegendaryTrainers:: @ 81AED70 .string "But, I know of no legendary TRAINERS.\n" .string "Hence, I know no tales.\p" .string "Where does one find a TRAINER worthy\n" .string "of a legendary tale?$" -MauvilleCity_PokemonCenter_1F_Text_1AEDE8:: @ 81AEDE8 +gTextStoryteller_BirthOfANewLegend:: @ 81AEDE8 .string "What’s that?!\n" .string "You... You...\p" .string "{STR_VAR_2}\n" @@ -26,38 +26,38 @@ MauvilleCity_PokemonCenter_1F_Text_1AEDE8:: @ 81AEDE8 .string "That is indeed magnificent!\n" .string "It’s the birth of a new legend!$" -MauvilleCity_PokemonCenter_1F_Text_1AEE50:: @ 81AEE50 +gTextStoryteller_CouldThereBeOtherTrainers:: @ 81AEE50 .string "It gets me thinking, could there be\n" .string "other TRAINERS with more impressive\l" .string "legends awaiting discovery?$" -MauvilleCity_PokemonCenter_1F_Text_1AEEB4:: @ 81AEEB4 +gTextStoryteller_HaveYouAnyTales:: @ 81AEEB4 .string "Are you a TRAINER?\p" .string "Then tell me, have you any tales that\n" .string "are even remotely legendary?$" -MauvilleCity_PokemonCenter_1F_Text_1AEF0A:: @ 81AEF0A +gTextStoryteller_HearAnotherLegendaryTale:: @ 81AEF0A .string "Incidentally... Would you care to hear\n" .string "another legendary tale?$" -MauvilleCity_PokemonCenter_1F_Text_1AEF49:: @ 81AEF49 +gTextStoryteller_ImNotSatisfied:: @ 81AEF49 .string "Hmm...\n" .string "I’m not satisfied...\p" .string "I wish you would bring me news worthy\n" .string "of being called a legend.$" -MauvilleCity_PokemonCenter_1F_Text_1AEFA5:: @ 81AEFA5 +gTextStoryteller_WishMorePeopleWould:: @ 81AEFA5 .string "I wish more people would be interested\n" .string "in hearing my epic tales of legendary\l" .string "TRAINERS.$" -UnknownString_81AEFFC:: @ 81AEFFC +gTextStoryteller_Story1Title:: @ 81AEFFC .string "The Save-Happy TRAINER$" -UnknownString_81AF013:: @ 81AF013 +gTextStoryteller_Story1Action:: @ 81AF013 .string "Saved the game$" -UnknownString_81AF022:: @ 81AF022 +gTextStoryteller_Story1Text:: @ 81AF022 .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER saved the game\n" @@ -65,13 +65,13 @@ UnknownString_81AF022:: @ 81AF022 .string "A more cautious TRAINER than\n" .string "{STR_VAR_3} one will never find!$" -UnknownString_81AF0A3:: @ 81AF0A3 +gTextStoryteller_Story2Title:: @ 81AF0A3 .string "The Trendsetter TRAINER$" -UnknownString_81AF0BB:: @ 81AF0BB +gTextStoryteller_Story2Action:: @ 81AF0BB .string "Started trends$" -UnknownString_81AF0CA:: @ 81AF0CA +gTextStoryteller_Story2Text:: @ 81AF0CA .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER started new trends\n" @@ -79,13 +79,13 @@ UnknownString_81AF0CA:: @ 81AF0CA .string "{STR_VAR_3} is setting trends for all\n" .string "the HOENN region!$" -UnknownString_81AF149:: @ 81AF149 +gTextStoryteller_Story3Title:: @ 81AF149 .string "The BERRY-Planting TRAINER$" -UnknownString_81AF164:: @ 81AF164 +gTextStoryteller_Story3Action:: @ 81AF164 .string "Planted BERRIES$" -UnknownString_81AF174:: @ 81AF174 +gTextStoryteller_Story3Text:: @ 81AF174 .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER planted BERRIES\n" @@ -93,13 +93,13 @@ UnknownString_81AF174:: @ 81AF174 .string "{STR_VAR_3} is a legendary lover of\n" .string "BERRIES!$" -UnknownString_81AF1E5:: @ 81AF1E5 +gTextStoryteller_Story4Title:: @ 81AF1E5 .string "The BIKE-Loving TRAINER$" -UnknownString_81AF1FD:: @ 81AF1FD +gTextStoryteller_Story4Action:: @ 81AF1FD .string "Traded BIKES$" -UnknownString_81AF20A:: @ 81AF20A +gTextStoryteller_Story4Text:: @ 81AF20A .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER swapped BIKES\n" @@ -107,13 +107,13 @@ UnknownString_81AF20A:: @ 81AF20A .string "{STR_VAR_3} must love BIKES deeply\n" .string "and passionately!$" -UnknownString_81AF281:: @ 81AF281 +gTextStoryteller_Story5Title:: @ 81AF281 .string "The Interviewed TRAINER$" -UnknownString_81AF299:: @ 81AF299 +gTextStoryteller_Story5Action:: @ 81AF299 .string "Got interviewed$" -UnknownString_81AF2A9:: @ 81AF2A9 +gTextStoryteller_Story5Text:: @ 81AF2A9 .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER got interviewed\n" @@ -121,26 +121,26 @@ UnknownString_81AF2A9:: @ 81AF2A9 .string "{STR_VAR_3} must be a TRAINER who’s\n" .string "attracting much attention!$" -UnknownString_81AF32C:: @ 81AF32C +gTextStoryteller_Story6Title:: @ 81AF32C .string "The Battle-Happy TRAINER$" -UnknownString_81AF345:: @ 81AF345 +gTextStoryteller_Story6Action:: @ 81AF345 .string "Battled$" -UnknownString_81AF34D:: @ 81AF34D +gTextStoryteller_Story6Text:: @ 81AF34D .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER battled {STR_VAR_1} times!\p" .string "{STR_VAR_3} must be a TRAINER who can\n" .string "never refuse a chance to battle!$" -UnknownString_81AF3D0:: @ 81AF3D0 +gTextStoryteller_Story7Title:: @ 81AF3D0 .string "The POKéMON-Catching TRAINER$" -UnknownString_81AF3ED:: @ 81AF3ED +gTextStoryteller_Story7Action:: @ 81AF3ED .string "Caught POKéMON$" -UnknownString_81AF3FC:: @ 81AF3FC +gTextStoryteller_Story7Text:: @ 81AF3FC .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER caught\n" @@ -148,13 +148,13 @@ UnknownString_81AF3FC:: @ 81AF3FC .string "{STR_VAR_3} is a legendary catcher of\n" .string "wild POKéMON!$" -UnknownString_81AF46D:: @ 81AF46D +gTextStoryteller_Story8Title:: @ 81AF46D .string "The Fishing TRAINER$" -UnknownString_81AF481:: @ 81AF481 +gTextStoryteller_Story8Action:: @ 81AF481 .string "Caught POKéMON with a ROD$" -UnknownString_81AF49B:: @ 81AF49B +gTextStoryteller_Story8Text:: @ 81AF49B .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER caught\n" @@ -162,13 +162,13 @@ UnknownString_81AF49B:: @ 81AF49B .string "{STR_VAR_3} is a legendary fishing\n" .string "expert!$" -UnknownString_81AF511:: @ 81AF511 +gTextStoryteller_Story9Title:: @ 81AF511 .string "The EGG-Warming TRAINER$" -UnknownString_81AF529:: @ 81AF529 +gTextStoryteller_Story9Action:: @ 81AF529 .string "Hatched EGGS$" -UnknownString_81AF536:: @ 81AF536 +gTextStoryteller_Story9Text:: @ 81AF536 .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER hatched {STR_VAR_1} POKéMON\n" @@ -176,13 +176,13 @@ UnknownString_81AF536:: @ 81AF536 .string "{STR_VAR_3} is a legendary warmer\n" .string "of EGGS!$" -UnknownString_81AF5A9:: @ 81AF5A9 +gTextStoryteller_Story10Title:: @ 81AF5A9 .string "The Evolver TRAINER$" -UnknownString_81AF5BD:: @ 81AF5BD +gTextStoryteller_Story10Action:: @ 81AF5BD .string "Evolved POKéMON$" -UnknownString_81AF5CD:: @ 81AF5CD +gTextStoryteller_Story10Text:: @ 81AF5CD .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER made {STR_VAR_1} POKéMON\n" @@ -190,13 +190,13 @@ UnknownString_81AF5CD:: @ 81AF5CD .string "{STR_VAR_3} is the ultimate evolver\n" .string "of POKéMON!$" -UnknownString_81AF63F:: @ 81AF63F +gTextStoryteller_Story11Title:: @ 81AF63F .string "The POKéMON CENTER-Loving TRAINER$" -UnknownString_81AF661:: @ 81AF661 +gTextStoryteller_Story11Action:: @ 81AF661 .string "Used POKéMON CENTERS$" -UnknownString_81AF676:: @ 81AF676 +gTextStoryteller_Story11Text:: @ 81AF676 .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER healed POKéMON\n" @@ -204,13 +204,13 @@ UnknownString_81AF676:: @ 81AF676 .string "There could be no greater lover of\n" .string "POKéMON CENTERS than {STR_VAR_3}!$" -UnknownString_81AF711:: @ 81AF711 +gTextStoryteller_Story12Title:: @ 81AF711 .string "The Homebody TRAINER$" -UnknownString_81AF726:: @ 81AF726 +gTextStoryteller_Story12Action:: @ 81AF726 .string "Rested POKéMON at home$" -UnknownString_81AF73D:: @ 81AF73D +gTextStoryteller_Story12Text:: @ 81AF73D .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER healed POKéMON\n" @@ -218,13 +218,13 @@ UnknownString_81AF73D:: @ 81AF73D .string "There could be no more of a homebody\n" .string "than {STR_VAR_3}!$" -UnknownString_81AF7BF:: @ 81AF7BF +gTextStoryteller_Story13Title:: @ 81AF7BF .string "The SAFARI-Loving TRAINER$" -UnknownString_81AF7D9:: @ 81AF7D9 +gTextStoryteller_Story13Action:: @ 81AF7D9 .string "Entered the SAFARI ZONE$" -UnknownString_81AF7F1:: @ 81AF7F1 +gTextStoryteller_Story13Text:: @ 81AF7F1 .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER went into the SAFARI ZONE\n" @@ -232,13 +232,13 @@ UnknownString_81AF7F1:: @ 81AF7F1 .string "{STR_VAR_3} is a TRAINER whose wild side\n" .string "must come out in the SAFARI ZONE!$" -UnknownString_81AF88A:: @ 81AF88A +gTextStoryteller_Story14Title:: @ 81AF88A .string "The CUT-Frenzy TRAINER$" -UnknownString_81AF8A1:: @ 81AF8A1 +gTextStoryteller_Story14Action:: @ 81AF8A1 .string "Used CUT$" -UnknownString_81AF8AA:: @ 81AF8AA +gTextStoryteller_Story14Text:: @ 81AF8AA .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER used CUT\n" @@ -246,13 +246,13 @@ UnknownString_81AF8AA:: @ 81AF8AA .string "{STR_VAR_3} is a TRAINER who just must\n" .string "love to CUT!$" -UnknownString_81AF91B:: @ 81AF91B +gTextStoryteller_Story15Title:: @ 81AF91B .string "The ROCK-SMASHING TRAINER$" -UnknownString_81AF935:: @ 81AF935 +gTextStoryteller_Story15Action:: @ 81AF935 .string "Smashed rocks$" -UnknownString_81AF943:: @ 81AF943 +gTextStoryteller_Story15Text:: @ 81AF943 .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER used ROCK SMASH\n" @@ -260,13 +260,13 @@ UnknownString_81AF943:: @ 81AF943 .string "{STR_VAR_3} must be a TRAINER who\n" .string "can’t leave a stone unsmashed!$" -UnknownString_81AF9C8:: @ 81AF9C8 +gTextStoryteller_Story16Title:: @ 81AF9C8 .string "The Move-Loving TRAINER$" -UnknownString_81AF9E0:: @ 81AF9E0 +gTextStoryteller_Story16Action:: @ 81AF9E0 .string "Moved the SECRET BASE$" -UnknownString_81AF9F6:: @ 81AF9F6 +gTextStoryteller_Story16Text:: @ 81AF9F6 .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER moved the SECRET BASE\n" @@ -274,13 +274,13 @@ UnknownString_81AF9F6:: @ 81AF9F6 .string "{STR_VAR_3} is a TRAINER who loves\n" .string "to move houses often!$" -UnknownString_81AFA79:: @ 81AFA79 +gTextStoryteller_Story17Title:: @ 81AFA79 .string "The SPLASH-Happy TRAINER$" -UnknownString_81AFA92:: @ 81AFA92 +gTextStoryteller_Story17Action:: @ 81AFA92 .string "Used SPLASH$" -UnknownString_81AFA9E:: @ 81AFA9E +gTextStoryteller_Story17Text:: @ 81AFA9E .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER used SPLASH\n" @@ -288,13 +288,13 @@ UnknownString_81AFA9E:: @ 81AFA9E .string "{STR_VAR_3} is a TRAINER who must love\n" .string "SPLASHING around!$" -UnknownString_81AFB17:: @ 81AFB17 +gTextStoryteller_Story18Title:: @ 81AFB17 .string "The Tenacious TRAINER$" -UnknownString_81AFB2D:: @ 81AFB2D +gTextStoryteller_Story18Action:: @ 81AFB2D .string "Resorted to using STRUGGLE$" -UnknownString_81AFB48:: @ 81AFB48 +gTextStoryteller_Story18Text:: @ 81AFB48 .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER had to rely on STRUGGLE\n" @@ -302,13 +302,13 @@ UnknownString_81AFB48:: @ 81AFB48 .string "{STR_VAR_3} is a tenacious TRAINER\n" .string "who never gives in to adversity!$" -UnknownString_81AFBD8:: @ 81AFBD8 +gTextStoryteller_Story19Title:: @ 81AFBD8 .string "The SLOT Champ$" -UnknownString_81AFBE7:: @ 81AFBE7 +gTextStoryteller_Story19Action:: @ 81AFBE7 .string "Won the jackpot on the SLOTS$" -UnknownString_81AFC04:: @ 81AFC04 +gTextStoryteller_Story19Text:: @ 81AFC04 .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER won the jackpot on\n" @@ -316,13 +316,13 @@ UnknownString_81AFC04:: @ 81AFC04 .string "{STR_VAR_3} is a TRAINER who was lucky\n" .string "on the SLOTS!$" -UnknownString_81AFC8A:: @ 81AFC8A +gTextStoryteller_Story20Title:: @ 81AFC8A .string "The ROULETTE Champ$" -UnknownString_81AFC9D:: @ 81AFC9D +gTextStoryteller_Story20Action:: @ 81AFC9D .string "Had consecutive ROULETTE wins of$" -UnknownString_81AFCBE:: @ 81AFCBE +gTextStoryteller_Story20Text:: @ 81AFCBE .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER won in ROULETTE\n" @@ -330,13 +330,13 @@ UnknownString_81AFCBE:: @ 81AFCBE .string "{STR_VAR_3} was lucky when the ball\n" .string "bounced in ROULETTE!$" -UnknownString_81AFD44:: @ 81AFD44 +gTextStoryteller_Story21Title:: @ 81AFD44 .string "The BATTLE TOWER Challenger$" -UnknownString_81AFD60:: @ 81AFD60 +gTextStoryteller_Story21Action:: @ 81AFD60 .string "Took the BATTLE TOWER challenge$" -UnknownString_81AFD80:: @ 81AFD80 +gTextStoryteller_Story21Text:: @ 81AFD80 .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER took the BATTLE TOWER\n" @@ -344,13 +344,13 @@ UnknownString_81AFD80:: @ 81AFD80 .string "{STR_VAR_3} is a TRAINER who aspires\n" .string "for excellence in the BATTLE TOWER!$" -UnknownString_81AFE1D:: @ 81AFE1D +gTextStoryteller_Story22Title:: @ 81AFE1D .string "The Blend-Loving TRAINER$" -UnknownString_81AFE36:: @ 81AFE36 +gTextStoryteller_Story22Action:: @ 81AFE36 .string "Made {POKEBLOCK}S$" -UnknownString_81AFE42:: @ 81AFE42 +gTextStoryteller_Story22Text:: @ 81AFE42 .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER made {POKEBLOCK}S\n" @@ -358,13 +358,13 @@ UnknownString_81AFE42:: @ 81AFE42 .string "There is none better at using a BERRY\n" .string "BLENDER than {STR_VAR_3}!$" -UnknownString_81AFEC2:: @ 81AFEC2 +gTextStoryteller_Story23Title:: @ 81AFEC2 .string "The CONTEST-Loving TRAINER$" -UnknownString_81AFEDD:: @ 81AFEDD +gTextStoryteller_Story23Action:: @ 81AFEDD .string "Entered CONTESTS$" -UnknownString_81AFEEE:: @ 81AFEEE +gTextStoryteller_Story23Text:: @ 81AFEEE .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER entered CONTESTS\n" @@ -372,13 +372,13 @@ UnknownString_81AFEEE:: @ 81AFEEE .string "{STR_VAR_3} must love showing off\n" .string "POKéMON to others!$" -UnknownString_81AFF68:: @ 81AFF68 +gTextStoryteller_Story24Title:: @ 81AFF68 .string "The CONTEST Master$" -UnknownString_81AFF7B:: @ 81AFF7B +gTextStoryteller_Story24Action:: @ 81AFF7B .string "Won CONTESTS$" -UnknownString_81AFF88:: @ 81AFF88 +gTextStoryteller_Story24Text:: @ 81AFF88 .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER won CONTESTS\n" @@ -386,13 +386,13 @@ UnknownString_81AFF88:: @ 81AFF88 .string "{STR_VAR_3} must be an incredible\n" .string "CONTEST master!$" -UnknownString_81AFFFB:: @ 81AFFFB +gTextStoryteller_Story25Title:: @ 81AFFFB .string "The Happy Shopper$" -UnknownString_81B000D:: @ 81B000D +gTextStoryteller_Story25Action:: @ 81B000D .string "Shopped$" -UnknownString_81B0015:: @ 81B0015 +gTextStoryteller_Story25Text:: @ 81B0015 .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER bought items in shops\n" @@ -400,13 +400,13 @@ UnknownString_81B0015:: @ 81B0015 .string "{STR_VAR_3} must be one of those\n" .string "people who are born to shop.$" -UnknownString_81B009D:: @ 81B009D +gTextStoryteller_Story26Title:: @ 81B009D .string "The Item-Finding TRAINER$" -UnknownString_81B00B6:: @ 81B00B6 +gTextStoryteller_Story26Action:: @ 81B00B6 .string "Used an ITEMFINDER$" -UnknownString_81B00C9:: @ 81B00C9 +gTextStoryteller_Story26Text:: @ 81B00C9 .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER used an ITEMFINDER\n" @@ -414,13 +414,13 @@ UnknownString_81B00C9:: @ 81B00C9 .string "{STR_VAR_3} must enjoy scouring the\n" .string "ground for hidden items!$" -UnknownString_81B014D:: @ 81B014D +gTextStoryteller_Story27Title:: @ 81B014D .string "The Rain-Soaked TRAINER$" -UnknownString_81B0165:: @ 81B0165 +gTextStoryteller_Story27Action:: @ 81B0165 .string "Got rained on$" -UnknownString_81B0173:: @ 81B0173 +gTextStoryteller_Story27Text:: @ 81B0173 .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER got soaked by rain\n" @@ -428,13 +428,13 @@ UnknownString_81B0173:: @ 81B0173 .string "{STR_VAR_3}’s charisma must even\n" .string "attract rain!$" -UnknownString_81B01E9:: @ 81B01E9 +gTextStoryteller_Story28Title:: @ 81B01E9 .string "The Avid POKéDEX Reader$" -UnknownString_81B0201:: @ 81B0201 +gTextStoryteller_Story28Action:: @ 81B0201 .string "Checked a POKéDEX$" -UnknownString_81B0213:: @ 81B0213 +gTextStoryteller_Story28Text:: @ 81B0213 .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER checked a POKéDEX\n" @@ -442,13 +442,13 @@ UnknownString_81B0213:: @ 81B0213 .string "{STR_VAR_3} must love inspecting\n" .string "POKéMON in a POKéDEX!$" -UnknownString_81B0290:: @ 81B0290 +gTextStoryteller_Story29Title:: @ 81B0290 .string "The RIBBON Collector$" -UnknownString_81B02A5:: @ 81B02A5 +gTextStoryteller_Story29Action:: @ 81B02A5 .string "Received RIBBONS$" -UnknownString_81B02B6:: @ 81B02B6 +gTextStoryteller_Story29Text:: @ 81B02B6 .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER received RIBBONS\n" @@ -456,13 +456,13 @@ UnknownString_81B02B6:: @ 81B02B6 .string "{STR_VAR_3} must be a TRAINER who\n" .string "loves to collect RIBBONS!$" -UnknownString_81B0337:: @ 81B0337 +gTextStoryteller_Story30Title:: @ 81B0337 .string "The Ledge-Jumping TRAINER$" -UnknownString_81B0351:: @ 81B0351 +gTextStoryteller_Story30Action:: @ 81B0351 .string "Jumped down ledges$" -UnknownString_81B0364:: @ 81B0364 +gTextStoryteller_Story30Text:: @ 81B0364 .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER jumped down ledges\n" @@ -470,26 +470,26 @@ UnknownString_81B0364:: @ 81B0364 .string "If there’s a ledge to be jumped,\n" .string "{STR_VAR_3} can’t ignore it!$" -UnknownString_81B03E9:: @ 81B03E9 +gTextStoryteller_Story31Title:: @ 81B03E9 .string "The Legendary TV Viewer$" -UnknownString_81B0401:: @ 81B0401 +gTextStoryteller_Story31Action:: @ 81B0401 .string "Watched TV$" -UnknownString_81B040C:: @ 81B040C +gTextStoryteller_Story31Text:: @ 81B040C .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER watched TV\n" .string "{STR_VAR_1} times!\p" .string "{STR_VAR_3} must love watching TV!$" -UnknownString_81B046E:: @ 81B046E +gTextStoryteller_Story32Title:: @ 81B046E .string "The Time-Conscious TRAINER$" -UnknownString_81B0489:: @ 81B0489 +gTextStoryteller_Story32Action:: @ 81B0489 .string "Checked the time$" -UnknownString_81B049A:: @ 81B049A +gTextStoryteller_Story32Text:: @ 81B049A .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER checked the time\n" @@ -497,13 +497,13 @@ UnknownString_81B049A:: @ 81B049A .string "{STR_VAR_3} must be a punctual TRAINER\n" .string "who’s conscious of the time.$" -UnknownString_81B0523:: @ 81B0523 +gTextStoryteller_Story33Title:: @ 81B0523 .string "The POKéMON LOTTERY Wizard$" -UnknownString_81B053E:: @ 81B053E +gTextStoryteller_Story33Action:: @ 81B053E .string "Won POKéMON LOTTERIES$" -UnknownString_81B0554:: @ 81B0554 +gTextStoryteller_Story33Text:: @ 81B0554 .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER won POKéMON LOTTERIES\n" @@ -511,13 +511,13 @@ UnknownString_81B0554:: @ 81B0554 .string "{STR_VAR_3} must have many friends\n" .string "to trade POKéMON with!$" -UnknownString_81B05D8:: @ 81B05D8 +gTextStoryteller_Story34Title:: @ 81B05D8 .string "The DAY CARE-Using Trainer$" -UnknownString_81B05F3:: @ 81B05F3 +gTextStoryteller_Story34Action:: @ 81B05F3 .string "Left POKéMON at the DAY CARE$" -UnknownString_81B0610:: @ 81B0610 +gTextStoryteller_Story34Text:: @ 81B0610 .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER left POKéMON with the\n" @@ -525,13 +525,13 @@ UnknownString_81B0610:: @ 81B0610 .string "{STR_VAR_3} must be a real go-getter\n" .string "who raises POKéMON aggressively!$" -UnknownString_81B06A9:: @ 81B06A9 +gTextStoryteller_Story35Title:: @ 81B06A9 .string "The CABLE CAR-Loving TRAINER$" -UnknownString_81B06C6:: @ 81B06C6 +gTextStoryteller_Story35Action:: @ 81B06C6 .string "Rode the CABLE CAR$" -UnknownString_81B06D9:: @ 81B06D9 +gTextStoryteller_Story35Text:: @ 81B06D9 .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER rode the CABLE CAR\n" @@ -539,13 +539,13 @@ UnknownString_81B06D9:: @ 81B06D9 .string "{STR_VAR_3} must be a busy TRAINER\n" .string "who’s up and down all the time!$" -UnknownString_81B0763:: @ 81B0763 +gTextStoryteller_Story36Title:: @ 81B0763 .string "The Hot Spring-Loving TRAINER$" -UnknownString_81B0781:: @ 81B0781 +gTextStoryteller_Story36Action:: @ 81B0781 .string "Bathed in hot springs$" -UnknownString_81B0797:: @ 81B0797 +gTextStoryteller_Story36Text:: @ 81B0797 .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER bathed in hot springs\n" diff --git a/data/text/trader.inc b/data/text/trader.inc index dba63bcf8..599344091 100644 --- a/data/text/trader.inc +++ b/data/text/trader.inc @@ -1,57 +1,57 @@ -MauvilleCity_PokemonCenter_1F_Text_1AE88F:: @ 81AE88F +gTextTrader_Introduction:: @ 81AE88F .string "Hi, I’m the TRADER.\n" .string "Want to trade decorations with me?$" -MauvilleCity_PokemonCenter_1F_Text_1AE8C6:: @ 81AE8C6 +gTextTrader_FeelUnwanted1:: @ 81AE8C6 .string "Oh...\n" .string "I feel unwanted...$" -MauvilleCity_PokemonCenter_1F_Text_1AE8DF:: @ 81AE8DF +gTextTrader_TradedAlready:: @ 81AE8DF .string "But we’ve traded decorations already,\n" .string "you and I.$" -MauvilleCity_PokemonCenter_1F_Text_1AE910:: @ 81AE910 +gTextTrader_MenuPrompt:: @ 81AE910 .string "If you see any decorative item that\n" .string "you want of mine, speak up.$" -MauvilleCity_PokemonCenter_1F_Text_1AE950:: @ 81AE950 +gTextTrader_DontWantAnything:: @ 81AE950 .string "You don’t want anything?\n" .string "I feel unwanted...$" -MauvilleCity_PokemonCenter_1F_Text_1AE97C:: @ 81AE97C +gTextTrader_ItemOnceBelongedTo:: @ 81AE97C .string "That decorative item once belonged\n" .string "to {STR_VAR_1}.\p" .string "Do you want it?$" -MauvilleCity_PokemonCenter_1F_Text_1AE9B6:: @ 81AE9B6 +gTextTrader_YouDontHaveDecorations:: @ 81AE9B6 .string "Uh... Wait a second. You don’t have a\n" .string "single piece of decoration!$" -MauvilleCity_PokemonCenter_1F_Text_1AE9F8:: @ 81AE9F8 +gTextTrader_PickDecorationYoullTrade:: @ 81AE9F8 .string "Okay, pick the decoration that you’ll\n" .string "trade to me.$" -MauvilleCity_PokemonCenter_1F_Text_1AEA2B:: @ 81AEA2B +gTextTrader_FeelUnwanted2:: @ 81AEA2B .string "You won’t trade with me?\n" .string "I feel unwanted...$" -MauvilleCity_PokemonCenter_1F_Text_1AEA57:: @ 81AEA57 +gTextTrader_NoRoomForThis:: @ 81AEA57 .string "You’ve got all the {STR_VAR_2}S that can\n" .string "be stored. You’ve no room for this.$" -MauvilleCity_PokemonCenter_1F_Text_1AEA9B:: @ 81AEA9B +gTextTrader_SoWellTrade:: @ 81AEA9B .string "Okay, so we’ll trade my {STR_VAR_3}\n" .string "for your {STR_VAR_2}?$" -MauvilleCity_PokemonCenter_1F_Text_1AEAC3:: @ 81AEAC3 +gTextTrader_InUseYouCantTradeIt:: @ 81AEAC3 .string "That piece of decoration is in use.\n" .string "You can’t trade it.$" -MauvilleCity_PokemonCenter_1F_Text_1AEAFB:: @ 81AEAFB +gTextTrader_ThenWellTrade:: @ 81AEAFB .string "Then we’ll trade!\n" .string "I’ll send my decoration to your PC.$" -MauvilleCity_PokemonCenter_1F_Text_1AEB31:: @ 81AEB31 +gTextTrader_ICantTradeThatOneAway:: @ 81AEB31 .string "Oops! Sorry!\n" .string "That’s a really rare piece of decoration.\l" .string "I can’t trade that one away!\p" diff --git a/data/trade.s b/data/trade.s deleted file mode 100644 index 8f96a72b1..000000000 --- a/data/trade.s +++ /dev/null @@ -1,774 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - - .align 2 - .byte 0x90, 0x08, 0x00, 0x00 - .byte 0xC0, 0x3A, 0x00, 0x00 - .byte 0x1C, 0x00, 0x00, 0x00 - .byte 0x30, 0x05, 0x00, 0x00 - .byte 0x24, 0x00, 0x00, 0x00 - .byte 0x64, 0x00, 0x00, 0x00 - .byte 0xD8, 0x04, 0x00, 0x00 - - .align 1 -gTradeMovesBoxTilemap:: @ 820ABF0 - .incbin "graphics/trade/moves_box_map.bin" - - .align 1 -gTradePartyBoxTilemap:: @ 820ADEE - .incbin "graphics/trade/party_box_map.bin" - - .align 2 -gTradeStripesBG2Tilemap:: @ 820AFEC - .incbin "graphics/trade/stripes_bg2_map.bin" - - .align 2 -gTradeStripesBG3Tilemap:: @ 820B7EC - .incbin "graphics/trade/stripes_bg3_map.bin" - - .align 2 -gOamData_820BFEC:: @ 820BFEC - .2byte 0x4000 - .2byte 0x8000 - .2byte 0x0400 - - .align 2 -gSpriteAnim_820BFF4:: @ 820BFF4 - obj_image_anim_frame 0, 5 - obj_image_anim_end - - .align 2 -gSpriteAnim_820BFFC:: @ 820BFFC - obj_image_anim_frame 8, 5 - obj_image_anim_end - - .align 2 -gSpriteAnim_820C004:: @ 820C004 - obj_image_anim_frame 16, 5 - obj_image_anim_end - - .align 2 -gSpriteAnim_820C00C:: @ 820C00C - obj_image_anim_frame 24, 5 - obj_image_anim_end - - .align 2 -gSpriteAnim_820C014:: @ 820C014 - obj_image_anim_frame 32, 5 - obj_image_anim_end - - .align 2 -gSpriteAnim_820C01C:: @ 820C01C - obj_image_anim_frame 40, 5 - obj_image_anim_end - - .align 2 -gSpriteAnimTable_820C024:: @ 820C024 - .4byte gSpriteAnim_820BFF4 - .4byte gSpriteAnim_820BFFC - .4byte gSpriteAnim_820C004 - .4byte gSpriteAnim_820C00C - .4byte gSpriteAnim_820C014 - .4byte gSpriteAnim_820C01C - - .align 2 -TradeScreenTextPalette: @ 820C03C - .incbin "graphics/trade/text1.gbapal" - .incbin "graphics/trade/text2.gbapal" @ unused? - - .align 2 -gUnknown_0820C07C:: @ 820C07C - obj_tiles 0x0201d000, 256, 0x00c8 - obj_tiles 0x0201d100, 256, 0x00c9 - obj_tiles 0x0201d200, 256, 0x00ca - obj_tiles 0x0201d300, 256, 0x00cb - obj_tiles 0x0201d400, 256, 0x00cc - obj_tiles 0x0201d500, 256, 0x00cd - obj_tiles 0x0201d600, 256, 0x00ce - obj_tiles 0x0201d700, 256, 0x00cf - obj_tiles 0x0201d800, 256, 0x00d0 - obj_tiles 0x0201d900, 256, 0x00d1 - obj_tiles 0x0201da00, 256, 0x00d2 - obj_tiles 0x0201db00, 256, 0x00d3 - obj_tiles 0x0201dc00, 256, 0x00d4 - - .align 2 -gSpritePalette_TradeScreenText:: @ 820C0E4 - obj_pal TradeScreenTextPalette, 4925 - - .align 2 -gSpriteTemplate_820C0EC:: @ 820C0EC - spr_template 200, 4925, gOamData_820BFEC, gSpriteAnimTable_820C024, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - - .align 2 -gOamData_820C104:: @ 820C104 - .2byte 0x4000 - .2byte 0xC000 - .2byte 0x0400 - - .align 2 -gSpriteAnim_820C10C:: @ 820C10C - obj_image_anim_frame 0, 5 - obj_image_anim_end - - .align 2 -gSpriteAnim_820C114:: @ 820C114 - obj_image_anim_frame 32, 5 - obj_image_anim_end - - .align 2 -gSpriteAnimTable_820C11C:: @ 820C11C - .4byte gSpriteAnim_820C10C - .4byte gSpriteAnim_820C114 - - .align 2 -gUnknown_0820C124:: @ 820C124 - obj_tiles gUnknown_08EA1DEC, 0x800, 300 - - .align 2 -gUnknown_0820C12C:: @ 820C12C - obj_pal gUnknown_08EA0328, 2345 - - .align 2 -gSpriteTemplate_820C134:: @ 820C134 - spr_template 300, 2345, gOamData_820C104, gSpriteAnimTable_820C11C, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - - .align 2 -gUnknown_0820C14C:: @ 820C14C - .4byte TradeText_Cancel - .4byte TradeText_ChoosePoke - .4byte TradeText_Summary1 - .4byte TradeText_Trade1 - .4byte TradeText_CancelTradePrompt - .4byte TradeText_PressBToExit - -@ This is used to determine the next mon to select when the D-Pad is -@ pressed in a given direction. -@ Note that the mons are laid out like this. -@ 0-5 are the player's party and 6-11 are the trading partner's party. -@ 12 is the cancel button. -@ 0 1 6 7 -@ 2 3 8 9 -@ 4 5 10 11 -@ 12 -gTradeNextSelectedMonTable:: @ 820C164 - @ 0 - .byte 4, 2, 12, 12, 0, 0 @ up - .byte 2, 4, 12, 12, 0, 0 @ down - .byte 7, 6, 1, 0, 0, 0 @ left - .byte 1, 6, 7, 0, 0, 0 @ right - @ 1 - .byte 5, 3, 12, 12, 0, 0 @ up - .byte 3, 5, 12, 12, 0, 0 @ down - .byte 0, 7, 6, 1, 0, 0 @ left - .byte 6, 7, 0, 1, 0, 0 @ right - @ 2 - .byte 0, 0, 0, 0, 0, 0 @ up - .byte 4, 0, 0, 0, 0, 0 @ down - .byte 9, 8, 7, 6, 0, 0 @ left - .byte 3, 1, 0, 0, 0, 0 @ right - @ 3 - .byte 1, 1, 1, 1, 0, 0 @ up - .byte 5, 1, 1, 1, 0, 0 @ down - .byte 2, 9, 8, 7, 0, 0 @ left - .byte 8, 9, 6, 6, 0, 0 @ right - @ 4 - .byte 2, 2, 2, 2, 0, 0 @ up - .byte 0, 0, 0, 0, 0, 0 @ down - .byte 11, 10, 9, 8, 7, 6 @ left - .byte 5, 3, 1, 0, 0, 0 @ right - @ 5 - .byte 3, 3, 3, 3, 0, 0 @ up - .byte 1, 1, 1, 1, 0, 0 @ down - .byte 4, 4, 4, 4, 0, 0 @ left - .byte 10, 8, 6, 0, 0, 0 @ right - @ 6 - .byte 10, 8, 12, 0, 0, 0 @ up - .byte 8, 10, 12, 0, 0, 0 @ down - .byte 1, 0, 0, 0, 0, 0 @ left - .byte 7, 0, 1, 0, 0, 0 @ right - @ 7 - .byte 12, 0, 0, 0, 0, 0 @ up - .byte 9, 12, 0, 0, 0, 0 @ down - .byte 6, 0, 0, 0, 0, 0 @ left - .byte 0, 0, 0, 0, 0, 0 @ right - @ 8 - .byte 6, 0, 0, 0, 0, 0 @ up - .byte 10, 6, 0, 0, 0, 0 @ down - .byte 3, 2, 1, 0, 0, 0 @ left - .byte 9, 7, 0, 0, 0, 0 @ right - @ 9 - .byte 7, 0, 0, 0, 0, 0 @ up - .byte 11, 12, 0, 0, 0, 0 @ down - .byte 8, 0, 0, 0, 0, 0 @ left - .byte 2, 1, 0, 0, 0, 0 @ right - @ 10 - .byte 8, 0, 0, 0, 0, 0 @ up - .byte 6, 0, 0, 0, 0, 0 @ down - .byte 5, 4, 3, 2, 1, 0 @ left - .byte 11, 9, 7, 0, 0, 0 @ right - @ 11 - .byte 9, 0, 0, 0, 0, 0 @ up - .byte 12, 0, 0, 0, 0, 0 @ down - .byte 10, 0, 0, 0, 0, 0 @ left - .byte 4, 2, 0, 0, 0, 0 @ right - @ 12 - .byte 11, 9, 7, 6, 0, 0 @ up - .byte 7, 6, 0, 0, 0, 0 @ down - .byte 12, 0, 0, 0, 0, 0 @ left - .byte 12, 0, 0, 0, 0, 0 @ right - -@ The coordinates are in units of tiles. -@ These are used for both mon icons and the selected mon cursor, -@ but the origins of the coordinates differ. -gTradeMonSpriteCoords:: @ 820C29C - @ left-side party - .byte 1, 5 - .byte 8, 5 - .byte 1, 10 - .byte 8, 10 - .byte 1, 15 - .byte 8, 15 - - @ right-side party - .byte 16, 5 - .byte 23, 5 - .byte 16, 10 - .byte 23, 10 - .byte 16, 15 - .byte 23, 15 - - @ cancel button - .byte 23, 18 - -gTradeLevelDisplayCoords:: @ 820C2B6 - @ left-side party - .byte 5, 4 - .byte 12, 4 - .byte 5, 9 - .byte 12, 9 - .byte 5, 14 - .byte 12, 14 - - @ right-side party - .byte 20, 4 - .byte 27, 4 - .byte 20, 9 - .byte 27, 9 - .byte 20, 14 - .byte 27, 14 - -gTradeMonBoxCoords:: @ 820C2CE - @ left-side party - .byte 1, 3 - .byte 8, 3 - .byte 1, 8 - .byte 8, 8 - .byte 1, 13 - .byte 8, 13 - - @ right-side party - .byte 16, 3 - .byte 23, 3 - .byte 16, 8 - .byte 23, 8 - .byte 16, 13 - .byte 23, 13 - -gTradeUnknownSpriteCoords:: @ 820C2E6 - .byte 59, 10 - .byte 179, 10 - .byte 59, 10 - .byte 179, 10 - - .align 2 -gUnknown_0820C2F0:: @ 820C2F0 - .4byte TradeText_LinkStandby - .4byte TradeText_TradeCancelled - .4byte TradeText_OnlyPoke - .4byte TradeText_NonTradablePoke - .4byte TradeText_WaitingForFriend - .4byte TradeText_WantToTrade - -gTradeMessageWindowRects:: @ 820C308 - .byte 8, 7, 22, 12 - .byte 8, 7, 22, 12 - .byte 6, 7, 24, 12 - .byte 6, 7, 24, 12 - .byte 8, 7, 22, 12 - .byte 7, 7, 23, 12 - - .align 2 -gUnknown_0820C320:: @ 820C320 - .4byte TradeText_Summary2, sub_804A9F4 @unknown - .4byte TradeText_Trade2, sub_804AA00 - -gUnknown_0820C330:: @ 820C330 - .byte 0, 14 - .byte 15, 29 - -gUnknown_0820C334:: @ 820C334 - .byte 3, 5 - .byte 3, 7 - .byte 18, 5 - .byte 18, 7 - -gOtherText_Terminator:: - .string "$" - -gOtherText_MaleSymbol3:: @ 820C33D - .string "♂$" - -gOtherText_FemaleSymbol3:: @ 820C33F - .string "♀$" - -gOtherText_GenderlessSymbol:: @ 820C341 - .string "$$" - - .align 2 - .4byte gTileBuffer - -@ Unused debug strings? - .string "かいめの そうしん$", 13 - .string "かいめの じゅしん$", 13 - .string "ポケモンアイコンセット$", 13 - .string "OBJテキストセット$", 13 - .string "セルセット$", 13 - .string "OBJテキストADD$", 13 - .string "システムメッセージADD$", 13 - .string "はいけいセット$", 13 - -@ Shedinja's Japanese name -@ sub_8048D44 compares a pokemon name with this string -gUnknown_0820C3B0:: @ 820C3B0 - .string "ヌケニン$" - - .string "こうかんせいりつ $" @ trade completed - .string "だめだたらしいよ $" @ it's no good (trade failed maybe?) - -gUnknown_0820C3D1:: @ 820C3D1 - .byte 4, 3 - .byte 19, 3 - - .align 2 -gTradeBallPalette:: @ 820C3D8 - .incbin "graphics/trade/ball.gbapal" - - .align 2 -gTradeBallTiles:: @ 820C3F8 - .incbin "graphics/trade/ball.4bpp" - - .align 2 -gUnknown_0820C9F8:: @ 820C9F8 - .incbin "graphics/trade/unknown.gbapal" - .incbin "graphics/trade/gba.gbapal" - .incbin "graphics/trade/shadow.gbapal" - .space 32 - .incbin "graphics/trade/misc.gbapal" - - .align 2 -gUnknown_0820CA98:: @ 820CA98 - .incbin "graphics/trade/gba.4bpp" - .incbin "graphics/trade/shadow.4bpp" - - .align 2 -gUnknown_0820DD98:: @ 820DD98 - .incbin "graphics/trade/pokeball_symbol.8bpp" - - .align 2 -gUnknown_0820F798:: @ 820F798 - .incbin "graphics/trade/shadow_map.bin" - - .align 2 -gUnknown_08210798:: @ 8210798 - .incbin "graphics/trade/gba_map.bin" - - .align 2 -gUnknown_08211798:: @ 8211798 - .incbin "graphics/trade/cable_closeup_map.bin" - - .align 2 -gUnknown_08211F98:: @ 8211F98 - .incbin "graphics/trade/pokeball_symbol_map.bin" - - .incbin "graphics/unused/unknown/8212098.gbapal" - - .align 2 -gTradeCableEndPalette:: @ 82120B8 - .incbin "graphics/trade/cable_end.gbapal" - - .incbin "graphics/unused/unknown/82120D8.gbapal" - - .space 32 - - .align 2 -gTradeGlowPalette:: @ 8212118 - .incbin "graphics/trade/glow.gbapal" - - .align 2 -gTradeGlow1Tiles:: @ 8212138 - .incbin "graphics/trade/glow1.4bpp" - - .align 2 -gTradeGlow2Tiles:: @ 8212338 - .incbin "graphics/trade/glow2.4bpp" - - .align 2 -gTradeCableEndTiles:: @ 8212538 - .incbin "graphics/trade/cable_end.4bpp" - - .align 2 -gTradeGBAScreenTiles:: @ 8212738 - .incbin "graphics/trade/gba_screen.4bpp" - - .align 2 -gUnknown_08213738:: @ 8213738 - .incbin "graphics/trade/gba_affine.8bpp" - - .align 2 -gUnknown_08215778:: @ 8215778 - .incbin "graphics/trade/gba_affine_map.bin" - - .align 2 -gOamData_8215878:: @ 8215878 - .2byte 0x0100 - .2byte 0x4000 - .2byte 0x0000 - - .align 2 -gSpriteAnim_8215880:: @ 8215880 - obj_image_anim_frame 0, 3 - obj_image_anim_frame 4, 3 - obj_image_anim_frame 8, 3 - obj_image_anim_frame 12, 3 - obj_image_anim_frame 16, 3 - obj_image_anim_frame 20, 3 - obj_image_anim_frame 24, 3 - obj_image_anim_frame 28, 3 - obj_image_anim_frame 32, 3 - obj_image_anim_frame 36, 3 - obj_image_anim_frame 40, 3 - obj_image_anim_frame 44, 3 - obj_image_anim_loop 1 - obj_image_anim_frame 0, 3 - obj_image_anim_end - - .align 2 -gSpriteAnim_82158BC:: @ 82158BC - obj_image_anim_frame 0, 3 - obj_image_anim_frame 4, 3 - obj_image_anim_frame 8, 3 - obj_image_anim_frame 12, 3 - obj_image_anim_frame 16, 3 - obj_image_anim_frame 20, 3 - obj_image_anim_frame 24, 3 - obj_image_anim_frame 28, 3 - obj_image_anim_frame 32, 3 - obj_image_anim_frame 36, 3 - obj_image_anim_frame 40, 3 - obj_image_anim_frame 44, 3 - obj_image_anim_loop 2 - obj_image_anim_frame 0, 3 - obj_image_anim_end - - .align 2 -gSpriteAnimTable_82158F8:: @ 82158F8 - .4byte gSpriteAnim_8215880 - .4byte gSpriteAnim_82158BC - - .align 2 -gSpriteAffineAnim_8215900:: @ 8215900 - obj_rot_scal_anim_frame 0x0, 0x0, 0, 1 - obj_rot_scal_anim_end - - .align 2 -gSpriteAffineAnim_8215910:: @ 8215910 - obj_rot_scal_anim_frame 0xFFF8, 0x0, 0, 20 - obj_rot_scal_anim_end - - .align 2 -gSpriteAffineAnim_8215920:: @ 8215920 - obj_rot_scal_anim_frame 0x60, 0x100, 0, 0 - obj_rot_scal_anim_frame 0x0, 0x0, 0, 5 - obj_rot_scal_anim_frame 0x8, 0x0, 0, 20 - obj_rot_scal_anim_end - - .align 2 -gSpriteAffineAnimTable_8215940:: @ 8215940 - .4byte gSpriteAffineAnim_8215900 - .4byte gSpriteAffineAnim_8215910 - .4byte gSpriteAffineAnim_8215920 - - .align 2 -gUnknown_0821594C:: @ 821594C - obj_tiles gTradeBallTiles, 0x600, 5557 - - .align 2 -gUnknown_08215954:: @ 8215954 - obj_pal gTradeBallPalette, 5558 - - .align 2 -gSpriteTemplate_821595C:: @ 821595C - spr_template 5557, 5558, gOamData_8215878, gSpriteAnimTable_82158F8, NULL, gSpriteAffineAnimTable_8215940, sub_804D6BC - - .align 2 -gOamData_8215974:: @ 8215974 - .2byte 0x0500 - .2byte 0x8000 - .2byte 0x0400 - - .align 2 -gSpriteAnim_821597C:: @ 821597C - obj_image_anim_frame 0, 5, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_end - - .align 2 -gSpriteAnimTable_8215984:: @ 8215984 - .4byte gSpriteAnim_821597C - - .align 2 -gSpriteAffineAnim_8215988:: @ 8215988 - obj_rot_scal_anim_frame 0xFFF6, 0xFFF6, 0, 5 - obj_rot_scal_anim_frame 0xA, 0xA, 0, 5 - obj_rot_scal_anim_jump 0 - - .align 2 -gSpriteAffineAnimTable_82159A0:: @ 82159A0 - .4byte gSpriteAffineAnim_8215988 - - .align 2 -gUnknown_082159A4:: @ 82159A4 - obj_tiles gTradeGlow1Tiles, 0x200, 5550 - - .align 2 -gUnknown_082159AC:: @ 82159AC - obj_pal gTradeGlowPalette, 5551 - - .align 2 -gUnknown_082159B4:: @ 82159B4 - obj_pal gTradeCableEndPalette, 5555 - - .align 2 -gSpriteTemplate_82159BC:: @ 82159BC - spr_template 5550, 5551, gOamData_8215974, gSpriteAnimTable_8215984, NULL, gSpriteAffineAnimTable_82159A0, sub_804B058 - - .align 2 -gOamData_82159D4:: @ 82159D4 - .2byte 0x8000 - .2byte 0x8000 - .2byte 0x0400 - - .align 2 -gSpriteAnim_82159DC:: @ 82159DC - obj_image_anim_frame 0, 5, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_end - - .align 2 -gSpriteAnim_82159E4:: @ 82159E4 - obj_image_anim_frame 8, 5, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_end - - .align 2 -gSpriteAnimTable_82159EC:: @ 82159EC - .4byte gSpriteAnim_82159DC - .4byte gSpriteAnim_82159E4 - - .align 2 -gUnknown_082159F4:: @ 82159F4 - obj_tiles gTradeGlow2Tiles, 0x300, 5552 - - .align 2 -gSpriteTemplate_82159FC:: @ 82159FC - spr_template 5552, 5551, gOamData_82159D4, gSpriteAnimTable_82159EC, NULL, gDummySpriteAffineAnimTable, sub_804B07C - - .align 2 -gOamData_8215A14:: @ 8215A14 - .2byte 0x8000 - .2byte 0x8000 - .2byte 0x0400 - - .align 2 -gSpriteAnim_8215A1C:: @ 8215A1C - obj_image_anim_frame 0, 10 - obj_image_anim_end - - .align 2 -gSpriteAnimTable_8215A24:: @ 8215A24 - .4byte gSpriteAnim_8215A1C - - .align 2 -gUnknown_08215A28:: @ 8215A28 - obj_tiles gTradeCableEndTiles, 0x100, 5554 - - .align 2 -gSpriteTemplate_8215A30:: @ 8215A30 - spr_template 5554, 5555, gOamData_8215A14, gSpriteAnimTable_8215A24, NULL, gDummySpriteAffineAnimTable, sub_804B0BC - - .align 2 -gOamData_8215A48:: @ 8215A48 - .2byte 0x4000 - .2byte 0xC000 - .2byte 0x0400 - - .align 2 -gSpriteAnim_8215A50:: @ 8215A50 - obj_image_anim_frame 0, 2, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 32, 2, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 64, 2, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 96, 2, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 64, 2, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 32, 2, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 0, 2, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_loop 8 - obj_image_anim_end - - .align 2 -gSpriteAnimTable_8215A74:: @ 8215A74 - .4byte gSpriteAnim_8215A50 - - .align 2 -gUnknown_08215A78:: @ 8215A78 - obj_tiles gTradeGBAScreenTiles, 0x1000, 5556 - - .align 2 -gSpriteTemplate_8215A80:: @ 8215A80 - spr_template 5556, 5555, gOamData_8215A48, gSpriteAnimTable_8215A74, NULL, gDummySpriteAffineAnimTable, sub_804B104 - - .align 1 -gTradeGlow2PaletteAnimTable:: @ 8215A98 - .2byte 0x7F12 - .2byte 0x7F12 - .2byte 0x7F12 - .2byte 0x7FFF - .2byte 0x7FFF - .2byte 0x7FFF - .2byte 0x7F12 - .2byte 0x7F12 - .2byte 0x7F12 - .2byte 0x7FFF - .2byte 0x7FFF - .2byte 0x7FFF - - .align 2 -gSpriteAffineAnim_8215AB0:: @ 8215AB0 - obj_rot_scal_anim_frame 0xFF00, 0x100, 0, 0 - obj_rot_scal_anim_jump 0 - - .align 2 -gSpriteAffineAnimTable_8215AC0:: @ 8215AC0 - .4byte gSpriteAffineAnim_8215AB0 - -@ 8215AC4 - .include "data/ingame_trades.inc" - -gTradeBallVerticalVelocityTable:: @ 8215BA0 - .byte 0 - .byte 0 - .byte 1 - .byte 0 - .byte 1 - .byte 0 - .byte 1 - .byte 1 - .byte 1 - .byte 1 - .byte 2 - .byte 2 - .byte 2 - .byte 2 - .byte 3 - .byte 3 - .byte 3 - .byte 3 - .byte 4 - .byte 4 - .byte 4 - .byte 4 - .byte -4 - .byte -4 - .byte -4 - .byte -3 - .byte -3 - .byte -3 - .byte -3 - .byte -2 - .byte -2 - .byte -2 - .byte -2 - .byte -1 - .byte -1 - .byte -1 - .byte -1 - .byte 0 - .byte -1 - .byte 0 - .byte -1 - .byte 0 - .byte 0 - .byte 0 - .byte 0 - .byte 0 - .byte 1 - .byte 0 - .byte 1 - .byte 0 - .byte 1 - .byte 1 - .byte 1 - .byte 1 - .byte 2 - .byte 2 - .byte 2 - .byte 2 - .byte 3 - .byte 3 - .byte 3 - .byte 3 - .byte 4 - .byte 4 - .byte 4 - .byte 4 - .byte -4 - .byte -3 - .byte -3 - .byte -2 - .byte -2 - .byte -1 - .byte -1 - .byte -1 - .byte 0 - .byte -1 - .byte 0 - .byte 0 - .byte 0 - .byte 0 - .byte 0 - .byte 0 - .byte 1 - .byte 0 - .byte 1 - .byte 1 - .byte 1 - .byte 2 - .byte 2 - .byte 3 - .byte 3 - .byte 4 - .byte -4 - .byte -3 - .byte -2 - .byte -1 - .byte -1 - .byte -1 - .byte 0 - .byte 0 - .byte 0 - .byte 0 - .byte 1 - .byte 0 - .byte 1 - .byte 1 - .byte 2 - .byte 3 diff --git a/data/trader.s b/data/trader.s deleted file mode 100644 index 5029338d2..000000000 --- a/data/trader.s +++ /dev/null @@ -1,17 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - - .align 2 -gUnknown_083F62D8:: @ 83F62D8 - .4byte SecretBaseText_Tristan - .4byte SecretBaseText_Philip - .4byte SecretBaseText_Dennis - .4byte SecretBaseText_Roberto - -gTraderDecorations:: @ 83F62E8 - .byte DECOR_DUSKULL_DOLL - .byte DECOR_BALL_CUSHION - .byte DECOR_TIRE - .byte DECOR_PRETTY_FLOWERS diff --git a/data/trainer_card.s b/data/trainer_card.s deleted file mode 100644 index 75e0041dd..000000000 --- a/data/trainer_card.s +++ /dev/null @@ -1,62 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - - .align 2 -gBadgesTiles:: @ 83B5AB8 - .incbin "graphics/trainer_card/badges.4bpp" - -@ XXX: what is this? - .align 2 - .4byte 0x2000000 - - .align 2 -gUnknown_083B5EBC:: @ 83B5EBC - .4byte sub_8093864 - .4byte sub_80938A8 - .4byte sub_80938CC - .4byte sub_8093918 - .4byte sub_8093938 - .4byte sub_8093954 - .4byte sub_8093980 - - .align 2 -gUnknown_083B5ED8:: @ 83B5ED8 - .4byte sub_8093AA0 - .4byte sub_8093AF0 - .4byte sub_8093C0C - .4byte sub_8093C38 - .4byte sub_8093D50 - - .align 2 -gUnknown_083B5EEC:: @ 83B5EEC - .4byte gUnknown_08E8CAC0 - .4byte gUnknown_08E8D4C0 - -gUnknown_083B5EF4:: @ 83B5EF4 - .string " : $" - - .align 2 -gUnknown_083B5EF8:: @ 83B5EF8 - .4byte gMenuTrainerCard0Star_Pal - .4byte gMenuTrainerCard1Star_Pal - .4byte gMenuTrainerCard2Star_Pal - .4byte gMenuTrainerCard3Star_Pal - .4byte gMenuTrainerCard4Star_Pal - -gUnknown_083B5F0C:: @ 83B5F0C - .incbin "graphics/trainer_card/83B5F0C.gbapal" - - .align 2 -gBadgesPalette:: @ 83B5F2C - .incbin "graphics/trainer_card/badges.gbapal" - -gUnknown_083B5F4C:: @ 83B5F4C - .incbin "graphics/trainer_card/83B5F4C.gbapal" - -gUnknown_083B5F6C:: @ 83B5F6C - .incbin "graphics/trainer_card/83B5F6C.gbapal" - -gUnknown_083B5F8C:: @ 83B5F8C - .incbin "graphics/trainer_card/83B5F8C_map.bin" diff --git a/data/trainer_see.s b/data/trainer_see.s index 57eeae061..04a787f0c 100644 --- a/data/trainer_see.s +++ b/data/trainer_see.s @@ -3,47 +3,6 @@ .section .rodata - .align 2 -gSpriteImage_839B308:: @ 839B308 - .incbin "graphics/unknown_sprites/839B4E0/0.4bpp" - - .align 2 -gSpriteImage_839B388:: @ 839B388 - .incbin "graphics/unknown_sprites/839B4E0/1.4bpp" - - .align 2 -gSpriteImage_839B408:: @ 839B408 - .incbin "graphics/unknown_sprites/839B408.4bpp" - - .align 2 -gIsTrainerInRange:: @ 839B488 - .4byte IsTrainerInRangeSouth - .4byte IsTrainerInRangeNorth - .4byte IsTrainerInRangeWest - .4byte IsTrainerInRangeEast - - .align 2 -gTrainerSeeFuncList:: @ 839B498 - .4byte sub_8084394 - .4byte sub_8084398 - .4byte sub_80843DC - .4byte sub_808441C - .4byte sub_8084478 - .4byte sub_8084534 - .4byte sub_8084578 - .4byte sub_80845AC - .4byte sub_80845C8 - .4byte sub_80845FC - .4byte sub_8084654 - .4byte sub_80846C8 - - .align 2 -gTrainerSeeFuncList2:: @ 839B4C8 - .4byte sub_80845C8 - .4byte sub_80845FC - .4byte sub_8084654 - .4byte sub_80846C8 - .align 2 gOamData_839B4D8:: @ 839B4D8 .2byte 0x0000 diff --git a/data/util.s b/data/util.s deleted file mode 100644 index 03c92a988..000000000 --- a/data/util.s +++ /dev/null @@ -1,70 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - - .align 2 -gBitTable:: @ 820872C - .4byte 0x00000001 - .4byte 0x00000002 - .4byte 0x00000004 - .4byte 0x00000008 - .4byte 0x00000010 - .4byte 0x00000020 - .4byte 0x00000040 - .4byte 0x00000080 - .4byte 0x00000100 - .4byte 0x00000200 - .4byte 0x00000400 - .4byte 0x00000800 - .4byte 0x00001000 - .4byte 0x00002000 - .4byte 0x00004000 - .4byte 0x00008000 - .4byte 0x00010000 - .4byte 0x00020000 - .4byte 0x00040000 - .4byte 0x00080000 - .4byte 0x00100000 - .4byte 0x00200000 - .4byte 0x00400000 - .4byte 0x00800000 - .4byte 0x01000000 - .4byte 0x02000000 - .4byte 0x04000000 - .4byte 0x08000000 - .4byte 0x10000000 - .4byte 0x20000000 - .4byte 0x40000000 - .4byte 0x80000000 - - .align 2 -gInvisibleSpriteTemplate:: @ 82087AC - spr_template 0, 0, gDummyOamData, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - - .align 2 -gSpriteDimensions:: @ 82087C4 - @ square - .byte 1, 1 - .byte 2, 2 - .byte 4, 4 - .byte 8, 8 - - @ horizontal rectangle - .byte 2, 1 - .byte 4, 1 - .byte 4, 2 - .byte 8, 4 - - @ vertical rectangle - .byte 1, 2 - .byte 1, 4 - .byte 2, 4 - .byte 4, 8 - -@ 82087DC - .include "data/crc16_table.inc" - - .align 2 -gMiscBlank_Gfx:: @ 82089DC - .incbin "graphics/interface/blank.4bpp" diff --git a/graphics-de/title_screen/logo_sapphire.pal b/graphics-de/title_screen/logo_sapphire.pal new file mode 100644 index 000000000..7b74308af --- /dev/null +++ b/graphics-de/title_screen/logo_sapphire.pal @@ -0,0 +1,227 @@ +JASC-PAL +0100 +224 +0 0 0 +0 0 0 +246 222 24 +255 238 16 +255 246 24 +246 246 41 +246 246 246 +246 255 255 +255 246 246 +8 8 8 +16 8 8 +0 0 255 +246 222 32 +246 222 41 +255 238 41 +246 238 238 +255 255 16 +255 255 24 +255 255 246 +255 255 255 +246 238 32 +255 230 24 +246 230 41 +246 238 41 +255 238 49 +255 246 32 +255 246 41 +255 255 32 +255 255 41 +16 8 16 +24 16 16 +24 16 24 +24 24 16 +24 24 24 +32 24 24 +32 32 24 +24 24 32 +41 32 32 +41 41 32 +90 82 82 +222 180 16 +0 0 131 +8 8 131 +16 8 230 +16 8 238 +8 0 255 +24 0 246 +24 0 255 +24 8 246 +24 8 255 +8 16 246 +172 172 172 +189 180 189 +197 197 197 +213 213 213 +230 230 230 +246 230 24 +246 230 32 +255 238 24 +255 238 32 +246 230 49 +246 238 49 +16 16 16 +16 16 24 +32 24 32 +32 32 32 +24 24 41 +24 32 41 +32 24 41 +32 32 41 +24 32 57 +24 41 65 +32 32 57 +32 41 57 +24 41 74 +32 32 74 +0 0 115 +24 32 106 +41 32 41 +41 41 41 +49 41 49 +41 41 65 +41 32 82 +41 32 98 +41 41 82 +41 41 90 +41 32 106 +41 24 115 +41 41 115 +41 49 115 +57 49 49 +57 49 57 +57 57 49 +65 57 57 +65 57 65 +74 65 65 +74 65 74 +74 74 82 +90 82 90 +90 90 90 +106 98 98 +106 106 106 +123 98 115 +139 106 106 +180 139 57 +189 148 49 +172 131 65 +180 148 65 +205 164 32 +205 172 24 +197 164 41 +197 172 49 +123 123 123 +139 123 106 +164 123 82 +156 131 98 +172 139 82 +172 156 106 +189 172 98 +197 189 82 +213 172 24 +222 180 24 +213 189 32 +222 189 24 +230 205 24 +238 213 24 +213 180 41 +222 197 41 +213 189 49 +213 197 74 +230 213 41 +230 222 41 +213 213 65 +230 222 57 +8 8 197 +16 8 197 +32 8 205 +41 8 197 +16 8 213 +16 8 222 +24 8 213 +32 8 213 +41 8 213 +41 8 222 +49 8 213 +57 8 213 +24 0 238 +24 8 230 +32 0 230 +32 8 230 +41 0 230 +41 0 238 +41 8 230 +41 8 238 +49 0 230 +49 8 230 +57 0 238 +57 8 238 +8 8 246 +8 8 255 +16 0 246 +16 0 255 +16 8 246 +16 8 255 +32 0 246 +32 0 255 +32 8 246 +32 8 255 +41 0 246 +41 8 246 +49 0 246 +57 0 246 +8 16 131 +24 24 131 +16 24 148 +32 24 156 +41 24 131 +41 24 156 +41 41 131 +41 41 148 +16 16 180 +24 16 197 +24 24 180 +24 32 180 +41 16 172 +41 16 189 +41 24 180 +49 32 189 +8 16 222 +16 16 213 +8 24 222 +16 24 222 +24 16 238 +16 16 246 +41 16 213 +41 24 213 +57 24 213 +57 32 213 +32 16 230 +32 24 222 +57 24 222 +49 16 230 +90 65 164 +98 57 156 +98 74 156 +98 82 148 +115 82 131 +115 90 156 +123 106 148 +139 115 139 +82 49 180 +82 57 172 +98 65 172 +106 82 172 +74 32 189 +74 32 205 +82 49 189 +82 49 197 +123 131 131 +131 131 131 +139 131 131 +139 139 139 +156 131 131 +156 148 156 diff --git a/graphics-de/title_screen/pokemon_sapphire.png b/graphics-de/title_screen/pokemon_sapphire.png new file mode 100644 index 000000000..2e451f746 Binary files /dev/null and b/graphics-de/title_screen/pokemon_sapphire.png differ diff --git a/graphics-de/title_screen/sapphireversion.png b/graphics-de/title_screen/sapphireversion.png new file mode 100644 index 000000000..3e3c31a09 Binary files /dev/null and b/graphics-de/title_screen/sapphireversion.png differ diff --git a/graphics/battle_anims/backgrounds/00.pal b/graphics/battle_anims/backgrounds/00.pal deleted file mode 100644 index a46b57c02..000000000 --- a/graphics/battle_anims/backgrounds/00.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 139 0 -230 57 156 -197 41 123 -164 32 98 -123 24 74 -82 16 49 -41 8 24 -0 0 0 -255 82 180 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/backgrounds/02.pal b/graphics/battle_anims/backgrounds/02.pal deleted file mode 100644 index c32ecc328..000000000 --- a/graphics/battle_anims/backgrounds/02.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -106 156 255 -123 139 222 -148 123 189 -164 106 156 -189 98 123 -205 82 90 -230 65 57 -255 57 32 diff --git a/graphics/battle_anims/backgrounds/03.pal b/graphics/battle_anims/backgrounds/03.pal deleted file mode 100644 index 0c87ad045..000000000 --- a/graphics/battle_anims/backgrounds/03.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 0 0 -164 0 0 -82 0 0 -0 0 0 -41 0 57 -82 0 115 -123 0 172 -148 0 131 -172 0 98 -197 0 65 -222 0 32 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/backgrounds/04.pal b/graphics/battle_anims/backgrounds/04.pal deleted file mode 100644 index 020e93b7a..000000000 --- a/graphics/battle_anims/backgrounds/04.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 164 115 -255 57 8 -255 90 8 -255 131 8 -255 172 8 -255 213 8 -255 255 8 -255 255 131 -255 255 255 -255 255 0 -65 0 0 -115 16 0 -172 32 0 -230 57 8 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/backgrounds/07.pal b/graphics/battle_anims/backgrounds/07.pal deleted file mode 100644 index d9c7f07f3..000000000 --- a/graphics/battle_anims/backgrounds/07.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -106 49 49 -222 0 0 -189 0 0 -156 0 0 -123 0 0 -98 0 0 -0 0 0 -255 255 255 -255 255 164 -255 255 82 -255 255 0 -255 164 0 -255 82 0 -255 0 0 -0 0 0 diff --git a/graphics/battle_anims/backgrounds/09.pal b/graphics/battle_anims/backgrounds/09.pal deleted file mode 100644 index 4f3613621..000000000 --- a/graphics/battle_anims/backgrounds/09.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -106 106 255 -123 131 255 -139 156 255 -156 180 255 -172 205 255 -189 230 255 -205 255 255 -230 255 255 -255 255 255 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/backgrounds/11.pal b/graphics/battle_anims/backgrounds/11.pal deleted file mode 100644 index 496e1b13c..000000000 --- a/graphics/battle_anims/backgrounds/11.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -131 82 115 -148 106 131 -172 131 148 -189 156 164 -213 189 189 -222 205 205 -230 222 222 -238 238 238 -255 255 255 -0 32 98 -82 106 148 -164 180 197 -246 0 0 -246 0 0 -246 0 0 diff --git a/graphics/battle_anims/backgrounds/12.pal b/graphics/battle_anims/backgrounds/12.pal deleted file mode 100644 index 5d4e8b23d..000000000 --- a/graphics/battle_anims/backgrounds/12.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -246 0 0 -115 90 82 -131 106 65 -148 131 57 -172 156 41 -189 180 32 -213 205 16 -230 230 8 -255 255 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/backgrounds/15.pal b/graphics/battle_anims/backgrounds/15.pal deleted file mode 100644 index 90f103423..000000000 --- a/graphics/battle_anims/backgrounds/15.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -222 238 246 -197 230 238 -164 213 238 -139 205 230 -115 189 222 -82 139 213 -57 98 213 -32 57 213 -0 0 0 -0 0 115 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/backgrounds/16.pal b/graphics/battle_anims/backgrounds/16.pal deleted file mode 100644 index 162b80179..000000000 --- a/graphics/battle_anims/backgrounds/16.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -0 8 65 -32 49 90 -65 98 115 -0 24 205 -255 255 82 -205 148 82 -255 172 115 -213 65 41 -180 255 197 -90 139 197 -255 90 197 -156 90 156 -0 0 0 -0 0 0 -255 255 255 diff --git a/graphics/battle_anims/backgrounds/17.pal b/graphics/battle_anims/backgrounds/17.pal deleted file mode 100644 index e02a042a2..000000000 --- a/graphics/battle_anims/backgrounds/17.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -98 189 222 -106 164 222 -123 139 222 -131 115 222 -148 90 222 -255 255 222 -255 255 106 -255 205 98 -205 172 148 -213 172 0 -189 131 0 -172 90 0 -156 57 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/backgrounds/20.pal b/graphics/battle_anims/backgrounds/20.pal deleted file mode 100644 index 1f4e13d64..000000000 --- a/graphics/battle_anims/backgrounds/20.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -24 131 98 -41 139 106 -57 156 123 -82 172 139 -98 180 148 -115 197 164 -139 213 180 -172 230 197 -205 255 222 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/backgrounds/21.pal b/graphics/battle_anims/backgrounds/21.pal deleted file mode 100644 index 0f999d51b..000000000 --- a/graphics/battle_anims/backgrounds/21.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -246 222 197 -230 189 148 -213 156 98 -205 123 49 -172 90 32 -139 57 16 -115 24 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/backgrounds/attract.pal b/graphics/battle_anims/backgrounds/attract.pal deleted file mode 100644 index a3a183566..000000000 --- a/graphics/battle_anims/backgrounds/attract.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 172 205 -255 189 213 -255 205 222 -255 222 230 -148 8 0 -255 205 230 -255 180 213 -255 164 197 -255 148 189 -255 131 172 -246 106 139 -238 82 115 -238 57 90 -230 32 65 -230 8 41 diff --git a/graphics/battle_anims/backgrounds/scary_face.pal b/graphics/battle_anims/backgrounds/scary_face.pal deleted file mode 100644 index 580360ac0..000000000 --- a/graphics/battle_anims/backgrounds/scary_face.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -123 98 0 -189 172 0 -255 255 0 -255 189 0 -255 123 0 -255 57 0 -255 0 0 -230 8 16 -205 16 32 -180 24 49 -156 32 65 -131 41 82 -106 49 98 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/backgrounds/water.pal b/graphics/battle_anims/backgrounds/water.pal deleted file mode 100644 index ee7a7b6e2..000000000 --- a/graphics/battle_anims/backgrounds/water.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -106 148 139 -98 90 255 -115 106 255 -139 131 255 -164 156 255 -180 180 255 -205 205 255 -230 230 255 -255 255 255 -98 90 255 -115 106 255 -197 197 255 -238 238 255 -255 255 255 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/masks/cure_bubbles.pal b/graphics/battle_anims/masks/cure_bubbles.pal deleted file mode 100644 index 2868f2479..000000000 --- a/graphics/battle_anims/masks/cure_bubbles.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -189 255 255 -123 255 255 -57 255 255 -57 205 238 -57 156 230 -57 106 213 -65 57 205 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/masks/metal_shine.pal b/graphics/battle_anims/masks/metal_shine.pal deleted file mode 100644 index 019a17c3f..000000000 --- a/graphics/battle_anims/masks/metal_shine.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -82 172 255 -255 255 255 -164 148 139 -98 131 41 -123 156 65 -148 180 90 -172 205 115 -197 230 139 -222 255 164 -82 172 0 -98 180 24 -123 197 49 -148 213 74 -172 222 98 -197 238 123 -222 255 148 diff --git a/graphics/battle_anims/masks/morning_sun.pal b/graphics/battle_anims/masks/morning_sun.pal deleted file mode 100644 index 08249a43c..000000000 --- a/graphics/battle_anims/masks/morning_sun.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -222 246 246 -189 238 238 -156 230 238 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/000.pal b/graphics/battle_anims/sprites/000.pal deleted file mode 100644 index 66804cc6c..000000000 --- a/graphics/battle_anims/sprites/000.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -164 148 139 -0 0 0 -82 82 82 -164 164 164 -255 255 255 -197 180 115 -164 148 82 -131 115 57 -98 82 24 -74 57 0 -205 205 197 -131 131 131 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/002.pal b/graphics/battle_anims/sprites/002.pal deleted file mode 100644 index ed60c8e60..000000000 --- a/graphics/battle_anims/sprites/002.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -222 255 205 -189 255 156 -156 255 106 -123 205 74 -98 164 49 -65 115 24 -41 74 0 -57 0 0 -255 222 131 -222 189 98 -189 156 65 -156 131 41 -197 49 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/003.pal b/graphics/battle_anims/sprites/003.pal deleted file mode 100644 index 5626f453a..000000000 --- a/graphics/battle_anims/sprites/003.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -164 148 139 -0 0 0 -82 82 82 -164 164 164 -255 255 255 -197 180 115 -164 148 82 -131 115 57 -98 82 24 -74 57 0 -205 205 197 -131 131 131 -255 74 106 -255 255 139 -255 172 24 -255 197 41 diff --git a/graphics/battle_anims/sprites/004.pal b/graphics/battle_anims/sprites/004.pal deleted file mode 100644 index e4706557b..000000000 --- a/graphics/battle_anims/sprites/004.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -197 197 197 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/005.pal b/graphics/battle_anims/sprites/005.pal deleted file mode 100644 index b30683d9d..000000000 --- a/graphics/battle_anims/sprites/005.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -164 148 139 -255 139 0 -255 156 8 -255 172 24 -106 180 255 -255 213 57 -16 238 255 -255 255 90 -255 255 255 -255 74 106 -255 115 148 -255 164 197 -255 205 238 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/006.pal b/graphics/battle_anims/sprites/006.pal deleted file mode 100644 index e2fb87aec..000000000 --- a/graphics/battle_anims/sprites/006.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -164 148 139 -255 255 255 -74 106 16 -98 131 41 -123 156 65 -197 180 115 -164 148 82 -131 115 57 -98 82 24 -74 57 0 -98 180 24 -123 197 49 -148 213 74 -172 222 98 -197 238 123 -222 255 148 diff --git a/graphics/battle_anims/sprites/007.pal b/graphics/battle_anims/sprites/007.pal deleted file mode 100644 index bb46ffa84..000000000 --- a/graphics/battle_anims/sprites/007.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -106 148 139 -0 0 0 -82 82 82 -164 164 164 -255 255 255 -197 180 115 -164 148 82 -131 115 57 -98 82 24 -74 57 0 -41 24 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/008.pal b/graphics/battle_anims/sprites/008.pal deleted file mode 100644 index 1df277936..000000000 --- a/graphics/battle_anims/sprites/008.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -213 222 255 -164 0 255 -189 49 255 -189 0 189 -189 0 148 -255 0 255 -255 148 255 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -255 255 255 diff --git a/graphics/battle_anims/sprites/009.pal b/graphics/battle_anims/sprites/009.pal deleted file mode 100644 index 37714d9c2..000000000 --- a/graphics/battle_anims/sprites/009.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -164 148 139 -123 123 123 -139 139 139 -156 156 156 -172 172 172 -197 197 197 -213 213 213 -230 230 230 -255 255 255 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/011.pal b/graphics/battle_anims/sprites/011.pal deleted file mode 100644 index 81af310e1..000000000 --- a/graphics/battle_anims/sprites/011.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -164 148 139 -255 139 0 -255 156 8 -255 172 24 -255 197 41 -255 213 57 -255 230 74 -255 255 90 -255 255 255 -255 74 106 -255 115 148 -255 164 197 -255 205 238 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/012.pal b/graphics/battle_anims/sprites/012.pal deleted file mode 100644 index 493a33207..000000000 --- a/graphics/battle_anims/sprites/012.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 0 0 -255 106 49 -197 0 0 -222 41 90 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/013.pal b/graphics/battle_anims/sprites/013.pal deleted file mode 100644 index e2010bd43..000000000 --- a/graphics/battle_anims/sprites/013.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -106 148 139 -0 0 0 -255 172 0 -255 255 139 -255 255 255 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/014.pal b/graphics/battle_anims/sprites/014.pal deleted file mode 100644 index e9f5664c4..000000000 --- a/graphics/battle_anims/sprites/014.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -0 238 0 -0 156 0 -0 74 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -255 0 0 -164 0 0 -82 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/015.pal b/graphics/battle_anims/sprites/015.pal deleted file mode 100644 index 5626f453a..000000000 --- a/graphics/battle_anims/sprites/015.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -164 148 139 -0 0 0 -82 82 82 -164 164 164 -255 255 255 -197 180 115 -164 148 82 -131 115 57 -98 82 24 -74 57 0 -205 205 197 -131 131 131 -255 74 106 -255 255 139 -255 172 24 -255 197 41 diff --git a/graphics/battle_anims/sprites/016.pal b/graphics/battle_anims/sprites/016.pal deleted file mode 100644 index eb2648d43..000000000 --- a/graphics/battle_anims/sprites/016.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -156 255 255 -0 0 0 -255 255 255 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/018.pal b/graphics/battle_anims/sprites/018.pal deleted file mode 100644 index c1010186d..000000000 --- a/graphics/battle_anims/sprites/018.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -222 222 230 -189 189 205 -156 156 189 -123 123 164 -98 98 148 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/019.pal b/graphics/battle_anims/sprites/019.pal deleted file mode 100644 index 7c63560ca..000000000 --- a/graphics/battle_anims/sprites/019.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -255 255 255 -0 255 255 -197 255 255 -49 8 106 -197 255 205 -246 255 205 -0 49 148 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/020.pal b/graphics/battle_anims/sprites/020.pal deleted file mode 100644 index ab74d4109..000000000 --- a/graphics/battle_anims/sprites/020.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 0 0 -255 98 0 -255 156 0 -255 197 0 -255 213 98 -255 238 197 -0 0 0 -0 0 0 -98 139 98 -0 0 0 -0 0 0 -131 131 131 -164 164 164 -213 205 205 -255 255 255 diff --git a/graphics/battle_anims/sprites/021.pal b/graphics/battle_anims/sprites/021.pal deleted file mode 100644 index 0ab344608..000000000 --- a/graphics/battle_anims/sprites/021.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -255 255 205 -255 255 164 -255 255 123 -255 255 82 -255 255 41 -255 197 32 -255 148 24 -255 98 16 -255 49 8 -255 0 0 -156 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/023.pal b/graphics/battle_anims/sprites/023.pal deleted file mode 100644 index 8e6e6e902..000000000 --- a/graphics/battle_anims/sprites/023.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -0 0 0 -0 230 255 -115 230 255 -213 230 255 -0 0 0 -255 255 172 -255 255 115 -0 0 0 -98 139 98 -0 0 0 -0 0 0 -131 131 131 -164 164 164 -213 205 205 -255 255 255 diff --git a/graphics/battle_anims/sprites/024.pal b/graphics/battle_anims/sprites/024.pal deleted file mode 100644 index f6de49201..000000000 --- a/graphics/battle_anims/sprites/024.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -255 205 255 -255 255 255 -0 0 0 -148 156 255 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/025.pal b/graphics/battle_anims/sprites/025.pal deleted file mode 100644 index 51e06ad33..000000000 --- a/graphics/battle_anims/sprites/025.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -0 0 0 -0 230 255 -115 230 255 -213 230 255 -0 0 0 -255 255 172 -255 255 115 -0 0 0 -98 139 98 -0 0 0 -0 0 0 -156 156 156 -197 197 197 -230 230 230 -255 255 255 diff --git a/graphics/battle_anims/sprites/026.pal b/graphics/battle_anims/sprites/026.pal deleted file mode 100644 index 0ab344608..000000000 --- a/graphics/battle_anims/sprites/026.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -255 255 205 -255 255 164 -255 255 123 -255 255 82 -255 255 41 -255 197 32 -255 148 24 -255 98 16 -255 49 8 -255 0 0 -156 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/027.pal b/graphics/battle_anims/sprites/027.pal deleted file mode 100644 index 0ab344608..000000000 --- a/graphics/battle_anims/sprites/027.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -255 255 205 -255 255 164 -255 255 123 -255 255 82 -255 255 41 -255 197 32 -255 148 24 -255 98 16 -255 49 8 -255 0 0 -156 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/028.pal b/graphics/battle_anims/sprites/028.pal deleted file mode 100644 index bfa9b1ae7..000000000 --- a/graphics/battle_anims/sprites/028.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -189 230 255 -131 205 255 -65 180 255 -8 156 255 -8 115 222 -8 82 197 -8 41 172 -8 8 148 -255 49 8 -255 0 0 -156 0 0 -156 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/029.pal b/graphics/battle_anims/sprites/029.pal deleted file mode 100644 index 0ab344608..000000000 --- a/graphics/battle_anims/sprites/029.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -255 255 205 -255 255 164 -255 255 123 -255 255 82 -255 255 41 -255 197 32 -255 148 24 -255 98 16 -255 49 8 -255 0 0 -156 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/030.pal b/graphics/battle_anims/sprites/030.pal deleted file mode 100644 index b3c3dd6c6..000000000 --- a/graphics/battle_anims/sprites/030.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -230 230 222 -213 205 189 -189 189 156 -172 164 123 -156 148 90 -123 123 65 -98 98 49 -74 74 32 -49 49 16 -24 24 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/031.pal b/graphics/battle_anims/sprites/031.pal deleted file mode 100644 index ebfeb116a..000000000 --- a/graphics/battle_anims/sprites/031.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -222 246 255 -197 238 255 -164 230 255 -139 230 255 -106 180 222 -74 131 189 -41 82 156 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/032.pal b/graphics/battle_anims/sprites/032.pal deleted file mode 100644 index fb028145c..000000000 --- a/graphics/battle_anims/sprites/032.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -0 0 0 -255 255 205 -255 255 164 -255 255 123 -255 255 82 -255 255 41 -255 197 32 -255 148 24 -255 98 16 -255 49 8 -255 0 0 -156 0 0 -106 213 255 -0 0 0 -255 255 255 diff --git a/graphics/battle_anims/sprites/033.pal b/graphics/battle_anims/sprites/033.pal deleted file mode 100644 index 0ee440185..000000000 --- a/graphics/battle_anims/sprites/033.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -255 255 205 -255 255 164 -255 255 123 -255 255 82 -255 213 57 -255 180 41 -255 148 24 -255 74 8 -255 0 0 -164 0 0 -74 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/036.pal b/graphics/battle_anims/sprites/036.pal deleted file mode 100644 index 1321b152b..000000000 --- a/graphics/battle_anims/sprites/036.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -230 197 255 -205 148 255 -189 98 255 -123 65 205 -57 32 156 -0 0 106 -238 255 172 -222 255 90 -205 255 8 -0 0 106 -156 0 0 -230 255 0 -230 156 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/038.pal b/graphics/battle_anims/sprites/038.pal deleted file mode 100644 index 97f71b709..000000000 --- a/graphics/battle_anims/sprites/038.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -255 246 123 -255 238 0 -255 139 0 -255 41 0 -156 0 0 -57 0 0 -255 255 255 -131 255 172 -8 255 90 -8 164 90 -8 74 90 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/039.pal b/graphics/battle_anims/sprites/039.pal deleted file mode 100644 index 63d40ae47..000000000 --- a/graphics/battle_anims/sprites/039.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -255 246 123 -255 238 0 -255 139 0 -255 41 0 -156 0 0 -57 0 0 -255 255 255 -189 197 205 -123 148 164 -57 98 123 -0 49 82 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/042.pal b/graphics/battle_anims/sprites/042.pal deleted file mode 100644 index 45180662f..000000000 --- a/graphics/battle_anims/sprites/042.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 148 246 -255 82 82 -255 139 82 -255 189 82 -255 255 82 -189 255 82 -139 255 82 -82 255 82 -82 222 139 -82 205 189 -115 148 255 -148 115 255 -180 82 255 -255 255 255 -49 98 230 -148 172 238 diff --git a/graphics/battle_anims/sprites/043.pal b/graphics/battle_anims/sprites/043.pal deleted file mode 100644 index 35cbf0096..000000000 --- a/graphics/battle_anims/sprites/043.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -205 255 255 -156 255 255 -106 255 255 -57 255 255 -8 255 255 -8 205 255 -8 156 255 -8 106 255 -8 57 255 -8 8 255 -8 8 106 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/044.pal b/graphics/battle_anims/sprites/044.pal deleted file mode 100644 index 35cbf0096..000000000 --- a/graphics/battle_anims/sprites/044.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -205 255 255 -156 255 255 -106 255 255 -57 255 255 -8 255 255 -8 205 255 -8 156 255 -8 106 255 -8 57 255 -8 8 255 -8 8 106 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/045.pal b/graphics/battle_anims/sprites/045.pal deleted file mode 100644 index 6923a9b25..000000000 --- a/graphics/battle_anims/sprites/045.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -255 213 222 -255 172 189 -255 131 156 -205 98 131 -156 65 106 -106 32 82 -57 0 57 -8 106 255 -8 57 255 -8 8 255 -8 8 106 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/046.pal b/graphics/battle_anims/sprites/046.pal deleted file mode 100644 index 80a58a1b5..000000000 --- a/graphics/battle_anims/sprites/046.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -148 246 197 -255 255 255 -255 255 205 -255 230 148 -255 213 90 -255 197 32 -255 164 24 -255 131 16 -222 82 8 -189 41 0 -156 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/048.pal b/graphics/battle_anims/sprites/048.pal deleted file mode 100644 index 67eecf69b..000000000 --- a/graphics/battle_anims/sprites/048.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -172 255 205 -90 255 156 -8 255 106 -8 205 98 -8 156 98 -8 106 98 -255 148 24 -255 98 16 -255 49 8 -255 0 0 -156 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/050.pal b/graphics/battle_anims/sprites/050.pal deleted file mode 100644 index c20894da9..000000000 --- a/graphics/battle_anims/sprites/050.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -148 197 246 -255 255 255 -255 230 180 -255 213 106 -255 197 32 -255 123 16 -255 49 8 -205 164 106 -156 123 16 -255 98 16 -255 49 8 -255 0 0 -156 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/054.pal b/graphics/battle_anims/sprites/054.pal deleted file mode 100644 index f3c299ce3..000000000 --- a/graphics/battle_anims/sprites/054.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 0 -0 255 255 -197 255 255 -255 255 156 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/056.pal b/graphics/battle_anims/sprites/056.pal deleted file mode 100644 index 5dc1faf3b..000000000 --- a/graphics/battle_anims/sprites/056.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -98 197 197 -255 255 255 -255 255 205 -255 255 164 -255 255 123 -255 255 82 -255 255 41 -255 197 32 -255 148 24 -255 98 16 -255 49 8 -255 0 0 -156 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/057.pal b/graphics/battle_anims/sprites/057.pal deleted file mode 100644 index 36b47b3df..000000000 --- a/graphics/battle_anims/sprites/057.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -148 205 255 -255 255 246 -156 255 222 -65 255 197 -49 205 164 -41 164 131 -32 123 98 -16 82 65 -8 41 32 -148 82 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -180 180 180 -255 255 255 diff --git a/graphics/battle_anims/sprites/058.pal b/graphics/battle_anims/sprites/058.pal deleted file mode 100644 index 8bd0f0a08..000000000 --- a/graphics/battle_anims/sprites/058.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -156 255 255 -255 255 180 -238 222 148 -230 197 115 -213 172 82 -205 148 57 -172 115 41 -148 82 24 -123 49 8 -74 24 8 -32 0 8 -255 0 0 -156 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/059.pal b/graphics/battle_anims/sprites/059.pal deleted file mode 100644 index a85e5028d..000000000 --- a/graphics/battle_anims/sprites/059.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -197 246 238 -139 238 222 -90 172 222 -41 106 222 -0 49 222 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/060.pal b/graphics/battle_anims/sprites/060.pal deleted file mode 100644 index 80bbc3a61..000000000 --- a/graphics/battle_anims/sprites/060.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -255 238 123 -255 222 0 -255 156 0 -255 98 0 -156 74 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/061.pal b/graphics/battle_anims/sprites/061.pal deleted file mode 100644 index d457b6c8a..000000000 --- a/graphics/battle_anims/sprites/061.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 197 246 -255 255 255 -213 222 230 -180 189 205 -148 156 180 -115 123 156 -82 90 131 -49 57 106 -8 8 24 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/062.pal b/graphics/battle_anims/sprites/062.pal deleted file mode 100644 index f8c6a17e4..000000000 --- a/graphics/battle_anims/sprites/062.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 197 246 -255 255 255 -205 255 230 -156 255 205 -106 255 180 -57 255 156 -41 197 139 -32 148 123 -24 98 115 -16 49 98 -8 0 90 -8 0 57 -8 0 24 -8 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/063.pal b/graphics/battle_anims/sprites/063.pal deleted file mode 100644 index 229f146fc..000000000 --- a/graphics/battle_anims/sprites/063.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -148 197 246 -222 255 164 -197 230 139 -172 205 115 -148 180 90 -123 156 65 -98 131 41 -74 106 16 -255 148 24 -255 98 16 -255 49 8 -255 0 0 -156 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/064.pal b/graphics/battle_anims/sprites/064.pal deleted file mode 100644 index 78f6d2a96..000000000 --- a/graphics/battle_anims/sprites/064.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -255 230 230 -255 213 205 -255 189 180 -255 172 156 -222 148 131 -189 131 115 -164 106 90 -131 90 74 -106 74 57 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/065.pal b/graphics/battle_anims/sprites/065.pal deleted file mode 100644 index ad467dabf..000000000 --- a/graphics/battle_anims/sprites/065.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 197 246 -255 255 255 -255 213 255 -255 172 255 -255 131 255 -255 90 255 -255 57 255 -213 65 230 -172 82 205 -139 98 189 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/066.pal b/graphics/battle_anims/sprites/066.pal deleted file mode 100644 index a70579ce1..000000000 --- a/graphics/battle_anims/sprites/066.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -148 205 255 -172 255 156 -172 213 139 -172 180 123 -180 148 106 -180 115 90 -189 82 82 -255 197 32 -255 148 24 -255 98 16 -255 49 8 -255 0 0 -156 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/070.pal b/graphics/battle_anims/sprites/070.pal deleted file mode 100644 index 1a20338e3..000000000 --- a/graphics/battle_anims/sprites/070.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -148 197 246 -255 255 255 -205 255 255 -156 255 255 -106 255 255 -57 255 255 -8 255 255 -8 205 255 -8 156 255 -8 106 255 -8 57 255 -8 8 255 -8 8 106 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/072.pal b/graphics/battle_anims/sprites/072.pal deleted file mode 100644 index 56981c262..000000000 --- a/graphics/battle_anims/sprites/072.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -98 246 246 -255 255 255 -222 205 205 -222 180 189 -255 106 180 -255 57 156 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/073.pal b/graphics/battle_anims/sprites/073.pal deleted file mode 100644 index b5852193d..000000000 --- a/graphics/battle_anims/sprites/073.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -255 238 164 -255 230 82 -255 222 0 -255 180 0 -255 148 0 -255 106 0 -255 74 0 -156 74 0 -74 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/075.pal b/graphics/battle_anims/sprites/075.pal deleted file mode 100644 index c2d659b4b..000000000 --- a/graphics/battle_anims/sprites/075.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 197 222 -255 197 222 -255 148 164 -255 98 106 -255 49 49 -255 0 0 -255 49 24 -255 98 49 -255 156 74 -255 197 131 -255 238 197 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/076.pal b/graphics/battle_anims/sprites/076.pal deleted file mode 100644 index 1282dda5e..000000000 --- a/graphics/battle_anims/sprites/076.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -172 205 255 -255 255 255 -172 238 255 -90 222 255 -8 205 255 -8 139 255 -8 74 255 -8 8 255 -255 148 24 -255 98 16 -255 49 8 -255 0 0 -156 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/078.pal b/graphics/battle_anims/sprites/078.pal deleted file mode 100644 index 5d2000b00..000000000 --- a/graphics/battle_anims/sprites/078.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -255 255 148 -255 255 41 -255 197 32 -255 148 24 -255 98 16 -255 49 8 -57 49 255 -180 255 255 -106 255 255 -57 238 180 -8 230 106 -8 115 90 -8 8 74 -0 0 0 diff --git a/graphics/battle_anims/sprites/080.pal b/graphics/battle_anims/sprites/080.pal deleted file mode 100644 index 48b548404..000000000 --- a/graphics/battle_anims/sprites/080.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -98 148 148 -255 255 255 -255 255 164 -255 255 82 -255 255 0 -255 205 0 -255 156 0 -255 106 0 -255 57 0 -205 32 0 -156 16 0 -115 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/081.pal b/graphics/battle_anims/sprites/081.pal deleted file mode 100644 index 7021bc4c5..000000000 --- a/graphics/battle_anims/sprites/081.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 197 246 -255 255 255 -255 230 230 -255 213 213 -255 189 197 -255 172 180 -255 148 164 -255 131 148 -213 106 123 -180 82 98 -139 57 74 -106 32 49 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/082.pal b/graphics/battle_anims/sprites/082.pal deleted file mode 100644 index ac0ff05fc..000000000 --- a/graphics/battle_anims/sprites/082.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -0 0 255 -0 246 255 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/083.pal b/graphics/battle_anims/sprites/083.pal deleted file mode 100644 index 83289a5c0..000000000 --- a/graphics/battle_anims/sprites/083.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -255 255 205 -255 255 164 -255 255 123 -255 255 82 -255 255 41 -255 197 32 -255 148 24 -255 98 16 -255 49 8 -255 0 0 -156 0 0 -49 246 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/084.pal b/graphics/battle_anims/sprites/084.pal deleted file mode 100644 index 618788a15..000000000 --- a/graphics/battle_anims/sprites/084.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -98 148 197 -255 255 255 -205 255 255 -156 255 255 -106 255 255 -57 255 255 -8 255 255 -8 205 255 -8 156 255 -8 106 255 -8 57 255 -8 8 255 -8 8 106 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/085.pal b/graphics/battle_anims/sprites/085.pal deleted file mode 100644 index 207a5dc06..000000000 --- a/graphics/battle_anims/sprites/085.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -0 49 16 -0 98 32 -0 148 49 -0 197 65 -0 255 82 -255 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/086.pal b/graphics/battle_anims/sprites/086.pal deleted file mode 100644 index d8b179037..000000000 --- a/graphics/battle_anims/sprites/086.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -98 197 246 -255 255 255 -255 238 189 -255 222 123 -255 205 57 -238 156 41 -230 106 24 -222 57 8 -148 24 8 -74 0 8 -255 148 189 -222 98 131 -189 49 74 -156 0 24 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/087.pal b/graphics/battle_anims/sprites/087.pal deleted file mode 100644 index 0ab344608..000000000 --- a/graphics/battle_anims/sprites/087.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -255 255 205 -255 255 164 -255 255 123 -255 255 82 -255 255 41 -255 197 32 -255 148 24 -255 98 16 -255 49 8 -255 0 0 -156 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/088.pal b/graphics/battle_anims/sprites/088.pal deleted file mode 100644 index aa294ce5c..000000000 --- a/graphics/battle_anims/sprites/088.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -213 213 222 -172 172 189 -131 131 164 -90 90 131 -57 57 106 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/089.pal b/graphics/battle_anims/sprites/089.pal deleted file mode 100644 index adb0f11a1..000000000 --- a/graphics/battle_anims/sprites/089.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -148 197 246 -255 255 255 -255 255 164 -255 255 82 -189 255 82 -123 255 82 -0 255 0 -0 205 16 -0 156 32 -0 106 49 -255 49 8 -255 0 0 -156 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/090.pal b/graphics/battle_anims/sprites/090.pal deleted file mode 100644 index a7551117c..000000000 --- a/graphics/battle_anims/sprites/090.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -205 255 246 -255 255 255 -255 255 189 -255 255 123 -255 255 57 -230 156 32 -205 57 8 -180 123 255 -131 90 205 -82 57 156 -32 24 106 -255 24 8 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/091.pal b/graphics/battle_anims/sprites/091.pal deleted file mode 100644 index 7021bc4c5..000000000 --- a/graphics/battle_anims/sprites/091.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 197 246 -255 255 255 -255 230 230 -255 213 213 -255 189 197 -255 172 180 -255 148 164 -255 131 148 -213 106 123 -180 82 98 -139 57 74 -106 32 49 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/092.pal b/graphics/battle_anims/sprites/092.pal deleted file mode 100644 index 886d5bc2e..000000000 --- a/graphics/battle_anims/sprites/092.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -148 246 246 -255 255 255 -255 172 205 -255 90 156 -255 8 115 -213 0 82 -180 0 57 -139 0 24 -106 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/093.pal b/graphics/battle_anims/sprites/093.pal deleted file mode 100644 index 2ddd5a79a..000000000 --- a/graphics/battle_anims/sprites/093.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -106 197 197 -255 255 255 -255 255 222 -255 255 189 -255 255 156 -255 230 115 -255 205 74 -255 180 32 -255 156 0 -213 115 0 -172 74 8 -98 0 24 -57 0 0 -197 255 238 -164 197 222 -131 139 213 diff --git a/graphics/battle_anims/sprites/094.pal b/graphics/battle_anims/sprites/094.pal deleted file mode 100644 index 1ed4c7d40..000000000 --- a/graphics/battle_anims/sprites/094.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -148 246 255 -255 255 255 -230 230 222 -205 205 189 -180 189 164 -164 164 131 -139 148 106 -115 123 74 -98 106 49 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/095.pal b/graphics/battle_anims/sprites/095.pal deleted file mode 100644 index cd66b6577..000000000 --- a/graphics/battle_anims/sprites/095.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -197 246 246 -255 255 255 -148 230 156 -49 205 57 -32 164 41 -24 131 24 -8 90 8 -0 57 0 -0 0 0 -255 205 0 -222 139 0 -189 74 0 -156 8 0 -255 246 148 -222 197 115 -189 148 82 diff --git a/graphics/battle_anims/sprites/096.pal b/graphics/battle_anims/sprites/096.pal deleted file mode 100644 index 5dab7d9aa..000000000 --- a/graphics/battle_anims/sprites/096.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -98 148 238 -255 255 255 -255 205 213 -255 156 180 -255 106 139 -255 57 106 -238 41 65 -222 24 32 -205 8 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/097.pal b/graphics/battle_anims/sprites/097.pal deleted file mode 100644 index 0f3c4da53..000000000 --- a/graphics/battle_anims/sprites/097.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -148 197 246 -255 255 255 -222 222 222 -197 197 197 -172 172 172 -148 148 148 -123 123 123 -98 98 98 -74 74 74 -49 49 49 -24 24 24 -0 0 0 -8 16 24 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/099.pal b/graphics/battle_anims/sprites/099.pal deleted file mode 100644 index 765eca3e7..000000000 --- a/graphics/battle_anims/sprites/099.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -222 238 230 -197 222 205 -164 205 180 -139 197 156 -98 156 131 -65 115 106 -32 74 82 -0 32 57 -255 255 222 -255 255 189 -255 255 156 -98 98 98 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/100.pal b/graphics/battle_anims/sprites/100.pal deleted file mode 100644 index d556e120c..000000000 --- a/graphics/battle_anims/sprites/100.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 148 148 -255 255 255 -255 255 139 -255 255 24 -246 205 24 -238 164 24 -230 123 24 -222 82 24 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/101.pal b/graphics/battle_anims/sprites/101.pal deleted file mode 100644 index 4dd4d0404..000000000 --- a/graphics/battle_anims/sprites/101.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -98 197 246 -255 255 255 -205 255 230 -156 255 205 -106 255 180 -57 255 156 -41 213 123 -32 172 90 -16 131 57 -8 90 24 -0 57 0 -205 106 0 -0 57 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/103.pal b/graphics/battle_anims/sprites/103.pal deleted file mode 100644 index fab0c9ffa..000000000 --- a/graphics/battle_anims/sprites/103.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -98 197 246 -255 255 255 -255 238 230 -255 230 205 -255 222 180 -255 213 156 -255 205 131 -222 164 98 -189 123 74 -164 82 49 -131 41 24 -106 8 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/104.pal b/graphics/battle_anims/sprites/104.pal deleted file mode 100644 index 0ab344608..000000000 --- a/graphics/battle_anims/sprites/104.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -255 255 205 -255 255 164 -255 255 123 -255 255 82 -255 255 41 -255 197 32 -255 148 24 -255 98 16 -255 49 8 -255 0 0 -156 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/105.pal b/graphics/battle_anims/sprites/105.pal deleted file mode 100644 index 0ab344608..000000000 --- a/graphics/battle_anims/sprites/105.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -255 255 205 -255 255 164 -255 255 123 -255 255 82 -255 255 41 -255 197 32 -255 148 24 -255 98 16 -255 49 8 -255 0 0 -156 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/107.pal b/graphics/battle_anims/sprites/107.pal deleted file mode 100644 index 35cbf0096..000000000 --- a/graphics/battle_anims/sprites/107.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -205 255 255 -156 255 255 -106 255 255 -57 255 255 -8 255 255 -8 205 255 -8 156 255 -8 106 255 -8 57 255 -8 8 255 -8 8 106 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/109.pal b/graphics/battle_anims/sprites/109.pal deleted file mode 100644 index 6a069ced2..000000000 --- a/graphics/battle_anims/sprites/109.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -148 246 246 -255 255 255 -255 255 0 -205 255 0 -156 255 0 -106 255 0 -57 255 0 -8 255 0 -0 213 0 -0 180 0 -0 139 0 -0 106 0 -0 65 0 -0 32 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/111.pal b/graphics/battle_anims/sprites/111.pal deleted file mode 100644 index a088af0b5..000000000 --- a/graphics/battle_anims/sprites/111.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -172 255 255 -255 255 255 -238 197 189 -230 148 131 -213 98 65 -205 49 8 -172 32 8 -148 24 8 -123 16 8 -98 8 8 -74 0 8 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/112.pal b/graphics/battle_anims/sprites/112.pal deleted file mode 100644 index 1321b152b..000000000 --- a/graphics/battle_anims/sprites/112.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -230 197 255 -205 148 255 -189 98 255 -123 65 205 -57 32 156 -0 0 106 -238 255 172 -222 255 90 -205 255 8 -0 0 106 -156 0 0 -230 255 0 -230 156 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/113.pal b/graphics/battle_anims/sprites/113.pal deleted file mode 100644 index 35cbf0096..000000000 --- a/graphics/battle_anims/sprites/113.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -205 255 255 -156 255 255 -106 255 255 -57 255 255 -8 255 255 -8 205 255 -8 156 255 -8 106 255 -8 57 255 -8 8 255 -8 8 106 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/114.pal b/graphics/battle_anims/sprites/114.pal deleted file mode 100644 index fc9db2bca..000000000 --- a/graphics/battle_anims/sprites/114.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -98 148 246 -255 255 255 -238 213 205 -222 180 164 -213 148 123 -197 115 82 -189 82 41 -148 65 41 -106 49 41 -74 32 41 -32 16 41 -0 0 41 -0 0 0 -255 0 8 -180 0 8 -0 0 0 diff --git a/graphics/battle_anims/sprites/115.pal b/graphics/battle_anims/sprites/115.pal deleted file mode 100644 index c5f241feb..000000000 --- a/graphics/battle_anims/sprites/115.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -106 148 139 -98 90 255 -115 106 255 -139 131 255 -164 156 255 -180 180 255 -205 205 255 -230 230 255 -255 255 255 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -180 180 255 -205 205 255 -230 230 255 diff --git a/graphics/battle_anims/sprites/116.pal b/graphics/battle_anims/sprites/116.pal deleted file mode 100644 index 0ab344608..000000000 --- a/graphics/battle_anims/sprites/116.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -255 255 205 -255 255 164 -255 255 123 -255 255 82 -255 255 41 -255 197 32 -255 148 24 -255 98 16 -255 49 8 -255 0 0 -156 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/117.pal b/graphics/battle_anims/sprites/117.pal deleted file mode 100644 index 949fe139e..000000000 --- a/graphics/battle_anims/sprites/117.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -148 246 148 -98 222 74 -57 205 0 -57 164 0 -57 131 0 -57 90 0 -57 57 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/118.pal b/graphics/battle_anims/sprites/118.pal deleted file mode 100644 index f175442ec..000000000 --- a/graphics/battle_anims/sprites/118.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -230 230 213 -213 205 172 -189 180 131 -172 156 90 -156 131 57 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/119.pal b/graphics/battle_anims/sprites/119.pal deleted file mode 100644 index c342e8b9c..000000000 --- a/graphics/battle_anims/sprites/119.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -238 222 213 -230 197 172 -222 164 131 -213 139 90 -205 115 57 -0 0 0 -0 0 0 -197 246 246 -164 205 222 -131 164 197 -106 123 180 -74 82 156 -49 49 139 -0 0 0 diff --git a/graphics/battle_anims/sprites/120.pal b/graphics/battle_anims/sprites/120.pal deleted file mode 100644 index aeaa9fe5e..000000000 --- a/graphics/battle_anims/sprites/120.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -230 230 238 -205 205 222 -180 180 205 -156 156 189 -131 131 172 -106 106 156 -8 57 106 -148 49 0 -197 57 98 -246 164 98 -246 172 148 -246 180 197 -246 197 246 -0 0 0 diff --git a/graphics/battle_anims/sprites/121.pal b/graphics/battle_anims/sprites/121.pal deleted file mode 100644 index 00c818974..000000000 --- a/graphics/battle_anims/sprites/121.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 98 -213 255 98 -172 255 98 -131 255 98 -98 255 98 -41 197 246 -90 148 246 -139 98 246 -189 49 246 -238 0 246 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/122.pal b/graphics/battle_anims/sprites/122.pal deleted file mode 100644 index c2a7f896a..000000000 --- a/graphics/battle_anims/sprites/122.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -246 246 246 -213 197 230 -180 148 213 -148 98 197 -115 65 164 -82 32 131 -49 0 98 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/124.pal b/graphics/battle_anims/sprites/124.pal deleted file mode 100644 index 5d2000b00..000000000 --- a/graphics/battle_anims/sprites/124.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -255 255 148 -255 255 41 -255 197 32 -255 148 24 -255 98 16 -255 49 8 -57 49 255 -180 255 255 -106 255 255 -57 238 180 -8 230 106 -8 115 90 -8 8 74 -0 0 0 diff --git a/graphics/battle_anims/sprites/125.pal b/graphics/battle_anims/sprites/125.pal deleted file mode 100644 index 11b96c6f9..000000000 --- a/graphics/battle_anims/sprites/125.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -197 246 246 -255 255 255 -230 189 189 -205 131 131 -180 65 65 -164 8 8 -123 8 8 -82 8 8 -41 8 8 -0 8 8 -0 0 0 -0 0 0 -164 172 172 -82 90 90 -0 8 8 -0 0 0 diff --git a/graphics/battle_anims/sprites/126.pal b/graphics/battle_anims/sprites/126.pal deleted file mode 100644 index fee220c67..000000000 --- a/graphics/battle_anims/sprites/126.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -197 255 246 -255 255 255 -213 213 213 -180 180 180 -139 139 139 -106 106 106 -65 65 65 -32 32 32 -0 0 0 -255 106 255 -255 106 255 -255 106 255 -255 106 255 -255 106 255 -255 106 255 -255 106 255 diff --git a/graphics/battle_anims/sprites/127.pal b/graphics/battle_anims/sprites/127.pal deleted file mode 100644 index 8b6e458a1..000000000 --- a/graphics/battle_anims/sprites/127.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -148 238 197 -255 255 255 -230 238 222 -205 222 189 -189 205 164 -164 189 131 -148 172 106 -123 139 90 -106 106 82 -82 82 74 -65 49 65 -49 24 57 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/128.pal b/graphics/battle_anims/sprites/128.pal deleted file mode 100644 index 5c106a4fa..000000000 --- a/graphics/battle_anims/sprites/128.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -213 222 230 -180 197 205 -148 164 189 -106 139 164 -74 106 148 -41 82 123 -8 57 106 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/130.pal b/graphics/battle_anims/sprites/130.pal deleted file mode 100644 index 0ab344608..000000000 --- a/graphics/battle_anims/sprites/130.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -255 255 205 -255 255 164 -255 255 123 -255 255 82 -255 255 41 -255 197 32 -255 148 24 -255 98 16 -255 49 8 -255 0 0 -156 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/132.pal b/graphics/battle_anims/sprites/132.pal deleted file mode 100644 index e64c6269f..000000000 --- a/graphics/battle_anims/sprites/132.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -255 164 164 -255 82 82 -255 0 0 -213 0 0 -172 0 0 -131 0 0 -90 0 0 -57 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/133.pal b/graphics/battle_anims/sprites/133.pal deleted file mode 100644 index 6b8e06e11..000000000 --- a/graphics/battle_anims/sprites/133.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -148 246 246 -255 255 255 -238 238 230 -222 222 205 -205 205 189 -197 197 164 -180 180 148 -164 164 123 -156 156 106 -131 131 82 -106 106 57 -82 82 32 -57 57 8 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/135.pal b/graphics/battle_anims/sprites/135.pal deleted file mode 100644 index 19ef98f9c..000000000 --- a/graphics/battle_anims/sprites/135.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -98 41 255 -0 0 0 -205 156 32 -230 205 98 -255 255 172 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/136.pal b/graphics/battle_anims/sprites/136.pal deleted file mode 100644 index 96939e342..000000000 --- a/graphics/battle_anims/sprites/136.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -98 41 255 -255 255 255 -255 172 0 -255 255 82 -255 255 0 -255 255 164 -139 131 255 -164 156 255 -180 180 255 -205 205 255 -230 230 255 -255 49 82 -139 255 164 -74 156 123 -172 255 139 -82 238 131 diff --git a/graphics/battle_anims/sprites/139.pal b/graphics/battle_anims/sprites/139.pal deleted file mode 100644 index bb46ffa84..000000000 --- a/graphics/battle_anims/sprites/139.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -106 148 139 -0 0 0 -82 82 82 -164 164 164 -255 255 255 -197 180 115 -164 148 82 -131 115 57 -98 82 24 -74 57 0 -41 24 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/140.pal b/graphics/battle_anims/sprites/140.pal deleted file mode 100644 index 6ebb6dba3..000000000 --- a/graphics/battle_anims/sprites/140.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -106 148 139 -230 123 123 -230 180 123 -230 230 123 -180 230 123 -123 230 123 -123 230 230 -123 123 230 -230 123 230 -230 230 230 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/143.pal b/graphics/battle_anims/sprites/143.pal deleted file mode 100644 index bd810fa7d..000000000 --- a/graphics/battle_anims/sprites/143.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -57 0 41 -0 0 0 -82 82 82 -164 164 164 -205 205 205 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/144.pal b/graphics/battle_anims/sprites/144.pal deleted file mode 100644 index c5f241feb..000000000 --- a/graphics/battle_anims/sprites/144.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -106 148 139 -98 90 255 -115 106 255 -139 131 255 -164 156 255 -180 180 255 -205 205 255 -230 230 255 -255 255 255 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -180 180 255 -205 205 255 -230 230 255 diff --git a/graphics/battle_anims/sprites/147.pal b/graphics/battle_anims/sprites/147.pal deleted file mode 100644 index 1f7d9c128..000000000 --- a/graphics/battle_anims/sprites/147.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -164 148 139 -255 139 0 -255 156 8 -255 172 24 -255 197 41 -255 213 57 -255 230 74 -255 255 90 -255 255 255 -255 74 106 -255 115 148 -255 164 197 -255 205 238 -82 172 0 -172 222 98 -0 0 0 diff --git a/graphics/battle_anims/sprites/148.pal b/graphics/battle_anims/sprites/148.pal deleted file mode 100644 index c5f241feb..000000000 --- a/graphics/battle_anims/sprites/148.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -106 148 139 -98 90 255 -115 106 255 -139 131 255 -164 156 255 -180 180 255 -205 205 255 -230 230 255 -255 255 255 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -180 180 255 -205 205 255 -230 230 255 diff --git a/graphics/battle_anims/sprites/150.pal b/graphics/battle_anims/sprites/150.pal deleted file mode 100644 index 26bc9d8a7..000000000 --- a/graphics/battle_anims/sprites/150.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -164 148 139 -255 255 255 -65 0 65 -139 0 139 -213 0 213 -255 0 255 -222 82 222 -238 164 238 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/152.pal b/graphics/battle_anims/sprites/152.pal deleted file mode 100644 index 66804cc6c..000000000 --- a/graphics/battle_anims/sprites/152.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -164 148 139 -0 0 0 -82 82 82 -164 164 164 -255 255 255 -197 180 115 -164 148 82 -131 115 57 -98 82 24 -74 57 0 -205 205 197 -131 131 131 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/153.pal b/graphics/battle_anims/sprites/153.pal deleted file mode 100644 index b65fd9621..000000000 --- a/graphics/battle_anims/sprites/153.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -164 148 139 -0 0 0 -255 172 0 -255 255 139 -255 255 255 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/154.pal b/graphics/battle_anims/sprites/154.pal deleted file mode 100644 index 37714d9c2..000000000 --- a/graphics/battle_anims/sprites/154.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -164 148 139 -123 123 123 -139 139 139 -156 156 156 -172 172 172 -197 197 197 -213 213 213 -230 230 230 -255 255 255 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/155.pal b/graphics/battle_anims/sprites/155.pal deleted file mode 100644 index c5f241feb..000000000 --- a/graphics/battle_anims/sprites/155.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -106 148 139 -98 90 255 -115 106 255 -139 131 255 -164 156 255 -180 180 255 -205 205 255 -230 230 255 -255 255 255 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -180 180 255 -205 205 255 -230 230 255 diff --git a/graphics/battle_anims/sprites/156.pal b/graphics/battle_anims/sprites/156.pal deleted file mode 100644 index 372a787d8..000000000 --- a/graphics/battle_anims/sprites/156.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -164 148 139 -255 255 255 -65 0 65 -139 0 139 -213 0 213 -255 0 255 -222 82 222 -238 164 238 -24 16 82 -24 16 98 -24 24 115 -24 32 139 -24 32 156 -24 41 172 -32 49 197 -0 0 0 diff --git a/graphics/battle_anims/sprites/157.pal b/graphics/battle_anims/sprites/157.pal deleted file mode 100644 index b65fd9621..000000000 --- a/graphics/battle_anims/sprites/157.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -164 148 139 -0 0 0 -255 172 0 -255 255 139 -255 255 255 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/158.pal b/graphics/battle_anims/sprites/158.pal deleted file mode 100644 index 66804cc6c..000000000 --- a/graphics/battle_anims/sprites/158.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -164 148 139 -0 0 0 -82 82 82 -164 164 164 -255 255 255 -197 180 115 -164 148 82 -131 115 57 -98 82 24 -74 57 0 -205 205 197 -131 131 131 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/160.pal b/graphics/battle_anims/sprites/160.pal deleted file mode 100644 index 1ed6f0c44..000000000 --- a/graphics/battle_anims/sprites/160.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -164 148 139 -255 255 255 -74 106 16 -98 131 41 -123 156 65 -148 180 90 -172 205 115 -197 230 139 -222 255 164 -82 172 0 -98 180 24 -123 197 49 -148 213 74 -172 222 98 -197 238 123 -222 255 148 diff --git a/graphics/battle_anims/sprites/161.pal b/graphics/battle_anims/sprites/161.pal deleted file mode 100644 index 50fe16275..000000000 --- a/graphics/battle_anims/sprites/161.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -164 148 139 -0 0 0 -82 82 82 -164 164 164 -255 255 255 -197 180 115 -164 148 82 -131 115 57 -98 82 24 -74 57 0 -205 205 197 -131 131 131 -255 74 106 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/162.pal b/graphics/battle_anims/sprites/162.pal deleted file mode 100644 index bb46ffa84..000000000 --- a/graphics/battle_anims/sprites/162.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -106 148 139 -0 0 0 -82 82 82 -164 164 164 -255 255 255 -197 180 115 -164 148 82 -131 115 57 -98 82 24 -74 57 0 -41 24 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/163.pal b/graphics/battle_anims/sprites/163.pal deleted file mode 100644 index b65fd9621..000000000 --- a/graphics/battle_anims/sprites/163.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -164 148 139 -0 0 0 -255 172 0 -255 255 139 -255 255 255 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/166.pal b/graphics/battle_anims/sprites/166.pal deleted file mode 100644 index f7c23eb77..000000000 --- a/graphics/battle_anims/sprites/166.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -164 148 139 -82 172 0 -106 180 32 -131 189 65 -156 205 106 -180 213 139 -205 230 180 -230 238 213 -255 255 255 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -156 205 106 -180 213 139 -205 230 180 diff --git a/graphics/battle_anims/sprites/171.pal b/graphics/battle_anims/sprites/171.pal deleted file mode 100644 index 5626f453a..000000000 --- a/graphics/battle_anims/sprites/171.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -164 148 139 -0 0 0 -82 82 82 -164 164 164 -255 255 255 -197 180 115 -164 148 82 -131 115 57 -98 82 24 -74 57 0 -205 205 197 -131 131 131 -255 74 106 -255 255 139 -255 172 24 -255 197 41 diff --git a/graphics/battle_anims/sprites/174.pal b/graphics/battle_anims/sprites/174.pal deleted file mode 100644 index 81af310e1..000000000 --- a/graphics/battle_anims/sprites/174.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -164 148 139 -255 139 0 -255 156 8 -255 172 24 -255 197 41 -255 213 57 -255 230 74 -255 255 90 -255 255 255 -255 74 106 -255 115 148 -255 164 197 -255 205 238 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/175.pal b/graphics/battle_anims/sprites/175.pal deleted file mode 100644 index 5626f453a..000000000 --- a/graphics/battle_anims/sprites/175.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -164 148 139 -0 0 0 -82 82 82 -164 164 164 -255 255 255 -197 180 115 -164 148 82 -131 115 57 -98 82 24 -74 57 0 -205 205 197 -131 131 131 -255 74 106 -255 255 139 -255 172 24 -255 197 41 diff --git a/graphics/battle_anims/sprites/176.pal b/graphics/battle_anims/sprites/176.pal deleted file mode 100644 index 372a787d8..000000000 --- a/graphics/battle_anims/sprites/176.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -164 148 139 -255 255 255 -65 0 65 -139 0 139 -213 0 213 -255 0 255 -222 82 222 -238 164 238 -24 16 82 -24 16 98 -24 24 115 -24 32 139 -24 32 156 -24 41 172 -32 49 197 -0 0 0 diff --git a/graphics/battle_anims/sprites/177.pal b/graphics/battle_anims/sprites/177.pal deleted file mode 100644 index b65fd9621..000000000 --- a/graphics/battle_anims/sprites/177.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -164 148 139 -0 0 0 -255 172 0 -255 255 139 -255 255 255 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/178.pal b/graphics/battle_anims/sprites/178.pal deleted file mode 100644 index 72a9073f0..000000000 --- a/graphics/battle_anims/sprites/178.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -164 148 139 -255 255 255 -65 0 65 -139 0 139 -213 0 213 -255 0 255 -222 82 222 -238 164 238 -8 8 24 -16 24 57 -24 41 90 -41 57 123 -49 74 156 -57 90 189 -65 106 222 -82 123 255 diff --git a/graphics/battle_anims/sprites/179.pal b/graphics/battle_anims/sprites/179.pal deleted file mode 100644 index 5626f453a..000000000 --- a/graphics/battle_anims/sprites/179.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -164 148 139 -0 0 0 -82 82 82 -164 164 164 -255 255 255 -197 180 115 -164 148 82 -131 115 57 -98 82 24 -74 57 0 -205 205 197 -131 131 131 -255 74 106 -255 255 139 -255 172 24 -255 197 41 diff --git a/graphics/battle_anims/sprites/182.pal b/graphics/battle_anims/sprites/182.pal deleted file mode 100644 index 5626f453a..000000000 --- a/graphics/battle_anims/sprites/182.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -164 148 139 -0 0 0 -82 82 82 -164 164 164 -255 255 255 -197 180 115 -164 148 82 -131 115 57 -98 82 24 -74 57 0 -205 205 197 -131 131 131 -255 74 106 -255 255 139 -255 172 24 -255 197 41 diff --git a/graphics/battle_anims/sprites/183.pal b/graphics/battle_anims/sprites/183.pal deleted file mode 100644 index 0ab344608..000000000 --- a/graphics/battle_anims/sprites/183.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -255 255 205 -255 255 164 -255 255 123 -255 255 82 -255 255 41 -255 197 32 -255 148 24 -255 98 16 -255 49 8 -255 0 0 -156 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/184.pal b/graphics/battle_anims/sprites/184.pal deleted file mode 100644 index 0ab344608..000000000 --- a/graphics/battle_anims/sprites/184.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -255 255 205 -255 255 164 -255 255 123 -255 255 82 -255 255 41 -255 197 32 -255 148 24 -255 98 16 -255 49 8 -255 0 0 -156 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/185.pal b/graphics/battle_anims/sprites/185.pal deleted file mode 100644 index 2c07276cd..000000000 --- a/graphics/battle_anims/sprites/185.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -238 246 255 -222 238 255 -205 230 255 -197 222 255 -180 213 255 -164 205 255 -156 205 255 -148 180 222 -139 156 189 -131 131 156 -123 106 123 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/186.pal b/graphics/battle_anims/sprites/186.pal deleted file mode 100644 index 06ef4b1c1..000000000 --- a/graphics/battle_anims/sprites/186.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -238 255 205 -222 255 164 -197 230 139 -172 205 115 -148 180 90 -123 156 65 -98 131 41 -74 106 16 -49 65 16 -255 74 41 -255 74 41 -255 74 41 -255 74 41 -255 74 41 diff --git a/graphics/battle_anims/sprites/187.pal b/graphics/battle_anims/sprites/187.pal deleted file mode 100644 index 27cf421cc..000000000 --- a/graphics/battle_anims/sprites/187.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -255 180 255 -238 115 222 -230 57 189 -222 0 156 -189 8 131 -156 24 115 -123 32 90 -90 49 74 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/188.pal b/graphics/battle_anims/sprites/188.pal deleted file mode 100644 index 5ebdcd6c1..000000000 --- a/graphics/battle_anims/sprites/188.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -197 197 213 -148 148 180 -98 98 148 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/189.pal b/graphics/battle_anims/sprites/189.pal deleted file mode 100644 index 2d18375c0..000000000 --- a/graphics/battle_anims/sprites/189.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -98 0 0 -255 255 222 -213 246 213 -172 238 205 -131 230 197 -98 222 197 -82 189 148 -74 164 98 -65 131 49 -57 106 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/190.pal b/graphics/battle_anims/sprites/190.pal deleted file mode 100644 index eab05a5b9..000000000 --- a/graphics/battle_anims/sprites/190.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -197 213 213 -148 180 180 -65 115 106 -32 82 74 -0 49 41 -205 164 106 -172 131 90 -139 98 74 -106 74 65 -246 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/191.pal b/graphics/battle_anims/sprites/191.pal deleted file mode 100644 index 0d4bddb13..000000000 --- a/graphics/battle_anims/sprites/191.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -148 148 246 -255 255 255 -230 230 230 -205 205 213 -180 180 197 -156 156 180 -131 131 164 -106 106 148 -82 82 131 -65 65 98 -49 49 74 -32 32 49 -16 16 24 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/192.pal b/graphics/battle_anims/sprites/192.pal deleted file mode 100644 index e89b226b0..000000000 --- a/graphics/battle_anims/sprites/192.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -255 255 213 -255 255 180 -255 255 148 -255 255 106 -255 255 74 -255 255 41 -255 180 24 -255 115 16 -255 49 8 -205 24 0 -156 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/193.pal b/graphics/battle_anims/sprites/193.pal deleted file mode 100644 index ef1dc133e..000000000 --- a/graphics/battle_anims/sprites/193.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -246 230 255 -238 205 255 -230 180 255 -222 156 255 -213 131 255 -205 106 255 -180 106 238 -156 106 222 -131 106 205 -106 106 189 -82 106 172 -57 106 156 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/194.pal b/graphics/battle_anims/sprites/194.pal deleted file mode 100644 index ce0b2b1ef..000000000 --- a/graphics/battle_anims/sprites/194.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -156 32 106 -0 0 0 -24 32 16 -57 65 41 -74 82 57 -131 156 82 -172 189 123 -189 197 148 -205 213 172 -123 139 74 -156 180 98 -98 115 57 -238 238 222 -255 255 255 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/195.pal b/graphics/battle_anims/sprites/195.pal deleted file mode 100644 index c2055a31e..000000000 --- a/graphics/battle_anims/sprites/195.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -205 255 222 -156 255 189 -106 255 156 -106 213 131 -106 172 115 -106 131 90 -106 90 74 -106 57 57 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/196.pal b/graphics/battle_anims/sprites/196.pal deleted file mode 100644 index 202ce301a..000000000 --- a/graphics/battle_anims/sprites/196.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -222 205 205 -189 156 156 -156 106 106 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/197.pal b/graphics/battle_anims/sprites/197.pal deleted file mode 100644 index b1c292246..000000000 --- a/graphics/battle_anims/sprites/197.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -255 255 205 -255 255 164 -255 255 123 -255 255 82 -255 255 41 -255 197 32 -246 230 255 -197 180 205 -148 131 164 -98 82 123 -49 32 82 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/198.pal b/graphics/battle_anims/sprites/198.pal deleted file mode 100644 index 0ab344608..000000000 --- a/graphics/battle_anims/sprites/198.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -255 255 205 -255 255 164 -255 255 123 -255 255 82 -255 255 41 -255 197 32 -255 148 24 -255 98 16 -255 49 8 -255 0 0 -156 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/199.pal b/graphics/battle_anims/sprites/199.pal deleted file mode 100644 index b3cbef09c..000000000 --- a/graphics/battle_anims/sprites/199.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -222 197 213 -197 172 180 -180 148 156 -156 123 131 -139 98 98 -115 74 74 -98 49 49 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/200.pal b/graphics/battle_anims/sprites/200.pal deleted file mode 100644 index ada4d9331..000000000 --- a/graphics/battle_anims/sprites/200.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -230 230 246 -205 213 246 -189 197 246 -148 156 197 -106 115 148 -74 74 98 -32 32 49 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/201.pal b/graphics/battle_anims/sprites/201.pal deleted file mode 100644 index 8b7734104..000000000 --- a/graphics/battle_anims/sprites/201.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 230 197 -246 189 98 -213 164 74 -180 139 57 -156 115 41 -123 90 24 -98 65 8 -82 41 0 -255 106 98 -255 0 0 -205 90 32 -255 65 0 -255 131 0 -255 197 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/202.pal b/graphics/battle_anims/sprites/202.pal deleted file mode 100644 index 0e94fa898..000000000 --- a/graphics/battle_anims/sprites/202.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -98 197 246 -255 255 255 -255 238 230 -255 230 205 -255 222 180 -255 213 156 -255 205 131 -238 180 115 -222 164 98 -164 82 49 -131 41 24 -106 8 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/203.pal b/graphics/battle_anims/sprites/203.pal deleted file mode 100644 index 5daf0f326..000000000 --- a/graphics/battle_anims/sprites/203.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -98 197 246 -255 255 255 -255 246 238 -255 238 222 -255 230 205 -255 230 197 -255 222 180 -255 213 164 -255 213 156 -164 82 49 -131 41 24 -106 8 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/204.pal b/graphics/battle_anims/sprites/204.pal deleted file mode 100644 index 0ab344608..000000000 --- a/graphics/battle_anims/sprites/204.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -255 255 205 -255 255 164 -255 255 123 -255 255 82 -255 255 41 -255 197 32 -255 148 24 -255 98 16 -255 49 8 -255 0 0 -156 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/205.pal b/graphics/battle_anims/sprites/205.pal deleted file mode 100644 index 7211c0cff..000000000 --- a/graphics/battle_anims/sprites/205.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -255 246 164 -255 238 82 -255 230 0 -255 197 0 -255 164 0 -255 131 0 -205 98 8 -156 74 16 -106 49 32 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/207.pal b/graphics/battle_anims/sprites/207.pal deleted file mode 100644 index b3c3dd6c6..000000000 --- a/graphics/battle_anims/sprites/207.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -230 230 222 -213 205 189 -189 189 156 -172 164 123 -156 148 90 -123 123 65 -98 98 49 -74 74 32 -49 49 16 -24 24 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/209.pal b/graphics/battle_anims/sprites/209.pal deleted file mode 100644 index b9fe4f9b8..000000000 --- a/graphics/battle_anims/sprites/209.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -230 222 238 -205 197 222 -189 172 205 -164 148 189 -148 123 172 -123 98 148 -106 82 123 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/210.pal b/graphics/battle_anims/sprites/210.pal deleted file mode 100644 index 50393c7f3..000000000 --- a/graphics/battle_anims/sprites/210.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -255 230 255 -255 205 255 -255 180 255 -255 156 255 -213 123 205 -172 98 164 -131 74 115 -90 49 74 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/211.pal b/graphics/battle_anims/sprites/211.pal deleted file mode 100644 index 9e84c1ec4..000000000 --- a/graphics/battle_anims/sprites/211.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -255 255 189 -255 255 131 -255 255 74 -255 255 16 -213 222 32 -172 189 49 -131 164 74 -90 131 90 -57 106 115 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/215.pal b/graphics/battle_anims/sprites/215.pal deleted file mode 100644 index 36adf5477..000000000 --- a/graphics/battle_anims/sprites/215.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -246 255 255 -230 213 230 -222 172 213 -213 131 189 -205 90 172 -197 57 156 -172 57 131 -156 57 115 -131 57 90 -115 57 74 -98 57 57 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/217.pal b/graphics/battle_anims/sprites/217.pal deleted file mode 100644 index 7e79dbd7d..000000000 --- a/graphics/battle_anims/sprites/217.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -246 205 205 -246 156 156 -246 106 106 -246 57 65 -197 57 49 -148 57 41 -98 57 24 -49 57 16 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/218.pal b/graphics/battle_anims/sprites/218.pal deleted file mode 100644 index 0ab344608..000000000 --- a/graphics/battle_anims/sprites/218.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -255 255 205 -255 255 164 -255 255 123 -255 255 82 -255 255 41 -255 197 32 -255 148 24 -255 98 16 -255 49 8 -255 0 0 -156 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/220.pal b/graphics/battle_anims/sprites/220.pal deleted file mode 100644 index 6d6a07036..000000000 --- a/graphics/battle_anims/sprites/220.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -230 238 255 -213 222 255 -189 213 255 -172 197 255 -148 180 255 -123 156 238 -115 139 222 -106 123 205 -98 90 139 -90 90 172 -82 74 156 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/221.pal b/graphics/battle_anims/sprites/221.pal deleted file mode 100644 index 38cac78d5..000000000 --- a/graphics/battle_anims/sprites/221.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -246 197 213 -238 148 172 -230 98 131 -222 49 90 -213 98 106 -213 98 106 -156 49 106 -106 49 57 -74 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/222.pal b/graphics/battle_anims/sprites/222.pal deleted file mode 100644 index 0ab344608..000000000 --- a/graphics/battle_anims/sprites/222.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -255 255 205 -255 255 164 -255 255 123 -255 255 82 -255 255 41 -255 197 32 -255 148 24 -255 98 16 -255 49 8 -255 0 0 -156 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/223.pal b/graphics/battle_anims/sprites/223.pal deleted file mode 100644 index bc1925c2b..000000000 --- a/graphics/battle_anims/sprites/223.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 238 197 -238 213 156 -230 189 123 -213 164 82 -205 139 49 -172 131 49 -148 123 49 -123 115 49 -98 115 49 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/224.pal b/graphics/battle_anims/sprites/224.pal deleted file mode 100644 index 85db7a86e..000000000 --- a/graphics/battle_anims/sprites/224.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -238 230 230 -222 205 205 -205 189 189 -197 164 164 -180 148 148 -164 123 123 -131 106 106 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/225.pal b/graphics/battle_anims/sprites/225.pal deleted file mode 100644 index 6b4b35604..000000000 --- a/graphics/battle_anims/sprites/225.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -255 189 189 -255 123 123 -255 57 57 -255 0 0 -213 0 0 -0 0 0 -197 148 197 -238 246 246 -238 222 180 -246 205 123 -246 189 57 -255 172 0 -213 148 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/226.pal b/graphics/battle_anims/sprites/226.pal deleted file mode 100644 index fa3c8c117..000000000 --- a/graphics/battle_anims/sprites/226.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -238 0 8 -230 230 238 -205 205 230 -180 180 213 -106 106 156 -255 255 255 -230 230 238 -205 205 230 -180 180 213 -156 156 205 -139 41 32 -172 8 16 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/228.pal b/graphics/battle_anims/sprites/228.pal deleted file mode 100644 index d436d582e..000000000 --- a/graphics/battle_anims/sprites/228.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 148 106 -230 131 106 -205 115 106 -180 98 106 -156 82 106 -131 65 106 -106 49 106 -90 32 106 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/229.pal b/graphics/battle_anims/sprites/229.pal deleted file mode 100644 index 94fae44ea..000000000 --- a/graphics/battle_anims/sprites/229.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -222 246 238 -189 238 222 -164 230 205 -131 222 189 -98 213 172 -74 213 156 -57 172 139 -41 131 131 -32 90 123 -16 49 115 -8 8 106 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/230.pal b/graphics/battle_anims/sprites/230.pal deleted file mode 100644 index a9aeedd70..000000000 --- a/graphics/battle_anims/sprites/230.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -255 0 0 -205 0 0 -156 0 0 -106 0 0 -139 197 222 -90 148 189 -41 98 156 -0 49 123 -255 255 74 -230 222 57 -213 189 41 -197 156 24 -148 246 49 -98 148 98 diff --git a/graphics/battle_anims/sprites/231.pal b/graphics/battle_anims/sprites/231.pal deleted file mode 100644 index d3df69d52..000000000 --- a/graphics/battle_anims/sprites/231.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -230 246 246 -205 238 246 -189 230 246 -164 222 246 -148 222 246 -156 172 205 -164 131 164 -172 82 123 -180 41 82 -197 0 49 -8 8 106 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/233.pal b/graphics/battle_anims/sprites/233.pal deleted file mode 100644 index 00ca209c1..000000000 --- a/graphics/battle_anims/sprites/233.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -255 246 230 -255 238 205 -255 230 180 -255 222 156 -255 222 139 -255 197 32 -255 148 24 -255 98 16 -255 49 8 -255 0 0 -156 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/234.pal b/graphics/battle_anims/sprites/234.pal deleted file mode 100644 index 2cf1a4892..000000000 --- a/graphics/battle_anims/sprites/234.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -222 238 230 -189 230 213 -164 222 189 -131 213 172 -106 205 156 -90 164 131 -82 131 106 -65 90 82 -57 57 57 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/235.pal b/graphics/battle_anims/sprites/235.pal deleted file mode 100644 index e8b41ee81..000000000 --- a/graphics/battle_anims/sprites/235.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -230 222 230 -205 189 205 -180 164 180 -156 131 156 -139 106 139 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/238.pal b/graphics/battle_anims/sprites/238.pal deleted file mode 100644 index 59e157bc8..000000000 --- a/graphics/battle_anims/sprites/238.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -255 230 230 -255 205 213 -255 172 189 -255 139 164 -255 115 148 -213 98 123 -180 90 98 -139 74 74 -106 65 49 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/239.pal b/graphics/battle_anims/sprites/239.pal deleted file mode 100644 index 0ab344608..000000000 --- a/graphics/battle_anims/sprites/239.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -255 255 205 -255 255 164 -255 255 123 -255 255 82 -255 255 41 -255 197 32 -255 148 24 -255 98 16 -255 49 8 -255 0 0 -156 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/240.pal b/graphics/battle_anims/sprites/240.pal deleted file mode 100644 index e0d9c6649..000000000 --- a/graphics/battle_anims/sprites/240.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 197 -255 255 49 -205 156 49 -255 131 189 -213 74 172 -172 74 74 -255 41 0 -156 41 0 -57 180 180 -57 98 82 -246 98 0 -148 57 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/241.pal b/graphics/battle_anims/sprites/241.pal deleted file mode 100644 index 8b2c21bc2..000000000 --- a/graphics/battle_anims/sprites/241.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -205 255 222 -156 255 189 -106 255 156 -90 205 139 -74 156 123 -57 106 106 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/242.pal b/graphics/battle_anims/sprites/242.pal deleted file mode 100644 index 524b23be7..000000000 --- a/graphics/battle_anims/sprites/242.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -246 230 238 -238 213 230 -230 197 222 -222 180 213 -213 164 205 -205 148 197 -180 123 172 -156 98 148 -131 74 123 -106 49 98 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/243.pal b/graphics/battle_anims/sprites/243.pal deleted file mode 100644 index 18c22fe04..000000000 --- a/graphics/battle_anims/sprites/243.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -255 238 222 -255 230 189 -255 213 156 -255 205 123 -222 172 106 -189 139 90 -156 106 74 -0 0 0 -205 255 255 -90 115 197 -8 16 148 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/244.pal b/graphics/battle_anims/sprites/244.pal deleted file mode 100644 index f589d587b..000000000 --- a/graphics/battle_anims/sprites/244.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -205 255 246 -164 230 197 -123 205 148 -90 180 98 -90 148 98 -90 123 98 -90 98 98 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/245.pal b/graphics/battle_anims/sprites/245.pal deleted file mode 100644 index 31ea44604..000000000 --- a/graphics/battle_anims/sprites/245.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -238 222 246 -230 197 246 -222 164 246 -213 139 246 -205 106 246 -197 82 246 -172 74 205 -156 65 164 -131 57 123 -115 49 82 -98 49 49 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/248.pal b/graphics/battle_anims/sprites/248.pal deleted file mode 100644 index 99b3298e5..000000000 --- a/graphics/battle_anims/sprites/248.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -246 24 0 -213 24 8 -189 24 24 -156 24 32 -255 255 148 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/249.pal b/graphics/battle_anims/sprites/249.pal deleted file mode 100644 index f8ceb4335..000000000 --- a/graphics/battle_anims/sprites/249.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -172 197 213 -98 74 131 -24 16 49 -0 0 0 -0 0 0 -0 0 0 -255 24 0 -189 8 0 -123 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/251.pal b/graphics/battle_anims/sprites/251.pal deleted file mode 100644 index 7eb6c8e0b..000000000 --- a/graphics/battle_anims/sprites/251.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -246 246 0 -180 222 49 -123 197 98 -57 172 148 -0 148 197 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/252.pal b/graphics/battle_anims/sprites/252.pal deleted file mode 100644 index 78137dd68..000000000 --- a/graphics/battle_anims/sprites/252.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -255 230 213 -255 205 180 -255 180 139 -255 156 106 -255 255 164 -230 213 123 -213 180 90 -197 139 49 -180 106 16 -205 106 57 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/253.pal b/graphics/battle_anims/sprites/253.pal deleted file mode 100644 index 5d4490544..000000000 --- a/graphics/battle_anims/sprites/253.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -238 180 255 -230 115 255 -222 49 255 -180 49 255 -148 49 255 -106 49 255 -74 49 255 -57 32 213 -49 24 180 -32 8 139 -24 0 106 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/254.pal b/graphics/battle_anims/sprites/254.pal deleted file mode 100644 index 9cef556cd..000000000 --- a/graphics/battle_anims/sprites/254.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -238 222 222 -222 189 189 -205 164 156 -189 131 123 -172 106 98 -156 90 82 -139 74 65 -123 57 49 -115 41 41 -98 24 24 -82 8 8 -74 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/255.pal b/graphics/battle_anims/sprites/255.pal deleted file mode 100644 index 0469e3834..000000000 --- a/graphics/battle_anims/sprites/255.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 106 148 -148 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/256.pal b/graphics/battle_anims/sprites/256.pal deleted file mode 100644 index 0ab344608..000000000 --- a/graphics/battle_anims/sprites/256.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -255 255 205 -255 255 164 -255 255 123 -255 255 82 -255 255 41 -255 197 32 -255 148 24 -255 98 16 -255 49 8 -255 0 0 -156 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/257.pal b/graphics/battle_anims/sprites/257.pal deleted file mode 100644 index 24647ea55..000000000 --- a/graphics/battle_anims/sprites/257.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 230 180 -238 205 164 -230 189 148 -213 164 131 -205 148 115 -189 115 90 -164 74 65 -139 32 41 -123 0 24 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/258.pal b/graphics/battle_anims/sprites/258.pal deleted file mode 100644 index 4af22714e..000000000 --- a/graphics/battle_anims/sprites/258.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -189 205 213 -131 156 180 -65 106 139 -8 57 106 -0 0 0 -222 197 205 -189 164 164 -156 139 131 -123 115 90 -98 90 57 -164 49 8 -189 98 32 -213 148 57 -0 0 0 diff --git a/graphics/battle_anims/sprites/260.pal b/graphics/battle_anims/sprites/260.pal deleted file mode 100644 index 8fe916560..000000000 --- a/graphics/battle_anims/sprites/260.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -164 148 139 -148 131 148 -180 172 131 -213 213 115 -255 255 106 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/261.pal b/graphics/battle_anims/sprites/261.pal deleted file mode 100644 index 6bcd99f1f..000000000 --- a/graphics/battle_anims/sprites/261.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -230 148 98 -255 255 222 -230 230 197 -213 205 172 -189 180 148 -172 156 123 -156 131 106 -0 0 0 -0 0 0 -0 0 0 -255 230 156 -246 205 139 -246 180 123 -230 148 98 -213 123 74 -197 98 57 diff --git a/graphics/battle_anims/sprites/262.pal b/graphics/battle_anims/sprites/262.pal deleted file mode 100644 index ec46c0c02..000000000 --- a/graphics/battle_anims/sprites/262.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -164 148 139 -0 0 0 -41 16 156 -41 82 189 -41 148 222 -41 213 255 -106 222 255 -180 238 255 -255 255 255 -74 57 0 -205 205 197 -131 131 131 -255 74 106 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/263.pal b/graphics/battle_anims/sprites/263.pal deleted file mode 100644 index 6ad880537..000000000 --- a/graphics/battle_anims/sprites/263.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -205 230 255 -156 205 255 -106 180 255 -57 156 255 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/264.pal b/graphics/battle_anims/sprites/264.pal deleted file mode 100644 index 18047209b..000000000 --- a/graphics/battle_anims/sprites/264.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 148 148 -255 74 74 -255 0 0 -205 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/266.pal b/graphics/battle_anims/sprites/266.pal deleted file mode 100644 index ddbf8f177..000000000 --- a/graphics/battle_anims/sprites/266.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -156 255 156 -123 222 123 -90 189 90 -57 156 57 -57 106 57 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/269.pal b/graphics/battle_anims/sprites/269.pal deleted file mode 100644 index c75e89cda..000000000 --- a/graphics/battle_anims/sprites/269.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -115 197 164 -115 197 164 -115 197 164 -115 197 164 -115 197 164 -115 197 164 -115 197 164 -115 197 164 -115 197 164 -255 172 172 -255 98 98 -205 65 65 -156 57 74 -255 255 255 -0 0 0 diff --git a/graphics/battle_anims/sprites/270.pal b/graphics/battle_anims/sprites/270.pal deleted file mode 100644 index c67c3b568..000000000 --- a/graphics/battle_anims/sprites/270.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -230 238 255 -205 222 255 -180 205 255 -156 189 255 -131 172 255 -106 156 255 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/271.pal b/graphics/battle_anims/sprites/271.pal deleted file mode 100644 index 0b6a20c45..000000000 --- a/graphics/battle_anims/sprites/271.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -246 255 246 -213 222 205 -189 197 164 -164 172 123 -139 148 90 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/272.pal b/graphics/battle_anims/sprites/272.pal deleted file mode 100644 index e0278aedc..000000000 --- a/graphics/battle_anims/sprites/272.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -205 255 255 -156 255 255 -106 255 255 -82 205 255 -57 156 255 -32 106 255 -8 57 255 -0 32 197 -0 16 139 -0 0 90 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/274.pal b/graphics/battle_anims/sprites/274.pal deleted file mode 100644 index 89b1e16da..000000000 --- a/graphics/battle_anims/sprites/274.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -255 213 230 -255 172 205 -255 139 180 -255 98 156 -255 65 139 -222 65 131 -189 65 123 -156 65 123 -123 65 115 -90 65 106 -57 65 106 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/277.pal b/graphics/battle_anims/sprites/277.pal deleted file mode 100644 index 0ab344608..000000000 --- a/graphics/battle_anims/sprites/277.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -255 255 205 -255 255 164 -255 255 123 -255 255 82 -255 255 41 -255 197 32 -255 148 24 -255 98 16 -255 49 8 -255 0 0 -156 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/278.pal b/graphics/battle_anims/sprites/278.pal deleted file mode 100644 index 6504771ab..000000000 --- a/graphics/battle_anims/sprites/278.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -246 0 0 -197 0 49 -148 0 98 -98 0 148 -49 0 197 -0 0 255 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/279.pal b/graphics/battle_anims/sprites/279.pal deleted file mode 100644 index 1836733e7..000000000 --- a/graphics/battle_anims/sprites/279.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -197 0 0 -255 197 0 -255 148 0 -255 98 0 -255 49 0 -205 49 0 -156 49 0 -106 49 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/280.pal b/graphics/battle_anims/sprites/280.pal deleted file mode 100644 index 276859354..000000000 --- a/graphics/battle_anims/sprites/280.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -189 255 222 -123 255 189 -57 255 156 -57 213 131 -57 180 115 -57 139 90 -57 106 74 -57 74 57 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/281.pal b/graphics/battle_anims/sprites/281.pal deleted file mode 100644 index 4b87da02d..000000000 --- a/graphics/battle_anims/sprites/281.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -148 205 246 -246 246 197 -230 205 164 -222 172 131 -213 139 98 -205 106 74 -172 106 74 -139 106 74 -106 106 74 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/282.pal b/graphics/battle_anims/sprites/282.pal deleted file mode 100644 index 5d2000b00..000000000 --- a/graphics/battle_anims/sprites/282.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -255 255 148 -255 255 41 -255 197 32 -255 148 24 -255 98 16 -255 49 8 -57 49 255 -180 255 255 -106 255 255 -57 238 180 -8 230 106 -8 115 90 -8 8 74 -0 0 0 diff --git a/graphics/battle_anims/sprites/283.pal b/graphics/battle_anims/sprites/283.pal deleted file mode 100644 index 24e6577dc..000000000 --- a/graphics/battle_anims/sprites/283.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -213 213 230 -180 180 205 -139 139 180 -106 106 156 -65 65 131 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/284.pal b/graphics/battle_anims/sprites/284.pal deleted file mode 100644 index 118c18a63..000000000 --- a/graphics/battle_anims/sprites/284.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -164 148 139 -255 255 255 -213 222 255 -180 197 255 -148 172 255 -49 74 156 -24 41 90 -238 164 238 -238 164 238 -238 164 238 -238 164 238 -238 164 238 -238 164 238 -238 164 238 -238 164 238 -82 123 255 diff --git a/graphics/battle_anims/sprites/285.pal b/graphics/battle_anims/sprites/285.pal deleted file mode 100644 index 0182d890a..000000000 --- a/graphics/battle_anims/sprites/285.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -255 246 189 -255 246 8 -255 180 8 -255 123 8 -255 57 8 -255 0 8 -205 0 8 -156 0 8 -106 0 8 -0 0 0 -148 98 246 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/smokescreen_impact.pal b/graphics/battle_anims/sprites/smokescreen_impact.pal deleted file mode 100644 index 64367bdc9..000000000 --- a/graphics/battle_anims/sprites/smokescreen_impact.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -98 148 49 -57 98 197 -0 0 0 -0 0 0 -0 0 0 -164 156 106 -197 197 148 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_anims/sprites/substitute.pal b/graphics/battle_anims/sprites/substitute.pal deleted file mode 100644 index 8b6e458a1..000000000 --- a/graphics/battle_anims/sprites/substitute.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -148 238 197 -255 255 255 -230 238 222 -205 222 189 -189 205 164 -164 189 131 -148 172 106 -123 139 90 -106 106 82 -82 82 74 -65 49 65 -49 24 57 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_interface/hpbar.pal b/graphics/battle_interface/hpbar.pal deleted file mode 100644 index ea646bb82..000000000 --- a/graphics/battle_interface/hpbar.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -57 57 57 -255 255 255 -213 205 189 -131 131 139 -74 65 90 -82 106 90 -255 180 123 -246 148 115 -222 106 90 -115 255 172 -90 213 131 -255 230 57 -205 172 8 -255 90 57 -172 65 74 diff --git a/graphics/battle_interface/window.pal b/graphics/battle_interface/window.pal deleted file mode 100644 index bc8e8f2bc..000000000 --- a/graphics/battle_interface/window.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -65 65 65 -255 255 222 -222 213 180 -197 189 115 -123 148 131 -82 106 98 -32 57 0 -57 82 65 -255 230 0 -255 156 148 -65 205 255 -0 0 255 -0 255 0 -255 0 0 -106 148 255 diff --git a/graphics/battle_transitions/vs_frame.pal b/graphics/battle_transitions/vs_frame.pal deleted file mode 100644 index 104afd395..000000000 --- a/graphics/battle_transitions/vs_frame.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 255 0 -65 65 65 -255 255 255 -238 230 197 -213 205 131 -123 148 131 -82 106 98 -32 57 0 -57 82 65 -246 148 115 -222 106 90 -65 205 255 -255 255 255 -213 205 189 -131 131 139 -74 65 90 diff --git a/graphics/berries/aguav/pic.png b/graphics/berries/aguav.png similarity index 100% rename from graphics/berries/aguav/pic.png rename to graphics/berries/aguav.png diff --git a/graphics/berries/aguav/palette.pal b/graphics/berries/aguav/palette.pal deleted file mode 100644 index fa20daf24..000000000 --- a/graphics/berries/aguav/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -230 255 156 -197 238 131 -164 222 106 -131 205 82 -98 189 57 -74 148 41 -57 115 32 -41 82 24 -255 238 189 -222 197 148 -189 164 106 -156 131 74 -197 197 139 -148 172 98 -90 139 82 diff --git a/graphics/berries/apicot/pic.png b/graphics/berries/apicot.png similarity index 100% rename from graphics/berries/apicot/pic.png rename to graphics/berries/apicot.png diff --git a/graphics/berries/apicot/palette.pal b/graphics/berries/apicot/palette.pal deleted file mode 100644 index 82cb76d5a..000000000 --- a/graphics/berries/apicot/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -197 197 197 -238 238 255 -189 205 238 -148 180 230 -106 148 222 -65 123 213 -65 98 148 -222 255 131 -197 230 123 -172 213 115 -148 189 106 -123 172 98 -90 131 82 -57 164 156 -255 230 98 -205 164 98 diff --git a/graphics/berries/aspear/pic.png b/graphics/berries/aspear.png similarity index 100% rename from graphics/berries/aspear/pic.png rename to graphics/berries/aspear.png diff --git a/graphics/berries/aspear/palette.pal b/graphics/berries/aspear/palette.pal deleted file mode 100644 index 52842fd55..000000000 --- a/graphics/berries/aspear/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -148 246 246 -246 238 222 -246 238 189 -246 238 156 -246 238 123 -230 213 115 -213 197 106 -197 180 98 -180 156 90 -164 139 82 -148 123 74 -180 189 148 -156 164 131 -131 139 123 -106 123 115 -0 0 0 diff --git a/graphics/berries/belue/pic.png b/graphics/berries/belue.png similarity index 100% rename from graphics/berries/belue/pic.png rename to graphics/berries/belue.png diff --git a/graphics/berries/belue/palette.pal b/graphics/berries/belue/palette.pal deleted file mode 100644 index 0d348b27e..000000000 --- a/graphics/berries/belue/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -197 197 197 -164 172 197 -148 148 180 -131 123 172 -123 98 156 -106 74 148 -98 57 139 -82 41 82 -255 213 164 -230 189 148 -205 164 131 -180 139 123 -189 238 131 -156 205 115 -123 172 98 -90 139 82 diff --git a/graphics/berries/bluk/pic.png b/graphics/berries/bluk.png similarity index 100% rename from graphics/berries/bluk/pic.png rename to graphics/berries/bluk.png diff --git a/graphics/berries/bluk/palette.pal b/graphics/berries/bluk/palette.pal deleted file mode 100644 index 88586d6b5..000000000 --- a/graphics/berries/bluk/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -197 197 197 -189 205 213 -164 156 197 -139 115 180 -115 74 172 -98 57 139 -90 49 106 -82 41 82 -180 139 123 -148 106 82 -115 74 41 -0 0 0 -189 238 131 -156 205 115 -123 172 98 -90 139 82 diff --git a/graphics/berries/cheri/pic.png b/graphics/berries/cheri.png similarity index 100% rename from graphics/berries/cheri/pic.png rename to graphics/berries/cheri.png diff --git a/graphics/berries/cheri/palette.pal b/graphics/berries/cheri/palette.pal deleted file mode 100644 index 01acf52c9..000000000 --- a/graphics/berries/cheri/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -148 246 246 -255 255 123 -246 180 98 -246 106 74 -246 41 49 -213 49 41 -180 57 32 -148 65 24 -115 82 24 -189 238 131 -156 205 115 -123 172 98 -90 139 82 -115 90 74 -82 90 49 -57 98 32 diff --git a/graphics/berries/chesto/pic.png b/graphics/berries/chesto.png similarity index 100% rename from graphics/berries/chesto/pic.png rename to graphics/berries/chesto.png diff --git a/graphics/berries/chesto/palette.pal b/graphics/berries/chesto/palette.pal deleted file mode 100644 index 3a4e0964f..000000000 --- a/graphics/berries/chesto/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -197 197 197 -148 205 255 -123 172 238 -98 148 222 -82 123 213 -65 98 180 -57 74 148 -230 197 164 -213 172 148 -197 156 131 -180 131 115 -164 115 98 -148 98 82 -156 205 115 -74 106 197 -90 139 82 diff --git a/graphics/berries/cornn/pic.png b/graphics/berries/cornn.png similarity index 100% rename from graphics/berries/cornn/pic.png rename to graphics/berries/cornn.png diff --git a/graphics/berries/cornn/palette.pal b/graphics/berries/cornn/palette.pal deleted file mode 100644 index 5096389e0..000000000 --- a/graphics/berries/cornn/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -197 197 197 -189 205 213 -164 156 197 -139 115 180 -115 74 172 -98 57 139 -90 49 106 -82 41 82 -180 139 123 -180 189 123 -115 74 41 -49 90 0 -189 238 131 -156 205 115 -123 172 98 -90 139 82 diff --git a/graphics/berries/durin/pic.png b/graphics/berries/durin.png similarity index 100% rename from graphics/berries/durin/pic.png rename to graphics/berries/durin.png diff --git a/graphics/berries/durin/palette.pal b/graphics/berries/durin/palette.pal deleted file mode 100644 index 8b636135d..000000000 --- a/graphics/berries/durin/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -197 197 246 -230 255 156 -197 238 131 -164 222 106 -131 205 82 -98 189 57 -98 164 57 -98 139 57 -255 246 197 -255 222 148 -139 98 49 -222 172 98 -189 148 98 -156 205 115 -123 172 98 -90 139 82 diff --git a/graphics/berries/enigma/pic.png b/graphics/berries/enigma.png similarity index 100% rename from graphics/berries/enigma/pic.png rename to graphics/berries/enigma.png diff --git a/graphics/berries/enigma/palette.pal b/graphics/berries/enigma/palette.pal deleted file mode 100644 index 349ecc7f4..000000000 --- a/graphics/berries/enigma/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -197 246 246 -148 131 123 -115 98 98 -82 74 74 -57 49 49 -24 24 24 -0 0 0 -246 238 222 -222 205 197 -205 180 172 -180 156 156 -164 131 131 -148 106 115 -156 205 115 -123 172 98 -90 139 82 diff --git a/graphics/berries/figy/pic.png b/graphics/berries/figy.png similarity index 100% rename from graphics/berries/figy/pic.png rename to graphics/berries/figy.png diff --git a/graphics/berries/figy/palette.pal b/graphics/berries/figy/palette.pal deleted file mode 100644 index e427ea1e9..000000000 --- a/graphics/berries/figy/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -148 197 246 -255 255 123 -246 180 98 -246 106 74 -246 41 49 -213 41 49 -180 41 49 -255 246 205 -230 213 172 -205 189 139 -180 164 115 -123 106 74 -197 123 90 -156 205 115 -123 172 98 -90 139 82 diff --git a/graphics/berries/ganlon/pic.png b/graphics/berries/ganlon.png similarity index 100% rename from graphics/berries/ganlon/pic.png rename to graphics/berries/ganlon.png diff --git a/graphics/berries/ganlon/palette.pal b/graphics/berries/ganlon/palette.pal deleted file mode 100644 index 381974125..000000000 --- a/graphics/berries/ganlon/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -197 197 197 -222 255 255 -189 230 255 -164 197 238 -139 172 222 -115 148 213 -90 123 197 -65 98 189 -65 65 123 -246 238 164 -222 205 139 -205 180 123 -180 156 106 -164 131 90 -123 172 98 -90 139 82 diff --git a/graphics/berries/grepa/pic.png b/graphics/berries/grepa.png similarity index 100% rename from graphics/berries/grepa/pic.png rename to graphics/berries/grepa.png diff --git a/graphics/berries/grepa/palette.pal b/graphics/berries/grepa/palette.pal deleted file mode 100644 index 42ff8830f..000000000 --- a/graphics/berries/grepa/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -148 246 246 -246 238 222 -246 230 180 -246 230 148 -246 222 106 -255 222 74 -222 197 65 -197 172 65 -172 148 65 -148 123 65 -123 98 65 -172 255 74 -131 213 65 -90 180 65 -49 148 65 -238 205 65 diff --git a/graphics/berries/hondew/pic.png b/graphics/berries/hondew.png similarity index 100% rename from graphics/berries/hondew/pic.png rename to graphics/berries/hondew.png diff --git a/graphics/berries/hondew/palette.pal b/graphics/berries/hondew/palette.pal deleted file mode 100644 index db2739961..000000000 --- a/graphics/berries/hondew/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -197 197 246 -230 255 156 -197 238 131 -164 222 106 -131 205 82 -98 189 57 -98 164 57 -98 139 57 -255 246 197 -255 222 148 -255 197 98 -222 172 98 -189 148 98 -156 205 115 -123 172 98 -90 139 82 diff --git a/graphics/berries/iapapa/pic.png b/graphics/berries/iapapa.png similarity index 100% rename from graphics/berries/iapapa/pic.png rename to graphics/berries/iapapa.png diff --git a/graphics/berries/iapapa/palette.pal b/graphics/berries/iapapa/palette.pal deleted file mode 100644 index 31fac9dde..000000000 --- a/graphics/berries/iapapa/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -148 197 197 -246 238 222 -246 238 172 -238 213 148 -230 197 131 -222 180 115 -213 164 98 -205 148 82 -139 90 57 -230 164 90 -238 123 74 -255 90 57 -222 90 57 -197 90 57 -172 90 57 -90 139 82 diff --git a/graphics/berries/kelpsy/pic.png b/graphics/berries/kelpsy.png similarity index 100% rename from graphics/berries/kelpsy/pic.png rename to graphics/berries/kelpsy.png diff --git a/graphics/berries/kelpsy/palette.pal b/graphics/berries/kelpsy/palette.pal deleted file mode 100644 index 67ad7a21c..000000000 --- a/graphics/berries/kelpsy/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -197 197 197 -189 205 213 -164 156 197 -139 115 180 -115 74 172 -98 57 139 -90 49 106 -82 41 82 -180 139 123 -148 106 82 -115 74 41 -0 0 0 -189 222 255 -156 197 230 -131 172 205 -106 148 189 diff --git a/graphics/berries/lansat/pic.png b/graphics/berries/lansat.png similarity index 100% rename from graphics/berries/lansat/pic.png rename to graphics/berries/lansat.png diff --git a/graphics/berries/lansat/palette.pal b/graphics/berries/lansat/palette.pal deleted file mode 100644 index 66621677d..000000000 --- a/graphics/berries/lansat/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -197 246 246 -189 222 148 -148 197 123 -115 180 106 -82 164 90 -49 148 74 -255 222 164 -246 180 139 -238 148 115 -230 106 90 -222 74 65 -213 41 49 -189 41 49 -156 205 115 -123 172 98 -90 139 82 diff --git a/graphics/berries/leppa/pic.png b/graphics/berries/leppa.png similarity index 100% rename from graphics/berries/leppa/pic.png rename to graphics/berries/leppa.png diff --git a/graphics/berries/leppa/palette.pal b/graphics/berries/leppa/palette.pal deleted file mode 100644 index 4fab82d6c..000000000 --- a/graphics/berries/leppa/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -148 246 246 -255 255 123 -246 180 98 -246 106 74 -246 41 49 -213 41 49 -180 41 49 -148 41 49 -197 148 98 -189 238 131 -156 205 115 -123 172 98 -90 139 82 -115 90 74 -82 90 49 -57 98 32 diff --git a/graphics/berries/liechi/pic.png b/graphics/berries/liechi.png similarity index 100% rename from graphics/berries/liechi/pic.png rename to graphics/berries/liechi.png diff --git a/graphics/berries/liechi/palette.pal b/graphics/berries/liechi/palette.pal deleted file mode 100644 index c12737deb..000000000 --- a/graphics/berries/liechi/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -197 246 246 -255 255 123 -246 180 98 -246 106 74 -246 41 49 -213 41 49 -180 41 49 -255 255 255 -238 230 213 -222 205 172 -205 180 131 -197 164 90 -255 205 131 -238 164 98 -222 123 65 -213 90 32 diff --git a/graphics/berries/lum/pic.png b/graphics/berries/lum.png similarity index 100% rename from graphics/berries/lum/pic.png rename to graphics/berries/lum.png diff --git a/graphics/berries/lum/palette.pal b/graphics/berries/lum/palette.pal deleted file mode 100644 index 237ef0dc4..000000000 --- a/graphics/berries/lum/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -98 246 246 -255 255 222 -238 255 189 -230 255 156 -197 230 131 -172 205 115 -148 180 90 -123 156 74 -115 115 74 -106 82 74 -0 0 0 -0 0 0 -189 238 131 -156 205 115 -123 172 98 -90 139 82 diff --git a/graphics/berries/mago/pic.png b/graphics/berries/mago.png similarity index 100% rename from graphics/berries/mago/pic.png rename to graphics/berries/mago.png diff --git a/graphics/berries/mago/palette.pal b/graphics/berries/mago/palette.pal deleted file mode 100644 index 4441e4564..000000000 --- a/graphics/berries/mago/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -148 246 246 -255 222 205 -246 189 180 -246 164 156 -246 139 139 -197 106 106 -148 74 74 -98 41 49 -255 246 197 -230 205 148 -213 164 106 -197 131 65 -189 238 131 -156 205 115 -123 172 98 -90 139 82 diff --git a/graphics/berries/magost/pic.png b/graphics/berries/magost.png similarity index 100% rename from graphics/berries/magost/pic.png rename to graphics/berries/magost.png diff --git a/graphics/berries/magost/palette.pal b/graphics/berries/magost/palette.pal deleted file mode 100644 index 2393be3d6..000000000 --- a/graphics/berries/magost/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -148 246 246 -255 222 205 -246 189 180 -246 164 156 -246 139 139 -222 123 123 -197 106 106 -180 90 90 -255 246 197 -230 131 131 -246 148 148 -197 131 65 -189 238 131 -156 205 115 -123 172 98 -90 139 82 diff --git a/graphics/berries/nanab/pic.png b/graphics/berries/nanab.png similarity index 100% rename from graphics/berries/nanab/pic.png rename to graphics/berries/nanab.png diff --git a/graphics/berries/nanab/palette.pal b/graphics/berries/nanab/palette.pal deleted file mode 100644 index 4441e4564..000000000 --- a/graphics/berries/nanab/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -148 246 246 -255 222 205 -246 189 180 -246 164 156 -246 139 139 -197 106 106 -148 74 74 -98 41 49 -255 246 197 -230 205 148 -213 164 106 -197 131 65 -189 238 131 -156 205 115 -123 172 98 -90 139 82 diff --git a/graphics/berries/nomel/pic.png b/graphics/berries/nomel.png similarity index 100% rename from graphics/berries/nomel/pic.png rename to graphics/berries/nomel.png diff --git a/graphics/berries/nomel/palette.pal b/graphics/berries/nomel/palette.pal deleted file mode 100644 index 6844ddcc3..000000000 --- a/graphics/berries/nomel/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -148 246 246 -246 238 222 -246 230 180 -246 230 148 -246 222 106 -255 222 74 -238 197 65 -222 180 65 -205 156 65 -189 139 65 -123 98 65 -172 255 74 -131 213 65 -90 180 65 -246 205 65 -238 205 65 diff --git a/graphics/berries/oran/pic.png b/graphics/berries/oran.png similarity index 100% rename from graphics/berries/oran/pic.png rename to graphics/berries/oran.png diff --git a/graphics/berries/oran/palette.pal b/graphics/berries/oran/palette.pal deleted file mode 100644 index ac06d0224..000000000 --- a/graphics/berries/oran/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -197 197 197 -189 205 213 -156 172 213 -123 148 213 -90 123 213 -65 98 213 -65 82 180 -65 65 148 -74 49 115 -148 106 82 -115 74 41 -0 0 0 -189 238 131 -156 205 115 -123 172 98 -90 139 82 diff --git a/graphics/berries/pamtre/pic.png b/graphics/berries/pamtre.png similarity index 100% rename from graphics/berries/pamtre/pic.png rename to graphics/berries/pamtre.png diff --git a/graphics/berries/pamtre/palette.pal b/graphics/berries/pamtre/palette.pal deleted file mode 100644 index fa2cb87a7..000000000 --- a/graphics/berries/pamtre/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -189 205 213 -172 180 205 -156 148 189 -131 106 180 -115 74 172 -98 57 139 -90 49 106 -82 41 82 -238 189 213 -205 164 172 -180 139 139 -156 115 106 -131 90 74 -156 205 115 -123 172 98 -90 139 82 diff --git a/graphics/berries/pecha/pic.png b/graphics/berries/pecha.png similarity index 100% rename from graphics/berries/pecha/pic.png rename to graphics/berries/pecha.png diff --git a/graphics/berries/pecha/palette.pal b/graphics/berries/pecha/palette.pal deleted file mode 100644 index b0743cc64..000000000 --- a/graphics/berries/pecha/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -148 246 246 -255 255 255 -255 222 197 -255 197 148 -222 172 123 -197 148 106 -172 123 90 -148 98 74 -0 0 0 -255 205 172 -238 180 131 -123 246 0 -90 213 0 -57 180 0 -24 148 0 -0 0 0 diff --git a/graphics/berries/persim/pic.png b/graphics/berries/persim.png similarity index 100% rename from graphics/berries/persim/pic.png rename to graphics/berries/persim.png diff --git a/graphics/berries/persim/palette.pal b/graphics/berries/persim/palette.pal deleted file mode 100644 index 389fac638..000000000 --- a/graphics/berries/persim/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -148 246 246 -255 222 205 -246 189 180 -246 164 156 -246 139 139 -197 106 106 -148 74 74 -98 41 49 -0 0 0 -0 0 0 -0 0 0 -90 98 82 -189 238 131 -156 205 115 -123 172 98 -90 139 82 diff --git a/graphics/berries/petaya/pic.png b/graphics/berries/petaya.png similarity index 100% rename from graphics/berries/petaya/pic.png rename to graphics/berries/petaya.png diff --git a/graphics/berries/petaya/palette.pal b/graphics/berries/petaya/palette.pal deleted file mode 100644 index c6eefb076..000000000 --- a/graphics/berries/petaya/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -197 246 246 -255 197 205 -246 164 180 -246 131 156 -246 106 139 -189 74 90 -139 41 49 -230 197 148 -205 172 123 -189 148 98 -172 123 74 -156 98 49 -189 238 131 -156 205 115 -123 172 98 -90 139 82 diff --git a/graphics/berries/pinap/pic.png b/graphics/berries/pinap.png similarity index 100% rename from graphics/berries/pinap/pic.png rename to graphics/berries/pinap.png diff --git a/graphics/berries/pinap/palette.pal b/graphics/berries/pinap/palette.pal deleted file mode 100644 index e62f61e20..000000000 --- a/graphics/berries/pinap/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -148 246 246 -246 238 222 -246 238 189 -246 238 156 -246 238 123 -222 205 106 -197 180 98 -172 156 90 -148 123 74 -123 98 65 -106 74 57 -148 255 172 -115 213 148 -82 180 123 -49 148 98 -0 0 0 diff --git a/graphics/berries/pomeg/pic.png b/graphics/berries/pomeg.png similarity index 100% rename from graphics/berries/pomeg/pic.png rename to graphics/berries/pomeg.png diff --git a/graphics/berries/pomeg/palette.pal b/graphics/berries/pomeg/palette.pal deleted file mode 100644 index 01acf52c9..000000000 --- a/graphics/berries/pomeg/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -148 246 246 -255 255 123 -246 180 98 -246 106 74 -246 41 49 -213 49 41 -180 57 32 -148 65 24 -115 82 24 -189 238 131 -156 205 115 -123 172 98 -90 139 82 -115 90 74 -82 90 49 -57 98 32 diff --git a/graphics/berries/qualot/pic.png b/graphics/berries/qualot.png similarity index 100% rename from graphics/berries/qualot/pic.png rename to graphics/berries/qualot.png diff --git a/graphics/berries/qualot/palette.pal b/graphics/berries/qualot/palette.pal deleted file mode 100644 index 4441e4564..000000000 --- a/graphics/berries/qualot/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -148 246 246 -255 222 205 -246 189 180 -246 164 156 -246 139 139 -197 106 106 -148 74 74 -98 41 49 -255 246 197 -230 205 148 -213 164 106 -197 131 65 -189 238 131 -156 205 115 -123 172 98 -90 139 82 diff --git a/graphics/berries/rabuta/pic.png b/graphics/berries/rabuta.png similarity index 100% rename from graphics/berries/rabuta/pic.png rename to graphics/berries/rabuta.png diff --git a/graphics/berries/rabuta/palette.pal b/graphics/berries/rabuta/palette.pal deleted file mode 100644 index 251beeb2d..000000000 --- a/graphics/berries/rabuta/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -197 197 246 -230 255 156 -197 238 131 -164 222 106 -131 205 82 -98 189 57 -98 164 57 -98 139 57 -255 246 197 -230 213 172 -205 189 156 -180 164 131 -156 139 115 -139 115 98 -90 106 57 -90 139 82 diff --git a/graphics/berries/rawst/pic.png b/graphics/berries/rawst.png similarity index 100% rename from graphics/berries/rawst/pic.png rename to graphics/berries/rawst.png diff --git a/graphics/berries/rawst/palette.pal b/graphics/berries/rawst/palette.pal deleted file mode 100644 index a7a4576b5..000000000 --- a/graphics/berries/rawst/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -148 98 246 -255 255 255 -213 230 222 -172 205 189 -131 189 156 -90 164 123 -49 148 98 -49 131 82 -57 115 74 -65 98 65 -74 82 57 -98 197 0 -49 148 0 -0 98 0 -148 205 0 -0 0 0 diff --git a/graphics/berries/razz/pic.png b/graphics/berries/razz.png similarity index 100% rename from graphics/berries/razz/pic.png rename to graphics/berries/razz.png diff --git a/graphics/berries/razz/palette.pal b/graphics/berries/razz/palette.pal deleted file mode 100644 index 01acf52c9..000000000 --- a/graphics/berries/razz/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -148 246 246 -255 255 123 -246 180 98 -246 106 74 -246 41 49 -213 49 41 -180 57 32 -148 65 24 -115 82 24 -189 238 131 -156 205 115 -123 172 98 -90 139 82 -115 90 74 -82 90 49 -57 98 32 diff --git a/graphics/berries/salac/pic.png b/graphics/berries/salac.png similarity index 100% rename from graphics/berries/salac/pic.png rename to graphics/berries/salac.png diff --git a/graphics/berries/salac/palette.pal b/graphics/berries/salac/palette.pal deleted file mode 100644 index c0849c6bc..000000000 --- a/graphics/berries/salac/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -197 255 255 -255 255 255 -246 255 222 -238 255 189 -230 255 156 -197 238 131 -164 222 106 -131 205 82 -98 189 57 -90 156 41 -82 123 24 -74 98 8 -189 238 131 -156 205 115 -123 172 98 -90 139 82 diff --git a/graphics/berries/sitrus/pic.png b/graphics/berries/sitrus.png similarity index 100% rename from graphics/berries/sitrus/pic.png rename to graphics/berries/sitrus.png diff --git a/graphics/berries/sitrus/palette.pal b/graphics/berries/sitrus/palette.pal deleted file mode 100644 index b80481ae1..000000000 --- a/graphics/berries/sitrus/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -98 246 246 -246 238 222 -246 238 172 -246 238 123 -222 213 106 -197 189 90 -172 164 82 -148 139 65 -123 115 57 -246 197 90 -246 172 32 -189 131 32 -189 238 131 -156 205 115 -123 172 98 -90 139 82 diff --git a/graphics/berries/spelon/pic.png b/graphics/berries/spelon.png similarity index 100% rename from graphics/berries/spelon/pic.png rename to graphics/berries/spelon.png diff --git a/graphics/berries/spelon/palette.pal b/graphics/berries/spelon/palette.pal deleted file mode 100644 index 01acf52c9..000000000 --- a/graphics/berries/spelon/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -148 246 246 -255 255 123 -246 180 98 -246 106 74 -246 41 49 -213 49 41 -180 57 32 -148 65 24 -115 82 24 -189 238 131 -156 205 115 -123 172 98 -90 139 82 -115 90 74 -82 90 49 -57 98 32 diff --git a/graphics/berries/starf/pic.png b/graphics/berries/starf.png similarity index 100% rename from graphics/berries/starf/pic.png rename to graphics/berries/starf.png diff --git a/graphics/berries/starf/palette.pal b/graphics/berries/starf/palette.pal deleted file mode 100644 index 68525b6a6..000000000 --- a/graphics/berries/starf/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -148 238 246 -246 139 90 -230 255 213 -205 255 180 -180 255 139 -156 255 106 -131 205 106 -106 164 106 -90 123 106 -246 41 41 -156 106 106 -255 156 156 -98 123 205 -164 213 41 -255 205 8 -0 0 0 diff --git a/graphics/berries/tamato/pic.png b/graphics/berries/tamato.png similarity index 100% rename from graphics/berries/tamato/pic.png rename to graphics/berries/tamato.png diff --git a/graphics/berries/tamato/palette.pal b/graphics/berries/tamato/palette.pal deleted file mode 100644 index 01acf52c9..000000000 --- a/graphics/berries/tamato/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -148 246 246 -255 255 123 -246 180 98 -246 106 74 -246 41 49 -213 49 41 -180 57 32 -148 65 24 -115 82 24 -189 238 131 -156 205 115 -123 172 98 -90 139 82 -115 90 74 -82 90 49 -57 98 32 diff --git a/graphics/berries/watmel/pic.png b/graphics/berries/watmel.png similarity index 100% rename from graphics/berries/watmel/pic.png rename to graphics/berries/watmel.png diff --git a/graphics/berries/watmel/palette.pal b/graphics/berries/watmel/palette.pal deleted file mode 100644 index 786c0a848..000000000 --- a/graphics/berries/watmel/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -148 246 246 -255 222 205 -246 189 180 -246 164 156 -246 139 139 -213 115 115 -180 90 90 -148 74 74 -255 246 197 -230 205 148 -238 255 180 -213 246 156 -189 238 131 -156 205 115 -123 172 98 -90 139 82 diff --git a/graphics/berries/wepear/pic.png b/graphics/berries/wepear.png similarity index 100% rename from graphics/berries/wepear/pic.png rename to graphics/berries/wepear.png diff --git a/graphics/berries/wepear/palette.pal b/graphics/berries/wepear/palette.pal deleted file mode 100644 index dac1511ff..000000000 --- a/graphics/berries/wepear/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -197 255 255 -230 255 156 -197 238 131 -164 222 106 -131 205 82 -98 189 57 -98 156 57 -98 123 57 -98 90 57 -0 0 0 -180 230 115 -0 0 0 -189 238 131 -156 205 115 -123 172 98 -90 139 82 diff --git a/graphics/berries/wiki/pic.png b/graphics/berries/wiki.png similarity index 100% rename from graphics/berries/wiki/pic.png rename to graphics/berries/wiki.png diff --git a/graphics/berries/wiki/palette.pal b/graphics/berries/wiki/palette.pal deleted file mode 100644 index 88586d6b5..000000000 --- a/graphics/berries/wiki/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -197 197 197 -189 205 213 -164 156 197 -139 115 180 -115 74 172 -98 57 139 -90 49 106 -82 41 82 -180 139 123 -148 106 82 -115 74 41 -0 0 0 -189 238 131 -156 205 115 -123 172 98 -90 139 82 diff --git a/graphics/berry_blender/arrow.pal b/graphics/berry_blender/arrow.pal deleted file mode 100644 index 4c975292d..000000000 --- a/graphics/berry_blender/arrow.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -213 222 238 -180 197 230 -148 172 222 -115 148 205 -82 123 197 -49 98 189 -255 180 205 -255 115 98 -255 49 0 -205 65 65 -189 24 24 -148 16 16 -74 57 139 -8 0 82 diff --git a/graphics/berry_blender/center.pal b/graphics/berry_blender/center.pal deleted file mode 100644 index 606c527a3..000000000 --- a/graphics/berry_blender/center.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -205 197 255 -172 164 222 -139 139 189 -106 106 156 -74 82 123 -41 57 90 -213 222 189 -180 189 156 -148 156 123 -115 123 90 -255 172 123 -246 115 82 -238 57 41 -156 24 0 diff --git a/graphics/berry_blender/outer.pal b/graphics/berry_blender/outer.pal deleted file mode 100644 index c3b83cf16..000000000 --- a/graphics/berry_blender/outer.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -213 222 238 -180 197 230 -148 172 222 -115 148 205 -82 123 197 -49 98 189 -255 180 205 -255 115 98 -255 49 0 -205 65 65 -189 24 24 -148 123 197 -74 57 139 -8 0 82 diff --git a/graphics/birch_speech/birch.pal b/graphics/birch_speech/birch.pal deleted file mode 100644 index b89a5861a..000000000 --- a/graphics/birch_speech/birch.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 230 205 -222 189 148 -197 148 115 -106 74 65 -98 98 115 -41 57 65 -180 115 82 -115 74 57 -205 205 222 -148 148 148 -189 156 90 -139 115 57 -74 49 24 -255 255 255 -0 0 24 diff --git a/graphics/contest/judge.pal b/graphics/contest/judge.pal deleted file mode 100644 index e62f2abd3..000000000 --- a/graphics/contest/judge.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -156 197 164 -255 222 205 -222 180 148 -172 115 90 -238 238 238 -90 57 57 -57 49 65 -0 0 0 -82 90 8 -57 65 16 -222 82 82 -246 197 49 -246 230 139 -131 131 148 -164 164 180 -205 205 222 diff --git a/graphics/contest/judge_symbols.pal b/graphics/contest/judge_symbols.pal deleted file mode 100644 index 3eeaa1128..000000000 --- a/graphics/contest/judge_symbols.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -205 148 115 -255 106 115 -255 57 57 -156 0 0 -164 222 255 -106 148 255 -49 82 255 -255 255 115 -246 222 65 -230 106 0 -255 255 255 -189 189 197 -131 131 139 -98 98 123 -65 74 106 -41 49 90 diff --git a/graphics/contest/nextturn.pal b/graphics/contest/nextturn.pal deleted file mode 100644 index 05991c79e..000000000 --- a/graphics/contest/nextturn.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -148 90 16 -246 189 115 -255 222 115 -255 255 156 -255 49 24 -213 16 0 -246 156 222 -255 0 90 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/interface/ball/dive.pal b/graphics/interface/ball/dive.pal deleted file mode 100644 index 1bd07d69d..000000000 --- a/graphics/interface/ball/dive.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -255 255 255 -90 139 222 -115 164 230 -148 197 238 -180 230 255 -255 255 255 -148 148 148 -65 65 65 -24 24 24 -0 90 156 -24 106 172 -57 123 197 -255 255 255 -255 255 255 -255 255 255 -255 255 255 diff --git a/graphics/interface/ball/great.pal b/graphics/interface/ball/great.pal deleted file mode 100644 index f19aa5e4a..000000000 --- a/graphics/interface/ball/great.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -255 255 255 -98 139 180 -123 156 222 -148 180 222 -180 205 230 -255 255 255 -148 148 148 -65 65 65 -24 24 24 -189 41 90 -222 65 115 -255 98 139 -255 255 255 -255 255 255 -255 255 255 -255 255 255 diff --git a/graphics/interface/ball/luxury.pal b/graphics/interface/ball/luxury.pal deleted file mode 100644 index a49399d01..000000000 --- a/graphics/interface/ball/luxury.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -255 255 255 -49 49 41 -90 90 82 -131 131 123 -180 172 164 -255 255 255 -148 148 148 -65 65 65 -24 24 24 -255 255 156 -255 222 106 -255 189 57 -255 156 8 -230 74 24 -180 74 24 -255 255 255 diff --git a/graphics/interface/ball/master.pal b/graphics/interface/ball/master.pal deleted file mode 100644 index 72247849b..000000000 --- a/graphics/interface/ball/master.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -255 255 255 -115 16 156 -139 41 172 -164 65 189 -189 90 205 -255 255 255 -148 148 148 -65 65 65 -24 24 24 -255 98 139 -255 148 172 -255 197 213 -255 255 255 -255 255 255 -255 255 255 -255 255 255 diff --git a/graphics/interface/ball/nest.pal b/graphics/interface/ball/nest.pal deleted file mode 100644 index 4bee9fa12..000000000 --- a/graphics/interface/ball/nest.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -255 255 255 -0 98 0 -49 148 16 -98 197 32 -156 255 57 -255 255 255 -148 148 148 -65 65 65 -24 24 24 -255 123 98 -255 172 131 -255 222 172 -255 255 255 -255 255 255 -255 255 255 -255 255 255 diff --git a/graphics/interface/ball/net.pal b/graphics/interface/ball/net.pal deleted file mode 100644 index dc5abb94d..000000000 --- a/graphics/interface/ball/net.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -255 255 255 -0 156 106 -49 189 123 -98 222 148 -156 255 172 -255 255 255 -148 148 148 -65 65 65 -24 24 24 -205 205 255 -255 255 255 -255 255 255 -255 255 255 -255 255 255 -255 255 255 -255 255 255 diff --git a/graphics/interface/ball/poke.pal b/graphics/interface/ball/poke.pal deleted file mode 100644 index 0e6b2fb5c..000000000 --- a/graphics/interface/ball/poke.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -255 255 255 -131 0 0 -172 0 0 -213 41 41 -255 156 123 -255 255 255 -148 148 148 -65 65 65 -24 24 24 -255 255 255 -255 255 255 -255 255 255 -255 255 255 -255 255 255 -255 255 255 -255 255 255 diff --git a/graphics/interface/ball/premier.pal b/graphics/interface/ball/premier.pal deleted file mode 100644 index 0e6b2fb5c..000000000 --- a/graphics/interface/ball/premier.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -255 255 255 -131 0 0 -172 0 0 -213 41 41 -255 156 123 -255 255 255 -148 148 148 -65 65 65 -24 24 24 -255 255 255 -255 255 255 -255 255 255 -255 255 255 -255 255 255 -255 255 255 -255 255 255 diff --git a/graphics/interface/ball/repeat.pal b/graphics/interface/ball/repeat.pal deleted file mode 100644 index c3689e13f..000000000 --- a/graphics/interface/ball/repeat.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -255 255 255 -222 98 0 -230 131 32 -238 164 65 -255 197 98 -255 255 255 -148 148 148 -65 65 65 -24 24 24 -205 156 8 -255 255 8 -255 255 255 -255 255 255 -255 255 255 -255 255 255 -255 255 255 diff --git a/graphics/interface/ball/safari.pal b/graphics/interface/ball/safari.pal deleted file mode 100644 index bbe4d76f3..000000000 --- a/graphics/interface/ball/safari.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -255 255 255 -148 172 16 -164 197 32 -180 222 49 -197 246 65 -255 255 255 -148 148 148 -65 65 65 -24 24 24 -205 106 41 -230 164 98 -255 222 156 -255 255 255 -255 255 255 -255 255 255 -255 255 255 diff --git a/graphics/interface/ball/timer.pal b/graphics/interface/ball/timer.pal deleted file mode 100644 index e0c23569e..000000000 --- a/graphics/interface/ball/timer.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -255 255 255 -172 0 0 -197 49 41 -222 98 82 -255 156 123 -255 255 255 -148 148 148 -65 65 65 -24 24 24 -180 180 180 -255 255 255 -255 255 255 -255 255 255 -255 255 255 -255 255 255 -0 0 0 diff --git a/graphics/interface/ball/ultra.pal b/graphics/interface/ball/ultra.pal deleted file mode 100644 index 3b7021097..000000000 --- a/graphics/interface/ball/ultra.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -255 255 255 -180 139 16 -205 172 32 -230 205 49 -255 238 65 -255 255 255 -148 148 148 -65 65 65 -24 24 24 -255 255 255 -255 255 255 -255 255 255 -255 255 255 -255 255 255 -255 255 255 -255 255 255 diff --git a/graphics/interface/hold_icons.pal b/graphics/interface/hold_icons.pal deleted file mode 100644 index e31d717c9..000000000 --- a/graphics/interface/hold_icons.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -57 205 106 -255 255 255 -213 213 255 -148 148 180 -255 246 156 -222 222 115 -246 82 41 -164 90 82 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -98 98 98 diff --git a/graphics/interface/link_test_digits.pal b/graphics/interface/link_test_digits.pal deleted file mode 100644 index 5362e8d6d..000000000 --- a/graphics/interface/link_test_digits.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 255 255 diff --git a/graphics/interface/money.pal b/graphics/interface/money.pal deleted file mode 100644 index 3fa8d8cff..000000000 --- a/graphics/interface/money.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -205 205 205 -164 164 164 -123 123 123 -115 98 98 -65 57 41 -57 106 139 -106 180 49 -255 230 164 -255 205 164 -230 180 123 -255 205 0 -205 180 0 -255 230 0 -0 0 0 diff --git a/graphics/interface/pokeblock_device.pal b/graphics/interface/pokeblock_device.pal deleted file mode 100644 index a491b61af..000000000 --- a/graphics/interface/pokeblock_device.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -255 156 255 -82 90 106 -205 197 222 -90 123 148 -90 164 172 -98 189 222 -172 213 238 -197 148 98 -197 197 49 -98 197 98 -255 197 148 -49 148 246 -172 98 82 -246 123 90 -164 156 180 -246 246 246 diff --git a/graphics/interface/status_icons.pal b/graphics/interface/status_icons.pal deleted file mode 100644 index 718f5bb77..000000000 --- a/graphics/interface/status_icons.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -49 189 131 -57 57 57 -255 255 255 -222 222 222 -197 98 197 -205 131 205 -189 189 24 -205 205 131 -164 164 139 -180 180 148 -139 180 230 -156 197 246 -230 115 82 -255 139 106 -238 82 57 -255 123 98 diff --git a/graphics/interface/summary_frames.pal b/graphics/interface/summary_frames.pal deleted file mode 100644 index d46aa6c8f..000000000 --- a/graphics/interface/summary_frames.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 0 -148 148 0 -49 172 255 -49 98 148 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -255 82 49 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/interface/wordgroup_indicator.pal b/graphics/interface/wordgroup_indicator.pal deleted file mode 100644 index 0d067c9e2..000000000 --- a/graphics/interface/wordgroup_indicator.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -255 255 148 -156 230 255 -98 197 246 -82 148 197 -172 246 213 -139 230 180 -90 164 123 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -41 49 49 -98 98 98 -180 189 180 -222 213 222 -255 255 255 diff --git a/graphics/intro/copyright.pal b/graphics/intro/copyright.pal deleted file mode 100644 index 4219d4394..000000000 --- a/graphics/intro/copyright.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 32 32 -24 57 57 -49 82 82 -82 106 106 -106 131 131 -139 156 156 -164 180 180 -197 205 205 -222 230 230 -255 255 255 diff --git a/graphics/intro/intro1_eon.pal b/graphics/intro/intro1_eon.pal deleted file mode 100644 index dcfc242a5..000000000 --- a/graphics/intro/intro1_eon.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -74 74 82 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/intro/intro2_bgclouds.pal b/graphics/intro/intro2_bgclouds.pal deleted file mode 100644 index 6b312a16c..000000000 --- a/graphics/intro/intro2_bgclouds.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -230 246 255 -205 238 255 -180 230 255 -164 222 255 -139 213 255 -115 205 255 -98 197 255 -230 230 255 -246 255 255 -213 222 255 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/intro/intro2_bgnight.pal b/graphics/intro/intro2_bgnight.pal deleted file mode 100644 index 765aad45a..000000000 --- a/graphics/intro/intro2_bgnight.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -0 0 0 -0 0 0 -82 90 148 -148 131 164 -57 74 123 -131 106 156 -98 90 123 -156 164 197 -139 148 172 -90 131 139 -189 197 213 -90 115 164 -230 230 82 -131 131 164 -246 246 123 diff --git a/graphics/intro/intro2_bgtrees.pal b/graphics/intro/intro2_bgtrees.pal deleted file mode 100644 index 5c506481a..000000000 --- a/graphics/intro/intro2_bgtrees.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -156 189 246 -172 205 246 -197 230 255 -213 246 255 -238 255 255 -156 180 172 -197 197 156 -172 189 164 -98 139 98 -98 156 57 -123 164 131 -156 213 82 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/intro/intro2_brendan.pal b/graphics/intro/intro2_brendan.pal deleted file mode 100644 index 5a8f9efcc..000000000 --- a/graphics/intro/intro2_brendan.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -82 74 74 -139 139 123 -197 189 222 -255 255 255 -230 49 0 -246 148 0 -0 0 0 -255 213 148 -222 164 139 -0 0 0 -246 57 131 -189 57 115 -238 205 16 -189 172 16 -131 164 65 diff --git a/graphics/intro/intro2_grass.pal b/graphics/intro/intro2_grass.pal deleted file mode 100644 index 389977abf..000000000 --- a/graphics/intro/intro2_grass.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -74 82 82 -90 123 123 -205 205 197 -255 255 255 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -106 164 98 -115 197 98 -164 230 90 diff --git a/graphics/intro/intro2_latias.pal b/graphics/intro/intro2_latias.pal deleted file mode 100644 index 0af96be29..000000000 --- a/graphics/intro/intro2_latias.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -123 106 106 -115 131 164 -222 213 238 -255 255 255 -213 65 57 -238 106 32 -172 74 65 -255 90 65 -180 172 197 -189 139 57 -189 98 41 -90 115 180 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/intro/intro2_latios.pal b/graphics/intro/intro2_latios.pal deleted file mode 100644 index bb51c0a7d..000000000 --- a/graphics/intro/intro2_latios.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -123 106 106 -115 131 164 -222 213 238 -255 255 255 -106 131 230 -139 197 255 -90 115 180 -139 156 230 -180 172 197 -238 82 32 -238 41 24 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/intro/intro2_may.pal b/graphics/intro/intro2_may.pal deleted file mode 100644 index 4d15e827b..000000000 --- a/graphics/intro/intro2_may.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -82 74 74 -139 139 123 -197 189 222 -255 255 255 -82 197 0 -148 246 98 -98 98 131 -255 213 148 -222 164 139 -180 172 115 -246 90 90 -189 57 115 -238 205 16 -189 172 16 -131 164 65 diff --git a/graphics/intro/intro3_pokeball.pal b/graphics/intro/intro3_pokeball.pal deleted file mode 100644 index d520a5e82..000000000 --- a/graphics/intro/intro3_pokeball.pal +++ /dev/null @@ -1,259 +0,0 @@ -JASC-PAL -0100 -256 -255 255 255 -0 0 0 -49 41 24 -106 90 57 -164 139 90 -222 98 57 -131 131 189 -255 255 255 -74 32 16 -148 65 32 -41 41 57 -82 82 123 -82 82 82 -164 164 164 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/intro/intro3_streaks.pal b/graphics/intro/intro3_streaks.pal deleted file mode 100644 index 21ae1e434..000000000 --- a/graphics/intro/intro3_streaks.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -255 255 255 -0 0 0 -255 230 74 -255 230 98 -255 238 123 -255 238 148 -255 246 172 -255 255 197 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -255 255 255 diff --git a/graphics/misc/birch_bag.pal b/graphics/misc/birch_bag.pal deleted file mode 100644 index ca609b98d..000000000 --- a/graphics/misc/birch_bag.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 213 148 -255 197 90 -222 172 90 -189 156 90 -148 115 82 -131 82 74 -57 90 98 -74 49 57 -0 98 139 -0 49 65 -213 213 222 -156 156 148 -98 98 115 -0 82 115 -0 0 0 diff --git a/graphics/misc/birch_ballarrow.pal b/graphics/misc/birch_ballarrow.pal deleted file mode 100644 index 12f7e8075..000000000 --- a/graphics/misc/birch_ballarrow.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -230 82 49 -197 65 49 -164 49 49 -131 41 49 -213 213 222 -172 172 180 -131 131 148 -98 98 115 -255 172 180 -24 57 65 -57 90 98 -0 0 0 -0 0 0 -255 255 255 -0 0 0 diff --git a/graphics/misc/birch_circle.pal b/graphics/misc/birch_circle.pal deleted file mode 100644 index 52239fbc3..000000000 --- a/graphics/misc/birch_circle.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -74 57 197 -16 16 16 -32 32 32 -49 49 49 -65 65 65 -82 82 82 -98 98 98 -115 115 115 -131 131 131 -148 148 148 -164 164 164 -180 180 180 -197 197 197 -213 213 213 -230 230 230 -255 255 255 diff --git a/graphics/misc/birch_grass.pal b/graphics/misc/birch_grass.pal deleted file mode 100644 index 9a87ec0d5..000000000 --- a/graphics/misc/birch_grass.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -139 222 115 -197 230 148 -139 222 115 -255 255 0 -115 189 98 -98 156 82 -74 123 65 -57 90 49 -32 57 32 -255 255 0 -255 255 0 -255 255 0 -255 255 0 -255 255 0 -255 255 0 -82 115 65 diff --git a/graphics/misc/cable_car.pal b/graphics/misc/cable_car.pal deleted file mode 100644 index 64985f6da..000000000 --- a/graphics/misc/cable_car.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -164 222 222 -98 139 139 -139 180 180 -131 131 139 -98 98 123 -65 74 106 -41 49 90 -139 205 246 -98 172 238 -255 255 148 -238 213 82 -213 172 16 -180 106 0 -139 65 0 diff --git a/graphics/misc/clock_small.pal b/graphics/misc/clock_small.pal deleted file mode 100644 index 3398fcbe3..000000000 --- a/graphics/misc/clock_small.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -98 139 90 -0 0 0 -57 57 57 -123 123 123 -189 189 189 -255 255 255 -255 65 41 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/misc/condition_up_down.pal b/graphics/misc/condition_up_down.pal deleted file mode 100644 index 5b0cfcd3c..000000000 --- a/graphics/misc/condition_up_down.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -123 180 246 -255 255 0 -255 0 0 -0 0 255 -222 222 222 -213 213 213 -205 205 205 -197 197 197 -189 189 189 -180 180 180 -172 172 172 -164 164 164 -148 148 148 -139 139 139 -131 131 131 -0 0 0 diff --git a/graphics/misc/confetti.pal b/graphics/misc/confetti.pal deleted file mode 100644 index f2494e508..000000000 --- a/graphics/misc/confetti.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 57 57 -156 0 0 -164 222 255 -49 82 255 -255 255 115 -230 106 0 -255 255 255 -189 189 197 -139 246 115 -65 205 57 -255 123 180 -197 49 131 -65 74 106 -0 0 0 -0 0 0 diff --git a/graphics/misc/darkness_field_move_streaks.pal b/graphics/misc/darkness_field_move_streaks.pal deleted file mode 100644 index 37ea1ae61..000000000 --- a/graphics/misc/darkness_field_move_streaks.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 139 57 -0 0 0 -148 148 148 -197 197 197 -255 255 255 -123 156 230 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/misc/evo_sparkle.pal b/graphics/misc/evo_sparkle.pal deleted file mode 100644 index 7ccbffd1d..000000000 --- a/graphics/misc/evo_sparkle.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -49 82 82 -82 106 106 -106 131 131 -139 156 156 -164 180 180 -197 205 205 -222 230 230 -255 255 255 diff --git a/graphics/misc/field_move_streaks.pal b/graphics/misc/field_move_streaks.pal deleted file mode 100644 index 12bc76261..000000000 --- a/graphics/misc/field_move_streaks.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -0 0 0 -255 255 255 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/misc/hof.pal b/graphics/misc/hof.pal deleted file mode 100644 index b4fffc172..000000000 --- a/graphics/misc/hof.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -255 255 255 -0 0 0 -255 213 230 -255 32 32 -255 180 230 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -65 65 65 -255 255 255 diff --git a/graphics/misc/interview_frame.pal b/graphics/misc/interview_frame.pal deleted file mode 100644 index 7d6c36d2b..000000000 --- a/graphics/misc/interview_frame.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 189 -238 238 205 -213 197 148 -255 255 222 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/misc/mon_markings.pal b/graphics/misc/mon_markings.pal deleted file mode 100644 index 8f31611f7..000000000 --- a/graphics/misc/mon_markings.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -172 172 172 -131 131 131 -156 156 156 -255 255 255 -205 205 205 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/pokedex/area_glow.pal b/graphics/pokedex/area_glow.pal deleted file mode 100644 index 0b9ac5a6d..000000000 --- a/graphics/pokedex/area_glow.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 139 139 -255 115 115 -255 90 90 -255 65 65 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/pokedex/area_marker.pal b/graphics/pokedex/area_marker.pal deleted file mode 100644 index d625c8ce2..000000000 --- a/graphics/pokedex/area_marker.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -213 180 0 -0 0 0 -255 0 0 -255 49 49 -255 98 98 -255 156 156 -255 205 205 -255 255 255 -255 255 49 -106 255 255 -172 255 255 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/pokedex/area_unknown.pal b/graphics/pokedex/area_unknown.pal deleted file mode 100644 index 86aeef732..000000000 --- a/graphics/pokedex/area_unknown.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -246 148 0 -0 0 0 -222 213 222 -255 0 0 -255 255 115 -0 255 0 -0 255 255 -0 0 0 -0 0 0 -0 0 0 -255 255 255 -222 213 222 -98 82 106 -139 148 197 -41 49 49 -82 65 123 diff --git a/graphics/pokedex/arrows.pal b/graphics/pokedex/arrows.pal deleted file mode 100644 index 256cee631..000000000 --- a/graphics/pokedex/arrows.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 255 0 -255 0 0 -230 0 0 -213 0 0 -197 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -197 197 197 -0 0 0 -255 255 255 diff --git a/graphics/pokedex/cry_meter.pal b/graphics/pokedex/cry_meter.pal deleted file mode 100644 index 224f3d983..000000000 --- a/graphics/pokedex/cry_meter.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -222 0 0 -16 16 16 -49 49 49 -246 123 106 -82 82 82 -98 98 98 -115 115 115 -131 131 131 -148 148 148 -164 164 164 -180 180 180 -197 197 197 -213 213 213 -230 230 230 -255 255 255 diff --git a/graphics/pokedex/cry_meter_needle.pal b/graphics/pokedex/cry_meter_needle.pal deleted file mode 100644 index 7336488ff..000000000 --- a/graphics/pokedex/cry_meter_needle.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -246 90 123 -246 139 164 -246 197 205 -255 255 255 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/pokemon_storage/arrow.pal b/graphics/pokemon_storage/arrow.pal deleted file mode 100644 index 527c10ba2..000000000 --- a/graphics/pokemon_storage/arrow.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 148 172 -238 131 123 -238 115 115 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/pokemon_storage/beach_bg.pal b/graphics/pokemon_storage/beach_bg.pal deleted file mode 100644 index b7cb930c4..000000000 --- a/graphics/pokemon_storage/beach_bg.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -255 255 255 -255 255 222 -246 238 180 -238 230 148 -238 222 131 -222 205 115 -213 189 98 -205 164 90 -197 172 65 -255 98 197 -255 148 172 -49 213 205 -164 230 213 -0 0 0 -82 98 255 -49 65 156 diff --git a/graphics/pokemon_storage/beach_frame.pal b/graphics/pokemon_storage/beach_frame.pal deleted file mode 100644 index 360d77bde..000000000 --- a/graphics/pokemon_storage/beach_frame.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -255 255 255 -156 106 57 -197 230 255 -197 246 255 -230 255 255 -98 164 98 -148 222 57 -189 164 90 -246 230 164 -255 246 180 -246 238 164 -98 213 213 -139 230 205 -255 255 255 -82 98 255 -49 65 156 diff --git a/graphics/pokemon_storage/cave_bg.pal b/graphics/pokemon_storage/cave_bg.pal deleted file mode 100644 index 6b783cdd5..000000000 --- a/graphics/pokemon_storage/cave_bg.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -255 255 255 -246 213 131 -213 180 98 -180 148 65 -148 115 32 -115 82 0 -82 49 0 -49 16 0 -139 90 115 -156 106 131 -115 65 90 -0 0 0 -238 238 238 -255 255 255 -90 90 131 -49 49 90 diff --git a/graphics/pokemon_storage/cave_frame.pal b/graphics/pokemon_storage/cave_frame.pal deleted file mode 100644 index f6e731395..000000000 --- a/graphics/pokemon_storage/cave_frame.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -255 255 255 -230 197 123 -213 180 98 -180 148 65 -148 115 32 -115 82 0 -0 0 0 -0 0 0 -139 90 115 -156 106 131 -115 65 90 -0 0 0 -230 230 230 -255 255 255 -90 90 131 -49 49 90 diff --git a/graphics/pokemon_storage/city_bg.pal b/graphics/pokemon_storage/city_bg.pal deleted file mode 100644 index ba67b3414..000000000 --- a/graphics/pokemon_storage/city_bg.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -255 255 255 -255 255 246 -255 238 246 -230 213 222 -205 189 197 -164 148 156 -139 123 131 -0 0 0 -0 0 0 -180 164 172 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -156 123 82 -115 82 41 diff --git a/graphics/pokemon_storage/city_frame.pal b/graphics/pokemon_storage/city_frame.pal deleted file mode 100644 index a5387638a..000000000 --- a/graphics/pokemon_storage/city_frame.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -255 255 255 -246 246 246 -90 131 197 -123 164 213 -156 197 230 -82 131 115 -115 164 148 -180 189 197 -148 156 164 -115 123 131 -82 90 98 -189 189 230 -222 246 246 -189 213 213 -156 123 82 -106 74 32 diff --git a/graphics/pokemon_storage/crag_bg.pal b/graphics/pokemon_storage/crag_bg.pal deleted file mode 100644 index f72b27d13..000000000 --- a/graphics/pokemon_storage/crag_bg.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -255 255 255 -222 222 222 -189 189 189 -156 156 156 -123 123 123 -90 90 90 -57 57 57 -41 41 41 -222 189 205 -197 164 180 -172 139 156 -246 213 230 -238 238 238 -255 255 255 -213 189 82 -172 148 41 diff --git a/graphics/pokemon_storage/crag_frame.pal b/graphics/pokemon_storage/crag_frame.pal deleted file mode 100644 index c4f85c644..000000000 --- a/graphics/pokemon_storage/crag_frame.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -255 255 255 -222 222 222 -189 189 189 -222 189 205 -197 164 180 -172 139 156 -246 213 230 -139 139 131 -189 189 189 -156 156 156 -123 123 123 -213 189 65 -230 230 230 -255 255 255 -213 189 82 -172 148 41 diff --git a/graphics/pokemon_storage/desert_bg.pal b/graphics/pokemon_storage/desert_bg.pal deleted file mode 100644 index c5ca027d2..000000000 --- a/graphics/pokemon_storage/desert_bg.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -255 255 255 -255 238 189 -255 213 164 -230 189 139 -205 164 115 -180 139 90 -156 115 65 -131 90 41 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -164 139 82 -123 98 41 diff --git a/graphics/pokemon_storage/desert_frame.pal b/graphics/pokemon_storage/desert_frame.pal deleted file mode 100644 index 4cf04f8ae..000000000 --- a/graphics/pokemon_storage/desert_frame.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -255 255 255 -255 255 139 -205 189 131 -230 197 98 -230 180 90 -172 164 172 -57 57 57 -172 172 172 -123 123 123 -57 57 57 -213 189 98 -246 205 74 -255 230 106 -255 255 255 -164 139 82 -123 98 41 diff --git a/graphics/pokemon_storage/forest_bg.pal b/graphics/pokemon_storage/forest_bg.pal deleted file mode 100644 index 946becabb..000000000 --- a/graphics/pokemon_storage/forest_bg.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -255 255 255 -230 255 172 -205 255 148 -180 230 123 -156 205 98 -131 180 74 -106 156 49 -82 131 24 -0 0 0 -205 213 172 -172 180 139 -0 0 0 -0 0 0 -0 0 0 -164 139 82 -123 98 41 diff --git a/graphics/pokemon_storage/forest_frame.pal b/graphics/pokemon_storage/forest_frame.pal deleted file mode 100644 index 1b4166087..000000000 --- a/graphics/pokemon_storage/forest_frame.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -255 255 255 -246 255 230 -255 255 213 -222 255 189 -197 246 164 -156 255 139 -123 222 106 -90 189 74 -172 123 41 -205 213 172 -172 180 139 -148 156 115 -123 131 90 -255 255 255 -164 139 82 -123 98 41 diff --git a/graphics/pokemon_storage/machine_bg.pal b/graphics/pokemon_storage/machine_bg.pal deleted file mode 100644 index 4f75effd5..000000000 --- a/graphics/pokemon_storage/machine_bg.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -255 255 255 -230 222 131 -197 180 90 -213 197 98 -213 205 98 -255 0 0 -255 0 0 -255 0 0 -255 0 0 -230 230 123 -172 139 65 -148 106 41 -197 172 90 -246 246 172 -156 115 65 -106 82 49 diff --git a/graphics/pokemon_storage/machine_frame.pal b/graphics/pokemon_storage/machine_frame.pal deleted file mode 100644 index aa74af16f..000000000 --- a/graphics/pokemon_storage/machine_frame.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -255 255 255 -246 246 189 -205 197 90 -230 230 123 -205 205 90 -238 238 148 -213 213 98 -238 238 123 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -255 255 255 -156 115 65 -106 82 49 diff --git a/graphics/pokemon_storage/plain_bg.pal b/graphics/pokemon_storage/plain_bg.pal deleted file mode 100644 index 74e28306b..000000000 --- a/graphics/pokemon_storage/plain_bg.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -246 246 246 -238 238 238 -230 230 230 -222 222 222 -255 255 255 -205 205 205 -180 180 180 -139 139 139 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -148 131 90 -106 90 57 diff --git a/graphics/pokemon_storage/plain_frame.pal b/graphics/pokemon_storage/plain_frame.pal deleted file mode 100644 index b68d724cd..000000000 --- a/graphics/pokemon_storage/plain_frame.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -255 255 255 -238 238 238 -213 213 213 -189 189 189 -164 164 164 -139 139 139 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -255 255 255 -148 131 90 -106 90 57 diff --git a/graphics/pokemon_storage/pokecenter_bg.pal b/graphics/pokemon_storage/pokecenter_bg.pal deleted file mode 100644 index b029c1741..000000000 --- a/graphics/pokemon_storage/pokecenter_bg.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -255 255 255 -238 246 246 -222 255 255 -197 246 238 -172 222 213 -148 197 189 -123 172 164 -98 148 139 -255 164 139 -255 164 139 -238 139 115 -246 246 246 -230 230 230 -164 197 205 -148 148 172 -82 82 90 diff --git a/graphics/pokemon_storage/pokecenter_frame.pal b/graphics/pokemon_storage/pokecenter_frame.pal deleted file mode 100644 index 4a8074805..000000000 --- a/graphics/pokemon_storage/pokecenter_frame.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -255 255 255 -255 255 205 -255 255 255 -213 205 180 -213 180 180 -172 180 156 -0 0 0 -0 0 0 -255 238 139 -255 255 164 -230 172 131 -222 222 222 -213 213 205 -189 189 172 -148 148 172 -82 82 90 diff --git a/graphics/pokemon_storage/polkadot_bg.pal b/graphics/pokemon_storage/polkadot_bg.pal deleted file mode 100644 index b7bf06f47..000000000 --- a/graphics/pokemon_storage/polkadot_bg.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -255 255 255 -255 255 197 -255 255 164 -255 230 131 -255 197 98 -230 164 65 -197 131 32 -164 98 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -156 74 57 -115 16 0 diff --git a/graphics/pokemon_storage/polkadot_frame.pal b/graphics/pokemon_storage/polkadot_frame.pal deleted file mode 100644 index d90a6f0b2..000000000 --- a/graphics/pokemon_storage/polkadot_frame.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -255 255 255 -255 255 197 -255 255 164 -255 230 131 -255 197 98 -230 164 65 -197 131 32 -164 98 0 -255 205 164 -238 172 131 -222 139 98 -205 106 65 -189 74 32 -255 255 255 -156 74 57 -115 16 0 diff --git a/graphics/pokemon_storage/river_bg.pal b/graphics/pokemon_storage/river_bg.pal deleted file mode 100644 index 09d45090a..000000000 --- a/graphics/pokemon_storage/river_bg.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -255 255 255 -230 255 156 -197 255 123 -164 230 90 -131 197 57 -98 164 24 -65 131 0 -32 98 0 -230 255 255 -139 230 230 -164 255 255 -197 255 255 -238 238 238 -255 255 255 -180 148 106 -139 106 65 diff --git a/graphics/pokemon_storage/river_frame.pal b/graphics/pokemon_storage/river_frame.pal deleted file mode 100644 index 9fcc4cbca..000000000 --- a/graphics/pokemon_storage/river_frame.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -255 255 255 -238 255 255 -205 255 255 -164 255 255 -131 222 222 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -115 180 0 -148 213 24 -180 246 57 -230 230 230 -255 255 255 -180 148 106 -139 106 65 diff --git a/graphics/pokemon_storage/savanna_bg.pal b/graphics/pokemon_storage/savanna_bg.pal deleted file mode 100644 index d80816c35..000000000 --- a/graphics/pokemon_storage/savanna_bg.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -255 255 255 -255 255 131 -222 222 98 -189 189 65 -156 156 32 -123 123 0 -90 90 0 -57 57 0 -189 189 65 -131 180 57 -115 164 41 -205 205 82 -238 238 238 -255 255 255 -189 156 82 -148 115 41 diff --git a/graphics/pokemon_storage/savanna_frame.pal b/graphics/pokemon_storage/savanna_frame.pal deleted file mode 100644 index 1c1742cc2..000000000 --- a/graphics/pokemon_storage/savanna_frame.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -255 255 255 -222 222 222 -189 189 189 -238 255 255 -213 230 246 -189 205 222 -57 57 57 -222 222 98 -164 164 41 -115 164 41 -148 197 74 -189 189 65 -230 230 230 -255 255 255 -189 156 82 -148 115 41 diff --git a/graphics/pokemon_storage/scrolling_bg.pal b/graphics/pokemon_storage/scrolling_bg.pal deleted file mode 100644 index 76e448d81..000000000 --- a/graphics/pokemon_storage/scrolling_bg.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 222 -255 246 189 -255 246 148 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/pokemon_storage/seafloor_bg.pal b/graphics/pokemon_storage/seafloor_bg.pal deleted file mode 100644 index 43b2eecab..000000000 --- a/graphics/pokemon_storage/seafloor_bg.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -255 255 255 -164 213 255 -131 180 255 -98 148 222 -65 115 189 -32 82 156 -0 49 123 -0 16 90 -139 90 115 -156 106 131 -115 65 90 -0 0 0 -238 238 238 -255 255 255 -148 180 41 -106 139 0 diff --git a/graphics/pokemon_storage/seafloor_frame.pal b/graphics/pokemon_storage/seafloor_frame.pal deleted file mode 100644 index 79c7650b4..000000000 --- a/graphics/pokemon_storage/seafloor_frame.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -255 255 255 -131 180 255 -98 148 222 -65 115 189 -32 82 156 -0 24 98 -0 0 0 -0 0 0 -139 90 115 -156 106 131 -115 65 90 -0 0 0 -230 230 230 -255 255 255 -148 180 41 -106 139 0 diff --git a/graphics/pokemon_storage/sky_bg.pal b/graphics/pokemon_storage/sky_bg.pal deleted file mode 100644 index 3d722ed6d..000000000 --- a/graphics/pokemon_storage/sky_bg.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -255 255 255 -238 255 255 -205 255 255 -164 255 255 -123 213 246 -90 180 213 -57 148 180 -24 115 148 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -238 238 238 -255 255 255 -205 139 41 -164 98 0 diff --git a/graphics/pokemon_storage/sky_frame.pal b/graphics/pokemon_storage/sky_frame.pal deleted file mode 100644 index 951f59ecf..000000000 --- a/graphics/pokemon_storage/sky_frame.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -255 255 255 -238 255 255 -205 255 255 -164 255 255 -123 213 246 -90 180 213 -57 148 180 -24 115 148 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -230 230 230 -255 255 255 -205 139 41 -164 98 0 diff --git a/graphics/pokemon_storage/snow_bg.pal b/graphics/pokemon_storage/snow_bg.pal deleted file mode 100644 index 01e46d027..000000000 --- a/graphics/pokemon_storage/snow_bg.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -255 255 255 -230 230 230 -205 205 205 -139 148 189 -106 115 156 -74 82 123 -41 49 90 -8 16 57 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -238 238 238 -255 255 255 -213 131 139 -172 90 98 diff --git a/graphics/pokemon_storage/snow_frame.pal b/graphics/pokemon_storage/snow_frame.pal deleted file mode 100644 index 437ccb934..000000000 --- a/graphics/pokemon_storage/snow_frame.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -255 255 255 -230 230 230 -205 205 205 -139 148 189 -106 115 156 -74 82 123 -172 180 222 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -230 230 230 -255 255 255 -213 131 139 -172 90 98 diff --git a/graphics/pokemon_storage/volcano_bg.pal b/graphics/pokemon_storage/volcano_bg.pal deleted file mode 100644 index 8ea563b6e..000000000 --- a/graphics/pokemon_storage/volcano_bg.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -255 255 255 -255 246 230 -255 238 205 -255 205 172 -246 172 139 -213 139 106 -180 106 74 -148 74 41 -246 156 98 -222 131 74 -205 115 57 -180 82 24 -238 238 238 -255 255 255 -213 131 139 -172 90 98 diff --git a/graphics/pokemon_storage/volcano_frame.pal b/graphics/pokemon_storage/volcano_frame.pal deleted file mode 100644 index 0378aff29..000000000 --- a/graphics/pokemon_storage/volcano_frame.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -255 255 255 -222 222 222 -189 189 189 -139 148 189 -106 115 156 -74 82 123 -172 180 222 -0 0 0 -222 131 74 -205 115 57 -180 82 24 -0 0 0 -230 230 230 -255 255 255 -213 131 139 -172 90 98 diff --git a/graphics/pokemon_storage/waveform.pal b/graphics/pokemon_storage/waveform.pal deleted file mode 100644 index 4998f9a42..000000000 --- a/graphics/pokemon_storage/waveform.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -148 148 172 -82 82 90 -255 255 255 -205 255 255 -90 189 238 -90 164 205 -82 131 164 -82 106 123 -82 82 90 -0 0 0 -0 0 0 -0 0 0 -148 148 172 -115 115 123 -82 82 90 diff --git a/graphics/pokenav/arrows.pal b/graphics/pokenav/arrows.pal deleted file mode 100644 index 5761a94e5..000000000 --- a/graphics/pokenav/arrows.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 123 0 -255 139 0 -49 65 74 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/pokenav/blue_light.pal b/graphics/pokenav/blue_light.pal deleted file mode 100644 index 0ec325cbc..000000000 --- a/graphics/pokenav/blue_light.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 148 0 -205 205 213 -172 172 189 -8 180 255 -255 255 255 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/pokenav/brendan_icon.pal b/graphics/pokenav/brendan_icon.pal deleted file mode 100644 index 5aa5d68af..000000000 --- a/graphics/pokenav/brendan_icon.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -16 32 57 -41 57 98 -57 74 123 -123 65 65 -197 65 65 -255 98 90 -0 0 0 -189 156 90 -222 148 115 -255 197 90 -255 197 148 -255 213 180 -222 230 238 -255 255 255 -0 0 0 diff --git a/graphics/pokenav/condition_search2.pal b/graphics/pokenav/condition_search2.pal deleted file mode 100644 index a5a556515..000000000 --- a/graphics/pokenav/condition_search2.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -65 65 65 -49 65 74 -106 115 123 -255 255 255 -90 123 164 -98 172 230 -197 222 255 -148 156 205 -156 164 205 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/pokenav/map_misc.png b/graphics/pokenav/fly_target_icons.png similarity index 100% rename from graphics/pokenav/map_misc.png rename to graphics/pokenav/fly_target_icons.png diff --git a/graphics/pokenav/icon.pal b/graphics/pokenav/icon.pal deleted file mode 100644 index 6130754f4..000000000 --- a/graphics/pokenav/icon.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -255 255 255 -172 98 41 -180 172 172 -255 197 115 -246 123 98 -98 98 246 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/pokenav/map_frame.pal b/graphics/pokenav/map_frame.pal deleted file mode 100644 index d460cfe4e..000000000 --- a/graphics/pokenav/map_frame.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -205 238 255 -197 213 255 -98 98 98 -205 205 205 -189 123 0 -0 0 0 -123 180 213 -0 115 172 -32 74 139 -255 172 16 -255 57 16 -172 90 41 -0 0 0 -0 0 0 -255 255 255 diff --git a/graphics/pokenav/map_misc.pal b/graphics/pokenav/map_misc.pal deleted file mode 100644 index c0f2cc4e9..000000000 --- a/graphics/pokenav/map_misc.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 0 0 -0 0 0 -0 0 0 -205 205 205 -0 0 0 -0 0 0 -255 213 222 -255 164 197 -197 98 115 -131 131 123 -98 90 90 -49 49 65 -0 0 0 -0 0 0 -255 255 255 diff --git a/graphics/pokenav/map_squares.pal b/graphics/pokenav/map_squares.pal deleted file mode 100644 index 7325e7fb8..000000000 --- a/graphics/pokenav/map_squares.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -0 0 0 -189 32 32 -255 0 0 -131 156 246 -0 0 255 -148 139 148 -255 255 255 -0 197 0 -205 131 82 -222 0 230 -156 255 255 -230 230 230 -148 49 49 -65 131 74 -0 0 0 diff --git a/graphics/pokenav/may_icon.pal b/graphics/pokenav/may_icon.pal deleted file mode 100644 index 2f81b350e..000000000 --- a/graphics/pokenav/may_icon.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -74 49 57 -197 65 65 -255 98 90 -205 205 222 -255 255 255 -0 0 0 -123 90 82 -164 106 82 -222 164 148 -255 222 205 -205 131 115 -41 57 65 -98 98 115 -189 156 90 -255 197 90 diff --git a/graphics/pokenav/outline.pal b/graphics/pokenav/outline.pal deleted file mode 100644 index 06aea7128..000000000 --- a/graphics/pokenav/outline.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -255 255 255 -205 205 213 -172 172 189 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/pokenav/region_map.pal b/graphics/pokenav/region_map.pal index 4fca67ade..78ffc009a 100644 --- a/graphics/pokenav/region_map.pal +++ b/graphics/pokenav/region_map.pal @@ -1,118 +1,6 @@ JASC-PAL 0100 -256 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 +32 0 0 0 156 213 255 164 180 255 @@ -145,115 +33,3 @@ JASC-PAL 0 0 0 0 0 0 0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/pokenav/sparkle.pal b/graphics/pokenav/sparkle.pal deleted file mode 100644 index 114155fe4..000000000 --- a/graphics/pokenav/sparkle.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -49 49 57 -148 148 164 -164 255 0 -189 255 0 -230 255 0 -255 255 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -197 205 255 diff --git a/graphics/roulette/azurill.pal b/graphics/roulette/azurill.pal deleted file mode 100644 index 2d6c464e3..000000000 --- a/graphics/roulette/azurill.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -74 106 156 -57 57 65 -139 139 131 -255 255 255 -106 156 255 -255 156 139 -57 57 65 -139 139 131 -255 255 255 -106 156 255 -255 156 139 -57 57 65 -139 139 131 -255 255 255 -106 156 255 -255 156 139 diff --git a/graphics/roulette/ball.pal b/graphics/roulette/ball.pal deleted file mode 100644 index f72217a9b..000000000 --- a/graphics/roulette/ball.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -74 106 156 -41 41 41 -123 123 131 -172 180 197 -255 255 255 -238 238 156 -189 180 106 -131 90 32 -255 131 90 -189 106 98 -230 222 255 -74 189 156 -255 255 255 -98 156 148 -255 255 255 -82 82 82 diff --git a/graphics/roulette/ball_counter.pal b/graphics/roulette/ball_counter.pal deleted file mode 100644 index e76199ced..000000000 --- a/graphics/roulette/ball_counter.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -74 106 156 -57 57 65 -98 98 115 -156 156 164 -255 255 255 -131 230 82 -255 156 164 -106 156 255 -255 255 255 -156 255 106 -246 230 74 -255 230 123 -24 90 16 -255 255 156 -156 255 148 -205 156 255 diff --git a/graphics/roulette/credit.pal b/graphics/roulette/credit.pal deleted file mode 100644 index 4794c9622..000000000 --- a/graphics/roulette/credit.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -74 106 156 -41 41 41 -98 98 115 -205 205 213 -255 255 255 -123 238 139 -255 172 139 -16 156 74 -197 164 255 -49 106 32 -115 197 131 -197 139 189 -255 82 57 -255 238 82 -205 180 8 -255 205 8 diff --git a/graphics/roulette/cursor.pal b/graphics/roulette/cursor.pal deleted file mode 100644 index f5ff00341..000000000 --- a/graphics/roulette/cursor.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -74 106 156 -41 41 41 -123 131 164 -205 205 213 -255 255 255 -123 189 238 -255 57 57 -16 156 74 -98 164 213 -255 255 255 -255 255 255 -255 255 255 -255 57 8 -255 238 82 -74 106 156 -205 156 255 diff --git a/graphics/roulette/makuhita.pal b/graphics/roulette/makuhita.pal deleted file mode 100644 index 35a9a5307..000000000 --- a/graphics/roulette/makuhita.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -74 106 156 -57 57 65 -139 139 131 -255 255 255 -255 230 123 -246 98 90 -57 57 65 -139 139 131 -255 255 255 -255 230 123 -246 98 90 -57 57 65 -139 139 131 -255 255 255 -255 230 123 -246 98 90 diff --git a/graphics/roulette/poke_icons.pal b/graphics/roulette/poke_icons.pal deleted file mode 100644 index f2d21a7e5..000000000 --- a/graphics/roulette/poke_icons.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -74 106 156 -57 57 65 -139 139 131 -255 255 255 -255 255 255 -106 222 222 -246 98 90 -106 156 255 -255 255 255 -255 156 139 -246 246 156 -255 230 123 -255 255 255 -255 255 156 -156 255 148 -205 156 255 diff --git a/graphics/roulette/shadow.pal b/graphics/roulette/shadow.pal deleted file mode 100644 index 2ac26b064..000000000 --- a/graphics/roulette/shadow.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -98 98 189 -0 0 0 -65 65 65 -82 82 82 -98 98 98 -115 115 115 -131 131 131 -148 148 148 -164 164 164 -180 180 180 -205 205 205 -255 0 0 -255 255 255 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/roulette/shroomish.pal b/graphics/roulette/shroomish.pal deleted file mode 100644 index 3a1fbff02..000000000 --- a/graphics/roulette/shroomish.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -74 106 156 -65 65 65 -222 172 106 -246 222 164 -123 172 106 -172 222 148 -156 98 74 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/roulette/skitty.pal b/graphics/roulette/skitty.pal deleted file mode 100644 index cdfca277d..000000000 --- a/graphics/roulette/skitty.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -74 106 156 -57 57 65 -139 139 131 -255 255 255 -255 156 139 -246 246 156 -57 57 65 -139 139 131 -255 255 255 -255 156 139 -246 246 156 -57 57 65 -139 139 131 -255 255 255 -255 156 139 -246 246 156 diff --git a/graphics/roulette/tailow.pal b/graphics/roulette/tailow.pal deleted file mode 100644 index 00b5a7054..000000000 --- a/graphics/roulette/tailow.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -74 106 156 -65 65 65 -57 57 139 -90 98 197 -189 205 246 -255 230 90 -255 82 65 -172 57 65 -255 255 255 -65 65 65 -156 123 82 -205 189 106 -164 82 65 -98 74 57 -213 213 213 -255 255 255 diff --git a/graphics/roulette/wynaut.pal b/graphics/roulette/wynaut.pal deleted file mode 100644 index 5eef080f8..000000000 --- a/graphics/roulette/wynaut.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -74 106 156 -57 57 65 -139 139 131 -255 255 255 -106 222 222 -246 98 90 -57 57 65 -139 139 131 -255 255 255 -106 222 222 -246 98 90 -57 57 65 -139 139 131 -255 255 255 -106 222 222 -246 98 90 diff --git a/graphics/text_window/1.pal b/graphics/text_window/1.pal deleted file mode 100644 index 08c365c84..000000000 --- a/graphics/text_window/1.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -98 197 98 -41 49 49 -74 74 106 -115 106 131 -98 98 148 -115 115 172 -139 139 205 -172 189 172 -222 213 222 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -255 255 255 -74 65 82 diff --git a/graphics/text_window/10.pal b/graphics/text_window/10.pal deleted file mode 100644 index 7ba0c53b6..000000000 --- a/graphics/text_window/10.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -148 148 98 -41 49 49 -255 180 131 -255 49 0 -255 131 82 -205 115 0 -164 123 49 -131 98 24 -172 139 65 -255 164 8 -189 180 123 -222 213 156 -180 189 180 -222 213 222 -255 255 255 -74 65 82 diff --git a/graphics/text_window/11.pal b/graphics/text_window/11.pal deleted file mode 100644 index 449263e0f..000000000 --- a/graphics/text_window/11.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -148 148 98 -41 49 49 -106 115 115 -32 57 205 -82 131 230 -131 156 222 -164 180 230 -189 205 238 -222 230 246 -0 0 0 -180 106 189 -213 148 238 -222 180 238 -238 213 246 -255 255 255 -74 65 82 diff --git a/graphics/text_window/12.pal b/graphics/text_window/12.pal deleted file mode 100644 index efb2c1ec3..000000000 --- a/graphics/text_window/12.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -148 148 98 -41 49 49 -74 74 106 -148 90 164 -115 131 65 -156 189 32 -205 246 0 -238 213 74 -255 230 148 -255 148 57 -98 115 123 -123 156 139 -156 205 156 -205 49 57 -255 255 255 -74 65 82 diff --git a/graphics/text_window/13.pal b/graphics/text_window/13.pal deleted file mode 100644 index 59540758f..000000000 --- a/graphics/text_window/13.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -148 148 98 -41 49 49 -180 189 180 -222 213 222 -255 0 255 -255 0 255 -123 115 90 -205 172 115 -238 205 139 -32 74 172 -90 205 213 -74 115 197 -255 0 255 -255 0 255 -255 255 255 -74 65 82 diff --git a/graphics/text_window/14.pal b/graphics/text_window/14.pal deleted file mode 100644 index 492f7de72..000000000 --- a/graphics/text_window/14.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -148 148 98 -106 74 16 -180 189 180 -222 213 222 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -156 123 57 -205 172 106 -230 180 115 -230 189 115 -238 205 131 -255 230 164 -255 255 255 -74 65 82 diff --git a/graphics/text_window/15.pal b/graphics/text_window/15.pal deleted file mode 100644 index 8c1141e05..000000000 --- a/graphics/text_window/15.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -148 148 98 -41 49 49 -172 123 156 -106 90 115 -82 98 156 -189 156 213 -205 180 222 -222 205 230 -238 230 238 -197 197 197 -197 197 197 -197 197 197 -197 197 197 -197 197 197 -255 255 255 -74 65 82 diff --git a/graphics/text_window/16.pal b/graphics/text_window/16.pal deleted file mode 100644 index 8b827a70f..000000000 --- a/graphics/text_window/16.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -148 148 98 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -49 57 197 -32 41 115 -246 246 49 -123 123 49 -255 74 65 -156 41 32 -180 189 180 -222 213 222 -255 255 255 -74 65 82 diff --git a/graphics/text_window/17.pal b/graphics/text_window/17.pal deleted file mode 100644 index 627af66d5..000000000 --- a/graphics/text_window/17.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -148 148 98 -41 49 49 -106 115 115 -180 180 180 -82 98 156 -197 180 172 -205 197 189 -222 213 213 -238 230 230 -197 197 197 -197 197 197 -197 197 197 -197 197 197 -197 197 197 -255 255 246 -74 65 82 diff --git a/graphics/text_window/18.pal b/graphics/text_window/18.pal deleted file mode 100644 index e523123c7..000000000 --- a/graphics/text_window/18.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -148 148 98 -41 49 49 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -255 255 164 -189 148 8 -255 189 0 -255 230 0 -255 255 148 -180 189 180 -222 213 222 -255 255 255 -74 65 82 diff --git a/graphics/text_window/19.pal b/graphics/text_window/19.pal deleted file mode 100644 index 4615c7881..000000000 --- a/graphics/text_window/19.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -148 148 98 -41 49 49 -180 189 180 -222 213 222 -98 131 57 -255 123 82 -222 98 49 -164 49 16 -238 255 164 -238 213 131 -255 0 255 -197 255 123 -164 213 82 -131 189 65 -255 255 255 -74 65 82 diff --git a/graphics/text_window/2.pal b/graphics/text_window/2.pal deleted file mode 100644 index ac32c4606..000000000 --- a/graphics/text_window/2.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -148 148 98 -41 49 49 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -255 255 255 -74 65 82 diff --git a/graphics/text_window/20.pal b/graphics/text_window/20.pal deleted file mode 100644 index a7f9e1fbd..000000000 --- a/graphics/text_window/20.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -148 148 98 -0 0 0 -0 0 0 -0 0 0 -255 213 255 -255 180 222 -131 82 24 -255 131 131 -238 65 65 -156 213 156 -106 164 106 -49 106 49 -180 189 180 -222 213 222 -255 255 255 -74 65 82 diff --git a/graphics/text_window/3.pal b/graphics/text_window/3.pal deleted file mode 100644 index 3c5120d11..000000000 --- a/graphics/text_window/3.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -148 148 98 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -98 156 246 -255 123 115 -222 74 65 -106 49 41 -180 189 180 -222 213 222 -255 255 255 -74 65 82 diff --git a/graphics/text_window/4.pal b/graphics/text_window/4.pal deleted file mode 100644 index c8e024332..000000000 --- a/graphics/text_window/4.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -148 148 98 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -57 74 74 -106 123 123 -156 172 172 -205 222 222 -180 189 180 -222 213 222 -255 255 255 -74 65 82 diff --git a/graphics/text_window/5.pal b/graphics/text_window/5.pal deleted file mode 100644 index 5d81802e2..000000000 --- a/graphics/text_window/5.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -148 148 98 -222 213 222 -0 222 255 -123 57 0 -230 123 0 -255 255 41 -0 106 0 -0 172 0 -115 255 41 -139 0 0 -205 49 0 -255 189 0 -0 0 180 -0 106 213 -255 255 255 -74 65 82 diff --git a/graphics/text_window/6.pal b/graphics/text_window/6.pal deleted file mode 100644 index 3bb5b2006..000000000 --- a/graphics/text_window/6.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -172 180 238 -82 115 115 -148 189 156 -0 41 0 -90 115 106 -115 148 131 -98 74 41 -189 205 197 -115 90 57 -65 74 65 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -255 255 255 -74 65 82 diff --git a/graphics/text_window/7.pal b/graphics/text_window/7.pal deleted file mode 100644 index 142d57bc8..000000000 --- a/graphics/text_window/7.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -148 148 98 -139 49 49 -172 57 57 -205 65 65 -230 74 74 -255 82 82 -189 106 106 -255 131 131 -164 156 156 -213 197 197 -238 230 230 -222 213 213 -0 0 0 -0 0 0 -255 255 255 -74 65 82 diff --git a/graphics/text_window/8.pal b/graphics/text_window/8.pal deleted file mode 100644 index 4d80d0f89..000000000 --- a/graphics/text_window/8.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -148 148 98 -41 49 49 -0 0 0 -0 0 0 -82 189 0 -139 246 41 -156 115 41 -131 98 24 -172 139 65 -246 98 131 -255 156 180 -255 246 0 -180 189 180 -222 213 222 -255 255 255 -74 65 82 diff --git a/graphics/text_window/9.pal b/graphics/text_window/9.pal deleted file mode 100644 index b0e3b49e6..000000000 --- a/graphics/text_window/9.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -148 148 98 -41 49 49 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -230 246 255 -90 131 189 -115 156 213 -156 197 255 -197 238 255 -180 189 180 -222 213 222 -255 255 255 -74 65 82 diff --git a/graphics/title_screen/logo_shine.pal b/graphics/title_screen/logo_shine.pal deleted file mode 100644 index 561ab8f8f..000000000 --- a/graphics/title_screen/logo_shine.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 156 98 -0 0 0 -148 156 164 -180 189 189 -222 222 238 -255 255 255 -255 0 0 -255 0 0 -255 0 0 -255 0 0 -255 0 0 -255 0 0 -255 0 0 -255 0 0 -255 0 0 -255 0 0 diff --git a/graphics/trade/ball.pal b/graphics/trade/ball.pal deleted file mode 100644 index 0e6b2fb5c..000000000 --- a/graphics/trade/ball.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -255 255 255 -131 0 0 -172 0 0 -213 41 41 -255 156 123 -255 255 255 -148 148 148 -65 65 65 -24 24 24 -255 255 255 -255 255 255 -255 255 255 -255 255 255 -255 255 255 -255 255 255 -255 255 255 diff --git a/graphics/trade/cable_end.pal b/graphics/trade/cable_end.pal deleted file mode 100644 index 64a442293..000000000 --- a/graphics/trade/cable_end.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -222 230 238 -189 205 230 -156 180 222 -131 131 139 -98 98 123 -65 74 106 -41 49 90 -230 230 230 -205 205 205 -180 180 180 -156 156 156 -213 180 106 -205 156 82 -49 255 106 diff --git a/graphics/trade/gba.pal b/graphics/trade/gba.pal deleted file mode 100644 index 64a442293..000000000 --- a/graphics/trade/gba.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -222 230 238 -189 205 230 -156 180 222 -131 131 139 -98 98 123 -65 74 106 -41 49 90 -230 230 230 -205 205 205 -180 180 180 -156 156 156 -213 180 106 -205 156 82 -49 255 106 diff --git a/graphics/trade/selected_mon.pal b/graphics/trade/selected_mon.pal deleted file mode 100644 index bb74b34a2..000000000 --- a/graphics/trade/selected_mon.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -123 131 222 -98 98 180 -123 106 222 -106 172 238 -82 148 205 -180 189 230 -148 156 189 -205 106 0 -255 189 49 -246 148 0 -255 213 115 -205 74 90 -255 98 32 -205 205 222 -255 98 32 diff --git a/graphics/trade/shadow.pal b/graphics/trade/shadow.pal deleted file mode 100644 index a4bec6478..000000000 --- a/graphics/trade/shadow.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -222 230 238 -189 205 230 -156 180 222 -0 16 172 -32 32 106 -16 16 90 -0 0 74 -255 255 189 -230 230 164 -205 205 148 -189 180 115 -139 139 90 -74 74 57 -32 32 32 diff --git a/graphics/trainer_card/badges.pal b/graphics/trainer_card/badges.pal deleted file mode 100644 index dd9246d9d..000000000 --- a/graphics/trainer_card/badges.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -139 98 115 -255 255 255 -213 213 213 -180 180 180 -123 123 123 -255 139 57 -222 57 8 -106 189 255 -65 139 197 -255 213 98 -238 180 57 -197 123 197 -148 74 156 -106 189 255 -205 205 205 -0 0 0 diff --git a/graphics/trainers/aqua_admin_f/front.png b/graphics/trainers/aqua_admin_f.png similarity index 100% rename from graphics/trainers/aqua_admin_f/front.png rename to graphics/trainers/aqua_admin_f.png diff --git a/graphics/trainers/aqua_admin_f/palette.pal b/graphics/trainers/aqua_admin_f/palette.pal deleted file mode 100644 index 4bad68770..000000000 --- a/graphics/trainers/aqua_admin_f/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -106 74 74 -139 172 213 -90 131 189 -65 90 139 -57 57 57 -213 222 230 -255 131 41 -189 156 90 -238 98 41 -180 65 41 -255 255 255 -0 0 0 diff --git a/graphics/trainers/aqua_admin_m/front.png b/graphics/trainers/aqua_admin_m.png similarity index 100% rename from graphics/trainers/aqua_admin_m/front.png rename to graphics/trainers/aqua_admin_m.png diff --git a/graphics/trainers/aqua_admin_m/palette.pal b/graphics/trainers/aqua_admin_m/palette.pal deleted file mode 100644 index 2a7a46d46..000000000 --- a/graphics/trainers/aqua_admin_m/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -106 74 74 -139 172 213 -90 131 189 -65 90 139 -57 57 57 -213 222 230 -255 131 41 -189 156 90 -222 82 24 -164 49 24 -255 255 255 -0 0 0 diff --git a/graphics/trainers/aqua_grunt_f/front.png b/graphics/trainers/aqua_grunt_f.png similarity index 100% rename from graphics/trainers/aqua_grunt_f/front.png rename to graphics/trainers/aqua_grunt_f.png diff --git a/graphics/trainers/aqua_grunt_f/palette.pal b/graphics/trainers/aqua_grunt_f/palette.pal deleted file mode 100644 index 4563eba48..000000000 --- a/graphics/trainers/aqua_grunt_f/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -106 74 74 -139 172 213 -90 131 189 -65 90 139 -57 57 57 -213 222 230 -164 74 65 -189 156 90 -255 106 98 -205 82 74 -255 255 255 -0 0 0 diff --git a/graphics/trainers/aqua_grunt_m/front.png b/graphics/trainers/aqua_grunt_m.png similarity index 100% rename from graphics/trainers/aqua_grunt_m/front.png rename to graphics/trainers/aqua_grunt_m.png diff --git a/graphics/trainers/aqua_grunt_m/palette.pal b/graphics/trainers/aqua_grunt_m/palette.pal deleted file mode 100644 index c2b28ead9..000000000 --- a/graphics/trainers/aqua_grunt_m/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -106 74 74 -139 172 213 -90 131 189 -65 90 139 -57 57 57 -213 222 230 -255 164 197 -189 156 90 -255 115 148 -213 82 115 -255 255 255 -0 0 0 diff --git a/graphics/trainers/archie/front.png b/graphics/trainers/archie.png similarity index 100% rename from graphics/trainers/archie/front.png rename to graphics/trainers/archie.png diff --git a/graphics/trainers/archie/palette.pal b/graphics/trainers/archie/palette.pal deleted file mode 100644 index a778ea6bb..000000000 --- a/graphics/trainers/archie/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -106 74 74 -131 156 180 -106 123 148 -82 90 115 -57 65 98 -213 213 222 -82 90 156 -24 32 49 -148 156 222 -106 115 213 -255 255 255 -0 0 0 diff --git a/graphics/trainers/aroma_lady/front.png b/graphics/trainers/aroma_lady.png similarity index 100% rename from graphics/trainers/aroma_lady/front.png rename to graphics/trainers/aroma_lady.png diff --git a/graphics/trainers/aroma_lady/palette.pal b/graphics/trainers/aroma_lady/palette.pal deleted file mode 100644 index eb9f3dfd4..000000000 --- a/graphics/trainers/aroma_lady/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 213 172 -238 197 148 -205 156 115 -115 82 65 -238 230 255 -205 197 213 -156 164 205 -106 98 148 -74 222 148 -172 115 41 -115 65 24 -238 90 131 -189 65 90 -106 255 156 -0 0 0 diff --git a/graphics/trainers/battle_girl/front.png b/graphics/trainers/battle_girl.png similarity index 100% rename from graphics/trainers/battle_girl/front.png rename to graphics/trainers/battle_girl.png diff --git a/graphics/trainers/battle_girl/palette.pal b/graphics/trainers/battle_girl/palette.pal deleted file mode 100644 index 7f172b169..000000000 --- a/graphics/trainers/battle_girl/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -98 65 57 -90 131 189 -65 90 139 -41 65 98 -49 41 65 -205 213 222 -255 164 82 -230 106 0 -197 65 65 -156 106 65 -255 255 255 -0 0 0 diff --git a/graphics/trainers/beauty/front.png b/graphics/trainers/beauty.png similarity index 100% rename from graphics/trainers/beauty/front.png rename to graphics/trainers/beauty.png diff --git a/graphics/trainers/beauty/palette.pal b/graphics/trainers/beauty/palette.pal deleted file mode 100644 index ab549df20..000000000 --- a/graphics/trainers/beauty/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -230 172 131 -205 131 115 -123 82 74 -148 131 139 -255 205 106 -213 172 74 -164 123 82 -115 90 115 -74 49 74 -255 82 57 -180 82 74 -131 74 65 -255 255 255 -0 0 24 diff --git a/graphics/trainers/bird_keeper/front.png b/graphics/trainers/bird_keeper.png similarity index 100% rename from graphics/trainers/bird_keeper/front.png rename to graphics/trainers/bird_keeper.png diff --git a/graphics/trainers/bird_keeper/palette.pal b/graphics/trainers/bird_keeper/palette.pal deleted file mode 100644 index 87194c84a..000000000 --- a/graphics/trainers/bird_keeper/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -106 74 74 -164 180 197 -131 139 156 -90 98 115 -57 65 82 -213 213 222 -131 16 41 -24 32 49 -213 82 90 -180 41 57 -255 255 255 -0 0 0 diff --git a/graphics/trainers/black_belt/front.png b/graphics/trainers/black_belt.png similarity index 100% rename from graphics/trainers/black_belt/front.png rename to graphics/trainers/black_belt.png diff --git a/graphics/trainers/black_belt/palette.pal b/graphics/trainers/black_belt/palette.pal deleted file mode 100644 index 869e5d8df..000000000 --- a/graphics/trainers/black_belt/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -246 205 189 -222 172 148 -172 131 106 -90 65 49 -148 131 123 -106 90 82 -82 90 115 -49 57 82 -205 189 189 -189 164 164 -156 139 139 -255 98 90 -197 65 65 -246 230 230 -0 0 0 diff --git a/graphics/trainers/brawly/front.png b/graphics/trainers/brawly.png similarity index 100% rename from graphics/trainers/brawly/front.png rename to graphics/trainers/brawly.png diff --git a/graphics/trainers/brawly/palette.pal b/graphics/trainers/brawly/palette.pal deleted file mode 100644 index 5a5a482f2..000000000 --- a/graphics/trainers/brawly/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -106 74 74 -139 172 213 -90 131 189 -65 90 139 -49 49 74 -213 213 222 -255 164 197 -115 115 115 -255 139 65 -213 98 24 -255 255 255 -0 0 0 diff --git a/graphics/trainers/brendan/front.png b/graphics/trainers/brendan.png similarity index 100% rename from graphics/trainers/brendan/front.png rename to graphics/trainers/brendan.png diff --git a/graphics/trainers/brendan/palette.pal b/graphics/trainers/brendan/palette.pal deleted file mode 100644 index b5d3791c3..000000000 --- a/graphics/trainers/brendan/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -222 164 148 -205 131 115 -123 90 82 -98 123 156 -74 90 131 -49 65 106 -24 41 82 -222 230 238 -255 197 90 -189 156 90 -255 98 90 -197 65 65 -255 255 255 -0 0 0 diff --git a/graphics/trainers/brendan/back.png b/graphics/trainers/brendan_back.png similarity index 100% rename from graphics/trainers/brendan/back.png rename to graphics/trainers/brendan_back.png diff --git a/graphics/trainers/bug_catcher/front.png b/graphics/trainers/bug_catcher.png similarity index 100% rename from graphics/trainers/bug_catcher/front.png rename to graphics/trainers/bug_catcher.png diff --git a/graphics/trainers/bug_catcher/palette.pal b/graphics/trainers/bug_catcher/palette.pal deleted file mode 100644 index c68f56690..000000000 --- a/graphics/trainers/bug_catcher/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -230 180 148 -213 148 115 -123 90 82 -222 222 164 -197 197 139 -156 139 74 -41 57 98 -197 197 238 -246 238 213 -189 49 57 -98 164 222 -49 123 156 -255 255 255 -0 0 0 diff --git a/graphics/trainers/bug_maniac/front.png b/graphics/trainers/bug_maniac.png similarity index 100% rename from graphics/trainers/bug_maniac/front.png rename to graphics/trainers/bug_maniac.png diff --git a/graphics/trainers/bug_maniac/palette.pal b/graphics/trainers/bug_maniac/palette.pal deleted file mode 100644 index 2aa329179..000000000 --- a/graphics/trainers/bug_maniac/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -98 65 57 -49 123 156 -49 65 131 -65 74 74 -222 222 164 -197 197 139 -205 213 213 -156 139 74 -98 164 222 -106 115 115 -255 255 255 -0 0 0 diff --git a/graphics/trainers/camper/front.png b/graphics/trainers/camper.png similarity index 100% rename from graphics/trainers/camper/front.png rename to graphics/trainers/camper.png diff --git a/graphics/trainers/camper/palette.pal b/graphics/trainers/camper/palette.pal deleted file mode 100644 index e5c224fd2..000000000 --- a/graphics/trainers/camper/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 230 205 -230 189 156 -205 156 115 -115 82 65 -131 213 205 -82 164 148 -180 189 222 -57 90 74 -24 49 90 -98 115 230 -57 82 131 -255 98 41 -189 74 41 -255 255 255 -0 0 0 diff --git a/graphics/trainers/collector/front.png b/graphics/trainers/collector.png similarity index 100% rename from graphics/trainers/collector/front.png rename to graphics/trainers/collector.png diff --git a/graphics/trainers/collector/palette.pal b/graphics/trainers/collector/palette.pal deleted file mode 100644 index d4d9221e2..000000000 --- a/graphics/trainers/collector/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -230 180 148 -197 139 115 -123 90 82 -106 139 189 -65 98 148 -32 74 123 -255 98 90 -197 65 65 -213 222 230 -131 74 65 -115 123 131 -164 172 180 -255 255 255 -0 0 0 diff --git a/graphics/trainers/cool_trainer_f/front.png b/graphics/trainers/cool_trainer_f.png similarity index 100% rename from graphics/trainers/cool_trainer_f/front.png rename to graphics/trainers/cool_trainer_f.png diff --git a/graphics/trainers/cool_trainer_f/palette.pal b/graphics/trainers/cool_trainer_f/palette.pal deleted file mode 100644 index 292d0fc78..000000000 --- a/graphics/trainers/cool_trainer_f/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 230 205 -238 197 156 -205 156 115 -115 82 65 -238 156 115 -205 90 74 -0 189 222 -123 41 24 -180 230 139 -139 180 57 -74 90 32 -255 246 189 -213 205 131 -255 255 255 -0 0 0 diff --git a/graphics/trainers/cool_trainer_m/front.png b/graphics/trainers/cool_trainer_m.png similarity index 100% rename from graphics/trainers/cool_trainer_m/front.png rename to graphics/trainers/cool_trainer_m.png diff --git a/graphics/trainers/cool_trainer_m/palette.pal b/graphics/trainers/cool_trainer_m/palette.pal deleted file mode 100644 index 52a32e925..000000000 --- a/graphics/trainers/cool_trainer_m/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 230 205 -246 205 156 -205 156 115 -115 82 65 -238 156 115 -230 98 82 -180 90 74 -131 49 32 -57 90 41 -164 180 106 -98 123 57 -255 246 189 -213 205 131 -255 255 255 -0 0 0 diff --git a/graphics/trainers/cycling_triathlete_f/front.png b/graphics/trainers/cycling_triathlete_f.png similarity index 100% rename from graphics/trainers/cycling_triathlete_f/front.png rename to graphics/trainers/cycling_triathlete_f.png diff --git a/graphics/trainers/cycling_triathlete_f/palette.pal b/graphics/trainers/cycling_triathlete_f/palette.pal deleted file mode 100644 index b72bb3011..000000000 --- a/graphics/trainers/cycling_triathlete_f/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -57 41 57 -57 74 106 -131 131 156 -139 156 238 -115 131 205 -98 106 172 -205 197 255 -230 90 65 -189 74 41 -139 74 82 -255 255 255 -0 0 24 diff --git a/graphics/trainers/cycling_triathlete_m/front.png b/graphics/trainers/cycling_triathlete_m.png similarity index 100% rename from graphics/trainers/cycling_triathlete_m/front.png rename to graphics/trainers/cycling_triathlete_m.png diff --git a/graphics/trainers/cycling_triathlete_m/palette.pal b/graphics/trainers/cycling_triathlete_m/palette.pal deleted file mode 100644 index 9255a4a94..000000000 --- a/graphics/trainers/cycling_triathlete_m/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -238 189 139 -189 148 115 -139 106 82 -57 41 57 -115 90 106 -156 131 156 -156 213 255 -106 164 222 -82 131 197 -205 197 255 -230 90 65 -189 74 41 -139 74 82 -255 255 255 -0 0 24 diff --git a/graphics/trainers/dragon_tamer/front.png b/graphics/trainers/dragon_tamer.png similarity index 100% rename from graphics/trainers/dragon_tamer/front.png rename to graphics/trainers/dragon_tamer.png diff --git a/graphics/trainers/dragon_tamer/palette.pal b/graphics/trainers/dragon_tamer/palette.pal deleted file mode 100644 index 545c55b74..000000000 --- a/graphics/trainers/dragon_tamer/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -74 57 49 -164 57 246 -123 49 172 -131 139 148 -255 98 90 -197 65 65 -213 222 230 -74 74 65 -255 205 106 -213 172 74 -255 255 255 -0 0 0 diff --git a/graphics/trainers/drake/front.png b/graphics/trainers/drake.png similarity index 100% rename from graphics/trainers/drake/front.png rename to graphics/trainers/drake.png diff --git a/graphics/trainers/drake/palette.pal b/graphics/trainers/drake/palette.pal deleted file mode 100644 index 6ab0bae73..000000000 --- a/graphics/trainers/drake/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -222 172 148 -164 131 106 -98 57 65 -139 131 164 -106 98 123 -41 49 57 -57 65 82 -197 197 213 -255 222 106 -189 156 90 -106 131 238 -65 106 172 -255 255 255 -0 0 0 diff --git a/graphics/trainers/expert_f/front.png b/graphics/trainers/expert_f.png similarity index 100% rename from graphics/trainers/expert_f/front.png rename to graphics/trainers/expert_f.png diff --git a/graphics/trainers/expert_f/palette.pal b/graphics/trainers/expert_f/palette.pal deleted file mode 100644 index 2fa5f5202..000000000 --- a/graphics/trainers/expert_f/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -106 74 74 -180 180 172 -90 131 189 -65 90 139 -57 57 57 -213 222 230 -139 139 131 -189 156 90 -255 98 90 -197 65 65 -255 255 255 -0 0 0 diff --git a/graphics/trainers/expert_m/front.png b/graphics/trainers/expert_m.png similarity index 100% rename from graphics/trainers/expert_m/front.png rename to graphics/trainers/expert_m.png diff --git a/graphics/trainers/expert_m/palette.pal b/graphics/trainers/expert_m/palette.pal deleted file mode 100644 index 2fa5f5202..000000000 --- a/graphics/trainers/expert_m/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -106 74 74 -180 180 172 -90 131 189 -65 90 139 -57 57 57 -213 222 230 -139 139 131 -189 156 90 -255 98 90 -197 65 65 -255 255 255 -0 0 0 diff --git a/graphics/trainers/fisherman/front.png b/graphics/trainers/fisherman.png similarity index 100% rename from graphics/trainers/fisherman/front.png rename to graphics/trainers/fisherman.png diff --git a/graphics/trainers/fisherman/palette.pal b/graphics/trainers/fisherman/palette.pal deleted file mode 100644 index 3c18e8f1f..000000000 --- a/graphics/trainers/fisherman/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 213 189 -222 172 148 -180 131 115 -82 57 57 -123 98 106 -82 82 123 -213 172 82 -180 139 82 -205 205 222 -123 82 49 -49 49 74 -246 123 49 -189 106 49 -238 238 255 -0 0 24 diff --git a/graphics/trainers/flannery/front.png b/graphics/trainers/flannery.png similarity index 100% rename from graphics/trainers/flannery/front.png rename to graphics/trainers/flannery.png diff --git a/graphics/trainers/flannery/palette.pal b/graphics/trainers/flannery/palette.pal deleted file mode 100644 index 20f2f8579..000000000 --- a/graphics/trainers/flannery/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -106 74 74 -180 197 230 -90 156 213 -65 115 164 -49 49 74 -213 213 222 -131 74 16 -115 115 115 -255 139 65 -197 98 32 -255 255 255 -0 0 0 diff --git a/graphics/trainers/gentleman/front.png b/graphics/trainers/gentleman.png similarity index 100% rename from graphics/trainers/gentleman/front.png rename to graphics/trainers/gentleman.png diff --git a/graphics/trainers/gentleman/palette.pal b/graphics/trainers/gentleman/palette.pal deleted file mode 100644 index ef021d026..000000000 --- a/graphics/trainers/gentleman/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -98 65 57 -180 148 115 -148 115 82 -123 90 57 -65 49 41 -255 238 156 -213 213 205 -180 180 172 -90 106 172 -57 74 123 -255 255 255 -0 0 0 diff --git a/graphics/trainers/glacia/front.png b/graphics/trainers/glacia.png similarity index 100% rename from graphics/trainers/glacia/front.png rename to graphics/trainers/glacia.png diff --git a/graphics/trainers/glacia/palette.pal b/graphics/trainers/glacia/palette.pal deleted file mode 100644 index 75b5eb108..000000000 --- a/graphics/trainers/glacia/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -115 82 65 -148 148 164 -148 90 164 -115 65 123 -82 41 82 -255 255 164 -213 197 90 -156 148 90 -222 230 238 -189 197 205 -255 255 255 -0 0 0 diff --git a/graphics/trainers/guitarist/front.png b/graphics/trainers/guitarist.png similarity index 100% rename from graphics/trainers/guitarist/front.png rename to graphics/trainers/guitarist.png diff --git a/graphics/trainers/guitarist/palette.pal b/graphics/trainers/guitarist/palette.pal deleted file mode 100644 index 74e59e819..000000000 --- a/graphics/trainers/guitarist/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -98 65 57 -172 172 164 -139 131 131 -106 98 98 -65 57 57 -255 238 156 -255 197 90 -205 180 148 -255 98 90 -189 65 65 -255 255 255 -0 0 0 diff --git a/graphics/trainers/hex_maniac/front.png b/graphics/trainers/hex_maniac.png similarity index 100% rename from graphics/trainers/hex_maniac/front.png rename to graphics/trainers/hex_maniac.png diff --git a/graphics/trainers/hex_maniac/palette.pal b/graphics/trainers/hex_maniac/palette.pal deleted file mode 100644 index 549d7fac9..000000000 --- a/graphics/trainers/hex_maniac/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -106 74 74 -164 123 156 -139 90 131 -106 65 106 -74 41 74 -213 222 230 -189 205 213 -205 57 82 -115 41 65 -180 49 74 -255 255 255 -0 0 0 diff --git a/graphics/trainers/hiker/front.png b/graphics/trainers/hiker.png similarity index 100% rename from graphics/trainers/hiker/front.png rename to graphics/trainers/hiker.png diff --git a/graphics/trainers/hiker/palette.pal b/graphics/trainers/hiker/palette.pal deleted file mode 100644 index cb8fce7f6..000000000 --- a/graphics/trainers/hiker/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -222 164 148 -205 131 115 -74 65 57 -123 189 90 -115 148 90 -213 180 98 -172 148 98 -205 205 222 -148 148 148 -123 115 74 -230 98 90 -164 74 74 -255 255 255 -0 0 24 diff --git a/graphics/trainers/interviewer/front.png b/graphics/trainers/interviewer.png similarity index 100% rename from graphics/trainers/interviewer/front.png rename to graphics/trainers/interviewer.png diff --git a/graphics/trainers/interviewer/palette.pal b/graphics/trainers/interviewer/palette.pal deleted file mode 100644 index 61ace1935..000000000 --- a/graphics/trainers/interviewer/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -98 65 57 -148 148 172 -65 90 139 -41 65 98 -49 41 65 -205 213 222 -98 197 255 -90 156 189 -255 98 90 -197 65 65 -255 255 255 -0 0 0 diff --git a/graphics/trainers/kindler/front.png b/graphics/trainers/kindler.png similarity index 100% rename from graphics/trainers/kindler/front.png rename to graphics/trainers/kindler.png diff --git a/graphics/trainers/kindler/palette.pal b/graphics/trainers/kindler/palette.pal deleted file mode 100644 index af6adf7e8..000000000 --- a/graphics/trainers/kindler/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -115 82 65 -246 246 230 -222 222 189 -180 180 139 -123 115 74 -172 213 246 -115 180 205 -57 123 139 -255 82 57 -255 156 90 -255 255 255 -0 0 0 diff --git a/graphics/trainers/lady/front.png b/graphics/trainers/lady.png similarity index 100% rename from graphics/trainers/lady/front.png rename to graphics/trainers/lady.png diff --git a/graphics/trainers/lady/palette.pal b/graphics/trainers/lady/palette.pal deleted file mode 100644 index b70873111..000000000 --- a/graphics/trainers/lady/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 230 222 -238 180 180 -156 123 106 -172 106 74 -82 82 32 -213 222 230 -255 230 106 -213 172 90 -222 98 123 -148 164 180 -180 238 106 -148 213 82 -123 189 65 -255 255 255 -0 0 24 diff --git a/graphics/trainers/lass/front.png b/graphics/trainers/lass.png similarity index 100% rename from graphics/trainers/lass/front.png rename to graphics/trainers/lass.png diff --git a/graphics/trainers/lass/palette.pal b/graphics/trainers/lass/palette.pal deleted file mode 100644 index 89e78d683..000000000 --- a/graphics/trainers/lass/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -222 148 115 -123 90 82 -164 172 197 -90 98 148 -49 57 82 -41 57 98 -222 230 238 -255 197 90 -189 156 90 -255 98 90 -197 65 65 -255 255 255 -0 0 0 diff --git a/graphics/trainers/magma_admin_f/front.png b/graphics/trainers/magma_admin_f.png similarity index 100% rename from graphics/trainers/magma_admin_f/front.png rename to graphics/trainers/magma_admin_f.png diff --git a/graphics/trainers/magma_admin_f/palette.pal b/graphics/trainers/magma_admin_f/palette.pal deleted file mode 100644 index a987cdbc1..000000000 --- a/graphics/trainers/magma_admin_f/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -106 74 74 -123 123 123 -90 90 90 -82 98 148 -57 57 65 -65 74 115 -139 49 65 -189 189 180 -222 82 98 -189 57 74 -255 255 255 -0 0 0 diff --git a/graphics/trainers/magma_admin_m/front.png b/graphics/trainers/magma_admin_m.png similarity index 100% rename from graphics/trainers/magma_admin_m/front.png rename to graphics/trainers/magma_admin_m.png diff --git a/graphics/trainers/magma_admin_m/palette.pal b/graphics/trainers/magma_admin_m/palette.pal deleted file mode 100644 index a987cdbc1..000000000 --- a/graphics/trainers/magma_admin_m/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -106 74 74 -123 123 123 -90 90 90 -82 98 148 -57 57 65 -65 74 115 -139 49 65 -189 189 180 -222 82 98 -189 57 74 -255 255 255 -0 0 0 diff --git a/graphics/trainers/magma_grunt_f/front.png b/graphics/trainers/magma_grunt_f.png similarity index 100% rename from graphics/trainers/magma_grunt_f/front.png rename to graphics/trainers/magma_grunt_f.png diff --git a/graphics/trainers/magma_grunt_f/palette.pal b/graphics/trainers/magma_grunt_f/palette.pal deleted file mode 100644 index a987cdbc1..000000000 --- a/graphics/trainers/magma_grunt_f/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -106 74 74 -123 123 123 -90 90 90 -82 98 148 -57 57 65 -65 74 115 -139 49 65 -189 189 180 -222 82 98 -189 57 74 -255 255 255 -0 0 0 diff --git a/graphics/trainers/magma_grunt_m/front.png b/graphics/trainers/magma_grunt_m.png similarity index 100% rename from graphics/trainers/magma_grunt_m/front.png rename to graphics/trainers/magma_grunt_m.png diff --git a/graphics/trainers/magma_grunt_m/palette.pal b/graphics/trainers/magma_grunt_m/palette.pal deleted file mode 100644 index a987cdbc1..000000000 --- a/graphics/trainers/magma_grunt_m/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -106 74 74 -123 123 123 -90 90 90 -82 98 148 -57 57 65 -65 74 115 -139 49 65 -189 189 180 -222 82 98 -189 57 74 -255 255 255 -0 0 0 diff --git a/graphics/trainers/maxie/front.png b/graphics/trainers/maxie.png similarity index 100% rename from graphics/trainers/maxie/front.png rename to graphics/trainers/maxie.png diff --git a/graphics/trainers/maxie/palette.pal b/graphics/trainers/maxie/palette.pal deleted file mode 100644 index 151bf6d5b..000000000 --- a/graphics/trainers/maxie/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -106 74 74 -164 180 197 -115 123 139 -74 82 98 -49 57 82 -213 213 222 -131 16 41 -24 32 49 -213 82 90 -180 41 57 -255 255 255 -0 0 0 diff --git a/graphics/trainers/may/front.png b/graphics/trainers/may.png similarity index 100% rename from graphics/trainers/may/front.png rename to graphics/trainers/may.png diff --git a/graphics/trainers/may/palette.pal b/graphics/trainers/may/palette.pal deleted file mode 100644 index e106ce693..000000000 --- a/graphics/trainers/may/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -222 164 148 -205 131 115 -123 90 82 -98 98 115 -41 57 65 -164 106 82 -74 49 57 -205 205 222 -255 197 90 -189 156 90 -255 98 90 -197 65 65 -255 255 255 -0 0 0 diff --git a/graphics/trainers/may/back.png b/graphics/trainers/may_back.png similarity index 100% rename from graphics/trainers/may/back.png rename to graphics/trainers/may_back.png diff --git a/graphics/trainers/ninja_boy/front.png b/graphics/trainers/ninja_boy.png similarity index 100% rename from graphics/trainers/ninja_boy/front.png rename to graphics/trainers/ninja_boy.png diff --git a/graphics/trainers/ninja_boy/palette.pal b/graphics/trainers/ninja_boy/palette.pal deleted file mode 100644 index 524d3f4ba..000000000 --- a/graphics/trainers/ninja_boy/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -230 180 148 -213 148 115 -123 90 82 -164 180 197 -131 139 156 -82 98 115 -49 57 82 -213 213 222 -131 16 41 -255 172 32 -213 82 90 -180 41 57 -255 255 255 -0 0 0 diff --git a/graphics/trainers/norman/front.png b/graphics/trainers/norman.png similarity index 100% rename from graphics/trainers/norman/front.png rename to graphics/trainers/norman.png diff --git a/graphics/trainers/norman/palette.pal b/graphics/trainers/norman/palette.pal deleted file mode 100644 index e53c16837..000000000 --- a/graphics/trainers/norman/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -106 74 74 -180 197 230 -139 156 172 -74 98 123 -49 65 82 -213 213 222 -131 16 41 -115 115 115 -213 82 90 -180 41 57 -255 255 255 -0 0 0 diff --git a/graphics/trainers/old_couple/front.png b/graphics/trainers/old_couple.png similarity index 100% rename from graphics/trainers/old_couple/front.png rename to graphics/trainers/old_couple.png diff --git a/graphics/trainers/old_couple/palette.pal b/graphics/trainers/old_couple/palette.pal deleted file mode 100644 index 2fa5f5202..000000000 --- a/graphics/trainers/old_couple/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -106 74 74 -180 180 172 -90 131 189 -65 90 139 -57 57 57 -213 222 230 -139 139 131 -189 156 90 -255 98 90 -197 65 65 -255 255 255 -0 0 0 diff --git a/graphics/trainers/parasol_lady/front.png b/graphics/trainers/parasol_lady.png similarity index 100% rename from graphics/trainers/parasol_lady/front.png rename to graphics/trainers/parasol_lady.png diff --git a/graphics/trainers/parasol_lady/palette.pal b/graphics/trainers/parasol_lady/palette.pal deleted file mode 100644 index dc5c6f67f..000000000 --- a/graphics/trainers/parasol_lady/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -123 82 65 -90 131 189 -65 90 139 -41 65 98 -255 98 90 -197 65 65 -255 156 106 -131 74 65 -255 205 106 -213 172 74 -255 255 255 -0 0 0 diff --git a/graphics/trainers/phoebe/front.png b/graphics/trainers/phoebe.png similarity index 100% rename from graphics/trainers/phoebe/front.png rename to graphics/trainers/phoebe.png diff --git a/graphics/trainers/phoebe/palette.pal b/graphics/trainers/phoebe/palette.pal deleted file mode 100644 index 8c07c0d5b..000000000 --- a/graphics/trainers/phoebe/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -115 82 65 -57 131 255 -32 106 230 -16 82 205 -41 49 123 -164 205 255 -115 98 106 -74 57 65 -255 82 156 -197 65 90 -255 255 255 -0 0 0 diff --git a/graphics/trainers/picnicker/front.png b/graphics/trainers/picnicker.png similarity index 100% rename from graphics/trainers/picnicker/front.png rename to graphics/trainers/picnicker.png diff --git a/graphics/trainers/picnicker/palette.pal b/graphics/trainers/picnicker/palette.pal deleted file mode 100644 index acd90e943..000000000 --- a/graphics/trainers/picnicker/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 230 205 -246 205 156 -205 156 115 -115 82 65 -131 213 205 -82 164 148 -180 189 222 -57 90 74 -24 49 90 -98 115 230 -57 82 131 -255 98 41 -189 74 41 -255 255 255 -0 0 0 diff --git a/graphics/trainers/pokefan_f/front.png b/graphics/trainers/pokefan_f.png similarity index 100% rename from graphics/trainers/pokefan_f/front.png rename to graphics/trainers/pokefan_f.png diff --git a/graphics/trainers/pokefan_f/palette.pal b/graphics/trainers/pokefan_f/palette.pal deleted file mode 100644 index 09728f005..000000000 --- a/graphics/trainers/pokefan_f/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -98 65 57 -90 172 189 -65 123 180 -255 0 255 -32 57 82 -197 205 213 -180 139 90 -131 90 41 -255 98 90 -197 65 65 -255 255 255 -0 0 0 diff --git a/graphics/trainers/pokefan_m/front.png b/graphics/trainers/pokefan_m.png similarity index 100% rename from graphics/trainers/pokefan_m/front.png rename to graphics/trainers/pokefan_m.png diff --git a/graphics/trainers/pokefan_m/palette.pal b/graphics/trainers/pokefan_m/palette.pal deleted file mode 100644 index 1d1f48875..000000000 --- a/graphics/trainers/pokefan_m/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 230 205 -222 189 148 -197 156 115 -156 123 82 -49 57 49 -230 90 41 -131 172 222 -172 49 32 -82 123 172 -255 238 74 -213 189 41 -205 205 213 -98 98 74 -255 255 255 -0 0 0 diff --git a/graphics/trainers/pokemaniac/front.png b/graphics/trainers/pokemaniac.png similarity index 100% rename from graphics/trainers/pokemaniac/front.png rename to graphics/trainers/pokemaniac.png diff --git a/graphics/trainers/pokemaniac/palette.pal b/graphics/trainers/pokemaniac/palette.pal deleted file mode 100644 index 3ede03b14..000000000 --- a/graphics/trainers/pokemaniac/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 230 205 -246 205 156 -205 156 115 -115 82 65 -246 189 115 -213 123 74 -180 82 74 -139 57 41 -74 74 49 -255 230 57 -98 123 106 -230 82 24 -213 205 230 -255 255 255 -0 0 0 diff --git a/graphics/trainers/pokemon_breeder_f/front.png b/graphics/trainers/pokemon_breeder_f.png similarity index 100% rename from graphics/trainers/pokemon_breeder_f/front.png rename to graphics/trainers/pokemon_breeder_f.png diff --git a/graphics/trainers/pokemon_breeder_f/palette.pal b/graphics/trainers/pokemon_breeder_f/palette.pal deleted file mode 100644 index b15f5db8a..000000000 --- a/graphics/trainers/pokemon_breeder_f/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -106 74 74 -255 98 90 -164 49 65 -255 148 131 -49 49 74 -213 222 230 -205 74 74 -115 148 197 -49 74 123 -57 115 164 -255 255 255 -0 0 0 diff --git a/graphics/trainers/pokemon_breeder_m/front.png b/graphics/trainers/pokemon_breeder_m.png similarity index 100% rename from graphics/trainers/pokemon_breeder_m/front.png rename to graphics/trainers/pokemon_breeder_m.png diff --git a/graphics/trainers/pokemon_breeder_m/palette.pal b/graphics/trainers/pokemon_breeder_m/palette.pal deleted file mode 100644 index 6551f8482..000000000 --- a/graphics/trainers/pokemon_breeder_m/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -131 90 74 -255 98 90 -156 65 74 -255 148 131 -49 49 74 -213 222 230 -205 74 74 -115 148 197 -49 74 123 -57 115 164 -255 255 255 -0 0 0 diff --git a/graphics/trainers/pokemon_ranger_f/front.png b/graphics/trainers/pokemon_ranger_f.png similarity index 100% rename from graphics/trainers/pokemon_ranger_f/front.png rename to graphics/trainers/pokemon_ranger_f.png diff --git a/graphics/trainers/pokemon_ranger_f/palette.pal b/graphics/trainers/pokemon_ranger_f/palette.pal deleted file mode 100644 index 93220f5cb..000000000 --- a/graphics/trainers/pokemon_ranger_f/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -131 90 65 -82 49 49 -131 139 156 -82 90 115 -49 57 82 -213 213 222 -255 205 65 -255 131 74 -205 98 74 -156 65 65 -255 255 255 -0 0 0 diff --git a/graphics/trainers/pokemon_ranger_m/front.png b/graphics/trainers/pokemon_ranger_m.png similarity index 100% rename from graphics/trainers/pokemon_ranger_m/front.png rename to graphics/trainers/pokemon_ranger_m.png diff --git a/graphics/trainers/pokemon_ranger_m/palette.pal b/graphics/trainers/pokemon_ranger_m/palette.pal deleted file mode 100644 index 2f16ca0cb..000000000 --- a/graphics/trainers/pokemon_ranger_m/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -139 106 82 -82 49 49 -131 139 156 -90 98 115 -49 57 82 -213 213 222 -255 205 65 -238 139 82 -197 82 74 -115 57 49 -255 255 255 -0 0 0 diff --git a/graphics/trainers/psychic_f/front.png b/graphics/trainers/psychic_f.png similarity index 100% rename from graphics/trainers/psychic_f/front.png rename to graphics/trainers/psychic_f.png diff --git a/graphics/trainers/psychic_f/palette.pal b/graphics/trainers/psychic_f/palette.pal deleted file mode 100644 index 232cfd755..000000000 --- a/graphics/trainers/psychic_f/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 230 205 -246 205 156 -205 156 115 -115 82 65 -98 123 180 -32 98 131 -255 0 246 -41 57 90 -213 131 255 -156 115 180 -115 82 148 -246 139 90 -197 90 74 -255 255 255 -0 0 0 diff --git a/graphics/trainers/psychic_m/front.png b/graphics/trainers/psychic_m.png similarity index 100% rename from graphics/trainers/psychic_m/front.png rename to graphics/trainers/psychic_m.png diff --git a/graphics/trainers/psychic_m/palette.pal b/graphics/trainers/psychic_m/palette.pal deleted file mode 100644 index 0ddd2894b..000000000 --- a/graphics/trainers/psychic_m/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 230 205 -230 189 148 -205 156 115 -115 82 65 -98 123 180 -32 98 131 -0 255 0 -41 57 90 -213 131 255 -131 106 172 -90 74 131 -246 139 90 -197 90 74 -255 255 255 -0 0 0 diff --git a/graphics/trainers/rich_boy/front.png b/graphics/trainers/rich_boy.png similarity index 100% rename from graphics/trainers/rich_boy/front.png rename to graphics/trainers/rich_boy.png diff --git a/graphics/trainers/rich_boy/palette.pal b/graphics/trainers/rich_boy/palette.pal deleted file mode 100644 index 1ebb77204..000000000 --- a/graphics/trainers/rich_boy/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -106 74 74 -90 131 189 -65 90 139 -41 65 98 -49 41 65 -213 222 230 -255 230 98 -222 180 90 -156 123 115 -115 82 90 -255 255 255 -0 0 0 diff --git a/graphics/trainers/roxanne/front.png b/graphics/trainers/roxanne.png similarity index 100% rename from graphics/trainers/roxanne/front.png rename to graphics/trainers/roxanne.png diff --git a/graphics/trainers/roxanne/palette.pal b/graphics/trainers/roxanne/palette.pal deleted file mode 100644 index c2b28ead9..000000000 --- a/graphics/trainers/roxanne/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -106 74 74 -139 172 213 -90 131 189 -65 90 139 -57 57 57 -213 222 230 -255 164 197 -189 156 90 -255 115 148 -213 82 115 -255 255 255 -0 0 0 diff --git a/graphics/trainers/ruin_maniac/front.png b/graphics/trainers/ruin_maniac.png similarity index 100% rename from graphics/trainers/ruin_maniac/front.png rename to graphics/trainers/ruin_maniac.png diff --git a/graphics/trainers/ruin_maniac/palette.pal b/graphics/trainers/ruin_maniac/palette.pal deleted file mode 100644 index bbc342a06..000000000 --- a/graphics/trainers/ruin_maniac/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -255 238 106 -246 246 230 -222 222 189 -180 180 139 -115 106 65 -222 213 246 -115 131 205 -222 189 8 -213 115 139 -172 74 90 -255 255 255 -0 0 0 diff --git a/graphics/trainers/running_triathlete_f/front.png b/graphics/trainers/running_triathlete_f.png similarity index 100% rename from graphics/trainers/running_triathlete_f/front.png rename to graphics/trainers/running_triathlete_f.png diff --git a/graphics/trainers/running_triathlete_f/palette.pal b/graphics/trainers/running_triathlete_f/palette.pal deleted file mode 100644 index 671c1593f..000000000 --- a/graphics/trainers/running_triathlete_f/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -98 65 57 -90 131 189 -65 90 139 -41 65 98 -49 41 65 -205 213 222 -180 139 90 -139 65 65 -255 98 90 -197 65 65 -255 255 255 -0 0 0 diff --git a/graphics/trainers/running_triathlete_m/front.png b/graphics/trainers/running_triathlete_m.png similarity index 100% rename from graphics/trainers/running_triathlete_m/front.png rename to graphics/trainers/running_triathlete_m.png diff --git a/graphics/trainers/running_triathlete_m/palette.pal b/graphics/trainers/running_triathlete_m/palette.pal deleted file mode 100644 index 13a56a556..000000000 --- a/graphics/trainers/running_triathlete_m/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -246 205 180 -230 180 148 -180 139 106 -115 82 65 -90 131 189 -65 90 139 -41 65 98 -49 41 65 -205 213 222 -180 139 90 -139 65 65 -255 98 90 -197 65 65 -255 255 255 -0 0 0 diff --git a/graphics/trainers/sailor/front.png b/graphics/trainers/sailor.png similarity index 100% rename from graphics/trainers/sailor/front.png rename to graphics/trainers/sailor.png diff --git a/graphics/trainers/sailor/palette.pal b/graphics/trainers/sailor/palette.pal deleted file mode 100644 index 3b6248576..000000000 --- a/graphics/trainers/sailor/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -106 74 74 -180 180 172 -90 131 189 -65 90 139 -57 57 57 -213 222 230 -139 139 131 -131 180 230 -255 98 90 -197 65 65 -255 255 255 -0 0 0 diff --git a/graphics/trainers/school_kid_f/front.png b/graphics/trainers/school_kid_f.png similarity index 100% rename from graphics/trainers/school_kid_f/front.png rename to graphics/trainers/school_kid_f.png diff --git a/graphics/trainers/school_kid_f/palette.pal b/graphics/trainers/school_kid_f/palette.pal deleted file mode 100644 index ce758377a..000000000 --- a/graphics/trainers/school_kid_f/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 230 205 -238 189 156 -205 148 115 -106 74 57 -255 139 164 -213 82 131 -131 139 255 -98 115 180 -57 74 131 -246 189 123 -197 131 65 -230 82 41 -139 90 32 -255 255 255 -0 0 0 diff --git a/graphics/trainers/school_kid_m/front.png b/graphics/trainers/school_kid_m.png similarity index 100% rename from graphics/trainers/school_kid_m/front.png rename to graphics/trainers/school_kid_m.png diff --git a/graphics/trainers/school_kid_m/palette.pal b/graphics/trainers/school_kid_m/palette.pal deleted file mode 100644 index dc4298ea0..000000000 --- a/graphics/trainers/school_kid_m/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -230 180 148 -213 148 115 -123 90 82 -172 164 115 -65 90 148 -49 57 82 -131 123 82 -197 197 238 -255 222 65 -205 189 123 -98 164 222 -49 123 156 -255 255 255 -0 0 0 diff --git a/graphics/trainers/sidney/front.png b/graphics/trainers/sidney.png similarity index 100% rename from graphics/trainers/sidney/front.png rename to graphics/trainers/sidney.png diff --git a/graphics/trainers/sidney/palette.pal b/graphics/trainers/sidney/palette.pal deleted file mode 100644 index d778e0ed6..000000000 --- a/graphics/trainers/sidney/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -222 180 148 -189 139 106 -98 57 65 -131 106 74 -106 98 123 -41 49 57 -57 65 82 -197 197 213 -238 213 139 -197 164 106 -255 98 90 -197 65 65 -255 255 255 -0 0 0 diff --git a/graphics/trainers/sis_and_bro/front.png b/graphics/trainers/sis_and_bro.png similarity index 100% rename from graphics/trainers/sis_and_bro/front.png rename to graphics/trainers/sis_and_bro.png diff --git a/graphics/trainers/sis_and_bro/palette.pal b/graphics/trainers/sis_and_bro/palette.pal deleted file mode 100644 index 823ef66ef..000000000 --- a/graphics/trainers/sis_and_bro/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -246 205 189 -222 164 148 -164 123 98 -74 57 49 -255 139 90 -230 82 74 -180 65 65 -90 65 82 -197 65 65 -213 222 230 -255 230 205 -139 172 213 -90 131 189 -255 255 255 -0 0 0 diff --git a/graphics/trainers/sr_and_jr/front.png b/graphics/trainers/sr_and_jr.png similarity index 100% rename from graphics/trainers/sr_and_jr/front.png rename to graphics/trainers/sr_and_jr.png diff --git a/graphics/trainers/sr_and_jr/palette.pal b/graphics/trainers/sr_and_jr/palette.pal deleted file mode 100644 index 72238881f..000000000 --- a/graphics/trainers/sr_and_jr/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -98 65 57 -90 131 189 -65 90 139 -41 65 98 -49 41 65 -205 213 222 -180 139 90 -131 90 41 -255 98 90 -197 65 65 -255 255 255 -0 0 0 diff --git a/graphics/trainers/steven/front.png b/graphics/trainers/steven.png similarity index 100% rename from graphics/trainers/steven/front.png rename to graphics/trainers/steven.png diff --git a/graphics/trainers/steven/palette.pal b/graphics/trainers/steven/palette.pal deleted file mode 100644 index bb2fedd5f..000000000 --- a/graphics/trainers/steven/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -222 180 148 -189 148 115 -123 90 82 -189 115 205 -164 82 172 -82 82 90 -49 49 57 -213 222 238 -172 189 213 -123 148 164 -255 98 90 -197 65 65 -255 255 255 -0 0 0 diff --git a/graphics/trainers/swimmer_f/front.png b/graphics/trainers/swimmer_f.png similarity index 100% rename from graphics/trainers/swimmer_f/front.png rename to graphics/trainers/swimmer_f.png diff --git a/graphics/trainers/swimmer_f/palette.pal b/graphics/trainers/swimmer_f/palette.pal deleted file mode 100644 index 823ef66ef..000000000 --- a/graphics/trainers/swimmer_f/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -246 205 189 -222 164 148 -164 123 98 -74 57 49 -255 139 90 -230 82 74 -180 65 65 -90 65 82 -197 65 65 -213 222 230 -255 230 205 -139 172 213 -90 131 189 -255 255 255 -0 0 0 diff --git a/graphics/trainers/swimmer_m/front.png b/graphics/trainers/swimmer_m.png similarity index 100% rename from graphics/trainers/swimmer_m/front.png rename to graphics/trainers/swimmer_m.png diff --git a/graphics/trainers/swimmer_m/palette.pal b/graphics/trainers/swimmer_m/palette.pal deleted file mode 100644 index 259a53b9a..000000000 --- a/graphics/trainers/swimmer_m/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -230 197 172 -213 172 148 -172 123 106 -115 82 65 -90 131 189 -65 90 139 -41 65 98 -49 41 65 -205 213 222 -172 172 180 -139 65 65 -222 238 238 -197 65 65 -255 255 255 -0 0 0 diff --git a/graphics/trainers/swimming_triathlete_f/front.png b/graphics/trainers/swimming_triathlete_f.png similarity index 100% rename from graphics/trainers/swimming_triathlete_f/front.png rename to graphics/trainers/swimming_triathlete_f.png diff --git a/graphics/trainers/swimming_triathlete_f/palette.pal b/graphics/trainers/swimming_triathlete_f/palette.pal deleted file mode 100644 index 671c1593f..000000000 --- a/graphics/trainers/swimming_triathlete_f/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -98 65 57 -90 131 189 -65 90 139 -41 65 98 -49 41 65 -205 213 222 -180 139 90 -139 65 65 -255 98 90 -197 65 65 -255 255 255 -0 0 0 diff --git a/graphics/trainers/swimming_triathlete_m/front.png b/graphics/trainers/swimming_triathlete_m.png similarity index 100% rename from graphics/trainers/swimming_triathlete_m/front.png rename to graphics/trainers/swimming_triathlete_m.png diff --git a/graphics/trainers/swimming_triathlete_m/palette.pal b/graphics/trainers/swimming_triathlete_m/palette.pal deleted file mode 100644 index 671c1593f..000000000 --- a/graphics/trainers/swimming_triathlete_m/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -98 65 57 -90 131 189 -65 90 139 -41 65 98 -49 41 65 -205 213 222 -180 139 90 -139 65 65 -255 98 90 -197 65 65 -255 255 255 -0 0 0 diff --git a/graphics/trainers/tate_and_liza/front.png b/graphics/trainers/tate_and_liza.png similarity index 100% rename from graphics/trainers/tate_and_liza/front.png rename to graphics/trainers/tate_and_liza.png diff --git a/graphics/trainers/tate_and_liza/palette.pal b/graphics/trainers/tate_and_liza/palette.pal deleted file mode 100644 index ab64e9bea..000000000 --- a/graphics/trainers/tate_and_liza/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 172 65 -255 222 205 -238 180 148 -180 131 106 -106 74 74 -189 189 197 -123 123 131 -74 82 98 -41 49 65 -255 98 90 -164 49 57 -255 197 90 -106 189 255 -90 139 197 -255 255 255 -0 0 0 diff --git a/graphics/trainers/tuber_f/front.png b/graphics/trainers/tuber_f.png similarity index 100% rename from graphics/trainers/tuber_f/front.png rename to graphics/trainers/tuber_f.png diff --git a/graphics/trainers/tuber_f/palette.pal b/graphics/trainers/tuber_f/palette.pal deleted file mode 100644 index b5cb0047a..000000000 --- a/graphics/trainers/tuber_f/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -106 74 74 -139 172 213 -90 131 189 -65 90 139 -57 57 57 -213 222 230 -255 230 74 -205 57 82 -238 180 57 -189 131 74 -255 255 255 -0 0 0 diff --git a/graphics/trainers/tuber_m/front.png b/graphics/trainers/tuber_m.png similarity index 100% rename from graphics/trainers/tuber_m/front.png rename to graphics/trainers/tuber_m.png diff --git a/graphics/trainers/tuber_m/palette.pal b/graphics/trainers/tuber_m/palette.pal deleted file mode 100644 index b5cb0047a..000000000 --- a/graphics/trainers/tuber_m/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -106 74 74 -139 172 213 -90 131 189 -65 90 139 -57 57 57 -213 222 230 -255 230 74 -205 57 82 -238 180 57 -189 131 74 -255 255 255 -0 0 0 diff --git a/graphics/trainers/twins/front.png b/graphics/trainers/twins.png similarity index 100% rename from graphics/trainers/twins/front.png rename to graphics/trainers/twins.png diff --git a/graphics/trainers/twins/palette.pal b/graphics/trainers/twins/palette.pal deleted file mode 100644 index 3b162de25..000000000 --- a/graphics/trainers/twins/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -106 74 74 -139 172 213 -90 131 189 -65 90 139 -57 57 57 -213 222 230 -255 230 74 -180 82 98 -238 180 57 -189 131 74 -255 255 255 -0 0 0 diff --git a/graphics/trainers/unused_aqua/front.png b/graphics/trainers/unused_aqua.png similarity index 100% rename from graphics/trainers/unused_aqua/front.png rename to graphics/trainers/unused_aqua.png diff --git a/graphics/trainers/unused_aqua/palette.pal b/graphics/trainers/unused_aqua/palette.pal deleted file mode 100644 index e0323fba1..000000000 --- a/graphics/trainers/unused_aqua/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -106 74 74 -164 197 213 -106 98 139 -65 90 90 -57 57 57 -205 222 189 -156 57 57 -189 156 90 -255 106 98 -205 82 74 -255 255 255 -0 0 0 diff --git a/graphics/trainers/wallace/front.png b/graphics/trainers/wallace.png similarity index 100% rename from graphics/trainers/wallace/front.png rename to graphics/trainers/wallace.png diff --git a/graphics/trainers/wallace/palette.pal b/graphics/trainers/wallace/palette.pal deleted file mode 100644 index eaaed070f..000000000 --- a/graphics/trainers/wallace/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -222 180 148 -189 139 106 -98 57 65 -189 131 255 -148 106 172 -115 131 255 -82 106 180 -197 197 213 -57 74 115 -139 139 164 -57 41 57 -98 57 98 -255 255 255 -0 0 0 diff --git a/graphics/trainers/wally/front.png b/graphics/trainers/wally.png similarity index 100% rename from graphics/trainers/wally/front.png rename to graphics/trainers/wally.png diff --git a/graphics/trainers/wally/palette.pal b/graphics/trainers/wally/palette.pal deleted file mode 100644 index 30e2e2a6c..000000000 --- a/graphics/trainers/wally/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 238 213 -222 180 164 -189 148 115 -123 90 82 -156 148 172 -115 106 131 -189 205 98 -148 172 74 -222 222 230 -98 148 49 -65 106 24 -98 156 222 -180 180 205 -255 255 255 -0 0 0 diff --git a/graphics/trainers/wally/back.png b/graphics/trainers/wally_back.png similarity index 100% rename from graphics/trainers/wally/back.png rename to graphics/trainers/wally_back.png diff --git a/graphics/trainers/wattson/front.png b/graphics/trainers/wattson.png similarity index 100% rename from graphics/trainers/wattson/front.png rename to graphics/trainers/wattson.png diff --git a/graphics/trainers/wattson/palette.pal b/graphics/trainers/wattson/palette.pal deleted file mode 100644 index c8a4e1420..000000000 --- a/graphics/trainers/wattson/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -123 90 82 -164 139 90 -131 106 74 -139 131 106 -82 65 74 -213 213 222 -255 197 90 -189 156 90 -57 41 49 -222 115 131 -255 255 255 -0 0 0 diff --git a/graphics/trainers/winona/front.png b/graphics/trainers/winona.png similarity index 100% rename from graphics/trainers/winona/front.png rename to graphics/trainers/winona.png diff --git a/graphics/trainers/winona/palette.pal b/graphics/trainers/winona/palette.pal deleted file mode 100644 index 62783523b..000000000 --- a/graphics/trainers/winona/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -106 74 74 -172 189 213 -139 156 205 -74 98 148 -49 65 82 -205 213 222 -115 57 123 -255 197 90 -189 123 222 -148 90 172 -255 255 255 -0 0 0 diff --git a/graphics/trainers/young_couple/front.png b/graphics/trainers/young_couple.png similarity index 100% rename from graphics/trainers/young_couple/front.png rename to graphics/trainers/young_couple.png diff --git a/graphics/trainers/young_couple/palette.pal b/graphics/trainers/young_couple/palette.pal deleted file mode 100644 index bba95c19a..000000000 --- a/graphics/trainers/young_couple/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -98 65 57 -148 164 172 -82 123 164 -57 82 106 -32 49 74 -205 213 222 -123 197 156 -90 164 131 -255 98 90 -197 65 65 -106 106 139 -0 0 0 diff --git a/graphics/trainers/youngster/front.png b/graphics/trainers/youngster.png similarity index 100% rename from graphics/trainers/youngster/front.png rename to graphics/trainers/youngster.png diff --git a/graphics/trainers/youngster/palette.pal b/graphics/trainers/youngster/palette.pal deleted file mode 100644 index f91520d9b..000000000 --- a/graphics/trainers/youngster/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -230 180 148 -213 148 115 -123 90 82 -139 197 222 -65 90 148 -49 57 82 -41 57 98 -197 197 238 -255 222 65 -222 172 90 -98 164 222 -49 123 156 -255 255 255 -0 0 0 diff --git a/graphics/unknown/ball.pal b/graphics/unknown/ball.pal deleted file mode 100644 index b4e7ac7ca..000000000 --- a/graphics/unknown/ball.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 106 90 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/unknown/unknown_D07B68.pal b/graphics/unknown/unknown_D07B68.pal deleted file mode 100644 index ca77648e6..000000000 --- a/graphics/unknown/unknown_D07B68.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 0 0 -255 255 255 -255 255 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/unknown/unknown_D1C060.pal b/graphics/unknown/unknown_D1C060.pal deleted file mode 100644 index 0b2590f44..000000000 --- a/graphics/unknown/unknown_D1C060.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -222 255 255 -0 65 148 -148 65 148 -255 255 0 -255 255 255 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/unused/basic_frame.pal b/graphics/unused/basic_frame.pal deleted file mode 100644 index 70ff9b632..000000000 --- a/graphics/unused/basic_frame.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -106 123 164 -205 205 205 -255 255 255 -164 164 164 -0 0 0 -172 0 0 -222 0 0 -197 74 0 -255 24 0 -205 164 106 -255 222 164 -255 131 0 -255 255 255 -123 238 90 -131 172 246 diff --git a/graphics/unused/cherry.pal b/graphics/unused/cherry.pal deleted file mode 100644 index 01acf52c9..000000000 --- a/graphics/unused/cherry.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -148 246 246 -255 255 123 -246 180 98 -246 106 74 -246 41 49 -213 49 41 -180 57 32 -148 65 24 -115 82 24 -189 238 131 -156 205 115 -123 172 98 -90 139 82 -115 90 74 -82 90 49 -57 98 32 diff --git a/graphics/unused/color_frames.pal b/graphics/unused/color_frames.pal deleted file mode 100644 index 56bf2a29c..000000000 --- a/graphics/unused/color_frames.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -205 255 255 -106 123 164 -205 205 205 -255 255 255 -164 164 164 -0 0 0 -172 0 0 -222 0 0 -197 74 0 -255 24 0 -205 164 106 -255 222 164 -255 131 0 -255 255 255 -123 238 90 -131 172 246 diff --git a/graphics/unused/goosuto.pal b/graphics/unused/goosuto.pal deleted file mode 100644 index 4315453b8..000000000 --- a/graphics/unused/goosuto.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -222 255 255 -0 65 148 -148 65 148 -255 255 0 -255 255 255 -255 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/unused/line_sketch.pal b/graphics/unused/line_sketch.pal deleted file mode 100644 index dc1d51763..000000000 --- a/graphics/unused/line_sketch.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -205 255 255 -255 255 255 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/unused/numbers.pal b/graphics/unused/numbers.pal deleted file mode 100644 index 3955aa77a..000000000 --- a/graphics/unused/numbers.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -74 65 82 -255 255 255 -222 222 222 -172 172 197 -255 0 0 -0 0 255 -255 255 0 -0 197 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -255 164 131 diff --git a/graphics/unused/old_beatup.pal b/graphics/unused/old_beatup.pal deleted file mode 100644 index 31c43515e..000000000 --- a/graphics/unused/old_beatup.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -106 148 139 -0 0 0 -82 82 82 -164 164 164 -255 255 255 -213 213 164 -180 172 82 -148 131 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/unused/old_charmap.pal b/graphics/unused/old_charmap.pal deleted file mode 100644 index cbcd5de4d..000000000 --- a/graphics/unused/old_charmap.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -255 255 255 -24 0 0 -41 0 0 -255 255 255 -0 0 0 -255 255 255 -255 65 0 -0 0 0 -255 0 0 -255 24 0 -255 65 0 -255 98 0 -255 131 0 -255 180 0 -255 222 0 -255 255 255 diff --git a/graphics/unused/shadow.pal b/graphics/unused/shadow.pal deleted file mode 100644 index 72d9b7406..000000000 --- a/graphics/unused/shadow.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -238 238 238 -255 255 255 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/unused/water_splash.pal b/graphics/unused/water_splash.pal deleted file mode 100644 index ada1391df..000000000 --- a/graphics/unused/water_splash.pal +++ /dev/null @@ -1,259 +0,0 @@ -JASC-PAL -0100 -256 -0 0 0 -255 255 255 -205 255 255 -156 255 255 -106 255 255 -57 255 255 -8 255 255 -8 205 255 -8 156 255 -8 106 255 -8 57 255 -8 8 255 -8 8 106 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -255 255 255 -205 255 255 -156 255 255 -106 255 255 -57 255 255 -8 255 255 -8 205 255 -8 156 255 -8 106 255 -8 57 255 -8 8 255 -8 8 106 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/include/bard_music.h b/include/bard_music.h new file mode 100644 index 000000000..529fd50f8 --- /dev/null +++ b/include/bard_music.h @@ -0,0 +1,31 @@ +#ifndef GUARD_BARD_MUSIC_H +#define GUARD_BARD_MUSIC_H + +struct BardSound; + +struct BardPhoneme +{ + /*0x00*/ u16 sound; + /*0x02*/ u16 length; + /*0x04*/ s16 pitch; + /*0x06*/ u16 volume; +}; + +struct BardSong +{ + /*0x00*/ u8 currWord; + /*0x01*/ u8 currPhoneme; + /*0x02*/ u8 phonemeTimer; + /*0x03*/ u8 state; + /*0x04*/ s16 var04; + /*0x06*/ u16 volume; + /*0x08*/ s16 pitch; + /*0x0A*/ s16 voiceInflection; + /*0x0C*/ u16 lyrics[6]; + /*0x18*/ struct BardPhoneme phonemes[6]; +}; + +const struct BardSound *GetWordSounds(u16 arg0, u16 arg1); +s32 GetWordPhonemes(struct BardSong *dest, const struct BardSound *src, u16 arg2); + +#endif // GUARD_BARD_MUSIC_H diff --git a/include/battle.h b/include/battle.h index d4cb53689..f973849b7 100644 --- a/include/battle.h +++ b/include/battle.h @@ -19,103 +19,179 @@ #define BATTLE_TYPE_LEGENDARY 0x2000 #define BATTLE_TYPE_REGI 0x4000 +#define BATTLE_TYPE_LINK_DOUBLE (BATTLE_TYPE_MULTI | BATTLE_TYPE_TRAINER | BATTLE_TYPE_LINK | BATTLE_TYPE_DOUBLE) + +#define BATTLE_WON 0x1 +#define BATTLE_LOST 0x2 +#define BATTLE_DREW 0x3 +#define BATTLE_RAN 0x4 +#define BATTLE_PLAYER_TELEPORTED 0x5 +#define BATTLE_POKE_FLED 0x6 +#define BATTLE_CAUGHT 0x7 +#define BATTLE_OPPONENT_TELEPORTED 0xA + #define AI_ACTION_DONE 0x0001 #define AI_ACTION_FLEE 0x0002 -#define AI_ACTION_WATCH 0x0004 -#define AI_ACTION_DO_NOT_ATTACK 0x0008 +#define AI_ACTION_WATCH 0x0004 +#define AI_ACTION_DO_NOT_ATTACK 0x0008 #define AI_ACTION_UNK5 0x0010 #define AI_ACTION_UNK6 0x0020 #define AI_ACTION_UNK7 0x0040 #define AI_ACTION_UNK8 0x0080 -#define STATUS_SLEEP 0x7 -#define STATUS_POISON 0x8 -#define STATUS_BURN 0x10 -#define STATUS_FREEZE 0x20 -#define STATUS_PARALYSIS 0x40 -#define STATUS_TOXIC_POISON 0x80 +#define STATUS_SLEEP 0x7 +#define STATUS_POISON 0x8 +#define STATUS_BURN 0x10 +#define STATUS_FREEZE 0x20 +#define STATUS_PARALYSIS 0x40 +#define STATUS_TOXIC_POISON 0x80 +#define STATUS_TOXIC_COUNTER 0xF00 + +#define STATUS_PSN_ANY ((STATUS_POISON | STATUS_TOXIC_POISON)) +#define STATUS_ANY ((STATUS_SLEEP | STATUS_POISON | STATUS_BURN | STATUS_FREEZE | STATUS_PARALYSIS | STATUS_TOXIC_POISON)) #define STATUS2_CONFUSION 0x00000007 +#define STATUS2_FLINCHED 0x00000008 #define STATUS2_UPROAR 0x00000070 +#define STATUS2_BIDE 0x00000300 //two bits 0x100 0x200 #define STATUS2_LOCK_CONFUSE 0x00000C00 #define STATUS2_MULTIPLETURNS 0x00001000 #define STATUS2_WRAPPED 0x0000E000 +#define STATUS2_INFATUATION 0x000F0000 #define STATUS2_FOCUS_ENERGY 0x00100000 #define STATUS2_TRANSFORMED 0x00200000 #define STATUS2_RECHARGE 0x00400000 #define STATUS2_RAGE 0x00800000 #define STATUS2_SUBSTITUTE 0x01000000 +#define STATUS2_DESTINY_BOND 0x02000000 #define STATUS2_ESCAPE_PREVENTION 0x04000000 #define STATUS2_NIGHTMARE 0x08000000 #define STATUS2_CURSED 0x10000000 #define STATUS2_FORESIGHT 0x20000000 +#define STATUS2_DEFENSE_CURL 0x40000000 +#define STATUS2_TORMENT 0x80000000 -#define STATUS3_LEECHSEED_RECEIVER 0x3 //two bits for the bank that gets hp +#define STATUS3_LEECHSEED_BANK 0x3 #define STATUS3_LEECHSEED 0x4 #define STATUS3_ALWAYS_HITS 0x18 //two bits #define STATUS3_PERISH_SONG 0x20 #define STATUS3_ON_AIR 0x40 #define STATUS3_UNDERGROUND 0x80 #define STATUS3_MINIMIZED 0x100 -#define STATUS3_CHARGED_UP 0x200 #define STATUS3_ROOTED 0x400 +#define STATUS3_CHARGED_UP 0x200 +#define STATUS3_YAWN 0x1800 //two bits +#define STATUS3_IMPRISIONED 0x2000 #define STATUS3_GRUDGE 0x4000 #define STATUS3_CANT_SCORE_A_CRIT 0x8000 #define STATUS3_MUDSPORT 0x10000 #define STATUS3_WATERSPORT 0x20000 #define STATUS3_UNDERWATER 0x40000 +#define STATUS3_INTIMIDATE_POKES 0x80000 +#define STATUS3_TRACE 0x100000 -#define HITMARKER_x20 0x0000020 -#define HITMARKER_DESTINYBOND 0x0000040 -#define HITMARKER_NO_ANIMATIONS 0x0000080 -#define HITMARKER_IGNORE_SUBSTITUTE 0x0000100 -#define HITMARKER_NO_ATTACKSTRING 0x0000200 -#define HITMARKER_ATTACKSTRING_PRINTED 0x0000400 -#define HITMARKER_NO_PPDEDUCT 0x0000800 -#define HITMARKER_IGNORE_SAFEGUARD 0x0002000 -#define HITMARKER_SYNCHRONISE_EFFECT 0x0004000 -#define HITMARKER_IGNORE_ON_AIR 0x0010000 -#define HITMARKER_IGNORE_UNDERGROUND 0x0020000 -#define HITMARKER_IGNORE_UNDERWATER 0x0040000 -#define HITMARKER_x80000 0x0080000 -#define HITMARKER_x100000 0x0100000 -#define HITMARKER_x400000 0x0400000 -#define HITMARKER_x800000 0x0800000 -#define HITMARKER_GRUDGE 0x1000000 -#define HITMARKER_OBEYS 0x2000000 +#define STATUS3_SEMI_INVULNERABLE ((STATUS3_UNDERGROUND | STATUS3_ON_AIR | STATUS3_UNDERWATER)) + +#define HITMARKER_x20 0x00000020 +#define HITMARKER_DESTINYBOND 0x00000040 +#define HITMARKER_NO_ANIMATIONS 0x00000080 +#define HITMARKER_IGNORE_SUBSTITUTE 0x00000100 +#define HITMARKER_NO_ATTACKSTRING 0x00000200 +#define HITMARKER_ATTACKSTRING_PRINTED 0x00000400 +#define HITMARKER_NO_PPDEDUCT 0x00000800 +#define HITMARKER_PURSUIT_TRAP 0x00001000 +#define HITMARKER_IGNORE_SAFEGUARD 0x00002000 +#define HITMARKER_SYNCHRONISE_EFFECT 0x00004000 +#define HITMARKER_IGNORE_ON_AIR 0x00010000 +#define HITMARKER_IGNORE_UNDERGROUND 0x00020000 +#define HITMARKER_IGNORE_UNDERWATER 0x00040000 +#define HITMARKER_UNABLE_TO_USE_MOVE 0x00080000 +#define HITMARKER_x100000 0x00100000 +#define HITMARKER_x200000 0x00200000 +#define HITMARKER_x400000 0x00400000 +#define HITMARKER_x800000 0x00800000 +#define HITMARKER_GRUDGE 0x01000000 +#define HITMARKER_OBEYS 0x02000000 +#define HITMARKER_x8000000 0x08000000 #define HITMARKER_FAINTED(bank) ((gBitTable[bank] << 0x1C)) #define HITMARKER_UNK(bank) ((0x10000000 << bank)) +#define SIDE_STATUS_REFLECT (1 << 0) +#define SIDE_STATUS_LIGHTSCREEN (1 << 1) +#define SIDE_STATUS_X4 (1 << 2) +#define SIDE_STATUS_SPIKES (1 << 4) +#define SIDE_STATUS_SAFEGUARD (1 << 5) +#define SIDE_STATUS_FUTUREATTACK (1 << 6) +#define SIDE_STATUS_MIST (1 << 8) +#define SIDE_STATUS_SPIKES_DAMAGED (1 << 9) + +#define ABILITYEFFECT_ON_SWITCHIN 0x0 +#define ABILITYEFFECT_ENDTURN 0x1 +#define ABILITYEFFECT_MOVES_BLOCK 0x2 +#define ABILITYEFFECT_ABSORBING 0x3 +#define ABILITYEFFECT_CONTACT 0x4 +#define ABILITYEFFECT_IMMUNITY 0x5 +#define ABILITYEFFECT_FORECAST 0x6 +#define ABILITYEFFECT_SYNCHRONIZE 0x7 +#define ABILITYEFFECT_ATK_SYNCHRONIZE 0x8 +#define ABILITYEFFECT_INTIMIDATE1 0x9 +#define ABILITYEFFECT_INTIMIDATE2 0xA +#define ABILITYEFFECT_TRACE 0xB +#define ABILITYEFFECT_CHECK_OTHER_SIDE 0xC +#define ABILITYEFFECT_CHECK_BANK_SIDE 0xD +#define ABILITYEFFECT_FIELD_SPORT 0xE +#define ABILITYEFFECT_CHECK_FIELD_EXCEPT_BANK 0xF +#define ABILITYEFFECT_COUNT_OTHER_SIZE 0x10 +#define ABILITYEFFECT_COUNT_BANK_SIDE 0x11 +#define ABILITYEFFECT_COUNT_ON_FIELD 0x12 +#define ABILITYEFFECT_CHECK_ON_FIELD 0x13 + +#define WEATHER_HAS_EFFECT ((!AbilityBattleEffects(ABILITYEFFECT_CHECK_ON_FIELD, 0, ABILITY_CLOUD_NINE, 0, 0) && !AbilityBattleEffects(ABILITYEFFECT_CHECK_ON_FIELD, 0, ABILITY_AIR_LOCK, 0, 0))) + +#define MOVESTATUS_MISSED (1 << 0) +#define MOVESTATUS_SUPEREFFECTIVE (1 << 1) +#define MOVESTATUS_NOTVERYEFFECTIVE (1 << 2) +#define MOVESTATUS_NOTAFFECTED (1 << 3) +#define MOVESTATUS_ONEHITKO (1 << 4) +#define MOVESTATUS_FAILED (1 << 5) +#define MOVESTATUS_ENDURED (1 << 6) +#define MOVESTATUS_HUNGON (1 << 7) + +#define MOVESTATUS_NOEFFECT ((MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED | MOVESTATUS_FAILED)) + #define MAX_TRAINER_ITEMS 4 #define MAX_MON_MOVES 4 #define MAX_BANKS_BATTLE 4 -#define weather_rain 1 -#define weather_downpour 2 -#define weather_permament_rain 4 -#define WEATHER_RAINY ((weather_rain | weather_downpour | weather_permament_rain)) - -#define weather_sandstorm 8 -#define weather_permament_sandstorm 0x10 -#define WEATHER_SANDSTORMY ((weather_sandstorm | weather_permament_sandstorm)) - -#define weather_sun 0x20 -#define weather_permament_sun 0x40 -#define WEATHER_SUNNY ((weather_sun | weather_permament_sun)) - -#define weather_hail 0x80 - -// needed to match the hack that is get_item, thanks cam, someone else clean this up later. -extern u8 unk_2000000[]; +#define WEATHER_RAIN_TEMPORARY (1 << 0) +#define WEATHER_RAIN_DOWNPOUR (1 << 1) +#define WEATHER_RAIN_PERMANENT (1 << 2) +#define WEATHER_RAIN_ANY ((WEATHER_RAIN_TEMPORARY | WEATHER_RAIN_DOWNPOUR | WEATHER_RAIN_PERMANENT)) +#define WEATHER_SANDSTORM_TEMPORARY (1 << 3) +#define WEATHER_SANDSTORM_PERMANENT (1 << 4) +#define WEATHER_SANDSTORM_ANY ((WEATHER_SANDSTORM_TEMPORARY | WEATHER_SANDSTORM_PERMANENT)) +#define WEATHER_SUN_TEMPORARY (1 << 5) +#define WEATHER_SUN_PERMANENT (1 << 6) +#define WEATHER_SUN_ANY ((WEATHER_SUN_TEMPORARY | WEATHER_SUN_PERMANENT)) +#define WEATHER_HAIL (1 << 7) enum { - WEATHER_SUN, - WEATHER_RAIN, - WEATHER_SANDSTORM, - WEATHER_HAIL, + BATTLE_TERRAIN_GRASS, + BATTLE_TERRAIN_LONG_GRASS, + BATTLE_TERRAIN_SAND, + BATTLE_TERRAIN_UNDERWATER, + BATTLE_TERRAIN_WATER, + BATTLE_TERRAIN_POND, + BATTLE_TERRAIN_MOUNTAIN, + BATTLE_TERRAIN_CAVE, + BATTLE_TERRAIN_BUILDING, + BATTLE_TERRAIN_PLAIN, }; +// needed to match the hack that is get_item, thanks cam, someone else clean this up later. +extern u8 unk_2000000[]; + struct Trainer { /*0x00*/ u8 partyFlags; @@ -164,32 +240,30 @@ struct BattleStruct /* 0x2000000 */ u8 filler0[0x15DDE]; /*0x15DDE*/ u8 unk15DDE; /*0x15DDF*/ u8 unk15DDF; - /*0x15DE0*/ u8 filler15DE0[0x222]; - /*0x16002*/ u8 AnimTurn; - /*0x16003*/ u8 ScriptingActive; - /*0x16004*/ u8 WrappedMove1[4]; - /*0x16008*/ u8 WrappedMove2[4]; + /*0x15DE0*/ u8 filler15DE0[0x220]; + /*0x16000*/ u8 turnEffectsTracker; + /*0x16001*/ u8 turnEffectsBank; + /*0x16002*/ u8 animTurn; + /*0x16003*/ u8 scriptingActive; + /*0x16004*/ u8 wrappedMove[8]; /*0x1600C*/ u8 cmd49StateTracker; /*0x1600D*/ u8 unk1600D; - /*0x1600E*/ u8 unk1600E; + /*0x1600E*/ u8 turncountersTracker; /*0x1600F*/ u8 atk23StateTracker; - /*0x16010*/ u8 unk16010; - /*0x16011*/ u8 unk16011; - /*0x16012*/ u8 unk16012; - /*0x16013*/ u8 unk16013; + /*0x16010*/ u8 moveTarget[4]; /*0x16014*/ u8 unk16014; /*0x16015*/ u8 unk16015; /*0x16016*/ u8 unk16016; /*0x16017*/ u8 unk16017; /*0x16018*/ u8 expGetterID; /*0x16019*/ u8 unk16019; - /*0x1601A*/ u8 unk1601A; + /*0x1601A*/ u8 atk5A_StateTracker; //also atk5B, statetracker /*0x1601B*/ u8 wildVictorySong; - /*0x1601C*/ u8 DynamicMoveType; + /*0x1601C*/ u8 dynamicMoveType; /*0x1601D*/ u8 unk1601D; /*0x1601E*/ u8 statChanger; - /*0x1601F*/ u8 DmgMultiplier; - /*0x16020*/ u8 WrappedBy[4]; + /*0x1601F*/ u8 dmgMultiplier; + /*0x16020*/ u8 wrappedBy[4]; /*0x16024*/ u8 unk16024; /*0x16025*/ u8 unk16025; /*0x16026*/ u8 unk16026; @@ -240,48 +314,21 @@ struct BattleStruct /* 0x2000000 */ /*0x16053*/ u8 unk16053; /*0x16054*/ u8 unk16054; /*0x16055*/ u8 unk16055; - /*0x16056*/ u8 unk16056; + /*0x16056*/ u8 moneyMultiplier; /*0x16057*/ u8 unk16057; /*0x16058*/ u8 unk16058; - /*0x16059*/ u8 unk16059; + /*0x16059*/ u8 sub80173A4_Tracker; /*0x1605A*/ u8 unk1605A; /*0x1605B*/ u8 unk1605B; /*0x1605C*/ u16 exp; /*0x1605E*/ u8 unk1605E; /*0x1605F*/ u8 sentInPokes; /*0x16060*/ u8 unk16060[4]; - /*0x16064*/ u8 unk16064; - /*0x16065*/ u8 unk16065; - /*0x16066*/ u8 unk16066; - /*0x16067*/ u8 unk16067; - /*0x16068*/ u8 unk16068; - /*0x16069*/ u8 unk16069; - /*0x1606A*/ u8 unk1606A; - /*0x1606B*/ u8 unk1606B; - /*0x1606C*/ u8 unk1606C; - /*0x1606D*/ u8 unk1606D; - /*0x1606E*/ u8 unk1606E; - /*0x1606F*/ u8 unk1606F; - /*0x16070*/ u8 unk16070; - /*0x16071*/ u8 unk16071; - /*0x16072*/ u8 unk16072; - /*0x16073*/ u8 unk16073; - /*0x16074*/ u8 unk16074; - /*0x16075*/ u8 unk16075; - /*0x16076*/ u8 unk16076; - /*0x16077*/ u8 unk16077; + /*0x16064*/ u8 unk16064[4]; + /*0x16068*/ u8 unk16068[4]; + /*0x1606C*/ u8 unk1606C[4][3]; /*0x16078*/ u8 unk16078; - /*0x16079*/ u8 unk16079; - /*0x1607A*/ u8 unk1607A; - /*0x1607B*/ u8 unk1607B; - /*0x1607C*/ u8 unk1607C; - /*0x1607D*/ u8 unk1607D; - /*0x1607E*/ u8 unk1607E; - /*0x1607F*/ u8 unk1607F; - /*0x16080*/ u8 unk16080; - /*0x16081*/ u8 unk16081; - /*0x16082*/ u8 unk16082; - /*0x16083*/ u8 unk16083; + /*0x16079*/ u8 caughtNick[11]; /*0x16084*/ u8 unk16084; /*0x16085*/ u8 unk16085; /*0x16086*/ u8 unk16086; @@ -291,10 +338,7 @@ struct BattleStruct /* 0x2000000 */ /*0x1608A*/ u8 unk1608A; /*0x1608B*/ u8 unk1608B; /*0x1608C*/ u8 ChosenMoveID[4]; - /*0x16090*/ u8 unk16090; - /*0x16091*/ u8 unk16091; - /*0x16092*/ u8 unk16092; - /*0x16093*/ u8 unk16093; + /*0x16090*/ s32 bideDmg; /*0x16094*/ u8 unk16094; /*0x16095*/ u8 unk16095; /*0x16096*/ u8 unk16096; @@ -302,17 +346,17 @@ struct BattleStruct /* 0x2000000 */ /*0x16098*/ u8 unk16098; /*0x16099*/ u8 unk16099; /*0x1609A*/ u8 unk1609a; - /*0x1609B*/ u8 unk1609b; - /*0x1609C*/ u8 unk1609C; + /*0x1609B*/ u8 castformToChangeInto; + /*0x1609C*/ u8 atk6C_statetracker; /*0x1609D*/ u8 unk1609D; /*0x1609E*/ u8 unk1609E; /*0x1609F*/ u8 unk1609F; - /*0x160A0*/ u8 unk160a0; - /*0x160A1*/ u8 AnimTargetsHit; + /*0x160A0*/ u8 stringMoveType; + /*0x160A1*/ u8 animTargetsHit; /*0x160A2*/ u8 expGetterBank; /*0x160A3*/ u8 unk160A3; - /*0x160A4*/ u8 AnimArg1; - /*0x160A5*/ u8 AnimArg2; + /*0x160A4*/ u8 animArg1; + /*0x160A5*/ u8 animArg2; /*0x160A6*/ u8 unk160A6; /*0x160A7*/ u8 unk160A7; /*0x160A8*/ u8 unk160A8; @@ -335,12 +379,9 @@ struct BattleStruct /* 0x2000000 */ /*0x160B9*/ u8 unk160B9; /*0x160BA*/ u8 unk160Ba; /*0x160BB*/ u8 unk160Bb; - /*0x160BC*/ u8 unk160BC; - /*0x160BD*/ u8 unk160BD; - /*0x160BE*/ u8 unk160BE; - /*0x160BF*/ u8 unk160BF; + /*0x160BC*/ u16 HP_OnSwitchout[2]; /*0x160C0*/ u8 unk160C0; - /*0x160C1*/ u8 unk160C1; + /*0x160C1*/ u8 hpScale; /*0x160C2*/ u8 unk160C2; /*0x160C3*/ u8 unk160C3; /*0x160C4*/ u8 unk160C4; @@ -349,69 +390,157 @@ struct BattleStruct /* 0x2000000 */ /*0x160C7*/ u8 unk160C7; /*0x160C8*/ u8 unk160C8; /*0x160C9*/ u8 unk160C9; - /*0x160CA*/ u8 SynchroniseEffect; + /*0x160CA*/ u8 synchroniseEffect; /*0x160CB*/ u8 linkPlayerIndex; - /*0x160CC*/ u16 UsedHeldItems[4]; - u8 filler2[0x72E]; + /*0x160CC*/ u16 usedHeldItems[4]; + /*0x160D4*/ u8 unk160D4; + /*0x160D5*/ u8 unk160D5; + /*0x160D6*/ u8 unk160D6; + /*0x160D7*/ u8 unk160D7; + /*0x160D8*/ u8 unk160D8; + /*0x160D9*/ u8 unk160D9; + /*0x160DA*/ u8 unk160DA; + /*0x160DB*/ u8 unk160DB; + /*0x160DC*/ u8 unk160DC; + /*0x160DD*/ u8 intimidateBank; + /*0x160DE*/ u8 unk160DE; + /*0x160DF*/ u8 unk160DF; + /*0x160E0*/ u8 unk160E0; + /*0x160E1*/ u8 unk160E1; + /*0x160E2*/ u8 unk160E2; + /*0x160E3*/ u8 unk160E3; + /*0x160E4*/ u8 unk160E4; + /*0x160E5*/ u8 unk160E5; + /*0x160E6*/ u8 unk160E6; + /*0x160E7*/ u8 atkCancellerTracker; + /*0x160E8*/ u8 unk160E8; + /*0x160E9*/ u8 unk160E9; + /*0x160EA*/ u8 unk160EA; + /*0x160EB*/ u8 unk160EB; + /*0x160EC*/ u8 unk160EC; + /*0x160ED*/ u8 unk160ED; + /*0x160EE*/ u8 unk160EE; + /*0x160EF*/ u8 unk160EF; + /*0x160F0*/ u8 unk160F0; + /*0x160F1*/ u8 unk160F1; + /*0x160F2*/ u8 unk160F2; + /*0x160F3*/ u8 unk160F3; + /*0x160F4*/ u8 unk160F4; + /*0x160F5*/ u8 unk160F5; + /*0x160F6*/ u8 unk160F6; + /*0x160F7*/ u8 unk160F7; + /*0x160F8*/ u8 unk160F8; + /*0x160F9*/ u8 unk160F9; + /*0x160FA*/ u8 unk160FA; + /*0x160FB*/ u8 unk160FB; + /*0x160FC*/ u8 turnSideTracker; + /*0x160FD*/ u8 unk160FD; + /*0x160FE*/ u8 unk160FE; + /*0x160FF*/ u8 unk160FF; + /*0x16100*/ u8 unk16100; + /*0x16101*/ u8 unk16101; + /*0x16102*/ u8 unk16102; + /*0x16103*/ u8 unk16103; + /*0x16104*/ u8 unk16104; + /*0x16105*/ u8 unk16105; + /*0x16106*/ u8 unk16106; + /*0x16107*/ u8 unk16107; + /*0x16108*/ u8 unk16108; + /*0x16109*/ u8 unk16109; + /*0x1610A*/ u8 unk1610A; + /*0x1610B*/ u8 unk1610B; + /*0x1610C*/ u8 unk1610C; + /*0x1610D*/ u8 unk1610D; + /*0x1610E*/ u8 unk1610E; + /*0x1610F*/ u8 unk1610F; + /*0x16110*/ u8 sub80170DC_Tracker; + /*0x16111*/ u8 sub80170DC_Bank; + /*0x16112*/ u8 unk16112; + /*0x16113*/ u8 unk16113; + /*0x16114*/ u8 unk16114; + /*0x16115*/ u8 unk16115; + /*0x16116*/ u8 unk16116; + /*0x16117*/ u8 unk16117; + /*0x16118*/ u8 unk16118; + /*0x16119*/ u8 unk16119; + /*0x1611A*/ u8 unk1611A; + /*0x1611B*/ u8 unk1611B; + /*0x1611C*/ u8 unk1611C; + /*0x1611D*/ u8 unk1611D; + /*0x1611E*/ u8 unk1611E; + /*0x1611F*/ u8 unk1611F; + + //u8 filler2[0x72E]; /* 0x16A00 */ struct UnkBattleStruct1 unk_2016A00_2; }; struct DisableStruct { - /*0x00*/ u8 filler0[0x3]; - /*0x04*/ u16 DisabledMove; - /*0x06*/ u16 EncoredMove; - /*0x08*/ u8 ProtectUses; - /*0x09*/ u8 StockpileCounter; - /*0x0A*/ u8 SubstituteHP; - u8 fillerB[4]; - u8 unkF_0:4; - u8 unkF_4:4; - u8 filler10[3]; - /*0x13*/ u8 taunt:4; - /*0x13*/ u8 unkC:4; - /*0x14*/ u8 BankPreventingEscape; - /*0x15*/ u8 BankWithSureHit; - /*0x16*/ u8 IsFirstTurn; + /*0x00*/ u32 unk0; + /*0x04*/ u16 disabledMove; + /*0x06*/ u16 encoredMove; + /*0x08*/ u8 protectUses; + /*0x09*/ u8 stockpileCounter; + /*0x0A*/ u8 substituteHP; + /*0x0B*/ u8 disableTimer1 : 4; + /*0x0B*/ u8 disableTimer2 : 4; + /*0x0C*/ u8 encoredMovePos; + /*0x0D*/ u8 unkD; + /*0x0E*/ u8 encoreTimer1 : 4; + /*0x0E*/ u8 encoreTimer2 : 4; + /*0x0F*/ u8 perishSong1 : 4; + /*0x0F*/ u8 perishSong2 : 4; + /*0x10*/ u8 furyCutterCounter; + /*0x11*/ u8 rolloutTimer1 : 4; + /*0x11*/ u8 rolloutTimer2 : 4; + /*0x12*/ u8 chargeTimer1 : 4; + /*0x12*/ u8 chargeTimer2 : 4; + /*0x13*/ u8 tauntTimer1:4; + /*0x13*/ u8 tauntTimer2:4; + /*0x14*/ u8 bankPreventingEscape; + /*0x15*/ u8 bankWithSureHit; + /*0x16*/ u8 isFirstTurn; /*0x17*/ u8 unk17; - /*0x18*/ u8 TruantCounter; - /*0x19*/ u8 RechargeCounter; + /*0x18*/ u8 truantCounter : 1; + /*0x18*/ u8 unk18_a : 3; + /*0x18*/ u8 unk18_b : 4; + /*0x19*/ u8 rechargeCounter; /*0x1A*/ u8 unk1A[2]; }; struct BattleResults { - u8 PlayerFaintCounter; // 0x0 - u8 OpponentFaintCounter; // 0x1 + u8 playerFaintCounter; // 0x0 + u8 opponentFaintCounter; // 0x1 u8 unk2; // 0x2 u8 unk3; // 0x3 u8 unk4; // 0x4 u8 unk5_0:1; // 0x5 u8 unk5_1:1; // 0x5 - u16 Poke1Species; // 0x6 - u8 PokeString1[10]; // 0x8 + u16 poke1Species; // 0x6 + u8 pokeString1[10]; // 0x8 u8 unk12; - u8 BattleTurnCounter; // 0x13 - u8 PokeString2[10]; // 0x14 + u8 battleTurnCounter; // 0x13 + u8 pokeString2[10]; // 0x14 u8 filler1E[2]; - u16 LastOpponentSpecies; // 0x20 - u16 LastUsedMove; // 0x22 - u16 OpponentMove; // 0x24 - u16 OpponentSpecies; // 0x26 - u16 CaughtPoke; // 0x28 - u8 CaughtNick[10]; // 0x2A + u16 lastOpponentSpecies; // 0x20 + u16 lastUsedMove; // 0x22 + u16 opponentMove; // 0x24 + u16 opponentSpecies; // 0x26 + u16 caughtPoke; // 0x28 + u8 caughtNick[10]; // 0x2A u8 filler34[2]; - u8 unk36[10]; + u8 unk36[10]; // usedBalls? }; struct Struct2017800 { - u8 unk0_0:1; + u8 invisible:1; u8 unk0_1:1; - u8 unk0_2:1; + u8 substituteSprite:1; u8 unk0_3:1; u8 unk0_4:1; - u16 unk2; + u16 transformedSpecies; }; struct Struct2017810 @@ -454,34 +583,34 @@ struct Struct20238C8 struct ProtectStruct { /*field0*/ - u32 Protected:1; - u32 Endured:1; - u32 OnlyStruggle:1; - u32 HelpingHand:1; - u32 BounceMove:1; - u32 StealMove:1; - u32 Flag0Unknown:1; - u32 PrlzImmobility:1; + u32 protected:1; + u32 endured:1; + u32 onlyStruggle:1; + u32 helpingHand:1; + u32 bounceMove:1; + u32 stealMove:1; + u32 flag0Unknown:1; + u32 prlzImmobility:1; /*field1*/ - u32 ConfusionSelfDmg:1; - u32 NotEffective:1; - u32 ChargingTurn:1; - u32 FleeFlag:2; //for RunAway and Smoke Ball - u32 UsedImprisionedMove:1; - u32 LoveImmobility:1; - u32 UsedDisabledMove:1; + u32 confusionSelfDmg:1; + u32 notEffective:1; + u32 chargingTurn:1; + u32 fleeFlag:2; //for RunAway and Smoke Ball + u32 usedImprisionedMove:1; + u32 loveImmobility:1; + u32 usedDisabledMove:1; /*field2*/ - u32 UsedTauntedMove:1; - u32 Flag2Unknown:1; - u32 FlinchImmobility:1; - u32 NotFirstStrike:1; - u32 Free : 4; + u32 usedTauntedMove:1; + u32 flag2Unknown:1; + u32 flinchImmobility:1; + u32 notFirstStrike:1; + u32 free : 4; /*field3*/ u32 field3 : 8; - u32 PhysicalDmg; - u32 SpecialDmg; - u8 PhysicalBank; - u8 SpecialBank; + u32 physicalDmg; + u32 specialDmg; + u8 physicalBank; + u8 specialBank; u16 fieldE; }; @@ -496,9 +625,9 @@ struct SpecialStatus u8 flag40 : 1; u8 focusBanded : 1; u8 field1[3]; - u32 moveturnLostHP; - u32 moveturnlostHP_physical; - u32 moveturnLostHP_special; + s32 moveturnLostHP; + s32 moveturnLostHP_physical; + s32 moveturnLostHP_special; u8 moveturnPhysicalBank; u8 moveturnSpecialBank; u8 field12; @@ -507,18 +636,17 @@ struct SpecialStatus struct sideTimer { - u8 reflectTimer; - u8 reflectBank; - u8 lightscreenTimer; - u8 lightscreenBank; - u8 mistTimer; - u8 mistBank; - u8 safeguardTimer; - u8 safeguardBank; - u8 followmeTimer; - u8 followmeTarget; - u8 spikesAmount; - u8 fieldB; + u8 reflectTimer; //0x0 + u8 lightscreenTimer; //0x1 + u8 mistTimer; //0x2 + u8 field3; //0x3 + u16 field4; //0x4 + u8 spikesAmount; //0x6 + u8 safeguardTimer; //0x7 + u8 followmeTimer; //0x8 + u8 followmeTarget; //0x9 + u8 fieldA; //0xA + u8 fieldB; //0xB }; struct WishFutureKnock @@ -528,9 +656,9 @@ struct WishFutureKnock s32 futureSightDmg[MAX_BANKS_BATTLE]; u16 futureSightMove[MAX_BANKS_BATTLE]; u8 wishCounter[MAX_BANKS_BATTLE]; - u8 wishUserBank[MAX_BANKS_BATTLE]; + u8 wishUserID[MAX_BANKS_BATTLE]; u8 weatherDuration; - u8 knockedOffPokes[2]; + u16 knockedOffPokes; }; extern struct UnkBattleStruct1 unk_2016A00; @@ -546,14 +674,76 @@ extern struct Struct20238C8 gUnknown_020238C8; // TODO: move ewram to global.h extern u8 ewram[]; -#define BATTLE_STRUCT ((struct BattleStruct *) (ewram + 0x00000)) -#define AI_THINKING_STRUCT ((struct AI_ThinkingStruct *)(ewram + 0x16800)) -#define UNK_2016A00_STRUCT ((struct UnkBattleStruct1 *) (ewram + 0x16A00)) -#define AI_STACK ((struct AI_Stack *) (ewram + 0x16C00)) -#define AI_ARRAY_160CC ((struct SmallItemStruct *) (ewram + 0x160CC)) -#define ewram17800 ((struct Struct2017800 *) (ewram + 0x17800)) -#define ewram17810 ((struct Struct2017810 *) (ewram + 0x17810)) -#define ewram17840 (*(struct Struct2017840 *) (ewram + 0x17840)) +#define BATTLE_STRUCT ((struct BattleStruct *) (ewram + 0x00000)) +#define AI_THINKING_STRUCT ((struct AI_ThinkingStruct *)(ewram + 0x16800)) +#define UNK_2016A00_STRUCT ((struct UnkBattleStruct1 *) (ewram + 0x16A00)) +#define AI_STACK ((struct AI_Stack *) (ewram + 0x16C00)) +#define AI_ARRAY_160CC ((struct SmallItemStruct *) (ewram + 0x160CC)) +#define B_BATTLESCRIPTS_STACK ((struct scriptsStack *) (ewram + 0x17110)) +#define B_FUNCTION_STACK ((struct funcStack *) (ewram + 0x17140)) +#define ewram17800 ((struct Struct2017800 *) (ewram + 0x17800)) +#define ewram17810 ((struct Struct2017810 *) (ewram + 0x17810)) +#define ewram17840 (*(struct Struct2017840 *) (ewram + 0x17840)) +#define ewram17000 ((u32 *) (ewram + 0x17100)) + +typedef void (*BattleCmdFunc)(void); + +struct funcStack +{ + void* ptr[8]; + u8 size; +}; + +struct scriptsStack +{ + u8* ptr[8]; + u8 size; +}; + +extern u8 gBattleTextBuff1[]; + +//function declarations of buffer emits +void EmitGetAttributes(u8 buffID, u8 request, u8 c); //0x0 +void Emitcmd1(u8 a, u8 b, u8 c); //0x1 +void EmitSetAttributes(u8 a, u8 request, u8 c, u8 bytes, void *data); //0x2 +void EmitSendOutPoke(u8 a, u8 b, u8 c); //0x5 +void EmitReturnPokeToBall(u8 a, u8 b); //0x6 +void EmitTrainerSlide(u8 a); //0x8 +void Emitcmd10(u8 a); //0xA +void EmitBallThrow(u8 a, u8 shakes); //0xD +//void EmitMoveAnimation(u8 a, u16 move, u8 turn, u16 power, s32 dmg, u8 happiness, void *disable_struct); //0xF +void EmitPrintString(u8 a, u16 stringID); //0x10 +//void EmitPrintStringPlayerOnly(u8 a, u16 stringID); //0x11 +void EmitChoosePokemon(u8 a, u8 b, u8 c, u8 d, u8 *e); //0x16 +//void EmitHealthBarUpdate(u8 a, u16 b); //0x18; Had to declare the second arg as u16 because s16 wont match in atk0b +//void EmitExpBarUpdate(u8 a, u8 b, u16 c); //0x19 +void EmitStatusIconUpdate(u8 a, u32 b, u32 c); //0x1A +void EmitStatusAnimation(u8 a, u8 b, u32 c); //0x1B +void EmitStatusXor(u8 a, u8 b); //0x1C +void EmitHitAnimation(u8 a); //0x29 +void EmitEffectivenessSound(u8 a, u16 sound); //0x2B +void Emitcmd44(u8 a, u16 sound); //0x2C +void EmitFaintingCry(u8 a); //0x2D +void EmitIntroSlide(u8 a, u8 b); //0x2E +void Emitcmd48(u8 a, u8 *b, u8 c); //0x30 +void Emitcmd49(u8 a); //0x31 +void EmitSpriteInvisibility(u8 a, u8 b); //0x33 +void EmitBattleAnimation(u8 a, u8 b, u16 c); //0x34 +void EmitResetActionMoveSelection(u8 a, u8 b); //0x36 +void Emitcmd55(u8 a, u8 b); //0x37 + +#define REQUEST_ALL_BATTLE 0x0 +#define REQUEST_SPECIES_BATTLE 0x1 +#define REQUEST_HELDITEM_BATTLE 0x2 +#define REQUEST_MOVES_PP_BATTLE 0x3 +#define REQUEST_PPMOVE1_BATTLE 0x9 +#define REQUEST_PPMOVE2_BATTLE 0xA +#define REQUEST_PPMOVE3_BATTLE 0xB +#define REQUEST_PPMOVE4_BATTLE 0xC +#define REQUEST_STATUS_BATTLE 0x28 +#define REQUEST_HP_BATTLE 0x2A + +void MarkBufferBankForExecution(u8 bank); extern u8 gBattleTextBuff1[]; @@ -607,29 +797,28 @@ void BattleTurnPassed(void); // asm/battle_2.o void sub_8012324(void); void sub_8012FBC(u8, u8); -u8 b_first_side(u8, u8, u8); +u8 GetWhoStrikesFirst(u8, u8, u8); void TurnValuesCleanUp(u8); void SpecialStatusesClear(void); void sub_80138F0(void); -void MarkBufferBankForExecution(); void sub_80155A4(); -void CancelMultiTurnMoves(u8); +void CancelMultiTurnMoves(u8 bank); void PrepareStringBattle(); void sub_80156DC(); void sub_80157C4(u8 index); // asm/battle_3.o -u8 sub_8015A98(u8, u8, u8); -u8 UpdateTurnCounters(); -u8 TurnBasedEffects(); +u8 CheckMoveLimitations(u8 bank, u8 unusableMoves, u8 check); +u8 UpdateTurnCounters(void); +u8 TurnBasedEffects(void); u8 sub_80170DC(); u8 sub_80173A4(); -u8 AbilityBattleEffects(u8, u8, u8, u8, u16); -u8 sub_801A02C(); +u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 move); +u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn); // asm/battle_4.o void AI_CalcDmg(u8, u8); -void TypeCalc(u16, u8, u8); +u8 TypeCalc(u16 move, u8 bank_atk, u8 bank_def); // asm/battle_5.o void nullsub_91(void); diff --git a/include/battle_ai.h b/include/battle_ai.h index 028da2c27..2922da0b3 100644 --- a/include/battle_ai.h +++ b/include/battle_ai.h @@ -23,6 +23,7 @@ enum // battle_ai void BattleAI_SetupAIData(void); +u8 BattleAI_GetAIActionToUse(void); void BattleAI_DoAIProcessing(void); void sub_810745C(void); void AIStackPushVar(u8 *); diff --git a/include/battle_anim.h b/include/battle_anim.h index 48ceece21..2386c515c 100644 --- a/include/battle_anim.h +++ b/include/battle_anim.h @@ -53,14 +53,14 @@ struct UnknownStruct3 }; void DoMoveAnim(const u8 *const moveAnims[], u16 b, u8 c); -bool8 b_side_obj__get_some_boolean(u8 a); +bool8 IsAnimBankSpriteVisible(u8 a); void sub_8076034(u8, u8); bool8 IsContest(void); void battle_anim_clear_some_data(void); void move_anim_8072740(struct Sprite *sprite); void DestroyAnimVisualTask(u8 task); void DestroyAnimVisualTask(u8 task); -bool8 b_side_obj__get_some_boolean(u8); +bool8 IsAnimBankSpriteVisible(u8); u8 IsContest(); diff --git a/include/battle_interface.h b/include/battle_interface.h index 8230c7502..db41ee735 100644 --- a/include/battle_interface.h +++ b/include/battle_interface.h @@ -29,7 +29,7 @@ u8 sub_8044804(u8, const struct BattleInterfaceStruct2 *, u8, u8); void sub_8044CA0(u8); void sub_8045A5C(u8, struct Pokemon *, u8); s32 sub_8045C78(u8, u8, u8, u8); -s16 sub_80460C8(struct BattleInterfaceStruct1 *, int *, void *, int); +s16 sub_80460C8(struct BattleInterfaceStruct1 *, int *, u16 *, int); u8 GetScaledHPFraction(s16, s16, u8); u8 GetHPBarLevel(s16, s16); void sub_80440EC(u8 a, s16 b, u8 c); diff --git a/include/battle_message.h b/include/battle_message.h index da57333a5..3e37a1ccd 100644 --- a/include/battle_message.h +++ b/include/battle_message.h @@ -1,7 +1,23 @@ #ifndef GUARD_BATTLE_MESSAGE_H #define GUARD_BATTLE_MESSAGE_H -void StrCpyDecodeToDisplayedStringBattle(const u8 *); -void StrCpyDecodeBattle(const u8 *, u8 *); +struct StringInfoBattle +{ + u16 currentMove; + u16 lastMove; + u16 lastItem; + u8 lastAbility; + u8 scrActive; + u8 unk1605E; + u8 hpScale; + u8 StringBank; + u8 moveType; + u8 abilities[4]; + u8 textBuffs[3][0x10]; +}; + +void BufferStringBattle(u16 stringID); +u32 StrCpyDecodeToDisplayedStringBattle(const u8* src); +u32 StrCpyDecodeBattle(const u8* src, u8* dst); #endif // GUARD_BATTLE_MESSAGE_H diff --git a/include/battle_party_menu.h b/include/battle_party_menu.h index 71bd2cf51..200b0c653 100644 --- a/include/battle_party_menu.h +++ b/include/battle_party_menu.h @@ -4,6 +4,7 @@ extern u8 unk_2000000[]; #define EWRAM_1609D unk_2000000[0x1609D] -void SetUpBattlePokemonMenu(u8); +void HandleBattlePartyMenu(u8); +bool8 SetUpBattlePartyMenu(void); #endif diff --git a/include/battle_records.h b/include/battle_records.h index f0c1a101b..ac6c3cbdb 100644 --- a/include/battle_records.h +++ b/include/battle_records.h @@ -2,7 +2,8 @@ #define GUARD_BATTLE_RECORDS_H void InitLinkBattleRecords(void); -void PrintLinkBattleWinsLossesDraws(void *); -void PrintLinkBattleRecord(void *, u8); +void UpdateLinkBattleRecords(int id); +void ShowLinkBattleRecords(void); +void ShowBattleTowerRecords(void); #endif // GUARD_BATTLE_RECORDS_H diff --git a/include/battle_setup.h b/include/battle_setup.h index e88aefe6d..444ab5467 100644 --- a/include/battle_setup.h +++ b/include/battle_setup.h @@ -40,72 +40,38 @@ struct TrainerPartyMember3 u16 moves[4]; }; -struct TrainerBattleSpec -{ - void *ptr; - u8 ptrType; -}; - struct TrainerEyeTrainer { - u16 trainerNums[5]; + u16 opponentIDs[5]; // Each of these trainers has 5 increasingly stronger teams. u16 mapGroup; u16 mapNum; }; -//void task01_battle_start(u8 taskId); -//void task_add_01_battle_start(u8 transition, u16 song); -void CheckForSafariZoneAndProceed(void); -void StartBattle_StandardWild(void); -void StartBattle_Roamer(void); -void StartBattle_Safari(void); -//void task_add_01_battle_start_with_music_and_stats(void); -//void StartBattle_WallyTutorial(void); -void StartBattle_ScriptedWild(void); -//void StartBattle_SouthernIsland(void); -//void StartBattle_Rayquaza(void); -//void StartBattle_GroudonKyogre(void); -//void StartBattle_Regi(void); -void HandleWildBattleEnd(void); -void HandleScriptedWildBattleEnd(void); -s8 GetBattleTerrain(void); -//s8 GetBattleTransitionTypeByMap(void); -//u16 GetSumOfPartyMonLevel(u8 numMons); -//u8 GetSumOfEnemyPartyLevel(u16 trainerNum, u8 numMons); -u8 GetWildBattleTransition(void); -u8 GetTrainerBattleTransition(void); -u8 GetBattleTowerBattleTransition(void); -//void ChooseStarter(void); -void CB2_GiveStarter(void); -void CB2_StartFirstBattle(void); -void HandleFirstBattleEnd(void); -//u32 TrainerBattleLoadArg32(u8 *ptr); -//u16 TrainerBattleLoadArg16(u8 *ptr); -//u8 TrainerBattleLoadArg8(u8 *ptr); -//u16 trainerflag_opponent(void); -bool32 battle_exit_is_player_defeat(u32 a1); -//void sub_80822BC(void); -//void TrainerBattleLoadArgs(const struct TrainerBattleSpec *specs, u8 *data); -//void battle_80801F0(void); -u8 *TrainerBattleConfigure(u8 *data); +void BattleSetup_StartWildBattle(void); +void BattleSetup_StartRoamerBattle(void); +void BattleSetup_StartScriptedWildBattle(void); +s8 BattleSetup_GetTerrain(void); +u8 BattleSetup_GetBattleTowerBattleTransition(void); +u8 *BattleSetup_ConfigureTrainerBattle(const u8 *data); void TrainerWantsBattle(u8, u8 *); + bool32 GetTrainerFlagFromScriptPointer(u8 *data); //void sub_8082524(void); -//u8 sub_8082558(void); -//u8 sub_8082564(void); +//u8 ScrSpecial_GetTrainerBattleMode(void); +//u8 ScrSpecial_HasTrainerBeenFought(void); //void sub_808257C(void); //void unref_sub_8082590(void); // unused -u8 trainer_flag_check(u16); +u8 HasTrainerAlreadyBeenFought(u16); void trainer_flag_set(u16); void trainer_flag_clear(u16); -void sub_80825E4(void); +void BattleSetup_StartTrainerBattle(void); void sub_808260C(void); void do_choose_name_or_words_screen(void); -//void sub_80826B0(void); -//void sub_80826D8(void); -u8 *sub_80826E8(void); -u8 *sub_8082700(void); -//void sub_8082718(void); +//void ScrSpecial_StartTrainerEyeRematch(void); +//void ScrSpecial_ShowTrainerIntroSpeech(void); +u8 *BattleSetup_GetScriptAddrAfterBattle(void); +u8 *BattleSetup_GetTrainerPostBattleScript(void); +//void ScrSpecial_ShowTrainerNonBattlingSpeech(void); //void PlayTrainerEncounterMusic(void); //u8 *SanitizeString(u8 *str); u8 *sub_808281C(void); @@ -118,7 +84,7 @@ u8 *sub_8082880(void); //s32 sub_80829A8(const struct TrainerEyeTrainer *trainers, u16 mapGroup, u16 mapNum); //s32 sub_80829E8(const struct TrainerEyeTrainer *trainers, u16 mapGroup, u16 mapNum); //bool8 sub_8082A18(const struct TrainerEyeTrainer *trainers, u16 trainerNum); -//bool8 sub_8082A54(const struct TrainerEyeTrainer *trainers, u16 trainerNum); +//bool8 DoesTrainerEyeTrainerWantRematch(const struct TrainerEyeTrainer *trainers, u16 trainerNum); //u16 sub_8082A90(const struct TrainerEyeTrainer *trainers, u16 trainerNum); //void sub_8082AE4(const struct TrainerEyeTrainer *trainers, u16 trainerNum); //bool8 sub_8082B10(const struct TrainerEyeTrainer *trainers, u16 trainerNum); @@ -130,7 +96,7 @@ s32 sub_8082C0C(u16 mapGroup, u16 mapNum); s32 unref_sub_8082C2C(u16 mapGroup, u16 mapNum); u16 sub_8082C4C(u16 a1); //s32 sub_8082C68(void); -//u8 sub_8082C9C(void); +//u8 ScrSpecial_GetTrainerEyeRematchFlag(void); void sub_8082CB8(void); #endif // GUARD_BATTLE_SETUP_H diff --git a/include/battle_transition.h b/include/battle_transition.h index b01378505..0b8766e87 100644 --- a/include/battle_transition.h +++ b/include/battle_transition.h @@ -1,8 +1,42 @@ #ifndef GUARD_BATTLE_TRANSITION_H #define GUARD_BATTLE_TRANSITION_H -void sub_811AABC(u8); -void sub_811AAD8(u8); -u8 sub_811AAE8(void); +void BattleTransition_StartOnField(u8 transitionID); +void BattleTransition_Start(u8 transitionID); +bool8 IsBattleTransitionDone(void); + +#define TRANSITIONS_NO 17 + +enum // TRANSITION_MUGSHOT +{ + MUGSHOT_SYDNEY, + MUGSHOT_PHOEBE, + MUGSHOT_GLACIA, + MUGSHOT_DRAKE, + MUGSHOT_STEVEN, +}; + +#define MUGSHOTS_NO 5 + +// credits for the names go to Dyskinesia and Tetrable +// names are naturally subject to change + +#define B_TRANSITION_BLUR 0 +#define B_TRANSITION_SWIRL 1 +#define B_TRANSITION_SHUFFLE 2 +#define B_TRANSITION_BIG_POKEBALL 3 +#define B_TRANSITION_POKEBALLS_TRAIL 4 +#define B_TRANSITION_CLOCKWISE_BLACKFADE 5 +#define B_TRANSITION_RIPPLE 6 +#define B_TRANSITION_WAVE 7 +#define B_TRANSITION_SLICE 8 +#define B_TRANSITION_WHITEFADE 9 +#define B_TRANSITION_GRID_SQUARES 10 +#define B_TRANSITION_SHARDS 11 +#define B_TRANSITION_SYDNEY 12 +#define B_TRANSITION_PHOEBE 13 +#define B_TRANSITION_GLACIA 14 +#define B_TRANSITION_DRAKE 15 +#define B_TRANSITION_STEVEN 16 #endif // GUARD_BATTLE_TRANSITION_H diff --git a/include/berry_blender.h b/include/berry_blender.h deleted file mode 100644 index 924b24b00..000000000 --- a/include/berry_blender.h +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef GUARD_BERRY_BLENDER_H -#define GUARD_BERRY_BLENDER_H - -void sub_80516C4(u8, u16); - -#endif // GUARD_BERRY_BLENDER_H diff --git a/include/braille_puzzles.h b/include/braille_puzzles.h index 2b0e2bb96..e9d1f5d7c 100644 --- a/include/braille_puzzles.h +++ b/include/braille_puzzles.h @@ -2,6 +2,7 @@ #define GUARD_BRAILLEPUZZLES_H bool8 ShouldDoBrailleStrengthEffect(void); +bool8 ShouldDoBrailleFlyEffect(void); void DoBrailleStrengthEffect(void); void UseFlyAncientTomb_Callback(void); void UseFlyAncientTomb_Finish(void); @@ -10,5 +11,6 @@ bool32 BrailleWait_CheckButtonPress(void); void SealedChamberShakingEffect(u8 taskId); bool8 ShouldDoBrailleDigEffect(void); void DoBrailleDigEffect(void); +void DoBrailleFlyEffect(void); #endif diff --git a/include/cable_club.h b/include/cable_club.h index 9e6a703e3..a2fe46b30 100644 --- a/include/cable_club.h +++ b/include/cable_club.h @@ -3,20 +3,22 @@ #include "task.h" -void sub_8082D4C(); -void sub_8082D60(u8, u8); -u16 sub_8082D9C(u8, u8); -u32 sub_8082DF4(u8); -u32 sub_8082E28(u8); -u32 sub_8082EB8(u8); -void sub_8082FEC(u8 taskId); -void sub_80833C4(u8 taskId); -void sub_8083418(u8 taskId); -u8 sub_8083444(u8 taskId); +void sub_808347C(u8 arg0); +void sub_80834E4(void); +void sub_808350C(void); +void sub_80835D8(void); +void sub_8083614(void); +void sub_808363C(void); u8 sub_8083664(void); -void sub_8083A84(TaskFunc); -s32 sub_8083BF4(u8 id); -void sub_8083C50(u8); -void sub_8083188(u8 taskId); +void sub_8083820(void); +void sub_80839A4(void); +void sub_80839D0(void); +void sub_8083A84(TaskFunc followupFunc); +void sub_8083B5C(void); +void sub_8083B80(void); +void sub_8083B90(void); +void sub_8083BDC(void); +bool32 sub_8083BF4(u8 linkPlayerIndex); +void sub_8083C50(u8 taskId); #endif // GUARD_CABLE_CLUB_H diff --git a/include/choose_party.h b/include/choose_party.h index e31aa3c02..853202a89 100644 --- a/include/choose_party.h +++ b/include/choose_party.h @@ -3,11 +3,11 @@ void sub_8121E10(void); void sub_8121E34(void); -bool8 sub_8121E78(void); -void sub_81222B0(u8 taskId); -bool8 sub_8122854(void); -void sub_8122A48(u8 taskId); -void sub_8122E0C(u8 taskId); +bool8 SetupBattleTowerPartyMenu(void); +void HandleBattleTowerPartyMenu(u8 taskId); +bool8 SetupLinkMultiBattlePartyMenu(void); +void HandleLinkMultiBattlePartyMenu(u8 taskId); +void HandleDaycarePartyMenu(u8 taskId); void sub_8123138(u8 taskId); #endif // GUARD_CHOOSE_PARTY_H diff --git a/include/contest_painting.h b/include/contest_painting.h index ad1cecfed..48ab95fbc 100644 --- a/include/contest_painting.h +++ b/include/contest_painting.h @@ -49,11 +49,6 @@ struct ContestEntry /*0x16*/ u8 trainer_name[OT_NAME_LENGTH]; }; -struct Unk3000756 -{ - /*0x00*/ u8 var_0; -}; - struct LabelPair { const u8 *prefix; diff --git a/include/data/field_map_obj/anim_func_ptrs.h b/include/data/field_map_obj/anim_func_ptrs.h index 63575727d..1d1fac71e 100644 --- a/include/data/field_map_obj/anim_func_ptrs.h +++ b/include/data/field_map_obj/anim_func_ptrs.h @@ -1,5 +1,5 @@ // -// Created by scott on 6/18/2017. + // #ifndef POKERUBY_ANIM_FUNC_PTRS_H diff --git a/include/data/field_map_obj/base_oam.h b/include/data/field_map_obj/base_oam.h index 8595f97e7..49c14e8c2 100644 --- a/include/data/field_map_obj/base_oam.h +++ b/include/data/field_map_obj/base_oam.h @@ -1,5 +1,5 @@ // -// Created by scott on 6/17/2017. + // #ifndef POKERUBY_BASE_OAM_H diff --git a/include/data/field_map_obj/berry_tree_graphics_tables.h b/include/data/field_map_obj/berry_tree_graphics_tables.h index 53a0fd482..5b60fee6f 100644 --- a/include/data/field_map_obj/berry_tree_graphics_tables.h +++ b/include/data/field_map_obj/berry_tree_graphics_tables.h @@ -1,5 +1,5 @@ // -// Created by scott on 6/17/2017. + // #ifndef POKERUBY_BERRY_TREE_GRAPHICS_TABLES_H diff --git a/include/data/field_map_obj/callback_subroutine_pointers.h b/include/data/field_map_obj/callback_subroutine_pointers.h index d24a47184..a324066b7 100644 --- a/include/data/field_map_obj/callback_subroutine_pointers.h +++ b/include/data/field_map_obj/callback_subroutine_pointers.h @@ -1,5 +1,5 @@ // -// Created by scott on 6/18/2017. + // #ifndef POKERUBY_CALLBACK_SUBROUTINE_POINTERS_H @@ -394,7 +394,7 @@ u8 (*const gUnknown_08375588[])(struct MapObject *, struct Sprite *) = { sub_805F3C4 }; -u8 (*const gUnknown_08375594[])(struct MapObject *, struct Sprite *, u8, bool8 (*const)(u8)) = { +u8 (*const gUnknown_08375594[])(struct MapObject *, struct Sprite *, u8, bool8(u8)) = { sub_805F3EC, sub_805F3F0, sub_805F438, diff --git a/include/data/field_map_obj/field_effect_object_template_pointers.h b/include/data/field_map_obj/field_effect_object_template_pointers.h index 8e19747ce..320af1ff8 100644 --- a/include/data/field_map_obj/field_effect_object_template_pointers.h +++ b/include/data/field_map_obj/field_effect_object_template_pointers.h @@ -1,5 +1,5 @@ // -// Created by scott on 6/17/2017. + // #ifndef POKERUBY_FIELD_EFFECT_OBJECT_TEMPLATE_POINTERS_H diff --git a/include/data/field_map_obj/field_effect_objects.h b/include/data/field_map_obj/field_effect_objects.h index dc8a38542..9d3ae343d 100644 --- a/include/data/field_map_obj/field_effect_objects.h +++ b/include/data/field_map_obj/field_effect_objects.h @@ -1,5 +1,5 @@ // -// Created by scott on 6/17/2017. + // #ifndef POKERUBY_FIELD_EFFECT_OBJECTS_H diff --git a/include/data/field_map_obj/map_object_anims.h b/include/data/field_map_obj/map_object_anims.h index 0d6e299ee..0993f3efd 100644 --- a/include/data/field_map_obj/map_object_anims.h +++ b/include/data/field_map_obj/map_object_anims.h @@ -1,5 +1,5 @@ // -// Created by scott on 6/17/2017. + // #ifndef POKERUBY_MAP_OBJECT_ANIMS_H diff --git a/include/data/field_map_obj/map_object_graphics_info.h b/include/data/field_map_obj/map_object_graphics_info.h index 818c5b90c..7b021b66d 100644 --- a/include/data/field_map_obj/map_object_graphics_info.h +++ b/include/data/field_map_obj/map_object_graphics_info.h @@ -1,5 +1,5 @@ // -// Created by scott on 6/17/2017. + // #ifndef POKERUBY_MAP_OBJECT_GRAPHICS_INFO_H diff --git a/include/data/field_map_obj/map_object_graphics_info_pointers.h b/include/data/field_map_obj/map_object_graphics_info_pointers.h index c36827709..22a052b0d 100644 --- a/include/data/field_map_obj/map_object_graphics_info_pointers.h +++ b/include/data/field_map_obj/map_object_graphics_info_pointers.h @@ -1,5 +1,5 @@ // -// Created by scott on 6/17/2017. + // #ifndef POKERUBY_MAP_OBJECT_GRAPHICS_INFO_POINTERS_H diff --git a/include/data/field_map_obj/map_object_pic_tables.h b/include/data/field_map_obj/map_object_pic_tables.h index 37d579512..ecb5c8836 100644 --- a/include/data/field_map_obj/map_object_pic_tables.h +++ b/include/data/field_map_obj/map_object_pic_tables.h @@ -1,5 +1,5 @@ // -// Created by scott on 6/17/2017. + // #ifndef POKERUBY_MAP_OBJECT_PIC_TABLES_H diff --git a/include/data/field_map_obj/map_object_subsprites.h b/include/data/field_map_obj/map_object_subsprites.h index f928db88a..951d71e99 100644 --- a/include/data/field_map_obj/map_object_subsprites.h +++ b/include/data/field_map_obj/map_object_subsprites.h @@ -1,5 +1,5 @@ // -// Created by scott on 6/17/2017. + // #ifndef POKERUBY_MAP_OBJECT_SUBSPRITES_H diff --git a/include/data/pokemon/base_stats.h b/include/data/pokemon/base_stats.h index eadfbfe30..37f59e1c6 100644 --- a/include/data/pokemon/base_stats.h +++ b/include/data/pokemon/base_stats.h @@ -1,5 +1,5 @@ // -// Created by Scott Norton on 6/27/17. + // #ifndef POKERUBY_BASE_STATS_H diff --git a/include/data/pokemon/cry_ids.h b/include/data/pokemon/cry_ids.h index d965a41cf..6207a92f0 100644 --- a/include/data/pokemon/cry_ids.h +++ b/include/data/pokemon/cry_ids.h @@ -1,5 +1,5 @@ // -// Created by Scott Norton on 6/27/17. + // #ifndef POKERUBY_CRY_IDS_H diff --git a/include/data/pokemon/dex_order.h b/include/data/pokemon/dex_order.h index 6f8582533..cbb7182ed 100644 --- a/include/data/pokemon/dex_order.h +++ b/include/data/pokemon/dex_order.h @@ -1,5 +1,5 @@ // -// Created by Scott Norton on 6/27/17. + // #ifndef POKERUBY_DEX_ORDER_H diff --git a/include/data/pokemon/egg_moves.h b/include/data/pokemon/egg_moves.h new file mode 100644 index 000000000..ab1b1dd33 --- /dev/null +++ b/include/data/pokemon/egg_moves.h @@ -0,0 +1,1318 @@ +// + +// + +#ifndef POKERUBY_DAYCARE_H +#define POKERUBY_DAYCARE_H + +#define EGG_MOVES_SPECIES_OFFSET 20000 +#define egg_moves(species, moves...) (SPECIES_##species + EGG_MOVES_SPECIES_OFFSET), moves + +#endif //POKERUBY_DAYCARE_H + +const u16 gEggMoves[] = { + egg_moves(BULBASAUR, + MOVE_LIGHT_SCREEN, + MOVE_SKULL_BASH, + MOVE_SAFEGUARD, + MOVE_CHARM, + MOVE_PETAL_DANCE, + MOVE_MAGICAL_LEAF, + MOVE_GRASS_WHISTLE, + MOVE_CURSE), + + egg_moves(CHARMANDER, + MOVE_BELLY_DRUM, + MOVE_ANCIENT_POWER, + MOVE_ROCK_SLIDE, + MOVE_BITE, + MOVE_OUTRAGE, + MOVE_BEAT_UP, + MOVE_SWORDS_DANCE, + MOVE_DRAGON_DANCE), + + egg_moves(SQUIRTLE, + MOVE_MIRROR_COAT, + MOVE_HAZE, + MOVE_MIST, + MOVE_FORESIGHT, + MOVE_FLAIL, + MOVE_REFRESH, + MOVE_MUD_SPORT, + MOVE_YAWN), + + egg_moves(PIDGEY, + MOVE_PURSUIT, + MOVE_FAINT_ATTACK, + MOVE_FORESIGHT, + MOVE_STEEL_WING, + MOVE_AIR_CUTTER), + + egg_moves(RATTATA, + MOVE_SCREECH, + MOVE_FLAME_WHEEL, + MOVE_FURY_SWIPES, + MOVE_BITE, + MOVE_COUNTER, + MOVE_REVERSAL, + MOVE_UPROAR, + MOVE_SWAGGER), + + egg_moves(SPEAROW, + MOVE_FAINT_ATTACK, + MOVE_FALSE_SWIPE, + MOVE_SCARY_FACE, + MOVE_QUICK_ATTACK, + MOVE_TRI_ATTACK, + MOVE_ASTONISH, + MOVE_SKY_ATTACK), + + egg_moves(EKANS, + MOVE_PURSUIT, + MOVE_SLAM, + MOVE_SPITE, + MOVE_BEAT_UP, + MOVE_POISON_FANG), + + egg_moves(SANDSHREW, + MOVE_FLAIL, + MOVE_SAFEGUARD, + MOVE_COUNTER, + MOVE_RAPID_SPIN, + MOVE_ROCK_SLIDE, + MOVE_METAL_CLAW, + MOVE_SWORDS_DANCE, + MOVE_CRUSH_CLAW), + + egg_moves(NIDORAN_F, + MOVE_SUPERSONIC, + MOVE_DISABLE, + MOVE_TAKE_DOWN, + MOVE_FOCUS_ENERGY, + MOVE_CHARM, + MOVE_COUNTER, + MOVE_BEAT_UP), + + egg_moves(NIDORAN_M, + MOVE_COUNTER, + MOVE_DISABLE, + MOVE_SUPERSONIC, + MOVE_TAKE_DOWN, + MOVE_AMNESIA, + MOVE_CONFUSION, + MOVE_BEAT_UP), + + egg_moves(VULPIX, + MOVE_FAINT_ATTACK, + MOVE_HYPNOSIS, + MOVE_FLAIL, + MOVE_SPITE, + MOVE_DISABLE, + MOVE_HOWL, + MOVE_PSYCH_UP, + MOVE_HEAT_WAVE), + + egg_moves(ZUBAT, + MOVE_QUICK_ATTACK, + MOVE_PURSUIT, + MOVE_FAINT_ATTACK, + MOVE_GUST, + MOVE_WHIRLWIND, + MOVE_CURSE), + + egg_moves(ODDISH, + MOVE_SWORDS_DANCE, + MOVE_RAZOR_LEAF, + MOVE_FLAIL, + MOVE_SYNTHESIS, + MOVE_CHARM, + MOVE_INGRAIN), + + egg_moves(PARAS, + MOVE_FALSE_SWIPE, + MOVE_SCREECH, + MOVE_COUNTER, + MOVE_PSYBEAM, + MOVE_FLAIL, + MOVE_SWEET_SCENT, + MOVE_LIGHT_SCREEN, + MOVE_PURSUIT), + + egg_moves(VENONAT, + MOVE_BATON_PASS, + MOVE_SCREECH, + MOVE_GIGA_DRAIN, + MOVE_SIGNAL_BEAM), + + egg_moves(DIGLETT, + MOVE_FAINT_ATTACK, + MOVE_SCREECH, + MOVE_ANCIENT_POWER, + MOVE_PURSUIT, + MOVE_BEAT_UP, + MOVE_UPROAR, + MOVE_ROCK_SLIDE), + + egg_moves(MEOWTH, + MOVE_SPITE, + MOVE_CHARM, + MOVE_HYPNOSIS, + MOVE_AMNESIA, + MOVE_PSYCH_UP, + MOVE_ASSIST), + + egg_moves(PSYDUCK, + MOVE_HYPNOSIS, + MOVE_PSYBEAM, + MOVE_FORESIGHT, + MOVE_LIGHT_SCREEN, + MOVE_FUTURE_SIGHT, + MOVE_PSYCHIC, + MOVE_CROSS_CHOP, + MOVE_REFRESH), + + egg_moves(MANKEY, + MOVE_ROCK_SLIDE, + MOVE_FORESIGHT, + MOVE_MEDITATE, + MOVE_COUNTER, + MOVE_REVERSAL, + MOVE_BEAT_UP, + MOVE_REVENGE, + MOVE_SMELLING_SALT), + + egg_moves(GROWLITHE, + MOVE_BODY_SLAM, + MOVE_SAFEGUARD, + MOVE_CRUNCH, + MOVE_THRASH, + MOVE_FIRE_SPIN, + MOVE_HOWL, + MOVE_HEAT_WAVE), + + egg_moves(POLIWAG, + MOVE_MIST, + MOVE_SPLASH, + MOVE_BUBBLE_BEAM, + MOVE_HAZE, + MOVE_MIND_READER, + MOVE_WATER_SPORT, + MOVE_ICE_BALL), + + egg_moves(ABRA, + MOVE_ENCORE, + MOVE_BARRIER, + MOVE_KNOCK_OFF, + MOVE_FIRE_PUNCH, + MOVE_THUNDER_PUNCH, + MOVE_ICE_PUNCH), + + egg_moves(MACHOP, + MOVE_LIGHT_SCREEN, + MOVE_MEDITATE, + MOVE_ROLLING_KICK, + MOVE_ENCORE, + MOVE_SMELLING_SALT, + MOVE_COUNTER, + MOVE_ROCK_SLIDE), + + egg_moves(BELLSPROUT, + MOVE_SWORDS_DANCE, + MOVE_ENCORE, + MOVE_REFLECT, + MOVE_SYNTHESIS, + MOVE_LEECH_LIFE, + MOVE_INGRAIN, + MOVE_MAGICAL_LEAF), + + egg_moves(TENTACOOL, + MOVE_AURORA_BEAM, + MOVE_MIRROR_COAT, + MOVE_RAPID_SPIN, + MOVE_HAZE, + MOVE_SAFEGUARD, + MOVE_CONFUSE_RAY), + + egg_moves(GEODUDE, + MOVE_MEGA_PUNCH, + MOVE_ROCK_SLIDE, + MOVE_BLOCK), + + egg_moves(PONYTA, + MOVE_FLAME_WHEEL, + MOVE_THRASH, + MOVE_DOUBLE_KICK, + MOVE_HYPNOSIS, + MOVE_CHARM, + MOVE_DOUBLE_EDGE), + + egg_moves(SLOWPOKE, + MOVE_SAFEGUARD, + MOVE_BELLY_DRUM, + MOVE_FUTURE_SIGHT, + MOVE_STOMP, + MOVE_MUD_SPORT, + MOVE_SLEEP_TALK, + MOVE_SNORE), + + egg_moves(FARFETCHD, + MOVE_STEEL_WING, + MOVE_FORESIGHT, + MOVE_MIRROR_MOVE, + MOVE_GUST, + MOVE_QUICK_ATTACK, + MOVE_FLAIL, + MOVE_FEATHER_DANCE, + MOVE_CURSE), + + egg_moves(DODUO, + MOVE_QUICK_ATTACK, + MOVE_SUPERSONIC, + MOVE_HAZE, + MOVE_FAINT_ATTACK, + MOVE_FLAIL, + MOVE_ENDEAVOR), + + egg_moves(SEEL, + MOVE_LICK, + MOVE_PERISH_SONG, + MOVE_DISABLE, + MOVE_HORN_DRILL, + MOVE_SLAM, + MOVE_ENCORE, + MOVE_FAKE_OUT, + MOVE_ICICLE_SPEAR), + + egg_moves(GRIMER, + MOVE_HAZE, + MOVE_MEAN_LOOK, + MOVE_LICK, + MOVE_IMPRISON, + MOVE_CURSE, + MOVE_SHADOW_PUNCH, + MOVE_EXPLOSION), + + egg_moves(SHELLDER, + MOVE_BUBBLE_BEAM, + MOVE_TAKE_DOWN, + MOVE_BARRIER, + MOVE_RAPID_SPIN, + MOVE_SCREECH, + MOVE_ICICLE_SPEAR), + + egg_moves(GASTLY, + MOVE_PSYWAVE, + MOVE_PERISH_SONG, + MOVE_HAZE, + MOVE_ASTONISH, + MOVE_WILL_O_WISP, + MOVE_GRUDGE, + MOVE_EXPLOSION), + + egg_moves(ONIX, + MOVE_ROCK_SLIDE, + MOVE_FLAIL, + MOVE_EXPLOSION, + MOVE_BLOCK), + + egg_moves(DROWZEE, + MOVE_BARRIER, + MOVE_ASSIST, + MOVE_ROLE_PLAY, + MOVE_FIRE_PUNCH, + MOVE_THUNDER_PUNCH, + MOVE_ICE_PUNCH), + + egg_moves(KRABBY, + MOVE_DIG, + MOVE_HAZE, + MOVE_AMNESIA, + MOVE_FLAIL, + MOVE_SLAM, + MOVE_KNOCK_OFF, + MOVE_SWORDS_DANCE), + + egg_moves(EXEGGCUTE, + MOVE_SYNTHESIS, + MOVE_MOONLIGHT, + MOVE_REFLECT, + MOVE_ANCIENT_POWER, + MOVE_PSYCH_UP, + MOVE_INGRAIN, + MOVE_CURSE), + + egg_moves(CUBONE, + MOVE_ROCK_SLIDE, + MOVE_ANCIENT_POWER, + MOVE_BELLY_DRUM, + MOVE_SCREECH, + MOVE_SKULL_BASH, + MOVE_PERISH_SONG, + MOVE_SWORDS_DANCE), + + egg_moves(LICKITUNG, + MOVE_BELLY_DRUM, + MOVE_MAGNITUDE, + MOVE_BODY_SLAM, + MOVE_CURSE, + MOVE_SMELLING_SALT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE), + + egg_moves(KOFFING, + MOVE_SCREECH, + MOVE_PSYWAVE, + MOVE_PSYBEAM, + MOVE_DESTINY_BOND, + MOVE_PAIN_SPLIT, + MOVE_WILL_O_WISP), + + egg_moves(RHYHORN, + MOVE_CRUNCH, + MOVE_REVERSAL, + MOVE_ROCK_SLIDE, + MOVE_COUNTER, + MOVE_MAGNITUDE, + MOVE_SWORDS_DANCE, + MOVE_CURSE, + MOVE_CRUSH_CLAW), + + egg_moves(CHANSEY, + MOVE_PRESENT, + MOVE_METRONOME, + MOVE_HEAL_BELL, + MOVE_AROMATHERAPY, + MOVE_SUBSTITUTE), + + egg_moves(TANGELA, + MOVE_FLAIL, + MOVE_CONFUSION, + MOVE_MEGA_DRAIN, + MOVE_REFLECT, + MOVE_AMNESIA, + MOVE_LEECH_SEED, + MOVE_NATURE_POWER), + + egg_moves(KANGASKHAN, + MOVE_STOMP, + MOVE_FORESIGHT, + MOVE_FOCUS_ENERGY, + MOVE_SAFEGUARD, + MOVE_DISABLE, + MOVE_COUNTER, + MOVE_CRUSH_CLAW, + MOVE_SUBSTITUTE), + + egg_moves(HORSEA, + MOVE_FLAIL, + MOVE_AURORA_BEAM, + MOVE_OCTAZOOKA, + MOVE_DISABLE, + MOVE_SPLASH, + MOVE_DRAGON_RAGE, + MOVE_DRAGON_BREATH), + + egg_moves(GOLDEEN, + MOVE_PSYBEAM, + MOVE_HAZE, + MOVE_HYDRO_PUMP, + MOVE_SLEEP_TALK, + MOVE_MUD_SPORT), + + egg_moves(MR_MIME, + MOVE_FUTURE_SIGHT, + MOVE_HYPNOSIS, + MOVE_MIMIC, + MOVE_PSYCH_UP, + MOVE_FAKE_OUT, + MOVE_TRICK), + + egg_moves(SCYTHER, + MOVE_COUNTER, + MOVE_SAFEGUARD, + MOVE_BATON_PASS, + MOVE_RAZOR_WIND, + MOVE_REVERSAL, + MOVE_LIGHT_SCREEN, + MOVE_ENDURE, + MOVE_SILVER_WIND), + + egg_moves(PINSIR, + MOVE_FURY_ATTACK, + MOVE_FLAIL, + MOVE_FALSE_SWIPE, + MOVE_FAINT_ATTACK), + + egg_moves(LAPRAS, + MOVE_FORESIGHT, + MOVE_SUBSTITUTE, + MOVE_TICKLE, + MOVE_REFRESH, + MOVE_DRAGON_DANCE, + MOVE_CURSE, + MOVE_SLEEP_TALK, + MOVE_HORN_DRILL), + + egg_moves(EEVEE, + MOVE_CHARM, + MOVE_FLAIL, + MOVE_ENDURE, + MOVE_CURSE, + MOVE_TICKLE, + MOVE_WISH), + + egg_moves(OMANYTE, + MOVE_BUBBLE_BEAM, + MOVE_AURORA_BEAM, + MOVE_SLAM, + MOVE_SUPERSONIC, + MOVE_HAZE, + MOVE_ROCK_SLIDE, + MOVE_SPIKES), + + egg_moves(KABUTO, + MOVE_BUBBLE_BEAM, + MOVE_AURORA_BEAM, + MOVE_RAPID_SPIN, + MOVE_DIG, + MOVE_FLAIL, + MOVE_KNOCK_OFF, + MOVE_CONFUSE_RAY), + + egg_moves(AERODACTYL, + MOVE_WHIRLWIND, + MOVE_PURSUIT, + MOVE_FORESIGHT, + MOVE_STEEL_WING, + MOVE_DRAGON_BREATH, + MOVE_CURSE), + + egg_moves(SNORLAX, + MOVE_LICK, + MOVE_CHARM, + MOVE_DOUBLE_EDGE, + MOVE_CURSE, + MOVE_FISSURE, + MOVE_SUBSTITUTE), + + egg_moves(DRATINI, + MOVE_LIGHT_SCREEN, + MOVE_MIST, + MOVE_HAZE, + MOVE_SUPERSONIC, + MOVE_DRAGON_BREATH, + MOVE_DRAGON_DANCE), + + egg_moves(CHIKORITA, + MOVE_VINE_WHIP, + MOVE_LEECH_SEED, + MOVE_COUNTER, + MOVE_ANCIENT_POWER, + MOVE_FLAIL, + MOVE_NATURE_POWER, + MOVE_INGRAIN, + MOVE_GRASS_WHISTLE), + + egg_moves(CYNDAQUIL, + MOVE_FURY_SWIPES, + MOVE_QUICK_ATTACK, + MOVE_REVERSAL, + MOVE_THRASH, + MOVE_FORESIGHT, + MOVE_COVET, + MOVE_HOWL, + MOVE_CRUSH_CLAW), + + egg_moves(TOTODILE, + MOVE_CRUNCH, + MOVE_THRASH, + MOVE_HYDRO_PUMP, + MOVE_ANCIENT_POWER, + MOVE_ROCK_SLIDE, + MOVE_MUD_SPORT, + MOVE_WATER_SPORT, + MOVE_DRAGON_CLAW), + + egg_moves(SENTRET, + MOVE_DOUBLE_EDGE, + MOVE_PURSUIT, + MOVE_SLASH, + MOVE_FOCUS_ENERGY, + MOVE_REVERSAL, + MOVE_SUBSTITUTE, + MOVE_TRICK, + MOVE_ASSIST), + + egg_moves(HOOTHOOT, + MOVE_MIRROR_MOVE, + MOVE_SUPERSONIC, + MOVE_FAINT_ATTACK, + MOVE_WING_ATTACK, + MOVE_WHIRLWIND, + MOVE_SKY_ATTACK, + MOVE_FEATHER_DANCE), + + egg_moves(LEDYBA, + MOVE_PSYBEAM, + MOVE_BIDE, + MOVE_SILVER_WIND), + + egg_moves(SPINARAK, + MOVE_PSYBEAM, + MOVE_DISABLE, + MOVE_SONIC_BOOM, + MOVE_BATON_PASS, + MOVE_PURSUIT, + MOVE_SIGNAL_BEAM), + + egg_moves(CHINCHOU, + MOVE_FLAIL, + MOVE_SCREECH, + MOVE_AMNESIA), + + egg_moves(PICHU, + MOVE_REVERSAL, + MOVE_BIDE, + MOVE_PRESENT, + MOVE_ENCORE, + MOVE_DOUBLE_SLAP, + MOVE_WISH, + MOVE_CHARGE), + + egg_moves(CLEFFA, + MOVE_PRESENT, + MOVE_METRONOME, + MOVE_AMNESIA, + MOVE_BELLY_DRUM, + MOVE_SPLASH, + MOVE_MIMIC, + MOVE_WISH, + MOVE_SUBSTITUTE), + + egg_moves(IGGLYBUFF, + MOVE_PERISH_SONG, + MOVE_PRESENT, + MOVE_FAINT_ATTACK, + MOVE_WISH, + MOVE_FAKE_TEARS), + + egg_moves(TOGEPI, + MOVE_PRESENT, + MOVE_MIRROR_MOVE, + MOVE_PECK, + MOVE_FORESIGHT, + MOVE_FUTURE_SIGHT, + MOVE_SUBSTITUTE, + MOVE_PSYCH_UP), + + egg_moves(NATU, + MOVE_HAZE, + MOVE_DRILL_PECK, + MOVE_QUICK_ATTACK, + MOVE_FAINT_ATTACK, + MOVE_STEEL_WING, + MOVE_PSYCH_UP, + MOVE_FEATHER_DANCE, + MOVE_REFRESH), + + egg_moves(MAREEP, + MOVE_TAKE_DOWN, + MOVE_BODY_SLAM, + MOVE_SAFEGUARD, + MOVE_SCREECH, + MOVE_REFLECT, + MOVE_ODOR_SLEUTH, + MOVE_CHARGE), + + egg_moves(MARILL, + MOVE_LIGHT_SCREEN, + MOVE_PRESENT, + MOVE_AMNESIA, + MOVE_FUTURE_SIGHT, + MOVE_BELLY_DRUM, + MOVE_PERISH_SONG, + MOVE_SUPERSONIC, + MOVE_SUBSTITUTE), + + egg_moves(SUDOWOODO, + MOVE_SELF_DESTRUCT), + + egg_moves(HOPPIP, + MOVE_CONFUSION, + MOVE_ENCORE, + MOVE_DOUBLE_EDGE, + MOVE_REFLECT, + MOVE_AMNESIA, + MOVE_HELPING_HAND, + MOVE_PSYCH_UP), + + egg_moves(AIPOM, + MOVE_COUNTER, + MOVE_SCREECH, + MOVE_PURSUIT, + MOVE_AGILITY, + MOVE_SPITE, + MOVE_SLAM, + MOVE_DOUBLE_SLAP, + MOVE_BEAT_UP), + + egg_moves(SUNKERN, + MOVE_GRASS_WHISTLE, + MOVE_ENCORE, + MOVE_LEECH_SEED, + MOVE_NATURE_POWER, + MOVE_CURSE, + MOVE_HELPING_HAND), + + egg_moves(YANMA, + MOVE_WHIRLWIND, + MOVE_REVERSAL, + MOVE_LEECH_LIFE, + MOVE_SIGNAL_BEAM, + MOVE_SILVER_WIND), + + egg_moves(WOOPER, + MOVE_BODY_SLAM, + MOVE_ANCIENT_POWER, + MOVE_SAFEGUARD, + MOVE_CURSE, + MOVE_MUD_SPORT, + MOVE_STOCKPILE, + MOVE_SWALLOW, + MOVE_SPIT_UP), + + egg_moves(MURKROW, + MOVE_WHIRLWIND, + MOVE_DRILL_PECK, + MOVE_MIRROR_MOVE, + MOVE_WING_ATTACK, + MOVE_SKY_ATTACK, + MOVE_CONFUSE_RAY, + MOVE_FEATHER_DANCE, + MOVE_PERISH_SONG), + + egg_moves(MISDREAVUS, + MOVE_SCREECH, + MOVE_DESTINY_BOND, + MOVE_PSYCH_UP, + MOVE_IMPRISON), + + egg_moves(GIRAFARIG, + MOVE_TAKE_DOWN, + MOVE_AMNESIA, + MOVE_FORESIGHT, + MOVE_FUTURE_SIGHT, + MOVE_BEAT_UP, + MOVE_PSYCH_UP, + MOVE_WISH, + MOVE_MAGIC_COAT), + + egg_moves(PINECO, + MOVE_REFLECT, + MOVE_PIN_MISSILE, + MOVE_FLAIL, + MOVE_SWIFT, + MOVE_COUNTER, + MOVE_SAND_TOMB), + + egg_moves(DUNSPARCE, + MOVE_BIDE, + MOVE_ANCIENT_POWER, + MOVE_ROCK_SLIDE, + MOVE_BITE, + MOVE_HEADBUTT, + MOVE_ASTONISH, + MOVE_CURSE), + + egg_moves(GLIGAR, + MOVE_METAL_CLAW, + MOVE_WING_ATTACK, + MOVE_RAZOR_WIND, + MOVE_COUNTER, + MOVE_SAND_TOMB), + + egg_moves(SNUBBULL, + MOVE_METRONOME, + MOVE_FAINT_ATTACK, + MOVE_REFLECT, + MOVE_PRESENT, + MOVE_CRUNCH, + MOVE_HEAL_BELL, + MOVE_SNORE, + MOVE_SMELLING_SALT), + + egg_moves(QWILFISH, + MOVE_FLAIL, + MOVE_HAZE, + MOVE_BUBBLE_BEAM, + MOVE_SUPERSONIC, + MOVE_ASTONISH), + + egg_moves(SHUCKLE, + MOVE_SWEET_SCENT), + + egg_moves(HERACROSS, + MOVE_HARDEN, + MOVE_BIDE, + MOVE_FLAIL, + MOVE_FALSE_SWIPE), + + egg_moves(SNEASEL, + MOVE_COUNTER, + MOVE_SPITE, + MOVE_FORESIGHT, + MOVE_REFLECT, + MOVE_BITE, + MOVE_CRUSH_CLAW, + MOVE_FAKE_OUT), + + egg_moves(TEDDIURSA, + MOVE_CRUNCH, + MOVE_TAKE_DOWN, + MOVE_SEISMIC_TOSS, + MOVE_COUNTER, + MOVE_METAL_CLAW, + MOVE_FAKE_TEARS, + MOVE_YAWN, + MOVE_SLEEP_TALK), + + egg_moves(SLUGMA, + MOVE_ACID_ARMOR, + MOVE_HEAT_WAVE), + + egg_moves(SWINUB, + MOVE_TAKE_DOWN, + MOVE_BITE, + MOVE_BODY_SLAM, + MOVE_ROCK_SLIDE, + MOVE_ANCIENT_POWER, + MOVE_MUD_SHOT, + MOVE_ICICLE_SPEAR, + MOVE_DOUBLE_EDGE), + + egg_moves(CORSOLA, + MOVE_ROCK_SLIDE, + MOVE_SCREECH, + MOVE_MIST, + MOVE_AMNESIA, + MOVE_BARRIER, + MOVE_INGRAIN, + MOVE_CONFUSE_RAY, + MOVE_ICICLE_SPEAR), + + egg_moves(REMORAID, + MOVE_AURORA_BEAM, + MOVE_OCTAZOOKA, + MOVE_SUPERSONIC, + MOVE_HAZE, + MOVE_SCREECH, + MOVE_THUNDER_WAVE, + MOVE_ROCK_BLAST), + + egg_moves(DELIBIRD, + MOVE_AURORA_BEAM, + MOVE_QUICK_ATTACK, + MOVE_FUTURE_SIGHT, + MOVE_SPLASH, + MOVE_RAPID_SPIN, + MOVE_ICE_BALL), + + egg_moves(MANTINE, + MOVE_TWISTER, + MOVE_HYDRO_PUMP, + MOVE_HAZE, + MOVE_SLAM, + MOVE_MUD_SPORT, + MOVE_ROCK_SLIDE), + + egg_moves(SKARMORY, + MOVE_DRILL_PECK, + MOVE_PURSUIT, + MOVE_WHIRLWIND, + MOVE_SKY_ATTACK, + MOVE_CURSE), + + egg_moves(HOUNDOUR, + MOVE_FIRE_SPIN, + MOVE_RAGE, + MOVE_PURSUIT, + MOVE_COUNTER, + MOVE_SPITE, + MOVE_REVERSAL, + MOVE_BEAT_UP, + MOVE_WILL_O_WISP), + + egg_moves(PHANPY, + MOVE_FOCUS_ENERGY, + MOVE_BODY_SLAM, + MOVE_ANCIENT_POWER, + MOVE_SNORE, + MOVE_COUNTER, + MOVE_FISSURE), + + egg_moves(STANTLER, + MOVE_SPITE, + MOVE_DISABLE, + MOVE_BITE, + MOVE_SWAGGER, + MOVE_PSYCH_UP, + MOVE_EXTRASENSORY), + + egg_moves(TYROGUE, + MOVE_RAPID_SPIN, + MOVE_HI_JUMP_KICK, + MOVE_MACH_PUNCH, + MOVE_MIND_READER, + MOVE_HELPING_HAND), + + egg_moves(SMOOCHUM, + MOVE_MEDITATE, + MOVE_PSYCH_UP, + MOVE_FAKE_OUT, + MOVE_WISH, + MOVE_ICE_PUNCH), + + egg_moves(ELEKID, + MOVE_KARATE_CHOP, + MOVE_BARRIER, + MOVE_ROLLING_KICK, + MOVE_MEDITATE, + MOVE_CROSS_CHOP, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH), + + egg_moves(MAGBY, + MOVE_KARATE_CHOP, + MOVE_MEGA_PUNCH, + MOVE_BARRIER, + MOVE_SCREECH, + MOVE_CROSS_CHOP, + MOVE_THUNDER_PUNCH), + + egg_moves(MILTANK, + MOVE_PRESENT, + MOVE_REVERSAL, + MOVE_SEISMIC_TOSS, + MOVE_ENDURE, + MOVE_PSYCH_UP, + MOVE_CURSE, + MOVE_HELPING_HAND, + MOVE_SLEEP_TALK), + + egg_moves(LARVITAR, + MOVE_PURSUIT, + MOVE_STOMP, + MOVE_OUTRAGE, + MOVE_FOCUS_ENERGY, + MOVE_ANCIENT_POWER, + MOVE_DRAGON_DANCE, + MOVE_CURSE), + + egg_moves(TREECKO, + MOVE_CRUNCH, + MOVE_MUD_SPORT, + MOVE_ENDEAVOR, + MOVE_LEECH_SEED, + MOVE_DRAGON_BREATH, + MOVE_CRUSH_CLAW), + + egg_moves(TORCHIC, + MOVE_COUNTER, + MOVE_REVERSAL, + MOVE_ENDURE, + MOVE_SWAGGER, + MOVE_ROCK_SLIDE, + MOVE_SMELLING_SALT), + + egg_moves(MUDKIP, + MOVE_REFRESH, + MOVE_UPROAR, + MOVE_CURSE, + MOVE_STOMP, + MOVE_ICE_BALL, + MOVE_MIRROR_COAT), + + egg_moves(POOCHYENA, + MOVE_ASTONISH, + MOVE_POISON_FANG, + MOVE_COVET, + MOVE_LEER, + MOVE_YAWN), + + egg_moves(ZIGZAGOON, + MOVE_CHARM, + MOVE_PURSUIT, + MOVE_SUBSTITUTE, + MOVE_TICKLE, + MOVE_TRICK), + + egg_moves(LOTAD, + MOVE_SYNTHESIS, + MOVE_RAZOR_LEAF, + MOVE_SWEET_SCENT, + MOVE_LEECH_SEED, + MOVE_FLAIL, + MOVE_WATER_GUN), + + egg_moves(SEEDOT, + MOVE_LEECH_SEED, + MOVE_AMNESIA, + MOVE_QUICK_ATTACK, + MOVE_RAZOR_WIND, + MOVE_TAKE_DOWN, + MOVE_FALSE_SWIPE), + + egg_moves(NINCADA, + MOVE_ENDURE, + MOVE_FAINT_ATTACK, + MOVE_GUST, + MOVE_SILVER_WIND), + + egg_moves(TAILLOW, + MOVE_PURSUIT, + MOVE_SUPERSONIC, + MOVE_REFRESH, + MOVE_MIRROR_MOVE, + MOVE_RAGE, + MOVE_SKY_ATTACK), + + egg_moves(SHROOMISH, + MOVE_FAKE_TEARS, + MOVE_SWAGGER, + MOVE_CHARM, + MOVE_FALSE_SWIPE, + MOVE_HELPING_HAND), + + egg_moves(SPINDA, + MOVE_ENCORE, + MOVE_ROCK_SLIDE, + MOVE_ASSIST, + MOVE_DISABLE, + MOVE_BATON_PASS, + MOVE_WISH, + MOVE_TRICK, + MOVE_SMELLING_SALT), + + egg_moves(WINGULL, + MOVE_MIST, + MOVE_TWISTER, + MOVE_AGILITY, + MOVE_GUST, + MOVE_WATER_SPORT), + + egg_moves(SURSKIT, + MOVE_FORESIGHT, + MOVE_MUD_SHOT, + MOVE_PSYBEAM, + MOVE_HYDRO_PUMP, + MOVE_MIND_READER), + + egg_moves(WAILMER, + MOVE_DOUBLE_EDGE, + MOVE_THRASH, + MOVE_SWAGGER, + MOVE_SNORE, + MOVE_SLEEP_TALK, + MOVE_CURSE, + MOVE_FISSURE, + MOVE_TICKLE), + + egg_moves(SKITTY, + MOVE_HELPING_HAND, + MOVE_PSYCH_UP, + MOVE_UPROAR, + MOVE_FAKE_TEARS, + MOVE_WISH, + MOVE_BATON_PASS, + MOVE_SUBSTITUTE, + MOVE_TICKLE), + + egg_moves(KECLEON, + MOVE_DISABLE, + MOVE_MAGIC_COAT, + MOVE_TRICK), + + egg_moves(NOSEPASS, + MOVE_MAGNITUDE, + MOVE_ROLLOUT, + MOVE_EXPLOSION), + + egg_moves(TORKOAL, + MOVE_ERUPTION, + MOVE_ENDURE, + MOVE_SLEEP_TALK, + MOVE_YAWN), + + egg_moves(SABLEYE, + MOVE_PSYCH_UP, + MOVE_RECOVER, + MOVE_MOONLIGHT), + + egg_moves(BARBOACH, + MOVE_THRASH, + MOVE_WHIRLPOOL, + MOVE_SPARK), + + egg_moves(LUVDISC, + MOVE_SPLASH, + MOVE_SUPERSONIC, + MOVE_WATER_SPORT, + MOVE_MUD_SPORT), + + egg_moves(CORPHISH, + MOVE_MUD_SPORT, + MOVE_ENDEAVOR, + MOVE_BODY_SLAM, + MOVE_ANCIENT_POWER), + + egg_moves(FEEBAS, + MOVE_MIRROR_COAT, + MOVE_DRAGON_BREATH, + MOVE_MUD_SPORT, + MOVE_HYPNOSIS, + MOVE_LIGHT_SCREEN, + MOVE_CONFUSE_RAY), + + egg_moves(CARVANHA, + MOVE_HYDRO_PUMP, + MOVE_DOUBLE_EDGE, + MOVE_THRASH), + + egg_moves(TRAPINCH, + MOVE_FOCUS_ENERGY, + MOVE_QUICK_ATTACK, + MOVE_GUST), + + egg_moves(MAKUHITA, + MOVE_FAINT_ATTACK, + MOVE_DETECT, + MOVE_FORESIGHT, + MOVE_HELPING_HAND, + MOVE_CROSS_CHOP, + MOVE_REVENGE, + MOVE_DYNAMIC_PUNCH, + MOVE_COUNTER), + + egg_moves(ELECTRIKE, + MOVE_CRUNCH, + MOVE_HEADBUTT, + MOVE_UPROAR, + MOVE_CURSE, + MOVE_SWIFT), + + egg_moves(NUMEL, + MOVE_HOWL, + MOVE_SCARY_FACE, + MOVE_BODY_SLAM, + MOVE_ROLLOUT, + MOVE_DEFENSE_CURL, + MOVE_STOMP), + + egg_moves(SPHEAL, + MOVE_WATER_SPORT, + MOVE_STOCKPILE, + MOVE_SWALLOW, + MOVE_SPIT_UP, + MOVE_YAWN, + MOVE_ROCK_SLIDE, + MOVE_CURSE, + MOVE_FISSURE), + + egg_moves(CACNEA, + MOVE_GRASS_WHISTLE, + MOVE_ACID, + MOVE_TEETER_DANCE, + MOVE_DYNAMIC_PUNCH, + MOVE_COUNTER), + + egg_moves(SNORUNT, + MOVE_BLOCK, + MOVE_SPIKES), + + egg_moves(AZURILL, + MOVE_ENCORE, + MOVE_SING, + MOVE_REFRESH, + MOVE_SLAM, + MOVE_TICKLE), + + egg_moves(SPOINK, + MOVE_FUTURE_SIGHT, + MOVE_EXTRASENSORY, + MOVE_SUBSTITUTE, + MOVE_TRICK), + + egg_moves(PLUSLE, + MOVE_SUBSTITUTE, + MOVE_WISH), + + egg_moves(MINUN, + MOVE_SUBSTITUTE, + MOVE_WISH), + + egg_moves(MAWILE, + MOVE_SWORDS_DANCE, + MOVE_FALSE_SWIPE, + MOVE_POISON_FANG, + MOVE_PSYCH_UP, + MOVE_ANCIENT_POWER, + MOVE_TICKLE), + + egg_moves(MEDITITE, + MOVE_FIRE_PUNCH, + MOVE_THUNDER_PUNCH, + MOVE_ICE_PUNCH, + MOVE_FORESIGHT, + MOVE_FAKE_OUT, + MOVE_BATON_PASS, + MOVE_DYNAMIC_PUNCH), + + egg_moves(SWABLU, + MOVE_AGILITY, + MOVE_HAZE, + MOVE_PURSUIT, + MOVE_RAGE), + + egg_moves(DUSKULL, + MOVE_IMPRISON, + MOVE_DESTINY_BOND, + MOVE_PAIN_SPLIT, + MOVE_GRUDGE, + MOVE_MEMENTO, + MOVE_FAINT_ATTACK), + + egg_moves(ROSELIA, + MOVE_SPIKES, + MOVE_SYNTHESIS, + MOVE_PIN_MISSILE, + MOVE_COTTON_SPORE), + + egg_moves(SLAKOTH, + MOVE_PURSUIT, + MOVE_SLASH, + MOVE_BODY_SLAM, + MOVE_SNORE, + MOVE_CRUSH_CLAW, + MOVE_CURSE, + MOVE_SLEEP_TALK), + + egg_moves(GULPIN, + MOVE_DREAM_EATER, + MOVE_ACID_ARMOR, + MOVE_SMOG, + MOVE_PAIN_SPLIT), + + egg_moves(TROPIUS, + MOVE_HEADBUTT, + MOVE_SLAM, + MOVE_RAZOR_WIND, + MOVE_LEECH_SEED, + MOVE_NATURE_POWER), + + egg_moves(WHISMUR, + MOVE_TAKE_DOWN, + MOVE_SNORE, + MOVE_SWAGGER, + MOVE_EXTRASENSORY, + MOVE_SMELLING_SALT), + + egg_moves(CLAMPERL, + MOVE_REFRESH, + MOVE_MUD_SPORT, + MOVE_BODY_SLAM, + MOVE_SUPERSONIC, + MOVE_BARRIER, + MOVE_CONFUSE_RAY), + + egg_moves(ABSOL, + MOVE_BATON_PASS, + MOVE_FAINT_ATTACK, + MOVE_DOUBLE_EDGE, + MOVE_MAGIC_COAT, + MOVE_CURSE, + MOVE_SUBSTITUTE), + + egg_moves(SHUPPET, + MOVE_DISABLE, + MOVE_DESTINY_BOND, + MOVE_FORESIGHT, + MOVE_ASTONISH, + MOVE_IMPRISON), + + egg_moves(SEVIPER, + MOVE_STOCKPILE, + MOVE_SWALLOW, + MOVE_SPIT_UP, + MOVE_BODY_SLAM), + + egg_moves(ZANGOOSE, + MOVE_FLAIL, + MOVE_DOUBLE_KICK, + MOVE_RAZOR_WIND, + MOVE_COUNTER, + MOVE_ROAR, + MOVE_CURSE), + + egg_moves(RELICANTH, + MOVE_MAGNITUDE, + MOVE_SKULL_BASH, + MOVE_WATER_SPORT, + MOVE_AMNESIA, + MOVE_SLEEP_TALK, + MOVE_ROCK_SLIDE), + + egg_moves(ARON, + MOVE_ENDEAVOR, + MOVE_BODY_SLAM, + MOVE_STOMP, + MOVE_SMELLING_SALT), + + egg_moves(CASTFORM, + MOVE_FUTURE_SIGHT, + MOVE_PSYCH_UP), + + egg_moves(VOLBEAT, + MOVE_BATON_PASS, + MOVE_SILVER_WIND, + MOVE_TRICK), + + egg_moves(ILLUMISE, + MOVE_BATON_PASS, + MOVE_SILVER_WIND, + MOVE_GROWTH), + + egg_moves(LILEEP, + MOVE_BARRIER, + MOVE_RECOVER, + MOVE_MIRROR_COAT, + MOVE_ROCK_SLIDE), + + egg_moves(ANORITH, + MOVE_RAPID_SPIN, + MOVE_KNOCK_OFF, + MOVE_SWORDS_DANCE, + MOVE_ROCK_SLIDE), + + egg_moves(RALTS, + MOVE_DISABLE, + MOVE_WILL_O_WISP, + MOVE_MEAN_LOOK, + MOVE_MEMENTO, + MOVE_DESTINY_BOND), + + egg_moves(BAGON, + MOVE_HYDRO_PUMP, + MOVE_THRASH, + MOVE_DRAGON_RAGE, + MOVE_TWISTER, + MOVE_DRAGON_DANCE), + + egg_moves(CHIMECHO, + MOVE_DISABLE, + MOVE_CURSE, + MOVE_HYPNOSIS, + MOVE_DREAM_EATER), + + 0xFFFF +}; diff --git a/include/data/pokemon/evolution.h b/include/data/pokemon/evolution.h index 51e993347..919416fee 100644 --- a/include/data/pokemon/evolution.h +++ b/include/data/pokemon/evolution.h @@ -1,5 +1,5 @@ // -// Created by Scott Norton on 6/27/17. + // #ifndef POKERUBY_EVOLUTION_H diff --git a/include/data/pokemon/experience_tables.h b/include/data/pokemon/experience_tables.h index 70c5e88ed..2fb416fe9 100644 --- a/include/data/pokemon/experience_tables.h +++ b/include/data/pokemon/experience_tables.h @@ -1,5 +1,5 @@ // -// Created by Scott Norton on 6/27/17. + // #ifndef POKERUBY_EXPERIENCE_TABLES_H diff --git a/include/data/pokemon/item_effects.h b/include/data/pokemon/item_effects.h index b07573933..cd06228dd 100644 --- a/include/data/pokemon/item_effects.h +++ b/include/data/pokemon/item_effects.h @@ -1,5 +1,5 @@ // -// Created by Scott Norton on 6/27/17. + // #ifndef POKERUBY_ITEM_EFFECTS_H diff --git a/include/data/pokemon/level_up_learnset_pointers.h b/include/data/pokemon/level_up_learnset_pointers.h index 753947d51..19761c996 100644 --- a/include/data/pokemon/level_up_learnset_pointers.h +++ b/include/data/pokemon/level_up_learnset_pointers.h @@ -1,5 +1,5 @@ // -// Created by Scott Norton on 6/27/17. + // #ifndef POKERUBY_LEVEL_UP_LEARNSET_POINTERS_H diff --git a/include/data/pokemon/level_up_learnsets.h b/include/data/pokemon/level_up_learnsets.h index 5b79f4bc0..bc1de82de 100644 --- a/include/data/pokemon/level_up_learnsets.h +++ b/include/data/pokemon/level_up_learnsets.h @@ -1,5 +1,5 @@ // -// Created by Scott Norton on 6/27/17. + // #ifndef POKERUBY_LEVEL_UP_LEARNSETS_H diff --git a/include/data/pokemon/nature_stats.h b/include/data/pokemon/nature_stats.h index 27bd98f9d..fcef2a0ac 100644 --- a/include/data/pokemon/nature_stats.h +++ b/include/data/pokemon/nature_stats.h @@ -1,5 +1,5 @@ // -// Created by Scott Norton on 6/27/17. + // #ifndef POKERUBY_NATURE_STATS_H diff --git a/include/data/pokemon/spinda_spots.h b/include/data/pokemon/spinda_spots.h index 234cdf00e..d045e0734 100644 --- a/include/data/pokemon/spinda_spots.h +++ b/include/data/pokemon/spinda_spots.h @@ -1,5 +1,5 @@ // -// Created by Scott Norton on 6/27/17. + // #ifndef POKERUBY_SPINDA_SPOTS_H diff --git a/include/data/pokemon/tmhm_learnsets.h b/include/data/pokemon/tmhm_learnsets.h index fa48f7f5c..02cd22d56 100644 --- a/include/data/pokemon/tmhm_learnsets.h +++ b/include/data/pokemon/tmhm_learnsets.h @@ -1,5 +1,5 @@ // -// Created by Scott Norton on 6/27/17. + // #ifndef POKERUBY_TMHM_LEARNSETS_H diff --git a/include/data/pokemon/trainer_class_lookups.h b/include/data/pokemon/trainer_class_lookups.h index 0aea322a0..c86e795c4 100644 --- a/include/data/pokemon/trainer_class_lookups.h +++ b/include/data/pokemon/trainer_class_lookups.h @@ -1,5 +1,5 @@ // -// Created by Scott Norton on 6/27/17. + // #ifndef POKERUBY_TRAINER_CLASS_LOOKUPS_H diff --git a/include/data2.h b/include/data2.h index 9dd26fd5f..53a90944d 100644 --- a/include/data2.h +++ b/include/data2.h @@ -3,12 +3,7 @@ #include "sprite.h" -struct UnknownStructD2 -{ - u32 unk0; - u32 unk4; - u32 unk8; -}; +struct UnknownTaskStruct; struct MonCoords { @@ -44,8 +39,10 @@ extern u8 gEnemyMonElevation[]; extern const u8 gTrainerClassNames[][13]; extern const struct Trainer gTrainers[]; extern u8 gSpeciesNames[][11]; -extern u8 gMoveNames[][13]; -extern const struct UnknownStructD2 gUnknown_081F9674; +extern const u8 gMoveNames[][13]; +extern const u8 gAbilityNames[][13]; +extern const u8 gTypeNames[][7]; +extern const struct UnknownTaskStruct gUnknown_081F9674; extern const u8 gUnknown_081F96C8[]; extern struct CompressedSpriteSheet gUnknown_081FAEA4; extern struct CompressedSpritePalette gUnknown_081FAEAC; diff --git a/include/daycare.h b/include/daycare.h index b90c50610..e46351d72 100644 --- a/include/daycare.h +++ b/include/daycare.h @@ -1,14 +1,15 @@ #ifndef GUARD_DAYCARE_H #define GUARD_DAYCARE_H -u8 Daycare_CountPokemon(struct BoxPokemon *); -void sub_8041324(struct BoxPokemon *, struct RecordMixing_UnknownStruct *); -void sub_8041790(int i); +u8 Daycare_CountPokemon(struct DayCareData *); +void sub_8041324(struct BoxPokemon *, struct RecordMixingDayCareMail *); +void sub_8041790(u16 i); u16 sub_8041870(u16); void sub_8041940(void); void sub_8041950(void); void sub_8042044(struct Pokemon *mon, u16, u8); u8 sub_80422A0(void); u8 daycare_relationship_score_from_savegame(void); +bool8 NameHasGenderSymbol(const u8 *, u8); #endif // GUARD_DAYCARE_H diff --git a/include/decompress.h b/include/decompress.h index 07d69301f..01f66971c 100644 --- a/include/decompress.h +++ b/include/decompress.h @@ -3,14 +3,14 @@ #include "sprite.h" -void sub_800D238(const void *src, void *dest); +void LZDecompressWram(const void *src, void *dest); void LZDecompressVram(const void *src, void *dest); void LoadCompressedObjectPic(const struct CompressedSpriteSheet *a); void LoadCompressedObjectPicOverrideBuffer(const struct CompressedSpriteSheet *a, void *buffer); void LoadCompressedObjectPalette(const struct CompressedSpritePalette *a); void LoadCompressedObjectPaletteOverrideBuffer(const struct CompressedSpritePalette *a, void *buffer); void DecompressPicFromTable_2(const struct CompressedSpriteSheet *a, u8 b, u8 c, void *d, void *e, s32 f); -void HandleLoadSpecialPokePic(const struct CompressedSpriteSheet *spriteSheet, u32 b, u32 c, u32 d, void *dest, s32 species, u32 g); +void HandleLoadSpecialPokePic(const struct CompressedSpriteSheet *spriteSheet, u32 b, u32 c, u32 d, void *dest, s32 species, u32 pid); void LoadSpecialPokePic(const struct CompressedSpriteSheet *spriteSheet, u32 b, u32 c, u32 d, void *dest, s32 species, u32 g, u32 h); void Unused_LZDecompressWramIndirect(const void **src, void *dest); diff --git a/include/decoration.h b/include/decoration.h index 376eba7d7..1b83964d9 100644 --- a/include/decoration.h +++ b/include/decoration.h @@ -289,16 +289,6 @@ extern u8 sub_8134194(u8); // src/decoration_inventory extern bool8 sub_81341D4(void); // src/decoration_inventory extern void sub_8134104(u8); // src/decoration_inventory extern bool8 sub_807D770(void); -extern void sub_80F944C(void); // src/menu_helpers -extern void sub_80F9480(u8 *, u8); // src/menu_helpers -extern void sub_80F94A4(u8, u8 *, u8, s16); // src/menu_helpers -extern void sub_80F94F8(u8 *); // src/menu_helpers -extern void sub_80F9520(u8 *, u8); // src/menu_helpers -extern void DestroyVerticalScrollIndicator(u8); // src/menu_helpers -extern void CreateVerticalScrollIndicators(u8, u8, u8); // src/menu_helpers -extern void LoadScrollIndicatorPalette(void); // src/menu_helpers -extern void DisplayItemMessageOnField(u8, const u8 *, TaskFunc, u16); // src/menu_helpers -extern void BuyMenuFreeMemory(void); // src/menu_helpers extern void sub_8109DAC(u8); // src/trader extern void ReshowPlayerPC(u8); // src/player_pc void Task_SecretBasePC_Decoration(u8); @@ -311,6 +301,8 @@ void sub_80FE5AC(u8); void sub_80FE604(u8); void sub_80FE728(u8); void sub_80FE758(u8); +void sub_80FE7A8(u8); +void sub_80FE7D4(u8 *, u8); void sub_80FE868(u8); void sub_80FE948(u8); void sub_80FEABC(u8, u8); @@ -318,6 +310,7 @@ void sub_80FEC94(u8); void sub_80FECB8(u8); void sub_80FECE0(u8); void sub_80FEF50(u8); +bool8 sub_80FEFA4(void); void sub_80FF394(u16, u16, u16); void sub_80FF6AC(u8); void sub_80FF960(u8); diff --git a/include/decoration_inventory.h b/include/decoration_inventory.h index afc354237..e59a23008 100644 --- a/include/decoration_inventory.h +++ b/include/decoration_inventory.h @@ -2,9 +2,11 @@ #define GUARD_DECORATION_INVENTORY_H void ClearDecorationInventories(void); +s8 sub_8133F9C(u8); u8 sub_8133FE4(u8); u8 IsThereStorageSpaceForDecoration(u8); u8 sub_8134074(u8); s8 sub_81340A8(u8); +u8 sub_8134194(u8); #endif // GUARD_DECORATION_INVENTORY_H diff --git a/include/diploma.h b/include/diploma.h index 81e9e3bb2..8d730fa05 100644 --- a/include/diploma.h +++ b/include/diploma.h @@ -1,6 +1,6 @@ #ifndef GUARD_DIPLOMA_H #define GUARD_DIPLOMA_H -void sub_8145D88(void); +void CB2_ShowDiploma(void); #endif // GUARD_DIPLOMA_H diff --git a/include/easy_chat.h b/include/easy_chat.h index 03e9bb737..8a820353f 100644 --- a/include/easy_chat.h +++ b/include/easy_chat.h @@ -1,7 +1,8 @@ #ifndef GUARD_EASYCHAT_H #define GUARD_EASYCHAT_H -enum { +enum +{ EC_GROUP_POKEMON, EC_GROUP_TRAINER, EC_GROUP_STATUS, @@ -26,6 +27,1045 @@ enum { EC_GROUP_POKEMON_2, }; +enum { + EC_WORD_I_CHOOSE_YOU = EC_GROUP_TRAINER << 9, + EC_WORD_GOTCHA, + EC_WORD_TRADE, + EC_WORD_SAPPHIRE, + EC_WORD_EVOLVE, + EC_WORD_ENCYCLOPEDIA, + EC_WORD_NATURE, + EC_WORD_CENTER, + EC_WORD_EGG, + EC_WORD_LINK, + EC_WORD_SP_ABILITY, + EC_WORD_TRAINER, + EC_WORD_VERSION, + EC_WORD_POKENAV, + EC_WORD_POKEMON, + EC_WORD_GET, + EC_WORD_POKEDEX, + EC_WORD_RUBY, + EC_WORD_LEVEL +}; +enum { + EC_WORD_DARK = EC_GROUP_STATUS << 9, + EC_WORD_STENCH, + EC_WORD_THICK_FAT, + EC_WORD_RAIN_DISH, + EC_WORD_DRIZZLE, + EC_WORD_ARENA_TRAP, + EC_WORD_INTIMIDATE, + EC_WORD_ROCK_HEAD, + EC_WORD_COLOR, + EC_WORD_ALT_COLOR, + EC_WORD_ROCK, + EC_WORD_BEAUTIFUL, + EC_WORD_BEAUTY, + EC_WORD_AIR_LOCK, + EC_WORD_PSYCHIC, + EC_WORD_HYPER_CUTTER, + EC_WORD_FIGHTING, + EC_WORD_SHADOW_TAG, + EC_WORD_SMART, + EC_WORD_SMARTNESS, + EC_WORD_SPEED_BOOST, + EC_WORD_COOL, + EC_WORD_COOLNESS, + EC_WORD_BATTLE_ARMOR, + EC_WORD_CUTE, + EC_WORD_CUTENESS, + EC_WORD_STURDY, + EC_WORD_SUCTION_CUPS, + EC_WORD_GRASS, + EC_WORD_CLEAR_BODY, + EC_WORD_TORRENT, + EC_WORD_GHOST, + EC_WORD_ICE, + EC_WORD_GUTS, + EC_WORD_ROUGH_SKIN, + EC_WORD_SHELL_ARMOR, + EC_WORD_NATURAL_CURE, + EC_WORD_DAMP, + EC_WORD_GROUND, + EC_WORD_LIMBER, + EC_WORD_MAGNET_PULL, + EC_WORD_WHITE_SMOKE, + EC_WORD_SYNCHRONIZE, + EC_WORD_OVERGROW, + EC_WORD_SWIFT_SWIM, + EC_WORD_SAND_STREAM, + EC_WORD_SAND_VEIL, + EC_WORD_KEEN_EYE, + EC_WORD_INNER_FOCUS, + EC_WORD_STATIC, + EC_WORD_TYPE, + EC_WORD_TOUGH, + EC_WORD_TOUGHNESS, + EC_WORD_SHED_SKIN, + EC_WORD_HUGE_POWER, + EC_WORD_VOLT_ABSORB, + EC_WORD_WATER_ABSORB, + EC_WORD_ELECTRIC, + EC_WORD_FORECAST, + EC_WORD_SERENE_GRACE, + EC_WORD_POISON, + EC_WORD_POISON_POINT, + EC_WORD_DRAGON, + EC_WORD_TRACE, + EC_WORD_OBLIVIOUS, + EC_WORD_TRUANT, + EC_WORD_RUN_AWAY, + EC_WORD_STICKY_HOLD, + EC_WORD_CLOUD_NINE, + EC_WORD_NORMAL, + EC_WORD_STEEL, + EC_WORD_ILLUMINATE, + EC_WORD_EARLY_BIRD, + EC_WORD_HUSTLE, + EC_WORD_SHINE, + EC_WORD_FLYING, + EC_WORD_DROUGHT, + EC_WORD_LIGHTNINGROD, + EC_WORD_COMPOUNDEYES, + EC_WORD_MARVEL_SCALE, + EC_WORD_WONDER_GUARD, + EC_WORD_INSOMNIA, + EC_WORD_LEVITATE, + EC_WORD_PLUS, + EC_WORD_PRESSURE, + EC_WORD_LIQUID_OOZE, + EC_WORD_COLOR_CHANGE, + EC_WORD_SOUNDPROOF, + EC_WORD_EFFECT_SPORE, + EC_WORD_PKRS, + EC_WORD_FIRE, + EC_WORD_FLAME_BODY, + EC_WORD_MINUS, + EC_WORD_OWN_TEMPO, + EC_WORD_MAGMA_ARMOR, + EC_WORD_WATER, + EC_WORD_WATER_VEIL, + EC_WORD_BUG, + EC_WORD_SWARM, + EC_WORD_CUTE_CHARM, + EC_WORD_IMMUNITY, + EC_WORD_BLAZE, + EC_WORD_PICKUP, + EC_WORD_PATTERN, + EC_WORD_FLASH_FIRE, + EC_WORD_VITAL_SPIRIT, + EC_WORD_CHLOROPHYLL, + EC_WORD_PURE_POWER, + EC_WORD_SHIELD_DUST, +}; +enum { + EC_WORD_MATCH_UP = EC_GROUP_BATTLE << 9, + EC_WORD_GO, + EC_WORD_NO_1, + EC_WORD_DECIDE, + EC_WORD_LET_ME_WIN, + EC_WORD_WINS, + EC_WORD_WIN, + EC_WORD_WON, + EC_WORD_IF_I_WIN, + EC_WORD_WHEN_I_WIN, + EC_WORD_CAN_T_WIN, + EC_WORD_CAN_WIN, + EC_WORD_NO_MATCH, + EC_WORD_SPIRIT, + EC_WORD_DECIDED, + EC_WORD_TRUMP_CARD, + EC_WORD_TAKE_THAT, + EC_WORD_COME_ON, + EC_WORD_ATTACK, + EC_WORD_SURRENDER, + EC_WORD_GUTSY, + EC_WORD_TALENT, + EC_WORD_STRATEGY, + EC_WORD_SMITE, + EC_WORD_MATCH, + EC_WORD_VICTORY, + EC_WORD_OFFENSIVE, + EC_WORD_SENSE, + EC_WORD_VERSUS, + EC_WORD_FIGHTS, + EC_WORD_POWER, + EC_WORD_CHALLENGE, + EC_WORD_STRONG, + EC_WORD_TOO_STRONG, + EC_WORD_GO_EASY, + EC_WORD_FOE, + EC_WORD_GENIUS, + EC_WORD_LEGEND, + EC_WORD_ESCAPE, + EC_WORD_AIM, + EC_WORD_BATTLE, + EC_WORD_FIGHT, + EC_WORD_RESUSCITATE, + EC_WORD_POINTS, + EC_WORD_SERIOUS, + EC_WORD_GIVE_UP, + EC_WORD_LOSS, + EC_WORD_IF_I_LOSE, + EC_WORD_LOST, + EC_WORD_LOSE, + EC_WORD_GUARD, + EC_WORD_PARTNER, + EC_WORD_REJECT, + EC_WORD_ACCEPT, + EC_WORD_INVINCIBLE, + EC_WORD_RECEIVED, + EC_WORD_EASY, + EC_WORD_WEAK, + EC_WORD_TOO_WEAK, + EC_WORD_PUSHOVER, + EC_WORD_LEADER, + EC_WORD_RULE, + EC_WORD_MOVE +}; +enum { + EC_WORD_THANKS = EC_GROUP_GREETINGS << 9, + EC_WORD_YES, + EC_WORD_HERE_GOES, + EC_WORD_HERE_I_COME, + EC_WORD_HERE_IT_IS, + EC_WORD_YEAH, + EC_WORD_WELCOME, + EC_WORD_OI, + EC_WORD_HOW_DO, + EC_WORD_CONGRATS, + EC_WORD_GIVE_ME, + EC_WORD_SORRY, + EC_WORD_APOLOGIZE, + EC_WORD_FORGIVE, + EC_WORD_HEY_THERE, + EC_WORD_HELLO, + EC_WORD_GOOD_BYE, + EC_WORD_THANK_YOU, + EC_WORD_I_VE_ARRIVED, + EC_WORD_PARDON, + EC_WORD_EXCUSE, + EC_WORD_SEE_YA, + EC_WORD_EXCUSE_ME, + EC_WORD_WELL_THEN, + EC_WORD_GO_AHEAD, + EC_WORD_APPRECIATE, + EC_WORD_HEY_QUES, + EC_WORD_WHAT_S_UP_QUES, + EC_WORD_HUH_QUES, + EC_WORD_NO, + EC_WORD_HI, + EC_WORD_YEAH_YEAH, + EC_WORD_BYE_BYE, + EC_WORD_MEET_YOU, + EC_WORD_HEY, + EC_WORD_SMELL, + EC_WORD_LISTENING, + EC_WORD_HOO_HAH, + EC_WORD_YAHOO, + EC_WORD_YO, + EC_WORD_COME_OVER, + EC_WORD_COUNT_ON +}; +enum { + EC_WORD_OPPONENT = EC_GROUP_PEOPLE << 9, + EC_WORD_I, + EC_WORD_YOU, + EC_WORD_YOURS, + EC_WORD_SON, + EC_WORD_YOUR, + EC_WORD_YOU_RE, + EC_WORD_YOU_VE, + EC_WORD_MOTHER, + EC_WORD_GRANDFATHER, + EC_WORD_UNCLE, + EC_WORD_FATHER, + EC_WORD_BOY, + EC_WORD_ADULT, + EC_WORD_BROTHER, + EC_WORD_SISTER, + EC_WORD_GRANDMOTHER, + EC_WORD_AUNT, + EC_WORD_PARENT, + EC_WORD_MAN, + EC_WORD_ME, + EC_WORD_GIRL, + EC_WORD_BABE, + EC_WORD_FAMILY, + EC_WORD_HER, + EC_WORD_HIM, + EC_WORD_HE, + EC_WORD_PLACE, + EC_WORD_DAUGHTER, + EC_WORD_HIS, + EC_WORD_HE_S, + EC_WORD_AREN_T, + EC_WORD_SIBLINGS, + EC_WORD_KID, + EC_WORD_CHILDREN, + EC_WORD_MR, + EC_WORD_MRS, + EC_WORD_MYSELF, + EC_WORD_I_WAS, + EC_WORD_TO_ME, + EC_WORD_MY, + EC_WORD_I_AM, + EC_WORD_I_VE, + EC_WORD_WHO, + EC_WORD_SOMEONE, + EC_WORD_WHO_WAS, + EC_WORD_TO_WHOM, + EC_WORD_WHOSE, + EC_WORD_WHO_IS, + EC_WORD_IT_S, + EC_WORD_LADY, + EC_WORD_FRIEND, + EC_WORD_ALLY, + EC_WORD_PERSON, + EC_WORD_DUDE, + EC_WORD_THEY, + EC_WORD_THEY_WERE, + EC_WORD_TO_THEM, + EC_WORD_THEIR, + EC_WORD_THEY_RE, + EC_WORD_THEY_VE, + EC_WORD_WE, + EC_WORD_BEEN, + EC_WORD_TO_US, + EC_WORD_OUR, + EC_WORD_WE_RE, + EC_WORD_RIVAL, + EC_WORD_WE_VE, + EC_WORD_WOMAN, + EC_WORD_SHE, + EC_WORD_SHE_WAS, + EC_WORD_TO_HER, + EC_WORD_HERS, + EC_WORD_SHE_IS, + EC_WORD_SOME +}; +enum { + EC_WORD_EXCL = EC_GROUP_VOICES << 9, + EC_WORD_EXCL_EXCL, + EC_WORD_QUES_EXCL, + EC_WORD_QUES, + EC_WORD_ELLIPSIS, + EC_WORD_ELLIPSIS_EXCL, + EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS, + EC_WORD_DASH, + EC_WORD_DASH_DASH_DASH, + EC_WORD_UH_OH, + EC_WORD_WAAAH, + EC_WORD_AHAHA, + EC_WORD_OH_QUES, + EC_WORD_NOPE, + EC_WORD_URGH, + EC_WORD_HMM, + EC_WORD_WHOAH, + EC_WORD_WROOOAAR_EXCL, + EC_WORD_WOW, + EC_WORD_GIGGLE, + EC_WORD_SIGH, + EC_WORD_UNBELIEVABLE, + EC_WORD_CRIES, + EC_WORD_AGREE, + EC_WORD_EH_QUES, + EC_WORD_CRY, + EC_WORD_EHEHE, + EC_WORD_OI_OI_OI, + EC_WORD_OH_YEAH, + EC_WORD_OH, + EC_WORD_OOPS, + EC_WORD_SHOCKED, + EC_WORD_EEK, + EC_WORD_GRAAAH, + EC_WORD_GWAHAHAHA, + EC_WORD_WAY, + EC_WORD_TCH, + EC_WORD_HEHE, + EC_WORD_HAH, + EC_WORD_YUP, + EC_WORD_HAHAHA, + EC_WORD_AIYEEH, + EC_WORD_HIYAH, + EC_WORD_FUFUFU, + EC_WORD_LOL, + EC_WORD_SNORT, + EC_WORD_HUMPH, + EC_WORD_HEHEHE, + EC_WORD_HEH, + EC_WORD_HOHOHO, + EC_WORD_UH_HUH, + EC_WORD_OH_DEAR, + EC_WORD_ARRGH, + EC_WORD_MUFUFU, + EC_WORD_MMM, + EC_WORD_OH_KAY, + EC_WORD_OKAY, + EC_WORD_LALALA, + EC_WORD_YAY, + EC_WORD_AWW, + EC_WORD_WOWEE, + EC_WORD_GWAH, + EC_WORD_WAHAHAHA +}; +enum { + EC_WORD_LISTEN = EC_GROUP_SPEECH << 9, + EC_WORD_NOT_VERY, + EC_WORD_MEAN, + EC_WORD_LIE, + EC_WORD_LAY, + EC_WORD_RECOMMEND, + EC_WORD_NITWIT, + EC_WORD_QUITE, + EC_WORD_FROM, + EC_WORD_FEELING, + EC_WORD_BUT, + EC_WORD_HOWEVER, + EC_WORD_CASE, + EC_WORD_THE, + EC_WORD_MISS, + EC_WORD_HOW, + EC_WORD_HIT, + EC_WORD_ENOUGH, + EC_WORD_A_LOT, + EC_WORD_A_LITTLE, + EC_WORD_ABSOLUTELY, + EC_WORD_AND, + EC_WORD_ONLY, + EC_WORD_AROUND, + EC_WORD_PROBABLY, + EC_WORD_IF, + EC_WORD_VERY, + EC_WORD_A_TINY_BIT, + EC_WORD_WILD, + EC_WORD_THAT_S, + EC_WORD_JUST, + EC_WORD_EVEN_SO, + EC_WORD_MUST_BE, + EC_WORD_NATURALLY, + EC_WORD_FOR_NOW, + EC_WORD_UNDERSTOOD, + EC_WORD_JOKING, + EC_WORD_READY, + EC_WORD_SOMETHING, + EC_WORD_SOMEHOW, + EC_WORD_ALTHOUGH, + EC_WORD_ALSO, + EC_WORD_PERFECT, + EC_WORD_AS_MUCH_AS, + EC_WORD_REALLY, + EC_WORD_TRULY, + EC_WORD_SERIOUSLY, + EC_WORD_TOTALLY, + EC_WORD_UNTIL, + EC_WORD_AS_IF, + EC_WORD_MOOD, + EC_WORD_RATHER, + EC_WORD_AWFULLY, + EC_WORD_MODE, + EC_WORD_MORE, + EC_WORD_TOO_LATE, + EC_WORD_FINALLY, + EC_WORD_ANY, + EC_WORD_INSTEAD, + EC_WORD_FANTASTIC +}; +enum { + EC_WORD_WILL = EC_GROUP_ENDINGS << 9, + EC_WORD_WILL_BE_HERE, + EC_WORD_OR, + EC_WORD_TIMES, + EC_WORD_WONDER, + EC_WORD_IS_IT_QUES, + EC_WORD_BE, + EC_WORD_GIMME, + EC_WORD_COULD, + EC_WORD_LIKELY_TO, + EC_WORD_WOULD, + EC_WORD_IS, + EC_WORD_ISN_T_IT_QUES, + EC_WORD_LET_S, + EC_WORD_OTHER, + EC_WORD_ARE, + EC_WORD_WAS, + EC_WORD_WERE, + EC_WORD_THOSE, + EC_WORD_ISN_T, + EC_WORD_WON_T, + EC_WORD_CAN_T, + EC_WORD_CAN, + EC_WORD_DON_T, + EC_WORD_DO, + EC_WORD_DOES, + EC_WORD_WHOM, + EC_WORD_WHICH, + EC_WORD_WASN_T, + EC_WORD_WEREN_T, + EC_WORD_HAVE, + EC_WORD_HAVEN_T, + EC_WORD_A, + EC_WORD_AN, + EC_WORD_NOT, + EC_WORD_THERE, + EC_WORD_OK_QUES, + EC_WORD_SO, + EC_WORD_MAYBE, + EC_WORD_ABOUT, + EC_WORD_OVER, + EC_WORD_IT, + EC_WORD_ALL, + EC_WORD_FOR, + EC_WORD_ON, + EC_WORD_OFF, + EC_WORD_AS, + EC_WORD_TO, + EC_WORD_WITH, + EC_WORD_BETTER, + EC_WORD_EVER, + EC_WORD_SINCE, + EC_WORD_OF, + EC_WORD_BELONGS_TO, + EC_WORD_AT, + EC_WORD_IN, + EC_WORD_OUT, + EC_WORD_TOO, + EC_WORD_LIKE, + EC_WORD_DID, + EC_WORD_DIDN_T, + EC_WORD_DOESN_T, + EC_WORD_WITHOUT, + EC_WORD_AFTER, + EC_WORD_BEFORE, + EC_WORD_WHILE, + EC_WORD_THAN, + EC_WORD_ONCE, + EC_WORD_ANYWHERE +}; +enum { + EC_WORD_MEET = EC_GROUP_FEELINGS << 9, + EC_WORD_PLAY, + EC_WORD_HURRIED, + EC_WORD_GOES, + EC_WORD_GIDDY, + EC_WORD_HAPPY, + EC_WORD_HAPPINESS, + EC_WORD_EXCITE, + EC_WORD_IMPORTANT, + EC_WORD_FUNNY, + EC_WORD_GOT, + EC_WORD_GO_HOME, + EC_WORD_DISAPPOINTED, + EC_WORD_DISAPPOINTS, + EC_WORD_SAD, + EC_WORD_TRY, + EC_WORD_TRIES, + EC_WORD_HEARS, + EC_WORD_THINK, + EC_WORD_HEAR, + EC_WORD_WANTS, + EC_WORD_MISHEARD, + EC_WORD_DISLIKE, + EC_WORD_ANGRY, + EC_WORD_ANGER, + EC_WORD_SCARY, + EC_WORD_LONESOME, + EC_WORD_DISAPPOINT, + EC_WORD_JOY, + EC_WORD_GETS, + EC_WORD_NEVER, + EC_WORD_DARN, + EC_WORD_DOWNCAST, + EC_WORD_INCREDIBLE, + EC_WORD_LIKES, + EC_WORD_DISLIKES, + EC_WORD_BORING, + EC_WORD_CARE, + EC_WORD_CARES, + EC_WORD_ALL_RIGHT, + EC_WORD_ADORE, + EC_WORD_DISASTER, + EC_WORD_ENJOY, + EC_WORD_ENJOYS, + EC_WORD_EAT, + EC_WORD_LACKING, + EC_WORD_BAD, + EC_WORD_HARD, + EC_WORD_TERRIBLE, + EC_WORD_SHOULD, + EC_WORD_NICE, + EC_WORD_DRINK, + EC_WORD_SURPRISE, + EC_WORD_FEAR, + EC_WORD_WANT, + EC_WORD_WAIT, + EC_WORD_SATISFIED, + EC_WORD_SEE, + EC_WORD_RARE, + EC_WORD_NEGATIVE, + EC_WORD_DONE, + EC_WORD_DANGER, + EC_WORD_DEFEATED, + EC_WORD_BEAT, + EC_WORD_GREAT, + EC_WORD_ROMANTIC, + EC_WORD_QUESTION, + EC_WORD_UNDERSTAND, + EC_WORD_UNDERSTANDS +}; +enum { + EC_WORD_HOT = EC_GROUP_CONDITIONS << 9, + EC_WORD_EXISTS, + EC_WORD_EXCESS, + EC_WORD_APPROVED, + EC_WORD_HAS, + EC_WORD_GOOD, + EC_WORD_LESS, + EC_WORD_MOMENTUM, + EC_WORD_GOING, + EC_WORD_WEIRD, + EC_WORD_BUSY, + EC_WORD_TOGETHER, + EC_WORD_FULL, + EC_WORD_ABSENT, + EC_WORD_BEING, + EC_WORD_NEED, + EC_WORD_TASTY, + EC_WORD_SKILLED, + EC_WORD_NOISY, + EC_WORD_BIG, + EC_WORD_LATE, + EC_WORD_CLOSE, + EC_WORD_DOCILE, + EC_WORD_AMUSING, + EC_WORD_ENTERTAINING, + EC_WORD_PERFECTION, + EC_WORD_PRETTY, + EC_WORD_HEALTHY, + EC_WORD_EXCELLENT, + EC_WORD_UPSIDE_DOWN, + EC_WORD_COLD, + EC_WORD_REFRESHING, + EC_WORD_UNAVOIDABLE, + EC_WORD_MUCH, + EC_WORD_OVERWHELMING, + EC_WORD_FABULOUS, + EC_WORD_ELSE, + EC_WORD_EXPENSIVE, + EC_WORD_CORRECT, + EC_WORD_IMPOSSIBLE, + EC_WORD_SMALL, + EC_WORD_DIFFERENT, + EC_WORD_TIRED, + EC_WORD_SKILL, + EC_WORD_TOP, + EC_WORD_NON_STOP, + EC_WORD_PREPOSTEROUS, + EC_WORD_NONE, + EC_WORD_NOTHING, + EC_WORD_NATURAL, + EC_WORD_BECOMES, + EC_WORD_LUKEWARM, + EC_WORD_FAST, + EC_WORD_LOW, + EC_WORD_AWFUL, + EC_WORD_ALONE, + EC_WORD_BORED, + EC_WORD_SECRET, + EC_WORD_MYSTERY, + EC_WORD_LACKS, + EC_WORD_BEST, + EC_WORD_LOUSY, + EC_WORD_MISTAKE, + EC_WORD_KIND, + EC_WORD_WELL, + EC_WORD_WEAKENED, + EC_WORD_SIMPLE, + EC_WORD_SEEMS, + EC_WORD_BADLY +}; +enum { + EC_WORD_MEETS = EC_GROUP_ACTIONS << 9, + EC_WORD_CONCEDE, + EC_WORD_GIVE, + EC_WORD_GIVES, + EC_WORD_PLAYED, + EC_WORD_PLAYS, + EC_WORD_COLLECT, + EC_WORD_WALKING, + EC_WORD_WALKS, + EC_WORD_SAYS, + EC_WORD_WENT, + EC_WORD_SAID, + EC_WORD_WAKE_UP, + EC_WORD_WAKES_UP, + EC_WORD_ANGERS, + EC_WORD_TEACH, + EC_WORD_TEACHES, + EC_WORD_PLEASE, + EC_WORD_LEARN, + EC_WORD_CHANGE, + EC_WORD_STORY, + EC_WORD_TRUST, + EC_WORD_LAVISH, + EC_WORD_LISTENS, + EC_WORD_HEARING, + EC_WORD_TRAINS, + EC_WORD_CHOOSE, + EC_WORD_COME, + EC_WORD_CAME, + EC_WORD_SEARCH, + EC_WORD_MAKE, + EC_WORD_CAUSE, + EC_WORD_KNOW, + EC_WORD_KNOWS, + EC_WORD_REFUSE, + EC_WORD_STORES, + EC_WORD_BRAG, + EC_WORD_IGNORANT, + EC_WORD_THINKS, + EC_WORD_BELIEVE, + EC_WORD_SLIDE, + EC_WORD_EATS, + EC_WORD_USE, + EC_WORD_USES, + EC_WORD_USING, + EC_WORD_COULDN_T, + EC_WORD_CAPABLE, + EC_WORD_DISAPPEAR, + EC_WORD_APPEAR, + EC_WORD_THROW, + EC_WORD_WORRY, + EC_WORD_SLEPT, + EC_WORD_SLEEP, + EC_WORD_RELEASE, + EC_WORD_DRINKS, + EC_WORD_RUNS, + EC_WORD_RUN, + EC_WORD_WORKS, + EC_WORD_WORKING, + EC_WORD_TALKING, + EC_WORD_TALK, + EC_WORD_SINK, + EC_WORD_SMACK, + EC_WORD_PRETEND, + EC_WORD_PRAISE, + EC_WORD_OVERDO, + EC_WORD_SHOW, + EC_WORD_LOOKS, + EC_WORD_SEES, + EC_WORD_SEEK, + EC_WORD_OWN, + EC_WORD_TAKE, + EC_WORD_ALLOW, + EC_WORD_FORGET, + EC_WORD_FORGETS, + EC_WORD_APPEARS, + EC_WORD_FAINT, + EC_WORD_FAINTED +}; +enum { + EC_WORD_CHORES = EC_GROUP_LIFESTYLE << 9, + EC_WORD_HOME, + EC_WORD_MONEY, + EC_WORD_ALLOWANCE, + EC_WORD_BATH, + EC_WORD_CONVERSATION, + EC_WORD_SCHOOL, + EC_WORD_COMMEMORATE, + EC_WORD_HABIT, + EC_WORD_GROUP, + EC_WORD_WORD, + EC_WORD_STORE, + EC_WORD_SERVICE, + EC_WORD_WORK, + EC_WORD_SYSTEM, + EC_WORD_TRAIN, + EC_WORD_CLASS, + EC_WORD_LESSONS, + EC_WORD_INFORMATION, + EC_WORD_LIVING, + EC_WORD_TEACHER, + EC_WORD_TOURNAMENT, + EC_WORD_LETTER, + EC_WORD_EVENT, + EC_WORD_DIGITAL, + EC_WORD_TEST, + EC_WORD_DEPT_STORE, + EC_WORD_TELEVISION, + EC_WORD_PHONE, + EC_WORD_ITEM, + EC_WORD_NAME, + EC_WORD_NEWS, + EC_WORD_POPULAR, + EC_WORD_PARTY, + EC_WORD_STUDY, + EC_WORD_MACHINE, + EC_WORD_MAIL, + EC_WORD_MESSAGE, + EC_WORD_PROMISE, + EC_WORD_DREAM, + EC_WORD_KINDERGARTEN, + EC_WORD_LIFE, + EC_WORD_RADIO, + EC_WORD_RENTAL, + EC_WORD_WORLD +}; +enum { + EC_WORD_IDOL = EC_GROUP_HOBBIES << 9, + EC_WORD_ANIME, + EC_WORD_SONG, + EC_WORD_MOVIE, + EC_WORD_SWEETS, + EC_WORD_CHAT, + EC_WORD_CHILD_S_PLAY, + EC_WORD_TOYS, + EC_WORD_MUSIC, + EC_WORD_CARDS, + EC_WORD_SHOPPING, + EC_WORD_CAMERA, + EC_WORD_VIEWING, + EC_WORD_SPECTATOR, + EC_WORD_GOURMET, + EC_WORD_GAME, + EC_WORD_RPG, + EC_WORD_COLLECTION, + EC_WORD_COMPLETE, + EC_WORD_MAGAZINE, + EC_WORD_WALK, + EC_WORD_BIKE, + EC_WORD_HOBBY, + EC_WORD_SPORTS, + EC_WORD_SOFTWARE, + EC_WORD_SONGS, + EC_WORD_DIET, + EC_WORD_TREASURE, + EC_WORD_TRAVEL, + EC_WORD_DANCE, + EC_WORD_CHANNEL, + EC_WORD_MAKING, + EC_WORD_FISHING, + EC_WORD_DATE, + EC_WORD_DESIGN, + EC_WORD_LOCOMOTIVE, + EC_WORD_PLUSH_DOLL, + EC_WORD_PC, + EC_WORD_FLOWERS, + EC_WORD_HERO, + EC_WORD_NAP, + EC_WORD_HEROINE, + EC_WORD_FASHION, + EC_WORD_ADVENTURE, + EC_WORD_BOARD, + EC_WORD_BALL, + EC_WORD_BOOK, + EC_WORD_FESTIVAL, + EC_WORD_COMICS, + EC_WORD_HOLIDAY, + EC_WORD_PLANS, + EC_WORD_TRENDY, + EC_WORD_VACATION, + EC_WORD_LOOK +}; +enum { + EC_WORD_FALL = EC_GROUP_TIME << 9, + EC_WORD_MORNING, + EC_WORD_TOMORROW, + EC_WORD_LAST, + EC_WORD_DAY, + EC_WORD_SOMETIME, + EC_WORD_ALWAYS, + EC_WORD_CURRENT, + EC_WORD_FOREVER, + EC_WORD_DAYS, + EC_WORD_END, + EC_WORD_TUESDAY, + EC_WORD_YESTERDAY, + EC_WORD_TODAY, + EC_WORD_FRIDAY, + EC_WORD_MONDAY, + EC_WORD_LATER, + EC_WORD_EARLIER, + EC_WORD_ANOTHER, + EC_WORD_TIME, + EC_WORD_FINISH, + EC_WORD_WEDNESDAY, + EC_WORD_SOON, + EC_WORD_START, + EC_WORD_MONTH, + EC_WORD_STOP, + EC_WORD_NOW, + EC_WORD_FINAL, + EC_WORD_NEXT, + EC_WORD_AGE, + EC_WORD_SATURDAY, + EC_WORD_SUMMER, + EC_WORD_SUNDAY, + EC_WORD_BEGINNING, + EC_WORD_SPRING, + EC_WORD_DAYTIME, + EC_WORD_WINTER, + EC_WORD_DAILY, + EC_WORD_OLDEN, + EC_WORD_ALMOST, + EC_WORD_NEARLY, + EC_WORD_THURSDAY, + EC_WORD_NIGHTTIME, + EC_WORD_NIGHT, + EC_WORD_WEEK +}; +enum { + EC_WORD_HIGHS = EC_GROUP_MISC << 9, + EC_WORD_LOWS, + EC_WORD_UM, + EC_WORD_REAR, + EC_WORD_THINGS, + EC_WORD_THING, + EC_WORD_BELOW, + EC_WORD_ABOVE, + EC_WORD_BACK, + EC_WORD_HIGH, + EC_WORD_HERE, + EC_WORD_INSIDE, + EC_WORD_OUTSIDE, + EC_WORD_BESIDE, + EC_WORD_THIS_IS_IT_EXCL, + EC_WORD_THIS, + EC_WORD_EVERY, + EC_WORD_THESE, + EC_WORD_THESE_WERE, + EC_WORD_DOWN, + EC_WORD_THAT, + EC_WORD_THOSE_ARE, + EC_WORD_THOSE_WERE, + EC_WORD_THAT_S_IT_EXCL, + EC_WORD_AM, + EC_WORD_THAT_WAS, + EC_WORD_FRONT, + EC_WORD_UP, + EC_WORD_CHOICE, + EC_WORD_FAR, + EC_WORD_AWAY, + EC_WORD_NEAR, + EC_WORD_WHERE, + EC_WORD_WHEN, + EC_WORD_WHAT, + EC_WORD_DEEP, + EC_WORD_SHALLOW, + EC_WORD_WHY, + EC_WORD_CONFUSED, + EC_WORD_OPPOSITE, + EC_WORD_LEFT, + EC_WORD_RIGHT +}; +enum { + EC_WORD_WANDERING = EC_GROUP_ADJECTIVES << 9, + EC_WORD_RICKETY, + EC_WORD_ROCK_SOLID, + EC_WORD_HUNGRY, + EC_WORD_TIGHT, + EC_WORD_TICKLISH, + EC_WORD_TWIRLING, + EC_WORD_SPIRALING, + EC_WORD_THIRSTY, + EC_WORD_LOLLING, + EC_WORD_SILKY, + EC_WORD_SADLY, + EC_WORD_HOPELESS, + EC_WORD_USELESS, + EC_WORD_DROOLING, + EC_WORD_EXCITING, + EC_WORD_THICK, + EC_WORD_SMOOTH, + EC_WORD_SLIMY, + EC_WORD_THIN, + EC_WORD_BREAK, + EC_WORD_VORACIOUS, + EC_WORD_SCATTER, + EC_WORD_AWESOME, + EC_WORD_WIMPY, + EC_WORD_WOBBLY, + EC_WORD_SHAKY, + EC_WORD_RIPPED, + EC_WORD_SHREDDED, + EC_WORD_INCREASING, + EC_WORD_YET, + EC_WORD_DESTROYED, + EC_WORD_FIERY, + EC_WORD_LOVEY_DOVEY, + EC_WORD_HAPPILY, + EC_WORD_ANTICIPATION +}; +enum { + EC_WORD_APPEAL = EC_GROUP_EVENTS << 9, + EC_WORD_EVENTS, + EC_WORD_STAY_AT_HOME, + EC_WORD_BERRY, + EC_WORD_CONTEST, + EC_WORD_MC, + EC_WORD_JUDGE, + EC_WORD_SUPER, + EC_WORD_STAGE, + EC_WORD_HALL_OF_FAME, + EC_WORD_EVOLUTION, + EC_WORD_HYPER, + EC_WORD_BATTLE_TOWER, + EC_WORD_LEADERS, + EC_WORD_BATTLE_ROOM, + EC_WORD_HIDDEN, + EC_WORD_SECRET_BASE, + EC_WORD_BLEND, + EC_WORD_POKEBLOCK, + EC_WORD_MASTER, + EC_WORD_RANK, + EC_WORD_RIBBON +}; +enum { + EC_WORD_KTHX_BYE = EC_GROUP_TRENDY_SAYING << 9, + EC_WORD_YES_SIR_EXCL, + EC_WORD_AVANT_GARDE, + EC_WORD_COUPLE, + EC_WORD_MUCH_OBLIGED, + EC_WORD_YEEHAW_EXCL, + EC_WORD_MEGA, + EC_WORD_1_HIT_KO_EXCL, + EC_WORD_DESTINY, + EC_WORD_CANCEL, + EC_WORD_NEW, + EC_WORD_FLATTEN, + EC_WORD_KIDDING, + EC_WORD_LOSER, + EC_WORD_LOSING, + EC_WORD_HAPPENING, + EC_WORD_HIP_AND, + EC_WORD_SHAKE, + EC_WORD_SHADY, + EC_WORD_UPBEAT, + EC_WORD_MODERN, + EC_WORD_SMELL_YA, + EC_WORD_BANG, + EC_WORD_KNOCKOUT, + EC_WORD_HASSLE, + EC_WORD_WINNER, + EC_WORD_FEVER, + EC_WORD_WANNABE, + EC_WORD_BABY, + EC_WORD_HEART, + EC_WORD_OLD, + EC_WORD_YOUNG, + EC_WORD_UGLY +}; + +#define EC_POKEMON(mon) ((EC_GROUP_POKEMON << 9) | SPECIES_##mon) +#define EC_POKEMON2(mon) ((EC_GROUP_POKEMON_2 << 9) | SPECIES_##mon) +#define EC_MOVE(move) ((EC_GROUP_MOVE_1 << 9) | MOVE_##move) +#define EC_MOVE2(move) ((EC_GROUP_MOVE_2 << 9) | MOVE_##move) + +#define EC_GROUP(word) ((word) >> 9) +#define EC_INDEX(word) ((word) & 0x1FF) + +extern u8 gUnknown_020388AC; u16 sub_80EB72C(u16 group); void sub_80EB6FC(u16 *, u16); @@ -33,7 +1073,7 @@ void InitEasyChatPhrases(void); u8 sub_80EAD7C(u8 group); u16 sub_80EAE88(u8); u8 sub_80EB37C(u16); -u8* sub_80EB3FC(u8 *, u16); +u8* EasyChat_GetWordText(u8 *, u16); u8 *ConvertEasyChatWordsToString(u8 *dst, u16 *words, u16, u16); u16 sub_80EB784(u16 group); u8 sub_80EB868(u8); diff --git a/include/event_data.h b/include/event_data.h index 5cac27cc8..ae048af4c 100644 --- a/include/event_data.h +++ b/include/event_data.h @@ -22,7 +22,23 @@ bool8 VarSet(u16 id, u16 value); u8 VarGetFieldObjectGraphicsId(u8 id); u8 *GetFlagPointer(u16 id); u8 FlagSet(u16 id); -u8 FlagReset(u16 id); +u8 FlagClear(u16 id); bool8 FlagGet(u16 id); +extern u16 gSpecialVar_0x8000; +extern u16 gSpecialVar_0x8001; +extern u16 gSpecialVar_0x8002; +extern u16 gSpecialVar_0x8003; +extern u16 gSpecialVar_0x8004; +extern u16 gSpecialVar_0x8005; +extern u16 gSpecialVar_0x8006; +extern u16 gSpecialVar_0x8007; +extern u16 gSpecialVar_0x8008; +extern u16 gSpecialVar_0x8009; +extern u16 gSpecialVar_0x800A; +extern u16 gSpecialVar_0x800B; +extern u16 gScriptResult; +extern u16 gScriptLastTalked; +extern u16 gScriptFacing; + #endif // GUARD_EVENT_DATA_H diff --git a/include/evolution_graphics.h b/include/evolution_graphics.h new file mode 100644 index 000000000..a960f637b --- /dev/null +++ b/include/evolution_graphics.h @@ -0,0 +1,15 @@ +#ifndef GUARD_EVOLUTION_GRAPHICS_H +#define GUARD_EVOLUTION_GRAPHICS_H + +void LoadEvoSparkleSpriteAndPal(void); + +u8 LaunchTask_PreEvoSparklesSet1(u16 arg0); +u8 LaunchTask_PreEvoSparklesSet2(void); +u8 LaunchTask_PostEvoSparklesSet1(void); +u8 LaunchTask_PostEvoSparklesSet2AndFlash(u16 species); +u8 LaunchTask_PostEvoSparklesSet2AndFlash_Trade(u16 species); +u8 sub_8149E7C(u8 preEvoSpriteID, u8 postEvoSpriteID); + +#define EvoGraphicsTaskEvoStop data[8] + +#endif // GUARD_EVOLUTION_GRAPHICS_H diff --git a/include/evolution_scene.h b/include/evolution_scene.h new file mode 100644 index 000000000..48bd6ebe1 --- /dev/null +++ b/include/evolution_scene.h @@ -0,0 +1,10 @@ +#ifndef GUARD_EVOLUTION_SCENE_H +#define GUARD_EVOLUTION_SCENE_H + +void EvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, bool8 canStopEvo, u8 partyID); +void BeginEvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, bool8 canStopEvo, u8 partyID); +void TradeEvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, u8 preEvoSpriteID, u8 partyID); + +extern void (*gCB2_AfterEvolution)(void); + +#endif // GUARD_EVOLUTION_SCENE_H diff --git a/include/field_camera.h b/include/field_camera.h index 4ce207541..17126d190 100644 --- a/include/field_camera.h +++ b/include/field_camera.h @@ -11,7 +11,7 @@ struct CameraSomething s32 unk14; }; -extern struct Camera gUnknown_0202E844; +extern struct Camera gCamera; void move_tilemap_camera_to_upper_left_corner(void); void sub_8057A58(void); diff --git a/include/field_door.h b/include/field_door.h index 1759e0dc1..31fdd154b 100644 --- a/include/field_door.h +++ b/include/field_door.h @@ -20,6 +20,6 @@ void FieldSetDoorClosed(u32, u32); s8 FieldAnimateDoorClose(u32, u32); s8 FieldAnimateDoorOpen(u32, u32); bool8 FieldIsDoorAnimationRunning(void); -u32 sub_8058790(u32 x, u32 y); +u32 GetDoorSoundEffect(u32 x, u32 y); #endif diff --git a/include/field_effect.h b/include/field_effect.h index cd84652b1..a509697e4 100644 --- a/include/field_effect.h +++ b/include/field_effect.h @@ -109,6 +109,8 @@ void SpriteCB_PokeballGlow(struct Sprite *); void SpriteCB_PokecenterMonitor(struct Sprite *); void SpriteCB_HallOfFameMonitor(struct Sprite *); +void sub_80865BC(void); + void PokecenterHealEffect_0(struct Task *); void PokecenterHealEffect_1(struct Task *); void PokecenterHealEffect_2(struct Task *); @@ -128,6 +130,8 @@ void PokeballGlowEffect_5(struct Sprite *); void PokeballGlowEffect_6(struct Sprite *); void PokeballGlowEffect_7(struct Sprite *); +void sub_8086748(void); + bool8 sub_80867AC(struct Task *); bool8 sub_8086854(struct Task *); bool8 sub_8086870(struct Task *); @@ -136,6 +140,8 @@ bool8 sub_808699C(struct Task *); bool8 sub_80869B8(struct Task *); bool8 sub_80869F8(struct Task *); +void sub_8086A2C(u8, u8); + bool8 sub_8086AA0(struct Task *); bool8 sub_8086AC0(struct Task *); bool8 sub_8086B30(struct Task *); @@ -161,6 +167,8 @@ bool8 sub_8087124(struct Task *); bool8 dive_2_unknown(struct Task *); bool8 dive_3_unknown(struct Task *); +void sub_80871B8(u8); + bool8 sub_808722C(struct Task *, struct MapObject *, struct Sprite *); bool8 sub_8087264(struct Task *, struct MapObject *, struct Sprite *); bool8 sub_8087298(struct Task *, struct MapObject *, struct Sprite *); @@ -173,6 +181,8 @@ bool8 sub_80874FC(struct Task *, struct MapObject *, struct Sprite *); bool8 sub_8087548(struct Task *, struct MapObject *, struct Sprite *); bool8 sub_808759C(struct Task *, struct MapObject *, struct Sprite *); +void sub_8087654(u8); + bool8 sub_80876C8(struct Task *, struct MapObject *, struct Sprite *); bool8 sub_80876F8(struct Task *, struct MapObject *, struct Sprite *); bool8 sub_8087774(struct Task *, struct MapObject *, struct Sprite *); @@ -234,7 +244,7 @@ void sub_808948C(struct Task *); void sub_80894C4(struct Task *); void fishE(struct Task *); -u8 CreateTrainerSprite_BirchSpeech(u8 gender, s16 x, s16 y, u8 subpriority, u8 *buffer); +u8 CreateTrainerSprite(u8 trainerSpriteID, s16 x, s16 y, u8 subpriority, u8 *buffer); void LoadTrainerGfx_TrainerCard(u8 gender, u16 palOffset, u8 *dest); u8 CreateBirchSprite(s16 x, s16 y, u8 subpriority); u8 CreateMonSprite_PicBox(u16, s16, s16, u8); @@ -243,4 +253,6 @@ void MultiplyInvertedPaletteRGBComponents(u16, u8, u8, u8); void sub_80878A8(void); void sub_8087BA8(void); +extern u32 gFieldEffectArguments[8]; + #endif // GUARD_FIELD_EFFECT_H diff --git a/include/field_effect_helpers.h b/include/field_effect_helpers.h index a1dd53a2b..7bba24fa6 100644 --- a/include/field_effect_helpers.h +++ b/include/field_effect_helpers.h @@ -1,6 +1,8 @@ #ifndef GUARD_FIELD_EFFECT_HELPERS_H #define GUARD_FIELD_EFFECT_HELPERS_H +extern const struct SpriteTemplate *const gFieldEffectObjectTemplatePointers[]; + void sub_812869C(struct MapObject *); bool8 sub_81286C4(struct MapObject *); void oamc_shadow(struct Sprite *); @@ -26,6 +28,9 @@ void sub_8126BC4(u8 unk_1B, u8 r6, s16 x, s16 y); void sub_8127ED0(u8, u8); void sub_8127F28(u8, u8, s16); u8 sub_8128124(u8 id); -void ash(s16, s16, u16, u8); +void ash(s16, s16, u16, s16); +void SetUpReflection(struct MapObject *mapObj, struct Sprite *sprite, u8 a); +u32 oe_exec_and_other_stuff(u8 fieldEffectId, struct MapObject *mapObject); +u8 sub_8126FF0(u8, u8, u8, s16, s16); #endif // GUARD_FIELD_EFFECT_HELPERS_H diff --git a/include/field_fadetransition.h b/include/field_fadetransition.h index 764adfc9a..111dc92a6 100644 --- a/include/field_fadetransition.h +++ b/include/field_fadetransition.h @@ -16,7 +16,7 @@ void sub_8080B60(void); void atk17_seteffectuser(void); void sub_8080E28(void); void sub_8080E44(void); -int sub_8080E70(void); +bool32 sub_8080E70(void); void sub_8080E88(void); void sub_8080E88(); void sp13E_warp_to_last_warp(void); diff --git a/include/field_map_obj.h b/include/field_map_obj.h index 6595a51ca..641a28ed3 100644 --- a/include/field_map_obj.h +++ b/include/field_map_obj.h @@ -3,6 +3,8 @@ #include "sprite.h" +extern const u8 gUnknown_0830FD14[]; + #define fieldmap_object_cb(setup, callback, table) \ static u8 callback(struct MapObject *, struct Sprite *);\ void setup(struct Sprite *sprite)\ @@ -54,24 +56,20 @@ u8 sub_805CCAC(s16 a0, s16 a1, s16 a2, s16 a3); u8 sub_805CCE8(s16 a0, s16 a1, s16 a2, s16 a3); u8 sub_805CD24(s16 a0, s16 a1, s16 a2, s16 a3); -u8 sub_805F3EC(struct MapObject *, struct Sprite *, u8, bool8 (*const)(u8)); -u8 sub_805F3F0(struct MapObject *, struct Sprite *, u8, bool8 (*const)(u8)); -u8 sub_805F438(struct MapObject *, struct Sprite *, u8, bool8 (*const)(u8)); -u8 sub_805F4F0(struct MapObject *, struct Sprite *, u8, bool8 (*const)(u8)); -u8 sub_805F5A8(struct MapObject *, struct Sprite *, u8, bool8 (*const)(u8)); -u8 sub_805F660(struct MapObject *, struct Sprite *, u8, bool8 (*const)(u8)); -u8 cph_IM_DIFFERENT(struct MapObject *, struct Sprite *, u8, bool8 (*const)(u8)); -u8 sub_805F760(struct MapObject *, struct Sprite *, u8, bool8 (*const)(u8)); -u8 oac_hopping(struct MapObject *, struct Sprite *, u8, bool8 (*const)(u8)); -u8 sub_805F3EC(struct MapObject *, struct Sprite *, u8, bool8 (*const)(u8)); -u8 sub_805F3EC(struct MapObject *, struct Sprite *, u8, bool8 (*const)(u8)); +u8 sub_805F3EC(struct MapObject *, struct Sprite *, u8, bool8(u8)); +u8 sub_805F3F0(struct MapObject *, struct Sprite *, u8, bool8(u8)); +u8 sub_805F438(struct MapObject *, struct Sprite *, u8, bool8(u8)); +u8 sub_805F4F0(struct MapObject *, struct Sprite *, u8, bool8(u8)); +u8 sub_805F5A8(struct MapObject *, struct Sprite *, u8, bool8(u8)); +u8 sub_805F660(struct MapObject *, struct Sprite *, u8, bool8(u8)); +u8 cph_IM_DIFFERENT(struct MapObject *, struct Sprite *, u8, bool8(u8)); +u8 sub_805F760(struct MapObject *, struct Sprite *, u8, bool8(u8)); +u8 oac_hopping(struct MapObject *, struct Sprite *, u8, bool8(u8)); extern struct CameraSomething gUnknown_03004880; extern u16 gUnknown_03004898; extern u16 gUnknown_0300489C; -extern u32 gUnknown_0202FF84[]; - extern const struct Coords16 gDirectionToVector[]; void FieldObjectCB_BerryTree(struct Sprite *); @@ -320,7 +318,7 @@ u8 get_go_fast_image_anim_num(u8); u8 get_go_faster_image_anim_num(u8); u8 sub_805FD78(u8); -int state_to_direction(u8, u8, u8); +u32 state_to_direction(u8, u32, u32); void sub_805AA98(); void sub_805AAB0(void); @@ -381,14 +379,14 @@ u8 sub_805FDF8(u8); u8 sub_805FE08(u8); void npc_set_running_behaviour_etc(struct MapObject *, u8); u8 npc_running_behaviour_by_direction(u8); -u8 npc_block_way(struct MapObject *, s16, s16, u8); +u8 npc_block_way(struct MapObject *, s16, s16, u32); u8 sub_8060024(struct MapObject *, s16, s16, u8); u8 sub_8060234(u8, u8, u8); void sub_8060288(u8, u8, u8); void sub_8060388(s16, s16, s16 *, s16 *); void sub_80603CC(s16 x, s16 y, s16 *pInt, s16 *pInt1); void GetFieldObjectMovingCameraOffset(s16 *, s16 *); -void FieldObjectMoveDestCoords(struct MapObject *pObject, u8 unk_19, s16 *pInt, s16 *pInt1); +void FieldObjectMoveDestCoords(struct MapObject *pObject, u32 unk_19, s16 *pInt, s16 *pInt1); bool8 FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(struct MapObject *); bool8 FieldObjectIsSpecialAnimActive(struct MapObject *); bool8 FieldObjectSetSpecialAnim(struct MapObject *, u8); @@ -398,21 +396,23 @@ void FieldObjectClearAnim(struct MapObject *); bool8 FieldObjectCheckIfSpecialAnimFinishedOrInactive(struct MapObject *); u8 FieldObjectClearAnimIfSpecialAnimFinished(struct MapObject *); u8 FieldObjectGetSpecialAnim(struct MapObject *); -u8 GetFaceDirectionAnimId(u8); -u8 GetSimpleGoAnimId(u8); -u8 GetGoSpeed0AnimId(u8 a); -u8 sub_8060744(u8 a); -u8 d2s_08064034(u8 a); -u8 sub_806079C(u8 a); -u8 sub_80607F4(u8 a); -u8 GetJumpLedgeAnimId(u8 a); -u8 sub_806084C(u8); -u8 sub_8060878(u8); -u8 sub_80608D0(u8); -u8 GetStepInPlaceDelay32AnimId(u8 a); -u8 GetStepInPlaceDelay16AnimId(u8); -u8 GetStepInPlaceDelay8AnimId(u8 a); -u8 GetStepInPlaceDelay4AnimId(u8 a); +u8 GetFaceDirectionAnimId(u32); +u8 GetSimpleGoAnimId(u32); +u8 GetGoSpeed0AnimId(u32); +u8 sub_8060744(u32); +u8 d2s_08064034(u32); +u8 sub_806079C(u32); +u8 sub_80607C8(u32); +u8 sub_80607F4(u32); +u8 GetJumpLedgeAnimId(u32); +u8 sub_806084C(u32); +u8 sub_8060878(u32); +u8 sub_80608A4(u32); +u8 sub_80608D0(u32); +u8 GetStepInPlaceDelay32AnimId(u32); +u8 GetStepInPlaceDelay16AnimId(u32); +u8 GetStepInPlaceDelay8AnimId(u32); +u8 GetStepInPlaceDelay4AnimId(u32); u8 FieldObjectFaceOppositeDirection(struct MapObject *, u8); u8 sub_80609D8(u8); u8 sub_8060A04(u8); @@ -429,5 +429,9 @@ void sub_80634D0(struct MapObject *, struct Sprite *); u8 SpawnSpecialFieldObjectParametrized(u8, u8, u8, s16, s16, u8); void CameraObjectSetFollowedObjectId(u8); u8 sub_805ADDC(u8); +void sub_8060320(u32, s16 *, s16 *, s16, s16); +u8 obj_unfreeze(struct Sprite *, s16, s16, u8); +u16 npc_paltag_by_palslot(u8); +void sub_8060470(s16 *, s16 *, s16, s16); #endif // GUARD_FIELD_MAP_OBJ_H diff --git a/include/field_map_obj_helpers.h b/include/field_map_obj_helpers.h index fd29a9a7f..f760bf153 100644 --- a/include/field_map_obj_helpers.h +++ b/include/field_map_obj_helpers.h @@ -18,4 +18,6 @@ void DoShadowFieldEffect(struct MapObject *mapObject); u8 sub_8064704(struct Sprite *); u8 sub_806478C(struct Sprite *); void obj_anim_image_set_and_seek(struct Sprite *sprite, u8 a2, u8 a3); +void DoRippleFieldEffect(struct MapObject *mapObj, struct Sprite *sprite); + #endif diff --git a/include/field_poison.h b/include/field_poison.h index 8e8e2746f..df0b31434 100644 --- a/include/field_poison.h +++ b/include/field_poison.h @@ -1,6 +1,6 @@ #ifndef GUARD_FIELD_POISON_H #define GUARD_FIELD_POISON_H -s32 overworld_poison(void); +s32 DoPoisonFieldEffect(void); #endif // GUARD_FIELD_POISON_H diff --git a/include/field_special_scene.h b/include/field_special_scene.h index ef3f07120..d674f09df 100644 --- a/include/field_special_scene.h +++ b/include/field_special_scene.h @@ -9,5 +9,6 @@ void Task_Truck3(u8 taskId); void Task_HandleTruckSequence(u8 taskId); void ExecuteTruckSequence(void); void EndTruckSequence(u8); +void sub_80C791C(void); #endif // GUARD_FIELD_SPECIAL_SCENE_H diff --git a/include/field_specials.h b/include/field_specials.h index 710f0a2a0..d61aa3b20 100644 --- a/include/field_specials.h +++ b/include/field_specials.h @@ -8,11 +8,6 @@ struct ElevatorMenu { u8 var3; }; -extern struct ElevatorMenu gUnknown_03000760[20]; -extern struct WarpData gUnknown_020297F0; -extern u8 gBattleOutcome; - -extern u16 gScriptResult; extern u8 gUnknown_02039250; extern u8 gUnknown_02039251; extern u32 gUnknown_02039254; @@ -22,9 +17,6 @@ extern u8 gUnknown_0203925A; extern u8 gUnknown_0203925B; extern u8 gUnknown_0203925C; -extern u16 gSpecialVar_0x8004; -extern u16 gSpecialVar_0x8005; - void ResetCyclingRoadChallengeData(void); bool32 CountSSTidalStep(u16); u8 GetSSTidalLocation(s8 *, s8 *, s16 *, s16 *); diff --git a/include/flags.h b/include/flags.h index 0e408a833..a60de6ea0 100644 --- a/include/flags.h +++ b/include/flags.h @@ -22,6 +22,24 @@ #define BADGE07_GET 0x80D #define BADGE08_GET 0x80E +// cities and towns +#define FLAG_VISITED_LITTLEROOT_TOWN 0x80F +#define FLAG_VISITED_OLDALE_TOWN 0x810 +#define FLAG_VISITED_DEWFORD_TOWN 0x811 +#define FLAG_VISITED_LAVARIDGE_TOWN 0x812 +#define FLAG_VISITED_FALLARBOR_TOWN 0x813 +#define FLAG_VISITED_VERDANTURF_TOWN 0x814 +#define FLAG_VISITED_PACIFIDLOG_TOWN 0x815 +#define FLAG_VISITED_PETALBURG_CITY 0x816 +#define FLAG_VISITED_SLATEPORT_CITY 0x817 +#define FLAG_VISITED_MAUVILLE_CITY 0x818 +#define FLAG_VISITED_RUSTBORO_CITY 0x819 +#define FLAG_VISITED_FORTREE_CITY 0x81A +#define FLAG_VISITED_LILYCOVE_CITY 0x81B +#define FLAG_VISITED_MOSSDEEP_CITY 0x81C +#define FLAG_VISITED_SOOTOPOLIS_CITY 0x81D +#define FLAG_VISITED_EVER_GRANDE_CITY 0x81E + #define SYS_USE_FLASH 0x828 #define SYS_USE_STRENGTH 0x829 #define SYS_WEATHER_CTRL 0x82A @@ -42,6 +60,9 @@ #define SYS_SHOAL_TIDE 0x83A #define SYS_RIBBON_GET 0x83B +#define FLAG_UNLOCK_BATTLE_TOWER 0x848 +#define FLAG_UNLOCK_SOUTHERN_ISLAND 0x849 + #define SYS_PC_LANETTE 0x84B #define SYS_EXDATA_ENABLE 0x84C #define SYS_ENC_UP_ITEM 0x84D @@ -50,6 +71,9 @@ #define SYS_BRAILLE_STRENGTH 0x850 #define SYS_BRAILLE_WAIT 0x851 #define SYS_BRAILLE_FLY 0x852 +#define SYS_HAS_EON_TICKET 0x853 + +#define SYS_POKEMON_LEAGUE_FLY 0x854 #define SYS_TV_LATI 0x85D diff --git a/include/gba/m4a_internal.h b/include/gba/m4a_internal.h index 572b77711..ff92fcc40 100644 --- a/include/gba/m4a_internal.h +++ b/include/gba/m4a_internal.h @@ -404,10 +404,6 @@ void SampleFreqSet(u32 freq); void m4aSoundVSyncOn(void); void m4aSoundVSyncOff(void); -void m4aMPlayTempoControl(struct MusicPlayerInfo *mplayInfo, u16 tempo); -void m4aMPlayVolumeControl(struct MusicPlayerInfo *mplayInfo, u16 trackBits, u16 volume); -void m4aMPlayPitchControl(struct MusicPlayerInfo *mplayInfo, u16 trackBits, u16 pitch); -void m4aMPlayPanpotControl(struct MusicPlayerInfo *mplayInfo, u16 trackBits, s8 pan); void ClearModM(struct MusicPlayerTrack *track); void m4aMPlayModDepthSet(struct MusicPlayerInfo *mplayInfo, u16 trackBits, u8 modDepth); void m4aMPlayLFOSpeedSet(struct MusicPlayerInfo *mplayInfo, u16 trackBits, u8 lfoSpeed); diff --git a/include/gba/macro.h b/include/gba/macro.h index 230fb4383..1e0254806 100644 --- a/include/gba/macro.h +++ b/include/gba/macro.h @@ -84,4 +84,38 @@ dmaRegs[5]; \ } +#define DmaCopyLarge(dmaNum, src, dest, size, block, bit) \ +{ \ + const void *_src = src; \ + void *_dest = dest; \ + u32 _size = size; \ + while (1) \ + { \ + DmaCopy##bit(dmaNum, _src, _dest, (block)); \ + _src += (block); \ + _dest += (block); \ + _size -= (block); \ + if (_size <= (block)) \ + { \ + DmaCopy##bit(dmaNum, _src, _dest, _size); \ + break; \ + } \ + } \ +} + +#define DmaCopyLarge16(dmaNum, src, dest, size, block) DmaCopyLarge(dmaNum, src, dest, size, block, 16) + +#define DmaCopyLarge32(dmaNum, src, dest, size, block) DmaCopyLarge(dmaNum, src, dest, size, block, 32) + +#define DmaCopyDefvars(dmaNum, src, dest, size, bit) \ +{ \ + const void *_src = src; \ + void *_dest = dest; \ + u32 _size = size; \ + DmaCopy##bit(dmaNum, _src, _dest, _size); \ +} + +#define DmaCopy16Defvars(dmaNum, src, dest, size) DmaCopyDefvars(dmaNum, src, dest, size, 16) +#define DmaCopy32Defvars(dmaNum, src, dest, size) DmaCopyDefvars(dmaNum, src, dest, size, 32) + #endif // GUARD_GBA_MACRO_H diff --git a/include/gba/types.h b/include/gba/types.h index 96e057ab7..480619d21 100644 --- a/include/gba/types.h +++ b/include/gba/types.h @@ -39,11 +39,11 @@ struct PlttData struct OamData { /*0x00*/ u32 y:8; - /*0x01*/ u32 affineMode:2; - u32 objMode:2; - u32 mosaic:1; - u32 bpp:1; - u32 shape:2; + /*0x01*/ u32 affineMode:2; // 0x1, 0x2 = 0x3 + u32 objMode:2; // 0x4, 0x8 = 0xC + u32 mosaic:1; // 0x10 + u32 bpp:1; // 0x20 + u32 shape:2; // 0x40, 0x80 /*0x02*/ u32 x:9; u32 matrixNum:5; // bits 3/4 are h-flip/v-flip if not in affine mode diff --git a/include/global.berry.h b/include/global.berry.h index 6632e55e2..096d8b1d8 100644 --- a/include/global.berry.h +++ b/include/global.berry.h @@ -3,33 +3,33 @@ struct Berry { - const u8 name[7]; - u8 firmness; - u16 size; - u8 maxYield; - u8 minYield; - const u8 *description1; - const u8 *description2; - u8 stageDuration; - u8 spicy; - u8 dry; - u8 sweet; - u8 bitter; - u8 sour; - u8 smoothness; + /*0x00*/const u8 name[7]; + /*0x07*/u8 firmness; + /*0x08*/u16 size; + /*0x0A*/u8 maxYield; + /*0x0B*/u8 minYield; + /*0x0C*/const u8 *description1; + /*0x10*/const u8 *description2; + /*0x14*/u8 stageDuration; + /*0x15*/u8 spicy; + /*0x16*/u8 dry; + /*0x17*/u8 sweet; + /*0x18*/u8 bitter; + /*0x19*/u8 sour; + /*0x1A*/u8 smoothness; }; struct EnigmaBerry { - struct Berry berry; - u8 pic[(6 * 6) * TILE_SIZE_4BPP]; - u16 palette[16]; - u8 description1[45]; - u8 description2[45]; - u8 itemEffect[18]; - u8 holdEffect; - u8 holdEffectParam; - u32 checksum; + /*0x000*/struct Berry berry; + /*0x01B*/u8 pic[(6 * 6) * TILE_SIZE_4BPP]; + /*0x49C*/u16 palette[16]; + /*0x4BC*/u8 description1[45]; + /*0x4E9*/u8 description2[45]; + /*0x516*/u8 itemEffect[18]; + /*0x528*/u8 holdEffect; + /*0x529*/u8 holdEffectParam; + /*0x52C*/u32 checksum; }; struct BattleEnigmaBerry diff --git a/include/global.fieldmap.h b/include/global.fieldmap.h index 7589de029..5c93eb8ab 100644 --- a/include/global.fieldmap.h +++ b/include/global.fieldmap.h @@ -14,16 +14,16 @@ enum // map types enum { - MAP_TYPE_0, - MAP_TYPE_TOWN, - MAP_TYPE_CITY, - MAP_TYPE_ROUTE, - MAP_TYPE_UNDERGROUND, - MAP_TYPE_UNDERWATER, - MAP_TYPE_6, - MAP_TYPE_7, - MAP_TYPE_INDOOR, - MAP_TYPE_SECRET_BASE + MAP_TYPE_0, // 0 + MAP_TYPE_TOWN, // 1 + MAP_TYPE_CITY, // 2 + MAP_TYPE_ROUTE, // 3 + MAP_TYPE_UNDERGROUND, // 4 + MAP_TYPE_UNDERWATER, // 5 + MAP_TYPE_6, // 6 + MAP_TYPE_7, // 7 + MAP_TYPE_INDOOR, // 8 + MAP_TYPE_SECRET_BASE // 9 }; // map battle scenes @@ -166,7 +166,7 @@ struct MapHeader /* 0x0C */ struct MapConnections *connections; /* 0x10 */ u16 music; /* 0x12 */ u16 mapDataId; - /* 0x14 */ u8 name; + /* 0x14 */ u8 regionMapSectionId; /* 0x15 */ u8 cave; /* 0x16 */ u8 weather; /* 0x17 */ u8 mapType; diff --git a/include/global.h b/include/global.h index 0511bb99d..6b0a0cb01 100644 --- a/include/global.h +++ b/include/global.h @@ -37,6 +37,7 @@ fndec\ #define ARRAY_COUNT(array) (sizeof(array) / sizeof((array)[0])) +#define POKEMON_SLOTS_NUMBER 412 #define POKEMON_NAME_LENGTH 10 #define OT_NAME_LENGTH 7 @@ -115,11 +116,6 @@ enum BAG_KEYITEMS }; -struct TextStruct -{ - const u8 *text; -}; - struct Coords16 { s16 x; @@ -452,33 +448,69 @@ struct MailStruct /*0x20*/ u16 itemId; }; -struct UnkMauvilleOldManStruct + +// Mauville Pokemon Center men + +struct MauvilleManCommon { - u8 unk_2D94; - u8 unk_2D95; - /*0x2D96*/ u16 mauvilleOldMan_ecArray[6]; - /*0x2DA2*/ u16 mauvilleOldMan_ecArray2[6]; - /*0x2DAE*/ u8 playerName[8]; - /*0x2DB6*/ u8 filler_2DB6[0x3]; - /*0x2DB9*/ u8 playerTrainerId[4]; - u8 unk_2DBD; + u8 id; +}; + +struct MauvilleManBard +{ + /*0x00*/ u8 id; + /*0x02*/ u16 songLyrics[6]; + /*0x0E*/ u16 temporaryLyrics[6]; + /*0x1A*/ u8 playerName[8]; + /*0x22*/ u8 filler_2DB6[0x3]; + /*0x25*/ u8 playerTrainerId[4]; + /*0x29*/ bool8 hasChangedSong; }; /*size = 0x2C*/ -struct UnkMauvilleOldManStruct2 +struct MauvilleManHipster { - u8 filler0; - u8 unk1; - u8 unk2; - u16 mauvilleOldMan_ecArray[10]; - u8 mauvilleOldMan_ecArray2[12]; - u8 fillerF[0x2]; + u8 id; + bool8 alreadySpoken; +}; + +struct MauvilleManTrader +{ + u8 id; + u8 unk1[4]; + u8 unk5[4][11]; + bool8 alreadyTraded; +}; + +struct MauvilleManStoryteller +{ + u8 id; + bool8 alreadyRecorded; + u8 filler2[2]; + u8 gameStatIDs[4]; + u8 trainerNames[4][7]; + u8 statValues[4][4]; +}; + +struct MauvilleManGiddy +{ + /*0x00*/ u8 id; + /*0x01*/ u8 taleCounter; + /*0x02*/ u8 questionNum; + /*0x04*/ u16 randomWords[10]; + /*0x18*/ u8 questionList[12]; }; /*size = 0x2C*/ -typedef union OldMan + +union MauvilleMan { - struct UnkMauvilleOldManStruct oldMan1; - struct UnkMauvilleOldManStruct2 oldMan2; -} OldMan; + struct MauvilleManCommon common; + struct MauvilleManBard bard; + struct MauvilleManHipster hipster; + struct MauvilleManTrader trader; + struct MauvilleManStoryteller storyteller; + struct MauvilleManGiddy giddy; + u8 filler[0x40]; // needed to pad out the struct +}; struct Unk_SB_Access_Struct1 { @@ -529,30 +561,76 @@ struct GabbyAndTyData /*2b1b*/ u8 valB_5:3; }; -struct RecordMixing_UnknownStructSub +struct DayCareMail { - u8 data[0x38]; + /*0x00*/ struct MailStruct message; + /*0x24*/ u8 names[19]; }; -struct RecordMixing_UnknownStruct -{ - struct RecordMixing_UnknownStructSub data[2]; - u32 unk70; - u16 unk74[0x2]; +struct DayCareStepCountersEtc { + u32 steps[2]; + u16 personalityLo; + u8 unk_11a; }; +struct RecordMixingDayCareMail +{ + struct DayCareMail mail[2]; + u32 unk70; + u16 unk74[2]; +}; + +struct DayCareMisc +{ + struct DayCareMail mail[2]; + struct DayCareStepCountersEtc countersEtc; +}; + +struct DayCareData { + struct BoxPokemon mons[2]; + struct DayCareMisc misc; +}; + +struct LinkBattleRecord +{ + u8 name[8]; + u16 trainerId; + u16 wins; + u16 losses; + u16 draws; +}; + +struct RecordMixingGiftData +{ + u8 unk0; + u8 quantity; + u16 itemId; + u8 filler4[8]; +}; + +struct RecordMixingGift +{ + int checksum; + struct RecordMixingGiftData data; +}; + +// there should be enough flags for all 412 slots +// each slot takes up 8 flags +// if the value is not divisible by 8, we need to account for the reminder as well +#define DEX_FLAGS_NO ((POKEMON_SLOTS_NUMBER / 8) + ((POKEMON_SLOTS_NUMBER % 8) ? 1 : 0)) + struct SaveBlock1 /* 0x02025734 */ { /*0x00*/ struct Coords16 pos; /*0x04*/ struct WarpData location; /*0x0C*/ struct WarpData warp1; /*0x14*/ struct WarpData warp2; - /*0x1C*/ struct WarpData warp3; + /*0x1C*/ struct WarpData lastHealLocation; /*0x24*/ struct WarpData warp4; - /*0x2C*/ u16 battleMusic; + /*0x2C*/ u16 savedMusic; /*0x2E*/ u8 weather; /*0x2F*/ u8 filler_2F; - /*0x30*/ u8 flashUsed; + /*0x30*/ u8 flashLevel; // flash level on current map, 0 being normal and 4 being the darkest /*0x32*/ u16 mapDataId; /*0x34*/ u16 mapView[0x100]; /*0x234*/ u8 playerPartyCount; @@ -567,7 +645,7 @@ struct SaveBlock1 /* 0x02025734 */ /*0x640*/ struct ItemSlot bagPocket_TMHM[64]; /*0x740*/ struct ItemSlot bagPocket_Berries[46]; /*0x7F8*/ struct Pokeblock pokeblocks[40]; - /*0x938*/ u8 unk938[52]; // pokedex related + /*0x938*/ u8 dexSeen2[DEX_FLAGS_NO]; /*0x96C*/ u16 berryBlenderRecords[3]; /*0x972*/ u8 filler_972[0x6]; /*0x978*/ u16 trainerRematchStepCounter; @@ -610,25 +688,20 @@ struct SaveBlock1 /* 0x02025734 */ /*0x2B4C*/ struct MailStruct mail[16]; /*0x2D8C*/ u8 unk2D8C[4]; /*0x2D90*/ u8 filler_2D90[0x4]; - /*0x2D94*/ OldMan oldMan; - /*0x2DC0*/ u8 unk_2DC0[0x14]; + /*0x2D94*/ union MauvilleMan mauvilleMan; /*0x2DD4*/ struct EasyChatPair easyChatPairs[5]; //Dewford trend [0] and some other stuff /*0x2DFC*/ u8 filler_2DFC[0x8]; /*0x2E04*/ SB_Struct sbStruct; - /*0x2F9C*/ struct BoxPokemon daycareData[2]; - /*0x303C*/ struct RecordMixing_UnknownStruct filler_303C; - /*0x30AC*/ u8 filler_30B4[0x2]; - /*0x30B6*/ u8 filler_30B6; - /*0x30B7*/ u8 filler_30B7[1]; - /*0x30B8*/ u8 linkBattleRecords[5][16]; + /*0x2F9C*/ struct DayCareData daycareData; + /*0x30B8*/ struct LinkBattleRecord linkBattleRecords[5]; /*0x3108*/ u8 filler_3108[8]; - /*0x3110*/ u8 giftRibbons[7]; - /*0x3117*/ u8 filler_311B[0x2D]; + /*0x3110*/ u8 giftRibbons[11]; + /*0x3117*/ u8 filler_311B[0x29]; /*0x3144*/ struct Roamer roamer; /*0x3160*/ struct EnigmaBerry enigmaBerry; /*0x3690*/ struct RamScript ramScript; - /*0x3A7C*/ u8 filler_3A7C[0x10]; - /*0x3A8C*/ u8 unk3A8C[52]; //pokedex related + /*0x3A7C*/ struct RecordMixingGift recordMixingGift; + /*0x3A8C*/ u8 dexSeen3[DEX_FLAGS_NO]; }; extern struct SaveBlock1 gSaveBlock1; @@ -650,8 +723,8 @@ struct Pokedex /*0x04*/ u32 unownPersonality; // set when you first see Unown /*0x08*/ u32 spindaPersonality; // set when you first see Spinda /*0x0C*/ u32 unknown3; - /*0x10*/ u8 owned[52]; - /*0x44*/ u8 seen[52]; + /*0x10*/ u8 owned[DEX_FLAGS_NO]; + /*0x44*/ u8 seen[DEX_FLAGS_NO]; }; struct SaveBlock2_Sub @@ -659,19 +732,20 @@ struct SaveBlock2_Sub /*0x0000, 0x00A8*/ u8 filler_000[0x3D8]; /*0x03D8, 0x0480*/ u16 var_480; /*0x03DA, 0x0482*/ u16 var_482; - /*0x03DC, 0x0484*/ u8 filler_3DC[0xD0]; + /*0x03DC, 0x0484*/ u8 filler_3DC[0x14]; + /*0x03F0, 0x0498*/ u8 ereaderTrainer[0xBC]; /*0x04AC, 0x0554*/ u8 var_4AC; /*0x04AD, 0x0555*/ u8 var_4AD; - /*0x04AE, 0x0556*/ u8 var_4AE; - /*0x04AF, 0x0557*/ u8 var_4AF; + /*0x04AE, 0x0556*/ u8 var_4AE[2]; /*0x04B0, 0x0558*/ u16 var_4B0; /*0x04B2, 0x055A*/ u16 var_4B2; /*0x04B4, 0x055C*/ u16 var_4B4; /*0x04B6, 0x055E*/ u16 var_4B6; - /*0x04B8, 0x0560*/ u8 filler_4B8[0x10]; + /*0x04B8, 0x0560*/ u16 recordWinStreak[2]; + /*0x04BC, 0x0564*/ u8 filler_4BC[0xC]; /*0x04C8, 0x0570*/ u16 var_4C8; /*0x04CA, 0x0572*/ u16 var_4CA; - /*0x04CC, 0x0574*/ u8 filler_4CC[4]; + /*0x04CC, 0x0574*/ u16 winStreak[2]; /*0x04D0, 0x0578*/ u8 var_4D0; /*0x04D1, 0x0579*/ u8 filler_4D1[0x317]; }; diff --git a/include/graphics.h b/include/graphics.h index 36b11fd0a..f3a722b40 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -2435,12 +2435,142 @@ extern const u8 gMonFrontPic_UnownQuestionMark[]; extern const u8 gMonBackPic_UnownQuestionMark[]; extern const u8 gMonIcon_UnownQuestionMark[]; -// src/pokeblock.c -extern const u8 gMenuPokeblock_Gfx[]; -extern const u8 gMenuPokeblock_Tilemap[]; -extern const u8 gMenuPokeblock_Pal[]; +extern const u8 gMonIcon_QuestionMark[]; +extern const u8 gMonIcon_Egg[]; +extern const u16 gMonIconPalettes[][16]; +// data/graphics.s +extern const u8 gBagMaleTiles[]; +extern const u8 gBagFemaleTiles[]; +extern const u8 gBagPalette[]; +extern const u8 gBagScreen_Gfx[]; +extern const u8 gBagScreenMale_Pal[]; +extern const u8 gBagScreenFemale_Pal[]; +extern const u16 gUnknown_08E77004[]; +extern const u8 gBuyMenuFrame_Gfx[]; +extern const u8 gMenuMoneyPal[]; +extern const u8 gBuyMenuFrame_Tilemap[]; +extern const u8 gMenuMoneyGfx[]; +extern const u8 gMenuPokeblock_Gfx[]; +extern const u8 gMenuPokeblock_Pal[]; extern const u8 gMenuPokeblockDevice_Gfx[]; extern const u8 gMenuPokeblockDevice_Pal[]; +extern const u8 gMenuPokeblock_Tilemap[]; +extern const u8 gBerryCheck_Gfx[]; +extern const u8 gBerryCheck_Pal[]; +extern const u8 gUnknown_08E788E4[]; +extern const u8 gUnknown_08E78A84[]; +extern const u8 gBerryCheckCircle_Gfx[]; + +// data/graphics/berries/graphics.inc +extern const u8 gBerryPic_Cheri[]; +extern const u8 gBerryPic_Oran[]; +extern const u8 gBerryPic_Pecha[]; +extern const u8 gBerryPic_Rawst[]; +extern const u8 gBerryPic_Aspear[]; +extern const u8 gBerryPic_Leppa[]; +extern const u8 gBerryPic_Chesto[]; +extern const u8 gBerryPic_Persim[]; +extern const u8 gBerryPic_Lum[]; +extern const u8 gBerryPic_Sitrus[]; +extern const u8 gBerryPic_Figy[]; +extern const u8 gBerryPic_Wiki[]; +extern const u8 gBerryPic_Mago[]; +extern const u8 gBerryPic_Aguav[]; +extern const u8 gBerryPic_Iapapa[]; +extern const u8 gBerryPic_Razz[]; +extern const u8 gBerryPic_Bluk[]; +extern const u8 gBerryPic_Nanab[]; +extern const u8 gBerryPic_Wepear[]; +extern const u8 gBerryPic_Pinap[]; +extern const u8 gBerryPic_Pomeg[]; +extern const u8 gBerryPic_Kelpsy[]; +extern const u8 gBerryPic_Qualot[]; +extern const u8 gBerryPic_Hondew[]; +extern const u8 gBerryPic_Grepa[]; +extern const u8 gBerryPic_Tamato[]; +extern const u8 gBerryPic_Cornn[]; +extern const u8 gBerryPic_Magost[]; +extern const u8 gBerryPic_Rabuta[]; +extern const u8 gBerryPic_Nomel[]; +extern const u8 gBerryPic_Spelon[]; +extern const u8 gBerryPic_Pamtre[]; +extern const u8 gBerryPic_Watmel[]; +extern const u8 gBerryPic_Durin[]; +extern const u8 gBerryPic_Belue[]; +extern const u8 gBerryPic_Liechi[]; +extern const u8 gBerryPic_Ganlon[]; +extern const u8 gBerryPic_Salac[]; +extern const u8 gBerryPic_Petaya[]; +extern const u8 gBerryPic_Apicot[]; +extern const u8 gBerryPic_Lansat[]; +extern const u8 gBerryPic_Starf[]; +extern const u8 gBerryPic_Enigma[]; +extern const u8 gBerryPalette_Cheri[]; +extern const u8 gBerryPalette_Oran[]; +extern const u8 gBerryPalette_Pecha[]; +extern const u8 gBerryPalette_Rawst[]; +extern const u8 gBerryPalette_Aspear[]; +extern const u8 gBerryPalette_Leppa[]; +extern const u8 gBerryPalette_Chesto[]; +extern const u8 gBerryPalette_Persim[]; +extern const u8 gBerryPalette_Lum[]; +extern const u8 gBerryPalette_Sitrus[]; +extern const u8 gBerryPalette_Figy[]; +extern const u8 gBerryPalette_Wiki[]; +extern const u8 gBerryPalette_Mago[]; +extern const u8 gBerryPalette_Aguav[]; +extern const u8 gBerryPalette_Iapapa[]; +extern const u8 gBerryPalette_Razz[]; +extern const u8 gBerryPalette_Bluk[]; +extern const u8 gBerryPalette_Nanab[]; +extern const u8 gBerryPalette_Wepear[]; +extern const u8 gBerryPalette_Pinap[]; +extern const u8 gBerryPalette_Pomeg[]; +extern const u8 gBerryPalette_Kelpsy[]; +extern const u8 gBerryPalette_Qualot[]; +extern const u8 gBerryPalette_Hondew[]; +extern const u8 gBerryPalette_Grepa[]; +extern const u8 gBerryPalette_Tamato[]; +extern const u8 gBerryPalette_Cornn[]; +extern const u8 gBerryPalette_Magost[]; +extern const u8 gBerryPalette_Rabuta[]; +extern const u8 gBerryPalette_Nomel[]; +extern const u8 gBerryPalette_Spelon[]; +extern const u8 gBerryPalette_Pamtre[]; +extern const u8 gBerryPalette_Watmel[]; +extern const u8 gBerryPalette_Durin[]; +extern const u8 gBerryPalette_Belue[]; +extern const u8 gBerryPalette_Liechi[]; +extern const u8 gBerryPalette_Ganlon[]; +extern const u8 gBerryPalette_Salac[]; +extern const u8 gBerryPalette_Petaya[]; +extern const u8 gBerryPalette_Apicot[]; +extern const u8 gBerryPalette_Lansat[]; +extern const u8 gBerryPalette_Starf[]; +extern const u8 gBerryPalette_Enigma[]; + +extern const u8 gUnknown_08E96EC8[]; + +extern const u8 gMenuTrainerCard_Gfx[]; +extern const u16 gMenuTrainerCard0Star_Pal[]; +extern const u16 gMenuTrainerCard1Star_Pal[]; +extern const u16 gMenuTrainerCard2Star_Pal[]; +extern const u16 gMenuTrainerCard3Star_Pal[]; +extern const u16 gMenuTrainerCard4Star_Pal[]; +extern const u8 gUnknown_08E8CAC0[]; +extern const u8 gUnknown_08E8CFC0[]; +extern const u8 gUnknown_08E8D4C0[]; +extern const u8 gUnknown_08E8D9C0[]; + +extern const u8 gUnknown_08EA1DEC[]; +extern const u16 gUnknown_08EA0328[]; +extern const u16 gUnknown_08EA02C8[]; +extern const u16 gUnknown_08EA0348[]; +extern const u16 gUnknown_08EA15C8[]; +extern const u16 gTradeMonBoxTilemap[]; +extern const u8 gUnknown_08D00000[]; +extern const u16 gUnknown_08D00524[]; +extern const u8 gUnknown_08D004E0[]; #endif // GUARD_GRAPHICS_H diff --git a/include/intro_credits_graphics.h b/include/intro_credits_graphics.h index 5abb2381b..2718d2f9f 100644 --- a/include/intro_credits_graphics.h +++ b/include/intro_credits_graphics.h @@ -10,15 +10,16 @@ extern const struct SpritePalette gIntro2SpritePalettes[]; extern const struct CompressedSpriteSheet gUnknown_08416E24; extern const struct CompressedSpriteSheet gUnknown_08416E34; -void load_intro_part2_graphics(/*TODO: arg types*/); -void sub_8148C78(/*TODO: arg types*/); +void load_intro_part2_graphics(u8 a); +void sub_8148C78(u8 a); void sub_8148CB0(u8); void sub_8148E90(u8); -u8 sub_8148EC0(/*TODO: arg types*/); -void sub_8149020(/*TODO: arg types*/); -u8 intro_create_brendan_sprite(/*TODO: arg types*/); -u8 intro_create_may_sprite(/*TODO: arg types*/); -u8 intro_create_latios_sprite(/*TODO: arg types*/); -u8 intro_create_latias_sprite(/*TODO: arg types*/); +u8 sub_8148EC0(u8 a, u16 b, u16 c, u16 d); +void sub_8148F3C(u8); +void sub_8149020(u8); +u8 intro_create_brendan_sprite(s16 a, s16 b); +u8 intro_create_may_sprite(s16 a, s16 b); +u8 intro_create_latios_sprite(s16 a, s16 b); +u8 intro_create_latias_sprite(s16 a, s16 b); #endif // GUARD_INTRO_CREDITS_GRAPHICS_H diff --git a/include/item.h b/include/item.h index 47af11940..8f6cc883b 100644 --- a/include/item.h +++ b/include/item.h @@ -11,7 +11,7 @@ struct Item u16 price; u8 holdEffect; u8 holdEffectParam; - u8 *description; + const u8 *description; u8 importance; u8 unk19; u8 pocket; @@ -22,6 +22,16 @@ struct Item u8 secondaryId; }; +struct BagPocket +{ + struct ItemSlot *itemSlots; + u8 capacity; +}; + +#define NUM_BAG_POCKETS 5 + +extern const struct BagPocket gBagPockets[NUM_BAG_POCKETS]; + void CopyItemName(u16 itemId, u8 *string); bool8 IsBagPocketNonEmpty(u8 pocket); bool8 CheckBagHasItem(u16 itemId, u16 count); @@ -35,13 +45,13 @@ bool8 CheckPCHasItem(u16 itemId, u16 count); bool8 AddPCItem(u16 itemId, u16 count); void RemovePCItem(u8 index, u16 count); void SwapRegisteredBike(void); -struct Item *ItemId_GetItem(u16 itemId); +const struct Item *ItemId_GetItem(u16 itemId); u16 ItemId_GetId(u16 itemId); u16 ItemId_GetPrice(u16 itemId); u8 ItemId_GetHoldEffect(u16 itemId); u8 ItemId_GetHoldEffectParam(u16 itemId); -u8 *ItemId_GetDescription(u16 itemId); -bool8 ItemId_CopyDescription(u8 *a, u32 itemId, u32 c); +const u8 *ItemId_GetDescription(u16 itemId); +bool32 ItemId_CopyDescription(u8 *a, u32 itemId, u32 c); u8 ItemId_GetImportance(u16 itemId); u8 ItemId_GetUnknownValue(u16 itemId); u8 ItemId_GetPocket(u16 itemId); diff --git a/include/item_menu.h b/include/item_menu.h index 301836ac8..29618f347 100644 --- a/include/item_menu.h +++ b/include/item_menu.h @@ -3,12 +3,23 @@ #include "string_util.h" -void sub_80A3684(void); +struct PocketScrollState +{ + u8 cursorPos; + u8 scrollTop; + u8 numSlots; + u8 cursorMax; +}; + +extern struct PocketScrollState gBagPocketScrollStates[]; +extern struct ItemSlot *gCurrentBagPocketItemSlots; + +void ResetBagScrollPositions(void); void ClearBag(void); void sub_80A3E0C(void); -void sub_80A3FA0(u16 *, u32, u32, u32, u32, u32); +void sub_80A3FA0(u16 *a, u8 b, u8 c, u8 d, u8 e, u16 f); void sub_80A4164(u8 *, u16, enum StringConvertMode, u8); -void sub_80A418C(u16, enum StringConvertMode, int, int, int); +void sub_80A418C(u16 a, enum StringConvertMode b, u8 c, u8 d, u8 e); void sub_80A53F8(void); void HandleItemMenuPaletteFade(u8); void sub_80A5B40(void); @@ -19,11 +30,11 @@ void sub_80A5D04(void); void sub_80A6300(void); void sub_80A68CC(); void sub_80A6A30(void); -int sub_80A6D1C(void); +bool32 sub_80A6D1C(void); void sub_80A6DCC(void); void sub_80A7094(u8); -u8 sub_80A7D8C(u8 berry, int i, int i1); +u8 CreateBerrySprite(u8, s16, s16); void sub_80A7DD4(void); -u8 sub_80A7E5C(u8); +u8 sub_80A7E5C(s16); #endif // GUARD_ITEM_MENU_H diff --git a/include/item_use.h b/include/item_use.h index 61a3b4f7a..227c0c9ee 100644 --- a/include/item_use.h +++ b/include/item_use.h @@ -3,28 +3,52 @@ extern u16 gScriptItemId; +void ItemUseOutOfBattle_Mail(u8); +void ItemUseOutOfBattle_Bike(u8); void ItemUseOnFieldCB_Bike(u8); +void ItemUseOutOfBattle_Rod(u8); void ItemUseOnFieldCB_Rod(u8); +void ItemUseOutOfBattle_Itemfinder(u8); void ItemUseOnFieldCB_Itemfinder(u8); void RunItemfinderResults(u8); void ExitItemfinder(u8); -bool8 ItemfinderCheckForHiddenItems(struct MapEvents *events, u8 taskId); +bool8 ItemfinderCheckForHiddenItems(struct MapEvents *, u8); void sub_80C9720(u8); void sub_80C9838(u8, s16, s16); u8 GetPlayerDirectionTowardsHiddenItem(s16, s16); void SetPlayerDirectionTowardsItem(u8); void DisplayItemRespondingMessageAndExitItemfinder(u8); void RotatePlayerAndExitItemfinder(u8); +void ItemUseOutOfBattle_PokeblockCase(u8); +void ItemUseOutOfBattle_CoinCase(u8); +void ItemUseOutOfBattle_SSTicket(u8); void sub_80C9D00(u8); +void ItemUseOutOfBattle_WailmerPail(u8); void sub_80C9D74(u8); +void ItemUseOutOfBattle_Medicine(u8); +void ItemUseOutOfBattle_SacredAsh(u8); +void ItemUseOutOfBattle_PPRecovery(u8); +void ItemUseOutOfBattle_PPUp(u8); +void ItemUseOutOfBattle_RareCandy(u8); void ItemUseOutOfBattle_TMHM(u8); void sub_80C9EE4(u8); void sub_80C9F10(u8); void sub_80C9F80(u8); void sub_80C9FC0(u8); +void ItemUseOutOfBattle_Repel(u8); +void ItemUseOutOfBattle_BlackWhiteFlute(u8); void task08_080A1C44(u8); -u8 sub_80CA1C8(void); +u8 CanUseEscapeRopeOnCurrMap(void); +void ItemUseOutOfBattle_EscapeRope(u8); void ItemUseOutOfBattle_EvolutionStone(u8); +void ItemUseInBattle_PokeBall(u8); +void ItemUseInBattle_StatIncrease(u8); +void ItemUseInBattle_Medicine(u8); +void ItemUseInBattle_PPRecovery(u8); +void ItemUseInBattle_Escape(u8); +void ItemUseOutOfBattle_EnigmaBerry(u8); +void ItemUseInBattle_EnigmaBerry(u8); void ItemUseOutOfBattle_CannotUse(u8); +u8 CheckIfItemIsTMHMOrEvolutionStone(u16 itemId); #endif // GUARD_ITEM_USE_H diff --git a/include/items.h b/include/items.h index f3c506b43..44b0f2013 100644 --- a/include/items.h +++ b/include/items.h @@ -1,7 +1,8 @@ #ifndef GUARD_ITEMS_H #define GUARD_ITEMS_H -enum { +enum +{ ITEM_NONE, // 0x000 ITEM_MASTER_BALL, // 0x001 ITEM_ULTRA_BALL, // 0x002 @@ -385,4 +386,7 @@ enum { ITEM_OLD_SEA_MAP, // 0x178 }; +#define NUM_TECHNICAL_MACHINES 50 +#define NUM_HIDDEN_MACHINES 8 + #endif // GUARD_ITEMS_H diff --git a/include/libgncmultiboot.h b/include/libgncmultiboot.h index 33c9f6bfa..23ac64d17 100644 --- a/include/libgncmultiboot.h +++ b/include/libgncmultiboot.h @@ -5,6 +5,7 @@ struct GcmbStruct { u16 gcmb_field_0; u8 gcmb_field_2; + u8 filler3[0x2C - 0x3]; }; void GameCubeMultiBoot_Main(struct GcmbStruct *pStruct); diff --git a/include/link.h b/include/link.h index f80f2bc58..367add625 100644 --- a/include/link.h +++ b/include/link.h @@ -144,6 +144,7 @@ extern u8 deUnkValue2; extern struct LinkPlayer gLinkPlayers[]; extern u16 word_3002910[]; extern bool8 gReceivedRemoteLinkPlayers; +extern bool8 gLinkOpen; void Task_DestroySelf(u8); void sub_8007270(u8); diff --git a/include/m4a.h b/include/m4a.h index b6c8f9072..7d016c98b 100644 --- a/include/m4a.h +++ b/include/m4a.h @@ -16,4 +16,9 @@ void m4aMPlayFadeOutTemporarily(struct MusicPlayerInfo *mplayInfo, u16 speed); void m4aMPlayFadeIn(struct MusicPlayerInfo *mplayInfo, u16 speed); void m4aMPlayImmInit(struct MusicPlayerInfo *mplayInfo); +void m4aMPlayTempoControl(struct MusicPlayerInfo *mplayInfo, u16 tempo); +void m4aMPlayVolumeControl(struct MusicPlayerInfo *mplayInfo, u16 trackBits, u16 volume); +void m4aMPlayPitchControl(struct MusicPlayerInfo *mplayInfo, u16 trackBits, s16 pitch); +void m4aMPlayPanpotControl(struct MusicPlayerInfo *mplayInfo, u16 trackBits, s8 pan); + #endif //GUARD_M4A_H diff --git a/include/mail_data.h b/include/mail_data.h index df4b385a1..2659c0d37 100644 --- a/include/mail_data.h +++ b/include/mail_data.h @@ -11,6 +11,6 @@ u8 GiveMailToMon2(struct Pokemon *, struct MailStruct *); void TakeMailFromMon(struct Pokemon *); u8 TakeMailFromMon2(struct Pokemon *); bool8 ItemIsMail(u16); -bool8 ItemIsMail(u16); +bool8 MonHasMail(struct Pokemon *); #endif // GUARD_MAIL_DATA_H diff --git a/include/map_obj_lock.h b/include/map_obj_lock.h index f7352be22..9fb57743e 100644 --- a/include/map_obj_lock.h +++ b/include/map_obj_lock.h @@ -7,7 +7,7 @@ bool8 sub_8064CFC(void); void ScriptFreezeMapObjects(void); void sub_8064D38(u8 taskId); bool8 sub_8064DB4(void); -void sub_8064DD8(void); +void LockSelectedMapObject(void); void sub_8064E2C(void); void unref_sub_8064E5C(void); void sub_8064EAC(void); diff --git a/include/mauville_man.h b/include/mauville_man.h new file mode 100644 index 000000000..2b8f139f2 --- /dev/null +++ b/include/mauville_man.h @@ -0,0 +1,18 @@ +#ifndef GUARD_MAUVILLE_OLD_MAN_H +#define GUARD_MAUVILLE_OLD_MAN_H + +// IDs +enum +{ + MAUVILLE_MAN_BARD, + MAUVILLE_MAN_HIPSTER, + MAUVILLE_MAN_TRADER, + MAUVILLE_MAN_STORYTELLER, + MAUVILLE_MAN_GIDDY, +}; + +void SetupMauvilleOldMan(void); +void sub_80F7F30(void); +void sub_80F83D0(void); + +#endif // GUARD_MAUVILLE_OLD_MAN_H diff --git a/include/mauville_old_man.h b/include/mauville_old_man.h deleted file mode 100644 index 473fcf5c8..000000000 --- a/include/mauville_old_man.h +++ /dev/null @@ -1,11 +0,0 @@ -#ifndef GUARD_MAUVILLE_OLD_MAN_H -#define GUARD_MAUVILLE_OLD_MAN_H - -void SetMauvilleOldMan(void); -void sub_80F7DC0(void); -void sub_80F7F30(void); -void sub_80F7F80(u8); -void sub_80F83D0(void); -void sub_80F83F8(void); - -#endif // GUARD_MAUVILLE_OLD_MAN_H diff --git a/include/menu.h b/include/menu.h index 9b48ab79b..9a5ca62a0 100644 --- a/include/menu.h +++ b/include/menu.h @@ -1,6 +1,7 @@ #ifndef GUARD_MENU_H #define GUARD_MENU_H +#include "task.h" #include "text.h" struct MenuAction @@ -12,7 +13,7 @@ struct MenuAction struct MenuAction2 { const u8 *text; - void (*func)(u8); + TaskFunc func; }; extern const struct MenuAction gMenuYesNoItems[]; @@ -38,12 +39,12 @@ void MenuFillWindowRectWithBlankTile(u8, u8, u8, u8); void MenuZeroFillScreen(void); void MenuDrawTextWindow(u8, u8, u8, u8); void sub_8071F40(const u8 *); -void sub_8071F60(u8, u8, u8, u8); +void sub_8071F60(u8, u8, u8); u16 unref_sub_8071F98(u8, u8); void unref_sub_8071FBC(u16, u8, u8, u8, u8); void MenuDisplayMessageBox(void); void MenuPrintMessage(const u8 *, u8, u8); -void sub_8072044(const u8 *); +void MenuPrintMessageDefaultCoords(const u8 *); void MenuSetText(const u8 *); u8 MenuUpdateWindowText(void); u8 unref_sub_8072098(void); @@ -59,7 +60,7 @@ void sub_807274C(u8, u8, u8, u8, const struct MenuAction[], u8, u32); s8 sub_80727CC(void); u8 sub_807288C(u8); void PrintMenuItems(u8, u8, u8, const struct MenuAction[]); -void PrintMenuItemsReordered(u8, u8, u8, const struct MenuAction[], const u8*); +void PrintMenuItemsReordered(u8 left, u8 top, u8 menuItemCount, const struct MenuAction2 menuItems[], const u8 *order); void InitYesNoMenu(u8, u8, u8); void DisplayYesNoMenu(u8, u8, u32); s8 ProcessMenuInputNoWrap_(void); @@ -67,7 +68,7 @@ u8 MenuPrint_PixelCoords(const u8 *, u8, u16, u8); u8 sub_8072A18(const u8 *, u8, u16, u8, u32); u8 unref_sub_8072A5C(u8 *, u8 *, u8, u16, u8, u32); int sub_8072AB0(const u8 *, u8, u16, u8, u8, u32); -void MenuPrint_RightAligned(u8 *, u8, u8); +void MenuPrint_RightAligned(const u8 *, u8, u8); void sub_8072B80(const u8 *, u8, u8, const u8 *); void sub_8072BD8(const u8 *, u8, u8, u16); u8 *sub_8072C14(u8 *, s32, u8, u8); diff --git a/include/menu_cursor.h b/include/menu_cursor.h index ca82ef244..6d31cc29f 100644 --- a/include/menu_cursor.h +++ b/include/menu_cursor.h @@ -21,4 +21,8 @@ void sub_814AD7C(u8 a1, u8 a2); void sub_814ADC8(void); void sub_814ADF4(u8 a1); +#if GERMAN +extern const u32 gUnknown_0842F798[2]; +#endif + #endif // GUARD_MENU_CURSOR_H diff --git a/include/menu_helpers.h b/include/menu_helpers.h index 761932bda..993d698bd 100644 --- a/include/menu_helpers.h +++ b/include/menu_helpers.h @@ -9,23 +9,31 @@ struct YesNoFuncTable void (*noFunc)(u8); }; +void sub_80F9020(void); +void DisplayItemMessageOnField(u8, const u8 *, TaskFunc, u16); void DoYesNoFuncWithChoice(u8, const struct YesNoFuncTable *); void sub_80F914C(u8, const struct YesNoFuncTable *); -void DisplayItemMessageOnField(u8, const u8 *, TaskFunc, u16); +u8 sub_80F9284(void); +u8 sub_80F92BC(void); +bool8 sub_80F92F4(u16); +bool8 sub_80F931C(u16); bool8 sub_80F9344(void); -u8 sub_80F9344(void); void sub_80F9368(void); void sub_80F9438(void); void sub_80F944C(void); -void CreateVerticalScrollIndicators(u8, u8, u8); // include/decoration.h -void sub_80F979C(u32, u32); // unknown args +void sub_80F9480(u8 *, u8); +void sub_80F94A4(u8, u8 *, s16, s16); +void sub_80F94F8(u8 *); +void sub_80F9520(u8 *, u8); +void CreateVerticalScrollIndicators(u8, u16, u16); +void sub_80F979C(u8, bool8); void DestroyVerticalScrollIndicator(u8); -void BuyMenuFreeMemory(void); -void sub_80F98DC(int); -void sub_80F996C(u8); void LoadScrollIndicatorPalette(void); +void BuyMenuFreeMemory(void); void sub_80F98A4(u8); void StartVerticalScrollIndicators(u8); +void sub_80F98DC(u8); void PauseVerticalScrollIndicator(u8); +void sub_80F9988(u8, u8); #endif // GUARD_MENU_HELPERS_H diff --git a/include/money.h b/include/money.h index 49015ee19..5a0acd482 100644 --- a/include/money.h +++ b/include/money.h @@ -2,15 +2,15 @@ #define GUARD_MONEY_H bool8 IsEnoughMoney(u32, u32); -void sub_80B79B8(u32 *, u32); -void sub_80B79E0(u32 *, u32); -void sub_80B79F8(u8 *buffer, u32 arg1, u8 arg2); -void sub_80B7A94(u32 arg0, u8 arg1, u8 x, u8 y); +void AddMoney(u32 *, u32); +void RemoveMoney(u32 *, u32); +void GetMoneyAmountText(u8 *buffer, u32 arg1, u8 arg2); +void PrintMoneyAmount(u32 arg0, u8 arg1, u8 x, u8 y); void sub_80B7AEC(u32, u8 left, u8 top); -void sub_80B7B34(void); -void sub_80B7BEC(u32, u8, u8); -void sub_80B7C14(u32, u8, u8); -void RemoveMoneyLabelObject(u8, u8); +void sub_80B7B34(u8, u8, int); +void UpdateMoneyWindow(u32, u8, u8); +void OpenMoneyWindow(u32, u8, u8); +void CloseMoneyWindow(u8, u8); bool8 sub_80B7CE8(void); void sub_80B7D0C(void); diff --git a/include/mystery_event_script.h b/include/mystery_event_script.h index 766303588..ab23a8d00 100644 --- a/include/mystery_event_script.h +++ b/include/mystery_event_script.h @@ -1,8 +1,8 @@ #ifndef GUARD_MYSTERY_EVENT_SCRIPT_H #define GUARD_MYSTERY_EVENT_SCRIPT_H -u32 sub_812613C(u8 *); -void sub_8126160(u32 val); -u16 sub_8126338(void); +u32 RunMysteryEventScript(u8 *); +void SetMysteryEventScriptStatus(u32 val); +u16 GetRecordMixingGift(void); #endif // GUARD_MYSTERY_EVENT_SCRIPT_H diff --git a/include/rom4.h b/include/overworld.h similarity index 72% rename from include/rom4.h rename to include/overworld.h index 803a38162..0954f1b63 100644 --- a/include/rom4.h +++ b/include/overworld.h @@ -22,42 +22,42 @@ struct UCoords32 u32 x, y; }; -extern struct UCoords32 gUnknown_0821664C[]; +extern const struct UCoords32 gUnknown_0821664C[]; extern void (*gFieldCallback)(void); // sub_8052F5C -void flag_var_implications_of_teleport_(void); -void new_game(void); -void sub_8053014(void); -void sub_8053050(void); +void Overworld_ResetStateAfterFly(void); +void Overworld_ResetStateAfterTeleport(void); +void Overworld_ResetStateAfterDigEscRope(void); +void Overworld_ResetStateAfterWhiteOut(void); // sub_805308C void ResetGameStats(void); void IncrementGameStat(u8 index); u32 GetGameStat(u8 index); void SetGameStat(u8, u32); -// sub_8053154 -// sub_8053198 -void update_saveblock1_field_object_coords(u8, s16, s16); -void update_saveblock1_field_object_movement_behavior(u8, u8); +// LoadMapObjTemplatesFromHeader +// LoadSaveblockMapObjScripts +void Overworld_SetMapObjTemplateCoords(u8, s16, s16); +void Overworld_SetMapObjTemplateMovementType(u8, u8); // mapdata_load_assets_to_gpu_and_full_redraw // get_mapdata_header -// warp_shift -// warp_set +// ApplyCurrentWarp +// SetWarpData // warp_data_is_not_neg_1 -struct MapHeader * const get_mapheader_by_bank_and_number(u16 mapGroup, u16 mapNum); +struct MapHeader * const Overworld_GetMapHeaderByGroupAndId(u16 mapGroup, u16 mapNum); struct MapHeader * const warp1_get_mapheader(void); // set_current_map_header_from_sav1_save_old_name -// sub_805338C +// LoadSaveblockMapHeader // sub_80533CC void warp_in(void); -void warp1_set(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y); +void Overworld_SetWarpDestination(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y); void warp1_set_2(s8 mapGroup, s8 mapNum, s8 warpId); void saved_warp2_set(int unused, s8 mapGroup, s8 mapNum, s8 warpId); void saved_warp2_set_2(int unused, s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y); void copy_saved_warp2_bank_and_enter_x_to_warp1(u8 unused); -// sub_8053538 -void sub_8053570(void); -void sub_8053588(u8); +void sub_8053538(u8); +void Overworld_SetWarpDestToLastHealLoc(void); +void Overworld_SetHealLocationWarp(u8); void sub_80535C4(s16 a1, s16 a2); void sub_805363C(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y); void sub_8053678(void); @@ -69,7 +69,7 @@ void sub_8053720(s16, s16); // unref_sub_8053790 void sub_80537CC(u8); void gpu_sync_bg_hide(); -// sub_8053818 +// GetMapConnection // sub_8053850 bool8 sub_80538B0(u16 x, u16 y); bool8 sub_80538D0(u16 x, u16 y); @@ -81,37 +81,37 @@ void walkrun_find_lowest_active_bit_in_bitfield(void); u8 sub_8053B00(struct UnkPlayerStruct *playerStruct, u16 a2, u8 a3); u8 sub_8053B60(struct UnkPlayerStruct *playerStruct, u8, u16, u8); u16 cur_mapdata_block_role_at_screen_center_acc_to_sav1(void); -bool32 IsBikingAllowedByMap(void); -void sub_8053C98(void); -void sub_8053CE4(s32 a1); -u8 sav1_get_flash_used_on_map(void); +bool32 Overworld_IsBikingAllowed(void); +void SetDefaultFlashLevel(void); +void Overworld_SetFlashLevel(s32 a1); +u8 Overworld_GetFlashLevel(void); void sub_8053D14(u16); // sub_8053D30 // sub_8053D6C -// sub_8053D9C -// sav1_map_get_music -// warp1_target_get_music -// call_map_music_set_to_zero -void sub_8053E90(void); -void sav1_set_battle_music_maybe(u16); -void sav1_reset_battle_music_maybe(void); +// GetLocationMusic +// GetCurrLocationDefaultMusic +// GetWarpDestinationMusic +// Overworld_ResetMapMusic +void Overworld_PlaySpecialMapMusic(void); +void Overworld_SetSavedMusic(u16); +void Overworld_ClearSavedMusic(void); void sub_8053F0C(void); -void sub_8053F84(void); -void sub_8053FB0(u16); -// is_warp1_light_level_8_or_9 -// sub_8053FF8 -// sub_8054034 -// sub_8054044 -// sub_8054050 -void sub_80540D0(s16 *, u16 *); -void sub_8054164(void); -u8 get_map_light_level_by_bank_and_number(s8 mapGroup, s8 mapNum); -// get_map_light_level_from_warp -u8 sav1_map_get_light_level(void); -u8 get_map_light_from_warp0(void); -bool8 is_light_level_1_2_3_5_or_6(u8 a1); -bool8 is_light_level_1_2_3_or_6(u8 a1); -u8 is_light_level_8_or_9(u8); +void Overworld_ChangeMusicToDefault(void); +void Overworld_ChangeMusicTo(u16); +// GetMapMusicFadeoutSpeed +void sub_8053FF8(void); +bool8 sub_8054034(void); +void Overworld_FadeOutMapMusic(void); +// PlayAmbientCry +void UpdateAmbientCry(s16 *, u16 *); +void ChooseAmbientCrySpecies(void); +u8 GetMapTypeByGroupAndId(s8 mapGroup, s8 mapNum); +// GetMapTypeByWarpData +u8 Overworld_GetMapTypeOfSaveblockLocation(void); +u8 get_map_type_from_warp0(void); +bool8 is_map_type_1_2_3_5_or_6(u8 a1); +bool8 Overworld_MapTypeAllowsTeleportAndFly(u8 a1); +u8 Overworld_MapTypeIsIndoors(u8); // unref_sub_8054260 u8 sav1_map_get_name(); // sav1_map_get_battletype @@ -119,8 +119,8 @@ u8 sav1_map_get_name(); bool32 is_c1_link_related_active(void); // c1_overworld_normal // c1_overworld -// c2_overworld_basic -// sub_8054398 +// OverworldBasic +void CB2_OverworldBasic(void); void c2_overworld(void); // set_callback1 // sub_80543DC @@ -129,8 +129,8 @@ void CB2_NewGame(void); void CB2_WhiteOut(void); void CB2_LoadMap(void); void CB2_LoadMap2(void); -// sub_8054534 -// sub_8054588 +void sub_8054534(void); +void sub_8054588(void); void c2_80567AC(void); void c2_exit_to_overworld_2_switch(void); void c2_exit_to_overworld_2_local(void); @@ -233,5 +233,6 @@ u8 npc_something3(u8, u8); u8 LinkPlayerDetectCollision(u8, u8, s16, s16); void CreateLinkPlayerSprite(u8); void SpriteCB_LinkPlayer(struct Sprite *); +void sub_805465C(void); #endif // GUARD_ROM4_H diff --git a/include/party_menu.h b/include/party_menu.h index 9ce476869..f13c2c2df 100644 --- a/include/party_menu.h +++ b/include/party_menu.h @@ -1,36 +1,53 @@ #ifndef GUARD_PARTY_MENU_H #define GUARD_PARTY_MENU_H +#include "menu.h" #include "task.h" -struct PartyMenuItem + +enum { - const u8 *text; - TaskFunc func; + PARTY_MENU_TYPE_STANDARD, + PARTY_MENU_TYPE_BATTLE, + PARTY_MENU_TYPE_CONTEST, + PARTY_MENU_TYPE_IN_GAME_TRADE, + PARTY_MENU_TYPE_BATTLE_TOWER, + PARTY_MENU_TYPE_LINK_MULTI_BATTLE, + PARTY_MENU_TYPE_DAYCARE, + PARTY_MENU_TYPE_MOVE_TUTOR, +}; + +// The party menu screen is presented differently depending on which menu layout is set. +enum +{ + PARTY_MENU_LAYOUT_STANDARD, + PARTY_MENU_LAYOUT_DOUBLE_BATTLE, + PARTY_MENU_LAYOUT_LINK_DOUBLE_BATTLE, + PARTY_MENU_LAYOUT_MULTI_BATTLE, }; struct PartyPopupMenu { - u8 unk0; - u8 unk1; - const u8 *unk4; + /*0x0*/u8 numChoices; // number of menu choices + /*0x1*/u8 width; // menu width (number of characters it can fit horizontally) + /*0x4*/const u8 *items; // menu item ids (ids for a MenuAction2 array) }; // TODO: Unify these two structs -#define DATA_COUNT (6) struct Unk201B000 { - //u8 filler0[0x260]; struct Pokemon unk0[6]; - u8 filler258[1]; - u8 unk259; - u8 filler25A[6]; - u8 unk260; + u8 menuType; + u8 promptTextId; + u8 filler25A[2]; + TaskFunc menuHandler; + u8 menuHandlerTaskId; u8 unk261; u8 unk262; u8 unk263; - s16 unk264[DATA_COUNT * 2]; // This may be a union + // Stat growth upon level-up. First 6 bytes = old stats, Second 6 bytes = new stats. + s16 statGrowths[NUM_STATS * 2]; u8 filler27C[2]; s16 unk27E; s16 unk280; @@ -40,77 +57,117 @@ struct Unk201B000 struct Struct201B000 { u8 filler0[0x259]; - u8 unk259; + u8 promptTextId; u8 filler25A[6]; - u8 unk260; + u8 menuHandlerTaskId; u8 unk261; u8 unk262; - s16 unk264; - s16 unk266; - u8 filler268[10]; + s16 setupState; + s16 monIndex; + s16 unk268; + u8 filler26A[8]; u16 unk272; u8 filler274[14]; u16 unk282; }; +struct Unk2001000 +{ + u8 unk0; + u8 unk1; + u8 unk2; + u8 unk3; + u8 unk4; + u8 unk5; + u8 unk6; + u8 unk7; + s16 unk8; + s16 unkA; + TaskFunc unkC; + u16 array[53561]; +}; + +struct UnknownPokemonStruct2 +{ + /*0x00*/ u16 species; + /*0x02*/ u16 heldItem; + /*0x04*/ u8 nickname[11]; + /*0x0F*/ u8 level; + /*0x10*/ u16 hp; + /*0x12*/ u16 maxhp; + /*0x14*/ u32 status; + /*0x18*/ u32 personality; + /*0x1C*/ u8 gender; + /*0x1D*/ u8 language; +}; + extern u8 ewram[]; +#define ewram01000 (*(struct Unk2001000 *)(ewram + 0x01000)) #define ewram1B000 (*(struct Unk201B000 *)(ewram + 0x1B000)) #define ewram1B000_alt (*(struct Struct201B000 *)(ewram + 0x1B000)) #define EWRAM_1B000 ewram1B000_alt -void sub_806AEDC(void); -void sub_806AF4C(); -void OpenPartyMenu(u8, u8); -void OpenPartyMenu(); -u8 sub_806B124(void); -u8 IsLinkDoubleBattle(void); -u8 sub_806B58C(u8); -u8 sub_806B58C(u8); +void CB2_PartyMenuMain(void); +void ChangeBattleTowerPartyMenuSelection(u8 taskId, s8 directionPressed); +void SetPartyMenuSettings(u8 menuType, u8 battleTypeFlags, TaskFunc menuHandlerFunc, u8 textId); +void OpenPartyMenu(u8 menuType, u8 battleFlags); +bool8 InitPartyMenu(void); +bool8 IsLinkDoubleBattle(void); +u8 DrawPartyMonBackground(u8); +void sub_806B908(void); void sub_806BC3C(u8, u8); +void sub_806BCE8(void); u8 sub_806BD58(u8, u8); u8 sub_806BD58(u8, u8); -u16 sub_806BD80(); // undefined args in battle_party_menu.c -void task_pc_turn_off(); -void sub_806BF74(); -void sub_806C994(); -u8 sub_806CA38(u8); -void sub_806CB74(u8 taskId); +u16 HandleDefaultPartyMenuInput(u8 taskId); +u16 HandleBattleTowerPartyMenuInput(u8 taskId); +void task_pc_turn_off(const u8 *a, u8 b); +void ChangePartyMenuSelection(u8 taskId, s8 directionPressed); +void SelectBattleTowerOKButton(u8 taskId); +void sub_806C994(u8 taskId, u8 b); +u8 sub_806CA38(u8 taskID); +void HandlePartyMenuSwitchPokemonInput(u8 taskId); void sub_806CCE4(void); void sub_806CD44(u8 taskId); -void sub_806D538(); -void sub_806D538(); -void sub_806D538(); +void sub_806D3B4(u8 taskId, u16 species1, u16 species2); +void sub_806D4AC(u8 taskId, u16 species, u8 c); +void sub_806D50C(u8 taskId, u8 monIndex); +void PrintPartyMenuPromptText(u8 textId, u8 b); void sub_806D5A4(void); -void SetMonIconAnim(); -void TryCreatePartyMenuMonIcon(u8, u8, struct Pokemon *); +void SetMonIconAnim(u8 spriteId, struct Pokemon *pokemon); +void CreatePartyMenuMonIcon(u8 taskId, u8 monIndex, u8 c, struct Pokemon *pokemon); +void TryCreatePartyMenuMonIcon(u8 a, u8 monIndex, struct Pokemon *pokemon); void LoadHeldItemIconGraphics(void); -void LoadHeldItemIconGraphics(void); -void CreateHeldItemIcons_806DC34(); // undefined args -void CreateHeldItemIcons_806DC34(); -u8 GetMonIconSpriteId_maybe(); -void SetHeldItemIconVisibility(); -void TryPrintPartyMenuMonNickname(); +void PartyMenuTryGiveMonHeldItem(u8 taskId, u16 newItem, TaskFunc c); +void SetMonIconSpriteId(u8 taskId, u8 monIndex, u8 spriteId); +void CreateHeldItemIcon_806DCD4(u8 taskId, u8 monIndex, u16 item); +void CreateHeldItemIcons_806DC34(u8 taskId); +void CreateHeldItemIcons(u8 *a, u8 *b, u8 c); +void SetHeldItemIconVisibility(u8 a, u8 monIndex); +void PartyMenuDoPrintMonNickname(u8 monIndex, int b, const u8 *nameBuffer); +void PrintPartyMenuMonNickname(u8 monIndex, u8 b, struct Pokemon *pokemon); void PrintPartyMenuMonNicknames(void); -void PrintPartyMenuMonNicknames(void); -void GetMonNickname(struct Pokemon *mon, u8 *nickname); -void PartyMenuClearLevelStatusTilemap(); -void PartyMenuPrintMonLevelOrStatus(); +void CreateMonIcon_LinkMultiBattle(u8 taskId, u8 monIndex, u8 menuType, struct UnknownPokemonStruct2 *pokemon); +u8 *GetMonNickname(struct Pokemon *pokemon, u8 *stringBuffer); +void PartyMenuPutStatusTilemap(u8 monIndex, u8 b, u8 status); +void PartyMenuDoPrintLevel(u8 monIndex, u8 b, u8 level); +void PartyMenuPrintLevel(u8 monIndex, u8 b, struct Pokemon *pokemon); +void PartyMenuPrintMonLevelOrStatus(u8 monIndex, struct Pokemon *pokemon); void PartyMenuPrintMonsLevelOrStatus(void); -void PartyMenuPrintMonsLevelOrStatus(void); -void PartyMenuDoPrintHP(u8, int, u16, u16); +void PartyMenuDoPrintGenderIcon(u16 species, u8 gender, u8 c, u8 monIndex, u8 *nickname); +void PartyMenuPrintGenderIcon(u8 monIndex, u8 b, struct Pokemon *pokemon); +void PartyMenuDoPrintHP(u8 monIndex, u8 b, u16 currentHP, u16 maxHP); void PartyMenuTryPrintMonsHP(void); void nullsub_13(void); +void PartyMenuDoDrawHPBar(u8 monIndex, u8 b, u16 currentHP, u16 maxHP); +void PartyMenuDrawHPBar(u8 monIndex, u8 b, struct Pokemon *pokemon); +void PartyMenuTryDrawHPBar(u8 monIndex, struct Pokemon *pokemon); void PartyMenuDrawHPBars(void); -void sub_806E6F0(); -void sub_806E750(u8, const struct PartyPopupMenu *, const struct PartyMenuItem *, int); -void sub_806E7D0(u8, const struct PartyPopupMenu *); -TaskFunc PartyMenuGetPopupMenuFunc(u8, const struct PartyPopupMenu *, const struct PartyMenuItem *, u8); -void sub_8070968(); -void sub_8070A20(); -void Task_RareCandy3(u8); -void sub_8070C54(); -void DoEvolutionStoneItemEffect(u8, u16, TaskFunc); -u8 GetItemEffectType(); +void SwapPokemon(struct Pokemon *a, struct Pokemon *b); +void SetPartyPopupMenuOffsets(u8 menuIndex, u8 *left, u8 *top, const struct PartyPopupMenu *menu); +void ShowPartyPopupMenu(u8 menuIndex, const struct PartyPopupMenu *menu, const struct MenuAction2 *menuActions, u8 cursorPos); +void ClosePartyPopupMenu(u8 index, const struct PartyPopupMenu *menu); +TaskFunc PartyMenuGetPopupMenuFunc(u8 menuIndex, const struct PartyPopupMenu *menus, const struct MenuAction2 *menuActions, u8 itemIndex); u8 sub_806E834(const u8 *message, u8 arg1); void sub_806E8D0(u8 taskId, u16 b, TaskFunc c); void party_menu_link_mon_held_item_object(u8); @@ -150,6 +207,20 @@ void DoPPUpItemEffect(u8, u16, TaskFunc); void DoRareCandyItemEffect(u8, u16, TaskFunc); void Task_RareCandy1(u8); void Task_RareCandy2(u8); -void sub_8070848(u8 taskId); +void PrintStatGrowthsInLevelUpWindow(u8 taskId); +void PrintNewStatsInLevelUpWindow(u8 taskId); +void RedrawPokemonInfoInMenu(u8, struct Pokemon *); +void Task_RareCandy3(u8); +void TeachMonMoveInPartyMenu(u8); +void DoEvolutionStoneItemEffect(u8 taskId, u16 evolutionStoneItem, TaskFunc c); +u8 GetItemEffectType(u16 item); +void SetupDefaultPartyMenuSwitchPokemon(u8 taskId); +void sub_806CD5C(u8 taskId); +void DoTakeMail(u8 taskId, TaskFunc func); +void PartyMenuTryGiveMonHeldItem_806ECE8(u8 taskId, TaskFunc func); +void PartyMenuTryGiveMonMail(u8 taskId, TaskFunc func); +void sub_806D668(u8 monIndex); +void TaughtMove(u8 taskId); +void StopTryingToTeachMove_806F588(u8 taskId); #endif // GUARD_PARTY_MENU_H diff --git a/include/pokeball.h b/include/pokeball.h index 19f813415..0a709c869 100644 --- a/include/pokeball.h +++ b/include/pokeball.h @@ -7,5 +7,6 @@ void CreatePokeballSprite(u8 r0, u8 r1, u8 r2, u8 r3, u8 s1, u8 s2, u8 s3, u32 s void sub_804777C(u8); void sub_80478DC(u8); void sub_804794C(u8); +u8 sub_8047580(u8, u8, u8, u8, u8, u8, u8, u32); #endif // GUARD_POKEBALL_H diff --git a/include/pokeblock.h b/include/pokeblock.h index 0d8e965e4..6720653a0 100644 --- a/include/pokeblock.h +++ b/include/pokeblock.h @@ -1,12 +1,8 @@ #ifndef GUARD_POKEBLOCK_H #define GUARD_POKEBLOCK_H -struct YesNoCBTable { - void (*yesFunc)(void); - void (*noFunc)(void); -}; - -enum { +enum +{ PBLOCK_CLR_BLACK, PBLOCK_CLR_RED, PBLOCK_CLR_BLUE, @@ -15,21 +11,32 @@ enum { PBLOCK_CLR_YELLOW }; -extern u8 ewram[]; -extern u8 gUnknown_02039244; -extern u8 gUnknown_02039248[4]; -extern u8 gUnknown_0203924C; -extern const u8 *gUnknown_03000758; +enum +{ + PBLOCK_COLOR, + PBLOCK_SPICY, + PBLOCK_DRY, + PBLOCK_SWEET, + PBLOCK_BITTER, + PBLOCK_SOUR, + PBLOCK_FEEL, +}; void sub_810B96C(void); u8 sub_810BA50(s16, s16, u8); u8 sub_810C9B0(struct Pokeblock *); -s16 sub_810CA9C(const struct Pokeblock *, u8); +s16 GetPokeblockData(const struct Pokeblock *, u8); u8 sub_810C9E8(struct Pokeblock *); void sub_810BA7C(u8); void ClearPokeblocks(void); -bool8 sub_810CA6C(u8); -s16 sub_810CAE4(u8, const struct Pokeblock *); +bool8 PokeblockClearIfExists(u8); +s16 PokeblockGetGain(u8, const struct Pokeblock *); u8 sub_810CB68(u8, u8*); +void PokeblockCopyName(struct Pokeblock *pokeblock, u8 *dest); +void CB2_PreparePokeblockFeedScene(void); + +#include "main.h" + +void sub_8136130(struct Pokeblock *, MainCallback); #endif // GUARD_POKEBLOCK_H diff --git a/include/pokeblock_feed.h b/include/pokeblock_feed.h deleted file mode 100644 index 65d0d1dc9..000000000 --- a/include/pokeblock_feed.h +++ /dev/null @@ -1,10 +0,0 @@ -// -// Created by Scott Norton on 6/28/17. -// - -#ifndef POKERUBY_POKEBLOCK_FEED_H -#define POKERUBY_POKEBLOCK_FEED_H - -void sub_8147ADC(void); - -#endif //POKERUBY_POKEBLOCK_FEED_H diff --git a/include/pokedex.h b/include/pokedex.h index 1bc63a4ff..c47494e1f 100644 --- a/include/pokedex.h +++ b/include/pokedex.h @@ -9,7 +9,17 @@ void CB2_InitPokedex(void); u8 sub_809070C(u16 dexNum, u32 b, u32 c); const u8 *GetPokemonCategory(u16); u16 GetPokedexHeightWeight(u16 dexNum, u8 data); -s8 GetNationalPokedexFlag(u16, u8); + +enum +{ + FLAG_GET_SEEN, + FLAG_GET_CAUGHT, + FLAG_SET_SEEN, + FLAG_SET_CAUGHT +}; + +s8 GetSetPokedexFlag(u16, u8); + u16 GetNationalPokedexCount(u8); u16 GetHoennPokedexCount(u8); bool8 sub_8090FC0(void); diff --git a/include/pokemon.h b/include/pokemon.h index c69fb87e0..4c3e27609 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -93,6 +93,8 @@ #define MON_DATA_SPATK2 87 #define MON_DATA_SPDEF2 88 +#define MAX_LEVEL 100 + #define MON_MALE 0x00 #define MON_FEMALE 0xFE #define MON_GENDERLESS 0xFF @@ -349,6 +351,18 @@ struct BattlePokemon /*0x54*/ u32 otId; }; +enum +{ + STAT_STAGE_HP, // 0 + STAT_STAGE_ATK, // 1 + STAT_STAGE_DEF, // 2 + STAT_STAGE_SPEED, // 3 + STAT_STAGE_SPATK, // 4 + STAT_STAGE_SPDEF, // 5 + STAT_STAGE_ACC, // 6 + STAT_STAGE_EVASION, // 7 +}; + struct BaseStats { /*0x00*/ u8 baseHP; @@ -379,7 +393,7 @@ struct BaseStats /*0x17*/ u8 ability2; /*0x18*/ u8 safariZoneFleeRate; /*0x19*/ u8 bodyColor:7; - u8 unk19_7:1; + u8 noFlip:1; }; struct BattleMove @@ -392,9 +406,16 @@ struct BattleMove u8 secondaryEffectChance; u8 target; u8 priority; - u32 flags; + u8 flags; + u8 pad[3]; }; +#define FLAG_MAKES_CONTACT 0x1 +#define FLAG_PROTECT_AFFECTED 0x2 +#define FLAG_MAGICCOAT_AFFECTED 0x4 +#define FLAG_SNATCH_AFFECTED 0x8 +#define FLAG_KINGSROCK_AFFECTED 0x20 + struct PokemonStorage { /*0x00*/ u8 currentBox; @@ -464,7 +485,9 @@ struct EvolutionData struct Evolution evolutions[5]; }; +extern u8 gPlayerPartyCount; extern struct Pokemon gPlayerParty[PARTY_SIZE]; +extern u8 gEnemyPartyCount; extern struct Pokemon gEnemyParty[PARTY_SIZE]; extern const u8 *const gItemEffectTable[]; extern const struct BaseStats gBaseStats[]; @@ -489,7 +512,7 @@ void sub_803ADE8(struct Pokemon *mon, struct UnknownPokemonStruct *src); void sub_803AF78(struct Pokemon *mon, struct UnknownPokemonStruct *dest); u16 CalculateBoxMonChecksum(struct BoxPokemon *boxMon); void CalculateMonStats(struct Pokemon *mon); -void sub_803B4B4(struct Pokemon *src, struct Pokemon *dest); +void sub_803B4B4(const struct BoxPokemon *src, struct Pokemon *dest); u8 GetLevelFromMonExp(struct Pokemon *mon); u8 GetLevelFromBoxMonExp(struct BoxPokemon *boxMon); u16 GiveMoveToMon(struct Pokemon *mon, u16 move); @@ -499,7 +522,7 @@ void SetMonMoveSlot(struct Pokemon *mon, u16 move, u8 slot); void SetBattleMonMoveSlot(struct BattlePokemon *mon, u16 move, u8 slot); void GiveMonInitialMoveset(struct Pokemon *mon); void GiveBoxMonInitialMoveset(struct BoxPokemon *boxMon); -u16 sub_803B7C8(struct Pokemon *mon, u8 a2); +u16 MonTryLearningNewMove(struct Pokemon *mon, bool8 firstMove); void DeleteFirstMoveAndGiveMoveToMon(struct Pokemon *mon, u16 move); void DeleteFirstMoveAndGiveMoveToBoxMon(struct BoxPokemon *boxMon, u16 move); @@ -545,6 +568,8 @@ void CopyPlayerPartyMonToBattleData(u8 battleIndex, u8 partyIndex); u8 GetNature(struct Pokemon *mon); u8 GetNatureFromPersonality(u32 personality); +u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 type, u16 evolutionItem); + u16 nature_stat_mod(u8 nature, u16 n, u8 statIndex); void MonRestorePP(struct Pokemon *); @@ -555,6 +580,7 @@ u16 NationalPokedexNumToSpecies(u16 nationalNum); u16 NationalToHoennOrder(u16); u16 SpeciesToNationalPokedexNum(u16); u16 HoennToNationalOrder(u16); +u16 SpeciesToCryId(u16 species); void DrawSpindaSpots(u16, u32, u8 *, u8); u8 sub_803FBBC(void); u8 sub_803FC58(u16); @@ -562,19 +588,27 @@ void AdjustFriendship(struct Pokemon *, u8); u8 CheckPartyHasHadPokerus(struct Pokemon *, u8); void UpdatePartyPokerusTime(u16); u32 CanMonLearnTMHM(struct Pokemon *, u8); +u8 GetMoveRelearnerMoves(struct Pokemon *mon, u16 *moves); u8 sub_8040574(struct Pokemon *party); void ClearBattleMonForms(void); void sub_80408BC(); void current_map_music_set__default_for_battle(u16); -const u8 *pokemon_get_pal(struct Pokemon *mon); -const u8 *species_and_otid_get_pal(u16, u32, u32); -const struct CompressedSpritePalette *sub_80409C8(u16, u32, u32); +const u8 *GetMonSpritePal(struct Pokemon *mon); +const u8 *GetMonSpritePalFromOtIdPersonality(u16, u32, u32); +const struct CompressedSpritePalette *GetMonSpritePalStructFromOtIdPersonality(u16, u32, u32); bool8 IsOtherTrainer(u32, u8 *); void sub_8040B8C(void); void SetWildMonHeldItem(void); u8 *sub_8040D08(); -bool32 sub_8040D3C(u16 species, u8 *name, u8 language); +bool32 ShouldHideGenderIconForLanguage(u16 species, u8 *name, u8 language); +bool32 ShouldHideGenderIcon(u16 species, u8 *name); s8 sub_8040A54(struct Pokemon *, u8); u16 GetMonEVCount(struct Pokemon *); +u16 GetEvolutionTargetSpecies(struct Pokemon *, u8, u16); +const struct CompressedSpritePalette *GetMonSpritePalStruct(struct Pokemon *); +bool8 IsPokeSpriteNotFlipped(u16); +u8 GetLevelUpMovesBySpecies(u16, u16 *); +u8 TryIncrementMonLevel(struct Pokemon *); + #endif // GUARD_POKEMON_H diff --git a/include/pokemon_icon.h b/include/pokemon_icon.h index 98f984564..7e26c1c9b 100644 --- a/include/pokemon_icon.h +++ b/include/pokemon_icon.h @@ -1,7 +1,8 @@ #ifndef GUARD_POKEMON_ICON_H #define GUARD_POKEMON_ICON_H -u8 CreateMonIcon(); +u8 CreateMonIcon(u16 species, void (*callback)(struct Sprite *), s16 x, s16 y, u8 subpriority, u32 personality); +u8 UpdateMonIconFrame(struct Sprite *sprite); u8 sub_809D3A4(u16 arg0, void (*)(struct Sprite *), int, u8 arg3, u32 arg4); u16 GetUnownLetterByPersonality(u32); u16 sub_809D4A8(u16); @@ -9,6 +10,7 @@ void sub_809D510(struct Sprite *); void sub_809D51C(void); void sub_809D580(u16); void sub_809D608(u16); -void UpdateMonIconFrame(struct Sprite *sprite); +void sub_809D62C(struct Sprite *sprite); +void sub_809D824(struct Sprite *sprite, u8 animNum); #endif // GUARD_POKEMON_ICON_H diff --git a/include/pokemon_menu.h b/include/pokemon_menu.h index d22dbb708..57a313d89 100644 --- a/include/pokemon_menu.h +++ b/include/pokemon_menu.h @@ -1,14 +1,51 @@ #ifndef GUARD_POKEMON_MENU_H #define GUARD_POKEMON_MENU_H +#include "menu.h" + +#define POKEMENU_FIRST_FIELD_MOVE_ID 10 + +enum +{ + POKEMENU_SUMMARY, // 0 + POKEMENU_SWITCH, // 1 + POKEMENU_ITEM, // 2 + POKEMENU_CANCEL, // 3 + POKEMENU_GIVE_ITEM, // 4 + POKEMENU_TAKE_ITEM, // 5 + POKEMENU_TAKE_MAIL, // 6 + POKEMENU_MAIL, // 7 + POKEMENU_READ_MAIL, // 8 + POKEMENU_CANCEL_SUBMENU, // 9 + POKEMENU_CUT, // 10 + POKEMENU_FLASH, // 11 + POKEMENU_ROCK_SMASH, // 12 + POKEMENU_STRENGTH, // 13 + POKEMENU_SURF, // 14 + POKEMENU_FLY, // 15 + POKEMENU_DIVE, // 16 + POKEMENU_WATERFALL, // 17 + POKEMENU_TELEPORT, // 18 + POKEMENU_DIG, // 19 + POKEMENU_SECRET_POWER, // 20 + POKEMENU_MILK_DRINK, // 21 + POKEMENU_SOFT_BOILED, // 22 + POKEMENU_SWEET_SCENT, // 23 +}; + +extern u8 gLastFieldPokeMenuOpened; +extern void (*gUnknown_03005CE4)(void); + +void HandleDefaultPartyMenu(u8 taskID); +void sub_808B5B4(u32 taskID); void sub_8089A70(void); -void sub_808A004(); -void sub_808AB90(void); -void sub_808AB90(void); // unknown args -void sub_808AB90(void); +void sub_8089C50(u8 arg0, u8 arg1, u8 arg2, u8 noOfOptions, const struct MenuAction2 *menuActions, const u8 *order); +void DoPokemonMenu_Switch(u8 taskID); +void FieldCallback_Teleport(void); +void sub_808AD58(void); void sub_808B020(void); -void sub_808B0C0(u8); +void sub_808B0C0(u8 taskID); void sub_808B508(u8); -void sub_808B564(); +void sub_808B564(void); #endif // GUARD_POKEMON_MENU_H diff --git a/include/pokemon_storage_system.h b/include/pokemon_storage_system.h index bd4e7915b..9fe3436ef 100644 --- a/include/pokemon_storage_system.h +++ b/include/pokemon_storage_system.h @@ -2,5 +2,7 @@ #define GUARD_POKEMON_STORAGE_SYSTEM_H void ResetPokemonStorageSystem(void); +void BoxMonRestorePP(struct BoxPokemon *); +void party_compaction(void); #endif // GUARD_POKEMON_STORAGE_SYSTEM_H diff --git a/include/record_mixing.h b/include/record_mixing.h index 103f5ad64..ca60b04a7 100644 --- a/include/record_mixing.h +++ b/include/record_mixing.h @@ -14,8 +14,8 @@ void Task_RecordMixing_CopyReceiveBuffer(u8 taskId); void sub_80B99B4(u8 taskId); void Task_RecordMixing_ReceivePacket(u8 taskId); void Task_RecordMixing_SendPacket_SwitchToReceive(u8 taskId); -void *LoadPtrFromTaskData(u16 *ptr); -void StorePtrInTaskData(void *ptr, u16 *data); +void *LoadPtrFromTaskData(u16 *); +void StorePtrInTaskData(void *, u16 *); u8 GetMultiplayerId_(void); u16 *GetPlayerRecvBuffer(u8 player); void sub_80B9A78(void); @@ -23,12 +23,12 @@ void sub_80B9A88(u8 *a); void sub_80B9B1C(u8 *a, size_t size, u8 index); void sub_80B9B70(u8 *a, size_t size, u8 index); u8 sub_80B9BBC(u16 *a); -void sub_80B9BC4(struct RecordMixing_UnknownStruct *, size_t, u8 [][2], u8, u8); +void sub_80B9BC4(u8 *, size_t, u8[][2], u8 d, u8 e); u8 sub_80B9C4C(u8 *a); // ASM -void sub_80B9C6C(struct RecordMixing_UnknownStruct *, u32, u8, void *); -void sub_80B9F3C(void *, u8); +void sub_80B9C6C(u8 *, u32, u8, void *); +void sub_80B9F3C(u16 *, u8); void sub_80BA00C(u8); #endif // GUARD_RECORD_MIXING_H diff --git a/include/region_map.h b/include/region_map.h index 6dfa4dcf0..3d970fa0a 100644 --- a/include/region_map.h +++ b/include/region_map.h @@ -1,13 +1,72 @@ #ifndef GUARD_REGION_MAP_H #define GUARD_REGION_MAP_H -void sub_80FA8EC(u32, u8); -void sub_80FAB10(void); +struct RegionMap +{ + u8 mapSecName[0x14]; + u16 mapSecId; + u8 unk16; + u8 everGrandeCityArea; + u8 (*inputCallback)(void); + struct Sprite *cursorSprite; + struct Sprite *playerIconSprite; + s32 bg2x; + s32 bg2y; + u32 unk2C; // + u32 unk30; // Map rotation parameters + u32 unk34; // Likely a scrapped feature + u32 unk38; // + s32 unk3C; + s32 unk40; + s32 unk44; + s32 unk48; + s32 unk4C; + s32 unk50; + u16 cursorPosX; + u16 cursorPosY; + u16 cursorTileTag; + u16 cursorPaletteTag; + s16 scrollX; + s16 scrollY; + s16 unk60; + s16 unk62; + u16 unk64; + u16 unk66; + u16 unk68; + u16 unk6A; + u16 unk6C; + u16 unk6E; + u16 playerIconTileTag; + u16 playerIconPaletteTag; + u16 unk74; + u16 unk76; + bool8 zoomed; + u8 initStep; + s8 unk7A; + s8 cursorDeltaX; + s8 cursorDeltaY; + bool8 needUpdateVideoRegs; + bool8 blinkPlayerIcon; + bool8 playerIsInCave; + /*0x080*/ u8 filler80[0x100]; + /*0x180*/ u8 cursorSmallImage[0x100]; + /*0x280*/ u8 cursorLargeImage[0x600]; +}; + +void InitRegionMap(struct RegionMap *regionMap, bool8 zoomed); +void sub_80FA904(struct RegionMap *regionMap, bool8 zoomed); +bool8 sub_80FA940(void); +void FreeRegionMapIconResources(void); u8 sub_80FAB60(void); -void sub_80FBB3C(u16, u16); -void sub_80FBCF0(u32, u8); -void sub_80FBFB4(u8 *str, u16 region, u8); -void CopyMapName(); -u8 *CopyLocationName(u8 *dest, u8 location); +void sub_80FAEC4(void); +u8 sub_80FAFC0(void); +void UpdateRegionMapVideoRegs(void); +void sub_80FB2A4(s16, s16); +u16 sub_80FBA04(u16 mapSecId); +void CreateRegionMapCursor(u16, u16); +void CreateRegionMapPlayerIcon(u16, u16); +const u8 *GetMapSectionName(u8 *dest, u16 mapSecId, u16 length); +const u8 *CopyMapName(u8 *dest, u16 b); +const u8 *CopyLocationName(u8 *dest, u16 b); #endif // GUARD_REGION_MAP_H diff --git a/include/rom3.h b/include/rom3.h index a45ec7dc4..81bb56df1 100644 --- a/include/rom3.h +++ b/include/rom3.h @@ -1,6 +1,8 @@ #ifndef GUARD_ROM3_H #define GUARD_ROM3_H +struct DisableStruct; + void sub_800B858(void); void setup_poochyena_battle(); void sub_800B950(void); @@ -8,58 +10,58 @@ void sub_800B9A8(void); void sub_800BA78(void); void sub_800BD54(void); void sub_800BF28(void); -void dp01_prepare_buffer_wireless_probably(u8 a, u16, u8 *c); +void PrepareBufferDataTransferLink(u8 a, u16, u8 *c); void sub_800C1A8(u8); void sub_800C35C(void); void sub_800C47C(u8); void EmitGetAttributes(u8 a, u8 b, u8 c); -void dp01_build_cmdbuf_x01_a_b_0(u8 a, u8 b, u8 c); -void EmitSetAttributes(u8 a, u8 b, u8 c, u8 d, u8 *e); -void dp01_build_cmdbuf_x04_4_4_4(u8 a); -void sub_800C704(u8, u8, u8); -void dp01_build_cmdbuf_x06_a(u8 a, u8 b); -void dp01_build_cmdbuf_x07_7_7_7(u8 a); -void dp01_build_cmdbuf_x08_8_8_8(u8 a); -void dp01_build_cmdbuf_x09_9_9_9(u8 a); -void EmitFaintAnimation(u8 a); -void dp01_build_cmdbuf_x0B_B_B_B(u8 a); -void dp01_build_cmdbuf_x0C_C_C_C(u8 a); -void dp01_build_cmdbuf_x0D_a(u8 a, u8 b); -void EmitMoveAnimation(u8 a, u16 b, u8 c, u16 d, s32 e, u8 f, u8 *g); +void Emitcmd1(u8 a, u8 b, u8 c); +void EmitLoadPokeSprite(u8 a); +void EmitSendOutPoke(u8, u8, u8); +void EmitReturnPokeToBall(u8 a, u8 b); +void EmitTrainerThrow(u8 a); +void EmitTrainerSlide(u8 a); +void EmitTrainerSlideBack(u8 a); +void Emitcmd10(u8 a); +void Emitcmd11(u8 a); +void Emitcmd12(u8 a); +void EmitBallThrow(u8 a, u8 b); +void EmitMoveAnimation(u8 a, u16 b, u8 c, u16 d, s32 e, u8 f, struct DisableStruct *g); void EmitPrintString(u8 a, u16 b); -void dp01_build_cmdbuf_x12_a_bb(u8 a, u8 b, u16 c); -void sub_800CBA4(u8 a, u8 b, u8 c, u8 *d); -void sub_800CBE0(u8 a, u8 *b); -void dp01_build_cmdbuf_x16_a_b_c_ptr_d_e_f(u8 a, u8 b, u8 c, u8 d, u8 *e); -void dp01_build_cmdbuf_x17_17_17_17(u8 a); -void EmitHealthBarUpdate(u8 a, s16 b); -void EmitExpBarUpdate(u8 a, u8 b, s16 c); +void EmitPrintStringPlayerOnly(u8 a, u16 stringID); +void Emitcmd18(u8 a, u8 b, u16 c); +void Emitcmd20(u8 a, u8 b, u8 c, u8 *d); +void EmitOpenBag(u8 a, u8 *b); +void EmitChoosePokemon(u8 a, u8 b, u8 c, u8 d, u8 *e); +void Emitcmd23(u8 a); +void EmitHealthBarUpdate(u8 a, u16 b); +void EmitExpBarUpdate(u8 a, u8 b, u16 c); void EmitStatusIconUpdate(u8 a, u32 b, u32 c); void EmitStatusAnimation(u8 a, u8 b, u32 c); void EmitStatusXor(u8 a, u8 b); -void dp01_build_cmdbuf_x1D_1D_numargs_varargs(u8, u16, u8 *); -void dp01_build_cmdbuf_x21_a_bb(u8 a, u8 b, u16 c); -void dp01_build_cmdbuf_x22_a_three_bytes(u8 a, u8 b, u8 *c); -void dp01_build_cmdbuf_x23_aa_0(u8 a, u16 b); -void dp01_build_cmdbuf_x24_aa_0(u8 a, u16 b); -void dp01_build_cmdbuf_x25_25_25_25(u8 a); -void dp01_build_cmdbuf_x26_a(u8 a, u8 b); -void dp01_build_cmdbuf_x27_27_27_27(u8 a); -void dp01_build_cmdbuf_x28_28_28_28(u8 a); +void Emitcmd29(u8, u16, u8 *); +void Emitcmd33(u8 a, u8 b, u16 c); +void Emitcmd34(u8 a, u8 b, u8 *c); +void Emitcmd35(u8 a, u16 b); +void Emitcmd36(u8 a, u16 b); +void Emitcmd37(u8 a); +void Emitcmd38(u8 a, u8 b); +void Emitcmd39(u8 a); +void Emitcmd40(u8 a); void EmitHitAnimation(u8 a); -void dp01_build_cmdbuf_x2A_2A_2A_2A(u8 a); +void Emitcmd42(u8 a); void EmitEffectivenessSound(u8 a, u16 b); -void sub_800D074(u8 a, u16 b); +void Emitcmd44(u8 a, u16 b); void EmitFaintingCry(u8 a); -void EmitBattleIntroSlide(u8 a, u8 b); -void dp01_build_cmdbuf_x2F_2F_2F_2F(u8 a); -void dp01_build_cmdbuf_x30_TODO(u8 a, u8 *b, u8 c); -void dp01_build_cmdbuf_x31_31_31_31(u8 a); -void dp01_build_cmdbuf_x32_32_32_32(u8 a); +void EmitIntroSlide(u8 a, u8 b); +void EmitTrainerBallThrow(u8 a); +void Emitcmd48(u8 a, u8 *b, u8 c); +void Emitcmd49(u8 a); +void Emitcmd50(u8 a); void EmitSpriteInvisibility(u8 a, u8 b); void EmitBattleAnimation(u8 a, u8 b, u16 c); void EmitLinkStandbyMsg(u8 a, u8 b); void EmitResetActionMoveSelection(u8 a, u8 b); -void dp01_build_cmdbuf_x37_a(u8 a, u8 b); +void Emitcmd55(u8 a, u8 b); #endif // GUARD_ROM3_H diff --git a/include/rom_8077ABC.h b/include/rom_8077ABC.h index 11e94e1f5..94e535df5 100644 --- a/include/rom_8077ABC.h +++ b/include/rom_8077ABC.h @@ -4,10 +4,18 @@ #include "sprite.h" #include "task.h" +enum +{ + ANIM_BANK_ATK, + ANIM_BANK_DEF, + ANIM_BANK_ATK_PARTNER, + ANIM_BANK_DEF_PARTNER +}; + u8 sub_8077ABC(u8, u8); u8 sub_8077E44(u8 slot, u16 species, u8 a3); -u8 obj_id_for_side_relative_to_move(u8 side); -void oamt_set_x3A_32(struct Sprite *sprite, void(*callback)(struct Sprite *)); +u8 GetAnimBankSpriteId(u8 side); +void StoreSpriteCallbackInData6(struct Sprite *sprite, void(*callback)(struct Sprite *)); void sub_8078314(struct Sprite *sprite); void sub_8078364(struct Sprite *sprite); void sub_8078458(struct Sprite *sprite); @@ -22,8 +30,8 @@ u8 GetBankIdentity(u8 slot); u8 GetBankByPlayerAI(u8); u8 GetBankByPlayerAI(u8); u8 GetBankByPlayerAI(u8 state); -u8 sub_8078874(u8); -bool8 sub_8078874(u8); +u8 AnimBankSpriteExists(u8); +bool8 AnimBankSpriteExists(u8); bool8 IsDoubleBattle(); u8 IsDoubleBattle(void); bool8 IsDoubleBattle(void); @@ -55,5 +63,6 @@ void sub_807A784(u8 taskId); void sub_807A850(struct Task *task, u8 taskId); void sub_807A8D4(struct Sprite *sprite); void sub_807A960(struct Sprite *sprite); +void sub_8078A34(struct Sprite *sprite); #endif // GUARD_ROM_8077ABC_H diff --git a/include/save.h b/include/save.h index 3feaa1f3d..6c47c6f60 100644 --- a/include/save.h +++ b/include/save.h @@ -74,7 +74,7 @@ bool8 sub_8125DA8(void); u8 sub_8125DDC(void); u8 sub_8125E04(void); u8 sub_8125E2C(void); -u8 sub_8125E6C(void); +bool8 sub_8125E6C(void); u8 sub_8125EC8(u8 a1); bool8 unref_sub_8125F4C(struct UnkSaveSection *a1); u8 unref_sub_8125FA0(void); diff --git a/include/script.h b/include/script.h index 5577fcb01..5a899cf4a 100644 --- a/include/script.h +++ b/include/script.h @@ -11,9 +11,9 @@ struct ScriptContext u8 stackDepth; u8 mode; u8 comparisonResult; - u8 (*nativePtr)(void); - u8 *scriptPtr; - u8 *stack[20]; + bool8 (*nativePtr)(void); + const u8 *scriptPtr; + const u8 *stack[20]; ScrCmdFunc *cmdTable; ScrCmdFunc *cmdTableEnd; u32 data[4]; @@ -22,12 +22,12 @@ struct ScriptContext #define ScriptReadByte(ctx) (*(ctx->scriptPtr++)) void InitScriptContext(struct ScriptContext *ctx, void *cmdTable, void *cmdTableEnd); -u8 SetupBytecodeScript(struct ScriptContext *ctx, void *ptr); -void SetupNativeScript(struct ScriptContext *ctx, void *ptr); +u8 SetupBytecodeScript(struct ScriptContext *ctx, const u8 *ptr); +void SetupNativeScript(struct ScriptContext *ctx, bool8 (*ptr)(void)); void StopScript(struct ScriptContext *ctx); -u8 RunScript(struct ScriptContext *ctx); -u8 ScriptPush(struct ScriptContext *ctx, u8 *ptr); -u8 *ScriptPop(struct ScriptContext *ctx); +u8 RunScriptCommand(struct ScriptContext *ctx); +u8 ScriptPush(struct ScriptContext *ctx, const u8 *ptr); +const u8 *ScriptPop(struct ScriptContext *ctx); void ScriptJump(struct ScriptContext *ctx, u8 *ptr); void ScriptCall(struct ScriptContext *ctx, u8 *ptr); void ScriptReturn(struct ScriptContext *ctx); @@ -38,24 +38,18 @@ void ScriptContext2_Disable(void); bool8 ScriptContext2_IsEnabled(void); void ScriptContext1_Init(void); bool8 ScriptContext2_RunScript(void); -void ScriptContext1_SetupScript(u8 *ptr); +void ScriptContext1_SetupScript(const u8 *ptr); void ScriptContext1_Stop(void); void EnableBothScriptContexts(void); -void ScriptContext2_RunNewScript(u8 *ptr); -u8 *mapheader_get_tagged_pointer(u8 tag); -void mapheader_run_script_by_tag(u8 tag); -u8 *mapheader_get_first_match_from_tagged_ptr_list(u8 tag); +void ScriptContext2_RunNewScript(const u8 *ptr); void mapheader_run_script_with_tag_x1(void); void mapheader_run_script_with_tag_x3(void); void mapheader_run_script_with_tag_x5(void); void mapheader_run_script_with_tag_x6(void); bool8 mapheader_run_first_tag2_script_list_match(void); void mapheader_run_first_tag4_script_list_match(void); -u32 CalculateRamScriptChecksum(void); void ClearRamScript(void); bool8 InitRamScript(u8 *script, u16 scriptSize, u8 mapGroup, u8 mapNum, u8 objectId); u8 *GetRamScript(u8 objectId, u8 *script); -u16 gScriptResult; -extern u16 gScriptLastTalked; #endif // GUARD_SCRIPT_H diff --git a/include/script_menu.h b/include/script_menu.h index 458aad13d..dca8c26a7 100644 --- a/include/script_menu.h +++ b/include/script_menu.h @@ -1,33 +1,19 @@ #ifndef GUARD_SCRIPTMENU_H #define GUARD_SCRIPTMENU_H -struct MultichoiceListStruct -{ - struct MenuAction *list; - u8 count; -}; +struct MenuAction; -extern const struct TextStruct gUnknown_083CE048[]; +extern const u8 *const gUnknown_083CE048[]; -bool8 sub_80B5054(u8 left, u8 top, u8 var3, u8 var4); -bool8 sub_80B50B0(u8 left, u8 top, u8 var3, u8 var4, u8 var5); -u16 GetStringWidthInTilesForScriptMenu(const u8 *str); -void DrawMultichoiceMenu(u8, u8, u8, struct MenuAction *list, u8, u8); -void sub_80B5230(u8, u8, u8, u8, u8, u8); -void sub_80B52B4(u8); +bool8 ScriptMenu_Multichoice(u8 left, u8 top, u8 var3, u8 var4); +bool8 ScriptMenu_MultichoiceWithDefault(u8 left, u8 top, u8 var3, u8 var4, u8 var5); bool8 Multichoice(u8 var1, u8 var2, u8 var3, u8 var4); -void sub_80B53B4(u8, u8, u8, struct MenuAction *list, u8); -bool8 yes_no_box(u8 var1, u8 var2); -bool8 IsScriptActive(void); // unused -void task_yes_no_maybe(u8); -bool8 sub_80B5578(u8 left, u8 top, u8 multichoiceId, u8 a4, u8 columnCount); -void sub_80B5684(u8); -bool8 TryCreatePCMenu(void); -void CreatePCMenu(void); -void sub_80B5838(void); -void task_picbox(u8 taskId); -bool8 sub_80B58C4(u16 var1, u8 var2, u8 var3); -void *picbox_close(void); -bool8 sub_80B59AC(void); +bool8 ScriptMenu_YesNo(u8 var1, u8 var2); +bool8 ScriptMenu_MultichoiceGrid(u8 left, u8 top, u8 multichoiceId, u8 a4, u8 columnCount); +bool8 ScrSpecial_CreatePCMenu(void); +void ScriptMenu_CreatePCMenu(void); +void ScriptMenu_DisplayPCStartupPrompt(void); +bool8 ScriptMenu_ShowPokemonPic(u16 var1, u8 var2, u8 var3); +bool8 (*ScriptMenu_GetPicboxWaitFunc(void))(void); #endif diff --git a/include/script_movement.h b/include/script_movement.h index e3cdc25b3..dc6d7e51b 100644 --- a/include/script_movement.h +++ b/include/script_movement.h @@ -1,8 +1,8 @@ #ifndef GUARD_SCRIPT_MOVEMENT_H #define GUARD_SCRIPT_MOVEMENT_H -bool8 exec_movement(u8, u8, u8, u8 *); -bool8 sub_80A212C(u8, u8, u8); +bool8 ScriptMovement_StartObjectMovementScript(u8, u8, u8, u8 *); +bool8 ScriptMovement_IsObjectMovementFinished(u8, u8, u8); void sub_80A2178(void); #endif // GUARD_SCRIPT_MOVEMENT_H diff --git a/include/script_pokemon_80C4.h b/include/script_pokemon_80C4.h index 629980a2d..fab07994e 100644 --- a/include/script_pokemon_80C4.h +++ b/include/script_pokemon_80C4.h @@ -8,10 +8,10 @@ void ReducePlayerPartyToThree(void); u8 sub_80C4D50(void); void ShowContestWinner(void); -void HealPlayerParty(); +void ScrSpecial_HealPlayerParty(); u8 ScriptGiveMon(u16, u8, u16, u32, u32, u8); u8 ScriptGiveEgg(u16); -void ScriptWildBattle(u16, u8, u16); +void CreateScriptedWildMon(u16, u8, u16); void ScriptSetMonMoveSlot(u8, u16, u8); #endif diff --git a/include/script_pokemon_80F9.h b/include/script_pokemon_80F9.h index d65c99c15..fa5d57f0e 100644 --- a/include/script_pokemon_80F9.h +++ b/include/script_pokemon_80F9.h @@ -9,9 +9,13 @@ struct UnknownStruct2018000 extern struct UnknownStruct2018000 unk_2018000; -void sub_80F9A8C(u8); +void OpenPartyMenuFromScriptContext(u8 taskId); void sub_80F9C00(void); void sub_80F9E1C(void); void sub_80F99CC(void); +void HandleSelectPartyMenu(u8 taskId); +bool8 SetupContestPartyMenu(void); +void HandleMoveTutorPartyMenu(u8 taskId); +bool8 SetupMoveTutorPartyMenu(void); #endif diff --git a/include/secret_base.h b/include/secret_base.h index 7dd279c7f..0844cff26 100644 --- a/include/secret_base.h +++ b/include/secret_base.h @@ -5,8 +5,9 @@ void ResetSecretBases(void); void sub_80BB970(struct MapEvents *); u8 sub_80BBB24(void); void sub_80BBCCC(u8); -void sub_80BC038(s16 *, struct MapEvents *); +void sub_80BC038(struct MapPosition *, struct MapEvents *); u8 sub_80BC050(); +u8 *GetSecretBaseMapName(u8 *); void sub_80BC300(); const u8 *sub_80BCCE8(void); void sub_80BCF1C(u8); diff --git a/include/shop.h b/include/shop.h index cca6091c9..b785ca764 100644 --- a/include/shop.h +++ b/include/shop.h @@ -1,6 +1,34 @@ #ifndef GUARD_SHOP_H #define GUARD_SHOP_H +enum +{ + MART_TYPE_0, // normal mart + MART_TYPE_1, + MART_TYPE_2, +}; + +// shop view window NPC info enum +enum +{ + MAP_OBJ_ID, + X_COORD, + Y_COORD, + ANIM_NUM +}; + +struct MartInfo +{ + /* 0x0 */ void (* callback) (void); + /* 0x4 */ u16 *itemList; + /* 0x8 */ u8 itemCount; // how many unique items are there for sale? + /* 0x9 */ u8 cursor; // this shows the on-screen true index of the cursor and not the current item selected. + /* 0xA */ u8 numChoices; // how many options does the mart have? can be either 2 or 1 (BUY/SELL vs BUY) + /* 0xB */ u8 choicesAbove; // when your cursor is far down, there are choices that have scrolled up past the top. this is the count of that. + /* 0xC */ u8 martType; // 0-2. 0 is normal mart while 1-2 seem to be decor shops or non-stackable purchases in general. + /* 0xD */ u8 curItemCount; // if you are selling an item, this is the count of the current item stack you have. +}; + void sub_80B2E38(u8); void HandleShopMenuQuit(u8); void sub_80B2FA0(u8); @@ -11,8 +39,10 @@ void BuyMenuDrawMapGraphics(void); void sub_80B3764(int, int); void sub_80B37EC(void); void sub_80B40E8(u8); -void CreatePokemartMenu(void *); -void CreateDecorationShop1Menu(void *); -void CreateDecorationShop2Menu(void *); +void CreatePokemartMenu(u16 *); +void CreateDecorationShop1Menu(u16 *); +void CreateDecorationShop2Menu(u16 *); +void sub_80B356C(void); +void sub_80B368C(void); #endif // GUARD_SHOP_H diff --git a/include/songs.h b/include/songs.h index a813cc785..afd26d683 100644 --- a/include/songs.h +++ b/include/songs.h @@ -36,29 +36,29 @@ enum /*0x1E*/ SE_N, /*0x1F*/ SE_SEIKAI, /*0x20*/ SE_HAZURE, - SE_EXP, - SE_JITE_PYOKO, - SE_MU_PACHI, - SE_TK_KASYA, - SE_FU_ZAKU, - SE_FU_ZAKU2, - SE_FU_ZUZUZU, - SE_RU_GASHIN, - SE_RU_GASYAN, - SE_RU_BARI, - SE_RU_HYUU, - SE_KI_GASYAN, - SE_TK_WARPIN, - SE_TK_WARPOUT, - SE_TU_SAA, - SE_HI_TURUN, - SE_TRACK_MOVE, - SE_TRACK_STOP, - SE_TRACK_HAIK, - SE_TRACK_DOOR, - SE_MOTER, - SE_CARD, - SE_SAVE, + /*0x21*/ SE_EXP, + /*0x22*/ SE_JITE_PYOKO, + /*0x23*/ SE_MU_PACHI, + /*0x24*/ SE_TK_KASYA, + /*0x25*/ SE_FU_ZAKU, + /*0x26*/ SE_FU_ZAKU2, + /*0x27*/ SE_FU_ZUZUZU, + /*0x28*/ SE_RU_GASHIN, + /*0x29*/ SE_RU_GASYAN, + /*0x2A*/ SE_RU_BARI, + /*0x2B*/ SE_RU_HYUU, + /*0x2C*/ SE_KI_GASYAN, + /*0x2D*/ SE_TK_WARPIN, + /*0x2E*/ SE_TK_WARPOUT, + /*0x2F*/ SE_TU_SAA, + /*0x30*/ SE_HI_TURUN, + /*0x31*/ SE_TRACK_MOVE, + /*0x32*/ SE_TRACK_STOP, + /*0x33*/ SE_TRACK_HAIK, + /*0x34*/ SE_TRACK_DOOR, + /*0x35*/ SE_MOTER, + /*0x36*/ SE_CARD, + /*0x37*/ SE_SAVE, /*0x38*/ SE_KON, /*0x39*/ SE_KON2, /*0x3A*/ SE_KON3, @@ -94,20 +94,20 @@ enum SE_T_KAMI2, SE_ELEBETA, /*0x5A*/ SE_HINSI, - SE_EXPMAX, - SE_TAMAKORO, - SE_TAMAKORO_E, - SE_BASABASA, - SE_REGI, + /*0x5B*/ SE_EXPMAX, + /*0x5C*/ SE_TAMAKORO, + /*0x5D*/ SE_TAMAKORO_E, + /*0x5E*/ SE_BASABASA, + /*0x5F*/ SE_REGI, SE_C_GAJI, SE_C_MAKU_U, SE_C_MAKU_D, SE_C_PASI, SE_C_SYU, SE_C_PIKON, - SE_REAPOKE, - SE_OP_BASYU, - SE_BT_START, + /*0x66*/ SE_REAPOKE, + /*0x67*/ SE_OP_BASYU, + /*0x68*/ SE_BT_START, SE_DENDOU, SE_JIHANKI, SE_TAMA, @@ -131,20 +131,20 @@ enum /*0x7D*/ SE_W145B, /*0x7E*/ SE_W145C, /*0x7F*/ SE_W240, - SE_W015, - SE_W081, - SE_W081B, - SE_W088, - SE_W016, - SE_W016B, - SE_W003, - SE_W104, - SE_W013, - SE_W196, - SE_W086, - SE_W004, - SE_W025, - SE_W025B, + /*0x80*/ SE_W015, + /*0x81*/ SE_W081, + /*0x82*/ SE_W081B, + /*0x83*/ SE_W088, + /*0x84*/ SE_W016, + /*0x85*/ SE_W016B, + /*0x86*/ SE_W003, + /*0x87*/ SE_W104, + /*0x88*/ SE_W013, + /*0x89*/ SE_W196, + /*0x8A*/ SE_W086, + /*0x8B*/ SE_W004, + /*0x8C*/ SE_W025, + /*0x8D*/ SE_W025B, SE_W152, SE_W026, SE_W172, @@ -185,29 +185,29 @@ enum SE_W071B, SE_W071, SE_W103, - SE_W062, - SE_W062B, - SE_W048, - SE_W187, - SE_W118, - SE_W155, - SE_W122, - SE_W060, - SE_W185, - SE_W014, - SE_W043, - SE_W207, - SE_W207B, - SE_W215, - SE_W109, - SE_W173, - SE_W280, - SE_W202, - SE_W060B, - SE_W076, - SE_W080, - SE_W100, - SE_W107, + /*0xB6*/ SE_W062, + /*0xB7*/ SE_W062B, + /*0xB8*/ SE_W048, + /*0xB9*/ SE_W187, + /*0xBA*/ SE_W118, + /*0xBB*/ SE_W155, + /*0xBC*/ SE_W122, + /*0xBD*/ SE_W060, + /*0xBE*/ SE_W185, + /*0xBF*/ SE_W014, + /*0xC0*/ SE_W043, + /*0xC1*/ SE_W207, + /*0xC2*/ SE_W207B, + /*0xC3*/ SE_W215, + /*0xC4*/ SE_W109, + /*0xC5*/ SE_W173, + /*0xC6*/ SE_W280, + /*0xC7*/ SE_W202, + /*0xC8*/ SE_W060B, + /*0xC9*/ SE_W076, + /*0xCA*/ SE_W080, + /*0xCB*/ SE_W100, + /*0xCC*/ SE_W107, SE_W166, SE_W129, SE_W115, @@ -274,38 +274,38 @@ enum /*0x171*/ BGM_ME_BACHI, /*0x172*/ BGM_FANFA4, /*0x173*/ BGM_FANFA5, - BGM_ME_WAZA, - BGM_BIJYUTU, - BGM_DOORO_X4, - BGM_FUNE_KAN, - BGM_ME_SHINKA, - BGM_SHINKA, - BGM_ME_WASURE, - BGM_SYOUJOEYE, - BGM_BOYEYE, - BGM_DAN02, - BGM_MACHI_S3, - BGM_ODAMAKI, - BGM_B_TOWER, - BGM_SWIMEYE, - BGM_DAN03, - BGM_ME_KINOMI, - BGM_ME_TAMA, - BGM_ME_B_BIG, - BGM_ME_B_SMALL, - BGM_ME_ZANNEN, - BGM_BD_TIME, - BGM_TEST1, - BGM_TEST2, - BGM_TEST3, - BGM_TEST4, - BGM_TEST, - BGM_GOMACHI0, - BGM_GOTOWN, - BGM_POKECEN, - BGM_NEXTROAD, - BGM_GRANROAD, - BGM_CYCLING, + /*0x174*/ BGM_ME_WAZA, + /*0x175*/ BGM_BIJYUTU, + /*0x176*/ BGM_DOORO_X4, + /*0x177*/ BGM_FUNE_KAN, + /*0x178*/ BGM_ME_SHINKA, + /*0x179*/ BGM_SHINKA, + /*0x17A*/ BGM_ME_WASURE, + /*0x17B*/ BGM_SYOUJOEYE, + /*0x17C*/ BGM_BOYEYE, + /*0x17D*/ BGM_DAN02, + /*0x17E*/ BGM_MACHI_S3, + /*0x17F*/ BGM_ODAMAKI, + /*0x180*/ BGM_B_TOWER, + /*0x181*/ BGM_SWIMEYE, + /*0x182*/ BGM_DAN03, + /*0x183*/ BGM_ME_KINOMI, + /*0x184*/ BGM_ME_TAMA, + /*0x185*/ BGM_ME_B_BIG, + /*0x186*/ BGM_ME_B_SMALL, + /*0x187*/ BGM_ME_ZANNEN, + /*0x188*/ BGM_BD_TIME, + /*0x189*/ BGM_TEST1, + /*0x18A*/ BGM_TEST2, + /*0x18B*/ BGM_TEST3, + /*0x18C*/ BGM_TEST4, + /*0x18D*/ BGM_TEST, + /*0x18E*/ BGM_GOMACHI0, + /*0x18F*/ BGM_GOTOWN, + /*0x190*/ BGM_POKECEN, + /*0x191*/ BGM_NEXTROAD, + /*0x192*/ BGM_GRANROAD, + /*0x193*/ BGM_CYCLING, BGM_FRIENDLY, BGM_MISHIRO, BGM_TOZAN, diff --git a/include/species.h b/include/species.h index e33481afd..9ab0565cb 100644 --- a/include/species.h +++ b/include/species.h @@ -1,7 +1,8 @@ #ifndef GUARD_SPECIES_H #define GUARD_SPECIES_H -enum { +enum +{ SPECIES_NONE, // 0x000 SPECIES_BULBASAUR, // 0x001 SPECIES_IVYSAUR, // 0x002 diff --git a/include/sprite.h b/include/sprite.h index a65e71bd9..769e1584d 100644 --- a/include/sprite.h +++ b/include/sprite.h @@ -19,7 +19,7 @@ struct CompressedSpriteSheet struct SpriteFrameImage { - u8 *data; + const u8 *data; u16 size; }; @@ -204,14 +204,14 @@ struct Sprite /*0x3A*/ s16 data6; /*0x3C*/ s16 data7; - /*0x3E*/ u16 inUse:1; - u16 coordOffsetEnabled:1; - u16 invisible:1; - u16 flags_3:1; - u16 flags_4:1; - u16 flags_5:1; - u16 flags_6:1; - u16 flags_7:1; + /*0x3E*/ u16 inUse:1; //1 + u16 coordOffsetEnabled:1; //2 + u16 invisible:1; //4 + u16 flags_3:1; //8 + u16 flags_4:1; //0x10 + u16 flags_5:1; //0x20 + u16 flags_6:1; //0x40 + u16 flags_7:1; //0x80 /*0x3F*/ u16 hFlip:1; u16 vFlip:1; u16 animBeginning:1; @@ -257,7 +257,7 @@ void FreeSpriteTiles(struct Sprite *sprite); void FreeSpritePalette(struct Sprite *sprite); void FreeSpriteOamMatrix(struct Sprite *sprite); void DestroySpriteAndFreeResources(struct Sprite *sprite); -void sub_800142C(u32 a1, u32 a2, u16 *a3, u16 a4, u32 a5); +void DrawPartyMenuMonText(u32 a1, u32 a2, const u16 *a3, u16 a4, u32 a5); void AnimateSprite(struct Sprite *sprite); void StartSpriteAnim(struct Sprite *sprite, u8 animNum); void StartSpriteAnimIfDifferent(struct Sprite *sprite, u8 animNum); @@ -299,4 +299,6 @@ u8 SpriteTileAllocBitmapOp(u16 bit, u8 op); extern const union AffineAnimCmd *const gDummySpriteAffineAnimTable[]; +extern const struct SpriteTemplate gDummySpriteTemplate; + #endif // GUARD_SPRITE_H diff --git a/include/start_menu.h b/include/start_menu.h index 5169b3bf0..d3f77dc99 100644 --- a/include/start_menu.h +++ b/include/start_menu.h @@ -5,7 +5,7 @@ void CreateStartMenuTask(void (*func)(u8)); void sub_80712B4(u8 taskId); void sub_8071310(void); -void InitSaveDialog(void); +void ScrSpecial_DoSaveDialog(void); void sub_8071B28(void); #endif // GUARD_STARTER_CHOOSE_H diff --git a/include/strings.h b/include/strings.h index 89a78e478..fe9cfc6ba 100644 --- a/include/strings.h +++ b/include/strings.h @@ -188,7 +188,7 @@ extern const u8 OtherText_TheField[]; extern const u8 OtherText_TheField2[]; extern const u8 OtherText_ThePC[]; -extern const struct TextStruct gUnknown_0840E740[]; +extern const u8 *const gUnknown_0840E740[7]; extern const u8 gOtherText_ReturnTo[]; extern const u8 gOtherText_WhatWillYouDo2[]; diff --git a/include/strings2.h b/include/strings2.h index 600bb2d31..8052c6c4a 100644 --- a/include/strings2.h +++ b/include/strings2.h @@ -319,4 +319,8 @@ extern const u8 gOtherText_OK[]; // wallclock extern const u8 gOtherText_CorrectTimePrompt[]; +#if GERMAN +extern const u8 deuOtherText_ForgotAndLearned[]; +#endif + #endif // GUARD_STRINGS2_H diff --git a/include/text.h b/include/text.h index cf413644b..ebc4ebe7e 100644 --- a/include/text.h +++ b/include/text.h @@ -2,6 +2,7 @@ #define GUARD_TEXT_H #define CHAR_SPACE 0x00 +#define CHAR_SONG_WORD_SEPARATOR 0x37 // separates words in the bard song. Not sure if it's used for anything else #define CHAR_0 0xA1 #define CHAR_QUESTION_MARK 0xAC #define CHAR_PERIOD 0xAD @@ -9,8 +10,9 @@ #define CHAR_ELLIPSIS 0xB0 #define CHAR_MALE 0xB5 #define CHAR_FEMALE 0xB6 -#define CHAR_COMMA 0xB8 #define CHAR_CURRENCY 0xB7 +#define CHAR_COMMA 0xB8 +#define CHAR_MULT_SIGN 0xB9 #define CHAR_SLASH 0xBA #define CHAR_A 0xBB #define CHAR_B 0xBC @@ -65,6 +67,8 @@ #define CHAR_y 0xED #define CHAR_z 0xEE #define CHAR_COLON 0xF0 +#define CHAR_PROMPT_SCROLL 0xFA // waits for button press and scrolls dialog +#define CHAR_PROMPT_CLEAR 0xFB // waits for button press and clears dialog #define EXT_CTRL_CODE_BEGIN 0xFC // extended control code #define PLACEHOLDER_BEGIN 0xFD // string placeholder #define CHAR_NEWLINE 0xFE @@ -94,35 +98,35 @@ struct WindowConfig struct Window { - u8 textMode; - u8 fontNum; - u8 language; - u8 foregroundColor; - u8 backgroundColor; - u8 shadowColor; - u8 paletteNum; - u8 tilemapLeft; - u8 tilemapTop; - u8 width; - u8 height; - u8 win_field_B; - u8 win_field_C; - u8 delayCounter; - u8 spacing; - u8 win_field_F; - u8 cursorX; - u8 cursorY; - u8 left; - u16 top; - u16 state; - u16 downArrowCounter; - u16 tileDataStartOffset; - u16 tileDataOffset; - u16 textIndex; - const u8 *text; - u8 *tileData; - u16 *tilemap; - struct WindowConfig *config; + /*0x00*/ u8 textMode; + /*0x01*/ u8 fontNum; + /*0x02*/ u8 language; + /*0x03*/ u8 foregroundColor; + /*0x04*/ u8 backgroundColor; + /*0x05*/ u8 shadowColor; + /*0x06*/ u8 paletteNum; + /*0x07*/ u8 tilemapLeft; + /*0x08*/ u8 tilemapTop; + /*0x09*/ u8 width; + /*0x0A*/ u8 height; + /*0x0B*/ u8 win_field_B; + /*0x0C*/ u8 win_field_C; + /*0x0D*/ u8 delayCounter; + /*0x0E*/ u8 spacing; + /*0x0F*/ u8 win_field_F; + /*0x10*/ u8 cursorX; + /*0x11*/ u8 cursorY; + /*0x12*/ u8 left; + /*0x14*/ u16 top; // padded to 0x14 + /*0x16*/ u16 state; + /*0x18*/ u16 downArrowCounter; + /*0x1A*/ u16 tileDataStartOffset; + /*0x1C*/ u16 tileDataOffset; + /*0x1E*/ u16 textIndex; + /*0x20*/ const u8 *text; + /*0x24*/ u8 *tileData; + /*0x28*/ u16 *tilemap; + /*0x2C*/ const struct WindowConfig *config; }; extern vu16 *const gBGControlRegs[]; @@ -199,6 +203,7 @@ extern u8 gStringVar1[]; extern u8 gStringVar2[]; extern u8 gStringVar3[]; extern u8 gStringVar4[]; +extern u8 gTileBuffer[]; void LoadFontDefaultPalette(const struct WindowConfig *winConfig); void SetUpWindowConfig(const struct WindowConfig *winConfig); @@ -241,8 +246,8 @@ u8 sub_8004D38(struct Window *win, const u8 *text, u16 tileDataStartOffset, u8 l u8 sub_8004DB0(struct Window *win, const u8 *text, u16 tileDataStartOffset, u8 left, u8 top, u16 a6); u8 sub_8004E24(struct Window *win); void sub_8004E28(struct Window *win, u8 *foreground, u8 *background, u8 *shadow); -void sub_8004E3C(struct WindowConfig *winConfig, u8 *tileData, const u8 *text); -u8 GetStringWidthGivenWindowConfig(struct WindowConfig *winConfig, const u8 *s); +void sub_8004E3C(const struct WindowConfig *winConfig, u8 *tileData, const u8 *text); +u8 GetStringWidthGivenWindowConfig(const struct WindowConfig *winConfig, const u8 *s); void ConvertInternationalString(u8 *s, u8 language); void StripExtCtrlCodes(u8 *str); s32 StringCompareWithoutExtCtrlCodes(const u8 *str1, const u8 *str2); diff --git a/include/trade.h b/include/trade.h new file mode 100644 index 000000000..642bdcd65 --- /dev/null +++ b/include/trade.h @@ -0,0 +1,64 @@ + +#ifndef GUARD_TRADE_H +#define GUARD_TRADE_H + +struct TradeEwramSubstruct2 { + /*0x0000*/ u8 filler_0000; + /*0x0004*/ struct Window window; + /*0x0034*/ u8 textWindowBaseTileNum; + /*0x0038*/ struct Pokemon pokemon; + /*0x009c*/ u8 unk_009c; + /*0x009d*/ u8 unk_009d; + /*0x009e*/ u16 linkData[10]; + /*0x00b2*/ u8 unk_00b2; + /*0x00b3*/ u8 unk_00b3; + /*0x00b4*/ u16 unk_00b4; + /*0x00b6*/ u16 unk_00b6; + // Sprite indices + /*0x00b8*/ u8 pokePicSpriteIdxs[2]; + /*0x00ba*/ u8 unk_00ba; + /*0x00bb*/ u8 unk_00bb; + /*0x00bc*/ u8 unk_00bc; + /*0x00bd*/ u8 unk_00bd; + // Timer + /*0x00c0*/ u32 unk_00c0; + // Scene index + /*0x00c4*/ u16 unk_00c4; + /*0x00c6*/ u8 filler_00c6[0x3c]; + /*0x0102*/ u8 unk_0102; + /*0x0103*/ u8 unk_0103; + /*0x0104*/ u16 unk_0104; + /*0x0106*/ u16 unk_0106; + /*0x0108*/ u16 unk_0108; + /*0x010a*/ u16 unk_010a; + /*0x010c*/ u16 unk_010c; + /*0x010e*/ s16 unk_010e; + /*0x0110*/ s16 bg1vofs; + /*0x0112*/ s16 bg1hofs; + /*0x0114*/ s16 bg2vofs; + /*0x0116*/ s16 bg2hofs; + /*0x0118*/ u16 unk_0118; + /*0x011a*/ u16 unk_011a; + /*0x011c*/ u16 unk_011c; + /*0x011e*/ u8 isLinkTrade; + /*0x0120*/ u16 tradeSpecies[2]; + /*0x0124*/ u16 unk_0124; +}; + +extern struct TradeEwramSubstruct2 *gUnknown_03004828; +extern const u16 gUnknown_0820C9F8[][16]; +extern const u32 gUnknown_0820CA98[]; +extern const u16 gUnknown_0820F798[]; + +void sub_8047CD8(void); +u16 sub_804DB2C(void); +void sub_804DB68(void); +void sub_804E174(void); +extern const u8 gOtherText_MaleSymbol3[2]; +extern const u8 gOtherText_FemaleSymbol3[2]; +extern const u8 gOtherText_GenderlessSymbol[2]; + +void sub_804E22C(void); +u16 sub_804D89C(void); + +#endif //POKERUBY_TRADE_H diff --git a/include/trader.h b/include/trader.h index 24a9f2a07..832a04b65 100644 --- a/include/trader.h +++ b/include/trader.h @@ -1,6 +1,7 @@ #ifndef GUARD_TRADER_H #define GUARD_TRADER_H -void sub_81099CC(void); +void TraderSetup(void); +void sub_8109A20(void); #endif // GUARD_TRADER_H diff --git a/include/trainer_card.h b/include/trainer_card.h index bd0c808dd..b9d3ca081 100644 --- a/include/trainer_card.h +++ b/include/trainer_card.h @@ -33,20 +33,6 @@ void sub_8093130(u8, void (*)(void)); void sub_8093390(struct TrainerCard *); u8 sub_80934C4(u8 id); -// gUnknown_083B5EBC:: @ 83B5EBC -bool8 sub_8093864(); -bool8 sub_80938A8(); -bool8 sub_80938CC(); -bool8 sub_8093918(); -bool8 sub_8093938(); -bool8 sub_8093954(); -bool8 sub_8093980(); - -// gUnknown_083B5ED8:: @ 83B5ED8 -bool8 sub_8093AA0(); -bool8 sub_8093AF0(); -bool8 sub_8093C0C(struct TrainerCard *trainerCard); -bool8 sub_8093C38(); -bool8 sub_8093D50(void); +extern struct TrainerCard gTrainerCards[4]; #endif // GUARD_TRAINER_CARD_H diff --git a/include/trainer_see.h b/include/trainer_see.h index b80a41641..de96dcd3a 100644 --- a/include/trainer_see.h +++ b/include/trainer_see.h @@ -7,29 +7,13 @@ bool8 CheckTrainers(void); bool8 CheckTrainer(u8); u8 TrainerCanApproachPlayer(struct MapObject *); -bool8 IsTrainerInRangeSouth(struct MapObject *trainerObj, s16 vision, s16 x, s16 y); -bool8 IsTrainerInRangeNorth(struct MapObject *trainerObj, s16 vision, s16 x, s16 y); -bool8 IsTrainerInRangeWest(struct MapObject *trainerObj, s16 vision, s16 x, s16 y); -bool8 IsTrainerInRangeEast(struct MapObject *trainerObj, s16 vision, s16 x, s16 y); + bool8 CheckPathBetweenTrainerAndPlayer(struct MapObject2 *, u8, u8); void sub_80842C8(struct MapObject *, u8); void sub_80842FC(void (*func)(u8)); void RunTrainerSeeFuncList(u8); -u8 sub_8084394(void); -s8 sub_8084398(u8 taskId, struct Task *task, struct MapObject *trainerObj); -s8 sub_80843DC(u8 taskId, struct Task *task, struct MapObject *trainerObj); -s8 sub_808441C(u8 taskId, struct Task *task, struct MapObject *trainerObj); -s8 sub_8084478(u8 taskId, struct Task *task, struct MapObject *trainerObj); -s8 sub_8084534(u8 taskId, struct Task *task, struct MapObject *trainerObj); -s8 sub_8084578(u8 taskId, struct Task *task, struct MapObject *trainerObj); -s8 sub_80845AC(u8 taskId, struct Task *task, struct MapObject *trainerObj); -s8 sub_80845C8(u8 taskId, struct Task *task, struct MapObject *trainerObj); -s8 sub_80845FC(u8 taskId, struct Task *task, struct MapObject *trainerObj); -s8 sub_8084654(u8 taskId, struct Task *task, struct MapObject *trainerObj); -s8 sub_80846C8(u8 taskId, struct Task *task, struct MapObject *trainerObj); -void sub_80846E4(u8 taskId); void sub_8084794(struct MapObject *var); -void sub_80847C8(void); +void ScrSpecial_EndTrainerApproach(void); void sub_80847D8(u8); void sub_8084894(struct Sprite *sprite, u16 a2, u8 a3); void objc_exclamation_mark_probably(struct Sprite *sprite); diff --git a/include/unknown_task.h b/include/unknown_task.h index dc07767d6..d7ac63931 100644 --- a/include/unknown_task.h +++ b/include/unknown_task.h @@ -1,14 +1,24 @@ #ifndef GUARD_UNKNOWN_TASK_H #define GUARD_UNKNOWN_TASK_H +struct UnknownTaskStruct +{ + volatile void *dest; + u32 control; + u8 unk8; + u8 unk9; +}; + void remove_some_task(void); void remove_some_task(void); void dp12_8087EA4(void); void dp12_8087EA4(void); -void sub_80895F8(u32 i, u32 i1, u32 i2); -void sub_80895F8(); +//void sub_80895F8(u32 i, u32 i1, u32 i2); +//void sub_80895F8(); +void sub_80895F8(struct UnknownTaskStruct unk); void sub_8089668(void); void sub_8089668(); -void sub_8089944(int i, int i1, int i2, int i3, int i4, int i5, int i6); +//void sub_8089944(int i, int i1, int i2, int i3, int i4, int i5, int i6); +u8 sub_8089944(u8 a1, u8 a2, u8 a3, u8 a4, u8 a5, u8 a6, u8 a7); #endif // GUARD_UNKNOWN_TASK_H diff --git a/include/util.h b/include/util.h index 1851c2e82..87fa4aecc 100644 --- a/include/util.h +++ b/include/util.h @@ -9,5 +9,7 @@ extern const u32 gBitTable[]; u8 CreateInvisibleSpriteWithCallback(void (*)(struct Sprite *)); void StoreWordInTwoHalfwords(u16 *, u32); void LoadWordFromTwoHalfwords(u16 *, u32 *); +u16 CalcCRC16(u8 *data, int length); +void DoBgAffineSet(struct BgAffineDstData *dest, u32 texX, u32 texY, s16 scrX, s16 scrY, s16 sx, s16 sy, u16 alpha); #endif // GUARD_UTIL_H diff --git a/include/vars.h b/include/vars.h index a144be80a..631b9a41d 100644 --- a/include/vars.h +++ b/include/vars.h @@ -3,6 +3,7 @@ #define VAR_0x3F20 0x3F20 +#define VAR_0x4000 0x4000 #define VAR_0x4001 0x4001 #define VAR_0x4002 0x4002 #define VAR_0x4003 0x4003 @@ -46,6 +47,7 @@ #define VAR_0x4095 0x4095 #define VAR_0x4097 0x4097 #define VAR_0x409a 0x409a +#define VAR_WEATHER_INSTITUTE_CLEARED 0x040B3 #define VAR_PORTHOLE 0x40B4 #define VAR_0x40BC 0x40BC diff --git a/include/wild_encounter.h b/include/wild_encounter.h index a4485b08d..d4b343126 100644 --- a/include/wild_encounter.h +++ b/include/wild_encounter.h @@ -28,12 +28,12 @@ extern struct WildPokemonHeader gWildMonHeaders[]; void DisableWildEncounters(bool8 disabled); bool8 StandardWildEncounter(u16 a, u16 b); -void RockSmashWildEncounter(void); +void ScrSpecial_RockSmashWildEncounter(void); bool8 SweetScentWildEncounter(void); -bool8 GetFishingWildMonListHeader(void); +bool8 DoesCurrentMapHaveFishingMons(void); void FishingWildEncounter(u8 rod); u16 GetLocalWildMon(bool8 *isWaterMon); -u16 GetMirageIslandMon(void); +u16 GetLocalWaterMon(void); bool8 UpdateRepelCounter(void); #endif // GUARD_WILD_ENCOUNTER_H diff --git a/ld_script.txt b/ld_script.txt index 9ddfdf3dc..f16611f57 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -25,7 +25,7 @@ SECTIONS { /* .bss.code starts at 0x3000F60 */ - src/m4a_2.o(.bss.code); + src/libs/m4a_2.o(.bss.code); /* COMMON starts at 0x3001760 */ @@ -39,244 +39,223 @@ SECTIONS { ALIGN(4) { asm/crt0.o(.text); - src/main.o(.text); - src/sprite.o(.text); - src/text.o(.text); - src/string_util.o(.text); - src/link.o(.text); - src/rtc.o(.text); - src/main_menu.o(.text); + src/engine/main.o(.text); + src/engine/sprite.o(.text); + src/engine/text.o(.text); + src/engine/string_util.o(.text); + src/engine/link.o(.text); + src/engine/rtc.o(.text); + src/engine/main_menu.o(.text); src/rom3.o(.text); - src/decompress.o(.text); + src/engine/decompress.o(.text); asm/battle_1.o(.text); src/rom_800D42C.o(.text); asm/battle_1.o(.text_800DC24); - src/battle_2.o(.text); + src/battle/battle_2.o(.text); asm/battle_2.o(.text); - asm/battle_3.o(.text); - asm/battle_4.o(.text); - asm/battle_5.o(.text); - src/battle_6.o(.text); - src/battle_7.o(.text); - asm/battle_8.o(.text); + src/battle/battle_3.o(.text); + src/battle/battle_4.o(.text); + src/battle/battle_controller_player.o(.text); + src/battle/battle_7.o(.text); + src/battle/battle_controller_opponent.o(.text); asm/battle_9.o(.text); - src/battle_10.o(.text); - src/pokemon_1.o(.text); - src/calculate_base_damage.o(.text); - src/pokemon_2.o(.text); + src/battle/battle_controller_linkopponent.o(.text); + src/pokemon/pokemon_1.o(.text); + src/battle/calculate_base_damage.o(.text); + src/pokemon/pokemon_2.o(.text); asm/pokemon_item_effect.o(.text); - src/pokemon_3.o(.text); + src/pokemon/pokemon_3.o(.text); src/de_rom_8040FE0.o(.text); - src/trig.o(.text); - src/rng.o(.text); - src/util.o(.text); - src/blend_palette.o(.text); - src/daycare.o(.text); - asm/daycare.o(.text); - src/egg_hatch.o(.text); - asm/egg_hatch.o(.text); - src/battle_interface.o(.text); - src/smokescreen.o(.text); - src/pokeball.o(.text); - src/load_save.o(.text); - asm/trade.o(.text); - src/trade.o(.text); - asm/trade.o(.text.sub_804A9F4); - src/trade.o(.text.sub_804DAD4); - asm/trade.o(.text.sub_804DB2C); - asm/berry_blender.o(.text); - src/play_time.o(.text); - src/new_game.o(.text); - src/rom4.o(.text); - src/fieldmap.o(.text); - src/metatile_behavior.o(.text); - src/field_camera.o(.text); - src/field_door.o(.text); - src/field_player_avatar.o(.text); - src/field_map_obj.o(.text); - asm/field_map_obj.o(.text); - src/field_map_obj.o(.text_fmocb2_c); - src/field_ground_effect.o(.text); - asm/field_ground_effect.o(.text); - src/field_map_obj_helpers.o(.text); - src/field_message_box.o(.text); - src/map_obj_lock.o(.text); - src/text_window.o(.text); - src/script.o(.text); - src/scrcmd.o(.text); - src/field_control_avatar.o(.text); - src/event_data.o(.text); - src/coord_event_weather.o(.text); - src/field_tasks.o(.text); - src/clock.o(.text); - asm/reset_rtc_screen.o(.text); - asm/party_menu.o(.text); - src/party_menu.o(.text); - asm/party_menu.o(.text_8070968); - src/start_menu.o(.text); - src/menu.o(.text); - src/tileset_anim.o(.text); - src/palette.o(.text); - src/sound.o(.text); - src/battle_anim.o(.text); + src/engine/trig.o(.text); + src/engine/rng.o(.text); + src/engine/util.o(.text); + src/engine/blend_palette.o(.text); + src/field/daycare.o(.text); + src/scene/egg_hatch.o(.text); + src/battle/battle_interface.o(.text); + src/battle/smokescreen.o(.text); + src/battle/pokeball.o(.text); + src/engine/load_save.o(.text); + src/engine/trade.o(.text); + src/scene/berry_blender.o(.text); + src/engine/play_time.o(.text); + src/scene/new_game.o(.text); + src/field/overworld.o(.text); + src/field/fieldmap.o(.text); + src/field/metatile_behavior.o(.text); + src/field/field_camera.o(.text); + src/field/field_door.o(.text); + src/field/field_player_avatar.o(.text); + src/field/field_map_obj.o(.text); + src/field/field_ground_effect.o(.text); + src/field/field_map_obj_helpers.o(.text); + src/field/field_message_box.o(.text); + src/field/map_obj_lock.o(.text); + src/engine/text_window.o(.text); + src/engine/script.o(.text); + src/field/scrcmd.o(.text); + src/field/field_control_avatar.o(.text); + src/field/event_data.o(.text); + src/field/coord_event_weather.o(.text); + src/field/field_tasks.o(.text); + src/engine/clock.o(.text); + src/engine/reset_rtc_screen.o(.text); + src/field/party_menu.o(.text); + src/field/start_menu.o(.text); + src/engine/menu.o(.text); + src/engine/tileset_anim.o(.text); + src/engine/palette.o(.text); + src/engine/sound.o(.text); + src/battle/battle_anim.o(.text); src/rom_8077ABC.o(.text); - src/task.o(.text); - asm/reshow_battle_screen.o(.text); - asm/battle_anim_807B69C.o(.text); - src/title_screen.o(.text); - src/field_weather.o(.text); + src/engine/task.o(.text); + src/battle/reshow_battle_screen.o(.text); + src/battle/battle_anim_807B69C.o(.text); + src/scene/title_screen.o(.text); + src/field/field_weather.o(.text); asm/field_weather.o(.text); - src/field_fadetransition.o(.text); - asm/field_fadetransition.o(.text); - asm/field_screen_effect.o(.text); - src/battle_setup.o(.text); - asm/cable_club.o(.text); - src/cable_club.o(.text); - asm/cable_club.o(.text_80830E4); - src/mori_debug_menu.o(.text); - src/trainer_see.o(.text); - src/wild_encounter.o(.text); - src/field_effect.o(.text); - asm/unknown_task.o(.text); - asm/pokemon_menu.o(.text); - src/option_menu.o(.text); - src/pokedex.o(.text); - src/trainer_card.o(.text); - src/save_menu_util.o(.text); - src/battle_party_menu.o(.text); + src/field/field_fadetransition.o(.text); + src/field/field_screen_effect.o(.text); + src/battle/battle_setup.o(.text); + src/engine/cable_club.o(.text); + src/debug/mori_debug_menu.o(.text); + src/field/trainer_see.o(.text); + src/field/wild_encounter.o(.text); + src/field/field_effect.o(.text); + src/unknown_task.o(.text); + src/pokemon/pokemon_menu.o(.text); + src/engine/option_menu.o(.text); + src/pokemon/pokedex.o(.text); + src/engine/trainer_card.o(.text); + src/engine/save_menu_util.o(.text); + src/battle/battle_party_menu.o(.text); asm/pokemon_storage_system.o(.text); - src/pokemon_storage_system.o(.text); + src/pokemon/pokemon_storage_system.o(.text); asm/pokemon_storage_system.o(.text_8098A38); - asm/pokemon_icon.o(.text); + src/pokemon/pokemon_icon.o(.text); asm/pokemon_summary_screen.o(.text); - src/pokemon_summary_screen.o(.text); + src/pokemon/pokemon_summary_screen.o(.text); asm/pokemon_summary_screen.o(.text_80A0958); - src/script_movement.o(.text); - src/fldeff_cut.o(.text); - src/mail_data.o(.text); - src/map_name_popup.o(.text); - asm/item_menu.o(.text); - src/battle_anim_80A7E7C.o(.text); - src/item.o(.text); - src/matsuda_debug_menu.o(.text); + src/field/script_movement.o(.text); + src/field/fldeff_cut.o(.text); + src/pokemon/mail_data.o(.text); + src/field/map_name_popup.o(.text); + src/field/item_menu.o(.text); + src/battle/battle_anim_80A7E7C.o(.text); + src/field/item.o(.text); + src/debug/matsuda_debug_menu.o(.text); asm/contest.o(.text); - src/shop.o(.text); - asm/shop.o(.text); - src/berry.o(.text); - src/script_menu.o(.text); - src/naming_screen.o(.text); - src/money.o(.text); + src/field/shop.o(.text); + src/field/berry.o(.text); + src/field/script_menu.o(.text); + src/engine/naming_screen.o(.text); + src/field/money.o(.text); asm/contest_effect.o(.text); - src/record_mixing.o(.text); - asm/record_mixing.o(.text); - src/sound_check_menu.o(.text); - src/secret_base.o(.text); + src/engine/record_mixing.o(.text); + src/debug/sound_check_menu.o(.text); + src/field/secret_base.o(.text); asm/secret_base.o(.text_80BC1D0); - src/tv.o(.text); + src/field/tv.o(.text); asm/contest_link_80C2020.o(.text); src/script_pokemon_util_80C4BF0.o(.text); - src/field_poison.o(.text); - src/pokemon_size_record.o(.text); + src/field/field_poison.o(.text); + src/pokemon/pokemon_size_record.o(.text); asm/fldeff_80C5CD4.o(.text); - src/field_special_scene.o(.text); - src/rotating_gate.o(.text); - src/safari_zone.o(.text); + src/field/field_special_scene.o(.text); + src/field/rotating_gate.o(.text); + src/field/safari_zone.o(.text); asm/contest_link_80C857C.o(.text); - src/contest_link_80C857C.o(.text); - src/item_use.o(.text); + src/battle/contest_link_80C857C.o(.text); + src/field/item_use.o(.text); asm/battle_anim_80CA710.o(.text); - src/bike.o(.text); + src/field/bike.o(.text); asm/easy_chat.o(.text); - src/easy_chat.o(.text); + src/field/easy_chat.o(.text); asm/pokenav.o(.text); - src/pokenav.o(.text); + src/field/pokenav.o(.text); asm/pokenav.o(.text_80F708C); - asm/mon_markings.o(.text); - src/mauville_old_man.o(.text); - asm/mauville_old_man.o(.text); - src/mail.o(.text); - asm/menu_helpers.o(.text); + src/pokemon/mon_markings.o(.text); + src/field/mauville_man.o(.text); + src/pokemon/mail.o(.text); + src/field/menu_helpers.o(.text); src/script_pokemon_util_80F99CC.o(.text); - src/dewford_trend.o(.text); - src/heal_location.o(.text); - asm/region_map.o(.text); + src/field/dewford_trend.o(.text); + src/field/heal_location.o(.text); + src/field/region_map.o(.text); + src/scene/cute_sketch.o(.text); asm/cute_sketch.o(.text); - src/decoration.o(.text); + src/field/decoration.o(.text); asm/slot_machine.o(.text); - src/slot_machine.o(.text); + src/field/slot_machine.o(.text); asm/slot_machine.o(.text_8104D30) - src/slot_machine.o(.text_b); - src/contest_painting.o(.text); - src/battle_ai.o(.text); - asm/trader.o(.text); - src/starter_choose.o(.text); - src/wallclock.o(.text); + src/field/slot_machine.o(.text_b); + src/scene/contest_painting.o(.text); + src/battle/battle_ai.o(.text); + src/field/trader.o(.text); + src/field/starter_choose.o(.text); + src/field/wallclock.o(.text); src/rom6.o(.text); - src/pokeblock.o(.text); - asm/fldeff_flash.o(.text); - src/post_battle_event_funcs.o(.text); - src/time_events.o(.text); - src/birch_pc.o(.text); - src/hof_pc.o(.text); - src/field_specials.o(.text); - asm/battle_records.o(.text); - src/battle_records.o(.text); - asm/battle_records.o(.text_8110494); + src/field/pokeblock.o(.text); + src/field/fldeff_flash.o(.text); + src/battle/post_battle_event_funcs.o(.text); + src/engine/time_events.o(.text); + src/field/birch_pc.o(.text); + src/field/hof_pc.o(.text); + src/field/field_specials.o(.text); + src/battle/battle_records.o(.text); asm/pokedex_area_screen.o(.text); - asm/evolution_scene.o(.text); + src/scene/evolution_scene.o(.text); asm/roulette.o(.text); asm/pokedex_cry_screen.o(.text); - src/pokedex_cry_screen.o(.text); + src/pokemon/pokedex_cry_screen.o(.text); asm/pokedex_cry_screen.o(.text_811A4F8); - src/coins.o(.text); - src/landmark.o(.text); - src/fldeff_strength.o(.text); - asm/battle_transition.o(.text); - src/battle_811DA74.o(.text); - asm/battle_message.o(.text); - src/choose_party.o(.text); + src/field/coins.o(.text); + src/field/landmark.o(.text); + src/field/fldeff_strength.o(.text); + src/battle/battle_transition.o(.text); + src/battle/battle_controller_linkpartner.o(.text); + src/battle/battle_message.o(.text); + src/field/choose_party.o(.text); asm/cable_car.o(.text); asm/roulette_util.o(.text); asm/cable_car_util.o(.text); src/unused_8124F94.o(.text); - src/save.o(.text); - src/mystery_event_script.o(.text); - asm/mystery_event_script.o(.text); - asm/field_effect_helpers.o(.text); + src/engine/save.o(.text); + src/engine/mystery_event_script.o(.text); + src/field/field_effect_helpers.o(.text); asm/contest_ai.o(.text); asm/battle_anim_81258BC.o(.text); - src/battle_anim_81258BC.o(.text); - asm/battle_anim_81258BC.o(.text_812BBFC); - src/fldeff_sweetscent.o(.text); + src/battle/battle_controller_safari.o(.text); + src/field/fldeff_sweetscent.o(.text); asm/battle_anim_812C144.o(.text); - asm/learn_move.o(.text); - src/fldeff_softboiled.o(.text); - src/decoration_inventory.o(.text); - src/roamer.o(.text); + src/pokemon/learn_move.o(.text); + src/field/fldeff_softboiled.o(.text); + src/field/decoration_inventory.o(.text); + src/field/roamer.o(.text); asm/battle_tower.o(.text); - src/use_pokeblock.o(.text); - src/battle_anim_8137220.o(.text); - src/player_pc.o(.text); - src/intro.o(.text); - src/field_region_map.o(.text); + src/field/use_pokeblock.o(.text); + src/battle/battle_controller_wally.o(.text); + src/field/player_pc.o(.text); + src/scene/intro.o(.text); + src/field/field_region_map.o(.text); asm/battle_anim_813F0F4.o(.text); - asm/hall_of_fame.o(.text); - src/credits.o(.text); - src/lottery_corner.o(.text); - src/diploma.o(.text); - src/berry_tag_screen.o(.text); - src/mystery_event_menu.o(.text); - src/save_failed_screen.o(.text); - src/braille_puzzles.o(.text); - asm/pokeblock_feed.o(.text); - src/clear_save_data_menu.o(.text); - asm/intro_credits_graphics.o(.text); - asm/evolution_graphics.o(.text); - src/bard_music.o(.text); - src/fldeff_teleport.o(.text); - src/unknown_debug_menu.o(.text); - src/name_string_util.o(.text); - src/menu_cursor.o(.text); + src/scene/hall_of_fame.o(.text); + src/scene/credits.o(.text); + src/field/lottery_corner.o(.text); + src/field/diploma.o(.text); + src/field/berry_tag_screen.o(.text); + src/engine/mystery_event_menu.o(.text); + src/engine/save_failed_screen.o(.text); + src/field/braille_puzzles.o(.text); + src/pokemon/pokeblock_feed.o(.text); + src/engine/clear_save_data_menu.o(.text); + src/scene/intro_credits_graphics.o(.text); + src/scene/evolution_graphics.o(.text); + src/field/bard_music.o(.text); + src/field/fldeff_teleport.o(.text); + src/debug/unknown_debug_menu.o(.text); + src/engine/name_string_util.o(.text); + src/engine/menu_cursor.o(.text); } =0 script_data : @@ -290,7 +269,7 @@ SECTIONS { data/battle_scripts_2.o(script_data); data/battle_ai_scripts.o(script_data); data/contest_ai_scripts.o(script_data); - data/script_funcs.o(script_data); + data/mystery_event_script_cmd_table.o(script_data); } =0 lib_text : @@ -298,13 +277,13 @@ SECTIONS { { asm/libgcnmultiboot.o(.text); asm/m4a_1.o(.text); - src/m4a_2.o(.text); + src/libs/m4a_2.o(.text); asm/m4a_3.o(.text); - src/m4a_4.o(.text); - src/agb_flash.o(.text); - src/agb_flash_1m.o(.text); - src/agb_flash_mx.o(.text); - src/siirtc.o(.text); + src/libs/m4a_4.o(.text); + src/libs/agb_flash.o(.text); + src/libs/agb_flash_1m.o(.text); + src/libs/agb_flash_mx.o(.text); + src/libs/siirtc.o(.text); asm/libagbsyscall.o(.text); tools/agbcc/lib/libgcc.a:_call_via_rX.o(.text); tools/agbcc/lib/libgcc.a:_divsi3.o(.text); @@ -320,168 +299,175 @@ SECTIONS { tools/agbcc/lib/libgcc.a:fp-bit.o(.text); tools/agbcc/lib/libgcc.a:_lshrdi3.o(.text); tools/agbcc/lib/libgcc.a:_negdi2.o(.text); - src/libc.o(.text); + src/libs/libc.o(.text); } =0 .rodata : ALIGN(4) { - src/main.o(.rodata); - src/sprite.o(.rodata); + src/engine/main.o(.rodata); + src/engine/sprite.o(.rodata); . += 0x8; /* Why the gap? */ - src/text.o(.rodata); - src/string_util.o(.rodata); - src/link.o(.rodata); - src/rtc.o(.rodata); + src/engine/text.o(.rodata); + src/engine/string_util.o(.rodata); + src/engine/link.o(.rodata); + src/engine/rtc.o(.rodata); data/main_menu.o(.rodata); - data/data2.o(.rodata); - src/pokemon_data.o(.rodata); + data/data2a.o(.rodata); + src/battle/battle_4.o(.rodata); + src/battle/battle_controller_player.o(.rodata); + data/data2b.o(.rodata); + src/battle/battle_controller_opponent.o(.rodata); + src/battle/battle_controller_linkopponent.o(.rodata); + data/battle_moves.o(.rodata); + src/battle/battle_3.o(.rodata); + src/pokemon/pokemon_data.o(.rodata); . = ALIGN(4); - src/trig.o(.rodata); - data/util.o(.rodata); - data/daycare.o(.rodata); - data/egg_hatch.o(.rodata); + src/engine/trig.o(.rodata); + src/engine/util.o(.rodata); + src/field/daycare.o(.rodata); + src/scene/egg_hatch.o(.rodata); data/battle_interface.o(.rodata); - src/pokeball.o(.rodata); - data/trade.o(.rodata); - data/berry_blender.o(.rodata); - src/new_game.o(.rodata); - data/rom4.o(.rodata); + src/battle/pokeball.o(.rodata); + src/engine/trade.o(.rodata); + src/scene/berry_blender.o(.rodata); + src/scene/new_game.o(.rodata); + src/field/overworld.o(.rodata); data/tilesets.o(.rodata); data/maps.o(.rodata); - src/fieldmap.o(.rodata); - src/metatile_behavior.o(.rodata); + src/field/fieldmap.o(.rodata); + src/field/metatile_behavior.o(.rodata); data/field_door.o(.rodata); - src/field_player_avatar.o(.rodata); - src/field_map_obj.o(.rodata); - src/field_ground_effect.o(.rodata); - data/field_ground_effect.o(.rodata); + src/field/field_player_avatar.o(.rodata); + src/field/field_map_obj.o(.rodata); + src/field/field_ground_effect.o(.rodata); data/field_map_obj_helpers.o(.rodata); data/text_window.o(.rodata); - src/script.o(.rodata); - src/scrcmd.o(.rodata); - src/coord_event_weather.o(.rodata); - src/field_tasks.o(.rodata); + src/engine/script.o(.rodata); + src/field/scrcmd.o(.rodata); + src/field/coord_event_weather.o(.rodata); + src/field/field_tasks.o(.rodata); data/reset_rtc_screen.o(.rodata); - data/party_menu.o(.rodata); - src/start_menu.o(.rodata); - src/menu.o(.rodata); + src/field/party_menu.o(.rodata); + src/field/start_menu.o(.rodata); + src/engine/menu.o(.rodata); data/tileset_anim.o(.rodata); - src/palette.o(.rodata); - src/sound.o(.rodata); + src/engine/palette.o(.rodata); + src/engine/sound.o(.rodata); data/battle_anim.o(.rodata); - src/battle_anim.o(.rodata); + src/battle/battle_anim.o(.rodata); src/rom_8077ABC.o(.rodata); data/map_events.o(.rodata); data/data_8393054.o(.rodata); - data/task.o(.rodata); - data/battle_anim_807B69C.o(.rodata); - src/title_screen.o(.rodata); + src/engine/task.o(.rodata); + src/battle/battle_anim_807B69C.o(.rodata); + src/scene/title_screen.o(.rodata); data/field_weather.o(.rodata); - data/rom_8080874.o(.rodata); - src/battle_setup.o(.rodata); + src/field/field_screen_effect.o(.rodata); + src/battle/battle_setup.o(.rodata); data/cable_club.o(.rodata); data/mori_debug_menu.o(.rodata); + src/field/trainer_see.o(.rodata); data/trainer_see.o(.rodata); - src/wild_encounter.o(.rodata); + src/field/wild_encounter.o(.rodata); data/wild_encounter.o(.rodata); - src/field_effect.o(.rodata); - data/pokemon_menu.o(.rodata); - data/option_menu.o(.rodata); - src/pokedex.o(.rodata); - src/trainer_card.o(.rodata); - data/trainer_card.o(.rodata); - src/battle_party_menu.o(.rodata); + src/field/field_effect.o(.rodata); + src/pokemon/pokemon_menu.o(.rodata); + src/engine/option_menu.o(.rodata); + src/pokemon/pokedex.o(.rodata); + src/engine/trainer_card.o(.rodata); + src/battle/battle_party_menu.o(.rodata); data/pokemon_storage_system.o(.rodata); - data/pokemon_icon.o(.rodata); + src/pokemon/pokemon_icon.o(.rodata); data/pokemon_summary_screen.o(.rodata); data/fldeff_cut.o(.rodata); - data/item_menu.o(.rodata); + src/field/item_menu.o(.rodata); data/battle_anim_80A7E7C.o(.rodata); - data/item.o(.rodata); + src/field/item.o(.rodata); data/matsuda_debug_menu.o(.rodata); data/contest.o(.rodata); - data/shop.o(.rodata); - src/berry.o(.rodata); - src/script_menu.o(.rodata); - src/naming_screen.o(.rodata); + src/field/shop.o(.rodata); + src/field/berry.o(.rodata); + src/field/script_menu.o(.rodata); + src/engine/naming_screen.o(.rodata); data/naming_screen.o(.rodata); data/money.o(.rodata); data/contest_effect.o(.rodata); - data/record_mixing.o(.rodata); - src/sound_check_menu.o(.rodata); - src/secret_base.o(.rodata); + src/engine/record_mixing.o(.data); + src/engine/record_mixing.o(.rodata); + src/debug/sound_check_menu.o(.rodata); + src/field/secret_base.o(.rodata); data/tv.o(.rodata); data/contest_link_80C2020.o(.rodata); - src/pokemon_size_record.o(.rodata); + src/pokemon/pokemon_size_record.o(.rodata); data/fldeff_80C5CD4.o(.rodata); - src/field_special_scene.o(.rodata); + src/field/field_special_scene.o(.rodata); data/field_special_scene.o(.rodata); - src/rotating_gate.o(.rodata); - src/item_use.o(.rodata); + src/field/rotating_gate.o(.rodata); + src/field/item_use.o(.rodata); data/battle_anim_80CA710.o(.rodata); - src/bike.o(.rodata); + src/field/bike.o(.rodata); data/easy_chat.o(.rodata); data/pokenav.o(.rodata); data/mon_markings.o(.rodata); - data/mauville_old_man.o(.rodata); + src/field/mauville_man.o(.rodata); data/mail.o(.rodata); - data/menu_helpers.o(.rodata); - src/heal_location.o(.rodata); - data/region_map.o(.rodata); + src/field/menu_helpers.o(.rodata); + src/field/heal_location.o(.rodata); + src/field/region_map.o(.rodata); data/cute_sketch.o(.rodata); - src/decoration.o(.rodata); + src/field/decoration.o(.rodata); data/slot_machine.o(.rodata); - src/contest_painting.o(.rodata); - src/battle_ai.o(.rodata); - data/trader.o(.rodata); - src/starter_choose.o(.rodata); - src/wallclock.o(.rodata); - src/pokeblock.o(.rodata); + src/scene/contest_painting.o(.rodata); + src/battle/battle_ai.o(.rodata); + src/field/trader.o(.rodata); + src/field/starter_choose.o(.rodata); + src/field/wallclock.o(.rodata); + src/field/pokeblock.o(.rodata); data/fldeff_flash.o(.rodata); - src/time_events.o(.rodata); - src/field_specials.o(.rodata); + src/engine/time_events.o(.rodata); + src/field/field_specials.o(.rodata); data/pokedex_area_screen.o(.rodata); - data/evolution_scene.o(.rodata); + src/scene/evolution_scene.o(.rodata); data/roulette.o(.rodata); data/pokedex_cry_screen.o(.rodata); data/landmark.o(.rodata); - data/battle_transition.o(.rodata); - data/battle_811DA74.o(.rodata); + src/battle/battle_transition.o(.rodata); + src/battle/battle_controller_linkpartner.o(.rodata); data/battle_message.o(.rodata); - src/choose_party.o(.rodata); + src/field/choose_party.o(.rodata); data/cable_car.o(.rodata); - src/save.o(.rodata); - data/field_effect_helpers.o(.rodata); + src/engine/save.o(.rodata); + src/field/field_effect_helpers.o(.rodata); data/contest_ai.o(.rodata); - data/battle_anim_81258BC.o(.rodata); + src/battle/battle_controller_safari.o(.rodata); data/battle_anim_812C144.o(.rodata); - data/learn_move.o(.rodata); - src/decoration_inventory.o(.rodata); - src/roamer.o(.rodata); + src/pokemon/learn_move.o(.rodata); + src/field/decoration_inventory.o(.rodata); + src/field/roamer.o(.rodata); data/battle_tower.o(.rodata); - src/use_pokeblock.o(.rodata); - data/battle_anim_8137220.o(.rodata); - src/player_pc.o(.rodata); - src/intro.o(.rodata); + src/field/use_pokeblock.o(.rodata); + src/battle/battle_controller_wally.o(.rodata); + src/field/player_pc.o(.rodata); + src/scene/intro.o(.rodata); data/battle_anim_813F0F4.o(.rodata); - data/hall_of_fame.o(.rodata); - src/credits.o(.rodata); + src/scene/hall_of_fame.o(.rodata); + src/scene/credits.o(.rodata); data/credits.o(.rodata); - src/lottery_corner.o(.rodata); - src/diploma.o(.rodata); + src/field/lottery_corner.o(.rodata); + src/field/diploma.o(.rodata); src/strings.o(.rodata); - data/berry_tag_screen.o(.rodata); - src/save_failed_screen.o(.rodata); - data/pokeblock_feed.o(.rodata); + src/field/berry_tag_screen.o(.rodata); + src/engine/save_failed_screen.o(.rodata); + src/pokemon/pokeblock_feed.o(.rodata); data/intro_credits_graphics.o(.rodata); - data/evolution_graphics.o(.rodata); + src/scene/evolution_graphics.o(.rodata); data/bard_music.o(.rodata); data/unknown_debug_menu.o(.rodata); data/strings2.o(.rodata); data/menu_cursor.o(.rodata); data/mystery_event_msg.o(.rodata); - src/m4a_tables.o(.rodata); + src/libs/m4a_tables.o(.rodata); data/sound_data.o(.rodata); } =0 @@ -910,11 +896,11 @@ SECTIONS { lib_rodata : ALIGN(4) { - src/agb_flash.o(.rodata); - src/agb_flash_1m.o(.rodata); - src/agb_flash_mx.o(.rodata); - src/agb_flash_le.o(.rodata); - src/siirtc.o(.rodata); + src/libs/agb_flash.o(.rodata); + src/libs/agb_flash_1m.o(.rodata); + src/libs/agb_flash_mx.o(.rodata); + src/libs/agb_flash_le.o(.rodata); + src/libs/siirtc.o(.rodata); tools/agbcc/lib/libgcc.a:_udivdi3.o(.rodata); } =0 diff --git a/sapphire_de.sha1 b/sapphire_de.sha1 new file mode 100644 index 000000000..f99533574 --- /dev/null +++ b/sapphire_de.sha1 @@ -0,0 +1 @@ +fa0bd1abe04fea17016f585454d0f1392f342a21 pokesapphire_de.gba diff --git a/shared_syms.txt b/shared_syms.txt index 884f0e89d..571e0633e 100644 --- a/shared_syms.txt +++ b/shared_syms.txt @@ -3,6 +3,8 @@ ewram = 0x2000000; unk_2004000 = 0x2004000; +gUnk_2009000 = 0x2009000; + unk_2007800 = 0x2007800; unk_2007900 = 0x2007900; diff --git a/src/bard_music.c b/src/bard_music.c deleted file mode 100644 index a31568475..000000000 --- a/src/bard_music.c +++ /dev/null @@ -1,97 +0,0 @@ -#include "global.h" -#include "easy_chat.h" - -struct BardSound -{ - u8 pad_00[48]; -}; - -struct UnkBard -{ - /*0x00*/ u8 var00; - /*0x01*/ s8 var01; - /*0x02*/ u16 var02; - /*0x04*/ u16 var04; - /*0x06*/ u16 var06; -}; - -struct UnkBard3 -{ - /*0x00*/ u16 var00; - /*0x02*/ u16 var02; - /*0x04*/ s16 var04; - /*0x06*/ u16 var06; -}; - -struct UnkBard2 -{ - /*0x00*/ u8 var00; - /*0x01*/ u8 var01; - /*0x02*/ u8 var02; - /*0x03*/ u8 var03; - /*0x04*/ u16 var04; - u8 pad06[4]; - /*0x0A*/ u16 var0A; - u8 pad0C[12]; - /*0x18*/ struct UnkBard3 var18[6]; -}; - -extern struct BardSound *gBardMusicTable[]; -extern s16 *gUnknown_08417068[]; -extern u32 gUnknown_084170F4[]; - -static s16 sub_814A2B8(u32 arg0, u32 arg1) -{ - return gUnknown_08417068[arg0][arg1]; -} - -#if ENGLISH -struct BardSound *sub_814A2D0(u16 arg0, u16 arg1) -{ - struct BardSound *sounds = gBardMusicTable[arg0]; - - return &sounds[arg1]; -} -#elif GERMAN -struct BardSound *sub_814A2D0(u16 arg0, u16 arg1) -{ - u32 index; - struct BardSound *sounds; - - sounds = gBardMusicTable[arg0]; - index = de_sub_80EB748(arg0, arg1); - - return &sounds[index]; -} -#endif - -s32 sub_814A2EC(struct UnkBard2 *dest, struct UnkBard *src, u16 arg2) -{ - s32 i; - s32 j; - s32 thirty; - - for (i = 0; i < 6; i++) - { - dest->var18[i].var00 = src[i].var00; - if (src[i].var00 != 0xFF) - { - s32 r1 = src[i].var01 +gUnknown_084170F4[src[i].var00]; - - dest->var18[i].var02 = r1; - dest->var18[i].var06 = src[i].var04; - dest->var04 += r1; - } - } - - for (j = 0, thirty = 30; j < i; j++) - dest->var18[j].var04 = sub_814A2B8(thirty + arg2, j); - - dest->var00++; - dest->var01 = 0; - dest->var02 = 0; - dest->var03 = 0; - dest->var0A = 0; - - //warning: no return statement in function returning non-void -} diff --git a/src/battle_2.c b/src/battle/battle_2.c similarity index 94% rename from src/battle_2.c rename to src/battle/battle_2.c index d08f2b8df..a447cf498 100644 --- a/src/battle_2.c +++ b/src/battle/battle_2.c @@ -53,20 +53,6 @@ struct UnknownStruct8 u8 unk1A; }; -struct UnknownPokemonStruct2 -{ - /*0x00*/ u16 species; - /*0x02*/ u16 heldItem; - /*0x04*/ u8 nickname[11]; - /*0x0F*/ u8 level; - /*0x10*/ u16 hp; - /*0x12*/ u16 maxhp; - /*0x14*/ u32 status; - /*0x18*/ u32 personality; - /*0x1C*/ u8 gender; - /*0x1D*/ u8 language; -}; - struct UnknownStruct12 { u32 unk0; @@ -181,7 +167,7 @@ extern u8 gHealthboxIDs[]; extern struct UnknownStruct6 gUnknown_03004DE0; //extern u16 gUnknown_03004DE0[][0xA0]; // possibly? extern u16 gBattleTypeFlags; -extern s8 gBattleTerrain; // I'm not sure if this is supposed to be s8 or u8. Regardless, it must have the same type as the return value of GetBattleTerrain. +extern s8 gBattleTerrain; // I'm not sure if this is supposed to be s8 or u8. Regardless, it must have the same type as the return value of BattleSetup_GetTerrain. extern u8 gReservedSpritePaletteCount; extern u16 gTrainerBattleOpponent; extern struct BattleEnigmaBerry gEnigmaBerries[]; @@ -239,7 +225,8 @@ void InitBattle(void) gUnknown_03004DE0.unk0[i] = 0xFF10; gUnknown_03004DE0.unk780[i] = 0xFF10; } - sub_80895F8(gUnknown_081F9674.unk0, gUnknown_081F9674.unk4, gUnknown_081F9674.unk8); + //sub_80895F8(gUnknown_081F9674.unk0, gUnknown_081F9674.unk4, gUnknown_081F9674.unk8); + sub_80895F8(gUnknown_081F9674); SetUpWindowConfig(&gWindowConfig_81E6C58); ResetPaletteFade(); gUnknown_030042A4 = 0; @@ -250,7 +237,7 @@ void InitBattle(void) gUnknown_03004280 = 0; gUnknown_030041B0 = 0; gUnknown_030041B8 = 0; - gBattleTerrain = GetBattleTerrain(); + gBattleTerrain = BattleSetup_GetTerrain(); InitWindowFromConfig(&gUnknown_03004210, &gWindowConfig_81E6C58); InitWindowFromConfig(&gUnknown_030041D0, &gWindowConfig_81E71D0); InitWindowFromConfig(&gUnknown_03004250, &gWindowConfig_81E71EC); @@ -611,7 +598,7 @@ void sub_800F104(void) *pSavedCallback = gMain.savedCallback; *pSavedBattleTypeFlags = gBattleTypeFlags; gMain.savedCallback = sub_800F104; - OpenPartyMenu(5, 0); + OpenPartyMenu(PARTY_MENU_TYPE_LINK_MULTI_BATTLE, 0); } break; case 2: @@ -1347,8 +1334,8 @@ void sub_8010384(struct Sprite *sprite) u16 species; u8 yOffset; - if (ewram17800[r6].unk2 != 0) - species = ewram17800[r6].unk2; + if (ewram17800[r6].transformedSpecies != 0) + species = ewram17800[r6].transformedSpecies; else species = sprite->data2; @@ -1584,7 +1571,7 @@ void sub_8010874(void) for (j = 0; j < (u32)0x1C; j++) r4[j] = 0; - gDisableStructs[i].IsFirstTurn = 2; + gDisableStructs[i].isFirstTurn= 2; gUnknown_02024C70[i] = 0; gLastUsedMove[i] = 0; gMoveHitWith[i] = 0; @@ -1655,25 +1642,25 @@ void sub_8010874(void) ewram16113 = 0; for (i = 0; i < 11; i++) gBattleResults.unk36[i] = 0; - gBattleResults.BattleTurnCounter = 0; - gBattleResults.PlayerFaintCounter = 0; - gBattleResults.OpponentFaintCounter = 0; + gBattleResults.battleTurnCounter = 0; + gBattleResults.playerFaintCounter = 0; + gBattleResults.opponentFaintCounter = 0; gBattleResults.unk2 = 0; gBattleResults.unk3 = 0; gBattleResults.unk4 = 0; gBattleResults.unk5_0 = 0; gBattleResults.unk5_1 = 0; - gBattleResults.LastOpponentSpecies = 0; - gBattleResults.LastUsedMove = 0; - gBattleResults.OpponentMove = 0; - gBattleResults.Poke1Species = 0; - gBattleResults.OpponentSpecies = 0; - gBattleResults.CaughtPoke = 0; + gBattleResults.lastOpponentSpecies = 0; + gBattleResults.lastUsedMove = 0; + gBattleResults.opponentMove = 0; + gBattleResults.poke1Species = 0; + gBattleResults.opponentSpecies = 0; + gBattleResults.caughtPoke = 0; for (i = 0; i < 10; i++) { - gBattleResults.PokeString1[i] = 0; - gBattleResults.PokeString2[i] = 0; - gBattleResults.CaughtNick[i] = 0; + gBattleResults.pokeString1[i] = 0; + gBattleResults.pokeString2[i] = 0; + gBattleResults.caughtNick[i] = 0; } } @@ -1692,25 +1679,25 @@ void SwitchInClearStructs(void) { struct UnknownStruct12 *sp20 = &gUnknown_02024AD0[i]; - if ((sp20->unk0 & 0x04000000) && gDisableStructs[i].BankPreventingEscape == gActiveBank) + if ((sp20->unk0 & 0x04000000) && gDisableStructs[i].bankPreventingEscape == gActiveBank) sp20->unk0 &= ~0x04000000; - if ((gStatuses3[i] & STATUS3_ALWAYS_HITS) && gDisableStructs[i].BankWithSureHit == gActiveBank) + if ((gStatuses3[i] & STATUS3_ALWAYS_HITS) && gDisableStructs[i].bankWithSureHit == gActiveBank) { gStatuses3[i] &= ~STATUS3_ALWAYS_HITS; - gDisableStructs[i].BankWithSureHit = 0; + gDisableStructs[i].bankWithSureHit = 0; } } } if (gBattleMoves[gCurrentMove].effect == EFFECT_BATON_PASS) { gBattleMons[gActiveBank].status2 &= (STATUS2_CONFUSION | STATUS2_FOCUS_ENERGY | STATUS2_SUBSTITUTE | STATUS2_ESCAPE_PREVENTION | STATUS2_CURSED); - gStatuses3[gActiveBank] &= (STATUS3_LEECHSEED_RECEIVER | STATUS3_LEECHSEED | STATUS3_ALWAYS_HITS | STATUS3_PERISH_SONG | STATUS3_ROOTED | STATUS3_MUDSPORT | STATUS3_WATERSPORT); + gStatuses3[gActiveBank] &= (STATUS3_LEECHSEED_BANK | STATUS3_LEECHSEED | STATUS3_ALWAYS_HITS | STATUS3_PERISH_SONG | STATUS3_ROOTED | STATUS3_MUDSPORT | STATUS3_WATERSPORT); for (i = 0; i < gNoOfAllBanks; i++) { if (GetBankSide(gActiveBank) != GetBankSide(i) && (gStatuses3[i] & STATUS3_ALWAYS_HITS) != 0 - && (gDisableStructs[i].BankWithSureHit == gActiveBank)) + && (gDisableStructs[i].bankWithSureHit == gActiveBank)) { gStatuses3[i] &= ~STATUS3_ALWAYS_HITS; gStatuses3[i] |= 0x10; @@ -1740,13 +1727,13 @@ void SwitchInClearStructs(void) if (gBattleMoves[gCurrentMove].effect == EFFECT_BATON_PASS) { - gDisableStructs[gActiveBank].SubstituteHP = sp0.SubstituteHP; - gDisableStructs[gActiveBank].BankWithSureHit = sp0.BankWithSureHit; - gDisableStructs[gActiveBank].unkF_0 = sp0.unkF_0; - gDisableStructs[gActiveBank].unkF_4 = sp0.unkF_4; + gDisableStructs[gActiveBank].substituteHP = sp0.substituteHP; + gDisableStructs[gActiveBank].bankWithSureHit = sp0.bankWithSureHit; + gDisableStructs[gActiveBank].perishSong1 = sp0.perishSong1; + gDisableStructs[gActiveBank].perishSong2 = sp0.perishSong2; } - gDisableStructs[gActiveBank].IsFirstTurn = 2; + gDisableStructs[gActiveBank].isFirstTurn= 2; gLastUsedMove[gActiveBank] = 0; gMoveHitWith[gActiveBank] = 0; gUnknown_02024C44[gActiveBank] = 0; @@ -1781,7 +1768,7 @@ void UndoEffectsAfterFainting(void) gStatuses3[gActiveBank] = 0; for (i = 0; i < gNoOfAllBanks; i++) { - if ((gBattleMons[i].status2 & STATUS2_ESCAPE_PREVENTION) && gDisableStructs[i].BankPreventingEscape == gActiveBank) + if ((gBattleMons[i].status2 & STATUS2_ESCAPE_PREVENTION) && gDisableStructs[i].bankPreventingEscape == gActiveBank) gBattleMons[i].status2 &= ~STATUS2_ESCAPE_PREVENTION; if (gBattleMons[i].status2 & (gBitTable[gActiveBank] << 16)) gBattleMons[i].status2 &= ~(gBitTable[gActiveBank] << 16); @@ -1794,27 +1781,27 @@ void UndoEffectsAfterFainting(void) ptr = (u8 *)&gDisableStructs[gActiveBank]; for (i = 0; i < (u32)0x1C; i++) ptr[i] = 0; - gProtectStructs[gActiveBank].Protected = 0; - gProtectStructs[gActiveBank].Endured = 0; - gProtectStructs[gActiveBank].OnlyStruggle = 0; - gProtectStructs[gActiveBank].HelpingHand = 0; - gProtectStructs[gActiveBank].BounceMove = 0; - gProtectStructs[gActiveBank].StealMove = 0; - gProtectStructs[gActiveBank].Flag0Unknown = 0; - gProtectStructs[gActiveBank].PrlzImmobility = 0; - gProtectStructs[gActiveBank].ConfusionSelfDmg = 0; - gProtectStructs[gActiveBank].NotEffective = 0; - gProtectStructs[gActiveBank].ChargingTurn = 0; - gProtectStructs[gActiveBank].FleeFlag = 0; - gProtectStructs[gActiveBank].UsedImprisionedMove = 0; - gProtectStructs[gActiveBank].LoveImmobility = 0; - gProtectStructs[gActiveBank].UsedDisabledMove = 0; - gProtectStructs[gActiveBank].UsedTauntedMove = 0; - gProtectStructs[gActiveBank].Flag2Unknown = 0; - gProtectStructs[gActiveBank].FlinchImmobility = 0; - gProtectStructs[gActiveBank].NotFirstStrike = 0; + gProtectStructs[gActiveBank].protected = 0; + gProtectStructs[gActiveBank].endured = 0; + gProtectStructs[gActiveBank].onlyStruggle = 0; + gProtectStructs[gActiveBank].helpingHand = 0; + gProtectStructs[gActiveBank].bounceMove = 0; + gProtectStructs[gActiveBank].stealMove = 0; + gProtectStructs[gActiveBank].flag0Unknown = 0; + gProtectStructs[gActiveBank].prlzImmobility = 0; + gProtectStructs[gActiveBank].confusionSelfDmg = 0; + gProtectStructs[gActiveBank].notEffective = 0; + gProtectStructs[gActiveBank].chargingTurn = 0; + gProtectStructs[gActiveBank].fleeFlag = 0; + gProtectStructs[gActiveBank].usedImprisionedMove = 0; + gProtectStructs[gActiveBank].loveImmobility = 0; + gProtectStructs[gActiveBank].usedDisabledMove = 0; + gProtectStructs[gActiveBank].usedTauntedMove = 0; + gProtectStructs[gActiveBank].flag2Unknown = 0; + gProtectStructs[gActiveBank].flinchImmobility = 0; + gProtectStructs[gActiveBank].notFirstStrike = 0; - gDisableStructs[gActiveBank].IsFirstTurn = 2; + gDisableStructs[gActiveBank].isFirstTurn= 2; gLastUsedMove[gActiveBank] = 0; gMoveHitWith[gActiveBank] = 0; gUnknown_02024C44[gActiveBank] = 0; @@ -1866,7 +1853,7 @@ static void BattlePrepIntroSlide(void) if (gBattleExecBuffer == 0) { gActiveBank = GetBankByPlayerAI(0); - EmitBattleIntroSlide(0, gBattleTerrain); + EmitIntroSlide(0, gBattleTerrain); MarkBufferBankForExecution(gActiveBank); gBattleMainFunc = sub_8011384; gBattleCommunication[0] = 0; @@ -1910,7 +1897,7 @@ void sub_8011384(void) if (GetBankIdentity(gActiveBank) == 0) { - dp01_build_cmdbuf_x07_7_7_7(0); + EmitTrainerThrow(0); MarkBufferBankForExecution(gActiveBank); } @@ -1918,20 +1905,20 @@ void sub_8011384(void) { if (GetBankIdentity(gActiveBank) == 1) { - dp01_build_cmdbuf_x07_7_7_7(0); + EmitTrainerThrow(0); MarkBufferBankForExecution(gActiveBank); } if (GetBankSide(gActiveBank) == 1 && !(gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_LINK))) - GetNationalPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gActiveBank].species), 2); + GetSetPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gActiveBank].species), 2); } else { if (GetBankSide(gActiveBank) == 1 && !(gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_LINK))) { - GetNationalPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gActiveBank].species), 2); - dp01_build_cmdbuf_x04_4_4_4(0); + GetSetPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gActiveBank].species), 2); + EmitLoadPokeSprite(0); MarkBufferBankForExecution(gActiveBank); } } @@ -1941,7 +1928,7 @@ void sub_8011384(void) if (GetBankIdentity(gActiveBank) == 2 || GetBankIdentity(gActiveBank) == 3) { - dp01_build_cmdbuf_x07_7_7_7(0); + EmitTrainerThrow(0); MarkBufferBankForExecution(gActiveBank); } } @@ -1979,7 +1966,7 @@ void bc_801333C(void) } } gActiveBank = GetBankByPlayerAI(1); - dp01_build_cmdbuf_x30_TODO(0, (u8 *)sp0, 0x80); + Emitcmd48(0, (u8 *)sp0, 0x80); MarkBufferBankForExecution(gActiveBank); for (i = 0; i < 6; i++) @@ -1997,7 +1984,7 @@ void bc_801333C(void) } } gActiveBank = GetBankByPlayerAI(0); - dp01_build_cmdbuf_x30_TODO(0, (u8 *)sp0, 0x80); + Emitcmd48(0, (u8 *)sp0, 0x80); MarkBufferBankForExecution(gActiveBank); gBattleMainFunc = bc_battle_begin_message; @@ -2063,13 +2050,13 @@ void sub_8011834(void) { if (GetBankIdentity(gActiveBank) == 1) { - dp01_build_cmdbuf_x2F_2F_2F_2F(0); + EmitTrainerBallThrow(0); MarkBufferBankForExecution(gActiveBank); } if ((gBattleTypeFlags & BATTLE_TYPE_MULTI) && GetBankIdentity(gActiveBank) == 3) { - dp01_build_cmdbuf_x2F_2F_2F_2F(0); + EmitTrainerBallThrow(0); MarkBufferBankForExecution(gActiveBank); } } @@ -2085,7 +2072,7 @@ void bc_801362C(void) { if (GetBankSide(gActiveBank) == 1 && !(gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_LINK))) - GetNationalPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gActiveBank].species), 2); + GetSetPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gActiveBank].species), 2); } gBattleMainFunc = sub_8011970; } @@ -2115,13 +2102,13 @@ void sub_80119B4(void) { if (GetBankIdentity(gActiveBank) == 0) { - dp01_build_cmdbuf_x2F_2F_2F_2F(0); + EmitTrainerBallThrow(0); MarkBufferBankForExecution(gActiveBank); } if ((gBattleTypeFlags & BATTLE_TYPE_MULTI) && GetBankIdentity(gActiveBank) == 2) { - dp01_build_cmdbuf_x2F_2F_2F_2F(0); + EmitTrainerBallThrow(0); MarkBufferBankForExecution(gActiveBank); } } @@ -2140,7 +2127,7 @@ void unref_sub_8011A68(void) { if (GetBankSide(gActiveBank) == 0) { - sub_800C704(0, gBattlePartyID[gActiveBank], 0); + EmitSendOutPoke(0, gBattlePartyID[gActiveBank], 0); MarkBufferBankForExecution(gActiveBank); } } @@ -2167,7 +2154,7 @@ void BattleBeginFirstTurn(void) { for (j = i + 1; j < gNoOfAllBanks; j++) { - if (b_first_side(gTurnOrder[i], gTurnOrder[j], 1) != 0) + if (GetWhoStrikesFirst(gTurnOrder[i], gTurnOrder[j], 1) != 0) sub_8012FBC(i, j); } } @@ -2191,7 +2178,7 @@ void BattleBeginFirstTurn(void) return; while (ewram160F9 < gNoOfAllBanks) { - if (sub_801A02C(0, gTurnOrder[ewram160F9], 0) != 0) + if (ItemBattleEffects(0, gTurnOrder[ewram160F9], 0) != 0) r9++; ewram160F9++; if (r9 != 0) @@ -2286,8 +2273,8 @@ void BattleTurnPassed(void) gBattleMainFunc = sub_80138F0; return; } - if (gBattleResults.BattleTurnCounter < 0xFF) - gBattleResults.BattleTurnCounter++; + if (gBattleResults.battleTurnCounter < 0xFF) + gBattleResults.battleTurnCounter++; for (i = 0; i < gNoOfAllBanks; i++) { gActionForBanks[i] = 0xFF; @@ -2429,7 +2416,7 @@ void sub_8012324(void) } else { - dp01_build_cmdbuf_x12_a_bb(0, gActionForBanks[0], gBattleBufferB[0][1] | (gBattleBufferB[0][2] << 8)); + Emitcmd18(0, gActionForBanks[0], gBattleBufferB[0][1] | (gBattleBufferB[0][2] << 8)); MarkBufferBankForExecution(gActiveBank); gBattleCommunication[gActiveBank]++; } diff --git a/src/battle/battle_3.c b/src/battle/battle_3.c new file mode 100644 index 000000000..b59757f00 --- /dev/null +++ b/src/battle/battle_3.c @@ -0,0 +1,6595 @@ +#include "global.h" +#include "abilities.h" +#include "battle.h" +#include "moves.h" +#include "item.h" +#include "items.h" +#include "hold_effects.h" +#include "species.h" +#include "pokemon.h" +#include "data2.h" +#include "rng.h" +#include "text.h" +#include "battle_move_effects.h" +#include "string_util.h" +#include "flags.h" + +extern u8* gBattlescriptCurrInstr; +extern u8 gActiveBank; +extern u8 gBattleBufferB[4][0x200]; +extern u8* gUnknown_02024C1C[4]; //battlescript location when you try to choose a move you're not allowed to +extern u16 gLastUsedMove[4]; +extern struct BattlePokemon gBattleMons[4]; +extern struct BattleEnigmaBerry gEnigmaBerries[4]; +extern u8 gStringBank; +extern u16 gLastUsedItem; +extern u16 gCurrentMove; +extern const u32 gBitTable[]; +extern u16 gBattleTypeFlags; +extern u8 gNoOfAllBanks; +extern u32 gStatuses3[4]; +extern u8 gBankAttacker; +extern u8 gBankTarget; +extern u8 gTurnOrder[4]; +extern u16 gSideAffecting[2]; +extern u16 gBattleWeather; +extern void (*gBattleMainFunc)(void); +extern u8 gAbsentBankFlags; +extern u8 gBattleCommunication[]; +extern u32 gHitMarker; +extern u8 gEffectBank; +extern u8 gBank1; +extern s32 gBattleMoveDamage; +extern u16 gBattlePartyID[4]; +extern u16 gChosenMovesByBanks[4]; +extern s32 gTakenDmg[4]; +extern u8 gTakenDmgBanks[4]; +extern u8 gBattleMoveFlags; +extern u8 gLastUsedAbility; +extern u8 gBattleTextBuff2[]; +extern u8 gFightStateTracker; +extern struct BattleEnigmaBerry gEnigmaBerries[4]; +extern u8 gUnknown_02024BE5; +extern u8 gCurrMovePos; +extern u16 gRandomMove; +extern s32 gBattleMoveDamage; +extern u16 gDynamicBasePower; +extern u32 gBattleExecBuffer; +extern const u16 gSoundMovesTable[]; +extern const u8 gStatusConditionString_PoisonJpn[]; +extern const u8 gStatusConditionString_SleepJpn[]; +extern const u8 gStatusConditionString_ParalysisJpn[]; +extern const u8 gStatusConditionString_BurnJpn[]; +extern const u8 gStatusConditionString_IceJpn[]; +extern const u8 gStatusConditionString_ConfusionJpn[]; +extern const u8 gStatusConditionString_LoveJpn[]; +extern const BattleCmdFunc gBattleScriptingCommandsTable[]; + +u8 IsImprisoned(u8 bank, u16 move); +u8 GetBankByPlayerAI(u8 ID); +u8 GetBankIdentity(u8 bank); +u8 GetBankSide(u8 bank); +void b_call_bc_move_exec(u8* BS_ptr); +bool8 sub_8015660(u8 bank); //check if a move failed +void SetMoveEffect(bool8 primary, u8 certainArg); +bool8 UproarWakeUpCheck(u8 bank); +bool8 sub_8018018(u8 bank, u8, u8); +void sub_8015740(u8 bank); +s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *defender, u32 move, u16 a4, u16 powerOverride, u8 typeOverride, u8 bank_atk, u8 bank_def); +u8 CountTrailingZeroBits(u32 a); +u8 GetMoveTarget(u16 move, u8 useMoveTarget); +u8 sub_803FC34(u8 bank); +u16 sub_803FBFC(u8 a); +u8 weather_get_current(void); +void b_push_move_exec(u8* BS_ptr); +void RecordAbilityBattle(u8 bank, u8 ability); +void RecordItemBattle(u8 bank, u8 holdEffect); +void sub_8013F54(void); +void sub_8013FBC(void); +s8 GetPokeFlavourRelation(u32 pid, u8 flavor); + +extern u8 BattleScript_MoveSelectionDisabledMove[]; +extern u8 BattleScript_MoveSelectionTormented[]; +extern u8 BattleScript_MoveSelectionTaunted[]; +extern u8 BattleScript_MoveSelectionImprisoned[]; +extern u8 BattleScript_MoveSelectionChoiceBanded[]; +extern u8 BattleScript_MoveSelectionNoPP[]; +extern u8 BattleScript_NoMovesLeft[]; +extern u8 BattleScript_WishComesTrue[]; +extern u8 BattleScript_IngrainTurnHeal[]; +extern u8 BattleScript_LeechSeedTurnDrain[]; +extern u8 BattleScript_PoisonTurnDmg[]; +extern u8 BattleScript_BurnTurnDmg[]; +extern u8 BattleScript_NightmareTurnDmg[]; +extern u8 BattleScript_CurseTurnDmg[]; +extern u8 BattleScript_WrapTurnDmg[]; +extern u8 BattleScript_WrapEnds[]; +extern u8 BattleScript_DisabledNoMore[]; +extern u8 BattleScript_EncoredNoMore[]; + +extern u8 gUnknown_081D9030[]; +extern u8 gUnknown_081D8F62[]; +extern u8 gUnknown_081D8FFF[]; +extern u8 gUnknown_081D8F7D[]; +extern u8 gUnknown_081D9016[]; +extern u8 gUnknown_081D9008[]; +extern u8 gUnknown_081D9041[]; +extern u8 gUnknown_081D950F[]; //uproar wakeup BS +extern u8 gUnknown_081D957E[]; //uproar BS +extern u8 BattleScript_ThrashConfuses[]; +extern u8 BattleScript_YawnMakesAsleep[]; +extern u8 BattleScript_FutureSightHits[]; +extern u8 BattleScript_PerishSongHits[]; +extern u8 BattleScript_PerishSongTimerGoesDown[]; +extern u8 gUnknown_081D8C72[]; +extern u8 gUnknown_081D8C7B[]; + +extern u8 BattleScript_MoveUsedIsAsleep[]; +extern u8 BattleScript_MoveUsedWokeUp[]; +extern u8 BattleScript_MoveUsedIsFrozen[]; +extern u8 BattleScript_MoveUsedUnfroze[]; +extern u8 BattleScript_MoveUsedLoafingAround[]; +extern u8 BattleScript_MoveUsedMustRecharge[]; +extern u8 BattleScript_MoveUsedFlinched[]; +extern u8 BattleScript_MoveUsedIsDisabled[]; +extern u8 BattleScript_MoveUsedIsTaunted[]; +extern u8 BattleScript_MoveUsedIsImprisoned[]; +extern u8 BattleScript_MoveUsedIsConfused[]; +extern u8 BattleScript_MoveUsedIsConfusedNoMore[]; +extern u8 BattleScript_MoveUsedIsParalyzed[]; +extern u8 BattleScript_MoveUsedIsParalyzedCantAttack[]; +extern u8 BattleScript_MoveUsedIsInLove[]; +extern u8 BattleScript_BideStoringEnergy[]; +extern u8 BattleScript_BideAttack[]; +extern u8 BattleScript_BideNoEnergyToAttack[]; + +extern u8 gUnknown_081D901D[]; //load weather from overworld +extern u8 BattleScript_DrizzleActivates[]; +extern u8 BattleScript_SandstreamActivates[]; +extern u8 BattleScript_DroughtActivates[]; +extern u8 BattleScript_CastformChange[]; +extern u8 BattleScript_RainDishActivates[]; +extern u8 BattleScript_ShedSkinActivates[]; +extern u8 BattleScript_SpeedBoostActivates[]; +extern u8 BattleScript_SoundproofProtected[]; +extern u8 BattleScript_MoveHPDrain[]; +extern u8 BattleScript_MoveHPDrain_PPLoss[]; +extern u8 BattleScript_FlashFireBoost[]; +extern u8 BattleScript_FlashFireBoost_PPLoss[]; +extern u8 BattleScript_MoveHPDrain_FullHP[]; +extern u8 BattleScript_MoveHPDrain_FullHP_PPLoss[]; +extern u8 BattleScript_ColorChangeActivates[]; +extern u8 BattleScript_RoughSkinActivates[]; +extern u8 BattleScript_ApplySecondaryEffect[]; +extern u8 BattleScript_CuteCharmActivates[]; +extern u8 gUnknown_081D9956[]; //ability status clear +extern u8 BattleScript_SynchronizeActivates[]; +extern u8 gUnknown_081D978C[]; //intimidate1 +extern u8 gUnknown_081D9795[]; //intimidate2 +extern u8 BattleScript_TraceActivates[]; + +extern u8 BattleScript_WhiteHerbEnd2[]; +extern u8 BattleScript_WhiteHerbRet[]; +extern u8 BattleScript_ItemHealHP_RemoveItem[]; +extern u8 BattleScript_BerryPPHealEnd2[]; +extern u8 BattleScript_ItemHealHP_End2[]; +extern u8 BattleScript_BerryConfuseHealEnd2[]; +extern u8 BattleScript_BerryStatRaiseEnd2[]; +extern u8 BattleScript_BerryFocusEnergyEnd2[]; +extern u8 BattleScript_BerryCurePrlzEnd2[]; +extern u8 BattleScript_BerryCurePsnEnd2[]; +extern u8 BattleScript_BerryCureBrnEnd2[]; +extern u8 BattleScript_BerryCureFrzEnd2[]; +extern u8 BattleScript_BerryCureSlpEnd2[]; +extern u8 BattleScript_BerryCureConfusionEnd2[]; +extern u8 gUnknown_081D9A44[]; //berry cure any status end2 +extern u8 BattleScript_BerryCureParRet[]; +extern u8 BattleScript_BerryCurePsnRet[]; +extern u8 BattleScript_BerryCureBrnRet[]; +extern u8 BattleScript_BerryCureFrzRet[]; +extern u8 BattleScript_BerryCureSlpRet[]; +extern u8 BattleScript_BerryCureConfusionRet[]; +extern u8 gUnknown_081D9A4A[]; //berry cure any status return + +extern u8 BattleScript_ItemHealHP_Ret[]; + +extern u8 gUnknown_081D995F[]; //disobedient while asleep +extern u8 gUnknown_081D996F[]; //disobedient, uses a random move +extern u8 gUnknown_081D9989[]; //disobedient, went to sleep +extern u8 gUnknown_081D99A0[]; //disobedient, hits itself + +#define CHOICED_MOVE(bank)(((u16*)(&ewram[bank * 2 + 0x160e8]))) + +//array entries for battle communication +#define MOVE_EFFECT_BYTE 0x3 +#define MULTISTRING_CHOOSER 0x5 +#define MSG_DISPLAY 0x7 + +void b_movescr_stack_push(u8* BS_ptr) +{ + B_BATTLESCRIPTS_STACK->ptr[B_BATTLESCRIPTS_STACK->size++] = BS_ptr; +} + +void b_movescr_stack_push_cursor(void) +{ + B_BATTLESCRIPTS_STACK->ptr[B_BATTLESCRIPTS_STACK->size++] = gBattlescriptCurrInstr; +} + +void b_movescr_stack_pop_cursor(void) +{ + gBattlescriptCurrInstr = B_BATTLESCRIPTS_STACK->ptr[--B_BATTLESCRIPTS_STACK->size]; +} + +u8 sub_8015894(void) //msg can't select a move +{ + u8 limitations = 0; + u16 move = gBattleMons[gActiveBank].moves[gBattleBufferB[gActiveBank][2]]; + u8 holdEffect; + u16* choicedMove = CHOICED_MOVE(gActiveBank); + if (gDisableStructs[gActiveBank].disabledMove == move && move) + { + BATTLE_STRUCT->scriptingActive = gActiveBank; + gCurrentMove = move; + gUnknown_02024C1C[gActiveBank] = BattleScript_MoveSelectionDisabledMove; + limitations++; + } + if (move == gLastUsedMove[gActiveBank] && move != MOVE_STRUGGLE && gBattleMons[gActiveBank].status2 & STATUS2_TORMENT) + { + CancelMultiTurnMoves(gActiveBank); + gUnknown_02024C1C[gActiveBank] = BattleScript_MoveSelectionTormented; + limitations++; + } + if (gDisableStructs[gActiveBank].tauntTimer1 && gBattleMoves[move].power == 0) + { + gCurrentMove = move; + gUnknown_02024C1C[gActiveBank] = BattleScript_MoveSelectionTaunted; + limitations++; + } + if (IsImprisoned(gActiveBank, move)) + { + gCurrentMove = move; + gUnknown_02024C1C[gActiveBank] = BattleScript_MoveSelectionImprisoned; + limitations++; + } + if (gBattleMons[gActiveBank].item == ITEM_ENIGMA_BERRY) + holdEffect = gEnigmaBerries[gActiveBank].holdEffect; + else + holdEffect = ItemId_GetHoldEffect(gBattleMons[gActiveBank].item); + gStringBank = gActiveBank; + if (holdEffect == HOLD_EFFECT_CHOICE_BAND && *choicedMove != 0 && *choicedMove != 0xFFFF && *choicedMove != move) + { + gCurrentMove = *choicedMove; + gLastUsedItem = gBattleMons[gActiveBank].item; + gUnknown_02024C1C[gActiveBank] = BattleScript_MoveSelectionChoiceBanded; + limitations++; + } + if (gBattleMons[gActiveBank].pp[gBattleBufferB[gActiveBank][2]] == 0) + { + gUnknown_02024C1C[gActiveBank] = BattleScript_MoveSelectionNoPP; + limitations++; + } + return limitations; +} + +#define MOVE_LIMITATION_ZEROMOVE (1 << 0) +#define MOVE_LIMITATION_PP (1 << 1) +#define MOVE_LIMITATION_DISABLED (1 << 2) +#define MOVE_LIMITATION_TORMENTED (1 << 3) +#define MOVE_LIMITATION_TAUNT (1 << 4) +#define MOVE_LIMITATION_IMPRISION (1 << 5) + +u8 CheckMoveLimitations(u8 bank, u8 unusableMoves, u8 check) +{ + u8 holdEffect; + u16* choicedMove = CHOICED_MOVE(bank); + s32 i; + if (gBattleMons[bank].item == ITEM_ENIGMA_BERRY) + holdEffect = gEnigmaBerries[bank].holdEffect; + else + holdEffect = ItemId_GetHoldEffect(gBattleMons[bank].item); + gStringBank = bank; + for (i = 0; i < 4; i++) + { + if (gBattleMons[bank].moves[i] == 0 && check & MOVE_LIMITATION_ZEROMOVE) + unusableMoves |= gBitTable[i]; + if (gBattleMons[bank].pp[i] == 0 && check & MOVE_LIMITATION_PP) + unusableMoves |= gBitTable[i]; + if (gBattleMons[bank].moves[i] == gDisableStructs[bank].disabledMove && check & MOVE_LIMITATION_DISABLED) + unusableMoves |= gBitTable[i]; + if (gBattleMons[bank].moves[i] == gLastUsedMove[bank] && check & MOVE_LIMITATION_TORMENTED && gBattleMons[bank].status2 & STATUS2_TORMENT) + unusableMoves |= gBitTable[i]; + if (gDisableStructs[bank].tauntTimer1 && check & MOVE_LIMITATION_TAUNT && gBattleMoves[gBattleMons[bank].moves[i]].power == 0) + unusableMoves |= gBitTable[i]; + if (IsImprisoned(bank, gBattleMons[bank].moves[i]) && check & MOVE_LIMITATION_IMPRISION) + unusableMoves |= gBitTable[i]; + if (gDisableStructs[bank].encoreTimer1 && gDisableStructs[bank].encoredMove != gBattleMons[bank].moves[i]) + unusableMoves |= gBitTable[i]; + if (holdEffect == HOLD_EFFECT_CHOICE_BAND && *choicedMove != 0 && *choicedMove != 0xFFFF && *choicedMove != gBattleMons[bank].moves[i]) + unusableMoves |= gBitTable[i]; + } + return unusableMoves; +} + +bool8 AreAllMovesUnusable(void) +{ + u8 unusable; + unusable = CheckMoveLimitations(gActiveBank, 0, 0xFF); + if (unusable == 0xF) //all moves are unusable + { + gProtectStructs[gActiveBank].onlyStruggle = 1; + gUnknown_02024C1C[gActiveBank] = BattleScript_NoMovesLeft; + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + gBattleBufferB[gActiveBank][3] = GetBankByPlayerAI((GetBankIdentity(gActiveBank) ^ 1) | (Random() & 2)); + else + gBattleBufferB[gActiveBank][3] = GetBankByPlayerAI(GetBankIdentity(gActiveBank) ^ 1); + } + else + gProtectStructs[gActiveBank].onlyStruggle = 0; + return (unusable == 0xF); +} + +u8 IsImprisoned(u8 bank, u16 move) +{ + u8 imprisionedMoves = 0; + u8 bankSide = GetBankSide(bank); + s32 i; + for (i = 0; i < gNoOfAllBanks; i++) + { + if (bankSide != GetBankSide(i) && gStatuses3[i] & STATUS3_IMPRISIONED) + { + s32 j; + for (j = 0; j < 4; j++) + { + if (move == gBattleMons[i].moves[j]) + break; + } + if (j < 4) + imprisionedMoves++; + } + } + return imprisionedMoves; +} + +u8 UpdateTurnCounters(void) +{ + u8 effect = 0; + s32 i; + + for (gBankAttacker = 0; gBankAttacker < gNoOfAllBanks && gAbsentBankFlags & gBitTable[gBankAttacker]; gBankAttacker++) + { + } + for (gBankTarget = 0; gBankTarget < gNoOfAllBanks && gAbsentBankFlags & gBitTable[gBankTarget]; gBankTarget++) + { + } + + do + { + u8 sideBank; + + switch (BATTLE_STRUCT->turncountersTracker) + { + case 0: + for (i = 0; i < gNoOfAllBanks; i++) + { + gTurnOrder[i] = i; + } + for (i = 0; i < gNoOfAllBanks - 1; i++) + { + s32 j; + for (j = i + 1; j < gNoOfAllBanks; j++) + { + if (GetWhoStrikesFirst(gTurnOrder[i], gTurnOrder[j], 0)) + sub_8012FBC(i, j); + } + } + BATTLE_STRUCT->turncountersTracker++; + BATTLE_STRUCT->turnSideTracker = 0; + case 1: + while (BATTLE_STRUCT->turnSideTracker < 2) + { + gActiveBank = gBankAttacker = sideBank = BATTLE_STRUCT->turnSideTracker; + + if (gSideAffecting[sideBank] & SIDE_STATUS_REFLECT) + { + if (--gSideTimer[sideBank].reflectTimer == 0) + { + + gSideAffecting[sideBank] &= ~SIDE_STATUS_REFLECT; + b_call_bc_move_exec(gUnknown_081D9030); + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 2; + gBattleTextBuff1[2] = MOVE_REFLECT; + gBattleTextBuff1[3] = MOVE_REFLECT >> 8; + gBattleTextBuff1[4] = EOS; + effect++; + } + } + BATTLE_STRUCT->turnSideTracker++; + if (effect) + break; + } + if (!effect) + { + BATTLE_STRUCT->turncountersTracker++; + BATTLE_STRUCT->turnSideTracker = 0; + } + break; + case 2: + while (BATTLE_STRUCT->turnSideTracker < 2) + { + gActiveBank = gBankAttacker = sideBank = BATTLE_STRUCT->turnSideTracker; + if (gSideAffecting[sideBank] & SIDE_STATUS_LIGHTSCREEN) + { + if (--gSideTimer[sideBank].lightscreenTimer == 0) + { + gSideAffecting[sideBank] &= ~SIDE_STATUS_LIGHTSCREEN; + b_call_bc_move_exec(gUnknown_081D9030); + gBattleCommunication[MULTISTRING_CHOOSER] = sideBank; + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 2; + gBattleTextBuff1[2] = MOVE_LIGHT_SCREEN; + gBattleTextBuff1[3] = MOVE_LIGHT_SCREEN >> 8; + gBattleTextBuff1[4] = EOS; + effect++; + } + } + BATTLE_STRUCT->turnSideTracker++; + if (effect) + break; + } + if (!effect) + { + BATTLE_STRUCT->turncountersTracker++; + BATTLE_STRUCT->turnSideTracker = 0; + } + break; + case 3: + while (BATTLE_STRUCT->turnSideTracker < 2) + { + gActiveBank = gBankAttacker = sideBank = BATTLE_STRUCT->turnSideTracker; + if (gSideTimer[sideBank].mistTimer && --gSideTimer[sideBank].mistTimer == 0) + { + gSideAffecting[sideBank] &= ~SIDE_STATUS_MIST; + b_call_bc_move_exec(gUnknown_081D9030); + gBattleCommunication[MULTISTRING_CHOOSER] = sideBank; + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 2; + gBattleTextBuff1[2] = MOVE_MIST; + gBattleTextBuff1[3] = MOVE_MIST >> 8; + gBattleTextBuff1[4] = EOS; + effect++; + } + BATTLE_STRUCT->turnSideTracker++; + if (effect) + break; + } + if (!effect) + { + BATTLE_STRUCT->turncountersTracker++; + BATTLE_STRUCT->turnSideTracker = 0; + } + break; + case 4: + while (BATTLE_STRUCT->turnSideTracker < 2) + { + gActiveBank = gBankAttacker = sideBank = BATTLE_STRUCT->turnSideTracker; + if (gSideAffecting[sideBank] & SIDE_STATUS_SAFEGUARD) + { + if (--gSideTimer[sideBank].safeguardTimer == 0) + { + gSideAffecting[sideBank] &= ~SIDE_STATUS_SAFEGUARD; + b_call_bc_move_exec(gUnknown_081D9041); + effect++; + } + } + BATTLE_STRUCT->turnSideTracker++; + if (effect) + break; + } + if (!effect) + { + BATTLE_STRUCT->turncountersTracker++; + BATTLE_STRUCT->turnSideTracker = 0; + } + break; + case 5: + while (BATTLE_STRUCT->turnSideTracker < gNoOfAllBanks) + { + gActiveBank = gTurnOrder[BATTLE_STRUCT->turnSideTracker]; + if (gWishFutureKnock.wishCounter[gActiveBank] && --gWishFutureKnock.wishCounter[gActiveBank] == 0 && gBattleMons[gActiveBank].hp) + { + gBankTarget = gActiveBank; + b_call_bc_move_exec(BattleScript_WishComesTrue); + effect++; + } + BATTLE_STRUCT->turnSideTracker++; + if (effect) + break; + } + if (!effect) + { + BATTLE_STRUCT->turncountersTracker++; + } + break; + case 6: + if (gBattleWeather & WEATHER_RAIN_ANY) + { + if (!(gBattleWeather & WEATHER_RAIN_PERMANENT)) + { + if (--gWishFutureKnock.weatherDuration == 0) + { + gBattleWeather &= ~WEATHER_RAIN_TEMPORARY; + gBattleWeather &= ~WEATHER_RAIN_DOWNPOUR; + gBattleCommunication[MULTISTRING_CHOOSER] = 2; + } + else if (gBattleWeather & WEATHER_RAIN_DOWNPOUR) + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + else + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + } + else if (gBattleWeather & WEATHER_RAIN_DOWNPOUR) + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + else + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + b_call_bc_move_exec(gUnknown_081D8F62); + effect++; + } + BATTLE_STRUCT->turncountersTracker++; + break; + case 7: + if (gBattleWeather & WEATHER_SANDSTORM_ANY) + { + if (!(gBattleWeather & WEATHER_SANDSTORM_PERMANENT) && --gWishFutureKnock.weatherDuration == 0) + { + gBattleWeather &= ~WEATHER_SANDSTORM_TEMPORARY; + gBattlescriptCurrInstr = gUnknown_081D8FFF; + } + else + gBattlescriptCurrInstr = gUnknown_081D8F7D; + + BATTLE_STRUCT->animArg1 = 0xC; + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + b_call_bc_move_exec(gBattlescriptCurrInstr); + effect++; + } + BATTLE_STRUCT->turncountersTracker++; + break; + case 8: + if (gBattleWeather & WEATHER_SUN_ANY) + { + if (!(gBattleWeather & WEATHER_SUN_PERMANENT) && --gWishFutureKnock.weatherDuration == 0) + { + gBattleWeather &= ~WEATHER_SUN_TEMPORARY; + gBattlescriptCurrInstr = gUnknown_081D9016; + } + else + gBattlescriptCurrInstr = gUnknown_081D9008; + + b_call_bc_move_exec(gBattlescriptCurrInstr); + effect++; + } + BATTLE_STRUCT->turncountersTracker++; + break; + case 9: + if (gBattleWeather & WEATHER_HAIL) + { + if (--gWishFutureKnock.weatherDuration == 0) + { + gBattleWeather &= ~WEATHER_HAIL; + gBattlescriptCurrInstr = gUnknown_081D8FFF; + } + else + gBattlescriptCurrInstr = gUnknown_081D8F7D; + + BATTLE_STRUCT->animArg1 = 0xD; + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + b_call_bc_move_exec(gBattlescriptCurrInstr); + effect++; + } + BATTLE_STRUCT->turncountersTracker++; + break; + case 10: + effect++; + break; + } + } while (effect == 0); + return (gBattleMainFunc != BattleTurnPassed); +} + +#define TURNBASED_MAX_CASE 19 + +u8 TurnBasedEffects(void) +{ + u8 effect = 0; + + gHitMarker |= (HITMARKER_GRUDGE | HITMARKER_x20); + while (BATTLE_STRUCT->turnEffectsBank < gNoOfAllBanks && BATTLE_STRUCT->turnEffectsTracker <= TURNBASED_MAX_CASE) + { + gActiveBank = gBankAttacker = gTurnOrder[BATTLE_STRUCT->turnEffectsBank]; + if (gAbsentBankFlags & gBitTable[gActiveBank]) + { + BATTLE_STRUCT->turnEffectsBank++; + } + else + { + switch (BATTLE_STRUCT->turnEffectsTracker) + { + case 0: // ingrain + if ((gStatuses3[gActiveBank] & STATUS3_ROOTED) + && gBattleMons[gActiveBank].hp != gBattleMons[gActiveBank].maxHP + && gBattleMons[gActiveBank].hp != 0) + { + gBattleMoveDamage = gBattleMons[gActiveBank].maxHP / 16; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + gBattleMoveDamage *= -1; + b_call_bc_move_exec(BattleScript_IngrainTurnHeal); + effect++; + } + BATTLE_STRUCT->turnEffectsTracker++; + break; + case 1: // end turn abilities + if (AbilityBattleEffects(ABILITYEFFECT_ENDTURN, gActiveBank, 0, 0, 0)) + effect++; + BATTLE_STRUCT->turnEffectsTracker++; + break; + case 2: // item effects + if (ItemBattleEffects(1, gActiveBank, 0)) + effect++; + BATTLE_STRUCT->turnEffectsTracker++; + break; + case 18: // item effects again + if (ItemBattleEffects(1, gActiveBank, 1)) + effect++; + BATTLE_STRUCT->turnEffectsTracker++; + break; + case 3: // leech seed + if (gStatuses3[gActiveBank] & STATUS3_LEECHSEED && gBattleMons[gStatuses3[gActiveBank] & STATUS3_LEECHSEED_BANK].hp != 0 && gBattleMons[gActiveBank].hp != 0) + { + gBankTarget = gStatuses3[gActiveBank] & STATUS3_LEECHSEED_BANK; //funny how the 'target' is actually the bank that receives HP + gBattleMoveDamage = gBattleMons[gActiveBank].maxHP / 8; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + BATTLE_STRUCT->animArg1 = gBankTarget; + BATTLE_STRUCT->animArg2 = gBankAttacker; + b_call_bc_move_exec(BattleScript_LeechSeedTurnDrain); + effect++; + } + BATTLE_STRUCT->turnEffectsTracker++; + break; + case 4: // poison + if ((gBattleMons[gActiveBank].status1 & STATUS_POISON) && gBattleMons[gActiveBank].hp != 0) + { + gBattleMoveDamage = gBattleMons[gActiveBank].maxHP / 8; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + b_call_bc_move_exec(BattleScript_PoisonTurnDmg); + effect++; + } + BATTLE_STRUCT->turnEffectsTracker++; + break; + case 5: // toxic poison + if ((gBattleMons[gActiveBank].status1 & STATUS_TOXIC_POISON) && gBattleMons[gActiveBank].hp != 0) + { + gBattleMoveDamage = gBattleMons[gActiveBank].maxHP / 16; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + if ((gBattleMons[gActiveBank].status1 & 0xF00) != 0xF00) //not 16 turns + gBattleMons[gActiveBank].status1 += 0x100; + gBattleMoveDamage *= (gBattleMons[gActiveBank].status1 & 0xF00) >> 8; + b_call_bc_move_exec(BattleScript_PoisonTurnDmg); + effect++; + } + BATTLE_STRUCT->turnEffectsTracker++; + break; + case 6: // burn + if ((gBattleMons[gActiveBank].status1 & STATUS_BURN) && gBattleMons[gActiveBank].hp != 0) + { + gBattleMoveDamage = gBattleMons[gActiveBank].maxHP / 8; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + b_call_bc_move_exec(BattleScript_BurnTurnDmg); + effect++; + } + BATTLE_STRUCT->turnEffectsTracker++; + break; + case 7: // spooky nightmares + if ((gBattleMons[gActiveBank].status2 & STATUS2_NIGHTMARE) && gBattleMons[gActiveBank].hp != 0) + { + // missing sleep check + gBattleMoveDamage = gBattleMons[gActiveBank].maxHP / 4; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + b_call_bc_move_exec(BattleScript_NightmareTurnDmg); + effect++; + } + BATTLE_STRUCT->turnEffectsTracker++; + break; + case 8: // curse + if ((gBattleMons[gActiveBank].status2 & STATUS2_CURSED) && gBattleMons[gActiveBank].hp != 0) + { + gBattleMoveDamage = gBattleMons[gActiveBank].maxHP / 4; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + b_call_bc_move_exec(BattleScript_CurseTurnDmg); + effect++; + } + BATTLE_STRUCT->turnEffectsTracker++; + break; + case 9: // wrap + if ((gBattleMons[gActiveBank].status2 & STATUS2_WRAPPED) && gBattleMons[gActiveBank].hp != 0) + { + gBattleMons[gActiveBank].status2 -= 0x2000; + if (gBattleMons[gActiveBank].status2 & STATUS2_WRAPPED) // damaged by wrap + { + BATTLE_STRUCT->animArg1 = ewram[gActiveBank * 2 + 0x16004]; + BATTLE_STRUCT->animArg2 = ewram[gActiveBank * 2 + 0x16005]; + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 2; + gBattleTextBuff1[2] = ewram[gActiveBank * 2 + 0x16004]; + gBattleTextBuff1[3] = ewram[gActiveBank * 2 + 0x16005]; + gBattleTextBuff1[4] = EOS; + gBattlescriptCurrInstr = BattleScript_WrapTurnDmg; + gBattleMoveDamage = gBattleMons[gActiveBank].maxHP / 16; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + } + else // broke free + { + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 2; + gBattleTextBuff1[2] = ewram[gActiveBank * 2 + 0x16004]; + gBattleTextBuff1[3] = ewram[gActiveBank * 2 + 0x16005]; + gBattleTextBuff1[4] = EOS; + gBattlescriptCurrInstr = BattleScript_WrapEnds; + } + b_call_bc_move_exec(gBattlescriptCurrInstr); + effect++; + } + BATTLE_STRUCT->turnEffectsTracker++; + break; + case 10: // uproar + if (gBattleMons[gActiveBank].status2 & STATUS2_UPROAR) + { + for (gBankAttacker = 0; gBankAttacker < gNoOfAllBanks; gBankAttacker++) + { + if ((gBattleMons[gBankAttacker].status1 & STATUS_SLEEP) + && gBattleMons[gBankAttacker].ability != ABILITY_SOUNDPROOF) + { + gBattleMons[gBankAttacker].status1 &= ~(STATUS_SLEEP); + gBattleMons[gBankAttacker].status2 &= ~(STATUS2_NIGHTMARE); + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + b_call_bc_move_exec(gUnknown_081D950F); + gActiveBank = gBankAttacker; + EmitSetAttributes(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBank].status1); + MarkBufferBankForExecution(gActiveBank); + break; + } + } + if (gBankAttacker != gNoOfAllBanks) + { + effect = 2; // a pokemon was awaken + break; + } + else + { + gBankAttacker = gActiveBank; + gBattleMons[gActiveBank].status2 -= 0x10; // uproar timer goes down + if (sub_8015660(gActiveBank)) + { + CancelMultiTurnMoves(gActiveBank); + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + } + else if (gBattleMons[gActiveBank].status2 & STATUS2_UPROAR) + { + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + gBattleMons[gActiveBank].status2 |= STATUS2_MULTIPLETURNS; + } + else + { + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + CancelMultiTurnMoves(gActiveBank); + } + b_call_bc_move_exec(gUnknown_081D957E); + effect = 1; + } + } + if (effect != 2) + BATTLE_STRUCT->turnEffectsTracker++; + break; + case 11: // thrash + if (gBattleMons[gActiveBank].status2 & STATUS2_LOCK_CONFUSE) + { + gBattleMons[gActiveBank].status2 -= 0x400; + if (sub_8015660(gActiveBank)) + CancelMultiTurnMoves(gActiveBank); + else if (!(gBattleMons[gActiveBank].status2 & STATUS2_LOCK_CONFUSE) + && (gBattleMons[gActiveBank].status2 & STATUS2_MULTIPLETURNS)) + { + gBattleMons[gActiveBank].status2 &= ~(STATUS2_MULTIPLETURNS); + if (!(gBattleMons[gActiveBank].status2 & STATUS2_CONFUSION)) + { + gBattleCommunication[MOVE_EFFECT_BYTE] = 0x47; + SetMoveEffect(1, 0); + if (gBattleMons[gActiveBank].status2 & STATUS2_CONFUSION) + b_call_bc_move_exec(BattleScript_ThrashConfuses); + effect++; + } + } + } + BATTLE_STRUCT->turnEffectsTracker++; + break; + case 12: // disable + if (gDisableStructs[gActiveBank].disableTimer1 != 0) + { + int i; + for (i = 0; i < 4; i++) + { + if (gDisableStructs[gActiveBank].disabledMove == gBattleMons[gActiveBank].moves[i]) + break; + } + if (i == 4) // pokemon does not have the disabled move anymore + { + gDisableStructs[gActiveBank].disabledMove = 0; + gDisableStructs[gActiveBank].disableTimer1 = 0; + } + else if (--gDisableStructs[gActiveBank].disableTimer1 == 0) // disable ends + { + gDisableStructs[gActiveBank].disabledMove = 0; + b_call_bc_move_exec(BattleScript_DisabledNoMore); + effect++; + } + } + BATTLE_STRUCT->turnEffectsTracker++; + break; + case 13: // encore + if (gDisableStructs[gActiveBank].encoreTimer1 != 0) + { + if (gBattleMons[gActiveBank].moves[gDisableStructs[gActiveBank].encoredMovePos] != gDisableStructs[gActiveBank].encoredMove) // pokemon does not have the encored move anymore + { + gDisableStructs[gActiveBank].encoredMove = 0; + gDisableStructs[gActiveBank].encoreTimer1 = 0; + } + else if (--gDisableStructs[gActiveBank].encoreTimer1 == 0 + || gBattleMons[gActiveBank].pp[gDisableStructs[gActiveBank].encoredMovePos] == 0) + { + gDisableStructs[gActiveBank].encoredMove = 0; + gDisableStructs[gActiveBank].encoreTimer1 = 0; + b_call_bc_move_exec(BattleScript_EncoredNoMore); + effect++; + } + } + BATTLE_STRUCT->turnEffectsTracker++; + break; + case 14: // lock-on decrement + if (gStatuses3[gActiveBank] & STATUS3_ALWAYS_HITS) + gStatuses3[gActiveBank] -= 0x8; + BATTLE_STRUCT->turnEffectsTracker++; + break; + case 15: // charge + if (gDisableStructs[gActiveBank].chargeTimer1 && --gDisableStructs[gActiveBank].chargeTimer1 == 0) + gStatuses3[gActiveBank] &= ~STATUS3_CHARGED_UP; + BATTLE_STRUCT->turnEffectsTracker++; + break; + case 16: // taunt + if (gDisableStructs[gActiveBank].tauntTimer1) + gDisableStructs[gActiveBank].tauntTimer1--; + BATTLE_STRUCT->turnEffectsTracker++; + break; + case 17: // yawn + if (gStatuses3[gActiveBank] & STATUS3_YAWN) + { + gStatuses3[gActiveBank] -= 0x800; + if (!(gStatuses3[gActiveBank] & STATUS3_YAWN) && !(gBattleMons[gActiveBank].status1 & STATUS_ANY) + && gBattleMons[gActiveBank].ability != ABILITY_VITAL_SPIRIT + && gBattleMons[gActiveBank].ability != ABILITY_INSOMNIA && !UproarWakeUpCheck(gActiveBank)) + { + CancelMultiTurnMoves(gActiveBank); + gBattleMons[gActiveBank].status1 |= (Random() & 3) + 2; + EmitSetAttributes(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBank].status1); + MarkBufferBankForExecution(gActiveBank); + gEffectBank = gActiveBank; + b_call_bc_move_exec(BattleScript_YawnMakesAsleep); + effect++; + } + } + BATTLE_STRUCT->turnEffectsTracker++; + break; + case 19: // done + BATTLE_STRUCT->turnEffectsTracker = 0; + BATTLE_STRUCT->turnEffectsBank++; + break; + } + if (effect != 0) + return effect; + } + } + gHitMarker &= ~(HITMARKER_GRUDGE | HITMARKER_x20); + return 0; +} + +bool8 sub_80170DC(void) // handle future sight and perish song +{ + gHitMarker |= (HITMARKER_GRUDGE | HITMARKER_x20); + switch (BATTLE_STRUCT->sub80170DC_Tracker) + { + case 0: // future sight + while (BATTLE_STRUCT->sub80170DC_Bank < gNoOfAllBanks) + { + gActiveBank = BATTLE_STRUCT->sub80170DC_Bank; + if (gAbsentBankFlags & gBitTable[gActiveBank]) + BATTLE_STRUCT->sub80170DC_Bank++; + else + { + BATTLE_STRUCT->sub80170DC_Bank++; + if (gWishFutureKnock.futureSightCounter[gActiveBank] && --gWishFutureKnock.futureSightCounter[gActiveBank] == 0 && gBattleMons[gActiveBank].hp) + { + if (gWishFutureKnock.futureSightMove[gActiveBank] == MOVE_FUTURE_SIGHT) + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + else //Doom Desire + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 2; + gBattleTextBuff1[2] = gWishFutureKnock.futureSightMove[gActiveBank]; + gBattleTextBuff1[3] = gWishFutureKnock.futureSightMove[gActiveBank] >> 8; + gBattleTextBuff1[4] = 0xFF; + gBankTarget = gActiveBank; + gBankAttacker = gWishFutureKnock.futureSightAttacker[gActiveBank]; + gBattleMoveDamage = gWishFutureKnock.futureSightDmg[gActiveBank]; + gSpecialStatuses[gBankTarget].moveturnLostHP = 0xFFFF; + b_call_bc_move_exec(BattleScript_FutureSightHits); + return 1; + } + } + } + BATTLE_STRUCT->sub80170DC_Tracker = 1; + BATTLE_STRUCT->sub80170DC_Bank = 0; + case 1: // perish song + while (BATTLE_STRUCT->sub80170DC_Bank < gNoOfAllBanks) + { + gActiveBank = gBankAttacker = gTurnOrder[BATTLE_STRUCT->sub80170DC_Bank]; + if (gAbsentBankFlags & gBitTable[gActiveBank]) + BATTLE_STRUCT->sub80170DC_Bank++; + else + { + BATTLE_STRUCT->sub80170DC_Bank++; + if (gStatuses3[gActiveBank] & STATUS3_PERISH_SONG) + { + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 1; + gBattleTextBuff1[2] = 1; + gBattleTextBuff1[3] = 1; + gBattleTextBuff1[4] = gDisableStructs[gActiveBank].perishSong1; + gBattleTextBuff1[5] = 0xFF; + if (gDisableStructs[gActiveBank].perishSong1 == 0) + { + gStatuses3[gActiveBank] &= ~(STATUS3_PERISH_SONG); + gBattleMoveDamage = gBattleMons[gActiveBank].hp; + gBattlescriptCurrInstr = BattleScript_PerishSongHits; + } + else + { + gDisableStructs[gActiveBank].perishSong1--; + gBattlescriptCurrInstr = BattleScript_PerishSongTimerGoesDown; + } + b_call_bc_move_exec(gBattlescriptCurrInstr); + return 1; + } + } + } + break; + } + gHitMarker &= ~(HITMARKER_GRUDGE | HITMARKER_x20); + return 0; +} + +#define sub_80173A4_MAX_CASE 7 + +bool8 sub_80173A4(void) +{ + if (gBattleTypeFlags & BATTLE_TYPE_SAFARI) + return 0; + do + { + int i; + switch (BATTLE_STRUCT->sub80173A4_Tracker) + { + case 0: + BATTLE_STRUCT->unk1605A = 0; + BATTLE_STRUCT->sub80173A4_Tracker++; + for (i = 0; i < gNoOfAllBanks; i++) + { + if (gAbsentBankFlags & gBitTable[i] && !sub_8018018(i, 6, 6)) + gAbsentBankFlags &= ~(gBitTable[i]); + } + case 1: + do + { + gBank1 = gBankTarget = BATTLE_STRUCT->unk1605A; + if (gBattleMons[BATTLE_STRUCT->unk1605A].hp == 0 && !(BATTLE_STRUCT->unk16113 & gBitTable[gBattlePartyID[BATTLE_STRUCT->unk1605A]]) && !(gAbsentBankFlags & gBitTable[BATTLE_STRUCT->unk1605A])) + { + b_call_bc_move_exec(gUnknown_081D8C72); + BATTLE_STRUCT->sub80173A4_Tracker = 2; + return 1; + } + } while (++BATTLE_STRUCT->unk1605A != gNoOfAllBanks); + BATTLE_STRUCT->sub80173A4_Tracker = 3; + break; + case 2: + sub_8015740(gBank1); + if (++BATTLE_STRUCT->unk1605A == gNoOfAllBanks) + BATTLE_STRUCT->sub80173A4_Tracker = 3; + else + BATTLE_STRUCT->sub80173A4_Tracker = 1; + break; + case 3: + BATTLE_STRUCT->unk1605A = 0; + BATTLE_STRUCT->sub80173A4_Tracker++; + case 4: + do + { + gBank1 = gBankTarget = BATTLE_STRUCT->unk1605A; //or should banks be switched? + if (gBattleMons[BATTLE_STRUCT->unk1605A].hp == 0 && !(gAbsentBankFlags & gBitTable[BATTLE_STRUCT->unk1605A])) + { + b_call_bc_move_exec(gUnknown_081D8C7B); + BATTLE_STRUCT->sub80173A4_Tracker = 5; + return 1; + } + } while (++BATTLE_STRUCT->unk1605A != gNoOfAllBanks); + BATTLE_STRUCT->sub80173A4_Tracker = 6; + break; + case 5: + if (++BATTLE_STRUCT->unk1605A == gNoOfAllBanks) + BATTLE_STRUCT->sub80173A4_Tracker = 6; + else + BATTLE_STRUCT->sub80173A4_Tracker = 4; + break; + case 6: + if (AbilityBattleEffects(9, 0, 0, 0, 0) || AbilityBattleEffects(0xB, 0, 0, 0, 0) || ItemBattleEffects(1, 0, 1) || AbilityBattleEffects(6, 0, 0, 0, 0)) + return 1; + BATTLE_STRUCT->sub80173A4_Tracker++; + break; + case 7: + break; + } + } while (BATTLE_STRUCT->sub80173A4_Tracker != sub_80173A4_MAX_CASE); + return 0; +} + +void b_clear_atk_up_if_hit_flag_unless_enraged(void) +{ + int i; + for (i = 0; i < gNoOfAllBanks; i++) + { + if (gBattleMons[i].status2 & STATUS2_RAGE && gChosenMovesByBanks[i] != MOVE_RAGE) + gBattleMons[i].status2 &= ~(STATUS2_RAGE); + } +} + +#define ATKCANCELLER_MAX_CASE 14 + +u8 AtkCanceller_UnableToUseMove(void) +{ + u8 effect = 0; + s32* bideDmg = &BATTLE_STRUCT->bideDmg; + do + { + switch (BATTLE_STRUCT->atkCancellerTracker) + { + case 0: // flags clear + gBattleMons[gBankAttacker].status2 &= ~(STATUS2_DESTINY_BOND); + gStatuses3[gBankAttacker] &= ~(STATUS3_GRUDGE); + BATTLE_STRUCT->atkCancellerTracker++; + break; + case 1: // check being asleep + if (gBattleMons[gBankAttacker].status1 & STATUS_SLEEP) + { + if (UproarWakeUpCheck(gBankAttacker)) + { + gBattleMons[gBankAttacker].status1 &= ~(STATUS_SLEEP); + gBattleMons[gBankAttacker].status2 &= ~(STATUS2_NIGHTMARE); + b_movescr_stack_push_cursor(); + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + gBattlescriptCurrInstr = BattleScript_MoveUsedWokeUp; + effect = 2; + } + else + { + u8 toSub; + if (gBattleMons[gBankAttacker].ability == ABILITY_EARLY_BIRD) + toSub = 2; + else + toSub = 1; + if ((gBattleMons[gBankAttacker].status1 & STATUS_SLEEP) < toSub) + gBattleMons[gBankAttacker].status1 &= ~(STATUS_SLEEP); + else + gBattleMons[gBankAttacker].status1 -= toSub; + if (gBattleMons[gBankAttacker].status1 & STATUS_SLEEP) + { + if (gCurrentMove != MOVE_SNORE && gCurrentMove != MOVE_SLEEP_TALK) + { + gBattlescriptCurrInstr = BattleScript_MoveUsedIsAsleep; + gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; + effect = 2; + } + } + else + { + gBattleMons[gBankAttacker].status2 &= ~(STATUS2_NIGHTMARE); + b_movescr_stack_push_cursor(); + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + gBattlescriptCurrInstr = BattleScript_MoveUsedWokeUp; + effect = 2; + } + } + } + BATTLE_STRUCT->atkCancellerTracker++; + break; + case 2: // check being frozen + if (gBattleMons[gBankAttacker].status1 & STATUS_FREEZE) + { + if (Random() % 5) + { + if (gBattleMoves[gCurrentMove].effect != EFFECT_THAW_HIT) // unfreezing via a move effect happens in case 13 + { + gBattlescriptCurrInstr = BattleScript_MoveUsedIsFrozen; + gHitMarker |= HITMARKER_NO_ATTACKSTRING; + } + else + { + BATTLE_STRUCT->atkCancellerTracker++; + break; + } + } + else // unfreeze + { + gBattleMons[gBankAttacker].status1 &= ~(STATUS_FREEZE); + b_movescr_stack_push_cursor(); + gBattlescriptCurrInstr = BattleScript_MoveUsedUnfroze; + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + } + effect = 2; + } + BATTLE_STRUCT->atkCancellerTracker++; + break; + case 3: // truant + if (gBattleMons[gBankAttacker].ability == ABILITY_TRUANT && gDisableStructs[gBankAttacker].truantCounter) + { + CancelMultiTurnMoves(gBankAttacker); + gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + gBattlescriptCurrInstr = BattleScript_MoveUsedLoafingAround; + gBattleMoveFlags |= MOVESTATUS_MISSED; + effect = 1; + } + BATTLE_STRUCT->atkCancellerTracker++; + break; + case 4: // recharge + if (gBattleMons[gBankAttacker].status2 & STATUS2_RECHARGE) + { + gBattleMons[gBankAttacker].status2 &= ~(STATUS2_RECHARGE); + gDisableStructs[gBankAttacker].rechargeCounter = 0; + CancelMultiTurnMoves(gBankAttacker); + gBattlescriptCurrInstr = BattleScript_MoveUsedMustRecharge; + gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; + effect = 1; + } + BATTLE_STRUCT->atkCancellerTracker++; + break; + case 5: // flinch + if (gBattleMons[gBankAttacker].status2 & STATUS2_FLINCHED) + { + gBattleMons[gBankAttacker].status2 &= ~(STATUS2_FLINCHED); + gProtectStructs[gBankAttacker].flinchImmobility = 1; + CancelMultiTurnMoves(gBankAttacker); + gBattlescriptCurrInstr = BattleScript_MoveUsedFlinched; + gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; + effect = 1; + } + BATTLE_STRUCT->atkCancellerTracker++; + break; + case 6: // disabled move + if (gDisableStructs[gBankAttacker].disabledMove == gCurrentMove && gDisableStructs[gBankAttacker].disabledMove != 0) + { + gProtectStructs[gBankAttacker].usedDisabledMove = 1; + BATTLE_STRUCT->scriptingActive = gBankAttacker; + CancelMultiTurnMoves(gBankAttacker); + gBattlescriptCurrInstr = BattleScript_MoveUsedIsDisabled; + gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; + effect = 1; + } + BATTLE_STRUCT->atkCancellerTracker++; + break; + case 7: // taunt + if (gDisableStructs[gBankAttacker].tauntTimer1 && gBattleMoves[gCurrentMove].power == 0) + { + gProtectStructs[gBankAttacker].usedTauntedMove = 1; + CancelMultiTurnMoves(gBankAttacker); + gBattlescriptCurrInstr = BattleScript_MoveUsedIsTaunted; + gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; + effect = 1; + } + BATTLE_STRUCT->atkCancellerTracker++; + break; + case 8: // imprisoned + if (IsImprisoned(gBankAttacker, gCurrentMove)) + { + gProtectStructs[gBankAttacker].usedImprisionedMove = 1; + CancelMultiTurnMoves(gBankAttacker); + gBattlescriptCurrInstr = BattleScript_MoveUsedIsImprisoned; + gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; + effect = 1; + } + BATTLE_STRUCT->atkCancellerTracker++; + break; + case 9: // confusion + if (gBattleMons[gBankAttacker].status2 & STATUS2_CONFUSION) + { + gBattleMons[gBankAttacker].status2--; + if (gBattleMons[gBankAttacker].status2 & STATUS2_CONFUSION) + { + if (Random() & 1) + { + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + b_movescr_stack_push_cursor(); + } + else // confusion dmg + { + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + gBankTarget = gBankAttacker; + gBattleMoveDamage = CalculateBaseDamage(&gBattleMons[gBankAttacker], &gBattleMons[gBankAttacker], MOVE_POUND, 0, 40, 0, gBankAttacker, gBankAttacker); + gProtectStructs[gBankAttacker].confusionSelfDmg = 1; + gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; + } + gBattlescriptCurrInstr = BattleScript_MoveUsedIsConfused; + } + else // snapped out of confusion + { + b_movescr_stack_push_cursor(); + gBattlescriptCurrInstr = BattleScript_MoveUsedIsConfusedNoMore; + } + effect = 1; + } + BATTLE_STRUCT->atkCancellerTracker++; + break; + case 10: // paralysis + if (gBattleMons[gBankAttacker].status1 & STATUS_PARALYSIS && (Random() % 4) == 0) + { + gProtectStructs[gBankAttacker].prlzImmobility = 1; + CancelMultiTurnMoves(gBankAttacker); + gBattlescriptCurrInstr = BattleScript_MoveUsedIsParalyzed; + gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; + effect = 1; + } + BATTLE_STRUCT->atkCancellerTracker++; + break; + case 11: // infatuation + if (gBattleMons[gBankAttacker].status2 & STATUS2_INFATUATION) + { + BATTLE_STRUCT->scriptingActive = CountTrailingZeroBits((gBattleMons[gBankAttacker].status2 & STATUS2_INFATUATION) >> 0x10); + if (Random() & 1) + b_movescr_stack_push_cursor(); + else + { + b_movescr_stack_push(BattleScript_MoveUsedIsParalyzedCantAttack); + gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; + gProtectStructs[gBankAttacker].loveImmobility = 1; + CancelMultiTurnMoves(gBankAttacker); + } + gBattlescriptCurrInstr = BattleScript_MoveUsedIsInLove; + effect = 1; + } + BATTLE_STRUCT->atkCancellerTracker++; + break; + case 12: // bide + if (gBattleMons[gBankAttacker].status2 & STATUS2_BIDE) + { + gBattleMons[gBankAttacker].status2 -= 0x100; + if (gBattleMons[gBankAttacker].status2 & STATUS2_BIDE) + gBattlescriptCurrInstr = BattleScript_BideStoringEnergy; + else + { + gBattleMons[gBankAttacker].status2 &= ~(STATUS2_MULTIPLETURNS); + if (gTakenDmg[gBankAttacker]) + { + gCurrentMove = MOVE_BIDE; + *bideDmg = gTakenDmg[gBankAttacker] * 2; + gBankTarget = gTakenDmgBanks[gBankAttacker]; + if (gAbsentBankFlags & gBitTable[gBankTarget]) + gBankTarget = GetMoveTarget(MOVE_BIDE, 1); + gBattlescriptCurrInstr = BattleScript_BideAttack; + } + else + gBattlescriptCurrInstr = BattleScript_BideNoEnergyToAttack; + } + effect = 1; + } + BATTLE_STRUCT->atkCancellerTracker++; + break; + case 13: // move thawing + if (gBattleMons[gBankAttacker].status1 & STATUS_FREEZE) + { + if (gBattleMoves[gCurrentMove].effect == EFFECT_THAW_HIT) + { + gBattleMons[gBankAttacker].status1 &= ~(STATUS_FREEZE); + b_movescr_stack_push_cursor(); + gBattlescriptCurrInstr = BattleScript_MoveUsedUnfroze; + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + } + effect = 2; + } + BATTLE_STRUCT->atkCancellerTracker++; + break; + case 14: // last case + break; + } + + } while (BATTLE_STRUCT->atkCancellerTracker != ATKCANCELLER_MAX_CASE && effect == 0); + + if (effect == 2) + { + gActiveBank = gBankAttacker; + EmitSetAttributes(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBank].status1); + MarkBufferBankForExecution(gActiveBank); + } + return effect; +} + +bool8 sub_8018018(u8 bank, u8 r1, u8 r2) +{ + struct Pokemon* party; + u8 r7; + u8 r6; + s32 i; + if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE)) + return 0; + if (gBattleTypeFlags & BATTLE_TYPE_MULTI) + { + r7 = sub_803FC34(bank); + if (GetBankSide(bank) == 0) + party = gPlayerParty; + else + party = gEnemyParty; + r6 = sub_803FBFC(r7); + for (i = r6 * 3; i < r6 * 3 + 3; i++) + { + if (GetMonData(&party[i], MON_DATA_HP) && GetMonData(&party[i], MON_DATA_SPECIES2) && GetMonData(&party[i], MON_DATA_SPECIES2) != SPECIES_EGG) + break; + } + return (i == r6 * 3 + 3); + } + else + { + if (GetBankSide(bank) == 1) + { + r7 = GetBankByPlayerAI(1); + r6 = GetBankByPlayerAI(3); + party = gEnemyParty; + } + else + { + r7 = GetBankByPlayerAI(0); + r6 = GetBankByPlayerAI(2); + party = gPlayerParty; + } + if (r1 == 6) + r1 = gBattlePartyID[r7]; + if (r2 == 6) + r2 = gBattlePartyID[r6]; + for (i = 0; i < 6; i++) + { + if (GetMonData(&party[i], MON_DATA_HP) && GetMonData(&party[i], MON_DATA_SPECIES2) && GetMonData(&party[i], MON_DATA_SPECIES2) != SPECIES_EGG && i != r1 && i != r2 && i != ewram[r7 + 0x16068] && i != ewram[r6 + 0x16068]) + break; + } + return (i == 6); + } +} + +enum +{ + CASTFORM_NO_CHANGE, //0 + CASTFORM_TO_NORMAL, //1 + CASTFORM_TO_FIRE, //2 + CASTFORM_TO_WATER, //3 + CASTFORM_TO_ICE, //4 +}; + +u8 CastformDataTypeChange(u8 bank) +{ + u8 formChange = 0; + if (gBattleMons[bank].species != SPECIES_CASTFORM || gBattleMons[bank].ability != ABILITY_FORECAST || gBattleMons[bank].hp == 0) + return CASTFORM_NO_CHANGE; + if (!WEATHER_HAS_EFFECT && gBattleMons[bank].type1 != TYPE_NORMAL && gBattleMons[bank].type2 != TYPE_NORMAL) + { + gBattleMons[bank].type1 = TYPE_NORMAL; + gBattleMons[bank].type2 = TYPE_NORMAL; + return CASTFORM_TO_NORMAL; + } + if (!WEATHER_HAS_EFFECT) + return CASTFORM_NO_CHANGE; + if (!(gBattleWeather & (WEATHER_RAIN_ANY | WEATHER_SUN_ANY | WEATHER_HAIL)) && gBattleMons[bank].type1 != TYPE_NORMAL && gBattleMons[bank].type2 != TYPE_NORMAL) + { + gBattleMons[bank].type1 = TYPE_NORMAL; + gBattleMons[bank].type2 = TYPE_NORMAL; + formChange = CASTFORM_TO_NORMAL; + } + if (gBattleWeather & WEATHER_SUN_ANY && gBattleMons[bank].type1 != TYPE_FIRE && gBattleMons[bank].type2 != TYPE_FIRE) + { + gBattleMons[bank].type1 = TYPE_FIRE; + gBattleMons[bank].type2 = TYPE_FIRE; + formChange = CASTFORM_TO_FIRE; + } + if (gBattleWeather & WEATHER_RAIN_ANY && gBattleMons[bank].type1 != TYPE_WATER && gBattleMons[bank].type2 != TYPE_WATER) + { + gBattleMons[bank].type1 = TYPE_WATER; + gBattleMons[bank].type2 = TYPE_WATER; + formChange = CASTFORM_TO_WATER; + } + if (gBattleWeather & WEATHER_HAIL && gBattleMons[bank].type1 != TYPE_ICE && gBattleMons[bank].type2 != TYPE_ICE) + { + gBattleMons[bank].type1 = TYPE_ICE; + gBattleMons[bank].type2 = TYPE_ICE; + formChange = CASTFORM_TO_ICE; + } + return formChange; +} + +#ifdef NONMATCHING + +struct Struct2017100 +{ + u32 arr[4]; +}; + +#define ewram17100 (*(struct Struct2017100 *)(ewram + 0x17100)) + +u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) +{ + u8 effect = 0; + struct Pokemon* pokeAtk; + struct Pokemon* pokeDef; + u16 speciesAtk; + u16 speciesDef; + u32 pidAtk; + u32 pidDef; + + if (gBankAttacker >= gNoOfAllBanks) + gBankAttacker = bank; + if (GetBankSide(gBankAttacker) == 0) + pokeAtk = &gPlayerParty[gBattlePartyID[gBankAttacker]]; + else + pokeAtk = &gEnemyParty[gBattlePartyID[gBankAttacker]]; + + if (gBankTarget >= gNoOfAllBanks) + gBankTarget = bank; + if (GetBankSide(gBankTarget) == 0) + pokeDef = &gPlayerParty[gBattlePartyID[gBankTarget]]; + else + pokeDef = &gEnemyParty[gBattlePartyID[gBankTarget]]; + + speciesAtk = GetMonData(pokeAtk, MON_DATA_SPECIES); + pidAtk = GetMonData(pokeAtk, MON_DATA_PERSONALITY); + + speciesDef = GetMonData(pokeDef, MON_DATA_SPECIES); + pidDef = GetMonData(pokeDef, MON_DATA_PERSONALITY); + + if (!(gBattleTypeFlags & BATTLE_TYPE_SAFARI)) // why isn't that check done at the beginning? + { + //_08018436 + int i; // r4 + u16 move; + // Hmm... + #define moveType moveArg + //u16 moveType; + u8 side; + + if (special) + gLastUsedAbility = special; + else + gLastUsedAbility = gBattleMons[bank].ability; + + if (moveArg) + move = moveArg; + else + move = gCurrentMove; + + if (BATTLE_STRUCT->dynamicMoveType) + moveType = BATTLE_STRUCT->dynamicMoveType & 0x3F; + else + moveType = gBattleMoves[move].type; + + //_080184AC + switch (caseID) + { + case ABILITYEFFECT_ON_SWITCHIN: // 0 + //_08018518 + if (gBankAttacker >= gNoOfAllBanks) + gBankAttacker = bank; + switch (gLastUsedAbility) + { + case 0xFF: //weather from overworld + //_08018586 + switch (weather_get_current()) + { + case 3: + case 5: + case 13: + if (!(gBattleWeather & WEATHER_RAIN_ANY)) + { + gBattleWeather = (WEATHER_RAIN_TEMPORARY | WEATHER_RAIN_PERMANENT); + BATTLE_STRUCT->animArg1 = 0xA; + BATTLE_STRUCT->scriptingActive = bank; + effect++; + } + break; + case 8: + if (!(gBattleWeather & WEATHER_SANDSTORM_ANY)) + { + gBattleWeather = (WEATHER_SANDSTORM_PERMANENT | WEATHER_SANDSTORM_TEMPORARY); + BATTLE_STRUCT->animArg1 = 0xC; + BATTLE_STRUCT->scriptingActive = bank; + effect++; + } + break; + case 12: + if (!(gBattleWeather & WEATHER_SUN_ANY)) + { + gBattleWeather = (WEATHER_SUN_PERMANENT | WEATHER_SUN_TEMPORARY); + BATTLE_STRUCT->animArg1 = 0xB; + BATTLE_STRUCT->scriptingActive = bank; + effect++; + } + break; + } + if (effect) + { + gBattleCommunication[MULTISTRING_CHOOSER] = weather_get_current(); + b_push_move_exec(gUnknown_081D901D); + } + break; + case ABILITY_DRIZZLE: + //_08018680 + if (!(gBattleWeather & WEATHER_RAIN_PERMANENT)) + { + gBattleWeather = (WEATHER_RAIN_PERMANENT | WEATHER_RAIN_TEMPORARY); + b_push_move_exec(BattleScript_DrizzleActivates); + BATTLE_STRUCT->scriptingActive = bank; + effect++; + } + break; + case ABILITY_SAND_STREAM: + //_080186B8 + if (!(gBattleWeather & WEATHER_SANDSTORM_PERMANENT)) + { + gBattleWeather = (WEATHER_SANDSTORM_PERMANENT | WEATHER_SANDSTORM_TEMPORARY); + b_push_move_exec(BattleScript_SandstreamActivates); + BATTLE_STRUCT->scriptingActive = bank; + effect++; + } + break; + case ABILITY_DROUGHT: + //_080186F0 + if (!(gBattleWeather & WEATHER_SUN_PERMANENT)) + { + gBattleWeather = (WEATHER_SUN_PERMANENT | WEATHER_SUN_TEMPORARY); + b_push_move_exec(BattleScript_DroughtActivates); + BATTLE_STRUCT->scriptingActive = bank; + effect++; + } + break; + case ABILITY_INTIMIDATE: + //_08018728 + if (!(gSpecialStatuses[bank].intimidatedPoke)) + { + gStatuses3[bank] |= STATUS3_INTIMIDATE_POKES; + gSpecialStatuses[bank].intimidatedPoke = 1; + } + break; + case ABILITY_FORECAST: + //_0801875C + effect = CastformDataTypeChange(bank); + if (effect != 0) + { + b_push_move_exec(BattleScript_CastformChange); + BATTLE_STRUCT->scriptingActive = bank; + BATTLE_STRUCT->castformToChangeInto = effect - 1; + } + break; + case ABILITY_TRACE: + //_080187A0 + if (!(gSpecialStatuses[bank].traced)) + { + gStatuses3[bank] |= STATUS3_TRACE; + gSpecialStatuses[bank].traced = 1; + } + break; + case ABILITY_CLOUD_NINE: + case ABILITY_AIR_LOCK: + //_080187DC + { + u8 i; + + for (i = 0; i < gNoOfAllBanks; i++) + { + // TODO: i should be in r6 here + //asm("":::"r4","r5"); + effect = CastformDataTypeChange(i); + if (effect != 0) + { + b_push_move_exec(BattleScript_CastformChange); + BATTLE_STRUCT->scriptingActive = i; + BATTLE_STRUCT->castformToChangeInto = effect - 1; + break; + } + } + } + break; + } + break; + case ABILITYEFFECT_ENDTURN: // 1 + //_08018814 + if (gBattleMons[bank].hp != 0) + { + gBankAttacker = bank; + switch (gLastUsedAbility) + { + case ABILITY_RAIN_DISH: + if (WEATHER_HAS_EFFECT && (gBattleWeather & WEATHER_RAIN_ANY) + && gBattleMons[bank].maxHP > gBattleMons[bank].hp) + { + gLastUsedAbility = ABILITY_RAIN_DISH; //why + b_push_move_exec(BattleScript_RainDishActivates); + gBattleMoveDamage = gBattleMons[bank].maxHP / 16; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + gBattleMoveDamage *= -1; + effect++; + } + break; + case ABILITY_SHED_SKIN: + if ((gBattleMons[bank].status1 & STATUS_ANY) && (Random() % 3) == 0) + { + if (gBattleMons[bank].status1 & (STATUS_POISON | STATUS_TOXIC_POISON)) + StringCopy(gBattleTextBuff1, gStatusConditionString_PoisonJpn); + if (gBattleMons[bank].status1 & STATUS_SLEEP) + StringCopy(gBattleTextBuff1, gStatusConditionString_SleepJpn); + if (gBattleMons[bank].status1 & STATUS_PARALYSIS) + StringCopy(gBattleTextBuff1, gStatusConditionString_ParalysisJpn); + if (gBattleMons[bank].status1 & STATUS_BURN) + StringCopy(gBattleTextBuff1, gStatusConditionString_BurnJpn); + if (gBattleMons[bank].status1 & STATUS_FREEZE) + StringCopy(gBattleTextBuff1, gStatusConditionString_IceJpn); + gBattleMons[bank].status1 = 0; + //gBattleMons[bank].status2 &= ~(STATUS2_NIGHTMARE); fixed in Emerald + BATTLE_STRUCT->scriptingActive = gActiveBank = bank; + b_push_move_exec(BattleScript_ShedSkinActivates); + EmitSetAttributes(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[bank].status1); + MarkBufferBankForExecution(gActiveBank); + effect++; + } + break; + case ABILITY_SPEED_BOOST: + if (gBattleMons[bank].statStages[STAT_STAGE_SPEED] < 0xC && gDisableStructs[bank].isFirstTurn != 2) + { + gBattleMons[bank].statStages[STAT_STAGE_SPEED]++; + BATTLE_STRUCT->animArg1 = 0x11; + BATTLE_STRUCT->animArg2 = 0; + b_push_move_exec(BattleScript_SpeedBoostActivates); + BATTLE_STRUCT->scriptingActive = bank; + effect++; + } + break; + case ABILITY_TRUANT: + gDisableStructs[gBankAttacker].truantCounter ^= 1; + break; + } + } + break; + case ABILITYEFFECT_MOVES_BLOCK: // 2 + //_08018A40 + if (gLastUsedAbility == ABILITY_SOUNDPROOF) + { + for (i = 0; gSoundMovesTable[i] != 0xFFFF; i++) + { + if (gSoundMovesTable[i] == move) + break; + } + if (gSoundMovesTable[i] != 0xFFFF) + { + if (gBattleMons[gBankAttacker].status2 & STATUS2_MULTIPLETURNS) + gHitMarker |= HITMARKER_NO_PPDEDUCT; + gBattlescriptCurrInstr = BattleScript_SoundproofProtected; + effect = 1; + } + } + break; + case ABILITYEFFECT_ABSORBING: // 3 + //_08018AD8 + if (move) + { + switch (gLastUsedAbility) + { + case ABILITY_VOLT_ABSORB: + if (moveType == TYPE_ELECTRIC && gBattleMoves[move].power != 0) + { + if (gProtectStructs[gBankAttacker].notFirstStrike) + gBattlescriptCurrInstr = BattleScript_MoveHPDrain; + else + gBattlescriptCurrInstr = BattleScript_MoveHPDrain_PPLoss; + effect = 1; + } + break; + case ABILITY_WATER_ABSORB: + if (moveType == TYPE_WATER && gBattleMoves[move].power != 0) + { + if (gProtectStructs[gBankAttacker].notFirstStrike) + gBattlescriptCurrInstr = BattleScript_MoveHPDrain; + else + gBattlescriptCurrInstr = BattleScript_MoveHPDrain_PPLoss; + effect = 1; + } + break; + case ABILITY_FLASH_FIRE: + if (moveType == TYPE_FIRE && !(gBattleMons[bank].status1 & STATUS_FREEZE)) + { + if (!(ewram17100.arr[bank] & 1)) + { + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + if (gProtectStructs[gBankAttacker].notFirstStrike) + gBattlescriptCurrInstr = BattleScript_FlashFireBoost; + else + gBattlescriptCurrInstr = BattleScript_FlashFireBoost_PPLoss; + ewram17100.arr[bank] |= 1; + effect = 2; + } + else + { + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + if (gProtectStructs[gBankAttacker].notFirstStrike) + gBattlescriptCurrInstr = BattleScript_FlashFireBoost; + else + gBattlescriptCurrInstr = BattleScript_FlashFireBoost_PPLoss; + effect = 2; + } + } + break; + } + if (effect == 1) + { + if (gBattleMons[bank].maxHP == gBattleMons[bank].hp) + { + if ((gProtectStructs[gBankAttacker].notFirstStrike)) + gBattlescriptCurrInstr = BattleScript_MoveHPDrain; + else + gBattlescriptCurrInstr = BattleScript_MoveHPDrain_PPLoss; + } + else + { + gBattleMoveDamage = gBattleMons[bank].maxHP / 4; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + gBattleMoveDamage *= -1; + } + } + } + break; + case ABILITYEFFECT_CONTACT: // 4 + //_08018CF0 + switch (gLastUsedAbility) + { + case ABILITY_COLOR_CHANGE: + //_08018DCC + if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT) + && move != MOVE_STRUGGLE + && gBattleMoves[move].power != 0 + && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special) + && gBattleMons[bank].type1 != moveType + && gBattleMons[bank].type2 != moveType + && gBattleMons[bank].hp != 0) + { + gBattleMons[bank].type1 = moveType; + gBattleMons[bank].type2 = moveType; + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 3; + gBattleTextBuff1[2] = moveType; + gBattleTextBuff1[3] = 0xFF; + b_movescr_stack_push_cursor(); + gBattlescriptCurrInstr = BattleScript_ColorChangeActivates; + effect++; + } + break; + case ABILITY_ROUGH_SKIN: + //_08018E94 + if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT) + && gBattleMons[gBankAttacker].hp != 0 + && !gProtectStructs[gBankAttacker].confusionSelfDmg + && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special) + && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT)) + { + gBattleMoveDamage = gBattleMons[gBankAttacker].maxHP / 16; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + b_movescr_stack_push_cursor(); + gBattlescriptCurrInstr = BattleScript_RoughSkinActivates; + effect++; + } + break; + case ABILITY_EFFECT_SPORE: + //_08018F54 + if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT) + && gBattleMons[gBankAttacker].hp != 0 + && !gProtectStructs[gBankAttacker].confusionSelfDmg + && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special) + && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT) + && (Random() % 10) == 0) + { + do + { + gBattleCommunication[MOVE_EFFECT_BYTE] = Random() & 3; + } while (gBattleCommunication[MOVE_EFFECT_BYTE] == 0); + if (gBattleCommunication[MOVE_EFFECT_BYTE] == 3) + gBattleCommunication[MOVE_EFFECT_BYTE] += 2; + gBattleCommunication[MOVE_EFFECT_BYTE] += 0x40; + b_movescr_stack_push_cursor(); + gBattlescriptCurrInstr = BattleScript_ApplySecondaryEffect; + gHitMarker |= HITMARKER_IGNORE_SAFEGUARD; + effect++; + } + break; + case ABILITY_POISON_POINT: + //_0801904C + if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT) + && gBattleMons[gBankAttacker].hp != 0 + && !gProtectStructs[gBankAttacker].confusionSelfDmg + && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special) + && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT) + && (Random() % 3) == 0) + { + gBattleCommunication[MOVE_EFFECT_BYTE] = 0x42; + b_movescr_stack_push_cursor(); + gBattlescriptCurrInstr = BattleScript_ApplySecondaryEffect; + gHitMarker |= HITMARKER_IGNORE_SAFEGUARD; + effect++; + } + break; + case ABILITY_STATIC: + //_08019128 + if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT) + && gBattleMons[gBankAttacker].hp != 0 + && !gProtectStructs[gBankAttacker].confusionSelfDmg + && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special) + && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT) + && (Random() % 3) == 0) + { + gBattleCommunication[MOVE_EFFECT_BYTE] = 0x45; + b_movescr_stack_push_cursor(); + gBattlescriptCurrInstr = BattleScript_ApplySecondaryEffect; + gHitMarker |= HITMARKER_IGNORE_SAFEGUARD; + effect++; + } + break; + case ABILITY_FLAME_BODY: + //_08019204 + if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT) + && gBattleMons[gBankAttacker].hp != 0 + && !gProtectStructs[gBankAttacker].confusionSelfDmg + && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT) + && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special) + && (Random() % 3) == 0) + { + gBattleCommunication[MOVE_EFFECT_BYTE] = 0x43; + b_movescr_stack_push_cursor(); + gBattlescriptCurrInstr = BattleScript_ApplySecondaryEffect; + gHitMarker |= HITMARKER_IGNORE_SAFEGUARD; + effect++; + } + break; + case ABILITY_CUTE_CHARM: + //_080192E0 + if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT) + && gBattleMons[gBankAttacker].hp != 0 + && !gProtectStructs[gBankAttacker].confusionSelfDmg + && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT) + && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special) + && gBattleMons[gBankTarget].hp != 0 + && (Random() % 3) == 0 + && gBattleMons[gBankAttacker].ability != ABILITY_OBLIVIOUS + && GetGenderFromSpeciesAndPersonality(speciesAtk, pidAtk) != GetGenderFromSpeciesAndPersonality(speciesDef, pidDef) + && !(gBattleMons[gBankAttacker].status2 & STATUS2_INFATUATION) + && GetGenderFromSpeciesAndPersonality(speciesAtk, pidAtk) != 0xFF + && GetGenderFromSpeciesAndPersonality(speciesDef, pidDef) != 0xFF) + { + gBattleMons[gBankAttacker].status2 |= (gBitTable[gBankTarget] << 0x10); + b_movescr_stack_push_cursor(); + gBattlescriptCurrInstr = BattleScript_CuteCharmActivates; + effect++; + } + break; + } + break; + case ABILITYEFFECT_IMMUNITY: // 5 + //_08019448 + { + #define i bank + for (i = 0; i < gNoOfAllBanks; i++) + { + switch (gBattleMons[i].ability) + { + case ABILITY_IMMUNITY: + if (gBattleMons[i].status1 & (STATUS_POISON | STATUS_TOXIC_POISON | 0xF00)) // TODO: what is 0xF00? + { + StringCopy(gBattleTextBuff1, gStatusConditionString_PoisonJpn); + effect = 1; + } + break; + case ABILITY_OWN_TEMPO: + if (gBattleMons[i].status2 & STATUS2_CONFUSION) + { + StringCopy(gBattleTextBuff1, gStatusConditionString_ConfusionJpn); + effect = 2; + } + break; + case ABILITY_LIMBER: + if (gBattleMons[i].status1 & STATUS_PARALYSIS) + { + StringCopy(gBattleTextBuff1, gStatusConditionString_ParalysisJpn); + effect = 1; + } + break; + case ABILITY_INSOMNIA: + case ABILITY_VITAL_SPIRIT: + if (gBattleMons[i].status1 & STATUS_SLEEP) + { + gBattleMons[i].status2 &= ~(STATUS2_NIGHTMARE); + StringCopy(gBattleTextBuff1, gStatusConditionString_SleepJpn); + effect = 1; + } + break; + case ABILITY_WATER_VEIL: + if (gBattleMons[i].status1 & STATUS_BURN) + { + StringCopy(gBattleTextBuff1, gStatusConditionString_BurnJpn); + effect = 1; + } + break; + case ABILITY_MAGMA_ARMOR: + if (gBattleMons[i].status1 & STATUS_FREEZE) + { + StringCopy(gBattleTextBuff1, gStatusConditionString_IceJpn); + effect = 1; + } + break; + case ABILITY_OBLIVIOUS: + if (gBattleMons[i].status2 & STATUS2_INFATUATION) + { + StringCopy(gBattleTextBuff1, gStatusConditionString_LoveJpn); + effect = 3; + } + break; + } + if (effect) + { + switch (effect) + { + case 1: // status cleared + gBattleMons[i].status1 = 0; + break; + case 2: // get rid of confusion + gBattleMons[i].status2 &= ~(STATUS2_CONFUSION); + break; + case 3: // get rid of infatuation + gBattleMons[i].status2 &= ~(STATUS2_INFATUATION); + break; + } + b_movescr_stack_push_cursor(); + gBattlescriptCurrInstr = gUnknown_081D9956; + BATTLE_STRUCT->scriptingActive = i; + gActiveBank = i; + EmitSetAttributes(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBank].status1); + MarkBufferBankForExecution(gActiveBank); + return effect; + } + } + #undef i + } + break; + case ABILITYEFFECT_FORECAST: // 6 + //_080197B4 + { + #define i bank + for (i = 0; i < gNoOfAllBanks; i++) + { + if (gBattleMons[i].ability == ABILITY_FORECAST) + { + effect = CastformDataTypeChange(i); + if (effect) + { + b_push_move_exec(BattleScript_CastformChange); + BATTLE_STRUCT->scriptingActive = i; + BATTLE_STRUCT->castformToChangeInto = effect - 1; + return effect; + } + } + } + #undef i + } + break; + case ABILITYEFFECT_SYNCHRONIZE: // 7 + //_08019804 + if (gLastUsedAbility == ABILITY_SYNCHRONIZE && (gHitMarker & HITMARKER_SYNCHRONISE_EFFECT)) + { + gHitMarker &= ~(HITMARKER_SYNCHRONISE_EFFECT); + BATTLE_STRUCT->synchroniseEffect &= 0x3F; + if (BATTLE_STRUCT->synchroniseEffect == 6) + BATTLE_STRUCT->synchroniseEffect = 2; + gBattleCommunication[MOVE_EFFECT_BYTE] = BATTLE_STRUCT->synchroniseEffect + 0x40; + BATTLE_STRUCT->scriptingActive = gBankTarget; + b_movescr_stack_push_cursor(); + gBattlescriptCurrInstr = BattleScript_SynchronizeActivates; + gHitMarker |= HITMARKER_IGNORE_SAFEGUARD; + effect++; + } + break; + case ABILITYEFFECT_ATK_SYNCHRONIZE: // 8 + //_08019880 + if (gLastUsedAbility == ABILITY_SYNCHRONIZE && (gHitMarker & HITMARKER_SYNCHRONISE_EFFECT)) + { + gHitMarker &= ~(HITMARKER_SYNCHRONISE_EFFECT); + BATTLE_STRUCT->synchroniseEffect &= 0x3F; + if (BATTLE_STRUCT->synchroniseEffect == 6) + BATTLE_STRUCT->synchroniseEffect = 2; + gBattleCommunication[MOVE_EFFECT_BYTE] = BATTLE_STRUCT->synchroniseEffect; + BATTLE_STRUCT->scriptingActive = gBankAttacker; + b_movescr_stack_push_cursor(); + gBattlescriptCurrInstr = BattleScript_SynchronizeActivates; + gHitMarker |= HITMARKER_IGNORE_SAFEGUARD; + effect++; + } + break; + case ABILITYEFFECT_INTIMIDATE1: // 9 + //_080198FC + for (i = 0; i < gNoOfAllBanks; i++) + { + if (gBattleMons[i].ability == ABILITY_INTIMIDATE && gStatuses3[i] & STATUS3_INTIMIDATE_POKES) + { + gLastUsedAbility = ABILITY_INTIMIDATE; + gStatuses3[i] &= ~(STATUS3_INTIMIDATE_POKES); + b_push_move_exec(gUnknown_081D978C); + BATTLE_STRUCT->intimidateBank = i; + effect++; + break; + } + } + break; + case ABILITYEFFECT_TRACE: // 11 + //_08019940 + for (i = 0; i < gNoOfAllBanks; i++) + { + if (gBattleMons[i].ability == ABILITY_TRACE && (gStatuses3[i] & STATUS3_TRACE)) + { + u8 opposite = (GetBankIdentity(i) ^ 1) & 1; + u8 target1 = GetBankByPlayerAI(opposite); + u8 target2 = GetBankByPlayerAI(opposite + 2); + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + { + if (gBattleMons[target1].ability != 0 && gBattleMons[target1].hp != 0 + && gBattleMons[target2].ability != 0 && gBattleMons[target2].hp != 0) + { + //_080199AE + gActiveBank = GetBankByPlayerAI(((Random() & 1) * 2) | opposite); + gBattleMons[i].ability = gBattleMons[gActiveBank].ability; + gLastUsedAbility = gBattleMons[gActiveBank].ability; + effect++; + } + else if (gBattleMons[target1].ability != 0 && gBattleMons[target1].hp != 0) + { + //_08019A34 + gActiveBank = target1; + gBattleMons[i].ability = gBattleMons[gActiveBank].ability; + gLastUsedAbility = gBattleMons[gActiveBank].ability; + effect++; + } + else if (gBattleMons[target2].ability != 0 && gBattleMons[target2].hp != 0) + { + //_08019A78 + gActiveBank = target2; + gBattleMons[i].ability = gBattleMons[gActiveBank].ability; + gLastUsedAbility = gBattleMons[gActiveBank].ability; + effect++; + } + } + else + //_08019ABC + { + gActiveBank = target1; + if (gBattleMons[target1].ability && gBattleMons[target1].hp) + { + gBattleMons[i].ability = gBattleMons[target1].ability; + gLastUsedAbility = gBattleMons[target1].ability; + effect++; + } + } + if (effect) + { + b_push_move_exec(BattleScript_TraceActivates); + gStatuses3[i] &= ~(STATUS3_TRACE); + BATTLE_STRUCT->scriptingActive = i; + + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 4; + gBattleTextBuff1[2] = gActiveBank; + gBattleTextBuff1[3] = gBattlePartyID[gActiveBank]; + gBattleTextBuff1[4] = EOS; + + gBattleTextBuff2[0] = 0xFD; + gBattleTextBuff2[1] = 9; + gBattleTextBuff2[2] = gLastUsedAbility; + gBattleTextBuff2[3] = EOS; + break; + } + } + } + break; + case ABILITYEFFECT_INTIMIDATE2: // 10 + //_08019B1C + for (i = 0; i < gNoOfAllBanks; i++) + { + if (gBattleMons[i].ability == ABILITY_INTIMIDATE && (gStatuses3[i] & STATUS3_INTIMIDATE_POKES)) + { + gLastUsedAbility = ABILITY_INTIMIDATE; + gStatuses3[i] &= ~(STATUS3_INTIMIDATE_POKES); + b_movescr_stack_push_cursor(); + gBattlescriptCurrInstr = gUnknown_081D9795; + BATTLE_STRUCT->intimidateBank = i; + effect++; + break; + } + } + break; + case ABILITYEFFECT_CHECK_OTHER_SIDE: // 12 + //_08019B60 + side = GetBankSide(bank); + for (i = 0; i < gNoOfAllBanks; i++) + { + if (GetBankSide(i) != side && gBattleMons[i].ability == ability) + { + gLastUsedAbility = ability; + effect = i + 1; + } + } + break; + case ABILITYEFFECT_CHECK_BANK_SIDE: // 13 + //_08019BBC + side = GetBankSide(bank); + for (i = 0; i < gNoOfAllBanks; i++) + { + if (GetBankSide(i) == side && gBattleMons[i].ability == ability) + { + gLastUsedAbility = ability; + effect = i + 1; + } + } + break; + case ABILITYEFFECT_FIELD_SPORT: // 14 + //_08019C18 + switch (gLastUsedAbility) + { + case 0xFD: + for (i = 0; i < gNoOfAllBanks; i++) + { + if (gStatuses3[i] & STATUS3_MUDSPORT) + effect = i + 1; + } + break; + case 0xFE: + for (i = 0; i < gNoOfAllBanks; i++) + { + if (gStatuses3[i] & STATUS3_WATERSPORT) + effect = i + 1; + } + break; + default: + for (i = 0; i < gNoOfAllBanks; i++) + { + if (gBattleMons[i].ability == ability) + { + gLastUsedAbility = ability; + effect = i + 1; + } + } + break; + } + break; + case ABILITYEFFECT_CHECK_ON_FIELD: // 19 + //_08019CD4 + for (i = 0; i < gNoOfAllBanks; i++) + { + if (gBattleMons[i].ability == ability && gBattleMons[i].hp != 0) + { + gLastUsedAbility = ability; + effect = i + 1; + } + } + break; + case ABILITYEFFECT_CHECK_FIELD_EXCEPT_BANK: // 15 + //_08019D18 + for (i = 0; i < gNoOfAllBanks; i++) + { + if (gBattleMons[i].ability == ability && i != bank) + { + gLastUsedAbility = ability; + effect = i + 1; + } + } + break; + case ABILITYEFFECT_COUNT_OTHER_SIZE: // 16 + //_08019D5C + side = GetBankSide(bank); + for (i = 0; i < gNoOfAllBanks; i++) + { + if (GetBankSide(i) != side && gBattleMons[i].ability == ability) + { + gLastUsedAbility = ability; + effect++; + } + } + break; + case ABILITYEFFECT_COUNT_BANK_SIDE: // 17 + //_08019DB8 + side = GetBankSide(bank); + for (i = 0; i < gNoOfAllBanks; i++) + { + if (GetBankSide(i) == side && gBattleMons[i].ability == ability) + { + gLastUsedAbility = ability; + effect++; + } + } + break; + case ABILITYEFFECT_COUNT_ON_FIELD: // 18 + //_08019F44 + for (i = 0; i < gNoOfAllBanks; i++) + { + if (gBattleMons[i].ability == ability && i != bank) + { + gLastUsedAbility = ability; + effect++; + } + } + break; + } + //_08019F76 + if (effect && caseID < 0xC && gLastUsedAbility != 0xFF) + RecordAbilityBattle(bank, gLastUsedAbility); + } + + return effect; +} + +#else +__attribute__((naked)) +u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + sub sp, 0x28\n\ + ldr r4, [sp, 0x48]\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + str r0, [sp, 0x4]\n\ + lsls r1, 24\n\ + lsrs r1, 24\n\ + mov r10, r1\n\ + lsls r2, 24\n\ + lsrs r6, r2, 24\n\ + lsls r3, 24\n\ + lsrs r3, 24\n\ + mov r8, r3\n\ + lsls r4, 16\n\ + lsrs r4, 16\n\ + movs r0, 0\n\ + mov r9, r0\n\ + ldr r5, _08018380 @ =gBankAttacker\n\ + ldr r1, _08018384 @ =gNoOfAllBanks\n\ + ldrb r0, [r5]\n\ + ldrb r1, [r1]\n\ + cmp r0, r1\n\ + bcc _08018360\n\ + mov r1, r10\n\ + strb r1, [r5]\n\ +_08018360:\n\ + ldrb r0, [r5]\n\ + bl GetBankSide\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + bne _08018390\n\ + ldr r1, _08018388 @ =gBattlePartyID\n\ + ldrb r0, [r5]\n\ + lsls r0, 1\n\ + adds r0, r1\n\ + ldrh r1, [r0]\n\ + movs r0, 0x64\n\ + muls r1, r0\n\ + ldr r0, _0801838C @ =gPlayerParty\n\ + b _080183A0\n\ + .align 2, 0\n\ +_08018380: .4byte gBankAttacker\n\ +_08018384: .4byte gNoOfAllBanks\n\ +_08018388: .4byte gBattlePartyID\n\ +_0801838C: .4byte gPlayerParty\n\ +_08018390:\n\ + ldr r1, _080183D0 @ =gBattlePartyID\n\ + ldrb r0, [r5]\n\ + lsls r0, 1\n\ + adds r0, r1\n\ + ldrh r1, [r0]\n\ + movs r0, 0x64\n\ + muls r1, r0\n\ + ldr r0, _080183D4 @ =gEnemyParty\n\ +_080183A0:\n\ + adds r7, r1, r0\n\ + ldr r5, _080183D8 @ =gBankTarget\n\ + ldr r1, _080183DC @ =gNoOfAllBanks\n\ + ldrb r0, [r5]\n\ + ldrb r1, [r1]\n\ + cmp r0, r1\n\ + bcc _080183B2\n\ + mov r2, r10\n\ + strb r2, [r5]\n\ +_080183B2:\n\ + ldrb r0, [r5]\n\ + bl GetBankSide\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + bne _080183E4\n\ + ldr r1, _080183D0 @ =gBattlePartyID\n\ + ldrb r0, [r5]\n\ + lsls r0, 1\n\ + adds r0, r1\n\ + ldrh r1, [r0]\n\ + movs r0, 0x64\n\ + muls r1, r0\n\ + ldr r0, _080183E0 @ =gPlayerParty\n\ + b _080183F4\n\ + .align 2, 0\n\ +_080183D0: .4byte gBattlePartyID\n\ +_080183D4: .4byte gEnemyParty\n\ +_080183D8: .4byte gBankTarget\n\ +_080183DC: .4byte gNoOfAllBanks\n\ +_080183E0: .4byte gPlayerParty\n\ +_080183E4:\n\ + ldr r1, _08018444 @ =gBattlePartyID\n\ + ldrb r0, [r5]\n\ + lsls r0, 1\n\ + adds r0, r1\n\ + ldrh r1, [r0]\n\ + movs r0, 0x64\n\ + muls r1, r0\n\ + ldr r0, _08018448 @ =gEnemyParty\n\ +_080183F4:\n\ + adds r5, r1, r0\n\ + adds r0, r7, 0\n\ + movs r1, 0xB\n\ + bl GetMonData\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + str r0, [sp, 0x8]\n\ + adds r0, r7, 0\n\ + movs r1, 0\n\ + bl GetMonData\n\ + str r0, [sp, 0x10]\n\ + adds r0, r5, 0\n\ + movs r1, 0xB\n\ + bl GetMonData\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + str r0, [sp, 0xC]\n\ + adds r0, r5, 0\n\ + movs r1, 0\n\ + bl GetMonData\n\ + str r0, [sp, 0x14]\n\ + ldr r0, _0801844C @ =gBattleTypeFlags\n\ + ldrh r1, [r0]\n\ + movs r0, 0x80\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _08018436\n\ + bl _08019F92\n\ +_08018436:\n\ + mov r3, r8\n\ + cmp r3, 0\n\ + beq _08018454\n\ + ldr r0, _08018450 @ =gLastUsedAbility\n\ + strb r3, [r0]\n\ + mov r8, r0\n\ + b _0801846A\n\ + .align 2, 0\n\ +_08018444: .4byte gBattlePartyID\n\ +_08018448: .4byte gEnemyParty\n\ +_0801844C: .4byte gBattleTypeFlags\n\ +_08018450: .4byte gLastUsedAbility\n\ +_08018454:\n\ + ldr r2, _08018474 @ =gLastUsedAbility\n\ + ldr r1, _08018478 @ =gBattleMons\n\ + movs r0, 0x58\n\ + mov r5, r10\n\ + muls r5, r0\n\ + adds r0, r5, 0\n\ + adds r0, r1\n\ + adds r0, 0x20\n\ + ldrb r0, [r0]\n\ + strb r0, [r2]\n\ + mov r8, r2\n\ +_0801846A:\n\ + cmp r4, 0\n\ + beq _0801847C\n\ + adds r3, r4, 0\n\ + b _08018480\n\ + .align 2, 0\n\ +_08018474: .4byte gLastUsedAbility\n\ +_08018478: .4byte gBattleMons\n\ +_0801847C:\n\ + ldr r0, _08018494 @ =gCurrentMove\n\ + ldrh r3, [r0]\n\ +_08018480:\n\ + ldr r1, _08018498 @ =0x02000000\n\ + ldr r2, _0801849C @ =0x0001601c\n\ + adds r0, r1, r2\n\ + ldrb r0, [r0]\n\ + adds r7, r1, 0\n\ + cmp r0, 0\n\ + beq _080184A0\n\ + movs r4, 0x3F\n\ + ands r4, r0\n\ + b _080184AC\n\ + .align 2, 0\n\ +_08018494: .4byte gCurrentMove\n\ +_08018498: .4byte 0x02000000\n\ +_0801849C: .4byte 0x0001601c\n\ +_080184A0:\n\ + ldr r1, _080184C0 @ =gBattleMoves\n\ + lsls r0, r3, 1\n\ + adds r0, r3\n\ + lsls r0, 2\n\ + adds r0, r1\n\ + ldrb r4, [r0, 0x2]\n\ +_080184AC:\n\ + ldr r5, [sp, 0x4]\n\ + cmp r5, 0x13\n\ + bls _080184B6\n\ + bl _08019F76\n\ +_080184B6:\n\ + lsls r0, r5, 2\n\ + ldr r1, _080184C4 @ =_080184C8\n\ + adds r0, r1\n\ + ldr r0, [r0]\n\ + mov pc, r0\n\ + .align 2, 0\n\ +_080184C0: .4byte gBattleMoves\n\ +_080184C4: .4byte _080184C8\n\ + .align 2, 0\n\ +_080184C8:\n\ + .4byte _08018518\n\ + .4byte _08018814\n\ + .4byte _08018A40\n\ + .4byte _08018AD8\n\ + .4byte _08018CF0\n\ + .4byte _08019448\n\ + .4byte _080197B4\n\ + .4byte _08019804\n\ + .4byte _08019880\n\ + .4byte _080198FC\n\ + .4byte _08019B1C\n\ + .4byte _08019940\n\ + .4byte _08019B60\n\ + .4byte _08019BBC\n\ + .4byte _08019C18\n\ + .4byte _08019D18\n\ + .4byte _08019D5C\n\ + .4byte _08019DB8\n\ + .4byte _08019F44\n\ + .4byte _08019CD4\n\ +_08018518:\n\ + ldr r2, _0801854C @ =gBankAttacker\n\ + ldr r0, _08018550 @ =gNoOfAllBanks\n\ + ldrb r1, [r2]\n\ + adds r5, r0, 0\n\ + ldrb r0, [r5]\n\ + cmp r1, r0\n\ + bcc _0801852A\n\ + mov r1, r10\n\ + strb r1, [r2]\n\ +_0801852A:\n\ + mov r2, r8\n\ + ldrb r0, [r2]\n\ + cmp r0, 0x2D\n\ + bne _08018534\n\ + b _080186B8\n\ +_08018534:\n\ + cmp r0, 0x2D\n\ + bgt _08018564\n\ + cmp r0, 0xD\n\ + bne _0801853E\n\ + b _080187DC\n\ +_0801853E:\n\ + cmp r0, 0xD\n\ + bgt _08018554\n\ + cmp r0, 0x2\n\ + bne _08018548\n\ + b _08018680\n\ +_08018548:\n\ + bl _08019F76\n\ + .align 2, 0\n\ +_0801854C: .4byte gBankAttacker\n\ +_08018550: .4byte gNoOfAllBanks\n\ +_08018554:\n\ + cmp r0, 0x16\n\ + bne _0801855A\n\ + b _08018728\n\ +_0801855A:\n\ + cmp r0, 0x24\n\ + bne _08018560\n\ + b _080187A0\n\ +_08018560:\n\ + bl _08019F76\n\ +_08018564:\n\ + cmp r0, 0x46\n\ + bne _0801856A\n\ + b _080186F0\n\ +_0801856A:\n\ + cmp r0, 0x46\n\ + bgt _08018578\n\ + cmp r0, 0x3B\n\ + bne _08018574\n\ + b _0801875C\n\ +_08018574:\n\ + bl _08019F76\n\ +_08018578:\n\ + cmp r0, 0x4D\n\ + bne _0801857E\n\ + b _080187DC\n\ +_0801857E:\n\ + cmp r0, 0xFF\n\ + beq _08018586\n\ + bl _08019F76\n\ +_08018586:\n\ + bl weather_get_current\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + subs r0, 0x3\n\ + cmp r0, 0xA\n\ + bhi _0801864C\n\ + lsls r0, 2\n\ + ldr r1, _080185A0 @ =_080185A4\n\ + adds r0, r1\n\ + ldr r0, [r0]\n\ + mov pc, r0\n\ + .align 2, 0\n\ +_080185A0: .4byte _080185A4\n\ + .align 2, 0\n\ +_080185A4:\n\ + .4byte _080185D0\n\ + .4byte _0801864C\n\ + .4byte _080185D0\n\ + .4byte _0801864C\n\ + .4byte _0801864C\n\ + .4byte _080185F8\n\ + .4byte _0801864C\n\ + .4byte _0801864C\n\ + .4byte _0801864C\n\ + .4byte _08018620\n\ + .4byte _080185D0\n\ +_080185D0:\n\ + ldr r2, _080185EC @ =gBattleWeather\n\ + ldrh r1, [r2]\n\ + movs r0, 0x7\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _0801864C\n\ + movs r0, 0x5\n\ + strh r0, [r2]\n\ + ldr r0, _080185F0 @ =0x02000000\n\ + ldr r3, _080185F4 @ =0x000160a4\n\ + adds r2, r0, r3\n\ + movs r1, 0xA\n\ + b _08018638\n\ + .align 2, 0\n\ +_080185EC: .4byte gBattleWeather\n\ +_080185F0: .4byte 0x02000000\n\ +_080185F4: .4byte 0x000160a4\n\ +_080185F8:\n\ + ldr r3, _08018614 @ =gBattleWeather\n\ + ldrh r1, [r3]\n\ + movs r2, 0x18\n\ + adds r0, r2, 0\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _0801864C\n\ + strh r2, [r3]\n\ + ldr r0, _08018618 @ =0x02000000\n\ + ldr r3, _0801861C @ =0x000160a4\n\ + adds r2, r0, r3\n\ + movs r1, 0xC\n\ + b _08018638\n\ + .align 2, 0\n\ +_08018614: .4byte gBattleWeather\n\ +_08018618: .4byte 0x02000000\n\ +_0801861C: .4byte 0x000160a4\n\ +_08018620:\n\ + ldr r3, _08018668 @ =gBattleWeather\n\ + ldrh r1, [r3]\n\ + movs r2, 0x60\n\ + adds r0, r2, 0\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _0801864C\n\ + strh r2, [r3]\n\ + ldr r0, _0801866C @ =0x02000000\n\ + ldr r3, _08018670 @ =0x000160a4\n\ + adds r2, r0, r3\n\ + movs r1, 0xB\n\ +_08018638:\n\ + strb r1, [r2]\n\ + ldr r5, _08018674 @ =0x00016003\n\ + adds r0, r5\n\ + mov r1, r10\n\ + strb r1, [r0]\n\ + mov r0, r9\n\ + adds r0, 0x1\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + mov r9, r0\n\ +_0801864C:\n\ + mov r2, r9\n\ + cmp r2, 0\n\ + bne _08018656\n\ + bl _08019F92\n\ +_08018656:\n\ + bl weather_get_current\n\ + ldr r1, _08018678 @ =gBattleCommunication\n\ + strb r0, [r1, 0x5]\n\ + ldr r0, _0801867C @ =gUnknown_081D901D\n\ + bl b_push_move_exec\n\ + bl _08019F76\n\ + .align 2, 0\n\ +_08018668: .4byte gBattleWeather\n\ +_0801866C: .4byte 0x02000000\n\ +_08018670: .4byte 0x000160a4\n\ +_08018674: .4byte 0x00016003\n\ +_08018678: .4byte gBattleCommunication\n\ +_0801867C: .4byte gUnknown_081D901D\n\ +_08018680:\n\ + ldr r2, _080186A8 @ =gBattleWeather\n\ + ldrh r1, [r2]\n\ + movs r0, 0x4\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _08018690\n\ + bl _08019F76\n\ +_08018690:\n\ + movs r0, 0x5\n\ + strh r0, [r2]\n\ + ldr r0, _080186AC @ =BattleScript_DrizzleActivates\n\ + bl b_push_move_exec\n\ + ldr r0, _080186B0 @ =0x02000000\n\ + ldr r3, _080186B4 @ =0x00016003\n\ + adds r0, r3\n\ + mov r5, r10\n\ + strb r5, [r0]\n\ + bl _08019F22\n\ + .align 2, 0\n\ +_080186A8: .4byte gBattleWeather\n\ +_080186AC: .4byte BattleScript_DrizzleActivates\n\ +_080186B0: .4byte 0x02000000\n\ +_080186B4: .4byte 0x00016003\n\ +_080186B8:\n\ + ldr r2, _080186E0 @ =gBattleWeather\n\ + ldrh r1, [r2]\n\ + movs r0, 0x10\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _080186C8\n\ + bl _08019F76\n\ +_080186C8:\n\ + movs r0, 0x18\n\ + strh r0, [r2]\n\ + ldr r0, _080186E4 @ =BattleScript_SandstreamActivates\n\ + bl b_push_move_exec\n\ + ldr r0, _080186E8 @ =0x02000000\n\ + ldr r1, _080186EC @ =0x00016003\n\ + adds r0, r1\n\ + mov r2, r10\n\ + strb r2, [r0]\n\ + bl _08019F22\n\ + .align 2, 0\n\ +_080186E0: .4byte gBattleWeather\n\ +_080186E4: .4byte BattleScript_SandstreamActivates\n\ +_080186E8: .4byte 0x02000000\n\ +_080186EC: .4byte 0x00016003\n\ +_080186F0:\n\ + ldr r2, _08018718 @ =gBattleWeather\n\ + ldrh r1, [r2]\n\ + movs r0, 0x40\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _08018700\n\ + bl _08019F76\n\ +_08018700:\n\ + movs r0, 0x60\n\ + strh r0, [r2]\n\ + ldr r0, _0801871C @ =BattleScript_DroughtActivates\n\ + bl b_push_move_exec\n\ + ldr r0, _08018720 @ =0x02000000\n\ + ldr r3, _08018724 @ =0x00016003\n\ + adds r0, r3\n\ + mov r5, r10\n\ + strb r5, [r0]\n\ + bl _08019F22\n\ + .align 2, 0\n\ +_08018718: .4byte gBattleWeather\n\ +_0801871C: .4byte BattleScript_DroughtActivates\n\ +_08018720: .4byte 0x02000000\n\ +_08018724: .4byte 0x00016003\n\ +_08018728:\n\ + ldr r0, _08018754 @ =gSpecialStatuses\n\ + mov r1, r10\n\ + lsls r2, r1, 2\n\ + adds r1, r2, r1\n\ + lsls r1, 2\n\ + adds r3, r1, r0\n\ + ldrb r0, [r3]\n\ + lsls r0, 28\n\ + cmp r0, 0\n\ + bge _08018740\n\ + bl _08019F76\n\ +_08018740:\n\ + ldr r1, _08018758 @ =gStatuses3\n\ + adds r1, r2, r1\n\ + ldr r0, [r1]\n\ + movs r2, 0x80\n\ + lsls r2, 12\n\ + orrs r0, r2\n\ + str r0, [r1]\n\ + ldrb r0, [r3]\n\ + movs r1, 0x8\n\ + b _080187CA\n\ + .align 2, 0\n\ +_08018754: .4byte gSpecialStatuses\n\ +_08018758: .4byte gStatuses3\n\ +_0801875C:\n\ + mov r0, r10\n\ + bl CastformDataTypeChange\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + mov r9, r0\n\ + cmp r0, 0\n\ + bne _08018770\n\ + bl _08019F92\n\ +_08018770:\n\ + ldr r0, _08018790 @ =BattleScript_CastformChange\n\ + bl b_push_move_exec\n\ + ldr r0, _08018794 @ =0x02000000\n\ + ldr r2, _08018798 @ =0x00016003\n\ + adds r1, r0, r2\n\ + mov r3, r10\n\ + strb r3, [r1]\n\ + mov r1, r9\n\ + subs r1, 0x1\n\ + ldr r5, _0801879C @ =0x0001609b\n\ + adds r0, r5\n\ + strb r1, [r0]\n\ + bl _08019F76\n\ + .align 2, 0\n\ +_08018790: .4byte BattleScript_CastformChange\n\ +_08018794: .4byte 0x02000000\n\ +_08018798: .4byte 0x00016003\n\ +_0801879C: .4byte 0x0001609b\n\ +_080187A0:\n\ + ldr r0, _080187D4 @ =gSpecialStatuses\n\ + mov r1, r10\n\ + lsls r2, r1, 2\n\ + adds r1, r2, r1\n\ + lsls r1, 2\n\ + adds r3, r1, r0\n\ + ldrb r0, [r3]\n\ + lsls r0, 27\n\ + cmp r0, 0\n\ + bge _080187B8\n\ + bl _08019F76\n\ +_080187B8:\n\ + ldr r1, _080187D8 @ =gStatuses3\n\ + adds r1, r2, r1\n\ + ldr r0, [r1]\n\ + movs r2, 0x80\n\ + lsls r2, 13\n\ + orrs r0, r2\n\ + str r0, [r1]\n\ + ldrb r0, [r3]\n\ + movs r1, 0x10\n\ +_080187CA:\n\ + orrs r0, r1\n\ + strb r0, [r3]\n\ + bl _08019F76\n\ + .align 2, 0\n\ +_080187D4: .4byte gSpecialStatuses\n\ +_080187D8: .4byte gStatuses3\n\ +_080187DC:\n\ + movs r6, 0\n\ + ldrb r5, [r5]\n\ + cmp r6, r5\n\ + bcc _080187E8\n\ + bl _08019F76\n\ +_080187E8:\n\ + adds r0, r6, 0\n\ + bl CastformDataTypeChange\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + mov r9, r0\n\ + cmp r0, 0\n\ + beq _080187FC\n\ + bl _08019E14\n\ +_080187FC:\n\ + adds r0, r6, 0x1\n\ + lsls r0, 24\n\ + lsrs r6, r0, 24\n\ + ldr r0, _08018810 @ =gNoOfAllBanks\n\ + ldrb r0, [r0]\n\ + cmp r6, r0\n\ + bcc _080187E8\n\ + bl _08019F76\n\ + .align 2, 0\n\ +_08018810: .4byte gNoOfAllBanks\n\ +_08018814:\n\ + ldr r2, _08018844 @ =gBattleMons\n\ + movs r0, 0x58\n\ + mov r1, r10\n\ + muls r1, r0\n\ + adds r4, r1, r2\n\ + ldrh r0, [r4, 0x28]\n\ + cmp r0, 0\n\ + bne _08018828\n\ + bl _08019F76\n\ +_08018828:\n\ + ldr r0, _08018848 @ =gBankAttacker\n\ + mov r3, r10\n\ + strb r3, [r0]\n\ + mov r3, r8\n\ + ldrb r5, [r3]\n\ + cmp r5, 0x2C\n\ + beq _0801885A\n\ + cmp r5, 0x2C\n\ + bgt _0801884C\n\ + cmp r5, 0x3\n\ + bne _08018840\n\ + b _080189B8\n\ +_08018840:\n\ + bl _08019F76\n\ + .align 2, 0\n\ +_08018844: .4byte gBattleMons\n\ +_08018848: .4byte gBankAttacker\n\ +_0801884C:\n\ + cmp r5, 0x36\n\ + bne _08018852\n\ + b _08018A18\n\ +_08018852:\n\ + cmp r5, 0x3D\n\ + beq _080188DC\n\ + bl _08019F76\n\ +_0801885A:\n\ + movs r0, 0\n\ + str r0, [sp]\n\ + movs r0, 0x13\n\ + movs r1, 0\n\ + movs r2, 0xD\n\ + movs r3, 0\n\ + bl AbilityBattleEffects\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + cmp r0, 0\n\ + beq _08018876\n\ + bl _08019F76\n\ +_08018876:\n\ + str r0, [sp]\n\ + movs r0, 0x13\n\ + movs r1, 0\n\ + movs r2, 0x4D\n\ + movs r3, 0\n\ + bl AbilityBattleEffects\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + beq _0801888E\n\ + bl _08019F76\n\ +_0801888E:\n\ + ldr r0, _080188D0 @ =gBattleWeather\n\ + ldrh r1, [r0]\n\ + movs r0, 0x7\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _0801889E\n\ + bl _08019F76\n\ +_0801889E:\n\ + ldrh r0, [r4, 0x2C]\n\ + ldrh r1, [r4, 0x28]\n\ + cmp r0, r1\n\ + bhi _080188AA\n\ + bl _08019F76\n\ +_080188AA:\n\ + mov r2, r8\n\ + strb r5, [r2]\n\ + ldr r0, _080188D4 @ =BattleScript_RainDishActivates\n\ + bl b_push_move_exec\n\ + ldr r1, _080188D8 @ =gBattleMoveDamage\n\ + ldrh r0, [r4, 0x2C]\n\ + lsrs r0, 4\n\ + str r0, [r1]\n\ + cmp r0, 0\n\ + bne _080188C4\n\ + movs r0, 0x1\n\ + str r0, [r1]\n\ +_080188C4:\n\ + ldr r0, [r1]\n\ + negs r0, r0\n\ + str r0, [r1]\n\ + bl _08019F22\n\ + .align 2, 0\n\ +_080188D0: .4byte gBattleWeather\n\ +_080188D4: .4byte BattleScript_RainDishActivates\n\ +_080188D8: .4byte gBattleMoveDamage\n\ +_080188DC:\n\ + adds r0, r2, 0\n\ + adds r0, 0x4C\n\ + adds r5, r1, r0\n\ + ldrb r0, [r5]\n\ + cmp r0, 0\n\ + bne _080188EC\n\ + bl _08019F76\n\ +_080188EC:\n\ + bl Random\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + movs r1, 0x3\n\ + bl __umodsi3\n\ + lsls r0, 16\n\ + lsrs r4, r0, 16\n\ + cmp r4, 0\n\ + beq _08018906\n\ + bl _08019F76\n\ +_08018906:\n\ + ldr r0, [r5]\n\ + movs r1, 0x88\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _08018918\n\ + ldr r0, _08018990 @ =gBattleTextBuff1\n\ + ldr r1, _08018994 @ =gStatusConditionString_PoisonJpn\n\ + bl StringCopy\n\ +_08018918:\n\ + ldr r0, [r5]\n\ + movs r1, 0x7\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _0801892A\n\ + ldr r0, _08018990 @ =gBattleTextBuff1\n\ + ldr r1, _08018998 @ =gStatusConditionString_SleepJpn\n\ + bl StringCopy\n\ +_0801892A:\n\ + ldr r0, [r5]\n\ + movs r1, 0x40\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _0801893C\n\ + ldr r0, _08018990 @ =gBattleTextBuff1\n\ + ldr r1, _0801899C @ =gStatusConditionString_ParalysisJpn\n\ + bl StringCopy\n\ +_0801893C:\n\ + ldr r0, [r5]\n\ + movs r1, 0x10\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _0801894E\n\ + ldr r0, _08018990 @ =gBattleTextBuff1\n\ + ldr r1, _080189A0 @ =gStatusConditionString_BurnJpn\n\ + bl StringCopy\n\ +_0801894E:\n\ + ldr r0, [r5]\n\ + movs r1, 0x20\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _08018960\n\ + ldr r0, _08018990 @ =gBattleTextBuff1\n\ + ldr r1, _080189A4 @ =gStatusConditionString_IceJpn\n\ + bl StringCopy\n\ +_08018960:\n\ + str r4, [r5]\n\ + ldr r0, _080189A8 @ =0x02000000\n\ + ldr r4, _080189AC @ =gActiveBank\n\ + mov r3, r10\n\ + strb r3, [r4]\n\ + ldr r1, _080189B0 @ =0x00016003\n\ + adds r0, r1\n\ + strb r3, [r0]\n\ + ldr r0, _080189B4 @ =BattleScript_ShedSkinActivates\n\ + bl b_push_move_exec\n\ + str r5, [sp]\n\ + movs r0, 0\n\ + movs r1, 0x28\n\ + movs r2, 0\n\ + movs r3, 0x4\n\ + bl EmitSetAttributes\n\ + ldrb r0, [r4]\n\ + bl MarkBufferBankForExecution\n\ + bl _08019F22\n\ + .align 2, 0\n\ +_08018990: .4byte gBattleTextBuff1\n\ +_08018994: .4byte gStatusConditionString_PoisonJpn\n\ +_08018998: .4byte gStatusConditionString_SleepJpn\n\ +_0801899C: .4byte gStatusConditionString_ParalysisJpn\n\ +_080189A0: .4byte gStatusConditionString_BurnJpn\n\ +_080189A4: .4byte gStatusConditionString_IceJpn\n\ +_080189A8: .4byte 0x02000000\n\ +_080189AC: .4byte gActiveBank\n\ +_080189B0: .4byte 0x00016003\n\ +_080189B4: .4byte BattleScript_ShedSkinActivates\n\ +_080189B8:\n\ + ldrb r2, [r4, 0x1B]\n\ + movs r0, 0x1B\n\ + ldrsb r0, [r4, r0]\n\ + cmp r0, 0xB\n\ + ble _080189C6\n\ + bl _08019F76\n\ +_080189C6:\n\ + ldr r0, _08018A04 @ =gDisableStructs\n\ + mov r3, r10\n\ + lsls r1, r3, 3\n\ + subs r1, r3\n\ + lsls r1, 2\n\ + adds r1, r0\n\ + ldrb r0, [r1, 0x16]\n\ + cmp r0, 0x2\n\ + bne _080189DC\n\ + bl _08019F76\n\ +_080189DC:\n\ + adds r0, r2, 0x1\n\ + movs r2, 0\n\ + strb r0, [r4, 0x1B]\n\ + ldr r5, _08018A08 @ =0x000160a4\n\ + adds r1, r7, r5\n\ + movs r0, 0x11\n\ + strb r0, [r1]\n\ + ldr r1, _08018A0C @ =0x000160a5\n\ + adds r0, r7, r1\n\ + strb r2, [r0]\n\ + ldr r0, _08018A10 @ =BattleScript_SpeedBoostActivates\n\ + bl b_push_move_exec\n\ + ldr r2, _08018A14 @ =0x00016003\n\ + adds r0, r7, r2\n\ + mov r3, r10\n\ + strb r3, [r0]\n\ + bl _08019F22\n\ + .align 2, 0\n\ +_08018A04: .4byte gDisableStructs\n\ +_08018A08: .4byte 0x000160a4\n\ +_08018A0C: .4byte 0x000160a5\n\ +_08018A10: .4byte BattleScript_SpeedBoostActivates\n\ +_08018A14: .4byte 0x00016003\n\ +_08018A18:\n\ + ldr r2, _08018A3C @ =gDisableStructs\n\ + ldrb r0, [r0]\n\ + lsls r1, r0, 3\n\ + subs r1, r0\n\ + lsls r1, 2\n\ + adds r1, r2\n\ + ldrb r3, [r1, 0x18]\n\ + lsls r0, r3, 31\n\ + lsrs r0, 31\n\ + movs r2, 0x1\n\ + eors r2, r0\n\ + movs r0, 0x2\n\ + negs r0, r0\n\ + ands r0, r3\n\ + orrs r0, r2\n\ + strb r0, [r1, 0x18]\n\ + bl _08019F76\n\ + .align 2, 0\n\ +_08018A3C: .4byte gDisableStructs\n\ +_08018A40:\n\ + mov r5, r8\n\ + ldrb r0, [r5]\n\ + cmp r0, 0x2B\n\ + beq _08018A4C\n\ + bl _08019F76\n\ +_08018A4C:\n\ + movs r4, 0\n\ + ldr r0, _08018ABC @ =gSoundMovesTable\n\ + ldrh r2, [r0]\n\ + ldr r5, _08018AC0 @ =0x0000ffff\n\ + adds r1, r0, 0\n\ + cmp r2, r5\n\ + bne _08018A5E\n\ + bl _08019F76\n\ +_08018A5E:\n\ + cmp r2, r3\n\ + beq _08018A76\n\ + adds r2, r1, 0\n\ +_08018A64:\n\ + adds r2, 0x2\n\ + adds r4, 0x1\n\ + ldrh r0, [r2]\n\ + cmp r0, r5\n\ + bne _08018A72\n\ + bl _08019F76\n\ +_08018A72:\n\ + cmp r0, r3\n\ + bne _08018A64\n\ +_08018A76:\n\ + lsls r0, r4, 1\n\ + adds r0, r1\n\ + ldrh r1, [r0]\n\ + ldr r0, _08018AC0 @ =0x0000ffff\n\ + cmp r1, r0\n\ + bne _08018A86\n\ + bl _08019F76\n\ +_08018A86:\n\ + ldr r1, _08018AC4 @ =gBattleMons\n\ + ldr r0, _08018AC8 @ =gBankAttacker\n\ + ldrb r2, [r0]\n\ + movs r0, 0x58\n\ + muls r0, r2\n\ + adds r1, 0x50\n\ + adds r0, r1\n\ + ldr r0, [r0]\n\ + movs r1, 0x80\n\ + lsls r1, 5\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _08018AAC\n\ + ldr r0, _08018ACC @ =gHitMarker\n\ + ldr r1, [r0]\n\ + movs r2, 0x80\n\ + lsls r2, 4\n\ + orrs r1, r2\n\ + str r1, [r0]\n\ +_08018AAC:\n\ + ldr r1, _08018AD0 @ =gBattlescriptCurrInstr\n\ + ldr r0, _08018AD4 @ =BattleScript_SoundproofProtected\n\ + str r0, [r1]\n\ + movs r0, 0x1\n\ + mov r9, r0\n\ + bl _08019F7C\n\ + .align 2, 0\n\ +_08018ABC: .4byte gSoundMovesTable\n\ +_08018AC0: .4byte 0x0000ffff\n\ +_08018AC4: .4byte gBattleMons\n\ +_08018AC8: .4byte gBankAttacker\n\ +_08018ACC: .4byte gHitMarker\n\ +_08018AD0: .4byte gBattlescriptCurrInstr\n\ +_08018AD4: .4byte BattleScript_SoundproofProtected\n\ +_08018AD8:\n\ + cmp r3, 0\n\ + bne _08018AE0\n\ + bl _08019F76\n\ +_08018AE0:\n\ + mov r1, r8\n\ + ldrb r0, [r1]\n\ + cmp r0, 0xB\n\ + beq _08018B50\n\ + cmp r0, 0xB\n\ + bgt _08018AF2\n\ + cmp r0, 0xA\n\ + beq _08018AF8\n\ + b _08018C6A\n\ +_08018AF2:\n\ + cmp r0, 0x12\n\ + beq _08018BA8\n\ + b _08018C6A\n\ +_08018AF8:\n\ + cmp r4, 0xD\n\ + beq _08018AFE\n\ + b _08018C6A\n\ +_08018AFE:\n\ + ldr r0, _08018B28 @ =gBattleMoves\n\ + lsls r1, r3, 1\n\ + adds r1, r3\n\ + lsls r1, 2\n\ + adds r1, r0\n\ + ldrb r0, [r1, 0x1]\n\ + cmp r0, 0\n\ + bne _08018B10\n\ + b _08018C6A\n\ +_08018B10:\n\ + ldr r1, _08018B2C @ =gProtectStructs\n\ + ldr r0, _08018B30 @ =gBankAttacker\n\ + ldrb r0, [r0]\n\ + lsls r0, 4\n\ + adds r0, r1\n\ + ldrb r0, [r0, 0x2]\n\ + lsls r0, 28\n\ + cmp r0, 0\n\ + bge _08018B3C\n\ + ldr r1, _08018B34 @ =gBattlescriptCurrInstr\n\ + ldr r0, _08018B38 @ =BattleScript_MoveHPDrain\n\ + b _08018B40\n\ + .align 2, 0\n\ +_08018B28: .4byte gBattleMoves\n\ +_08018B2C: .4byte gProtectStructs\n\ +_08018B30: .4byte gBankAttacker\n\ +_08018B34: .4byte gBattlescriptCurrInstr\n\ +_08018B38: .4byte BattleScript_MoveHPDrain\n\ +_08018B3C:\n\ + ldr r1, _08018B48 @ =gBattlescriptCurrInstr\n\ + ldr r0, _08018B4C @ =BattleScript_MoveHPDrain_PPLoss\n\ +_08018B40:\n\ + str r0, [r1]\n\ + movs r2, 0x1\n\ + b _08018C68\n\ + .align 2, 0\n\ +_08018B48: .4byte gBattlescriptCurrInstr\n\ +_08018B4C: .4byte BattleScript_MoveHPDrain_PPLoss\n\ +_08018B50:\n\ + cmp r4, 0xB\n\ + beq _08018B56\n\ + b _08018C6A\n\ +_08018B56:\n\ + ldr r0, _08018B80 @ =gBattleMoves\n\ + lsls r1, r3, 1\n\ + adds r1, r3\n\ + lsls r1, 2\n\ + adds r1, r0\n\ + ldrb r0, [r1, 0x1]\n\ + cmp r0, 0\n\ + bne _08018B68\n\ + b _08018C6A\n\ +_08018B68:\n\ + ldr r1, _08018B84 @ =gProtectStructs\n\ + ldr r0, _08018B88 @ =gBankAttacker\n\ + ldrb r0, [r0]\n\ + lsls r0, 4\n\ + adds r0, r1\n\ + ldrb r0, [r0, 0x2]\n\ + lsls r0, 28\n\ + cmp r0, 0\n\ + bge _08018B94\n\ + ldr r1, _08018B8C @ =gBattlescriptCurrInstr\n\ + ldr r0, _08018B90 @ =BattleScript_MoveHPDrain\n\ + b _08018B98\n\ + .align 2, 0\n\ +_08018B80: .4byte gBattleMoves\n\ +_08018B84: .4byte gProtectStructs\n\ +_08018B88: .4byte gBankAttacker\n\ +_08018B8C: .4byte gBattlescriptCurrInstr\n\ +_08018B90: .4byte BattleScript_MoveHPDrain\n\ +_08018B94:\n\ + ldr r1, _08018BA0 @ =gBattlescriptCurrInstr\n\ + ldr r0, _08018BA4 @ =BattleScript_MoveHPDrain_PPLoss\n\ +_08018B98:\n\ + str r0, [r1]\n\ + movs r3, 0x1\n\ + mov r9, r3\n\ + b _08018C6A\n\ + .align 2, 0\n\ +_08018BA0: .4byte gBattlescriptCurrInstr\n\ +_08018BA4: .4byte BattleScript_MoveHPDrain_PPLoss\n\ +_08018BA8:\n\ + cmp r4, 0xA\n\ + bne _08018C6A\n\ + ldr r1, _08018BF4 @ =gBattleMons\n\ + movs r0, 0x58\n\ + mov r5, r10\n\ + muls r5, r0\n\ + adds r0, r5, 0\n\ + adds r1, 0x4C\n\ + adds r0, r1\n\ + ldr r0, [r0]\n\ + movs r1, 0x20\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _08018C6A\n\ + ldr r2, _08018BF8 @ =0x02017100\n\ + mov r0, r10\n\ + lsls r1, r0, 2\n\ + adds r0, r1, r2\n\ + ldr r3, [r0]\n\ + movs r4, 0x1\n\ + ands r3, r4\n\ + adds r5, r1, 0\n\ + cmp r3, 0\n\ + bne _08018C30\n\ + ldr r0, _08018BFC @ =gBattleCommunication\n\ + strb r3, [r0, 0x5]\n\ + ldr r1, _08018C00 @ =gProtectStructs\n\ + ldr r0, _08018C04 @ =gBankAttacker\n\ + ldrb r0, [r0]\n\ + lsls r0, 4\n\ + adds r0, r1\n\ + ldrb r0, [r0, 0x2]\n\ + lsls r0, 28\n\ + cmp r0, 0\n\ + bge _08018C10\n\ + ldr r1, _08018C08 @ =gBattlescriptCurrInstr\n\ + ldr r0, _08018C0C @ =BattleScript_FlashFireBoost\n\ + b _08018C14\n\ + .align 2, 0\n\ +_08018BF4: .4byte gBattleMons\n\ +_08018BF8: .4byte 0x02017100\n\ +_08018BFC: .4byte gBattleCommunication\n\ +_08018C00: .4byte gProtectStructs\n\ +_08018C04: .4byte gBankAttacker\n\ +_08018C08: .4byte gBattlescriptCurrInstr\n\ +_08018C0C: .4byte BattleScript_FlashFireBoost\n\ +_08018C10:\n\ + ldr r1, _08018C28 @ =gBattlescriptCurrInstr\n\ + ldr r0, _08018C2C @ =BattleScript_FlashFireBoost_PPLoss\n\ +_08018C14:\n\ + str r0, [r1]\n\ + adds r0, r5, r2\n\ + ldr r1, [r0]\n\ + movs r2, 0x1\n\ + orrs r1, r2\n\ + str r1, [r0]\n\ + movs r1, 0x2\n\ + mov r9, r1\n\ + b _08018C6A\n\ + .align 2, 0\n\ +_08018C28: .4byte gBattlescriptCurrInstr\n\ +_08018C2C: .4byte BattleScript_FlashFireBoost_PPLoss\n\ +_08018C30:\n\ + ldr r0, _08018C4C @ =gBattleCommunication\n\ + strb r4, [r0, 0x5]\n\ + ldr r1, _08018C50 @ =gProtectStructs\n\ + ldr r0, _08018C54 @ =gBankAttacker\n\ + ldrb r0, [r0]\n\ + lsls r0, 4\n\ + adds r0, r1\n\ + ldrb r0, [r0, 0x2]\n\ + lsls r0, 28\n\ + cmp r0, 0\n\ + bge _08018C60\n\ + ldr r1, _08018C58 @ =gBattlescriptCurrInstr\n\ + ldr r0, _08018C5C @ =BattleScript_FlashFireBoost\n\ + b _08018C64\n\ + .align 2, 0\n\ +_08018C4C: .4byte gBattleCommunication\n\ +_08018C50: .4byte gProtectStructs\n\ +_08018C54: .4byte gBankAttacker\n\ +_08018C58: .4byte gBattlescriptCurrInstr\n\ +_08018C5C: .4byte BattleScript_FlashFireBoost\n\ +_08018C60:\n\ + ldr r1, _08018CA4 @ =gBattlescriptCurrInstr\n\ + ldr r0, _08018CA8 @ =BattleScript_FlashFireBoost_PPLoss\n\ +_08018C64:\n\ + str r0, [r1]\n\ + movs r2, 0x2\n\ +_08018C68:\n\ + mov r9, r2\n\ +_08018C6A:\n\ + mov r3, r9\n\ + cmp r3, 0x1\n\ + beq _08018C74\n\ + bl _08019F76\n\ +_08018C74:\n\ + ldr r1, _08018CAC @ =gBattleMons\n\ + movs r0, 0x58\n\ + mov r5, r10\n\ + muls r5, r0\n\ + adds r0, r5, 0\n\ + adds r1, r0, r1\n\ + ldrh r0, [r1, 0x2C]\n\ + ldrh r2, [r1, 0x28]\n\ + cmp r0, r2\n\ + bne _08018CD0\n\ + ldr r1, _08018CB0 @ =gProtectStructs\n\ + ldr r0, _08018CB4 @ =gBankAttacker\n\ + ldrb r0, [r0]\n\ + lsls r0, 4\n\ + adds r0, r1\n\ + ldrb r0, [r0, 0x2]\n\ + lsls r0, 28\n\ + cmp r0, 0\n\ + bge _08018CBC\n\ + ldr r1, _08018CA4 @ =gBattlescriptCurrInstr\n\ + ldr r0, _08018CB8 @ =BattleScript_MoveHPDrain_FullHP\n\ + str r0, [r1]\n\ + bl _08019F76\n\ + .align 2, 0\n\ +_08018CA4: .4byte gBattlescriptCurrInstr\n\ +_08018CA8: .4byte BattleScript_FlashFireBoost_PPLoss\n\ +_08018CAC: .4byte gBattleMons\n\ +_08018CB0: .4byte gProtectStructs\n\ +_08018CB4: .4byte gBankAttacker\n\ +_08018CB8: .4byte BattleScript_MoveHPDrain_FullHP\n\ +_08018CBC:\n\ + ldr r1, _08018CC8 @ =gBattlescriptCurrInstr\n\ + ldr r0, _08018CCC @ =BattleScript_MoveHPDrain_FullHP_PPLoss\n\ + str r0, [r1]\n\ + bl _08019F76\n\ + .align 2, 0\n\ +_08018CC8: .4byte gBattlescriptCurrInstr\n\ +_08018CCC: .4byte BattleScript_MoveHPDrain_FullHP_PPLoss\n\ +_08018CD0:\n\ + ldr r2, _08018CEC @ =gBattleMoveDamage\n\ + ldrh r0, [r1, 0x2C]\n\ + lsrs r0, 2\n\ + str r0, [r2]\n\ + cmp r0, 0\n\ + bne _08018CE0\n\ + mov r3, r9\n\ + str r3, [r2]\n\ +_08018CE0:\n\ + ldr r0, [r2]\n\ + negs r0, r0\n\ + str r0, [r2]\n\ + bl _08019F76\n\ + .align 2, 0\n\ +_08018CEC: .4byte gBattleMoveDamage\n\ +_08018CF0:\n\ + mov r5, r8\n\ + ldrb r0, [r5]\n\ + subs r0, 0x9\n\ + cmp r0, 0x2F\n\ + bls _08018CFE\n\ + bl _08019F76\n\ +_08018CFE:\n\ + lsls r0, 2\n\ + ldr r1, _08018D08 @ =_08018D0C\n\ + adds r0, r1\n\ + ldr r0, [r0]\n\ + mov pc, r0\n\ + .align 2, 0\n\ +_08018D08: .4byte _08018D0C\n\ + .align 2, 0\n\ +_08018D0C:\n\ + .4byte _08019128\n\ + .4byte _08019F76\n\ + .4byte _08019F76\n\ + .4byte _08019F76\n\ + .4byte _08019F76\n\ + .4byte _08019F76\n\ + .4byte _08019F76\n\ + .4byte _08018DCC\n\ + .4byte _08019F76\n\ + .4byte _08019F76\n\ + .4byte _08019F76\n\ + .4byte _08019F76\n\ + .4byte _08019F76\n\ + .4byte _08019F76\n\ + .4byte _08019F76\n\ + .4byte _08018E94\n\ + .4byte _08019F76\n\ + .4byte _08019F76\n\ + .4byte _08018F54\n\ + .4byte _08019F76\n\ + .4byte _08019F76\n\ + .4byte _08019F76\n\ + .4byte _08019F76\n\ + .4byte _08019F76\n\ + .4byte _08019F76\n\ + .4byte _08019F76\n\ + .4byte _08019F76\n\ + .4byte _08019F76\n\ + .4byte _08019F76\n\ + .4byte _0801904C\n\ + .4byte _08019F76\n\ + .4byte _08019F76\n\ + .4byte _08019F76\n\ + .4byte _08019F76\n\ + .4byte _08019F76\n\ + .4byte _08019F76\n\ + .4byte _08019F76\n\ + .4byte _08019F76\n\ + .4byte _08019F76\n\ + .4byte _08019F76\n\ + .4byte _08019204\n\ + .4byte _08019F76\n\ + .4byte _08019F76\n\ + .4byte _08019F76\n\ + .4byte _08019F76\n\ + .4byte _08019F76\n\ + .4byte _08019F76\n\ + .4byte _080192E0\n\ +_08018DCC:\n\ + ldr r0, _08018E74 @ =gBattleMoveFlags\n\ + ldrb r1, [r0]\n\ + movs r0, 0x29\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _08018DDC\n\ + bl _08019F76\n\ +_08018DDC:\n\ + cmp r3, 0xA5\n\ + bne _08018DE4\n\ + bl _08019F76\n\ +_08018DE4:\n\ + ldr r0, _08018E78 @ =gBattleMoves\n\ + lsls r1, r3, 1\n\ + adds r1, r3\n\ + lsls r1, 2\n\ + adds r1, r0\n\ + ldrb r0, [r1, 0x1]\n\ + cmp r0, 0\n\ + bne _08018DF8\n\ + bl _08019F76\n\ +_08018DF8:\n\ + ldr r2, _08018E7C @ =gSpecialStatuses\n\ + ldr r0, _08018E80 @ =gBankTarget\n\ + ldrb r1, [r0]\n\ + lsls r0, r1, 2\n\ + adds r0, r1\n\ + lsls r1, r0, 2\n\ + adds r0, r2, 0\n\ + adds r0, 0x8\n\ + adds r0, r1, r0\n\ + ldr r0, [r0]\n\ + cmp r0, 0\n\ + bne _08018E20\n\ + adds r0, r2, 0\n\ + adds r0, 0xC\n\ + adds r0, r1, r0\n\ + ldr r0, [r0]\n\ + cmp r0, 0\n\ + bne _08018E20\n\ + bl _08019F76\n\ +_08018E20:\n\ + ldr r1, _08018E84 @ =gBattleMons\n\ + movs r0, 0x58\n\ + mov r2, r10\n\ + muls r2, r0\n\ + adds r0, r2, 0\n\ + adds r1, r0, r1\n\ + adds r3, r1, 0\n\ + adds r3, 0x21\n\ + ldrb r0, [r3]\n\ + cmp r0, r4\n\ + bne _08018E3A\n\ + bl _08019F76\n\ +_08018E3A:\n\ + adds r2, r1, 0\n\ + adds r2, 0x22\n\ + ldrb r0, [r2]\n\ + cmp r0, r4\n\ + bne _08018E48\n\ + bl _08019F76\n\ +_08018E48:\n\ + ldrh r0, [r1, 0x28]\n\ + cmp r0, 0\n\ + bne _08018E52\n\ + bl _08019F76\n\ +_08018E52:\n\ + strb r4, [r3]\n\ + strb r4, [r2]\n\ + ldr r1, _08018E88 @ =gBattleTextBuff1\n\ + movs r0, 0xFD\n\ + strb r0, [r1]\n\ + movs r0, 0x3\n\ + strb r0, [r1, 0x1]\n\ + strb r4, [r1, 0x2]\n\ + movs r0, 0xFF\n\ + strb r0, [r1, 0x3]\n\ + bl b_movescr_stack_push_cursor\n\ + ldr r1, _08018E8C @ =gBattlescriptCurrInstr\n\ + ldr r0, _08018E90 @ =BattleScript_ColorChangeActivates\n\ + str r0, [r1]\n\ + bl _08019F22\n\ + .align 2, 0\n\ +_08018E74: .4byte gBattleMoveFlags\n\ +_08018E78: .4byte gBattleMoves\n\ +_08018E7C: .4byte gSpecialStatuses\n\ +_08018E80: .4byte gBankTarget\n\ +_08018E84: .4byte gBattleMons\n\ +_08018E88: .4byte gBattleTextBuff1\n\ +_08018E8C: .4byte gBattlescriptCurrInstr\n\ +_08018E90: .4byte BattleScript_ColorChangeActivates\n\ +_08018E94:\n\ + ldr r0, _08018F2C @ =gBattleMoveFlags\n\ + ldrb r1, [r0]\n\ + movs r0, 0x29\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _08018EA4\n\ + bl _08019F76\n\ +_08018EA4:\n\ + ldr r1, _08018F30 @ =gBattleMons\n\ + ldr r0, _08018F34 @ =gBankAttacker\n\ + ldrb r2, [r0]\n\ + movs r0, 0x58\n\ + muls r0, r2\n\ + adds r4, r0, r1\n\ + ldrh r0, [r4, 0x28]\n\ + cmp r0, 0\n\ + bne _08018EBA\n\ + bl _08019F76\n\ +_08018EBA:\n\ + ldr r0, _08018F38 @ =gProtectStructs\n\ + lsls r1, r2, 4\n\ + adds r1, r0\n\ + ldrb r0, [r1, 0x1]\n\ + lsls r0, 31\n\ + cmp r0, 0\n\ + beq _08018ECC\n\ + bl _08019F76\n\ +_08018ECC:\n\ + ldr r2, _08018F3C @ =gSpecialStatuses\n\ + ldr r0, _08018F40 @ =gBankTarget\n\ + ldrb r1, [r0]\n\ + lsls r0, r1, 2\n\ + adds r0, r1\n\ + lsls r1, r0, 2\n\ + adds r0, r2, 0\n\ + adds r0, 0x8\n\ + adds r0, r1, r0\n\ + ldr r0, [r0]\n\ + cmp r0, 0\n\ + bne _08018EF4\n\ + adds r0, r2, 0\n\ + adds r0, 0xC\n\ + adds r0, r1, r0\n\ + ldr r0, [r0]\n\ + cmp r0, 0\n\ + bne _08018EF4\n\ + bl _08019F76\n\ +_08018EF4:\n\ + ldr r1, _08018F44 @ =gBattleMoves\n\ + lsls r0, r3, 1\n\ + adds r0, r3\n\ + lsls r0, 2\n\ + adds r0, r1\n\ + ldrb r1, [r0, 0x8]\n\ + movs r2, 0x1\n\ + adds r0, r2, 0\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _08018F0E\n\ + bl _08019F76\n\ +_08018F0E:\n\ + ldr r1, _08018F48 @ =gBattleMoveDamage\n\ + ldrh r0, [r4, 0x2C]\n\ + lsrs r0, 4\n\ + str r0, [r1]\n\ + cmp r0, 0\n\ + bne _08018F1C\n\ + str r2, [r1]\n\ +_08018F1C:\n\ + bl b_movescr_stack_push_cursor\n\ + ldr r1, _08018F4C @ =gBattlescriptCurrInstr\n\ + ldr r0, _08018F50 @ =BattleScript_RoughSkinActivates\n\ + str r0, [r1]\n\ + bl _08019F22\n\ + .align 2, 0\n\ +_08018F2C: .4byte gBattleMoveFlags\n\ +_08018F30: .4byte gBattleMons\n\ +_08018F34: .4byte gBankAttacker\n\ +_08018F38: .4byte gProtectStructs\n\ +_08018F3C: .4byte gSpecialStatuses\n\ +_08018F40: .4byte gBankTarget\n\ +_08018F44: .4byte gBattleMoves\n\ +_08018F48: .4byte gBattleMoveDamage\n\ +_08018F4C: .4byte gBattlescriptCurrInstr\n\ +_08018F50: .4byte BattleScript_RoughSkinActivates\n\ +_08018F54:\n\ + ldr r0, _08019020 @ =gBattleMoveFlags\n\ + ldrb r1, [r0]\n\ + movs r0, 0x29\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _08018F64\n\ + bl _08019F76\n\ +_08018F64:\n\ + ldr r1, _08019024 @ =gBattleMons\n\ + ldr r0, _08019028 @ =gBankAttacker\n\ + ldrb r2, [r0]\n\ + movs r0, 0x58\n\ + muls r0, r2\n\ + adds r0, r1\n\ + ldrh r0, [r0, 0x28]\n\ + cmp r0, 0\n\ + bne _08018F7A\n\ + bl _08019F76\n\ +_08018F7A:\n\ + ldr r0, _0801902C @ =gProtectStructs\n\ + lsls r1, r2, 4\n\ + adds r1, r0\n\ + ldrb r0, [r1, 0x1]\n\ + lsls r0, 31\n\ + cmp r0, 0\n\ + beq _08018F8C\n\ + bl _08019F76\n\ +_08018F8C:\n\ + ldr r2, _08019030 @ =gSpecialStatuses\n\ + ldr r0, _08019034 @ =gBankTarget\n\ + ldrb r1, [r0]\n\ + lsls r0, r1, 2\n\ + adds r0, r1\n\ + lsls r1, r0, 2\n\ + adds r0, r2, 0\n\ + adds r0, 0x8\n\ + adds r0, r1, r0\n\ + ldr r0, [r0]\n\ + cmp r0, 0\n\ + bne _08018FB4\n\ + adds r0, r2, 0\n\ + adds r0, 0xC\n\ + adds r0, r1, r0\n\ + ldr r0, [r0]\n\ + cmp r0, 0\n\ + bne _08018FB4\n\ + bl _08019F76\n\ +_08018FB4:\n\ + ldr r1, _08019038 @ =gBattleMoves\n\ + lsls r0, r3, 1\n\ + adds r0, r3\n\ + lsls r0, 2\n\ + adds r0, r1\n\ + ldrb r1, [r0, 0x8]\n\ + movs r0, 0x1\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _08018FCC\n\ + bl _08019F76\n\ +_08018FCC:\n\ + bl Random\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + movs r1, 0xA\n\ + bl __umodsi3\n\ + lsls r0, 16\n\ + cmp r0, 0\n\ + beq _08018FE4\n\ + bl _08019F76\n\ +_08018FE4:\n\ + ldr r5, _0801903C @ =gBattleCommunication\n\ + movs r4, 0x3\n\ +_08018FE8:\n\ + bl Random\n\ + ands r0, r4\n\ + strb r0, [r5, 0x3]\n\ + cmp r0, 0\n\ + beq _08018FE8\n\ + ldr r1, _0801903C @ =gBattleCommunication\n\ + ldrb r0, [r1, 0x3]\n\ + cmp r0, 0x3\n\ + bne _08019000\n\ + adds r0, 0x2\n\ + strb r0, [r1, 0x3]\n\ +_08019000:\n\ + ldrb r0, [r1, 0x3]\n\ + adds r0, 0x40\n\ + strb r0, [r1, 0x3]\n\ + bl b_movescr_stack_push_cursor\n\ + ldr r1, _08019040 @ =gBattlescriptCurrInstr\n\ + ldr r0, _08019044 @ =BattleScript_ApplySecondaryEffect\n\ + str r0, [r1]\n\ + ldr r2, _08019048 @ =gHitMarker\n\ + ldr r0, [r2]\n\ + movs r1, 0x80\n\ + lsls r1, 6\n\ + orrs r0, r1\n\ + str r0, [r2]\n\ + bl _08019F22\n\ + .align 2, 0\n\ +_08019020: .4byte gBattleMoveFlags\n\ +_08019024: .4byte gBattleMons\n\ +_08019028: .4byte gBankAttacker\n\ +_0801902C: .4byte gProtectStructs\n\ +_08019030: .4byte gSpecialStatuses\n\ +_08019034: .4byte gBankTarget\n\ +_08019038: .4byte gBattleMoves\n\ +_0801903C: .4byte gBattleCommunication\n\ +_08019040: .4byte gBattlescriptCurrInstr\n\ +_08019044: .4byte BattleScript_ApplySecondaryEffect\n\ +_08019048: .4byte gHitMarker\n\ +_0801904C:\n\ + ldr r0, _080190FC @ =gBattleMoveFlags\n\ + ldrb r1, [r0]\n\ + movs r0, 0x29\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _0801905C\n\ + bl _08019F76\n\ +_0801905C:\n\ + ldr r1, _08019100 @ =gBattleMons\n\ + ldr r0, _08019104 @ =gBankAttacker\n\ + ldrb r2, [r0]\n\ + movs r0, 0x58\n\ + muls r0, r2\n\ + adds r0, r1\n\ + ldrh r0, [r0, 0x28]\n\ + cmp r0, 0\n\ + bne _08019072\n\ + bl _08019F76\n\ +_08019072:\n\ + ldr r0, _08019108 @ =gProtectStructs\n\ + lsls r1, r2, 4\n\ + adds r1, r0\n\ + ldrb r0, [r1, 0x1]\n\ + lsls r0, 31\n\ + cmp r0, 0\n\ + beq _08019084\n\ + bl _08019F76\n\ +_08019084:\n\ + ldr r2, _0801910C @ =gSpecialStatuses\n\ + ldr r0, _08019110 @ =gBankTarget\n\ + ldrb r1, [r0]\n\ + lsls r0, r1, 2\n\ + adds r0, r1\n\ + lsls r1, r0, 2\n\ + adds r0, r2, 0\n\ + adds r0, 0x8\n\ + adds r0, r1, r0\n\ + ldr r0, [r0]\n\ + cmp r0, 0\n\ + bne _080190AC\n\ + adds r0, r2, 0\n\ + adds r0, 0xC\n\ + adds r0, r1, r0\n\ + ldr r0, [r0]\n\ + cmp r0, 0\n\ + bne _080190AC\n\ + bl _08019F76\n\ +_080190AC:\n\ + ldr r1, _08019114 @ =gBattleMoves\n\ + lsls r0, r3, 1\n\ + adds r0, r3\n\ + lsls r0, 2\n\ + adds r0, r1\n\ + ldrb r1, [r0, 0x8]\n\ + movs r0, 0x1\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _080190C4\n\ + bl _08019F76\n\ +_080190C4:\n\ + bl Random\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + movs r1, 0x3\n\ + bl __umodsi3\n\ + lsls r0, 16\n\ + cmp r0, 0\n\ + beq _080190DC\n\ + bl _08019F76\n\ +_080190DC:\n\ + ldr r1, _08019118 @ =gBattleCommunication\n\ + movs r0, 0x42\n\ + strb r0, [r1, 0x3]\n\ + bl b_movescr_stack_push_cursor\n\ + ldr r1, _0801911C @ =gBattlescriptCurrInstr\n\ + ldr r0, _08019120 @ =BattleScript_ApplySecondaryEffect\n\ + str r0, [r1]\n\ + ldr r2, _08019124 @ =gHitMarker\n\ + ldr r0, [r2]\n\ + movs r1, 0x80\n\ + lsls r1, 6\n\ + orrs r0, r1\n\ + str r0, [r2]\n\ + bl _08019F22\n\ + .align 2, 0\n\ +_080190FC: .4byte gBattleMoveFlags\n\ +_08019100: .4byte gBattleMons\n\ +_08019104: .4byte gBankAttacker\n\ +_08019108: .4byte gProtectStructs\n\ +_0801910C: .4byte gSpecialStatuses\n\ +_08019110: .4byte gBankTarget\n\ +_08019114: .4byte gBattleMoves\n\ +_08019118: .4byte gBattleCommunication\n\ +_0801911C: .4byte gBattlescriptCurrInstr\n\ +_08019120: .4byte BattleScript_ApplySecondaryEffect\n\ +_08019124: .4byte gHitMarker\n\ +_08019128:\n\ + ldr r0, _080191D8 @ =gBattleMoveFlags\n\ + ldrb r1, [r0]\n\ + movs r0, 0x29\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _08019138\n\ + bl _08019F76\n\ +_08019138:\n\ + ldr r1, _080191DC @ =gBattleMons\n\ + ldr r0, _080191E0 @ =gBankAttacker\n\ + ldrb r2, [r0]\n\ + movs r0, 0x58\n\ + muls r0, r2\n\ + adds r0, r1\n\ + ldrh r0, [r0, 0x28]\n\ + cmp r0, 0\n\ + bne _0801914E\n\ + bl _08019F76\n\ +_0801914E:\n\ + ldr r0, _080191E4 @ =gProtectStructs\n\ + lsls r1, r2, 4\n\ + adds r1, r0\n\ + ldrb r0, [r1, 0x1]\n\ + lsls r0, 31\n\ + cmp r0, 0\n\ + beq _08019160\n\ + bl _08019F76\n\ +_08019160:\n\ + ldr r2, _080191E8 @ =gSpecialStatuses\n\ + ldr r0, _080191EC @ =gBankTarget\n\ + ldrb r1, [r0]\n\ + lsls r0, r1, 2\n\ + adds r0, r1\n\ + lsls r1, r0, 2\n\ + adds r0, r2, 0\n\ + adds r0, 0x8\n\ + adds r0, r1, r0\n\ + ldr r0, [r0]\n\ + cmp r0, 0\n\ + bne _08019188\n\ + adds r0, r2, 0\n\ + adds r0, 0xC\n\ + adds r0, r1, r0\n\ + ldr r0, [r0]\n\ + cmp r0, 0\n\ + bne _08019188\n\ + bl _08019F76\n\ +_08019188:\n\ + ldr r1, _080191F0 @ =gBattleMoves\n\ + lsls r0, r3, 1\n\ + adds r0, r3\n\ + lsls r0, 2\n\ + adds r0, r1\n\ + ldrb r1, [r0, 0x8]\n\ + movs r0, 0x1\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _080191A0\n\ + bl _08019F76\n\ +_080191A0:\n\ + bl Random\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + movs r1, 0x3\n\ + bl __umodsi3\n\ + lsls r0, 16\n\ + cmp r0, 0\n\ + beq _080191B8\n\ + bl _08019F76\n\ +_080191B8:\n\ + ldr r1, _080191F4 @ =gBattleCommunication\n\ + movs r0, 0x45\n\ + strb r0, [r1, 0x3]\n\ + bl b_movescr_stack_push_cursor\n\ + ldr r1, _080191F8 @ =gBattlescriptCurrInstr\n\ + ldr r0, _080191FC @ =BattleScript_ApplySecondaryEffect\n\ + str r0, [r1]\n\ + ldr r2, _08019200 @ =gHitMarker\n\ + ldr r0, [r2]\n\ + movs r1, 0x80\n\ + lsls r1, 6\n\ + orrs r0, r1\n\ + str r0, [r2]\n\ + bl _08019F22\n\ + .align 2, 0\n\ +_080191D8: .4byte gBattleMoveFlags\n\ +_080191DC: .4byte gBattleMons\n\ +_080191E0: .4byte gBankAttacker\n\ +_080191E4: .4byte gProtectStructs\n\ +_080191E8: .4byte gSpecialStatuses\n\ +_080191EC: .4byte gBankTarget\n\ +_080191F0: .4byte gBattleMoves\n\ +_080191F4: .4byte gBattleCommunication\n\ +_080191F8: .4byte gBattlescriptCurrInstr\n\ +_080191FC: .4byte BattleScript_ApplySecondaryEffect\n\ +_08019200: .4byte gHitMarker\n\ +_08019204:\n\ + ldr r0, _080192B4 @ =gBattleMoveFlags\n\ + ldrb r1, [r0]\n\ + movs r0, 0x29\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _08019214\n\ + bl _08019F76\n\ +_08019214:\n\ + ldr r1, _080192B8 @ =gBattleMons\n\ + ldr r0, _080192BC @ =gBankAttacker\n\ + ldrb r2, [r0]\n\ + movs r0, 0x58\n\ + muls r0, r2\n\ + adds r0, r1\n\ + ldrh r0, [r0, 0x28]\n\ + cmp r0, 0\n\ + bne _0801922A\n\ + bl _08019F76\n\ +_0801922A:\n\ + ldr r0, _080192C0 @ =gProtectStructs\n\ + lsls r1, r2, 4\n\ + adds r1, r0\n\ + ldrb r0, [r1, 0x1]\n\ + lsls r0, 31\n\ + cmp r0, 0\n\ + beq _0801923C\n\ + bl _08019F76\n\ +_0801923C:\n\ + ldr r1, _080192C4 @ =gBattleMoves\n\ + lsls r0, r3, 1\n\ + adds r0, r3\n\ + lsls r0, 2\n\ + adds r0, r1\n\ + ldrb r1, [r0, 0x8]\n\ + movs r0, 0x1\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _08019254\n\ + bl _08019F76\n\ +_08019254:\n\ + ldr r2, _080192C8 @ =gSpecialStatuses\n\ + ldr r0, _080192CC @ =gBankTarget\n\ + ldrb r1, [r0]\n\ + lsls r0, r1, 2\n\ + adds r0, r1\n\ + lsls r1, r0, 2\n\ + adds r0, r2, 0\n\ + adds r0, 0x8\n\ + adds r0, r1, r0\n\ + ldr r0, [r0]\n\ + cmp r0, 0\n\ + bne _0801927C\n\ + adds r0, r2, 0\n\ + adds r0, 0xC\n\ + adds r0, r1, r0\n\ + ldr r0, [r0]\n\ + cmp r0, 0\n\ + bne _0801927C\n\ + bl _08019F76\n\ +_0801927C:\n\ + bl Random\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + movs r1, 0x3\n\ + bl __umodsi3\n\ + lsls r0, 16\n\ + cmp r0, 0\n\ + beq _08019294\n\ + bl _08019F76\n\ +_08019294:\n\ + ldr r1, _080192D0 @ =gBattleCommunication\n\ + movs r0, 0x43\n\ + strb r0, [r1, 0x3]\n\ + bl b_movescr_stack_push_cursor\n\ + ldr r1, _080192D4 @ =gBattlescriptCurrInstr\n\ + ldr r0, _080192D8 @ =BattleScript_ApplySecondaryEffect\n\ + str r0, [r1]\n\ + ldr r2, _080192DC @ =gHitMarker\n\ + ldr r0, [r2]\n\ + movs r1, 0x80\n\ + lsls r1, 6\n\ + orrs r0, r1\n\ + str r0, [r2]\n\ + bl _08019F22\n\ + .align 2, 0\n\ +_080192B4: .4byte gBattleMoveFlags\n\ +_080192B8: .4byte gBattleMons\n\ +_080192BC: .4byte gBankAttacker\n\ +_080192C0: .4byte gProtectStructs\n\ +_080192C4: .4byte gBattleMoves\n\ +_080192C8: .4byte gSpecialStatuses\n\ +_080192CC: .4byte gBankTarget\n\ +_080192D0: .4byte gBattleCommunication\n\ +_080192D4: .4byte gBattlescriptCurrInstr\n\ +_080192D8: .4byte BattleScript_ApplySecondaryEffect\n\ +_080192DC: .4byte gHitMarker\n\ +_080192E0:\n\ + ldr r0, _08019420 @ =gBattleMoveFlags\n\ + ldrb r1, [r0]\n\ + movs r0, 0x29\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _080192F0\n\ + bl _08019F76\n\ +_080192F0:\n\ + ldr r5, _08019424 @ =gBattleMons\n\ + ldr r7, _08019428 @ =gBankAttacker\n\ + ldrb r1, [r7]\n\ + movs r6, 0x58\n\ + adds r0, r1, 0\n\ + muls r0, r6\n\ + adds r0, r5\n\ + ldrh r0, [r0, 0x28]\n\ + cmp r0, 0\n\ + bne _08019308\n\ + bl _08019F76\n\ +_08019308:\n\ + ldr r0, _0801942C @ =gProtectStructs\n\ + lsls r1, 4\n\ + adds r1, r0\n\ + ldrb r0, [r1, 0x1]\n\ + lsls r0, 31\n\ + cmp r0, 0\n\ + beq _0801931A\n\ + bl _08019F76\n\ +_0801931A:\n\ + ldr r1, _08019430 @ =gBattleMoves\n\ + lsls r0, r3, 1\n\ + adds r0, r3\n\ + lsls r0, 2\n\ + adds r0, r1\n\ + ldrb r1, [r0, 0x8]\n\ + movs r0, 0x1\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _08019332\n\ + bl _08019F76\n\ +_08019332:\n\ + ldr r3, _08019434 @ =gSpecialStatuses\n\ + ldr r0, _08019438 @ =gBankTarget\n\ + mov r8, r0\n\ + ldrb r1, [r0]\n\ + lsls r0, r1, 2\n\ + adds r0, r1\n\ + lsls r2, r0, 2\n\ + adds r0, r3, 0\n\ + adds r0, 0x8\n\ + adds r0, r2, r0\n\ + ldr r0, [r0]\n\ + cmp r0, 0\n\ + bne _0801935C\n\ + adds r0, r3, 0\n\ + adds r0, 0xC\n\ + adds r0, r2, r0\n\ + ldr r0, [r0]\n\ + cmp r0, 0\n\ + bne _0801935C\n\ + bl _08019F76\n\ +_0801935C:\n\ + adds r0, r1, 0\n\ + muls r0, r6\n\ + adds r0, r5\n\ + ldrh r0, [r0, 0x28]\n\ + cmp r0, 0\n\ + bne _0801936C\n\ + bl _08019F76\n\ +_0801936C:\n\ + bl Random\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + movs r1, 0x3\n\ + bl __umodsi3\n\ + lsls r0, 16\n\ + cmp r0, 0\n\ + beq _08019384\n\ + bl _08019F76\n\ +_08019384:\n\ + ldrb r0, [r7]\n\ + muls r0, r6\n\ + adds r0, r5\n\ + adds r0, 0x20\n\ + ldrb r0, [r0]\n\ + cmp r0, 0xC\n\ + bne _08019396\n\ + bl _08019F76\n\ +_08019396:\n\ + ldr r0, [sp, 0x8]\n\ + ldr r1, [sp, 0x10]\n\ + bl GetGenderFromSpeciesAndPersonality\n\ + adds r4, r0, 0\n\ + ldr r0, [sp, 0xC]\n\ + ldr r1, [sp, 0x14]\n\ + bl GetGenderFromSpeciesAndPersonality\n\ + lsls r4, 24\n\ + lsls r0, 24\n\ + cmp r4, r0\n\ + bne _080193B4\n\ + bl _08019F76\n\ +_080193B4:\n\ + ldrb r0, [r7]\n\ + muls r0, r6\n\ + adds r4, r5, 0\n\ + adds r4, 0x50\n\ + adds r0, r4\n\ + ldr r0, [r0]\n\ + movs r1, 0xF0\n\ + lsls r1, 12\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _080193CE\n\ + bl _08019F76\n\ +_080193CE:\n\ + ldr r0, [sp, 0x8]\n\ + ldr r1, [sp, 0x10]\n\ + bl GetGenderFromSpeciesAndPersonality\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + cmp r0, 0xFF\n\ + bne _080193E2\n\ + bl _08019F76\n\ +_080193E2:\n\ + ldr r0, [sp, 0xC]\n\ + ldr r1, [sp, 0x14]\n\ + bl GetGenderFromSpeciesAndPersonality\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + cmp r0, 0xFF\n\ + bne _080193F6\n\ + bl _08019F76\n\ +_080193F6:\n\ + ldrb r0, [r7]\n\ + adds r2, r0, 0\n\ + muls r2, r6\n\ + adds r2, r4\n\ + ldr r1, _0801943C @ =gBitTable\n\ + mov r3, r8\n\ + ldrb r0, [r3]\n\ + lsls r0, 2\n\ + adds r0, r1\n\ + ldr r1, [r0]\n\ + lsls r1, 16\n\ + ldr r0, [r2]\n\ + orrs r0, r1\n\ + str r0, [r2]\n\ + bl b_movescr_stack_push_cursor\n\ + ldr r1, _08019440 @ =gBattlescriptCurrInstr\n\ + ldr r0, _08019444 @ =BattleScript_CuteCharmActivates\n\ + str r0, [r1]\n\ + bl _08019F22\n\ + .align 2, 0\n\ +_08019420: .4byte gBattleMoveFlags\n\ +_08019424: .4byte gBattleMons\n\ +_08019428: .4byte gBankAttacker\n\ +_0801942C: .4byte gProtectStructs\n\ +_08019430: .4byte gBattleMoves\n\ +_08019434: .4byte gSpecialStatuses\n\ +_08019438: .4byte gBankTarget\n\ +_0801943C: .4byte gBitTable\n\ +_08019440: .4byte gBattlescriptCurrInstr\n\ +_08019444: .4byte BattleScript_CuteCharmActivates\n\ +_08019448:\n\ + movs r5, 0\n\ + mov r10, r5\n\ + ldr r0, _0801947C @ =gNoOfAllBanks\n\ + ldrb r0, [r0]\n\ + cmp r10, r0\n\ + bcc _08019458\n\ + bl _08019F76\n\ +_08019458:\n\ + ldr r1, _08019480 @ =gBattleMons\n\ + movs r0, 0x58\n\ + mov r2, r10\n\ + muls r2, r0\n\ + adds r0, r2, 0\n\ + adds r0, r1\n\ + adds r0, 0x20\n\ + ldrb r0, [r0]\n\ + subs r0, 0x7\n\ + adds r2, r1, 0\n\ + cmp r0, 0x41\n\ + bls _08019472\n\ + b _080196D6\n\ +_08019472:\n\ + lsls r0, 2\n\ + ldr r1, _08019484 @ =_08019488\n\ + adds r0, r1\n\ + ldr r0, [r0]\n\ + mov pc, r0\n\ + .align 2, 0\n\ +_0801947C: .4byte gNoOfAllBanks\n\ +_08019480: .4byte gBattleMons\n\ +_08019484: .4byte _08019488\n\ + .align 2, 0\n\ +_08019488:\n\ + .4byte _080195EC\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _080196B0\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _08019614\n\ + .4byte _080196D6\n\ + .4byte _08019590\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _080195BC\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _08019680\n\ + .4byte _08019650\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _080196D6\n\ + .4byte _08019614\n\ +_08019590:\n\ + movs r0, 0x58\n\ + mov r3, r10\n\ + muls r3, r0\n\ + adds r0, r3, 0\n\ + adds r1, r2, 0\n\ + adds r1, 0x4C\n\ + adds r0, r1\n\ + ldr r0, [r0]\n\ + ldr r1, _080195B0 @ =0x00000f88\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _080195AA\n\ + b _080196D6\n\ +_080195AA:\n\ + ldr r0, _080195B4 @ =gBattleTextBuff1\n\ + ldr r1, _080195B8 @ =gStatusConditionString_PoisonJpn\n\ + b _0801969C\n\ + .align 2, 0\n\ +_080195B0: .4byte 0x00000f88\n\ +_080195B4: .4byte gBattleTextBuff1\n\ +_080195B8: .4byte gStatusConditionString_PoisonJpn\n\ +_080195BC:\n\ + movs r0, 0x58\n\ + mov r1, r10\n\ + muls r1, r0\n\ + adds r0, r1, 0\n\ + adds r1, r2, 0\n\ + adds r1, 0x50\n\ + adds r0, r1\n\ + ldr r0, [r0]\n\ + movs r1, 0x7\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _080195D6\n\ + b _080196D6\n\ +_080195D6:\n\ + ldr r0, _080195E4 @ =gBattleTextBuff1\n\ + ldr r1, _080195E8 @ =gStatusConditionString_ConfusionJpn\n\ + bl StringCopy\n\ + movs r2, 0x2\n\ + mov r9, r2\n\ + b _080196DC\n\ + .align 2, 0\n\ +_080195E4: .4byte gBattleTextBuff1\n\ +_080195E8: .4byte gStatusConditionString_ConfusionJpn\n\ +_080195EC:\n\ + movs r0, 0x58\n\ + mov r3, r10\n\ + muls r3, r0\n\ + adds r0, r3, 0\n\ + adds r1, r2, 0\n\ + adds r1, 0x4C\n\ + adds r0, r1\n\ + ldr r0, [r0]\n\ + movs r1, 0x40\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _080196D6\n\ + ldr r0, _0801960C @ =gBattleTextBuff1\n\ + ldr r1, _08019610 @ =gStatusConditionString_ParalysisJpn\n\ + b _0801969C\n\ + .align 2, 0\n\ +_0801960C: .4byte gBattleTextBuff1\n\ +_08019610: .4byte gStatusConditionString_ParalysisJpn\n\ +_08019614:\n\ + movs r0, 0x58\n\ + mov r3, r10\n\ + muls r3, r0\n\ + adds r0, r2, 0\n\ + adds r0, 0x4C\n\ + adds r0, r3, r0\n\ + ldr r0, [r0]\n\ + movs r1, 0x7\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _080196D6\n\ + adds r2, 0x50\n\ + adds r2, r3, r2\n\ + ldr r0, [r2]\n\ + ldr r1, _08019644 @ =0xf7ffffff\n\ + ands r0, r1\n\ + str r0, [r2]\n\ + ldr r0, _08019648 @ =gBattleTextBuff1\n\ + ldr r1, _0801964C @ =gStatusConditionString_SleepJpn\n\ + bl StringCopy\n\ + movs r0, 0x1\n\ + mov r9, r0\n\ + b _080196DC\n\ + .align 2, 0\n\ +_08019644: .4byte 0xf7ffffff\n\ +_08019648: .4byte gBattleTextBuff1\n\ +_0801964C: .4byte gStatusConditionString_SleepJpn\n\ +_08019650:\n\ + movs r0, 0x58\n\ + mov r1, r10\n\ + muls r1, r0\n\ + adds r0, r1, 0\n\ + adds r1, r2, 0\n\ + adds r1, 0x4C\n\ + adds r0, r1\n\ + ldr r0, [r0]\n\ + movs r1, 0x10\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _080196D6\n\ + ldr r0, _08019678 @ =gBattleTextBuff1\n\ + ldr r1, _0801967C @ =gStatusConditionString_BurnJpn\n\ + bl StringCopy\n\ + movs r2, 0x1\n\ + mov r9, r2\n\ + b _080196DC\n\ + .align 2, 0\n\ +_08019678: .4byte gBattleTextBuff1\n\ +_0801967C: .4byte gStatusConditionString_BurnJpn\n\ +_08019680:\n\ + movs r0, 0x58\n\ + mov r3, r10\n\ + muls r3, r0\n\ + adds r0, r3, 0\n\ + adds r1, r2, 0\n\ + adds r1, 0x4C\n\ + adds r0, r1\n\ + ldr r0, [r0]\n\ + movs r1, 0x20\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _080196D6\n\ + ldr r0, _080196A8 @ =gBattleTextBuff1\n\ + ldr r1, _080196AC @ =gStatusConditionString_IceJpn\n\ +_0801969C:\n\ + bl StringCopy\n\ + movs r5, 0x1\n\ + mov r9, r5\n\ + b _080196DC\n\ + .align 2, 0\n\ +_080196A8: .4byte gBattleTextBuff1\n\ +_080196AC: .4byte gStatusConditionString_IceJpn\n\ +_080196B0:\n\ + movs r0, 0x58\n\ + mov r1, r10\n\ + muls r1, r0\n\ + adds r0, r1, 0\n\ + adds r1, r2, 0\n\ + adds r1, 0x50\n\ + adds r0, r1\n\ + ldr r0, [r0]\n\ + movs r1, 0xF0\n\ + lsls r1, 12\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _080196D6\n\ + ldr r0, _080196EC @ =gBattleTextBuff1\n\ + ldr r1, _080196F0 @ =gStatusConditionString_LoveJpn\n\ + bl StringCopy\n\ + movs r2, 0x3\n\ + mov r9, r2\n\ +_080196D6:\n\ + mov r3, r9\n\ + cmp r3, 0\n\ + beq _08019798\n\ +_080196DC:\n\ + mov r5, r9\n\ + cmp r5, 0x2\n\ + beq _08019710\n\ + cmp r5, 0x2\n\ + bgt _080196F4\n\ + cmp r5, 0x1\n\ + beq _080196FC\n\ + b _0801973C\n\ + .align 2, 0\n\ +_080196EC: .4byte gBattleTextBuff1\n\ +_080196F0: .4byte gStatusConditionString_LoveJpn\n\ +_080196F4:\n\ + mov r0, r9\n\ + cmp r0, 0x3\n\ + beq _08019728\n\ + b _0801973C\n\ +_080196FC:\n\ + ldr r1, _0801970C @ =gBattleMons\n\ + movs r0, 0x58\n\ + mov r2, r10\n\ + muls r2, r0\n\ + adds r1, 0x4C\n\ + adds r2, r1\n\ + movs r0, 0\n\ + b _0801973A\n\ + .align 2, 0\n\ +_0801970C: .4byte gBattleMons\n\ +_08019710:\n\ + ldr r1, _08019724 @ =gBattleMons\n\ + movs r0, 0x58\n\ + mov r2, r10\n\ + muls r2, r0\n\ + adds r1, 0x50\n\ + adds r2, r1\n\ + ldr r0, [r2]\n\ + movs r1, 0x8\n\ + negs r1, r1\n\ + b _08019738\n\ + .align 2, 0\n\ +_08019724: .4byte gBattleMons\n\ +_08019728:\n\ + ldr r1, _08019778 @ =gBattleMons\n\ + movs r0, 0x58\n\ + mov r2, r10\n\ + muls r2, r0\n\ + adds r1, 0x50\n\ + adds r2, r1\n\ + ldr r0, [r2]\n\ + ldr r1, _0801977C @ =0xfff0ffff\n\ +_08019738:\n\ + ands r0, r1\n\ +_0801973A:\n\ + str r0, [r2]\n\ +_0801973C:\n\ + bl b_movescr_stack_push_cursor\n\ + ldr r1, _08019780 @ =gBattlescriptCurrInstr\n\ + ldr r0, _08019784 @ =gUnknown_081D9956\n\ + str r0, [r1]\n\ + ldr r0, _08019788 @ =0x02000000\n\ + ldr r1, _0801978C @ =0x00016003\n\ + adds r0, r1\n\ + mov r2, r10\n\ + strb r2, [r0]\n\ + ldr r4, _08019790 @ =gActiveBank\n\ + strb r2, [r4]\n\ + ldrb r1, [r4]\n\ + movs r0, 0x58\n\ + muls r0, r1\n\ + ldr r1, _08019794 @ =gUnknown_02024ACC\n\ + adds r0, r1\n\ + str r0, [sp]\n\ + movs r0, 0\n\ + movs r1, 0x28\n\ + movs r2, 0\n\ + movs r3, 0x4\n\ + bl EmitSetAttributes\n\ + ldrb r0, [r4]\n\ + bl MarkBufferBankForExecution\n\ + bl _08019F92\n\ + .align 2, 0\n\ +_08019778: .4byte gBattleMons\n\ +_0801977C: .4byte 0xfff0ffff\n\ +_08019780: .4byte gBattlescriptCurrInstr\n\ +_08019784: .4byte gUnknown_081D9956\n\ +_08019788: .4byte 0x02000000\n\ +_0801978C: .4byte 0x00016003\n\ +_08019790: .4byte gActiveBank\n\ +_08019794: .4byte gUnknown_02024ACC\n\ +_08019798:\n\ + mov r0, r10\n\ + adds r0, 0x1\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + mov r10, r0\n\ + ldr r0, _080197B0 @ =gNoOfAllBanks\n\ + ldrb r0, [r0]\n\ + cmp r10, r0\n\ + bcs _080197AC\n\ + b _08019458\n\ +_080197AC:\n\ + bl _08019F76\n\ + .align 2, 0\n\ +_080197B0: .4byte gNoOfAllBanks\n\ +_080197B4:\n\ + movs r3, 0\n\ + mov r10, r3\n\ + ldr r0, _080197FC @ =gNoOfAllBanks\n\ + ldrb r0, [r0]\n\ + cmp r10, r0\n\ + bcc _080197C2\n\ + b _08019F76\n\ +_080197C2:\n\ + ldr r4, _08019800 @ =gBattleMons\n\ +_080197C4:\n\ + movs r0, 0x58\n\ + mov r5, r10\n\ + muls r5, r0\n\ + adds r0, r5, 0\n\ + adds r0, r4\n\ + adds r0, 0x20\n\ + ldrb r0, [r0]\n\ + cmp r0, 0x3B\n\ + bne _080197E8\n\ + mov r0, r10\n\ + bl CastformDataTypeChange\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + mov r9, r0\n\ + cmp r0, 0\n\ + beq _080197E8\n\ + b _08019E40\n\ +_080197E8:\n\ + mov r0, r10\n\ + adds r0, 0x1\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + mov r10, r0\n\ + ldr r0, _080197FC @ =gNoOfAllBanks\n\ + ldrb r0, [r0]\n\ + cmp r10, r0\n\ + bcc _080197C4\n\ + b _08019F76\n\ + .align 2, 0\n\ +_080197FC: .4byte gNoOfAllBanks\n\ +_08019800: .4byte gBattleMons\n\ +_08019804:\n\ + mov r1, r8\n\ + ldrb r0, [r1]\n\ + cmp r0, 0x1C\n\ + beq _0801980E\n\ + b _08019F76\n\ +_0801980E:\n\ + ldr r4, _08019860 @ =gHitMarker\n\ + ldr r1, [r4]\n\ + movs r0, 0x80\n\ + lsls r0, 7\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _0801981E\n\ + b _08019F76\n\ +_0801981E:\n\ + ldr r0, _08019864 @ =0xffffbfff\n\ + ands r1, r0\n\ + str r1, [r4]\n\ + ldr r3, _08019868 @ =0x000160ca\n\ + adds r2, r7, r3\n\ + ldrb r1, [r2]\n\ + movs r0, 0x3F\n\ + ands r0, r1\n\ + strb r0, [r2]\n\ + cmp r0, 0x6\n\ + bne _08019838\n\ + movs r0, 0x2\n\ + strb r0, [r2]\n\ +_08019838:\n\ + ldr r1, _0801986C @ =gBattleCommunication\n\ + ldrb r0, [r2]\n\ + adds r0, 0x40\n\ + strb r0, [r1, 0x3]\n\ + ldr r0, _08019870 @ =gBankTarget\n\ + ldrb r1, [r0]\n\ + ldr r5, _08019874 @ =0x00016003\n\ + adds r0, r7, r5\n\ + strb r1, [r0]\n\ + bl b_movescr_stack_push_cursor\n\ + ldr r1, _08019878 @ =gBattlescriptCurrInstr\n\ + ldr r0, _0801987C @ =BattleScript_SynchronizeActivates\n\ + str r0, [r1]\n\ + ldr r0, [r4]\n\ + movs r1, 0x80\n\ + lsls r1, 6\n\ + orrs r0, r1\n\ + str r0, [r4]\n\ + b _08019F22\n\ + .align 2, 0\n\ +_08019860: .4byte gHitMarker\n\ +_08019864: .4byte 0xffffbfff\n\ +_08019868: .4byte 0x000160ca\n\ +_0801986C: .4byte gBattleCommunication\n\ +_08019870: .4byte gBankTarget\n\ +_08019874: .4byte 0x00016003\n\ +_08019878: .4byte gBattlescriptCurrInstr\n\ +_0801987C: .4byte BattleScript_SynchronizeActivates\n\ +_08019880:\n\ + mov r1, r8\n\ + ldrb r0, [r1]\n\ + cmp r0, 0x1C\n\ + beq _0801988A\n\ + b _08019F76\n\ +_0801988A:\n\ + ldr r4, _080198DC @ =gHitMarker\n\ + ldr r1, [r4]\n\ + movs r0, 0x80\n\ + lsls r0, 7\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _0801989A\n\ + b _08019F76\n\ +_0801989A:\n\ + ldr r0, _080198E0 @ =0xffffbfff\n\ + ands r1, r0\n\ + str r1, [r4]\n\ + ldr r3, _080198E4 @ =0x000160ca\n\ + adds r2, r7, r3\n\ + ldrb r1, [r2]\n\ + movs r0, 0x3F\n\ + ands r0, r1\n\ + strb r0, [r2]\n\ + cmp r0, 0x6\n\ + bne _080198B4\n\ + movs r0, 0x2\n\ + strb r0, [r2]\n\ +_080198B4:\n\ + ldr r1, _080198E8 @ =gBattleCommunication\n\ + ldrb r0, [r2]\n\ + strb r0, [r1, 0x3]\n\ + ldr r0, _080198EC @ =gBankAttacker\n\ + ldrb r1, [r0]\n\ + ldr r5, _080198F0 @ =0x00016003\n\ + adds r0, r7, r5\n\ + strb r1, [r0]\n\ + bl b_movescr_stack_push_cursor\n\ + ldr r1, _080198F4 @ =gBattlescriptCurrInstr\n\ + ldr r0, _080198F8 @ =BattleScript_SynchronizeActivates\n\ + str r0, [r1]\n\ + ldr r0, [r4]\n\ + movs r1, 0x80\n\ + lsls r1, 6\n\ + orrs r0, r1\n\ + str r0, [r4]\n\ + b _08019F22\n\ + .align 2, 0\n\ +_080198DC: .4byte gHitMarker\n\ +_080198E0: .4byte 0xffffbfff\n\ +_080198E4: .4byte 0x000160ca\n\ +_080198E8: .4byte gBattleCommunication\n\ +_080198EC: .4byte gBankAttacker\n\ +_080198F0: .4byte 0x00016003\n\ +_080198F4: .4byte gBattlescriptCurrInstr\n\ +_080198F8: .4byte BattleScript_SynchronizeActivates\n\ +_080198FC:\n\ + movs r4, 0\n\ + ldr r0, _08019934 @ =gNoOfAllBanks\n\ + ldrb r1, [r0]\n\ + cmp r4, r1\n\ + blt _08019908\n\ + b _08019F76\n\ +_08019908:\n\ + ldr r0, _08019938 @ =gBattleMons\n\ + adds r5, r1, 0\n\ + ldr r2, _0801993C @ =gStatuses3\n\ + adds r3, r0, 0\n\ + adds r3, 0x20\n\ + movs r6, 0x80\n\ + lsls r6, 12\n\ +_08019916:\n\ + ldrb r1, [r3]\n\ + cmp r1, 0x16\n\ + bne _08019926\n\ + ldr r0, [r2]\n\ + ands r0, r6\n\ + cmp r0, 0\n\ + beq _08019926\n\ + b _08019E6C\n\ +_08019926:\n\ + adds r2, 0x4\n\ + adds r3, 0x58\n\ + adds r4, 0x1\n\ + cmp r4, r5\n\ + blt _08019916\n\ + b _08019F76\n\ + .align 2, 0\n\ +_08019934: .4byte gNoOfAllBanks\n\ +_08019938: .4byte gBattleMons\n\ +_0801993C: .4byte gStatuses3\n\ +_08019940:\n\ + movs r4, 0\n\ + ldr r0, _08019A1C @ =gNoOfAllBanks\n\ + ldrb r0, [r0]\n\ + cmp r4, r0\n\ + blt _0801994C\n\ + b _08019F76\n\ +_0801994C:\n\ + ldr r0, _08019A20 @ =gActiveBank\n\ + mov r8, r0\n\ + ldr r1, _08019A24 @ =gBattleMons\n\ + adds r1, 0x20\n\ + str r1, [sp, 0x1C]\n\ + movs r2, 0\n\ + str r2, [sp, 0x20]\n\ +_0801995A:\n\ + ldr r3, [sp, 0x1C]\n\ + ldrb r0, [r3]\n\ + cmp r0, 0x24\n\ + beq _08019964\n\ + b _08019AF6\n\ +_08019964:\n\ + ldr r0, _08019A28 @ =gStatuses3\n\ + ldr r5, [sp, 0x20]\n\ + adds r0, r5, r0\n\ + ldr r1, [r0]\n\ + movs r0, 0x80\n\ + lsls r0, 13\n\ + ands r1, r0\n\ + str r5, [sp, 0x18]\n\ + cmp r1, 0\n\ + bne _0801997A\n\ + b _08019AF6\n\ +_0801997A:\n\ + lsls r0, r4, 24\n\ + lsrs r0, 24\n\ + bl GetBankIdentity\n\ + movs r1, 0x1\n\ + adds r5, r0, 0\n\ + eors r5, r1\n\ + ands r5, r1\n\ + adds r0, r5, 0\n\ + bl GetBankByPlayerAI\n\ + lsls r0, 24\n\ + lsrs r6, r0, 24\n\ + adds r0, r5, 0x2\n\ + bl GetBankByPlayerAI\n\ + lsls r0, 24\n\ + lsrs r7, r0, 24\n\ + ldr r0, _08019A2C @ =gBattleTypeFlags\n\ + ldrh r1, [r0]\n\ + movs r2, 0x1\n\ + adds r0, r2, 0\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _080199AE\n\ + b _08019ABC\n\ +_080199AE:\n\ + movs r1, 0x58\n\ + adds r0, r6, 0\n\ + muls r0, r1\n\ + ldr r3, _08019A24 @ =gBattleMons\n\ + adds r1, r0, r3\n\ + adds r0, r1, 0\n\ + adds r0, 0x20\n\ + ldrb r0, [r0]\n\ + cmp r0, 0\n\ + beq _08019A78\n\ + ldrh r0, [r1, 0x28]\n\ + cmp r0, 0\n\ + beq _08019A34\n\ + movs r1, 0x58\n\ + adds r0, r7, 0\n\ + muls r0, r1\n\ + adds r1, r0, r3\n\ + adds r0, r1, 0\n\ + adds r0, 0x20\n\ + ldrb r0, [r0]\n\ + cmp r0, 0\n\ + beq _08019A34\n\ + ldrh r0, [r1, 0x28]\n\ + cmp r0, 0\n\ + beq _08019A34\n\ + str r2, [sp, 0x24]\n\ + bl Random\n\ + ldr r2, [sp, 0x24]\n\ + adds r1, r2, 0\n\ + ands r1, r0\n\ + lsls r1, 1\n\ + orrs r5, r1\n\ + adds r0, r5, 0\n\ + bl GetBankByPlayerAI\n\ + mov r2, r8\n\ + strb r0, [r2]\n\ + ldrb r0, [r2]\n\ + movs r3, 0x58\n\ + muls r0, r3\n\ + ldr r5, _08019A24 @ =gBattleMons\n\ + adds r0, r5\n\ + adds r0, 0x20\n\ + ldrb r0, [r0]\n\ + ldr r1, [sp, 0x1C]\n\ + strb r0, [r1]\n\ + ldrb r0, [r2]\n\ + muls r0, r3\n\ + adds r0, r5\n\ + adds r0, 0x20\n\ + ldrb r0, [r0]\n\ + ldr r2, _08019A30 @ =gLastUsedAbility\n\ + strb r0, [r2]\n\ + b _08019AE4\n\ + .align 2, 0\n\ +_08019A1C: .4byte gNoOfAllBanks\n\ +_08019A20: .4byte gActiveBank\n\ +_08019A24: .4byte gBattleMons\n\ +_08019A28: .4byte gStatuses3\n\ +_08019A2C: .4byte gBattleTypeFlags\n\ +_08019A30: .4byte gLastUsedAbility\n\ +_08019A34:\n\ + ldr r3, _08019A74 @ =gBattleMons\n\ + movs r2, 0x58\n\ + adds r0, r6, 0\n\ + muls r0, r2\n\ + adds r1, r0, r3\n\ + adds r0, r1, 0\n\ + adds r0, 0x20\n\ + ldrb r0, [r0]\n\ + cmp r0, 0\n\ + beq _08019A78\n\ + ldrh r0, [r1, 0x28]\n\ + cmp r0, 0\n\ + beq _08019A78\n\ + mov r5, r8\n\ + strb r6, [r5]\n\ + adds r1, r4, 0\n\ + muls r1, r2\n\ + adds r1, r3\n\ + ldrb r0, [r5]\n\ + muls r0, r2\n\ + adds r0, r3\n\ + adds r0, 0x20\n\ + ldrb r0, [r0]\n\ + adds r1, 0x20\n\ + strb r0, [r1]\n\ + ldrb r0, [r5]\n\ + muls r0, r2\n\ + adds r0, r3\n\ + adds r0, 0x20\n\ + ldrb r0, [r0]\n\ + b _08019AE0\n\ + .align 2, 0\n\ +_08019A74: .4byte gBattleMons\n\ +_08019A78:\n\ + ldr r3, _08019AB8 @ =gBattleMons\n\ + movs r2, 0x58\n\ + adds r0, r7, 0\n\ + muls r0, r2\n\ + adds r1, r0, r3\n\ + adds r0, r1, 0\n\ + adds r0, 0x20\n\ + ldrb r0, [r0]\n\ + cmp r0, 0\n\ + beq _08019AEE\n\ + ldrh r0, [r1, 0x28]\n\ + cmp r0, 0\n\ + beq _08019AEE\n\ + mov r5, r8\n\ + strb r7, [r5]\n\ + adds r1, r4, 0\n\ + muls r1, r2\n\ + adds r1, r3\n\ + ldrb r0, [r5]\n\ + muls r0, r2\n\ + adds r0, r3\n\ + adds r0, 0x20\n\ + ldrb r0, [r0]\n\ + adds r1, 0x20\n\ + strb r0, [r1]\n\ + ldrb r0, [r5]\n\ + muls r0, r2\n\ + adds r0, r3\n\ + adds r0, 0x20\n\ + ldrb r0, [r0]\n\ + b _08019AE0\n\ + .align 2, 0\n\ +_08019AB8: .4byte gBattleMons\n\ +_08019ABC:\n\ + mov r2, r8\n\ + strb r6, [r2]\n\ + movs r3, 0x58\n\ + adds r0, r6, 0\n\ + muls r0, r3\n\ + ldr r5, _08019B10 @ =gBattleMons\n\ + adds r0, r5\n\ + adds r2, r0, 0\n\ + adds r2, 0x20\n\ + ldrb r1, [r2]\n\ + cmp r1, 0\n\ + beq _08019AEE\n\ + ldrh r0, [r0, 0x28]\n\ + cmp r0, 0\n\ + beq _08019AEE\n\ + ldr r0, [sp, 0x1C]\n\ + strb r1, [r0]\n\ + ldrb r0, [r2]\n\ +_08019AE0:\n\ + ldr r1, _08019B14 @ =gLastUsedAbility\n\ + strb r0, [r1]\n\ +_08019AE4:\n\ + mov r0, r9\n\ + adds r0, 0x1\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + mov r9, r0\n\ +_08019AEE:\n\ + mov r2, r9\n\ + cmp r2, 0\n\ + beq _08019AF6\n\ + b _08019E88\n\ +_08019AF6:\n\ + ldr r3, [sp, 0x1C]\n\ + adds r3, 0x58\n\ + str r3, [sp, 0x1C]\n\ + ldr r5, [sp, 0x20]\n\ + adds r5, 0x4\n\ + str r5, [sp, 0x20]\n\ + adds r4, 0x1\n\ + ldr r0, _08019B18 @ =gNoOfAllBanks\n\ + ldrb r0, [r0]\n\ + cmp r4, r0\n\ + bge _08019B0E\n\ + b _0801995A\n\ +_08019B0E:\n\ + b _08019F76\n\ + .align 2, 0\n\ +_08019B10: .4byte gBattleMons\n\ +_08019B14: .4byte gLastUsedAbility\n\ +_08019B18: .4byte gNoOfAllBanks\n\ +_08019B1C:\n\ + movs r4, 0\n\ + ldr r0, _08019B54 @ =gNoOfAllBanks\n\ + ldrb r1, [r0]\n\ + cmp r4, r1\n\ + blt _08019B28\n\ + b _08019F76\n\ +_08019B28:\n\ + ldr r0, _08019B58 @ =gBattleMons\n\ + adds r5, r1, 0\n\ + ldr r2, _08019B5C @ =gStatuses3\n\ + adds r3, r0, 0\n\ + adds r3, 0x20\n\ + movs r6, 0x80\n\ + lsls r6, 12\n\ +_08019B36:\n\ + ldrb r1, [r3]\n\ + cmp r1, 0x16\n\ + bne _08019B46\n\ + ldr r0, [r2]\n\ + ands r0, r6\n\ + cmp r0, 0\n\ + beq _08019B46\n\ + b _08019F04\n\ +_08019B46:\n\ + adds r2, 0x4\n\ + adds r3, 0x58\n\ + adds r4, 0x1\n\ + cmp r4, r5\n\ + blt _08019B36\n\ + b _08019F76\n\ + .align 2, 0\n\ +_08019B54: .4byte gNoOfAllBanks\n\ +_08019B58: .4byte gBattleMons\n\ +_08019B5C: .4byte gStatuses3\n\ +_08019B60:\n\ + mov r0, r10\n\ + bl GetBankSide\n\ + lsls r0, 24\n\ + lsrs r5, r0, 24\n\ + movs r4, 0\n\ + ldr r0, _08019BB0 @ =gNoOfAllBanks\n\ + ldrb r0, [r0]\n\ + cmp r4, r0\n\ + blt _08019B76\n\ + b _08019F76\n\ +_08019B76:\n\ + ldr r7, _08019BB4 @ =gBattleMons\n\ +_08019B78:\n\ + lsls r0, r4, 24\n\ + lsrs r0, 24\n\ + bl GetBankSide\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + adds r3, r4, 0x1\n\ + cmp r0, r5\n\ + beq _08019BA2\n\ + movs r0, 0x58\n\ + muls r0, r4\n\ + adds r0, r7\n\ + adds r0, 0x20\n\ + ldrb r0, [r0]\n\ + cmp r0, r6\n\ + bne _08019BA2\n\ + ldr r0, _08019BB8 @ =gLastUsedAbility\n\ + strb r6, [r0]\n\ + lsls r0, r3, 24\n\ + lsrs r0, 24\n\ + mov r9, r0\n\ +_08019BA2:\n\ + adds r4, r3, 0\n\ + ldr r0, _08019BB0 @ =gNoOfAllBanks\n\ + ldrb r0, [r0]\n\ + cmp r4, r0\n\ + blt _08019B78\n\ + b _08019F76\n\ + .align 2, 0\n\ +_08019BB0: .4byte gNoOfAllBanks\n\ +_08019BB4: .4byte gBattleMons\n\ +_08019BB8: .4byte gLastUsedAbility\n\ +_08019BBC:\n\ + mov r0, r10\n\ + bl GetBankSide\n\ + lsls r0, 24\n\ + lsrs r5, r0, 24\n\ + movs r4, 0\n\ + ldr r0, _08019C0C @ =gNoOfAllBanks\n\ + ldrb r0, [r0]\n\ + cmp r4, r0\n\ + blt _08019BD2\n\ + b _08019F76\n\ +_08019BD2:\n\ + ldr r7, _08019C10 @ =gBattleMons\n\ +_08019BD4:\n\ + lsls r0, r4, 24\n\ + lsrs r0, 24\n\ + bl GetBankSide\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + adds r3, r4, 0x1\n\ + cmp r0, r5\n\ + bne _08019BFE\n\ + movs r0, 0x58\n\ + muls r0, r4\n\ + adds r0, r7\n\ + adds r0, 0x20\n\ + ldrb r0, [r0]\n\ + cmp r0, r6\n\ + bne _08019BFE\n\ + ldr r0, _08019C14 @ =gLastUsedAbility\n\ + strb r6, [r0]\n\ + lsls r0, r3, 24\n\ + lsrs r0, 24\n\ + mov r9, r0\n\ +_08019BFE:\n\ + adds r4, r3, 0\n\ + ldr r0, _08019C0C @ =gNoOfAllBanks\n\ + ldrb r0, [r0]\n\ + cmp r4, r0\n\ + blt _08019BD4\n\ + b _08019F76\n\ + .align 2, 0\n\ +_08019C0C: .4byte gNoOfAllBanks\n\ +_08019C10: .4byte gBattleMons\n\ +_08019C14: .4byte gLastUsedAbility\n\ +_08019C18:\n\ + mov r1, r8\n\ + ldrb r0, [r1]\n\ + cmp r0, 0xFD\n\ + beq _08019C40\n\ + cmp r0, 0xFE\n\ + beq _08019C78\n\ + movs r4, 0\n\ + ldr r0, _08019C38 @ =gNoOfAllBanks\n\ + adds r5, r0, 0\n\ + ldrb r2, [r5]\n\ + cmp r4, r2\n\ + blt _08019C32\n\ + b _08019F76\n\ +_08019C32:\n\ + ldr r2, _08019C3C @ =gBattleMons\n\ + b _08019CB0\n\ + .align 2, 0\n\ +_08019C38: .4byte gNoOfAllBanks\n\ +_08019C3C: .4byte gBattleMons\n\ +_08019C40:\n\ + movs r4, 0\n\ + ldr r0, _08019C70 @ =gNoOfAllBanks\n\ + ldrb r0, [r0]\n\ + cmp r4, r0\n\ + blt _08019C4C\n\ + b _08019F76\n\ +_08019C4C:\n\ + ldr r5, _08019C74 @ =gStatuses3\n\ + movs r2, 0x80\n\ + lsls r2, 9\n\ + adds r1, r0, 0\n\ +_08019C54:\n\ + lsls r0, r4, 2\n\ + adds r0, r5\n\ + ldr r0, [r0]\n\ + ands r0, r2\n\ + adds r3, r4, 0x1\n\ + cmp r0, 0\n\ + beq _08019C68\n\ + lsls r0, r3, 24\n\ + lsrs r0, 24\n\ + mov r9, r0\n\ +_08019C68:\n\ + adds r4, r3, 0\n\ + cmp r4, r1\n\ + blt _08019C54\n\ + b _08019F76\n\ + .align 2, 0\n\ +_08019C70: .4byte gNoOfAllBanks\n\ +_08019C74: .4byte gStatuses3\n\ +_08019C78:\n\ + movs r4, 0\n\ + ldr r0, _08019CA8 @ =gNoOfAllBanks\n\ + ldrb r0, [r0]\n\ + cmp r4, r0\n\ + blt _08019C84\n\ + b _08019F76\n\ +_08019C84:\n\ + ldr r5, _08019CAC @ =gStatuses3\n\ + movs r2, 0x80\n\ + lsls r2, 10\n\ + adds r1, r0, 0\n\ +_08019C8C:\n\ + lsls r0, r4, 2\n\ + adds r0, r5\n\ + ldr r0, [r0]\n\ + ands r0, r2\n\ + adds r3, r4, 0x1\n\ + cmp r0, 0\n\ + beq _08019CA0\n\ + lsls r0, r3, 24\n\ + lsrs r0, 24\n\ + mov r9, r0\n\ +_08019CA0:\n\ + adds r4, r3, 0\n\ + cmp r4, r1\n\ + blt _08019C8C\n\ + b _08019F76\n\ + .align 2, 0\n\ +_08019CA8: .4byte gNoOfAllBanks\n\ +_08019CAC: .4byte gStatuses3\n\ +_08019CB0:\n\ + movs r0, 0x58\n\ + muls r0, r4\n\ + adds r0, r2\n\ + adds r0, 0x20\n\ + ldrb r0, [r0]\n\ + adds r3, r4, 0x1\n\ + cmp r0, r6\n\ + bne _08019CCA\n\ + mov r0, r8\n\ + strb r6, [r0]\n\ + lsls r0, r3, 24\n\ + lsrs r0, 24\n\ + mov r9, r0\n\ +_08019CCA:\n\ + adds r4, r3, 0\n\ + ldrb r1, [r5]\n\ + cmp r4, r1\n\ + blt _08019CB0\n\ + b _08019F76\n\ +_08019CD4:\n\ + movs r4, 0\n\ + ldr r0, _08019D10 @ =gNoOfAllBanks\n\ + ldrb r0, [r0]\n\ + cmp r4, r0\n\ + blt _08019CE0\n\ + b _08019F76\n\ +_08019CE0:\n\ + ldr r7, _08019D14 @ =gBattleMons\n\ + adds r2, r0, 0\n\ + movs r5, 0x58\n\ +_08019CE6:\n\ + adds r0, r4, 0\n\ + muls r0, r5\n\ + adds r1, r0, r7\n\ + adds r0, r1, 0\n\ + adds r0, 0x20\n\ + ldrb r0, [r0]\n\ + adds r3, r4, 0x1\n\ + cmp r0, r6\n\ + bne _08019D08\n\ + ldrh r0, [r1, 0x28]\n\ + cmp r0, 0\n\ + beq _08019D08\n\ + mov r0, r8\n\ + strb r6, [r0]\n\ + lsls r0, r3, 24\n\ + lsrs r0, 24\n\ + mov r9, r0\n\ +_08019D08:\n\ + adds r4, r3, 0\n\ + cmp r4, r2\n\ + blt _08019CE6\n\ + b _08019F76\n\ + .align 2, 0\n\ +_08019D10: .4byte gNoOfAllBanks\n\ +_08019D14: .4byte gBattleMons\n\ +_08019D18:\n\ + movs r4, 0\n\ + ldr r0, _08019D50 @ =gNoOfAllBanks\n\ + ldrb r0, [r0]\n\ + cmp r4, r0\n\ + blt _08019D24\n\ + b _08019F76\n\ +_08019D24:\n\ + ldr r7, _08019D54 @ =gBattleMons\n\ + adds r1, r0, 0\n\ + movs r5, 0x58\n\ + ldr r2, _08019D58 @ =gLastUsedAbility\n\ +_08019D2C:\n\ + adds r0, r4, 0\n\ + muls r0, r5\n\ + adds r0, r7\n\ + adds r0, 0x20\n\ + ldrb r0, [r0]\n\ + adds r3, r4, 0x1\n\ + cmp r0, r6\n\ + bne _08019D48\n\ + cmp r4, r10\n\ + beq _08019D48\n\ + strb r6, [r2]\n\ + lsls r0, r3, 24\n\ + lsrs r0, 24\n\ + mov r9, r0\n\ +_08019D48:\n\ + adds r4, r3, 0\n\ + cmp r4, r1\n\ + blt _08019D2C\n\ + b _08019F76\n\ + .align 2, 0\n\ +_08019D50: .4byte gNoOfAllBanks\n\ +_08019D54: .4byte gBattleMons\n\ +_08019D58: .4byte gLastUsedAbility\n\ +_08019D5C:\n\ + mov r0, r10\n\ + bl GetBankSide\n\ + lsls r0, 24\n\ + lsrs r5, r0, 24\n\ + movs r4, 0\n\ + ldr r0, _08019DAC @ =gNoOfAllBanks\n\ + ldrb r0, [r0]\n\ + cmp r4, r0\n\ + blt _08019D72\n\ + b _08019F76\n\ +_08019D72:\n\ + ldr r7, _08019DB0 @ =gBattleMons\n\ +_08019D74:\n\ + lsls r0, r4, 24\n\ + lsrs r0, 24\n\ + bl GetBankSide\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + cmp r0, r5\n\ + beq _08019DA0\n\ + movs r0, 0x58\n\ + muls r0, r4\n\ + adds r0, r7\n\ + adds r0, 0x20\n\ + ldrb r0, [r0]\n\ + cmp r0, r6\n\ + bne _08019DA0\n\ + ldr r0, _08019DB4 @ =gLastUsedAbility\n\ + strb r6, [r0]\n\ + mov r0, r9\n\ + adds r0, 0x1\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + mov r9, r0\n\ +_08019DA0:\n\ + adds r4, 0x1\n\ + ldr r0, _08019DAC @ =gNoOfAllBanks\n\ + ldrb r0, [r0]\n\ + cmp r4, r0\n\ + blt _08019D74\n\ + b _08019F76\n\ + .align 2, 0\n\ +_08019DAC: .4byte gNoOfAllBanks\n\ +_08019DB0: .4byte gBattleMons\n\ +_08019DB4: .4byte gLastUsedAbility\n\ +_08019DB8:\n\ + mov r0, r10\n\ + bl GetBankSide\n\ + lsls r0, 24\n\ + lsrs r5, r0, 24\n\ + movs r4, 0\n\ + ldr r0, _08019E08 @ =gNoOfAllBanks\n\ + ldrb r0, [r0]\n\ + cmp r4, r0\n\ + blt _08019DCE\n\ + b _08019F76\n\ +_08019DCE:\n\ + ldr r7, _08019E0C @ =gBattleMons\n\ +_08019DD0:\n\ + lsls r0, r4, 24\n\ + lsrs r0, 24\n\ + bl GetBankSide\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + cmp r0, r5\n\ + bne _08019DFC\n\ + movs r0, 0x58\n\ + muls r0, r4\n\ + adds r0, r7\n\ + adds r0, 0x20\n\ + ldrb r0, [r0]\n\ + cmp r0, r6\n\ + bne _08019DFC\n\ + ldr r0, _08019E10 @ =gLastUsedAbility\n\ + strb r6, [r0]\n\ + mov r0, r9\n\ + adds r0, 0x1\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + mov r9, r0\n\ +_08019DFC:\n\ + adds r4, 0x1\n\ + ldr r0, _08019E08 @ =gNoOfAllBanks\n\ + ldrb r0, [r0]\n\ + cmp r4, r0\n\ + blt _08019DD0\n\ + b _08019F76\n\ + .align 2, 0\n\ +_08019E08: .4byte gNoOfAllBanks\n\ +_08019E0C: .4byte gBattleMons\n\ +_08019E10: .4byte gLastUsedAbility\n\ +_08019E14:\n\ + ldr r0, _08019E30 @ =BattleScript_CastformChange\n\ + bl b_push_move_exec\n\ + ldr r0, _08019E34 @ =0x02000000\n\ + ldr r2, _08019E38 @ =0x00016003\n\ + adds r1, r0, r2\n\ + strb r6, [r1]\n\ + mov r1, r9\n\ + subs r1, 0x1\n\ + ldr r3, _08019E3C @ =0x0001609b\n\ + adds r0, r3\n\ + strb r1, [r0]\n\ + b _08019F76\n\ + .align 2, 0\n\ +_08019E30: .4byte BattleScript_CastformChange\n\ +_08019E34: .4byte 0x02000000\n\ +_08019E38: .4byte 0x00016003\n\ +_08019E3C: .4byte 0x0001609b\n\ +_08019E40:\n\ + ldr r0, _08019E5C @ =BattleScript_CastformChange\n\ + bl b_push_move_exec\n\ + ldr r0, _08019E60 @ =0x02000000\n\ + ldr r5, _08019E64 @ =0x00016003\n\ + adds r1, r0, r5\n\ + mov r2, r10\n\ + strb r2, [r1]\n\ + mov r1, r9\n\ + subs r1, 0x1\n\ + ldr r3, _08019E68 @ =0x0001609b\n\ + adds r0, r3\n\ + strb r1, [r0]\n\ + b _08019F92\n\ + .align 2, 0\n\ +_08019E5C: .4byte BattleScript_CastformChange\n\ +_08019E60: .4byte 0x02000000\n\ +_08019E64: .4byte 0x00016003\n\ +_08019E68: .4byte 0x0001609b\n\ +_08019E6C:\n\ + mov r5, r8\n\ + strb r1, [r5]\n\ + ldr r0, [r2]\n\ + ldr r1, _08019E80 @ =0xfff7ffff\n\ + ands r0, r1\n\ + str r0, [r2]\n\ + ldr r0, _08019E84 @ =gUnknown_081D978C\n\ + bl b_push_move_exec\n\ + b _08019F1A\n\ + .align 2, 0\n\ +_08019E80: .4byte 0xfff7ffff\n\ +_08019E84: .4byte gUnknown_081D978C\n\ +_08019E88:\n\ + ldr r0, _08019EDC @ =BattleScript_TraceActivates\n\ + bl b_push_move_exec\n\ + ldr r1, _08019EE0 @ =gStatuses3\n\ + ldr r2, [sp, 0x18]\n\ + adds r1, r2, r1\n\ + ldr r0, [r1]\n\ + ldr r2, _08019EE4 @ =0xffefffff\n\ + ands r0, r2\n\ + str r0, [r1]\n\ + ldr r0, _08019EE8 @ =0x02000000\n\ + ldr r3, _08019EEC @ =0x00016003\n\ + adds r0, r3\n\ + strb r4, [r0]\n\ + ldr r1, _08019EF0 @ =gBattleTextBuff1\n\ + movs r4, 0xFD\n\ + strb r4, [r1]\n\ + movs r0, 0x4\n\ + strb r0, [r1, 0x1]\n\ + ldr r2, _08019EF4 @ =gActiveBank\n\ + ldrb r0, [r2]\n\ + strb r0, [r1, 0x2]\n\ + ldr r3, _08019EF8 @ =gBattlePartyID\n\ + ldrb r0, [r2]\n\ + lsls r0, 1\n\ + adds r0, r3\n\ + ldrh r0, [r0]\n\ + strb r0, [r1, 0x3]\n\ + movs r0, 0xFF\n\ + strb r0, [r1, 0x4]\n\ + ldr r1, _08019EFC @ =gBattleTextBuff2\n\ + strb r4, [r1]\n\ + movs r0, 0x9\n\ + strb r0, [r1, 0x1]\n\ + ldr r0, _08019F00 @ =gLastUsedAbility\n\ + ldrb r0, [r0]\n\ + strb r0, [r1, 0x2]\n\ + movs r0, 0x1\n\ + negs r0, r0\n\ + strb r0, [r1, 0x3]\n\ + b _08019F76\n\ + .align 2, 0\n\ +_08019EDC: .4byte BattleScript_TraceActivates\n\ +_08019EE0: .4byte gStatuses3\n\ +_08019EE4: .4byte 0xffefffff\n\ +_08019EE8: .4byte 0x02000000\n\ +_08019EEC: .4byte 0x00016003\n\ +_08019EF0: .4byte gBattleTextBuff1\n\ +_08019EF4: .4byte gActiveBank\n\ +_08019EF8: .4byte gBattlePartyID\n\ +_08019EFC: .4byte gBattleTextBuff2\n\ +_08019F00: .4byte gLastUsedAbility\n\ +_08019F04:\n\ + mov r5, r8\n\ + strb r1, [r5]\n\ + ldr r0, [r2]\n\ + ldr r1, _08019F30 @ =0xfff7ffff\n\ + ands r0, r1\n\ + str r0, [r2]\n\ + bl b_movescr_stack_push_cursor\n\ + ldr r1, _08019F34 @ =gBattlescriptCurrInstr\n\ + ldr r0, _08019F38 @ =gUnknown_081D9795\n\ + str r0, [r1]\n\ +_08019F1A:\n\ + ldr r0, _08019F3C @ =0x02000000\n\ + ldr r1, _08019F40 @ =0x000160dd\n\ + adds r0, r1\n\ + strb r4, [r0]\n\ +_08019F22:\n\ + mov r0, r9\n\ + adds r0, 0x1\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + mov r9, r0\n\ + b _08019F76\n\ + .align 2, 0\n\ +_08019F30: .4byte 0xfff7ffff\n\ +_08019F34: .4byte gBattlescriptCurrInstr\n\ +_08019F38: .4byte gUnknown_081D9795\n\ +_08019F3C: .4byte 0x02000000\n\ +_08019F40: .4byte 0x000160dd\n\ +_08019F44:\n\ + movs r4, 0\n\ + ldr r0, _08019FA4 @ =gNoOfAllBanks\n\ + ldrb r1, [r0]\n\ + cmp r4, r1\n\ + bge _08019F76\n\ + ldr r0, _08019FA8 @ =gBattleMons\n\ + adds r2, r1, 0\n\ + adds r1, r0, 0\n\ + adds r1, 0x20\n\ + ldr r3, _08019FAC @ =gLastUsedAbility\n\ +_08019F58:\n\ + ldrb r0, [r1]\n\ + cmp r0, r6\n\ + bne _08019F6E\n\ + cmp r4, r10\n\ + beq _08019F6E\n\ + strb r6, [r3]\n\ + mov r0, r9\n\ + adds r0, 0x1\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + mov r9, r0\n\ +_08019F6E:\n\ + adds r1, 0x58\n\ + adds r4, 0x1\n\ + cmp r4, r2\n\ + blt _08019F58\n\ +_08019F76:\n\ + mov r2, r9\n\ + cmp r2, 0\n\ + beq _08019F92\n\ +_08019F7C:\n\ + ldr r3, [sp, 0x4]\n\ + cmp r3, 0xB\n\ + bhi _08019F92\n\ + ldr r1, _08019FAC @ =gLastUsedAbility\n\ + ldrb r0, [r1]\n\ + cmp r0, 0xFF\n\ + beq _08019F92\n\ + adds r1, r0, 0\n\ + mov r0, r10\n\ + bl RecordAbilityBattle\n\ +_08019F92:\n\ + mov r0, r9\n\ + add sp, 0x28\n\ + pop {r3-r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r7}\n\ + pop {r1}\n\ + bx r1\n\ + .align 2, 0\n\ +_08019FA4: .4byte gNoOfAllBanks\n\ +_08019FA8: .4byte gBattleMons\n\ +_08019FAC: .4byte gLastUsedAbility\n\ + .syntax divided"); +} + +#endif // NONMATCHING + +void b_call_bc_move_exec(u8* BS_ptr) +{ + gBattlescriptCurrInstr = BS_ptr; + B_FUNCTION_STACK->ptr[B_FUNCTION_STACK->size++] = gBattleMainFunc; + gBattleMainFunc = sub_8013F54; + gFightStateTracker = 0; +} + +void b_push_move_exec(u8* BS_ptr) +{ + b_movescr_stack_push_cursor(); + gBattlescriptCurrInstr = BS_ptr; + B_FUNCTION_STACK->ptr[B_FUNCTION_STACK->size++] = gBattleMainFunc; + gBattleMainFunc = sub_8013FBC; +} + +enum +{ + ITEM_NO_EFFECT, // 0 + ITEM_STATUS_CHANGE, // 1 + ITEM_EFFECT_OTHER, // 2 + ITEM_PP_CHANGE, // 3 + ITEM_HP_CHANGE, // 4 + ITEM_STATS_CHANGE, // 5 +}; + +enum +{ + FLAVOR_SPICY, // 0 + FLAVOR_DRY, // 1 + FLAVOR_SWEET, // 2 + FLAVOR_BITTER, // 3 + FLAVOR_SOUR, // 4 +}; + +u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) +{ + int i = 0; + u8 effect = ITEM_NO_EFFECT; + u8 changedPP = 0; + u8 bankHoldEffect, atkHoldEffect, defHoldEffect; + u8 bankQuality, atkQuality, defQuality; + u16 atkItem, defItem; + + gLastUsedItem = gBattleMons[bank].item; + if (gLastUsedItem == ITEM_ENIGMA_BERRY) + { + bankHoldEffect = gEnigmaBerries[bank].holdEffect; + bankQuality = gEnigmaBerries[bank].holdEffectParam; + } + else + { + bankHoldEffect = ItemId_GetHoldEffect(gLastUsedItem); + bankQuality = ItemId_GetHoldEffectParam(gLastUsedItem); + } + + atkItem = gBattleMons[gBankAttacker].item; + if (atkItem == ITEM_ENIGMA_BERRY) + { + atkHoldEffect = gEnigmaBerries[gBankAttacker].holdEffect; + atkQuality = gEnigmaBerries[gBankAttacker].holdEffectParam; + } + else + { + atkHoldEffect = ItemId_GetHoldEffect(atkItem); + atkQuality = ItemId_GetHoldEffectParam(atkItem); + } + + // def variables are unused + defItem = gBattleMons[gBankTarget].item; + if (defItem == ITEM_ENIGMA_BERRY) + { + defHoldEffect = gEnigmaBerries[gBankTarget].holdEffect; + defQuality = gEnigmaBerries[gBankTarget].holdEffectParam; + } + else + { + defHoldEffect = ItemId_GetHoldEffect(defItem); + defQuality = ItemId_GetHoldEffectParam(defItem); + } + + switch (caseID) + { + case 0: + switch (bankHoldEffect) + { + case HOLD_EFFECT_DOUBLE_PRIZE: + BATTLE_STRUCT->moneyMultiplier = 2; + break; + case HOLD_EFFECT_RESTORE_STATS: + for (i = 0; i < 8; i++) + { + if (gBattleMons[bank].statStages[i] < 6) + { + gBattleMons[bank].statStages[i] = 6; + effect = ITEM_STATS_CHANGE; + } + } + if (effect) + { + BATTLE_STRUCT->scriptingActive = bank; + gStringBank = bank; + gActiveBank = gBankAttacker = bank; + b_call_bc_move_exec(BattleScript_WhiteHerbEnd2); + } + break; + } + break; + case 1: + if (gBattleMons[bank].hp) + { + switch (bankHoldEffect) + { + case HOLD_EFFECT_RESTORE_HP: + if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / 2 && !moveTurn) + { + gBattleMoveDamage = bankQuality; + if (gBattleMons[bank].hp + bankQuality > gBattleMons[bank].maxHP) + gBattleMoveDamage = gBattleMons[bank].maxHP - gBattleMons[bank].hp; + gBattleMoveDamage *= -1; + b_call_bc_move_exec(BattleScript_ItemHealHP_RemoveItem); + effect = 4; + } + break; + case HOLD_EFFECT_RESTORE_PP: + if (!moveTurn) + { + struct Pokemon* poke; + u8 ppBonuses; + u16 move; + + if (GetBankSide(bank) == 0) + poke = &gPlayerParty[gBattlePartyID[bank]]; + else + poke = &gEnemyParty[gBattlePartyID[bank]]; + for (i = 0; i < 4; i++) + { + move = GetMonData(poke, MON_DATA_MOVE1 + i); + changedPP = GetMonData(poke, MON_DATA_PP1 + i); + ppBonuses = GetMonData(poke, MON_DATA_PP_BONUSES); + if (move && changedPP == 0) + break; + } + if (i != 4) + { + u8 maxPP = CalculatePPWithBonus(move, ppBonuses, i); + if (changedPP + bankQuality > maxPP) + changedPP = maxPP; + else + changedPP = changedPP + bankQuality; + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 2; + gBattleTextBuff1[2] = move; + gBattleTextBuff1[3] = move >> 8; + gBattleTextBuff1[4] = 0xFF; + b_call_bc_move_exec(BattleScript_BerryPPHealEnd2); + EmitSetAttributes(0, i + REQUEST_PPMOVE1_BATTLE, 0, 1, &changedPP); + MarkBufferBankForExecution(gActiveBank); + effect = ITEM_PP_CHANGE; + } + } + break; + case HOLD_EFFECT_RESTORE_STATS: + for (i = 0; i < 8; i++) + { + if (gBattleMons[bank].statStages[i] < 6) + { + gBattleMons[bank].statStages[i] = 6; + effect = ITEM_STATS_CHANGE; + } + } + if (effect) + { + BATTLE_STRUCT->scriptingActive = bank; + gStringBank = bank; + gActiveBank = gBankAttacker = bank; + b_call_bc_move_exec(BattleScript_WhiteHerbEnd2); + } + break; + case HOLD_EFFECT_LEFTOVERS: + if (gBattleMons[bank].hp < gBattleMons[bank].maxHP && !moveTurn) + { + gBattleMoveDamage = gBattleMons[bank].maxHP / 16; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + if (gBattleMons[bank].hp + gBattleMoveDamage > gBattleMons[bank].maxHP) + gBattleMoveDamage = gBattleMons[bank].maxHP - gBattleMons[bank].hp; + gBattleMoveDamage *= -1; + b_call_bc_move_exec(BattleScript_ItemHealHP_End2); + effect = ITEM_HP_CHANGE; + RecordItemBattle(bank, bankHoldEffect); + } + break; + // nice copy/paste there gamefreak, making a function for confuse berries was too much eh? + case HOLD_EFFECT_CONFUSE_SPICY: + if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / 2 && !moveTurn) + { + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 8; + gBattleTextBuff1[2] = FLAVOR_SPICY; + gBattleTextBuff1[3] = EOS; + gBattleMoveDamage = gBattleMons[bank].maxHP / bankQuality; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + if (gBattleMons[bank].hp + gBattleMoveDamage > gBattleMons[bank].maxHP) + gBattleMoveDamage = gBattleMons[bank].maxHP - gBattleMons[bank].hp; + gBattleMoveDamage *= -1; + if (GetPokeFlavourRelation(gBattleMons[bank].personality, FLAVOR_SPICY) < 0) + b_call_bc_move_exec(BattleScript_BerryConfuseHealEnd2); + else + b_call_bc_move_exec(BattleScript_ItemHealHP_RemoveItem); + effect = ITEM_HP_CHANGE; + } + break; + case HOLD_EFFECT_CONFUSE_DRY: + if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / 2 && !moveTurn) + { + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 8; + gBattleTextBuff1[2] = FLAVOR_DRY; + gBattleTextBuff1[3] = EOS; + gBattleMoveDamage = gBattleMons[bank].maxHP / bankQuality; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + if (gBattleMons[bank].hp + gBattleMoveDamage > gBattleMons[bank].maxHP) + gBattleMoveDamage = gBattleMons[bank].maxHP - gBattleMons[bank].hp; + gBattleMoveDamage *= -1; + if (GetPokeFlavourRelation(gBattleMons[bank].personality, FLAVOR_DRY) < 0) + b_call_bc_move_exec(BattleScript_BerryConfuseHealEnd2); + else + b_call_bc_move_exec(BattleScript_ItemHealHP_RemoveItem); + effect = ITEM_HP_CHANGE; + } + break; + case HOLD_EFFECT_CONFUSE_SWEET: + if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / 2 && !moveTurn) + { + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 8; + gBattleTextBuff1[2] = FLAVOR_SWEET; + gBattleTextBuff1[3] = EOS; + gBattleMoveDamage = gBattleMons[bank].maxHP / bankQuality; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + if (gBattleMons[bank].hp + gBattleMoveDamage > gBattleMons[bank].maxHP) + gBattleMoveDamage = gBattleMons[bank].maxHP - gBattleMons[bank].hp; + gBattleMoveDamage *= -1; + if (GetPokeFlavourRelation(gBattleMons[bank].personality, FLAVOR_SWEET) < 0) + b_call_bc_move_exec(BattleScript_BerryConfuseHealEnd2); + else + b_call_bc_move_exec(BattleScript_ItemHealHP_RemoveItem); + effect = ITEM_HP_CHANGE; + } + break; + case HOLD_EFFECT_CONFUSE_BITTER: + if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / 2 && !moveTurn) + { + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 8; + gBattleTextBuff1[2] = FLAVOR_BITTER; + gBattleTextBuff1[3] = EOS; + gBattleMoveDamage = gBattleMons[bank].maxHP / bankQuality; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + if (gBattleMons[bank].hp + gBattleMoveDamage > gBattleMons[bank].maxHP) + gBattleMoveDamage = gBattleMons[bank].maxHP - gBattleMons[bank].hp; + gBattleMoveDamage *= -1; + if (GetPokeFlavourRelation(gBattleMons[bank].personality, FLAVOR_BITTER) < 0) + b_call_bc_move_exec(BattleScript_BerryConfuseHealEnd2); + else + b_call_bc_move_exec(BattleScript_ItemHealHP_RemoveItem); + effect = ITEM_HP_CHANGE; + } + break; + case HOLD_EFFECT_CONFUSE_SOUR: + if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / 2 && !moveTurn) + { + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 8; + gBattleTextBuff1[2] = FLAVOR_SOUR; + gBattleTextBuff1[3] = EOS; + gBattleMoveDamage = gBattleMons[bank].maxHP / bankQuality; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + if (gBattleMons[bank].hp + gBattleMoveDamage > gBattleMons[bank].maxHP) + gBattleMoveDamage = gBattleMons[bank].maxHP - gBattleMons[bank].hp; + gBattleMoveDamage *= -1; + if (GetPokeFlavourRelation(gBattleMons[bank].personality, FLAVOR_SOUR) < 0) + b_call_bc_move_exec(BattleScript_BerryConfuseHealEnd2); + else + b_call_bc_move_exec(BattleScript_ItemHealHP_RemoveItem); + effect = ITEM_HP_CHANGE; + } + break; + // copy/paste again, smh + case HOLD_EFFECT_ATTACK_UP: + if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / bankQuality && !moveTurn && gBattleMons[bank].statStages[STAT_STAGE_ATK] < 0xC) + { + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 5; + gBattleTextBuff1[2] = STAT_STAGE_ATK; + gBattleTextBuff1[3] = EOS; + + gBattleTextBuff2[0] = 0xFD; + gBattleTextBuff2[1] = 0; + gBattleTextBuff2[2] = 0xD2; + gBattleTextBuff2[3] = 0xD2 >> 8; + gBattleTextBuff2[4] = EOS; + + gEffectBank = bank; + BATTLE_STRUCT->statChanger = 0x10 + STAT_STAGE_ATK; + BATTLE_STRUCT->animArg1 = 0xE + STAT_STAGE_ATK; + BATTLE_STRUCT->animArg2 = 0; + b_call_bc_move_exec(BattleScript_BerryStatRaiseEnd2); + effect = ITEM_STATS_CHANGE; + } + break; + case HOLD_EFFECT_DEFENSE_UP: + if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / bankQuality && !moveTurn && gBattleMons[bank].statStages[STAT_STAGE_DEF] < 0xC) + { + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 5; + gBattleTextBuff1[2] = STAT_STAGE_DEF; + gBattleTextBuff1[3] = EOS; + + gEffectBank = bank; + BATTLE_STRUCT->statChanger = 0x10 + STAT_STAGE_DEF; + BATTLE_STRUCT->animArg1 = 0xE + STAT_STAGE_DEF; + BATTLE_STRUCT->animArg2 = 0; + b_call_bc_move_exec(BattleScript_BerryStatRaiseEnd2); + effect = ITEM_STATS_CHANGE; + } + break; + case HOLD_EFFECT_SPEED_UP: + if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / bankQuality && !moveTurn && gBattleMons[bank].statStages[STAT_STAGE_SPEED] < 0xC) + { + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 5; + gBattleTextBuff1[2] = STAT_STAGE_SPEED; + gBattleTextBuff1[3] = EOS; + + gEffectBank = bank; + BATTLE_STRUCT->statChanger = 0x10 + STAT_STAGE_SPEED; + BATTLE_STRUCT->animArg1 = 0xE + STAT_STAGE_SPEED; + BATTLE_STRUCT->animArg2 = 0; + b_call_bc_move_exec(BattleScript_BerryStatRaiseEnd2); + effect = ITEM_STATS_CHANGE; + } + break; + case HOLD_EFFECT_SP_ATTACK_UP: + if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / bankQuality && !moveTurn && gBattleMons[bank].statStages[STAT_STAGE_SPATK] < 0xC) + { + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 5; + gBattleTextBuff1[2] = STAT_STAGE_SPATK; + gBattleTextBuff1[3] = EOS; + + gEffectBank = bank; + BATTLE_STRUCT->statChanger = 0x10 + STAT_STAGE_SPATK; + BATTLE_STRUCT->animArg1 = 0xE + STAT_STAGE_SPATK; + BATTLE_STRUCT->animArg2 = 0; + b_call_bc_move_exec(BattleScript_BerryStatRaiseEnd2); + effect = ITEM_STATS_CHANGE; + } + break; + case HOLD_EFFECT_SP_DEFENSE_UP: + if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / bankQuality && !moveTurn && gBattleMons[bank].statStages[STAT_STAGE_SPDEF] < 0xC) + { + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 5; + gBattleTextBuff1[2] = STAT_STAGE_SPDEF; + gBattleTextBuff1[3] = EOS; + + gEffectBank = bank; + BATTLE_STRUCT->statChanger = 0x10 + STAT_STAGE_SPDEF; + BATTLE_STRUCT->animArg1 = 0xE + STAT_STAGE_SPDEF; + BATTLE_STRUCT->animArg2 = 0; + b_call_bc_move_exec(BattleScript_BerryStatRaiseEnd2); + effect = ITEM_STATS_CHANGE; + } + break; + case HOLD_EFFECT_CRITICAL_UP: + if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / bankQuality && !moveTurn && !(gBattleMons[bank].status2 & STATUS2_FOCUS_ENERGY)) + { + gBattleMons[bank].status2 |= STATUS2_FOCUS_ENERGY; + b_call_bc_move_exec(BattleScript_BerryFocusEnergyEnd2); + effect = ITEM_EFFECT_OTHER; + } + break; + case HOLD_EFFECT_RANDOM_STAT_UP: + if (!moveTurn && gBattleMons[bank].hp <= gBattleMons[bank].maxHP / bankQuality) + { + for (i = 0; i < 5; i++) + { + if (gBattleMons[bank].statStages[STAT_STAGE_ATK + i] < 0xC) + break; + } + if (i != 5) + { + do + { + i = Random() % 5; + } while (gBattleMons[bank].statStages[STAT_STAGE_ATK + i] == 0xC); + + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 5; + gBattleTextBuff1[2] = i + 1; + gBattleTextBuff1[3] = EOS; + + gBattleTextBuff2[0] = 0xFD; + gBattleTextBuff2[1] = 0; + gBattleTextBuff2[2] = 0xD1; + gBattleTextBuff2[3] = 0xD1 >> 8; + gBattleTextBuff2[4] = 0; + gBattleTextBuff2[5] = 0xD2; + gBattleTextBuff2[6] = 0xD2 >> 8; + gBattleTextBuff2[7] = EOS; + + gEffectBank = bank; + BATTLE_STRUCT->statChanger = 0x21 + i; + BATTLE_STRUCT->animArg1 = 0x21 + i + 6; + BATTLE_STRUCT->animArg2 = 0; + b_call_bc_move_exec(BattleScript_BerryStatRaiseEnd2); + effect = ITEM_STATS_CHANGE; + } + } + break; + case HOLD_EFFECT_CURE_PAR: + if (gBattleMons[bank].status1 & STATUS_PARALYSIS) + { + gBattleMons[bank].status1 &= ~(STATUS_PARALYSIS); + b_call_bc_move_exec(BattleScript_BerryCurePrlzEnd2); + effect = ITEM_STATUS_CHANGE; + } + break; + case HOLD_EFFECT_CURE_PSN: + if (gBattleMons[bank].status1 & STATUS_PSN_ANY) + { + gBattleMons[bank].status1 &= ~(STATUS_PSN_ANY | STATUS_TOXIC_COUNTER); + b_call_bc_move_exec(BattleScript_BerryCurePsnEnd2); + effect = ITEM_STATUS_CHANGE; + } + break; + case HOLD_EFFECT_CURE_BRN: + if (gBattleMons[bank].status1 & STATUS_BURN) + { + gBattleMons[bank].status1 &= ~(STATUS_BURN); + b_call_bc_move_exec(BattleScript_BerryCureBrnEnd2); + effect = ITEM_STATUS_CHANGE; + } + break; + case HOLD_EFFECT_CURE_FRZ: + if (gBattleMons[bank].status1 & STATUS_FREEZE) + { + gBattleMons[bank].status1 &= ~(STATUS_FREEZE); + b_call_bc_move_exec(BattleScript_BerryCureFrzEnd2); + effect = ITEM_STATUS_CHANGE; + } + break; + case HOLD_EFFECT_CURE_SLP: + if (gBattleMons[bank].status1 & STATUS_SLEEP) + { + gBattleMons[bank].status1 &= ~(STATUS_SLEEP); + gBattleMons[bank].status2 &= ~(STATUS2_NIGHTMARE); + b_call_bc_move_exec(BattleScript_BerryCureSlpEnd2); + effect = ITEM_STATUS_CHANGE; + } + break; + case HOLD_EFFECT_CURE_CONFUSION: + if (gBattleMons[bank].status2 & STATUS2_CONFUSION) + { + gBattleMons[bank].status2 &= ~(STATUS2_CONFUSION); + b_call_bc_move_exec(BattleScript_BerryCureConfusionEnd2); + effect = ITEM_EFFECT_OTHER; + } + break; + case HOLD_EFFECT_CURE_STATUS: + if (gBattleMons[bank].status1 & STATUS_ANY || gBattleMons[bank].status2 & STATUS2_CONFUSION) + { + i = 0; + if (gBattleMons[bank].status1 & STATUS_PSN_ANY) + { + StringCopy(gBattleTextBuff1, gStatusConditionString_PoisonJpn); + i++; + } + if (gBattleMons[bank].status1 & STATUS_SLEEP) + { + gBattleMons[bank].status2 &= ~(STATUS2_NIGHTMARE); + StringCopy(gBattleTextBuff1, gStatusConditionString_SleepJpn); + i++; + } + if (gBattleMons[bank].status1 & STATUS_PARALYSIS) + { + StringCopy(gBattleTextBuff1, gStatusConditionString_ParalysisJpn); + i++; + } + if (gBattleMons[bank].status1 & STATUS_BURN) + { + StringCopy(gBattleTextBuff1, gStatusConditionString_BurnJpn); + i++; + } + if (gBattleMons[bank].status1 & STATUS_FREEZE) + { + StringCopy(gBattleTextBuff1, gStatusConditionString_IceJpn); + i++; + } + if (gBattleMons[bank].status2 & STATUS2_CONFUSION) + { + StringCopy(gBattleTextBuff1, gStatusConditionString_ConfusionJpn); + i++; + } + if (!(i > 1)) + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + else + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + gBattleMons[bank].status1 = 0; + gBattleMons[bank].status2 &= ~(STATUS2_CONFUSION); + b_call_bc_move_exec(gUnknown_081D9A44); + effect = ITEM_STATUS_CHANGE; + } + break; + case HOLD_EFFECT_CURE_ATTRACT: + if (gBattleMons[bank].status2 & STATUS2_INFATUATION) + { + gBattleMons[bank].status2 &= ~(STATUS2_INFATUATION); + StringCopy(gBattleTextBuff1, gStatusConditionString_LoveJpn); + b_call_bc_move_exec(gUnknown_081D9A44); + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + effect = ITEM_EFFECT_OTHER; + } + break; + } + if (effect) + { + BATTLE_STRUCT->scriptingActive = bank; + gStringBank = bank; + gActiveBank = gBankAttacker = bank; + switch (effect) + { + case ITEM_STATUS_CHANGE: + EmitSetAttributes(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[bank].status1); + MarkBufferBankForExecution(gActiveBank); + break; + case ITEM_PP_CHANGE: + if (!(gBattleMons[bank].status2 & STATUS2_TRANSFORMED) && !(gDisableStructs[bank].unk18_b & gBitTable[i])) + gBattleMons[bank].pp[i] = changedPP; + break; + } + } + } + break; + case 2: + break; + case 3: + for (bank = 0; bank < gNoOfAllBanks; bank++) + { + gLastUsedItem = gBattleMons[bank].item; + if (gBattleMons[bank].item == ITEM_ENIGMA_BERRY) + { + bankHoldEffect = gEnigmaBerries[bank].holdEffect; + bankQuality = gEnigmaBerries[bank].holdEffectParam; + } + else + { + bankHoldEffect = ItemId_GetHoldEffect(gLastUsedItem); + bankQuality = ItemId_GetHoldEffectParam(gLastUsedItem); + } + switch (bankHoldEffect) + { + case HOLD_EFFECT_CURE_PAR: + if (gBattleMons[bank].status1 & STATUS_PARALYSIS) + { + gBattleMons[bank].status1 &= ~(STATUS_PARALYSIS); + b_movescr_stack_push_cursor(); + gBattlescriptCurrInstr = BattleScript_BerryCureParRet; + effect = ITEM_STATUS_CHANGE; + } + break; + case HOLD_EFFECT_CURE_PSN: + if (gBattleMons[bank].status1 & STATUS_PSN_ANY) + { + gBattleMons[bank].status1 &= ~(STATUS_PSN_ANY | STATUS_TOXIC_COUNTER); + b_movescr_stack_push_cursor(); + gBattlescriptCurrInstr = BattleScript_BerryCurePsnRet; + effect = ITEM_STATUS_CHANGE; + } + break; + case HOLD_EFFECT_CURE_BRN: + if (gBattleMons[bank].status1 & STATUS_BURN) + { + gBattleMons[bank].status1 &= ~(STATUS_BURN); + b_movescr_stack_push_cursor(); + gBattlescriptCurrInstr = BattleScript_BerryCureBrnRet; + effect = ITEM_STATUS_CHANGE; + } + break; + case HOLD_EFFECT_CURE_FRZ: + if (gBattleMons[bank].status1 & STATUS_FREEZE) + { + gBattleMons[bank].status1 &= ~(STATUS_FREEZE); + b_movescr_stack_push_cursor(); + gBattlescriptCurrInstr = BattleScript_BerryCureFrzRet; + effect = ITEM_STATUS_CHANGE; + } + break; + case HOLD_EFFECT_CURE_SLP: + if (gBattleMons[bank].status1 & STATUS_SLEEP) + { + gBattleMons[bank].status1 &= ~(STATUS_SLEEP); + gBattleMons[bank].status2 &= ~(STATUS2_NIGHTMARE); + b_movescr_stack_push_cursor(); + gBattlescriptCurrInstr = BattleScript_BerryCureSlpRet; + effect = ITEM_STATUS_CHANGE; + } + break; + case HOLD_EFFECT_CURE_CONFUSION: + if (gBattleMons[bank].status2 & STATUS2_CONFUSION) + { + gBattleMons[bank].status2 &= ~(STATUS2_CONFUSION); + b_movescr_stack_push_cursor(); + gBattlescriptCurrInstr = BattleScript_BerryCureConfusionRet; + effect = ITEM_EFFECT_OTHER; + } + break; + case HOLD_EFFECT_CURE_ATTRACT: + if (gBattleMons[bank].status2 & STATUS2_INFATUATION) + { + gBattleMons[bank].status2 &= ~(STATUS2_INFATUATION); + StringCopy(gBattleTextBuff1, gStatusConditionString_LoveJpn); + b_movescr_stack_push_cursor(); + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + gBattlescriptCurrInstr = gUnknown_081D9A4A; + effect = ITEM_EFFECT_OTHER; + } + break; + case HOLD_EFFECT_CURE_STATUS: + if (gBattleMons[bank].status1 & STATUS_ANY || gBattleMons[bank].status2 & STATUS2_CONFUSION) + { + if (gBattleMons[bank].status1 & STATUS_PSN_ANY) + { + StringCopy(gBattleTextBuff1, gStatusConditionString_PoisonJpn); + } + if (gBattleMons[bank].status1 & STATUS_SLEEP) + { + gBattleMons[bank].status2 &= ~(STATUS2_NIGHTMARE); + StringCopy(gBattleTextBuff1, gStatusConditionString_SleepJpn); + } + if (gBattleMons[bank].status1 & STATUS_PARALYSIS) + { + StringCopy(gBattleTextBuff1, gStatusConditionString_ParalysisJpn); + } + if (gBattleMons[bank].status1 & STATUS_BURN) + { + StringCopy(gBattleTextBuff1, gStatusConditionString_BurnJpn); + } + if (gBattleMons[bank].status1 & STATUS_FREEZE) + { + StringCopy(gBattleTextBuff1, gStatusConditionString_IceJpn); + } + if (gBattleMons[bank].status2 & STATUS2_CONFUSION) + { + StringCopy(gBattleTextBuff1, gStatusConditionString_ConfusionJpn); + } + gBattleMons[bank].status1 = 0; + gBattleMons[bank].status2 &= ~(STATUS2_CONFUSION); + b_movescr_stack_push_cursor(); + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + gBattlescriptCurrInstr = gUnknown_081D9A4A; + effect = ITEM_STATUS_CHANGE; + } + break; + case HOLD_EFFECT_RESTORE_STATS: + for (i = 0; i < 8; i++) + { + if (gBattleMons[bank].statStages[i] < 6) + { + gBattleMons[bank].statStages[i] = 6; + effect = ITEM_STATS_CHANGE; + } + } + if (effect) + { + BATTLE_STRUCT->scriptingActive = bank; + gStringBank = bank; + b_movescr_stack_push_cursor(); + gBattlescriptCurrInstr = BattleScript_WhiteHerbRet; + return effect; // unnecessary return + } + break; + } + if (effect) + { + BATTLE_STRUCT->scriptingActive = bank; + gStringBank = bank; + gActiveBank = bank; + EmitSetAttributes(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBank].status1); + MarkBufferBankForExecution(gActiveBank); + break; + } + } + break; + case 4: + if (gBattleMoveDamage) + { + switch (atkHoldEffect) + { + case HOLD_EFFECT_FLINCH: + if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT) + && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special) + && (Random() % 100) < bankQuality + && gBattleMoves[gCurrentMove].flags & FLAG_KINGSROCK_AFFECTED + && gBattleMons[gBankTarget].hp) + { + gBattleCommunication[MOVE_EFFECT_BYTE] = 8; + b_movescr_stack_push_cursor(); + SetMoveEffect(0, 0); + b_movescr_stack_pop_cursor(); + } + break; + case HOLD_EFFECT_SHELL_BELL: + if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT) + && gSpecialStatuses[gBankTarget].moveturnLostHP != 0 + && gSpecialStatuses[gBankTarget].moveturnLostHP != 0xFFFF + && gBankAttacker != gBankTarget + && gBattleMons[gBankAttacker].hp != gBattleMons[gBankAttacker].maxHP + && gBattleMons[gBankAttacker].hp != 0) + { + gLastUsedItem = atkItem; + gStringBank = gBankAttacker; + BATTLE_STRUCT->scriptingActive = gBankAttacker; + gBattleMoveDamage = (gSpecialStatuses[gBankTarget].moveturnLostHP / atkQuality) * -1; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = -1; + gSpecialStatuses[gBankTarget].moveturnLostHP = 0; + b_movescr_stack_push_cursor(); + gBattlescriptCurrInstr = BattleScript_ItemHealHP_Ret; + effect++; + } + break; + } + } + break; + } + + return effect; +} + +struct CombinedMove +{ + u16 move1; + u16 move2; + u16 newMove; +}; + +static const struct CombinedMove sCombinedMoves[2] = +{ + {MOVE_EMBER, MOVE_GUST, MOVE_HEAT_WAVE}, + {0xFFFF, 0xFFFF, 0xFFFF} +}; + +void unref_sub_801B40C(void) +{ + int i = 0; + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + { + do + { + u8 bank = 0; + do + { + u8 absent = gAbsentBankFlags; + if (gBitTable[bank] & absent || absent & gBitTable[bank + 2]) + bank++; + else + { + if (sCombinedMoves[i].move1 == gChosenMovesByBanks[bank] && sCombinedMoves[i].move2 == gChosenMovesByBanks[bank + 2]) + { + gSideTimer[GetBankIdentity(bank) & 1].field3 = (bank) | ((bank + 2) << 4); + gSideTimer[GetBankIdentity(bank) & 1].field4 = sCombinedMoves[i].newMove; + gSideAffecting[GetBankIdentity(bank) & 1] |= SIDE_STATUS_X4; + } + if (sCombinedMoves[i].move1 == gChosenMovesByBanks[bank + 2] && sCombinedMoves[i].move2 == gChosenMovesByBanks[bank]) + { + gSideTimer[GetBankIdentity(bank) & 1].field3 = (bank + 2) | ((bank) << 4); + gSideTimer[GetBankIdentity(bank) & 1].field4 = sCombinedMoves[i].newMove; + gSideAffecting[GetBankIdentity(bank) & 1] |= SIDE_STATUS_X4; + } + bank++; + } + } while (bank < 2); + i++; + } while (sCombinedMoves[i].move1 != 0xFFFF); + } +} + +void sub_801B594(void) +{ + if (gBattleExecBuffer == 0) + gBattleScriptingCommandsTable[*gBattlescriptCurrInstr](); +} + +u8 GetMoveTarget(u16 move, u8 useMoveTarget) //get move target +{ + u8 targetBank = 0; + u8 moveTarget; + u8 side; + + if (useMoveTarget) + moveTarget = useMoveTarget - 1; + else + moveTarget = gBattleMoves[move].target; + + switch (moveTarget) + { + case 0: + side = GetBankSide(gBankAttacker) ^ 1; + if (gSideTimer[side].followmeTimer && gBattleMons[gSideTimer[side].followmeTarget].hp) + targetBank = gSideTimer[side].followmeTarget; + else + { + side = GetBankSide(gBankAttacker); + do + { + targetBank = Random() % gNoOfAllBanks; + } while (targetBank == gBankAttacker || side == GetBankSide(targetBank) || gAbsentBankFlags & gBitTable[targetBank]); + if (gBattleMoves[move].type == TYPE_ELECTRIC + && AbilityBattleEffects(ABILITYEFFECT_COUNT_OTHER_SIZE, gBankAttacker, ABILITY_LIGHTNING_ROD, 0, 0) + && gBattleMons[targetBank].ability != ABILITY_LIGHTNING_ROD) + { + targetBank ^= 2; + RecordAbilityBattle(targetBank, gBattleMons[targetBank].ability); + gSpecialStatuses[targetBank].lightningRodRedirected = 1; + } + } + break; + case 1: + case 8: + case 32: + case 64: + targetBank = GetBankByPlayerAI((GetBankIdentity(gBankAttacker) & 1) ^ 1); + if (gAbsentBankFlags & gBitTable[targetBank]) + targetBank ^= 2; + break; + case 4: + side = GetBankSide(gBankAttacker) ^ 1; + if (gSideTimer[side].followmeTimer && gBattleMons[gSideTimer[side].followmeTarget].hp) + targetBank = gSideTimer[side].followmeTarget; + else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && moveTarget & 4) + { + if (GetBankSide(gBankAttacker) == 0) + { + if (Random() & 1) + targetBank = GetBankByPlayerAI(1); + else + targetBank = GetBankByPlayerAI(3); + } + else + { + if (Random() & 1) + targetBank = GetBankByPlayerAI(0); + else + targetBank = GetBankByPlayerAI(2); + } + if (gAbsentBankFlags & gBitTable[targetBank]) + targetBank ^= 2; + } + else + targetBank = GetBankByPlayerAI((GetBankIdentity(gBankAttacker) & 1) ^ 1); + break; + case 2: + case 16: + targetBank = gBankAttacker; + break; + } + ewram[gBankAttacker + 0x16010] = targetBank; + return targetBank; +} + +u8 IsPokeDisobedient(void) +{ + u8 obedienceLevel; + s32 rnd; + s32 calc; + + if (gBattleTypeFlags & BATTLE_TYPE_LINK + || GetBankSide(gBankAttacker) == 1 + || !IsOtherTrainer(gBattleMons[gBankAttacker].otId, gBattleMons[gBankAttacker].otName) + || FlagGet(BADGE08_GET)) + return 0; + + obedienceLevel = 10; + if (FlagGet(BADGE02_GET)) + obedienceLevel = 30; + if (FlagGet(BADGE04_GET)) + obedienceLevel = 50; + if (FlagGet(BADGE06_GET)) + obedienceLevel = 70; + + if (gBattleMons[gBankAttacker].level <= obedienceLevel) + return 0; + rnd = (Random() & 255); + calc = (gBattleMons[gBankAttacker].level + obedienceLevel) * rnd >> 8; + if (calc < obedienceLevel) + return 0; + + // is not obedient + if (gCurrentMove == MOVE_RAGE) + gBattleMons[gBankAttacker].status2 &= ~(STATUS2_RAGE); + if (gBattleMons[gBankAttacker].status1 & STATUS_SLEEP && (gCurrentMove == MOVE_SNORE || gCurrentMove == MOVE_SLEEP_TALK)) + { + gBattlescriptCurrInstr = gUnknown_081D995F; + return 1; + } + + rnd = (Random() & 255); + calc = (gBattleMons[gBankAttacker].level + obedienceLevel) * rnd >> 8; + if (calc < obedienceLevel) + { + calc = CheckMoveLimitations(gBankAttacker, gBitTable[gCurrMovePos], 0xFF); + if (calc == 0xF) // all moves cannot be used + { + gBattleCommunication[MULTISTRING_CHOOSER] = Random() & 3; + gBattlescriptCurrInstr = BattleScript_MoveUsedLoafingAround; + return 1; + } + else // use a random move + { + do + { + gCurrMovePos = gUnknown_02024BE5 = Random() & 3; + } while (gBitTable[gCurrMovePos] & calc); + gRandomMove = gBattleMons[gBankAttacker].moves[gCurrMovePos]; + gBattleCommunication[3] = 0; + gDynamicBasePower = 0; + BATTLE_STRUCT->dynamicMoveType = 0; + gBattlescriptCurrInstr = gUnknown_081D996F; + gBankTarget = GetMoveTarget(gRandomMove, 0); + gHitMarker |= HITMARKER_x200000; + return 2; + } + } + else + { + obedienceLevel = gBattleMons[gBankAttacker].level - obedienceLevel; + + calc = (Random() & 255); + if (calc < obedienceLevel && !(gBattleMons[gBankAttacker].status1 & STATUS_ANY) && gBattleMons[gBankAttacker].ability != ABILITY_VITAL_SPIRIT && gBattleMons[gBankAttacker].ability != ABILITY_INSOMNIA) + { + // try putting asleep + int i; + for (i = 0; i < gNoOfAllBanks; i++) + { + if (gBattleMons[i].status2 & STATUS2_UPROAR) + break; + } + if (i == gNoOfAllBanks) + { + gBattlescriptCurrInstr = gUnknown_081D9989; + return 1; + } + } + calc -= obedienceLevel; + if (calc < obedienceLevel) + { + gBattleMoveDamage = CalculateBaseDamage(&gBattleMons[gBankAttacker], &gBattleMons[gBankAttacker], MOVE_POUND, 0, 40, 0, gBankAttacker, gBankAttacker); + gBankTarget = gBankAttacker; + gBattlescriptCurrInstr = gUnknown_081D99A0; + gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; + return 2; + } + else + { + gBattleCommunication[MULTISTRING_CHOOSER] = Random() & 3; + gBattlescriptCurrInstr = BattleScript_MoveUsedLoafingAround; + return 1; + } + } +} diff --git a/src/battle/battle_4.c b/src/battle/battle_4.c new file mode 100644 index 000000000..e4a4895b5 --- /dev/null +++ b/src/battle/battle_4.c @@ -0,0 +1,17641 @@ +#include "global.h" +#include "battle.h" +#include "battle_move_effects.h" +#include "moves.h" +#include "abilities.h" +#include "item.h" +#include "items.h" +#include "data2.h" +#include "hold_effects.h" +#include "rng.h" +#include "rom3.h" +#include "species.h" +#include "pokemon.h" +#include "text.h" +#include "palette.h" +#include "main.h" +#include "songs.h" +#include "sound.h" +#include "task.h" +#include "decompress.h" +#include "naming_screen.h" + +//extern needed variables +extern u8 gCritMultiplier; +extern s32 gBattleMoveDamage; +extern u32 gStatuses3[4]; +extern u16 gBattleTypeFlags; +extern const u32 gBitTable[]; +extern const struct BaseStats gBaseStats[]; +extern struct BattleEnigmaBerry gEnigmaBerries[4]; +extern struct BattlePokemon gBattleMons[4]; +extern u8 gActiveBank; +extern u32 gBattleExecBuffer; +extern u8 gNoOfAllBanks; +extern u16 gBattlePartyID[4]; +extern u8 gTurnOrder[4]; +extern u8 gUnknown_02024A76[4]; +extern u16 gCurrentMove; +extern u8 gLastUsedAbility; +extern u16 gBattleWeather; +extern u8 gStringBank; +extern u8 gEffectBank; +extern u8 gAbsentBankFlags; +extern u8 gMultiHitCounter; +extern u16 gLastUsedMove[4]; +extern u16 gLockedMove[4]; +extern u16 gChosenMovesByBanks[4]; +extern u16 gSideAffecting[2]; +extern u16 gPauseCounterBattle; +extern u16 gPaydayMoney; +extern u16 gRandomTurnNumber; +extern u8 gBattleOutcome; +extern u8 gBattleTerrain; +extern u16 gTrainerBattleOpponent; +extern u8 gBankAttacker; +extern u8 gBankTarget; +extern u8* gBattlescriptCurrInstr; +extern u8 gCurrMovePos; +extern u8 gFightStateTracker; +extern u32 gHitMarker; +extern u8 gBattleMoveFlags; +extern u8 gBattleCommunication[]; +extern u16 gMoveHitWith[4]; +extern u16 gUnknown_02024C44[4]; +extern u8 gStringBank; +extern u16 gDynamicBasePower; +extern const u8 gTypeEffectiveness[]; +extern u16 gLastUsedItem; +extern u16 gBattleMovePower; +extern s32 gHP_dealt; +extern s32 gTakenDmg[4]; +extern u8 gTakenDmgBanks[4]; +extern const u16 gMissStrings[]; +extern u8 gSentPokesToOpponent[2]; +extern u8 gBank1; +extern u16 gExpShareExp; +extern u8 gBattleTextBuff1[]; +extern u8 gBattleTextBuff2[]; +extern u8 gBattleTextBuff3[]; +extern u8 gLeveledUpInBattle; +extern void (*gBattleMainFunc)(void); +extern struct Window gUnknown_03004210; +extern const u8 gUnknown_08400D7A[]; +extern u8 gPlayerPartyCount; +extern u16 gMoveToLearn; //move to learn +extern const u8 gTrainerMoney[]; +extern u16 gRandomMove; +extern u8* gBattleScriptsEffectsTable[]; +extern u16 gUnknown_02024BE8; //last used move in battle +extern u8 gBankInMenu; +extern u8 gActionForBanks[4]; +extern u16 gUnknown_02024C2C[4]; //last used moves 2, used by sketch +extern u16 gUnknown_030041B0; +extern u16 gUnknown_02024C4C[4]; //last used moves by banks, another one +extern u8 gCurrentMoveTurn; +extern u16 gTrappingMoves[]; + +//extern functions +u8 AtkCanceller_UnableToUseMove(void); +void PressurePPLose(u8 bank_atk, u8 bank_def, u16 move); +void CancelMultiTurnMoves(u8 bank); +void b_movescr_stack_push(u8* BS_ptr); +void b_movescr_stack_push_cursor(void); +void RecordAbilityBattle(u8 bank, u8 ability); +void RecordItemBattle(u8 bank, u8 holdEffect); +int IsPokeDisobedient(void); +static bool8 IsTwoTurnsMove(u16 move); +static void DestinyBondFlagUpdate(void); +static void b_wonderguard_and_levitate(void); +u8 GetBankIdentity(u8 bank); +u8 GetBankSide(u8 bank); +u8 GetBattleBank(u8 bankValue); +s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *defender, u32 move, u16 a4, u16 powerOverride, u8 typeOverride, u8 bank_atk, u8 bank_def); +static u8 AttacksThisTurn(u8 bank, u16 move); //Note: returns 1 if it's a charging turn, otherwise 2 +void UndoEffectsAfterFainting(void); +void BattleMusicStop(void); +void PlayBGM(u16 songID); +void MonGainEVs(struct Pokemon*, u16 defeatedSpecies); +extern u8 gBattleBufferB[4][0x200]; +void sub_80324F8(struct Pokemon*, u8 bank); +void AdjustFriendship(struct Pokemon*, u8 value); +bool8 IsTradedMon(struct Pokemon*); +void b_movescr_stack_pop_cursor(void); +void SwitchInClearStructs(void); +u8* ConvertIntToDecimalStringN(u8*, s32, u8, u8); +u8 GetSetPokedexFlag(u16 nationalNum, u8 caseID); +u16 SpeciesToNationalPokedexNum(u16 species); +u8 sub_803FC34(u8 bank); +u16 sub_803FBFC(u8 a); +u8 GetBankByPlayerAI(u8 ID); +void sub_8012258(u8); +void sub_80157C4(u8 bank); //update sent pokes in battle +//MonTryLearningNewMove teach poke a move +u16 GiveMoveToBattleMon(struct BattlePokemon *mon, u16 move); +void IncrementGameStat(u8 index); +u8 GetScaledHPFraction(s16 hp, s16 maxhp, u8 scale); +u16 GetPokedexHeightWeight(u16 national_num, u8 heightweight); +u8 sub_814A5C0(u8 a1, u16 a2, u8 a3, u16 a4, u8 a5); +void DestroyMenuCursor(void); +void sub_802BC6C(void); +void sub_809D9F0(struct Pokemon *party, u8, u8, void *, u32); +u8 sub_809FA30(void); +bool32 IsHMMove2(u16 move); +void sub_802BBD4(u8 r0, u8 r1, u8 r2, u8 r3, u8 sp0); +void nullsub_6(void); +void ReshowBattleScreenAfterMenu(void); +void sub_800F808(void); +void AddMoney(u32* moneySaveblock, u32 to_give); +void sub_80156DC(void); //set sentpokes value +bool8 sub_8014AB8(u8 bank); //can run from battle +u8 CountAliveMons(u8 caseID); +void sub_803E1B0(struct Pokemon*, u16 item, u8 partyID, u8 r3, u8 sp); +u8 CanRunFromBattle(void); +u8 GetMoveTarget(u16 move, u8 targetbyte); //get target of move +void sub_80153D0(u8 atk); //pressure perish song pp decrement +u8 CastformDataTypeChange(u8 bank); +void b_push_move_exec(u8* bs_ptr); +u8 Overworld_GetMapTypeOfSaveblockLocation(void); +u8 CalculatePlayerPartyCount(void); +u16 Sqrt(u32 num); +u8 sub_809070C(u16 nationalNum, u32 TiD, u32 PiD); //task prepare poke dex display +void sub_814A880(u8 a1, u8 a2); +u8 CheckMoveLimitations(u8 bank, u8 unusable_moves, u8 flags); +void sub_801529C(u8 bank); +bool8 IsLinkDoubleBattle(void); +void sub_8094B6C(u8 bank, u8 partyID, u8 r2); + +//extern BattleScripts +extern u8 BattleScript_EndTurn[]; +extern u8 BattleScript_NoPPForMove[]; +extern u8 BattleScript_MagicCoatBounce[]; +extern u8 BattleScript_TookAttack[]; +extern u8 BattleScript_SnatchedMove[]; +extern u8 BattleScript_Pausex20[]; +extern u8 BattleScript_SubstituteFade[]; +extern u8 BattleScript_HangedOnMsg[]; +extern u8 BattleScript_OneHitKOMsg[]; +extern u8 BattleScript_EnduredMsg[]; +extern u8 BattleScript_PSNPrevention[]; +extern u8 BattleScript_BRNPrevention[]; +extern u8 BattleScript_PRLZPrevention[]; +extern u8 BattleScript_FlinchPrevention[]; +extern u8 BattleScript_StatUp[]; +extern u8 BattleScript_StatDown[]; +extern u8 BattleScript_NoItemSteal[]; +extern u8 BattleScript_ItemSteal[]; +extern u8 BattleScript_RapidSpinAway[]; +extern u8 BattleScript_TargetPRLZHeal[]; +extern u8 BattleScript_KnockedOff[]; +extern u8 BattleScript_LevelUp[]; +extern u8 BattleScript_WrapFree[]; +extern u8 BattleScript_LeechSeedFree[]; +extern u8 BattleScript_SpikesFree[]; +extern u8 BattleScript_ButItFailed[]; +extern u8 BattleScript_ObliviousPreventsAttraction[]; +extern u8 BattleScript_MistProtected[]; +extern u8 BattleScript_AbilityNoStatLoss[]; +extern u8 BattleScript_AbilityNoSpecificStatLoss[]; +extern u8 BattleScript_TrainerBallBlock[]; +extern u8 BattleScript_WallyBallThrow[]; +extern u8 BattleScript_SuccessBallThrow[]; +extern u8 BattleScript_ShakeBallThrow[]; +extern u8 BattleScript_AllStatsUp[]; +extern u8 BattleScript_AtkDefDown[]; +extern u8 BattleScript_SAtkDown2[]; + +extern u8 gUnknown_081D919F[]; //spikes1 +extern u8 gUnknown_081D9171[]; //spikes2 +extern u8 gUnknown_081D91CD[]; //spikes3 +extern u8 BattleScript_1D6F44[]; //present dmg +extern u8 BattleScript_1D83B5[]; //present full hp +extern u8 BattleScript_1D839B[]; //present hp heal +extern u8 BattleScript_1D6F74[]; +extern u8 BattleScript_CastformChange[]; +extern u8 gUnknown_081D9834[]; +extern u8 gUnknown_081D90FC[]; //bs random switchout +extern u8 gUnknown_081D95DB[]; //bs payday money give +extern u8 gUnknown_081D8C58[]; +extern u8 gUnknown_081D8C65[]; +extern u8 gUnknown_081D9156[]; +extern u8 gUnknown_081D9468[]; + + +//useful macros +//read via orr +#define BSScriptRead32(ptr) ((ptr)[0] | (ptr)[1] << 8 | (ptr)[2] << 16 | (ptr)[3] << 24) +#define BSScriptRead8(ptr) (((u8)((ptr)[0]))) +#define BSScriptReadPtr(ptr) ((void *)BSScriptRead32(ptr)) + +//read via add +#define BS2ScriptRead32(ptr) ((ptr)[0] + ((ptr)[1] << 8) + ((ptr)[2] << 16) + ((ptr)[3] << 24)) +#define BS2ScriptRead16(ptr) ((ptr)[0] + ((ptr)[1] << 8)) +#define BS2ScriptReadPtr(ptr) ((void *)BS2ScriptRead32(ptr)) + +#define TargetProtectAffected ((gProtectStructs[gBankTarget].protected && gBattleMoves[gCurrentMove].flags & FLAG_PROTECT_AFFECTED)) + +//array entries for battle communication +#define MOVE_EFFECT_BYTE 0x3 +#define MULTISTRING_CHOOSER 0x5 +#define MSG_DISPLAY 0x7 + +#define TARGET_SELECTED 0x0 +#define TARGET_DEPENDS 0x1 +#define TARGET_BOTH 0x8 +#define TARGET_FOES_AND_ALLY 0x20 +#define TARGET_OPPONENTS_FIELD 0x40 + +#define TYPE_FORESIGHT 0xFE +#define TYPE_ENDTABLE 0xFF + +#define CMP_EQUAL 0x0 +#define CMP_NOT_EQUAL 0x1 +#define CMP_GREATER_THAN 0x2 +#define CMP_LESS_THAN 0x3 +#define CMP_COMMON_BITS 0x4 +#define CMP_NO_COMMON_BITS 0x5 + +#define uBYTE0_16(value)(( (u8) (((u16)(value) & (0x000000FF)) >> 0x00))) +#define uBYTE1_16(value)(( (u8) (((u16)(value) & (0x0000FF00)) >> 0x08))) + +#define uBYTE0_32(value)(( (u8) (((u32)(value) & (0x000000FF)) >> 0x00))) +#define uBYTE1_32(value)(( (u8) (((u32)(value) & (0x0000FF00)) >> 0x08))) +#define uBYTE2_32(value)(( (u8) (((u32)(value) & (0x00FF0000)) >> 0x10))) +#define uBYTE3_32(value)(( (u8) (((u32)(value) & (0xFF000000)) >> 0x18))) + +#define sBYTE0_16(value)(( (u8) (((s16)(value) & (0x000000FF)) >> 0x00))) +#define sBYTE1_16(value)(( (u8) (((s16)(value) & (0x0000FF00)) >> 0x08))) + +#define sBYTE0_32(value)(( (u8) (((s32)(value) & (0x000000FF)) >> 0x00))) +#define sBYTE1_32(value)(( (u8) (((s32)(value) & (0x0000FF00)) >> 0x08))) +#define sBYTE2_32(value)(( (u8) (((s32)(value) & (0x00FF0000)) >> 0x10))) +#define sBYTE3_32(value)(( (u8) (((s32)(value) & (0xFF000000)) >> 0x18))) + +#define USED_HELD_ITEM(bank)((((u16*)(&unk_2000000[bank * 2 + 0x160cc])))) + +#define RecordAbilitySetField6(ability, fieldValue) \ +(gLastUsedAbility = ability, gBattleCommunication[6] = fieldValue, RecordAbilityBattle(gBankTarget, ability)) + +#define TARGET_TURN_DAMAGED (((gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_physical.moveturnLostHP_special))) + +#define HP_ON_SWITCHOUT (((u16*)(0x020160bc))) + +static void atk00_attackcanceler(void); +static void atk01_accuracycheck(void); +static void atk02_attackstring(void); +static void atk03_ppreduce(void); +static void atk04_critcalc(void); +static void atk05_damagecalc1(void); +static void atk06_typecalc(void); +static void atk07_dmg_adjustment(void); +static void atk08_dmg_adjustment2(void); +static void atk09_attackanimation(void); +static void atk0A_waitanimation(void); +static void atk0B_healthbarupdate(void); +static void atk0C_datahpupdate(void); +static void atk0D_critmessage(void); +static void atk0E_effectiveness_sound(void); +static void atk0F_resultmessage(void); +static void atk10_printstring(void); +static void atk11_printstring_playeronly(void); +static void atk12_waitmessage(void); +static void atk13_printfromtable(void); +static void atk14_printfromtable_playeronly(void); +static void atk15_seteffectwithchancetarget(void); +static void atk16_seteffectprimary(void); +static void atk17_seteffectsecondary(void); +static void atk18_status_effect_clear(void); +static void atk19_faint_pokemon(void); +static void atk1A_faint_animation(void); +static void atk1B_faint_effects_clear(void); +static void atk1C_jumpifstatus(void); +static void atk1D_jumpifstatus2(void); +static void atk1E_jumpifability(void); +static void atk1F_jumpifsideaffecting(void); +static void atk20_jumpifstat(void); +static void atk21_jumpifstatus3(void); +static void atk22_jumpiftype(void); +static void atk23_getexp(void); +static void atk24(void); +static void atk25_move_values_cleanup(void); +static void atk26_set_multihit(void); +static void atk27_decrement_multihit(void); +static void atk28_goto(void); +static void atk29_jumpifbyte(void); +static void atk2A_jumpifhalfword(void); +static void atk2B_jumpifword(void); +static void atk2C_jumpifarrayequal(void); +static void atk2D_jumpifarraynotequal(void); +static void atk2E_setbyte(void); +static void atk2F_addbyte(void); +static void atk30_subbyte(void); +static void atk31_copyarray(void); +static void atk32_copyarray_withindex(void); +static void atk33_orbyte(void); +static void atk34_orhalfword(void); +static void atk35_orword(void); +static void atk36_bicbyte(void); +static void atk37_bichalfword(void); +static void atk38_bicword(void); +static void atk39_pause(void); +static void atk3A_waitstate(void); +static void atk3B_healthbar_update(void); +static void atk3C_return(void); +static void atk3D_end(void); +static void atk3E_end2(void); +static void atk3F_end3(void); +static void atk40_jump_if_move_affected_by_protect(void); +static void atk41_call(void); +static void atk42_jumpiftype2(void); +static void atk43_jumpifabilitypresent(void); +static void atk44(void); +static void atk45_playanimation(void); +static void atk46_playanimation2(void); +static void atk47_setgraphicalstatchangevalues(void); +static void atk48_playstatchangeanimation(void); +static void atk49_moveendturn(void); +static void atk4A_typecalc2(void); +static void atk4B_return_atk_to_ball(void); +static void atk4C_copy_poke_data(void); +static void atk4D_switch_data_update(void); +static void atk4E_switchin_anim(void); +static void atk4F_jump_if_cannot_switch(void); +static void atk50_openpartyscreen(void); +static void atk51_switch_handle_order(void); +static void atk52_switch_in_effects(void); +static void atk53_trainer_slide(void); +static void atk54_effectiveness_sound(void); +static void atk55_play_sound(void); +static void atk56_fainting_cry(void); +static void atk57(void); +static void atk58_return_to_ball(void); +void atk59_learnmove_inbattle(void); +static void atk5A(void); +static void atk5B_80256E0(void); +static void atk5C_hitanimation(void); +static void atk5D_getmoneyreward(void); +static void atk5E_8025A70(void); +static void atk5F_8025B24(void); +static void atk60_increment_gamestat(void); +static void atk61_8025BA4(void); +static void atk62_08025C6C(void); +static void atk63_jumptorandomattack(void); +static void atk64_statusanimation(void); +static void atk65_status2animation(void); +static void atk66_chosenstatusanimation(void); +static void atk67_8025ECC(void); +static void atk68_80246A0(void); +static void atk69_dmg_adjustment2(void); +void atk6A_removeitem(void); +static void atk6B_atknameinbuff1(void); +static void atk6C_lvlbox_display(void); +static void atk6D_set_sentpokes_values(void); +static void atk6E_set_atk_to_player0(void); +static void atk6F_set_visible(void); +static void atk70_record_ability(void); +static void atk71_buffer_move_to_learn(void); +static void atk72_jump_if_can_run_frombattle(void); +static void atk73_hp_thresholds(void); +static void atk74_hp_thresholds2(void); +static void atk75_8026A58(void); +static void atk76_various(void); +static void atk77_setprotect(void); +static void atk78_faintifabilitynotdamp(void); +static void atk79_setatkhptozero(void); +static void atk7A_jumpwhiletargetvalid(void); +static void atk7B_healhalfHP_if_possible(void); +static void atk7C_8025508(void); +static void atk7D_set_rain(void); +static void atk7E_setreflect(void); +static void atk7F_setseeded(void); +static void atk80_manipulatedamage(void); +static void atk81_setrest(void); +static void atk82_jumpifnotfirstturn(void); +static void atk83_nop(void); +static void atk84_jump_if_cant_sleep(void); +static void atk85_stockpile(void); +static void atk86_stockpiletobasedamage(void); +static void atk87_stockpiletohpheal(void); +static void atk88_negativedamage(void); +static u8 ChangeStatBuffs(s8, u8, u8, u8*); +static void atk89_statbuffchange(void); +static void atk8A_normalisebuffs(void); +static void atk8B_setbide(void); +static void atk8C_confuseifrepeatingattackends(void); +static void atk8D_setmultihit_counter(void); +static void atk8E_prepare_multihit(void); +static void atk8F_forcerandomswitch(void); +static void atk90_conversion_type_change(void); +static void atk91_givepaydaymoney(void); +static void atk92_setlightscreen(void); +static void atk93_ko_move(void); +static void atk94_gethalfcurrentenemyhp(void); +static void atk95_setsandstorm(void); +static void atk96_weatherdamage(void); +static void atk97_try_infatuation(void); +static void atk98_status_icon_update(void); +static void atk99_setmist(void); +static void atk9A_set_focusenergy(void); +static void atk9B_transformdataexecution(void); +static void atk9C_set_substitute(void); +static void atk9D_copyattack(void); +static void atk9E_metronome(void); +static void atk9F_dmgtolevel(void); +static void atkA0_psywavedamageeffect(void); +static void atkA1_counterdamagecalculator(void); +static void atkA2_mirrorcoatdamagecalculator(void); +static void atkA3_disablelastusedattack(void); +static void atkA4_setencore(void); +static void atkA5_painsplitdmgcalc(void); +static void atkA6_settypetorandomresistance(void); +static void atkA7_setalwayshitflag(void); +static void atkA8_copymovepermanently(void); +static void atkA9_sleeptalk_choose_move(void); +static void atkAA_set_destinybond(void); +static void atkAB_DestinyBondFlagUpdate(void); +static void atkAC_remaininghptopower(void); +static void atkAD_spite_ppreduce(void); +static void atkAE_heal_party_status(void); +static void atkAF_cursetarget(void); +static void atkB0_set_spikes(void); +static void atkB1_set_foresight(void); +static void atkB2_setperishsong(void); +static void atkB3_rolloutdamagecalculation(void); +static void atkB4_jumpifconfusedandstatmaxed(void); +static void atkB5_furycuttercalc(void); +static void atkB6_happinesstodamagecalculation(void); +static void atkB7_presentdamagecalculation(void); +static void atkB8_set_safeguard(void); +static void atkB9_magnitudedamagecalculation(void); +static void atkBA_jumpifnopursuitswitchdmg(void); +static void atkBB_setsunny(void); +static void atkBC_maxattackhalvehp(void); +static void atkBD_copyfoestats(void); +static void atkBE_breakfree(void); +static void atkBF_set_defense_curl(void); +static void atkC0_recoverbasedonsunlight(void); +static void atkC1_hidden_power(void); +static void atkC2_selectnexttarget(void); +static void atkC3_setfutureattack(void); +static void atkC4_beat_up(void); +static void atkC5_hidepreattack(void); +static void atkC6_unhidepostattack(void); +static void atkC7_setminimize(void); +static void atkC8_sethail(void); +static void atkC9_jumpifattackandspecialattackcannotfall(void); +static void atkCA_setforcedtarget(void); +static void atkCB_setcharge(void); +static void atkCC_callterrainattack(void); +static void atkCD_cureifburnedparalysedorpoisoned(void); +static void atkCE_settorment(void); +static void atkCF_jumpifnodamage(void); +static void atkD0_settaunt(void); +static void atkD1_set_helpinghand(void); +static void atkD2_swap_items(void); +static void atkD3_copy_ability(void); +static void atkD4_wish_effect(void); +static void atkD5_setroots(void); +static void atkD6_doubledamagedealtifdamaged(void); +static void atkD7_setyawn(void); +static void atkD8_setdamagetohealthdifference(void); +static void atkD9_scaledamagebyhealthratio(void); +static void atkDA_abilityswap(void); +static void atkDB_imprisoneffect(void); +static void atkDC_setgrudge(void); +static void atkDD_weightdamagecalculation(void); +static void atkDE_asistattackselect(void); +static void atkDF_setmagiccoat(void); +static void atkE0_setstealstatchange(void); +static void atkE1_intimidate_string_loader(void); +static void atkE2_switchout_abilities(void); +static void atkE3_jumpiffainted(void); +static void atkE4_getsecretpowereffect(void); +static void atkE5_pickup(void); +static void atkE6_castform_change_animation(void); +static void atkE7_castform_data_change(void); +static void atkE8_settypebasedhalvers(void); +static void atkE9_setweatherballtype(void); +static void atkEA_recycleitem(void); +static void atkEB_settypetoterrain(void); +static void atkEC_pursuit_sth(void); +static void atkED_802B4B4(void); +static void atkEE_removelightscreenreflect(void); +void atkEF_pokeball_catch_calculation(void); +static void atkF0_copy_caught_poke(void); +static void atkF1_setpoke_as_caught(void); +static void atkF2_display_dex_info(void); +static void atkF3_nickname_caught_poke(void); +static void atkF4_802BEF0(void); +static void atkF5_removeattackerstatus1(void); +static void atkF6_802BF48(void); +static void atkF7_802BF54(void); + +const BattleCmdFunc gBattleScriptingCommandsTable[] = +{ + atk00_attackcanceler, + atk01_accuracycheck, + atk02_attackstring, + atk03_ppreduce, + atk04_critcalc, + atk05_damagecalc1, + atk06_typecalc, + atk07_dmg_adjustment, + atk08_dmg_adjustment2, + atk09_attackanimation, + atk0A_waitanimation, + atk0B_healthbarupdate, + atk0C_datahpupdate, + atk0D_critmessage, + atk0E_effectiveness_sound, + atk0F_resultmessage, + atk10_printstring, + atk11_printstring_playeronly, + atk12_waitmessage, + atk13_printfromtable, + atk14_printfromtable_playeronly, + atk15_seteffectwithchancetarget, + atk16_seteffectprimary, + atk17_seteffectsecondary, + atk18_status_effect_clear, + atk19_faint_pokemon, + atk1A_faint_animation, + atk1B_faint_effects_clear, + atk1C_jumpifstatus, + atk1D_jumpifstatus2, + atk1E_jumpifability, + atk1F_jumpifsideaffecting, + atk20_jumpifstat, + atk21_jumpifstatus3, + atk22_jumpiftype, + atk23_getexp, + atk24, + atk25_move_values_cleanup, + atk26_set_multihit, + atk27_decrement_multihit, + atk28_goto, + atk29_jumpifbyte, + atk2A_jumpifhalfword, + atk2B_jumpifword, + atk2C_jumpifarrayequal, + atk2D_jumpifarraynotequal, + atk2E_setbyte, + atk2F_addbyte, + atk30_subbyte, + atk31_copyarray, + atk32_copyarray_withindex, + atk33_orbyte, + atk34_orhalfword, + atk35_orword, + atk36_bicbyte, + atk37_bichalfword, + atk38_bicword, + atk39_pause, + atk3A_waitstate, + atk3B_healthbar_update, + atk3C_return, + atk3D_end, + atk3E_end2, + atk3F_end3, + atk40_jump_if_move_affected_by_protect, + atk41_call, + atk42_jumpiftype2, + atk43_jumpifabilitypresent, + atk44, + atk45_playanimation, + atk46_playanimation2, + atk47_setgraphicalstatchangevalues, + atk48_playstatchangeanimation, + atk49_moveendturn, + atk4A_typecalc2, + atk4B_return_atk_to_ball, + atk4C_copy_poke_data, + atk4D_switch_data_update, + atk4E_switchin_anim, + atk4F_jump_if_cannot_switch, + atk50_openpartyscreen, + atk51_switch_handle_order, + atk52_switch_in_effects, + atk53_trainer_slide, + atk54_effectiveness_sound, + atk55_play_sound, + atk56_fainting_cry, + atk57, + atk58_return_to_ball, + atk59_learnmove_inbattle, + atk5A, + atk5B_80256E0, + atk5C_hitanimation, + atk5D_getmoneyreward, + atk5E_8025A70, + atk5F_8025B24, + atk60_increment_gamestat, + atk61_8025BA4, + atk62_08025C6C, + atk63_jumptorandomattack, + atk64_statusanimation, + atk65_status2animation, + atk66_chosenstatusanimation, + atk67_8025ECC, + atk68_80246A0, + atk69_dmg_adjustment2, + atk6A_removeitem, + atk6B_atknameinbuff1, + atk6C_lvlbox_display, + atk6D_set_sentpokes_values, + atk6E_set_atk_to_player0, + atk6F_set_visible, + atk70_record_ability, + atk71_buffer_move_to_learn, + atk72_jump_if_can_run_frombattle, + atk73_hp_thresholds, + atk74_hp_thresholds2, + atk75_8026A58, + atk76_various, + atk77_setprotect, + atk78_faintifabilitynotdamp, + atk79_setatkhptozero, + atk7A_jumpwhiletargetvalid, + atk7B_healhalfHP_if_possible, + atk7C_8025508, + atk7D_set_rain, + atk7E_setreflect, + atk7F_setseeded, + atk80_manipulatedamage, + atk81_setrest, + atk82_jumpifnotfirstturn, + atk83_nop, + atk84_jump_if_cant_sleep, + atk85_stockpile, + atk86_stockpiletobasedamage, + atk87_stockpiletohpheal, + atk88_negativedamage, + atk89_statbuffchange, + atk8A_normalisebuffs, + atk8B_setbide, + atk8C_confuseifrepeatingattackends, + atk8D_setmultihit_counter, + atk8E_prepare_multihit, + atk8F_forcerandomswitch, + atk90_conversion_type_change, + atk91_givepaydaymoney, + atk92_setlightscreen, + atk93_ko_move, + atk94_gethalfcurrentenemyhp, + atk95_setsandstorm, + atk96_weatherdamage, + atk97_try_infatuation, + atk98_status_icon_update, + atk99_setmist, + atk9A_set_focusenergy, + atk9B_transformdataexecution, + atk9C_set_substitute, + atk9D_copyattack, + atk9E_metronome, + atk9F_dmgtolevel, + atkA0_psywavedamageeffect, + atkA1_counterdamagecalculator, + atkA2_mirrorcoatdamagecalculator, + atkA3_disablelastusedattack, + atkA4_setencore, + atkA5_painsplitdmgcalc, + atkA6_settypetorandomresistance, + atkA7_setalwayshitflag, + atkA8_copymovepermanently, + atkA9_sleeptalk_choose_move, + atkAA_set_destinybond, + atkAB_DestinyBondFlagUpdate, + atkAC_remaininghptopower, + atkAD_spite_ppreduce, + atkAE_heal_party_status, + atkAF_cursetarget, + atkB0_set_spikes, + atkB1_set_foresight, + atkB2_setperishsong, + atkB3_rolloutdamagecalculation, + atkB4_jumpifconfusedandstatmaxed, + atkB5_furycuttercalc, + atkB6_happinesstodamagecalculation, + atkB7_presentdamagecalculation, + atkB8_set_safeguard, + atkB9_magnitudedamagecalculation, + atkBA_jumpifnopursuitswitchdmg, + atkBB_setsunny, + atkBC_maxattackhalvehp, + atkBD_copyfoestats, + atkBE_breakfree, + atkBF_set_defense_curl, + atkC0_recoverbasedonsunlight, + atkC1_hidden_power, + atkC2_selectnexttarget, + atkC3_setfutureattack, + atkC4_beat_up, + atkC5_hidepreattack, + atkC6_unhidepostattack, + atkC7_setminimize, + atkC8_sethail, + atkC9_jumpifattackandspecialattackcannotfall, + atkCA_setforcedtarget, + atkCB_setcharge, + atkCC_callterrainattack, + atkCD_cureifburnedparalysedorpoisoned, + atkCE_settorment, + atkCF_jumpifnodamage, + atkD0_settaunt, + atkD1_set_helpinghand, + atkD2_swap_items, + atkD3_copy_ability, + atkD4_wish_effect, + atkD5_setroots, + atkD6_doubledamagedealtifdamaged, + atkD7_setyawn, + atkD8_setdamagetohealthdifference, + atkD9_scaledamagebyhealthratio, + atkDA_abilityswap, + atkDB_imprisoneffect, + atkDC_setgrudge, + atkDD_weightdamagecalculation, + atkDE_asistattackselect, + atkDF_setmagiccoat, + atkE0_setstealstatchange, + atkE1_intimidate_string_loader, + atkE2_switchout_abilities, + atkE3_jumpiffainted, + atkE4_getsecretpowereffect, + atkE5_pickup, + atkE6_castform_change_animation, + atkE7_castform_data_change, + atkE8_settypebasedhalvers, + atkE9_setweatherballtype, + atkEA_recycleitem, + atkEB_settypetoterrain, + atkEC_pursuit_sth, + atkED_802B4B4, + atkEE_removelightscreenreflect, + atkEF_pokeball_catch_calculation, + atkF0_copy_caught_poke, + atkF1_setpoke_as_caught, + atkF2_display_dex_info, + atkF3_nickname_caught_poke, + atkF4_802BEF0, + atkF5_removeattackerstatus1, + atkF6_802BF48, + atkF7_802BF54, +}; + +struct statFractions +{ + u8 dividend; + u8 divisor; +}; + +static const struct statFractions gAccuracyStageRatios[] = +{ + { 33, 100}, // -6 + { 36, 100}, // -5 + { 43, 100}, // -4 + { 50, 100}, // -3 + { 60, 100}, // -2 + { 75, 100}, // -1 + { 1, 1}, // 0 + {133, 100}, // +1 + {166, 100}, // +2 + { 2, 1}, // +3 + {233, 100}, // +4 + {133, 50}, // +5 + { 3, 1}, // +6 +}; + +//The chance is 1/N for each stage. +static const u16 gCriticalHitChance[] = {16, 8, 4, 3, 2}; + +static const u32 gStatusFlagsForMoveEffects[] = +{ + 0x00000000, + 0x00000007, + 0x00000008, + 0x00000010, + 0x00000020, + 0x00000040, + 0x00000080, + 0x00000007, + 0x00000008, + 0x00000000, + 0x00000070, + 0x00000000, + 0x00001000, + 0x0000E000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00400000, + 0x00000000, + 0x00000000, + 0x04000000, + 0x08000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000C00, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000 +}; + +extern u8 BattleScript_1D963E[]; +extern u8 BattleScript_1D965A[]; +extern u8 BattleScript_1D9669[]; +extern u8 BattleScript_1D9678[]; +extern u8 BattleScript_1D9687[]; +extern u8 BattleScript_1D969D[]; +extern u8 BattleScript_1D96BA[]; +extern u8 BattleScript_1D9696[]; +extern u8 BattleScript_1D96B1[]; +extern u8 BattleScript_1D96AA[]; +extern u8 BattleScript_1D96C8[]; + +u8* const gMoveEffectBS_Ptrs[] = +{ + BattleScript_1D963E, + BattleScript_1D963E, + BattleScript_1D965A, + BattleScript_1D9669, + BattleScript_1D9678, + BattleScript_1D9687, + BattleScript_1D969D, + BattleScript_1D96BA, + BattleScript_1D963E, + BattleScript_1D963E, + BattleScript_1D9696, + BattleScript_1D96AA, + BattleScript_1D963E, + BattleScript_1D96B1, + BattleScript_1D96C8, + BattleScript_1D963E, + BattleScript_1D963E, + BattleScript_1D963E, + BattleScript_1D963E, + BattleScript_1D963E, + BattleScript_1D963E, + BattleScript_1D963E, + BattleScript_1D963E, + BattleScript_1D963E, + BattleScript_1D963E, + BattleScript_1D963E, + BattleScript_1D963E, + BattleScript_1D963E, + BattleScript_1D963E, + BattleScript_1D963E, + BattleScript_1D963E, + BattleScript_1D963E, + BattleScript_1D963E, + BattleScript_1D963E, + BattleScript_1D963E, + BattleScript_1D963E, + BattleScript_1D963E, + BattleScript_1D963E, + BattleScript_1D96C8 +}; + +const u8 sUnreferencedBitMask1[] = {0, 1, 3, 7, 0xF, 0x1F, 0x3F}; + +const u8 gLevelUpStatBoxStats[] = {MON_DATA_MAX_HP, MON_DATA_SPATK, MON_DATA_ATK, MON_DATA_SPDEF, MON_DATA_DEF, MON_DATA_SPD}; + +static const u16 sProtectSuccessRates[] = {0xFFFF, 0x7FFF, 0x3FFF, 0x1FFF}; + +static const u16 sUnknown_081FACFE[] = //banned moves to copy +{ + MOVE_METRONOME, + MOVE_STRUGGLE, + MOVE_SKETCH, + MOVE_MIMIC, + 0xFFFE, + MOVE_COUNTER, + MOVE_MIRROR_COAT, + MOVE_PROTECT, + MOVE_DETECT, + MOVE_ENDURE, + MOVE_DESTINY_BOND, + MOVE_SLEEP_TALK, + MOVE_THIEF, + MOVE_FOLLOW_ME, + MOVE_SNATCH, + MOVE_HELPING_HAND, + MOVE_COVET, + MOVE_TRICK, + MOVE_FOCUS_PUNCH, + 0xFFFF +}; + +static const u8 sUnknown_081FAD26[] = //reversal+flail HP thresholds to power +{ + 1, 200, + 4, 150, + 9, 100, + 16, 80, + 32, 40, + 48, 20 +}; + +static const u16 sNaturePowerMoves[] = +{ + MOVE_STUN_SPORE, + MOVE_RAZOR_LEAF, + MOVE_EARTHQUAKE, + MOVE_HYDRO_PUMP, + MOVE_SURF, + MOVE_BUBBLE_BEAM, + MOVE_ROCK_SLIDE, + MOVE_SHADOW_BALL, + MOVE_SWIFT, + MOVE_SWIFT +}; + +//weight-based damage table for Low Kick +//format: min. weight (hectograms), base power +static const u16 sWeightDamage[] = +{ + 100, 20, + 250, 40, + 500, 60, + 1000, 80, + 2000, 100, + -1, -1 +}; + +static const u16 sPickupItems[] = +{ + ITEM_SUPER_POTION, 30, + ITEM_FULL_HEAL, 40, + ITEM_ULTRA_BALL, 50, + ITEM_RARE_CANDY, 60, + ITEM_FULL_RESTORE, 70, + ITEM_REVIVE, 80, + ITEM_NUGGET, 90, + ITEM_PROTEIN, 95, + ITEM_PP_UP, 99, + ITEM_KINGS_ROCK, 1 +}; + +static const u8 sTerrainToType[] = +{ + TYPE_GRASS, // tall grass + TYPE_GRASS, // long grass + TYPE_GROUND, // sand + TYPE_WATER, // underwater + TYPE_WATER, // water + TYPE_WATER, // pond water + TYPE_ROCK , // rock + TYPE_ROCK , // cave + TYPE_NORMAL, // building + TYPE_NORMAL, // plain +}; + +static const u8 sBallCatchBonuses[] = +{ + 20, 15, 10, 15 //Ultra, Great, Poke, Safari +}; + +static void atk00_attackcanceler(void) +{ + int i; + if (gBattleOutcome) + { + gFightStateTracker = 0xC; + return; + } + if (gBattleMons[gBankAttacker].hp == 0 && !(gHitMarker & HITMARKER_NO_ATTACKSTRING)) + { + gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; + gBattlescriptCurrInstr = BattleScript_EndTurn; + return; + } + if (AtkCanceller_UnableToUseMove()) + return; + if (AbilityBattleEffects(2, gBankTarget, 0, 0, 0)) + return; + if (!gBattleMons[gBankAttacker].pp[gCurrMovePos] && gCurrentMove != MOVE_STRUGGLE && !(gHitMarker & 0x800200) + && !(gBattleMons[gBankAttacker].status2 & STATUS2_MULTIPLETURNS)) + { + gBattlescriptCurrInstr = BattleScript_NoPPForMove; + gBattleMoveFlags |= MOVESTATUS_MISSED; + return; + } + gHitMarker &= ~(HITMARKER_x800000); + if (!(gHitMarker & HITMARKER_OBEYS) && !(gBattleMons[gBankAttacker].status2 & STATUS2_MULTIPLETURNS)) + { + u8 disobedient = IsPokeDisobedient(); + asm("":::"r0"); //It's impossible to match + asm("":::"r1"); + if ((disobedient)) + { + if (disobedient == 2) + gHitMarker |= HITMARKER_OBEYS; + else + gBattleMoveFlags |= MOVESTATUS_MISSED; + return; + } + } + gHitMarker |= HITMARKER_OBEYS; + if (gProtectStructs[gBankTarget].bounceMove && gBattleMoves[gCurrentMove].flags & FLAG_MAGICCOAT_AFFECTED) + { + PressurePPLose(gBankAttacker, gBankTarget, MOVE_MAGIC_COAT); + gProtectStructs[gBankTarget].bounceMove = 0; + b_movescr_stack_push_cursor(); + gBattlescriptCurrInstr = BattleScript_MagicCoatBounce; + return; + } + for (i = 0; i < gNoOfAllBanks; i++) + { + if ((gProtectStructs[gTurnOrder[i]].stealMove) && gBattleMoves[gCurrentMove].flags & FLAG_SNATCH_AFFECTED) + { + PressurePPLose(gBankAttacker, gTurnOrder[i], MOVE_SNATCH); + gProtectStructs[gTurnOrder[i]].stealMove = 0; + BATTLE_STRUCT->scriptingActive = gTurnOrder[i]; + b_movescr_stack_push_cursor(); + gBattlescriptCurrInstr = BattleScript_SnatchedMove; + return; + } + } + if (gSpecialStatuses[gBankTarget].lightningRodRedirected) + { + gSpecialStatuses[gBankTarget].lightningRodRedirected = 0; + gLastUsedAbility = ABILITY_LIGHTNING_ROD; + b_movescr_stack_push_cursor(); + gBattlescriptCurrInstr = BattleScript_TookAttack; + RecordAbilityBattle(gBankTarget, gLastUsedAbility); + } + else if (TargetProtectAffected + && (gCurrentMove != MOVE_CURSE || (gBattleMons[gBankAttacker].type1 == TYPE_GHOST || gBattleMons[gBankAttacker].type2 == TYPE_GHOST)) + && ((!IsTwoTurnsMove(gCurrentMove) || (gBattleMons[gBankAttacker].status2 & STATUS2_MULTIPLETURNS)))) + { + CancelMultiTurnMoves(gBankAttacker); + gBattleMoveFlags |= MOVESTATUS_MISSED; + gMoveHitWith[gBankTarget] = 0; + gUnknown_02024C44[gBankTarget] = 0; + gBattleCommunication[6] = 1; + gBattlescriptCurrInstr++; + } + else + { + gBattlescriptCurrInstr++; + } +} + +static void JumpIfMoveFailed(u8 adder, u16 move) +{ + void* to_store = gBattlescriptCurrInstr + adder; + if (gBattleMoveFlags & MOVESTATUS_NOEFFECT) + { + gMoveHitWith[gBankTarget] = 0; + gUnknown_02024C44[gBankTarget] = 0; + to_store = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + } + else + { + DestinyBondFlagUpdate(); + if (AbilityBattleEffects(3, gBankTarget, 0, 0, move)) + return; + } + gBattlescriptCurrInstr = to_store; +} + +static void atk40_jump_if_move_affected_by_protect(void) +{ + if (TargetProtectAffected) + { + gBattleMoveFlags |= MOVESTATUS_MISSED; + JumpIfMoveFailed(5, 0); + gBattleCommunication[6] = 1; + } + else + { + gBattlescriptCurrInstr += 5; + } +} + +static bool8 JumpIfMoveAffectedByProtect(u16 move) +{ + bool8 affected = 0; + if (TargetProtectAffected) + { + gBattleMoveFlags |= MOVESTATUS_MISSED; + JumpIfMoveFailed(7, move); + gBattleCommunication[6] = 1; + affected = 1; + } + return affected; +} + +static bool8 AccuracyCalcHelper(u16 move) +{ + if (gStatuses3[gBankTarget] & STATUS3_ALWAYS_HITS && gDisableStructs[gBankTarget].bankWithSureHit == gBankAttacker) + { + JumpIfMoveFailed(7, move); + return TRUE; + } + + if (!(gHitMarker & HITMARKER_IGNORE_ON_AIR) && gStatuses3[gBankTarget] & STATUS3_ON_AIR) + { + gBattleMoveFlags |= MOVESTATUS_MISSED; + JumpIfMoveFailed(7, move); + return TRUE; + } + gHitMarker &= ~HITMARKER_IGNORE_ON_AIR; + + if (!(gHitMarker & HITMARKER_IGNORE_UNDERGROUND) && gStatuses3[gBankTarget] & STATUS3_UNDERGROUND) + { + gBattleMoveFlags |= MOVESTATUS_MISSED; + JumpIfMoveFailed(7, move); + return TRUE; + } + gHitMarker &= ~HITMARKER_IGNORE_UNDERGROUND; + + if (!(gHitMarker & HITMARKER_IGNORE_UNDERWATER) && gStatuses3[gBankTarget] & STATUS3_UNDERWATER) + { + gBattleMoveFlags |= MOVESTATUS_MISSED; + JumpIfMoveFailed(7, move); + return TRUE; + } + gHitMarker &= ~HITMARKER_IGNORE_UNDERWATER; + + if ((WEATHER_HAS_EFFECT && (gBattleWeather & WEATHER_RAIN_ANY) && gBattleMoves[move].effect == EFFECT_THUNDER) + || (gBattleMoves[move].effect == EFFECT_ALWAYS_HIT || gBattleMoves[move].effect == EFFECT_VITAL_THROW)) + { + JumpIfMoveFailed(7, move); + return TRUE; + } + return FALSE; +} + +static void atk01_accuracycheck(void) +{ + u16 move = BS2ScriptRead16(gBattlescriptCurrInstr + 5); + if (move == 0xFFFE || move == 0xFFFF) + { + if (gStatuses3[gBankTarget] & STATUS3_ALWAYS_HITS && move == 0xFFFF && gDisableStructs[gBankTarget].bankWithSureHit == gBankAttacker) + gBattlescriptCurrInstr += 7; + else if (gStatuses3[gBankTarget] & (STATUS3_ON_AIR | STATUS3_UNDERGROUND | STATUS3_UNDERWATER)) + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + else if (!JumpIfMoveAffectedByProtect(0)) + gBattlescriptCurrInstr += 7; + } + else + { + u8 type; s8 buff; u8 MoveAcc; u16 calc; u8 hold_effect; u8 quality; + if (move == 0) {move = gCurrentMove;} + + if (BATTLE_STRUCT->dynamicMoveType) + type = BATTLE_STRUCT->dynamicMoveType & 0x3F; + else + type = gBattleMoves[move].type; + + if (JumpIfMoveAffectedByProtect(move)) + return; + if (AccuracyCalcHelper(move)) + return; + + if (gBattleMons[gBankTarget].status2 & STATUS2_FORESIGHT) + { + u8 acc = gBattleMons[gBankAttacker].statStages[STAT_STAGE_ACC]; + buff = acc; + } + else + { + u8 acc = gBattleMons[gBankAttacker].statStages[STAT_STAGE_ACC]; + buff = acc + 6 - gBattleMons[gBankTarget].statStages[STAT_STAGE_EVASION]; + } + + if (buff < 0) {buff = 0;} + if (buff > 0xC) {buff = 0xC;} + + MoveAcc = gBattleMoves[move].accuracy; + //check Thunder on sunny weather + if (WEATHER_HAS_EFFECT && gBattleWeather & WEATHER_SUN_ANY && gBattleMoves[move].effect == EFFECT_THUNDER) + MoveAcc = 50; + + calc = gAccuracyStageRatios[buff].dividend * MoveAcc; + calc /= gAccuracyStageRatios[buff].divisor; + + if (gBattleMons[gBankAttacker].ability == ABILITY_COMPOUND_EYES) + calc = (calc * 130) / 100; //1.3 compound eyes boost + if (WEATHER_HAS_EFFECT && gBattleMons[gBankTarget].ability == ABILITY_SAND_VEIL && gBattleWeather & WEATHER_SANDSTORM_ANY) + calc = (calc * 80) / 100; //1.2 sand veil loss; + if (gBattleMons[gBankAttacker].ability == ABILITY_HUSTLE && type < 9) + calc = (calc * 80) / 100; //1.2 hustle loss; + + if (gBattleMons[gBankTarget].item == ITEM_ENIGMA_BERRY) + hold_effect = gEnigmaBerries[gBankTarget].holdEffect, quality = gEnigmaBerries[gBankTarget].holdEffectParam; + else + { + hold_effect = ItemId_GetHoldEffect(gBattleMons[gBankTarget].item); + quality = ItemId_GetHoldEffectParam(gBattleMons[gBankTarget].item); + } + + gStringBank = gBankTarget; + + if (hold_effect == HOLD_EFFECT_EVASION_UP) + calc = (calc * (100 - quality)) / 100; + + //final calculation + if ((Random() % 100 + 1) > calc) + { + gBattleMoveFlags |= MOVESTATUS_MISSED; + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && (gBattleMoves[move].target == 0x8 || gBattleMoves[move].target == 0x20)) + gBattleCommunication[6] = 2; + else + gBattleCommunication[6] = 0; + b_wonderguard_and_levitate(); + + } + JumpIfMoveFailed(7, move); + } +} + +static void atk02_attackstring(void) +{ + if (gBattleExecBuffer) + return; + if (!(gHitMarker & (HITMARKER_NO_ATTACKSTRING | HITMARKER_ATTACKSTRING_PRINTED))) + { + PrepareStringBattle(4, gBankAttacker); + gHitMarker |= HITMARKER_ATTACKSTRING_PRINTED; + } + gBattlescriptCurrInstr++; + gBattleCommunication[MSG_DISPLAY] = 0; +} + +static void atk03_ppreduce(void) +{ + int to_deduct = 1; + if (gBattleExecBuffer) + return; + if (!gSpecialStatuses[gBankAttacker].flag20) + { + switch (gBattleMoves[gCurrentMove].target) + { + case TARGET_FOES_AND_ALLY: + to_deduct += AbilityBattleEffects(ABILITYEFFECT_COUNT_ON_FIELD, gBankAttacker, ABILITY_PRESSURE, 0, 0); + break; + case TARGET_BOTH: + case TARGET_OPPONENTS_FIELD: + to_deduct += AbilityBattleEffects(ABILITYEFFECT_COUNT_OTHER_SIZE, gBankAttacker, ABILITY_PRESSURE, 0, 0); + break; + default: + if (gBankAttacker != gBankTarget && gBattleMons[gBankTarget].ability == ABILITY_PRESSURE) + to_deduct++; + break; + } + } + if (!(gHitMarker & (HITMARKER_NO_PPDEDUCT | HITMARKER_NO_ATTACKSTRING)) && gBattleMons[gBankAttacker].pp[gCurrMovePos]) + { + gProtectStructs[gBankAttacker].notFirstStrike = 1; + if (gBattleMons[gBankAttacker].pp[gCurrMovePos] > to_deduct) + gBattleMons[gBankAttacker].pp[gCurrMovePos] -= to_deduct; + else + gBattleMons[gBankAttacker].pp[gCurrMovePos] = 0; + + if (!(gBattleMons[gBankAttacker].status2 & STATUS2_TRANSFORMED) + && !((gDisableStructs[gBankAttacker].unk18_b) & gBitTable[gCurrMovePos])) + { + gActiveBank = gBankAttacker; + EmitSetAttributes(0, REQUEST_PPMOVE1_BATTLE + gCurrMovePos, 0, 1, &gBattleMons[gBankAttacker].pp[gCurrMovePos]); + MarkBufferBankForExecution(gBankAttacker); + } + } + gHitMarker &= ~(HITMARKER_NO_PPDEDUCT); + gBattlescriptCurrInstr++; +} + +static void atk04_critcalc(void) +{ + u8 hold_effect; u16 item; u16 crit_chance; int adderv3, adderv5, adderv6, adderv7, adderv8, adderv9, adderv10, adderv11; u16 adderv12; + item = gBattleMons[gBankAttacker].item; + if (item == ITEM_ENIGMA_BERRY) + hold_effect = gEnigmaBerries[gBankAttacker].holdEffect; + else + hold_effect = ItemId_GetHoldEffect(item); + + gStringBank = gBankAttacker; + + if (gBattleMons[gBankAttacker].status2 & STATUS2_FOCUS_ENERGY) + adderv3 = 2; + else + adderv3 = 0; + + if (gBattleMoves[gCurrentMove].effect == EFFECT_HIGH_CRITICAL) {adderv3++;} + adderv5 = adderv3; + if (gBattleMoves[gCurrentMove].effect == EFFECT_SKY_ATTACK) {adderv5 = adderv3 + 1;} + + if (gBattleMoves[gCurrentMove].effect == EFFECT_BLAZE_KICK) {adderv5++;} + adderv6 = adderv5; + if (gBattleMoves[gCurrentMove].effect == EFFECT_POISON_TAIL) {adderv6 = adderv5 + 1;} + + adderv7 = 0; + if (hold_effect == HOLD_EFFECT_LUCKY_PUNCH && gBattleMons[gBankAttacker].species == SPECIES_CHANSEY) {adderv7 = 1;} + adderv8 = 2 * adderv7; + adderv9 = 0; + if (hold_effect == HOLD_EFFECT_STICK && gBattleMons[gBankAttacker].species == SPECIES_FARFETCHD) {adderv9 = 1;} + adderv11 = 2 * adderv9; + if (hold_effect == HOLD_EFFECT_SCOPE_LENS) + {adderv10 = 1 + adderv6 + adderv8; adderv12 = adderv10 + adderv11;} + else + {adderv10 = adderv6 + adderv8; adderv12 = adderv10 + adderv11;} + + crit_chance = adderv12; + + if (crit_chance > 4) {crit_chance = 4;} + + if ((gBattleMons[gBankTarget].ability != ABILITY_BATTLE_ARMOR && gBattleMons[gBankTarget].ability != ABILITY_SHELL_ARMOR) + && !(gStatuses3[gBankAttacker] & STATUS3_CANT_SCORE_A_CRIT) + && !(gBattleTypeFlags & (BATTLE_TYPE_WALLY_TUTORIAL | BATTLE_TYPE_FIRST_BATTLE)) + && !(Random() % gCriticalHitChance[crit_chance])) + gCritMultiplier = 2; + else + gCritMultiplier = 1; + gBattlescriptCurrInstr++; +} + +static void atk05_damagecalc1(void) +{ + u16 side_hword = gSideAffecting[GetBankIdentity(gBankTarget) & 1]; + gBattleMoveDamage = CalculateBaseDamage(&gBattleMons[gBankAttacker], &gBattleMons[gBankTarget], gCurrentMove, + side_hword, gDynamicBasePower, + BATTLE_STRUCT->dynamicMoveType, gBankAttacker, gBankTarget); + gBattleMoveDamage = gBattleMoveDamage * gCritMultiplier * BATTLE_STRUCT->dmgMultiplier; + + if (gStatuses3[gBankAttacker] & STATUS3_CHARGED_UP && gBattleMoves[gCurrentMove].type == TYPE_ELECTRIC) + gBattleMoveDamage *= 2; + if (gProtectStructs[gBankAttacker].helpingHand) + gBattleMoveDamage = gBattleMoveDamage * 15 / 10; + + gBattlescriptCurrInstr++; +} + +void AI_CalcDmg(u8 BankAtk, u8 BankDef) +{ + u16 side_hword = gSideAffecting[GetBankIdentity(BankDef) & 1]; + gBattleMoveDamage = CalculateBaseDamage(&gBattleMons[BankAtk], &gBattleMons[BankDef], gCurrentMove, + side_hword, gDynamicBasePower, + BATTLE_STRUCT->dynamicMoveType, BankAtk, BankDef); + gDynamicBasePower = 0; + gBattleMoveDamage = gBattleMoveDamage * gCritMultiplier * BATTLE_STRUCT->dmgMultiplier; + + if (gStatuses3[BankAtk] & STATUS3_CHARGED_UP && gBattleMoves[gCurrentMove].type == TYPE_ELECTRIC) + gBattleMoveDamage *= 2; + if (gProtectStructs[BankAtk].helpingHand) + gBattleMoveDamage = gBattleMoveDamage * 15 / 10; +} + +static void ModulateDmgByType(u8 multiplier) +{ + gBattleMoveDamage = gBattleMoveDamage * multiplier / 10; + if (gBattleMoveDamage == 0 && multiplier != 0) + gBattleMoveDamage = 1; + + switch (multiplier) + { + case 0: //no effect + gBattleMoveFlags |= MOVESTATUS_NOTAFFECTED; + gBattleMoveFlags &= ~MOVESTATUS_NOTVERYEFFECTIVE; + gBattleMoveFlags &= ~MOVESTATUS_SUPEREFFECTIVE; + break; + case 5: //not very effecting + if (gBattleMoves[gCurrentMove].power && !(gBattleMoveFlags & MOVESTATUS_NOEFFECT)) + { + if (gBattleMoveFlags & MOVESTATUS_SUPEREFFECTIVE) + gBattleMoveFlags &= ~MOVESTATUS_SUPEREFFECTIVE; + else + gBattleMoveFlags |= MOVESTATUS_NOTVERYEFFECTIVE; + } + break; + case 20: //super effective + if (gBattleMoves[gCurrentMove].power && !(gBattleMoveFlags & MOVESTATUS_NOEFFECT)) + { + if (gBattleMoveFlags & MOVESTATUS_NOTVERYEFFECTIVE) + gBattleMoveFlags &= ~MOVESTATUS_NOTVERYEFFECTIVE; + else + gBattleMoveFlags |= MOVESTATUS_SUPEREFFECTIVE; + } + break; + } +} + +static void atk06_typecalc(void) +{ + int i = 0; + u8 move_type; + if (gCurrentMove != MOVE_STRUGGLE) + { + if (BATTLE_STRUCT->dynamicMoveType) + move_type = BATTLE_STRUCT->dynamicMoveType & 0x3F; + else + move_type = gBattleMoves[gCurrentMove].type; + + //check stab + if (gBattleMons[gBankAttacker].type1 == move_type || gBattleMons[gBankAttacker].type2 == move_type) + { + gBattleMoveDamage = gBattleMoveDamage * 15; + gBattleMoveDamage = gBattleMoveDamage / 10; + } + + if (gBattleMons[gBankTarget].ability == ABILITY_LEVITATE && move_type == TYPE_GROUND) + { + gLastUsedAbility = gBattleMons[gBankTarget].ability; + gBattleMoveFlags |= (MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED); + gMoveHitWith[gBankTarget] = 0; + gUnknown_02024C44[gBankTarget] = 0; + gBattleCommunication[6] = move_type; + RecordAbilityBattle(gBankTarget, gLastUsedAbility); + } + else + { + while (gTypeEffectiveness[i]!= TYPE_ENDTABLE) + { + if (gTypeEffectiveness[i] == TYPE_FORESIGHT) + { + if (gBattleMons[gBankTarget].status2 & STATUS2_FORESIGHT) + break; + i += 3; + continue; + } + + else if (gTypeEffectiveness[i] == move_type) + { + //check type1 + if (gTypeEffectiveness[i + 1] == gBattleMons[gBankTarget].type1) + ModulateDmgByType(gTypeEffectiveness[i + 2]); + //check type2 + if (gTypeEffectiveness[i + 1] == gBattleMons[gBankTarget].type2 && + gBattleMons[gBankTarget].type1 != gBattleMons[gBankTarget].type2) + ModulateDmgByType(gTypeEffectiveness[i + 2]); + } + i += 3; + } + } + + if (gBattleMons[gBankTarget].ability == ABILITY_WONDER_GUARD && AttacksThisTurn(gBankAttacker, gCurrentMove) == 2 + && (!(gBattleMoveFlags & MOVESTATUS_SUPEREFFECTIVE) || ((gBattleMoveFlags & (MOVESTATUS_SUPEREFFECTIVE | MOVESTATUS_NOTVERYEFFECTIVE)) == (MOVESTATUS_SUPEREFFECTIVE | MOVESTATUS_NOTVERYEFFECTIVE))) + && gBattleMoves[gCurrentMove].power) + { + gLastUsedAbility = ABILITY_WONDER_GUARD; + gBattleMoveFlags |= MOVESTATUS_MISSED; + gMoveHitWith[gBankTarget] = 0; + gUnknown_02024C44[gBankTarget] = 0; + gBattleCommunication[6] = 3; + RecordAbilityBattle(gBankTarget, gLastUsedAbility); + } + if (gBattleMoveFlags & MOVESTATUS_NOTAFFECTED) + gProtectStructs[gBankAttacker].notEffective = 1; + } + gBattlescriptCurrInstr++; +} +static void b_wonderguard_and_levitate(void) +{ + u8 flags = 0; + int i = 0; + u8 move_type; + + if (gCurrentMove == MOVE_STRUGGLE || !gBattleMoves[gCurrentMove].power) + return; + + if (BATTLE_STRUCT->dynamicMoveType) + move_type = BATTLE_STRUCT->dynamicMoveType & 0x3F; + else + move_type = gBattleMoves[gCurrentMove].type; + + if (gBattleMons[gBankTarget].ability == ABILITY_LEVITATE && move_type == TYPE_GROUND) + { + RecordAbilitySetField6(ABILITY_LEVITATE, move_type); + return; + } + + while (gTypeEffectiveness[i]!= TYPE_ENDTABLE) + { + if (gTypeEffectiveness[i] == TYPE_FORESIGHT) + { + if (gBattleMons[gBankTarget].status2 & STATUS2_FORESIGHT) + break; + i += 3; + continue; + } + + if (gTypeEffectiveness[i] == move_type) + { + //check no effect + if (gTypeEffectiveness[i + 1] == gBattleMons[gBankTarget].type1 && gTypeEffectiveness[i + 2] == 0) + { + gBattleMoveFlags |= MOVESTATUS_NOTAFFECTED; + gProtectStructs[gBankAttacker].notEffective = 1; + } + if (gTypeEffectiveness[i + 1] == gBattleMons[gBankTarget].type2 && + gBattleMons[gBankTarget].type1 != gBattleMons[gBankTarget].type2 && + gTypeEffectiveness[i + 2] == 0) + { + gBattleMoveFlags |= MOVESTATUS_NOTAFFECTED; + gProtectStructs[gBankAttacker].notEffective = 1; + } + + //check super effective + if (gTypeEffectiveness[i + 1] == gBattleMons[gBankTarget].type1 && gTypeEffectiveness[i + 2] == 20) + flags |= 1; + if (gTypeEffectiveness[i + 1] == gBattleMons[gBankTarget].type2 + && gBattleMons[gBankTarget].type1 != gBattleMons[gBankTarget].type2 + && gTypeEffectiveness[i + 2] == 20) + flags |= 1; + + //check not very effective + if (gTypeEffectiveness[i + 1] == gBattleMons[gBankTarget].type1 && gTypeEffectiveness[i + 2] == 5) + flags |= 2; + if (gTypeEffectiveness[i + 1] == gBattleMons[gBankTarget].type2 + && gBattleMons[gBankTarget].type1 != gBattleMons[gBankTarget].type2 + && gTypeEffectiveness[i + 2] == 5) + flags |= 2; + } + i += 3; + } + + if (gBattleMons[gBankTarget].ability == ABILITY_WONDER_GUARD && AttacksThisTurn(gBankAttacker, gCurrentMove) == 2) + { + if (((flags & 2) || !(flags & 1)) && gBattleMoves[gCurrentMove].power) + { + RecordAbilitySetField6(ABILITY_WONDER_GUARD, 3); + } + } +} + +static void ModulateDmgByType2(u8 multiplier, u16 move, u8* flags) //a literal copy of the ModulateDmgbyType1 with different args... +{ + gBattleMoveDamage = gBattleMoveDamage * multiplier / 10; + if (gBattleMoveDamage == 0 && multiplier != 0) + gBattleMoveDamage = 1; + + switch (multiplier) + { + case 0: //no effect + *flags |= MOVESTATUS_NOTAFFECTED; + *flags &= ~MOVESTATUS_NOTVERYEFFECTIVE; + *flags &= ~MOVESTATUS_SUPEREFFECTIVE; + break; + case 5: //not very effecting + if (gBattleMoves[move].power && !(*flags & MOVESTATUS_NOEFFECT)) + { + if (*flags & MOVESTATUS_SUPEREFFECTIVE) + *flags &= ~MOVESTATUS_SUPEREFFECTIVE; + else + *flags |= MOVESTATUS_NOTVERYEFFECTIVE; + } + break; + case 20: //super effective + if (gBattleMoves[move].power && !(*flags & MOVESTATUS_NOEFFECT)) + { + if (*flags & MOVESTATUS_NOTVERYEFFECTIVE) + *flags &= ~MOVESTATUS_NOTVERYEFFECTIVE; + else + *flags |= MOVESTATUS_SUPEREFFECTIVE; + } + break; + } +} + +u8 TypeCalc(u16 move, u8 bank_atk, u8 bank_def) +{ + int i = 0; + u8 flags = 0; + u8 move_type; + + if (move == MOVE_STRUGGLE) + return 0; + + move_type = gBattleMoves[move].type; + + //check stab + if (gBattleMons[bank_atk].type1 == move_type || gBattleMons[bank_atk].type2 == move_type) + { + gBattleMoveDamage = gBattleMoveDamage * 15; + gBattleMoveDamage = gBattleMoveDamage / 10; + } + + if (gBattleMons[bank_def].ability == ABILITY_LEVITATE && move_type == TYPE_GROUND) + { + flags |= (MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED); + } + else + { + while (gTypeEffectiveness[i]!= TYPE_ENDTABLE) + { + if (gTypeEffectiveness[i] == TYPE_FORESIGHT) + { + if (gBattleMons[bank_def].status2 & STATUS2_FORESIGHT) + break; + i += 3; + continue; + } + + else if (gTypeEffectiveness[i] == move_type) + { + //check type1 + if (gTypeEffectiveness[i + 1] == gBattleMons[bank_def].type1) + ModulateDmgByType2(gTypeEffectiveness[i + 2], move, &flags); + //check type2 + if (gTypeEffectiveness[i + 1] == gBattleMons[bank_def].type2 && + gBattleMons[gBankTarget /* what the christ */].type1 != gBattleMons[bank_def].type2) + ModulateDmgByType2(gTypeEffectiveness[i + 2], move, &flags); + } + i += 3; + } + } + + if (gBattleMons[bank_def].ability == ABILITY_WONDER_GUARD && !(flags & MOVESTATUS_MISSED) && + AttacksThisTurn(bank_atk, move) == 2 && + (!(flags & MOVESTATUS_SUPEREFFECTIVE) || ((flags & (MOVESTATUS_SUPEREFFECTIVE | MOVESTATUS_NOTVERYEFFECTIVE)) == (MOVESTATUS_SUPEREFFECTIVE | MOVESTATUS_NOTVERYEFFECTIVE))) && + gBattleMoves[move].power) + { + flags |= MOVESTATUS_MISSED; + } + return flags; +} + +u8 AI_TypeCalc(u16 move, u16 species, u8 ability) +{ + int i = 0; + u8 flags = 0; + u8 type1 = gBaseStats[species].type1, type2 = gBaseStats[species].type2, move_type; + + if (move == MOVE_STRUGGLE) + return 0; + + move_type = gBattleMoves[move].type; + + if (ability == ABILITY_LEVITATE && move_type == TYPE_GROUND) + flags = MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED; + else + { + while (gTypeEffectiveness[i]!= TYPE_ENDTABLE) + { + if (gTypeEffectiveness[i] == TYPE_FORESIGHT) + { + i += 3; + continue; + } + if (gTypeEffectiveness[i] == move_type) + { + //check type1 + if (gTypeEffectiveness[i + 1] == type1) + ModulateDmgByType2(gTypeEffectiveness[i + 2], move, &flags); + //check type2 + if (gTypeEffectiveness[i + 1] == type2 && gBattleMons[gBankTarget].type1 != type2) //gf you morons, you should check if (type1 != type2)... + ModulateDmgByType2(gTypeEffectiveness[i + 2], move, &flags); + } + i += 3; + } + } + if (ability == ABILITY_WONDER_GUARD + && (!(flags & MOVESTATUS_SUPEREFFECTIVE) || ((flags & (MOVESTATUS_SUPEREFFECTIVE | MOVESTATUS_NOTVERYEFFECTIVE)) == (MOVESTATUS_SUPEREFFECTIVE | MOVESTATUS_NOTVERYEFFECTIVE))) + && gBattleMoves[move].power) + flags |= MOVESTATUS_NOTAFFECTED; + return flags; +} + +// Multiplies the damage by a random factor between 85% to 100% inclusive +static inline void ApplyRandomDmgMultiplier(void) +{ + u16 rand = Random(); + u16 randPercent = 100 - (rand % 16); + + if (gBattleMoveDamage != 0) + { + gBattleMoveDamage *= randPercent; + gBattleMoveDamage /= 100; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + } +} + +void Unused_ApplyRandomDmgMultiplier(void) +{ + ApplyRandomDmgMultiplier(); +} + +static void atk07_dmg_adjustment(void) +{ + u8 hold_effect, quality; + ApplyRandomDmgMultiplier(); + if (gBattleMons[gBankTarget].item == ITEM_ENIGMA_BERRY) + { + hold_effect = gEnigmaBerries[gBankTarget].holdEffect, quality = gEnigmaBerries[gBankTarget].holdEffectParam; + } + else + { + hold_effect = ItemId_GetHoldEffect(gBattleMons[gBankTarget].item); + quality = ItemId_GetHoldEffectParam(gBattleMons[gBankTarget].item); + } + + gStringBank = gBankTarget; + + if (hold_effect == HOLD_EFFECT_FOCUS_BAND && (Random() % 100) < quality) + { + RecordItemBattle(gBankTarget, hold_effect); + gSpecialStatuses[gBankTarget].focusBanded = 1; + } + if (gBattleMons[gBankTarget].status2 & STATUS2_SUBSTITUTE) + goto END; + if (gBattleMoves[gCurrentMove].effect != EFFECT_FALSE_SWIPE && !gProtectStructs[gBankTarget].endured + && !gSpecialStatuses[gBankTarget].focusBanded) + goto END; + + if (gBattleMons[gBankTarget].hp > gBattleMoveDamage) + goto END; + + gBattleMoveDamage = gBattleMons[gBankTarget].hp - 1; + + if (gProtectStructs[gBankTarget].endured) + { + gBattleMoveFlags |= MOVESTATUS_ENDURED; + goto END; + } + if (gSpecialStatuses[gBankTarget].focusBanded) + { + gBattleMoveFlags |= MOVESTATUS_HUNGON; + gLastUsedItem = gBattleMons[gBankTarget].item; + } + + END: + gBattlescriptCurrInstr++; +} + +static void atk08_dmg_adjustment2(void) //literally the same as 0x7 except it doesn't check for false swipe move effect... +{ + u8 hold_effect, quality; + ApplyRandomDmgMultiplier(); + if (gBattleMons[gBankTarget].item == ITEM_ENIGMA_BERRY) + { + hold_effect = gEnigmaBerries[gBankTarget].holdEffect, quality = gEnigmaBerries[gBankTarget].holdEffectParam; + } + else + { + hold_effect = ItemId_GetHoldEffect(gBattleMons[gBankTarget].item); + quality = ItemId_GetHoldEffectParam(gBattleMons[gBankTarget].item); + } + + gStringBank = gBankTarget; + + if (hold_effect == HOLD_EFFECT_FOCUS_BAND && (Random() % 100) < quality) + { + RecordItemBattle(gBankTarget, hold_effect); + gSpecialStatuses[gBankTarget].focusBanded = 1; + } + if (gBattleMons[gBankTarget].status2 & STATUS2_SUBSTITUTE) + goto END; + if (!gProtectStructs[gBankTarget].endured + && !gSpecialStatuses[gBankTarget].focusBanded) + goto END; + + if (gBattleMons[gBankTarget].hp > gBattleMoveDamage) + goto END; + + gBattleMoveDamage = gBattleMons[gBankTarget].hp - 1; + + if (gProtectStructs[gBankTarget].endured) + { + gBattleMoveFlags |= MOVESTATUS_ENDURED; + goto END; + } + if (gSpecialStatuses[gBankTarget].focusBanded) + { + gBattleMoveFlags |= MOVESTATUS_HUNGON; + gLastUsedItem = gBattleMons[gBankTarget].item; + } + + END: + gBattlescriptCurrInstr++; +} + +static void atk09_attackanimation(void) +{ + if (gBattleExecBuffer) + return; + + if ((gHitMarker & HITMARKER_NO_ANIMATIONS) && (gCurrentMove != MOVE_TRANSFORM && gCurrentMove != MOVE_SUBSTITUTE)) + { + b_movescr_stack_push(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_Pausex20; + BATTLE_STRUCT->animTurn += 1; + BATTLE_STRUCT->animTargetsHit += 1; + } + else + { + if ((gBattleMoves[gCurrentMove].target & TARGET_BOTH || gBattleMoves[gCurrentMove].target & TARGET_FOES_AND_ALLY || gBattleMoves[gCurrentMove].target & TARGET_DEPENDS) && BATTLE_STRUCT->animTargetsHit) + { + gBattlescriptCurrInstr++; + return; + } + if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)) + { + gActiveBank = gBankAttacker; + + EmitMoveAnimation(0, gCurrentMove, BATTLE_STRUCT->animTurn, gBattleMovePower, gBattleMoveDamage, gBattleMons[gBankAttacker].friendship, &gDisableStructs[gBankAttacker]); + BATTLE_STRUCT->animTurn += 1; + BATTLE_STRUCT->animTargetsHit += 1; + MarkBufferBankForExecution(gBankAttacker); + gBattlescriptCurrInstr++; + } + else + { + b_movescr_stack_push(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_Pausex20; + } + } +} + +static void atk0A_waitanimation(void) +{ + if (gBattleExecBuffer == 0) + gBattlescriptCurrInstr++; +} + +static void atk0B_healthbarupdate(void) +{ + if (gBattleExecBuffer) + return; + if (gBattleMoveFlags & MOVESTATUS_NOEFFECT) + goto END; + + gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + + if (gBattleMons[gActiveBank].status2 & STATUS2_SUBSTITUTE && gDisableStructs[gActiveBank].substituteHP && !(gHitMarker & HITMARKER_IGNORE_SUBSTITUTE)) + { + PrepareStringBattle(0x80, gActiveBank); + goto END; + } + + EmitHealthBarUpdate(0, gBattleMoveDamage); + MarkBufferBankForExecution(gActiveBank); + + if (!GetBankSide(gActiveBank) && gBattleMoveDamage > 0) + gBattleResults.unk5_0 = 1; + + END: + gBattlescriptCurrInstr += 2; +} + +static void atk0C_datahpupdate(void) +{ + register u32 move_type asm("r6"); //no idea how to match it otherwise + u8 dynamic_move_type; + + if (gBattleExecBuffer) + return; + + dynamic_move_type = BATTLE_STRUCT->dynamicMoveType; + if (dynamic_move_type && !(dynamic_move_type & 0x40)) + { + move_type = 0x3F; + move_type &= dynamic_move_type; + } + else + { + move_type = gBattleMoves[gCurrentMove].type; + } + + if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)) + { + gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + if (gBattleMons[gActiveBank].status2 & STATUS2_SUBSTITUTE && gDisableStructs[gActiveBank].substituteHP && !(gHitMarker & HITMARKER_IGNORE_SUBSTITUTE)) + { + if (gDisableStructs[gActiveBank].substituteHP >= gBattleMoveDamage) + { + if (gSpecialStatuses[gActiveBank].moveturnLostHP == 0) + gSpecialStatuses[gActiveBank].moveturnLostHP = gBattleMoveDamage; + gDisableStructs[gActiveBank].substituteHP -= gBattleMoveDamage; + gHP_dealt = gBattleMoveDamage; + } + else + { + if (gSpecialStatuses[gActiveBank].moveturnLostHP == 0) + gSpecialStatuses[gActiveBank].moveturnLostHP = gDisableStructs[gActiveBank].substituteHP; + gHP_dealt = gDisableStructs[gActiveBank].substituteHP; + gDisableStructs[gActiveBank].substituteHP = 0; + } + //check substitute fading + if (gDisableStructs[gActiveBank].substituteHP == 0) + { + gBattlescriptCurrInstr += 2; + b_movescr_stack_push_cursor(); + gBattlescriptCurrInstr = BattleScript_SubstituteFade; + return; + } + } + else + { + gHitMarker &= ~(HITMARKER_IGNORE_SUBSTITUTE); + if (gBattleMoveDamage < 0) //hp goes up + { + gBattleMons[gActiveBank].hp -= gBattleMoveDamage; + if (gBattleMons[gActiveBank].hp > gBattleMons[gActiveBank].maxHP) + gBattleMons[gActiveBank].hp = gBattleMons[gActiveBank].maxHP; + + } + else //hp goes down + { + if (gHitMarker & HITMARKER_x20) + { + gHitMarker &= ~(HITMARKER_x20); + } + else + { + gTakenDmg[gActiveBank] += gBattleMoveDamage; + if (BSScriptRead8(gBattlescriptCurrInstr + 1) == 0) + gTakenDmgBanks[gActiveBank] = gBankAttacker; + else + gTakenDmgBanks[gActiveBank] = gBankTarget; + } + + if (gBattleMons[gActiveBank].hp > gBattleMoveDamage) + { + gBattleMons[gActiveBank].hp -= gBattleMoveDamage; + gHP_dealt = gBattleMoveDamage; + } + else + { + gHP_dealt = gBattleMons[gActiveBank].hp; + gBattleMons[gActiveBank].hp = 0; + } + + if (!gSpecialStatuses[gActiveBank].moveturnLostHP && !(gHitMarker & HITMARKER_x100000)) + gSpecialStatuses[gActiveBank].moveturnLostHP = gHP_dealt; + + if (move_type <= 8 && !(gHitMarker & HITMARKER_x100000) && gCurrentMove != MOVE_PAIN_SPLIT) + { + gProtectStructs[gActiveBank].physicalDmg = gHP_dealt; + gSpecialStatuses[gActiveBank].moveturnLostHP_physical = gHP_dealt; + if (BSScriptRead8(gBattlescriptCurrInstr + 1) == 0) + { + gProtectStructs[gActiveBank].physicalBank = gBankAttacker; + gSpecialStatuses[gActiveBank].moveturnPhysicalBank = gBankAttacker; + } + else + { + gProtectStructs[gActiveBank].physicalBank = gBankTarget; + gSpecialStatuses[gActiveBank].moveturnPhysicalBank = gBankTarget; + } + } + else if (move_type > 8 && !(gHitMarker & HITMARKER_x100000)) + { + gProtectStructs[gActiveBank].specialDmg = gHP_dealt; + gSpecialStatuses[gActiveBank].moveturnLostHP_special = gHP_dealt; + if (BSScriptRead8(gBattlescriptCurrInstr + 1) == 0) + { + gProtectStructs[gActiveBank].specialBank = gBankAttacker; + gSpecialStatuses[gActiveBank].moveturnSpecialBank = gBankAttacker; + } + else + { + gProtectStructs[gActiveBank].specialBank = gBankTarget; + gSpecialStatuses[gActiveBank].moveturnSpecialBank = gBankTarget; + } + } + } + gHitMarker &= ~(HITMARKER_x100000); + EmitSetAttributes(0, REQUEST_HP_BATTLE, 0, 2, &gBattleMons[gActiveBank].hp); + MarkBufferBankForExecution(gActiveBank); + } + } + else + { + gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + if (gSpecialStatuses[gActiveBank].moveturnLostHP == 0) + gSpecialStatuses[gActiveBank].moveturnLostHP = 0xFFFF; + } + gBattlescriptCurrInstr += 2; +} + +static void atk0D_critmessage(void) +{ + if (gBattleExecBuffer == 0) + { + if (gCritMultiplier == 2 && !(gBattleMoveFlags & MOVESTATUS_NOEFFECT)) + { + PrepareStringBattle(0xD9, gBankAttacker); + gBattleCommunication[MSG_DISPLAY] = 1; + } + gBattlescriptCurrInstr++; + } +} + +static void atk0E_effectiveness_sound(void) +{ + if (gBattleExecBuffer) + return; + gActiveBank = gBankTarget; + if (!(gBattleMoveFlags & MOVESTATUS_MISSED)) + { + u8 flag = ~MOVESTATUS_MISSED; + switch (gBattleMoveFlags & flag) + { + case MOVESTATUS_SUPEREFFECTIVE: + EmitEffectivenessSound(0, 14); + MarkBufferBankForExecution(gActiveBank); + break; + case MOVESTATUS_NOTVERYEFFECTIVE: + EmitEffectivenessSound(0, 12); + MarkBufferBankForExecution(gActiveBank); + break; + case MOVESTATUS_NOTAFFECTED: + case MOVESTATUS_FAILED: + break; + case MOVESTATUS_ENDURED: + case MOVESTATUS_ONEHITKO: + case MOVESTATUS_HUNGON: + default: + if (gBattleMoveFlags & MOVESTATUS_SUPEREFFECTIVE) + { + EmitEffectivenessSound(0, 14); + MarkBufferBankForExecution(gActiveBank); + } + else if (gBattleMoveFlags & MOVESTATUS_NOTVERYEFFECTIVE) + { + EmitEffectivenessSound(0, 12); + MarkBufferBankForExecution(gActiveBank); + } + else if (!(gBattleMoveFlags & (MOVESTATUS_NOTAFFECTED | MOVESTATUS_FAILED))) + { + EmitEffectivenessSound(0, 13); + MarkBufferBankForExecution(gActiveBank); + } + break; + } + } + gBattlescriptCurrInstr++; +} + +static void atk0F_resultmessage(void) +{ + u16 stringID = 0; + + if (gBattleExecBuffer) + return; + + if (gBattleMoveFlags & MOVESTATUS_MISSED && (!(gBattleMoveFlags & MOVESTATUS_NOTAFFECTED) || gBattleCommunication[6] > 2)) + { + stringID = gMissStrings[gBattleCommunication[6]]; + gBattleCommunication[MSG_DISPLAY] = 1; + } + else + { + gBattleCommunication[MSG_DISPLAY] = 1; + switch (gBattleMoveFlags & 0xFE) + { + case MOVESTATUS_SUPEREFFECTIVE: + stringID = 0xDE; + break; + case MOVESTATUS_NOTVERYEFFECTIVE: + stringID = 0xDD; + break; + case MOVESTATUS_ONEHITKO: + stringID = 0xDA; + break; + case MOVESTATUS_ENDURED: + stringID = 0x99; + break; + case MOVESTATUS_FAILED: + goto FAILED; + case MOVESTATUS_NOTAFFECTED: + goto NOTAFFECTED; + case MOVESTATUS_HUNGON: + gLastUsedItem = gBattleMons[gBankTarget].item; + gStringBank = gBankTarget; + gBattleMoveFlags &= ~(MOVESTATUS_ENDURED | MOVESTATUS_HUNGON); + b_movescr_stack_push_cursor(); + gBattlescriptCurrInstr = BattleScript_HangedOnMsg; + return; + default: + if (gBattleMoveFlags & MOVESTATUS_NOTAFFECTED) + NOTAFFECTED: + stringID = 0x1B; + else if (gBattleMoveFlags & MOVESTATUS_ONEHITKO) + { + gBattleMoveFlags &= ~(MOVESTATUS_ONEHITKO); + gBattleMoveFlags &= ~(MOVESTATUS_SUPEREFFECTIVE); + gBattleMoveFlags &= ~(MOVESTATUS_NOTVERYEFFECTIVE); + b_movescr_stack_push_cursor(); + gBattlescriptCurrInstr = BattleScript_OneHitKOMsg; + return; + } + else if (gBattleMoveFlags & MOVESTATUS_ENDURED) + { + gBattleMoveFlags &= ~(MOVESTATUS_ENDURED | MOVESTATUS_HUNGON); + b_movescr_stack_push_cursor(); + gBattlescriptCurrInstr = BattleScript_EnduredMsg; + return; + } + else if (gBattleMoveFlags & MOVESTATUS_HUNGON) + { + gLastUsedItem = gBattleMons[gBankTarget].item; + gStringBank = gBankTarget; + gBattleMoveFlags &= ~(MOVESTATUS_ENDURED | MOVESTATUS_HUNGON); + b_movescr_stack_push_cursor(); + gBattlescriptCurrInstr = BattleScript_HangedOnMsg; + return; + } + else if (gBattleMoveFlags & MOVESTATUS_FAILED) + FAILED: + stringID = 0xE5; + else + gBattleCommunication[MSG_DISPLAY] = 0; + } + } + + if (stringID) + { + register u16 dummy asm("r0") = stringID; //Can't match it otherwise + PrepareStringBattle(dummy, gBankAttacker); + } + gBattlescriptCurrInstr++; +} + +static void atk10_printstring(void) +{ + if (gBattleExecBuffer == 0) + { + u16 var = BS2ScriptRead16(gBattlescriptCurrInstr + 1); + PrepareStringBattle(var, gBankAttacker); + gBattlescriptCurrInstr += 3; + gBattleCommunication[MSG_DISPLAY] = 1; + } +} + +static void atk11_printstring_playeronly(void) +{ + gActiveBank = gBankAttacker; + EmitPrintStringPlayerOnly(0, BS2ScriptRead16(gBattlescriptCurrInstr + 1)); + MarkBufferBankForExecution(gActiveBank); + gBattlescriptCurrInstr += 3; + gBattleCommunication[MSG_DISPLAY] = 1; +} + +static void atk12_waitmessage(void) +{ + if (gBattleExecBuffer == 0) + { + if (!gBattleCommunication[MSG_DISPLAY]) + { + gBattlescriptCurrInstr += 3; + } + else + { + u16 to_wait = BS2ScriptRead16(gBattlescriptCurrInstr + 1); + if (++gPauseCounterBattle >= to_wait) + { + gPauseCounterBattle = 0; + gBattlescriptCurrInstr += 3; + gBattleCommunication[MSG_DISPLAY] = 0; + } + } + } +} + +static void atk13_printfromtable(void) +{ + if (gBattleExecBuffer == 0) + { + u16 *ptr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + ptr += gBattleCommunication[MULTISTRING_CHOOSER]; + PrepareStringBattle(*(u16*)ptr, gBankAttacker); + gBattlescriptCurrInstr += 5; + gBattleCommunication[MSG_DISPLAY] = 1; + } +} + +static void atk14_printfromtable_playeronly(void) +{ + if (gBattleExecBuffer == 0) + { + u16 *ptr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + ptr += gBattleCommunication[MULTISTRING_CHOOSER]; + gActiveBank = gBankAttacker; + EmitPrintStringPlayerOnly(0, *(u16*)ptr); + MarkBufferBankForExecution(gActiveBank); + gBattlescriptCurrInstr += 5; + gBattleCommunication[MSG_DISPLAY] = 1; + } +} + +u8 BankGetTurnOrder(u8 bank) +{ + int i; + for (i = 0; i < gNoOfAllBanks; i++) + { + if (gTurnOrder[i] == bank) + break; + } + return i; +} + +//Someone please decompile this monstrosity below... +#ifdef NONMATCHING +void SetMoveEffect(bool8 primary, u8 certainArg) +{ + #define EffectAffectsUser 0x40 + register u8 certain asm("r5") = certainArg; + register bool32 StatusChanged asm("r10") = 0; + register int AffectsUser asm("r6") = 0; //0x40 otherwise + bool32 NoSunCanFreeze = 1; + + if (gBattleCommunication[MOVE_EFFECT_BYTE] & EffectAffectsUser) + { + gEffectBank = gBankAttacker; //bank that effects get applied on + gBattleCommunication[MOVE_EFFECT_BYTE] &= ~(EffectAffectsUser); + AffectsUser = EffectAffectsUser; + BATTLE_STRUCT->scriptingActive = gBankTarget; //theoretically the attacker + } + else + { + gEffectBank = gBankTarget; + BATTLE_STRUCT->scriptingActive = gBankAttacker; + } + + if (gBattleMons[gEffectBank].ability == ABILITY_SHIELD_DUST && !(gHitMarker & HITMARKER_IGNORE_SAFEGUARD) && + !primary && gBattleCommunication[MOVE_EFFECT_BYTE] <= 9) + {gBattlescriptCurrInstr++; return;} + + if (gSideAffecting[GetBankIdentity(gEffectBank) & 1] & SIDE_STATUS_SAFEGUARD && !(gHitMarker & HITMARKER_IGNORE_SAFEGUARD) && + !primary && gBattleCommunication[MOVE_EFFECT_BYTE] <= 7) + {gBattlescriptCurrInstr++; return;} + + //make sure at least ONE HP except payday and thief + if (gBattleMons[gEffectBank].hp == 0 && gBattleCommunication[MOVE_EFFECT_BYTE] != 0xB && gBattleCommunication[MOVE_EFFECT_BYTE] != 0x1F) + {gBattlescriptCurrInstr++; return;} + + if (gBattleMons[gEffectBank].status2 & STATUS2_SUBSTITUTE && AffectsUser != EffectAffectsUser) + {gBattlescriptCurrInstr++; return;} + + if (gBattleCommunication[MOVE_EFFECT_BYTE] <= 6) //status change + { + switch (gStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]]) + { + case STATUS_SLEEP: + //check active uproar + if (gBattleMons[gEffectBank].ability != ABILITY_SOUNDPROOF) + { + for (gActiveBank = 0; gActiveBank < gNoOfAllBanks && !(gBattleMons[gActiveBank].status2 & STATUS2_UPROAR); gActiveBank++) {} + } + else + gActiveBank = gNoOfAllBanks; + if (gBattleMons[gEffectBank].status1) {break;} + if (gActiveBank != gNoOfAllBanks) {break;} //nice way of checking uproar... + if (gBattleMons[gEffectBank].ability == ABILITY_VITAL_SPIRIT) {break;} + if (gBattleMons[gEffectBank].ability == ABILITY_INSOMNIA) {break;} + + CancelMultiTurnMoves(gEffectBank); + StatusChanged = 1; + break; + case STATUS_POISON: + if (gBattleMons[gEffectBank].ability == ABILITY_IMMUNITY && (primary == 1 || certain == 0x80)) + { + gLastUsedAbility = ABILITY_IMMUNITY; + RecordAbilityBattle(gEffectBank, ABILITY_IMMUNITY); + b_movescr_stack_push(gBattlescriptCurrInstr + 1); + //_0801E664: + gBattlescriptCurrInstr = BattleScript_PSNPrevention; + if (gHitMarker & HITMARKER_IGNORE_SAFEGUARD) + { + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + gHitMarker &= ~(HITMARKER_IGNORE_SAFEGUARD); + return; + } + else + {gBattleCommunication[MULTISTRING_CHOOSER] = 0; return;} + } + if ((gBattleMons[gEffectBank].type1 == TYPE_POISON || gBattleMons[gEffectBank].type2 == TYPE_POISON || gBattleMons[gEffectBank].type1 == TYPE_STEEL || gBattleMons[gEffectBank].type2 == TYPE_STEEL) + && !(gHitMarker & HITMARKER_IGNORE_SAFEGUARD) && (primary == 1 || certain == 0x80)) + { + b_movescr_stack_push(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_PSNPrevention; + gBattleCommunication[MULTISTRING_CHOOSER] = 2; + return; + } + if (gBattleMons[gEffectBank].type1 == TYPE_POISON) {break;} + if (gBattleMons[gEffectBank].type2 == TYPE_POISON) {break;} + if (gBattleMons[gEffectBank].type1 == TYPE_STEEL) {break;} + if (gBattleMons[gEffectBank].type2 == TYPE_STEEL) {break;} + if (gBattleMons[gEffectBank].status1) {break;} + if (gBattleMons[gEffectBank].ability == ABILITY_IMMUNITY) {break;} + + StatusChanged = 1; + break; + case STATUS_BURN: + if (gBattleMons[gEffectBank].ability == ABILITY_WATER_VEIL && (primary == 1 || certain == 0x80)) + { + gLastUsedAbility = ABILITY_WATER_VEIL; + RecordAbilityBattle(gEffectBank, ABILITY_WATER_VEIL); + b_movescr_stack_push(gBattlescriptCurrInstr + 1); + //_0801E664: + gBattlescriptCurrInstr = BattleScript_BRNPrevention; + if (gHitMarker & HITMARKER_IGNORE_SAFEGUARD) + { + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + gHitMarker &= ~(HITMARKER_IGNORE_SAFEGUARD); + return; + } + else + {gBattleCommunication[MULTISTRING_CHOOSER] = 0; return;} + } + if ((gBattleMons[gEffectBank].type1 == TYPE_FIRE || gBattleMons[gEffectBank].type2 == TYPE_FIRE) + && !(gHitMarker & HITMARKER_IGNORE_SAFEGUARD) && (primary == 1 || certain == 0x80)) + { + b_movescr_stack_push(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_BRNPrevention; + gBattleCommunication[MULTISTRING_CHOOSER] = 2; + return; + } + if (gBattleMons[gEffectBank].type1 == TYPE_FIRE) {break;} + if (gBattleMons[gEffectBank].type2 == TYPE_FIRE) {break;} + if (gBattleMons[gEffectBank].ability == ABILITY_WATER_VEIL) {break;} + if (gBattleMons[gEffectBank].status1 == 0) {break;} + StatusChanged = 1; + break; + case STATUS_FREEZE: + if (WEATHER_HAS_EFFECT && gBattleWeather & WEATHER_SUN_ANY) {NoSunCanFreeze = 0;} + if (gBattleMons[gEffectBank].type1 == TYPE_ICE) {break;} + if (gBattleMons[gEffectBank].type2 == TYPE_ICE) {break;} + if (gBattleMons[gEffectBank].status1) {break;} + if (NoSunCanFreeze == 0) {break;} + if (gBattleMons[gEffectBank].ability == ABILITY_MAGMA_ARMOR) {break;} + + CancelMultiTurnMoves(gEffectBank); + StatusChanged = 1; + break; + case STATUS_PARALYSIS: + if (gBattleMons[gEffectBank].ability == ABILITY_LIMBER) + { + if ((primary == 1 || certain == 0x80)) + { + gLastUsedAbility = ABILITY_LIMBER; + RecordAbilityBattle(gEffectBank, ABILITY_LIMBER); + b_movescr_stack_push(gBattlescriptCurrInstr + 1); + //_0801E664: + gBattlescriptCurrInstr = BattleScript_PRLZPrevention; + if (gHitMarker & HITMARKER_IGNORE_SAFEGUARD) + { + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + gHitMarker &= ~(HITMARKER_IGNORE_SAFEGUARD); + return; + } + else + {gBattleCommunication[MULTISTRING_CHOOSER] = 0; return;} + } + else {break;} + } + if (gBattleMons[gEffectBank].status1) {break;} + StatusChanged = 1; + break; + case STATUS_TOXIC_POISON: + if (gBattleMons[gEffectBank].ability == ABILITY_IMMUNITY && (primary == 1 || certain == 0x80)) + { + gLastUsedAbility = ABILITY_IMMUNITY; + RecordAbilityBattle(gEffectBank, ABILITY_IMMUNITY); + b_movescr_stack_push(gBattlescriptCurrInstr + 1); + //_0801E664: + gBattlescriptCurrInstr = BattleScript_PSNPrevention; + if (gHitMarker & HITMARKER_IGNORE_SAFEGUARD) + { + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + gHitMarker &= ~(HITMARKER_IGNORE_SAFEGUARD); + return; + } + else + {gBattleCommunication[MULTISTRING_CHOOSER] = 0; return;} + } + if ((gBattleMons[gEffectBank].type1 == TYPE_POISON || gBattleMons[gEffectBank].type2 == TYPE_POISON || gBattleMons[gEffectBank].type1 == TYPE_STEEL || gBattleMons[gEffectBank].type2 == TYPE_STEEL) + && !(gHitMarker & HITMARKER_IGNORE_SAFEGUARD) && (primary == 1 || certain == 0x80)) + { + b_movescr_stack_push(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_PSNPrevention; + gBattleCommunication[MULTISTRING_CHOOSER] = 2; + return; + } + if (gBattleMons[gEffectBank].status1) {break;} + if (gBattleMons[gEffectBank].type1 != TYPE_POISON && + gBattleMons[gEffectBank].type2 != TYPE_POISON && + gBattleMons[gEffectBank].type1 != TYPE_STEEL && + gBattleMons[gEffectBank].type2 != TYPE_STEEL) + { + if (gBattleMons[gEffectBank].ability == ABILITY_IMMUNITY) {break;} + gBattleMons[gEffectBank].status1 &= ~(0x9); //This gets (correctly) optimized out... + StatusChanged = 1; + break; + } + else + gBattleMoveFlags |= MOVESTATUS_NOTAFFECTED; + break; + } + if (StatusChanged == 1) + { + b_movescr_stack_push(gBattlescriptCurrInstr + 1); + if (gStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]] == STATUS_SLEEP) + gBattleMons[gEffectBank].status1 |= ((Random() & 3) + 2); + else + gBattleMons[gEffectBank].status1 |= gStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]]; + gBattlescriptCurrInstr = gMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]]; + gActiveBank = gEffectBank; + EmitSetAttributes(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gEffectBank].status1); + MarkBufferBankForExecution(gActiveBank); + if (gHitMarker & HITMARKER_IGNORE_SAFEGUARD) + { + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + gHitMarker &= ~(HITMARKER_IGNORE_SAFEGUARD); + } + else + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + if (gBattleCommunication[MOVE_EFFECT_BYTE] == 2 || gBattleCommunication[MOVE_EFFECT_BYTE] == 6 || gBattleCommunication[MOVE_EFFECT_BYTE] == 5 || gBattleCommunication[MOVE_EFFECT_BYTE] == 3) + { + BATTLE_STRUCT->synchroniseEffect = gBattleCommunication[MOVE_EFFECT_BYTE]; + gHitMarker |= HITMARKER_SYNCHRONISE_EFFECT; + } + return; + } + else if (StatusChanged == 0) + {gBattlescriptCurrInstr++; return;} + } + else + { + if (gBattleMons[gEffectBank].status2 & gStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]]) + { + gBattlescriptCurrInstr++; + return; + } + switch (gStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]]) + { + case 7: //confusion + if (gBattleMons[gEffectBank].ability == ABILITY_OWN_TEMPO) + {gBattlescriptCurrInstr++; return;} + if (gBattleMons[gEffectBank].status2 & STATUS2_CONFUSION) + {gBattlescriptCurrInstr++; return;} + gBattleMons[gEffectBank].status2 |= (((Random()) % 0x4)) + 2; + b_movescr_stack_push(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = gMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]]; + break; + case 8: //flinch + if (gBattleMons[gEffectBank].ability == ABILITY_INNER_FOCUS) + { + if (primary == 1 || certain == 0x80) + { + gLastUsedAbility = ABILITY_INNER_FOCUS; + RecordAbilityBattle(gEffectBank, ABILITY_INNER_FOCUS); + gBattlescriptCurrInstr = BattleScript_FlinchPrevention; + return; + } + else + {gBattlescriptCurrInstr++; return;} + } + else + { + if (BankGetTurnOrder(gEffectBank) > gCurrentMoveTurn) + gBattleMons[gEffectBank].status2 |= gStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]]; + gBattlescriptCurrInstr++; return; + } + break; + case 10: //uproar + if (gBattleMons[gEffectBank].status2 & STATUS2_UPROAR) + {gBattlescriptCurrInstr++; return;} + gBattleMons[gEffectBank].status2 |= STATUS2_MULTIPLETURNS; + gLockedMove[gEffectBank] = gCurrentMove; + gBattleMons[gEffectBank].status2 |= ((Random() & 3) + 2) << 4; + b_movescr_stack_push(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = gMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]]; + break; + case 11: //pay day + if (!(GetBankIdentity(gBankAttacker) & 1)) + { + u16 PayDay = gPaydayMoney; + gPaydayMoney += (gBattleMons[gBankAttacker].level * 5); + if (PayDay > gPaydayMoney) + gPaydayMoney = 0xFFFF; + } + b_movescr_stack_push(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = gMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]]; + break; + case 9: //tri attack + if (gBattleMons[gEffectBank].status1) + {gBattlescriptCurrInstr++; return;} + gBattleCommunication[MOVE_EFFECT_BYTE] = Random() % 3 + 3; + SetMoveEffect(0, 0); + break; + case 12: //charging move + gBattleMons[gEffectBank].status2 |= STATUS2_MULTIPLETURNS; + gLockedMove[gEffectBank] = gCurrentMove; + gProtectStructs[gEffectBank].chargingTurn = 1; + gBattlescriptCurrInstr++; + break; + case 13: //wrap + if (gBattleMons[gEffectBank].status2 & STATUS2_WRAPPED) + {gBattlescriptCurrInstr++; return;} + gBattleMons[gEffectBank].status2 |= ((Random() & 3) + 2) << 0xD; + BATTLE_STRUCT->wrappedMove[gEffectBank*2] = (u8)gCurrentMove; + (1 + BATTLE_STRUCT->wrappedMove)[gEffectBank*2] = gCurrentMove >> 8; //don't ask. + BATTLE_STRUCT->wrappedBy[gEffectBank] = gBankAttacker; + b_movescr_stack_push(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = gMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]]; + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + while (gBattleCommunication[MULTISTRING_CHOOSER] <= 4 + && gCurrentMove != gTrappingMoves[gBattleCommunication[MULTISTRING_CHOOSER]]) + gBattleCommunication[MULTISTRING_CHOOSER]++; + break; + case 14: //25% recoil + gBattleMoveDamage = (gHP_dealt) / 4; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + b_movescr_stack_push(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = gMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]]; + break; + case 15 ... 21: //stat + 1 + if (ChangeStatBuffs(0x10, gBattleCommunication[MOVE_EFFECT_BYTE] + 0xF2, certain, 0)) {gBattlescriptCurrInstr++;} + else + { + BATTLE_STRUCT->animArg1 = gBattleCommunication[MOVE_EFFECT_BYTE] & 0x3F; //TODO: the arg ptr is wrong by one + BATTLE_STRUCT->animArg2 = 0; + b_movescr_stack_push(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_StatUp; + } + break; + case 22 ... 28: //stat - 1 + if (ChangeStatBuffs(~(0x6f), gBattleCommunication[MOVE_EFFECT_BYTE] + 0xEB, certain, 0)) {gBattlescriptCurrInstr++;} //TODO: negation doesnt work correctly + else + { + BATTLE_STRUCT->animArg1 = gBattleCommunication[MOVE_EFFECT_BYTE] & 0x3F; + BATTLE_STRUCT->animArg2 = 0; + b_movescr_stack_push(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_StatDown; + } + break; + case 39 ... 45: //stat + 2 + if (ChangeStatBuffs(0x20, gBattleCommunication[MOVE_EFFECT_BYTE] + 0xDA, certain, 0)) {gBattlescriptCurrInstr++;} + else + { + BATTLE_STRUCT->animArg1 = gBattleCommunication[MOVE_EFFECT_BYTE] & 0x3F; + BATTLE_STRUCT->animArg2 = 0; + b_movescr_stack_push(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_StatUp; + } + break; + case 46 ... 52: //stat - 2 + if (ChangeStatBuffs(~(0x5f), gBattleCommunication[MOVE_EFFECT_BYTE] + 0xD3, certain, 0)) {gBattlescriptCurrInstr++;} + else + { + BATTLE_STRUCT->animArg1 = gBattleCommunication[MOVE_EFFECT_BYTE] & 0x3F; + BATTLE_STRUCT->animArg2 = 0; + b_movescr_stack_push(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_StatDown; + } + break; + case 29: //recharge + gBattleMons[gEffectBank].status2 |= STATUS2_RECHARGE; + gDisableStructs[gEffectBank].rechargeCounter = 2; + gLockedMove[gEffectBank] = gCurrentMove; + gBattlescriptCurrInstr++; + break; + case 30: //rage + gBattleMons[gBankAttacker].status2 |= STATUS2_RAGE; + gBattlescriptCurrInstr++; + break; + case 31: //item steal + { + u8 side = GetBankSide(gBankAttacker); + if (GetBankSide(gBankAttacker) == 1 && !(gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_LINK)) && gTrainerBattleOpponent != 0x400) + {gBattlescriptCurrInstr++; return;} + if (!(gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_LINK)) && gTrainerBattleOpponent != 0x400 && (gWishFutureKnock.knockedOffPokes[side] & gBitTable[gBattlePartyID[gBankAttacker]])) + {gBattlescriptCurrInstr++; return;} + if (gBattleMons[gBankTarget].item && gBattleMons[gBankTarget].ability == ABILITY_STICKY_HOLD) + { + b_movescr_stack_push_cursor(); + gBattlescriptCurrInstr = BattleScript_NoItemSteal; + gLastUsedAbility = gBattleMons[gBankTarget].ability; + RecordAbilityBattle(gBankTarget, gLastUsedAbility); + return; + } + if (gBattleMons[gBankAttacker].item) + {gBattlescriptCurrInstr++; return;} + if (gBattleMons[gBankTarget].item == ITEM_ENIGMA_BERRY) + {gBattlescriptCurrInstr++; return;} + if (gBattleMons[gBankTarget].item == 0) + {gBattlescriptCurrInstr++; return;} + + gLastUsedItem = gBattleMons[gBankTarget].item; + unk_2000000[gBankAttacker * 2 + 0x160cc] = gLastUsedItem; + gBattleMons[gBankTarget].item = 0; + + gActiveBank = gBankAttacker; + EmitSetAttributes(0, REQUEST_HELDITEM_BATTLE, 0, 2, &gLastUsedItem); + MarkBufferBankForExecution(gBankAttacker); + + gActiveBank = gBankTarget; + EmitSetAttributes(0, REQUEST_HELDITEM_BATTLE, 0, 2, &gBattleMons[gBankTarget].item); + MarkBufferBankForExecution(gBankTarget); + + b_movescr_stack_push(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_ItemSteal; + + ewram[gBankTarget * 2 + 0x160e8] = 0; + //STORE_CHOICEMOVE(gBankTarget, 0); + } + break; + case 32: //escape prevention + gBattleMons[gBankTarget].status2 |= STATUS2_RECHARGE; + gDisableStructs[gBankTarget].bankPreventingEscape = gBankAttacker; + gBattlescriptCurrInstr++; + break; + case 33: //nightmare + gBattleMons[gBankTarget].status2 |= STATUS2_NIGHTMARE; + gBattlescriptCurrInstr++; + break; + case 34: //ancientpower + b_movescr_stack_push(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_AllStatsUp; + return; + case 35: //break free rapidspin + b_movescr_stack_push(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_RapidSpinAway; + return; + case 36: //paralysis removal + if (gBattleMons[gBankTarget].status1 & STATUS_PARALYSIS) + { + gBattleMons[gBankTarget].status1 &= ~(STATUS_PARALYSIS); + gActiveBank = gBankTarget; + EmitSetAttributes(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gBankTarget].status1); + MarkBufferBankForExecution(gActiveBank); + b_movescr_stack_push(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_TargetPRLZHeal; + } + else + {gBattlescriptCurrInstr++; return;} + break; + case 37: //superpower + b_movescr_stack_push(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_AtkDefDown; + return; + case 38: //33% recoil + gBattleMoveDamage = gHP_dealt / 3; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + b_movescr_stack_push(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = gMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]]; + break; + case 53: //thrash + if (!(gBattleMons[gEffectBank].status2 & STATUS2_LOCK_CONFUSE)) + { + gBattleMons[gEffectBank].status2 |= STATUS2_MULTIPLETURNS; + gLockedMove[gEffectBank] = gCurrentMove; + gBattleMons[gEffectBank].status2 |= (((Random() & 1) + 2) << 0xA); + } + else + {gBattlescriptCurrInstr++; return;} + break; + case 54: //knock off + if (gBattleMons[gEffectBank].ability == ABILITY_STICKY_HOLD) + { + if (gBattleMons[gEffectBank].item == 0) + {gBattlescriptCurrInstr++; return;} + gLastUsedAbility = ABILITY_STICKY_HOLD; + gBattlescriptCurrInstr = BattleScript_NoItemSteal; + RecordAbilityBattle(gEffectBank, ABILITY_STICKY_HOLD); + return; + } + if (gBattleMons[gEffectBank].item == 0) + {gBattlescriptCurrInstr++; return;} + else + { + u8 side = GetBankSide(gEffectBank); + gLastUsedItem = gBattleMons[gEffectBank].item; + gBattleMons[gEffectBank].item = 0; + gWishFutureKnock.knockedOffPokes[side] |= gBitTable[gBattlePartyID[gEffectBank]]; + b_movescr_stack_push(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_KnockedOff; + + ewram[gEffectBank * 2 + 0x160e8] = 0; + //STORE_CHOICEMOVE(gEffectBank, 0); + } + break; + case 59: //overheat + b_movescr_stack_push(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_SAtkDown2; + return; + } + } +} +#else +__attribute__((naked)) +void SetMoveEffect(bool8 primary, u8 certainArg) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + sub sp, 0x8\n\ + lsls r0, 24\n\ + lsrs r4, r0, 24\n\ + lsls r1, 24\n\ + lsrs r5, r1, 24\n\ + movs r0, 0\n\ + mov r10, r0\n\ + movs r6, 0\n\ + movs r1, 0x1\n\ + str r1, [sp, 0x4]\n\ + ldr r1, _0801E430 @ =gBattleCommunication\n\ + ldrb r3, [r1, 0x3]\n\ + movs r0, 0x40\n\ + ands r0, r3\n\ + adds r7, r1, 0\n\ + cmp r0, 0\n\ + beq _0801E444\n\ + ldr r2, _0801E434 @ =gEffectBank\n\ + ldr r0, _0801E438 @ =gBankAttacker\n\ + ldrb r0, [r0]\n\ + strb r0, [r2]\n\ + movs r0, 0xBF\n\ + ands r0, r3\n\ + strb r0, [r7, 0x3]\n\ + movs r6, 0x40\n\ + ldr r0, _0801E43C @ =0x02000000\n\ + ldr r1, _0801E440 @ =gBankTarget\n\ + b _0801E450\n\ + .align 2, 0\n\ +_0801E430: .4byte gBattleCommunication\n\ +_0801E434: .4byte gEffectBank\n\ +_0801E438: .4byte gBankAttacker\n\ +_0801E43C: .4byte 0x02000000\n\ +_0801E440: .4byte gBankTarget\n\ +_0801E444:\n\ + ldr r2, _0801E538 @ =gEffectBank\n\ + ldr r0, _0801E53C @ =gBankTarget\n\ + ldrb r0, [r0]\n\ + strb r0, [r2]\n\ + ldr r0, _0801E540 @ =0x02000000\n\ + ldr r1, _0801E544 @ =gBankAttacker\n\ +_0801E450:\n\ + ldrb r1, [r1]\n\ + ldr r3, _0801E548 @ =0x00016003\n\ + adds r0, r3\n\ + strb r1, [r0]\n\ + mov r8, r2\n\ + ldr r2, _0801E54C @ =gBattleMons\n\ + mov r0, r8\n\ + ldrb r1, [r0]\n\ + movs r0, 0x58\n\ + muls r0, r1\n\ + adds r0, r2\n\ + adds r0, 0x20\n\ + ldrb r0, [r0]\n\ + cmp r0, 0x13\n\ + bne _0801E48A\n\ + ldr r0, _0801E550 @ =gHitMarker\n\ + ldr r0, [r0]\n\ + movs r1, 0x80\n\ + lsls r1, 6\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _0801E48A\n\ + cmp r4, 0\n\ + bne _0801E48A\n\ + ldrb r0, [r7, 0x3]\n\ + cmp r0, 0x9\n\ + bhi _0801E48A\n\ + bl _0801F5DC\n\ +_0801E48A:\n\ + mov r1, r8\n\ + ldrb r0, [r1]\n\ + bl GetBankIdentity\n\ + ldr r2, _0801E554 @ =gSideAffecting\n\ + movs r1, 0x1\n\ + ands r1, r0\n\ + lsls r1, 1\n\ + adds r1, r2\n\ + ldrh r1, [r1]\n\ + movs r0, 0x20\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _0801E4C4\n\ + ldr r0, _0801E550 @ =gHitMarker\n\ + ldr r0, [r0]\n\ + movs r1, 0x80\n\ + lsls r1, 6\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _0801E4C4\n\ + cmp r4, 0\n\ + bne _0801E4C4\n\ + ldr r0, _0801E558 @ =gBattleCommunication\n\ + ldrb r0, [r0, 0x3]\n\ + cmp r0, 0x7\n\ + bhi _0801E4C4\n\ + bl _0801F5DC\n\ +_0801E4C4:\n\ + ldr r3, _0801E54C @ =gBattleMons\n\ + ldr r2, _0801E538 @ =gEffectBank\n\ + ldrb r1, [r2]\n\ + movs r0, 0x58\n\ + muls r0, r1\n\ + adds r0, r3\n\ + ldrh r0, [r0, 0x28]\n\ + mov r8, r2\n\ + mov r9, r3\n\ + cmp r0, 0\n\ + bne _0801E4EA\n\ + ldr r0, _0801E558 @ =gBattleCommunication\n\ + ldrb r0, [r0, 0x3]\n\ + cmp r0, 0xB\n\ + beq _0801E4EA\n\ + cmp r0, 0x1F\n\ + beq _0801E4EA\n\ + bl _0801F5DC\n\ +_0801E4EA:\n\ + mov r2, r8\n\ + ldrb r1, [r2]\n\ + movs r0, 0x58\n\ + muls r0, r1\n\ + mov r1, r9\n\ + adds r1, 0x50\n\ + adds r0, r1\n\ + ldr r0, [r0]\n\ + movs r1, 0x80\n\ + lsls r1, 17\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _0801E50C\n\ + cmp r6, 0x40\n\ + beq _0801E50C\n\ + bl _0801F5DC\n\ +_0801E50C:\n\ + ldr r0, _0801E558 @ =gBattleCommunication\n\ + ldrb r1, [r0, 0x3]\n\ + adds r7, r0, 0\n\ + cmp r1, 0x6\n\ + bls _0801E518\n\ + b _0801EB4A\n\ +_0801E518:\n\ + ldr r1, _0801E55C @ =gStatusFlagsForMoveEffects\n\ + ldrb r0, [r7, 0x3]\n\ + lsls r0, 2\n\ + adds r0, r1\n\ + ldr r0, [r0]\n\ + cmp r0, 0x10\n\ + bne _0801E528\n\ + b _0801E714\n\ +_0801E528:\n\ + cmp r0, 0x10\n\ + bhi _0801E560\n\ + cmp r0, 0x7\n\ + beq _0801E57A\n\ + cmp r0, 0x8\n\ + bne _0801E536\n\ + b _0801E630\n\ +_0801E536:\n\ + b _0801EA14\n\ + .align 2, 0\n\ +_0801E538: .4byte gEffectBank\n\ +_0801E53C: .4byte gBankTarget\n\ +_0801E540: .4byte 0x02000000\n\ +_0801E544: .4byte gBankAttacker\n\ +_0801E548: .4byte 0x00016003\n\ +_0801E54C: .4byte gBattleMons\n\ +_0801E550: .4byte gHitMarker\n\ +_0801E554: .4byte gSideAffecting\n\ +_0801E558: .4byte gBattleCommunication\n\ +_0801E55C: .4byte gStatusFlagsForMoveEffects\n\ +_0801E560:\n\ + cmp r0, 0x40\n\ + bne _0801E566\n\ + b _0801E888\n\ +_0801E566:\n\ + cmp r0, 0x40\n\ + bhi _0801E572\n\ + cmp r0, 0x20\n\ + bne _0801E570\n\ + b _0801E7EA\n\ +_0801E570:\n\ + b _0801EA14\n\ +_0801E572:\n\ + cmp r0, 0x80\n\ + bne _0801E578\n\ + b _0801E8E4\n\ +_0801E578:\n\ + b _0801EA14\n\ +_0801E57A:\n\ + mov r3, r8\n\ + ldrb r1, [r3]\n\ + movs r0, 0x58\n\ + muls r0, r1\n\ + add r0, r9\n\ + adds r0, 0x20\n\ + ldrb r0, [r0]\n\ + cmp r0, 0x2B\n\ + beq _0801E5DC\n\ + ldr r0, _0801E5D4 @ =gActiveBank\n\ + movs r1, 0\n\ + strb r1, [r0]\n\ + ldr r1, _0801E5D8 @ =gNoOfAllBanks\n\ + ldrb r3, [r1]\n\ + adds r7, r0, 0\n\ + mov r12, r1\n\ + cmp r3, 0\n\ + beq _0801E5E8\n\ + mov r4, r9\n\ + ldr r0, [r4, 0x50]\n\ + movs r1, 0x70\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _0801E5E8\n\ + adds r1, r7, 0\n\ + mov r6, r9\n\ + adds r6, 0x50\n\ + movs r5, 0x58\n\ + movs r4, 0x70\n\ +_0801E5B4:\n\ + ldrb r0, [r1]\n\ + adds r0, 0x1\n\ + strb r0, [r1]\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + cmp r0, r3\n\ + bcs _0801E5E8\n\ + ldrb r0, [r7]\n\ + muls r0, r5\n\ + adds r0, r6\n\ + ldr r0, [r0]\n\ + ands r0, r4\n\ + cmp r0, 0\n\ + beq _0801E5B4\n\ + b _0801E5E8\n\ + .align 2, 0\n\ +_0801E5D4: .4byte gActiveBank\n\ +_0801E5D8: .4byte gNoOfAllBanks\n\ +_0801E5DC:\n\ + ldr r0, _0801E628 @ =gActiveBank\n\ + ldr r2, _0801E62C @ =gNoOfAllBanks\n\ + ldrb r1, [r2]\n\ + strb r1, [r0]\n\ + adds r7, r0, 0\n\ + mov r12, r2\n\ +_0801E5E8:\n\ + mov r0, r8\n\ + ldrb r2, [r0]\n\ + movs r0, 0x58\n\ + adds r1, r2, 0\n\ + muls r1, r0\n\ + mov r0, r9\n\ + adds r0, 0x4C\n\ + adds r0, r1, r0\n\ + ldr r0, [r0]\n\ + cmp r0, 0\n\ + beq _0801E600\n\ + b _0801EA14\n\ +_0801E600:\n\ + ldrb r0, [r7]\n\ + mov r3, r12\n\ + ldrb r3, [r3]\n\ + cmp r0, r3\n\ + beq _0801E60C\n\ + b _0801EA14\n\ +_0801E60C:\n\ + mov r4, r9\n\ + adds r0, r1, r4\n\ + adds r0, 0x20\n\ + ldrb r0, [r0]\n\ + cmp r0, 0x48\n\ + bne _0801E61A\n\ + b _0801EA14\n\ +_0801E61A:\n\ + cmp r0, 0xF\n\ + bne _0801E620\n\ + b _0801EA14\n\ +_0801E620:\n\ + adds r0, r2, 0\n\ + bl CancelMultiTurnMoves\n\ + b _0801EA04\n\ + .align 2, 0\n\ +_0801E628: .4byte gActiveBank\n\ +_0801E62C: .4byte gNoOfAllBanks\n\ +_0801E630:\n\ + mov r2, r8\n\ + ldrb r1, [r2]\n\ + movs r0, 0x58\n\ + muls r0, r1\n\ + add r0, r9\n\ + adds r0, 0x20\n\ + ldrb r1, [r0]\n\ + cmp r1, 0x11\n\ + bne _0801E688\n\ + cmp r4, 0x1\n\ + beq _0801E64A\n\ + cmp r5, 0x80\n\ + bne _0801E688\n\ +_0801E64A:\n\ + ldr r0, _0801E678 @ =gLastUsedAbility\n\ + strb r1, [r0]\n\ + mov r3, r8\n\ + ldrb r0, [r3]\n\ + movs r1, 0x11\n\ + bl RecordAbilityBattle\n\ + ldr r4, _0801E67C @ =gBattlescriptCurrInstr\n\ + ldr r0, [r4]\n\ + adds r0, 0x1\n\ + bl b_movescr_stack_push\n\ + ldr r0, _0801E680 @ =BattleScript_PSNPrevention\n\ +_0801E664:\n\ + str r0, [r4]\n\ + ldr r2, _0801E684 @ =gHitMarker\n\ + ldr r1, [r2]\n\ + movs r0, 0x80\n\ + lsls r0, 6\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _0801E676\n\ + b _0801E928\n\ +_0801E676:\n\ + b _0801E94C\n\ + .align 2, 0\n\ +_0801E678: .4byte gLastUsedAbility\n\ +_0801E67C: .4byte gBattlescriptCurrInstr\n\ +_0801E680: .4byte BattleScript_PSNPrevention\n\ +_0801E684: .4byte gHitMarker\n\ +_0801E688:\n\ + mov r1, r8\n\ + ldrb r0, [r1]\n\ + movs r1, 0x58\n\ + muls r0, r1\n\ + add r0, r9\n\ + adds r1, r0, 0\n\ + adds r1, 0x21\n\ + ldrb r1, [r1]\n\ + cmp r1, 0x3\n\ + beq _0801E6AC\n\ + adds r0, 0x22\n\ + ldrb r0, [r0]\n\ + cmp r0, 0x3\n\ + beq _0801E6AC\n\ + cmp r1, 0x8\n\ + beq _0801E6AC\n\ + cmp r0, 0x8\n\ + bne _0801E6C6\n\ +_0801E6AC:\n\ + ldr r0, _0801E710 @ =gHitMarker\n\ + ldr r0, [r0]\n\ + movs r1, 0x80\n\ + lsls r1, 6\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _0801E6C6\n\ + cmp r4, 0x1\n\ + bne _0801E6C0\n\ + b _0801E98C\n\ +_0801E6C0:\n\ + cmp r5, 0x80\n\ + bne _0801E6C6\n\ + b _0801E98C\n\ +_0801E6C6:\n\ + mov r2, r8\n\ + ldrb r1, [r2]\n\ + movs r0, 0x58\n\ + muls r1, r0\n\ + mov r4, r9\n\ + adds r3, r1, r4\n\ + adds r0, r3, 0\n\ + adds r0, 0x21\n\ + ldrb r4, [r0]\n\ + cmp r4, 0x3\n\ + bne _0801E6DE\n\ + b _0801EA14\n\ +_0801E6DE:\n\ + adds r0, 0x1\n\ + ldrb r0, [r0]\n\ + cmp r0, 0x3\n\ + bne _0801E6E8\n\ + b _0801EA14\n\ +_0801E6E8:\n\ + cmp r4, 0x8\n\ + bne _0801E6EE\n\ + b _0801EA14\n\ +_0801E6EE:\n\ + cmp r0, 0x8\n\ + bne _0801E6F4\n\ + b _0801EA14\n\ +_0801E6F4:\n\ + mov r0, r9\n\ + adds r0, 0x4C\n\ + adds r0, r1, r0\n\ + ldr r0, [r0]\n\ + cmp r0, 0\n\ + beq _0801E702\n\ + b _0801EA14\n\ +_0801E702:\n\ + adds r0, r3, 0\n\ + adds r0, 0x20\n\ + ldrb r0, [r0]\n\ + cmp r0, 0x11\n\ + bne _0801E70E\n\ + b _0801EA14\n\ +_0801E70E:\n\ + b _0801EA04\n\ + .align 2, 0\n\ +_0801E710: .4byte gHitMarker\n\ +_0801E714:\n\ + mov r2, r8\n\ + ldrb r1, [r2]\n\ + movs r0, 0x58\n\ + muls r0, r1\n\ + add r0, r9\n\ + adds r0, 0x20\n\ + ldrb r1, [r0]\n\ + cmp r1, 0x29\n\ + bne _0801E758\n\ + cmp r4, 0x1\n\ + beq _0801E72E\n\ + cmp r5, 0x80\n\ + bne _0801E758\n\ +_0801E72E:\n\ + ldr r0, _0801E74C @ =gLastUsedAbility\n\ + strb r1, [r0]\n\ + mov r3, r8\n\ + ldrb r0, [r3]\n\ + movs r1, 0x29\n\ + bl RecordAbilityBattle\n\ + ldr r4, _0801E750 @ =gBattlescriptCurrInstr\n\ + ldr r0, [r4]\n\ + adds r0, 0x1\n\ + bl b_movescr_stack_push\n\ + ldr r0, _0801E754 @ =BattleScript_BRNPrevention\n\ + b _0801E664\n\ + .align 2, 0\n\ +_0801E74C: .4byte gLastUsedAbility\n\ +_0801E750: .4byte gBattlescriptCurrInstr\n\ +_0801E754: .4byte BattleScript_BRNPrevention\n\ +_0801E758:\n\ + mov r0, r8\n\ + ldrb r1, [r0]\n\ + movs r0, 0x58\n\ + muls r0, r1\n\ + mov r2, r9\n\ + adds r1, r0, r2\n\ + adds r0, r1, 0\n\ + adds r0, 0x21\n\ + ldrb r0, [r0]\n\ + cmp r0, 0xA\n\ + beq _0801E778\n\ + adds r0, r1, 0\n\ + adds r0, 0x22\n\ + ldrb r0, [r0]\n\ + cmp r0, 0xA\n\ + bne _0801E7A8\n\ +_0801E778:\n\ + ldr r0, _0801E79C @ =gHitMarker\n\ + ldr r0, [r0]\n\ + movs r1, 0x80\n\ + lsls r1, 6\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _0801E7A8\n\ + cmp r4, 0x1\n\ + beq _0801E78E\n\ + cmp r5, 0x80\n\ + bne _0801E7A8\n\ +_0801E78E:\n\ + ldr r4, _0801E7A0 @ =gBattlescriptCurrInstr\n\ + ldr r0, [r4]\n\ + adds r0, 0x1\n\ + bl b_movescr_stack_push\n\ + ldr r0, _0801E7A4 @ =BattleScript_BRNPrevention\n\ + b _0801E998\n\ + .align 2, 0\n\ +_0801E79C: .4byte gHitMarker\n\ +_0801E7A0: .4byte gBattlescriptCurrInstr\n\ +_0801E7A4: .4byte BattleScript_BRNPrevention\n\ +_0801E7A8:\n\ + mov r3, r8\n\ + ldrb r0, [r3]\n\ + movs r1, 0x58\n\ + adds r2, r0, 0\n\ + muls r2, r1\n\ + mov r4, r9\n\ + adds r1, r2, r4\n\ + adds r0, r1, 0\n\ + adds r0, 0x21\n\ + ldrb r0, [r0]\n\ + cmp r0, 0xA\n\ + bne _0801E7C2\n\ + b _0801EA14\n\ +_0801E7C2:\n\ + adds r0, r1, 0\n\ + adds r0, 0x22\n\ + ldrb r0, [r0]\n\ + cmp r0, 0xA\n\ + bne _0801E7CE\n\ + b _0801EA14\n\ +_0801E7CE:\n\ + adds r0, r1, 0\n\ + adds r0, 0x20\n\ + ldrb r0, [r0]\n\ + cmp r0, 0x29\n\ + bne _0801E7DA\n\ + b _0801EA14\n\ +_0801E7DA:\n\ + mov r0, r9\n\ + adds r0, 0x4C\n\ + adds r0, r2, r0\n\ + ldr r0, [r0]\n\ + cmp r0, 0\n\ + beq _0801E7E8\n\ + b _0801EA14\n\ +_0801E7E8:\n\ + b _0801EA04\n\ +_0801E7EA:\n\ + movs r0, 0\n\ + str r0, [sp]\n\ + movs r0, 0x13\n\ + movs r1, 0\n\ + movs r2, 0xD\n\ + movs r3, 0\n\ + bl AbilityBattleEffects\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + cmp r0, 0\n\ + bne _0801E826\n\ + str r0, [sp]\n\ + movs r0, 0x13\n\ + movs r1, 0\n\ + movs r2, 0x4D\n\ + movs r3, 0\n\ + bl AbilityBattleEffects\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + bne _0801E826\n\ + ldr r0, _0801E87C @ =gBattleWeather\n\ + ldrh r1, [r0]\n\ + movs r0, 0x60\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _0801E826\n\ + movs r1, 0\n\ + str r1, [sp, 0x4]\n\ +_0801E826:\n\ + ldr r4, _0801E880 @ =gBattleMons\n\ + ldr r0, _0801E884 @ =gEffectBank\n\ + ldrb r3, [r0]\n\ + movs r0, 0x58\n\ + adds r2, r3, 0\n\ + muls r2, r0\n\ + adds r1, r2, r4\n\ + adds r0, r1, 0\n\ + adds r0, 0x21\n\ + ldrb r0, [r0]\n\ + cmp r0, 0xF\n\ + bne _0801E840\n\ + b _0801EA14\n\ +_0801E840:\n\ + adds r0, r1, 0\n\ + adds r0, 0x22\n\ + ldrb r0, [r0]\n\ + cmp r0, 0xF\n\ + bne _0801E84C\n\ + b _0801EA14\n\ +_0801E84C:\n\ + adds r0, r4, 0\n\ + adds r0, 0x4C\n\ + adds r0, r2, r0\n\ + ldr r0, [r0]\n\ + cmp r0, 0\n\ + beq _0801E85A\n\ + b _0801EA14\n\ +_0801E85A:\n\ + ldr r2, [sp, 0x4]\n\ + cmp r2, 0\n\ + bne _0801E862\n\ + b _0801EA14\n\ +_0801E862:\n\ + adds r0, r1, 0\n\ + adds r0, 0x20\n\ + ldrb r0, [r0]\n\ + cmp r0, 0x28\n\ + bne _0801E86E\n\ + b _0801EA14\n\ +_0801E86E:\n\ + adds r0, r3, 0\n\ + bl CancelMultiTurnMoves\n\ + movs r3, 0x1\n\ + mov r10, r3\n\ + b _0801EA14\n\ + .align 2, 0\n\ +_0801E87C: .4byte gBattleWeather\n\ +_0801E880: .4byte gBattleMons\n\ +_0801E884: .4byte gEffectBank\n\ +_0801E888:\n\ + mov r0, r8\n\ + ldrb r1, [r0]\n\ + movs r0, 0x58\n\ + muls r1, r0\n\ + mov r2, r9\n\ + adds r0, r1, r2\n\ + adds r0, 0x20\n\ + ldrb r2, [r0]\n\ + cmp r2, 0x7\n\ + bne _0801E8D0\n\ + cmp r4, 0x1\n\ + beq _0801E8A6\n\ + cmp r5, 0x80\n\ + beq _0801E8A6\n\ + b _0801EA14\n\ +_0801E8A6:\n\ + ldr r0, _0801E8C4 @ =gLastUsedAbility\n\ + strb r2, [r0]\n\ + mov r3, r8\n\ + ldrb r0, [r3]\n\ + movs r1, 0x7\n\ + bl RecordAbilityBattle\n\ + ldr r4, _0801E8C8 @ =gBattlescriptCurrInstr\n\ + ldr r0, [r4]\n\ + adds r0, 0x1\n\ + bl b_movescr_stack_push\n\ + ldr r0, _0801E8CC @ =BattleScript_PRLZPrevention\n\ + b _0801E664\n\ + .align 2, 0\n\ +_0801E8C4: .4byte gLastUsedAbility\n\ +_0801E8C8: .4byte gBattlescriptCurrInstr\n\ +_0801E8CC: .4byte BattleScript_PRLZPrevention\n\ +_0801E8D0:\n\ + mov r0, r9\n\ + adds r0, 0x4C\n\ + adds r0, r1, r0\n\ + ldr r0, [r0]\n\ + cmp r0, 0\n\ + beq _0801E8DE\n\ + b _0801EA14\n\ +_0801E8DE:\n\ + movs r4, 0x1\n\ + mov r10, r4\n\ + b _0801EA14\n\ +_0801E8E4:\n\ + mov r0, r8\n\ + ldrb r1, [r0]\n\ + movs r0, 0x58\n\ + muls r0, r1\n\ + add r0, r9\n\ + adds r0, 0x20\n\ + ldrb r1, [r0]\n\ + cmp r1, 0x11\n\ + bne _0801E952\n\ + cmp r4, 0x1\n\ + beq _0801E8FE\n\ + cmp r5, 0x80\n\ + bne _0801E952\n\ +_0801E8FE:\n\ + ldr r0, _0801E938 @ =gLastUsedAbility\n\ + strb r1, [r0]\n\ + mov r1, r8\n\ + ldrb r0, [r1]\n\ + movs r1, 0x11\n\ + bl RecordAbilityBattle\n\ + ldr r4, _0801E93C @ =gBattlescriptCurrInstr\n\ + ldr r0, [r4]\n\ + adds r0, 0x1\n\ + bl b_movescr_stack_push\n\ + ldr r0, _0801E940 @ =BattleScript_PSNPrevention\n\ + str r0, [r4]\n\ + ldr r2, _0801E944 @ =gHitMarker\n\ + ldr r1, [r2]\n\ + movs r0, 0x80\n\ + lsls r0, 6\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _0801E94C\n\ +_0801E928:\n\ + movs r0, 0x1\n\ + strb r0, [r7, 0x5]\n\ + ldr r0, _0801E948 @ =0xffffdfff\n\ + ands r1, r0\n\ + str r1, [r2]\n\ + bl _0801F5FA\n\ + .align 2, 0\n\ +_0801E938: .4byte gLastUsedAbility\n\ +_0801E93C: .4byte gBattlescriptCurrInstr\n\ +_0801E940: .4byte BattleScript_PSNPrevention\n\ +_0801E944: .4byte gHitMarker\n\ +_0801E948: .4byte 0xffffdfff\n\ +_0801E94C:\n\ + strb r0, [r7, 0x5]\n\ + bl _0801F5FA\n\ +_0801E952:\n\ + mov r2, r8\n\ + ldrb r0, [r2]\n\ + movs r1, 0x58\n\ + muls r0, r1\n\ + add r0, r9\n\ + adds r1, r0, 0\n\ + adds r1, 0x21\n\ + ldrb r1, [r1]\n\ + cmp r1, 0x3\n\ + beq _0801E976\n\ + adds r0, 0x22\n\ + ldrb r0, [r0]\n\ + cmp r0, 0x3\n\ + beq _0801E976\n\ + cmp r1, 0x8\n\ + beq _0801E976\n\ + cmp r0, 0x8\n\ + bne _0801E9B4\n\ +_0801E976:\n\ + ldr r0, _0801E9A4 @ =gHitMarker\n\ + ldr r0, [r0]\n\ + movs r1, 0x80\n\ + lsls r1, 6\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _0801E9B4\n\ + cmp r4, 0x1\n\ + beq _0801E98C\n\ + cmp r5, 0x80\n\ + bne _0801E9B4\n\ +_0801E98C:\n\ + ldr r4, _0801E9A8 @ =gBattlescriptCurrInstr\n\ + ldr r0, [r4]\n\ + adds r0, 0x1\n\ + bl b_movescr_stack_push\n\ + ldr r0, _0801E9AC @ =BattleScript_PSNPrevention\n\ +_0801E998:\n\ + str r0, [r4]\n\ + ldr r1, _0801E9B0 @ =gBattleCommunication\n\ + movs r0, 0x2\n\ + strb r0, [r1, 0x5]\n\ + bl _0801F5FA\n\ + .align 2, 0\n\ +_0801E9A4: .4byte gHitMarker\n\ +_0801E9A8: .4byte gBattlescriptCurrInstr\n\ +_0801E9AC: .4byte BattleScript_PSNPrevention\n\ +_0801E9B0: .4byte gBattleCommunication\n\ +_0801E9B4:\n\ + mov r3, r8\n\ + ldrb r0, [r3]\n\ + movs r6, 0x58\n\ + muls r0, r6\n\ + mov r2, r9\n\ + adds r2, 0x4C\n\ + adds r5, r0, r2\n\ + ldr r4, [r5]\n\ + cmp r4, 0\n\ + bne _0801EA14\n\ + mov r3, r9\n\ + adds r1, r0, r3\n\ + adds r0, r1, 0\n\ + adds r0, 0x21\n\ + ldrb r3, [r0]\n\ + cmp r3, 0x3\n\ + beq _0801EA0A\n\ + adds r0, 0x1\n\ + ldrb r0, [r0]\n\ + cmp r0, 0x3\n\ + beq _0801EA0A\n\ + cmp r3, 0x8\n\ + beq _0801EA0A\n\ + cmp r0, 0x8\n\ + beq _0801EA0A\n\ + adds r0, r1, 0\n\ + adds r0, 0x20\n\ + ldrb r0, [r0]\n\ + cmp r0, 0x11\n\ + beq _0801EA14\n\ + mov r4, r8\n\ + ldrb r0, [r4]\n\ + adds r1, r0, 0\n\ + muls r1, r6\n\ + adds r1, r2\n\ + ldr r0, [r1]\n\ + movs r2, 0x9\n\ + negs r2, r2\n\ + ands r0, r2\n\ + str r0, [r1]\n\ +_0801EA04:\n\ + movs r0, 0x1\n\ + mov r10, r0\n\ + b _0801EA14\n\ +_0801EA0A:\n\ + ldr r0, _0801EA58 @ =gBattleMoveFlags\n\ + ldrb r1, [r0]\n\ + movs r2, 0x8\n\ + orrs r1, r2\n\ + strb r1, [r0]\n\ +_0801EA14:\n\ + mov r1, r10\n\ + cmp r1, 0x1\n\ + beq _0801EA1C\n\ + b _0801EB3C\n\ +_0801EA1C:\n\ + ldr r0, _0801EA5C @ =gBattlescriptCurrInstr\n\ + ldr r0, [r0]\n\ + adds r0, 0x1\n\ + bl b_movescr_stack_push\n\ + ldr r1, _0801EA60 @ =gStatusFlagsForMoveEffects\n\ + ldr r0, _0801EA64 @ =gBattleCommunication\n\ + ldrb r0, [r0, 0x3]\n\ + lsls r0, 2\n\ + adds r0, r1\n\ + ldr r3, [r0]\n\ + cmp r3, 0x7\n\ + bne _0801EA70\n\ + bl Random\n\ + ldr r2, _0801EA68 @ =gBattleMons\n\ + ldr r1, _0801EA6C @ =gEffectBank\n\ + ldrb r3, [r1]\n\ + movs r1, 0x58\n\ + muls r3, r1\n\ + adds r2, 0x4C\n\ + adds r3, r2\n\ + movs r1, 0x3\n\ + ands r1, r0\n\ + adds r1, 0x2\n\ + ldr r0, [r3]\n\ + orrs r0, r1\n\ + str r0, [r3]\n\ + b _0801EA84\n\ + .align 2, 0\n\ +_0801EA58: .4byte gBattleMoveFlags\n\ +_0801EA5C: .4byte gBattlescriptCurrInstr\n\ +_0801EA60: .4byte gStatusFlagsForMoveEffects\n\ +_0801EA64: .4byte gBattleCommunication\n\ +_0801EA68: .4byte gBattleMons\n\ +_0801EA6C: .4byte gEffectBank\n\ +_0801EA70:\n\ + ldr r2, _0801EAD4 @ =gBattleMons\n\ + ldr r0, _0801EAD8 @ =gEffectBank\n\ + ldrb r1, [r0]\n\ + movs r0, 0x58\n\ + muls r1, r0\n\ + adds r2, 0x4C\n\ + adds r1, r2\n\ + ldr r0, [r1]\n\ + orrs r0, r3\n\ + str r0, [r1]\n\ +_0801EA84:\n\ + ldr r2, _0801EADC @ =gBattlescriptCurrInstr\n\ + ldr r1, _0801EAE0 @ =gMoveEffectBS_Ptrs\n\ + ldr r5, _0801EAE4 @ =gBattleCommunication\n\ + ldrb r0, [r5, 0x3]\n\ + lsls r0, 2\n\ + adds r0, r1\n\ + ldr r0, [r0]\n\ + str r0, [r2]\n\ + ldr r4, _0801EAE8 @ =gActiveBank\n\ + ldr r1, _0801EAD8 @ =gEffectBank\n\ + ldrb r0, [r1]\n\ + strb r0, [r4]\n\ + ldrb r1, [r1]\n\ + movs r0, 0x58\n\ + muls r0, r1\n\ + ldr r1, _0801EAEC @ =gUnknown_02024ACC\n\ + adds r0, r1\n\ + str r0, [sp]\n\ + movs r0, 0\n\ + movs r1, 0x28\n\ + movs r2, 0\n\ + movs r3, 0x4\n\ + bl EmitSetAttributes\n\ + ldrb r0, [r4]\n\ + bl MarkBufferBankForExecution\n\ + ldr r2, _0801EAF0 @ =gHitMarker\n\ + ldr r1, [r2]\n\ + movs r0, 0x80\n\ + lsls r0, 6\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _0801EAF8\n\ + movs r0, 0x1\n\ + strb r0, [r5, 0x5]\n\ + ldr r0, _0801EAF4 @ =0xffffdfff\n\ + ands r1, r0\n\ + str r1, [r2]\n\ + b _0801EAFA\n\ + .align 2, 0\n\ +_0801EAD4: .4byte gBattleMons\n\ +_0801EAD8: .4byte gEffectBank\n\ +_0801EADC: .4byte gBattlescriptCurrInstr\n\ +_0801EAE0: .4byte gMoveEffectBS_Ptrs\n\ +_0801EAE4: .4byte gBattleCommunication\n\ +_0801EAE8: .4byte gActiveBank\n\ +_0801EAEC: .4byte gUnknown_02024ACC\n\ +_0801EAF0: .4byte gHitMarker\n\ +_0801EAF4: .4byte 0xffffdfff\n\ +_0801EAF8:\n\ + strb r0, [r5, 0x5]\n\ +_0801EAFA:\n\ + ldr r0, _0801EB2C @ =gBattleCommunication\n\ + ldrb r2, [r0, 0x3]\n\ + adds r7, r0, 0\n\ + cmp r2, 0x2\n\ + beq _0801EB14\n\ + cmp r2, 0x6\n\ + beq _0801EB14\n\ + cmp r2, 0x5\n\ + beq _0801EB14\n\ + cmp r2, 0x3\n\ + beq _0801EB14\n\ + bl _0801F5FA\n\ +_0801EB14:\n\ + ldr r0, _0801EB30 @ =0x02000000\n\ + ldrb r1, [r7, 0x3]\n\ + ldr r2, _0801EB34 @ =0x000160ca\n\ + adds r0, r2\n\ + strb r1, [r0]\n\ + ldr r2, _0801EB38 @ =gHitMarker\n\ + ldr r0, [r2]\n\ + movs r1, 0x80\n\ + lsls r1, 7\n\ + bl _0801F4F2\n\ + .align 2, 0\n\ +_0801EB2C: .4byte gBattleCommunication\n\ +_0801EB30: .4byte 0x02000000\n\ +_0801EB34: .4byte 0x000160ca\n\ +_0801EB38: .4byte gHitMarker\n\ +_0801EB3C:\n\ + mov r3, r10\n\ + cmp r3, 0\n\ + beq _0801EB46\n\ + bl _0801F5FA\n\ +_0801EB46:\n\ + bl _0801F5DC\n\ +_0801EB4A:\n\ + mov r0, r8\n\ + ldrb r1, [r0]\n\ + movs r0, 0x58\n\ + muls r1, r0\n\ + mov r0, r9\n\ + adds r0, 0x50\n\ + adds r1, r0\n\ + ldr r2, _0801EB84 @ =gStatusFlagsForMoveEffects\n\ + ldrb r3, [r7, 0x3]\n\ + lsls r0, r3, 2\n\ + adds r0, r2\n\ + ldr r1, [r1]\n\ + ldr r0, [r0]\n\ + ands r1, r0\n\ + cmp r1, 0\n\ + beq _0801EB6E\n\ + bl _0801F5DC\n\ +_0801EB6E:\n\ + subs r0, r3, 0x7\n\ + cmp r0, 0x34\n\ + bls _0801EB78\n\ + bl _0801F5FA\n\ +_0801EB78:\n\ + lsls r0, 2\n\ + ldr r1, _0801EB88 @ =_0801EB8C\n\ + adds r0, r1\n\ + ldr r0, [r0]\n\ + mov pc, r0\n\ + .align 2, 0\n\ +_0801EB84: .4byte gStatusFlagsForMoveEffects\n\ +_0801EB88: .4byte _0801EB8C\n\ + .align 2, 0\n\ +_0801EB8C:\n\ + .4byte _0801EC60\n\ + .4byte _0801ECD4\n\ + .4byte _0801EE4C\n\ + .4byte _0801ED60\n\ + .4byte _0801EDDC\n\ + .4byte _0801EE84\n\ + .4byte _0801EECC\n\ + .4byte _0801EFA8\n\ + .4byte _0801EFEC\n\ + .4byte _0801EFEC\n\ + .4byte _0801EFEC\n\ + .4byte _0801EFEC\n\ + .4byte _0801EFEC\n\ + .4byte _0801EFEC\n\ + .4byte _0801EFEC\n\ + .4byte _0801F040\n\ + .4byte _0801F040\n\ + .4byte _0801F040\n\ + .4byte _0801F040\n\ + .4byte _0801F040\n\ + .4byte _0801F040\n\ + .4byte _0801F040\n\ + .4byte _0801F13C\n\ + .4byte _0801F184\n\ + .4byte _0801F1A4\n\ + .4byte _0801F364\n\ + .4byte _0801F3A0\n\ + .4byte _0801F3BC\n\ + .4byte _0801F3D4\n\ + .4byte _0801F3EC\n\ + .4byte _0801F44C\n\ + .4byte _0801F464\n\ + .4byte _0801F094\n\ + .4byte _0801F094\n\ + .4byte _0801F094\n\ + .4byte _0801F094\n\ + .4byte _0801F094\n\ + .4byte _0801F094\n\ + .4byte _0801F094\n\ + .4byte _0801F0E8\n\ + .4byte _0801F0E8\n\ + .4byte _0801F0E8\n\ + .4byte _0801F0E8\n\ + .4byte _0801F0E8\n\ + .4byte _0801F0E8\n\ + .4byte _0801F0E8\n\ + .4byte _0801F4A8\n\ + .4byte _0801F500\n\ + .4byte _0801F5FA\n\ + .4byte _0801F5FA\n\ + .4byte _0801F5FA\n\ + .4byte _0801F5FA\n\ + .4byte _0801F5EC\n\ +_0801EC60:\n\ + mov r1, r8\n\ + ldrb r0, [r1]\n\ + movs r5, 0x58\n\ + adds r1, r0, 0\n\ + muls r1, r5\n\ + mov r2, r9\n\ + adds r0, r1, r2\n\ + adds r0, 0x20\n\ + ldrb r0, [r0]\n\ + cmp r0, 0x14\n\ + bne _0801EC7A\n\ + bl _0801F5DC\n\ +_0801EC7A:\n\ + mov r4, r9\n\ + adds r4, 0x50\n\ + adds r0, r1, r4\n\ + ldr r0, [r0]\n\ + movs r1, 0x7\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _0801EC8E\n\ + bl _0801F5DC\n\ +_0801EC8E:\n\ + bl Random\n\ + mov r3, r8\n\ + ldrb r1, [r3]\n\ + adds r2, r1, 0\n\ + muls r2, r5\n\ + adds r2, r4\n\ + lsls r0, 16\n\ + movs r1, 0xC0\n\ + lsls r1, 10\n\ + ands r1, r0\n\ + lsrs r1, 16\n\ + adds r1, 0x2\n\ + ldr r0, [r2]\n\ + orrs r0, r1\n\ + str r0, [r2]\n\ + ldr r4, _0801ECC8 @ =gBattlescriptCurrInstr\n\ + ldr r0, [r4]\n\ + adds r0, 0x1\n\ + bl b_movescr_stack_push\n\ + ldr r1, _0801ECCC @ =gMoveEffectBS_Ptrs\n\ + ldr r0, _0801ECD0 @ =gBattleCommunication\n\ + ldrb r0, [r0, 0x3]\n\ + lsls r0, 2\n\ + adds r0, r1\n\ + ldr r0, [r0]\n\ + bl _0801F5F8\n\ + .align 2, 0\n\ +_0801ECC8: .4byte gBattlescriptCurrInstr\n\ +_0801ECCC: .4byte gMoveEffectBS_Ptrs\n\ +_0801ECD0: .4byte gBattleCommunication\n\ +_0801ECD4:\n\ + mov r0, r8\n\ + ldrb r2, [r0]\n\ + movs r6, 0x58\n\ + adds r0, r2, 0\n\ + muls r0, r6\n\ + add r0, r9\n\ + adds r0, 0x20\n\ + ldrb r1, [r0]\n\ + cmp r1, 0x27\n\ + bne _0801ED18\n\ + cmp r4, 0x1\n\ + beq _0801ECF4\n\ + cmp r5, 0x80\n\ + beq _0801ECF4\n\ + bl _0801F5DC\n\ +_0801ECF4:\n\ + ldr r0, _0801ED0C @ =gLastUsedAbility\n\ + strb r1, [r0]\n\ + mov r1, r8\n\ + ldrb r0, [r1]\n\ + movs r1, 0x27\n\ + bl RecordAbilityBattle\n\ + ldr r1, _0801ED10 @ =gBattlescriptCurrInstr\n\ + ldr r0, _0801ED14 @ =BattleScript_FlinchPrevention\n\ + str r0, [r1]\n\ + bl _0801F5FA\n\ + .align 2, 0\n\ +_0801ED0C: .4byte gLastUsedAbility\n\ +_0801ED10: .4byte gBattlescriptCurrInstr\n\ +_0801ED14: .4byte BattleScript_FlinchPrevention\n\ +_0801ED18:\n\ + adds r0, r2, 0\n\ + bl BankGetTurnOrder\n\ + ldr r1, _0801ED54 @ =gCurrentMoveTurn\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + ldrb r1, [r1]\n\ + cmp r0, r1\n\ + bhi _0801ED2E\n\ + bl _0801F5DC\n\ +_0801ED2E:\n\ + mov r2, r8\n\ + ldrb r0, [r2]\n\ + adds r2, r0, 0\n\ + muls r2, r6\n\ + mov r0, r9\n\ + adds r0, 0x50\n\ + adds r2, r0\n\ + ldr r1, _0801ED58 @ =gStatusFlagsForMoveEffects\n\ + ldr r0, _0801ED5C @ =gBattleCommunication\n\ + ldrb r0, [r0, 0x3]\n\ + lsls r0, 2\n\ + adds r0, r1\n\ + ldr r1, [r2]\n\ + ldr r0, [r0]\n\ + orrs r1, r0\n\ + str r1, [r2]\n\ + bl _0801F5DC\n\ + .align 2, 0\n\ +_0801ED54: .4byte gCurrentMoveTurn\n\ +_0801ED58: .4byte gStatusFlagsForMoveEffects\n\ +_0801ED5C: .4byte gBattleCommunication\n\ +_0801ED60:\n\ + mov r3, r8\n\ + ldrb r0, [r3]\n\ + movs r5, 0x58\n\ + muls r0, r5\n\ + mov r4, r9\n\ + adds r4, 0x50\n\ + adds r2, r0, r4\n\ + ldr r1, [r2]\n\ + movs r0, 0x70\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _0801ED7C\n\ + bl _0801F5DC\n\ +_0801ED7C:\n\ + movs r0, 0x80\n\ + lsls r0, 5\n\ + orrs r1, r0\n\ + str r1, [r2]\n\ + ldr r1, _0801EDC8 @ =gLockedMove\n\ + ldrb r0, [r3]\n\ + lsls r0, 1\n\ + adds r0, r1\n\ + ldr r1, _0801EDCC @ =gCurrentMove\n\ + ldrh r1, [r1]\n\ + strh r1, [r0]\n\ + bl Random\n\ + mov r2, r8\n\ + ldrb r1, [r2]\n\ + adds r2, r1, 0\n\ + muls r2, r5\n\ + adds r2, r4\n\ + movs r1, 0x3\n\ + ands r1, r0\n\ + adds r1, 0x2\n\ + lsls r1, 4\n\ + ldr r0, [r2]\n\ + orrs r0, r1\n\ + str r0, [r2]\n\ + ldr r4, _0801EDD0 @ =gBattlescriptCurrInstr\n\ + ldr r0, [r4]\n\ + adds r0, 0x1\n\ + bl b_movescr_stack_push\n\ + ldr r1, _0801EDD4 @ =gMoveEffectBS_Ptrs\n\ + ldr r0, _0801EDD8 @ =gBattleCommunication\n\ + ldrb r0, [r0, 0x3]\n\ + lsls r0, 2\n\ + adds r0, r1\n\ + ldr r0, [r0]\n\ + bl _0801F5F8\n\ + .align 2, 0\n\ +_0801EDC8: .4byte gLockedMove\n\ +_0801EDCC: .4byte gCurrentMove\n\ +_0801EDD0: .4byte gBattlescriptCurrInstr\n\ +_0801EDD4: .4byte gMoveEffectBS_Ptrs\n\ +_0801EDD8: .4byte gBattleCommunication\n\ +_0801EDDC:\n\ + ldr r5, _0801EE30 @ =gBankAttacker\n\ + ldrb r0, [r5]\n\ + bl GetBankIdentity\n\ + movs r1, 0x1\n\ + ands r1, r0\n\ + cmp r1, 0\n\ + bne _0801EE14\n\ + ldr r4, _0801EE34 @ =gPaydayMoney\n\ + ldrh r3, [r4]\n\ + ldr r2, _0801EE38 @ =gBattleMons\n\ + ldrb r1, [r5]\n\ + movs r0, 0x58\n\ + muls r0, r1\n\ + adds r0, r2\n\ + adds r0, 0x2A\n\ + ldrb r1, [r0]\n\ + lsls r0, r1, 2\n\ + adds r0, r1\n\ + adds r0, r3, r0\n\ + strh r0, [r4]\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + cmp r3, r0\n\ + bls _0801EE14\n\ + ldr r3, _0801EE3C @ =0x0000ffff\n\ + adds r0, r3, 0\n\ + strh r0, [r4]\n\ +_0801EE14:\n\ + ldr r4, _0801EE40 @ =gBattlescriptCurrInstr\n\ + ldr r0, [r4]\n\ + adds r0, 0x1\n\ + bl b_movescr_stack_push\n\ + ldr r1, _0801EE44 @ =gMoveEffectBS_Ptrs\n\ + ldr r0, _0801EE48 @ =gBattleCommunication\n\ + ldrb r0, [r0, 0x3]\n\ + lsls r0, 2\n\ + adds r0, r1\n\ + ldr r0, [r0]\n\ + bl _0801F5F8\n\ + .align 2, 0\n\ +_0801EE30: .4byte gBankAttacker\n\ +_0801EE34: .4byte gPaydayMoney\n\ +_0801EE38: .4byte gBattleMons\n\ +_0801EE3C: .4byte 0x0000ffff\n\ +_0801EE40: .4byte gBattlescriptCurrInstr\n\ +_0801EE44: .4byte gMoveEffectBS_Ptrs\n\ +_0801EE48: .4byte gBattleCommunication\n\ +_0801EE4C:\n\ + mov r4, r8\n\ + ldrb r1, [r4]\n\ + movs r0, 0x58\n\ + muls r0, r1\n\ + mov r1, r9\n\ + adds r1, 0x4C\n\ + adds r0, r1\n\ + ldr r0, [r0]\n\ + cmp r0, 0\n\ + beq _0801EE62\n\ + b _0801F5DC\n\ +_0801EE62:\n\ + bl Random\n\ + ldr r4, _0801EE80 @ =gBattleCommunication\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + movs r1, 0x3\n\ + bl __umodsi3\n\ + adds r0, 0x3\n\ + strb r0, [r4, 0x3]\n\ + movs r0, 0\n\ + movs r1, 0\n\ + bl SetMoveEffect\n\ + b _0801F5FA\n\ + .align 2, 0\n\ +_0801EE80: .4byte gBattleCommunication\n\ +_0801EE84:\n\ + mov r0, r8\n\ + ldrb r1, [r0]\n\ + movs r0, 0x58\n\ + adds r2, r1, 0\n\ + muls r2, r0\n\ + mov r0, r9\n\ + adds r0, 0x50\n\ + adds r2, r0\n\ + ldr r0, [r2]\n\ + movs r1, 0x80\n\ + lsls r1, 5\n\ + orrs r0, r1\n\ + str r0, [r2]\n\ + ldr r1, _0801EEC0 @ =gLockedMove\n\ + mov r2, r8\n\ + ldrb r0, [r2]\n\ + lsls r0, 1\n\ + adds r0, r1\n\ + ldr r1, _0801EEC4 @ =gCurrentMove\n\ + ldrh r1, [r1]\n\ + strh r1, [r0]\n\ + ldr r0, _0801EEC8 @ =gProtectStructs\n\ + ldrb r1, [r2]\n\ + lsls r1, 4\n\ + adds r1, r0\n\ + ldrb r0, [r1, 0x1]\n\ + movs r2, 0x4\n\ + orrs r0, r2\n\ + strb r0, [r1, 0x1]\n\ + b _0801F5DC\n\ + .align 2, 0\n\ +_0801EEC0: .4byte gLockedMove\n\ +_0801EEC4: .4byte gCurrentMove\n\ +_0801EEC8: .4byte gProtectStructs\n\ +_0801EECC:\n\ + mov r3, r8\n\ + ldrb r0, [r3]\n\ + movs r6, 0x58\n\ + muls r0, r6\n\ + mov r4, r9\n\ + adds r4, 0x50\n\ + adds r0, r4\n\ + ldr r5, [r0]\n\ + movs r0, 0xE0\n\ + lsls r0, 8\n\ + ands r5, r0\n\ + cmp r5, 0\n\ + beq _0801EEE8\n\ + b _0801F5DC\n\ +_0801EEE8:\n\ + bl Random\n\ + mov r2, r8\n\ + ldrb r1, [r2]\n\ + adds r2, r1, 0\n\ + muls r2, r6\n\ + adds r2, r4\n\ + movs r1, 0x3\n\ + ands r1, r0\n\ + adds r1, 0x3\n\ + lsls r1, 13\n\ + ldr r0, [r2]\n\ + orrs r0, r1\n\ + str r0, [r2]\n\ + ldr r2, _0801EF80 @ =0x02000000\n\ + mov r3, r8\n\ + ldrb r0, [r3]\n\ + lsls r0, 1\n\ + ldr r4, _0801EF84 @ =0x00016004\n\ + adds r0, r4\n\ + adds r0, r2\n\ + ldr r6, _0801EF88 @ =gCurrentMove\n\ + ldrh r1, [r6]\n\ + strb r1, [r0]\n\ + ldrb r0, [r3]\n\ + lsls r0, 1\n\ + ldr r1, _0801EF8C @ =0x00016005\n\ + adds r0, r1\n\ + adds r0, r2\n\ + ldrh r1, [r6]\n\ + lsrs r1, 8\n\ + strb r1, [r0]\n\ + ldrb r0, [r3]\n\ + ldr r3, _0801EF90 @ =0x00016020\n\ + adds r0, r3\n\ + adds r0, r2\n\ + ldr r1, _0801EF94 @ =gBankAttacker\n\ + ldrb r1, [r1]\n\ + strb r1, [r0]\n\ + ldr r4, _0801EF98 @ =gBattlescriptCurrInstr\n\ + ldr r0, [r4]\n\ + adds r0, 0x1\n\ + bl b_movescr_stack_push\n\ + ldr r1, _0801EF9C @ =gMoveEffectBS_Ptrs\n\ + ldr r2, _0801EFA0 @ =gBattleCommunication\n\ + ldrb r0, [r2, 0x3]\n\ + lsls r0, 2\n\ + adds r0, r1\n\ + ldr r0, [r0]\n\ + str r0, [r4]\n\ + strb r5, [r2, 0x5]\n\ + ldr r1, _0801EFA4 @ =gTrappingMoves\n\ + ldrh r0, [r1]\n\ + ldrh r4, [r6]\n\ + cmp r0, r4\n\ + bne _0801EF5C\n\ + b _0801F5FA\n\ +_0801EF5C:\n\ + adds r3, r1, 0\n\ + adds r1, r6, 0\n\ +_0801EF60:\n\ + ldrb r0, [r2, 0x5]\n\ + adds r0, 0x1\n\ + strb r0, [r2, 0x5]\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + cmp r0, 0x4\n\ + bls _0801EF70\n\ + b _0801F5FA\n\ +_0801EF70:\n\ + ldrb r0, [r2, 0x5]\n\ + lsls r0, 1\n\ + adds r0, r3\n\ + ldrh r0, [r0]\n\ + ldrh r4, [r1]\n\ + cmp r0, r4\n\ + bne _0801EF60\n\ + b _0801F5FA\n\ + .align 2, 0\n\ +_0801EF80: .4byte 0x02000000\n\ +_0801EF84: .4byte 0x00016004\n\ +_0801EF88: .4byte gCurrentMove\n\ +_0801EF8C: .4byte 0x00016005\n\ +_0801EF90: .4byte 0x00016020\n\ +_0801EF94: .4byte gBankAttacker\n\ +_0801EF98: .4byte gBattlescriptCurrInstr\n\ +_0801EF9C: .4byte gMoveEffectBS_Ptrs\n\ +_0801EFA0: .4byte gBattleCommunication\n\ +_0801EFA4: .4byte gTrappingMoves\n\ +_0801EFA8:\n\ + ldr r1, _0801EFD8 @ =gBattleMoveDamage\n\ + ldr r0, _0801EFDC @ =gHP_dealt\n\ + ldr r0, [r0]\n\ + cmp r0, 0\n\ + bge _0801EFB4\n\ + adds r0, 0x3\n\ +_0801EFB4:\n\ + asrs r0, 2\n\ + str r0, [r1]\n\ + cmp r0, 0\n\ + bne _0801EFC0\n\ + movs r0, 0x1\n\ + str r0, [r1]\n\ +_0801EFC0:\n\ + ldr r4, _0801EFE0 @ =gBattlescriptCurrInstr\n\ + ldr r0, [r4]\n\ + adds r0, 0x1\n\ + bl b_movescr_stack_push\n\ + ldr r1, _0801EFE4 @ =gMoveEffectBS_Ptrs\n\ + ldr r0, _0801EFE8 @ =gBattleCommunication\n\ + ldrb r0, [r0, 0x3]\n\ + lsls r0, 2\n\ + adds r0, r1\n\ + ldr r0, [r0]\n\ + b _0801F5F8\n\ + .align 2, 0\n\ +_0801EFD8: .4byte gBattleMoveDamage\n\ +_0801EFDC: .4byte gHP_dealt\n\ +_0801EFE0: .4byte gBattlescriptCurrInstr\n\ +_0801EFE4: .4byte gMoveEffectBS_Ptrs\n\ +_0801EFE8: .4byte gBattleCommunication\n\ +_0801EFEC:\n\ + ldrb r1, [r7, 0x3]\n\ + adds r1, 0xF2\n\ + lsls r1, 24\n\ + lsrs r1, 24\n\ + movs r0, 0x10\n\ + adds r2, r6, 0\n\ + movs r3, 0\n\ + bl ChangeStatBuffs\n\ + lsls r0, 24\n\ + lsrs r3, r0, 24\n\ + cmp r3, 0\n\ + beq _0801F008\n\ + b _0801F5DC\n\ +_0801F008:\n\ + ldr r2, _0801F02C @ =0x02000000\n\ + ldrb r1, [r7, 0x3]\n\ + movs r0, 0x3F\n\ + ands r0, r1\n\ + ldr r4, _0801F030 @ =0x000160a4\n\ + adds r1, r2, r4\n\ + strb r0, [r1]\n\ + ldr r0, _0801F034 @ =0x000160a5\n\ + adds r2, r0\n\ + strb r3, [r2]\n\ + ldr r4, _0801F038 @ =gBattlescriptCurrInstr\n\ + ldr r0, [r4]\n\ + adds r0, 0x1\n\ + bl b_movescr_stack_push\n\ + ldr r0, _0801F03C @ =BattleScript_StatUp\n\ + b _0801F5F8\n\ + .align 2, 0\n\ +_0801F02C: .4byte 0x02000000\n\ +_0801F030: .4byte 0x000160a4\n\ +_0801F034: .4byte 0x000160a5\n\ +_0801F038: .4byte gBattlescriptCurrInstr\n\ +_0801F03C: .4byte BattleScript_StatUp\n\ +_0801F040:\n\ + movs r0, 0x70\n\ + negs r0, r0\n\ + ldrb r1, [r7, 0x3]\n\ + adds r1, 0xEB\n\ + lsls r1, 24\n\ + lsrs r1, 24\n\ + adds r2, r6, 0\n\ + movs r3, 0\n\ + bl ChangeStatBuffs\n\ + lsls r0, 24\n\ + lsrs r3, r0, 24\n\ + cmp r3, 0\n\ + beq _0801F05E\n\ + b _0801F5DC\n\ +_0801F05E:\n\ + ldr r2, _0801F080 @ =0x02000000\n\ + ldrb r1, [r7, 0x3]\n\ + movs r0, 0x3F\n\ + ands r0, r1\n\ + ldr r4, _0801F084 @ =0x000160a4\n\ + adds r1, r2, r4\n\ + strb r0, [r1]\n\ + ldr r0, _0801F088 @ =0x000160a5\n\ + adds r2, r0\n\ + strb r3, [r2]\n\ + ldr r4, _0801F08C @ =gBattlescriptCurrInstr\n\ + ldr r0, [r4]\n\ + adds r0, 0x1\n\ + bl b_movescr_stack_push\n\ + ldr r0, _0801F090 @ =BattleScript_StatDown\n\ + b _0801F5F8\n\ + .align 2, 0\n\ +_0801F080: .4byte 0x02000000\n\ +_0801F084: .4byte 0x000160a4\n\ +_0801F088: .4byte 0x000160a5\n\ +_0801F08C: .4byte gBattlescriptCurrInstr\n\ +_0801F090: .4byte BattleScript_StatDown\n\ +_0801F094:\n\ + ldrb r1, [r7, 0x3]\n\ + adds r1, 0xDA\n\ + lsls r1, 24\n\ + lsrs r1, 24\n\ + movs r0, 0x20\n\ + adds r2, r6, 0\n\ + movs r3, 0\n\ + bl ChangeStatBuffs\n\ + lsls r0, 24\n\ + lsrs r3, r0, 24\n\ + cmp r3, 0\n\ + beq _0801F0B0\n\ + b _0801F5DC\n\ +_0801F0B0:\n\ + ldr r2, _0801F0D4 @ =0x02000000\n\ + ldrb r1, [r7, 0x3]\n\ + movs r0, 0x3F\n\ + ands r0, r1\n\ + ldr r4, _0801F0D8 @ =0x000160a4\n\ + adds r1, r2, r4\n\ + strb r0, [r1]\n\ + ldr r0, _0801F0DC @ =0x000160a5\n\ + adds r2, r0\n\ + strb r3, [r2]\n\ + ldr r4, _0801F0E0 @ =gBattlescriptCurrInstr\n\ + ldr r0, [r4]\n\ + adds r0, 0x1\n\ + bl b_movescr_stack_push\n\ + ldr r0, _0801F0E4 @ =BattleScript_StatUp\n\ + b _0801F5F8\n\ + .align 2, 0\n\ +_0801F0D4: .4byte 0x02000000\n\ +_0801F0D8: .4byte 0x000160a4\n\ +_0801F0DC: .4byte 0x000160a5\n\ +_0801F0E0: .4byte gBattlescriptCurrInstr\n\ +_0801F0E4: .4byte BattleScript_StatUp\n\ +_0801F0E8:\n\ + movs r0, 0x60\n\ + negs r0, r0\n\ + ldrb r1, [r7, 0x3]\n\ + adds r1, 0xD3\n\ + lsls r1, 24\n\ + lsrs r1, 24\n\ + adds r2, r6, 0\n\ + movs r3, 0\n\ + bl ChangeStatBuffs\n\ + lsls r0, 24\n\ + lsrs r3, r0, 24\n\ + cmp r3, 0\n\ + beq _0801F106\n\ + b _0801F5DC\n\ +_0801F106:\n\ + ldr r2, _0801F128 @ =0x02000000\n\ + ldrb r1, [r7, 0x3]\n\ + movs r0, 0x3F\n\ + ands r0, r1\n\ + ldr r4, _0801F12C @ =0x000160a4\n\ + adds r1, r2, r4\n\ + strb r0, [r1]\n\ + ldr r0, _0801F130 @ =0x000160a5\n\ + adds r2, r0\n\ + strb r3, [r2]\n\ + ldr r4, _0801F134 @ =gBattlescriptCurrInstr\n\ + ldr r0, [r4]\n\ + adds r0, 0x1\n\ + bl b_movescr_stack_push\n\ + ldr r0, _0801F138 @ =BattleScript_StatDown\n\ + b _0801F5F8\n\ + .align 2, 0\n\ +_0801F128: .4byte 0x02000000\n\ +_0801F12C: .4byte 0x000160a4\n\ +_0801F130: .4byte 0x000160a5\n\ +_0801F134: .4byte gBattlescriptCurrInstr\n\ +_0801F138: .4byte BattleScript_StatDown\n\ +_0801F13C:\n\ + mov r2, r8\n\ + ldrb r1, [r2]\n\ + movs r0, 0x58\n\ + adds r2, r1, 0\n\ + muls r2, r0\n\ + mov r0, r9\n\ + adds r0, 0x50\n\ + adds r2, r0\n\ + ldr r0, [r2]\n\ + movs r1, 0x80\n\ + lsls r1, 15\n\ + orrs r0, r1\n\ + str r0, [r2]\n\ + ldr r2, _0801F178 @ =gDisableStructs\n\ + mov r3, r8\n\ + ldrb r1, [r3]\n\ + lsls r0, r1, 3\n\ + subs r0, r1\n\ + lsls r0, 2\n\ + adds r0, r2\n\ + movs r1, 0x2\n\ + strb r1, [r0, 0x19]\n\ + ldr r1, _0801F17C @ =gLockedMove\n\ + ldrb r0, [r3]\n\ + lsls r0, 1\n\ + adds r0, r1\n\ + ldr r1, _0801F180 @ =gCurrentMove\n\ + ldrh r1, [r1]\n\ + strh r1, [r0]\n\ + b _0801F5DC\n\ + .align 2, 0\n\ +_0801F178: .4byte gDisableStructs\n\ +_0801F17C: .4byte gLockedMove\n\ +_0801F180: .4byte gCurrentMove\n\ +_0801F184:\n\ + ldr r0, _0801F1A0 @ =gBankAttacker\n\ + ldrb r1, [r0]\n\ + movs r0, 0x58\n\ + adds r2, r1, 0\n\ + muls r2, r0\n\ + mov r0, r9\n\ + adds r0, 0x50\n\ + adds r2, r0\n\ + ldr r0, [r2]\n\ + movs r1, 0x80\n\ + lsls r1, 16\n\ +_0801F19A:\n\ + orrs r0, r1\n\ + str r0, [r2]\n\ + b _0801F5DC\n\ + .align 2, 0\n\ +_0801F1A0: .4byte gBankAttacker\n\ +_0801F1A4:\n\ + ldr r4, _0801F254 @ =gBankAttacker\n\ + ldrb r0, [r4]\n\ + bl GetBankSide\n\ + lsls r0, 24\n\ + lsrs r6, r0, 24\n\ + ldrb r0, [r4]\n\ + bl GetBankSide\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + cmp r0, 0x1\n\ + bne _0801F1D8\n\ + ldr r0, _0801F258 @ =gBattleTypeFlags\n\ + ldrh r1, [r0]\n\ + ldr r0, _0801F25C @ =0x00000902\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _0801F214\n\ + ldr r0, _0801F260 @ =gTrainerBattleOpponent\n\ + ldrh r1, [r0]\n\ + movs r0, 0x80\n\ + lsls r0, 3\n\ + cmp r1, r0\n\ + beq _0801F1D8\n\ + b _0801F5DC\n\ +_0801F1D8:\n\ + ldr r0, _0801F258 @ =gBattleTypeFlags\n\ + ldrh r1, [r0]\n\ + ldr r0, _0801F25C @ =0x00000902\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _0801F214\n\ + ldr r0, _0801F260 @ =gTrainerBattleOpponent\n\ + ldrh r1, [r0]\n\ + movs r0, 0x80\n\ + lsls r0, 3\n\ + cmp r1, r0\n\ + beq _0801F214\n\ + ldr r0, _0801F264 @ =gWishFutureKnock\n\ + adds r0, 0x29\n\ + adds r0, r6, r0\n\ + ldrb r1, [r0]\n\ + ldr r3, _0801F268 @ =gBitTable\n\ + ldr r2, _0801F26C @ =gBattlePartyID\n\ + ldr r0, _0801F254 @ =gBankAttacker\n\ + ldrb r0, [r0]\n\ + lsls r0, 1\n\ + adds r0, r2\n\ + ldrh r0, [r0]\n\ + lsls r0, 2\n\ + adds r0, r3\n\ + ldr r0, [r0]\n\ + ands r1, r0\n\ + cmp r1, 0\n\ + beq _0801F214\n\ + b _0801F5DC\n\ +_0801F214:\n\ + ldr r2, _0801F270 @ =gBattleMons\n\ + ldr r1, _0801F274 @ =gBankTarget\n\ + ldrb r0, [r1]\n\ + movs r3, 0x58\n\ + muls r0, r3\n\ + adds r4, r0, r2\n\ + ldrh r0, [r4, 0x2E]\n\ + adds r7, r1, 0\n\ + mov r9, r2\n\ + cmp r0, 0\n\ + beq _0801F284\n\ + adds r0, r4, 0\n\ + adds r0, 0x20\n\ + ldrb r0, [r0]\n\ + cmp r0, 0x3C\n\ + bne _0801F284\n\ + ldr r1, _0801F278 @ =gBattlescriptCurrInstr\n\ + ldr r0, _0801F27C @ =BattleScript_NoItemSteal\n\ + str r0, [r1]\n\ + ldr r1, _0801F280 @ =gLastUsedAbility\n\ + ldrb r0, [r7]\n\ + muls r0, r3\n\ + add r0, r9\n\ + adds r0, 0x20\n\ + ldrb r0, [r0]\n\ + strb r0, [r1]\n\ + ldrb r0, [r7]\n\ + ldrb r1, [r1]\n\ + bl RecordAbilityBattle\n\ + b _0801F5FA\n\ + .align 2, 0\n\ +_0801F254: .4byte gBankAttacker\n\ +_0801F258: .4byte gBattleTypeFlags\n\ +_0801F25C: .4byte 0x00000902\n\ +_0801F260: .4byte gTrainerBattleOpponent\n\ +_0801F264: .4byte gWishFutureKnock\n\ +_0801F268: .4byte gBitTable\n\ +_0801F26C: .4byte gBattlePartyID\n\ +_0801F270: .4byte gBattleMons\n\ +_0801F274: .4byte gBankTarget\n\ +_0801F278: .4byte gBattlescriptCurrInstr\n\ +_0801F27C: .4byte BattleScript_NoItemSteal\n\ +_0801F280: .4byte gLastUsedAbility\n\ +_0801F284:\n\ + ldr r4, _0801F340 @ =gBankAttacker\n\ + mov r10, r4\n\ + ldrb r1, [r4]\n\ + movs r0, 0x58\n\ + mov r8, r0\n\ + mov r0, r8\n\ + muls r0, r1\n\ + add r0, r9\n\ + ldrh r3, [r0, 0x2E]\n\ + cmp r3, 0\n\ + beq _0801F29C\n\ + b _0801F5DC\n\ +_0801F29C:\n\ + ldrb r0, [r7]\n\ + mov r2, r8\n\ + muls r2, r0\n\ + adds r0, r2, 0\n\ + add r0, r9\n\ + ldrh r2, [r0, 0x2E]\n\ + adds r0, r2, 0\n\ + cmp r0, 0xAF\n\ + bne _0801F2B0\n\ + b _0801F5DC\n\ +_0801F2B0:\n\ + cmp r0, 0\n\ + bne _0801F2B6\n\ + b _0801F5DC\n\ +_0801F2B6:\n\ + lsls r0, r1, 1\n\ + ldr r5, _0801F344 @ =0x020160f0\n\ + adds r0, r5\n\ + ldr r1, _0801F348 @ =gLastUsedItem\n\ + strh r2, [r0]\n\ + strh r2, [r1]\n\ + ldrb r0, [r7]\n\ + mov r4, r8\n\ + muls r4, r0\n\ + adds r0, r4, 0\n\ + add r0, r9\n\ + movs r6, 0\n\ + strh r3, [r0, 0x2E]\n\ + ldr r4, _0801F34C @ =gActiveBank\n\ + mov r2, r10\n\ + ldrb r0, [r2]\n\ + strb r0, [r4]\n\ + str r1, [sp]\n\ + movs r0, 0\n\ + movs r1, 0x2\n\ + movs r2, 0\n\ + movs r3, 0x2\n\ + bl EmitSetAttributes\n\ + mov r3, r10\n\ + ldrb r0, [r3]\n\ + bl MarkBufferBankForExecution\n\ + ldrb r0, [r7]\n\ + strb r0, [r4]\n\ + ldrb r0, [r7]\n\ + mov r4, r8\n\ + muls r4, r0\n\ + adds r0, r4, 0\n\ + mov r1, r9\n\ + adds r1, 0x2E\n\ + adds r0, r1\n\ + str r0, [sp]\n\ + movs r0, 0\n\ + movs r1, 0x2\n\ + movs r2, 0\n\ + movs r3, 0x2\n\ + bl EmitSetAttributes\n\ + ldrb r0, [r7]\n\ + bl MarkBufferBankForExecution\n\ + ldr r4, _0801F350 @ =gBattlescriptCurrInstr\n\ + ldr r0, [r4]\n\ + adds r0, 0x1\n\ + bl b_movescr_stack_push\n\ + ldr r0, _0801F354 @ =BattleScript_ItemSteal\n\ + str r0, [r4]\n\ + ldr r0, _0801F358 @ =0xfffe9f10\n\ + adds r5, r0\n\ + ldrb r0, [r7]\n\ + lsls r0, 1\n\ + ldr r1, _0801F35C @ =0x000160e8\n\ + adds r0, r1\n\ + adds r0, r5\n\ + strb r6, [r0]\n\ + ldrb r0, [r7]\n\ + lsls r0, 1\n\ + ldr r2, _0801F360 @ =0x000160e9\n\ + adds r0, r2\n\ + adds r0, r5\n\ + strb r6, [r0]\n\ + b _0801F5FA\n\ + .align 2, 0\n\ +_0801F340: .4byte gBankAttacker\n\ +_0801F344: .4byte 0x020160f0\n\ +_0801F348: .4byte gLastUsedItem\n\ +_0801F34C: .4byte gActiveBank\n\ +_0801F350: .4byte gBattlescriptCurrInstr\n\ +_0801F354: .4byte BattleScript_ItemSteal\n\ +_0801F358: .4byte 0xfffe9f10\n\ +_0801F35C: .4byte 0x000160e8\n\ +_0801F360: .4byte 0x000160e9\n\ +_0801F364:\n\ + ldr r3, _0801F394 @ =gBankTarget\n\ + ldrb r1, [r3]\n\ + movs r0, 0x58\n\ + adds r2, r1, 0\n\ + muls r2, r0\n\ + mov r0, r9\n\ + adds r0, 0x50\n\ + adds r2, r0\n\ + ldr r0, [r2]\n\ + movs r1, 0x80\n\ + lsls r1, 19\n\ + orrs r0, r1\n\ + str r0, [r2]\n\ + ldr r2, _0801F398 @ =gDisableStructs\n\ + ldrb r1, [r3]\n\ + lsls r0, r1, 3\n\ + subs r0, r1\n\ + lsls r0, 2\n\ + adds r0, r2\n\ + ldr r1, _0801F39C @ =gBankAttacker\n\ + ldrb r1, [r1]\n\ + strb r1, [r0, 0x14]\n\ + b _0801F5DC\n\ + .align 2, 0\n\ +_0801F394: .4byte gBankTarget\n\ +_0801F398: .4byte gDisableStructs\n\ +_0801F39C: .4byte gBankAttacker\n\ +_0801F3A0:\n\ + ldr r0, _0801F3B8 @ =gBankTarget\n\ + ldrb r1, [r0]\n\ + movs r0, 0x58\n\ + adds r2, r1, 0\n\ + muls r2, r0\n\ + mov r0, r9\n\ + adds r0, 0x50\n\ + adds r2, r0\n\ + ldr r0, [r2]\n\ + movs r1, 0x80\n\ + lsls r1, 20\n\ + b _0801F19A\n\ + .align 2, 0\n\ +_0801F3B8: .4byte gBankTarget\n\ +_0801F3BC:\n\ + ldr r4, _0801F3CC @ =gBattlescriptCurrInstr\n\ + ldr r0, [r4]\n\ + adds r0, 0x1\n\ + bl b_movescr_stack_push\n\ + ldr r0, _0801F3D0 @ =BattleScript_AllStatsUp\n\ + b _0801F5F8\n\ + .align 2, 0\n\ +_0801F3CC: .4byte gBattlescriptCurrInstr\n\ +_0801F3D0: .4byte BattleScript_AllStatsUp\n\ +_0801F3D4:\n\ + ldr r4, _0801F3E4 @ =gBattlescriptCurrInstr\n\ + ldr r0, [r4]\n\ + adds r0, 0x1\n\ + bl b_movescr_stack_push\n\ + ldr r0, _0801F3E8 @ =BattleScript_RapidSpinAway\n\ + b _0801F5F8\n\ + .align 2, 0\n\ +_0801F3E4: .4byte gBattlescriptCurrInstr\n\ +_0801F3E8: .4byte BattleScript_RapidSpinAway\n\ +_0801F3EC:\n\ + ldr r6, _0801F43C @ =gBankTarget\n\ + ldrb r0, [r6]\n\ + movs r2, 0x58\n\ + muls r0, r2\n\ + mov r1, r9\n\ + adds r1, 0x4C\n\ + adds r5, r0, r1\n\ + ldr r4, [r5]\n\ + movs r0, 0x40\n\ + ands r0, r4\n\ + cmp r0, 0\n\ + bne _0801F406\n\ + b _0801F5DC\n\ +_0801F406:\n\ + movs r0, 0x41\n\ + negs r0, r0\n\ + ands r4, r0\n\ + str r4, [r5]\n\ + ldr r4, _0801F440 @ =gActiveBank\n\ + ldrb r0, [r6]\n\ + strb r0, [r4]\n\ + ldrb r0, [r4]\n\ + muls r0, r2\n\ + adds r0, r1\n\ + str r0, [sp]\n\ + movs r0, 0\n\ + movs r1, 0x28\n\ + movs r2, 0\n\ + movs r3, 0x4\n\ + bl EmitSetAttributes\n\ + ldrb r0, [r4]\n\ + bl MarkBufferBankForExecution\n\ + ldr r4, _0801F444 @ =gBattlescriptCurrInstr\n\ + ldr r0, [r4]\n\ + adds r0, 0x1\n\ + bl b_movescr_stack_push\n\ + ldr r0, _0801F448 @ =BattleScript_TargetPRLZHeal\n\ + b _0801F5F8\n\ + .align 2, 0\n\ +_0801F43C: .4byte gBankTarget\n\ +_0801F440: .4byte gActiveBank\n\ +_0801F444: .4byte gBattlescriptCurrInstr\n\ +_0801F448: .4byte BattleScript_TargetPRLZHeal\n\ +_0801F44C:\n\ + ldr r4, _0801F45C @ =gBattlescriptCurrInstr\n\ + ldr r0, [r4]\n\ + adds r0, 0x1\n\ + bl b_movescr_stack_push\n\ + ldr r0, _0801F460 @ =BattleScript_AtkDefDown\n\ + b _0801F5F8\n\ + .align 2, 0\n\ +_0801F45C: .4byte gBattlescriptCurrInstr\n\ +_0801F460: .4byte BattleScript_AtkDefDown\n\ +_0801F464:\n\ + ldr r4, _0801F494 @ =gBattleMoveDamage\n\ + ldr r0, _0801F498 @ =gHP_dealt\n\ + ldr r0, [r0]\n\ + movs r1, 0x3\n\ + bl __divsi3\n\ + str r0, [r4]\n\ + cmp r0, 0\n\ + bne _0801F47A\n\ + movs r0, 0x1\n\ + str r0, [r4]\n\ +_0801F47A:\n\ + ldr r4, _0801F49C @ =gBattlescriptCurrInstr\n\ + ldr r0, [r4]\n\ + adds r0, 0x1\n\ + bl b_movescr_stack_push\n\ + ldr r1, _0801F4A0 @ =gMoveEffectBS_Ptrs\n\ + ldr r0, _0801F4A4 @ =gBattleCommunication\n\ + ldrb r0, [r0, 0x3]\n\ + lsls r0, 2\n\ + adds r0, r1\n\ + ldr r0, [r0]\n\ + b _0801F5F8\n\ + .align 2, 0\n\ +_0801F494: .4byte gBattleMoveDamage\n\ +_0801F498: .4byte gHP_dealt\n\ +_0801F49C: .4byte gBattlescriptCurrInstr\n\ +_0801F4A0: .4byte gMoveEffectBS_Ptrs\n\ +_0801F4A4: .4byte gBattleCommunication\n\ +_0801F4A8:\n\ + mov r3, r8\n\ + ldrb r0, [r3]\n\ + movs r5, 0x58\n\ + muls r0, r5\n\ + mov r4, r9\n\ + adds r4, 0x50\n\ + adds r2, r0, r4\n\ + ldr r1, [r2]\n\ + movs r0, 0xC0\n\ + lsls r0, 4\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _0801F4C4\n\ + b _0801F5DC\n\ +_0801F4C4:\n\ + movs r0, 0x80\n\ + lsls r0, 5\n\ + orrs r1, r0\n\ + str r1, [r2]\n\ + ldr r1, _0801F4F8 @ =gLockedMove\n\ + ldrb r0, [r3]\n\ + lsls r0, 1\n\ + adds r0, r1\n\ + ldr r1, _0801F4FC @ =gCurrentMove\n\ + ldrh r1, [r1]\n\ + strh r1, [r0]\n\ + bl Random\n\ + mov r2, r8\n\ + ldrb r1, [r2]\n\ + adds r2, r1, 0\n\ + muls r2, r5\n\ + adds r2, r4\n\ + movs r1, 0x1\n\ + ands r1, r0\n\ + adds r1, 0x2\n\ + lsls r1, 10\n\ + ldr r0, [r2]\n\ +_0801F4F2:\n\ + orrs r0, r1\n\ + str r0, [r2]\n\ + b _0801F5FA\n\ + .align 2, 0\n\ +_0801F4F8: .4byte gLockedMove\n\ +_0801F4FC: .4byte gCurrentMove\n\ +_0801F500:\n\ + mov r5, r8\n\ + ldrb r3, [r5]\n\ + movs r4, 0x58\n\ + adds r0, r3, 0\n\ + muls r0, r4\n\ + mov r2, r9\n\ + adds r1, r0, r2\n\ + adds r0, r1, 0\n\ + adds r0, 0x20\n\ + ldrb r2, [r0]\n\ + cmp r2, 0x3C\n\ + bne _0801F540\n\ + ldrh r0, [r1, 0x2E]\n\ + cmp r0, 0\n\ + beq _0801F5DC\n\ + ldr r0, _0801F534 @ =gLastUsedAbility\n\ + strb r2, [r0]\n\ + ldr r1, _0801F538 @ =gBattlescriptCurrInstr\n\ + ldr r0, _0801F53C @ =BattleScript_NoItemSteal\n\ + str r0, [r1]\n\ + ldrb r0, [r5]\n\ + movs r1, 0x3C\n\ + bl RecordAbilityBattle\n\ + b _0801F5FA\n\ + .align 2, 0\n\ +_0801F534: .4byte gLastUsedAbility\n\ +_0801F538: .4byte gBattlescriptCurrInstr\n\ +_0801F53C: .4byte BattleScript_NoItemSteal\n\ +_0801F540:\n\ + ldrh r0, [r1, 0x2E]\n\ + cmp r0, 0\n\ + beq _0801F5DC\n\ + adds r0, r3, 0\n\ + bl GetBankSide\n\ + lsls r0, 24\n\ + lsrs r6, r0, 24\n\ + ldr r1, _0801F5B8 @ =gLastUsedItem\n\ + mov r3, r8\n\ + ldrb r0, [r3]\n\ + muls r0, r4\n\ + add r0, r9\n\ + ldrh r0, [r0, 0x2E]\n\ + strh r0, [r1]\n\ + ldrb r0, [r3]\n\ + muls r0, r4\n\ + add r0, r9\n\ + movs r5, 0\n\ + movs r1, 0\n\ + strh r1, [r0, 0x2E]\n\ + ldr r2, _0801F5BC @ =gWishFutureKnock\n\ + adds r2, 0x29\n\ + adds r2, r6, r2\n\ + ldr r3, _0801F5C0 @ =gBitTable\n\ + ldr r1, _0801F5C4 @ =gBattlePartyID\n\ + mov r4, r8\n\ + ldrb r0, [r4]\n\ + lsls r0, 1\n\ + adds r0, r1\n\ + ldrh r0, [r0]\n\ + lsls r0, 2\n\ + adds r0, r3\n\ + ldr r0, [r0]\n\ + ldrb r1, [r2]\n\ + orrs r0, r1\n\ + strb r0, [r2]\n\ + ldr r4, _0801F5C8 @ =gBattlescriptCurrInstr\n\ + ldr r0, [r4]\n\ + adds r0, 0x1\n\ + bl b_movescr_stack_push\n\ + ldr r0, _0801F5CC @ =BattleScript_KnockedOff\n\ + str r0, [r4]\n\ + ldr r1, _0801F5D0 @ =0x02000000\n\ + mov r2, r8\n\ + ldrb r0, [r2]\n\ + lsls r0, 1\n\ + ldr r3, _0801F5D4 @ =0x000160e8\n\ + adds r0, r3\n\ + adds r0, r1\n\ + strb r5, [r0]\n\ + ldrb r0, [r2]\n\ + lsls r0, 1\n\ + ldr r4, _0801F5D8 @ =0x000160e9\n\ + adds r0, r4\n\ + adds r0, r1\n\ + strb r5, [r0]\n\ + b _0801F5FA\n\ + .align 2, 0\n\ +_0801F5B8: .4byte gLastUsedItem\n\ +_0801F5BC: .4byte gWishFutureKnock\n\ +_0801F5C0: .4byte gBitTable\n\ +_0801F5C4: .4byte gBattlePartyID\n\ +_0801F5C8: .4byte gBattlescriptCurrInstr\n\ +_0801F5CC: .4byte BattleScript_KnockedOff\n\ +_0801F5D0: .4byte 0x02000000\n\ +_0801F5D4: .4byte 0x000160e8\n\ +_0801F5D8: .4byte 0x000160e9\n\ +_0801F5DC:\n\ + ldr r1, _0801F5E8 @ =gBattlescriptCurrInstr\n\ + ldr r0, [r1]\n\ + adds r0, 0x1\n\ + str r0, [r1]\n\ + b _0801F5FA\n\ + .align 2, 0\n\ +_0801F5E8: .4byte gBattlescriptCurrInstr\n\ +_0801F5EC:\n\ + ldr r4, _0801F60C @ =gBattlescriptCurrInstr\n\ + ldr r0, [r4]\n\ + adds r0, 0x1\n\ + bl b_movescr_stack_push\n\ + ldr r0, _0801F610 @ =BattleScript_SAtkDown2\n\ +_0801F5F8:\n\ + str r0, [r4]\n\ +_0801F5FA:\n\ + add sp, 0x8\n\ + pop {r3-r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_0801F60C: .4byte gBattlescriptCurrInstr\n\ +_0801F610: .4byte BattleScript_SAtkDown2\n\ + .syntax divided\n"); +} +#endif // NONMATCHING + + +static void atk15_seteffectwithchancetarget(void) +{ + u32 PercentChance; + if (gBattleMons[gBankAttacker].ability == ABILITY_SERENE_GRACE) + PercentChance = gBattleMoves[gCurrentMove].secondaryEffectChance * 2; + else + PercentChance = gBattleMoves[gCurrentMove].secondaryEffectChance; + if (gBattleCommunication[MOVE_EFFECT_BYTE] & 0x80 && !(gBattleMoveFlags & MOVESTATUS_NOEFFECT)) + { + gBattleCommunication[MOVE_EFFECT_BYTE] &= 0x7F; + SetMoveEffect(0, 0x80); + } + else if (Random() % 100 <= PercentChance && gBattleCommunication[MOVE_EFFECT_BYTE] && !(gBattleMoveFlags & MOVESTATUS_NOEFFECT)) + { + if (PercentChance >= 100) + SetMoveEffect(0, 0x80); + else + SetMoveEffect(0, 0); + } + else + gBattlescriptCurrInstr++; + gBattleCommunication[MOVE_EFFECT_BYTE] = 0; + BATTLE_STRUCT->unk16112 = 0; +} + +static void atk16_seteffectprimary(void) +{ + SetMoveEffect(1, 0); +} + +static void atk17_seteffectsecondary(void) +{ + SetMoveEffect(0, 0); +} + +static void atk18_status_effect_clear(void) +{ + gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + if (gBattleCommunication[MOVE_EFFECT_BYTE] <= 6) + gBattleMons[gActiveBank].status1 &= (~gStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]]); + else + gBattleMons[gActiveBank].status2 &= (~gStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]]); + + gBattleCommunication[MOVE_EFFECT_BYTE] = 0; + gBattlescriptCurrInstr += 2; + BATTLE_STRUCT->unk16112 = 0; +} + +static void atk19_faint_pokemon(void) +{ + u8 *r4; + + if (gBattlescriptCurrInstr[2] != 0) + { + gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]); + if (gHitMarker & HITMARKER_FAINTED(gActiveBank)) + { + r4 = BSScriptReadPtr(gBattlescriptCurrInstr + 3); + + b_movescr_stack_pop_cursor(); + gBattlescriptCurrInstr = r4; + gSideAffecting[GetBankSide(gActiveBank)] &= ~SIDE_STATUS_SPIKES_DAMAGED; + } + else + { + gBattlescriptCurrInstr += 7; + } + } + else + { + u8 bank; + + if (gBattlescriptCurrInstr[1] == 1) + { + gActiveBank = gBankAttacker; + bank = gBankTarget; + r4 = gUnknown_081D8C58; + } + else + { + gActiveBank = gBankTarget; + bank = gBankAttacker; + r4 = gUnknown_081D8C65; + } + if (!(gAbsentBankFlags & gBitTable[gActiveBank]) + && gBattleMons[gActiveBank].hp == 0) + { + ewram[0x160AC + bank * 2 + 0] = 0; + ewram[0x160AC + bank * 2 + 1] = 0; + ewram[0x16100 + bank * 4 + 0] = 0; + ewram[0x16100 + bank * 4 + 1] = 0; + ewram[0x16100 + bank * 4 + 2] = 0; + ewram[0x16100 + bank * 4 + 3] = 0; + + gHitMarker |= HITMARKER_FAINTED(gActiveBank); + b_movescr_stack_push(gBattlescriptCurrInstr + 7); + gBattlescriptCurrInstr = r4; + if (GetBankSide(gActiveBank) == 0) + { + gHitMarker |= HITMARKER_x400000; + if (gBattleResults.playerFaintCounter < 0xFF) + gBattleResults.playerFaintCounter++; + if (gBattleMons[bank].level > gBattleMons[gActiveBank].level) + { + if (gBattleMons[bank].level - gBattleMons[gActiveBank].level > 0x1D) + AdjustFriendship(&gPlayerParty[gBattlePartyID[gActiveBank]], 8); + else + AdjustFriendship(&gPlayerParty[gBattlePartyID[gActiveBank]], 6); + } + } + else + { + if (gBattleResults.opponentFaintCounter < 0xFF) + gBattleResults.opponentFaintCounter++; + gBattleResults.lastOpponentSpecies = gBattleMons[gActiveBank].species; + } + if ((gHitMarker & HITMARKER_DESTINYBOND) && gBattleMons[gBankAttacker].hp != 0) + { + b_movescr_stack_push(gBattlescriptCurrInstr); + gBattleMoveDamage = gBattleMons[bank].hp; + gBattlescriptCurrInstr = gUnknown_081D9156; + } + if ((gStatuses3[gBankTarget] & STATUS3_GRUDGE) + && !(gHitMarker & HITMARKER_GRUDGE) + && GetBankSide(gBankAttacker) != GetBankSide(gBankTarget) + && gBattleMons[gBankAttacker].hp != 0 + && gCurrentMove != MOVE_STRUGGLE) + { + u8 moveIndex = ewram[0x1608C + gBankAttacker]; + + gBattleMons[gBankAttacker].pp[moveIndex] = 0; + b_movescr_stack_push(gBattlescriptCurrInstr); + gBattlescriptCurrInstr = gUnknown_081D9468; + gActiveBank = gBankAttacker; + EmitSetAttributes(0, moveIndex + 9, 0, 1, &gBattleMons[gActiveBank].pp[moveIndex]); + MarkBufferBankForExecution(gActiveBank); + + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 2; + gBattleTextBuff1[2] = gBattleMons[gBankAttacker].moves[moveIndex]; + gBattleTextBuff1[3] = gBattleMons[gBankAttacker].moves[moveIndex] >> 8; + gBattleTextBuff1[4] = EOS; + } + } + else + { + gBattlescriptCurrInstr += 7; + } + } +} + +static void atk1A_faint_animation(void) +{ + if (gBattleExecBuffer == 0) + { + gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + Emitcmd10(0); + MarkBufferBankForExecution(gActiveBank); + gBattlescriptCurrInstr += 2; + } +} + +static void atk1B_faint_effects_clear(void) +{ + //Clears things like attraction or trapping to other banks + if (gBattleExecBuffer == 0) + { + gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + gBattleMons[gActiveBank].status1 = 0; + EmitSetAttributes(0, REQUEST_STATUS_BATTLE, 0, 0x4, &gBattleMons[gActiveBank].status1); + MarkBufferBankForExecution(gActiveBank); + UndoEffectsAfterFainting(); + gBattlescriptCurrInstr += 2; + } +} + +static void atk1C_jumpifstatus(void) +{ + u8 bank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + u32 flags = BS2ScriptRead32(gBattlescriptCurrInstr + 2); + void* jump_loc = BS2ScriptReadPtr(gBattlescriptCurrInstr + 6); + if (gBattleMons[bank].status1 & flags && gBattleMons[bank].hp) + gBattlescriptCurrInstr = jump_loc; + else + gBattlescriptCurrInstr += 10; +} + +static void atk1D_jumpifstatus2(void) +{ + u8 bank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + u32 flags = BS2ScriptRead32(gBattlescriptCurrInstr + 2); + void* jump_loc = BS2ScriptReadPtr(gBattlescriptCurrInstr + 6); + if (gBattleMons[bank].status2 & flags && gBattleMons[bank].hp) + gBattlescriptCurrInstr = jump_loc; + else + gBattlescriptCurrInstr += 10; +} + +static void atk1E_jumpifability(void) +{ + u8 bank; + u8 ability = BSScriptRead8(gBattlescriptCurrInstr + 2); + void* jump_loc = BS2ScriptReadPtr(gBattlescriptCurrInstr + 3); + if (BSScriptRead8(gBattlescriptCurrInstr + 1) == 8) + { + bank = AbilityBattleEffects(ABILITYEFFECT_CHECK_BANK_SIDE, gBankAttacker, ability, 0, 0); + if (bank) + { + gLastUsedAbility = ability; + gBattlescriptCurrInstr = jump_loc; + RecordAbilityBattle(bank -1, gLastUsedAbility); + unk_2000000[0x160f8] = bank - 1; + } + else + gBattlescriptCurrInstr += 7; + } + else if (BSScriptRead8(gBattlescriptCurrInstr + 1) == 9) + { + bank = AbilityBattleEffects(ABILITYEFFECT_CHECK_OTHER_SIDE, gBankAttacker, ability, 0, 0); + if (bank) + { + gLastUsedAbility = ability; + gBattlescriptCurrInstr = jump_loc; + RecordAbilityBattle(bank - 1, gLastUsedAbility); + unk_2000000[0x160f8] = bank - 1; + } + else + gBattlescriptCurrInstr += 7; + } + else + { + bank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + if (gBattleMons[bank].ability == ability) + { + gLastUsedAbility = ability; + gBattlescriptCurrInstr = jump_loc; + RecordAbilityBattle(bank, gLastUsedAbility); + unk_2000000[0x160f8] = bank; + } + else + gBattlescriptCurrInstr += 7; + } +} + +static void atk1F_jumpifsideaffecting(void) +{ + u8 side; + u16 flags; + void* jump_loc; + if (BSScriptRead8(gBattlescriptCurrInstr + 1) == 1) + side = GetBankIdentity(gBankAttacker) & 1; + else + side = GetBankIdentity(gBankTarget) & 1; + + flags = BS2ScriptRead16(gBattlescriptCurrInstr + 2); + jump_loc = BS2ScriptReadPtr(gBattlescriptCurrInstr + 4); + + if (gSideAffecting[side] & flags) + gBattlescriptCurrInstr = jump_loc; + else + gBattlescriptCurrInstr += 8; +} + +static void atk20_jumpifstat(void) +{ + u8 ret = 0; + u8 bank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + u8 value = gBattleMons[bank].statStages[BSScriptRead8(gBattlescriptCurrInstr + 3)]; + switch (BSScriptRead8(gBattlescriptCurrInstr + 2)) + { + case CMP_EQUAL: + if (value == BSScriptRead8(gBattlescriptCurrInstr + 4)) + ret++; + break; + case CMP_NOT_EQUAL: + if (value != BSScriptRead8(gBattlescriptCurrInstr + 4)) + ret++; + break; + case CMP_GREATER_THAN: + if (value > BSScriptRead8(gBattlescriptCurrInstr + 4)) + ret++; + break; + case CMP_LESS_THAN: + if (value < BSScriptRead8(gBattlescriptCurrInstr + 4)) + ret++; + break; + case CMP_COMMON_BITS: + if (value & BSScriptRead8(gBattlescriptCurrInstr + 4)) + ret++; + break; + case CMP_NO_COMMON_BITS: + if (!(value & BSScriptRead8(gBattlescriptCurrInstr + 4))) + ret++; + break; + } + if (ret) + gBattlescriptCurrInstr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 5); + else + gBattlescriptCurrInstr += 9; +} + +static void atk21_jumpifstatus3(void) +{ + u32 flags; + void* jump_loc; + + gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + flags = BS2ScriptRead32(gBattlescriptCurrInstr + 2); + jump_loc = BS2ScriptReadPtr(gBattlescriptCurrInstr + 7); + if (BSScriptRead8(gBattlescriptCurrInstr + 6)) + { + if ((gStatuses3[gActiveBank] & flags) != 0) + gBattlescriptCurrInstr += 11; + else + gBattlescriptCurrInstr = jump_loc; + } + else + { + if ((gStatuses3[gActiveBank] & flags) != 0) + gBattlescriptCurrInstr = jump_loc; + else + gBattlescriptCurrInstr += 11; + } +} + +static void atk22_jumpiftype(void) //u8 bank, u8 type, *ptr +{ + u8 bank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + u8 type = BSScriptRead8(gBattlescriptCurrInstr + 2); + void* jump_loc = BS2ScriptReadPtr(gBattlescriptCurrInstr + 3); + + if (gBattleMons[bank].type1 == type || gBattleMons[bank].type2 == type) + gBattlescriptCurrInstr = jump_loc; + else + gBattlescriptCurrInstr += 7; +} + +//here we go again... +#ifdef NONMATCHING +static void atk23_getexp(void) +{ + u8 hold_effect; + int via_expshare = 0, sent_in; + u16* exp = &BATTLE_STRUCT->exp; + gBank1 = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + sent_in = gSentPokesToOpponent[(gBank1 & 2) >> 1]; + switch (BATTLE_STRUCT->atk23StateTracker) + { + case 0: //check if should receive exp at all + if (GetBankSide(gBank1) != 1 || (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_SAFARI | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_EREADER_TRAINER))) + BATTLE_STRUCT->atk23StateTracker = 6; //goto last case + else + { + BATTLE_STRUCT->atk23StateTracker++; + ((u8*)ewram)[0x16113] |= gBitTable[gBattlePartyID[gBank1]]; + } + break; + case 1: //calculate experience points to redistribute + { + int via_sent_in = 0; + u16 calculatedExp; + int i; + for (i = 0; i < 6; i++) + { + u16 item; + if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES) == 0 || GetMonData(&gPlayerParty[i], MON_DATA_HP) == 0) + continue; + if (gBitTable[i] & sent_in) + via_sent_in++; + + item = GetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM); + if (item == ITEM_ENIGMA_BERRY) + hold_effect = gSaveBlock1.enigmaBerry.holdEffect; + else + hold_effect = ItemId_GetHoldEffect(item); + + if (hold_effect == HOLD_EFFECT_EXP_SHARE) + via_expshare++; + } + calculatedExp = gBaseStats[gBattleMons[gBank1].species].expYield * gBattleMons[gBank1].level / 7; + if (via_expshare) //at least one poke is getting exp via exp share + { + calculatedExp /= 2; + *exp = calculatedExp / via_sent_in; + if (*exp == 0) + *exp = 1; + + gExpShareExp = calculatedExp / via_expshare; + if (gExpShareExp == 0) + gExpShareExp = 1; + } + else + { + *exp = calculatedExp / via_sent_in; + if (*exp == 0) + *exp = 1; + gExpShareExp = 0; + } + BATTLE_STRUCT->atk23StateTracker++; + BATTLE_STRUCT->expGetterID = 0; + BATTLE_STRUCT->sentInPokes = sent_in; + } //no break statement + case 2: //loop; set exp value to the poke in expgetter_id and print message + if (gBattleExecBuffer == 0) + { + u16 item = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_HELD_ITEM); + u8* tracker; u32 zero; + if (item == ITEM_ENIGMA_BERRY) + hold_effect = gSaveBlock1.enigmaBerry.holdEffect; + else + hold_effect = ItemId_GetHoldEffect(item); + + if ((hold_effect != HOLD_EFFECT_EXP_SHARE && !(BATTLE_STRUCT->sentInPokes & 1))) + { + BATTLE_STRUCT->sentInPokes >>= 1; + tracker = &BATTLE_STRUCT->atk23StateTracker; + zero = 0; + *tracker = 5; //increment looper + gBattleMoveDamage = zero; //used for exp + } + else if (GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_LEVEL) == 100) + { + BATTLE_STRUCT->sentInPokes >>= 1; + tracker = &BATTLE_STRUCT->atk23StateTracker; + zero = 0; + *tracker = 5; //increment looper + gBattleMoveDamage = zero; //used for exp + } + else + { + //music change in wild battle after fainting a poke + if (!(gBattleTypeFlags & BATTLE_TYPE_TRAINER) && gBattleMons[0].hp && !BATTLE_STRUCT->wildVictorySong) + { + BattleMusicStop(); + PlayBGM(0x161); + BATTLE_STRUCT->wildVictorySong++; + } + + if (GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_HP)) + { + s16 stringID; + if (BATTLE_STRUCT->sentInPokes & 1) + gBattleMoveDamage = *exp; + else + gBattleMoveDamage = 0; + + if (hold_effect == HOLD_EFFECT_EXP_SHARE) + gBattleMoveDamage += gExpShareExp; + if (hold_effect == HOLD_EFFECT_LUCKY_EGG) + gBattleMoveDamage = (gBattleMoveDamage * 150) / 100; + if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) + gBattleMoveDamage = (gBattleMoveDamage * 150) / 100; + + if (IsTradedMon(&gPlayerParty[BATTLE_STRUCT->expGetterID])) + { + gBattleMoveDamage = (gBattleMoveDamage * 150) / 100; + stringID = 0x14A; + } + else + { + stringID = 0x149; + } + + //get exp getter bank + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + { + if (!(gBattlePartyID[2] != BATTLE_STRUCT->expGetterID) && !(gAbsentBankFlags & gBitTable[2])) + BATTLE_STRUCT->expGetterBank = 2; + else + { + if (!(gAbsentBankFlags & gBitTable[0])) + BATTLE_STRUCT->expGetterBank = 0; + else + BATTLE_STRUCT->expGetterBank = 2; + } + } + else + BATTLE_STRUCT->expGetterBank = 0; + + //buffer poke name + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 4; + gBattleTextBuff1[2] = BATTLE_STRUCT->expGetterBank; + gBattleTextBuff1[3] = BATTLE_STRUCT->expGetterID; + gBattleTextBuff1[4] = 0xFF; + + //buffer 'gained' or 'gained a boosted' + gBattleTextBuff2[0] = 0xFD; + gBattleTextBuff2[1] = 0; + gBattleTextBuff2[2] = stringID; + stringID = (stringID >> 8) & (0xFF); //this does not want to cooperate + gBattleTextBuff2[3] = stringID; + gBattleTextBuff2[4] = 0xFF; + + //buffer exp number + gBattleTextBuff3[0] = 0xFD; + gBattleTextBuff3[1] = 1; + gBattleTextBuff3[2] = 4; //word + gBattleTextBuff3[3] = 5; //max digits + gBattleTextBuff3[4] = gBattleMoveDamage; + gBattleTextBuff3[5] = sBYTE1_32(gBattleMoveDamage); + gBattleTextBuff3[6] = sBYTE2_32(gBattleMoveDamage); + gBattleTextBuff3[7] = sBYTE3_32(gBattleMoveDamage); + gBattleTextBuff3[8] = 0xFF; + + PrepareStringBattle(0xD, BATTLE_STRUCT->expGetterBank); + MonGainEVs(&gPlayerParty[BATTLE_STRUCT->expGetterID], gBattleMons[gBank1].species); + } + BATTLE_STRUCT->sentInPokes >>= 1; + BATTLE_STRUCT->atk23StateTracker++; + } + } + break; + case 3: //Set Stats and give exp + if (gBattleExecBuffer == 0) + { + gBattleBufferB[BATTLE_STRUCT->expGetterBank][0] = 0; + if (GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_HP) && GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_LEVEL) != 100) + { + // Doesn't match. + BATTLE_STRUCT->beforeLvlUp[0] = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_MAX_HP); + BATTLE_STRUCT->beforeLvlUp[1] = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_ATK); + BATTLE_STRUCT->beforeLvlUp[2] = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_DEF); + BATTLE_STRUCT->beforeLvlUp[3] = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_SPD); + BATTLE_STRUCT->beforeLvlUp[4] = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_SPATK); + BATTLE_STRUCT->beforeLvlUp[5] = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_SPDEF); + + gActiveBank = BATTLE_STRUCT->expGetterBank; + EmitExpBarUpdate(0, BATTLE_STRUCT->expGetterID, gBattleMoveDamage); + MarkBufferBankForExecution(gActiveBank); + } + BATTLE_STRUCT->atk23StateTracker++; + } + break; + case 4: //lvl up if necessary + if (gBattleExecBuffer == 0) + { + gActiveBank = BATTLE_STRUCT->expGetterBank; + if (gBattleBufferB[gActiveBank][0] == 0x21 && gBattleBufferB[gActiveBank][1] == 0xB) + { + if (gBattleTypeFlags & BATTLE_TYPE_TRAINER && gBattlePartyID[gActiveBank] == BATTLE_STRUCT->expGetterID) + sub_80324F8(&gPlayerParty[gActiveBank], gActiveBank); + + //buff poke name + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 4; + gBattleTextBuff1[2] = gActiveBank; + gBattleTextBuff1[3] = BATTLE_STRUCT->expGetterID; + gBattleTextBuff1[4] = 0xFF; + + //buff level + gBattleTextBuff2[0] = 0xFD; + gBattleTextBuff2[1] = 1; + gBattleTextBuff2[2] = 1; + gBattleTextBuff2[3] = 3; + gBattleTextBuff2[4] = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_LEVEL); + gBattleTextBuff2[5] = 0xFF; + + b_movescr_stack_push_cursor(); + gLeveledUpInBattle |= gBitTable[BATTLE_STRUCT->expGetterID]; + gBattlescriptCurrInstr = BattleScript_LevelUp; + gBattleMoveDamage = (gBattleBufferB[gActiveBank][2] | (gBattleBufferB[gActiveBank][3] << 8)); + AdjustFriendship(&gPlayerParty[BATTLE_STRUCT->expGetterID], 0); + + //update battle mon structure after level up + if (gBattlePartyID[0] == BATTLE_STRUCT->expGetterID && gBattleMons[0].hp) + { + gBattleMons[0].level = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_LEVEL); + gBattleMons[0].hp = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_HP); + gBattleMons[0].maxHP = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_MAX_HP); + gBattleMons[0].attack = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_ATK); + gBattleMons[0].defense = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_DEF); + gBattleMons[0].speed = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_SPD); + gBattleMons[0].spAttack = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_SPATK); + gBattleMons[0].spDefense = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_SPDEF); + } + //What is else if? Guess it's too advanced for GameFreak + if (gBattlePartyID[2] == BATTLE_STRUCT->expGetterID && gBattleMons[2].hp && (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)) + { + gBattleMons[2].level = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_LEVEL); + gBattleMons[2].hp = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_HP); + gBattleMons[2].maxHP = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_MAX_HP); + gBattleMons[2].attack = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_ATK); + gBattleMons[2].defense = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_DEF); + //There are no words...GF can't even copy&paste code properly + gBattleMons[2].speed = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_SPD); + gBattleMons[2].spAttack = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_SPD /*RIP*/); + gBattleMons[2].spDefense = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_SPATK); + } + BATTLE_STRUCT->atk23StateTracker = 5; + } + else + { + gBattleMoveDamage = 0; + BATTLE_STRUCT->atk23StateTracker = 5; + } + } + break; + case 5: //looper increment + if (gBattleMoveDamage) //there is exp to give, goto case 3 that gives exp + BATTLE_STRUCT->atk23StateTracker = 3; + else + { + if (++BATTLE_STRUCT->expGetterID <= 5) + BATTLE_STRUCT->atk23StateTracker = 2; //loop again + else + BATTLE_STRUCT->atk23StateTracker = 6; //we're done + } + break; + case 6: //increment instruction + if (gBattleExecBuffer == 0) + { + //not even sure why gamefreak clears that data in this place + gBattleMons[gBank1].item = 0; + gBattleMons[gBank1].ability = 0; + gBattlescriptCurrInstr += 2; + } + break; + } +} +#else +__attribute__((naked)) +static void atk23_getexp(void) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + movs r6, 0\n\ + ldr r0, _0802004C @ =0x0201605c\n\ + mov r10, r0\n\ + ldr r0, _08020050 @ =gBattlescriptCurrInstr\n\ + ldr r0, [r0]\n\ + ldrb r0, [r0, 0x1]\n\ + bl GetBattleBank\n\ + ldr r1, _08020054 @ =gBank1\n\ + strb r0, [r1]\n\ + ldr r2, _08020058 @ =gSentPokesToOpponent\n\ + movs r1, 0x2\n\ + ands r1, r0\n\ + lsls r1, 24\n\ + lsrs r1, 25\n\ + adds r1, r2\n\ + ldrb r1, [r1]\n\ + mov r8, r1\n\ + mov r0, r10\n\ + subs r0, 0x4D\n\ + ldrb r0, [r0]\n\ + cmp r0, 0x6\n\ + bls _08020040\n\ + bl _08020996\n\ +_08020040:\n\ + lsls r0, 2\n\ + ldr r1, _0802005C @ =_08020060\n\ + adds r0, r1\n\ + ldr r0, [r0]\n\ + mov pc, r0\n\ + .align 2, 0\n\ +_0802004C: .4byte 0x0201605c\n\ +_08020050: .4byte gBattlescriptCurrInstr\n\ +_08020054: .4byte gBank1\n\ +_08020058: .4byte gSentPokesToOpponent\n\ +_0802005C: .4byte _08020060\n\ + .align 2, 0\n\ +_08020060:\n\ + .4byte _0802007C\n\ + .4byte _080200FC\n\ + .4byte _08020216\n\ + .4byte _0802055C\n\ + .4byte _08020648\n\ + .4byte _08020910\n\ + .4byte _0802096C\n\ +_0802007C:\n\ + ldr r4, _080200A8 @ =gBank1\n\ + ldrb r0, [r4]\n\ + bl GetBankSide\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + cmp r0, 0x1\n\ + bne _08020098\n\ + ldr r0, _080200AC @ =gBattleTypeFlags\n\ + ldrh r1, [r0]\n\ + ldr r0, _080200B0 @ =0x00000982\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _080200BC\n\ +_08020098:\n\ + ldr r0, _080200B4 @ =0x02000000\n\ + ldr r1, _080200B8 @ =0x0001600f\n\ + adds r0, r1\n\ + movs r1, 0x6\n\ + strb r1, [r0]\n\ + bl _08020996\n\ + .align 2, 0\n\ +_080200A8: .4byte gBank1\n\ +_080200AC: .4byte gBattleTypeFlags\n\ +_080200B0: .4byte 0x00000982\n\ +_080200B4: .4byte 0x02000000\n\ +_080200B8: .4byte 0x0001600f\n\ +_080200BC:\n\ + ldr r2, _080200E8 @ =0x02000000\n\ + ldr r3, _080200EC @ =0x0001600f\n\ + adds r1, r2, r3\n\ + ldrb r0, [r1]\n\ + adds r0, 0x1\n\ + strb r0, [r1]\n\ + ldr r0, _080200F0 @ =0x00016113\n\ + adds r2, r0\n\ + ldr r3, _080200F4 @ =gBitTable\n\ + ldr r1, _080200F8 @ =gBattlePartyID\n\ + ldrb r0, [r4]\n\ + lsls r0, 1\n\ + adds r0, r1\n\ + ldrh r0, [r0]\n\ + lsls r0, 2\n\ + adds r0, r3\n\ + ldr r0, [r0]\n\ + ldrb r1, [r2]\n\ + orrs r0, r1\n\ + strb r0, [r2]\n\ + bl _08020996\n\ + .align 2, 0\n\ +_080200E8: .4byte 0x02000000\n\ +_080200EC: .4byte 0x0001600f\n\ +_080200F0: .4byte 0x00016113\n\ +_080200F4: .4byte gBitTable\n\ +_080200F8: .4byte gBattlePartyID\n\ +_080200FC:\n\ + movs r5, 0\n\ + movs r7, 0\n\ + ldr r1, _08020150 @ =gSaveBlock1 + 0x3688\n\ + mov r9, r1\n\ +_08020104:\n\ + movs r0, 0x64\n\ + adds r1, r7, 0\n\ + muls r1, r0\n\ + ldr r0, _08020154 @ =gPlayerParty\n\ + adds r4, r1, r0\n\ + adds r0, r4, 0\n\ + movs r1, 0xB\n\ + bl GetMonData\n\ + cmp r0, 0\n\ + beq _0802016A\n\ + adds r0, r4, 0\n\ + movs r1, 0x39\n\ + bl GetMonData\n\ + cmp r0, 0\n\ + beq _0802016A\n\ + ldr r0, _08020158 @ =gBitTable\n\ + lsls r1, r7, 2\n\ + adds r1, r0\n\ + ldr r0, [r1]\n\ + mov r2, r8\n\ + ands r0, r2\n\ + cmp r0, 0\n\ + beq _08020138\n\ + adds r5, 0x1\n\ +_08020138:\n\ + adds r0, r4, 0\n\ + movs r1, 0xC\n\ + bl GetMonData\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + cmp r0, 0xAF\n\ + bne _0802015C\n\ + mov r3, r9\n\ + ldrb r4, [r3]\n\ + b _08020164\n\ + .align 2, 0\n\ +_08020150: .4byte gSaveBlock1 + 0x3688\n\ +_08020154: .4byte gPlayerParty\n\ +_08020158: .4byte gBitTable\n\ +_0802015C:\n\ + bl ItemId_GetHoldEffect\n\ + lsls r0, 24\n\ + lsrs r4, r0, 24\n\ +_08020164:\n\ + cmp r4, 0x19\n\ + bne _0802016A\n\ + adds r6, 0x1\n\ +_0802016A:\n\ + adds r7, 0x1\n\ + cmp r7, 0x5\n\ + ble _08020104\n\ + ldr r3, _080201D0 @ =gBaseStats\n\ + ldr r2, _080201D4 @ =gBattleMons\n\ + ldr r0, _080201D8 @ =gBank1\n\ + ldrb r1, [r0]\n\ + movs r0, 0x58\n\ + muls r1, r0\n\ + adds r1, r2\n\ + ldrh r2, [r1]\n\ + lsls r0, r2, 3\n\ + subs r0, r2\n\ + lsls r0, 2\n\ + adds r0, r3\n\ + ldrb r2, [r0, 0x9]\n\ + adds r1, 0x2A\n\ + ldrb r0, [r1]\n\ + muls r0, r2\n\ + movs r1, 0x7\n\ + bl __divsi3\n\ + lsls r0, 16\n\ + lsrs r1, r0, 16\n\ + cmp r6, 0\n\ + beq _080201E0\n\ + lsrs r4, r0, 17\n\ + adds r0, r4, 0\n\ + adds r1, r5, 0\n\ + bl __divsi3\n\ + mov r1, r10\n\ + strh r0, [r1]\n\ + lsls r0, 16\n\ + cmp r0, 0\n\ + bne _080201B6\n\ + movs r0, 0x1\n\ + strh r0, [r1]\n\ +_080201B6:\n\ + ldr r5, _080201DC @ =gExpShareExp\n\ + adds r0, r4, 0\n\ + adds r1, r6, 0\n\ + bl __divsi3\n\ + strh r0, [r5]\n\ + lsls r0, 16\n\ + cmp r0, 0\n\ + bne _080201FA\n\ + movs r0, 0x1\n\ + strh r0, [r5]\n\ + b _080201FA\n\ + .align 2, 0\n\ +_080201D0: .4byte gBaseStats\n\ +_080201D4: .4byte gBattleMons\n\ +_080201D8: .4byte gBank1\n\ +_080201DC: .4byte gExpShareExp\n\ +_080201E0:\n\ + adds r0, r1, 0\n\ + adds r1, r5, 0\n\ + bl __divsi3\n\ + mov r2, r10\n\ + strh r0, [r2]\n\ + lsls r0, 16\n\ + cmp r0, 0\n\ + bne _080201F6\n\ + movs r0, 0x1\n\ + strh r0, [r2]\n\ +_080201F6:\n\ + ldr r0, _08020248 @ =gExpShareExp\n\ + strh r6, [r0]\n\ +_080201FA:\n\ + ldr r1, _0802024C @ =0x02000000\n\ + ldr r3, _08020250 @ =0x0001600f\n\ + adds r2, r1, r3\n\ + ldrb r0, [r2]\n\ + adds r0, 0x1\n\ + movs r3, 0\n\ + strb r0, [r2]\n\ + ldr r2, _08020254 @ =0x00016018\n\ + adds r0, r1, r2\n\ + strb r3, [r0]\n\ + ldr r3, _08020258 @ =0x0001605f\n\ + adds r1, r3\n\ + mov r0, r8\n\ + strb r0, [r1]\n\ +_08020216:\n\ + ldr r0, _0802025C @ =gBattleExecBuffer\n\ + ldr r0, [r0]\n\ + cmp r0, 0\n\ + beq _08020220\n\ + b _08020996\n\ +_08020220:\n\ + ldr r0, _0802024C @ =0x02000000\n\ + ldr r1, _08020254 @ =0x00016018\n\ + adds r0, r1\n\ + ldrb r1, [r0]\n\ + movs r0, 0x64\n\ + muls r0, r1\n\ + ldr r1, _08020260 @ =gPlayerParty\n\ + adds r0, r1\n\ + movs r1, 0xC\n\ + bl GetMonData\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + cmp r0, 0xAF\n\ + bne _0802026C\n\ + ldr r0, _08020264 @ =gSaveBlock1\n\ + ldr r2, _08020268 @ =0x00003688\n\ + adds r0, r2\n\ + ldrb r4, [r0]\n\ + b _08020274\n\ + .align 2, 0\n\ +_08020248: .4byte gExpShareExp\n\ +_0802024C: .4byte 0x02000000\n\ +_08020250: .4byte 0x0001600f\n\ +_08020254: .4byte 0x00016018\n\ +_08020258: .4byte 0x0001605f\n\ +_0802025C: .4byte gBattleExecBuffer\n\ +_08020260: .4byte gPlayerParty\n\ +_08020264: .4byte gSaveBlock1\n\ +_08020268: .4byte 0x00003688\n\ +_0802026C:\n\ + bl ItemId_GetHoldEffect\n\ + lsls r0, 24\n\ + lsrs r4, r0, 24\n\ +_08020274:\n\ + ldr r5, _08020294 @ =0x02000000\n\ + cmp r4, 0x19\n\ + beq _080202A0\n\ + ldr r3, _08020298 @ =0x0001605f\n\ + adds r1, r5, r3\n\ + ldrb r0, [r1]\n\ + movs r2, 0x1\n\ + ands r2, r0\n\ + cmp r2, 0\n\ + bne _080202A0\n\ + lsrs r0, 1\n\ + strb r0, [r1]\n\ + ldr r0, _0802029C @ =0x0001600f\n\ + adds r1, r5, r0\n\ + b _080202C8\n\ + .align 2, 0\n\ +_08020294: .4byte 0x02000000\n\ +_08020298: .4byte 0x0001605f\n\ +_0802029C: .4byte 0x0001600f\n\ +_080202A0:\n\ + ldr r1, _080202D4 @ =0x00016018\n\ + adds r0, r5, r1\n\ + ldrb r1, [r0]\n\ + movs r0, 0x64\n\ + muls r0, r1\n\ + ldr r1, _080202D8 @ =gPlayerParty\n\ + adds r0, r1\n\ + movs r1, 0x38\n\ + bl GetMonData\n\ + cmp r0, 0x64\n\ + bne _080202E8\n\ + ldr r2, _080202DC @ =0x0001605f\n\ + adds r1, r5, r2\n\ + ldrb r0, [r1]\n\ + lsrs r0, 1\n\ + movs r2, 0\n\ + strb r0, [r1]\n\ + ldr r3, _080202E0 @ =0x0001600f\n\ + adds r1, r5, r3\n\ +_080202C8:\n\ + movs r0, 0x5\n\ + strb r0, [r1]\n\ + ldr r0, _080202E4 @ =gBattleMoveDamage\n\ + str r2, [r0]\n\ + b _08020996\n\ + .align 2, 0\n\ +_080202D4: .4byte 0x00016018\n\ +_080202D8: .4byte gPlayerParty\n\ +_080202DC: .4byte 0x0001605f\n\ +_080202E0: .4byte 0x0001600f\n\ +_080202E4: .4byte gBattleMoveDamage\n\ +_080202E8:\n\ + ldr r0, _0802034C @ =gBattleTypeFlags\n\ + ldrh r1, [r0]\n\ + movs r0, 0x8\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _08020316\n\ + ldr r0, _08020350 @ =gBattleMons\n\ + ldrh r0, [r0, 0x28]\n\ + cmp r0, 0\n\ + beq _08020316\n\ + ldr r0, _08020354 @ =0x0001601b\n\ + adds r5, r0\n\ + ldrb r0, [r5]\n\ + cmp r0, 0\n\ + bne _08020316\n\ + bl BattleMusicStop\n\ + ldr r0, _08020358 @ =0x00000161\n\ + bl PlayBGM\n\ + ldrb r0, [r5]\n\ + adds r0, 0x1\n\ + strb r0, [r5]\n\ +_08020316:\n\ + ldr r5, _0802035C @ =0x02000000\n\ + ldr r1, _08020360 @ =0x00016018\n\ + adds r0, r5, r1\n\ + ldrb r1, [r0]\n\ + movs r0, 0x64\n\ + muls r0, r1\n\ + ldr r1, _08020364 @ =gPlayerParty\n\ + adds r0, r1\n\ + movs r1, 0x39\n\ + bl GetMonData\n\ + cmp r0, 0\n\ + bne _08020332\n\ + b _0802051E\n\ +_08020332:\n\ + ldr r2, _08020368 @ =0x0001605f\n\ + adds r0, r5, r2\n\ + ldrb r0, [r0]\n\ + movs r3, 0x1\n\ + ands r3, r0\n\ + cmp r3, 0\n\ + beq _08020370\n\ + ldr r1, _0802036C @ =gBattleMoveDamage\n\ + mov r3, r10\n\ + ldrh r0, [r3]\n\ + str r0, [r1]\n\ + mov r8, r1\n\ + b _08020376\n\ + .align 2, 0\n\ +_0802034C: .4byte gBattleTypeFlags\n\ +_08020350: .4byte gBattleMons\n\ +_08020354: .4byte 0x0001601b\n\ +_08020358: .4byte 0x00000161\n\ +_0802035C: .4byte 0x02000000\n\ +_08020360: .4byte 0x00016018\n\ +_08020364: .4byte gPlayerParty\n\ +_08020368: .4byte 0x0001605f\n\ +_0802036C: .4byte gBattleMoveDamage\n\ +_08020370:\n\ + ldr r0, _080203EC @ =gBattleMoveDamage\n\ + str r3, [r0]\n\ + mov r8, r0\n\ +_08020376:\n\ + cmp r4, 0x19\n\ + bne _08020386\n\ + ldr r0, _080203F0 @ =gExpShareExp\n\ + ldrh r1, [r0]\n\ + mov r2, r8\n\ + ldr r0, [r2]\n\ + adds r0, r1\n\ + str r0, [r2]\n\ +_08020386:\n\ + cmp r4, 0x28\n\ + bne _0802039C\n\ + mov r3, r8\n\ + ldr r1, [r3]\n\ + movs r0, 0x96\n\ + muls r0, r1\n\ + movs r1, 0x64\n\ + bl __divsi3\n\ + mov r1, r8\n\ + str r0, [r1]\n\ +_0802039C:\n\ + ldr r0, _080203F4 @ =gBattleTypeFlags\n\ + ldrh r1, [r0]\n\ + movs r0, 0x8\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _080203B8\n\ + ldr r4, _080203EC @ =gBattleMoveDamage\n\ + ldr r1, [r4]\n\ + movs r0, 0x96\n\ + muls r0, r1\n\ + movs r1, 0x64\n\ + bl __divsi3\n\ + str r0, [r4]\n\ +_080203B8:\n\ + ldr r0, _080203F8 @ =0x02000000\n\ + ldr r2, _080203FC @ =0x00016018\n\ + adds r0, r2\n\ + ldrb r1, [r0]\n\ + movs r0, 0x64\n\ + muls r0, r1\n\ + ldr r1, _08020400 @ =gPlayerParty\n\ + adds r0, r1\n\ + bl IsTradedMon\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + beq _08020404\n\ + ldr r4, _080203EC @ =gBattleMoveDamage\n\ + ldr r1, [r4]\n\ + movs r0, 0x96\n\ + muls r0, r1\n\ + movs r1, 0x64\n\ + bl __divsi3\n\ + str r0, [r4]\n\ + movs r7, 0xA5\n\ + lsls r7, 1\n\ + mov r8, r4\n\ + b _0802040A\n\ + .align 2, 0\n\ +_080203EC: .4byte gBattleMoveDamage\n\ +_080203F0: .4byte gExpShareExp\n\ +_080203F4: .4byte gBattleTypeFlags\n\ +_080203F8: .4byte 0x02000000\n\ +_080203FC: .4byte 0x00016018\n\ +_08020400: .4byte gPlayerParty\n\ +_08020404:\n\ + ldr r7, _0802043C @ =0x00000149\n\ + ldr r3, _08020440 @ =gBattleMoveDamage\n\ + mov r8, r3\n\ +_0802040A:\n\ + ldr r0, _08020444 @ =gBattleTypeFlags\n\ + ldrh r0, [r0]\n\ + movs r1, 0x1\n\ + ands r1, r0\n\ + cmp r1, 0\n\ + beq _08020488\n\ + ldr r1, _08020448 @ =gBattlePartyID\n\ + ldr r0, _0802044C @ =0x02000000\n\ + ldr r3, _08020450 @ =0x00016018\n\ + adds r2, r0, r3\n\ + ldrh r1, [r1, 0x4]\n\ + adds r5, r0, 0\n\ + ldr r4, _08020454 @ =gBitTable\n\ + ldr r3, _08020458 @ =gAbsentBankFlags\n\ + ldrb r2, [r2]\n\ + cmp r1, r2\n\ + bne _08020460\n\ + ldrb r1, [r3]\n\ + ldr r0, [r4, 0x8]\n\ + ands r1, r0\n\ + cmp r1, 0\n\ + bne _08020460\n\ + ldr r0, _0802045C @ =0x000160a2\n\ + adds r1, r5, r0\n\ + b _0802047C\n\ + .align 2, 0\n\ +_0802043C: .4byte 0x00000149\n\ +_08020440: .4byte gBattleMoveDamage\n\ +_08020444: .4byte gBattleTypeFlags\n\ +_08020448: .4byte gBattlePartyID\n\ +_0802044C: .4byte 0x02000000\n\ +_08020450: .4byte 0x00016018\n\ +_08020454: .4byte gBitTable\n\ +_08020458: .4byte gAbsentBankFlags\n\ +_0802045C: .4byte 0x000160a2\n\ +_08020460:\n\ + ldrb r2, [r3]\n\ + ldr r0, [r4]\n\ + ands r2, r0\n\ + cmp r2, 0\n\ + bne _08020478\n\ + ldr r1, _08020474 @ =0x000160a2\n\ + adds r0, r5, r1\n\ + strb r2, [r0]\n\ + b _08020490\n\ + .align 2, 0\n\ +_08020474: .4byte 0x000160a2\n\ +_08020478:\n\ + ldr r2, _08020484 @ =0x000160a2\n\ + adds r1, r5, r2\n\ +_0802047C:\n\ + movs r0, 0x2\n\ + strb r0, [r1]\n\ + b _08020490\n\ + .align 2, 0\n\ +_08020484: .4byte 0x000160a2\n\ +_08020488:\n\ + ldr r0, _08020530 @ =0x02000000\n\ + ldr r3, _08020534 @ =0x000160a2\n\ + adds r0, r3\n\ + strb r1, [r0]\n\ +_08020490:\n\ + ldr r1, _08020538 @ =gBattleTextBuff1\n\ + movs r3, 0\n\ + movs r2, 0xFD\n\ + strb r2, [r1]\n\ + movs r5, 0x4\n\ + strb r5, [r1, 0x1]\n\ + ldr r4, _08020530 @ =0x02000000\n\ + ldr r0, _08020534 @ =0x000160a2\n\ + adds r6, r4, r0\n\ + ldrb r0, [r6]\n\ + strb r0, [r1, 0x2]\n\ + ldr r0, _0802053C @ =0x00016018\n\ + adds r4, r0\n\ + ldrb r0, [r4]\n\ + strb r0, [r1, 0x3]\n\ + movs r0, 0xFF\n\ + strb r0, [r1, 0x4]\n\ + ldr r1, _08020540 @ =gBattleTextBuff2\n\ + strb r2, [r1]\n\ + strb r3, [r1, 0x1]\n\ + strb r7, [r1, 0x2]\n\ + movs r3, 0xFF\n\ + lsls r3, 8\n\ + ands r7, r3\n\ + asrs r0, r7, 8\n\ + strb r0, [r1, 0x3]\n\ + movs r0, 0x1\n\ + negs r0, r0\n\ + strb r0, [r1, 0x4]\n\ + ldr r1, _08020544 @ =gBattleTextBuff3\n\ + strb r2, [r1]\n\ + movs r0, 0x1\n\ + strb r0, [r1, 0x1]\n\ + strb r5, [r1, 0x2]\n\ + movs r0, 0x5\n\ + strb r0, [r1, 0x3]\n\ + mov r0, r8\n\ + ldr r2, [r0]\n\ + strb r2, [r1, 0x4]\n\ + adds r0, r2, 0\n\ + ands r0, r3\n\ + asrs r0, 8\n\ + strb r0, [r1, 0x5]\n\ + movs r0, 0xFF\n\ + lsls r0, 16\n\ + ands r0, r2\n\ + asrs r0, 16\n\ + strb r0, [r1, 0x6]\n\ + lsrs r2, 24\n\ + strb r2, [r1, 0x7]\n\ + movs r0, 0x1\n\ + negs r0, r0\n\ + strb r0, [r1, 0x8]\n\ + ldrb r1, [r6]\n\ + movs r0, 0xD\n\ + bl PrepareStringBattle\n\ + ldrb r1, [r4]\n\ + movs r0, 0x64\n\ + muls r0, r1\n\ + ldr r1, _08020548 @ =gPlayerParty\n\ + adds r0, r1\n\ + ldr r3, _0802054C @ =gBattleMons\n\ + ldr r1, _08020550 @ =gBank1\n\ + ldrb r2, [r1]\n\ + movs r1, 0x58\n\ + muls r1, r2\n\ + adds r1, r3\n\ + ldrh r1, [r1]\n\ + bl MonGainEVs\n\ +_0802051E:\n\ + ldr r1, _08020530 @ =0x02000000\n\ + ldr r3, _08020554 @ =0x0001605f\n\ + adds r2, r1, r3\n\ + ldrb r0, [r2]\n\ + lsrs r0, 1\n\ + strb r0, [r2]\n\ + ldr r0, _08020558 @ =0x0001600f\n\ + adds r1, r0\n\ + b _08020618\n\ + .align 2, 0\n\ +_08020530: .4byte 0x02000000\n\ +_08020534: .4byte 0x000160a2\n\ +_08020538: .4byte gBattleTextBuff1\n\ +_0802053C: .4byte 0x00016018\n\ +_08020540: .4byte gBattleTextBuff2\n\ +_08020544: .4byte gBattleTextBuff3\n\ +_08020548: .4byte gPlayerParty\n\ +_0802054C: .4byte gBattleMons\n\ +_08020550: .4byte gBank1\n\ +_08020554: .4byte 0x0001605f\n\ +_08020558: .4byte 0x0001600f\n\ +_0802055C:\n\ + ldr r0, _08020620 @ =gBattleExecBuffer\n\ + ldr r2, [r0]\n\ + cmp r2, 0\n\ + beq _08020566\n\ + b _08020996\n\ +_08020566:\n\ + ldr r1, _08020624 @ =gBattleBufferB\n\ + ldr r4, _08020628 @ =0x02000000\n\ + ldr r3, _0802062C @ =0x000160a2\n\ + adds r3, r4\n\ + mov r8, r3\n\ + ldrb r0, [r3]\n\ + lsls r0, 9\n\ + adds r0, r1\n\ + strb r2, [r0]\n\ + ldr r0, _08020630 @ =0x00016018\n\ + adds r7, r4, r0\n\ + ldrb r0, [r7]\n\ + movs r6, 0x64\n\ + muls r0, r6\n\ + ldr r5, _08020634 @ =gPlayerParty\n\ + adds r0, r5\n\ + movs r1, 0x39\n\ + bl GetMonData\n\ + cmp r0, 0\n\ + beq _08020612\n\ + ldrb r0, [r7]\n\ + muls r0, r6\n\ + adds r0, r5\n\ + movs r1, 0x38\n\ + bl GetMonData\n\ + cmp r0, 0x64\n\ + beq _08020612\n\ + ldrb r0, [r7]\n\ + muls r0, r6\n\ + adds r0, r5\n\ + movs r1, 0x3A\n\ + bl GetMonData\n\ + ldr r1, _08020638 @ =0x00017180\n\ + adds r4, r1\n\ + strh r0, [r4]\n\ + ldrb r0, [r7]\n\ + muls r0, r6\n\ + adds r0, r5\n\ + movs r1, 0x3B\n\ + bl GetMonData\n\ + strh r0, [r4, 0x2]\n\ + ldrb r0, [r7]\n\ + muls r0, r6\n\ + adds r0, r5\n\ + movs r1, 0x3C\n\ + bl GetMonData\n\ + strh r0, [r4, 0x4]\n\ + ldrb r0, [r7]\n\ + muls r0, r6\n\ + adds r0, r5\n\ + movs r1, 0x3D\n\ + bl GetMonData\n\ + strh r0, [r4, 0x6]\n\ + ldrb r0, [r7]\n\ + muls r0, r6\n\ + adds r0, r5\n\ + movs r1, 0x3E\n\ + bl GetMonData\n\ + strh r0, [r4, 0x8]\n\ + ldrb r0, [r7]\n\ + muls r0, r6\n\ + adds r0, r5\n\ + movs r1, 0x3F\n\ + bl GetMonData\n\ + strh r0, [r4, 0xA]\n\ + ldr r4, _0802063C @ =gActiveBank\n\ + mov r2, r8\n\ + ldrb r0, [r2]\n\ + strb r0, [r4]\n\ + ldrb r1, [r7]\n\ + ldr r0, _08020640 @ =gBattleMoveDamage\n\ + ldrh r2, [r0]\n\ + movs r0, 0\n\ + bl EmitExpBarUpdate\n\ + ldrb r0, [r4]\n\ + bl MarkBufferBankForExecution\n\ +_08020612:\n\ + ldr r1, _08020628 @ =0x02000000\n\ + ldr r3, _08020644 @ =0x0001600f\n\ + adds r1, r3\n\ +_08020618:\n\ + ldrb r0, [r1]\n\ + adds r0, 0x1\n\ + strb r0, [r1]\n\ + b _08020996\n\ + .align 2, 0\n\ +_08020620: .4byte gBattleExecBuffer\n\ +_08020624: .4byte gBattleBufferB\n\ +_08020628: .4byte 0x02000000\n\ +_0802062C: .4byte 0x000160a2\n\ +_08020630: .4byte 0x00016018\n\ +_08020634: .4byte gPlayerParty\n\ +_08020638: .4byte 0x00017180\n\ +_0802063C: .4byte gActiveBank\n\ +_08020640: .4byte gBattleMoveDamage\n\ +_08020644: .4byte 0x0001600f\n\ +_08020648:\n\ + ldr r0, _080208AC @ =gBattleExecBuffer\n\ + ldr r0, [r0]\n\ + cmp r0, 0\n\ + beq _08020652\n\ + b _08020996\n\ +_08020652:\n\ + ldr r1, _080208B0 @ =gActiveBank\n\ + ldr r4, _080208B4 @ =0x02000000\n\ + ldr r2, _080208B8 @ =0x000160a2\n\ + adds r0, r4, r2\n\ + ldrb r0, [r0]\n\ + strb r0, [r1]\n\ + ldr r2, _080208BC @ =gBattleBufferB\n\ + ldrb r3, [r1]\n\ + lsls r1, r3, 9\n\ + adds r0, r1, r2\n\ + ldrb r0, [r0]\n\ + cmp r0, 0x21\n\ + beq _0802066E\n\ + b _080208F0\n\ +_0802066E:\n\ + adds r0, r2, 0x1\n\ + adds r0, r1, r0\n\ + ldrb r0, [r0]\n\ + cmp r0, 0xB\n\ + beq _0802067A\n\ + b _080208F0\n\ +_0802067A:\n\ + ldr r0, _080208C0 @ =gBattleTypeFlags\n\ + ldrh r1, [r0]\n\ + movs r0, 0x8\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _080206A8\n\ + ldr r1, _080208C4 @ =gBattlePartyID\n\ + lsls r0, r3, 1\n\ + adds r2, r0, r1\n\ + ldr r0, _080208C8 @ =0x00016018\n\ + adds r1, r4, r0\n\ + ldrh r0, [r2]\n\ + ldrb r1, [r1]\n\ + cmp r0, r1\n\ + bne _080206A8\n\ + adds r1, r0, 0\n\ + movs r0, 0x64\n\ + muls r0, r1\n\ + ldr r1, _080208CC @ =gPlayerParty\n\ + adds r0, r1\n\ + adds r1, r3, 0\n\ + bl sub_80324F8\n\ +_080206A8:\n\ + ldr r1, _080208D0 @ =gBattleTextBuff1\n\ + movs r2, 0xFD\n\ + strb r2, [r1]\n\ + movs r0, 0x4\n\ + strb r0, [r1, 0x1]\n\ + ldr r5, _080208B0 @ =gActiveBank\n\ + ldrb r0, [r5]\n\ + strb r0, [r1, 0x2]\n\ + ldr r0, _080208B4 @ =0x02000000\n\ + ldr r3, _080208C8 @ =0x00016018\n\ + adds r6, r0, r3\n\ + ldrb r0, [r6]\n\ + strb r0, [r1, 0x3]\n\ + movs r0, 0xFF\n\ + strb r0, [r1, 0x4]\n\ + ldr r4, _080208D4 @ =gBattleTextBuff2\n\ + strb r2, [r4]\n\ + movs r0, 0x1\n\ + strb r0, [r4, 0x1]\n\ + strb r0, [r4, 0x2]\n\ + movs r0, 0x3\n\ + strb r0, [r4, 0x3]\n\ + ldrb r0, [r6]\n\ + movs r1, 0x64\n\ + mov r8, r1\n\ + mov r2, r8\n\ + muls r2, r0\n\ + adds r0, r2, 0\n\ + ldr r7, _080208CC @ =gPlayerParty\n\ + adds r0, r7\n\ + movs r1, 0x38\n\ + bl GetMonData\n\ + strb r0, [r4, 0x4]\n\ + movs r0, 0x1\n\ + negs r0, r0\n\ + strb r0, [r4, 0x5]\n\ + bl b_movescr_stack_push_cursor\n\ + ldr r2, _080208D8 @ =gLeveledUpInBattle\n\ + ldr r1, _080208DC @ =gBitTable\n\ + ldrb r0, [r6]\n\ + lsls r0, 2\n\ + adds r0, r1\n\ + ldr r0, [r0]\n\ + ldrb r1, [r2]\n\ + orrs r0, r1\n\ + strb r0, [r2]\n\ + ldr r1, _080208E0 @ =gBattlescriptCurrInstr\n\ + ldr r0, _080208E4 @ =BattleScript_LevelUp\n\ + str r0, [r1]\n\ + ldr r4, _080208E8 @ =gBattleMoveDamage\n\ + ldr r2, _080208BC @ =gBattleBufferB\n\ + ldrb r1, [r5]\n\ + lsls r1, 9\n\ + adds r0, r2, 0x2\n\ + adds r0, r1, r0\n\ + ldrb r3, [r0]\n\ + adds r2, 0x3\n\ + adds r1, r2\n\ + ldrb r0, [r1]\n\ + lsls r0, 8\n\ + orrs r3, r0\n\ + str r3, [r4]\n\ + ldrb r0, [r6]\n\ + mov r3, r8\n\ + muls r3, r0\n\ + adds r0, r3, 0\n\ + adds r0, r7\n\ + movs r1, 0\n\ + bl AdjustFriendship\n\ + ldr r0, _080208C4 @ =gBattlePartyID\n\ + ldrb r1, [r6]\n\ + ldrh r0, [r0]\n\ + cmp r0, r1\n\ + bne _080207EC\n\ + ldr r4, _080208EC @ =gBattleMons\n\ + ldrh r0, [r4, 0x28]\n\ + cmp r0, 0\n\ + beq _080207EC\n\ + mov r0, r8\n\ + muls r0, r1\n\ + adds r0, r7\n\ + movs r1, 0x38\n\ + bl GetMonData\n\ + adds r1, r4, 0\n\ + adds r1, 0x2A\n\ + strb r0, [r1]\n\ + ldrb r0, [r6]\n\ + mov r1, r8\n\ + muls r1, r0\n\ + adds r0, r1, 0\n\ + adds r0, r7\n\ + movs r1, 0x39\n\ + bl GetMonData\n\ + strh r0, [r4, 0x28]\n\ + ldrb r0, [r6]\n\ + mov r2, r8\n\ + muls r2, r0\n\ + adds r0, r2, 0\n\ + adds r0, r7\n\ + movs r1, 0x3A\n\ + bl GetMonData\n\ + strh r0, [r4, 0x2C]\n\ + ldrb r0, [r6]\n\ + mov r3, r8\n\ + muls r3, r0\n\ + adds r0, r3, 0\n\ + adds r0, r7\n\ + movs r1, 0x3B\n\ + bl GetMonData\n\ + strh r0, [r4, 0x2]\n\ + ldrb r0, [r6]\n\ + mov r1, r8\n\ + muls r1, r0\n\ + adds r0, r1, 0\n\ + adds r0, r7\n\ + movs r1, 0x3C\n\ + bl GetMonData\n\ + strh r0, [r4, 0x4]\n\ + ldrb r0, [r6]\n\ + mov r2, r8\n\ + muls r2, r0\n\ + adds r0, r2, 0\n\ + adds r0, r7\n\ + movs r1, 0x3D\n\ + bl GetMonData\n\ + strh r0, [r4, 0x6]\n\ + ldrb r0, [r6]\n\ + mov r3, r8\n\ + muls r3, r0\n\ + adds r0, r3, 0\n\ + adds r0, r7\n\ + movs r1, 0x3D\n\ + bl GetMonData\n\ + strh r0, [r4, 0x6]\n\ + ldrb r0, [r6]\n\ + mov r1, r8\n\ + muls r1, r0\n\ + adds r0, r1, 0\n\ + adds r0, r7\n\ + movs r1, 0x3E\n\ + bl GetMonData\n\ + strh r0, [r4, 0x8]\n\ + ldrb r0, [r6]\n\ + mov r2, r8\n\ + muls r2, r0\n\ + adds r0, r2, 0\n\ + adds r0, r7\n\ + movs r1, 0x3F\n\ + bl GetMonData\n\ + strh r0, [r4, 0xA]\n\ +_080207EC:\n\ + ldr r0, _080208C4 @ =gBattlePartyID\n\ + ldr r1, _080208B4 @ =0x02000000\n\ + ldr r3, _080208C8 @ =0x00016018\n\ + adds r7, r1, r3\n\ + ldrb r2, [r7]\n\ + ldrh r0, [r0, 0x4]\n\ + cmp r0, r2\n\ + bne _080208F6\n\ + ldr r6, _080208EC @ =gBattleMons\n\ + movs r0, 0xD8\n\ + adds r0, r6\n\ + mov r8, r0\n\ + ldrh r0, [r0]\n\ + cmp r0, 0\n\ + beq _080208F6\n\ + ldr r0, _080208C0 @ =gBattleTypeFlags\n\ + ldrh r1, [r0]\n\ + movs r0, 0x1\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _080208F6\n\ + movs r5, 0x64\n\ + adds r0, r2, 0\n\ + muls r0, r5\n\ + ldr r4, _080208CC @ =gPlayerParty\n\ + adds r0, r4\n\ + movs r1, 0x38\n\ + bl GetMonData\n\ + adds r1, r6, 0\n\ + adds r1, 0xDA\n\ + strb r0, [r1]\n\ + ldrb r0, [r7]\n\ + muls r0, r5\n\ + adds r0, r4\n\ + movs r1, 0x39\n\ + bl GetMonData\n\ + mov r1, r8\n\ + strh r0, [r1]\n\ + ldrb r0, [r7]\n\ + muls r0, r5\n\ + adds r0, r4\n\ + movs r1, 0x3A\n\ + bl GetMonData\n\ + adds r1, r6, 0\n\ + adds r1, 0xDC\n\ + strh r0, [r1]\n\ + ldrb r0, [r7]\n\ + muls r0, r5\n\ + adds r0, r4\n\ + movs r1, 0x3B\n\ + bl GetMonData\n\ + adds r1, r6, 0\n\ + adds r1, 0xB2\n\ + strh r0, [r1]\n\ + ldrb r0, [r7]\n\ + muls r0, r5\n\ + adds r0, r4\n\ + movs r1, 0x3C\n\ + bl GetMonData\n\ + adds r1, r6, 0\n\ + adds r1, 0xB4\n\ + strh r0, [r1]\n\ + ldrb r0, [r7]\n\ + muls r0, r5\n\ + adds r0, r4\n\ + movs r1, 0x3D\n\ + bl GetMonData\n\ + movs r2, 0xB6\n\ + adds r2, r6\n\ + mov r8, r2\n\ + strh r0, [r2]\n\ + ldrb r0, [r7]\n\ + muls r0, r5\n\ + adds r0, r4\n\ + movs r1, 0x3D\n\ + bl GetMonData\n\ + mov r3, r8\n\ + strh r0, [r3]\n\ + ldrb r0, [r7]\n\ + muls r0, r5\n\ + adds r0, r4\n\ + movs r1, 0x3E\n\ + bl GetMonData\n\ + adds r1, r6, 0\n\ + adds r1, 0xB8\n\ + strh r0, [r1]\n\ + b _080208F6\n\ + .align 2, 0\n\ +_080208AC: .4byte gBattleExecBuffer\n\ +_080208B0: .4byte gActiveBank\n\ +_080208B4: .4byte 0x02000000\n\ +_080208B8: .4byte 0x000160a2\n\ +_080208BC: .4byte gBattleBufferB\n\ +_080208C0: .4byte gBattleTypeFlags\n\ +_080208C4: .4byte gBattlePartyID\n\ +_080208C8: .4byte 0x00016018\n\ +_080208CC: .4byte gPlayerParty\n\ +_080208D0: .4byte gBattleTextBuff1\n\ +_080208D4: .4byte gBattleTextBuff2\n\ +_080208D8: .4byte gLeveledUpInBattle\n\ +_080208DC: .4byte gBitTable\n\ +_080208E0: .4byte gBattlescriptCurrInstr\n\ +_080208E4: .4byte BattleScript_LevelUp\n\ +_080208E8: .4byte gBattleMoveDamage\n\ +_080208EC: .4byte gBattleMons\n\ +_080208F0:\n\ + ldr r1, _08020904 @ =gBattleMoveDamage\n\ + movs r0, 0\n\ + str r0, [r1]\n\ +_080208F6:\n\ + ldr r0, _08020908 @ =0x02000000\n\ + ldr r1, _0802090C @ =0x0001600f\n\ + adds r0, r1\n\ + movs r1, 0x5\n\ + strb r1, [r0]\n\ + b _08020996\n\ + .align 2, 0\n\ +_08020904: .4byte gBattleMoveDamage\n\ +_08020908: .4byte 0x02000000\n\ +_0802090C: .4byte 0x0001600f\n\ +_08020910:\n\ + ldr r0, _08020924 @ =gBattleMoveDamage\n\ + ldr r0, [r0]\n\ + cmp r0, 0\n\ + beq _08020930\n\ + ldr r0, _08020928 @ =0x02000000\n\ + ldr r2, _0802092C @ =0x0001600f\n\ + adds r0, r2\n\ + movs r1, 0x3\n\ + strb r1, [r0]\n\ + b _08020996\n\ + .align 2, 0\n\ +_08020924: .4byte gBattleMoveDamage\n\ +_08020928: .4byte 0x02000000\n\ +_0802092C: .4byte 0x0001600f\n\ +_08020930:\n\ + ldr r2, _08020950 @ =0x02000000\n\ + ldr r3, _08020954 @ =0x00016018\n\ + adds r1, r2, r3\n\ + ldrb r0, [r1]\n\ + adds r0, 0x1\n\ + strb r0, [r1]\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + cmp r0, 0x5\n\ + bhi _0802095C\n\ + ldr r0, _08020958 @ =0x0001600f\n\ + adds r1, r2, r0\n\ + movs r0, 0x2\n\ + strb r0, [r1]\n\ + b _08020996\n\ + .align 2, 0\n\ +_08020950: .4byte 0x02000000\n\ +_08020954: .4byte 0x00016018\n\ +_08020958: .4byte 0x0001600f\n\ +_0802095C:\n\ + ldr r3, _08020968 @ =0x0001600f\n\ + adds r1, r2, r3\n\ + movs r0, 0x6\n\ + strb r0, [r1]\n\ + b _08020996\n\ + .align 2, 0\n\ +_08020968: .4byte 0x0001600f\n\ +_0802096C:\n\ + ldr r0, _080209A4 @ =gBattleExecBuffer\n\ + ldr r5, [r0]\n\ + cmp r5, 0\n\ + bne _08020996\n\ + ldr r4, _080209A8 @ =gBattleMons\n\ + ldr r2, _080209AC @ =gBank1\n\ + ldrb r0, [r2]\n\ + movs r1, 0x58\n\ + muls r0, r1\n\ + adds r0, r4\n\ + movs r3, 0\n\ + strh r5, [r0, 0x2E]\n\ + ldrb r0, [r2]\n\ + muls r0, r1\n\ + adds r0, r4\n\ + adds r0, 0x20\n\ + strb r3, [r0]\n\ + ldr r1, _080209B0 @ =gBattlescriptCurrInstr\n\ + ldr r0, [r1]\n\ + adds r0, 0x2\n\ + str r0, [r1]\n\ +_08020996:\n\ + pop {r3-r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_080209A4: .4byte gBattleExecBuffer\n\ +_080209A8: .4byte gBattleMons\n\ +_080209AC: .4byte gBank1\n\ +_080209B0: .4byte gBattlescriptCurrInstr\n\ + .syntax divided\n"); +} + +#endif // NONMATCHING + +#ifdef NONMATCHING +static void atk24(void) +{ + u16 HP_count = 0; + int i; + if (gBattleExecBuffer) {return;} + + for (i = 0; i < 6; i++) + { + if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES) && !GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG)) + HP_count += GetMonData(&gPlayerParty[i], MON_DATA_HP); + } + + if (HP_count == 0) + gBattleOutcome |= BATTLE_LOST; + + for (HP_count = 0, i = 0; i < 6; i++) + { + if (GetMonData(&gEnemyParty[i], MON_DATA_SPECIES) && !GetMonData(&gEnemyParty[i], MON_DATA_IS_EGG)) + HP_count += GetMonData(&gEnemyParty[i], MON_DATA_HP); + } + + if (!HP_count) + gBattleOutcome |= BATTLE_WON; + + if (!gBattleOutcome && (gBattleTypeFlags & BATTLE_TYPE_LINK)) + { + register int found1 asm("r2"); + register int found2 asm("r4"); + + //I can't for the love of god decompile that part + + for (found1 = 0, i = 0; i < gNoOfAllBanks; i += 2) + { + if ((gHitMarker & HITMARKER_UNK(i)) && !gSpecialStatuses[i].flag40) + found1++; + } + + for (found2 = 0, i = 1; i < gNoOfAllBanks; i += 2) + { + if ((gHitMarker & HITMARKER_UNK(i)) && !gSpecialStatuses[i].flag40) + found2++; + } + + if (gBattleTypeFlags & BATTLE_TYPE_MULTI) + { + if (found2 + found1 > 1) + gBattlescriptCurrInstr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1); + else + gBattlescriptCurrInstr += 5; + } + else + { + if (found2 != 0 && found1 != 0) + gBattlescriptCurrInstr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1); + else + gBattlescriptCurrInstr += 5; + } + } + else + gBattlescriptCurrInstr += 5; + +} +#else +__attribute__((naked)) +static void atk24(void) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r8\n\ + push {r7}\n\ + movs r6, 0\n\ + ldr r0, _08020AF0 @ =gBattleExecBuffer\n\ + ldr r0, [r0]\n\ + cmp r0, 0\n\ + beq _080209C6\n\ + b _08020B46\n\ +_080209C6:\n\ + movs r5, 0\n\ +_080209C8:\n\ + movs r0, 0x64\n\ + adds r1, r5, 0\n\ + muls r1, r0\n\ + ldr r0, _08020AF4 @ =gPlayerParty\n\ + adds r4, r1, r0\n\ + adds r0, r4, 0\n\ + movs r1, 0xB\n\ + bl GetMonData\n\ + cmp r0, 0\n\ + beq _080209F8\n\ + adds r0, r4, 0\n\ + movs r1, 0x2D\n\ + bl GetMonData\n\ + cmp r0, 0\n\ + bne _080209F8\n\ + adds r0, r4, 0\n\ + movs r1, 0x39\n\ + bl GetMonData\n\ + adds r0, r6, r0\n\ + lsls r0, 16\n\ + lsrs r6, r0, 16\n\ +_080209F8:\n\ + adds r5, 0x1\n\ + cmp r5, 0x5\n\ + ble _080209C8\n\ + cmp r6, 0\n\ + bne _08020A0C\n\ + ldr r0, _08020AF8 @ =gBattleOutcome\n\ + ldrb r1, [r0]\n\ + movs r2, 0x2\n\ + orrs r1, r2\n\ + strb r1, [r0]\n\ +_08020A0C:\n\ + movs r6, 0\n\ + movs r5, 0\n\ +_08020A10:\n\ + movs r0, 0x64\n\ + adds r1, r5, 0\n\ + muls r1, r0\n\ + ldr r0, _08020AFC @ =gEnemyParty\n\ + adds r4, r1, r0\n\ + adds r0, r4, 0\n\ + movs r1, 0xB\n\ + bl GetMonData\n\ + cmp r0, 0\n\ + beq _08020A40\n\ + adds r0, r4, 0\n\ + movs r1, 0x2D\n\ + bl GetMonData\n\ + cmp r0, 0\n\ + bne _08020A40\n\ + adds r0, r4, 0\n\ + movs r1, 0x39\n\ + bl GetMonData\n\ + adds r0, r6, r0\n\ + lsls r0, 16\n\ + lsrs r6, r0, 16\n\ +_08020A40:\n\ + adds r5, 0x1\n\ + cmp r5, 0x5\n\ + ble _08020A10\n\ + ldr r2, _08020AF8 @ =gBattleOutcome\n\ + cmp r6, 0\n\ + bne _08020A54\n\ + ldrb r0, [r2]\n\ + movs r1, 0x1\n\ + orrs r0, r1\n\ + strb r0, [r2]\n\ +_08020A54:\n\ + ldrb r0, [r2]\n\ + cmp r0, 0\n\ + bne _08020B3E\n\ + ldr r2, _08020B00 @ =gBattleTypeFlags\n\ + ldrh r1, [r2]\n\ + movs r0, 0x2\n\ + ands r0, r1\n\ + mov r8, r2\n\ + cmp r0, 0\n\ + beq _08020B3E\n\ + movs r2, 0\n\ + movs r5, 0\n\ + ldr r0, _08020B04 @ =gNoOfAllBanks\n\ + ldrb r3, [r0]\n\ + mov r12, r0\n\ + ldr r7, _08020B08 @ =gBattlescriptCurrInstr\n\ + cmp r2, r3\n\ + bge _08020AA0\n\ + ldr r0, _08020B0C @ =gHitMarker\n\ + movs r1, 0x80\n\ + lsls r1, 21\n\ + ldr r6, [r0]\n\ + adds r4, r3, 0\n\ + ldr r3, _08020B10 @ =gSpecialStatuses\n\ +_08020A84:\n\ + adds r0, r1, 0\n\ + lsls r0, r5\n\ + ands r0, r6\n\ + cmp r0, 0\n\ + beq _08020A98\n\ + ldrb r0, [r3]\n\ + lsls r0, 25\n\ + cmp r0, 0\n\ + blt _08020A98\n\ + adds r2, 0x1\n\ +_08020A98:\n\ + adds r3, 0x28\n\ + adds r5, 0x2\n\ + cmp r5, r4\n\ + blt _08020A84\n\ +_08020AA0:\n\ + movs r4, 0\n\ + movs r5, 0x1\n\ + mov r0, r12\n\ + ldrb r3, [r0]\n\ + cmp r5, r3\n\ + bge _08020ADA\n\ + ldr r0, _08020B0C @ =gHitMarker\n\ + movs r1, 0x80\n\ + lsls r1, 21\n\ + mov r12, r1\n\ + ldr r1, [r0]\n\ + ldr r0, _08020B10 @ =gSpecialStatuses\n\ + adds r6, r3, 0\n\ + adds r3, r0, 0\n\ + adds r3, 0x14\n\ +_08020ABE:\n\ + mov r0, r12\n\ + lsls r0, r5\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _08020AD2\n\ + ldrb r0, [r3]\n\ + lsls r0, 25\n\ + cmp r0, 0\n\ + blt _08020AD2\n\ + adds r4, 0x1\n\ +_08020AD2:\n\ + adds r3, 0x28\n\ + adds r5, 0x2\n\ + cmp r5, r6\n\ + blt _08020ABE\n\ +_08020ADA:\n\ + mov r0, r8\n\ + ldrh r1, [r0]\n\ + movs r0, 0x40\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _08020B14\n\ + adds r0, r4, r2\n\ + cmp r0, 0x1\n\ + bgt _08020B1C\n\ + b _08020B36\n\ + .align 2, 0\n\ +_08020AF0: .4byte gBattleExecBuffer\n\ +_08020AF4: .4byte gPlayerParty\n\ +_08020AF8: .4byte gBattleOutcome\n\ +_08020AFC: .4byte gEnemyParty\n\ +_08020B00: .4byte gBattleTypeFlags\n\ +_08020B04: .4byte gNoOfAllBanks\n\ +_08020B08: .4byte gBattlescriptCurrInstr\n\ +_08020B0C: .4byte gHitMarker\n\ +_08020B10: .4byte gSpecialStatuses\n\ +_08020B14:\n\ + cmp r4, 0\n\ + beq _08020B36\n\ + cmp r2, 0\n\ + beq _08020B36\n\ +_08020B1C:\n\ + ldr r2, [r7]\n\ + ldrb r1, [r2, 0x1]\n\ + ldrb r0, [r2, 0x2]\n\ + lsls r0, 8\n\ + adds r1, r0\n\ + ldrb r0, [r2, 0x3]\n\ + lsls r0, 16\n\ + adds r1, r0\n\ + ldrb r0, [r2, 0x4]\n\ + lsls r0, 24\n\ + adds r1, r0\n\ + str r1, [r7]\n\ + b _08020B46\n\ +_08020B36:\n\ + ldr r0, [r7]\n\ + adds r0, 0x5\n\ + str r0, [r7]\n\ + b _08020B46\n\ +_08020B3E:\n\ + ldr r1, _08020B50 @ =gBattlescriptCurrInstr\n\ + ldr r0, [r1]\n\ + adds r0, 0x5\n\ + str r0, [r1]\n\ +_08020B46:\n\ + pop {r3}\n\ + mov r8, r3\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_08020B50: .4byte gBattlescriptCurrInstr\n\ + .syntax divided\n"); +} +#endif + +static void MoveValuesCleanUp(void) +{ + gBattleMoveFlags = 0; + BATTLE_STRUCT->dmgMultiplier = 1; + gCritMultiplier = 1; + gBattleCommunication[MOVE_EFFECT_BYTE] = 0; + gBattleCommunication[6] = 0; + gHitMarker &= ~(HITMARKER_DESTINYBOND); + gHitMarker &= ~(HITMARKER_SYNCHRONISE_EFFECT); +} + +static void atk25_move_values_cleanup(void) +{ + MoveValuesCleanUp(); + gBattlescriptCurrInstr += 1; +} + +static void atk26_set_multihit(void) +{ + gMultiHitCounter = BSScriptRead8(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr += 2; +} + +static void atk27_decrement_multihit(void) +{ + if (--gMultiHitCounter == 0) + gBattlescriptCurrInstr += 5; + else + gBattlescriptCurrInstr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1); +} + +static void atk28_goto(void) +{ + gBattlescriptCurrInstr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1); +} + +static void atk29_jumpifbyte(void) +{ + u8 caseID = BSScriptRead8(gBattlescriptCurrInstr + 1); + u8* ptr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 2); + u8 value = BSScriptRead8(gBattlescriptCurrInstr + 6); + u8* jump_loc = BS2ScriptReadPtr(gBattlescriptCurrInstr + 7); + gBattlescriptCurrInstr += 11; + switch (caseID) + { + case CMP_EQUAL: + if (*ptr == value) + gBattlescriptCurrInstr = jump_loc; + break; + case CMP_NOT_EQUAL: + if (*ptr != value) + gBattlescriptCurrInstr = jump_loc; + break; + case CMP_GREATER_THAN: + if (*ptr > value) + gBattlescriptCurrInstr = jump_loc; + break; + case CMP_LESS_THAN: + if (*ptr < value) + gBattlescriptCurrInstr = jump_loc; + break; + case CMP_COMMON_BITS: + if (*ptr & value) + gBattlescriptCurrInstr = jump_loc; + break; + case CMP_NO_COMMON_BITS: + if (!(*ptr & value)) + gBattlescriptCurrInstr = jump_loc; + break; + } +} + +static void atk2A_jumpifhalfword(void) +{ + u8 caseID = BSScriptRead8(gBattlescriptCurrInstr + 1); + u16* ptr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 2); + u16 value = BS2ScriptRead16(gBattlescriptCurrInstr + 6); + u8* jump_loc = BS2ScriptReadPtr(gBattlescriptCurrInstr + 8); + gBattlescriptCurrInstr += 12; + switch (caseID) + { + case CMP_EQUAL: + if (*ptr == value) + gBattlescriptCurrInstr = jump_loc; + break; + case CMP_NOT_EQUAL: + if (*ptr != value) + gBattlescriptCurrInstr = jump_loc; + break; + case CMP_GREATER_THAN: + if (*ptr > value) + gBattlescriptCurrInstr = jump_loc; + break; + case CMP_LESS_THAN: + if (*ptr < value) + gBattlescriptCurrInstr = jump_loc; + break; + case CMP_COMMON_BITS: + if (*ptr & value) + gBattlescriptCurrInstr = jump_loc; + break; + case CMP_NO_COMMON_BITS: + if (!(*ptr & value)) + gBattlescriptCurrInstr = jump_loc; + break; + } +} + +static void atk2B_jumpifword(void) +{ + u8 caseID = BSScriptRead8(gBattlescriptCurrInstr + 1); + u32* ptr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 2); + u32 value = BSScriptRead32(gBattlescriptCurrInstr + 6); + u8* jump_loc = BS2ScriptReadPtr(gBattlescriptCurrInstr + 10); + gBattlescriptCurrInstr += 14; + switch (caseID) + { + case CMP_EQUAL: + if (*ptr == value) + gBattlescriptCurrInstr = jump_loc; + break; + case CMP_NOT_EQUAL: + if (*ptr != value) + gBattlescriptCurrInstr = jump_loc; + break; + case CMP_GREATER_THAN: + if (*ptr > value) + gBattlescriptCurrInstr = jump_loc; + break; + case CMP_LESS_THAN: + if (*ptr < value) + gBattlescriptCurrInstr = jump_loc; + break; + case CMP_COMMON_BITS: + if (*ptr & value) + gBattlescriptCurrInstr = jump_loc; + break; + case CMP_NO_COMMON_BITS: + if (!(*ptr & value)) + gBattlescriptCurrInstr = jump_loc; + break; + } +} + +static void atk2C_jumpifarrayequal(void) +{ + //Mem1, Mem2, Size, Jump Loc + u8* mem1 = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1); + u8* mem2 = BS2ScriptReadPtr(gBattlescriptCurrInstr + 5); + u32 size = BSScriptRead8(gBattlescriptCurrInstr + 9); + u8* jump_loc = BS2ScriptReadPtr(gBattlescriptCurrInstr + 10); + + u8 i; + for (i = 0; i < size; i++) + { + if (*mem1 != *mem2) + { + gBattlescriptCurrInstr += 14; + break; + } + mem1++, mem2++; + } + + if (i == size) + gBattlescriptCurrInstr = jump_loc; +} + +static void atk2D_jumpifarraynotequal(void) +{ + //Mem1, Mem2, Size, Jump Loc + u8 equal_bytes = 0; + u8* mem1 = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1); + u8* mem2 = BS2ScriptReadPtr(gBattlescriptCurrInstr + 5); + u32 size = BSScriptRead8(gBattlescriptCurrInstr + 9); + u8* jump_loc = BS2ScriptReadPtr(gBattlescriptCurrInstr + 10); + + u8 i; + for (i = 0; i < size; i++) + { + if (*mem1 == *mem2) + { + equal_bytes++; + } + mem1++, mem2++; + } + + if (equal_bytes != size) + gBattlescriptCurrInstr = jump_loc; + else + gBattlescriptCurrInstr += 14; +} + +static void atk2E_setbyte(void) +{ + u8* mem = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1); + *mem = BSScriptRead8(gBattlescriptCurrInstr + 5); + gBattlescriptCurrInstr += 6; +} + +static void atk2F_addbyte(void) +{ + u8* mem = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1); + *mem += BSScriptRead8(gBattlescriptCurrInstr + 5); + gBattlescriptCurrInstr += 6; +} + +static void atk30_subbyte(void) +{ + u8* mem = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1); + *mem -= BSScriptRead8(gBattlescriptCurrInstr + 5); + gBattlescriptCurrInstr += 6; +} + +static void atk31_copyarray(void) +{ + u8* mem1 = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1); + u8* mem2 = BS2ScriptReadPtr(gBattlescriptCurrInstr + 5); + s32 size = BSScriptRead8(gBattlescriptCurrInstr + 9); + + s32 i; + for (i = 0; i < size; i++) + { + mem1[i] = mem2[i]; + } + + gBattlescriptCurrInstr += 10; +} + +static void atk32_copyarray_withindex(void) +{ + u8* mem1 = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1); + u8* mem2 = BS2ScriptReadPtr(gBattlescriptCurrInstr + 5); + u8* index = BS2ScriptReadPtr(gBattlescriptCurrInstr + 9); + s32 size = BSScriptRead8(gBattlescriptCurrInstr + 13); + + s32 i; + for (i = 0; i < size; i++) + { + mem1[i] = mem2[i + *index]; + } + + gBattlescriptCurrInstr += 14; +} + +static void atk33_orbyte(void) +{ + u8* mem = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1); + *mem |= BSScriptRead8(gBattlescriptCurrInstr + 5); + gBattlescriptCurrInstr += 6; +} + +static void atk34_orhalfword(void) +{ + u16* mem = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1); + u16 val = BS2ScriptRead16(gBattlescriptCurrInstr + 5); + + *mem |= val; + gBattlescriptCurrInstr += 7; +} + +static void atk35_orword(void) +{ + u32* mem = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1); + u32 val = BS2ScriptRead32(gBattlescriptCurrInstr + 5); + + *mem |= val; + gBattlescriptCurrInstr += 9; +} + +static void atk36_bicbyte(void) +{ + u8* mem = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1); + *mem &= ~(BSScriptRead8(gBattlescriptCurrInstr + 5)); + gBattlescriptCurrInstr += 6; +} + +static void atk37_bichalfword(void) +{ + u16* mem = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1); + u16 val = BS2ScriptRead16(gBattlescriptCurrInstr + 5); + + *mem &= ~val; + gBattlescriptCurrInstr += 7; +} + +static void atk38_bicword(void) +{ + u32* mem = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1); + u32 val = BS2ScriptRead32(gBattlescriptCurrInstr + 5); + + *mem &= ~val; + gBattlescriptCurrInstr += 9; +} + +static void atk39_pause(void) +{ + if (gBattleExecBuffer == 0) + { + u16 value = BS2ScriptRead16(gBattlescriptCurrInstr + 1); + if (++gPauseCounterBattle >= value) + { + gPauseCounterBattle = 0; + gBattlescriptCurrInstr += 3; + } + } +} + +static void atk3A_waitstate(void) +{ + if (gBattleExecBuffer == 0) + gBattlescriptCurrInstr++; +} + +static void atk3B_healthbar_update(void) +{ + if (!BSScriptRead8(gBattlescriptCurrInstr + 1)) + gActiveBank = gBankTarget; + else + gActiveBank = gBankAttacker; + + EmitHealthBarUpdate(0, gBattleMoveDamage); + MarkBufferBankForExecution(gActiveBank); + gBattlescriptCurrInstr += 2; +} + +static void atk3C_return(void) +{ + b_movescr_stack_pop_cursor(); +} + +static void atk3D_end(void) +{ + gBattleMoveFlags = 0; + gActiveBank = 0; + gFightStateTracker = 0xB; +} + +static void atk3E_end2(void) +{ + //not much difference between this and 3D. It's more apparent in Emerald + gActiveBank = 0; + gFightStateTracker = 0xB; +} + +static void atk3F_end3(void) //pops the main function stack +{ + b_movescr_stack_pop_cursor(); + if (B_FUNCTION_STACK->size) + B_FUNCTION_STACK->size--; + gBattleMainFunc = B_FUNCTION_STACK->ptr[B_FUNCTION_STACK->size]; +} + +static void atk41_call(void) +{ + b_movescr_stack_push(gBattlescriptCurrInstr + 5); + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); +} + +static void atk42_jumpiftype2(void) //u8 bank, u8 type, *ptr +{ + u8 bank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + + if (BSScriptRead8(gBattlescriptCurrInstr + 2) == gBattleMons[bank].type1 || BSScriptRead8(gBattlescriptCurrInstr + 2) == gBattleMons[bank].type2) + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 3); + else + gBattlescriptCurrInstr += 7; +} + +static void atk43_jumpifabilitypresent(void) +{ + if (AbilityBattleEffects(ABILITYEFFECT_CHECK_ON_FIELD, 0, BSScriptRead8(gBattlescriptCurrInstr + 1), 0, 0)) + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 2); + else + gBattlescriptCurrInstr += 6; +} + +static void atk44(void) +{ + unk_2000000[gBankAttacker + 0x16060] = 1; +} + +#ifdef NONMATCHING + +static void atk45_playanimation(void) +{ + #define ANIMATION_ID BSScriptRead8(gBattlescriptCurrInstr + 2) + #define ARGUMENT (u16*) BS2ScriptReadPtr(gBattlescriptCurrInstr + 3) + gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + + if ( ANIMATION_ID == 1 || ANIMATION_ID == 0x11 || ANIMATION_ID == 2) { + EmitBattleAnimation(0, ANIMATION_ID, *argument); + MarkBufferBankForExecution(gActiveBank); + gBattlescriptCurrInstr += 7; + } else if (gHitMarker & HITMARKER_NO_ANIMATIONS) { + b_movescr_stack_push(gBattlescriptCurrInstr + 7); + gBattlescriptCurrInstr = BattleScript_Pausex20; + } else { + if (((ANIMATION_ID - 10) > 3 && gStatuses3[gActiveBank] & (STATUS3_SEMI_INVULNERABLE))) { + gBattlescriptCurrInstr += 7; + } else { + EmitBattleAnimation(0, ANIMATION_ID, *argument); + MarkBufferBankForExecution(gActiveBank); + gBattlescriptCurrInstr += 7; + } + } +} + +#else +__attribute__((naked)) +static void atk45_playanimation(void) +{ + asm(".syntax unified\n\ + push {r4-r6,lr}\n\ + ldr r5, _08021444 @ =gBattlescriptCurrInstr\n\ + ldr r0, [r5]\n\ + ldrb r0, [r0, 0x1]\n\ + bl GetBattleBank\n\ + ldr r6, _08021448 @ =gActiveBank\n\ + strb r0, [r6]\n\ + ldr r2, [r5]\n\ + ldrb r1, [r2, 0x3]\n\ + ldrb r0, [r2, 0x4]\n\ + lsls r0, 8\n\ + adds r1, r0\n\ + ldrb r0, [r2, 0x5]\n\ + lsls r0, 16\n\ + adds r1, r0\n\ + ldrb r0, [r2, 0x6]\n\ + lsls r0, 24\n\ + adds r3, r1, r0\n\ + ldrb r4, [r2, 0x2]\n\ + adds r0, r4, 0\n\ + cmp r0, 0x1\n\ + beq _08021426\n\ + cmp r0, 0x11\n\ + beq _08021426\n\ + cmp r0, 0x2\n\ + bne _0802144C\n\ +_08021426:\n\ + ldr r4, _08021444 @ =gBattlescriptCurrInstr\n\ + ldr r0, [r4]\n\ + ldrb r1, [r0, 0x2]\n\ + ldrh r2, [r3]\n\ + movs r0, 0\n\ + bl EmitBattleAnimation\n\ + ldr r0, _08021448 @ =gActiveBank\n\ + ldrb r0, [r0]\n\ + bl MarkBufferBankForExecution\n\ + ldr r0, [r4]\n\ + adds r0, 0x7\n\ + str r0, [r4]\n\ + b _080214AE\n\ + .align 2, 0\n\ +_08021444: .4byte gBattlescriptCurrInstr\n\ +_08021448: .4byte gActiveBank\n\ +_0802144C:\n\ + ldr r0, _08021464 @ =gHitMarker\n\ + ldr r0, [r0]\n\ + movs r1, 0x80\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _0802146C\n\ + adds r0, r2, 0x7\n\ + bl b_movescr_stack_push\n\ + ldr r0, _08021468 @ =BattleScript_Pausex20\n\ + b _080214AC\n\ + .align 2, 0\n\ +_08021464: .4byte gHitMarker\n\ +_08021468: .4byte BattleScript_Pausex20\n\ +_0802146C:\n\ + adds r0, r4, 0\n\ + subs r0, 0xA\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + cmp r0, 0x3\n\ + bls _08021498\n\ + ldr r1, _08021490 @ =gStatuses3\n\ + ldrb r0, [r6]\n\ + lsls r0, 2\n\ + adds r0, r1\n\ + ldr r0, [r0]\n\ + ldr r1, _08021494 @ =0x000400c0\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _08021498\n\ + adds r0, r2, 0x7\n\ + b _080214AC\n\ + .align 2, 0\n\ +_08021490: .4byte gStatuses3\n\ +_08021494: .4byte 0x000400c0\n\ +_08021498:\n\ + ldrb r1, [r2, 0x2]\n\ + ldrh r2, [r3]\n\ + movs r0, 0\n\ + bl EmitBattleAnimation\n\ + ldrb r0, [r6]\n\ + bl MarkBufferBankForExecution\n\ + ldr r0, [r5]\n\ + adds r0, 0x7\n\ +_080214AC:\n\ + str r0, [r5]\n\ +_080214AE:\n\ + pop {r4-r6}\n\ + pop {r0}\n\ + bx r0\n\ + .syntax divided"); +} +#endif // NONMATCHING + +#ifdef NONMATCHING +static void atk46_playanimation2(void) +{ + u8 arg1; + u8* arg2; + u16* arg3; + u32 something; + + arg1 = BSScriptRead8(gBattlescriptCurrInstr + 1); + gActiveBank = GetBattleBank(arg1); + arg2 = BS2ScriptReadPtr(gBattlescriptCurrInstr + 2); + arg3 = BS2ScriptReadPtr(gBattlescriptCurrInstr + 6); + + if (*arg2 == 1 || *arg2 == 0x11 || *arg2 == 2) + { + EmitBattleAnimation(0, *arg2, *arg3); + MarkBufferBankForExecution(gActiveBank); + gBattlescriptCurrInstr += 10; + return; + } + if ((gHitMarker & 0x80)) + { + something = (u32)(gBattlescriptCurrInstr + 10); + } + else + { + u8 yeah = *arg2 - 10; + if (yeah < 4 || (gStatuses3[gActiveBank] & 0x000400C0) == 0) + { + EmitBattleAnimation(0, *arg2, *arg3); + MarkBufferBankForExecution(gActiveBank); + } + something = (u32)(gBattlescriptCurrInstr + 10); + } + gBattlescriptCurrInstr = (u8*)something; +} +#else +__attribute__((naked)) +static void atk46_playanimation2(void) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + ldr r6, _0802151C @ =gBattlescriptCurrInstr\n\ + ldr r0, [r6]\n\ + ldrb r0, [r0, 0x1]\n\ + bl GetBattleBank\n\ + ldr r7, _08021520 @ =gActiveBank\n\ + strb r0, [r7]\n\ + ldr r2, [r6]\n\ + ldrb r1, [r2, 0x2]\n\ + ldrb r0, [r2, 0x3]\n\ + lsls r0, 8\n\ + adds r1, r0\n\ + ldrb r0, [r2, 0x4]\n\ + lsls r0, 16\n\ + adds r1, r0\n\ + ldrb r0, [r2, 0x5]\n\ + lsls r0, 24\n\ + adds r3, r1, r0\n\ + ldrb r1, [r2, 0x6]\n\ + ldrb r0, [r2, 0x7]\n\ + lsls r0, 8\n\ + adds r1, r0\n\ + ldrb r0, [r2, 0x8]\n\ + lsls r0, 16\n\ + adds r1, r0\n\ + ldrb r0, [r2, 0x9]\n\ + lsls r0, 24\n\ + adds r4, r1, r0\n\ + ldrb r5, [r3]\n\ + adds r0, r5, 0\n\ + cmp r0, 0x1\n\ + beq _080214FE\n\ + cmp r0, 0x11\n\ + beq _080214FE\n\ + cmp r0, 0x2\n\ + bne _08021524\n\ +_080214FE:\n\ + ldrb r1, [r3]\n\ + ldrh r2, [r4]\n\ + movs r0, 0\n\ + bl EmitBattleAnimation\n\ + ldr r0, _08021520 @ =gActiveBank\n\ + ldrb r0, [r0]\n\ + bl MarkBufferBankForExecution\n\ + ldr r1, _0802151C @ =gBattlescriptCurrInstr\n\ + ldr r0, [r1]\n\ + adds r0, 0xA\n\ + str r0, [r1]\n\ + b _0802157A\n\ + .align 2, 0\n\ +_0802151C: .4byte gBattlescriptCurrInstr\n\ +_08021520: .4byte gActiveBank\n\ +_08021524:\n\ + ldr r0, _08021534 @ =gHitMarker\n\ + ldr r0, [r0]\n\ + movs r1, 0x80\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _08021538\n\ + adds r0, r2, 0\n\ + b _08021576\n\ + .align 2, 0\n\ +_08021534: .4byte gHitMarker\n\ +_08021538:\n\ + adds r0, r5, 0\n\ + subs r0, 0xA\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + cmp r0, 0x3\n\ + bls _08021564\n\ + ldr r1, _0802155C @ =gStatuses3\n\ + ldrb r0, [r7]\n\ + lsls r0, 2\n\ + adds r0, r1\n\ + ldr r0, [r0]\n\ + ldr r1, _08021560 @ =0x000400c0\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _08021564\n\ + adds r0, r2, 0\n\ + b _08021576\n\ + .align 2, 0\n\ +_0802155C: .4byte gStatuses3\n\ +_08021560: .4byte 0x000400c0\n\ +_08021564:\n\ + ldrb r1, [r3]\n\ + ldrh r2, [r4]\n\ + movs r0, 0\n\ + bl EmitBattleAnimation\n\ + ldrb r0, [r7]\n\ + bl MarkBufferBankForExecution\n\ + ldr r0, [r6]\n\ +_08021576:\n\ + adds r0, 0xA\n\ + str r0, [r6]\n\ +_0802157A:\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .syntax divided "); +} +#endif // NONMATCHING + +static void atk47_setgraphicalstatchangevalues(void) +{ + u8 to_add = 0; + switch (BATTLE_STRUCT->statChanger & 0xF0) + { + case 0x10: //+1 + to_add = 0xF; + break; + case 0x20: //+2 + to_add = 0x27; + break; + case 0x90: //-1 + to_add = 0x16; + break; + case 0xA0: //-2 + to_add = 0x2E; + break; + } + BATTLE_STRUCT->animArg1 = (BATTLE_STRUCT->statChanger & 0xF) + to_add - 1; + BATTLE_STRUCT->animArg2 = 0; + gBattlescriptCurrInstr++; +} + +#ifdef NONMATCHING +static void atk48_playstatchangeanimation(void) +{ + int curr_stat = 0; + u16 stat_animID = 0; + int changeable_stats = 0; + u32 stats_to_check; + u8 arg3; + + gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + stats_to_check = BSScriptRead8(gBattlescriptCurrInstr + 2); + arg3 = BSScriptRead8(gBattlescriptCurrInstr + 3); + if (arg3 & 1) + { + u16 r1 = 0x15; + if (arg3 & 0x2) + r1 = 0x2D; + while (stats_to_check != 0) + { + if (!(stats_to_check & 1)) + continue; + if (!(BSScriptRead8(gBattlescriptCurrInstr + 3))) + { + u8 ability; + if (gSideTimer[GetBankIdentity(gActiveBank) & 1].mistTimer) + continue; + ability = gBattleMons[gActiveBank].ability; + if (ability == ABILITY_CLEAR_BODY || ability == ABILITY_WHITE_SMOKE || (ability == ABILITY_KEEN_EYE && curr_stat == 6) || (ability == ABILITY_HYPER_CUTTER && curr_stat == 1)) + continue; + } + if (gBattleMons[gActiveBank].statStages[curr_stat] > 0) + { + stat_animID = r1; + changeable_stats++; + } + + stats_to_check >>= 1; + r1 += 1; + curr_stat++; + } + if (changeable_stats > 1 && BSScriptRead8(gBattlescriptCurrInstr + 3) & 2) + stat_animID = 0x39; + else + stat_animID = 0x3A; + } + else + { + u16 r1 = 0x15; + if (arg3 & 0x2) + r1 = 0x2D; + while (stats_to_check != 0) + { + if (!(stats_to_check & 1)) + continue; + if (gBattleMons[gActiveBank].statStages[curr_stat] < 0xB) + { + stat_animID = r1; + changeable_stats++; + } + + stats_to_check >>= 1; + r1 += 1; + curr_stat++; + } + if (changeable_stats > 1 && BSScriptRead8(gBattlescriptCurrInstr + 3) & 2) + stat_animID = 0x37; + else + stat_animID = 0x38; + } + if ((BSScriptRead8(gBattlescriptCurrInstr + 3) & 2 && changeable_stats <= 1) + || changeable_stats == 0 || BATTLE_STRUCT->filler2[0] != 0) + gBattlescriptCurrInstr += 4; + else + { + EmitBattleAnimation(0, 1, stat_animID); + MarkBufferBankForExecution(gActiveBank); + if ((BSScriptRead8(gBattlescriptCurrInstr + 3) & 4) && changeable_stats > 1) + BATTLE_STRUCT->filler2[0] = 1; + gBattlescriptCurrInstr += 4; + } +} + +#else +__attribute__((naked)) +static void atk48_playstatchangeanimation(void) +{ + asm(".syntax unified\n\ +push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + sub sp, 0x4\n\ + movs r7, 0\n\ + movs r0, 0\n\ + mov r8, r0\n\ + movs r3, 0\n\ + ldr r5, _08021670 @ =gBattlescriptCurrInstr\n\ + ldr r0, [r5]\n\ + ldrb r0, [r0, 0x1]\n\ + str r3, [sp]\n\ + bl GetBattleBank\n\ + ldr r2, _08021674 @ =gActiveBank\n\ + strb r0, [r2]\n\ + ldr r0, [r5]\n\ + ldrb r4, [r0, 0x2]\n\ + ldrb r1, [r0, 0x3]\n\ + movs r0, 0x1\n\ + ands r0, r1\n\ + ldr r3, [sp]\n\ + cmp r0, 0\n\ + beq _08021710\n\ + movs r0, 0x2\n\ + ands r0, r1\n\ + movs r1, 0x15\n\ + cmp r0, 0\n\ + beq _0802163C\n\ + movs r1, 0x2D\n\ +_0802163C:\n\ + cmp r4, 0\n\ + beq _080216E4\n\ + movs r0, 0x1\n\ + mov r10, r0\n\ + ldr r0, _08021678 @ =gUnknown_02024A98\n\ + mov r9, r0\n\ + lsls r5, r1, 16\n\ +_0802164A:\n\ + adds r0, r4, 0\n\ + mov r1, r10\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _080216D6\n\ + ldr r0, _08021670 @ =gBattlescriptCurrInstr\n\ + ldr r0, [r0]\n\ + ldrb r1, [r0, 0x3]\n\ + movs r0, 0x8\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _0802167C\n\ + ldr r0, _08021674 @ =gActiveBank\n\ + ldrb r1, [r0]\n\ + movs r0, 0x58\n\ + muls r0, r1\n\ + adds r0, r7, r0\n\ + b _080216C4\n\ + .align 2, 0\n\ +_08021670: .4byte gBattlescriptCurrInstr\n\ +_08021674: .4byte gActiveBank\n\ +_08021678: .4byte gUnknown_02024A98\n\ +_0802167C:\n\ + ldr r6, _08021700 @ =gActiveBank\n\ + ldrb r0, [r6]\n\ + str r3, [sp]\n\ + bl GetBankIdentity\n\ + mov r1, r10\n\ + ands r1, r0\n\ + lsls r0, r1, 1\n\ + adds r0, r1\n\ + lsls r0, 2\n\ + ldr r1, _08021704 @ =gSideTimer\n\ + adds r0, r1\n\ + ldrb r0, [r0, 0x2]\n\ + ldr r3, [sp]\n\ + cmp r0, 0\n\ + bne _080216D6\n\ + ldr r0, _08021708 @ =gBattleMons\n\ + ldrb r2, [r6]\n\ + movs r1, 0x58\n\ + muls r2, r1\n\ + adds r0, r2, r0\n\ + adds r0, 0x20\n\ + ldrb r0, [r0]\n\ + cmp r0, 0x1D\n\ + beq _080216D6\n\ + cmp r0, 0x49\n\ + beq _080216D6\n\ + cmp r0, 0x33\n\ + bne _080216BA\n\ + cmp r7, 0x6\n\ + beq _080216D6\n\ +_080216BA:\n\ + cmp r0, 0x34\n\ + bne _080216C2\n\ + cmp r7, 0x1\n\ + beq _080216D6\n\ +_080216C2:\n\ + adds r0, r7, r2\n\ +_080216C4:\n\ + add r0, r9\n\ + ldrb r0, [r0]\n\ + lsls r0, 24\n\ + asrs r0, 24\n\ + cmp r0, 0\n\ + ble _080216D6\n\ + lsrs r0, r5, 16\n\ + mov r8, r0\n\ + adds r3, 0x1\n\ +_080216D6:\n\ + lsrs r4, 1\n\ + movs r1, 0x80\n\ + lsls r1, 9\n\ + adds r5, r1\n\ + adds r7, 0x1\n\ + cmp r4, 0\n\ + bne _0802164A\n\ +_080216E4:\n\ + ldr r0, _0802170C @ =gBattlescriptCurrInstr\n\ + mov r9, r0\n\ + cmp r3, 0x1\n\ + ble _08021772\n\ + ldr r0, [r0]\n\ + ldrb r1, [r0, 0x3]\n\ + movs r0, 0x2\n\ + ands r0, r1\n\ + movs r1, 0x39\n\ + mov r8, r1\n\ + cmp r0, 0\n\ + beq _08021772\n\ + movs r0, 0x3A\n\ + b _08021770\n\ + .align 2, 0\n\ +_08021700: .4byte gActiveBank\n\ +_08021704: .4byte gSideTimer\n\ +_08021708: .4byte gBattleMons\n\ +_0802170C: .4byte gBattlescriptCurrInstr\n\ +_08021710:\n\ + movs r0, 0x2\n\ + ands r0, r1\n\ + movs r1, 0xE\n\ + cmp r0, 0\n\ + beq _0802171C\n\ + movs r1, 0x26\n\ +_0802171C:\n\ + mov r9, r5\n\ + cmp r4, 0\n\ + beq _08021758\n\ + ldr r6, _0802178C @ =gUnknown_02024A98\n\ + adds r5, r2, 0\n\ + lsls r2, r1, 16\n\ +_08021728:\n\ + movs r0, 0x1\n\ + ands r0, r4\n\ + cmp r0, 0\n\ + beq _0802174A\n\ + ldrb r1, [r5]\n\ + movs r0, 0x58\n\ + muls r0, r1\n\ + adds r0, r7, r0\n\ + adds r0, r6\n\ + ldrb r0, [r0]\n\ + lsls r0, 24\n\ + asrs r0, 24\n\ + cmp r0, 0xB\n\ + bgt _0802174A\n\ + lsrs r1, r2, 16\n\ + mov r8, r1\n\ + adds r3, 0x1\n\ +_0802174A:\n\ + lsrs r4, 1\n\ + movs r0, 0x80\n\ + lsls r0, 9\n\ + adds r2, r0\n\ + adds r7, 0x1\n\ + cmp r4, 0\n\ + bne _08021728\n\ +_08021758:\n\ + cmp r3, 0x1\n\ + ble _08021772\n\ + mov r1, r9\n\ + ldr r0, [r1]\n\ + ldrb r1, [r0, 0x3]\n\ + movs r0, 0x2\n\ + ands r0, r1\n\ + movs r1, 0x37\n\ + mov r8, r1\n\ + cmp r0, 0\n\ + beq _08021772\n\ + movs r0, 0x38\n\ +_08021770:\n\ + mov r8, r0\n\ +_08021772:\n\ + mov r1, r9\n\ + ldr r2, [r1]\n\ + ldrb r1, [r2, 0x3]\n\ + movs r0, 0x4\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _08021790\n\ + cmp r3, 0x1\n\ + bgt _08021790\n\ + adds r0, r2, 0x4\n\ + mov r1, r9\n\ + b _080217E6\n\ + .align 2, 0\n\ +_0802178C: .4byte gUnknown_02024A98\n\ +_08021790:\n\ + cmp r3, 0\n\ + beq _080217E0\n\ + ldr r0, _080217D0 @ =0x02000000\n\ + ldr r1, _080217D4 @ =0x000160dc\n\ + adds r4, r0, r1\n\ + ldrb r0, [r4]\n\ + cmp r0, 0\n\ + bne _080217E0\n\ + movs r0, 0\n\ + movs r1, 0x1\n\ + mov r2, r8\n\ + str r3, [sp]\n\ + bl EmitBattleAnimation\n\ + ldr r0, _080217D8 @ =gActiveBank\n\ + ldrb r0, [r0]\n\ + bl MarkBufferBankForExecution\n\ + ldr r0, _080217DC @ =gBattlescriptCurrInstr\n\ + ldr r0, [r0]\n\ + ldrb r1, [r0, 0x3]\n\ + movs r0, 0x4\n\ + ands r0, r1\n\ + ldr r3, [sp]\n\ + cmp r0, 0\n\ + beq _080217CC\n\ + cmp r3, 0x1\n\ + ble _080217CC\n\ + movs r0, 0x1\n\ + strb r0, [r4]\n\ +_080217CC:\n\ + ldr r1, _080217DC @ =gBattlescriptCurrInstr\n\ + b _080217E2\n\ + .align 2, 0\n\ +_080217D0: .4byte 0x02000000\n\ +_080217D4: .4byte 0x000160dc\n\ +_080217D8: .4byte gActiveBank\n\ +_080217DC: .4byte gBattlescriptCurrInstr\n\ +_080217E0:\n\ + mov r1, r9\n\ +_080217E2:\n\ + ldr r0, [r1]\n\ + adds r0, 0x4\n\ +_080217E6:\n\ + str r0, [r1]\n\ + add sp, 0x4\n\ + pop {r3-r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .syntax divided"); +} + +#endif // NONMATCHING + +#ifdef NONMATCHING +static void atk49_moveendturn(void) +{ + int i; + int effect = 0; + u16 last_move = 0, *choiced_move_atk; + int arg1, arg2, hold_effect_atk, move_type; + if (gLastUsedMove != 0xFFFF) + last_move = gLastUsedMove; + + arg1 = BSScriptRead8(gBattlescriptCurrInstr + 1); + arg2 = BSScriptRead8(gBattlescriptCurrInstr + 2); + if (gBattleMons[gBankTarget].item == ITEM_ENIGMA_BERRY) + hold_effect_atk = gEnigmaBerries[gBankAttacker].holdEffect; + else + hold_effect_atk = ItemId_GetHoldEffect(gBattleMons[gBankTarget].item); + + choiced_move_atk = (u16*)(gBankAttacker * 0x020160e8); + if (BATTLE_STRUCT->dynamicMoveType) + move_type = BATTLE_STRUCT->dynamicMoveType & 0x3F; + else + move_type = gBattleMoves[gCurrentMove].type; + + do + { + switch (BATTLE_STRUCT->cmd49StateTracker) + { + case 0: //rage check + if (gBattleMons[gBankTarget].status2 & STATUS2_RAGE + && gBattleMons[gBankTarget].hp && gBankAttacker != gBankTarget + && GetBankSide(gBankAttacker) != GetBankSide(gBankTarget) + && !(gBattleMoveFlags & MOVESTATUS_NOEFFECT) && TARGET_TURN_DAMAGED + && gBattleMoves[gCurrentMove].power && gBattleMons[gBankTarget].statStages[STAT_STAGE_ATK] <= 0xB) + { + gBattleMons[gBankTarget].statStages[STAT_STAGE_ATK]++; + b_movescr_stack_push_cursor(); + gBattlescriptCurrInstr = gUnknown_081D9132; + effect = 1; + } + BATTLE_STRUCT->cmd49StateTracker++; + break; + case 1: //defrosting check + if (gBattleMons[gBankTarget].status1 & STATUS_FREEZE + && gBattleMons[gBankTarget].hp && gBankAttacker != gBankTarget + && gSpecialStatuses[gBankTarget].moveturnLostHP + && !(gBattleMoveFlags & MOVESTATUS_NOEFFECT) && move_type == TYPE_FIRE) + { + gBattleMons[gBankTarget].status1 &= ~(STATUS_FREEZE); + gActiveBank = gBankTarget; + EmitSetAttributes(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gBankTarget].status1); + MarkBufferBankForExecution(gActiveBank); + b_movescr_stack_push_cursor(); + gBattlescriptCurrInstr = gUnknown_081D955D; + effect = 1; + } + BATTLE_STRUCT->cmd49StateTracker++; + break; + case 2: //target synchronize + if (AbilityBattleEffects(ABILITYEFFECT_SYNCHRONIZE, gBankTarget, 0, 0, 0)) + effect = 1; + BATTLE_STRUCT->cmd49StateTracker++; + break; + case 3: //contact abilities + if (AbilityBattleEffects(ABILITYEFFECT_CONTACT, gBankTarget, 0, 0, 0)) + effect = 1; + BATTLE_STRUCT->cmd49StateTracker++; + break; + case 4: //status immunities + if (AbilityBattleEffects(ABILITYEFFECT_IMMUNITY, 0, 0, 0, 0)) + effect = 1; //it loops through 4 banks, so we increment after its done with all banks + else + BATTLE_STRUCT->cmd49StateTracker++; + break; + case 5: //attacker synchronize + if (AbilityBattleEffects(ABILITYEFFECT_ATK_SYNCHRONIZE, gBankAttacker, 0, 0, 0)) + effect = 1; + BATTLE_STRUCT->cmd49StateTracker++; + break; + case 6: //update choice band move + if (gHitMarker & HITMARKER_OBEYS && hold_effect_atk == HOLD_EFFECT_CHOICE_BAND + && gLastUsedMove != MOVE_STRUGGLE && (*choiced_move_atk == 0 || *choiced_move_atk == 0xFFF) + && gLastUsedMove != MOVE_BATON_PASS && !(gBattleMoveFlags & MOVESTATUS_NOEFFECT)) + { + *choiced_move_atk = gLastUsedMove; + for (i = 0; i < 4 && gBattleMons[gBankAttacker].moves[i] != *choiced_move_atk; i++){} + if (i == 4) + *choiced_move_atk = 0; + } + BATTLE_STRUCT->cmd49StateTracker++; + break; + case 7: //changed held items + for (i = 0; i < gNoOfAllBanks; i++) + { + #define CHANGED_ITEM (((*u16)(0x020160f0))) + if (CHANGED_ITEM(i)) + gBattleMons[i].item = CHANGED_ITEM(i); + } + BATTLE_STRUCT->cmd49StateTracker++; + break; + case 8: //make sprite invisible + if (gStatuses3[gBankAttacker] & (STATUS3_ON_AIR | STATUS3_UNDERGROUND | STATUS3_UNDERWATER) + && !(gHitMarker & HITMARKER_NO_ANIMATIONS)) + { + gActiveBank = gBankAttacker; + EmitSpriteInvisibility(0, 1); + MarkBufferBankForExecution(gActiveBank); + } + BATTLE_STRUCT->cmd49StateTracker++; + break; + //sub_8015660 CheckIfMoveFailed + case 9: //semi-invlurneable attacker make visible + if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT) || !(gStatuses3[gBankAttacker] & (STATUS3_ON_AIR | STATUS3_UNDERGROUND | STATUS3_UNDERWATER)) + || sub_8015660(gBankAttacker)) + { + gActiveBank = gBankAttacker; + EmitSpriteInvisibility(0, 0); + MarkBufferBankForExecution(gActiveBank); + gStatuses3 &= ~(STATUS3_ON_AIR | STATUS3_UNDERGROUND | STATUS3_UNDERWATER); + gSpecialStatuses[gBankAttacker].restored_bank_sprite = 1; + } + BATTLE_STRUCT->cmd49StateTracker++; + break; + case 10: //semi-invlurneable target make visible + if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT) || !(gStatuses3[gBankTarget] & (STATUS3_ON_AIR | STATUS3_UNDERGROUND | STATUS3_UNDERWATER)) + || sub_8015660(gBankTarget)) + { + gActiveBank = gBankTarget; + EmitSpriteInvisibility(0, 0); + MarkBufferBankForExecution(gActiveBank); + gStatuses3 &= ~(STATUS3_ON_AIR | STATUS3_UNDERGROUND | STATUS3_UNDERWATER); + gSpecialStatuses[gBankTarget].restored_bank_sprite = 1; + } + BATTLE_STRUCT->cmd49StateTracker++; + break; + case 11: // + } + + } while (effect == 0) +} +#else +__attribute__((naked)) +static void atk49_moveendturn(void) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + sub sp, 0x18\n\ + movs r0, 0\n\ + mov r10, r0\n\ + ldr r0, _08021834 @ =gBattlescriptCurrInstr\n\ + ldr r0, [r0]\n\ + ldrb r1, [r0, 0x1]\n\ + str r1, [sp, 0x10]\n\ + ldrb r0, [r0, 0x2]\n\ + str r0, [sp, 0x14]\n\ + ldr r1, _08021838 @ =gBattleMons\n\ + ldr r0, _0802183C @ =gBankAttacker\n\ + ldrb r2, [r0]\n\ + movs r0, 0x58\n\ + muls r0, r2\n\ + adds r1, r0, r1\n\ + ldrh r0, [r1, 0x2E]\n\ + cmp r0, 0xAF\n\ + bne _08021844\n\ + ldr r1, _08021840 @ =gEnigmaBerries\n\ + lsls r0, r2, 3\n\ + subs r0, r2\n\ + lsls r0, 2\n\ + adds r0, r1\n\ + ldrb r0, [r0, 0x7]\n\ + b _0802184E\n\ + .align 2, 0\n\ +_08021834: .4byte gBattlescriptCurrInstr\n\ +_08021838: .4byte gBattleMons\n\ +_0802183C: .4byte gBankAttacker\n\ +_08021840: .4byte gEnigmaBerries\n\ +_08021844:\n\ + ldrh r0, [r1, 0x2E]\n\ + bl ItemId_GetHoldEffect\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ +_0802184E:\n\ + str r0, [sp, 0x8]\n\ + ldr r0, _0802186C @ =gBankAttacker\n\ + ldrb r1, [r0]\n\ + lsls r1, 1\n\ + ldr r0, _08021870 @ =0x020160e8\n\ + adds r1, r0\n\ + str r1, [sp, 0xC]\n\ + subs r0, 0xCC\n\ + ldrb r0, [r0]\n\ + cmp r0, 0\n\ + beq _080218C0\n\ + movs r2, 0x3F\n\ + ands r2, r0\n\ + str r2, [sp, 0x4]\n\ + b _080218D2\n\ + .align 2, 0\n\ +_0802186C: .4byte gBankAttacker\n\ +_08021870: .4byte 0x020160e8\n\ +_08021874:\n\ + strb r2, [r7]\n\ + ldr r0, [r5]\n\ + orrs r0, r6\n\ + str r0, [r5]\n\ + ldr r0, _080218AC @ =0x02000000\n\ + ldr r3, _080218B0 @ =0x0001600c\n\ + adds r0, r3\n\ + strb r4, [r0]\n\ + bl MoveValuesCleanUp\n\ + ldr r2, _080218B4 @ =gBattleScriptsEffectsTable\n\ + mov r4, r8\n\ + ldrh r1, [r4]\n\ + lsls r0, r1, 1\n\ + adds r0, r1\n\ + lsls r0, 2\n\ + add r0, r9\n\ + ldrb r0, [r0]\n\ + lsls r0, 2\n\ + adds r0, r2\n\ + ldr r0, [r0]\n\ + bl b_movescr_stack_push\n\ + ldr r1, _080218B8 @ =gBattlescriptCurrInstr\n\ + ldr r0, _080218BC @ =gUnknown_081D9B2D\n\ + bl _0802229C\n\ + .align 2, 0\n\ +_080218AC: .4byte 0x02000000\n\ +_080218B0: .4byte 0x0001600c\n\ +_080218B4: .4byte gBattleScriptsEffectsTable\n\ +_080218B8: .4byte gBattlescriptCurrInstr\n\ +_080218BC: .4byte gUnknown_081D9B2D\n\ +_080218C0:\n\ + ldr r2, _080218D8 @ =gBattleMoves\n\ + ldr r0, _080218DC @ =gCurrentMove\n\ + ldrh r1, [r0]\n\ + lsls r0, r1, 1\n\ + adds r0, r1\n\ + lsls r0, 2\n\ + adds r0, r2\n\ + ldrb r0, [r0, 0x2]\n\ + str r0, [sp, 0x4]\n\ +_080218D2:\n\ + ldr r5, _080218E0 @ =0x02000000\n\ + mov r12, r5\n\ + b _080218EE\n\ + .align 2, 0\n\ +_080218D8: .4byte gBattleMoves\n\ +_080218DC: .4byte gCurrentMove\n\ +_080218E0: .4byte 0x02000000\n\ +_080218E4:\n\ + mov r0, r10\n\ + cmp r0, 0\n\ + beq _080218EE\n\ + bl _08022286\n\ +_080218EE:\n\ + ldr r0, _08021908 @ =0x0001600c\n\ + add r0, r12\n\ + ldrb r0, [r0]\n\ + cmp r0, 0x11\n\ + bls _080218FC\n\ + bl _0802224E\n\ +_080218FC:\n\ + lsls r0, 2\n\ + ldr r1, _0802190C @ =_08021910\n\ + adds r0, r1\n\ + ldr r0, [r0]\n\ + mov pc, r0\n\ + .align 2, 0\n\ +_08021908: .4byte 0x0001600c\n\ +_0802190C: .4byte _08021910\n\ + .align 2, 0\n\ +_08021910:\n\ + .4byte _08021958\n\ + .4byte _08021A34\n\ + .4byte _08021AF0\n\ + .4byte _08021B20\n\ + .4byte _08021B44\n\ + .4byte _08021B78\n\ + .4byte _08021B9C\n\ + .4byte _08021C40\n\ + .4byte _08021C78\n\ + .4byte _08021CA8\n\ + .4byte _08021CCC\n\ + .4byte _08021D18\n\ + .4byte _08021DAC\n\ + .4byte _08021E30\n\ + .4byte _08021E70\n\ + .4byte _08022068\n\ + .4byte _080221C0\n\ + .4byte _0802224E\n\ +_08021958:\n\ + ldr r5, _08021A08 @ =gBattleMons\n\ + ldr r2, _08021A0C @ =gBankTarget\n\ + ldrb r4, [r2]\n\ + movs r6, 0x58\n\ + adds r3, r4, 0\n\ + muls r3, r6\n\ + adds r0, r5, 0\n\ + adds r0, 0x50\n\ + adds r0, r3, r0\n\ + ldr r1, [r0]\n\ + movs r0, 0x80\n\ + lsls r0, 16\n\ + ands r1, r0\n\ + cmp r1, 0\n\ + beq _080219FE\n\ + adds r0, r3, r5\n\ + ldrh r0, [r0, 0x28]\n\ + cmp r0, 0\n\ + beq _080219FE\n\ + ldr r0, _08021A10 @ =gBankAttacker\n\ + ldrb r1, [r0]\n\ + cmp r1, r4\n\ + beq _080219FE\n\ + adds r0, r1, 0\n\ + bl GetBankSide\n\ + adds r4, r0, 0\n\ + ldr r1, _08021A0C @ =gBankTarget\n\ + ldrb r0, [r1]\n\ + bl GetBankSide\n\ + lsls r4, 24\n\ + lsls r0, 24\n\ + cmp r4, r0\n\ + beq _080219FE\n\ + ldr r0, _08021A14 @ =gBattleMoveFlags\n\ + ldrb r1, [r0]\n\ + movs r0, 0x29\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _080219FE\n\ + ldr r2, _08021A18 @ =gProtectStructs\n\ + ldr r4, _08021A0C @ =gBankTarget\n\ + ldrb r3, [r4]\n\ + lsls r1, r3, 4\n\ + adds r0, r2, 0x4\n\ + adds r0, r1, r0\n\ + ldr r0, [r0]\n\ + cmp r0, 0\n\ + bne _080219C8\n\ + adds r0, r2, 0\n\ + adds r0, 0x8\n\ + adds r0, r1, r0\n\ + ldr r0, [r0]\n\ + cmp r0, 0\n\ + beq _080219FE\n\ +_080219C8:\n\ + ldr r2, _08021A1C @ =gBattleMoves\n\ + ldr r0, _08021A20 @ =gCurrentMove\n\ + ldrh r1, [r0]\n\ + lsls r0, r1, 1\n\ + adds r0, r1\n\ + lsls r0, 2\n\ + adds r0, r2\n\ + ldrb r0, [r0, 0x1]\n\ + cmp r0, 0\n\ + beq _080219FE\n\ + adds r0, r3, 0\n\ + muls r0, r6\n\ + adds r1, r0, r5\n\ + ldrb r2, [r1, 0x19]\n\ + movs r0, 0x19\n\ + ldrsb r0, [r1, r0]\n\ + cmp r0, 0xB\n\ + bgt _080219FE\n\ + adds r0, r2, 0x1\n\ + strb r0, [r1, 0x19]\n\ + bl b_movescr_stack_push_cursor\n\ + ldr r1, _08021A24 @ =gBattlescriptCurrInstr\n\ + ldr r0, _08021A28 @ =gUnknown_081D9132\n\ + str r0, [r1]\n\ + movs r5, 0x1\n\ + mov r10, r5\n\ +_080219FE:\n\ + ldr r2, _08021A2C @ =0x02000000\n\ + ldr r0, _08021A30 @ =0x0001600c\n\ + adds r1, r2, r0\n\ + b _08021E00\n\ + .align 2, 0\n\ +_08021A08: .4byte gBattleMons\n\ +_08021A0C: .4byte gBankTarget\n\ +_08021A10: .4byte gBankAttacker\n\ +_08021A14: .4byte gBattleMoveFlags\n\ +_08021A18: .4byte gProtectStructs\n\ +_08021A1C: .4byte gBattleMoves\n\ +_08021A20: .4byte gCurrentMove\n\ +_08021A24: .4byte gBattlescriptCurrInstr\n\ +_08021A28: .4byte gUnknown_081D9132\n\ +_08021A2C: .4byte 0x02000000\n\ +_08021A30: .4byte 0x0001600c\n\ +_08021A34:\n\ + ldr r2, _08021AD0 @ =gBattleMons\n\ + ldr r1, _08021AD4 @ =gBankTarget\n\ + ldrb r4, [r1]\n\ + movs r3, 0x58\n\ + mov r12, r3\n\ + mov r3, r12\n\ + muls r3, r4\n\ + adds r7, r2, 0\n\ + adds r7, 0x4C\n\ + adds r6, r3, r7\n\ + ldr r5, [r6]\n\ + movs r0, 0x20\n\ + ands r0, r5\n\ + cmp r0, 0\n\ + bne _08021A54\n\ + b _08021DFA\n\ +_08021A54:\n\ + adds r0, r3, r2\n\ + ldrh r0, [r0, 0x28]\n\ + cmp r0, 0\n\ + bne _08021A5E\n\ + b _08021DFA\n\ +_08021A5E:\n\ + ldr r0, _08021AD8 @ =gBankAttacker\n\ + ldrb r0, [r0]\n\ + cmp r0, r4\n\ + bne _08021A68\n\ + b _08021DFA\n\ +_08021A68:\n\ + ldr r0, _08021ADC @ =gSpecialStatuses\n\ + lsls r1, r4, 2\n\ + adds r1, r4\n\ + lsls r1, 2\n\ + adds r0, 0xC\n\ + adds r1, r0\n\ + ldr r0, [r1]\n\ + cmp r0, 0\n\ + bne _08021A7C\n\ + b _08021DFA\n\ +_08021A7C:\n\ + ldr r0, _08021AE0 @ =gBattleMoveFlags\n\ + ldrb r1, [r0]\n\ + movs r0, 0x29\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _08021A8A\n\ + b _08021DFA\n\ +_08021A8A:\n\ + ldr r4, [sp, 0x4]\n\ + cmp r4, 0xA\n\ + beq _08021A92\n\ + b _08021DFA\n\ +_08021A92:\n\ + movs r0, 0x21\n\ + negs r0, r0\n\ + ands r5, r0\n\ + str r5, [r6]\n\ + ldr r4, _08021AE4 @ =gActiveBank\n\ + ldr r5, _08021AD4 @ =gBankTarget\n\ + ldrb r0, [r5]\n\ + strb r0, [r4]\n\ + ldrb r0, [r5]\n\ + mov r1, r12\n\ + muls r1, r0\n\ + adds r0, r1, 0\n\ + adds r0, r7\n\ + str r0, [sp]\n\ + movs r0, 0\n\ + movs r1, 0x28\n\ + movs r2, 0\n\ + movs r3, 0x4\n\ + bl EmitSetAttributes\n\ + ldrb r0, [r4]\n\ + bl MarkBufferBankForExecution\n\ + bl b_movescr_stack_push_cursor\n\ + ldr r1, _08021AE8 @ =gBattlescriptCurrInstr\n\ + ldr r0, _08021AEC @ =gUnknown_081D955D\n\ + str r0, [r1]\n\ + movs r2, 0x1\n\ + mov r10, r2\n\ + b _08021DFA\n\ + .align 2, 0\n\ +_08021AD0: .4byte gBattleMons\n\ +_08021AD4: .4byte gBankTarget\n\ +_08021AD8: .4byte gBankAttacker\n\ +_08021ADC: .4byte gSpecialStatuses\n\ +_08021AE0: .4byte gBattleMoveFlags\n\ +_08021AE4: .4byte gActiveBank\n\ +_08021AE8: .4byte gBattlescriptCurrInstr\n\ +_08021AEC: .4byte gUnknown_081D955D\n\ +_08021AF0:\n\ + ldr r0, _08021B14 @ =gBankTarget\n\ + ldrb r1, [r0]\n\ + movs r0, 0\n\ + str r0, [sp]\n\ + movs r0, 0x7\n\ + movs r2, 0\n\ + movs r3, 0\n\ + bl AbilityBattleEffects\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + beq _08021B0C\n\ + movs r4, 0x1\n\ + mov r10, r4\n\ +_08021B0C:\n\ + ldr r2, _08021B18 @ =0x02000000\n\ + ldr r5, _08021B1C @ =0x0001600c\n\ + adds r1, r2, r5\n\ + b _08021E00\n\ + .align 2, 0\n\ +_08021B14: .4byte gBankTarget\n\ +_08021B18: .4byte 0x02000000\n\ +_08021B1C: .4byte 0x0001600c\n\ +_08021B20:\n\ + ldr r0, _08021B40 @ =gBankTarget\n\ + ldrb r1, [r0]\n\ + movs r0, 0\n\ + str r0, [sp]\n\ + movs r0, 0x4\n\ + movs r2, 0\n\ + movs r3, 0\n\ + bl AbilityBattleEffects\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + bne _08021B3A\n\ + b _08021DFA\n\ +_08021B3A:\n\ + movs r0, 0x1\n\ + mov r10, r0\n\ + b _08021DFA\n\ + .align 2, 0\n\ +_08021B40: .4byte gBankTarget\n\ +_08021B44:\n\ + movs r0, 0\n\ + str r0, [sp]\n\ + movs r0, 0x5\n\ + movs r1, 0\n\ + movs r2, 0\n\ + movs r3, 0\n\ + bl AbilityBattleEffects\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + beq _08021B68\n\ + movs r4, 0x1\n\ + mov r10, r4\n\ + ldr r5, _08021B64 @ =0x02000000\n\ + mov r12, r5\n\ + b _0802224E\n\ + .align 2, 0\n\ +_08021B64: .4byte 0x02000000\n\ +_08021B68:\n\ + ldr r2, _08021B70 @ =0x02000000\n\ + ldr r0, _08021B74 @ =0x0001600c\n\ + adds r1, r2, r0\n\ + b _08021E00\n\ + .align 2, 0\n\ +_08021B70: .4byte 0x02000000\n\ +_08021B74: .4byte 0x0001600c\n\ +_08021B78:\n\ + ldr r0, _08021B98 @ =gBankAttacker\n\ + ldrb r1, [r0]\n\ + movs r0, 0\n\ + str r0, [sp]\n\ + movs r0, 0x8\n\ + movs r2, 0\n\ + movs r3, 0\n\ + bl AbilityBattleEffects\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + bne _08021B92\n\ + b _08021DFA\n\ +_08021B92:\n\ + movs r1, 0x1\n\ + mov r10, r1\n\ + b _08021DFA\n\ + .align 2, 0\n\ +_08021B98: .4byte gBankAttacker\n\ +_08021B9C:\n\ + ldr r0, _08021C28 @ =gHitMarker\n\ + ldr r0, [r0]\n\ + movs r1, 0x80\n\ + lsls r1, 18\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _08021BE0\n\ + ldr r4, [sp, 0x8]\n\ + cmp r4, 0x1D\n\ + bne _08021BE0\n\ + ldr r0, _08021C2C @ =gUnknown_02024BE8\n\ + ldrh r2, [r0]\n\ + adds r7, r0, 0\n\ + cmp r2, 0xA5\n\ + beq _08021BE0\n\ + ldr r5, [sp, 0xC]\n\ + ldrh r1, [r5]\n\ + cmp r1, 0\n\ + beq _08021BC8\n\ + ldr r0, _08021C30 @ =0x0000ffff\n\ + cmp r1, r0\n\ + bne _08021BE0\n\ +_08021BC8:\n\ + cmp r2, 0xE2\n\ + bne _08021BDA\n\ + ldr r0, _08021C34 @ =gBattleMoveFlags\n\ + ldrb r1, [r0]\n\ + movs r0, 0x20\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _08021BDA\n\ + b _08022244\n\ +_08021BDA:\n\ + ldrh r0, [r7]\n\ + ldr r1, [sp, 0xC]\n\ + strh r0, [r1]\n\ +_08021BE0:\n\ + movs r4, 0\n\ + ldr r2, _08021C38 @ =gBattleMons\n\ + ldr r3, _08021C3C @ =gBankAttacker\n\ + ldrb r1, [r3]\n\ + movs r0, 0x58\n\ + muls r0, r1\n\ + adds r2, 0xC\n\ + adds r0, r2\n\ + ldrh r0, [r0]\n\ + ldr r5, [sp, 0xC]\n\ + ldrh r1, [r5]\n\ + mov r9, r3\n\ + cmp r0, r1\n\ + beq _08021C18\n\ + mov r6, r9\n\ + movs r3, 0x58\n\ + adds r5, r1, 0\n\ +_08021C02:\n\ + adds r4, 0x1\n\ + cmp r4, 0x3\n\ + bgt _08021C18\n\ + lsls r0, r4, 1\n\ + ldrb r1, [r6]\n\ + muls r1, r3\n\ + adds r0, r1\n\ + adds r0, r2\n\ + ldrh r0, [r0]\n\ + cmp r0, r5\n\ + bne _08021C02\n\ +_08021C18:\n\ + cmp r4, 0x4\n\ + beq _08021C1E\n\ + b _08022244\n\ +_08021C1E:\n\ + movs r0, 0\n\ + ldr r1, [sp, 0xC]\n\ +_08021C22:\n\ + strh r0, [r1]\n\ + b _08022244\n\ + .align 2, 0\n\ +_08021C28: .4byte gHitMarker\n\ +_08021C2C: .4byte gUnknown_02024BE8\n\ +_08021C30: .4byte 0x0000ffff\n\ +_08021C34: .4byte gBattleMoveFlags\n\ +_08021C38: .4byte gBattleMons\n\ +_08021C3C: .4byte gBankAttacker\n\ +_08021C40:\n\ + movs r4, 0\n\ + ldr r0, _08021C6C @ =gNoOfAllBanks\n\ + ldrb r2, [r0]\n\ + cmp r4, r2\n\ + blt _08021C4C\n\ + b _08022244\n\ +_08021C4C:\n\ + movs r5, 0\n\ + ldr r2, _08021C70 @ =0x020160f0\n\ + ldr r3, _08021C74 @ =gBattleMons\n\ +_08021C52:\n\ + ldrh r1, [r2]\n\ + cmp r1, 0\n\ + beq _08021C5C\n\ + strh r1, [r3, 0x2E]\n\ + strh r5, [r2]\n\ +_08021C5C:\n\ + adds r2, 0x2\n\ + adds r3, 0x58\n\ + adds r4, 0x1\n\ + ldrb r1, [r0]\n\ + cmp r4, r1\n\ + blt _08021C52\n\ + b _08022244\n\ + .align 2, 0\n\ +_08021C6C: .4byte gNoOfAllBanks\n\ +_08021C70: .4byte 0x020160f0\n\ +_08021C74: .4byte gBattleMons\n\ +_08021C78:\n\ + movs r0, 0x3\n\ + movs r1, 0\n\ + movs r2, 0\n\ + bl ItemBattleEffects\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + beq _08021C98\n\ + movs r2, 0x1\n\ + mov r10, r2\n\ + ldr r3, _08021C94 @ =0x02000000\n\ + mov r12, r3\n\ + b _0802224E\n\ + .align 2, 0\n\ +_08021C94: .4byte 0x02000000\n\ +_08021C98:\n\ + ldr r2, _08021CA0 @ =0x02000000\n\ + ldr r4, _08021CA4 @ =0x0001600c\n\ + adds r1, r2, r4\n\ + b _08021E00\n\ + .align 2, 0\n\ +_08021CA0: .4byte 0x02000000\n\ +_08021CA4: .4byte 0x0001600c\n\ +_08021CA8:\n\ + movs r0, 0x4\n\ + movs r1, 0\n\ + movs r2, 0\n\ + bl ItemBattleEffects\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + beq _08021CBC\n\ + movs r5, 0x1\n\ + mov r10, r5\n\ +_08021CBC:\n\ + ldr r2, _08021CC4 @ =0x02000000\n\ + ldr r0, _08021CC8 @ =0x0001600c\n\ + adds r1, r2, r0\n\ + b _08021E00\n\ + .align 2, 0\n\ +_08021CC4: .4byte 0x02000000\n\ +_08021CC8: .4byte 0x0001600c\n\ +_08021CCC:\n\ + ldr r1, _08021D04 @ =gStatuses3\n\ + ldr r0, _08021D08 @ =gBankAttacker\n\ + ldrb r2, [r0]\n\ + lsls r0, r2, 2\n\ + adds r0, r1\n\ + ldr r0, [r0]\n\ + ldr r1, _08021D0C @ =0x000400c0\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _08021CE2\n\ + b _08021DFA\n\ +_08021CE2:\n\ + ldr r0, _08021D10 @ =gHitMarker\n\ + ldr r0, [r0]\n\ + movs r1, 0x80\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _08021CF0\n\ + b _08021DFA\n\ +_08021CF0:\n\ + ldr r4, _08021D14 @ =gActiveBank\n\ + strb r2, [r4]\n\ + movs r0, 0\n\ + movs r1, 0x1\n\ + bl EmitSpriteInvisibility\n\ + ldrb r0, [r4]\n\ + bl MarkBufferBankForExecution\n\ + b _08021DFA\n\ + .align 2, 0\n\ +_08021D04: .4byte gStatuses3\n\ +_08021D08: .4byte gBankAttacker\n\ +_08021D0C: .4byte 0x000400c0\n\ +_08021D10: .4byte gHitMarker\n\ +_08021D14: .4byte gActiveBank\n\ +_08021D18:\n\ + ldr r0, _08021D88 @ =gBattleMoveFlags\n\ + ldrb r1, [r0]\n\ + movs r0, 0x29\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _08021D44\n\ + ldr r1, _08021D8C @ =gStatuses3\n\ + ldr r0, _08021D90 @ =gBankAttacker\n\ + ldrb r2, [r0]\n\ + lsls r0, r2, 2\n\ + adds r0, r1\n\ + ldr r0, [r0]\n\ + ldr r1, _08021D94 @ =0x000400c0\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _08021D44\n\ + adds r0, r2, 0\n\ + bl sub_8015660\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + beq _08021D7E\n\ +_08021D44:\n\ + ldr r4, _08021D98 @ =gActiveBank\n\ + ldr r5, _08021D90 @ =gBankAttacker\n\ + ldrb r0, [r5]\n\ + strb r0, [r4]\n\ + movs r0, 0\n\ + movs r1, 0\n\ + bl EmitSpriteInvisibility\n\ + ldrb r0, [r4]\n\ + bl MarkBufferBankForExecution\n\ + ldr r0, _08021D8C @ =gStatuses3\n\ + ldrb r2, [r5]\n\ + lsls r2, 2\n\ + adds r2, r0\n\ + ldr r0, [r2]\n\ + ldr r1, _08021D9C @ =0xfffbff3f\n\ + ands r0, r1\n\ + str r0, [r2]\n\ + ldr r2, _08021DA0 @ =gSpecialStatuses\n\ + ldrb r1, [r5]\n\ + lsls r0, r1, 2\n\ + adds r0, r1\n\ + lsls r0, 2\n\ + adds r0, r2\n\ + ldrb r1, [r0]\n\ + movs r2, 0x4\n\ + orrs r1, r2\n\ + strb r1, [r0]\n\ +_08021D7E:\n\ + ldr r2, _08021DA4 @ =0x02000000\n\ + ldr r4, _08021DA8 @ =0x0001600c\n\ + adds r1, r2, r4\n\ + b _08021E00\n\ + .align 2, 0\n\ +_08021D88: .4byte gBattleMoveFlags\n\ +_08021D8C: .4byte gStatuses3\n\ +_08021D90: .4byte gBankAttacker\n\ +_08021D94: .4byte 0x000400c0\n\ +_08021D98: .4byte gActiveBank\n\ +_08021D9C: .4byte 0xfffbff3f\n\ +_08021DA0: .4byte gSpecialStatuses\n\ +_08021DA4: .4byte 0x02000000\n\ +_08021DA8: .4byte 0x0001600c\n\ +_08021DAC:\n\ + ldr r2, _08021E0C @ =gSpecialStatuses\n\ + ldr r1, _08021E10 @ =gBankTarget\n\ + ldrb r3, [r1]\n\ + lsls r4, r3, 2\n\ + adds r0, r4, r3\n\ + lsls r0, 2\n\ + adds r0, r2\n\ + ldrb r0, [r0]\n\ + lsls r0, 29\n\ + cmp r0, 0\n\ + blt _08021DFA\n\ + ldr r0, _08021E14 @ =gNoOfAllBanks\n\ + ldrb r0, [r0]\n\ + cmp r3, r0\n\ + bcs _08021DFA\n\ + ldr r5, _08021E18 @ =gStatuses3\n\ + adds r0, r4, r5\n\ + ldr r0, [r0]\n\ + ldr r1, _08021E1C @ =0x000400c0\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _08021DFA\n\ + ldr r4, _08021E20 @ =gActiveBank\n\ + strb r3, [r4]\n\ + movs r0, 0\n\ + movs r1, 0\n\ + bl EmitSpriteInvisibility\n\ + ldrb r0, [r4]\n\ + bl MarkBufferBankForExecution\n\ + ldr r0, _08021E10 @ =gBankTarget\n\ + ldrb r2, [r0]\n\ + lsls r2, 2\n\ + adds r2, r5\n\ + ldr r0, [r2]\n\ + ldr r1, _08021E24 @ =0xfffbff3f\n\ + ands r0, r1\n\ + str r0, [r2]\n\ +_08021DFA:\n\ + ldr r2, _08021E28 @ =0x02000000\n\ + ldr r3, _08021E2C @ =0x0001600c\n\ + adds r1, r2, r3\n\ +_08021E00:\n\ + ldrb r0, [r1]\n\ + adds r0, 0x1\n\ + strb r0, [r1]\n\ + mov r12, r2\n\ + b _0802224E\n\ + .align 2, 0\n\ +_08021E0C: .4byte gSpecialStatuses\n\ +_08021E10: .4byte gBankTarget\n\ +_08021E14: .4byte gNoOfAllBanks\n\ +_08021E18: .4byte gStatuses3\n\ +_08021E1C: .4byte 0x000400c0\n\ +_08021E20: .4byte gActiveBank\n\ +_08021E24: .4byte 0xfffbff3f\n\ +_08021E28: .4byte 0x02000000\n\ +_08021E2C: .4byte 0x0001600c\n\ +_08021E30:\n\ + movs r4, 0\n\ + ldr r0, _08021E60 @ =gNoOfAllBanks\n\ + ldrb r5, [r0]\n\ + cmp r4, r5\n\ + blt _08021E3C\n\ + b _08022244\n\ +_08021E3C:\n\ + ldr r2, _08021E64 @ =gDisableStructs\n\ + ldr r5, _08021E68 @ =0xfeffffff\n\ + adds r3, r0, 0\n\ + ldr r1, _08021E6C @ =gUnknown_02024AD0\n\ +_08021E44:\n\ + ldrb r0, [r2, 0xA]\n\ + cmp r0, 0\n\ + bne _08021E50\n\ + ldr r0, [r1]\n\ + ands r0, r5\n\ + str r0, [r1]\n\ +_08021E50:\n\ + adds r2, 0x1C\n\ + adds r1, 0x58\n\ + adds r4, 0x1\n\ + ldrb r0, [r3]\n\ + cmp r4, r0\n\ + blt _08021E44\n\ + b _08022244\n\ + .align 2, 0\n\ +_08021E60: .4byte gNoOfAllBanks\n\ +_08021E64: .4byte gDisableStructs\n\ +_08021E68: .4byte 0xfeffffff\n\ +_08021E6C: .4byte gUnknown_02024AD0\n\ +_08021E70:\n\ + ldr r1, _08021F2C @ =gHitMarker\n\ + ldr r3, [r1]\n\ + movs r0, 0x80\n\ + lsls r0, 5\n\ + ands r0, r3\n\ + ldr r2, _08021F30 @ =gBankAttacker\n\ + mov r9, r2\n\ + adds r5, r1, 0\n\ + cmp r0, 0\n\ + beq _08021E9A\n\ + ldr r0, _08021F34 @ =gActiveBank\n\ + ldrb r2, [r2]\n\ + strb r2, [r0]\n\ + ldr r1, _08021F38 @ =gBankTarget\n\ + ldrb r0, [r1]\n\ + mov r4, r9\n\ + strb r0, [r4]\n\ + strb r2, [r1]\n\ + ldr r0, _08021F3C @ =0xffffefff\n\ + ands r3, r0\n\ + str r3, [r5]\n\ +_08021E9A:\n\ + ldr r1, _08021F40 @ =gBattleMoves\n\ + ldr r2, _08021F44 @ =gUnknown_02024BE8\n\ + ldrh r3, [r2]\n\ + lsls r0, r3, 1\n\ + adds r0, r3\n\ + lsls r0, 2\n\ + adds r0, r1\n\ + ldrb r0, [r0]\n\ + mov r8, r1\n\ + adds r7, r2, 0\n\ + cmp r0, 0x7F\n\ + bne _08021EBE\n\ + ldr r0, _08021F48 @ =gBattleMoveFlags\n\ + ldrb r1, [r0]\n\ + movs r0, 0x29\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _08021ECA\n\ +_08021EBE:\n\ + ldr r1, _08021F4C @ =gUnknown_02024C2C\n\ + mov r2, r9\n\ + ldrb r0, [r2]\n\ + lsls r0, 1\n\ + adds r0, r1\n\ + strh r3, [r0]\n\ +_08021ECA:\n\ + ldr r0, _08021F50 @ =gAbsentBankFlags\n\ + ldrb r1, [r0]\n\ + ldr r2, _08021F54 @ =gBitTable\n\ + mov r3, r9\n\ + ldrb r4, [r3]\n\ + lsls r0, r4, 2\n\ + adds r0, r2\n\ + ldr r3, [r0]\n\ + ands r1, r3\n\ + adds r6, r2, 0\n\ + cmp r1, 0\n\ + beq _08021EE4\n\ + b _08022244\n\ +_08021EE4:\n\ + ldr r0, _08021F58 @ =0x000160a6\n\ + add r0, r12\n\ + ldrb r0, [r0]\n\ + ands r0, r3\n\ + cmp r0, 0\n\ + beq _08021EF2\n\ + b _08022244\n\ +_08021EF2:\n\ + ldrh r2, [r7]\n\ + lsls r0, r2, 1\n\ + adds r0, r2\n\ + lsls r0, 2\n\ + add r0, r8\n\ + ldrb r0, [r0]\n\ + cmp r0, 0x7F\n\ + bne _08021F04\n\ + b _08022244\n\ +_08021F04:\n\ + ldr r0, [r5]\n\ + movs r1, 0x80\n\ + lsls r1, 18\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _08021F68\n\ + ldr r1, _08021F5C @ =gLastUsedMove\n\ + lsls r0, r4, 1\n\ + adds r0, r1\n\ + strh r2, [r0]\n\ + ldr r0, _08021F60 @ =gUnknown_02024C4C\n\ + mov r4, r9\n\ + ldrb r1, [r4]\n\ + lsls r1, 1\n\ + adds r1, r0\n\ + ldr r0, _08021F64 @ =gCurrentMove\n\ + ldrh r0, [r0]\n\ + strh r0, [r1]\n\ + b _08021F82\n\ + .align 2, 0\n\ +_08021F2C: .4byte gHitMarker\n\ +_08021F30: .4byte gBankAttacker\n\ +_08021F34: .4byte gActiveBank\n\ +_08021F38: .4byte gBankTarget\n\ +_08021F3C: .4byte 0xffffefff\n\ +_08021F40: .4byte gBattleMoves\n\ +_08021F44: .4byte gUnknown_02024BE8\n\ +_08021F48: .4byte gBattleMoveFlags\n\ +_08021F4C: .4byte gUnknown_02024C2C\n\ +_08021F50: .4byte gAbsentBankFlags\n\ +_08021F54: .4byte gBitTable\n\ +_08021F58: .4byte 0x000160a6\n\ +_08021F5C: .4byte gLastUsedMove\n\ +_08021F60: .4byte gUnknown_02024C4C\n\ +_08021F64: .4byte gCurrentMove\n\ +_08021F68:\n\ + ldr r1, _08021FD0 @ =gLastUsedMove\n\ + lsls r0, r4, 1\n\ + adds r0, r1\n\ + ldr r1, _08021FD4 @ =0x0000ffff\n\ + strh r1, [r0]\n\ + ldr r1, _08021FD8 @ =gUnknown_02024C4C\n\ + mov r2, r9\n\ + ldrb r0, [r2]\n\ + lsls r0, 1\n\ + adds r0, r1\n\ + movs r1, 0x1\n\ + negs r1, r1\n\ + strh r1, [r0]\n\ +_08021F82:\n\ + ldr r2, _08021FDC @ =gBankTarget\n\ + ldrb r3, [r2]\n\ + lsls r0, r3, 2\n\ + adds r0, r6\n\ + ldr r0, [r0]\n\ + lsls r0, 28\n\ + ldr r1, [r5]\n\ + ands r1, r0\n\ + cmp r1, 0\n\ + bne _08021FA0\n\ + ldr r0, _08021FE0 @ =gUnknown_02024C5C\n\ + adds r0, r3, r0\n\ + mov r3, r9\n\ + ldrb r1, [r3]\n\ + strb r1, [r0]\n\ +_08021FA0:\n\ + ldr r0, [r5]\n\ + movs r1, 0x80\n\ + lsls r1, 18\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _0802204C\n\ + ldr r0, _08021FE4 @ =gBattleMoveFlags\n\ + ldrb r1, [r0]\n\ + movs r0, 0x29\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _0802204C\n\ + ldrh r2, [r7]\n\ + ldr r0, _08021FD4 @ =0x0000ffff\n\ + cmp r2, r0\n\ + bne _08021FEC\n\ + ldr r1, _08021FE8 @ =gMoveHitWith\n\ + ldr r4, _08021FDC @ =gBankTarget\n\ + ldrb r0, [r4]\n\ + lsls r0, 1\n\ + adds r0, r1\n\ + strh r2, [r0]\n\ + b _08022244\n\ + .align 2, 0\n\ +_08021FD0: .4byte gLastUsedMove\n\ +_08021FD4: .4byte 0x0000ffff\n\ +_08021FD8: .4byte gUnknown_02024C4C\n\ +_08021FDC: .4byte gBankTarget\n\ +_08021FE0: .4byte gUnknown_02024C5C\n\ +_08021FE4: .4byte gBattleMoveFlags\n\ +_08021FE8: .4byte gMoveHitWith\n\ +_08021FEC:\n\ + ldr r0, _08022014 @ =gMoveHitWith\n\ + ldr r5, _08022018 @ =gBankTarget\n\ + ldrb r1, [r5]\n\ + lsls r1, 1\n\ + adds r1, r0\n\ + ldr r4, _0802201C @ =gCurrentMove\n\ + ldrh r0, [r4]\n\ + strh r0, [r1]\n\ + ldr r0, _08022020 @ =0x0001601c\n\ + add r0, r12\n\ + ldrb r3, [r0]\n\ + cmp r3, 0\n\ + beq _08022028\n\ + ldr r0, _08022024 @ =gUnknown_02024C44\n\ + ldrb r1, [r5]\n\ + lsls r1, 1\n\ + adds r1, r0\n\ + movs r0, 0x3F\n\ + ands r0, r3\n\ + b _08021C22\n\ + .align 2, 0\n\ +_08022014: .4byte gMoveHitWith\n\ +_08022018: .4byte gBankTarget\n\ +_0802201C: .4byte gCurrentMove\n\ +_08022020: .4byte 0x0001601c\n\ +_08022024: .4byte gUnknown_02024C44\n\ +_08022028:\n\ + ldr r0, _08022044 @ =gUnknown_02024C44\n\ + ldr r1, _08022048 @ =gBankTarget\n\ + ldrb r2, [r1]\n\ + lsls r2, 1\n\ + adds r2, r0\n\ + ldrh r1, [r4]\n\ + lsls r0, r1, 1\n\ + adds r0, r1\n\ + lsls r0, 2\n\ + add r0, r8\n\ + ldrb r0, [r0, 0x2]\n\ + strh r0, [r2]\n\ + b _08022244\n\ + .align 2, 0\n\ +_08022044: .4byte gUnknown_02024C44\n\ +_08022048: .4byte gBankTarget\n\ +_0802204C:\n\ + ldr r0, _0802205C @ =gMoveHitWith\n\ + ldr r2, _08022060 @ =gBankTarget\n\ + ldrb r1, [r2]\n\ + lsls r1, 1\n\ + adds r1, r0\n\ + ldr r0, _08022064 @ =0x0000ffff\n\ + b _08021C22\n\ + .align 2, 0\n\ +_0802205C: .4byte gMoveHitWith\n\ +_08022060: .4byte gBankTarget\n\ +_08022064: .4byte 0x0000ffff\n\ +_08022068:\n\ + ldr r0, _0802212C @ =gAbsentBankFlags\n\ + ldrb r1, [r0]\n\ + ldr r6, _08022130 @ =gBitTable\n\ + ldr r2, _08022134 @ =gBankAttacker\n\ + ldrb r5, [r2]\n\ + lsls r0, r5, 2\n\ + adds r0, r6\n\ + ldr r4, [r0]\n\ + ands r1, r4\n\ + mov r9, r2\n\ + cmp r1, 0\n\ + beq _08022082\n\ + b _08022244\n\ +_08022082:\n\ + ldr r0, _08022138 @ =0x000160a6\n\ + add r0, r12\n\ + ldrb r0, [r0]\n\ + ands r0, r4\n\ + cmp r0, 0\n\ + beq _08022090\n\ + b _08022244\n\ +_08022090:\n\ + ldr r1, _0802213C @ =gBattleMoves\n\ + ldr r4, _08022140 @ =gUnknown_02024BE8\n\ + ldrh r3, [r4]\n\ + lsls r0, r3, 1\n\ + adds r0, r3\n\ + lsls r0, 2\n\ + adds r0, r1\n\ + ldrb r1, [r0, 0x8]\n\ + movs r0, 0x10\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _0802215C\n\ + ldr r0, _08022144 @ =gHitMarker\n\ + ldr r1, [r0]\n\ + movs r0, 0x80\n\ + lsls r0, 18\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _0802215C\n\ + ldr r2, _08022148 @ =gBankTarget\n\ + ldrb r0, [r2]\n\ + cmp r5, r0\n\ + bne _080220C0\n\ + b _08022244\n\ +_080220C0:\n\ + adds r2, r0, 0\n\ + lsls r0, r2, 2\n\ + adds r0, r6\n\ + ldr r0, [r0]\n\ + lsls r0, 28\n\ + ands r1, r0\n\ + cmp r1, 0\n\ + bne _0802215C\n\ + ldr r0, _0802214C @ =gBattleMoveFlags\n\ + ldrb r1, [r0]\n\ + movs r0, 0x29\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _0802215C\n\ + lsls r0, r2, 1\n\ + ldr r5, _08022150 @ =0x000160ac\n\ + adds r0, r5\n\ + add r0, r12\n\ + strb r3, [r0]\n\ + ldr r0, _08022148 @ =gBankTarget\n\ + ldrb r1, [r0]\n\ + lsls r1, 1\n\ + ldr r2, _08022154 @ =0x000160ad\n\ + adds r1, r2\n\ + add r1, r12\n\ + ldrh r0, [r4]\n\ + lsrs r0, 8\n\ + strb r0, [r1]\n\ + ldr r3, _08022148 @ =gBankTarget\n\ + ldrb r2, [r3]\n\ + lsls r2, 2\n\ + mov r5, r9\n\ + ldrb r0, [r5]\n\ + lsrs r0, 1\n\ + lsls r0, 1\n\ + ldr r1, _08022158 @ =0x00016100\n\ + adds r0, r1\n\ + adds r2, r0\n\ + add r2, r12\n\ + ldrh r0, [r4]\n\ + strb r0, [r2]\n\ + ldrb r2, [r3]\n\ + lsls r2, 2\n\ + ldrb r0, [r5]\n\ + lsrs r0, 1\n\ + lsls r0, 1\n\ + adds r1, 0x1\n\ + adds r0, r1\n\ + adds r2, r0\n\ + add r2, r12\n\ + ldrh r0, [r4]\n\ + lsrs r0, 8\n\ + strb r0, [r2]\n\ + b _08022244\n\ + .align 2, 0\n\ +_0802212C: .4byte gAbsentBankFlags\n\ +_08022130: .4byte gBitTable\n\ +_08022134: .4byte gBankAttacker\n\ +_08022138: .4byte 0x000160a6\n\ +_0802213C: .4byte gBattleMoves\n\ +_08022140: .4byte gUnknown_02024BE8\n\ +_08022144: .4byte gHitMarker\n\ +_08022148: .4byte gBankTarget\n\ +_0802214C: .4byte gBattleMoveFlags\n\ +_08022150: .4byte 0x000160ac\n\ +_08022154: .4byte 0x000160ad\n\ +_08022158: .4byte 0x00016100\n\ +_0802215C:\n\ + mov r1, r9\n\ + ldrb r0, [r1]\n\ + ldr r2, _080221B4 @ =gBankTarget\n\ + ldrb r2, [r2]\n\ + cmp r0, r2\n\ + beq _08022244\n\ + ldr r3, _080221B4 @ =gBankTarget\n\ + ldrb r0, [r3]\n\ + lsls r0, 1\n\ + ldr r4, _080221B8 @ =0x000160ac\n\ + adds r0, r4\n\ + add r0, r12\n\ + movs r3, 0\n\ + strb r3, [r0]\n\ + ldr r5, _080221B4 @ =gBankTarget\n\ + ldrb r0, [r5]\n\ + lsls r0, 1\n\ + ldr r1, _080221BC @ =0x000160ad\n\ + adds r0, r1\n\ + add r0, r12\n\ + strb r3, [r0]\n\ + ldrb r2, [r5]\n\ + lsls r2, 2\n\ + mov r4, r9\n\ + ldrb r0, [r4]\n\ + lsrs r0, 1\n\ + lsls r0, 1\n\ + adds r1, 0x53\n\ + adds r0, r1\n\ + adds r2, r0\n\ + add r2, r12\n\ + strb r3, [r2]\n\ + ldrb r2, [r5]\n\ + lsls r2, 2\n\ + ldrb r0, [r4]\n\ + lsrs r0, 1\n\ + lsls r0, 1\n\ + adds r1, 0x1\n\ + adds r0, r1\n\ + adds r2, r0\n\ + add r2, r12\n\ + strb r3, [r2]\n\ + b _08022244\n\ + .align 2, 0\n\ +_080221B4: .4byte gBankTarget\n\ +_080221B8: .4byte 0x000160ac\n\ +_080221BC: .4byte 0x000160ad\n\ +_080221C0:\n\ + ldr r5, _080222B0 @ =gHitMarker\n\ + ldr r2, [r5]\n\ + movs r0, 0x80\n\ + lsls r0, 12\n\ + ands r0, r2\n\ + cmp r0, 0\n\ + bne _08022244\n\ + ldr r0, _080222B4 @ =gBattleTypeFlags\n\ + ldrh r1, [r0]\n\ + movs r0, 0x1\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _08022244\n\ + ldr r1, _080222B8 @ =gProtectStructs\n\ + ldr r0, _080222BC @ =gBankAttacker\n\ + ldrb r0, [r0]\n\ + lsls r0, 4\n\ + adds r0, r1\n\ + ldrb r0, [r0, 0x1]\n\ + lsls r0, 29\n\ + cmp r0, 0\n\ + blt _08022244\n\ + ldr r0, _080222C0 @ =gBattleMoves\n\ + mov r9, r0\n\ + ldr r1, _080222C4 @ =gCurrentMove\n\ + mov r8, r1\n\ + ldrh r0, [r1]\n\ + lsls r1, r0, 1\n\ + adds r1, r0\n\ + lsls r1, 2\n\ + add r1, r9\n\ + ldrb r0, [r1, 0x6]\n\ + cmp r0, 0x8\n\ + bne _08022244\n\ + movs r6, 0x80\n\ + lsls r6, 2\n\ + adds r4, r6, 0\n\ + ands r4, r2\n\ + cmp r4, 0\n\ + bne _08022244\n\ + ldr r7, _080222C8 @ =gBankTarget\n\ + ldrb r0, [r7]\n\ + bl GetBankIdentity\n\ + movs r1, 0x2\n\ + eors r0, r1\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + bl GetBankByPlayerAI\n\ + lsls r0, 24\n\ + lsrs r2, r0, 24\n\ + ldr r1, _080222CC @ =gBattleMons\n\ + movs r0, 0x58\n\ + muls r0, r2\n\ + adds r0, r1\n\ + ldrh r0, [r0, 0x28]\n\ + cmp r0, 0\n\ + beq _0802223A\n\ + bl _08021874\n\ +_0802223A:\n\ + ldr r0, [r5]\n\ + orrs r0, r6\n\ + str r0, [r5]\n\ + ldr r2, _080222D0 @ =0x02000000\n\ + mov r12, r2\n\ +_08022244:\n\ + ldr r1, _080222D4 @ =0x0001600c\n\ + add r1, r12\n\ + ldrb r0, [r1]\n\ + adds r0, 0x1\n\ + strb r0, [r1]\n\ +_0802224E:\n\ + ldr r3, [sp, 0x10]\n\ + cmp r3, 0x1\n\ + bne _08022262\n\ + mov r4, r10\n\ + cmp r4, 0\n\ + bne _08022262\n\ + ldr r1, _080222D4 @ =0x0001600c\n\ + add r1, r12\n\ + movs r0, 0x11\n\ + strb r0, [r1]\n\ +_08022262:\n\ + ldr r5, [sp, 0x10]\n\ + cmp r5, 0x2\n\ + bne _08022278\n\ + ldr r1, _080222D4 @ =0x0001600c\n\ + add r1, r12\n\ + ldr r0, [sp, 0x14]\n\ + ldrb r2, [r1]\n\ + cmp r0, r2\n\ + bne _08022278\n\ + movs r0, 0x11\n\ + strb r0, [r1]\n\ +_08022278:\n\ + ldr r0, _080222D4 @ =0x0001600c\n\ + add r0, r12\n\ + ldrb r0, [r0]\n\ + cmp r0, 0x11\n\ + beq _08022286\n\ + bl _080218E4\n\ +_08022286:\n\ + ldr r0, _080222D4 @ =0x0001600c\n\ + add r0, r12\n\ + ldrb r0, [r0]\n\ + cmp r0, 0x11\n\ + bne _0802229E\n\ + mov r3, r10\n\ + cmp r3, 0\n\ + bne _0802229E\n\ + ldr r1, _080222D8 @ =gBattlescriptCurrInstr\n\ + ldr r0, [r1]\n\ + adds r0, 0x3\n\ +_0802229C:\n\ + str r0, [r1]\n\ +_0802229E:\n\ + add sp, 0x18\n\ + pop {r3-r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_080222B0: .4byte gHitMarker\n\ +_080222B4: .4byte gBattleTypeFlags\n\ +_080222B8: .4byte gProtectStructs\n\ +_080222BC: .4byte gBankAttacker\n\ +_080222C0: .4byte gBattleMoves\n\ +_080222C4: .4byte gCurrentMove\n\ +_080222C8: .4byte gBankTarget\n\ +_080222CC: .4byte gBattleMons\n\ +_080222D0: .4byte 0x02000000\n\ +_080222D4: .4byte 0x0001600c\n\ +_080222D8: .4byte gBattlescriptCurrInstr\n\ + .syntax divided" + ); +} +#endif // NONMATCHING + +static void atk4A_typecalc2(void) +{ + u8 flags = 0; + int i = 0; + u8 move_type = gBattleMoves[gCurrentMove].type; + + if (gBattleMons[gBankTarget].ability == ABILITY_LEVITATE && move_type == TYPE_GROUND) + { + gLastUsedAbility = gBattleMons[gBankTarget].ability; + gBattleMoveFlags |= (MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED); + gMoveHitWith[gBankTarget] = 0; + gBattleCommunication[6] = move_type; + RecordAbilityBattle(gBankTarget, gLastUsedAbility); + } + else + { + while (gTypeEffectiveness[i]!= TYPE_ENDTABLE) + { + if (gTypeEffectiveness[i] == TYPE_FORESIGHT) + { + if (gBattleMons[gBankTarget].status2 & STATUS2_FORESIGHT) {break;} + else {i += 3; continue;} + } + + if (gTypeEffectiveness[i] == move_type) + { + //check type1 + if (gTypeEffectiveness[i + 1] == gBattleMons[gBankTarget].type1) + { + if (gTypeEffectiveness[i + 2] == 0) + { + gBattleMoveFlags |= MOVESTATUS_NOTAFFECTED; + break; + } + if (gTypeEffectiveness[i + 2] == 5) + flags |= MOVESTATUS_NOTVERYEFFECTIVE; + if (gTypeEffectiveness[i + 2] == 20) + flags |= MOVESTATUS_SUPEREFFECTIVE; + } + //check type2 + if (gTypeEffectiveness[i + 1] == gBattleMons[gBankTarget].type2) + { + if (gBattleMons[gBankTarget].type1 != gBattleMons[gBankTarget].type2 + && gTypeEffectiveness[i + 2] == 0) + { + gBattleMoveFlags |= MOVESTATUS_NOTAFFECTED; + break; + } + if (gTypeEffectiveness[i + 1] == gBattleMons[gBankTarget].type2 && gBattleMons[gBankTarget].type1 != gBattleMons[gBankTarget].type2 && gTypeEffectiveness[i + 2] == 5) + flags |= MOVESTATUS_NOTVERYEFFECTIVE; + if (gTypeEffectiveness[i + 1] == gBattleMons[gBankTarget].type2 + && gBattleMons[gBankTarget].type1 != gBattleMons[gBankTarget].type2 && gTypeEffectiveness[i + 2] == 20) + flags |= MOVESTATUS_SUPEREFFECTIVE; + } + } + i += 3; + } + } + + if (gBattleMons[gBankTarget].ability == ABILITY_WONDER_GUARD && !(flags & MOVESTATUS_NOEFFECT) && AttacksThisTurn(gBankAttacker, gCurrentMove) == 2 && + (!(flags & MOVESTATUS_SUPEREFFECTIVE) || ((flags & (MOVESTATUS_SUPEREFFECTIVE | MOVESTATUS_NOTVERYEFFECTIVE)) == (MOVESTATUS_SUPEREFFECTIVE | MOVESTATUS_NOTVERYEFFECTIVE))) && + gBattleMoves[gCurrentMove].power) + { + gLastUsedAbility = ABILITY_WONDER_GUARD; + gBattleMoveFlags |= MOVESTATUS_MISSED; + gMoveHitWith[gBankTarget] = 0; + gBattleCommunication[6] = 3; + RecordAbilityBattle(gBankTarget, gLastUsedAbility); + } + if (gBattleMoveFlags & MOVESTATUS_NOTAFFECTED) + gProtectStructs[gBankAttacker].notEffective = 1; + + gBattlescriptCurrInstr++; +} + +static void atk4B_return_atk_to_ball(void) +{ + gActiveBank = gBankAttacker; + if (!(gHitMarker & HITMARKER_FAINTED(gActiveBank))) + { + EmitReturnPokeToBall(0, 0); + MarkBufferBankForExecution(gActiveBank); + } + gBattlescriptCurrInstr++; +} + +static void atk4C_copy_poke_data(void) +{ + if (gBattleExecBuffer) + return; + + gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + + gBattlePartyID[gActiveBank] = unk_2000000[0x16068 + gActiveBank]; + + EmitGetAttributes(0, 0, gBitTable[gBattlePartyID[gActiveBank]]); + MarkBufferBankForExecution(gActiveBank); + gBattlescriptCurrInstr += 2; +} + +static inline u8 get_knocked_off_byte(u8 bank) +{ + register u32 side asm("r2") = GetBankSide(bank); + register struct WishFutureKnock* dummy = &gWishFutureKnock; + register u8* aa = ((u8*)((u8*)(dummy))); + register u8* bb = aa + 0x29; + register u8* cc asm("r0") = side + bb; + return *cc; +} + +static void atk4D_switch_data_update(void) +{ + struct BattlePokemon OldData; + int i; + u8 *monData; + if (gBattleExecBuffer) + return; + + gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + OldData = gBattleMons[gActiveBank]; + monData = (u8*)(&gBattleMons[gActiveBank]); + for (i = 0; i < sizeof(struct BattlePokemon); i++) + { + monData[i] = gBattleBufferB[gActiveBank][4 + i]; + } + + gBattleMons[gActiveBank].type1 = gBaseStats[gBattleMons[gActiveBank].species].type1; + gBattleMons[gActiveBank].type2 = gBaseStats[gBattleMons[gActiveBank].species].type2; + gBattleMons[gActiveBank].ability = GetAbilityBySpecies(gBattleMons[gActiveBank].species, gBattleMons[gActiveBank].altAbility); + //check knocked off item + if (get_knocked_off_byte(gActiveBank) & gBitTable[gBattlePartyID[gActiveBank]]) + { + gBattleMons[gActiveBank].item = 0; + } + + if (gBattleMoves[gCurrentMove].effect == EFFECT_BATON_PASS) + { + for (i = 0; i < 8; i++) + { + gBattleMons[gActiveBank].statStages[i] = OldData.statStages[i]; + } + gBattleMons[gActiveBank].status2 = OldData.status2; + } + SwitchInClearStructs(); + BATTLE_STRUCT->scriptingActive = gActiveBank; + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 7; + gBattleTextBuff1[2] = gActiveBank; + gBattleTextBuff1[3] = gBattlePartyID[gActiveBank]; + gBattleTextBuff1[4] = EOS; + + gBattlescriptCurrInstr += 2; +} + +static void atk4E_switchin_anim(void) +{ + if (gBattleExecBuffer) + return; + + gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + if (GetBankSide(gActiveBank) == 1 && !(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_BATTLE_TOWER))) + { + GetSetPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gActiveBank].species), 2); + } + gAbsentBankFlags &= ~(gBitTable[gActiveBank]); + EmitSendOutPoke(0, gBattlePartyID[gActiveBank], BSScriptRead8(gBattlescriptCurrInstr + 2)); + MarkBufferBankForExecution(gActiveBank); + gBattlescriptCurrInstr += 3; +} + +static void atk4F_jump_if_cannot_switch(void) +{ + int val, to_cmp; + register struct Pokemon *party; + u8 r7; + //0x80 byte is used as a way of telling the function whether to not check status2/status3 + gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1) & 0x7F); + if (!(BSScriptRead8(gBattlescriptCurrInstr + 1) & 0x80) + && ((gBattleMons[gActiveBank].status2 & (STATUS2_WRAPPED | STATUS2_ESCAPE_PREVENTION)) + || (gStatuses3[gActiveBank] & STATUS3_ROOTED))) + { + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 2); + return; + } + if (gBattleTypeFlags & BATTLE_TYPE_MULTI) + { + if (GetBankSide(gActiveBank) == 1) + party = gEnemyParty; + else + party = gPlayerParty; + val = 0; + if (sub_803FBFC(sub_803FC34(gActiveBank)) == 1) + val = 3; + for (to_cmp = val + 3; val < to_cmp; val++) + { + if (GetMonData(&party[val], MON_DATA_SPECIES) != SPECIES_NONE + && !GetMonData(&party[val], MON_DATA_IS_EGG) + && GetMonData(&party[val], MON_DATA_HP) != 0 + && gBattlePartyID[gActiveBank] != val) + break; + } + if (val == to_cmp) + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 2); + else + gBattlescriptCurrInstr += 6; + } + else + { + if (GetBankSide(gActiveBank) == 1) + { + r7 = GetBankByPlayerAI(1); + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + to_cmp = GetBankByPlayerAI(3); + else + to_cmp = r7; + party = gEnemyParty; + } + else + { + r7 = GetBankByPlayerAI(0); + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + to_cmp = GetBankByPlayerAI(2); + else + to_cmp = r7; + party = gPlayerParty; + } + for (val = 0; val < 6; val++) + { + if (GetMonData(&party[val], MON_DATA_HP) != 0 + && GetMonData(&party[val], MON_DATA_SPECIES) != SPECIES_NONE + && !GetMonData(&party[val], MON_DATA_IS_EGG) + && val != gBattlePartyID[r7] && val != gBattlePartyID[to_cmp]) + break; + } + if (val == 6) + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 2); + else + gBattlescriptCurrInstr += 6; + } +} + +void sub_8022A3C(u8 unkown) +{ + //BATTLE_STRUCT->unk16064[gActiveBank] = gBattlePartyID[gActiveBank]; + ewram[gActiveBank + 0x16064] = gBattlePartyID[gActiveBank]; + EmitChoosePokemon(0, 1, unkown, 0, BATTLE_STRUCT->unk1606C[gActiveBank]); + MarkBufferBankForExecution(gActiveBank); +} + +/* +static void atk50_openpartyscreen(void) +{ + int i = 0; + int r9 = 0; + u8* fail_loc = BSScriptReadPtr(gBattlescriptCurrInstr + 2); + + if (BSScriptRead8(gBattlescriptCurrInstr + 1) == 5) + { + if ((gBattleTypeFlags & (BATTLE_TYPE_DOUBLE | BATTLE_TYPE_MULTI)) != BATTLE_TYPE_DOUBLE) + { + for (gActiveBank = i; gActiveBank < gNoOfAllBanks; gActiveBank++) + { + if (!(gHitMarker & HITMARKER_FAINTED(gActiveBank))) + { + EmitLinkStandbyMsg(0, 2); + MarkBufferBankForExecution(gActiveBank); + } + else if (sub_8018018(gActiveBank, 6, 6) == 0 + && !gSpecialStatuses[gActiveBank].flag40) + { + sub_8022A3C(6); + gSpecialStatuses[gActiveBank].flag40 = 1; + } + else + { + gAbsentBankFlags |= gBitTable[gActiveBank]; + gHitMarker &= (~HITMARKER_FAINTED(gActiveBank)); + EmitLinkStandbyMsg(0, 2); + MarkBufferBankForExecution(gActiveBank); + } + } + } + else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + { + if (!(gHitMarker >> 0x1C & gBitTable[0])) + { + + } + else if (sub_8018018(gActiveBank, 6, 6) == 0 + && !gSpecialStatuses[gActiveBank].flag40) + { + + } + else + { + + } + } + } +} +*/ + +__attribute__((naked)) +static void atk50_openpartyscreen(void) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r9\n\ + mov r6, r8\n\ + push {r6,r7}\n\ + sub sp, 0x4\n\ + movs r7, 0\n\ + movs r0, 0\n\ + mov r9, r0\n\ + ldr r6, _08022B44 @ =gBattlescriptCurrInstr\n\ + ldr r1, [r6]\n\ + ldrb r2, [r1, 0x2]\n\ + ldrb r0, [r1, 0x3]\n\ + lsls r0, 8\n\ + orrs r2, r0\n\ + ldrb r0, [r1, 0x4]\n\ + lsls r0, 16\n\ + orrs r2, r0\n\ + ldrb r0, [r1, 0x5]\n\ + lsls r0, 24\n\ + orrs r2, r0\n\ + mov r8, r2\n\ + ldrb r2, [r1, 0x1]\n\ + adds r0, r2, 0\n\ + mov r12, r6\n\ + cmp r0, 0x5\n\ + beq _08022ACE\n\ + b _08022F74\n\ +_08022ACE:\n\ + ldr r0, _08022B48 @ =gBattleTypeFlags\n\ + ldrh r0, [r0]\n\ + movs r1, 0x41\n\ + ands r1, r0\n\ + cmp r1, 0x1\n\ + beq _08022BBC\n\ + ldr r1, _08022B4C @ =gActiveBank\n\ + strb r7, [r1]\n\ + ldr r0, _08022B50 @ =gNoOfAllBanks\n\ + ldrb r0, [r0]\n\ + cmp r7, r0\n\ + bcc _08022AE8\n\ + b _08022F62\n\ +_08022AE8:\n\ + ldr r7, _08022B54 @ =gHitMarker\n\ + ldr r6, _08022B58 @ =gBitTable\n\ + adds r4, r1, 0\n\ + ldr r0, _08022B5C @ =gAbsentBankFlags\n\ + mov r8, r0\n\ +_08022AF2:\n\ + ldrb r2, [r4]\n\ + lsls r0, r2, 2\n\ + adds r0, r6\n\ + ldr r1, [r0]\n\ + lsls r1, 28\n\ + ldr r0, [r7]\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _08022B94\n\ + adds r0, r2, 0\n\ + movs r1, 0x6\n\ + movs r2, 0x6\n\ + bl sub_8018018\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + beq _08022B60\n\ + ldrb r0, [r4]\n\ + lsls r0, 2\n\ + adds r0, r6\n\ + ldr r0, [r0]\n\ + mov r2, r8\n\ + ldrb r1, [r2]\n\ + orrs r0, r1\n\ + strb r0, [r2]\n\ + ldrb r0, [r4]\n\ + lsls r0, 2\n\ + adds r0, r6\n\ + ldr r1, [r0]\n\ + lsls r1, 28\n\ + ldr r0, [r7]\n\ + bics r0, r1\n\ + str r0, [r7]\n\ + movs r0, 0\n\ + movs r1, 0x2\n\ + bl EmitLinkStandbyMsg\n\ + ldrb r0, [r4]\n\ + bl MarkBufferBankForExecution\n\ + b _08022BA2\n\ + .align 2, 0\n\ +_08022B44: .4byte gBattlescriptCurrInstr\n\ +_08022B48: .4byte gBattleTypeFlags\n\ +_08022B4C: .4byte gActiveBank\n\ +_08022B50: .4byte gNoOfAllBanks\n\ +_08022B54: .4byte gHitMarker\n\ +_08022B58: .4byte gBitTable\n\ +_08022B5C: .4byte gAbsentBankFlags\n\ +_08022B60:\n\ + ldr r5, _08022B90 @ =gSpecialStatuses\n\ + ldrb r0, [r4]\n\ + lsls r1, r0, 2\n\ + adds r1, r0\n\ + lsls r1, 2\n\ + adds r1, r5\n\ + ldrb r0, [r1]\n\ + lsls r0, 25\n\ + cmp r0, 0\n\ + blt _08022BA2\n\ + movs r0, 0x6\n\ + bl sub_8022A3C\n\ + ldrb r1, [r4]\n\ + lsls r0, r1, 2\n\ + adds r0, r1\n\ + lsls r0, 2\n\ + adds r0, r5\n\ + ldrb r1, [r0]\n\ + movs r2, 0x40\n\ + orrs r1, r2\n\ + strb r1, [r0]\n\ + b _08022BA2\n\ + .align 2, 0\n\ +_08022B90: .4byte gSpecialStatuses\n\ +_08022B94:\n\ + movs r0, 0\n\ + movs r1, 0x2\n\ + bl EmitLinkStandbyMsg\n\ + ldrb r0, [r4]\n\ + bl MarkBufferBankForExecution\n\ +_08022BA2:\n\ + ldrb r0, [r4]\n\ + adds r0, 0x1\n\ + strb r0, [r4]\n\ + ldr r1, _08022BB8 @ =gNoOfAllBanks\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + ldrb r1, [r1]\n\ + cmp r0, r1\n\ + bcc _08022AF2\n\ + b _08022F62\n\ + .align 2, 0\n\ +_08022BB8: .4byte gNoOfAllBanks\n\ +_08022BBC:\n\ + ands r1, r0\n\ + cmp r1, 0\n\ + bne _08022BC4\n\ + b _08022F62\n\ +_08022BC4:\n\ + ldr r0, _08022C1C @ =gHitMarker\n\ + mov r8, r0\n\ + ldr r0, [r0]\n\ + lsrs r5, r0, 28\n\ + ldr r6, _08022C20 @ =gBitTable\n\ + ldr r0, [r6]\n\ + ands r0, r5\n\ + cmp r0, 0\n\ + beq _08022C7E\n\ + ldr r4, _08022C24 @ =gActiveBank\n\ + strb r7, [r4]\n\ + movs r0, 0\n\ + movs r1, 0x6\n\ + movs r2, 0x6\n\ + bl sub_8018018\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + beq _08022C2C\n\ + ldr r2, _08022C28 @ =gAbsentBankFlags\n\ + ldrb r0, [r4]\n\ + lsls r0, 2\n\ + adds r0, r6\n\ + ldr r0, [r0]\n\ + ldrb r1, [r2]\n\ + orrs r0, r1\n\ + strb r0, [r2]\n\ + ldrb r0, [r4]\n\ + lsls r0, 2\n\ + adds r0, r6\n\ + ldr r1, [r0]\n\ + lsls r1, 28\n\ + mov r2, r8\n\ + ldr r0, [r2]\n\ + bics r0, r1\n\ + str r0, [r2]\n\ + movs r0, 0\n\ + bl Emitcmd42\n\ + ldrb r0, [r4]\n\ + bl MarkBufferBankForExecution\n\ + b _08022C7E\n\ + .align 2, 0\n\ +_08022C1C: .4byte gHitMarker\n\ +_08022C20: .4byte gBitTable\n\ +_08022C24: .4byte gActiveBank\n\ +_08022C28: .4byte gAbsentBankFlags\n\ +_08022C2C:\n\ + ldr r6, _08022C60 @ =gSpecialStatuses\n\ + ldrb r0, [r4]\n\ + lsls r1, r0, 2\n\ + adds r1, r0\n\ + lsls r1, 2\n\ + adds r1, r6\n\ + ldrb r0, [r1]\n\ + lsls r0, 25\n\ + cmp r0, 0\n\ + blt _08022C6C\n\ + ldr r0, _08022C64 @ =0x02000000\n\ + ldr r1, _08022C68 @ =0x0001606a\n\ + adds r0, r1\n\ + ldrb r0, [r0]\n\ + bl sub_8022A3C\n\ + ldrb r1, [r4]\n\ + lsls r0, r1, 2\n\ + adds r0, r1\n\ + lsls r0, 2\n\ + adds r0, r6\n\ + ldrb r1, [r0]\n\ + movs r2, 0x40\n\ + orrs r1, r2\n\ + strb r1, [r0]\n\ + b _08022C7E\n\ + .align 2, 0\n\ +_08022C60: .4byte gSpecialStatuses\n\ +_08022C64: .4byte 0x02000000\n\ +_08022C68: .4byte 0x0001606a\n\ +_08022C6C:\n\ + movs r0, 0\n\ + movs r1, 0x2\n\ + bl EmitLinkStandbyMsg\n\ + ldrb r0, [r4]\n\ + bl MarkBufferBankForExecution\n\ + movs r2, 0x1\n\ + mov r9, r2\n\ +_08022C7E:\n\ + ldr r6, _08022CD8 @ =gBitTable\n\ + ldr r0, [r6, 0x8]\n\ + ands r0, r5\n\ + cmp r0, 0\n\ + beq _08022D40\n\ + ldr r0, [r6]\n\ + ands r0, r5\n\ + cmp r0, 0\n\ + bne _08022D40\n\ + ldr r4, _08022CDC @ =gActiveBank\n\ + movs r0, 0x2\n\ + strb r0, [r4]\n\ + movs r0, 0x2\n\ + movs r1, 0x6\n\ + movs r2, 0x6\n\ + bl sub_8018018\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + beq _08022CE8\n\ + ldr r2, _08022CE0 @ =gAbsentBankFlags\n\ + ldrb r0, [r4]\n\ + lsls r0, 2\n\ + adds r0, r6\n\ + ldr r0, [r0]\n\ + ldrb r1, [r2]\n\ + orrs r0, r1\n\ + strb r0, [r2]\n\ + ldr r2, _08022CE4 @ =gHitMarker\n\ + ldrb r0, [r4]\n\ + lsls r0, 2\n\ + adds r0, r6\n\ + ldr r1, [r0]\n\ + lsls r1, 28\n\ + ldr r0, [r2]\n\ + bics r0, r1\n\ + str r0, [r2]\n\ + movs r0, 0\n\ + bl Emitcmd42\n\ + ldrb r0, [r4]\n\ + bl MarkBufferBankForExecution\n\ + b _08022D40\n\ + .align 2, 0\n\ +_08022CD8: .4byte gBitTable\n\ +_08022CDC: .4byte gActiveBank\n\ +_08022CE0: .4byte gAbsentBankFlags\n\ +_08022CE4: .4byte gHitMarker\n\ +_08022CE8:\n\ + ldr r6, _08022D1C @ =gSpecialStatuses\n\ + ldrb r0, [r4]\n\ + lsls r1, r0, 2\n\ + adds r1, r0\n\ + lsls r1, 2\n\ + adds r1, r6\n\ + ldrb r0, [r1]\n\ + lsls r0, 25\n\ + cmp r0, 0\n\ + blt _08022D28\n\ + ldr r0, _08022D20 @ =0x02000000\n\ + ldr r1, _08022D24 @ =0x00016068\n\ + adds r0, r1\n\ + ldrb r0, [r0]\n\ + bl sub_8022A3C\n\ + ldrb r1, [r4]\n\ + lsls r0, r1, 2\n\ + adds r0, r1\n\ + lsls r0, 2\n\ + adds r0, r6\n\ + ldrb r1, [r0]\n\ + movs r2, 0x40\n\ + orrs r1, r2\n\ + strb r1, [r0]\n\ + b _08022D40\n\ + .align 2, 0\n\ +_08022D1C: .4byte gSpecialStatuses\n\ +_08022D20: .4byte 0x02000000\n\ +_08022D24: .4byte 0x00016068\n\ +_08022D28:\n\ + movs r0, 0x1\n\ + mov r2, r9\n\ + ands r0, r2\n\ + cmp r0, 0\n\ + bne _08022D40\n\ + movs r0, 0\n\ + movs r1, 0x2\n\ + bl EmitLinkStandbyMsg\n\ + ldrb r0, [r4]\n\ + bl MarkBufferBankForExecution\n\ +_08022D40:\n\ + ldr r6, _08022D90 @ =gBitTable\n\ + ldr r0, [r6, 0x4]\n\ + ands r0, r5\n\ + cmp r0, 0\n\ + beq _08022DF6\n\ + ldr r4, _08022D94 @ =gActiveBank\n\ + movs r0, 0x1\n\ + strb r0, [r4]\n\ + movs r0, 0x1\n\ + movs r1, 0x6\n\ + movs r2, 0x6\n\ + bl sub_8018018\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + beq _08022DA0\n\ + ldr r2, _08022D98 @ =gAbsentBankFlags\n\ + ldrb r0, [r4]\n\ + lsls r0, 2\n\ + adds r0, r6\n\ + ldr r0, [r0]\n\ + ldrb r1, [r2]\n\ + orrs r0, r1\n\ + strb r0, [r2]\n\ + ldr r2, _08022D9C @ =gHitMarker\n\ + ldrb r0, [r4]\n\ + lsls r0, 2\n\ + adds r0, r6\n\ + ldr r1, [r0]\n\ + lsls r1, 28\n\ + ldr r0, [r2]\n\ + bics r0, r1\n\ + str r0, [r2]\n\ + movs r0, 0\n\ + bl Emitcmd42\n\ + ldrb r0, [r4]\n\ + bl MarkBufferBankForExecution\n\ + b _08022DF6\n\ + .align 2, 0\n\ +_08022D90: .4byte gBitTable\n\ +_08022D94: .4byte gActiveBank\n\ +_08022D98: .4byte gAbsentBankFlags\n\ +_08022D9C: .4byte gHitMarker\n\ +_08022DA0:\n\ + ldr r6, _08022DD4 @ =gSpecialStatuses\n\ + ldrb r0, [r4]\n\ + lsls r1, r0, 2\n\ + adds r1, r0\n\ + lsls r1, 2\n\ + adds r1, r6\n\ + ldrb r0, [r1]\n\ + lsls r0, 25\n\ + cmp r0, 0\n\ + blt _08022DE0\n\ + ldr r0, _08022DD8 @ =0x02000000\n\ + ldr r1, _08022DDC @ =0x0001606b\n\ + adds r0, r1\n\ + ldrb r0, [r0]\n\ + bl sub_8022A3C\n\ + ldrb r1, [r4]\n\ + lsls r0, r1, 2\n\ + adds r0, r1\n\ + lsls r0, 2\n\ + adds r0, r6\n\ + ldrb r1, [r0]\n\ + movs r2, 0x40\n\ + orrs r1, r2\n\ + strb r1, [r0]\n\ + b _08022DF6\n\ + .align 2, 0\n\ +_08022DD4: .4byte gSpecialStatuses\n\ +_08022DD8: .4byte 0x02000000\n\ +_08022DDC: .4byte 0x0001606b\n\ +_08022DE0:\n\ + movs r0, 0\n\ + movs r1, 0x2\n\ + bl EmitLinkStandbyMsg\n\ + ldrb r0, [r4]\n\ + bl MarkBufferBankForExecution\n\ + movs r0, 0x2\n\ + mov r2, r9\n\ + orrs r2, r0\n\ + mov r9, r2\n\ +_08022DF6:\n\ + ldr r6, _08022E50 @ =gBitTable\n\ + ldr r0, [r6, 0xC]\n\ + ands r0, r5\n\ + cmp r0, 0\n\ + beq _08022EB8\n\ + ldr r0, [r6, 0x4]\n\ + ands r0, r5\n\ + cmp r0, 0\n\ + bne _08022EB8\n\ + ldr r4, _08022E54 @ =gActiveBank\n\ + movs r0, 0x3\n\ + strb r0, [r4]\n\ + movs r0, 0x3\n\ + movs r1, 0x6\n\ + movs r2, 0x6\n\ + bl sub_8018018\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + beq _08022E60\n\ + ldr r2, _08022E58 @ =gAbsentBankFlags\n\ + ldrb r0, [r4]\n\ + lsls r0, 2\n\ + adds r0, r6\n\ + ldr r0, [r0]\n\ + ldrb r1, [r2]\n\ + orrs r0, r1\n\ + strb r0, [r2]\n\ + ldr r2, _08022E5C @ =gHitMarker\n\ + ldrb r0, [r4]\n\ + lsls r0, 2\n\ + adds r0, r6\n\ + ldr r1, [r0]\n\ + lsls r1, 28\n\ + ldr r0, [r2]\n\ + bics r0, r1\n\ + str r0, [r2]\n\ + movs r0, 0\n\ + bl Emitcmd42\n\ + ldrb r0, [r4]\n\ + bl MarkBufferBankForExecution\n\ + b _08022EB8\n\ + .align 2, 0\n\ +_08022E50: .4byte gBitTable\n\ +_08022E54: .4byte gActiveBank\n\ +_08022E58: .4byte gAbsentBankFlags\n\ +_08022E5C: .4byte gHitMarker\n\ +_08022E60:\n\ + ldr r6, _08022E94 @ =gSpecialStatuses\n\ + ldrb r0, [r4]\n\ + lsls r1, r0, 2\n\ + adds r1, r0\n\ + lsls r1, 2\n\ + adds r1, r6\n\ + ldrb r0, [r1]\n\ + lsls r0, 25\n\ + cmp r0, 0\n\ + blt _08022EA0\n\ + ldr r0, _08022E98 @ =0x02000000\n\ + ldr r1, _08022E9C @ =0x00016069\n\ + adds r0, r1\n\ + ldrb r0, [r0]\n\ + bl sub_8022A3C\n\ + ldrb r1, [r4]\n\ + lsls r0, r1, 2\n\ + adds r0, r1\n\ + lsls r0, 2\n\ + adds r0, r6\n\ + ldrb r1, [r0]\n\ + movs r2, 0x40\n\ + orrs r1, r2\n\ + strb r1, [r0]\n\ + b _08022EB8\n\ + .align 2, 0\n\ +_08022E94: .4byte gSpecialStatuses\n\ +_08022E98: .4byte 0x02000000\n\ +_08022E9C: .4byte 0x00016069\n\ +_08022EA0:\n\ + movs r0, 0x2\n\ + mov r2, r9\n\ + ands r2, r0\n\ + cmp r2, 0\n\ + bne _08022EB8\n\ + movs r0, 0\n\ + movs r1, 0x2\n\ + bl EmitLinkStandbyMsg\n\ + ldrb r0, [r4]\n\ + bl MarkBufferBankForExecution\n\ +_08022EB8:\n\ + ldr r1, _08022EE8 @ =gSpecialStatuses\n\ + ldrb r0, [r1]\n\ + lsls r0, 25\n\ + cmp r0, 0\n\ + blt _08022F0C\n\ + adds r0, r1, 0\n\ + adds r0, 0x28\n\ + ldrb r0, [r0]\n\ + lsls r0, 25\n\ + cmp r0, 0\n\ + blt _08022F0C\n\ + cmp r5, 0\n\ + beq _08022F0C\n\ + ldr r0, _08022EEC @ =gAbsentBankFlags\n\ + ldrb r1, [r0]\n\ + ldr r0, _08022EF0 @ =gBitTable\n\ + ldr r0, [r0]\n\ + ands r1, r0\n\ + cmp r1, 0\n\ + beq _08022EF8\n\ + ldr r1, _08022EF4 @ =gActiveBank\n\ + movs r0, 0x2\n\ + strb r0, [r1]\n\ + b _08022EFC\n\ + .align 2, 0\n\ +_08022EE8: .4byte gSpecialStatuses\n\ +_08022EEC: .4byte gAbsentBankFlags\n\ +_08022EF0: .4byte gBitTable\n\ +_08022EF4: .4byte gActiveBank\n\ +_08022EF8:\n\ + ldr r0, _08022F3C @ =gActiveBank\n\ + strb r1, [r0]\n\ +_08022EFC:\n\ + movs r0, 0\n\ + movs r1, 0x2\n\ + bl EmitLinkStandbyMsg\n\ + ldr r0, _08022F3C @ =gActiveBank\n\ + ldrb r0, [r0]\n\ + bl MarkBufferBankForExecution\n\ +_08022F0C:\n\ + ldr r1, _08022F40 @ =gSpecialStatuses\n\ + ldrb r0, [r1, 0x14]\n\ + lsls r0, 25\n\ + cmp r0, 0\n\ + blt _08022F62\n\ + adds r0, r1, 0\n\ + adds r0, 0x3C\n\ + ldrb r0, [r0]\n\ + lsls r0, 25\n\ + cmp r0, 0\n\ + blt _08022F62\n\ + cmp r5, 0\n\ + beq _08022F62\n\ + ldr r0, _08022F44 @ =gAbsentBankFlags\n\ + ldrb r0, [r0]\n\ + ldr r1, _08022F48 @ =gBitTable\n\ + ldr r1, [r1, 0x4]\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _08022F4C\n\ + ldr r1, _08022F3C @ =gActiveBank\n\ + movs r0, 0x3\n\ + b _08022F50\n\ + .align 2, 0\n\ +_08022F3C: .4byte gActiveBank\n\ +_08022F40: .4byte gSpecialStatuses\n\ +_08022F44: .4byte gAbsentBankFlags\n\ +_08022F48: .4byte gBitTable\n\ +_08022F4C:\n\ + ldr r1, _08022F6C @ =gActiveBank\n\ + movs r0, 0x1\n\ +_08022F50:\n\ + strb r0, [r1]\n\ + movs r0, 0\n\ + movs r1, 0x2\n\ + bl EmitLinkStandbyMsg\n\ + ldr r0, _08022F6C @ =gActiveBank\n\ + ldrb r0, [r0]\n\ + bl MarkBufferBankForExecution\n\ +_08022F62:\n\ + ldr r1, _08022F70 @ =gBattlescriptCurrInstr\n\ + ldr r0, [r1]\n\ + adds r0, 0x6\n\ + str r0, [r1]\n\ + b _08023302\n\ + .align 2, 0\n\ +_08022F6C: .4byte gActiveBank\n\ +_08022F70: .4byte gBattlescriptCurrInstr\n\ +_08022F74:\n\ + cmp r0, 0x6\n\ + beq _08022F7A\n\ + b _08023170\n\ +_08022F7A:\n\ + ldr r0, _08022FF0 @ =gBattleTypeFlags\n\ + ldrh r2, [r0]\n\ + movs r0, 0x40\n\ + ands r0, r2\n\ + cmp r0, 0\n\ + beq _08022F88\n\ + b _0802310C\n\ +_08022F88:\n\ + movs r0, 0x1\n\ + ands r0, r2\n\ + cmp r0, 0\n\ + bne _08022F92\n\ + b _0802310C\n\ +_08022F92:\n\ + ldr r7, _08022FF4 @ =gHitMarker\n\ + ldr r0, [r7]\n\ + lsrs r5, r0, 28\n\ + ldr r4, _08022FF8 @ =gBitTable\n\ + ldr r0, [r4, 0x8]\n\ + ands r0, r5\n\ + cmp r0, 0\n\ + beq _0802303A\n\ + ldr r0, [r4]\n\ + ands r0, r5\n\ + cmp r0, 0\n\ + beq _0802303A\n\ + ldr r6, _08022FFC @ =gActiveBank\n\ + movs r0, 0x2\n\ + strb r0, [r6]\n\ + ldr r0, _08023000 @ =gBattleBufferB\n\ + ldrb r1, [r0, 0x1]\n\ + movs r0, 0x2\n\ + movs r2, 0x6\n\ + bl sub_8018018\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + beq _08023008\n\ + ldr r2, _08023004 @ =gAbsentBankFlags\n\ + ldrb r0, [r6]\n\ + lsls r0, 2\n\ + adds r0, r4\n\ + ldr r0, [r0]\n\ + ldrb r1, [r2]\n\ + orrs r0, r1\n\ + strb r0, [r2]\n\ + ldrb r0, [r6]\n\ + lsls r0, 2\n\ + adds r0, r4\n\ + ldr r1, [r0]\n\ + lsls r1, 28\n\ + ldr r0, [r7]\n\ + bics r0, r1\n\ + str r0, [r7]\n\ + movs r0, 0\n\ + bl Emitcmd42\n\ + ldrb r0, [r6]\n\ + bl MarkBufferBankForExecution\n\ + b _0802303A\n\ + .align 2, 0\n\ +_08022FF0: .4byte gBattleTypeFlags\n\ +_08022FF4: .4byte gHitMarker\n\ +_08022FF8: .4byte gBitTable\n\ +_08022FFC: .4byte gActiveBank\n\ +_08023000: .4byte gBattleBufferB\n\ +_08023004: .4byte gAbsentBankFlags\n\ +_08023008:\n\ + ldr r4, _08023098 @ =gSpecialStatuses\n\ + ldrb r0, [r6]\n\ + lsls r1, r0, 2\n\ + adds r1, r0\n\ + lsls r1, 2\n\ + adds r1, r4\n\ + ldrb r0, [r1]\n\ + lsls r0, 25\n\ + cmp r0, 0\n\ + blt _0802303A\n\ + ldr r0, _0802309C @ =0x02000000\n\ + ldr r1, _080230A0 @ =0x00016068\n\ + adds r0, r1\n\ + ldrb r0, [r0]\n\ + bl sub_8022A3C\n\ + ldrb r1, [r6]\n\ + lsls r0, r1, 2\n\ + adds r0, r1\n\ + lsls r0, 2\n\ + adds r0, r4\n\ + ldrb r1, [r0]\n\ + movs r2, 0x40\n\ + orrs r1, r2\n\ + strb r1, [r0]\n\ +_0802303A:\n\ + ldr r4, _080230A4 @ =gBitTable\n\ + ldr r0, [r4, 0xC]\n\ + ands r0, r5\n\ + cmp r0, 0\n\ + beq _080230EE\n\ + ldr r0, [r4, 0x4]\n\ + ands r5, r0\n\ + cmp r5, 0\n\ + beq _080230EE\n\ + ldr r5, _080230A8 @ =gActiveBank\n\ + movs r0, 0x3\n\ + strb r0, [r5]\n\ + ldr r0, _080230AC @ =gBattleBufferB\n\ + ldr r2, _080230B0 @ =0x00000201\n\ + adds r0, r2\n\ + ldrb r1, [r0]\n\ + movs r0, 0x3\n\ + movs r2, 0x6\n\ + bl sub_8018018\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + beq _080230BC\n\ + ldr r2, _080230B4 @ =gAbsentBankFlags\n\ + ldrb r0, [r5]\n\ + lsls r0, 2\n\ + adds r0, r4\n\ + ldr r0, [r0]\n\ + ldrb r1, [r2]\n\ + orrs r0, r1\n\ + strb r0, [r2]\n\ + ldr r2, _080230B8 @ =gHitMarker\n\ + ldrb r0, [r5]\n\ + lsls r0, 2\n\ + adds r0, r4\n\ + ldr r1, [r0]\n\ + lsls r1, 28\n\ + ldr r0, [r2]\n\ + bics r0, r1\n\ + str r0, [r2]\n\ + movs r0, 0\n\ + bl Emitcmd42\n\ + ldrb r0, [r5]\n\ + bl MarkBufferBankForExecution\n\ + b _080230EE\n\ + .align 2, 0\n\ +_08023098: .4byte gSpecialStatuses\n\ +_0802309C: .4byte 0x02000000\n\ +_080230A0: .4byte 0x00016068\n\ +_080230A4: .4byte gBitTable\n\ +_080230A8: .4byte gActiveBank\n\ +_080230AC: .4byte gBattleBufferB\n\ +_080230B0: .4byte 0x00000201\n\ +_080230B4: .4byte gAbsentBankFlags\n\ +_080230B8: .4byte gHitMarker\n\ +_080230BC:\n\ + ldr r4, _080230FC @ =gSpecialStatuses\n\ + ldrb r0, [r5]\n\ + lsls r1, r0, 2\n\ + adds r1, r0\n\ + lsls r1, 2\n\ + adds r1, r4\n\ + ldrb r0, [r1]\n\ + lsls r0, 25\n\ + cmp r0, 0\n\ + blt _080230EE\n\ + ldr r0, _08023100 @ =0x02000000\n\ + ldr r1, _08023104 @ =0x00016069\n\ + adds r0, r1\n\ + ldrb r0, [r0]\n\ + bl sub_8022A3C\n\ + ldrb r1, [r5]\n\ + lsls r0, r1, 2\n\ + adds r0, r1\n\ + lsls r0, 2\n\ + adds r0, r4\n\ + ldrb r1, [r0]\n\ + movs r2, 0x40\n\ + orrs r1, r2\n\ + strb r1, [r0]\n\ +_080230EE:\n\ + ldr r1, _08023108 @ =gBattlescriptCurrInstr\n\ + ldr r0, [r1]\n\ + adds r0, 0x6\n\ + str r0, [r1]\n\ + mov r12, r1\n\ + b _08023110\n\ + .align 2, 0\n\ +_080230FC: .4byte gSpecialStatuses\n\ +_08023100: .4byte 0x02000000\n\ +_08023104: .4byte 0x00016069\n\ +_08023108: .4byte gBattlescriptCurrInstr\n\ +_0802310C:\n\ + adds r0, r1, 0x6\n\ + str r0, [r6]\n\ +_08023110:\n\ + ldr r0, _08023160 @ =gHitMarker\n\ + ldr r0, [r0]\n\ + lsrs r5, r0, 28\n\ + ldr r1, _08023164 @ =gBank1\n\ + movs r0, 0\n\ + strb r0, [r1]\n\ + ldr r4, _08023168 @ =gBitTable\n\ + ldr r2, [r4]\n\ + ands r2, r5\n\ + ldr r6, _0802316C @ =gNoOfAllBanks\n\ + cmp r2, 0\n\ + bne _0802314C\n\ + adds r7, r6, 0\n\ + ldrb r0, [r6]\n\ + cmp r2, r0\n\ + bcs _0802314C\n\ + adds r3, r1, 0\n\ +_08023132:\n\ + ldrb r0, [r3]\n\ + adds r0, 0x1\n\ + strb r0, [r3]\n\ + ldrb r2, [r3]\n\ + lsls r0, r2, 2\n\ + adds r0, r4\n\ + ldr r0, [r0]\n\ + ands r0, r5\n\ + cmp r0, 0\n\ + bne _0802314C\n\ + ldrb r0, [r7]\n\ + cmp r2, r0\n\ + bcc _08023132\n\ +_0802314C:\n\ + ldrb r0, [r1]\n\ + ldrb r6, [r6]\n\ + cmp r0, r6\n\ + beq _08023156\n\ + b _08023302\n\ +_08023156:\n\ + mov r1, r8\n\ + mov r2, r12\n\ + str r1, [r2]\n\ + b _08023302\n\ + .align 2, 0\n\ +_08023160: .4byte gHitMarker\n\ +_08023164: .4byte gBank1\n\ +_08023168: .4byte gBitTable\n\ +_0802316C: .4byte gNoOfAllBanks\n\ +_08023170:\n\ + movs r0, 0x80\n\ + ands r0, r2\n\ + movs r5, 0x1\n\ + cmp r0, 0\n\ + beq _0802317C\n\ + movs r5, 0\n\ +_0802317C:\n\ + movs r0, 0x7F\n\ + ands r0, r2\n\ + bl GetBattleBank\n\ + lsls r0, 24\n\ + lsrs r7, r0, 24\n\ + ldr r1, _080231A4 @ =gSpecialStatuses\n\ + lsls r0, r7, 2\n\ + adds r0, r7\n\ + lsls r0, 2\n\ + adds r0, r1\n\ + ldrb r0, [r0]\n\ + lsls r0, 25\n\ + cmp r0, 0\n\ + bge _080231A8\n\ + ldr r0, [r6]\n\ + adds r0, 0x6\n\ + str r0, [r6]\n\ + b _08023302\n\ + .align 2, 0\n\ +_080231A4: .4byte gSpecialStatuses\n\ +_080231A8:\n\ + adds r0, r7, 0\n\ + movs r1, 0x6\n\ + movs r2, 0x6\n\ + bl sub_8018018\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + beq _080231F8\n\ + ldr r2, _080231E8 @ =gActiveBank\n\ + strb r7, [r2]\n\ + ldr r3, _080231EC @ =gAbsentBankFlags\n\ + ldr r4, _080231F0 @ =gBitTable\n\ + ldrb r0, [r2]\n\ + lsls r0, 2\n\ + adds r0, r4\n\ + ldr r0, [r0]\n\ + ldrb r1, [r3]\n\ + orrs r0, r1\n\ + strb r0, [r3]\n\ + ldr r3, _080231F4 @ =gHitMarker\n\ + ldrb r0, [r2]\n\ + lsls r0, 2\n\ + adds r0, r4\n\ + ldr r1, [r0]\n\ + lsls r1, 28\n\ + ldr r0, [r3]\n\ + bics r0, r1\n\ + str r0, [r3]\n\ + mov r0, r8\n\ + str r0, [r6]\n\ + b _08023302\n\ + .align 2, 0\n\ +_080231E8: .4byte gActiveBank\n\ +_080231EC: .4byte gAbsentBankFlags\n\ +_080231F0: .4byte gBitTable\n\ +_080231F4: .4byte gHitMarker\n\ +_080231F8:\n\ + ldr r4, _080232A0 @ =gActiveBank\n\ + strb r7, [r4]\n\ + ldr r3, _080232A4 @ =0x02000000\n\ + ldrb r0, [r4]\n\ + ldr r2, _080232A8 @ =0x00016064\n\ + adds r1, r0, r2\n\ + adds r1, r3\n\ + ldr r2, _080232AC @ =gBattlePartyID\n\ + lsls r0, 1\n\ + adds r0, r2\n\ + ldrh r0, [r0]\n\ + strb r0, [r1]\n\ + ldrb r1, [r4]\n\ + movs r0, 0x2\n\ + eors r0, r1\n\ + ldr r1, _080232B0 @ =0x00016068\n\ + adds r0, r1\n\ + adds r0, r3\n\ + ldrb r2, [r0]\n\ + ldrb r1, [r4]\n\ + lsls r0, r1, 1\n\ + adds r0, r1\n\ + ldr r1, _080232B4 @ =0x0001606c\n\ + adds r3, r1\n\ + adds r0, r3\n\ + str r0, [sp]\n\ + movs r0, 0\n\ + adds r1, r5, 0\n\ + movs r3, 0\n\ + bl EmitChoosePokemon\n\ + ldrb r0, [r4]\n\ + bl MarkBufferBankForExecution\n\ + ldr r0, [r6]\n\ + adds r0, 0x6\n\ + str r0, [r6]\n\ + ldrb r0, [r4]\n\ + bl GetBankIdentity\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + bne _0802325A\n\ + ldr r1, _080232B8 @ =gBattleResults\n\ + ldrb r0, [r1, 0x2]\n\ + cmp r0, 0xFE\n\ + bhi _0802325A\n\ + adds r0, 0x1\n\ + strb r0, [r1, 0x2]\n\ +_0802325A:\n\ + ldr r0, _080232BC @ =gBattleTypeFlags\n\ + ldrh r1, [r0]\n\ + movs r0, 0x40\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _080232C4\n\ + ldr r1, _080232A0 @ =gActiveBank\n\ + movs r0, 0\n\ + strb r0, [r1]\n\ + ldr r0, _080232C0 @ =gNoOfAllBanks\n\ + ldrb r0, [r0]\n\ + cmp r0, 0\n\ + beq _08023302\n\ + adds r4, r1, 0\n\ +_08023276:\n\ + ldrb r0, [r4]\n\ + cmp r0, r7\n\ + beq _0802328A\n\ + movs r0, 0\n\ + movs r1, 0x2\n\ + bl EmitLinkStandbyMsg\n\ + ldrb r0, [r4]\n\ + bl MarkBufferBankForExecution\n\ +_0802328A:\n\ + ldrb r0, [r4]\n\ + adds r0, 0x1\n\ + strb r0, [r4]\n\ + ldr r1, _080232C0 @ =gNoOfAllBanks\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + ldrb r1, [r1]\n\ + cmp r0, r1\n\ + bcc _08023276\n\ + b _08023302\n\ + .align 2, 0\n\ +_080232A0: .4byte gActiveBank\n\ +_080232A4: .4byte 0x02000000\n\ +_080232A8: .4byte 0x00016064\n\ +_080232AC: .4byte gBattlePartyID\n\ +_080232B0: .4byte 0x00016068\n\ +_080232B4: .4byte 0x0001606c\n\ +_080232B8: .4byte gBattleResults\n\ +_080232BC: .4byte gBattleTypeFlags\n\ +_080232C0: .4byte gNoOfAllBanks\n\ +_080232C4:\n\ + adds r0, r7, 0\n\ + bl GetBankIdentity\n\ + movs r1, 0x1\n\ + eors r0, r1\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + bl GetBankByPlayerAI\n\ + ldr r4, _08023310 @ =gActiveBank\n\ + strb r0, [r4]\n\ + ldr r0, _08023314 @ =gAbsentBankFlags\n\ + ldrb r1, [r0]\n\ + ldr r2, _08023318 @ =gBitTable\n\ + ldrb r3, [r4]\n\ + lsls r0, r3, 2\n\ + adds r0, r2\n\ + ldr r0, [r0]\n\ + ands r1, r0\n\ + cmp r1, 0\n\ + beq _080232F4\n\ + movs r0, 0x2\n\ + eors r3, r0\n\ + strb r3, [r4]\n\ +_080232F4:\n\ + movs r0, 0\n\ + movs r1, 0x2\n\ + bl EmitLinkStandbyMsg\n\ + ldrb r0, [r4]\n\ + bl MarkBufferBankForExecution\n\ +_08023302:\n\ + add sp, 0x4\n\ + pop {r3,r4}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_08023310: .4byte gActiveBank\n\ +_08023314: .4byte gAbsentBankFlags\n\ +_08023318: .4byte gBitTable\n\ + .syntax divided"); +} + +static void atk51_switch_handle_order(void) +{ + int i; + if (gBattleExecBuffer) + return; + + gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + switch (BSScriptRead8(gBattlescriptCurrInstr + 2)) + { + case 0: + for (i = 0; i < gNoOfAllBanks; i++) + { + if (gBattleBufferB[i][0] == 0x22) + ewram[i + 0x16068] = gBattleBufferB[i][1]; + } + break; + case 1: + if (!(gBattleTypeFlags & BATTLE_TYPE_MULTI)) + sub_8012258(gActiveBank); + break; + case 2: + gBattleCommunication[0] = gBattleBufferB[gActiveBank][1]; + ewram[gActiveBank + 0x16068] = gBattleBufferB[gActiveBank][1]; + if (gBattleTypeFlags & BATTLE_TYPE_MULTI) + { + + ewram[(gActiveBank) * 3 + (0x1606C + 0)] &= 0xF; + ewram[(gActiveBank) * 3 + (0x1606C + 0)] |= (gBattleBufferB[gActiveBank][2] & 0xF0); + ewram[(gActiveBank) * 3 + (0x1606C + 1)] = gBattleBufferB[gActiveBank][3]; + + ewram[(gActiveBank ^ 2) * 3 + (0x1606C + 0)] &= (0xF0); + ewram[(gActiveBank ^ 2) * 3 + (0x1606C + 0)] |= (gBattleBufferB[gActiveBank][2] & 0xF0) >> 4; + ewram[(gActiveBank ^ 2) * 3 + (0x1606C + 2)] = gBattleBufferB[gActiveBank][3]; + } + else + sub_8012258(gActiveBank); + + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 6; + gBattleTextBuff1[2] = gBattleMons[gBankAttacker].species; + gBattleTextBuff1[3] = gBattleMons[gBankAttacker].species >> 8; + gBattleTextBuff1[4] = 0xFF; + + gBattleTextBuff2[0] = 0xFD; + gBattleTextBuff2[1] = 7; + gBattleTextBuff2[2] = gActiveBank; + gBattleTextBuff2[3] = gBattleBufferB[gActiveBank][1]; + gBattleTextBuff2[4] = 0xFF; + break; + } + gBattlescriptCurrInstr += 3; +} + +static void atk52_switch_in_effects(void) +{ + int i; + + gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + sub_80157C4(gActiveBank); + gHitMarker &= ~(HITMARKER_FAINTED(gActiveBank)); + gSpecialStatuses[gActiveBank].flag40 = 0; + + if (!(gSideAffecting[GetBankSide(gActiveBank)] & SIDE_STATUS_SPIKES_DAMAGED) && (gSideAffecting[GetBankSide(gActiveBank)] & SIDE_STATUS_SPIKES) + && gBattleMons[gActiveBank].type1 != TYPE_FLYING && gBattleMons[gActiveBank].type2 != TYPE_FLYING && gBattleMons[gActiveBank].ability != ABILITY_LEVITATE) + { + u8 spikesDmg; + + gSideAffecting[GetBankSide(gActiveBank)] |= SIDE_STATUS_SPIKES_DAMAGED; + + spikesDmg = (5 - gSideTimer[GetBankSide(gActiveBank)].spikesAmount) * 2; + gBattleMoveDamage = gBattleMons[gActiveBank].maxHP / (spikesDmg); + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + + BATTLE_STRUCT->scriptingActive = gActiveBank; + b_movescr_stack_push_cursor(); + + if (BSScriptRead8(gBattlescriptCurrInstr + 1) == 0) + gBattlescriptCurrInstr = gUnknown_081D919F; + else if (BSScriptRead8(gBattlescriptCurrInstr + 1) == 1) + gBattlescriptCurrInstr = gUnknown_081D9171; + else + gBattlescriptCurrInstr = gUnknown_081D91CD; + } + else + { + if (gBattleMons[gActiveBank].ability == ABILITY_TRUANT) + { + gDisableStructs[gActiveBank].truantCounter = 1; + } + + if (AbilityBattleEffects(0, gActiveBank, 0, 0, 0) == 0 && ItemBattleEffects(0, gActiveBank, 0) == 0) + { + gSideAffecting[GetBankSide(gActiveBank)] &= ~(SIDE_STATUS_SPIKES_DAMAGED); + + for (i = 0; i < gNoOfAllBanks; i++) + { + if (gTurnOrder[i] == gActiveBank) + gUnknown_02024A76[i] = 0xC; + } + + for (i = 0; i < gNoOfAllBanks; i++) + { + *(HP_ON_SWITCHOUT + GetBankSide(i)) = gBattleMons[i].hp; + } + + if (BSScriptRead8(gBattlescriptCurrInstr + 1) == 5) + { + u32 hitmark = gHitMarker >> 0x1C; + gBank1++; + while (1) + { + if (hitmark & gBitTable[gBank1] && !(gAbsentBankFlags & gBitTable[gBank1])) + break; + if (gBank1 >= gNoOfAllBanks) + break; + gBank1++; + } + } + gBattlescriptCurrInstr += 2; + } + } +} + +static void atk53_trainer_slide(void) +{ + if (!BSScriptRead8(gBattlescriptCurrInstr + 1)) + gActiveBank = GetBankByPlayerAI(0); + else + gActiveBank = GetBankByPlayerAI(1); + + EmitTrainerSlide(0); + MarkBufferBankForExecution(gActiveBank); + gBattlescriptCurrInstr += 2; +} + +static void atk54_effectiveness_sound(void) +{ + gActiveBank = gBankAttacker; + EmitEffectivenessSound(0, BS2ScriptRead16(gBattlescriptCurrInstr + 1)); + MarkBufferBankForExecution(gActiveBank); + gBattlescriptCurrInstr += 3; +} + +static void atk55_play_sound(void) +{ + gActiveBank = gBankAttacker; + Emitcmd44(0, BS2ScriptRead16(gBattlescriptCurrInstr + 1)); + MarkBufferBankForExecution(gActiveBank); + gBattlescriptCurrInstr += 3; +} + +static void atk56_fainting_cry(void) +{ + gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + EmitFaintingCry(0); + MarkBufferBankForExecution(gActiveBank); + gBattlescriptCurrInstr += 2; +} + +static void atk57(void) +{ + gActiveBank = GetBankByPlayerAI(0); + Emitcmd55(0, gBattleOutcome); + MarkBufferBankForExecution(gActiveBank); + gBattlescriptCurrInstr += 1; +} + +static void atk58_return_to_ball(void) +{ + gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + EmitReturnPokeToBall(0, 1); + MarkBufferBankForExecution(gActiveBank); + gBattlescriptCurrInstr += 2; +} + +void atk59_learnmove_inbattle(void) +{ + u8* loc1 = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + u8* loc2 = BSScriptReadPtr(gBattlescriptCurrInstr + 5); + + u16 ret = MonTryLearningNewMove(&gPlayerParty[BATTLE_STRUCT->expGetterID], BSScriptRead8(gBattlescriptCurrInstr + 9)); + while (ret == 0xFFFE) + ret = MonTryLearningNewMove(&gPlayerParty[BATTLE_STRUCT->expGetterID], 0); + + if (ret == 0) + { + gBattlescriptCurrInstr = loc2; + } + else if (ret == 0xFFFF) + { + gBattlescriptCurrInstr += 10; + } + else + { + gActiveBank = GetBankByPlayerAI(0); + if (gBattlePartyID[gActiveBank] == BATTLE_STRUCT->expGetterID && !(gBattleMons[gActiveBank].status2 & STATUS2_TRANSFORMED)) + GiveMoveToBattleMon(&gBattleMons[gActiveBank], ret); + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) //what is else if + { + gActiveBank = GetBankByPlayerAI(2); + if (gBattlePartyID[gActiveBank] == BATTLE_STRUCT->expGetterID && !(gBattleMons[gActiveBank].status2 & STATUS2_TRANSFORMED)) + GiveMoveToBattleMon(&gBattleMons[gActiveBank], ret); + } + gBattlescriptCurrInstr = loc1; + } +} + +void sub_8023A80(void) +{ + sub_802BBD4(0x18, 8, 0x1D, 0xD, 0); + InitWindow(&gUnknown_03004210, gUnknown_08400D7A, 0x100, 0x19, 0x9); + sub_8002F44(&gUnknown_03004210); + sub_814A5C0(0, 0xFFFF, 0xC, 0x2D9F, 0x20); +} + +void sub_8023AD8(void) +{ + sub_802BBD4(0x18, 8, 0x1D, 0xD, 1); + DestroyMenuCursor(); +} + +static void atk5A(void) +{ + gActiveBank = 0; + switch (BATTLE_STRUCT->atk5A_StateTracker) + { + case 0: + sub_8023A80(); + BATTLE_STRUCT->atk5A_StateTracker++; + gBattleCommunication[1] = 0; + sub_802BC6C(); + break; + case 1: + if (gMain.newKeys & DPAD_UP && gBattleCommunication[1] != 0) + { + PlaySE(SE_SELECT); + nullsub_6(); + gBattleCommunication[1] = 0; + sub_802BC6C(); + } + if (gMain.newKeys & DPAD_DOWN && gBattleCommunication[1] == 0) + { + PlaySE(SE_SELECT); + nullsub_6(); + gBattleCommunication[1] = 1; + sub_802BC6C(); + } + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + if (gBattleCommunication[1] == 0) + { + sub_8023AD8(); + BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); + BATTLE_STRUCT->atk5A_StateTracker++; + return; + } + goto state_tracker_4; + } + else if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + state_tracker_4: + BATTLE_STRUCT->atk5A_StateTracker = 4; + } + break; + case 2: + if (!gPaletteFade.active) + { + sub_809D9F0(gPlayerParty, BATTLE_STRUCT->expGetterID, gPlayerPartyCount - 1, ReshowBattleScreenAfterMenu, gMoveToLearn); + BATTLE_STRUCT->atk5A_StateTracker++; + } + break; + case 3: + if (!gPaletteFade.active && gMain.callback2 == sub_800F808) + { + u8 move_pos = sub_809FA30(); + if (move_pos == 4) + { + BATTLE_STRUCT->atk5A_StateTracker = 4; + } + else + { + u16 move = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_MOVE1 + move_pos); + if (IsHMMove2(move)) + { + PrepareStringBattle(0x13F, gActiveBank); + BATTLE_STRUCT->atk5A_StateTracker = 5; + } + else + { + u8 *ptr; + + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + ptr = gBattleTextBuff2; + { + ptr[0] = 0xFD; + ptr[1] = 2; + ptr[2] = move; + ptr[3] = ((move & 0xFF00) >> 8); + ptr += 4; + } + ptr[0] = 0xFF; + RemoveMonPPBonus(&gPlayerParty[BATTLE_STRUCT->expGetterID], move_pos); + SetMonMoveSlot(&gPlayerParty[BATTLE_STRUCT->expGetterID], gMoveToLearn, move_pos); + if (gBattlePartyID[0] == BATTLE_STRUCT->expGetterID && !(gBattleMons[0].status2 & STATUS2_TRANSFORMED) + && !(gDisableStructs[0].unk18_b & gBitTable[move_pos])) + { + RemoveBattleMonPPBonus(&gBattleMons[0], move_pos); + SetBattleMonMoveSlot(&gBattleMons[0], gMoveToLearn, move_pos); + } + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && gBattlePartyID[2] == BATTLE_STRUCT->expGetterID && !(gBattleMons[2].status2 & STATUS2_TRANSFORMED) + && !(gDisableStructs[2].unk18_b & gBitTable[move_pos])) + { + RemoveBattleMonPPBonus(&gBattleMons[2], move_pos); + SetBattleMonMoveSlot(&gBattleMons[2], gMoveToLearn, move_pos); + } + } + } + } + break; + case 4: + sub_8023AD8(); + gBattlescriptCurrInstr += 5; + break; + case 5: + if (gBattleExecBuffer == 0) + { + BATTLE_STRUCT->atk5A_StateTracker = 2; + } + break; + } +} + +static void atk5B_80256E0(void) +{ + switch (BATTLE_STRUCT->atk5A_StateTracker) + { + case 0: + sub_8023A80(); + BATTLE_STRUCT->atk5A_StateTracker++; + gBattleCommunication[1] = 0; + sub_802BC6C(); + break; + case 1: + if (gMain.newKeys & DPAD_UP && gBattleCommunication[1] != 0) + { + PlaySE(SE_SELECT); + nullsub_6(); + gBattleCommunication[1] = 0; + sub_802BC6C(); + } + if (gMain.newKeys & DPAD_DOWN && gBattleCommunication[1] == 0) + { + PlaySE(SE_SELECT); + nullsub_6(); + gBattleCommunication[1] = 1; + sub_802BC6C(); + } + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + if (gBattleCommunication[1] != 0) + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + else + gBattlescriptCurrInstr += 5; + sub_8023AD8(); + } + else if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + sub_8023AD8(); + } + } +} + +static void atk5C_hitanimation(void) +{ + gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + if (gBattleMoveFlags & MOVESTATUS_NOEFFECT) + gBattlescriptCurrInstr += 2; + else if (!(gHitMarker & HITMARKER_IGNORE_SUBSTITUTE) || !(gBattleMons[gActiveBank].status2 & STATUS2_SUBSTITUTE) || gDisableStructs[gActiveBank].substituteHP == 0) + { + EmitHitAnimation(0); + MarkBufferBankForExecution(gActiveBank); + gBattlescriptCurrInstr += 2; + } + else + gBattlescriptCurrInstr += 2; +} + +#define MONEY_UNKNOWN ((*(u8*)(0x02017000 + 0x94))) + +#ifdef NONMATCHING +static void atk5D_getmoneyreward(void) +{ + int i = 0; + u8 r5 = 0; + u32 money_to_give; + if (gTrainerBattleOpponent == 0x400) + { + money_to_give = 2 * BATTLE_STRUCT->moneyMultiplier * MONEY_UNKNOWN; + } + else + { + switch(gTrainers[gTrainerBattleOpponent].partyFlags) + { + case 0: + { + const struct PokeTrainerData1 *data = &gTrainers[gTrainerBattleOpponent].party->noItemNoMoves; + r5 = data[gTrainers[gTrainerBattleOpponent].partySize - 1].lvl; + } + break; + case 2: + { + const struct PokeTrainerData2 *data = &gTrainers[gTrainerBattleOpponent].party->itemNoMoves; + r5 = data[gTrainers[gTrainerBattleOpponent].partySize - 1].lvl; + } + break; + case 1: + case 3: + { + const struct PokeTrainerData3 *data = &gTrainers[gTrainerBattleOpponent].party->itemMoves; + r5 = data[gTrainers[gTrainerBattleOpponent].partySize - 1].lvl; + } + break; + } + for (; gTrainerMoney[i * 4] != 0xFF && gTrainerMoney[i * 4 + 1] != gTrainers[gTrainerBattleOpponent].trainerClass ; i++) {} + + money_to_give = (r5 << 2) * BATTLE_STRUCT->moneyMultiplier; + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + money_to_give = 2 * gTrainerMoney[i * 4 + 1] * money_to_give; + else + money_to_give = 1 * gTrainerMoney[i * 4 + 1] * money_to_give; + } + + AddMoney(&gSaveBlock1.money, money_to_give); + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 1; + gBattleTextBuff1[2] = 4; + gBattleTextBuff1[3] = 5; + gBattleTextBuff1[4] = BYTE0(money_to_give); + gBattleTextBuff1[5] = BYTE1(money_to_give); + gBattleTextBuff1[6] = BYTE2(money_to_give); + gBattleTextBuff1[7] = BYTE3(money_to_give); + gBattleTextBuff1[8] = 0xFF; + + gBattlescriptCurrInstr += 1; +} +#else +__attribute__((naked)) +static void atk5D_getmoneyreward(void) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r8\n\ + push {r7}\n\ + movs r6, 0\n\ + movs r5, 0\n\ + ldr r0, _08024048 @ =gTrainerBattleOpponent\n\ + ldrh r2, [r0]\n\ + movs r1, 0x80\n\ + lsls r1, 3\n\ + cmp r2, r1\n\ + bne _08024058\n\ + ldr r0, _0802404C @ =0x02017000\n\ + adds r1, r0, 0\n\ + adds r1, 0x94\n\ + ldrb r2, [r1]\n\ + ldr r1, _08024050 @ =0xfffff056\n\ + adds r0, r1\n\ + ldrb r1, [r0]\n\ + lsls r0, r1, 2\n\ + adds r0, r1\n\ + lsls r0, 2\n\ + adds r4, r2, 0\n\ + muls r4, r0\n\ + ldr r0, _08024054 @ =gSaveBlock1 + 0x490\n\ + mov r8, r0\n\ + b _08024140\n\ + .align 2, 0\n\ +_08024048: .4byte gTrainerBattleOpponent\n\ +_0802404C: .4byte 0x02017000\n\ +_08024050: .4byte 0xfffff056\n\ +_08024054: .4byte gSaveBlock1 + 0x490\n\ +_08024058:\n\ + ldr r2, _08024074 @ =gTrainers\n\ + ldrh r1, [r0]\n\ + lsls r0, r1, 2\n\ + adds r0, r1\n\ + lsls r3, r0, 3\n\ + adds r4, r3, r2\n\ + ldrb r1, [r4]\n\ + cmp r1, 0x1\n\ + beq _080240AE\n\ + cmp r1, 0x1\n\ + bgt _08024078\n\ + cmp r1, 0\n\ + beq _08024082\n\ + b _080240C4\n\ + .align 2, 0\n\ +_08024074: .4byte gTrainers\n\ +_08024078:\n\ + cmp r1, 0x2\n\ + beq _08024098\n\ + cmp r1, 0x3\n\ + beq _080240AE\n\ + b _080240C4\n\ +_08024082:\n\ + adds r0, r2, 0\n\ + adds r0, 0x24\n\ + adds r0, r3, r0\n\ + ldr r1, [r0]\n\ + adds r0, r4, 0\n\ + adds r0, 0x20\n\ + ldrb r0, [r0]\n\ + lsls r0, 3\n\ + adds r0, r1\n\ + subs r0, 0x8\n\ + b _080240C2\n\ +_08024098:\n\ + adds r0, r2, 0\n\ + adds r0, 0x24\n\ + adds r0, r3, r0\n\ + ldr r1, [r0]\n\ + adds r0, r4, 0\n\ + adds r0, 0x20\n\ + ldrb r0, [r0]\n\ + lsls r0, 3\n\ + adds r0, r1\n\ + subs r0, 0x8\n\ + b _080240C2\n\ +_080240AE:\n\ + adds r0, r2, 0\n\ + adds r0, 0x24\n\ + adds r0, r3, r0\n\ + ldr r1, [r0]\n\ + adds r0, r4, 0\n\ + adds r0, 0x20\n\ + ldrb r0, [r0]\n\ + lsls r0, 4\n\ + adds r0, r1\n\ + subs r0, 0x10\n\ +_080240C2:\n\ + ldrb r5, [r0, 0x2]\n\ +_080240C4:\n\ + ldr r0, _08024120 @ =gTrainerMoney\n\ + lsls r1, r6, 2\n\ + adds r3, r1, r0\n\ + ldrb r1, [r3]\n\ + mov r12, r0\n\ + lsls r4, r5, 2\n\ + ldr r5, _08024124 @ =0x02000000\n\ + ldr r7, _08024128 @ =gBattleTypeFlags\n\ + ldr r0, _0802412C @ =gSaveBlock1 + 0x490\n\ + mov r8, r0\n\ + cmp r1, 0xFF\n\ + beq _080240FE\n\ + ldr r2, _08024130 @ =gTrainers\n\ + ldr r0, _08024134 @ =gTrainerBattleOpponent\n\ + ldrh r1, [r0]\n\ + lsls r0, r1, 2\n\ + adds r0, r1\n\ + lsls r0, 3\n\ + adds r0, r2\n\ + ldrb r2, [r0, 0x1]\n\ + adds r1, r3, 0\n\ +_080240EE:\n\ + ldrb r0, [r1]\n\ + cmp r0, r2\n\ + beq _080240FE\n\ + adds r1, 0x4\n\ + adds r6, 0x1\n\ + ldrb r0, [r1]\n\ + cmp r0, 0xFF\n\ + bne _080240EE\n\ +_080240FE:\n\ + ldr r1, _08024138 @ =0x00016056\n\ + adds r0, r5, r1\n\ + ldrb r0, [r0]\n\ + adds r3, r4, 0\n\ + muls r3, r0\n\ + lsls r0, r6, 2\n\ + add r0, r12\n\ + ldrb r2, [r0, 0x1]\n\ + ldrh r1, [r7]\n\ + movs r0, 0x1\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _0802413C\n\ + lsls r0, r2, 1\n\ + adds r4, r3, 0\n\ + muls r4, r0\n\ + b _08024140\n\ + .align 2, 0\n\ +_08024120: .4byte gTrainerMoney\n\ +_08024124: .4byte 0x02000000\n\ +_08024128: .4byte gBattleTypeFlags\n\ +_0802412C: .4byte gSaveBlock1 + 0x490\n\ +_08024130: .4byte gTrainers\n\ +_08024134: .4byte gTrainerBattleOpponent\n\ +_08024138: .4byte 0x00016056\n\ +_0802413C:\n\ + adds r4, r3, 0\n\ + muls r4, r2\n\ +_08024140:\n\ + mov r0, r8\n\ + adds r1, r4, 0\n\ + bl AddMoney\n\ + ldr r1, _0802418C @ =gBattleTextBuff1\n\ + movs r0, 0xFD\n\ + strb r0, [r1]\n\ + movs r0, 0x1\n\ + strb r0, [r1, 0x1]\n\ + movs r0, 0x4\n\ + strb r0, [r1, 0x2]\n\ + movs r0, 0x5\n\ + strb r0, [r1, 0x3]\n\ + strb r4, [r1, 0x4]\n\ + movs r0, 0xFF\n\ + lsls r0, 8\n\ + ands r0, r4\n\ + lsrs r0, 8\n\ + strb r0, [r1, 0x5]\n\ + movs r0, 0xFF\n\ + lsls r0, 16\n\ + ands r0, r4\n\ + lsrs r0, 16\n\ + strb r0, [r1, 0x6]\n\ + lsrs r0, r4, 24\n\ + strb r0, [r1, 0x7]\n\ + movs r0, 0xFF\n\ + strb r0, [r1, 0x8]\n\ + ldr r1, _08024190 @ =gBattlescriptCurrInstr\n\ + ldr r0, [r1]\n\ + adds r0, 0x1\n\ + str r0, [r1]\n\ + pop {r3}\n\ + mov r8, r3\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_0802418C: .4byte gBattleTextBuff1\n\ +_08024190: .4byte gBattlescriptCurrInstr\n\ + .syntax divided"); +} +#endif //NONMATCHING + +static void atk5E_8025A70(void) +{ + gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + switch (gBattleCommunication[0]) + { + case 0: + EmitGetAttributes(0, REQUEST_ALL_BATTLE, 0); + MarkBufferBankForExecution(gActiveBank); + gBattleCommunication[0]++; + break; + case 1: + if (gBattleExecBuffer == 0) + { + int i; + struct BattlePokemon* bufferPoke = (struct BattlePokemon*) &gBattleBufferB[gActiveBank][4]; + for (i = 0; i < 4; i++) + { + gBattleMons[gActiveBank].moves[i] = bufferPoke->moves[i]; + gBattleMons[gActiveBank].pp[i] = bufferPoke->pp[i]; + } + gBattlescriptCurrInstr += 2; + } + break; + } +} + +static void atk5F_8025B24(void) +{ + gActiveBank = gBankAttacker; + gBankAttacker = gBankTarget; + gBankTarget = gActiveBank; + //what is xor... + if (gHitMarker & HITMARKER_PURSUIT_TRAP) + gHitMarker &= ~(HITMARKER_PURSUIT_TRAP); + else + gHitMarker |= HITMARKER_PURSUIT_TRAP; + gBattlescriptCurrInstr++; +} + +static void atk60_increment_gamestat(void) +{ + if (GetBankSide(gBankAttacker) == 0) + { + IncrementGameStat(BSScriptRead8(gBattlescriptCurrInstr + 1)); + } + gBattlescriptCurrInstr += 2; +} + +struct hp_status +{ + u16 hp; + u32 status; +}; + +static void atk61_8025BA4(void) +{ + int i; + struct Pokemon* party; + struct hp_status hpStatus[6]; + if (gBattleExecBuffer) + return; + + gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + if (GetBankSide(gActiveBank) == 0) + party = gPlayerParty; + else + party = gEnemyParty; + + for (i = 0; i < 6; i++) + { + if (GetMonData(&party[i], MON_DATA_SPECIES2) == 0 || GetMonData(&party[i], MON_DATA_SPECIES2) == SPECIES_EGG) + { + hpStatus[i].hp = 0xFFFF; + hpStatus[i].status = 0; + } + else + { + hpStatus[i].hp = GetMonData(&party[i], MON_DATA_HP); + hpStatus[i].status = GetMonData(&party[i], MON_DATA_STATUS); + } + } + Emitcmd48(0, (u8*)(hpStatus), 1); + MarkBufferBankForExecution(gActiveBank); + gBattlescriptCurrInstr += 2; +} + +static void atk62_08025C6C(void) +{ + gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + Emitcmd49(0); + MarkBufferBankForExecution(gActiveBank); + gBattlescriptCurrInstr += 2; +} + +static void atk63_jumptorandomattack(void) +{ + if (BSScriptRead8(gBattlescriptCurrInstr + 1)) + gCurrentMove = gRandomMove; + else + gUnknown_02024BE8 = gCurrentMove = gRandomMove; + gBattlescriptCurrInstr = gBattleScriptsEffectsTable[gBattleMoves[gCurrentMove].effect]; +} + +static void atk64_statusanimation(void) +{ + if (gBattleExecBuffer == 0) + { + gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + if (!(gStatuses3[gActiveBank] & STATUS3_SEMI_INVULNERABLE) && gDisableStructs[gActiveBank].substituteHP == 0 && !(gHitMarker & HITMARKER_NO_ANIMATIONS)) + { + EmitStatusAnimation(0, 0, gBattleMons[gActiveBank].status1); + MarkBufferBankForExecution(gActiveBank); + } + gBattlescriptCurrInstr += 2; + } +} + +static void atk65_status2animation(void) +{ + if (gBattleExecBuffer == 0) + { + u32 possible_to_anim; + gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + possible_to_anim = BSScriptRead32(gBattlescriptCurrInstr + 2); + if (!(gStatuses3[gActiveBank] & STATUS3_SEMI_INVULNERABLE) && gDisableStructs[gActiveBank].substituteHP == 0 && !(gHitMarker & HITMARKER_NO_ANIMATIONS)) + { + EmitStatusAnimation(0, 1, gBattleMons[gActiveBank].status2 & possible_to_anim); + MarkBufferBankForExecution(gActiveBank); + } + gBattlescriptCurrInstr += 6; + } +} + +static void atk66_chosenstatusanimation(void) +{ + if (gBattleExecBuffer == 0) + { + u32 status; + gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + status = BSScriptRead32(gBattlescriptCurrInstr + 3); + if (!(gStatuses3[gActiveBank] & STATUS3_SEMI_INVULNERABLE) && gDisableStructs[gActiveBank].substituteHP == 0 && !(gHitMarker & HITMARKER_NO_ANIMATIONS)) + { + EmitStatusAnimation(0, BSScriptRead8(gBattlescriptCurrInstr + 2), status); + MarkBufferBankForExecution(gActiveBank); + } + gBattlescriptCurrInstr += 7; + } +} + +static void atk67_8025ECC(void) +{ + switch (gBattleCommunication[0]) + { + case 0: + sub_8023A80(); + gBattleCommunication[0]++; + gBattleCommunication[1] = 0; + sub_802BC6C(); + break; + case 1: + if (gMain.newKeys & DPAD_UP && gBattleCommunication[1] != 0) + { + PlaySE(SE_SELECT); + nullsub_6(); + gBattleCommunication[1] = 0; + sub_802BC6C(); + } + if (gMain.newKeys & DPAD_DOWN && gBattleCommunication[1] == 0) + { + PlaySE(SE_SELECT); + nullsub_6(); + gBattleCommunication[1] = 1; + sub_802BC6C(); + } + if (gMain.newKeys & B_BUTTON) + { + gBattleCommunication[1] = 1; + PlaySE(SE_SELECT); + sub_8023AD8(); + gBattlescriptCurrInstr++; + } + else if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + sub_8023AD8(); + gBattlescriptCurrInstr++; + } + break; + } +} + +static void atk68_80246A0(void) +{ + int i; + for (i = 0; i < gNoOfAllBanks; i++) + { + gUnknown_02024A76[i] = 0xC; + } + gBattlescriptCurrInstr++; +} + +static void atk69_dmg_adjustment2(void) //literally a copy of atk07 except theres no rand dmg modifier... +{ + u8 hold_effect, quality; + if (gBattleMons[gBankTarget].item == ITEM_ENIGMA_BERRY) + hold_effect = gEnigmaBerries[gBankTarget].holdEffect, quality = gEnigmaBerries[gBankTarget].holdEffectParam; + else + { + hold_effect = ItemId_GetHoldEffect(gBattleMons[gBankTarget].item); + quality = ItemId_GetHoldEffectParam(gBattleMons[gBankTarget].item); + } + + gStringBank = gBankTarget; + + if (hold_effect == HOLD_EFFECT_FOCUS_BAND && (Random() % 100) < quality) + { + RecordItemBattle(gBankTarget, hold_effect); + gSpecialStatuses[gBankTarget].focusBanded = 1; + } + if (gBattleMons[gBankTarget].status2 & STATUS2_SUBSTITUTE) + goto END; + if (gBattleMoves[gCurrentMove].effect != EFFECT_FALSE_SWIPE && !gProtectStructs[gBankTarget].endured + && !gSpecialStatuses[gBankTarget].focusBanded) + goto END; + if (gBattleMons[gBankTarget].hp > gBattleMoveDamage) + goto END; + + gBattleMoveDamage = gBattleMons[gBankTarget].hp - 1; + + if (gProtectStructs[gBankTarget].endured) + { + gBattleMoveFlags |= MOVESTATUS_ENDURED; + goto END; + } + if (gSpecialStatuses[gBankTarget].focusBanded) + { + gBattleMoveFlags |= MOVESTATUS_HUNGON; + gLastUsedItem = gBattleMons[gBankTarget].item; + } + + END: + gBattlescriptCurrInstr++; +} + +void atk6A_removeitem(void) +{ + gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + #define USED_HELD_ITEMS(bank) (*(u16 *)&ewram[0x160CC + 2 * (bank)]) + USED_HELD_ITEMS(gActiveBank) = gBattleMons[gActiveBank].item; + + gBattleMons[gActiveBank].item = 0; + EmitSetAttributes(0, REQUEST_HELDITEM_BATTLE, 0, 2, &gBattleMons[gActiveBank].item); + MarkBufferBankForExecution(gActiveBank); + gBattlescriptCurrInstr += 2; +} + +static void atk6B_atknameinbuff1(void) +{ + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 7; + gBattleTextBuff1[2] = gBankAttacker; + gBattleTextBuff1[3] = gBattlePartyID[gBankAttacker]; + gBattleTextBuff1[4] = 0xFF; + gBattlescriptCurrInstr++; +} + +#ifdef NONMATCHING +static void atk6C_lvlbox_display(void) +{ + u8 r1 = 0; + u8 r7 = 0; + switch (BATTLE_STRUCT->atk6C_statetracker) + { + case 0: + sub_802BBD4(0xB, 0, 0x1D, 0x7, r1); + StringCopy(gStringVar4, gUnknown_08400D9F); + + } +} + +#else +__attribute__((naked)) +static void atk6C_lvlbox_display(void) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + sub sp, 0x4\n\ + movs r1, 0\n\ + movs r7, 0\n\ + ldr r0, _08024928 @ =0x02000000\n\ + mov r10, r0\n\ + ldr r4, _0802492C @ =0x0001609c\n\ + add r4, r10\n\ + ldrb r0, [r4]\n\ + cmp r0, 0x1\n\ + bne _0802491C\n\ + b _08024AF4\n\ +_0802491C:\n\ + cmp r0, 0x1\n\ + bgt _08024930\n\ + cmp r0, 0\n\ + beq _0802493E\n\ + b _08024C38\n\ + .align 2, 0\n\ +_08024928: .4byte 0x02000000\n\ +_0802492C: .4byte 0x0001609c\n\ +_08024930:\n\ + cmp r0, 0x2\n\ + bne _08024936\n\ + b _08024C04\n\ +_08024936:\n\ + cmp r0, 0x3\n\ + bne _0802493C\n\ + b _08024C30\n\ +_0802493C:\n\ + b _08024C38\n\ +_0802493E:\n\ + str r1, [sp]\n\ + movs r0, 0xB\n\ + movs r1, 0\n\ + movs r2, 0x1D\n\ + movs r3, 0x7\n\ + bl sub_802BBD4\n\ + ldr r0, _0802499C @ =gStringVar4\n\ + ldr r1, _080249A0 @ =gUnknown_08400D9F\n\ + bl StringCopy\n\ + adds r5, r0, 0\n\ + movs r1, 0\n\ + mov r8, r1\n\ +_0802495A:\n\ + movs r2, 0\n\ + mov r9, r2\n\ + ldr r0, _080249A4 @ =gUnknown_0840165C\n\ + mov r1, r8\n\ + lsls r4, r1, 2\n\ + adds r0, r4, r0\n\ + ldr r1, [r0]\n\ + adds r0, r5, 0\n\ + bl StringAppend\n\ + adds r5, r0, 0\n\ + ldr r0, _080249A8 @ =0x02000000\n\ + ldr r2, _080249AC @ =0x00016018\n\ + adds r0, r2\n\ + ldrb r1, [r0]\n\ + movs r0, 0x64\n\ + muls r0, r1\n\ + ldr r1, _080249B0 @ =gPlayerParty\n\ + adds r0, r1\n\ + ldr r1, _080249B4 @ =gLevelUpStatBoxStats\n\ + add r1, r8\n\ + ldrb r1, [r1]\n\ + bl GetMonData\n\ + lsls r0, 16\n\ + lsrs r1, r0, 16\n\ + mov r0, r8\n\ + cmp r0, 0x5\n\ + bhi _08024A1A\n\ + ldr r0, _080249B8 @ =_080249BC\n\ + adds r0, r4, r0\n\ + ldr r0, [r0]\n\ + mov pc, r0\n\ + .align 2, 0\n\ +_0802499C: .4byte gStringVar4\n\ +_080249A0: .4byte gUnknown_08400D9F\n\ +_080249A4: .4byte gUnknown_0840165C\n\ +_080249A8: .4byte 0x02000000\n\ +_080249AC: .4byte 0x00016018\n\ +_080249B0: .4byte gPlayerParty\n\ +_080249B4: .4byte gLevelUpStatBoxStats\n\ +_080249B8: .4byte _080249BC\n\ + .align 2, 0\n\ +_080249BC:\n\ + .4byte _080249D4\n\ + .4byte _080249E0\n\ + .4byte _080249EC\n\ + .4byte _080249F8\n\ + .4byte _08024A04\n\ + .4byte _08024A10\n\ +_080249D4:\n\ + ldr r0, _080249DC @ =0x02017180\n\ + ldrh r0, [r0]\n\ + b _08024A14\n\ + .align 2, 0\n\ +_080249DC: .4byte 0x02017180\n\ +_080249E0:\n\ + ldr r0, _080249E8 @ =0x02017180\n\ + ldrh r0, [r0, 0x8]\n\ + b _08024A14\n\ + .align 2, 0\n\ +_080249E8: .4byte 0x02017180\n\ +_080249EC:\n\ + ldr r0, _080249F4 @ =0x02017180\n\ + ldrh r0, [r0, 0x2]\n\ + b _08024A14\n\ + .align 2, 0\n\ +_080249F4: .4byte 0x02017180\n\ +_080249F8:\n\ + ldr r0, _08024A00 @ =0x02017180\n\ + ldrh r0, [r0, 0xA]\n\ + b _08024A14\n\ + .align 2, 0\n\ +_08024A00: .4byte 0x02017180\n\ +_08024A04:\n\ + ldr r0, _08024A0C @ =0x02017180\n\ + ldrh r0, [r0, 0x4]\n\ + b _08024A14\n\ + .align 2, 0\n\ +_08024A0C: .4byte 0x02017180\n\ +_08024A10:\n\ + ldr r0, _08024A54 @ =0x02017180\n\ + ldrh r0, [r0, 0x6]\n\ +_08024A14:\n\ + subs r0, r1, r0\n\ + lsls r0, 16\n\ + lsrs r7, r0, 16\n\ +_08024A1A:\n\ + lsls r0, r7, 16\n\ + asrs r0, 16\n\ + cmp r0, 0\n\ + bge _08024A2C\n\ + negs r0, r0\n\ + lsls r0, 16\n\ + lsrs r7, r0, 16\n\ + movs r1, 0x1\n\ + add r9, r1\n\ +_08024A2C:\n\ + movs r0, 0xFC\n\ + strb r0, [r5]\n\ + movs r0, 0x13\n\ + strb r0, [r5, 0x1]\n\ + movs r1, 0x1\n\ + mov r2, r8\n\ + ands r1, r2\n\ + lsls r0, r1, 3\n\ + adds r0, r1\n\ + adds r0, 0x5\n\ + lsls r0, 3\n\ + adds r0, 0x6\n\ + strb r0, [r5, 0x2]\n\ + adds r5, 0x3\n\ + mov r0, r9\n\ + cmp r0, 0\n\ + beq _08024A5C\n\ + ldr r1, _08024A58 @ =gUnknown_08400DAC\n\ + b _08024A5E\n\ + .align 2, 0\n\ +_08024A54: .4byte 0x02017180\n\ +_08024A58: .4byte gUnknown_08400DAC\n\ +_08024A5C:\n\ + ldr r1, _08024AA4 @ =gUnknown_08400DAA\n\ +_08024A5E:\n\ + adds r0, r5, 0\n\ + bl StringCopy\n\ + adds r5, r0, 0\n\ + movs r6, 0xFC\n\ + strb r6, [r5]\n\ + movs r4, 0x14\n\ + strb r4, [r5, 0x1]\n\ + movs r0, 0x6\n\ + strb r0, [r5, 0x2]\n\ + adds r5, 0x3\n\ + lsls r1, r7, 16\n\ + asrs r1, 16\n\ + adds r0, r5, 0\n\ + movs r2, 0x1\n\ + movs r3, 0x2\n\ + bl ConvertIntToDecimalStringN\n\ + adds r5, r0, 0\n\ + strb r6, [r5]\n\ + strb r4, [r5, 0x1]\n\ + movs r0, 0\n\ + strb r0, [r5, 0x2]\n\ + adds r5, 0x3\n\ + movs r0, 0x1\n\ + mov r1, r8\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _08024AA8\n\ + movs r0, 0xFE\n\ + strb r0, [r5]\n\ + movs r0, 0xFF\n\ + strb r0, [r5, 0x1]\n\ + adds r5, 0x1\n\ + b _08024AB8\n\ + .align 2, 0\n\ +_08024AA4: .4byte gUnknown_08400DAA\n\ +_08024AA8:\n\ + strb r6, [r5]\n\ + movs r0, 0x11\n\ + strb r0, [r5, 0x1]\n\ + movs r0, 0x8\n\ + strb r0, [r5, 0x2]\n\ + adds r5, 0x3\n\ + movs r0, 0xFF\n\ + strb r0, [r5]\n\ +_08024AB8:\n\ + movs r2, 0x1\n\ + add r8, r2\n\ + mov r0, r8\n\ + cmp r0, 0x5\n\ + bgt _08024AC4\n\ + b _0802495A\n\ +_08024AC4:\n\ + ldr r4, _08024AE4 @ =gUnknown_03004210\n\ + ldr r1, _08024AE8 @ =gStringVar4\n\ + adds r2, 0xFF\n\ + movs r0, 0x1\n\ + str r0, [sp]\n\ + adds r0, r4, 0\n\ + movs r3, 0xC\n\ + bl InitWindow\n\ + adds r0, r4, 0\n\ + bl sub_8002F44\n\ + ldr r1, _08024AEC @ =0x02000000\n\ + ldr r2, _08024AF0 @ =0x0001609c\n\ + adds r1, r2\n\ + b _08024BEA\n\ + .align 2, 0\n\ +_08024AE4: .4byte gUnknown_03004210\n\ +_08024AE8: .4byte gStringVar4\n\ +_08024AEC: .4byte 0x02000000\n\ +_08024AF0: .4byte 0x0001609c\n\ +_08024AF4:\n\ + ldr r0, _08024B94 @ =gMain\n\ + ldrh r0, [r0, 0x2E]\n\ + cmp r0, 0\n\ + bne _08024AFE\n\ + b _08024C38\n\ +_08024AFE:\n\ + movs r0, 0x5\n\ + bl PlaySE\n\ + ldr r0, _08024B98 @ =gStringVar4\n\ + ldr r1, _08024B9C @ =gUnknown_08400D9F\n\ + bl StringCopy\n\ + adds r5, r0, 0\n\ + movs r0, 0\n\ + mov r8, r0\n\ + mov r9, r0\n\ + movs r6, 0xFC\n\ + movs r7, 0x14\n\ + ldr r1, _08024BA0 @ =0x00016018\n\ + add r10, r1\n\ +_08024B1C:\n\ + ldr r1, _08024BA4 @ =gUnknown_0840165C\n\ + mov r2, r8\n\ + lsls r0, r2, 2\n\ + adds r0, r1\n\ + ldr r1, [r0]\n\ + adds r0, r5, 0\n\ + bl StringAppend\n\ + adds r5, r0, 0\n\ + mov r0, r10\n\ + ldrb r1, [r0]\n\ + movs r0, 0x64\n\ + muls r0, r1\n\ + ldr r1, _08024BA8 @ =gPlayerParty\n\ + adds r0, r1\n\ + ldr r1, _08024BAC @ =gLevelUpStatBoxStats\n\ + add r1, r8\n\ + ldrb r1, [r1]\n\ + bl GetMonData\n\ + adds r1, r0, 0\n\ + strb r6, [r5]\n\ + movs r0, 0x13\n\ + strb r0, [r5, 0x1]\n\ + movs r4, 0x1\n\ + mov r2, r8\n\ + ands r4, r2\n\ + lsls r0, r4, 3\n\ + adds r0, r4\n\ + adds r0, 0x5\n\ + lsls r0, 3\n\ + adds r0, 0x6\n\ + strb r0, [r5, 0x2]\n\ + adds r5, 0x3\n\ + strb r6, [r5]\n\ + strb r7, [r5, 0x1]\n\ + movs r0, 0x6\n\ + strb r0, [r5, 0x2]\n\ + adds r5, 0x3\n\ + lsls r1, 16\n\ + asrs r1, 16\n\ + adds r0, r5, 0\n\ + movs r2, 0x1\n\ + movs r3, 0x3\n\ + bl ConvertIntToDecimalStringN\n\ + adds r5, r0, 0\n\ + strb r6, [r5]\n\ + strb r7, [r5, 0x1]\n\ + mov r0, r9\n\ + strb r0, [r5, 0x2]\n\ + adds r5, 0x3\n\ + cmp r4, 0\n\ + beq _08024BB0\n\ + movs r0, 0xFE\n\ + strb r0, [r5]\n\ + movs r0, 0xFF\n\ + strb r0, [r5, 0x1]\n\ + adds r5, 0x1\n\ + b _08024BC0\n\ + .align 2, 0\n\ +_08024B94: .4byte gMain\n\ +_08024B98: .4byte gStringVar4\n\ +_08024B9C: .4byte gUnknown_08400D9F\n\ +_08024BA0: .4byte 0x00016018\n\ +_08024BA4: .4byte gUnknown_0840165C\n\ +_08024BA8: .4byte gPlayerParty\n\ +_08024BAC: .4byte gLevelUpStatBoxStats\n\ +_08024BB0:\n\ + strb r6, [r5]\n\ + movs r0, 0x11\n\ + strb r0, [r5, 0x1]\n\ + movs r0, 0x8\n\ + strb r0, [r5, 0x2]\n\ + adds r5, 0x3\n\ + movs r0, 0xFF\n\ + strb r0, [r5]\n\ +_08024BC0:\n\ + movs r1, 0x1\n\ + add r8, r1\n\ + mov r2, r8\n\ + cmp r2, 0x5\n\ + ble _08024B1C\n\ + ldr r4, _08024BF4 @ =gUnknown_03004210\n\ + ldr r1, _08024BF8 @ =gStringVar4\n\ + movs r2, 0x80\n\ + lsls r2, 1\n\ + movs r0, 0x1\n\ + str r0, [sp]\n\ + adds r0, r4, 0\n\ + movs r3, 0xC\n\ + bl InitWindow\n\ + adds r0, r4, 0\n\ + bl sub_8002F44\n\ + ldr r1, _08024BFC @ =0x02000000\n\ + ldr r0, _08024C00 @ =0x0001609c\n\ + adds r1, r0\n\ +_08024BEA:\n\ + ldrb r0, [r1]\n\ + adds r0, 0x1\n\ + strb r0, [r1]\n\ + b _08024C38\n\ + .align 2, 0\n\ +_08024BF4: .4byte gUnknown_03004210\n\ +_08024BF8: .4byte gStringVar4\n\ +_08024BFC: .4byte 0x02000000\n\ +_08024C00: .4byte 0x0001609c\n\ +_08024C04:\n\ + ldr r0, _08024C2C @ =gMain\n\ + ldrh r0, [r0, 0x2E]\n\ + cmp r0, 0\n\ + beq _08024C38\n\ + movs r0, 0x5\n\ + bl PlaySE\n\ + movs r0, 0x1\n\ + str r0, [sp]\n\ + movs r0, 0xB\n\ + movs r1, 0\n\ + movs r2, 0x1D\n\ + movs r3, 0x7\n\ + bl sub_802BBD4\n\ + ldrb r0, [r4]\n\ + adds r0, 0x1\n\ + strb r0, [r4]\n\ + b _08024C38\n\ + .align 2, 0\n\ +_08024C2C: .4byte gMain\n\ +_08024C30:\n\ + ldr r1, _08024C48 @ =gBattlescriptCurrInstr\n\ + ldr r0, [r1]\n\ + adds r0, 0x1\n\ + str r0, [r1]\n\ +_08024C38:\n\ + add sp, 0x4\n\ + pop {r3-r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_08024C48: .4byte gBattlescriptCurrInstr\n\ + .syntax divided"); +} + +#endif + +static void atk6D_set_sentpokes_values(void) +{ + sub_80156DC(); + gBattlescriptCurrInstr++; +} + +static void atk6E_set_atk_to_player0(void) +{ + gBankAttacker = GetBankByPlayerAI(0); + gBattlescriptCurrInstr++; +} + +static void atk6F_set_visible(void) +{ + gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + EmitSpriteInvisibility(0, 0); + MarkBufferBankForExecution(gActiveBank); + gBattlescriptCurrInstr += 2; +} + +static void atk70_record_ability(void) +{ + gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + RecordAbilityBattle(gActiveBank, gLastUsedAbility); + gBattlescriptCurrInstr += 1; //buggy, should be += 2, one byte for command, one byte for argument... +} + +void sub_8024CEC(void) +{ + gBattleTextBuff2[0] = 0xFD; + gBattleTextBuff2[1] = 2; + gBattleTextBuff2[2] = (gMoveToLearn); + gBattleTextBuff2[3] = uBYTE1_16(gMoveToLearn); + gBattleTextBuff2[4] = 0xFF; +} + +static void atk71_buffer_move_to_learn(void) +{ + sub_8024CEC(); + gBattlescriptCurrInstr++; +} + +static void atk72_jump_if_can_run_frombattle(void) +{ + if (sub_8014AB8(gBank1)) + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + else + gBattlescriptCurrInstr += 5; +} + +static void atk73_hp_thresholds(void) +{ + u8 opposing_bank; + s32 result; + if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE)) + { + gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + opposing_bank = gActiveBank ^ 1; + + result = gBattleMons[opposing_bank].hp * 100 / gBattleMons[opposing_bank].maxHP; + if (result == 0) + result = 1; + + if (result > 69 || !gBattleMons[opposing_bank].hp) + BATTLE_STRUCT->hpScale = 0; + else if (result > 39) + BATTLE_STRUCT->hpScale = 1; + else if (result > 9) + BATTLE_STRUCT->hpScale = 2; + else + BATTLE_STRUCT->hpScale = 3; + } + + gBattlescriptCurrInstr += 2; +} + +static void atk74_hp_thresholds2(void) +{ + u8 opposing_bank; + u8 hp_switchout; + s32 result; + if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE)) + { + gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + opposing_bank = gActiveBank ^ 1; + hp_switchout = ewram[2 * GetBankSide(opposing_bank) + 0x160bc]; //BATTLE_STRUCT->HP_OnSwitchout[GetBankSide(opposing_bank)]; + result = (hp_switchout - gBattleMons[opposing_bank].hp) * 100 / hp_switchout; + + if (gBattleMons[opposing_bank].hp >= hp_switchout) + BATTLE_STRUCT->hpScale = 0; + else if (result <= 29) + BATTLE_STRUCT->hpScale = 1; + else if (result <= 69) + BATTLE_STRUCT->hpScale = 2; + else + BATTLE_STRUCT->hpScale = 3; + } + + gBattlescriptCurrInstr += 2; +} + +static void atk75_8026A58(void) +{ + gBankInMenu = gBankAttacker; + sub_803E1B0(&gEnemyParty[gBattlePartyID[gBankAttacker]], gLastUsedItem, gBattlePartyID[gBankAttacker], 0, 1); + gBattlescriptCurrInstr += 1; +} + +static void atk76_various(void) +{ + gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + switch (BSScriptRead8(gBattlescriptCurrInstr + 2)) + { + case 0: + CancelMultiTurnMoves(gActiveBank); + break; + case 1: + { + u8 side; + gBankAttacker = gBankTarget; + side = GetBankSide(gBankAttacker) ^ 1; + if (gSideTimer[side].followmeTimer && gBattleMons[gSideTimer[side].followmeTarget].hp) + gBankTarget = gSideTimer[side].followmeTarget; + else + gBankTarget = gActiveBank; + } + break; + case 2: + gBattleCommunication[0] = CanRunFromBattle(); + break; + case 3: + gBankTarget = GetMoveTarget(gCurrentMove, 0); + break; + case 4: + if (gHitMarker & HITMARKER_FAINTED(gActiveBank)) + gBattleCommunication[0] = 1; + else + gBattleCommunication[0] = 0; + break; + case 5: + gSpecialStatuses[gActiveBank].intimidatedPoke = 0; + gSpecialStatuses[gActiveBank].traced = 0; + break; + case 6: + { + int i; + u16* choiced_move; + if (gBattlePartyID[0] == BATTLE_STRUCT->expGetterID) + goto ACTIVE_0; + if (gBattlePartyID[2] != BATTLE_STRUCT->expGetterID) + break; + if (gBattlePartyID[0] == gBattlePartyID[2]) + { + ACTIVE_0: + gActiveBank = 0; + } + else + gActiveBank = 2; + + choiced_move = (u16*)(&ewram[gActiveBank * 2 + 0x160e8]); + for (i = 0; i < 4; i++) + { + if (gBattleMons[gActiveBank].moves[i] == *choiced_move) + break; + } + if (i == 4) + *choiced_move = 0; + } + break; + } + + gBattlescriptCurrInstr += 3; +} + +static void atk77_setprotect(void) //protect and endure +{ + bool8 not_last_turn = 1; + u16 last_move = gUnknown_02024C4C[gBankAttacker]; + + if (last_move != MOVE_PROTECT && last_move != MOVE_DETECT && last_move != MOVE_ENDURE) + gDisableStructs[gBankAttacker].protectUses = 0; + if (gCurrentMoveTurn == (gNoOfAllBanks - 1)) + not_last_turn = 0; + + if (sProtectSuccessRates[gDisableStructs[gBankAttacker].protectUses] > Random() && not_last_turn) + { + if (gBattleMoves[gCurrentMove].effect == EFFECT_PROTECT) + { + gProtectStructs[gBankAttacker].protected = 1; + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + } + if (gBattleMoves[gCurrentMove].effect == EFFECT_ENDURE) //what is else if + { + gProtectStructs[gBankAttacker].endured = 1; + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + } + gDisableStructs[gBankAttacker].protectUses++; + } + else + { + gDisableStructs[gBankAttacker].protectUses = 0; + gBattleCommunication[MULTISTRING_CHOOSER] = 2; + gBattleMoveFlags |= MOVESTATUS_MISSED; + } + + gBattlescriptCurrInstr++; +} + +static void atk78_faintifabilitynotdamp(void) +{ + if (gBattleExecBuffer) + return; + + for (gBankTarget = 0; gBankTarget < gNoOfAllBanks; gBankTarget++) + { + if (gBattleMons[gBankTarget].ability == ABILITY_DAMP) + break; + } + + if (gBankTarget == gNoOfAllBanks) + { + gActiveBank = gBankAttacker; + gBattleMoveDamage = gBattleMons[gActiveBank].hp; + EmitHealthBarUpdate(0, 0x7FFF); + MarkBufferBankForExecution(gActiveBank); + gBattlescriptCurrInstr++; + + for (gBankTarget = 0; gBankTarget < gNoOfAllBanks; gBankTarget++) + { + if (gBankTarget == gBankAttacker) + continue; + if (!(gAbsentBankFlags & gBitTable[gBankTarget])) + break; + } + } + else + { + gLastUsedAbility = ABILITY_DAMP; + RecordAbilityBattle(gBankTarget, gBattleMons[gBankTarget].ability); + gBattlescriptCurrInstr = gUnknown_081D9834; + } +} + +static void atk79_setatkhptozero(void) +{ + if (gBattleExecBuffer) + return; + + gActiveBank = gBankAttacker; + gBattleMons[gActiveBank].hp = 0; + EmitSetAttributes(0, REQUEST_HP_BATTLE, 0, 2, &gBattleMons[gActiveBank].hp); + MarkBufferBankForExecution(gActiveBank); + + gBattlescriptCurrInstr++; +} + +static void atk7A_jumpwhiletargetvalid(void) //used by intimidate to loop through all targets +{ + u8* jump_loc = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + { + for (gBankTarget++; ; gBankTarget++) + { + if (gBankTarget == gBankAttacker) + continue; + if (!(gAbsentBankFlags & gBitTable[gBankTarget])) + break; + } + + if (gBankTarget >= gNoOfAllBanks) + gBattlescriptCurrInstr += 5; + else + gBattlescriptCurrInstr = jump_loc; + } + else + gBattlescriptCurrInstr += 5; +} + +static void atk7B_healhalfHP_if_possible(void) +{ + u8* fail_loc = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + + if (BSScriptRead8(gBattlescriptCurrInstr + 5) == 1) + gBankTarget = gBankAttacker; + + gBattleMoveDamage = gBattleMons[gBankTarget].maxHP / 2; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + gBattleMoveDamage *= -1; + + if (gBattleMons[gBankTarget].hp == gBattleMons[gBankTarget].maxHP) + gBattlescriptCurrInstr = fail_loc; + else + gBattlescriptCurrInstr += 6; +} + +static void atk7C_8025508(void) +{ + u16 r7 = ewram[gBankAttacker * 2 + 0x160ac] | (ewram[gBankAttacker * 2 + 0x160ad] << 8); + u16 r6 = ewram[gBankAttacker * 4 + 0x16100] | (ewram[gBankAttacker * 4 + 0x16101] << 8); + u16 r5 = ewram[gBankAttacker * 4 + 0x16102] | (ewram[gBankAttacker * 4 + 0x16103] << 8); + + if (r7 !=0 && r7 != 0xFFFF) + { + gHitMarker &= ~(HITMARKER_ATTACKSTRING_PRINTED); + gCurrentMove = r7; + gBankTarget = GetMoveTarget(gCurrentMove, 0); + gBattlescriptCurrInstr = gBattleScriptsEffectsTable[gBattleMoves[gCurrentMove].effect]; + } + else if (r6 != 0 && r5 != 0 && r6 != 0xFFFF && r5 != 0xFFFF) + { + gHitMarker &= ~(HITMARKER_ATTACKSTRING_PRINTED); + if (Random() & 1) + gCurrentMove = r6; + else + gCurrentMove = r5; + gBankTarget = GetMoveTarget(gCurrentMove, 0); + gBattlescriptCurrInstr = gBattleScriptsEffectsTable[gBattleMoves[gCurrentMove].effect]; + } + else if (r6 != 0 && r6 != 0xFFFF) + { + gHitMarker &= ~(HITMARKER_ATTACKSTRING_PRINTED); + gCurrentMove = r6; + gBankTarget = GetMoveTarget(gCurrentMove, 0); + gBattlescriptCurrInstr = gBattleScriptsEffectsTable[gBattleMoves[gCurrentMove].effect]; + } + else if (r5 != 0 && r5 != 0xFFFF) + { + gHitMarker &= ~(HITMARKER_ATTACKSTRING_PRINTED); + gCurrentMove = r5; + gBankTarget = GetMoveTarget(gCurrentMove, 0); + gBattlescriptCurrInstr = gBattleScriptsEffectsTable[gBattleMoves[gCurrentMove].effect]; + } + else + { + gSpecialStatuses[gBankAttacker].flag20 = 1; + gBattlescriptCurrInstr++; + } +} + +static void atk7D_set_rain(void) +{ + if (gBattleWeather & WEATHER_RAIN_ANY) + { + gBattleMoveFlags |= MOVESTATUS_MISSED; + gBattleCommunication[MULTISTRING_CHOOSER] = 2; + } + else + { + gBattleWeather = WEATHER_RAIN_TEMPORARY; + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + gWishFutureKnock.weatherDuration = 5; + } + gBattlescriptCurrInstr++; +} + +static void atk7E_setreflect(void) +{ + if (gSideAffecting[GetBankIdentity(gBankAttacker) & 1] & SIDE_STATUS_REFLECT) + { + gBattleMoveFlags |= MOVESTATUS_MISSED; + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + } + else + { + gSideAffecting[GetBankIdentity(gBankAttacker) & 1] |= SIDE_STATUS_REFLECT; + gSideTimer[GetBankIdentity(gBankAttacker) & 1].reflectTimer = 5; + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && CountAliveMons(1) == 2) + gBattleCommunication[MULTISTRING_CHOOSER] = 2; + else + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + } + gBattlescriptCurrInstr++; +} + +static void atk7F_setseeded(void) +{ + if (gBattleMoveFlags & MOVESTATUS_NOEFFECT || gStatuses3[gBankTarget] & STATUS3_LEECHSEED) + { + gBattleMoveFlags |= MOVESTATUS_MISSED; + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + } + else if (gBattleMons[gBankTarget].type1 == TYPE_GRASS || gBattleMons[gBankTarget].type2 == TYPE_GRASS) + { + gBattleMoveFlags |= MOVESTATUS_MISSED; + gBattleCommunication[MULTISTRING_CHOOSER] = 2; + } + else + { + gStatuses3[gBankTarget] |= gBankAttacker; + gStatuses3[gBankTarget] |= STATUS3_LEECHSEED; + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + } + + gBattlescriptCurrInstr++; +} + +static void atk80_manipulatedamage(void) +{ + switch (BSScriptRead8(gBattlescriptCurrInstr + 1)) + { + case 0: + gBattleMoveDamage *= -1; + break; + case 1: + gBattleMoveDamage /= 2; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + if ((gBattleMons[gBankTarget].maxHP / 2) < gBattleMoveDamage) + gBattleMoveDamage = gBattleMons[gBankTarget].maxHP / 2; + break; + case 2: + gBattleMoveDamage *= 2; + break; + } + + gBattlescriptCurrInstr += 2; +} + +static void atk81_setrest(void) +{ + u8* fail_loc = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + gActiveBank = gBankTarget = gBankAttacker; + gBattleMoveDamage = gBattleMons[gBankTarget].maxHP * (-1); + if (gBattleMons[gBankTarget].hp == gBattleMons[gBankTarget].maxHP) + gBattlescriptCurrInstr = fail_loc; + else + { + if (gBattleMons[gBankTarget].status1 & ((u8)(~STATUS_SLEEP))) + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + else + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + + gBattleMons[gBankTarget].status1 = 3; + EmitSetAttributes(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBank].status1); + MarkBufferBankForExecution(gActiveBank); + gBattlescriptCurrInstr += 5; + } +} + +static void atk82_jumpifnotfirstturn(void) +{ + u8* jump_loc = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + + if (gDisableStructs[gBankAttacker].isFirstTurn) + gBattlescriptCurrInstr += 5; + else + gBattlescriptCurrInstr = jump_loc; +} + +static void atk83_nop(void) +{ + gBattlescriptCurrInstr++; +} + +bool8 UproarWakeUpCheck(u8 bank) +{ + int i; + for (i = 0; i < gNoOfAllBanks; i++) + { + if (!(gBattleMons[i].status2 & STATUS2_UPROAR) || gBattleMons[bank].ability == ABILITY_SOUNDPROOF) //wtf gamefreak, you should check this only once, not every time in a loop... + continue; + BATTLE_STRUCT->scriptingActive = i; + if (gBankTarget == 0xFF) + gBankTarget = i; + else if (gBankTarget == i) + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + else + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + break; + } + if (i == gNoOfAllBanks) + return 0; + else + return 1; +} + +static void atk84_jump_if_cant_sleep(void) +{ + u8* jump_loc = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + if (UproarWakeUpCheck(gBankTarget)) + gBattlescriptCurrInstr = jump_loc; + else if (gBattleMons[gBankTarget].ability == ABILITY_INSOMNIA || gBattleMons[gBankTarget].ability == ABILITY_VITAL_SPIRIT) + { + gLastUsedAbility = gBattleMons[gBankTarget].ability; + gBattleCommunication[MULTISTRING_CHOOSER] = 2; + gBattlescriptCurrInstr = jump_loc; + RecordAbilityBattle(gBankTarget, gLastUsedAbility); + } + else + { + gBattlescriptCurrInstr += 5; + } +} + +static void atk85_stockpile(void) +{ + if (gDisableStructs[gBankAttacker].stockpileCounter == 3) + { + gBattleMoveFlags |= MOVESTATUS_MISSED; + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + } + else + { + gDisableStructs[gBankAttacker].stockpileCounter++; + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 1; + gBattleTextBuff1[2] = 1; + gBattleTextBuff1[3] = 1; + gBattleTextBuff1[4] = gDisableStructs[gBankAttacker].stockpileCounter; + gBattleTextBuff1[5] = 0xFF; + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + } + gBattlescriptCurrInstr++; +} + +static void atk86_stockpiletobasedamage(void) +{ + u8* jump_loc = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + if (gDisableStructs[gBankAttacker].stockpileCounter == 0) + { + gBattlescriptCurrInstr = jump_loc; + } + else + { + if (gBattleCommunication[6] != 1) + { + gBattleMoveDamage = CalculateBaseDamage(&gBattleMons[gBankAttacker], &gBattleMons[gBankTarget], gCurrentMove, + gSideAffecting[GetBankIdentity(gBankTarget) & 1], 0, + 0, gBankAttacker, gBankTarget) + * gDisableStructs[gBankAttacker].stockpileCounter; + BATTLE_STRUCT->animTurn = gDisableStructs[gBankAttacker].stockpileCounter; + + if (gProtectStructs[gBankAttacker].helpingHand) + gBattleMoveDamage = gBattleMoveDamage * 15 / 10; + } + gDisableStructs[gBankAttacker].stockpileCounter = 0; + gBattlescriptCurrInstr += 5; + } +} + +static void atk87_stockpiletohpheal(void) +{ + u8* jump_loc = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + if (gDisableStructs[gBankAttacker].stockpileCounter == 0) + { + gBattlescriptCurrInstr = jump_loc; + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + } + else if (gBattleMons[gBankAttacker].maxHP == gBattleMons[gBankAttacker].hp) + { + gDisableStructs[gBankAttacker].stockpileCounter = 0; + gBattlescriptCurrInstr = jump_loc; + gBankTarget = gBankAttacker; + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + } + else + { + gBattleMoveDamage = gBattleMons[gBankAttacker].maxHP / (1 << (3 - gDisableStructs[gBankAttacker].stockpileCounter)); + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + gBattleMoveDamage *= -1; + BATTLE_STRUCT->animTurn = gDisableStructs[gBankAttacker].stockpileCounter; + gDisableStructs[gBankAttacker].stockpileCounter = 0; + gBattlescriptCurrInstr += 5; + gBankTarget = gBankAttacker; + } +} + +static void atk88_negativedamage(void) +{ + gBattleMoveDamage = -(gHP_dealt / 2); + if (gBattleMoveDamage == 0) + gBattleMoveDamage = -1; + gBattlescriptCurrInstr++; +} + +#ifdef NONMATCHING +u8 ChangeStatBuffs(s8 statchanger, u8 stat, u8 flags, u8* bs_ptr) +{ + u8 r9 = 0; + u8 r10 = 0; + u8 index; + if (flags & 0x40) + gActiveBank = gBankAttacker; + else + gActiveBank = gBankTarget; + flags &= ~(0x40); + if (flags & 0x80) + r9++; + flags &= ~(0x80); + if (flags & 0x20) + r10++; + flags &= ~(0x20); + + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 5; + gBattleTextBuff1[2] = stat; + gBattleTextBuff1[3] = 0xFF; + + if ((statchanger << 0x18) < 0) //stat decrease + { + if (gSideTimer[GetBankIdentity(gActiveBank) & 1].mistTimer && !r9 && gCurrentMove != MOVE_CURSE) + { + if (flags == 1) + { + if (gSpecialStatuses[gActiveBank].statloweringflag) + gBattlescriptCurrInstr = bs_ptr; + else + { + b_movescr_stack_push(bs_ptr); + BATTLE_STRUCT->scriptingActive = gActiveBank; + gBattlescriptCurrInstr = BattleScript_MistProtected; + gSpecialStatuses[gActiveBank].statloweringflag = 1; + } + } + return 1; + } + else if (gCurrentMove != MOVE_CURSE && r10 != 1 && JumpIfMoveAffectedByProtect(0)) + { + gBattlescriptCurrInstr = BattleScript_ButItFailed; + return 1; + } + else if ((gBattleMons[gActiveBank].ability == ABILITY_CLEAR_BODY || gBattleMons[gActiveBank].ability == ABILITY_WHITE_SMOKE) && !r9 && gCurrentMove != MOVE_CURSE) + { + if (flags == 1) + { + if (gSpecialStatuses[gActiveBank].statloweringflag) + gBattlescriptCurrInstr = bs_ptr; + else + { + b_movescr_stack_push(bs_ptr); + BATTLE_STRUCT->scriptingActive = gActiveBank; + gBattlescriptCurrInstr = BattleScript_AbilityNoStatLoss; + gLastUsedAbility = gBattleMons[gActiveBank].ability; + RecordAbilityBattle(gActiveBank, gLastUsedAbility); + gSpecialStatuses[gActiveBank].statloweringflag = 1; + } + } + return 1; + } + else if (gBattleMons[gActiveBank].ability == ABILITY_KEEN_EYE && !r9 && stat == STAT_STAGE_ACC) + { + if (flags == 1) + { + b_movescr_stack_push(bs_ptr); + BATTLE_STRUCT->scriptingActive = gActiveBank; + gBattlescriptCurrInstr = BattleScript_AbilityNoSpecificStatLoss; + gLastUsedAbility = gBattleMons[gActiveBank].ability; + RecordAbilityBattle(gActiveBank, gLastUsedAbility); + } + return 1; + } + else if (gBattleMons[gActiveBank].ability == ABILITY_HYPER_CUTTER && !r9 && stat == STAT_STAGE_ATK) + { + if (flags == 1) + { + b_movescr_stack_push(bs_ptr); + BATTLE_STRUCT->scriptingActive = gActiveBank; + gBattlescriptCurrInstr = BattleScript_AbilityNoSpecificStatLoss; + gLastUsedAbility = gBattleMons[gActiveBank].ability; + RecordAbilityBattle(gActiveBank, gLastUsedAbility); + } + return 1; + } + else if (gBattleMons[gActiveBank].ability == ABILITY_SHIELD_DUST && flags == 0) + return 1; + else //decrease + { + statchanger = -((statchanger >> 4) & (7)); + gBattleTextBuff2[0] = 0xFD; + index = 1; + if (statchanger == -2) + { + gBattleTextBuff2[1] = 0; + gBattleTextBuff2[2] = 0xD3; //harshly + gBattleTextBuff2[3] = 0x0; + index = 4; + } + gBattleTextBuff2[index] = 0; + index++; + gBattleTextBuff2[index] = 0xD4; //fell + index++; + gBattleTextBuff2[index] = 0; + index++; + gBattleTextBuff2[index] = 0xFF; + + if (gBattleMons[gActiveBank].statStages[stat] == 0) + { + gBattleCommunication[MULTISTRING_CHOOSER] = 2; + } + else + { + u8 stringID = 0; + if (gBankTarget == gActiveBank) + stringID = 1; + gBattleCommunication[MULTISTRING_CHOOSER] = stringID; + } + } + } + else //stat increase + { + statchanger = (statchanger >> 4) & (7); + gBattleTextBuff2[0] = 0xFD; + index = 1; + if (statchanger == 2) + { + gBattleTextBuff2[1] = 0; + gBattleTextBuff2[2] = 0xD1; //sharply + gBattleTextBuff2[3] = 0x0; + index = 4; + } + gBattleTextBuff2[index] = 0; + index++; + gBattleTextBuff2[index] = 0xD2; //rose + index++; + gBattleTextBuff2[index] = 0; + index++; + gBattleTextBuff2[index] = 0xFF; + + if (gBattleMons[gActiveBank].statStages[stat] == 0xC) + { + gBattleCommunication[MULTISTRING_CHOOSER] = 2; + } + else + { + u8 stringID = 0; + if (gBankTarget == gActiveBank) + stringID = 1; + gBattleCommunication[MULTISTRING_CHOOSER] = stringID; + } + } + + gBattleMons[gActiveBank].statStages[stat] += statchanger; + if (gBattleMons[gActiveBank].statStages[stat] < 0) + gBattleMons[gActiveBank].statStages[stat] = 0; + if (gBattleMons[gActiveBank].statStages[stat] > 0xC) + gBattleMons[gActiveBank].statStages[stat] = 0xC; + + if (gBattleCommunication[MULTISTRING_CHOOSER] == 2) + { + if (flags & 1) + gBattleMoveFlags |= MOVESTATUS_MISSED; + if (gBattleCommunication[MULTISTRING_CHOOSER] == 2 && !(flags & 1)) //what the actual fuck gamefreak... + return 1; + } + return 0; +} + +#else +__attribute__((naked)) +u8 ChangeStatBuffs(s8 statchanger, u8 stat, u8 flags, u8* bs_ptr) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + mov r8, r3\n\ + lsls r0, 24\n\ + lsrs r6, r0, 24\n\ + lsls r1, 24\n\ + lsrs r7, r1, 24\n\ + lsls r2, 24\n\ + lsrs r5, r2, 24\n\ + movs r0, 0\n\ + mov r9, r0\n\ + mov r10, r0\n\ + movs r0, 0x40\n\ + ands r0, r5\n\ + cmp r0, 0\n\ + beq _08025E54\n\ + ldr r0, _08025E4C @ =gActiveBank\n\ + ldr r1, _08025E50 @ =gBankAttacker\n\ + b _08025E58\n\ + .align 2, 0\n\ +_08025E4C: .4byte gActiveBank\n\ +_08025E50: .4byte gBankAttacker\n\ +_08025E54:\n\ + ldr r0, _08025EF8 @ =gActiveBank\n\ + ldr r1, _08025EFC @ =gBankTarget\n\ +_08025E58:\n\ + ldrb r1, [r1]\n\ + strb r1, [r0]\n\ + movs r0, 0xBF\n\ + ands r5, r0\n\ + movs r0, 0x80\n\ + ands r0, r5\n\ + cmp r0, 0\n\ + beq _08025E72\n\ + mov r0, r9\n\ + adds r0, 0x1\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + mov r9, r0\n\ +_08025E72:\n\ + movs r0, 0x7F\n\ + ands r5, r0\n\ + movs r0, 0x20\n\ + ands r0, r5\n\ + cmp r0, 0\n\ + beq _08025E88\n\ + mov r0, r10\n\ + adds r0, 0x1\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + mov r10, r0\n\ +_08025E88:\n\ + movs r0, 0xDF\n\ + ands r5, r0\n\ + ldr r1, _08025F00 @ =gBattleTextBuff1\n\ + movs r4, 0\n\ + movs r2, 0xFD\n\ + strb r2, [r1]\n\ + movs r0, 0x5\n\ + strb r0, [r1, 0x1]\n\ + strb r7, [r1, 0x2]\n\ + movs r3, 0x1\n\ + negs r3, r3\n\ + mov r12, r3\n\ + movs r0, 0xFF\n\ + strb r0, [r1, 0x3]\n\ + lsls r0, r6, 24\n\ + cmp r0, 0\n\ + blt _08025EAC\n\ + b _080261B0\n\ +_08025EAC:\n\ + ldr r4, _08025F04 @ =gSideTimer\n\ + ldr r1, _08025EF8 @ =gActiveBank\n\ + ldrb r0, [r1]\n\ + bl GetBankIdentity\n\ + movs r1, 0x1\n\ + ands r1, r0\n\ + lsls r0, r1, 1\n\ + adds r0, r1\n\ + lsls r0, 2\n\ + adds r0, r4\n\ + ldrb r0, [r0, 0x2]\n\ + cmp r0, 0\n\ + beq _08025F54\n\ + mov r2, r9\n\ + cmp r2, 0\n\ + bne _08025F54\n\ + ldr r0, _08025F08 @ =gCurrentMove\n\ + ldrh r0, [r0]\n\ + cmp r0, 0xAE\n\ + beq _08025F84\n\ + cmp r5, 0x1\n\ + bne _08025F74\n\ + ldr r4, _08025F0C @ =gSpecialStatuses\n\ + ldr r3, _08025EF8 @ =gActiveBank\n\ + ldrb r0, [r3]\n\ + lsls r1, r0, 2\n\ + adds r1, r0\n\ + lsls r1, 2\n\ + adds r1, r4\n\ + ldrb r0, [r1]\n\ + lsls r0, 31\n\ + cmp r0, 0\n\ + beq _08025F14\n\ + ldr r0, _08025F10 @ =gBattlescriptCurrInstr\n\ + mov r4, r8\n\ + str r4, [r0]\n\ + b _08025F74\n\ + .align 2, 0\n\ +_08025EF8: .4byte gActiveBank\n\ +_08025EFC: .4byte gBankTarget\n\ +_08025F00: .4byte gBattleTextBuff1\n\ +_08025F04: .4byte gSideTimer\n\ +_08025F08: .4byte gCurrentMove\n\ +_08025F0C: .4byte gSpecialStatuses\n\ +_08025F10: .4byte gBattlescriptCurrInstr\n\ +_08025F14:\n\ + mov r0, r8\n\ + bl b_movescr_stack_push\n\ + ldr r0, _08025F40 @ =0x02000000\n\ + ldr r6, _08025F44 @ =gActiveBank\n\ + ldrb r1, [r6]\n\ + ldr r2, _08025F48 @ =0x00016003\n\ + adds r0, r2\n\ + strb r1, [r0]\n\ + ldr r1, _08025F4C @ =gBattlescriptCurrInstr\n\ + ldr r0, _08025F50 @ =BattleScript_MistProtected\n\ + str r0, [r1]\n\ + ldrb r1, [r6]\n\ + lsls r0, r1, 2\n\ + adds r0, r1\n\ + lsls r0, 2\n\ + adds r0, r4\n\ + ldrb r1, [r0]\n\ + movs r2, 0x1\n\ + orrs r1, r2\n\ + strb r1, [r0]\n\ + b _08025F74\n\ + .align 2, 0\n\ +_08025F40: .4byte 0x02000000\n\ +_08025F44: .4byte gActiveBank\n\ +_08025F48: .4byte 0x00016003\n\ +_08025F4C: .4byte gBattlescriptCurrInstr\n\ +_08025F50: .4byte BattleScript_MistProtected\n\ +_08025F54:\n\ + ldr r0, _08025F78 @ =gCurrentMove\n\ + ldrh r0, [r0]\n\ + cmp r0, 0xAE\n\ + beq _08025F84\n\ + mov r3, r10\n\ + cmp r3, 0x1\n\ + beq _08025F84\n\ + movs r0, 0\n\ + bl JumpIfMoveAffectedByProtect\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + beq _08025F84\n\ + ldr r1, _08025F7C @ =gBattlescriptCurrInstr\n\ + ldr r0, _08025F80 @ =BattleScript_ButItFailed\n\ + str r0, [r1]\n\ +_08025F74:\n\ + movs r0, 0x1\n\ + b _080262A4\n\ + .align 2, 0\n\ +_08025F78: .4byte gCurrentMove\n\ +_08025F7C: .4byte gBattlescriptCurrInstr\n\ +_08025F80: .4byte BattleScript_ButItFailed\n\ +_08025F84:\n\ + ldr r2, _08025FCC @ =gBattleMons\n\ + ldr r1, _08025FD0 @ =gActiveBank\n\ + ldrb r3, [r1]\n\ + movs r4, 0x58\n\ + adds r0, r3, 0\n\ + muls r0, r4\n\ + adds r0, r2\n\ + adds r0, 0x20\n\ + ldrb r0, [r0]\n\ + mov r10, r2\n\ + cmp r0, 0x1D\n\ + beq _08025FA0\n\ + cmp r0, 0x49\n\ + bne _08026040\n\ +_08025FA0:\n\ + mov r0, r9\n\ + cmp r0, 0\n\ + bne _08026040\n\ + ldr r0, _08025FD4 @ =gCurrentMove\n\ + ldrh r0, [r0]\n\ + cmp r0, 0xAE\n\ + beq _08026040\n\ + cmp r5, 0x1\n\ + bne _08025F74\n\ + ldr r4, _08025FD8 @ =gSpecialStatuses\n\ + lsls r0, r3, 2\n\ + adds r0, r3\n\ + lsls r0, 2\n\ + adds r0, r4\n\ + ldrb r0, [r0]\n\ + lsls r0, 31\n\ + cmp r0, 0\n\ + beq _08025FE0\n\ + ldr r0, _08025FDC @ =gBattlescriptCurrInstr\n\ + mov r1, r8\n\ + str r1, [r0]\n\ + b _08025F74\n\ + .align 2, 0\n\ +_08025FCC: .4byte gBattleMons\n\ +_08025FD0: .4byte gActiveBank\n\ +_08025FD4: .4byte gCurrentMove\n\ +_08025FD8: .4byte gSpecialStatuses\n\ +_08025FDC: .4byte gBattlescriptCurrInstr\n\ +_08025FE0:\n\ + mov r0, r8\n\ + bl b_movescr_stack_push\n\ + ldr r0, _08026028 @ =0x02000000\n\ + ldr r2, _0802602C @ =gActiveBank\n\ + ldrb r1, [r2]\n\ + ldr r3, _08026030 @ =0x00016003\n\ + adds r0, r3\n\ + strb r1, [r0]\n\ + ldr r1, _08026034 @ =gBattlescriptCurrInstr\n\ + ldr r0, _08026038 @ =BattleScript_AbilityNoStatLoss\n\ + str r0, [r1]\n\ + ldr r1, _0802603C @ =gLastUsedAbility\n\ + ldrb r0, [r2]\n\ + movs r6, 0x58\n\ + muls r0, r6\n\ + add r0, r10\n\ + adds r0, 0x20\n\ + ldrb r0, [r0]\n\ + strb r0, [r1]\n\ + ldrb r0, [r2]\n\ + ldrb r1, [r1]\n\ + bl RecordAbilityBattle\n\ + ldr r0, _0802602C @ =gActiveBank\n\ + ldrb r1, [r0]\n\ + lsls r0, r1, 2\n\ + adds r0, r1\n\ + lsls r0, 2\n\ + adds r0, r4\n\ + ldrb r1, [r0]\n\ + movs r2, 0x1\n\ + orrs r1, r2\n\ + strb r1, [r0]\n\ + b _08025F74\n\ + .align 2, 0\n\ +_08026028: .4byte 0x02000000\n\ +_0802602C: .4byte gActiveBank\n\ +_08026030: .4byte 0x00016003\n\ +_08026034: .4byte gBattlescriptCurrInstr\n\ +_08026038: .4byte BattleScript_AbilityNoStatLoss\n\ +_0802603C: .4byte gLastUsedAbility\n\ +_08026040:\n\ + ldr r1, _08026090 @ =gActiveBank\n\ + ldrb r0, [r1]\n\ + movs r4, 0x58\n\ + muls r0, r4\n\ + add r0, r10\n\ + adds r0, 0x20\n\ + ldrb r0, [r0]\n\ + cmp r0, 0x33\n\ + bne _080260A8\n\ + mov r2, r9\n\ + cmp r2, 0\n\ + bne _080260A8\n\ + cmp r7, 0x6\n\ + bne _080260A8\n\ + cmp r5, 0x1\n\ + bne _08025F74\n\ + mov r0, r8\n\ + bl b_movescr_stack_push\n\ + ldr r0, _08026094 @ =0x02000000\n\ + ldr r3, _08026090 @ =gActiveBank\n\ + ldrb r1, [r3]\n\ + ldr r6, _08026098 @ =0x00016003\n\ + adds r0, r6\n\ + strb r1, [r0]\n\ + ldr r1, _0802609C @ =gBattlescriptCurrInstr\n\ + ldr r0, _080260A0 @ =BattleScript_AbilityNoSpecificStatLoss\n\ + str r0, [r1]\n\ + ldr r1, _080260A4 @ =gLastUsedAbility\n\ + ldrb r0, [r3]\n\ + muls r0, r4\n\ + add r0, r10\n\ + adds r0, 0x20\n\ + ldrb r0, [r0]\n\ + strb r0, [r1]\n\ + ldrb r0, [r3]\n\ + ldrb r1, [r1]\n\ + bl RecordAbilityBattle\n\ + b _08025F74\n\ + .align 2, 0\n\ +_08026090: .4byte gActiveBank\n\ +_08026094: .4byte 0x02000000\n\ +_08026098: .4byte 0x00016003\n\ +_0802609C: .4byte gBattlescriptCurrInstr\n\ +_080260A0: .4byte BattleScript_AbilityNoSpecificStatLoss\n\ +_080260A4: .4byte gLastUsedAbility\n\ +_080260A8:\n\ + ldr r1, _080260FC @ =gActiveBank\n\ + ldrb r0, [r1]\n\ + movs r4, 0x58\n\ + muls r0, r4\n\ + add r0, r10\n\ + adds r0, 0x20\n\ + ldrb r0, [r0]\n\ + cmp r0, 0x34\n\ + bne _08026114\n\ + mov r2, r9\n\ + cmp r2, 0\n\ + bne _08026114\n\ + cmp r7, 0x1\n\ + bne _08026114\n\ + cmp r5, 0x1\n\ + beq _080260CA\n\ + b _08025F74\n\ +_080260CA:\n\ + mov r0, r8\n\ + bl b_movescr_stack_push\n\ + ldr r0, _08026100 @ =0x02000000\n\ + ldr r3, _080260FC @ =gActiveBank\n\ + ldrb r1, [r3]\n\ + ldr r6, _08026104 @ =0x00016003\n\ + adds r0, r6\n\ + strb r1, [r0]\n\ + ldr r1, _08026108 @ =gBattlescriptCurrInstr\n\ + ldr r0, _0802610C @ =BattleScript_AbilityNoSpecificStatLoss\n\ + str r0, [r1]\n\ + ldr r1, _08026110 @ =gLastUsedAbility\n\ + ldrb r0, [r3]\n\ + muls r0, r4\n\ + add r0, r10\n\ + adds r0, 0x20\n\ + ldrb r0, [r0]\n\ + strb r0, [r1]\n\ + ldrb r0, [r3]\n\ + ldrb r1, [r1]\n\ + bl RecordAbilityBattle\n\ + b _08025F74\n\ + .align 2, 0\n\ +_080260FC: .4byte gActiveBank\n\ +_08026100: .4byte 0x02000000\n\ +_08026104: .4byte 0x00016003\n\ +_08026108: .4byte gBattlescriptCurrInstr\n\ +_0802610C: .4byte BattleScript_AbilityNoSpecificStatLoss\n\ +_08026110: .4byte gLastUsedAbility\n\ +_08026114:\n\ + ldr r0, _080261A0 @ =gActiveBank\n\ + ldrb r1, [r0]\n\ + movs r0, 0x58\n\ + muls r0, r1\n\ + add r0, r10\n\ + adds r0, 0x20\n\ + ldrb r0, [r0]\n\ + cmp r0, 0x13\n\ + bne _0802612C\n\ + cmp r5, 0\n\ + bne _0802612C\n\ + b _08025F74\n\ +_0802612C:\n\ + lsls r0, r6, 24\n\ + asrs r0, 28\n\ + movs r1, 0x7\n\ + ands r0, r1\n\ + negs r0, r0\n\ + lsls r0, 24\n\ + ldr r3, _080261A4 @ =gBattleTextBuff2\n\ + movs r4, 0\n\ + movs r1, 0xFD\n\ + strb r1, [r3]\n\ + movs r2, 0x1\n\ + lsrs r6, r0, 24\n\ + asrs r0, 24\n\ + subs r1, 0xFF\n\ + cmp r0, r1\n\ + bne _08026156\n\ + strb r4, [r3, 0x1]\n\ + movs r0, 0xD3\n\ + strb r0, [r3, 0x2]\n\ + strb r4, [r3, 0x3]\n\ + movs r2, 0x4\n\ +_08026156:\n\ + adds r0, r2, r3\n\ + strb r4, [r0]\n\ + adds r2, 0x1\n\ + adds r1, r2, r3\n\ + movs r0, 0xD4\n\ + strb r0, [r1]\n\ + adds r2, 0x1\n\ + adds r0, r2, r3\n\ + strb r4, [r0]\n\ + adds r2, 0x1\n\ + adds r1, r2, r3\n\ + movs r0, 0xFF\n\ + strb r0, [r1]\n\ + ldr r1, _080261A0 @ =gActiveBank\n\ + ldrb r2, [r1]\n\ + movs r0, 0x58\n\ + muls r0, r2\n\ + adds r0, r7, r0\n\ + mov r1, r10\n\ + adds r1, 0x18\n\ + adds r0, r1\n\ + ldrb r0, [r0]\n\ + lsls r0, 24\n\ + asrs r0, 24\n\ + cmp r0, 0\n\ + beq _08026206\n\ + movs r1, 0\n\ + ldr r0, _080261A8 @ =gBankTarget\n\ + ldrb r0, [r0]\n\ + ldr r3, _080261AC @ =gBattleCommunication\n\ + mov r8, r3\n\ + cmp r0, r2\n\ + bne _0802619A\n\ + movs r1, 0x1\n\ +_0802619A:\n\ + mov r4, r8\n\ + strb r1, [r4, 0x5]\n\ + b _08026234\n\ + .align 2, 0\n\ +_080261A0: .4byte gActiveBank\n\ +_080261A4: .4byte gBattleTextBuff2\n\ +_080261A8: .4byte gBankTarget\n\ +_080261AC: .4byte gBattleCommunication\n\ +_080261B0:\n\ + asrs r6, r0, 28\n\ + movs r0, 0x7\n\ + ands r6, r0\n\ + ldr r3, _08026210 @ =gBattleTextBuff2\n\ + strb r2, [r3]\n\ + movs r2, 0x1\n\ + cmp r6, 0x2\n\ + bne _080261CA\n\ + strb r4, [r3, 0x1]\n\ + movs r0, 0xD1\n\ + strb r0, [r3, 0x2]\n\ + strb r4, [r3, 0x3]\n\ + movs r2, 0x4\n\ +_080261CA:\n\ + adds r0, r2, r3\n\ + strb r4, [r0]\n\ + adds r2, 0x1\n\ + adds r1, r2, r3\n\ + movs r0, 0xD2\n\ + strb r0, [r1]\n\ + adds r2, 0x1\n\ + adds r0, r2, r3\n\ + strb r4, [r0]\n\ + adds r2, 0x1\n\ + adds r1, r2, r3\n\ + ldrb r0, [r1]\n\ + mov r2, r12\n\ + orrs r0, r2\n\ + strb r0, [r1]\n\ + ldr r2, _08026214 @ =gBattleMons\n\ + ldr r4, _08026218 @ =gActiveBank\n\ + ldrb r3, [r4]\n\ + movs r0, 0x58\n\ + muls r0, r3\n\ + adds r0, r7, r0\n\ + adds r1, r2, 0\n\ + adds r1, 0x18\n\ + adds r0, r1\n\ + ldrb r0, [r0]\n\ + lsls r0, 24\n\ + asrs r0, 24\n\ + mov r10, r2\n\ + cmp r0, 0xC\n\ + bne _08026220\n\ +_08026206:\n\ + ldr r1, _0802621C @ =gBattleCommunication\n\ + movs r0, 0x2\n\ + strb r0, [r1, 0x5]\n\ + mov r8, r1\n\ + b _08026234\n\ + .align 2, 0\n\ +_08026210: .4byte gBattleTextBuff2\n\ +_08026214: .4byte gBattleMons\n\ +_08026218: .4byte gActiveBank\n\ +_0802621C: .4byte gBattleCommunication\n\ +_08026220:\n\ + movs r1, 0\n\ + ldr r0, _080262B4 @ =gBankTarget\n\ + ldrb r0, [r0]\n\ + ldr r2, _080262B8 @ =gBattleCommunication\n\ + mov r8, r2\n\ + cmp r0, r3\n\ + bne _08026230\n\ + movs r1, 0x1\n\ +_08026230:\n\ + mov r3, r8\n\ + strb r1, [r3, 0x5]\n\ +_08026234:\n\ + ldr r2, _080262BC @ =gActiveBank\n\ + ldrb r0, [r2]\n\ + movs r4, 0x58\n\ + adds r1, r0, 0\n\ + muls r1, r4\n\ + adds r1, r7, r1\n\ + mov r3, r10\n\ + adds r3, 0x18\n\ + adds r1, r3\n\ + lsls r0, r6, 24\n\ + asrs r0, 24\n\ + ldrb r6, [r1]\n\ + adds r0, r6\n\ + strb r0, [r1]\n\ + ldrb r0, [r2]\n\ + muls r0, r4\n\ + adds r0, r7, r0\n\ + adds r1, r0, r3\n\ + movs r0, 0\n\ + ldrsb r0, [r1, r0]\n\ + cmp r0, 0\n\ + bge _08026264\n\ + movs r0, 0\n\ + strb r0, [r1]\n\ +_08026264:\n\ + ldr r1, _080262BC @ =gActiveBank\n\ + ldrb r0, [r1]\n\ + muls r0, r4\n\ + adds r0, r7, r0\n\ + adds r1, r0, r3\n\ + movs r0, 0\n\ + ldrsb r0, [r1, r0]\n\ + cmp r0, 0xC\n\ + ble _0802627A\n\ + movs r0, 0xC\n\ + strb r0, [r1]\n\ +_0802627A:\n\ + mov r2, r8\n\ + ldrb r0, [r2, 0x5]\n\ + cmp r0, 0x2\n\ + bne _080262A2\n\ + movs r3, 0x1\n\ + ands r3, r5\n\ + cmp r3, 0\n\ + beq _08026294\n\ + ldr r0, _080262C0 @ =gBattleMoveFlags\n\ + ldrb r1, [r0]\n\ + movs r2, 0x1\n\ + orrs r1, r2\n\ + strb r1, [r0]\n\ +_08026294:\n\ + mov r4, r8\n\ + ldrb r0, [r4, 0x5]\n\ + cmp r0, 0x2\n\ + bne _080262A2\n\ + cmp r3, 0\n\ + bne _080262A2\n\ + b _08025F74\n\ +_080262A2:\n\ + movs r0, 0\n\ +_080262A4:\n\ + pop {r3-r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r7}\n\ + pop {r1}\n\ + bx r1\n\ + .align 2, 0\n\ +_080262B4: .4byte gBankTarget\n\ +_080262B8: .4byte gBattleCommunication\n\ +_080262BC: .4byte gActiveBank\n\ +_080262C0: .4byte gBattleMoveFlags\n\ + .syntax divided"); +} +#endif // NONMATCHING + +static void atk89_statbuffchange(void) +{ + u8* jump_loc = BSScriptReadPtr(gBattlescriptCurrInstr + 2); + if (ChangeStatBuffs(BATTLE_STRUCT->statChanger & 0xF0, BATTLE_STRUCT->statChanger & 0xF, BSScriptRead8(gBattlescriptCurrInstr + 1), jump_loc) == 0) + gBattlescriptCurrInstr += 6; +} + +static void atk8A_normalisebuffs(void) //haze +{ + int i, j; + for (i = 0; i < gNoOfAllBanks; i++) + { + for (j = 0; j < 8; j++) + { + gBattleMons[i].statStages[j] = 6; + } + } + gBattlescriptCurrInstr++; +} + +static void atk8B_setbide(void) +{ + gBattleMons[gBankAttacker].status2 |= STATUS2_MULTIPLETURNS; + gLockedMove[gBankAttacker] = gCurrentMove; + gTakenDmg[gBankAttacker] = 0; + gBattleMons[gBankAttacker].status2 |= (STATUS2_BIDE - 0x100); //2 turns + gBattlescriptCurrInstr++; +} + +static void atk8C_confuseifrepeatingattackends(void) +{ + if (!(gBattleMons[gBankAttacker].status2 & STATUS2_LOCK_CONFUSE)) + gBattleCommunication[MOVE_EFFECT_BYTE] = 0x75; + gBattlescriptCurrInstr++; +} + +static void atk8D_setmultihit_counter(void) +{ + if (BSScriptRead8(gBattlescriptCurrInstr + 1)) + gMultiHitCounter = BSScriptRead8(gBattlescriptCurrInstr + 1); + else + { + gMultiHitCounter = Random() & 3; + if (gMultiHitCounter > 1) + gMultiHitCounter = (Random() & 3) + 2; + else + gMultiHitCounter += 2; + } + gBattlescriptCurrInstr += 2; +} + +static void atk8E_prepare_multihit(void) +{ + ewram[0x160e0] = 0xFD; + ewram[0x160e1] = 1; + ewram[0x160e2] = 1; + ewram[0x160e3] = 1; + ewram[0x160e4] = 0; + ewram[0x160e5] = 0xFF; + gBattlescriptCurrInstr++; +} + +static bool8 sub_80264C0(void) +{ + if (gBattleMons[gBankAttacker].level >= gBattleMons[gBankTarget].level) + { + ewram[gBankTarget + 0x16064] = gBattlePartyID[gBankTarget]; + } + else + { + u16 random = Random() & 0xFF; + if ((u32)((random * (gBattleMons[gBankAttacker].level + gBattleMons[gBankTarget].level) >> 8) + 1) <= (gBattleMons[gBankTarget].level / 4)) + { + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + return 0; + } + ewram[gBankTarget + 0x16064] = gBattlePartyID[gBankTarget]; + } + gBattlescriptCurrInstr = gUnknown_081D90FC; + return 1; +} + +static void atk8F_forcerandomswitch(void) +{ + if ((gBattleTypeFlags & BATTLE_TYPE_TRAINER)) + { + u8 i; + struct Pokemon* party; + u8 valid; + u8 val; + if (!GetBankSide(gBankTarget)) + party = gPlayerParty; + else + party = gEnemyParty; + + if (gBattleTypeFlags & BATTLE_TYPE_MULTI) + { + valid = 0; + val = 0; + if (sub_803FBFC(sub_803FC34(gBankTarget)) == 1) + val = 3; + for (i = val; i < val + 3; i++) + { + if (GetMonData(&party[i], MON_DATA_SPECIES) != SPECIES_NONE + && !GetMonData(&party[i], MON_DATA_IS_EGG) + && GetMonData(&party[i], MON_DATA_HP) != 0) + valid++; + } + } + else + { + valid = 0; + for (i = 0; i < 6; i++) + { + if (GetMonData(&party[i], MON_DATA_SPECIES) != SPECIES_NONE + && !GetMonData(&party[i], MON_DATA_IS_EGG) + && GetMonData(&party[i], MON_DATA_HP) != 0) + valid++; + } + } + + if ((valid < 2 && (gBattleTypeFlags & (BATTLE_TYPE_DOUBLE | BATTLE_TYPE_MULTI)) != BATTLE_TYPE_DOUBLE) + || (valid < 3 && (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && !(gBattleTypeFlags & BATTLE_TYPE_MULTI))) + { + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + } + else if (sub_80264C0()) + { +#define MON_CAN_BATTLE(mon) (((GetMonData(mon, MON_DATA_SPECIES) && GetMonData(mon, MON_DATA_IS_EGG) != 1 && GetMonData(mon, MON_DATA_HP)))) + if (gBattleTypeFlags & BATTLE_TYPE_MULTI) + { + do + { + val = Random() % 3; + if (sub_803FBFC(sub_803FC34(gBankTarget)) == 1) + i = val + 3; + else + i = val; + } while (i == gBattlePartyID[gBankTarget] || i == gBattlePartyID[gBankTarget ^ 2] || !MON_CAN_BATTLE(&party[i])); + } + else + { + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + { + do + { + i = Random() % 6; + } while (i == gBattlePartyID[gBankTarget] || i == gBattlePartyID[gBankTarget ^ 2] || !MON_CAN_BATTLE(&party[i])); + } + else + { + do + { + i = Random() % 6; + } while (i == gBattlePartyID[gBankTarget] || !MON_CAN_BATTLE(&party[i])); + } + } + ewram[gBankTarget + 0x16068] = i; + if (!IsLinkDoubleBattle()) + sub_8012258(gBankTarget); + sub_8094B6C(gBankTarget, i, 0); + sub_8094B6C(gBankTarget ^ 2, i, 1); +#undef MON_CAN_BATTLE + } + } + else + { + sub_80264C0(); + } +} + +static void atk90_conversion_type_change(void) +{ + //randomly changes user's type to one of its moves' type + u8 valid_moves = 0; + u8 checked_move; + u8 move_type; + while (valid_moves < 4) + { + if (gBattleMons[gBankAttacker].moves[valid_moves] == 0) + break; + valid_moves++; + } + + for (checked_move = 0; checked_move < valid_moves; checked_move++) + { + move_type = gBattleMoves[gBattleMons[gBankAttacker].moves[checked_move]].type; + if (move_type == TYPE_MYSTERY) + { + if (gBattleMons[gBankAttacker].type1 == TYPE_GHOST || gBattleMons[gBankAttacker].type2 == TYPE_GHOST) + move_type = TYPE_GHOST; + else + move_type = TYPE_NORMAL; + } + if (move_type != gBattleMons[gBankAttacker].type1 && move_type != gBattleMons[gBankAttacker].type2) + break; + } + + if (checked_move == valid_moves) + { + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + } + else + { + do + { + + while ((checked_move = Random() & 3) >= valid_moves); + + move_type = gBattleMoves[gBattleMons[gBankAttacker].moves[checked_move]].type; + if (move_type == TYPE_MYSTERY) + { + if (gBattleMons[gBankAttacker].type1 == TYPE_GHOST || gBattleMons[gBankAttacker].type2 == TYPE_GHOST) + move_type = TYPE_GHOST; + else + move_type = TYPE_NORMAL; + } + } while (move_type == gBattleMons[gBankAttacker].type1 || move_type == gBattleMons[gBankAttacker].type2); + + gBattleMons[gBankAttacker].type1 = move_type; + gBattleMons[gBankAttacker].type2 = move_type; + + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 3; + gBattleTextBuff1[2] = move_type; + gBattleTextBuff1[3] = 0xFF; + + gBattlescriptCurrInstr += 5; + } +} + +static void atk91_givepaydaymoney(void) +{ + if (!(gBattleTypeFlags & BATTLE_TYPE_LINK) && gPaydayMoney) + { + AddMoney(&gSaveBlock1.money, gPaydayMoney * BATTLE_STRUCT->moneyMultiplier); + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 1; + gBattleTextBuff1[2] = 2; + gBattleTextBuff1[3] = 5; + gBattleTextBuff1[4] = gPaydayMoney; + gBattleTextBuff1[5] = uBYTE1_16(gPaydayMoney); + gBattleTextBuff1[6] = 0xFF; + b_movescr_stack_push(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = gUnknown_081D95DB; + } + else + gBattlescriptCurrInstr++; +} + +static void atk92_setlightscreen(void) +{ + if (gSideAffecting[GetBankIdentity(gBankAttacker) & 1] & SIDE_STATUS_LIGHTSCREEN) + { + gBattleMoveFlags |= MOVESTATUS_MISSED; + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + } + else + { + gSideAffecting[GetBankIdentity(gBankAttacker) & 1] |= SIDE_STATUS_LIGHTSCREEN; + gSideTimer[GetBankIdentity(gBankAttacker) & 1].lightscreenTimer = 5; + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && CountAliveMons(1) == 2) + gBattleCommunication[MULTISTRING_CHOOSER] = 4; + else + gBattleCommunication[MULTISTRING_CHOOSER] = 3; + } + gBattlescriptCurrInstr++; +} + +#ifdef NOTMATCHING +static void atk93_ko_move(void) +{ + if (gBattleMons[gBankTarget].item == ITEM_ENIGMA_BERRY) + hold_effect = gEnigmaBerries[gBankTarget].holdEffect, quality = gEnigmaBerries[gBankTarget].holdEffectParam; + else + { + hold_effect = ItemId_GetHoldEffect(gBattleMons[gBankTarget].item); + quality = ItemId_GetHoldEffectParam(gBattleMons[gBankTarget].item); + } + + gStringBank = gBankTarget; + + if (hold_effect == HOLD_EFFECT_FOCUS_BAND && (Random() % 100) < quality) + { + RecordItemBattle(gBankTarget, hold_effect); + gSpecialStatuses[gBankTarget].focusBanded = 1; + } + + if (gBattleMons[gBankTarget].ability == ABILITY_STURDY) + { + gBattleMoveFlags |= MOVESTATUS_MISSED; + gLastUsedAbility = ABILITY_STURDY; + gBattlescriptCurrInstr = x; + RecordAbilityBattle(gBankTarget, ABILITY_STURDY); + return; + } + + if (!(gStatuses3[gBankTarget] & STATUS3_ALWAYS_HITS)) + { + u16 to_cmp = gBattleMons[gBankAttacker].level - gBattleMons[gBankTarget].level + gBattleMoves[gCurrentMove].accuracy; + if (Random() % 0x64 + 1 < to_cmp || gBattleMons[gBankAttacker].level < gBattleMons[gBankTarget].level) + { + goto MOVESTATUS_MISSED_LABEL; + } + } + else + { + if (gDisableStructs[gBankTarget].bankWithSureHit != gBankAttacker || gBattleMons[gBankAttacker].level < gBattleMons[gBankTarget].level) + { + + } + } + +MOVESTATUS_MISSED_LABEL: + gBattleTypeFlags |= MOVESTATUS_MISSED; + if (gBattleMons[gBankAttacker].level < gBattleMons[gBankTarget].level) + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + else + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); +} + +#else +__attribute((naked)) +static void atk93_ko_move(void) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + ldr r7, _08026BA8 @ =gBattleMons\n\ + ldr r6, _08026BAC @ =gBankTarget\n\ + ldrb r2, [r6]\n\ + movs r5, 0x58\n\ + adds r0, r2, 0\n\ + muls r0, r5\n\ + adds r1, r0, r7\n\ + ldrh r0, [r1, 0x2E]\n\ + cmp r0, 0xAF\n\ + bne _08026BB4\n\ + ldr r1, _08026BB0 @ =gEnigmaBerries\n\ + lsls r0, r2, 3\n\ + subs r0, r2\n\ + lsls r0, 2\n\ + adds r0, r1\n\ + ldrb r4, [r0, 0x7]\n\ + ldrb r6, [r0, 0x1A]\n\ + b _08026BCE\n\ + .align 2, 0\n\ +_08026BA8: .4byte gBattleMons\n\ +_08026BAC: .4byte gBankTarget\n\ +_08026BB0: .4byte gEnigmaBerries\n\ +_08026BB4:\n\ + ldrh r0, [r1, 0x2E]\n\ + bl ItemId_GetHoldEffect\n\ + lsls r0, 24\n\ + lsrs r4, r0, 24\n\ + ldrb r0, [r6]\n\ + muls r0, r5\n\ + adds r0, r7\n\ + ldrh r0, [r0, 0x2E]\n\ + bl ItemId_GetHoldEffectParam\n\ + lsls r0, 24\n\ + lsrs r6, r0, 24\n\ +_08026BCE:\n\ + ldr r1, _08026C4C @ =gStringBank\n\ + ldr r5, _08026C50 @ =gBankTarget\n\ + ldrb r0, [r5]\n\ + strb r0, [r1]\n\ + cmp r4, 0x27\n\ + bne _08026C0C\n\ + bl Random\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + movs r1, 0x64\n\ + bl __umodsi3\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + cmp r0, r6\n\ + bcs _08026C0C\n\ + ldrb r0, [r5]\n\ + movs r1, 0x27\n\ + bl RecordItemBattle\n\ + ldr r2, _08026C54 @ =gSpecialStatuses\n\ + ldrb r1, [r5]\n\ + lsls r0, r1, 2\n\ + adds r0, r1\n\ + lsls r0, 2\n\ + adds r0, r2\n\ + ldrb r1, [r0]\n\ + movs r2, 0x80\n\ + orrs r1, r2\n\ + strb r1, [r0]\n\ +_08026C0C:\n\ + ldr r0, _08026C58 @ =gBattleMons\n\ + mov r8, r0\n\ + ldr r1, _08026C50 @ =gBankTarget\n\ + ldrb r2, [r1]\n\ + movs r6, 0x58\n\ + adds r0, r2, 0\n\ + muls r0, r6\n\ + mov r3, r8\n\ + adds r5, r0, r3\n\ + adds r0, r5, 0\n\ + adds r0, 0x20\n\ + ldrb r3, [r0]\n\ + mov r10, r8\n\ + cmp r3, 0x5\n\ + bne _08026C6C\n\ + ldr r2, _08026C5C @ =gBattleMoveFlags\n\ + ldrb r0, [r2]\n\ + movs r1, 0x1\n\ + orrs r0, r1\n\ + strb r0, [r2]\n\ + ldr r0, _08026C60 @ =gLastUsedAbility\n\ + strb r3, [r0]\n\ + ldr r1, _08026C64 @ =gBattlescriptCurrInstr\n\ + ldr r0, _08026C68 @ =gUnknown_081D9826\n\ + str r0, [r1]\n\ + ldr r1, _08026C50 @ =gBankTarget\n\ + ldrb r0, [r1]\n\ + movs r1, 0x5\n\ + bl RecordAbilityBattle\n\ + b _08026E40\n\ + .align 2, 0\n\ +_08026C4C: .4byte gStringBank\n\ +_08026C50: .4byte gBankTarget\n\ +_08026C54: .4byte gSpecialStatuses\n\ +_08026C58: .4byte gBattleMons\n\ +_08026C5C: .4byte gBattleMoveFlags\n\ +_08026C60: .4byte gLastUsedAbility\n\ +_08026C64: .4byte gBattlescriptCurrInstr\n\ +_08026C68: .4byte gUnknown_081D9826\n\ +_08026C6C:\n\ + ldr r1, _08026CE0 @ =gStatuses3\n\ + lsls r0, r2, 2\n\ + adds r0, r1\n\ + ldr r0, [r0]\n\ + movs r1, 0x18\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _08026CF4\n\ + ldr r1, _08026CE4 @ =gBattleMoves\n\ + ldr r0, _08026CE8 @ =gCurrentMove\n\ + ldrh r0, [r0]\n\ + lsls r2, r0, 1\n\ + adds r2, r0\n\ + lsls r2, 2\n\ + adds r2, r1\n\ + ldr r7, _08026CEC @ =gBankAttacker\n\ + ldrb r0, [r7]\n\ + muls r0, r6\n\ + add r0, r10\n\ + adds r0, 0x2A\n\ + ldrb r0, [r0]\n\ + adds r1, r5, 0\n\ + adds r1, 0x2A\n\ + ldrb r1, [r1]\n\ + subs r0, r1\n\ + ldrb r2, [r2, 0x3]\n\ + adds r0, r2\n\ + lsls r0, 16\n\ + lsrs r4, r0, 16\n\ + bl Random\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + movs r1, 0x64\n\ + bl __umodsi3\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + adds r0, 0x1\n\ + cmp r0, r4\n\ + bge _08026CDC\n\ + ldrb r0, [r7]\n\ + adds r1, r0, 0\n\ + muls r1, r6\n\ + add r1, r10\n\ + adds r1, 0x2A\n\ + ldr r2, _08026CF0 @ =gBankTarget\n\ + ldrb r0, [r2]\n\ + muls r0, r6\n\ + add r0, r10\n\ + adds r0, 0x2A\n\ + ldrb r1, [r1]\n\ + movs r4, 0x1\n\ + ldrb r0, [r0]\n\ + cmp r1, r0\n\ + bcs _08026D20\n\ +_08026CDC:\n\ + mov r10, r8\n\ + b _08026DE0\n\ + .align 2, 0\n\ +_08026CE0: .4byte gStatuses3\n\ +_08026CE4: .4byte gBattleMoves\n\ +_08026CE8: .4byte gCurrentMove\n\ +_08026CEC: .4byte gBankAttacker\n\ +_08026CF0: .4byte gBankTarget\n\ +_08026CF4:\n\ + ldr r0, _08026D4C @ =gDisableStructs\n\ + lsls r1, r2, 3\n\ + subs r1, r2\n\ + lsls r1, 2\n\ + adds r1, r0\n\ + ldr r2, _08026D50 @ =gBankAttacker\n\ + ldrb r0, [r1, 0x15]\n\ + movs r4, 0\n\ + ldrb r3, [r2]\n\ + cmp r0, r3\n\ + bne _08026D20\n\ + ldrb r0, [r2]\n\ + muls r0, r6\n\ + add r0, r10\n\ + adds r0, 0x2A\n\ + adds r1, r5, 0\n\ + adds r1, 0x2A\n\ + ldrb r0, [r0]\n\ + ldrb r1, [r1]\n\ + cmp r0, r1\n\ + bcc _08026D20\n\ + movs r4, 0x1\n\ +_08026D20:\n\ + cmp r4, 0\n\ + beq _08026DE0\n\ + ldr r0, _08026D54 @ =gProtectStructs\n\ + ldr r1, _08026D58 @ =gBankTarget\n\ + ldrb r2, [r1]\n\ + lsls r1, r2, 4\n\ + adds r1, r0\n\ + ldrb r0, [r1]\n\ + lsls r0, 30\n\ + cmp r0, 0\n\ + bge _08026D64\n\ + ldr r1, _08026D5C @ =gBattleMoveDamage\n\ + movs r0, 0x58\n\ + muls r0, r2\n\ + add r0, r10\n\ + ldrh r0, [r0, 0x28]\n\ + subs r0, 0x1\n\ + str r0, [r1]\n\ + ldr r2, _08026D60 @ =gBattleMoveFlags\n\ + ldrb r0, [r2]\n\ + movs r1, 0x40\n\ + b _08026DC6\n\ + .align 2, 0\n\ +_08026D4C: .4byte gDisableStructs\n\ +_08026D50: .4byte gBankAttacker\n\ +_08026D54: .4byte gProtectStructs\n\ +_08026D58: .4byte gBankTarget\n\ +_08026D5C: .4byte gBattleMoveDamage\n\ +_08026D60: .4byte gBattleMoveFlags\n\ +_08026D64:\n\ + ldr r0, _08026DA0 @ =gSpecialStatuses\n\ + lsls r1, r2, 2\n\ + adds r1, r2\n\ + lsls r1, 2\n\ + adds r1, r0\n\ + ldrb r0, [r1]\n\ + lsrs r0, 7\n\ + cmp r0, 0\n\ + beq _08026DB4\n\ + ldr r1, _08026DA4 @ =gBattleMoveDamage\n\ + movs r3, 0x58\n\ + adds r0, r2, 0\n\ + muls r0, r3\n\ + add r0, r10\n\ + ldrh r0, [r0, 0x28]\n\ + subs r0, 0x1\n\ + str r0, [r1]\n\ + ldr r2, _08026DA8 @ =gBattleMoveFlags\n\ + ldrb r0, [r2]\n\ + movs r1, 0x80\n\ + orrs r0, r1\n\ + strb r0, [r2]\n\ + ldr r1, _08026DAC @ =gLastUsedItem\n\ + ldr r2, _08026DB0 @ =gBankTarget\n\ + ldrb r0, [r2]\n\ + muls r0, r3\n\ + add r0, r10\n\ + ldrh r0, [r0, 0x2E]\n\ + strh r0, [r1]\n\ + b _08026DCA\n\ + .align 2, 0\n\ +_08026DA0: .4byte gSpecialStatuses\n\ +_08026DA4: .4byte gBattleMoveDamage\n\ +_08026DA8: .4byte gBattleMoveFlags\n\ +_08026DAC: .4byte gLastUsedItem\n\ +_08026DB0: .4byte gBankTarget\n\ +_08026DB4:\n\ + ldr r1, _08026DD4 @ =gBattleMoveDamage\n\ + movs r0, 0x58\n\ + muls r0, r2\n\ + add r0, r10\n\ + ldrh r0, [r0, 0x28]\n\ + str r0, [r1]\n\ + ldr r2, _08026DD8 @ =gBattleMoveFlags\n\ + ldrb r0, [r2]\n\ + movs r1, 0x10\n\ +_08026DC6:\n\ + orrs r0, r1\n\ + strb r0, [r2]\n\ +_08026DCA:\n\ + ldr r1, _08026DDC @ =gBattlescriptCurrInstr\n\ + ldr r0, [r1]\n\ + adds r0, 0x5\n\ + str r0, [r1]\n\ + b _08026E40\n\ + .align 2, 0\n\ +_08026DD4: .4byte gBattleMoveDamage\n\ +_08026DD8: .4byte gBattleMoveFlags\n\ +_08026DDC: .4byte gBattlescriptCurrInstr\n\ +_08026DE0:\n\ + ldr r2, _08026E10 @ =gBattleMoveFlags\n\ + ldrb r0, [r2]\n\ + movs r1, 0x1\n\ + orrs r0, r1\n\ + strb r0, [r2]\n\ + ldr r0, _08026E14 @ =gBankAttacker\n\ + ldrb r0, [r0]\n\ + movs r2, 0x58\n\ + adds r1, r0, 0\n\ + muls r1, r2\n\ + add r1, r10\n\ + adds r1, 0x2A\n\ + ldr r3, _08026E18 @ =gBankTarget\n\ + ldrb r0, [r3]\n\ + muls r0, r2\n\ + add r0, r10\n\ + adds r0, 0x2A\n\ + ldrb r1, [r1]\n\ + ldrb r0, [r0]\n\ + cmp r1, r0\n\ + bcc _08026E20\n\ + ldr r1, _08026E1C @ =gBattleCommunication\n\ + movs r0, 0\n\ + b _08026E24\n\ + .align 2, 0\n\ +_08026E10: .4byte gBattleMoveFlags\n\ +_08026E14: .4byte gBankAttacker\n\ +_08026E18: .4byte gBankTarget\n\ +_08026E1C: .4byte gBattleCommunication\n\ +_08026E20:\n\ + ldr r1, _08026E50 @ =gBattleCommunication\n\ + movs r0, 0x1\n\ +_08026E24:\n\ + strb r0, [r1, 0x5]\n\ + ldr r3, _08026E54 @ =gBattlescriptCurrInstr\n\ + ldr r2, [r3]\n\ + ldrb r1, [r2, 0x1]\n\ + ldrb r0, [r2, 0x2]\n\ + lsls r0, 8\n\ + orrs r1, r0\n\ + ldrb r0, [r2, 0x3]\n\ + lsls r0, 16\n\ + orrs r1, r0\n\ + ldrb r0, [r2, 0x4]\n\ + lsls r0, 24\n\ + orrs r1, r0\n\ + str r1, [r3]\n\ +_08026E40:\n\ + pop {r3-r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_08026E50: .4byte gBattleCommunication\n\ +_08026E54: .4byte gBattlescriptCurrInstr\n\ + .syntax divided"); +} +#endif // NOTMATCHING + +static void atk94_gethalfcurrentenemyhp(void) //super fang +{ + gBattleMoveDamage = gBattleMons[gBankTarget].hp / 2; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + gBattlescriptCurrInstr++; +} + +static void atk95_setsandstorm(void) +{ + if (gBattleWeather & WEATHER_SANDSTORM_ANY) + { + gBattleMoveFlags |= MOVESTATUS_MISSED; + gBattleCommunication[MULTISTRING_CHOOSER] = 2; + } + else + { + gBattleWeather = WEATHER_SANDSTORM_TEMPORARY; + gBattleCommunication[MULTISTRING_CHOOSER] = 3; + gWishFutureKnock.weatherDuration = 5; + } + gBattlescriptCurrInstr++; +} + +static void atk96_weatherdamage(void) +{ + if (WEATHER_HAS_EFFECT) + { + if (gBattleWeather & WEATHER_SANDSTORM_ANY) + { + if (gBattleMons[gBankAttacker].type1 != TYPE_ROCK && gBattleMons[gBankAttacker].type1 != TYPE_STEEL && gBattleMons[gBankAttacker].type1 != TYPE_GROUND + && gBattleMons[gBankAttacker].type2 != TYPE_ROCK && gBattleMons[gBankAttacker].type2 != TYPE_STEEL && gBattleMons[gBankAttacker].type2 != TYPE_GROUND + && gBattleMons[gBankAttacker].ability != ABILITY_SAND_VEIL && !(gStatuses3[gBankAttacker] & STATUS3_UNDERGROUND) && !(gStatuses3[gBankAttacker] & STATUS3_UNDERWATER)) + { + gBattleMoveDamage = gBattleMons[gBankAttacker].maxHP / 16; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + } + else + { + gBattleMoveDamage = 0; + } + } + if (gBattleWeather & WEATHER_HAIL) + { + if (gBattleMons[gBankAttacker].type1 != TYPE_ICE && gBattleMons[gBankAttacker].type2 != TYPE_ICE && !(gStatuses3[gBankAttacker] & STATUS3_UNDERGROUND) && !(gStatuses3[gBankAttacker] & STATUS3_UNDERWATER)) + { + gBattleMoveDamage = gBattleMons[gBankAttacker].maxHP / 16; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + } + else + { + gBattleMoveDamage = 0; + } + } + } + else + gBattleMoveDamage = 0; + + if (gAbsentBankFlags & gBitTable[gBankAttacker]) + gBattleMoveDamage = 0; + + gBattlescriptCurrInstr++; +} + +static void atk97_try_infatuation(void) +{ + struct Pokemon *attacker, *target; + u16 atk_species, def_species; + u32 atk_pid, def_pid; + if (!GetBankSide(gBankAttacker)) + attacker = &gPlayerParty[gBattlePartyID[gBankAttacker]]; + else + attacker = &gEnemyParty[gBattlePartyID[gBankAttacker]]; + + if (!GetBankSide(gBankTarget)) + target = &gPlayerParty[gBattlePartyID[gBankTarget]]; + else + target = &gEnemyParty[gBattlePartyID[gBankTarget]]; + + atk_species = GetMonData(attacker, MON_DATA_SPECIES); + atk_pid = GetMonData(attacker, MON_DATA_PERSONALITY); + + def_species = GetMonData(target, MON_DATA_SPECIES); + def_pid = GetMonData(target, MON_DATA_PERSONALITY); + + if (gBattleMons[gBankTarget].ability == ABILITY_OBLIVIOUS) + { + gBattlescriptCurrInstr = BattleScript_ObliviousPreventsAttraction; + gLastUsedAbility = ABILITY_OBLIVIOUS; + RecordAbilityBattle(gBankTarget, ABILITY_OBLIVIOUS); + } + else + { + if (GetGenderFromSpeciesAndPersonality(atk_species, atk_pid) == GetGenderFromSpeciesAndPersonality(def_species, def_pid) + || gStatuses3[gBankTarget] & STATUS3_SEMI_INVULNERABLE || gBattleMons[gBankTarget].status2 & STATUS2_INFATUATION || GetGenderFromSpeciesAndPersonality(atk_species, atk_pid) == 0xFF + || GetGenderFromSpeciesAndPersonality(def_species, def_pid) == 0xFF) + { + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + } + else + { + gBattleMons[gBankTarget].status2 |= (gBitTable[gBankAttacker] << 16); + gBattlescriptCurrInstr += 5; + } + } +} + +static void atk98_status_icon_update(void) +{ + if (gBattleExecBuffer) + return; + + if (BSScriptRead8(gBattlescriptCurrInstr + 1) != 4) + { + gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + EmitStatusIconUpdate(0, gBattleMons[gActiveBank].status1, gBattleMons[gActiveBank].status2); + MarkBufferBankForExecution(gActiveBank); + gBattlescriptCurrInstr += 2; + } + else + { + gActiveBank = gBankAttacker; + if (!(gAbsentBankFlags & gBitTable[gActiveBank])) + { + EmitStatusIconUpdate(0, gBattleMons[gActiveBank].status1, gBattleMons[gActiveBank].status2); + MarkBufferBankForExecution(gActiveBank); + } + if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE)) + { + gActiveBank = GetBankByPlayerAI(GetBankIdentity(gBankAttacker) ^ 2); + if (!(gAbsentBankFlags & gBitTable[gActiveBank])) + { + EmitStatusIconUpdate(0, gBattleMons[gActiveBank].status1, gBattleMons[gActiveBank].status2); + MarkBufferBankForExecution(gActiveBank); + } + } + gBattlescriptCurrInstr += 2; + } +} + +static void atk99_setmist(void) +{ + if (gSideTimer[GetBankIdentity(gBankAttacker) & 1].mistTimer) + { + gBattleMoveFlags |= MOVESTATUS_FAILED; + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + } + else + { + gSideTimer[GetBankIdentity(gBankAttacker) & 1].mistTimer = 5; + gSideAffecting[GetBankIdentity(gBankAttacker) & 1] |= SIDE_STATUS_MIST; + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + } + gBattlescriptCurrInstr++; +} + +static void atk9A_set_focusenergy(void) +{ + if (gBattleMons[gBankAttacker].status2 & STATUS2_FOCUS_ENERGY) + { + gBattleMoveFlags |= MOVESTATUS_FAILED; + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + } + else + { + gBattleMons[gBankAttacker].status2 |= STATUS2_FOCUS_ENERGY; + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + } + gBattlescriptCurrInstr++; +} + +static void atk9B_transformdataexecution(void) +{ + gUnknown_02024BE8 = 0xFFFF; + gBattlescriptCurrInstr++; + if (gBattleMons[gBankTarget].status2 & STATUS2_TRANSFORMED || gStatuses3[gBankTarget] & STATUS3_SEMI_INVULNERABLE) + { + gBattleMoveFlags |= MOVESTATUS_FAILED; + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + } + else + { + u32 i; s32 j; + u8 *atk_data, *def_data; + gBattleMons[gBankAttacker].status2 |= STATUS2_TRANSFORMED; + gDisableStructs[gBankAttacker].disabledMove = 0; + gDisableStructs[gBankAttacker].disableTimer1 = 0; + gDisableStructs[gBankAttacker].unk0 = gBattleMons[gBankTarget].personality; + gDisableStructs[gBankAttacker].unk18_b = 0; + + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 6; + gBattleTextBuff1[2] = (gBattleMons[gBankTarget].species); + gBattleTextBuff1[3] = uBYTE1_16(gBattleMons[gBankTarget].species); + gBattleTextBuff1[4] = 0xFF; + + atk_data = (u8*)(&gBattleMons[gBankAttacker]); + def_data = (u8*)(&gBattleMons[gBankTarget]); + + for (i = 0; i < 0x24; i++) + atk_data[i] = def_data[i]; + + for (j = 0; j < 4; j++) + { + if (gBattleMoves[gBattleMons[gBankAttacker].moves[j]].pp < 5) + gBattleMons[gBankAttacker].pp[j] = gBattleMoves[gBattleMons[gBankAttacker].moves[j]].pp; + else + gBattleMons[gBankAttacker].pp[j] = 5; + } + + gActiveBank = gBankAttacker; + EmitResetActionMoveSelection(0, 2); + MarkBufferBankForExecution(gActiveBank); + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + } +} + +static void atk9C_set_substitute(void) +{ + u32 hp = gBattleMons[gBankAttacker].maxHP / 4; + if (gBattleMons[gBankAttacker].maxHP / 4 == 0) + hp = 1; + if (gBattleMons[gBankAttacker].hp <= hp) + { + gBattleMoveDamage = 0; + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + } + else + { + gBattleMoveDamage = gBattleMons[gBankAttacker].maxHP / 4; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + gBattleMons[gBankAttacker].status2 |= STATUS2_SUBSTITUTE; + gBattleMons[gBankAttacker].status2 &= ~(STATUS2_WRAPPED); + gDisableStructs[gBankAttacker].substituteHP = gBattleMoveDamage; + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + gHitMarker |= HITMARKER_IGNORE_SUBSTITUTE; + } + gBattlescriptCurrInstr++; +} + +static bool8 IsMoveUncopyable(u16 move) +{ + int i; + for (i = 0; sUnknown_081FACFE[i] != 0xFFFE && sUnknown_081FACFE[i] != move; i++) {} + return (sUnknown_081FACFE[i] != 0xFFFE); +} + +static void atk9D_copyattack(void) +{ + gUnknown_02024BE8 = 0xFFFF; + if (IsMoveUncopyable(gLastUsedMove[gBankTarget]) || gBattleMons[gBankAttacker].status2 & STATUS2_TRANSFORMED + || gLastUsedMove[gBankTarget] == 0 || gLastUsedMove[gBankTarget] == 0xFFFF) + { + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + } + else + { + int i; + for (i = 0; i < 4; i++) + { + if (gBattleMons[gBankAttacker].moves[i] == gLastUsedMove[gBankTarget]) + break; + } + if (i == 4) + { + gBattleMons[gBankAttacker].moves[gCurrMovePos] = gLastUsedMove[gBankTarget]; + if (gBattleMoves[gLastUsedMove[gBankTarget]].pp < 5) + gBattleMons[gBankAttacker].pp[gCurrMovePos] = gBattleMoves[gLastUsedMove[gBankTarget]].pp; + else + gBattleMons[gBankAttacker].pp[gCurrMovePos] = 5; + + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 2; + gBattleTextBuff1[2] = gLastUsedMove[gBankTarget]; + gBattleTextBuff1[3] = uBYTE1_16(gLastUsedMove[gBankTarget]); + gBattleTextBuff1[4] = 0xFF; + + gDisableStructs[gBankAttacker].unk18_b |= gBitTable[gCurrMovePos]; + gBattlescriptCurrInstr += 5; + } + else + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + } +} + +#ifdef NONMATCHING +static void atk9E_metronome(void) +{ + // sUnknown_081FACFE + int i; + do + { + while ((gCurrentMove = (Random() & 0x1FF) + 1) > 0x162); + for (i = 0; sUnknown_081FACFE[i] != gCurrentMove && sUnknown_081FACFE[i] != 0xFFFF; i++); + } while (sUnknown_081FACFE[i] != 0xFFFF); + + gHitMarker &= ~(HITMARKER_ATTACKSTRING_PRINTED); + gBattlescriptCurrInstr = gBattleScriptsEffectsTable[gBattleMoves[gCurrentMove].effect]; + gBankTarget = GetMoveTarget(gCurrentMove, 0); +} + +#else +__attribute__((naked)) +static void atk9E_metronome(void) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r8\n\ + push {r7}\n\ + ldr r7, _08027938 @ =gCurrentMove\n\ + movs r6, 0xB1\n\ + lsls r6, 1\n\ + ldr r5, _0802793C @ =sUnknown_081FACFE\n\ + ldr r0, _08027940 @ =gBattlescriptCurrInstr\n\ + mov r8, r0\n\ +_080278CA:\n\ + bl Random\n\ + ldr r2, _08027944 @ =0x000001ff\n\ + adds r1, r2, 0\n\ + ands r0, r1\n\ + adds r0, 0x1\n\ + strh r0, [r7]\n\ + cmp r0, r6\n\ + bhi _080278CA\n\ + movs r0, 0x3\n\ +_080278DE:\n\ + subs r0, 0x1\n\ + cmp r0, 0\n\ + bge _080278DE\n\ + ldr r4, _08027938 @ =gCurrentMove\n\ + ldrh r2, [r4]\n\ + ldr r3, _08027948 @ =0x0000ffff\n\ + subs r0, r5, 0x2\n\ +_080278EC:\n\ + adds r0, 0x2\n\ + ldrh r1, [r0]\n\ + cmp r1, r2\n\ + beq _080278F8\n\ + cmp r1, r3\n\ + bne _080278EC\n\ +_080278F8:\n\ + ldr r0, _08027948 @ =0x0000ffff\n\ + cmp r1, r0\n\ + bne _080278CA\n\ + ldr r2, _0802794C @ =gHitMarker\n\ + ldr r0, [r2]\n\ + ldr r1, _08027950 @ =0xfffffbff\n\ + ands r0, r1\n\ + str r0, [r2]\n\ + ldr r3, _08027954 @ =gBattleScriptsEffectsTable\n\ + ldr r2, _08027958 @ =gBattleMoves\n\ + ldrh r1, [r4]\n\ + lsls r0, r1, 1\n\ + adds r0, r1\n\ + lsls r0, 2\n\ + adds r0, r2\n\ + ldrb r0, [r0]\n\ + lsls r0, 2\n\ + adds r0, r3\n\ + ldr r0, [r0]\n\ + mov r1, r8\n\ + str r0, [r1]\n\ + ldrh r0, [r4]\n\ + movs r1, 0\n\ + bl GetMoveTarget\n\ + ldr r1, _0802795C @ =gBankTarget\n\ + strb r0, [r1]\n\ + pop {r3}\n\ + mov r8, r3\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_08027938: .4byte gCurrentMove\n\ +_0802793C: .4byte sUnknown_081FACFE\n\ +_08027940: .4byte gBattlescriptCurrInstr\n\ +_08027944: .4byte 0x000001ff\n\ +_08027948: .4byte 0x0000ffff\n\ +_0802794C: .4byte gHitMarker\n\ +_08027950: .4byte 0xfffffbff\n\ +_08027954: .4byte gBattleScriptsEffectsTable\n\ +_08027958: .4byte gBattleMoves\n\ +_0802795C: .4byte gBankTarget\n\ + .syntax divided"); +} +#endif // NONMATCHING + +static void atk9F_dmgtolevel(void) +{ + gBattleMoveDamage = gBattleMons[gBankAttacker].level; + gBattlescriptCurrInstr++; +} + +static void atkA0_psywavedamageeffect(void) +{ + s32 rand_dmg; + while ((rand_dmg = (Random() & 0xF)) > 0xA); + rand_dmg *= 10; + gBattleMoveDamage = gBattleMons[gBankAttacker].level * (rand_dmg + 50) / 100; + gBattlescriptCurrInstr++; +} + +static void atkA1_counterdamagecalculator(void) +{ + u8 atk_side = GetBankSide(gBankAttacker); + u8 def_side = GetBankSide(gProtectStructs[gBankAttacker].physicalBank); + if (gProtectStructs[gBankAttacker].physicalDmg && atk_side != def_side && gBattleMons[gProtectStructs[gBankAttacker].physicalBank].hp) + { + gBattleMoveDamage = gProtectStructs[gBankAttacker].physicalDmg * 2; + if (gSideTimer[def_side].followmeTimer && gBattleMons[gSideTimer[def_side].followmeTarget].hp) + gBankTarget = gSideTimer[def_side].followmeTarget; + else + gBankTarget = gProtectStructs[gBankAttacker].physicalBank; + gBattlescriptCurrInstr += 5; + } + else + { + gSpecialStatuses[gBankAttacker].flag20 = 1; + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + } +} + +static void atkA2_mirrorcoatdamagecalculator(void) //a copy of atkA1 with the physical -> special field changes +{ + u8 atk_side = GetBankSide(gBankAttacker); + u8 def_side = GetBankSide(gProtectStructs[gBankAttacker].specialBank); + if (gProtectStructs[gBankAttacker].specialDmg && atk_side != def_side && gBattleMons[gProtectStructs[gBankAttacker].specialBank].hp) + { + gBattleMoveDamage = gProtectStructs[gBankAttacker].specialDmg * 2; + if (gSideTimer[def_side].followmeTimer && gBattleMons[gSideTimer[def_side].followmeTarget].hp) + gBankTarget = gSideTimer[def_side].followmeTarget; + else + gBankTarget = gProtectStructs[gBankAttacker].specialBank; + gBattlescriptCurrInstr += 5; + } + else + { + gSpecialStatuses[gBankAttacker].flag20 = 1; + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + } +} + +static void atkA3_disablelastusedattack(void) +{ + int i; + for (i = 0; i < 4; i++) + { + if (gBattleMons[gBankTarget].moves[i] == gLastUsedMove[gBankTarget]) + break; + } + if (gDisableStructs[gBankTarget].disabledMove == 0 && i != 4 && gBattleMons[gBankTarget].pp[i] != 0) + { + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 2; + gBattleTextBuff1[2] = gBattleMons[gBankTarget].moves[i]; + gBattleTextBuff1[3] = uBYTE1_16(gBattleMons[gBankTarget].moves[i]); + gBattleTextBuff1[4] = 0xFF; + + gDisableStructs[gBankTarget].disabledMove = gBattleMons[gBankTarget].moves[i]; + gDisableStructs[gBankTarget].disableTimer1 = (Random() & 3) + 2; + gDisableStructs[gBankTarget].disableTimer2 = gDisableStructs[gBankTarget].disableTimer1; //that's interesting + gBattlescriptCurrInstr += 5; + } + else + { + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + } +} + +static void atkA4_setencore(void) +{ + int i; + for (i = 0; i < 4; i++) + { + if (gBattleMons[gBankTarget].moves[i] == gLastUsedMove[gBankTarget]) + break; + } + if (gLastUsedMove[gBankTarget] == MOVE_STRUGGLE || gLastUsedMove[gBankTarget] == MOVE_ENCORE || gLastUsedMove[gBankTarget] == MOVE_MIRROR_MOVE) + i = 4; + if (gDisableStructs[gBankTarget].encoredMove == 0 && i != 4 && gBattleMons[gBankTarget].pp[i] != 0) + { + gDisableStructs[gBankTarget].encoredMove = gBattleMons[gBankTarget].moves[i]; + gDisableStructs[gBankTarget].encoredMovePos = i; + gDisableStructs[gBankTarget].encoreTimer1 = (Random() & 3) + 3; + gDisableStructs[gBankTarget].encoreTimer2 = gDisableStructs[gBankTarget].encoreTimer1; + gBattlescriptCurrInstr += 5; + } + else + { + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + } +} + +static void atkA5_painsplitdmgcalc(void) +{ + if (!(gBattleMons[gBankTarget].status2 & STATUS2_SUBSTITUTE)) + { + s32 hp_diff = (gBattleMons[gBankAttacker].hp + gBattleMons[gBankTarget].hp) / 2; + s32 to_store = gBattleMoveDamage = gBattleMons[gBankTarget].hp - hp_diff; + BATTLE_STRUCT->unk16014 = sBYTE0_32(to_store); + BATTLE_STRUCT->unk16015 = sBYTE1_32(to_store); + BATTLE_STRUCT->unk16016 = sBYTE2_32(to_store); + BATTLE_STRUCT->unk16017 = sBYTE3_32(to_store); + + gBattleMoveDamage = gBattleMons[gBankAttacker].hp - hp_diff; + gSpecialStatuses[gBankTarget].moveturnLostHP = 0xFFFF; + + gBattlescriptCurrInstr += 5; + } + else + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); +} + +#ifdef NONMATCHING +static void atkA6_settypetorandomresistance(void) +{ + if (gMoveHitWith[gBankAttacker] == 0 || gMoveHitWith[gBankAttacker] == 0xFFFF || (IsTwoTurnsMove(gMoveHitWith[gBankAttacker]) && !gProtectStructs[gBankAttacker].physicalDmg && !gProtectStructs[gBankAttacker].specialDmg)) + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + else + { + int type = 0, rands = 0; + do + { + while (((type = (Random() & 0x7F)) > 0x70)); + type *= 3; + if (gTypeEffectiveness[type] == gUnknown_02024C44[gBankAttacker] && gTypeEffectiveness[type + 2] <= 5 && gBattleMons[gBankAttacker].type1 != gTypeEffectiveness[type + 1] && gBattleMons[gBankAttacker].type2 != gTypeEffectiveness[type + 1]) + { + gBattleMons[gBankAttacker].type1 = type; + gBattleMons[gBankAttacker].type2 = type; + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 3; + gBattleTextBuff1[2] = type; + gBattleTextBuff1[3] = 0xFF; + gBattlescriptCurrInstr += 5; + return; + } + rands++; + } while (rands <= 999); + + type = 0, rands = 0; + do + { + if (gTypeEffectiveness[type] == 0xFE || gTypeEffectiveness[type] != 0xFF) + { + if (gTypeEffectiveness[type] == gUnknown_02024C44[gBankAttacker] && gTypeEffectiveness[type + 2] <= 5 && gBattleMons[gBankAttacker].type1 != gTypeEffectiveness[type + 1] && gBattleMons[gBankAttacker].type2 != gTypeEffectiveness[type + 1]) + { + gBattleMons[gBankAttacker].type1 = gTypeEffectiveness[rands + 1]; + gBattleMons[gBankAttacker].type2 = gTypeEffectiveness[rands + 1]; + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 3; + gBattleTextBuff1[2] = gTypeEffectiveness[rands + 1]; + gBattleTextBuff1[3] = 0xFF; + gBattlescriptCurrInstr += 5; + return; + } + } + type += 3, rands += 3; + } while (rands < 336); + + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + } +} + +#else +__attribute__((naked)) +static void atkA6_settypetorandomresistance(void) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + ldr r1, _08027FA8 @ =gMoveHitWith\n\ + ldr r4, _08027FAC @ =gBankAttacker\n\ + ldrb r0, [r4]\n\ + lsls r0, 1\n\ + adds r2, r0, r1\n\ + ldrh r1, [r2]\n\ + cmp r1, 0\n\ + beq _08027F8C\n\ + ldr r0, _08027FB0 @ =0x0000ffff\n\ + cmp r1, r0\n\ + beq _08027F8C\n\ + ldrh r0, [r2]\n\ + bl IsTwoTurnsMove\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + beq _08028024\n\ + ldr r2, _08027FB4 @ =gProtectStructs\n\ + ldrb r0, [r4]\n\ + lsls r1, r0, 4\n\ + adds r0, r2, 0x4\n\ + adds r0, r1, r0\n\ + ldr r0, [r0]\n\ + cmp r0, 0\n\ + bne _08028024\n\ + adds r0, r2, 0\n\ + adds r0, 0x8\n\ + adds r0, r1, r0\n\ + ldr r0, [r0]\n\ + cmp r0, 0\n\ + bne _08028024\n\ +_08027F8C:\n\ + ldr r3, _08027FB8 @ =gBattlescriptCurrInstr\n\ + ldr r2, [r3]\n\ + ldrb r1, [r2, 0x1]\n\ + ldrb r0, [r2, 0x2]\n\ + lsls r0, 8\n\ + orrs r1, r0\n\ + ldrb r0, [r2, 0x3]\n\ + lsls r0, 16\n\ + orrs r1, r0\n\ + ldrb r0, [r2, 0x4]\n\ + lsls r0, 24\n\ + orrs r1, r0\n\ + str r1, [r3]\n\ + b _08028110\n\ + .align 2, 0\n\ +_08027FA8: .4byte gMoveHitWith\n\ +_08027FAC: .4byte gBankAttacker\n\ +_08027FB0: .4byte 0x0000ffff\n\ +_08027FB4: .4byte gProtectStructs\n\ +_08027FB8: .4byte gBattlescriptCurrInstr\n\ +_08027FBC:\n\ + mov r0, r12\n\ + strb r5, [r0]\n\ + mov r1, r10\n\ + ldrb r0, [r1]\n\ + muls r0, r2\n\ + adds r0, r7\n\ + adds r0, 0x22\n\ + strb r5, [r0]\n\ + ldr r1, _08027FE0 @ =gBattleTextBuff1\n\ + movs r0, 0xFD\n\ + strb r0, [r1]\n\ + movs r0, 0x3\n\ + strb r0, [r1, 0x1]\n\ + strb r5, [r1, 0x2]\n\ + movs r0, 0xFF\n\ + strb r0, [r1, 0x3]\n\ + ldr r1, _08027FE4 @ =gBattlescriptCurrInstr\n\ + b _08028012\n\ + .align 2, 0\n\ +_08027FE0: .4byte gBattleTextBuff1\n\ +_08027FE4: .4byte gBattlescriptCurrInstr\n\ +_08027FE8:\n\ + mov r0, r8\n\ + adds r0, 0x1\n\ + adds r0, r3\n\ + ldrb r2, [r0]\n\ + strb r2, [r4]\n\ + mov r4, r10\n\ + ldrb r0, [r4]\n\ + muls r0, r6\n\ + ldr r7, _0802801C @ =gBattleMons\n\ + adds r0, r7\n\ + adds r0, 0x22\n\ + strb r2, [r0]\n\ + ldr r1, _08028020 @ =gBattleTextBuff1\n\ + movs r0, 0xFD\n\ + strb r0, [r1]\n\ + movs r0, 0x3\n\ + strb r0, [r1, 0x1]\n\ + strb r2, [r1, 0x2]\n\ + movs r0, 0xFF\n\ + strb r0, [r1, 0x3]\n\ + mov r1, r12\n\ +_08028012:\n\ + ldr r0, [r1]\n\ + adds r0, 0x5\n\ + str r0, [r1]\n\ + b _08028110\n\ + .align 2, 0\n\ +_0802801C: .4byte gBattleMons\n\ +_08028020: .4byte gBattleTextBuff1\n\ +_08028024:\n\ + movs r4, 0\n\ + mov r8, r4\n\ + movs r7, 0x7F\n\ + mov r9, r7\n\ +_0802802C:\n\ + bl Random\n\ + mov r4, r9\n\ + ands r4, r0\n\ + cmp r4, 0x70\n\ + bhi _0802802C\n\ + lsls r0, r4, 1\n\ + adds r4, r0, r4\n\ + ldr r6, _08028120 @ =gTypeEffectiveness\n\ + adds r3, r4, r6\n\ + ldr r1, _08028124 @ =gUnknown_02024C44\n\ + ldr r2, _08028128 @ =gBankAttacker\n\ + ldrb r5, [r2]\n\ + lsls r0, r5, 1\n\ + adds r0, r1\n\ + ldrb r1, [r3]\n\ + mov r10, r2\n\ + ldrh r0, [r0]\n\ + cmp r1, r0\n\ + bne _08028088\n\ + adds r0, r4, 0x2\n\ + adds r0, r6\n\ + ldrb r0, [r0]\n\ + cmp r0, 0x5\n\ + bhi _08028088\n\ + ldr r7, _0802812C @ =gBattleMons\n\ + movs r2, 0x58\n\ + adds r0, r5, 0\n\ + muls r0, r2\n\ + adds r3, r0, r7\n\ + movs r0, 0x21\n\ + adds r0, r3\n\ + mov r12, r0\n\ + adds r0, r4, 0x1\n\ + adds r0, r6\n\ + ldrb r5, [r0]\n\ + mov r1, r12\n\ + ldrb r0, [r1]\n\ + adds r1, r5, 0\n\ + cmp r0, r1\n\ + beq _08028088\n\ + adds r0, r3, 0\n\ + adds r0, 0x22\n\ + ldrb r0, [r0]\n\ + cmp r0, r1\n\ + bne _08027FBC\n\ +_08028088:\n\ + movs r7, 0x1\n\ + add r8, r7\n\ + ldr r0, _08028130 @ =0x000003e7\n\ + cmp r8, r0\n\ + ble _0802802C\n\ + movs r0, 0\n\ + mov r8, r0\n\ + ldr r1, _08028134 @ =gBattlescriptCurrInstr\n\ + mov r12, r1\n\ + ldr r3, _08028120 @ =gTypeEffectiveness\n\ + adds r0, r4, 0x1\n\ + adds r0, r3\n\ + mov r9, r0\n\ + adds r5, r3, 0\n\ +_080280A4:\n\ + ldrb r1, [r5]\n\ + cmp r1, 0xFF\n\ + bgt _080280AE\n\ + cmp r1, 0xFE\n\ + bge _080280E8\n\ +_080280AE:\n\ + mov r4, r10\n\ + ldrb r2, [r4]\n\ + lsls r0, r2, 1\n\ + ldr r7, _08028124 @ =gUnknown_02024C44\n\ + adds r0, r7\n\ + ldrh r0, [r0]\n\ + cmp r1, r0\n\ + bne _080280E8\n\ + ldrb r0, [r5, 0x2]\n\ + cmp r0, 0x5\n\ + bhi _080280E8\n\ + movs r6, 0x58\n\ + adds r0, r2, 0\n\ + muls r0, r6\n\ + ldr r1, _0802812C @ =gBattleMons\n\ + adds r2, r0, r1\n\ + adds r4, r2, 0\n\ + adds r4, 0x21\n\ + ldrb r0, [r4]\n\ + mov r7, r9\n\ + ldrb r1, [r7]\n\ + cmp r0, r1\n\ + beq _080280E8\n\ + adds r0, r2, 0\n\ + adds r0, 0x22\n\ + ldrb r0, [r0]\n\ + cmp r0, r1\n\ + beq _080280E8\n\ + b _08027FE8\n\ +_080280E8:\n\ + adds r5, 0x3\n\ + movs r0, 0x3\n\ + add r8, r0\n\ + ldr r0, _08028138 @ =0x0000014f\n\ + cmp r8, r0\n\ + bls _080280A4\n\ + mov r1, r12\n\ + ldr r2, [r1]\n\ + ldrb r1, [r2, 0x1]\n\ + ldrb r0, [r2, 0x2]\n\ + lsls r0, 8\n\ + orrs r1, r0\n\ + ldrb r0, [r2, 0x3]\n\ + lsls r0, 16\n\ + orrs r1, r0\n\ + ldrb r0, [r2, 0x4]\n\ + lsls r0, 24\n\ + orrs r1, r0\n\ + mov r4, r12\n\ + str r1, [r4]\n\ +_08028110:\n\ + pop {r3-r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_08028120: .4byte gTypeEffectiveness\n\ +_08028124: .4byte gUnknown_02024C44\n\ +_08028128: .4byte gBankAttacker\n\ +_0802812C: .4byte gBattleMons\n\ +_08028130: .4byte 0x000003e7\n\ +_08028134: .4byte gBattlescriptCurrInstr\n\ +_08028138: .4byte 0x0000014f\n\ + .syntax divided"); +} +#endif // NONMATCHING + +static void atkA7_setalwayshitflag(void) +{ + gStatuses3[gBankTarget] &= ~(STATUS3_ALWAYS_HITS); + gStatuses3[gBankTarget] |= 0x10; + gDisableStructs[gBankTarget].bankWithSureHit = gBankAttacker; + gBattlescriptCurrInstr++; +} + +struct move_pp +{ + u16 move[4]; + u8 pp[4]; + u8 ppBonuses; +}; + +static void atkA8_copymovepermanently(void) +{ + gUnknown_02024BE8 = 0xFFFF; + if (!(gBattleMons[gBankAttacker].status2 & STATUS2_TRANSFORMED) && gUnknown_02024C2C[gBankTarget] != MOVE_STRUGGLE && gUnknown_02024C2C[gBankTarget] != 0 && gUnknown_02024C2C[gBankTarget] != 0xFFFF && gUnknown_02024C2C[gBankTarget] != MOVE_SKETCH) + { + int i; + for (i = 0; i < 4; i++) + { + if (gBattleMons[gBankAttacker].moves[i] == MOVE_SKETCH) + continue; + if (gBattleMons[gBankAttacker].moves[i] == gUnknown_02024C2C[gBankTarget]) + break; + } + if (i != 4) //sketch fail + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + else //sketch worked + { + struct move_pp moves_data; + gBattleMons[gBankAttacker].moves[gCurrMovePos] = gUnknown_02024C2C[gBankTarget]; + gBattleMons[gBankAttacker].pp[gCurrMovePos] = gBattleMoves[gUnknown_02024C2C[gBankTarget]].pp; + gActiveBank = gBankAttacker; + for (i = 0; i < 4; i++) + { + moves_data.move[i] = gBattleMons[gBankAttacker].moves[i]; + moves_data.pp[i] = gBattleMons[gBankAttacker].pp[i]; + } + moves_data.ppBonuses = gBattleMons[gBankAttacker].ppBonuses; + EmitSetAttributes(0, REQUEST_MOVES_PP_BATTLE, 0, sizeof(struct move_pp), &moves_data); + MarkBufferBankForExecution(gActiveBank); + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 2; + gBattleTextBuff1[2] = gUnknown_02024C2C[gBankTarget]; + gBattleTextBuff1[3] = gUnknown_02024C2C[gBankTarget] >> 8; + gBattleTextBuff1[4] = 0xFF; + gBattlescriptCurrInstr += 5; + } + } + else //sketch fail + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); +} + +static bool8 IsTwoTurnsMove(u16 move) +{ + u8 effect = gBattleMoves[move].effect; + if (effect == EFFECT_SKULL_BASH || effect == EFFECT_RAZOR_WIND || effect == EFFECT_SKY_ATTACK || effect == EFFECT_SOLARBEAM || effect == EFFECT_FLY || effect == EFFECT_BIDE) + return 1; + else + return 0; +} + +static bool8 IsMoveUnchoosable(u16 move) +{ + if (move == 0 || move == MOVE_SLEEP_TALK || move == MOVE_ASSIST || move == MOVE_MIRROR_MOVE || move == MOVE_METRONOME) + return 1; + else + return 0; +} + +static u8 AttacksThisTurn(u8 bank, u16 move) //Note: returns 1 if it's a charging turn, otherwise 2 +{ + //first argument is unused + u8 effect; + if (gBattleMoves[move].effect == EFFECT_SOLARBEAM && (gBattleWeather & WEATHER_SUN_ANY)) + return 2; + effect = gBattleMoves[move].effect; + if (effect == EFFECT_SKULL_BASH || effect == EFFECT_RAZOR_WIND || effect == EFFECT_SKY_ATTACK || effect == EFFECT_SOLARBEAM || effect == EFFECT_FLY || effect == EFFECT_BIDE) + { + if ((gHitMarker & HITMARKER_x8000000)) + return 1; + } + return 2; +} + +static void atkA9_sleeptalk_choose_move(void) +{ + u8 unusable_moves = 0; + int i; + + for (i = 0; i < 4; i++) + { + if (IsMoveUnchoosable(gBattleMons[gBankAttacker].moves[i]) || gBattleMons[gBankAttacker].moves[i] == MOVE_FOCUS_PUNCH + || gBattleMons[gBankAttacker].moves[i] == MOVE_UPROAR || IsTwoTurnsMove(gBattleMons[gBankAttacker].moves[i])) + unusable_moves |= gBitTable[i]; + } + unusable_moves = CheckMoveLimitations(gBankAttacker, unusable_moves, 0xFD); + if (unusable_moves == 0xF) //all 4 moves cannot be chosen + gBattlescriptCurrInstr += 5; + else //at least one move can be chosen + { + u32 random_pos; + do + { + random_pos = Random() & 3; + } while ((gBitTable[random_pos] & unusable_moves)); + + gRandomMove = gBattleMons[gBankAttacker].moves[random_pos]; + gCurrMovePos = random_pos; + gHitMarker &= ~(HITMARKER_ATTACKSTRING_PRINTED); + gBankTarget = GetMoveTarget(gRandomMove, 0); + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + } +} + +static void atkAA_set_destinybond(void) +{ + gBattleMons[gBankAttacker].status2 |= STATUS2_DESTINY_BOND; + gBattlescriptCurrInstr++; +} + +static void DestinyBondFlagUpdate(void) +{ + u8 atk_side = GetBankSide(gBankAttacker); + u8 def_side = GetBankSide(gBankTarget); + if (gBattleMons[gBankTarget].status2 & STATUS2_DESTINY_BOND && atk_side != def_side && !(gHitMarker & HITMARKER_GRUDGE)) + gHitMarker |= HITMARKER_DESTINYBOND; +} + +static void atkAB_DestinyBondFlagUpdate(void) +{ + DestinyBondFlagUpdate(); + gBattlescriptCurrInstr++; +} + +static void atkAC_remaininghptopower(void) +{ + s32 hp_fraction = GetScaledHPFraction(gBattleMons[gBankAttacker].hp, gBattleMons[gBankAttacker].maxHP, 48); + int i; + for (i = 0; i < 12; i += 2) + { + if (hp_fraction <= sUnknown_081FAD26[i]) + break; + } + gDynamicBasePower = sUnknown_081FAD26[i + 1]; + gBattlescriptCurrInstr++; +} + +static void atkAD_spite_ppreduce(void) +{ + if (gLastUsedMove[gBankTarget] != 0 && gLastUsedMove[gBankTarget] != 0xFFFF && !(gStatuses3[gBankTarget] & STATUS3_SEMI_INVULNERABLE)) + { + int i; + for (i = 0; i < 4; i++) + { + if (gLastUsedMove[gBankTarget] == gBattleMons[gBankTarget].moves[i]) + break; + } + if (i != 4 && gBattleMons[gBankTarget].pp[i] > 1) + { + s32 lost_pp = (Random() & 3) + 2; + if (gBattleMons[gBankTarget].pp[i] < lost_pp) + lost_pp = gBattleMons[gBankTarget].pp[i]; + + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 2; + gBattleTextBuff1[2] = gLastUsedMove[gBankTarget]; + gBattleTextBuff1[3] = gLastUsedMove[gBankTarget] >> 8; + gBattleTextBuff1[4] = 0xFF; + ConvertIntToDecimalStringN(gBattleTextBuff2, lost_pp, 0, 1); + gBattleTextBuff2[0] = 0xFD; + gBattleTextBuff2[1] = 1; + gBattleTextBuff2[2] = 1; + gBattleTextBuff2[3] = 1; + gBattleTextBuff2[4] = lost_pp; + gBattleTextBuff2[5] = 0xFF; + + gBattleMons[gBankTarget].pp[i] -= lost_pp; + gActiveBank = gBankTarget; + if (!(gDisableStructs[gActiveBank].unk18_b & gBitTable[i]) + && !(gBattleMons[gActiveBank].status2 & STATUS2_TRANSFORMED)) + { + EmitSetAttributes(0, REQUEST_PPMOVE1_BATTLE + i, 0, 1, &gBattleMons[gActiveBank].pp[i]); + MarkBufferBankForExecution(gActiveBank); + } + gBattlescriptCurrInstr += 5; + if (gBattleMons[gBankTarget].pp[i] == 0) + CancelMultiTurnMoves(gBankTarget); + return; + } + } + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); +} + +static void atkAE_heal_party_status(void) +{ + register u32 zero2 asm("r4") = 0; + u32 zero = zero2; + u8 to_heal = 0; + if (gCurrentMove == MOVE_HEAL_BELL) + { + struct Pokemon* party; + int i; + + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + if (GetBankSide(gBankAttacker) == 0) + party = gPlayerParty; + else + party = gEnemyParty; + + if (gBattleMons[gBankAttacker].ability != ABILITY_SOUNDPROOF) + { + gBattleMons[gBankAttacker].status1 = 0; + } + else + { + RecordAbilityBattle(gBankAttacker, gBattleMons[gBankAttacker].ability); + gBattleCommunication[MULTISTRING_CHOOSER] |= 1; + } + + gActiveBank = BATTLE_STRUCT->scriptingActive = GetBankByPlayerAI(GetBankIdentity(gBankAttacker) ^ 2); + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && !(gAbsentBankFlags & gBitTable[gActiveBank])) + { + if (gBattleMons[gActiveBank].ability != ABILITY_SOUNDPROOF) + { + gBattleMons[gActiveBank].status1 = 0; + } + else + { + RecordAbilityBattle(gActiveBank, gBattleMons[gActiveBank].ability); + gBattleCommunication[MULTISTRING_CHOOSER] |= 2; + } + } + + for (i = 0; i < 6; i++) + { + u16 species = GetMonData(&party[i], MON_DATA_SPECIES2); + u8 abilityBit = GetMonData(&party[i], MON_DATA_ALT_ABILITY); + if (species != 0 && species != SPECIES_EGG) + { + u8 ability; + if (gBattlePartyID[gBankAttacker] == i) + ability = gBattleMons[gBankAttacker].ability; + else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && gBattlePartyID[gActiveBank] == i && !(gAbsentBankFlags & gBitTable[gActiveBank])) + ability = gBattleMons[gActiveBank].ability; + else + ability = GetAbilityBySpecies(species, abilityBit); + if (ability != ABILITY_SOUNDPROOF) + to_heal |= (1 << i); + } + } + } + else //Aromatherapy + { + gBattleCommunication[MULTISTRING_CHOOSER] = 4; + to_heal = 0x3F; + gBattleMons[gBankAttacker].status1 = zero2; + + gActiveBank = GetBankByPlayerAI(GetBankIdentity(gBankAttacker) ^ 2); + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && !(gAbsentBankFlags & gBitTable[gActiveBank])) + gBattleMons[gActiveBank].status1 = 0; + + } + //missing check? + gActiveBank = gBankAttacker; + EmitSetAttributes(0, REQUEST_STATUS_BATTLE, to_heal, 4, &zero); + MarkBufferBankForExecution(gActiveBank); + + gBattlescriptCurrInstr++; +} + +static void atkAF_cursetarget(void) +{ + if (gBattleMons[gBankTarget].status2 & STATUS2_CURSED || gStatuses3[gBankTarget] & STATUS3_SEMI_INVULNERABLE) + { + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + } + else + { + gBattleMons[gBankTarget].status2 |= STATUS2_CURSED; + gBattleMoveDamage = gBattleMons[gBankAttacker].maxHP / 2; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + gBattlescriptCurrInstr += 5; + } +} + +static void atkB0_set_spikes(void) +{ + u8 side = GetBankSide(gBankAttacker) ^ 1; + if (gSideTimer[side].spikesAmount == 3) + { + gSpecialStatuses[gBankAttacker].flag20 = 1; + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + } + else + { + gSideAffecting[side] |= SIDE_STATUS_SPIKES; + gSideTimer[side].spikesAmount++; + gBattlescriptCurrInstr += 5; + } +} + +static void atkB1_set_foresight(void) +{ + gBattleMons[gBankTarget].status2 |= STATUS2_FORESIGHT; + gBattlescriptCurrInstr++; +} + +static void atkB2_setperishsong(void) +{ + int not_affected_pokes = 0, i; + + for (i = 0; i < gNoOfAllBanks; i++) + { + if (gStatuses3[i] & STATUS3_PERISH_SONG || gBattleMons[i].ability == ABILITY_SOUNDPROOF) + not_affected_pokes++; + else + { + gStatuses3[i] |= STATUS3_PERISH_SONG; + gDisableStructs[i].perishSong1 = 3; + gDisableStructs[i].perishSong2 = 3; + } + } + + sub_80153D0(gBankAttacker); + if (not_affected_pokes == gNoOfAllBanks) + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + else + gBattlescriptCurrInstr += 5; +} + +static void atkB3_rolloutdamagecalculation(void) +{ + if (gBattleMoveFlags & MOVESTATUS_NOEFFECT) + { + CancelMultiTurnMoves(gBankAttacker); + gBattlescriptCurrInstr = BattleScript_1D6F74; + } + else + { + int i; + if (!(gBattleMons[gBankAttacker].status2 & STATUS2_MULTIPLETURNS)) //first hit + { + gDisableStructs[gBankAttacker].rolloutTimer1 = 5; + gDisableStructs[gBankAttacker].rolloutTimer2 = 5; + gBattleMons[gBankAttacker].status2 |= STATUS2_MULTIPLETURNS; + gLockedMove[gBankAttacker] = gCurrentMove; + } + if (--gDisableStructs[gBankAttacker].rolloutTimer1 == 0) + gBattleMons[gBankAttacker].status2 &= ~(STATUS2_MULTIPLETURNS); + + gDynamicBasePower = gBattleMoves[gCurrentMove].power; + for (i = 1; i < (5 - gDisableStructs[gBankAttacker].rolloutTimer1); i++) + gDynamicBasePower *= 2; + + if (gBattleMons[gBankAttacker].status2 & STATUS2_DEFENSE_CURL) + gDynamicBasePower *= 2; + + gBattlescriptCurrInstr++; + } +} + +static void atkB4_jumpifconfusedandstatmaxed(void) +{ + if (gBattleMons[gBankTarget].status2 & STATUS2_CONFUSION && gBattleMons[gBankTarget].statStages[BSScriptRead8(gBattlescriptCurrInstr + 1)] == 0xC) + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 2); + else + gBattlescriptCurrInstr += 6; +} + +static void atkB5_furycuttercalc(void) +{ + if (gBattleMoveFlags & MOVESTATUS_NOEFFECT) + { + gDisableStructs[gBankAttacker].furyCutterCounter = 0; + gBattlescriptCurrInstr = BattleScript_1D6F74; + } + else + { + int i; + + if (gDisableStructs[gBankAttacker].furyCutterCounter != 5) + gDisableStructs[gBankAttacker].furyCutterCounter++; + + gDynamicBasePower = gBattleMoves[gCurrentMove].power; + for (i = 1; i < gDisableStructs[gBankAttacker].furyCutterCounter; i++) + gDynamicBasePower *= 2; + + gBattlescriptCurrInstr++; + } +} + +static void atkB6_happinesstodamagecalculation(void) +{ + if (gBattleMoves[gCurrentMove].effect == EFFECT_RETURN) + gDynamicBasePower = 10 * (gBattleMons[gBankAttacker].friendship) / 25; + else //EFFECT_FRUSTRATION + gDynamicBasePower = 10 * (255 - gBattleMons[gBankAttacker].friendship) / 25; + gBattlescriptCurrInstr++; +} + +static void atkB7_presentdamagecalculation(void) +{ + s32 rand = Random() & 0xFF; + if (rand < 102) + gDynamicBasePower = 40; + else if (rand < 178) + gDynamicBasePower = 80; + else if (rand < 204) + gDynamicBasePower = 120; + else + { + gBattleMoveDamage = gBattleMons[gBankTarget].maxHP / 4; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + gBattleMoveDamage *= -1; + } + if (rand < 204) + gBattlescriptCurrInstr = BattleScript_1D6F44; + else if (gBattleMons[gBankTarget].maxHP == gBattleMons[gBankTarget].hp) + gBattlescriptCurrInstr = BattleScript_1D83B5; + else + { + //gBattleMoveFlags &= ~(MOVESTATUS_NOTAFFECTED); only in Emerald + gBattlescriptCurrInstr = BattleScript_1D839B; + } +} + +static void atkB8_set_safeguard(void) +{ + if (gSideAffecting[GetBankIdentity(gBankAttacker) & 1] & SIDE_STATUS_SAFEGUARD) + { + gBattleMoveFlags |= MOVESTATUS_MISSED; + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + } + else + { + gSideAffecting[GetBankIdentity(gBankAttacker) & 1] |= SIDE_STATUS_SAFEGUARD; + gSideTimer[GetBankIdentity(gBankAttacker) & 1].safeguardTimer = 5; + gBattleCommunication[MULTISTRING_CHOOSER] = 5; + } + gBattlescriptCurrInstr++; +} + +static void atkB9_magnitudedamagecalculation(void) +{ + s32 magnitude = Random() % 100; + if (magnitude < 5) + { + gDynamicBasePower = 10; + magnitude = 4; + } + else if (magnitude < 15) + { + gDynamicBasePower = 30; + magnitude = 5; + } + else if (magnitude < 35) + { + gDynamicBasePower = 50; + magnitude = 6; + } + else if (magnitude < 65) + { + gDynamicBasePower = 70; + magnitude = 7; + } + else if (magnitude < 85) + { + gDynamicBasePower = 90; + magnitude = 8; + } + else if (magnitude < 95) + { + gDynamicBasePower = 110; + magnitude = 9; + } + else + { + gDynamicBasePower = 150; + magnitude = 10; + } + + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 1; + gBattleTextBuff1[2] = 1; + gBattleTextBuff1[3] = 2; + gBattleTextBuff1[4] = magnitude; + gBattleTextBuff1[5] = 0xFF; + + for (gBankTarget = 0; gBankTarget < gNoOfAllBanks; gBankTarget++) + { + if (gBankTarget == gBankAttacker) + continue; + if (!(gAbsentBankFlags & gBitTable[gBankTarget])) //a valid target was found + break; + } + gBattlescriptCurrInstr++; +} + +static void atkBA_jumpifnopursuitswitchdmg(void) +{ + if (gMultiHitCounter == 1) + { + if (GetBankSide(gBankAttacker) == 0) + gBankTarget = GetBankByPlayerAI(1); + else + gBankTarget = GetBankByPlayerAI(0); + } + else + { + if (GetBankSide(gBankAttacker) == 0) + gBankTarget = GetBankByPlayerAI(3); + else + gBankTarget = GetBankByPlayerAI(2); + } + + if (gActionForBanks[gBankTarget] == 0 && gBankAttacker == ewram[gBankTarget + 0x16010] && !(gBattleMons[gBankTarget].status1 & (STATUS_SLEEP | STATUS_FREEZE)) + && gBattleMons[gBankAttacker].hp && !gDisableStructs[gBankTarget].truantCounter && gChosenMovesByBanks[gBankTarget] == MOVE_PURSUIT) + { + int i; + for (i = 0; i < gNoOfAllBanks; i++) + { + if (gTurnOrder[i] == gBankTarget) + gUnknown_02024A76[i] = 11; + } + gCurrentMove = MOVE_PURSUIT; + gBattlescriptCurrInstr += 5; + BATTLE_STRUCT->animTurn = 1; + gHitMarker &= ~(HITMARKER_ATTACKSTRING_PRINTED); + } + else + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); +} + +static void atkBB_setsunny(void) +{ + if (gBattleWeather & WEATHER_SUN_ANY) + { + gBattleMoveFlags |= MOVESTATUS_MISSED; + gBattleCommunication[MULTISTRING_CHOOSER] = 2; + } + else + { + gBattleWeather = WEATHER_SUN_TEMPORARY; + gBattleCommunication[MULTISTRING_CHOOSER] = 4; + gWishFutureKnock.weatherDuration = 5; + } + gBattlescriptCurrInstr++; +} + +static void atkBC_maxattackhalvehp(void) //belly drum +{ + u32 half_hp = gBattleMons[gBankAttacker].maxHP / 2; + if (!(gBattleMons[gBankAttacker].maxHP / 2)) + half_hp = 1; + + if (gBattleMons[gBankAttacker].statStages[STAT_STAGE_ATK] < 12 && gBattleMons[gBankAttacker].hp > half_hp) + { + gBattleMons[gBankAttacker].statStages[STAT_STAGE_ATK] = 12; + gBattleMoveDamage = gBattleMons[gBankAttacker].maxHP / 2; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + gBattlescriptCurrInstr += 5; + } + else + { + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + } +} + +static void atkBD_copyfoestats(void) //psych up +{ + int i; + for (i = 0; i < 8; i++) + { + gBattleMons[gBankAttacker].statStages[i] = gBattleMons[gBankTarget].statStages[i]; + } + gBattlescriptCurrInstr += 5; //why not 1? possible unused fail possibility? +} + +static void atkBE_breakfree(void) //rapid spin +{ + if (gBattleMons[gBankAttacker].status2 & STATUS2_WRAPPED) + { + gBattleMons[gBankAttacker].status2 &= ~(STATUS2_WRAPPED); + gBankTarget = ewram[gBankAttacker + 0x16020]; + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 2; + gBattleTextBuff1[2] = ewram[gBankAttacker * 2 + 0x16004]; + gBattleTextBuff1[3] = ewram[gBankAttacker * 2 + 0x16005]; + gBattleTextBuff1[4] = 0xFF; + b_movescr_stack_push_cursor(); + gBattlescriptCurrInstr = BattleScript_WrapFree; + } + else if (gStatuses3[gBankAttacker] & STATUS3_LEECHSEED) + { + gStatuses3[gBankAttacker] &= ~(STATUS3_LEECHSEED); + gStatuses3[gBankAttacker] &= ~(STATUS3_LEECHSEED_BANK); + b_movescr_stack_push_cursor(); + gBattlescriptCurrInstr = BattleScript_LeechSeedFree; + } + else if (gSideAffecting[GetBankSide(gBankAttacker)] & SIDE_STATUS_SPIKES) + { + gSideAffecting[GetBankSide(gBankAttacker)] &= ~(SIDE_STATUS_SPIKES); + gSideTimer[GetBankSide(gBankAttacker)].spikesAmount = 0; + b_movescr_stack_push_cursor(); + gBattlescriptCurrInstr = BattleScript_SpikesFree; + } + else + gBattlescriptCurrInstr++; +} + +static void atkBF_set_defense_curl(void) +{ + gBattleMons[gBankAttacker].status2 |= STATUS2_DEFENSE_CURL; + gBattlescriptCurrInstr++; +} + +static void atkC0_recoverbasedonsunlight(void) +{ + gBankTarget = gBankAttacker; + if (gBattleMons[gBankAttacker].hp != gBattleMons[gBankAttacker].maxHP) + { + if (!gBattleWeather || !WEATHER_HAS_EFFECT) + gBattleMoveDamage = gBattleMons[gBankAttacker].maxHP / 2; + else if (gBattleWeather & WEATHER_SUN_ANY) + gBattleMoveDamage = 20 * gBattleMons[gBankAttacker].maxHP / 30; + else //not sunny weather + gBattleMoveDamage = gBattleMons[gBankAttacker].maxHP / 4; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + gBattleMoveDamage *= -1; + gBattlescriptCurrInstr += 5; + } + else + { + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + } +} + +__attribute__((naked)) +static void atkC1_hidden_power(void) +{ + asm(".syntax unified\n\ +push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + ldr r2, _08029894 @ =gBattleMons\n\ + ldr r0, _08029898 @ =gBankAttacker\n\ + ldrb r1, [r0]\n\ + movs r0, 0x58\n\ + adds r4, r1, 0\n\ + muls r4, r0\n\ + adds r4, r2\n\ + ldrb r0, [r4, 0x14]\n\ + mov r10, r0\n\ + mov r7, r10\n\ + lsls r7, 27\n\ + adds r0, r7, 0\n\ + lsrs r0, 27\n\ + mov r10, r0\n\ + movs r1, 0x2\n\ + mov r2, r10\n\ + ands r2, r1\n\ + asrs r2, 1\n\ + ldrh r7, [r4, 0x14]\n\ + mov r9, r7\n\ + mov r0, r9\n\ + lsls r0, 22\n\ + mov r9, r0\n\ + lsrs r3, r0, 27\n\ + adds r0, r1, 0\n\ + ands r0, r3\n\ + orrs r2, r0\n\ + ldrb r7, [r4, 0x15]\n\ + mov r8, r7\n\ + mov r0, r8\n\ + lsls r0, 25\n\ + mov r8, r0\n\ + lsrs r3, r0, 27\n\ + adds r0, r1, 0\n\ + ands r0, r3\n\ + lsls r0, 1\n\ + orrs r2, r0\n\ + ldr r6, [r4, 0x14]\n\ + lsls r6, 12\n\ + lsrs r3, r6, 27\n\ + adds r0, r1, 0\n\ + ands r0, r3\n\ + lsls r0, 2\n\ + orrs r2, r0\n\ + ldrh r5, [r4, 0x16]\n\ + lsls r5, 23\n\ + lsrs r3, r5, 27\n\ + adds r0, r1, 0\n\ + ands r0, r3\n\ + lsls r0, 3\n\ + orrs r2, r0\n\ + ldrb r3, [r4, 0x17]\n\ + lsls r3, 26\n\ + lsrs r0, r3, 27\n\ + ands r1, r0\n\ + lsls r1, 4\n\ + orrs r2, r1\n\ + movs r1, 0x1\n\ + adds r4, r1, 0\n\ + mov r7, r10\n\ + ands r4, r7\n\ + mov r0, r9\n\ + lsrs r0, 27\n\ + mov r9, r0\n\ + adds r0, r1, 0\n\ + mov r7, r9\n\ + ands r0, r7\n\ + lsls r0, 1\n\ + orrs r4, r0\n\ + mov r0, r8\n\ + lsrs r0, 27\n\ + mov r8, r0\n\ + adds r0, r1, 0\n\ + mov r7, r8\n\ + ands r0, r7\n\ + lsls r0, 2\n\ + orrs r4, r0\n\ + lsrs r6, 27\n\ + adds r0, r1, 0\n\ + ands r0, r6\n\ + lsls r0, 3\n\ + orrs r4, r0\n\ + lsrs r5, 27\n\ + adds r0, r1, 0\n\ + ands r0, r5\n\ + lsls r0, 4\n\ + orrs r4, r0\n\ + lsrs r3, 27\n\ + ands r1, r3\n\ + lsls r1, 5\n\ + orrs r4, r1\n\ + ldr r5, _0802989C @ =gDynamicBasePower\n\ + lsls r0, r2, 2\n\ + adds r0, r2\n\ + lsls r0, 3\n\ + movs r1, 0x3F\n\ + bl __divsi3\n\ + adds r0, 0x1E\n\ + strh r0, [r5]\n\ + ldr r5, _080298A0 @ =0x02000000\n\ + lsls r0, r4, 4\n\ + subs r0, r4\n\ + movs r1, 0x3F\n\ + bl __divsi3\n\ + adds r1, r0, 0x1\n\ + ldr r0, _080298A4 @ =0x0001601c\n\ + adds r5, r0\n\ + strb r1, [r5]\n\ + lsls r0, r1, 24\n\ + lsrs r0, 24\n\ + cmp r0, 0x8\n\ + bls _08029876\n\ + adds r0, r1, 0x1\n\ + strb r0, [r5]\n\ +_08029876:\n\ + ldrb r0, [r5]\n\ + movs r1, 0xC0\n\ + orrs r0, r1\n\ + strb r0, [r5]\n\ + ldr r1, _080298A8 @ =gBattlescriptCurrInstr\n\ + ldr r0, [r1]\n\ + adds r0, 0x1\n\ + str r0, [r1]\n\ + pop {r3-r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_08029894: .4byte gBattleMons\n\ +_08029898: .4byte gBankAttacker\n\ +_0802989C: .4byte gDynamicBasePower\n\ +_080298A0: .4byte 0x02000000\n\ +_080298A4: .4byte 0x0001601c\n\ +_080298A8: .4byte gBattlescriptCurrInstr\n\ + .syntax divided"); +} + +static void atkC2_selectnexttarget(void) +{ + for (gBankTarget = 0; gBankTarget < gNoOfAllBanks; gBankTarget++) + { + if (gBankTarget == gBankAttacker) + continue; + if (!(gAbsentBankFlags & gBitTable[gBankTarget])) + break; + } + gBattlescriptCurrInstr++; +} + +static void atkC3_setfutureattack(void) +{ + if (gWishFutureKnock.futureSightCounter[gBankTarget] != 0) + { + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + } + else + { + gWishFutureKnock.futureSightMove[gBankTarget] = gCurrentMove; + gWishFutureKnock.futureSightAttacker[gBankTarget] = gBankAttacker; + gWishFutureKnock.futureSightCounter[gBankTarget] = 3; + gWishFutureKnock.futureSightDmg[gBankTarget] = CalculateBaseDamage(&gBattleMons[gBankAttacker], &gBattleMons[gBankTarget], gCurrentMove, + gSideAffecting[GetBankIdentity(gBankTarget) & 1], 0, + 0, gBankAttacker, gBankTarget); + + if (gProtectStructs[gBankAttacker].helpingHand) + gWishFutureKnock.futureSightDmg[gBankTarget] = gWishFutureKnock.futureSightDmg[gBankTarget] * 15 / 10; + + if (gCurrentMove == MOVE_DOOM_DESIRE) + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + else + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + + gBattlescriptCurrInstr += 5; + } +} + +#ifdef NONMATCHING +static void atkC4_beat_up(void) +{ + register struct Pokemon* party asm("r7"); + if (GetBankSide(gBankAttacker) == 0) + party = gPlayerParty; + else + party = gEnemyParty; + + if (gBattleMons[gBankTarget].hp == 0) + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + else + { + while (gBattleCommunication[0] < 6) + { + if (GetMonData(&party[gBattleCommunication[0]], MON_DATA_HP) && GetMonData(&party[gBattleCommunication[0]], MON_DATA_SPECIES2) + && GetMonData(&party[gBattleCommunication[0]], MON_DATA_SPECIES2) != SPECIES_EGG && !GetMonData(&party[gBattleCommunication[0]], MON_DATA_STATUS)) + break; + gBattleCommunication[0]++; + } + if (gBattleCommunication[0] < 6) + { + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 4; + gBattleTextBuff1[2] = gBankAttacker; + gBattleTextBuff1[3] = gBattleCommunication[0]; + gBattleTextBuff1[4] = 0xFF; + gBattlescriptCurrInstr += 9; + + gBattleMoveDamage = gBaseStats[GetMonData(&party[gBattleCommunication[0]], MON_DATA_SPECIES)].baseAttack; + gBattleMoveDamage *= gBattleMoves[gCurrentMove].power; + gBattleMoveDamage *= (GetMonData(&party[gBattleCommunication[0]], MON_DATA_LEVEL) * 2 / 5 + 2); + gBattleMoveDamage /= gBaseStats[gBattleMons[gBankTarget].species].baseDefense; + gBattleMoveDamage = (gBattleMoveDamage / 50) + 2; + if (gProtectStructs[gBankAttacker].helpingHand) + gBattleMoveDamage = gBattleMoveDamage * 15 / 10; + + gBattleCommunication[0]++; + } + else if (gBattleCommunication[0] != 0) + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + else + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 5); + } +} +#else +__attribute__((naked)) +static void atkC4_beat_up(void) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r9\n\ + mov r6, r8\n\ + push {r6,r7}\n\ + ldr r0, _08029A8C @ =gBankAttacker\n\ + ldrb r0, [r0]\n\ + bl GetBankSide\n\ + lsls r0, 24\n\ + ldr r7, _08029A90 @ =gEnemyParty\n\ + cmp r0, 0\n\ + bne _08029A62\n\ + ldr r7, _08029A94 @ =gPlayerParty\n\ +_08029A62:\n\ + ldr r2, _08029A98 @ =gBattleMons\n\ + ldr r0, _08029A9C @ =gBankTarget\n\ + ldrb r1, [r0]\n\ + movs r0, 0x58\n\ + muls r0, r1\n\ + adds r0, r2\n\ + ldrh r0, [r0, 0x28]\n\ + cmp r0, 0\n\ + bne _08029AA4\n\ + ldr r3, _08029AA0 @ =gBattlescriptCurrInstr\n\ + ldr r2, [r3]\n\ + ldrb r1, [r2, 0x1]\n\ + ldrb r0, [r2, 0x2]\n\ + lsls r0, 8\n\ + orrs r1, r0\n\ + ldrb r0, [r2, 0x3]\n\ + lsls r0, 16\n\ + orrs r1, r0\n\ + ldrb r0, [r2, 0x4]\n\ + b _08029C40\n\ + .align 2, 0\n\ +_08029A8C: .4byte gBankAttacker\n\ +_08029A90: .4byte gEnemyParty\n\ +_08029A94: .4byte gPlayerParty\n\ +_08029A98: .4byte gBattleMons\n\ +_08029A9C: .4byte gBankTarget\n\ +_08029AA0: .4byte gBattlescriptCurrInstr\n\ +_08029AA4:\n\ + ldr r6, _08029BE0 @ =gBattleCommunication\n\ + ldrb r0, [r6]\n\ + mov r8, r0\n\ + cmp r0, 0x5\n\ + bls _08029AB0\n\ + b _08029C0C\n\ +_08029AB0:\n\ + adds r4, r6, 0\n\ + movs r5, 0x64\n\ +_08029AB4:\n\ + ldrb r0, [r4]\n\ + muls r0, r5\n\ + adds r0, r7, r0\n\ + movs r1, 0x39\n\ + bl GetMonData\n\ + cmp r0, 0\n\ + beq _08029AF8\n\ + ldrb r0, [r6]\n\ + muls r0, r5\n\ + adds r0, r7, r0\n\ + movs r1, 0x41\n\ + bl GetMonData\n\ + cmp r0, 0\n\ + beq _08029AF8\n\ + ldrb r0, [r4]\n\ + muls r0, r5\n\ + adds r0, r7, r0\n\ + movs r1, 0x41\n\ + bl GetMonData\n\ + movs r1, 0xCE\n\ + lsls r1, 1\n\ + cmp r0, r1\n\ + beq _08029AF8\n\ + ldrb r0, [r4]\n\ + muls r0, r5\n\ + adds r0, r7, r0\n\ + movs r1, 0x37\n\ + bl GetMonData\n\ + cmp r0, 0\n\ + beq _08029B08\n\ +_08029AF8:\n\ + ldrb r0, [r4]\n\ + adds r0, 0x1\n\ + strb r0, [r4]\n\ + adds r6, r4, 0\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + cmp r0, 0x5\n\ + bls _08029AB4\n\ +_08029B08:\n\ + ldr r1, _08029BE0 @ =gBattleCommunication\n\ + mov r9, r1\n\ + ldrb r2, [r1]\n\ + cmp r2, 0x5\n\ + bhi _08029C0C\n\ + ldr r1, _08029BE4 @ =gBattleTextBuff1\n\ + movs r0, 0xFD\n\ + strb r0, [r1]\n\ + movs r0, 0x4\n\ + strb r0, [r1, 0x1]\n\ + ldr r6, _08029BE8 @ =gBankAttacker\n\ + ldrb r0, [r6]\n\ + strb r0, [r1, 0x2]\n\ + strb r2, [r1, 0x3]\n\ + movs r0, 0xFF\n\ + strb r0, [r1, 0x4]\n\ + ldr r1, _08029BEC @ =gBattlescriptCurrInstr\n\ + ldr r0, [r1]\n\ + adds r0, 0x9\n\ + str r0, [r1]\n\ + ldr r2, _08029BF0 @ =gBattleMoveDamage\n\ + mov r8, r2\n\ + ldr r5, _08029BF4 @ =gBaseStats\n\ + mov r1, r9\n\ + ldrb r0, [r1]\n\ + movs r4, 0x64\n\ + muls r0, r4\n\ + adds r0, r7, r0\n\ + movs r1, 0xB\n\ + bl GetMonData\n\ + lsls r1, r0, 3\n\ + subs r1, r0\n\ + lsls r1, 2\n\ + adds r1, r5\n\ + ldrb r3, [r1, 0x1]\n\ + mov r2, r8\n\ + str r3, [r2]\n\ + ldr r2, _08029BF8 @ =gBattleMoves\n\ + ldr r0, _08029BFC @ =gCurrentMove\n\ + ldrh r1, [r0]\n\ + lsls r0, r1, 1\n\ + adds r0, r1\n\ + lsls r0, 2\n\ + adds r0, r2\n\ + ldrb r0, [r0, 0x1]\n\ + muls r0, r3\n\ + mov r1, r8\n\ + str r0, [r1]\n\ + mov r2, r9\n\ + ldrb r0, [r2]\n\ + muls r0, r4\n\ + adds r0, r7, r0\n\ + movs r1, 0x38\n\ + bl GetMonData\n\ + lsls r0, 1\n\ + movs r1, 0x5\n\ + bl __udivsi3\n\ + adds r0, 0x2\n\ + mov r2, r8\n\ + ldr r1, [r2]\n\ + muls r0, r1\n\ + str r0, [r2]\n\ + ldr r3, _08029C00 @ =gBattleMons\n\ + ldr r1, _08029C04 @ =gBankTarget\n\ + ldrb r2, [r1]\n\ + movs r1, 0x58\n\ + muls r1, r2\n\ + adds r1, r3\n\ + ldrh r2, [r1]\n\ + lsls r1, r2, 3\n\ + subs r1, r2\n\ + lsls r1, 2\n\ + adds r1, r5\n\ + ldrb r1, [r1, 0x2]\n\ + bl __divsi3\n\ + mov r1, r8\n\ + str r0, [r1]\n\ + movs r1, 0x32\n\ + bl __divsi3\n\ + adds r2, r0, 0x2\n\ + mov r0, r8\n\ + str r2, [r0]\n\ + ldr r1, _08029C08 @ =gProtectStructs\n\ + ldrb r0, [r6]\n\ + lsls r0, 4\n\ + adds r0, r1\n\ + ldrb r0, [r0]\n\ + lsls r0, 28\n\ + cmp r0, 0\n\ + bge _08029BD4\n\ + lsls r0, r2, 4\n\ + subs r0, r2\n\ + movs r1, 0xA\n\ + bl __divsi3\n\ + mov r1, r8\n\ + str r0, [r1]\n\ +_08029BD4:\n\ + mov r2, r9\n\ + ldrb r0, [r2]\n\ + adds r0, 0x1\n\ + strb r0, [r2]\n\ + b _08029C46\n\ + .align 2, 0\n\ +_08029BE0: .4byte gBattleCommunication\n\ +_08029BE4: .4byte gBattleTextBuff1\n\ +_08029BE8: .4byte gBankAttacker\n\ +_08029BEC: .4byte gBattlescriptCurrInstr\n\ +_08029BF0: .4byte gBattleMoveDamage\n\ +_08029BF4: .4byte gBaseStats\n\ +_08029BF8: .4byte gBattleMoves\n\ +_08029BFC: .4byte gCurrentMove\n\ +_08029C00: .4byte gBattleMons\n\ +_08029C04: .4byte gBankTarget\n\ +_08029C08: .4byte gProtectStructs\n\ +_08029C0C:\n\ + mov r0, r8\n\ + cmp r0, 0\n\ + beq _08029C2C\n\ + ldr r3, _08029C28 @ =gBattlescriptCurrInstr\n\ + ldr r2, [r3]\n\ + ldrb r1, [r2, 0x1]\n\ + ldrb r0, [r2, 0x2]\n\ + lsls r0, 8\n\ + orrs r1, r0\n\ + ldrb r0, [r2, 0x3]\n\ + lsls r0, 16\n\ + orrs r1, r0\n\ + ldrb r0, [r2, 0x4]\n\ + b _08029C40\n\ + .align 2, 0\n\ +_08029C28: .4byte gBattlescriptCurrInstr\n\ +_08029C2C:\n\ + ldr r3, _08029C54 @ =gBattlescriptCurrInstr\n\ + ldr r2, [r3]\n\ + ldrb r1, [r2, 0x5]\n\ + ldrb r0, [r2, 0x6]\n\ + lsls r0, 8\n\ + orrs r1, r0\n\ + ldrb r0, [r2, 0x7]\n\ + lsls r0, 16\n\ + orrs r1, r0\n\ + ldrb r0, [r2, 0x8]\n\ +_08029C40:\n\ + lsls r0, 24\n\ + orrs r1, r0\n\ + str r1, [r3]\n\ +_08029C46:\n\ + pop {r3,r4}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_08029C54: .4byte gBattlescriptCurrInstr\n\ + .syntax divided"); +} +#endif // NONMATCHING + +static void atkC5_hidepreattack(void) +{ + switch (gCurrentMove) + { + case MOVE_FLY: + case MOVE_BOUNCE: + gStatuses3[gBankAttacker] |= STATUS3_ON_AIR; + break; + case MOVE_DIG: + gStatuses3[gBankAttacker] |= STATUS3_UNDERGROUND; + break; + case MOVE_DIVE: + gStatuses3[gBankAttacker] |= STATUS3_UNDERWATER; + break; + } + gBattlescriptCurrInstr++; +} + +static void atkC6_unhidepostattack(void) +{ + switch (gCurrentMove) + { + case MOVE_FLY: + case MOVE_BOUNCE: + gStatuses3[gBankAttacker] &= ~STATUS3_ON_AIR; + break; + case MOVE_DIG: + gStatuses3[gBankAttacker] &= ~STATUS3_UNDERGROUND; + break; + case MOVE_DIVE: + gStatuses3[gBankAttacker] &= ~STATUS3_UNDERWATER; + break; + } + gBattlescriptCurrInstr++; +} + +static void atkC7_setminimize(void) +{ + if (gHitMarker & HITMARKER_OBEYS) + gStatuses3[gBankAttacker] |= STATUS3_MINIMIZED; + gBattlescriptCurrInstr++; +} + +static void atkC8_sethail(void) +{ + if (gBattleWeather & WEATHER_HAIL) + { + gBattleMoveFlags |= MOVESTATUS_MISSED; + gBattleCommunication[MULTISTRING_CHOOSER] = 2; + } + else + { + gBattleWeather = WEATHER_HAIL; + gBattleCommunication[MULTISTRING_CHOOSER] = 5; + gWishFutureKnock.weatherDuration = 5; + } + gBattlescriptCurrInstr++; +} + +static void atkC9_jumpifattackandspecialattackcannotfall(void) //memento +{ + if (gBattleMons[gBankTarget].statStages[STAT_STAGE_ATK] == 0 + && gBattleMons[gBankTarget].statStages[STAT_STAGE_SPATK] == 0 + && gBattleCommunication[6] != 1) + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + else + { + gActiveBank = gBankAttacker; + gBattleMoveDamage = gBattleMons[gActiveBank].hp; + EmitHealthBarUpdate(0, 0x7FFF); + MarkBufferBankForExecution(gActiveBank); + gBattlescriptCurrInstr += 5; + } +} + +static void atkCA_setforcedtarget(void) //follow me +{ + gSideTimer[GetBankSide(gBankAttacker)].followmeTimer = 1; + gSideTimer[GetBankSide(gBankAttacker)].followmeTarget = gBankAttacker; + gBattlescriptCurrInstr++; +} + +static void atkCB_setcharge(void) +{ + gStatuses3[gBankAttacker] |= STATUS3_CHARGED_UP; + gDisableStructs[gBankAttacker].chargeTimer1 = 2; + gDisableStructs[gBankAttacker].chargeTimer2 = 2; + gBattlescriptCurrInstr++; +} + +static void atkCC_callterrainattack(void) //nature power +{ + gHitMarker &= ~(HITMARKER_ATTACKSTRING_PRINTED); + gCurrentMove = sNaturePowerMoves[gBattleTerrain]; + gBankTarget = GetMoveTarget(gCurrentMove, 0); + b_movescr_stack_push(gBattleScriptsEffectsTable[gBattleMoves[gCurrentMove].effect]); + gBattlescriptCurrInstr++; +} + +static void atkCD_cureifburnedparalysedorpoisoned(void) //refresh +{ + if (gBattleMons[gBankAttacker].status1 & (STATUS_POISON | STATUS_BURN | STATUS_PARALYSIS | STATUS_TOXIC_POISON)) + { + gBattleMons[gBankAttacker].status1 = 0; + gBattlescriptCurrInstr += 5; + gActiveBank = gBankAttacker; + EmitSetAttributes(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBank].status1); + MarkBufferBankForExecution(gActiveBank); + } + else + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); +} + +static void atkCE_settorment(void) +{ + if (gBattleMons[gBankTarget].status2 & STATUS2_TORMENT) + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + else + { + gBattleMons[gBankTarget].status2 |= STATUS2_TORMENT; + gBattlescriptCurrInstr += 5; + } +} + +static void atkCF_jumpifnodamage(void) +{ + if (gProtectStructs[gBankAttacker].physicalDmg || gProtectStructs[gBankAttacker].specialDmg) + gBattlescriptCurrInstr += 5; + else + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); +} + +static void atkD0_settaunt(void) +{ + if (gDisableStructs[gBankTarget].tauntTimer1 == 0) + { + gDisableStructs[gBankTarget].tauntTimer1 = 2; + gDisableStructs[gBankTarget].tauntTimer2 = 2; + gBattlescriptCurrInstr += 5; + } + else + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); +} + +static void atkD1_set_helpinghand(void) +{ + gBankTarget = GetBankByPlayerAI(GetBankIdentity(gBankAttacker) ^ 2); + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && !(gAbsentBankFlags & gBitTable[gBankTarget]) + && !gProtectStructs[gBankAttacker].helpingHand && !gProtectStructs[gBankTarget].helpingHand) + { + gProtectStructs[gBankTarget].helpingHand = 1; + gBattlescriptCurrInstr += 5; + } + else + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); +} + +#ifdef NONMATCHING +static void atkD2_swap_items(void) +{ + if ((GetBankSide(gBankAttacker) != 1 || gBattleTypeFlags & (BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_LINK | BATTLE_TYPE_EREADER_TRAINER) || gTrainerBattleOpponent == 0x400)) + { + u8 side = GetBankSide(gBankAttacker); + if (gBattleTypeFlags) + } + + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); +} + +#else +__attribute__((naked)) +static void atkD2_swap_items(void) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + sub sp, 0x4\n\ + ldr r0, _0802A30C @ =gBankAttacker\n\ + ldrb r0, [r0]\n\ + bl GetBankSide\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + cmp r0, 0x1\n\ + bne _0802A24C\n\ + ldr r0, _0802A310 @ =gBattleTypeFlags\n\ + ldrh r1, [r0]\n\ + ldr r0, _0802A314 @ =0x00000902\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _0802A24C\n\ + ldr r0, _0802A318 @ =gTrainerBattleOpponent\n\ + ldrh r1, [r0]\n\ + movs r0, 0x80\n\ + lsls r0, 3\n\ + cmp r1, r0\n\ + bne _0802A2EE\n\ +_0802A24C:\n\ + ldr r4, _0802A30C @ =gBankAttacker\n\ + ldrb r0, [r4]\n\ + bl GetBankSide\n\ + lsls r0, 24\n\ + lsrs r2, r0, 24\n\ + ldr r0, _0802A310 @ =gBattleTypeFlags\n\ + ldrh r1, [r0]\n\ + ldr r0, _0802A314 @ =0x00000902\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _0802A290\n\ + ldr r0, _0802A318 @ =gTrainerBattleOpponent\n\ + ldrh r1, [r0]\n\ + movs r0, 0x80\n\ + lsls r0, 3\n\ + cmp r1, r0\n\ + beq _0802A290\n\ + ldr r0, _0802A31C @ =gWishFutureKnock\n\ + adds r0, 0x29\n\ + adds r0, r2, r0\n\ + ldrb r1, [r0]\n\ + ldr r3, _0802A320 @ =gBitTable\n\ + ldr r2, _0802A324 @ =gBattlePartyID\n\ + ldrb r0, [r4]\n\ + lsls r0, 1\n\ + adds r0, r2\n\ + ldrh r0, [r0]\n\ + lsls r0, 2\n\ + adds r0, r3\n\ + ldr r0, [r0]\n\ + ands r1, r0\n\ + cmp r1, 0\n\ + bne _0802A2EE\n\ +_0802A290:\n\ + ldr r0, _0802A328 @ =gBattleMons\n\ + mov r9, r0\n\ + ldr r1, _0802A30C @ =gBankAttacker\n\ + ldrb r4, [r1]\n\ + movs r2, 0x58\n\ + mov r8, r2\n\ + mov r0, r8\n\ + muls r0, r4\n\ + mov r3, r9\n\ + adds r5, r0, r3\n\ + ldrh r3, [r5, 0x2E]\n\ + adds r1, r3, 0\n\ + cmp r1, 0\n\ + bne _0802A2BE\n\ + ldr r0, _0802A32C @ =gBankTarget\n\ + ldrb r0, [r0]\n\ + mov r2, r8\n\ + muls r2, r0\n\ + adds r0, r2, 0\n\ + add r0, r9\n\ + ldrh r0, [r0, 0x2E]\n\ + cmp r0, 0\n\ + beq _0802A2EE\n\ +_0802A2BE:\n\ + cmp r1, 0xAF\n\ + beq _0802A2EE\n\ + ldr r7, _0802A32C @ =gBankTarget\n\ + ldrb r0, [r7]\n\ + mov r1, r8\n\ + muls r1, r0\n\ + adds r0, r1, 0\n\ + mov r1, r9\n\ + adds r2, r0, r1\n\ + ldrh r1, [r2, 0x2E]\n\ + cmp r1, 0xAF\n\ + beq _0802A2EE\n\ + adds r0, r3, 0\n\ + subs r0, 0x79\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + cmp r0, 0xB\n\ + bls _0802A2EE\n\ + adds r0, r1, 0\n\ + subs r0, 0x79\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + cmp r0, 0xB\n\ + bhi _0802A334\n\ +_0802A2EE:\n\ + ldr r3, _0802A330 @ =gBattlescriptCurrInstr\n\ + ldr r2, [r3]\n\ + ldrb r1, [r2, 0x1]\n\ + ldrb r0, [r2, 0x2]\n\ + lsls r0, 8\n\ + orrs r1, r0\n\ + ldrb r0, [r2, 0x3]\n\ + lsls r0, 16\n\ + orrs r1, r0\n\ + ldrb r0, [r2, 0x4]\n\ + lsls r0, 24\n\ + orrs r1, r0\n\ + str r1, [r3]\n\ + b _0802A49A\n\ + .align 2, 0\n\ +_0802A30C: .4byte gBankAttacker\n\ +_0802A310: .4byte gBattleTypeFlags\n\ +_0802A314: .4byte 0x00000902\n\ +_0802A318: .4byte gTrainerBattleOpponent\n\ +_0802A31C: .4byte gWishFutureKnock\n\ +_0802A320: .4byte gBitTable\n\ +_0802A324: .4byte gBattlePartyID\n\ +_0802A328: .4byte gBattleMons\n\ +_0802A32C: .4byte gBankTarget\n\ +_0802A330: .4byte gBattlescriptCurrInstr\n\ +_0802A334:\n\ + adds r0, r2, 0\n\ + adds r0, 0x20\n\ + ldrb r0, [r0]\n\ + cmp r0, 0x3C\n\ + bne _0802A36C\n\ + ldr r1, _0802A360 @ =gBattlescriptCurrInstr\n\ + ldr r0, _0802A364 @ =BattleScript_NoItemSteal\n\ + str r0, [r1]\n\ + ldr r1, _0802A368 @ =gLastUsedAbility\n\ + ldrb r0, [r7]\n\ + mov r2, r8\n\ + muls r2, r0\n\ + adds r0, r2, 0\n\ + add r0, r9\n\ + adds r0, 0x20\n\ + ldrb r0, [r0]\n\ + strb r0, [r1]\n\ + ldrb r0, [r7]\n\ + ldrb r1, [r1]\n\ + bl RecordAbilityBattle\n\ + b _0802A49A\n\ + .align 2, 0\n\ +_0802A360: .4byte gBattlescriptCurrInstr\n\ +_0802A364: .4byte BattleScript_NoItemSteal\n\ +_0802A368: .4byte gLastUsedAbility\n\ +_0802A36C:\n\ + lsls r0, r4, 1\n\ + ldr r4, _0802A458 @ =0x020160f0\n\ + adds r6, r0, r4\n\ + ldrh r5, [r5, 0x2E]\n\ + mov r10, r5\n\ + strh r1, [r6]\n\ + ldr r3, _0802A45C @ =gBankAttacker\n\ + ldrb r0, [r3]\n\ + mov r1, r8\n\ + muls r1, r0\n\ + adds r0, r1, 0\n\ + add r0, r9\n\ + movs r1, 0\n\ + strh r1, [r0, 0x2E]\n\ + ldrb r0, [r7]\n\ + mov r2, r8\n\ + muls r2, r0\n\ + adds r0, r2, 0\n\ + add r0, r9\n\ + mov r3, r10\n\ + strh r3, [r0, 0x2E]\n\ + ldr r5, _0802A460 @ =gActiveBank\n\ + ldr r1, _0802A45C @ =gBankAttacker\n\ + ldrb r0, [r1]\n\ + strb r0, [r5]\n\ + str r6, [sp]\n\ + movs r0, 0\n\ + movs r1, 0x2\n\ + movs r2, 0\n\ + movs r3, 0x2\n\ + bl EmitSetAttributes\n\ + ldr r2, _0802A45C @ =gBankAttacker\n\ + ldrb r0, [r2]\n\ + bl MarkBufferBankForExecution\n\ + ldrb r0, [r7]\n\ + strb r0, [r5]\n\ + ldrb r0, [r7]\n\ + mov r3, r8\n\ + muls r3, r0\n\ + adds r0, r3, 0\n\ + mov r1, r9\n\ + adds r1, 0x2E\n\ + adds r0, r1\n\ + str r0, [sp]\n\ + movs r0, 0\n\ + movs r1, 0x2\n\ + movs r2, 0\n\ + movs r3, 0x2\n\ + bl EmitSetAttributes\n\ + ldrb r0, [r7]\n\ + bl MarkBufferBankForExecution\n\ + ldr r0, _0802A464 @ =0xfffe9f10\n\ + adds r4, r0\n\ + ldrb r0, [r7]\n\ + lsls r0, 1\n\ + ldr r2, _0802A468 @ =0x000160e8\n\ + adds r0, r2\n\ + adds r0, r4\n\ + movs r1, 0\n\ + strb r1, [r0]\n\ + ldrb r0, [r7]\n\ + lsls r0, 1\n\ + ldr r1, _0802A46C @ =0x000160e9\n\ + adds r0, r1\n\ + adds r0, r4\n\ + movs r3, 0\n\ + strb r3, [r0]\n\ + ldr r3, _0802A45C @ =gBankAttacker\n\ + ldrb r0, [r3]\n\ + lsls r0, 1\n\ + adds r0, r2\n\ + adds r0, r4\n\ + movs r2, 0\n\ + strb r2, [r0]\n\ + ldrb r0, [r3]\n\ + lsls r0, 1\n\ + adds r0, r1\n\ + adds r0, r4\n\ + strb r2, [r0]\n\ + ldr r1, _0802A470 @ =gBattlescriptCurrInstr\n\ + ldr r0, [r1]\n\ + adds r0, 0x5\n\ + str r0, [r1]\n\ + ldr r1, _0802A474 @ =gBattleTextBuff1\n\ + movs r3, 0xFD\n\ + strb r3, [r1]\n\ + movs r2, 0xA\n\ + strb r2, [r1, 0x1]\n\ + ldrh r0, [r6]\n\ + strb r0, [r1, 0x2]\n\ + ldrh r0, [r6]\n\ + lsrs r0, 8\n\ + strb r0, [r1, 0x3]\n\ + movs r0, 0xFF\n\ + strb r0, [r1, 0x4]\n\ + ldr r1, _0802A478 @ =gBattleTextBuff2\n\ + strb r3, [r1]\n\ + strb r2, [r1, 0x1]\n\ + mov r3, r10\n\ + strb r3, [r1, 0x2]\n\ + mov r2, r10\n\ + lsrs r0, r2, 8\n\ + strb r0, [r1, 0x3]\n\ + movs r0, 0x1\n\ + negs r0, r0\n\ + strb r0, [r1, 0x4]\n\ + cmp r2, 0\n\ + beq _0802A480\n\ + ldrh r0, [r6]\n\ + cmp r0, 0\n\ + beq _0802A494\n\ + ldr r1, _0802A47C @ =gBattleCommunication\n\ + movs r0, 0x2\n\ + b _0802A498\n\ + .align 2, 0\n\ +_0802A458: .4byte 0x020160f0\n\ +_0802A45C: .4byte gBankAttacker\n\ +_0802A460: .4byte gActiveBank\n\ +_0802A464: .4byte 0xfffe9f10\n\ +_0802A468: .4byte 0x000160e8\n\ +_0802A46C: .4byte 0x000160e9\n\ +_0802A470: .4byte gBattlescriptCurrInstr\n\ +_0802A474: .4byte gBattleTextBuff1\n\ +_0802A478: .4byte gBattleTextBuff2\n\ +_0802A47C: .4byte gBattleCommunication\n\ +_0802A480:\n\ + ldrh r0, [r6]\n\ + cmp r0, 0\n\ + beq _0802A494\n\ + ldr r0, _0802A490 @ =gBattleCommunication\n\ + movs r3, 0\n\ + strb r3, [r0, 0x5]\n\ + b _0802A49A\n\ + .align 2, 0\n\ +_0802A490: .4byte gBattleCommunication\n\ +_0802A494:\n\ + ldr r1, _0802A4AC @ =gBattleCommunication\n\ + movs r0, 0x1\n\ +_0802A498:\n\ + strb r0, [r1, 0x5]\n\ +_0802A49A:\n\ + add sp, 0x4\n\ + pop {r3-r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_0802A4AC: .4byte gBattleCommunication\n\ + .syntax divided"); +} +#endif // NONMATCHING + +static void atkD3_copy_ability(void) //role play +{ + if (gBattleMons[gBankTarget].ability != 0 && gBattleMons[gBankTarget].ability != ABILITY_WONDER_GUARD) + { + gBattleMons[gBankAttacker].ability = gBattleMons[gBankTarget].ability; + gLastUsedAbility = gBattleMons[gBankTarget].ability; + gBattlescriptCurrInstr += 5; + } + else + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); +} + +static void atkD4_wish_effect(void) +{ + switch (BSScriptRead8(gBattlescriptCurrInstr + 1)) + { + case 0: //use wish + if (gWishFutureKnock.wishCounter[gBankAttacker] == 0) + { + gWishFutureKnock.wishCounter[gBankAttacker] = 2; + gWishFutureKnock.wishUserID[gBankAttacker] = gBattlePartyID[gBankAttacker]; + gBattlescriptCurrInstr += 6; + } + else + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 2); + break; + case 1: //heal effect + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 4; + gBattleTextBuff1[2] = gBankTarget; + gBattleTextBuff1[3] = gWishFutureKnock.wishUserID[gBankTarget]; + gBattleTextBuff1[4] = 0xFF; + gBattleMoveDamage = gBattleMons[gBankTarget].maxHP / 2; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + gBattleMoveDamage *= -1; + if (gBattleMons[gBankTarget].hp == gBattleMons[gBankTarget].maxHP) + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 2); + else + gBattlescriptCurrInstr += 6; + break; + } +} + +static void atkD5_setroots(void) //ingrain +{ + if (gStatuses3[gBankAttacker] & STATUS3_ROOTED) + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + else + { + gStatuses3[gBankAttacker] |= STATUS3_ROOTED; + gBattlescriptCurrInstr += 5; + } +} + +static void atkD6_doubledamagedealtifdamaged(void) +{ + if ((gProtectStructs[gBankAttacker].physicalDmg && gProtectStructs[gBankAttacker].physicalBank == gBankTarget) + || (gProtectStructs[gBankAttacker].specialDmg && gProtectStructs[gBankAttacker].specialBank == gBankTarget)) + BATTLE_STRUCT->dmgMultiplier = 2; + gBattlescriptCurrInstr++; +} + +static void atkD7_setyawn(void) +{ + if (gStatuses3[gBankTarget] & STATUS3_YAWN || (u8) gBattleMons[gBankTarget].status1) + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + else + { + gStatuses3[gBankTarget] |= 0x1000; + gBattlescriptCurrInstr += 5; + } +} + +static void atkD8_setdamagetohealthdifference(void) +{ + if (gBattleMons[gBankTarget].hp <= gBattleMons[gBankAttacker].hp) + { + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + } + else + { + gBattleMoveDamage = gBattleMons[gBankTarget].hp - gBattleMons[gBankAttacker].hp; + gBattlescriptCurrInstr += 5; + } +} + +static void atkD9_scaledamagebyhealthratio(void) +{ + if (gDynamicBasePower == 0) + { + u8 power = gBattleMoves[gCurrentMove].power; + gDynamicBasePower = gBattleMons[gBankAttacker].hp * power / gBattleMons[gBankAttacker].maxHP; + if (gDynamicBasePower == 0) + gDynamicBasePower = 1; + } + gBattlescriptCurrInstr++; +} + +static void atkDA_abilityswap(void) +{ + if ((gBattleMons[gBankAttacker].ability == 0 && gBattleMons[gBankTarget].ability == 0) + || gBattleMons[gBankAttacker].ability == ABILITY_WONDER_GUARD || gBattleMons[gBankTarget].ability == ABILITY_WONDER_GUARD + || gBattleMoveFlags & MOVESTATUS_NOEFFECT) + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + else + { + u8 atk_ability = gBattleMons[gBankAttacker].ability; + gBattleMons[gBankAttacker].ability = gBattleMons[gBankTarget].ability; + gBattleMons[gBankTarget].ability = atk_ability; + gBattlescriptCurrInstr += 5; + } +} + +static void atkDB_imprisoneffect(void) +{ + u8 r8 = 0; + if ((gStatuses3[gBankAttacker] & STATUS3_IMPRISIONED)) + { + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + } + else + { + u8 bank; + sub_801529C(gBankAttacker); + for (bank = 0; bank < gNoOfAllBanks; bank++) + { + if (r8 != GetBankSide(bank)) + { + int j; + for (j = 0; j < 4; j++) + { + int k; + for (k = 0; k < 4; k++) + { + if (gBattleMons[gBankAttacker].moves[j] == gBattleMons[bank].moves[k] && gBattleMons[gBankAttacker].moves[j]) + break; + } + if (k != 4) + break; + } + if (j != 4) + { + gStatuses3[gBankAttacker] |= STATUS3_IMPRISIONED; + gBattlescriptCurrInstr += 5; + break; + } + } + } + if (bank == gNoOfAllBanks) + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + } +} + +static void atkDC_setgrudge(void) +{ + if (gStatuses3[gBankAttacker] & STATUS3_GRUDGE) + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + else + { + gStatuses3[gBankAttacker] |= STATUS3_GRUDGE; + gBattlescriptCurrInstr += 5; + } +} + +static void atkDD_weightdamagecalculation(void) +{ + int i; + for (i = 0; sWeightDamage[i] != 0xFFFF; i += 2) + { + if (sWeightDamage[i] > GetPokedexHeightWeight(SpeciesToNationalPokedexNum(gBattleMons[gBankTarget].species), 1)) + break; + } + if (sWeightDamage[i] != 0xFFFF) + gDynamicBasePower = sWeightDamage[i + 1]; + else + gDynamicBasePower = 120; + gBattlescriptCurrInstr++; +} + +#ifdef NONMATCHING +static void atkDE_asistattackselect(void) +{ + u32 chooseable_moves_no = 0; + struct Pokemon* party; + int i, j; + u16* chooseable_moves; + if (GetBankIdentity(gBankAttacker) & 1) + party = gEnemyParty; + else + party = gPlayerParty; + + for (i = 0; i < 6; i++) + { + if (i == gBattlePartyID[gBankAttacker]) + break; + if (!GetMonData(&party[i], MON_DATA_SPECIES2) || GetMonData(&party[i], MON_DATA_SPECIES2) == SPECIES_EGG) + break; + chooseable_moves = &BATTLE_STRUCT->assistMove[chooseable_moves_no]; + for (j = 0; j < 4; j++) + { + int k; + u16 move = GetMonData(&party[i], MON_DATA_MOVE1 + i); + if (IsMoveUnchoosable(move)) + break; + //sUnknown_081FACFE[k] + for (k = 0; ;k++) + { + if (sUnknown_081FACFE[k] == 0xFFFF) + { + if (move) + { + *chooseable_moves = move; + chooseable_moves++; + chooseable_moves_no++; + } + break; + } + if (sUnknown_081FACFE[k] == move) + break; + } + } + } + if (chooseable_moves_no) + { + gHitMarker &= ~(HITMARKER_ATTACKSTRING_PRINTED); + gRandomMove = BATTLE_STRUCT->assistMove[Random() % chooseable_moves_no]; + gBankTarget = GetMoveTarget(gRandomMove, 0); + gBattlescriptCurrInstr += 5; + } + else + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); +} + +#else +__attribute__((naked)) +static void atkDE_asistattackselect(void) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + sub sp, 0x8\n\ + movs r0, 0\n\ + mov r10, r0\n\ + ldr r0, _0802AB9C @ =gBankAttacker\n\ + ldrb r0, [r0]\n\ + bl GetBankIdentity\n\ + movs r1, 0x1\n\ + ands r1, r0\n\ + ldr r0, _0802ABA0 @ =gPlayerParty\n\ + str r0, [sp]\n\ + cmp r1, 0\n\ + beq _0802AAAC\n\ + ldr r1, _0802ABA4 @ =gEnemyParty\n\ + str r1, [sp]\n\ +_0802AAAC:\n\ + movs r2, 0\n\ +_0802AAAE:\n\ + ldr r1, _0802ABA8 @ =gBattlePartyID\n\ + ldr r0, _0802AB9C @ =gBankAttacker\n\ + ldrb r0, [r0]\n\ + lsls r0, 1\n\ + adds r0, r1\n\ + adds r1, r2, 0x1\n\ + str r1, [sp, 0x4]\n\ + ldrh r0, [r0]\n\ + cmp r2, r0\n\ + beq _0802AB54\n\ + movs r0, 0x64\n\ + adds r6, r2, 0\n\ + muls r6, r0\n\ + ldr r0, [sp]\n\ + adds r4, r0, r6\n\ + adds r0, r4, 0\n\ + movs r1, 0x41\n\ + bl GetMonData\n\ + cmp r0, 0\n\ + beq _0802AB54\n\ + adds r0, r4, 0\n\ + movs r1, 0x41\n\ + bl GetMonData\n\ + movs r1, 0xCE\n\ + lsls r1, 1\n\ + cmp r0, r1\n\ + beq _0802AB54\n\ + movs r5, 0\n\ + ldr r1, _0802ABAC @ =0x0000ffff\n\ + mov r8, r1\n\ + mov r9, r6\n\ + mov r1, r10\n\ + lsls r0, r1, 1\n\ + ldr r1, _0802ABB0 @ =0x02016024\n\ + adds r6, r0, r1\n\ +_0802AAF8:\n\ + movs r7, 0\n\ + adds r1, r5, 0\n\ + adds r1, 0xD\n\ + ldr r0, [sp]\n\ + add r0, r9\n\ + bl GetMonData\n\ + lsls r0, 16\n\ + lsrs r4, r0, 16\n\ + adds r0, r4, 0\n\ + bl IsMoveUnchoosable\n\ + lsls r0, 24\n\ + adds r1, r5, 0x1\n\ + cmp r0, 0\n\ + bne _0802AB4E\n\ + ldr r0, _0802ABB4 @ =sUnknown_081FACFE\n\ + ldrh r2, [r0]\n\ + adds r3, r0, 0\n\ + cmp r2, r8\n\ + beq _0802AB42\n\ + cmp r4, r2\n\ + beq _0802AB38\n\ + ldr r5, _0802ABAC @ =0x0000ffff\n\ + adds r2, r3, 0\n\ +_0802AB2A:\n\ + adds r2, 0x2\n\ + adds r7, 0x1\n\ + ldrh r0, [r2]\n\ + cmp r0, r5\n\ + beq _0802AB42\n\ + cmp r4, r0\n\ + bne _0802AB2A\n\ +_0802AB38:\n\ + lsls r0, r7, 1\n\ + adds r0, r3\n\ + ldrh r0, [r0]\n\ + cmp r0, r8\n\ + bne _0802AB4E\n\ +_0802AB42:\n\ + cmp r4, 0\n\ + beq _0802AB4E\n\ + strh r4, [r6]\n\ + adds r6, 0x2\n\ + movs r0, 0x1\n\ + add r10, r0\n\ +_0802AB4E:\n\ + adds r5, r1, 0\n\ + cmp r5, 0x3\n\ + ble _0802AAF8\n\ +_0802AB54:\n\ + ldr r2, [sp, 0x4]\n\ + cmp r2, 0x5\n\ + ble _0802AAAE\n\ + mov r1, r10\n\ + cmp r1, 0\n\ + beq _0802ABCC\n\ + ldr r2, _0802ABB8 @ =gHitMarker\n\ + ldr r0, [r2]\n\ + ldr r1, _0802ABBC @ =0xfffffbff\n\ + ands r0, r1\n\ + str r0, [r2]\n\ + ldr r4, _0802ABC0 @ =gRandomMove\n\ + bl Random\n\ + movs r1, 0xFF\n\ + ands r1, r0\n\ + mov r0, r10\n\ + muls r0, r1\n\ + asrs r0, 8\n\ + lsls r0, 1\n\ + ldr r1, _0802ABB0 @ =0x02016024\n\ + adds r0, r1\n\ + ldrh r0, [r0]\n\ + strh r0, [r4]\n\ + ldrh r0, [r4]\n\ + movs r1, 0\n\ + bl GetMoveTarget\n\ + ldr r1, _0802ABC4 @ =gBankTarget\n\ + strb r0, [r1]\n\ + ldr r1, _0802ABC8 @ =gBattlescriptCurrInstr\n\ + ldr r0, [r1]\n\ + adds r0, 0x5\n\ + str r0, [r1]\n\ + b _0802ABE6\n\ + .align 2, 0\n\ +_0802AB9C: .4byte gBankAttacker\n\ +_0802ABA0: .4byte gPlayerParty\n\ +_0802ABA4: .4byte gEnemyParty\n\ +_0802ABA8: .4byte gBattlePartyID\n\ +_0802ABAC: .4byte 0x0000ffff\n\ +_0802ABB0: .4byte 0x02016024\n\ +_0802ABB4: .4byte sUnknown_081FACFE\n\ +_0802ABB8: .4byte gHitMarker\n\ +_0802ABBC: .4byte 0xfffffbff\n\ +_0802ABC0: .4byte gRandomMove\n\ +_0802ABC4: .4byte gBankTarget\n\ +_0802ABC8: .4byte gBattlescriptCurrInstr\n\ +_0802ABCC:\n\ + ldr r3, _0802ABF8 @ =gBattlescriptCurrInstr\n\ + ldr r2, [r3]\n\ + ldrb r1, [r2, 0x1]\n\ + ldrb r0, [r2, 0x2]\n\ + lsls r0, 8\n\ + orrs r1, r0\n\ + ldrb r0, [r2, 0x3]\n\ + lsls r0, 16\n\ + orrs r1, r0\n\ + ldrb r0, [r2, 0x4]\n\ + lsls r0, 24\n\ + orrs r1, r0\n\ + str r1, [r3]\n\ +_0802ABE6:\n\ + add sp, 0x8\n\ + pop {r3-r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_0802ABF8: .4byte gBattlescriptCurrInstr\n\ + .syntax divided"); +} + +#endif // NONMATCHING + +static void atkDF_setmagiccoat(void) +{ + gBankTarget = gBankAttacker; + gSpecialStatuses[gBankAttacker].flag20 = 1; + if (gCurrentMoveTurn == gNoOfAllBanks - 1) //last turn + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + else + { + gProtectStructs[gBankAttacker].bounceMove = 1; + gBattlescriptCurrInstr += 5; + } +} + +static void atkE0_setstealstatchange(void) +{ + gSpecialStatuses[gBankAttacker].flag20 = 1; + if (gCurrentMoveTurn == gNoOfAllBanks - 1) //last turn + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + else + { + gProtectStructs[gBankAttacker].stealMove = 1; + gBattlescriptCurrInstr += 5; + } +} + +static void atkE1_intimidate_string_loader(void) +{ + u8 side; + + BATTLE_STRUCT->scriptingActive = ewram[0x160dd]; + side = GetBankSide(BATTLE_STRUCT->scriptingActive); + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 9; + gBattleTextBuff1[2] = gBattleMons[BATTLE_STRUCT->scriptingActive].ability; + gBattleTextBuff1[3] = 0xFF; + + for (;gBankTarget < gNoOfAllBanks; gBankTarget++) + { + if (GetBankSide(gBankTarget) == side) + continue; + if (!(gAbsentBankFlags & gBitTable[gBankTarget])) + break; + } + + if (gBankTarget >= gNoOfAllBanks) + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + else + gBattlescriptCurrInstr += 5; +} + +static void atkE2_switchout_abilities(void) +{ + gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + switch (gBattleMons[gActiveBank].ability) + { + case ABILITY_NATURAL_CURE: + gBattleMons[gActiveBank].status1 = 0; + EmitSetAttributes(0, REQUEST_STATUS_BATTLE, gBitTable[ewram[gActiveBank + 0x16064]], 4, &gBattleMons[gActiveBank].status1); + MarkBufferBankForExecution(gActiveBank); + break; + } + gBattlescriptCurrInstr += 2; +} + +static void atkE3_jumpiffainted(void) +{ + gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); + if (gBattleMons[gActiveBank].hp == 0) + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 2); + else + gBattlescriptCurrInstr += 6; +} + +static void atkE4_getsecretpowereffect(void) +{ + switch (gBattleTerrain) + { + case BATTLE_TERRAIN_GRASS: + gBattleCommunication[MOVE_EFFECT_BYTE] = 2; + break; + case BATTLE_TERRAIN_LONG_GRASS: + gBattleCommunication[MOVE_EFFECT_BYTE] = 1; + break; + case BATTLE_TERRAIN_SAND: + gBattleCommunication[MOVE_EFFECT_BYTE] = 27; + break; + case BATTLE_TERRAIN_UNDERWATER: + gBattleCommunication[MOVE_EFFECT_BYTE] = 23; + break; + case BATTLE_TERRAIN_WATER: + gBattleCommunication[MOVE_EFFECT_BYTE] = 22; + break; + case BATTLE_TERRAIN_POND: + gBattleCommunication[MOVE_EFFECT_BYTE] = 24; + break; + case BATTLE_TERRAIN_MOUNTAIN: + gBattleCommunication[MOVE_EFFECT_BYTE] = 7; + break; + case BATTLE_TERRAIN_CAVE: + gBattleCommunication[MOVE_EFFECT_BYTE] = 8; + break; + default: + gBattleCommunication[MOVE_EFFECT_BYTE] = 5; + break; + } + gBattlescriptCurrInstr++; +} + +static void atkE5_pickup(void) +{ + int i; + for (i = 0; i < 6; i++) + { + u16 species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2); + u16 held_item = GetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM); + u8 ability; + if (GetMonData(&gPlayerParty[i], MON_DATA_ALT_ABILITY)) + ability = gBaseStats[species].ability2; + else + ability = gBaseStats[species].ability1; + + if (ability == ABILITY_PICKUP && species != 0 && species != SPECIES_EGG && held_item == 0 && (Random() % 10) == 0) + { + s32 chance = Random() % 100; + s32 j; + for (j = 0; j < 18; j += 2) + { + if (sPickupItems[j + 1] > chance) + break; + } + SetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM, (const void*) &sPickupItems[j]); + } + } + gBattlescriptCurrInstr++; +} + +static void atkE6_castform_change_animation(void) +{ + gActiveBank = BATTLE_STRUCT->scriptingActive; + if (gBattleMons[gActiveBank].status2 & STATUS2_SUBSTITUTE) + BATTLE_STRUCT->castformToChangeInto |= 0x80; + EmitBattleAnimation(0, 0, BATTLE_STRUCT->castformToChangeInto); + MarkBufferBankForExecution(gActiveBank); + gBattlescriptCurrInstr++; +} + +static void atkE7_castform_data_change(void) +{ + u8 form; + gBattlescriptCurrInstr++; + form = CastformDataTypeChange(BATTLE_STRUCT->scriptingActive); + if (form) + { + b_push_move_exec(BattleScript_CastformChange); + BATTLE_STRUCT->castformToChangeInto = form - 1; + } +} + +static void atkE8_settypebasedhalvers(void) //water/mud sport +{ + bool8 worked = FALSE; + if (gBattleMoves[gCurrentMove].effect == EFFECT_MUD_SPORT) + { + if (!(gStatuses3[gBankAttacker] & STATUS3_MUDSPORT)) + { + gStatuses3[gBankAttacker] |= STATUS3_MUDSPORT; + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + worked = TRUE; + } + } + else //water sport + { + if (!(gStatuses3[gBankAttacker] & STATUS3_WATERSPORT)) + { + gStatuses3[gBankAttacker] |= STATUS3_WATERSPORT; + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + worked = TRUE; + } + } + if (worked) + gBattlescriptCurrInstr += 5; + else + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); +} + +static void atkE9_setweatherballtype(void) +{ + if (WEATHER_HAS_EFFECT) + { + if ((u8)(gBattleWeather)) + BATTLE_STRUCT->dmgMultiplier = 2; + if (gBattleWeather & WEATHER_RAIN_ANY) + BATTLE_STRUCT->dynamicMoveType = TYPE_WATER | 0x80; + else if (gBattleWeather & WEATHER_SANDSTORM_ANY) + BATTLE_STRUCT->dynamicMoveType = TYPE_ROCK | 0x80; + else if (gBattleWeather & WEATHER_SUN_ANY) + BATTLE_STRUCT->dynamicMoveType = TYPE_FIRE | 0x80; + else if (gBattleWeather & WEATHER_HAIL) + BATTLE_STRUCT->dynamicMoveType = TYPE_ICE | 0x80; + else + BATTLE_STRUCT->dynamicMoveType = TYPE_NORMAL | 0x80; + } + gBattlescriptCurrInstr++; +} + +static void atkEA_recycleitem(void) +{ + u16* used_item; + gActiveBank = gBankAttacker; + used_item = USED_HELD_ITEM(gActiveBank); + if (*used_item && gBattleMons[gActiveBank].item == 0) + { + gLastUsedItem = *used_item; + *used_item = 0; + gBattleMons[gActiveBank].item = gLastUsedItem; + EmitSetAttributes(0, REQUEST_HELDITEM_BATTLE, 0, 2, &gBattleMons[gActiveBank].item); + MarkBufferBankForExecution(gActiveBank); + gBattlescriptCurrInstr += 5; + } + else + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); +} + +static void atkEB_settypetoterrain(void) +{ + if (gBattleMons[gBankAttacker].type1 != sTerrainToType[gBattleTerrain] && gBattleMons[gBankAttacker].type2 != sTerrainToType[gBattleTerrain]) + { + gBattleMons[gBankAttacker].type1 = sTerrainToType[gBattleTerrain]; + gBattleMons[gBankAttacker].type2 = sTerrainToType[gBattleTerrain]; + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 3; + gBattleTextBuff1[2] = sTerrainToType[gBattleTerrain]; + gBattleTextBuff1[3] = 0xFF; + gBattlescriptCurrInstr += 5; + } + else + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); +} + +static void atkEC_pursuit_sth(void) +{ + gActiveBank = GetBankByPlayerAI(GetBankIdentity(gBankAttacker) ^ 2); + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && !(gAbsentBankFlags & gBitTable[gActiveBank]) && gActionForBanks[gActiveBank] == 0 && gChosenMovesByBanks[gActiveBank] == MOVE_PURSUIT) + { + gUnknown_02024A76[gActiveBank] = 11; + gCurrentMove = MOVE_PURSUIT; + gBattlescriptCurrInstr += 5; + BATTLE_STRUCT->animTurn = 1; + BATTLE_STRUCT->unk160A7 = gBankAttacker; + gBankAttacker = gActiveBank; + } + else + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); +} + +static void atkED_802B4B4(void) +{ + gEffectBank = gBankAttacker; + if (gBankAttacker == gBankTarget) + gBankAttacker = gBankTarget = BATTLE_STRUCT->scriptingActive; + else + gBankTarget = BATTLE_STRUCT->scriptingActive; + BATTLE_STRUCT->scriptingActive = gEffectBank; + gBattlescriptCurrInstr++; +} + +static void atkEE_removelightscreenreflect(void) //brick break +{ + u8 side = GetBankSide(gBankAttacker) ^ 1; + if (gSideTimer[side].reflectTimer || gSideTimer[side].lightscreenTimer) + { + gSideAffecting[side] &= ~(SIDE_STATUS_REFLECT); + gSideAffecting[side] &= ~(SIDE_STATUS_LIGHTSCREEN); + gSideTimer[side].reflectTimer = 0; + gSideTimer[side].lightscreenTimer = 0; + BATTLE_STRUCT->animTurn = 1; + BATTLE_STRUCT->animTargetsHit = 1; + } + else + { + BATTLE_STRUCT->animTurn = 0; + BATTLE_STRUCT->animTargetsHit = 0; + } + gBattlescriptCurrInstr++; +} + +void atkEF_pokeball_catch_calculation(void) +{ + u8 ball_multiplier = 0; + if (gBattleExecBuffer) + return; + + gActiveBank = gBankAttacker; + gBankTarget = gBankAttacker ^ 1; + if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) + { + EmitBallThrow(0, 5); + MarkBufferBankForExecution(gActiveBank); + gBattlescriptCurrInstr = BattleScript_TrainerBallBlock; + } + else if (gBattleTypeFlags & BATTLE_TYPE_WALLY_TUTORIAL) + { + EmitBallThrow(0, 4); + MarkBufferBankForExecution(gActiveBank); + gBattlescriptCurrInstr = BattleScript_WallyBallThrow; + } + else + { + u32 odds; + u8 catch_rate; + if (gLastUsedItem == ITEM_SAFARI_BALL) + catch_rate = BATTLE_STRUCT->unk16089 * 1275 / 100; //correct the name to safariFleeRate + else + catch_rate = gBaseStats[gBattleMons[gBankTarget].species].catchRate; + if (gLastUsedItem > 5) + { + switch (gLastUsedItem) + { + case ITEM_NET_BALL: + if (gBattleMons[gBankTarget].type1 == TYPE_WATER || gBattleMons[gBankTarget].type2 == TYPE_WATER || gBattleMons[gBankTarget].type1 == TYPE_BUG || gBattleMons[gBankTarget].type2 == TYPE_BUG) + ball_multiplier = 30; + else + ball_multiplier = 10; + break; + case ITEM_DIVE_BALL: + if (Overworld_GetMapTypeOfSaveblockLocation() == 5) + ball_multiplier = 35; + else + ball_multiplier = 10; + break; + case ITEM_NEST_BALL: + if (gBattleMons[gBankTarget].level <= 39) + { + ball_multiplier = 40 - gBattleMons[gBankTarget].level; + if (ball_multiplier <= 9) + ball_multiplier = 10; + } + else + ball_multiplier = 10; + break; + case ITEM_REPEAT_BALL: + if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gBankTarget].species), 1)) + ball_multiplier = 30; + else + ball_multiplier = 10; + break; + case ITEM_TIMER_BALL: + ball_multiplier = gBattleResults.battleTurnCounter + 10; + if (ball_multiplier > 40) + ball_multiplier = 40; + break; + case ITEM_LUXURY_BALL: + case ITEM_PREMIER_BALL: + ball_multiplier = 10; + break; + } + } + else + ball_multiplier = sBallCatchBonuses[gLastUsedItem - 2]; + + odds = (catch_rate * ball_multiplier / 10) * (gBattleMons[gBankTarget].maxHP * 3 - gBattleMons[gBankTarget].hp * 2) / (3 * gBattleMons[gBankTarget].maxHP); + if (gBattleMons[gBankTarget].status1 & (STATUS_SLEEP | STATUS_FREEZE)) + odds *= 2; + if (gBattleMons[gBankTarget].status1 & (STATUS_POISON | STATUS_BURN | STATUS_PARALYSIS /*| STATUS_TOXIC_POISON */)) //nice one gf + odds = (odds * 15) / 10; + + if (gLastUsedItem != ITEM_SAFARI_BALL) + { + if (gLastUsedItem == ITEM_MASTER_BALL) + { + gBattleResults.unk5_1 = 1; + } + else + { + if (gBattleResults.unk36[gLastUsedItem - ITEM_ULTRA_BALL] < 0xFF) + gBattleResults.unk36[gLastUsedItem - ITEM_ULTRA_BALL]++; + } + } + if (odds > 254) //poke caught + { + EmitBallThrow(0, 4); + MarkBufferBankForExecution(gActiveBank); + gBattlescriptCurrInstr = BattleScript_SuccessBallThrow; + SetMonData(&gEnemyParty[gBattlePartyID[gBankTarget]], MON_DATA_POKEBALL, (const void*) &gLastUsedItem); + if (CalculatePlayerPartyCount() == 6) + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + else + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + } + else //poke may be caught, calculate shakes + { + u8 shakes; + odds = Sqrt(Sqrt(16711680 / odds)); + odds = 1048560 / odds; + for (shakes = 0; shakes < 4 && Random() < odds; shakes++) {} + if (gLastUsedItem == ITEM_MASTER_BALL) + shakes = 4; //why calculate the shakes before that check? + EmitBallThrow(0, shakes); + MarkBufferBankForExecution(gActiveBank); + if (shakes == 4) //poke caught, copy of the code above + { + gBattlescriptCurrInstr = BattleScript_SuccessBallThrow; + SetMonData(&gEnemyParty[gBattlePartyID[gBankTarget]], MON_DATA_POKEBALL, (const void*) &gLastUsedItem); + if (CalculatePlayerPartyCount() == 6) + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + else + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + } + else //rip + { + gBattleCommunication[MULTISTRING_CHOOSER] = shakes; + gBattlescriptCurrInstr = BattleScript_ShakeBallThrow; + } + } + } +} + +static void atkF0_copy_caught_poke(void) +{ + GiveMonToPlayer(&gEnemyParty[gBattlePartyID[gBankAttacker ^ 1]]); + gBattleResults.caughtPoke = gBattleMons[gBankAttacker ^ 1].species; + GetMonData(&gEnemyParty[gBattlePartyID[gBankAttacker ^ 1]], MON_DATA_NICKNAME, gBattleResults.caughtNick); + gBattlescriptCurrInstr++; +} + +static void atkF1_setpoke_as_caught(void) +{ + if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gBankTarget].species), 1)) + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + else + { + GetSetPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gBankTarget].species), 3); + if (gBattleMons[gBankTarget].species == SPECIES_UNOWN) + gSaveBlock2.pokedex.unownPersonality = gBattleMons[gBankTarget].personality; + if (gBattleMons[gBankTarget].species == SPECIES_SPINDA) //else if + gSaveBlock2.pokedex.spindaPersonality = gBattleMons[gBankTarget].personality; + gBattlescriptCurrInstr += 5; + } +} + +extern const u32 gBattleTerrainTiles_Building[]; +extern const u32 gBattleTerrainTilemap_Building[]; +extern const u32 gBattleTerrainPalette_BattleTower[]; + +static void atkF2_display_dex_info(void) +{ + switch (gBattleCommunication[0]) + { + case 0: + BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); + gBattleCommunication[0]++; + break; + case 1: + if (!gPaletteFade.active) + { + gBattleCommunication[1] = sub_809070C(SpeciesToNationalPokedexNum(gBattleMons[gBankTarget].species), gBattleMons[gBankTarget].otId, gBattleMons[gBankTarget].personality); + gBattleCommunication[0]++; + } + break; + case 2: + if (!gPaletteFade.active && gMain.callback2 == sub_800F808 && !gTasks[gBattleCommunication[1]].isActive) + { + LZDecompressVram(gBattleTerrainTiles_Building, (void*)(0x06008000)); + LZDecompressVram(gBattleTerrainTilemap_Building, (void*)(0x0600d000)); + LoadCompressedPalette(gBattleTerrainPalette_BattleTower, 0x20, 0x60); + REG_BG3CNT = 0x5a0b; + gUnknown_030041B0 = 0x100; + BeginNormalPaletteFade(0xfffc, 0, 0x10, 0, 0); + gBattleCommunication[0]++; + } + break; + case 3: + if (!gPaletteFade.active) + gBattlescriptCurrInstr++; + break; + } +} + +__attribute__((naked)) +void sub_802BBD4(u8 r0, u8 r1, u8 r2, u8 r3, u8 sp0) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + ldr r4, [sp, 0x20]\n\ + lsls r0, 24\n\ + lsrs r6, r0, 24\n\ + lsls r1, 24\n\ + lsrs r1, 24\n\ + mov r12, r1\n\ + lsls r2, 24\n\ + lsrs r5, r2, 24\n\ + lsls r3, 24\n\ + lsrs r7, r3, 24\n\ + lsls r4, 24\n\ + lsrs r4, 24\n\ + mov r8, r4\n\ + mov r2, r12\n\ + cmp r2, r7\n\ + bgt _0802BC5A\n\ + lsls r1, r6, 1\n\ + ldr r0, _0802BC20 @ =0x0600c000\n\ + adds r1, r0\n\ + mov r9, r1\n\ +_0802BC06:\n\ + adds r1, r6, 0\n\ + adds r0, r2, 0x1\n\ + mov r10, r0\n\ + cmp r1, r5\n\ + bgt _0802BC54\n\ + lsls r0, r2, 6\n\ + mov r4, r9\n\ + adds r3, r4, r0\n\ +_0802BC16:\n\ + cmp r2, r12\n\ + bne _0802BC28\n\ + ldr r0, _0802BC24 @ =0x00001022\n\ + b _0802BC36\n\ + .align 2, 0\n\ +_0802BC20: .4byte 0x0600c000\n\ +_0802BC24: .4byte 0x00001022\n\ +_0802BC28:\n\ + cmp r2, r7\n\ + bne _0802BC34\n\ + ldr r0, _0802BC30 @ =0x00001028\n\ + b _0802BC36\n\ + .align 2, 0\n\ +_0802BC30: .4byte 0x00001028\n\ +_0802BC34:\n\ + ldr r0, _0802BC68 @ =0x00001025\n\ +_0802BC36:\n\ + cmp r1, r6\n\ + beq _0802BC42\n\ + adds r0, 0x1\n\ + cmp r1, r5\n\ + bne _0802BC42\n\ + adds r0, 0x1\n\ +_0802BC42:\n\ + mov r4, r8\n\ + cmp r4, 0\n\ + beq _0802BC4A\n\ + movs r0, 0\n\ +_0802BC4A:\n\ + strh r0, [r3]\n\ + adds r3, 0x2\n\ + adds r1, 0x1\n\ + cmp r1, r5\n\ + ble _0802BC16\n\ +_0802BC54:\n\ + mov r2, r10\n\ + cmp r2, r7\n\ + ble _0802BC06\n\ +_0802BC5A:\n\ + pop {r3-r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_0802BC68: .4byte 0x00001025\n\ + .syntax divided"); +} + +void sub_802BC6C(void) +{ + sub_814A880(0xC8, ((gBattleCommunication[1] << 28) + 1207959552) >> 24); //what could that be? +} + +void nullsub_6(void) +{ + return; +} + +static void atkF3_nickname_caught_poke(void) +{ + switch (gBattleCommunication[0]) + { + case 0: + sub_8023A80(); + gBattleCommunication[0]++; + gBattleCommunication[1] = 0; + sub_802BC6C(); + break; + case 1: + if (gMain.newKeys & DPAD_UP && gBattleCommunication[1] != 0) + { + PlaySE(SE_SELECT); + nullsub_6(); + gBattleCommunication[1] = 0; + sub_802BC6C(); + } + if (gMain.newKeys & DPAD_DOWN && gBattleCommunication[1] == 0) + { + PlaySE(SE_SELECT); + nullsub_6(); + gBattleCommunication[1] = 1; + sub_802BC6C(); + } + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + if (gBattleCommunication[1] == 0) + { + gBattleCommunication[0]++; + BeginFastPaletteFade(3); + } + else + gBattleCommunication[0] = 4; + } + else if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + gBattleCommunication[0] = 4; + } + break; + case 2: + if (!gPaletteFade.active) + { + GetMonData(&gEnemyParty[gBattlePartyID[gBankAttacker ^ 1]], MON_DATA_NICKNAME, BATTLE_STRUCT->caughtNick); + DoNamingScreen(2, BATTLE_STRUCT->caughtNick, GetMonData(&gEnemyParty[gBattlePartyID[gBankAttacker ^ 1]], MON_DATA_SPECIES), GetMonGender(&gEnemyParty[gBattlePartyID[gBankAttacker ^ 1]]), GetMonData(&gEnemyParty[gBattlePartyID[gBankAttacker ^ 1]], MON_DATA_PERSONALITY, 0), sub_800F808); + gBattleCommunication[0]++; + } + break; + case 3: + if (gMain.callback2 == sub_800F808 && !gPaletteFade.active ) + { + SetMonData(&gEnemyParty[gBattlePartyID[gBankAttacker ^ 1]], MON_DATA_NICKNAME, BATTLE_STRUCT->caughtNick); + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + } + break; + case 4: + if (CalculatePlayerPartyCount() == 6) + gBattlescriptCurrInstr += 5; + else + gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + break; + } +} + +static void atkF4_802BEF0(void) +{ + gBattleMons[gBankAttacker].hp -= gBattleMoveDamage; + gBattlescriptCurrInstr++; +} + +static void atkF5_removeattackerstatus1(void) +{ + gBattleMons[gBankAttacker].status1 = 0; + gBattlescriptCurrInstr++; +} + +static void atkF6_802BF48(void) +{ + gFightStateTracker = 0xC; +} + +static void atkF7_802BF54(void) +{ + gFightStateTracker = 0xC; + gCurrentMoveTurn = gNoOfAllBanks; +} diff --git a/src/battle_7.c b/src/battle/battle_7.c similarity index 69% rename from src/battle_7.c rename to src/battle/battle_7.c index a93237608..ad96510cf 100644 --- a/src/battle_7.c +++ b/src/battle/battle_7.c @@ -31,7 +31,6 @@ struct Struct2019348 extern u8 gBattleBufferA[][0x200]; extern u8 gActiveBank; -extern u32 gBattleExecBuffer; extern u8 gNoOfAllBanks; extern u16 gBattlePartyID[]; extern u8 gBanksBySide[]; @@ -49,8 +48,8 @@ extern struct MusicPlayerInfo gMPlay_BGM; extern u32 gBitTable[]; extern u16 gBattleTypeFlags; extern u8 gBattleMonForms[]; -extern u8 gBattleAnimPlayerMonIndex; -extern u8 gBattleAnimEnemyMonIndex; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; extern void (*gAnimScriptCallback)(void); extern u8 gAnimScriptActive; extern const u8 *const gBattleAnims_Unknown1[]; @@ -63,7 +62,6 @@ extern const u8 gSubstituteDollGfx[]; extern const u8 gSubstituteDollPal[]; extern const struct CompressedSpriteSheet gUnknown_081FAF24; extern const struct SpriteTemplate gSpriteTemplate_81FAF34; -extern void (*const gOpponentBufferCommands[])(void); extern const struct CompressedSpriteSheet gUnknown_0820A47C; extern const struct CompressedSpriteSheet gUnknown_0820A484; extern const struct CompressedSpriteSheet gUnknown_0820A48C[]; @@ -80,7 +78,7 @@ extern void sub_80440EC(); extern void sub_804777C(); extern void sub_8141828(); extern u8 sub_8077ABC(); -extern u8 sub_8078874(u8); +extern u8 AnimBankSpriteExists(u8); extern u8 sub_8077F68(u8); extern u8 sub_8077F7C(u8); extern void sub_8094958(void); @@ -96,9 +94,6 @@ void sub_80324E0(u8 a); void sub_80327CC(void); void sub_8032978(struct Sprite *); void sub_80328A4(struct Sprite *); -void OpponentBufferRunCommand(void); -void sub_80332D0(void); -void OpponentBufferExecCompleted(void); void sub_80312F0(struct Sprite *sprite) { @@ -182,16 +177,16 @@ bool8 move_anim_start_t3(u8 a, u8 b, u8 c, u8 d, u16 e) gBattleMonForms[a] = e & 0x7F; return TRUE; } - if (ewram17800[a].unk0_2 && sub_803163C(d) == 0) + if (ewram17800[a].substituteSprite && sub_803163C(d) == 0) return TRUE; - if (ewram17800[a].unk0_2 && d == 2 && gSprites[gObjectBankIDs[a]].invisible) + if (ewram17800[a].substituteSprite && d == 2 && gSprites[gObjectBankIDs[a]].invisible) { refresh_graphics_maybe(a, 1, gObjectBankIDs[a]); sub_80324E0(a); return TRUE; } - gBattleAnimPlayerMonIndex = b; - gBattleAnimEnemyMonIndex = c; + gBattleAnimBankAttacker = b; + gBattleAnimBankTarget = c; ewram17840.unk0 = e; DoMoveAnim(gBattleAnims_Unknown1, d, 0); taskId = CreateTask(sub_80315E8, 10); @@ -230,8 +225,8 @@ void move_anim_start_t4(u8 a, u8 b, u8 c, u8 d) { u8 taskId; - gBattleAnimPlayerMonIndex = b; - gBattleAnimEnemyMonIndex = c; + gBattleAnimBankAttacker = b; + gBattleAnimBankTarget = c; DoMoveAnim(gBattleAnims_Unknown2, d, 0); taskId = CreateTask(sub_80316CC, 10); gTasks[taskId].data[0] = a; @@ -273,7 +268,7 @@ bool8 mplay_80342A4(u8 a) return TRUE; } -void sub_8031794(struct Pokemon *pkmn, u8 b) +void BattleLoadOpponentMonSprite(struct Pokemon *pkmn, u8 b) { u32 personalityValue; u16 species; @@ -284,14 +279,14 @@ void sub_8031794(struct Pokemon *pkmn, u8 b) const u8 *lzPaletteData; personalityValue = GetMonData(pkmn, MON_DATA_PERSONALITY); - if (ewram17800[b].unk2 == 0) + if (ewram17800[b].transformedSpecies == 0) { species = GetMonData(pkmn, MON_DATA_SPECIES); r7 = personalityValue; } else { - species = ewram17800[b].unk2; + species = ewram17800[b].transformedSpecies; r7 = gPID_perBank[b]; } otId = GetMonData(pkmn, MON_DATA_OT_ID); @@ -305,27 +300,27 @@ void sub_8031794(struct Pokemon *pkmn, u8 b) species, r7); paletteOffset = 0x100 + b * 16; - if (ewram17800[b].unk2 == 0) - lzPaletteData = pokemon_get_pal(pkmn); + if (ewram17800[b].transformedSpecies == 0) + lzPaletteData = GetMonSpritePal(pkmn); else - lzPaletteData = species_and_otid_get_pal(species, otId, personalityValue); - sub_800D238(lzPaletteData, ewram); + lzPaletteData = GetMonSpritePalFromOtIdPersonality(species, otId, personalityValue); + LZDecompressWram(lzPaletteData, ewram); LoadPalette(ewram, paletteOffset, 0x20); LoadPalette(ewram, 0x80 + b * 16, 0x20); if (species == SPECIES_CASTFORM) { paletteOffset = 0x100 + b * 16; - sub_800D238(lzPaletteData, ewram + 0x16400); + LZDecompressWram(lzPaletteData, ewram + 0x16400); LoadPalette(ewram + 0x16400 + gBattleMonForms[b] * 32, paletteOffset, 0x20); } - if (ewram17800[b].unk2 != 0) + if (ewram17800[b].transformedSpecies != 0) { BlendPalette(paletteOffset, 16, 6, 0x7FFF); CpuCopy32(gPlttBufferFaded + paletteOffset, gPlttBufferUnfaded + paletteOffset, 32); } } -void sub_80318FC(struct Pokemon *pkmn, u8 b) +void BattleLoadPlayerMonSprite(struct Pokemon *pkmn, u8 b) { u32 personalityValue; u16 species; @@ -336,14 +331,14 @@ void sub_80318FC(struct Pokemon *pkmn, u8 b) const u8 *lzPaletteData; personalityValue = GetMonData(pkmn, MON_DATA_PERSONALITY); - if (ewram17800[b].unk2 == 0) + if (ewram17800[b].transformedSpecies == 0) { species = GetMonData(pkmn, MON_DATA_SPECIES); r7 = personalityValue; } else { - species = ewram17800[b].unk2; + species = ewram17800[b].transformedSpecies; r7 = gPID_perBank[b]; } otId = GetMonData(pkmn, MON_DATA_OT_ID); @@ -357,20 +352,20 @@ void sub_80318FC(struct Pokemon *pkmn, u8 b) species, r7); paletteOffset = 0x100 + b * 16; - if (ewram17800[b].unk2 == 0) - lzPaletteData = pokemon_get_pal(pkmn); + if (ewram17800[b].transformedSpecies == 0) + lzPaletteData = GetMonSpritePal(pkmn); else - lzPaletteData = species_and_otid_get_pal(species, otId, personalityValue); - sub_800D238(lzPaletteData, ewram); + lzPaletteData = GetMonSpritePalFromOtIdPersonality(species, otId, personalityValue); + LZDecompressWram(lzPaletteData, ewram); LoadPalette(ewram, paletteOffset, 0x20); LoadPalette(ewram, 0x80 + b * 16, 0x20); if (species == SPECIES_CASTFORM) { paletteOffset = 0x100 + b * 16; - sub_800D238(lzPaletteData, ewram + 0x16400); + LZDecompressWram(lzPaletteData, ewram + 0x16400); LoadPalette(ewram + 0x16400 + gBattleMonForms[b] * 32, paletteOffset, 0x20); } - if (ewram17800[b].unk2 != 0) + if (ewram17800[b].transformedSpecies != 0) { BlendPalette(paletteOffset, 16, 6, 0x7FFF); CpuCopy32(gPlttBufferFaded + paletteOffset, gPlttBufferUnfaded + paletteOffset, 32); @@ -405,7 +400,7 @@ void sub_8031A6C(u16 a, u8 b) LoadCompressedObjectPalette(&gTrainerFrontPicPaletteTable[a]); } -void sub_8031AF4(u16 a, u8 b) +void LoadPlayerTrainerBankSprite(u16 a, u8 b) { u8 status; @@ -511,7 +506,7 @@ bool8 sub_8031C30(u8 a) void load_gfxc_health_bar(void) { - sub_800D238(gUnknown_08D09C48, (void *)0x02000000); + LZDecompressWram(gUnknown_08D09C48, (void *)0x02000000); } u8 battle_load_something(u8 *pState, u8 *b) @@ -607,12 +602,12 @@ void sub_8031F24(void) s32 i; for (i = 0; i < gNoOfAllBanks; i++) - ewram17800[i].unk0_0 = gSprites[gObjectBankIDs[i]].invisible; + ewram17800[i].invisible = gSprites[gObjectBankIDs[i]].invisible; } void sub_8031F88(u8 a) { - ewram17800[a].unk0_0 = gSprites[gObjectBankIDs[a]].invisible; + ewram17800[a].invisible = gSprites[gObjectBankIDs[a]].invisible; } void sub_8031FC4(u8 a, u8 b, bool8 c) @@ -630,7 +625,7 @@ void sub_8031FC4(u8 a, u8 b, bool8 c) paletteOffset = 0x100 + a * 16; LoadPalette(ewram + 0x16400 + ewram17840.unk0 * 32, paletteOffset, 32); gBattleMonForms[a] = ewram17840.unk0; - if (ewram17800[a].unk2 != 0) + if (ewram17800[a].transformedSpecies != 0) { BlendPalette(paletteOffset, 16, 6, 0x7FFF); CpuCopy32(gPlttBufferFaded + paletteOffset, gPlttBufferUnfaded + paletteOffset, 32); @@ -695,21 +690,21 @@ void sub_8031FC4(u8 a, u8 b, bool8 c) dst = (void *)(VRAM + 0x10000 + gSprites[gObjectBankIDs[a]].oam.tileNum * 32); DmaCopy32(3, src, dst, 0x800); paletteOffset = 0x100 + a * 16; - lzPaletteData = species_and_otid_get_pal(species, otId, personalityValue); - sub_800D238(lzPaletteData, ewram); + lzPaletteData = GetMonSpritePalFromOtIdPersonality(species, otId, personalityValue); + LZDecompressWram(lzPaletteData, ewram); LoadPalette(ewram, paletteOffset, 32); if (species == SPECIES_CASTFORM) { u16 *paletteSrc = (u16 *)(ewram + 0x16400); - sub_800D238(lzPaletteData, paletteSrc); + LZDecompressWram(lzPaletteData, paletteSrc); LoadPalette(paletteSrc + gBattleMonForms[b] * 16, paletteOffset, 32); } BlendPalette(paletteOffset, 16, 6, 0x7FFF); CpuCopy32(gPlttBufferFaded + paletteOffset, gPlttBufferUnfaded + paletteOffset, 32); if (!IsContest()) { - ewram17800[a].unk2 = species; + ewram17800[a].transformedSpecies = species; gBattleMonForms[a] = gBattleMonForms[b]; } gSprites[gObjectBankIDs[a]].pos1.y = sub_8077F68(a); @@ -717,7 +712,7 @@ void sub_8031FC4(u8 a, u8 b, bool8 c) } } -void sub_8032350(u8 a, u8 b) +void BattleLoadSubstituteSprite(u8 a, u8 b) { u8 r4; u16 foo; @@ -750,16 +745,16 @@ void sub_8032350(u8 a, u8 b) if (!IsContest()) { if (GetBankSide(a) != 0) - sub_8031794(&gEnemyParty[gBattlePartyID[a]], a); + BattleLoadOpponentMonSprite(&gEnemyParty[gBattlePartyID[a]], a); else - sub_80318FC(&gPlayerParty[gBattlePartyID[a]], a); + BattleLoadPlayerMonSprite(&gPlayerParty[gBattlePartyID[a]], a); } } } void refresh_graphics_maybe(u8 a, u8 b, u8 spriteId) { - sub_8032350(a, b); + BattleLoadSubstituteSprite(a, b); StartSpriteAnim(&gSprites[spriteId], gBattleMonForms[a]); if (b == 0) gSprites[spriteId].pos1.y = sub_8077F7C(a); @@ -770,12 +765,12 @@ void refresh_graphics_maybe(u8 a, u8 b, u8 spriteId) void sub_80324BC(u8 a, u16 b) { if (b == 0xA4) - ewram17800[a].unk0_2 = 1; + ewram17800[a].substituteSprite = 1; } void sub_80324E0(u8 a) { - ewram17800[a].unk0_2 = 0; + ewram17800[a].substituteSprite = 0; } void sub_80324F8(struct Pokemon *pkmn, u8 b) @@ -808,7 +803,7 @@ void sub_80324F8(struct Pokemon *pkmn, u8 b) } } -void sub_80325B8(void) +void BattleMusicStop(void) { u8 r4 = GetBankByPlayerAI(0); @@ -851,7 +846,7 @@ void sub_80326EC(u8 a) for (i = 0; i < gNoOfAllBanks; i++) { - if (sub_8078874(i) != 0) + if (AnimBankSpriteExists(i) != 0) { gSprites[gObjectBankIDs[i]].oam.affineMode = a; if (a == 0) @@ -889,16 +884,16 @@ void sub_80328A4(struct Sprite *sprite) u8 r4 = sprite->data0; struct Sprite *r7 = &gSprites[gObjectBankIDs[r4]]; - if (!r7->inUse || sub_8078874(r4) == 0) + if (!r7->inUse || AnimBankSpriteExists(r4) == 0) { sprite->callback = sub_8032978; return; } if (gAnimScriptActive || r7->invisible) invisible = TRUE; - else if (ewram17800[r4].unk2 != 0 && gEnemyMonElevation[ewram17800[r4].unk2] == 0) + else if (ewram17800[r4].transformedSpecies != 0 && gEnemyMonElevation[ewram17800[r4].transformedSpecies] == 0) invisible = TRUE; - if (ewram17800[r4].unk0_2) + if (ewram17800[r4].substituteSprite) invisible = TRUE; sprite->pos1.x = r7->pos1.x; sprite->pos2.x = r7->pos2.x; @@ -914,8 +909,8 @@ void sub_8032984(u8 a, u16 b) { if (GetBankSide(a) != 0) { - if (ewram17800[a].unk2 != 0) - b = ewram17800[a].unk2; + if (ewram17800[a].transformedSpecies != 0) + b = ewram17800[a].transformedSpecies; if (gEnemyMonElevation[b] != 0) gSprites[ewram17810[a].unk7].callback = sub_80328A4; else @@ -953,283 +948,8 @@ void sub_8032A38(void) void sub_8032AA8(u8 a, u8 b) { - ewram17800[a].unk2 = 0; + ewram17800[a].transformedSpecies = 0; gBattleMonForms[a] = 0; if (b == 0) sub_80324E0(a); } - -void nullsub_45(void) -{ -} - -void SetBankFuncToOpponentBufferRunCommand(void) -{ - gBattleBankFunc[gActiveBank] = OpponentBufferRunCommand; -} - -void OpponentBufferRunCommand(void) -{ - if (gBattleExecBuffer & gBitTable[gActiveBank]) - { - if (gBattleBufferA[gActiveBank][0] <= 0x38) - gOpponentBufferCommands[gBattleBufferA[gActiveBank][0]](); - else - OpponentBufferExecCompleted(); - } -} - -void sub_8032B4C(void) -{ - if (gSprites[gObjectBankIDs[gActiveBank]].callback == SpriteCallbackDummy) - OpponentBufferExecCompleted(); -} - -// Duplicate of sub_8032B4C -void sub_8032B84(void) -{ - if (gSprites[gObjectBankIDs[gActiveBank]].callback == SpriteCallbackDummy) - OpponentBufferExecCompleted(); -} - -void sub_8032BBC(void) -{ - if (gSprites[gObjectBankIDs[gActiveBank]].callback == SpriteCallbackDummy) - { - sub_8031B74(gSprites[gObjectBankIDs[gActiveBank]].oam.affineParam); - gSprites[gObjectBankIDs[gActiveBank]].oam.tileNum = gSprites[gObjectBankIDs[gActiveBank]].data5; - FreeSpriteOamMatrix(&gSprites[gObjectBankIDs[gActiveBank]]); - DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]); - OpponentBufferExecCompleted(); - } -} - -void sub_8032C4C(void) -{ - if ((--ewram17810[gActiveBank].unk9) == 0xFF) - { - ewram17810[gActiveBank].unk9 = 0; - OpponentBufferExecCompleted(); - } -} - -void sub_8032C88(void) -{ - bool8 r6 = FALSE; - - if (!IsDoubleBattle() || (IsDoubleBattle() && (gBattleTypeFlags & BATTLE_TYPE_MULTI))) - { - if (gSprites[gHealthboxIDs[gActiveBank]].callback == SpriteCallbackDummy) - r6 = TRUE; - } - else - { - if (gSprites[gHealthboxIDs[gActiveBank]].callback == SpriteCallbackDummy - && gSprites[gHealthboxIDs[gActiveBank ^ 2]].callback == SpriteCallbackDummy) - r6 = TRUE; - } - if (IsCryPlayingOrClearCrySongs()) - r6 = FALSE; - - if (r6 && ewram17810[gActiveBank].unk1_0 && ewram17810[gActiveBank ^ 2].unk1_0) - { - ewram17810[gActiveBank].unk0_7 = 0; - ewram17810[gActiveBank].unk1_0 = 0; - ewram17810[gActiveBank ^ 2].unk0_7 = 0; - ewram17810[gActiveBank ^ 2].unk1_0 = 0; - FreeSpriteTilesByTag(0x27F9); - FreeSpritePaletteByTag(0x27F9); - if (gBattleTypeFlags & BATTLE_TYPE_MULTI) - m4aMPlayContinue(&gMPlay_BGM); - else - m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 256); - ewram17810[gActiveBank].unk9 = 3; - gBattleBankFunc[gActiveBank] = sub_8032C4C; - } -} - -void sub_8032E2C(void) -{ - if (!ewram17810[gActiveBank].unk0_3 && !ewram17810[gActiveBank].unk0_7) - sub_8141828(gActiveBank, &gEnemyParty[gBattlePartyID[gActiveBank]]); - if (!ewram17810[gActiveBank ^ 2].unk0_3 && !ewram17810[gActiveBank ^ 2].unk0_7) - sub_8141828(gActiveBank ^ 2, &gEnemyParty[gBattlePartyID[gActiveBank ^ 2]]); - if (!ewram17810[gActiveBank].unk0_3 && !ewram17810[gActiveBank ^ 2].unk0_3) - { - if (IsDoubleBattle() && !(gBattleTypeFlags & BATTLE_TYPE_MULTI)) - { - DestroySprite(&gSprites[gUnknown_0300434C[gActiveBank ^ 2]]); - sub_8045A5C( - gHealthboxIDs[gActiveBank ^ 2], - &gEnemyParty[gBattlePartyID[gActiveBank ^ 2]], - 0); - sub_804777C(gActiveBank ^ 2); - sub_8043DFC(gHealthboxIDs[gActiveBank ^ 2]); - sub_8032984( - gActiveBank ^ 2, - GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank ^ 2]], MON_DATA_SPECIES)); - } - DestroySprite(&gSprites[gUnknown_0300434C[gActiveBank]]); - sub_8045A5C( - gHealthboxIDs[gActiveBank], - &gEnemyParty[gBattlePartyID[gActiveBank]], - 0); - sub_804777C(gActiveBank); - sub_8043DFC(gHealthboxIDs[gActiveBank]); - sub_8032984( - gActiveBank, - GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES)); - - ewram17840.unk9_0 = 0; - gBattleBankFunc[gActiveBank] = sub_8032C88; - } -} - -void sub_8033018(void) -{ - if (gSprites[gObjectBankIDs[gActiveBank]].animEnded == TRUE - && gSprites[gObjectBankIDs[gActiveBank]].pos2.x == 0) - { - if (!ewram17810[gActiveBank].unk0_7) - { - sub_8141828(gActiveBank, &gEnemyParty[gBattlePartyID[gActiveBank]]); - return; - } - if (ewram17810[gActiveBank].unk1_0) - { - ewram17810[gActiveBank].unk0_7 = 0; - ewram17810[gActiveBank].unk1_0 = 0; - FreeSpriteTilesByTag(0x27F9); - FreeSpritePaletteByTag(0x27F9); - OpponentBufferExecCompleted(); - return; - } - } -} - -void sub_80330C8(void) -{ - s16 r4 = sub_8045C78(gActiveBank, gHealthboxIDs[gActiveBank], 0, 0); - - sub_8043DFC(gHealthboxIDs[gActiveBank]); - if (r4 != -1) - sub_80440EC(gHealthboxIDs[gActiveBank], r4, 0); - else - OpponentBufferExecCompleted(); -} - -void sub_803311C(void) -{ - if (!gSprites[gObjectBankIDs[gActiveBank]].inUse) - { - sub_8043DB0(gHealthboxIDs[gActiveBank]); - OpponentBufferExecCompleted(); - } -} - -void sub_8033160(void) -{ - if (!ewram17810[gActiveBank].unk0_6) - { - FreeSpriteOamMatrix(&gSprites[gObjectBankIDs[gActiveBank]]); - DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]); - sub_8032A08(gActiveBank); - sub_8043DB0(gHealthboxIDs[gActiveBank]); - OpponentBufferExecCompleted(); - } -} - -void sub_80331D0(void) -{ - if (gUnknown_03004210.state == 0) - OpponentBufferExecCompleted(); -} - -void bx_blink_t7(void) -{ - u8 spriteId = gObjectBankIDs[gActiveBank]; - - if (gSprites[spriteId].data1 == 32) - { - gSprites[spriteId].data1 = 0; - gSprites[spriteId].invisible = FALSE; - gDoingBattleAnim = 0; - OpponentBufferExecCompleted(); - } - else - { - if (((u16)gSprites[spriteId].data1 % 4) == 0) - gSprites[spriteId].invisible ^= 1; - gSprites[spriteId].data1++; - } -} - -void sub_8033264(void) -{ - if (gSprites[gHealthboxIDs[gActiveBank]].callback == SpriteCallbackDummy) - { - if (ewram17800[gActiveBank].unk0_2) - move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 6); - gBattleBankFunc[gActiveBank] = sub_80332D0; - } -} - -void sub_80332D0(void) -{ - if (!ewram17810[gActiveBank].unk0_6) - { - CreateTask(c3_0802FDF4, 10); - OpponentBufferExecCompleted(); - } -} - -void sub_8033308(void) -{ - if (ewram17810[gActiveBank].unk1_0) - { - ewram17810[gActiveBank].unk0_7 = 0; - ewram17810[gActiveBank].unk1_0 = 0; - FreeSpriteTilesByTag(0x27F9); - FreeSpritePaletteByTag(0x27F9); - StartSpriteAnim(&gSprites[gObjectBankIDs[gActiveBank]], 0); - sub_8045A5C( - gHealthboxIDs[gActiveBank], - &gEnemyParty[gBattlePartyID[gActiveBank]], - 0); - sub_804777C(gActiveBank); - sub_8043DFC(gHealthboxIDs[gActiveBank]); - sub_8031F88(gActiveBank); - gBattleBankFunc[gActiveBank] = sub_8033264; - } -} - -void sub_80333D4(void) -{ - if (!ewram17810[gActiveBank].unk0_3 && !ewram17810[gActiveBank].unk0_7) - sub_8141828(gActiveBank, &gEnemyParty[gBattlePartyID[gActiveBank]]); - if (gSprites[gUnknown_0300434C[gActiveBank]].callback == SpriteCallbackDummy - && !ewram17810[gActiveBank].unk0_3) - { - DestroySprite(&gSprites[gUnknown_0300434C[gActiveBank]]); - sub_8032984(gActiveBank, GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES)); - gBattleBankFunc[gActiveBank] = sub_8033308; - } -} - -void sub_8033494(void) -{ - if (!ewram17810[gActiveBank].unk0_4) - OpponentBufferExecCompleted(); -} - -void sub_80334C0(void) -{ - if (!ewram17810[gActiveBank].unk0_5) - OpponentBufferExecCompleted(); -} - -void OpponentBufferExecCompleted(void) -{ - gBattleBankFunc[gActiveBank] = OpponentBufferRunCommand; - gBattleExecBuffer &= ~gBitTable[gActiveBank]; -} diff --git a/src/battle_ai.c b/src/battle/battle_ai.c similarity index 97% rename from src/battle_ai.c rename to src/battle/battle_ai.c index d262e69c8..1869bbe36 100644 --- a/src/battle_ai.c +++ b/src/battle/battle_ai.c @@ -31,6 +31,14 @@ extern u8 gCritMultiplier; extern u16 gTrainerBattleOpponent; extern u8 *BattleAIs[]; +enum +{ + WEATHER_TYPE_SUN, + WEATHER_TYPE_RAIN, + WEATHER_TYPE_SANDSTORM, + WEATHER_TYPE_HAIL, +}; + /* gAIScriptPtr is a pointer to the next battle AI cmd command to read. when a command finishes processing, gAIScriptPtr is incremented by @@ -38,7 +46,7 @@ the number of bytes that the current command had reserved for arguments in order to read the next command correctly. refer to battle_ai_scripts.s for the AI scripts. */ -extern u8 *gAIScriptPtr; +EWRAM_DATA u8 *gAIScriptPtr = NULL; static void BattleAICmd_if_random_less_than(void); static void BattleAICmd_if_random_greater_than(void); @@ -293,7 +301,7 @@ void BattleAI_SetupAIData(void) for (i = 0; i < MAX_MON_MOVES; i++) AI_THINKING_STRUCT->score[i] = 100; - r7 = sub_8015A98(gActiveBank, 0, 0xFF); + r7 = CheckMoveLimitations(gActiveBank, 0, 0xFF); // probably sets up the moves to consider and ignores non-valid moves such as NO_MOVE or glitch moves. for (i = 0; i < MAX_MON_MOVES; i++) @@ -896,7 +904,7 @@ static void BattleAICmd_if_user_cant_damage(void) static void BattleAICmd_get_turn_count(void) { - AI_THINKING_STRUCT->funcResult = gBattleResults.BattleTurnCounter; + AI_THINKING_STRUCT->funcResult = gBattleResults.battleTurnCounter; gAIScriptPtr += 1; } @@ -1265,7 +1273,7 @@ static void BattleAICmd_if_arg_not_equal(void) static void BattleAICmd_if_would_go_first(void) { - if (b_first_side(gBankAttacker, gBankTarget, 1) == gAIScriptPtr[1]) + if (GetWhoStrikesFirst(gBankAttacker, gBankTarget, 1) == gAIScriptPtr[1]) gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2); else gAIScriptPtr += 6; @@ -1273,7 +1281,7 @@ static void BattleAICmd_if_would_go_first(void) static void BattleAICmd_if_would_not_go_first(void) { - if (b_first_side(gBankAttacker, gBankTarget, 1) != gAIScriptPtr[1]) + if (GetWhoStrikesFirst(gBankAttacker, gBankTarget, 1) != gAIScriptPtr[1]) gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2); else gAIScriptPtr += 6; @@ -1412,8 +1420,8 @@ static void BattleAICmd_get_highest_possible_damage(void) s32 i; gDynamicBasePower = 0; - BATTLE_STRUCT->DynamicMoveType = 0; - BATTLE_STRUCT->DmgMultiplier = 1; + BATTLE_STRUCT->dynamicMoveType = 0; + BATTLE_STRUCT->dmgMultiplier = 1; gBattleMoveFlags = 0; gCritMultiplier = 1; AI_THINKING_STRUCT->funcResult = 0; @@ -1452,8 +1460,8 @@ static void BattleAICmd_if_damage_bonus(void) u8 damageVar; gDynamicBasePower = 0; - BATTLE_STRUCT->DynamicMoveType = 0; - BATTLE_STRUCT->DmgMultiplier = 1; + BATTLE_STRUCT->dynamicMoveType = 0; + BATTLE_STRUCT->dmgMultiplier = 1; gBattleMoveFlags = 0; gCritMultiplier = 1; @@ -1562,14 +1570,14 @@ static void BattleAICmd_if_status_not_in_party(void) static void BattleAICmd_get_weather(void) { - if (gBattleWeather & WEATHER_RAINY) - AI_THINKING_STRUCT->funcResult = WEATHER_RAIN; - if (gBattleWeather & WEATHER_SANDSTORMY) - AI_THINKING_STRUCT->funcResult = WEATHER_SANDSTORM; - if (gBattleWeather & WEATHER_SUNNY) - AI_THINKING_STRUCT->funcResult = WEATHER_SUN; - if (gBattleWeather & weather_hail) - AI_THINKING_STRUCT->funcResult = WEATHER_HAIL; + if (gBattleWeather & WEATHER_RAIN_ANY) + AI_THINKING_STRUCT->funcResult = WEATHER_TYPE_RAIN; + if (gBattleWeather & WEATHER_SANDSTORM_ANY) + AI_THINKING_STRUCT->funcResult = WEATHER_TYPE_SANDSTORM; + if (gBattleWeather & WEATHER_SUN_ANY) + AI_THINKING_STRUCT->funcResult = WEATHER_TYPE_SUN; + if (gBattleWeather & WEATHER_HAIL) + AI_THINKING_STRUCT->funcResult = WEATHER_TYPE_HAIL; gAIScriptPtr += 1; } @@ -1659,8 +1667,8 @@ static void BattleAICmd_if_can_faint(void) } gDynamicBasePower = 0; - BATTLE_STRUCT->DynamicMoveType = 0; - BATTLE_STRUCT->DmgMultiplier = 1; + BATTLE_STRUCT->dynamicMoveType = 0; + BATTLE_STRUCT->dmgMultiplier = 1; gBattleMoveFlags = 0; gCritMultiplier = 1; gCurrentMove = AI_THINKING_STRUCT->moveConsidered; @@ -1688,8 +1696,8 @@ static void BattleAICmd_if_cant_faint(void) } gDynamicBasePower = 0; - BATTLE_STRUCT->DynamicMoveType = 0; - BATTLE_STRUCT->DmgMultiplier = 1; + BATTLE_STRUCT->dynamicMoveType = 0; + BATTLE_STRUCT->dmgMultiplier = 1; gBattleMoveFlags = 0; gCritMultiplier = 1; gCurrentMove = AI_THINKING_STRUCT->moveConsidered; @@ -1843,7 +1851,7 @@ static void BattleAICmd_if_last_move_did_damage(void) if (gAIScriptPtr[2] == 0) { - if (gDisableStructs[index].DisabledMove == 0) + if (gDisableStructs[index].disabledMove == 0) { gAIScriptPtr += 7; return; @@ -1856,7 +1864,7 @@ static void BattleAICmd_if_last_move_did_damage(void) gAIScriptPtr += 7; return; } - else if (gDisableStructs[index].EncoredMove != 0) + else if (gDisableStructs[index].encoredMove != 0) { gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 3); return; @@ -1869,7 +1877,7 @@ static void BattleAICmd_if_encored(void) switch (gAIScriptPtr[1]) { case 0: // _08109348 - if (gDisableStructs[gActiveBank].DisabledMove == AI_THINKING_STRUCT->moveConsidered) + if (gDisableStructs[gActiveBank].disabledMove == AI_THINKING_STRUCT->moveConsidered) { gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2); return; @@ -1877,7 +1885,7 @@ static void BattleAICmd_if_encored(void) gAIScriptPtr += 6; return; case 1: // _08109370 - if (gDisableStructs[gActiveBank].EncoredMove == AI_THINKING_STRUCT->moveConsidered) + if (gDisableStructs[gActiveBank].encoredMove == AI_THINKING_STRUCT->moveConsidered) { gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2); return; @@ -1954,7 +1962,7 @@ static void BattleAICmd_is_first_turn(void) else index = gBankTarget; - AI_THINKING_STRUCT->funcResult = gDisableStructs[index].IsFirstTurn; + AI_THINKING_STRUCT->funcResult = gDisableStructs[index].isFirstTurn; gAIScriptPtr += 2; } @@ -1968,7 +1976,7 @@ static void BattleAICmd_get_stockpile_count(void) else index = gBankTarget; - AI_THINKING_STRUCT->funcResult = gDisableStructs[index].StockpileCounter; + AI_THINKING_STRUCT->funcResult = gDisableStructs[index].stockpileCounter; gAIScriptPtr += 2; } @@ -2025,7 +2033,7 @@ static void BattleAICmd_get_protect_count(void) else index = gBankTarget; - AI_THINKING_STRUCT->funcResult = gDisableStructs[index].ProtectUses; + AI_THINKING_STRUCT->funcResult = gDisableStructs[index].protectUses; gAIScriptPtr += 2; } @@ -2104,7 +2112,7 @@ static void BattleAICmd_if_level_compare(void) static void BattleAICmd_if_taunted(void) { - if (gDisableStructs[gBankTarget].taunt != 0) + if (gDisableStructs[gBankTarget].tauntTimer1 != 0) gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 1); else gAIScriptPtr += 5; @@ -2112,7 +2120,7 @@ static void BattleAICmd_if_taunted(void) static void BattleAICmd_if_not_taunted(void) { - if (gDisableStructs[gBankTarget].taunt == 0) + if (gDisableStructs[gBankTarget].tauntTimer1 == 0) gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 1); else gAIScriptPtr += 5; diff --git a/src/battle_anim.c b/src/battle/battle_anim.c similarity index 92% rename from src/battle_anim.c rename to src/battle/battle_anim.c index 55ede1788..111d72813 100644 --- a/src/battle_anim.c +++ b/src/battle/battle_anim.c @@ -37,8 +37,8 @@ EWRAM_DATA u8 gMonAnimTaskIdArray[2] = {0}; EWRAM_DATA u8 gUnknown_0202F7C4 = 0; EWRAM_DATA u8 gUnknown_0202F7C5 = 0; EWRAM_DATA u16 gAnimMoveIndex = 0; // set but unused. -EWRAM_DATA u8 gBattleAnimPlayerMonIndex = 0; -EWRAM_DATA u8 gBattleAnimEnemyMonIndex = 0; +EWRAM_DATA u8 gBattleAnimBankAttacker = 0; +EWRAM_DATA u8 gBattleAnimBankTarget = 0; EWRAM_DATA u16 gUnknown_0202F7CA[4] = {0}; EWRAM_DATA u8 gUnknown_0202F7D2 = 0; extern u16 gUnknown_030041B4; @@ -49,9 +49,11 @@ extern u16 gUnknown_03004280; extern u16 gUnknown_03004288; extern u16 gUnknown_030042C0; extern u16 gUnknown_030042C4; -extern u16 gSoundAnimFramesToWait; -extern u16 gAnimSpriteIndexArray[8]; -extern s16 gBattleAnimArgs[8]; + +u16 gSoundAnimFramesToWait; +s16 gBattleAnimArgs[8]; +u16 gAnimSpriteIndexArray[8]; + extern struct MusicPlayerInfo gMPlay_BGM; extern struct MusicPlayerInfo gMPlay_SE1; extern struct MusicPlayerInfo gMPlay_SE2; @@ -199,15 +201,15 @@ void battle_anim_clear_some_data(void) gUnknown_0202F7C4 = 0; gUnknown_0202F7C5 = 0; gAnimMoveIndex = 0; - gBattleAnimPlayerMonIndex = 0; - gBattleAnimEnemyMonIndex = 0; + gBattleAnimBankAttacker = 0; + gBattleAnimBankTarget = 0; gUnknown_0202F7D2 = 0; } void ExecuteMoveAnim(u16 move) { - gBattleAnimPlayerMonIndex = gBankAttacker; - gBattleAnimEnemyMonIndex = gBankTarget; + gBattleAnimBankAttacker = gBankAttacker; + gBattleAnimBankTarget = gBankTarget; DoMoveAnim(gBattleAnims_Moves, move, 1); } @@ -394,7 +396,7 @@ static void ScriptCmd_sprite(void) r4 -= 0x40; else r4 = -r4; - _r0 = sub_8079E90(gBattleAnimEnemyMonIndex); + _r0 = sub_8079E90(gBattleAnimBankTarget); r1 = r4; } @@ -405,15 +407,15 @@ static void ScriptCmd_sprite(void) r4 -= 0x40; else r4 = -r4; - _r0 = sub_8079E90(gBattleAnimPlayerMonIndex); + _r0 = sub_8079E90(gBattleAnimBankAttacker); r1 = r4; } r6 = _r0 + r1; if ((s16)r6 < 3) r6 = 3; - r4 = sub_8077ABC(gBattleAnimEnemyMonIndex, 2); - r2 = sub_8077ABC(gBattleAnimEnemyMonIndex, 3); + r4 = sub_8077ABC(gBattleAnimBankTarget, 2); + r2 = sub_8077ABC(gBattleAnimBankTarget, 3); CreateSpriteAndAnimate(r7, r4, r2, r6); gAnimVisualTaskCount++; } @@ -483,10 +485,10 @@ _08075B34:\n\ _08075B36:\n\ lsls r0, 24\n\ lsrs r4, r0, 24\n\ - ldr r0, _08075B40 @ =gBattleAnimEnemyMonIndex\n\ + ldr r0, _08075B40 @ =gBattleAnimBankTarget\n\ b _08075B56\n\ .align 2, 0\n\ -_08075B40: .4byte gBattleAnimEnemyMonIndex\n\ +_08075B40: .4byte gBattleAnimBankTarget\n\ _08075B44:\n\ cmp r4, 0x3F\n\ bls _08075B4E\n\ @@ -498,7 +500,7 @@ _08075B4E:\n\ _08075B50:\n\ lsls r0, 24\n\ lsrs r4, r0, 24\n\ - ldr r0, _08075BAC @ =gBattleAnimPlayerMonIndex\n\ + ldr r0, _08075BAC @ =gBattleAnimBankAttacker\n\ _08075B56:\n\ ldrb r0, [r0]\n\ bl sub_8079E90\n\ @@ -515,7 +517,7 @@ _08075B56:\n\ bgt _08075B74\n\ movs r6, 0x3\n\ _08075B74:\n\ - ldr r5, _08075BB0 @ =gBattleAnimEnemyMonIndex\n\ + ldr r5, _08075BB0 @ =gBattleAnimBankTarget\n\ ldrb r0, [r5]\n\ movs r1, 0x2\n\ bl sub_8077ABC\n\ @@ -541,8 +543,8 @@ _08075B74:\n\ pop {r0}\n\ bx r0\n\ .align 2, 0\n\ -_08075BAC: .4byte gBattleAnimPlayerMonIndex\n\ -_08075BB0: .4byte gBattleAnimEnemyMonIndex\n\ +_08075BAC: .4byte gBattleAnimBankAttacker\n\ +_08075BB0: .4byte gBattleAnimBankTarget\n\ _08075BB4: .4byte gAnimVisualTaskCount\n\ .syntax divided\n"); } @@ -684,10 +686,10 @@ static void ScriptCmd_monbg(void) else if (r6 == 1) r6 = 3; if (r6 == 0 || r6 == 2) - r5 = gBattleAnimPlayerMonIndex; + r5 = gBattleAnimBankAttacker; else - r5 = gBattleAnimEnemyMonIndex; - if (b_side_obj__get_some_boolean(r5)) + r5 = gBattleAnimBankTarget; + if (IsAnimBankSpriteVisible(r5)) { r0 = GetBankIdentity(r5); r0 += 0xFF; @@ -717,7 +719,7 @@ static void ScriptCmd_monbg(void) } r5 ^= 2; - if (r6 > 1 && b_side_obj__get_some_boolean(r5)) + if (r6 > 1 && IsAnimBankSpriteVisible(r5)) { r0 = GetBankIdentity(r5); r0 += 0xFF; @@ -749,20 +751,20 @@ static void ScriptCmd_monbg(void) } #ifdef NONMATCHING -bool8 b_side_obj__get_some_boolean(u8 a) +bool8 IsAnimBankSpriteVisible(u8 a) { - if (IsContest() != 0) + if (IsContest()) { - if (a == gBattleAnimPlayerMonIndex) + if (a == gBattleAnimBankAttacker) return TRUE; else return FALSE; } - if (sub_8078874(a) == 0) + if (!AnimBankSpriteExists(a)) return FALSE; - if (IsContest() != 0) + if (IsContest()) return TRUE; // this line wont ever be reached. - if ((EWRAM_17800[a].unk0 & 1) == 0) + if (!(EWRAM_17800[a].unk0 & 1)) return TRUE; if (gSprites[gObjectBankIDs[a]].invisible) return FALSE; @@ -770,7 +772,7 @@ bool8 b_side_obj__get_some_boolean(u8 a) } #else __attribute__((naked)) -bool8 b_side_obj__get_some_boolean(u8 a) +bool8 IsAnimBankSpriteVisible(u8 a) { asm(".syntax unified\n\ push {r4,r5,lr}\n\ @@ -781,16 +783,16 @@ bool8 b_side_obj__get_some_boolean(u8 a) lsls r0, 24\n\ cmp r0, 0\n\ beq _08075FDC\n\ - ldr r0, _08075FD8 @ =gBattleAnimPlayerMonIndex\n\ + ldr r0, _08075FD8 @ =gBattleAnimBankAttacker\n\ ldrb r0, [r0]\n\ cmp r4, r0\n\ beq _0807601C\n\ b _0807602C\n\ .align 2, 0\n\ -_08075FD8: .4byte gBattleAnimPlayerMonIndex\n\ +_08075FD8: .4byte gBattleAnimBankAttacker\n\ _08075FDC:\n\ adds r0, r4, 0\n\ - bl sub_8078874\n\ + bl AnimBankSpriteExists\n\ lsls r0, 24\n\ cmp r0, 0\n\ beq _0807602C\n\ @@ -1094,9 +1096,9 @@ static void ScriptCmd_clearmonbg(void) else if (r4 == 1) r4 = 3; if (r4 == 0 || r4 == 2) - r5 = gBattleAnimPlayerMonIndex; + r5 = gBattleAnimBankAttacker; else - r5 = gBattleAnimEnemyMonIndex; + r5 = gBattleAnimBankTarget; if (gMonAnimTaskIdArray[0] != 0xFF) gSprites[gObjectBankIDs[r5]].invisible = FALSE; if (r4 > 1 && gMonAnimTaskIdArray[1] != 0xFF) @@ -1153,10 +1155,10 @@ static void ScriptCmd_monbg_22(void) else if (r5 == 1) r5 = 3; if (r5 == 0 || r5 == 2) - r4 = gBattleAnimPlayerMonIndex; + r4 = gBattleAnimBankAttacker; else - r4 = gBattleAnimEnemyMonIndex; - if (b_side_obj__get_some_boolean(r4)) + r4 = gBattleAnimBankTarget; + if (IsAnimBankSpriteVisible(r4)) { r0 = GetBankIdentity(r4); r0 += 0xFF; @@ -1168,7 +1170,7 @@ static void ScriptCmd_monbg_22(void) gSprites[gObjectBankIDs[r4]].invisible = FALSE; } r4 ^= 2; - if (r5 > 1 && b_side_obj__get_some_boolean(r4)) + if (r5 > 1 && IsAnimBankSpriteVisible(r4)) { r0 = GetBankIdentity(r4); r0 += 0xFF; @@ -1195,12 +1197,12 @@ static void ScriptCmd_clearmonbg_23(void) else if (r5 == 1) r5 = 3; if (r5 == 0 || r5 == 2) - r6 = gBattleAnimPlayerMonIndex; + r6 = gBattleAnimBankAttacker; else - r6 = gBattleAnimEnemyMonIndex; - if (b_side_obj__get_some_boolean(r6)) + r6 = gBattleAnimBankTarget; + if (IsAnimBankSpriteVisible(r6)) gSprites[gObjectBankIDs[r6]].invisible = FALSE; - if (r5 > 1 && b_side_obj__get_some_boolean(r6 ^ 2)) + if (r5 > 1 && IsAnimBankSpriteVisible(r6 ^ 2)) gSprites[gObjectBankIDs[r6 ^ 2]].invisible = FALSE; else r5 = 0; @@ -1226,9 +1228,9 @@ static void sub_80769A4(u8 taskId) r5 = 0; else r5 = 1; - if (b_side_obj__get_some_boolean(r4)) + if (IsAnimBankSpriteVisible(r4)) sub_8076464(r5); - if (gTasks[taskId].data[0] > 1 && b_side_obj__get_some_boolean(r4 ^ 2)) + if (gTasks[taskId].data[0] > 1 && IsAnimBankSpriteVisible(r4 ^ 2)) sub_8076464(r5 ^ 1); DestroyTask(taskId); } @@ -1369,7 +1371,7 @@ static void ScriptCmd_fadetobg_25(void) taskId = CreateTask(task_p5_load_battle_screen_elements, 5); if (IsContest() != 0) gTasks[taskId].data[0] = r6; - else if (GetBankSide(gBattleAnimEnemyMonIndex) == 0) + else if (GetBankSide(gBattleAnimBankTarget) == 0) gTasks[taskId].data[0] = r7; else gTasks[taskId].data[0] = r8; @@ -1420,7 +1422,7 @@ static void sub_8076DB8(u16 a) void *dmaSrc; void *dmaDest; - sub_800D238(tilemap, IsContest() ? EWRAM_14800 : EWRAM_18000); + LZDecompressWram(tilemap, IsContest() ? EWRAM_14800 : EWRAM_18000); sub_80763FC(sub_80789BC(), IsContest() ? EWRAM_14800 : EWRAM_18000, 0x100, 0); dmaSrc = IsContest() ? EWRAM_14800 : EWRAM_18000; dmaDest = (void *)(VRAM + 0xD000); @@ -1491,16 +1493,16 @@ static void ScriptCmd_changebg(void) /* s8 sub_8076F98(s8 a) { - if (!IsContest() && (EWRAM_17810[gBattleAnimPlayerMonIndex].unk0 & 0x10)) + if (!IsContest() && (EWRAM_17810[gBattleAnimBankAttacker].unk0 & 0x10)) { - a = GetBankSide(gBattleAnimPlayerMonIndex) ? 0xC0 : 0x3F; + a = GetBankSide(gBattleAnimBankAttacker) ? 0xC0 : 0x3F; } //_08076FDC else { if (IsContest()) { - if (gBattleAnimPlayerMonIndex == gBattleAnimEnemyMonIndex && gBattleAnimPlayerMonIndex == 2 + if (gBattleAnimBankAttacker == gBattleAnimBankTarget && gBattleAnimBankAttacker == 2 && a == 0x3F) { //jump to _0807707A @@ -1512,9 +1514,9 @@ s8 sub_8076F98(s8 a) //_08077004 else { - if (GetBankSide(gBattleAnimPlayerMonIndex) == 0) + if (GetBankSide(gBattleAnimBankAttacker) == 0) { - if (GetBankSide(gBattleAnimEnemyMonIndex) == 0) + if (GetBankSide(gBattleAnimBankTarget) == 0) } //_08077042 else @@ -1538,7 +1540,7 @@ s8 sub_8076F98(s8 a) lsls r0, 24\n\ cmp r0, 0\n\ bne _08076FDC\n\ - ldr r0, _08076FD4 @ =gBattleAnimPlayerMonIndex\n\ + ldr r0, _08076FD4 @ =gBattleAnimBankAttacker\n\ ldrb r2, [r0]\n\ lsls r0, r2, 1\n\ adds r0, r2\n\ @@ -1559,15 +1561,15 @@ s8 sub_8076F98(s8 a) movs r4, 0x3F\n\ b _0807706E\n\ .align 2, 0\n\ -_08076FD4: .4byte gBattleAnimPlayerMonIndex\n\ +_08076FD4: .4byte gBattleAnimBankAttacker\n\ _08076FD8: .4byte 0x02017810\n\ _08076FDC:\n\ bl IsContest\n\ lsls r0, 24\n\ cmp r0, 0\n\ beq _08077004\n\ - ldr r0, _08076FFC @ =gBattleAnimPlayerMonIndex\n\ - ldr r1, _08077000 @ =gBattleAnimEnemyMonIndex\n\ + ldr r0, _08076FFC @ =gBattleAnimBankAttacker\n\ + ldr r1, _08077000 @ =gBattleAnimBankTarget\n\ ldrb r0, [r0]\n\ ldrb r1, [r1]\n\ cmp r0, r1\n\ @@ -1578,16 +1580,16 @@ _08076FDC:\n\ beq _0807707A\n\ b _08077068\n\ .align 2, 0\n\ -_08076FFC: .4byte gBattleAnimPlayerMonIndex\n\ -_08077000: .4byte gBattleAnimEnemyMonIndex\n\ +_08076FFC: .4byte gBattleAnimBankAttacker\n\ +_08077000: .4byte gBattleAnimBankTarget\n\ _08077004:\n\ - ldr r0, _0807702C @ =gBattleAnimPlayerMonIndex\n\ + ldr r0, _0807702C @ =gBattleAnimBankAttacker\n\ ldrb r0, [r0]\n\ bl GetBankSide\n\ lsls r0, 24\n\ cmp r0, 0\n\ bne _08077042\n\ - ldr r0, _08077030 @ =gBattleAnimEnemyMonIndex\n\ + ldr r0, _08077030 @ =gBattleAnimBankTarget\n\ ldrb r0, [r0]\n\ bl GetBankSide\n\ lsls r0, 24\n\ @@ -1600,8 +1602,8 @@ _08077004:\n\ movs r4, 0xC0\n\ b _0807706E\n\ .align 2, 0\n\ -_0807702C: .4byte gBattleAnimPlayerMonIndex\n\ -_08077030: .4byte gBattleAnimEnemyMonIndex\n\ +_0807702C: .4byte gBattleAnimBankAttacker\n\ +_08077030: .4byte gBattleAnimBankTarget\n\ _08077034:\n\ movs r0, 0x40\n\ negs r0, r0\n\ @@ -1611,7 +1613,7 @@ _08077034:\n\ lsls r0, 24\n\ b _0807706C\n\ _08077042:\n\ - ldr r0, _08077064 @ =gBattleAnimEnemyMonIndex\n\ + ldr r0, _08077064 @ =gBattleAnimBankTarget\n\ ldrb r0, [r0]\n\ bl GetBankSide\n\ lsls r0, 24\n\ @@ -1627,7 +1629,7 @@ _08077042:\n\ movs r4, 0x3F\n\ b _0807706E\n\ .align 2, 0\n\ -_08077064: .4byte gBattleAnimEnemyMonIndex\n\ +_08077064: .4byte gBattleAnimBankTarget\n\ _08077068:\n\ lsls r0, r4, 24\n\ negs r0, r0\n\ @@ -1659,16 +1661,16 @@ _08077088:\n\ s8 sub_8077094(s8 a) { - if (!IsContest() && (EWRAM_17810[gBattleAnimPlayerMonIndex].unk0 & 0x10)) + if (!IsContest() && (EWRAM_17810[gBattleAnimBankAttacker].unk0 & 0x10)) { - if (GetBankSide(gBattleAnimPlayerMonIndex) != 0) + if (GetBankSide(gBattleAnimBankAttacker) != 0) a = 0x3F; else a = 0xC0; } else { - if (GetBankSide(gBattleAnimPlayerMonIndex) != 0 || IsContest() != 0) + if (GetBankSide(gBattleAnimBankAttacker) != 0 || IsContest() != 0) a = -a; } return a; @@ -2126,9 +2128,9 @@ static void ScriptCmd_monbgprio_28(void) r2 = SCRIPT_READ_8(gBattleAnimScriptPtr + 1); gBattleAnimScriptPtr += 2; if (r2 != 0) - r0 = gBattleAnimEnemyMonIndex; + r0 = gBattleAnimBankTarget; else - r0 = gBattleAnimPlayerMonIndex; + r0 = gBattleAnimBankAttacker; r4 = GetBankIdentity(r0); if (!IsContest() && (r4 == 0 || r4 == 3)) { @@ -2155,12 +2157,12 @@ static void ScriptCmd_monbgprio_2A(void) r6 = SCRIPT_READ_8(gBattleAnimScriptPtr + 1); gBattleAnimScriptPtr += 2; - if (GetBankSide(gBattleAnimPlayerMonIndex) != GetBankSide(gBattleAnimEnemyMonIndex)) + if (GetBankSide(gBattleAnimBankAttacker) != GetBankSide(gBattleAnimBankTarget)) { if (r6 != 0) - r0 = gBattleAnimEnemyMonIndex; + r0 = gBattleAnimBankTarget; else - r0 = gBattleAnimPlayerMonIndex; + r0 = gBattleAnimBankAttacker; r4 = GetBankIdentity(r0); if (!IsContest() && (r4 == 0 || r4 == 3)) { @@ -2176,7 +2178,7 @@ static void ScriptCmd_invisible(void) u8 spriteId; r0 = SCRIPT_READ_8(gBattleAnimScriptPtr + 1); - spriteId = obj_id_for_side_relative_to_move(r0); + spriteId = GetAnimBankSpriteId(r0); if (spriteId != 0xFF) { gSprites[spriteId].invisible = TRUE; @@ -2190,7 +2192,7 @@ static void ScriptCmd_visible(void) u8 spriteId; r0 = SCRIPT_READ_8(gBattleAnimScriptPtr + 1); - spriteId = obj_id_for_side_relative_to_move(r0); + spriteId = GetAnimBankSpriteId(r0); if (spriteId != 0xFF) { gSprites[spriteId].invisible = FALSE; @@ -2207,17 +2209,17 @@ static void ScriptCmd_doublebattle_2D(void) r7 = SCRIPT_READ_8(gBattleAnimScriptPtr + 1); gBattleAnimScriptPtr += 2; if (!IsContest() && IsDoubleBattle() - && GetBankSide(gBattleAnimPlayerMonIndex) == GetBankSide(gBattleAnimEnemyMonIndex)) + && GetBankSide(gBattleAnimBankAttacker) == GetBankSide(gBattleAnimBankTarget)) { if (r7 == 0) { - r4 = GetBankIdentity_permutated(gBattleAnimPlayerMonIndex); - spriteId = obj_id_for_side_relative_to_move(0); + r4 = GetBankIdentity_permutated(gBattleAnimBankAttacker); + spriteId = GetAnimBankSpriteId(0); } else { - r4 = GetBankIdentity_permutated(gBattleAnimEnemyMonIndex); - spriteId = obj_id_for_side_relative_to_move(1); + r4 = GetBankIdentity_permutated(gBattleAnimBankTarget); + spriteId = GetAnimBankSpriteId(1); } if (spriteId != 0xFF) { @@ -2241,17 +2243,17 @@ static void ScriptCmd_doublebattle_2E(void) r7 = SCRIPT_READ_8(gBattleAnimScriptPtr + 1); gBattleAnimScriptPtr += 2; if (!IsContest() && IsDoubleBattle() - && GetBankSide(gBattleAnimPlayerMonIndex) == GetBankSide(gBattleAnimEnemyMonIndex)) + && GetBankSide(gBattleAnimBankAttacker) == GetBankSide(gBattleAnimBankTarget)) { if (r7 == 0) { - r4 = GetBankIdentity_permutated(gBattleAnimPlayerMonIndex); - spriteId = obj_id_for_side_relative_to_move(0); + r4 = GetBankIdentity_permutated(gBattleAnimBankAttacker); + spriteId = GetAnimBankSpriteId(0); } else { - r4 = GetBankIdentity_permutated(gBattleAnimEnemyMonIndex); - spriteId = obj_id_for_side_relative_to_move(1); + r4 = GetBankIdentity_permutated(gBattleAnimBankTarget); + spriteId = GetAnimBankSpriteId(1); } if (spriteId != 0xFF && r4 == 2) { diff --git a/src/battle/battle_anim_807B69C.c b/src/battle/battle_anim_807B69C.c new file mode 100644 index 000000000..bf3eb7ef1 --- /dev/null +++ b/src/battle/battle_anim_807B69C.c @@ -0,0 +1,353 @@ +#include "global.h" +#include "battle.h" +#include "battle_anim.h" +#include "blend_palette.h" +#include "decompress.h" +#include "palette.h" +#include "sprite.h" +#include "task.h" +#include "trig.h" + +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; +extern bool8 gAnimScriptActive; +extern void (*gAnimScriptCallback)(void); +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankTarget; +extern u8 gObjectBankIDs[]; +extern const struct CompressedSpriteSheet gBattleAnimPicTable[]; +extern const struct CompressedSpritePalette gBattleAnimPaletteTable[]; +extern const u8 *const gBattleAnims_StatusConditions[]; +extern const struct OamData gOamData_837E05C; +extern const struct OamData gOamData_837DF24; + +extern u8 sub_8077ABC(u8, u8); +extern void sub_80E32E0(u8); + + +static const struct Subsprite gSubspriteTable_83931B8[] = +{ + {.x = -16, .y = -16, .shape = ST_OAM_SQUARE, .size = 3, .tileOffset = 0, .priority = 2}, + {.x = -16, .y = 48, .shape = ST_OAM_H_RECTANGLE, .size = 3, .tileOffset = 64, .priority = 2}, + {.x = 48, .y = -16, .shape = ST_OAM_V_RECTANGLE, .size = 3, .tileOffset = 96, .priority = 2}, + {.x = 48, .y = 48, .shape = ST_OAM_SQUARE, .size = 2, .tileOffset = 128, .priority = 2}, +}; + +static const struct SubspriteTable gSubspriteTables_83931D8[] = +{ + {ARRAY_COUNT(gSubspriteTable_83931B8), gSubspriteTable_83931B8}, +}; + +static const struct SpriteTemplate gSpriteTemplate_83931E0 = +{ + .tileTag = 10010, + .paletteTag = 10010, + .oam = &gOamData_837E05C, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy, +}; + +static void sub_807B870(struct Sprite *); +static const struct SpriteTemplate gSpriteTemplate_83931F8 = +{ + .tileTag = 10136, + .paletteTag = 10136, + .oam = &gOamData_837DF24, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_807B870, +}; + +static void sub_807B7E0(u8); +static void sub_807B8A4(struct Sprite *); +static void sub_807B9D8(u8); +static void sub_807BA24(u8); +static void sub_807BAD4(u8); +static void sub_807BB24(u8); +static void sub_807BDAC(u8); + +u8 unref_sub_807B69C(u8 a, u8 b) +{ + u8 spriteId1 = gObjectBankIDs[a]; + u8 taskId = CreateTask(sub_807B7E0, 10); + u8 spriteId2; + u8 i; + + LoadCompressedObjectPic(&gBattleAnimPicTable[136]); + LoadCompressedObjectPalette(&gBattleAnimPaletteTable[136]); + gTasks[taskId].data[0] = a; + if (b != 0) + { + gTasks[taskId].data[1] = 0x1F; + for (i = 0; i < 10; i++) + { + spriteId2 = CreateSprite(&gSpriteTemplate_83931F8, gSprites[spriteId1].pos1.x, gSprites[spriteId1].pos1.y + 32, 0); + gSprites[spriteId2].data0 = i * 51; + gSprites[spriteId2].data1 = -256; + gSprites[spriteId2].invisible = TRUE; + if (i > 4) + gSprites[spriteId2].data6 = 21; + } + } + else + { + gTasks[taskId].data[1] = 0x7C00; + for (i = 0; i < 10; i++) + { + spriteId2 = CreateSprite(&gSpriteTemplate_83931F8, gSprites[spriteId1].pos1.x, gSprites[spriteId1].pos1.y - 32, 0); + gSprites[spriteId2].data0 = i * 51; + gSprites[spriteId2].data1 = 256; + gSprites[spriteId2].invisible = TRUE; + if (i > 4) + gSprites[spriteId2].data6 = 21; + } + } + gSprites[spriteId2].data7 = 1; + return taskId; +} + +static void sub_807B7E0(u8 taskId) +{ + if (gTasks[taskId].data[2] == 2) + { + gTasks[taskId].data[2] = 0; + BlendPalette(0x100 + gTasks[taskId].data[0] * 16, 16, gTasks[taskId].data[4], gTasks[taskId].data[1]); + if (gTasks[taskId].data[5] == 0) + { + gTasks[taskId].data[4]++; + if (gTasks[taskId].data[4] > 8) + gTasks[taskId].data[5] ^= 1; + } + else + { + u16 var = gTasks[taskId].data[4]; + + gTasks[taskId].data[4]--; + if (gTasks[taskId].data[4] < 0) + { + gTasks[taskId].data[4] = var; + gTasks[taskId].data[5] ^= 1; + gTasks[taskId].data[3]++; + if (gTasks[taskId].data[3] == 2) + DestroyTask(taskId); + } + } + } + else + { + gTasks[taskId].data[2]++; + } +} + +static void sub_807B870(struct Sprite *sprite) +{ + if (sprite->data6 == 0) + { + sprite->invisible = FALSE; + sprite->callback = sub_807B8A4; + sub_807B8A4(sprite); + } + else + { + sprite->data6 --; + } +} + +static void sub_807B8A4(struct Sprite *sprite) +{ + sprite->pos2.x = Cos(sprite->data0, 32); + sprite->pos2.y = Sin(sprite->data0, 8); + if (sprite->data0 < 128) + sprite->subpriority = 29; + else + sprite->subpriority = 31; + sprite->data0 = (sprite->data0 + 8) & 0xFF; + sprite->data5 += sprite->data1; + sprite->pos2.y += sprite->data5 >> 8; + sprite->data2++; + if (sprite->data2 == 52) + { + if (sprite->data7 != 0) + DestroySpriteAndFreeResources(sprite); + else + DestroySprite(sprite); + } +} + +void sub_807B920(u8 taskId) +{ + s16 x = sub_8077ABC(gBattleAnimBankTarget, 2) - 32; + s16 y = sub_8077ABC(gBattleAnimBankTarget, 3) - 36; + u8 spriteId; + + if (IsContest()) + x -= 6; + REG_BLDCNT = 0x3F40; + REG_BLDALPHA = 0x1000; + spriteId = CreateSprite(&gSpriteTemplate_83931E0, x, y, 4); + SetSubspriteTables(&gSprites[spriteId], gSubspriteTables_83931D8); + gTasks[taskId].data[15] = spriteId; + gTasks[taskId].func = sub_807B9D8; +} + +static void sub_807B9D8(u8 taskId) +{ + gTasks[taskId].data[1]++; + if (gTasks[taskId].data[1] == 10) + { + gTasks[taskId].func = sub_807BA24; + gTasks[taskId].data[1] = 0; + } + else + { + u8 var = gTasks[taskId].data[1]; + + REG_BLDALPHA = ((16 - var) << 8) | var; + } +} + +static void sub_807BA24(u8 taskId) +{ + u8 r2 = IndexOfSpritePaletteTag(0x271A); + + if (gTasks[taskId].data[1]++ > 13) + { + gTasks[taskId].data[2]++; + if (gTasks[taskId].data[2] == 3) + { + u16 temp; + + temp = gPlttBufferFaded[0x100 + r2 * 16 + 13]; + gPlttBufferFaded[0x100 + r2 * 16 + 13] = gPlttBufferFaded[0x100 + r2 * 16 + 14]; + gPlttBufferFaded[0x100 + r2 * 16 + 14] = gPlttBufferFaded[0x100 + r2 * 16 + 15]; + gPlttBufferFaded[0x100 + r2 * 16 + 15] = temp; + + gTasks[taskId].data[2] = 0; + gTasks[taskId].data[3]++; + if (gTasks[taskId].data[3] == 3) + { + gTasks[taskId].data[3] = 0; + gTasks[taskId].data[1] = 0; + gTasks[taskId].data[4]++; + if (gTasks[taskId].data[4] == 2) + { + gTasks[taskId].data[1] = 9; + gTasks[taskId].func = sub_807BAD4; + } + } + } + } +} + +static void sub_807BAD4(u8 taskId) +{ + gTasks[taskId].data[1]--; + if (gTasks[taskId].data[1] == -1) + { + gTasks[taskId].func = sub_807BB24; + gTasks[taskId].data[1] = 0; + } + else + { + u8 var = gTasks[taskId].data[1]; + + REG_BLDALPHA = ((16 - var) << 8) | var; + } +} + +static void sub_807BB24(u8 taskId) +{ + gTasks[taskId].data[1]++; + if (gTasks[taskId].data[1] == 37) + { + u8 spriteId = gTasks[taskId].data[15]; + + FreeSpriteOamMatrix(&gSprites[spriteId]); + DestroySprite(&gSprites[spriteId]); + } + else if (gTasks[taskId].data[1] == 39) + { + REG_BLDCNT = 0; + REG_BLDALPHA = 0; + DestroyAnimVisualTask(taskId); + } +} + +void sub_807BB88(u8 taskId) +{ + s16 r5; + s16 r2; + s16 r3 = 0; + + switch (ewram17840.unk0) + { + case 15: r5 = 0; r2 = 0; break; + case 16: r5 = 0; r2 = 1; break; + case 17: r5 = 0; r2 = 3; break; + case 18: r5 = 0; r2 = 5; break; + case 19: r5 = 0; r2 = 6; break; + case 20: r5 = 0; r2 = 2; break; + case 21: r5 = 0; r2 = 4; break; + case 22: r5 = 1; r2 = 0; break; + case 23: r5 = 1; r2 = 1; break; + case 24: r5 = 1; r2 = 3; break; + case 25: r5 = 1; r2 = 5; break; + case 26: r5 = 1; r2 = 6; break; + case 27: r5 = 1; r2 = 2; break; + case 28: r5 = 1; r2 = 4; break; + case 39: r5 = 0; r2 = 0; r3 = 1; break; + case 40: r5 = 0; r2 = 1; r3 = 1; break; + case 41: r5 = 0; r2 = 3; r3 = 1; break; + case 42: r5 = 0; r2 = 5; r3 = 1; break; + case 43: r5 = 0; r2 = 6; r3 = 1; break; + case 44: r5 = 0; r2 = 2; r3 = 1; break; + case 45: r5 = 0; r2 = 4; r3 = 1; break; + case 46: r5 = 1; r2 = 0; r3 = 1; break; + case 47: r5 = 1; r2 = 1; r3 = 1; break; + case 48: r5 = 1; r2 = 3; r3 = 1; break; + case 49: r5 = 1; r2 = 5; r3 = 1; break; + case 50: r5 = 1; r2 = 6; r3 = 1; break; + case 51: r5 = 1; r2 = 2; r3 = 1; break; + case 52: r5 = 1; r2 = 4; r3 = 1; break; + case 55: r5 = 0; r2 = 0xFF; r3 = 0; break; + case 56: r5 = 0; r2 = 0xFF; r3 = 1; break; + case 57: r5 = 1; r2 = 0xFF; r3 = 0; break; + case 58: r5 = 1; r2 = 0xFF; r3 = 1; break; + + default: + DestroyAnimVisualTask(taskId); + return; + } + + gBattleAnimArgs[0] = r5; + gBattleAnimArgs[1] = r2; + gBattleAnimArgs[2] = 0; + gBattleAnimArgs[3] = 0; + gBattleAnimArgs[4] = r3; + gTasks[taskId].func = sub_80E32E0; + sub_80E32E0(taskId); +} + +void move_anim_start_t2(u8 a, u8 b) +{ + u8 taskId; + + gBattleAnimBankAttacker = a; + gBattleAnimBankTarget = a; + DoMoveAnim(gBattleAnims_StatusConditions, b, 0); + taskId = CreateTask(sub_807BDAC, 10); + gTasks[taskId].data[0] = a; +} + +static void sub_807BDAC(u8 taskId) +{ + gAnimScriptCallback(); + if (!gAnimScriptActive) + { + ewram17810[gTasks[taskId].data[0]].unk0_4 = 0; + DestroyTask(taskId); + } +} diff --git a/src/battle_anim_80A7E7C.c b/src/battle/battle_anim_80A7E7C.c similarity index 88% rename from src/battle_anim_80A7E7C.c rename to src/battle/battle_anim_80A7E7C.c index 31984977f..e0c79dc8e 100644 --- a/src/battle_anim_80A7E7C.c +++ b/src/battle/battle_anim_80A7E7C.c @@ -12,8 +12,8 @@ extern s16 gBattleAnimArgs[8]; extern u8 gObjectBankIDs[]; extern s32 gMoveDmgMoveAnim; extern u16 gMovePowerMoveAnim; -extern u8 gBattleAnimPlayerMonIndex; -extern u8 gBattleAnimEnemyMonIndex; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; static void sub_80A7EF0(u8 taskId); static void sub_80A808C(u8 taskId); @@ -34,7 +34,7 @@ static void sub_80A913C(u8 taskId); void sub_80A7E7C(u8 taskId) { u8 sprite; - sprite = obj_id_for_side_relative_to_move(gBattleAnimArgs[0]); + sprite = GetAnimBankSpriteId(gBattleAnimArgs[0]); if (sprite == 0xff) { DestroyAnimVisualTask(taskId); @@ -96,7 +96,7 @@ void sub_80A7FA0(u8 taskId) r6 = 0; if (gBattleAnimArgs[0] < 4) { - sprite = obj_id_for_side_relative_to_move(gBattleAnimArgs[0]); + sprite = GetAnimBankSpriteId(gBattleAnimArgs[0]); if (sprite == 0xff) { DestroyAnimVisualTask(taskId); @@ -121,7 +121,7 @@ void sub_80A7FA0(u8 taskId) side = GetBankByPlayerAI(3); break; } - if (b_side_obj__get_some_boolean(side) == FALSE) + if (IsAnimBankSpriteVisible(side) == FALSE) { r6 = 1; } @@ -129,7 +129,7 @@ void sub_80A7FA0(u8 taskId) } else { - sprite = gObjectBankIDs[gBattleAnimPlayerMonIndex]; + sprite = gObjectBankIDs[gBattleAnimBankAttacker]; } if (r6) { @@ -186,7 +186,7 @@ static void sub_80A808C(u8 taskId) void sub_80A8154(u8 taskId) { u8 sprite; - sprite = obj_id_for_side_relative_to_move(gBattleAnimArgs[0]); + sprite = GetAnimBankSpriteId(gBattleAnimArgs[0]); if (sprite == 0xff) { DestroyAnimVisualTask(taskId); @@ -244,7 +244,7 @@ static void sub_80A81D8(u8 taskId) void sub_80A8314(u8 taskId) { - u8 sprite = obj_id_for_side_relative_to_move(gBattleAnimArgs[0]); + u8 sprite = GetAnimBankSpriteId(gBattleAnimArgs[0]); gSprites[sprite].pos2.x = gBattleAnimArgs[1]; TASK.data[0] = sprite; TASK.data[1] = gBattleAnimArgs[1]; @@ -286,7 +286,7 @@ void sub_80A8408(u8 taskId) u8 sprite; u8 v1; v1 = 1; - sprite = obj_id_for_side_relative_to_move(gBattleAnimArgs[0]); + sprite = GetAnimBankSpriteId(gBattleAnimArgs[0]); if (gBattleAnimArgs[4] > 5) { gBattleAnimArgs[4] = 5; @@ -328,7 +328,7 @@ static void sub_80A8488(u8 taskId) void sub_80A8500(u8 taskId) { - if (GetBankSide(gBattleAnimPlayerMonIndex)) + if (GetBankSide(gBattleAnimBankAttacker)) { gBattleAnimArgs[1] = -gBattleAnimArgs[1]; } @@ -338,7 +338,7 @@ void sub_80A8500(u8 taskId) void sub_80A8530(struct Sprite *sprite) { sprite->invisible = TRUE; - if (GetBankSide(gBattleAnimPlayerMonIndex)) + if (GetBankSide(gBattleAnimBankAttacker)) { sprite->data1 = -gBattleAnimArgs[1]; } @@ -348,9 +348,9 @@ void sub_80A8530(struct Sprite *sprite) } sprite->data0 = gBattleAnimArgs[0]; sprite->data2 = 0; - sprite->data3 = gObjectBankIDs[gBattleAnimPlayerMonIndex]; + sprite->data3 = gObjectBankIDs[gBattleAnimBankAttacker]; sprite->data4 = gBattleAnimArgs[0]; - oamt_set_x3A_32(sprite, sub_80A85A4); + StoreSpriteCallbackInData6(sprite, sub_80A85A4); sprite->callback = sub_8078458; } @@ -359,20 +359,20 @@ static void sub_80A85A4(struct Sprite *sprite) sprite->data0 = sprite->data4; sprite->data1 = -sprite->data1; sprite->callback = sub_8078458; - oamt_set_x3A_32(sprite, move_anim_8072740); + StoreSpriteCallbackInData6(sprite, move_anim_8072740); } void sub_80A85C8(struct Sprite *sprite) { u8 spriteId; sprite->invisible = TRUE; - spriteId = obj_id_for_side_relative_to_move(gBattleAnimArgs[2]); + spriteId = GetAnimBankSpriteId(gBattleAnimArgs[2]); sprite->data0 = gBattleAnimArgs[0]; sprite->data1 = 0; sprite->data2 = gBattleAnimArgs[1]; sprite->data3 = spriteId; sprite->data4 = gBattleAnimArgs[0]; - oamt_set_x3A_32(sprite, sub_80A8614); + StoreSpriteCallbackInData6(sprite, sub_80A8614); sprite->callback = sub_8078458; } @@ -381,7 +381,7 @@ void sub_80A8614(struct Sprite *sprite) sprite->data0 = sprite->data4; sprite->data2 = -sprite->data2; sprite->callback = sub_8078458; - oamt_set_x3A_32(sprite, move_anim_8072740); + StoreSpriteCallbackInData6(sprite, move_anim_8072740); } void sub_80A8638(struct Sprite *sprite) @@ -390,11 +390,11 @@ void sub_80A8638(struct Sprite *sprite) int spriteId; if (!gBattleAnimArgs[0]) { - spriteId = gObjectBankIDs[gBattleAnimPlayerMonIndex]; + spriteId = gObjectBankIDs[gBattleAnimBankAttacker]; } else { - spriteId = gObjectBankIDs[gBattleAnimEnemyMonIndex]; + spriteId = gObjectBankIDs[gBattleAnimBankTarget]; } sprite->data0 = gBattleAnimArgs[2]; sprite->data1 = gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x; @@ -457,11 +457,11 @@ void sub_80A8764(struct Sprite *sprite) u8 spriteId; if (!gBattleAnimArgs[0]) { - v1 = gBattleAnimPlayerMonIndex; + v1 = gBattleAnimBankAttacker; } else { - v1 = gBattleAnimEnemyMonIndex; + v1 = gBattleAnimBankTarget; } spriteId = gObjectBankIDs[v1]; if (GetBankSide(v1)) @@ -482,7 +482,7 @@ void sub_80A8764(struct Sprite *sprite) sprite->data4 = 0; sprite->data5 = spriteId; sprite->invisible = TRUE; - oamt_set_x3A_32(sprite, move_anim_8072740); + StoreSpriteCallbackInData6(sprite, move_anim_8072740); sprite->callback = sub_80784A8; } @@ -493,11 +493,11 @@ void sub_80A8818(struct Sprite *sprite) sprite->invisible = TRUE; if (!gBattleAnimArgs[0]) { - v1 = gBattleAnimPlayerMonIndex; + v1 = gBattleAnimBankAttacker; } else { - v1 = gBattleAnimEnemyMonIndex; + v1 = gBattleAnimBankTarget; } spriteId = gObjectBankIDs[v1]; if (GetBankSide(v1)) @@ -520,11 +520,11 @@ void sub_80A8818(struct Sprite *sprite) sprite->data6 = gBattleAnimArgs[5]; if (!gBattleAnimArgs[5]) { - oamt_set_x3A_32(sprite, move_anim_8072740); + StoreSpriteCallbackInData6(sprite, move_anim_8072740); } else { - oamt_set_x3A_32(sprite, sub_80A88F0); + StoreSpriteCallbackInData6(sprite, sub_80A88F0); } sprite->callback = sub_80784A8; } @@ -541,12 +541,12 @@ void sub_80A8920(u8 taskId) { s16 r7; r7 = 0x8000 / gBattleAnimArgs[3]; - if (GetBankSide(gBattleAnimPlayerMonIndex)) + if (GetBankSide(gBattleAnimBankAttacker)) { gBattleAnimArgs[1] = -gBattleAnimArgs[1]; gBattleAnimArgs[5] = -gBattleAnimArgs[5]; } - TASK.data[0] = obj_id_for_side_relative_to_move(gBattleAnimArgs[0]); + TASK.data[0] = GetAnimBankSpriteId(gBattleAnimArgs[0]); TASK.data[1] = (gBattleAnimArgs[1] << 8) / gBattleAnimArgs[3]; TASK.data[2] = gBattleAnimArgs[2]; TASK.data[3] = gBattleAnimArgs[3]; @@ -600,30 +600,30 @@ void sub_80A8A80(u8 taskId) { case 0: case 1: - spriteId = obj_id_for_side_relative_to_move(gBattleAnimArgs[0]); + spriteId = GetAnimBankSpriteId(gBattleAnimArgs[0]); break; case 2: - if (!b_side_obj__get_some_boolean(gBattleAnimPlayerMonIndex ^ 2)) + if (!IsAnimBankSpriteVisible(gBattleAnimBankAttacker ^ 2)) { DestroyAnimVisualTask(taskId); return; } - spriteId = gObjectBankIDs[gBattleAnimPlayerMonIndex ^ 2]; + spriteId = gObjectBankIDs[gBattleAnimBankAttacker ^ 2]; break; case 3: - if (!b_side_obj__get_some_boolean(gBattleAnimEnemyMonIndex ^ 2)) + if (!IsAnimBankSpriteVisible(gBattleAnimBankTarget ^ 2)) { DestroyAnimVisualTask(taskId); return; } - spriteId = gObjectBankIDs[gBattleAnimEnemyMonIndex ^ 2]; + spriteId = gObjectBankIDs[gBattleAnimBankTarget ^ 2]; break; default: DestroyAnimVisualTask(taskId); return; } TASK.data[0] = spriteId; - if (GetBankSide(gBattleAnimEnemyMonIndex)) + if (GetBankSide(gBattleAnimBankTarget)) { TASK.data[1] = gBattleAnimArgs[1]; } @@ -648,11 +648,11 @@ static void sub_80A8B3C(u8 taskId) void sub_80A8B88(u8 taskId) { u8 spriteId; - if (GetBankSide(gBattleAnimPlayerMonIndex)) + if (GetBankSide(gBattleAnimBankAttacker)) { gBattleAnimArgs[1] = -gBattleAnimArgs[1]; } - spriteId = obj_id_for_side_relative_to_move(gBattleAnimArgs[4]); + spriteId = GetAnimBankSpriteId(gBattleAnimArgs[4]); TASK.data[0] = gBattleAnimArgs[0]; TASK.data[1] = gBattleAnimArgs[1]; TASK.data[2] = gBattleAnimArgs[2]; @@ -660,11 +660,11 @@ void sub_80A8B88(u8 taskId) TASK.data[4] = spriteId; if (gBattleAnimArgs[4] == 0) { - TASK.data[5] = gBattleAnimPlayerMonIndex; + TASK.data[5] = gBattleAnimBankAttacker; } else { - TASK.data[5] = gBattleAnimEnemyMonIndex; + TASK.data[5] = gBattleAnimBankTarget; } TASK.data[12] = 1; TASK.func = sub_80A8C0C; @@ -714,7 +714,7 @@ static void sub_80A8C0C(u8 taskId) void sub_80A8D34(u8 taskId) { u8 spriteId; - spriteId = obj_id_for_side_relative_to_move(gBattleAnimArgs[3]); + spriteId = GetAnimBankSpriteId(gBattleAnimArgs[3]); sub_8078E70(spriteId, gBattleAnimArgs[4]); TASK.data[0] = gBattleAnimArgs[0]; TASK.data[1] = gBattleAnimArgs[1]; @@ -754,7 +754,7 @@ static void sub_80A8D8C(u8 taskId) void sub_80A8E04(u8 taskId) { u8 spriteId; - spriteId = obj_id_for_side_relative_to_move(gBattleAnimArgs[2]); + spriteId = GetAnimBankSpriteId(gBattleAnimArgs[2]); sub_8078E70(spriteId, 0); TASK.data[1] = 0; TASK.data[2] = gBattleAnimArgs[0]; @@ -777,11 +777,11 @@ void sub_80A8E04(u8 taskId) { if (gBattleAnimArgs[2] == 0) { - TASK.data[7] = !GetBankSide(gBattleAnimPlayerMonIndex); + TASK.data[7] = !GetBankSide(gBattleAnimBankAttacker); } else { - TASK.data[7] = !GetBankSide(gBattleAnimEnemyMonIndex); + TASK.data[7] = !GetBankSide(gBattleAnimBankTarget); } } if (TASK.data[7]) @@ -798,20 +798,20 @@ void sub_80A8E04(u8 taskId) void sub_80A8EFC(u8 taskId) { u8 spriteId; - spriteId = obj_id_for_side_relative_to_move(gBattleAnimArgs[2]); + spriteId = GetAnimBankSpriteId(gBattleAnimArgs[2]); sub_8078E70(spriteId, 0); TASK.data[1] = 0; TASK.data[2] = gBattleAnimArgs[0]; if (gBattleAnimArgs[2] == 0) { - if (GetBankSide(gBattleAnimPlayerMonIndex)) + if (GetBankSide(gBattleAnimBankAttacker)) { gBattleAnimArgs[1] = -gBattleAnimArgs[1]; } } else { - if (GetBankSide(gBattleAnimEnemyMonIndex)) + if (GetBankSide(gBattleAnimBankTarget)) { gBattleAnimArgs[1] = -gBattleAnimArgs[1]; } @@ -891,7 +891,7 @@ void sub_80A9058(u8 taskId) TASK.data[12] = 0; TASK.data[10] = gBattleAnimArgs[3]; TASK.data[11] = gBattleAnimArgs[4]; - TASK.data[7] = obj_id_for_side_relative_to_move(1); + TASK.data[7] = GetAnimBankSpriteId(1); TASK.data[8] = gSprites[TASK.data[7]].pos2.x; TASK.data[9] = gSprites[TASK.data[7]].pos2.y; TASK.data[0] = 0; diff --git a/src/battle/battle_anim_80CA710.c b/src/battle/battle_anim_80CA710.c new file mode 100644 index 000000000..65ccd7c21 --- /dev/null +++ b/src/battle/battle_anim_80CA710.c @@ -0,0 +1,18 @@ + +// Includes +#include "global.h" + +// Static type declarations + +// Static RAM declarations + +IWRAM_DATA u32 filler_03000724; +IWRAM_DATA u16 gUnknown_03000728[4]; +IWRAM_DATA u16 gUnknown_03000730[6]; +IWRAM_DATA u32 filler_0300073c; + +// Static ROM declarations + +// .rodata + +// .text diff --git a/src/battle_10.c b/src/battle/battle_controller_linkopponent.c similarity index 66% rename from src/battle_10.c rename to src/battle/battle_controller_linkopponent.c index 34e4f75b1..0b6c3b6a1 100644 --- a/src/battle_10.c +++ b/src/battle/battle_controller_linkopponent.c @@ -3,6 +3,8 @@ #include "battle_interface.h" #include "data2.h" #include "link.h" +#include "m4a.h" +#include "main.h" #include "palette.h" #include "rom_8077ABC.h" #include "rom3.h" @@ -48,11 +50,14 @@ extern struct Window gUnknown_03004210; extern u16 gUnknown_030042A0; extern u16 gUnknown_030042A4; extern u8 gUnknown_0300434C[]; +extern u32 gBattleExecBuffer; +extern MainCallback gPreBattleCallback1; +extern struct MusicPlayerInfo gMPlay_BGM; extern u8 sub_8077F68(); extern u8 sub_8079E90(); extern u8 GetBankIdentity(u8); -extern void sub_8031794(struct Pokemon *, u8); +extern void BattleLoadOpponentMonSprite(struct Pokemon *, u8); extern void sub_8037A74(void); extern void sub_8032984(u8, u16); extern void sub_8037E30(void); @@ -66,13 +71,13 @@ extern void sub_8031A6C(u16, u8); extern void sub_80313A0(struct Sprite *); extern void sub_803757C(void); extern void oamt_add_pos2_onto_pos1(); -extern void oamt_set_x3A_32(); +extern void StoreSpriteCallbackInData6(); extern void sub_8078B34(struct Sprite *); extern void sub_80375B4(void); extern void sub_8010384(struct Sprite *); extern void sub_8037B78(void); extern u8 sub_8031720(); -extern u8 mplay_80342A4(); +extern bool8 mplay_80342A4(u8); extern void ExecuteMoveAnim(); extern void sub_80326EC(); extern void sub_8031F24(void); @@ -94,13 +99,19 @@ extern void nullsub_47(void); extern bool8 IsDoubleBattle(void); extern void sub_8037840(void); extern void sub_8031B74(); -extern u8 sub_8078874(); +extern u8 AnimBankSpriteExists(); extern u8 move_anim_start_t3(); extern void sub_8037FD8(void); extern void sub_8037F34(void); -extern void dp01_tbl4_exec_completed(void); +extern void LinkOpponentBufferExecCompleted(void); +extern void sub_8141828(); +extern void sub_804777C(); + +// this file's functions u32 dp01_getattr_by_ch1_for_player_pokemon__(u8, u8 *); +void sub_803752C(void); +void sub_8037D2C(void); void sub_8038900(u8); void sub_8039430(u8, u8); void sub_8039648(void); @@ -108,6 +119,454 @@ void sub_8039B64(void); void sub_803A2C4(u8); void sub_803A4E0(void); +void LinkOpponentHandleGetAttributes(void); +void LinkOpponentHandlecmd1(void); +void LinkOpponentHandleSetAttributes(void); +void LinkOpponentHandlecmd3(void); +void LinkOpponentHandleLoadPokeSprite(void); +void LinkOpponentHandleSendOutPoke(void); +void LinkOpponentHandleReturnPokeToBall(void); +void LinkOpponentHandleTrainerThrow(void); +void LinkOpponentHandleTrainerSlide(void); +void LinkOpponentHandleTrainerSlideBack(void); +void LinkOpponentHandlecmd10(void); +void LinkOpponentHandlecmd11(void); +void LinkOpponentHandlecmd12(void); +void LinkOpponentHandleBallThrow(void); +void LinkOpponentHandlePuase(void); +void LinkOpponentHandleMoveAnimation(void); +void LinkOpponentHandlePrintString(void); +void LinkOpponentHandlePrintStringPlayerOnly(void); +void LinkOpponentHandlecmd18(void); +void LinkOpponentHandlecmd19(void); +void LinkOpponentHandlecmd20(void); +void LinkOpponentHandleOpenBag(void); +void LinkOpponentHandlecmd22(void); +void LinkOpponentHandlecmd23(void); +void LinkOpponentHandleHealthBarUpdate(void); +void LinkOpponentHandleExpBarUpdate(void); +void LinkOpponentHandleStatusIconUpdate(void); +void LinkOpponentHandleStatusAnimation(void); +void LinkOpponentHandleStatusXor(void); +void LinkOpponentHandlecmd29(void); +void LinkOpponentHandleDMATransfer(void); +void LinkOpponentHandlecmd31(void); +void LinkOpponentHandlecmd32(void); +void LinkOpponentHandlecmd33(void); +void LinkOpponentHandlecmd34(void); +void LinkOpponentHandlecmd35(void); +void LinkOpponentHandlecmd36(void); +void LinkOpponentHandlecmd37(void); +void LinkOpponentHandlecmd38(void); +void LinkOpponentHandlecmd39(void); +void LinkOpponentHandlecmd40(void); +void LinkOpponentHandleHitAnimation(void); +void LinkOpponentHandlecmd42(void); +void LinkOpponentHandleEffectivenessSound(void); +void LinkOpponentHandlecmd44(void); +void LinkOpponentHandleFaintingCry(void); +void LinkOpponentHandleIntroSlide(void); +void LinkOpponentHandleTrainerBallThrow(void); +void LinkOpponentHandlecmd48(void); +void LinkOpponentHandlecmd49(void); +void LinkOpponentHandlecmd50(void); +void LinkOpponentHandleSpriteInvisibility(void); +void LinkOpponentHandleBattleAnimation(void); +void LinkOpponentHandleLinkStandbyMsg(void); +void LinkOpponentHandleResetActionMoveSelection(void); +void LinkOpponentHandlecmd55(void); +void LinkOpponentHandlecmd56(void); + +// const data + +typedef void (*BattleBufferCmd) (void); +const BattleBufferCmd gLinkOpponentBufferCommands[] = +{ + LinkOpponentHandleGetAttributes, + LinkOpponentHandlecmd1, + LinkOpponentHandleSetAttributes, + LinkOpponentHandlecmd3, + LinkOpponentHandleLoadPokeSprite, + LinkOpponentHandleSendOutPoke, + LinkOpponentHandleReturnPokeToBall, + LinkOpponentHandleTrainerThrow, + LinkOpponentHandleTrainerSlide, + LinkOpponentHandleTrainerSlideBack, + LinkOpponentHandlecmd10, + LinkOpponentHandlecmd11, + LinkOpponentHandlecmd12, + LinkOpponentHandleBallThrow, + LinkOpponentHandlePuase, + LinkOpponentHandleMoveAnimation, + LinkOpponentHandlePrintString, + LinkOpponentHandlePrintStringPlayerOnly, + LinkOpponentHandlecmd18, + LinkOpponentHandlecmd19, + LinkOpponentHandlecmd20, + LinkOpponentHandleOpenBag, + LinkOpponentHandlecmd22, + LinkOpponentHandlecmd23, + LinkOpponentHandleHealthBarUpdate, + LinkOpponentHandleExpBarUpdate, + LinkOpponentHandleStatusIconUpdate, + LinkOpponentHandleStatusAnimation, + LinkOpponentHandleStatusXor, + LinkOpponentHandlecmd29, + LinkOpponentHandleDMATransfer, + LinkOpponentHandlecmd31, + LinkOpponentHandlecmd32, + LinkOpponentHandlecmd33, + LinkOpponentHandlecmd34, + LinkOpponentHandlecmd35, + LinkOpponentHandlecmd36, + LinkOpponentHandlecmd37, + LinkOpponentHandlecmd38, + LinkOpponentHandlecmd39, + LinkOpponentHandlecmd40, + LinkOpponentHandleHitAnimation, + LinkOpponentHandlecmd42, + LinkOpponentHandleEffectivenessSound, + LinkOpponentHandlecmd44, + LinkOpponentHandleFaintingCry, + LinkOpponentHandleIntroSlide, + LinkOpponentHandleTrainerBallThrow, + LinkOpponentHandlecmd48, + LinkOpponentHandlecmd49, + LinkOpponentHandlecmd50, + LinkOpponentHandleSpriteInvisibility, + LinkOpponentHandleBattleAnimation, + LinkOpponentHandleLinkStandbyMsg, + LinkOpponentHandleResetActionMoveSelection, + LinkOpponentHandlecmd55, + LinkOpponentHandlecmd56 +}; + +// code + +void nullsub_47(void) +{ +} + +void SetBankFuncToLinkOpponentBufferRunCommand(void) +{ + gBattleBankFunc[gActiveBank] = sub_803752C; +} + +void sub_803752C(void) +{ + if (gBattleExecBuffer & gBitTable[gActiveBank]) + { + if (gBattleBufferA[gActiveBank][0] <= 0x38) + gLinkOpponentBufferCommands[gBattleBufferA[gActiveBank][0]](); + else + LinkOpponentBufferExecCompleted(); + } +} + +void sub_803757C(void) +{ + if (gSprites[gObjectBankIDs[gActiveBank]].callback == SpriteCallbackDummy) + LinkOpponentBufferExecCompleted(); +} + +void sub_80375B4(void) +{ + if (gSprites[gObjectBankIDs[gActiveBank]].callback == SpriteCallbackDummy) + { + sub_8031B74(gSprites[gObjectBankIDs[gActiveBank]].oam.affineParam); + gSprites[gObjectBankIDs[gActiveBank]].oam.tileNum = gSprites[gObjectBankIDs[gActiveBank]].data5; + FreeSpriteOamMatrix(&gSprites[gObjectBankIDs[gActiveBank]]); + DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]); + LinkOpponentBufferExecCompleted(); + } +} + +void sub_8037644(void) +{ + if ((--ewram17810[gActiveBank].unk9) == 0xFF) + { + ewram17810[gActiveBank].unk9 = 0; + LinkOpponentBufferExecCompleted(); + } +} + +void sub_8037680(void) +{ + bool8 r6 = FALSE; + + if (!IsDoubleBattle() || (IsDoubleBattle() && (gBattleTypeFlags & BATTLE_TYPE_MULTI))) + { + if (gSprites[gHealthboxIDs[gActiveBank]].callback == SpriteCallbackDummy) + r6 = TRUE; + } + else + { + if (gSprites[gHealthboxIDs[gActiveBank]].callback == SpriteCallbackDummy + && gSprites[gHealthboxIDs[gActiveBank ^ 2]].callback == SpriteCallbackDummy) + r6 = TRUE; + } + if (IsCryPlayingOrClearCrySongs()) + r6 = FALSE; + + if (r6) + { + if (GetBankIdentity(gActiveBank) == 1) + { + if (!ewram17810[gActiveBank].unk1_0 || !ewram17810[gActiveBank ^ 2].unk1_0) + return; + ewram17810[gActiveBank].unk0_7 = 0; + ewram17810[gActiveBank].unk1_0 = 0; + ewram17810[gActiveBank ^ 2].unk0_7 = 0; + ewram17810[gActiveBank ^ 2].unk1_0 = 0; + FreeSpriteTilesByTag(0x27F9); + FreeSpritePaletteByTag(0x27F9); + } + if (gBattleTypeFlags & BATTLE_TYPE_MULTI) + { + if (GetBankIdentity(gActiveBank) == 1) + m4aMPlayContinue(&gMPlay_BGM); + } + else + { + m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 256); + } + ewram17810[gActiveBank].unk9 = 3; + gBattleBankFunc[gActiveBank] = sub_8037644; + } +} + +void sub_8037840(void) +{ + if (!ewram17810[gActiveBank].unk0_3 && !ewram17810[gActiveBank].unk0_7) + sub_8141828(gActiveBank, &gEnemyParty[gBattlePartyID[gActiveBank]]); + if (!ewram17810[gActiveBank ^ 2].unk0_3 && !ewram17810[gActiveBank ^ 2].unk0_7) + sub_8141828(gActiveBank ^ 2, &gEnemyParty[gBattlePartyID[gActiveBank ^ 2]]); + if (!ewram17810[gActiveBank].unk0_3 && !ewram17810[gActiveBank ^ 2].unk0_3) + { + if ((gBattleTypeFlags & BATTLE_TYPE_MULTI) && GetBankIdentity(gActiveBank) == 3) + { + if (++ewram17810[gActiveBank].unk9 == 1) + return; + ewram17810[gActiveBank].unk9 = 0; + } + if (IsDoubleBattle() && !(gBattleTypeFlags & BATTLE_TYPE_MULTI)) + { + DestroySprite(&gSprites[gUnknown_0300434C[gActiveBank ^ 2]]); + sub_8045A5C( + gHealthboxIDs[gActiveBank ^ 2], + &gEnemyParty[gBattlePartyID[gActiveBank ^ 2]], + 0); + sub_804777C(gActiveBank ^ 2); + sub_8043DFC(gHealthboxIDs[gActiveBank ^ 2]); + sub_8032984( + gActiveBank ^ 2, + GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank ^ 2]], MON_DATA_SPECIES)); + } + DestroySprite(&gSprites[gUnknown_0300434C[gActiveBank]]); + sub_8045A5C( + gHealthboxIDs[gActiveBank], + &gEnemyParty[gBattlePartyID[gActiveBank]], + 0); + sub_804777C(gActiveBank); + sub_8043DFC(gHealthboxIDs[gActiveBank]); + sub_8032984( + gActiveBank, + GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES)); + + ewram17840.unk9_0 = 0; + gBattleBankFunc[gActiveBank] = sub_8037680; + } +} + +void sub_8037A74(void) +{ + if (gSprites[gObjectBankIDs[gActiveBank]].animEnded == TRUE + && gSprites[gObjectBankIDs[gActiveBank]].pos2.x == 0) + { + if (!ewram17810[gActiveBank].unk0_7) + { + sub_8141828(gActiveBank, &gEnemyParty[gBattlePartyID[gActiveBank]]); + return; + } + if (ewram17810[gActiveBank].unk1_0) + { + ewram17810[gActiveBank].unk0_7 = 0; + ewram17810[gActiveBank].unk1_0 = 0; + FreeSpriteTilesByTag(0x27F9); + FreeSpritePaletteByTag(0x27F9); + LinkOpponentBufferExecCompleted(); + return; + } + } +} + +void sub_8037B24(void) +{ + s16 r4 = sub_8045C78(gActiveBank, gHealthboxIDs[gActiveBank], 0, 0); + + sub_8043DFC(gHealthboxIDs[gActiveBank]); + if (r4 != -1) + sub_80440EC(gHealthboxIDs[gActiveBank], r4, 0); + else + LinkOpponentBufferExecCompleted(); +} + +void sub_8037B78(void) +{ + if (!gSprites[gObjectBankIDs[gActiveBank]].inUse) + { + sub_8043DB0(gHealthboxIDs[gActiveBank]); + LinkOpponentBufferExecCompleted(); + } +} + +void sub_8037BBC(void) +{ + if (!ewram17810[gActiveBank].unk0_6) + { + FreeSpriteOamMatrix(&gSprites[gObjectBankIDs[gActiveBank]]); + DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]); + sub_8032A08(gActiveBank); + sub_8043DB0(gHealthboxIDs[gActiveBank]); + LinkOpponentBufferExecCompleted(); + } +} + +void sub_8037C2C(void) +{ + if (gUnknown_03004210.state == 0) + LinkOpponentBufferExecCompleted(); +} + +void dp01t_0F_4_move_anim(void) +{ + u8 spriteId = gObjectBankIDs[gActiveBank]; + + if (gSprites[spriteId].data1 == 32) + { + gSprites[spriteId].data1 = 0; + gSprites[spriteId].invisible = FALSE; + gDoingBattleAnim = 0; + LinkOpponentBufferExecCompleted(); + } + else + { + if (((u16)gSprites[spriteId].data1 % 4) == 0) + gSprites[spriteId].invisible ^= 1; + gSprites[spriteId].data1++; + } +} + +void sub_8037CC0(void) +{ + if (gSprites[gHealthboxIDs[gActiveBank]].callback == SpriteCallbackDummy) + { + if (ewram17800[gActiveBank].substituteSprite) + move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 6); + gBattleBankFunc[gActiveBank] = sub_8037D2C; + } +} + +void sub_8037D2C(void) +{ + if (!ewram17810[gActiveBank].unk0_6) + { + CreateTask(c3_0802FDF4, 10); + LinkOpponentBufferExecCompleted(); + } +} + +void sub_8037D64(void) +{ + if (ewram17810[gActiveBank].unk1_0) + { + ewram17810[gActiveBank].unk0_7 = 0; + ewram17810[gActiveBank].unk1_0 = 0; + FreeSpriteTilesByTag(0x27F9); + FreeSpritePaletteByTag(0x27F9); + StartSpriteAnim(&gSprites[gObjectBankIDs[gActiveBank]], 0); + sub_8045A5C( + gHealthboxIDs[gActiveBank], + &gEnemyParty[gBattlePartyID[gActiveBank]], + 0); + sub_804777C(gActiveBank); + sub_8043DFC(gHealthboxIDs[gActiveBank]); + sub_8031F88(gActiveBank); + gBattleBankFunc[gActiveBank] = sub_8037CC0; + } +} + +void sub_8037E30(void) +{ + if (!ewram17810[gActiveBank].unk0_3 && !ewram17810[gActiveBank].unk0_7) + sub_8141828(gActiveBank, &gEnemyParty[gBattlePartyID[gActiveBank]]); + if (gSprites[gUnknown_0300434C[gActiveBank]].callback == SpriteCallbackDummy + && !ewram17810[gActiveBank].unk0_3) + { + DestroySprite(&gSprites[gUnknown_0300434C[gActiveBank]]); + sub_8032984(gActiveBank, GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES)); + gBattleBankFunc[gActiveBank] = sub_8037D64; + } +} + +void sub_8037EF0(void) +{ + if (gReceivedRemoteLinkPlayers == 0) + { + m4aSongNumStop(SE_HINSI); + gMain.inBattle = FALSE; + gMain.callback1 = gPreBattleCallback1; + SetMainCallback2(c2_8011A1C); + } +} + +void sub_8037F34(void) +{ + if (!gPaletteFade.active) + { + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + { + sub_800832C(); + gBattleBankFunc[gActiveBank] = sub_8037EF0; + } + else + { + m4aSongNumStop(SE_HINSI); + gMain.inBattle = FALSE; + gMain.callback1 = gPreBattleCallback1; + SetMainCallback2(gMain.savedCallback); + } + } +} + +void sub_8037FAC(void) +{ + if (!ewram17810[gActiveBank].unk0_4) + LinkOpponentBufferExecCompleted(); +} + +void sub_8037FD8(void) +{ + if (!ewram17810[gActiveBank].unk0_5) + LinkOpponentBufferExecCompleted(); +} + +void LinkOpponentBufferExecCompleted(void) +{ + gBattleBankFunc[gActiveBank] = sub_803752C; + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + { + u8 playerId = GetMultiplayerId(); + + PrepareBufferDataTransferLink(2, 4, &playerId); + gBattleBufferA[gActiveBank][0] = 0x38; + } + else + { + gBattleExecBuffer &= ~gBitTable[gActiveBank]; + } +} + void LinkOpponentHandleGetAttributes(void) { u8 buffer[0x100]; @@ -129,8 +588,8 @@ void LinkOpponentHandleGetAttributes(void) r4 >>= 1; } } - dp01_build_cmdbuf_x1D_1D_numargs_varargs(1, r6, buffer); - dp01_tbl4_exec_completed(); + Emitcmd29(1, r6, buffer); + LinkOpponentBufferExecCompleted(); } u32 dp01_getattr_by_ch1_for_player_pokemon__(u8 a, u8 *buffer) @@ -438,12 +897,12 @@ u32 dp01_getattr_by_ch1_for_player_pokemon__(u8 a, u8 *buffer) return size; } -void sub_803889C(void) +void LinkOpponentHandlecmd1(void) { - dp01_tbl4_exec_completed(); + LinkOpponentBufferExecCompleted(); } -void sub_80388A8(void) +void LinkOpponentHandleSetAttributes(void) { u8 i; u8 r4; @@ -462,7 +921,7 @@ void sub_80388A8(void) r4 >>= 1; } } - dp01_tbl4_exec_completed(); + LinkOpponentBufferExecCompleted(); } void sub_8038900(u8 a) @@ -681,7 +1140,7 @@ void sub_8038900(u8 a) } } -void sub_8039220(void) +void LinkOpponentHandlecmd3(void) { u8 *dst; u8 i; @@ -689,14 +1148,14 @@ void sub_8039220(void) dst = (u8 *)&gEnemyParty[gBattlePartyID[gActiveBank]] + gBattleBufferA[gActiveBank][1]; for (i = 0; i < gBattleBufferA[gActiveBank][2]; i++) dst[i] = gBattleBufferA[gActiveBank][3 + i]; - dp01_tbl4_exec_completed(); + LinkOpponentBufferExecCompleted(); } -void sub_8039294(void) +void LinkOpponentHandleLoadPokeSprite(void) { u16 species = GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES); - sub_8031794(&gEnemyParty[gBattlePartyID[gActiveBank]], gActiveBank); + BattleLoadOpponentMonSprite(&gEnemyParty[gBattlePartyID[gActiveBank]], gActiveBank); GetMonSpriteTemplate_803C56C(species, GetBankIdentity(gActiveBank)); gObjectBankIDs[gActiveBank] = CreateSprite( &gUnknown_02024E8C, @@ -711,7 +1170,7 @@ void sub_8039294(void) gBattleBankFunc[gActiveBank] = sub_8037A74; } -void sub_80393E4(void) +void LinkOpponentHandleSendOutPoke(void) { gBattlePartyID[gActiveBank] = gBattleBufferA[gActiveBank][1]; sub_8039430(gActiveBank, gBattleBufferA[gActiveBank][2]); @@ -726,7 +1185,7 @@ void sub_8039430(u8 a, u8 b) gBattlePartyID[a] = gBattleBufferA[a][1]; species = GetMonData(&gEnemyParty[gBattlePartyID[a]], MON_DATA_SPECIES); gUnknown_0300434C[a] = CreateInvisibleSpriteWithCallback(sub_80312F0); - sub_8031794(&gEnemyParty[gBattlePartyID[a]], a); + BattleLoadOpponentMonSprite(&gEnemyParty[gBattlePartyID[a]], a); GetMonSpriteTemplate_803C56C(species, GetBankIdentity(a)); gObjectBankIDs[a] = CreateSprite( &gUnknown_02024E8C, @@ -743,7 +1202,7 @@ void sub_8039430(u8 a, u8 b) gSprites[gUnknown_0300434C[a]].data0 = sub_8046400(0, 0xFE); } -void sub_80395B4(void) +void LinkOpponentHandleReturnPokeToBall(void) { if (gBattleBufferA[gActiveBank][1] == 0) { @@ -756,7 +1215,7 @@ void sub_80395B4(void) DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]); sub_8032A08(gActiveBank); sub_8043DB0(gHealthboxIDs[gActiveBank]); - dp01_tbl4_exec_completed(); + LinkOpponentBufferExecCompleted(); } } @@ -765,7 +1224,7 @@ void sub_8039648(void) switch (ewram17810[gActiveBank].unk4) { case 0: - if (ewram17800[gActiveBank].unk0_2) + if (ewram17800[gActiveBank].substituteSprite) move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5); ewram17810[gActiveBank].unk4 = 1; break; @@ -780,7 +1239,7 @@ void sub_8039648(void) } } -void sub_80396D0(void) +void LinkOpponentHandleTrainerThrow(void) { s16 xOffset; u32 gender; @@ -814,27 +1273,27 @@ void sub_80396D0(void) gBattleBankFunc[gActiveBank] = sub_803757C; } -void sub_80398A4(void) +void LinkOpponentHandleTrainerSlide(void) { - dp01_tbl4_exec_completed(); + LinkOpponentBufferExecCompleted(); } -void sub_80398B0(void) +void LinkOpponentHandleTrainerSlideBack(void) { oamt_add_pos2_onto_pos1(&gSprites[gObjectBankIDs[gActiveBank]]); gSprites[gObjectBankIDs[gActiveBank]].data0 = 35; gSprites[gObjectBankIDs[gActiveBank]].data2 = 280; gSprites[gObjectBankIDs[gActiveBank]].data4 = gSprites[gObjectBankIDs[gActiveBank]].pos1.y; gSprites[gObjectBankIDs[gActiveBank]].callback = sub_8078B34; - oamt_set_x3A_32(&gSprites[gObjectBankIDs[gActiveBank]], SpriteCallbackDummy); + StoreSpriteCallbackInData6(&gSprites[gObjectBankIDs[gActiveBank]], SpriteCallbackDummy); gBattleBankFunc[gActiveBank] = sub_80375B4; } -void sub_803995C(void) +void LinkOpponentHandlecmd10(void) { if (ewram17810[gActiveBank].unk4 == 0) { - if (ewram17800[gActiveBank].unk0_2) + if (ewram17800[gActiveBank].substituteSprite) move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5); ewram17810[gActiveBank].unk4++; } @@ -847,27 +1306,27 @@ void sub_803995C(void) } } -void sub_8039A00(void) +void LinkOpponentHandlecmd11(void) { - dp01_tbl4_exec_completed(); + LinkOpponentBufferExecCompleted(); } -void sub_8039A0C(void) +void LinkOpponentHandlecmd12(void) { - dp01_tbl4_exec_completed(); + LinkOpponentBufferExecCompleted(); } -void sub_8039A18(void) +void LinkOpponentHandleBallThrow(void) { - dp01_tbl4_exec_completed(); + LinkOpponentBufferExecCompleted(); } -void sub_8039A24(void) +void LinkOpponentHandlePuase(void) { - dp01_tbl4_exec_completed(); + LinkOpponentBufferExecCompleted(); } -void sub_8039A30(void) +void LinkOpponentHandleMoveAnimation(void) { if (!mplay_80342A4(gActiveBank)) { @@ -887,9 +1346,10 @@ void sub_8039A30(void) gDisableStructMoveAnim = (u32 *)&gBattleBufferA[gActiveBank][16]; gPID_perBank[gActiveBank] = *gDisableStructMoveAnim; + // Dead code. sub_8031720 always returns 0. if (sub_8031720(r0, gUnknown_0202F7C4) != 0) { - dp01_tbl4_exec_completed(); + LinkOpponentBufferExecCompleted(); } else { @@ -908,7 +1368,7 @@ void sub_8039B64(void) switch (ewram17810[gActiveBank].unk4) { case 0: - if (ewram17800[gActiveBank].unk0_2 && !ewram17800[gActiveBank].unk0_3) + if (ewram17800[gActiveBank].substituteSprite && !ewram17800[gActiveBank].unk0_3) { ewram17800[gActiveBank].unk0_3 = 1; move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5); @@ -928,7 +1388,7 @@ void sub_8039B64(void) if (!gAnimScriptActive) { sub_80326EC(1); - if ((ewram17800[gActiveBank].unk0_2) && r7 <= 1) + if ((ewram17800[gActiveBank].substituteSprite) && r7 <= 1) { move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 6); ewram17800[gActiveBank].unk0_3 = 0; @@ -944,13 +1404,13 @@ void sub_8039B64(void) gActiveBank, gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8)); ewram17810[gActiveBank].unk4 = 0; - dp01_tbl4_exec_completed(); + LinkOpponentBufferExecCompleted(); } break; } } -void sub_8039CC8(void) +void LinkOpponentHandlePrintString(void) { gUnknown_030042A4 = 0; gUnknown_030042A0 = 0; @@ -959,42 +1419,42 @@ void sub_8039CC8(void) gBattleBankFunc[gActiveBank] = sub_8037C2C; } -void sub_8039D2C(void) +void LinkOpponentHandlePrintStringPlayerOnly(void) { - dp01_tbl4_exec_completed(); + LinkOpponentBufferExecCompleted(); } -void sub_8039D38(void) +void LinkOpponentHandlecmd18(void) { - dp01_tbl4_exec_completed(); + LinkOpponentBufferExecCompleted(); } -void sub_8039D44(void) +void LinkOpponentHandlecmd19(void) { - dp01_tbl4_exec_completed(); + LinkOpponentBufferExecCompleted(); } -void sub_8039D50(void) +void LinkOpponentHandlecmd20(void) { - dp01_tbl4_exec_completed(); + LinkOpponentBufferExecCompleted(); } -void sub_8039D5C(void) +void LinkOpponentHandleOpenBag(void) { - dp01_tbl4_exec_completed(); + LinkOpponentBufferExecCompleted(); } -void sub_8039D68(void) +void LinkOpponentHandlecmd22(void) { - dp01_tbl4_exec_completed(); + LinkOpponentBufferExecCompleted(); } -void sub_8039D74(void) +void LinkOpponentHandlecmd23(void) { - dp01_tbl4_exec_completed(); + LinkOpponentBufferExecCompleted(); } -void sub_8039D80(void) +void LinkOpponentHandleHealthBarUpdate(void) { s16 r7; @@ -1016,12 +1476,12 @@ void sub_8039D80(void) gBattleBankFunc[gActiveBank] = sub_8037B24; } -void sub_8039E70(void) +void LinkOpponentHandleExpBarUpdate(void) { - dp01_tbl4_exec_completed(); + LinkOpponentBufferExecCompleted(); } -void sub_8039E7C(void) +void LinkOpponentHandleStatusIconUpdate(void) { if (mplay_80342A4(gActiveBank) == 0) { @@ -1031,7 +1491,7 @@ void sub_8039E7C(void) } } -void sub_8039EF0(void) +void LinkOpponentHandleStatusAnimation(void) { if (mplay_80342A4(gActiveBank) == 0) { @@ -1045,80 +1505,80 @@ void sub_8039EF0(void) } } -void sub_8039F58(void) +void LinkOpponentHandleStatusXor(void) { - dp01_tbl4_exec_completed(); + LinkOpponentBufferExecCompleted(); } -void sub_8039F64(void) +void LinkOpponentHandlecmd29(void) { - dp01_tbl4_exec_completed(); + LinkOpponentBufferExecCompleted(); } -void sub_8039F70(void) +void LinkOpponentHandleDMATransfer(void) { - dp01_tbl4_exec_completed(); + LinkOpponentBufferExecCompleted(); } -void sub_8039F7C(void) +void LinkOpponentHandlecmd31(void) { - dp01_tbl4_exec_completed(); + LinkOpponentBufferExecCompleted(); } -void sub_8039F88(void) +void LinkOpponentHandlecmd32(void) { - dp01_tbl4_exec_completed(); + LinkOpponentBufferExecCompleted(); } -void sub_8039F94(void) +void LinkOpponentHandlecmd33(void) { - dp01_tbl4_exec_completed(); + LinkOpponentBufferExecCompleted(); } -void sub_8039FA0(void) +void LinkOpponentHandlecmd34(void) { - dp01_tbl4_exec_completed(); + LinkOpponentBufferExecCompleted(); } -void sub_8039FAC(void) +void LinkOpponentHandlecmd35(void) { - dp01_tbl4_exec_completed(); + LinkOpponentBufferExecCompleted(); } -void sub_8039FB8(void) +void LinkOpponentHandlecmd36(void) { - dp01_tbl4_exec_completed(); + LinkOpponentBufferExecCompleted(); } -void sub_8039FC4(void) +void LinkOpponentHandlecmd37(void) { gUnknown_020238C8.unk0_0 = 0; - dp01_tbl4_exec_completed(); + LinkOpponentBufferExecCompleted(); } -void sub_8039FE0(void) +void LinkOpponentHandlecmd38(void) { gUnknown_020238C8.unk0_0 = gBattleBufferA[gActiveBank][1]; - dp01_tbl4_exec_completed(); + LinkOpponentBufferExecCompleted(); } -void sub_803A018(void) +void LinkOpponentHandlecmd39(void) { gUnknown_020238C8.unk0_7 = 0; - dp01_tbl4_exec_completed(); + LinkOpponentBufferExecCompleted(); } -void sub_803A030(void) +void LinkOpponentHandlecmd40(void) { gUnknown_020238C8.unk0_7 ^= 1; - dp01_tbl4_exec_completed(); + LinkOpponentBufferExecCompleted(); } -void dp01t_29_4_blink(void) +void LinkOpponentHandleHitAnimation(void) { if (gSprites[gObjectBankIDs[gActiveBank]].invisible == TRUE) { - dp01_tbl4_exec_completed(); + LinkOpponentBufferExecCompleted(); } else { @@ -1129,12 +1589,12 @@ void dp01t_29_4_blink(void) } } -void sub_803A0C8(void) +void LinkOpponentHandlecmd42(void) { - dp01_tbl4_exec_completed(); + LinkOpponentBufferExecCompleted(); } -void sub_803A0D4(void) +void LinkOpponentHandleEffectivenessSound(void) { s8 pan; @@ -1143,31 +1603,31 @@ void sub_803A0D4(void) else pan = 63; PlaySE12WithPanning(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8), pan); - dp01_tbl4_exec_completed(); + LinkOpponentBufferExecCompleted(); } -void sub_803A118(void) +void LinkOpponentHandlecmd44(void) { PlayFanfare(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8)); - dp01_tbl4_exec_completed(); + LinkOpponentBufferExecCompleted(); } -void sub_803A148(void) +void LinkOpponentHandleFaintingCry(void) { PlayCry3( GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES), 25, 5); - dp01_tbl4_exec_completed(); + LinkOpponentBufferExecCompleted(); } -void dp01t_2E_4_battle_intro(void) +void LinkOpponentHandleIntroSlide(void) { sub_80E43C0(gBattleBufferA[gActiveBank][1]); gUnknown_02024DE8 |= 1; - dp01_tbl4_exec_completed(); + LinkOpponentBufferExecCompleted(); } -void sub_803A1B8(void) +void LinkOpponentHandleTrainerBallThrow(void) { u8 taskId; @@ -1176,7 +1636,7 @@ void sub_803A1B8(void) gSprites[gObjectBankIDs[gActiveBank]].data2 = 280; gSprites[gObjectBankIDs[gActiveBank]].data4 = gSprites[gObjectBankIDs[gActiveBank]].pos1.y; gSprites[gObjectBankIDs[gActiveBank]].callback = sub_8078B34; - oamt_set_x3A_32(&gSprites[gObjectBankIDs[gActiveBank]], sub_803A3A8); + StoreSpriteCallbackInData6(&gSprites[gObjectBankIDs[gActiveBank]], sub_803A3A8); taskId = CreateTask(sub_803A2C4, 5); gTasks[taskId].data[0] = gActiveBank; if (ewram17810[gActiveBank].unk0_0) @@ -1218,11 +1678,11 @@ void sub_803A3A8(struct Sprite *sprite) DestroySprite(sprite); } -void sub_803A3DC(void) +void LinkOpponentHandlecmd48(void) { if (gBattleBufferA[gActiveBank][1] != 0 && GetBankSide(gActiveBank) == 0) { - dp01_tbl4_exec_completed(); + LinkOpponentBufferExecCompleted(); return; } @@ -1255,33 +1715,33 @@ void sub_803A4E0(void) if (ewram17810[gActiveBank].unk5++ >= 93) { ewram17810[gActiveBank].unk5 = 0; - dp01_tbl4_exec_completed(); + LinkOpponentBufferExecCompleted(); } } -void sub_803A520(void) +void LinkOpponentHandlecmd49(void) { if (ewram17810[gActiveBank].unk0_0) gTasks[gUnknown_02024E68[gActiveBank]].func = sub_8044CA0; - dp01_tbl4_exec_completed(); + LinkOpponentBufferExecCompleted(); } -void sub_803A56C(void) +void LinkOpponentHandlecmd50(void) { - dp01_tbl4_exec_completed(); + LinkOpponentBufferExecCompleted(); } -void sub_803A578(void) +void LinkOpponentHandleSpriteInvisibility(void) { - if (sub_8078874(gActiveBank) != 0) + if (AnimBankSpriteExists(gActiveBank) != 0) { gSprites[gObjectBankIDs[gActiveBank]].invisible = gBattleBufferA[gActiveBank][1]; sub_8031F88(gActiveBank); } - dp01_tbl4_exec_completed(); + LinkOpponentBufferExecCompleted(); } -void bx_exec_buffer_A_ch0_tbl4(void) +void LinkOpponentHandleBattleAnimation(void) { if (mplay_80342A4(gActiveBank) == 0) { @@ -1289,23 +1749,23 @@ void bx_exec_buffer_A_ch0_tbl4(void) u16 r4 = gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8); if (move_anim_start_t3(gActiveBank, gActiveBank, gActiveBank, r3, r4) != 0) - dp01_tbl4_exec_completed(); + LinkOpponentBufferExecCompleted(); else gBattleBankFunc[gActiveBank] = sub_8037FD8; } } -void sub_803A640(void) +void LinkOpponentHandleLinkStandbyMsg(void) { - dp01_tbl4_exec_completed(); + LinkOpponentBufferExecCompleted(); } -void sub_803A64C(void) +void LinkOpponentHandleResetActionMoveSelection(void) { - dp01_tbl4_exec_completed(); + LinkOpponentBufferExecCompleted(); } -void sub_803A658(void) +void LinkOpponentHandlecmd55(void) { if (gBattleBufferA[gActiveBank][1] == 3) gBattleOutcome = gBattleBufferA[gActiveBank][1]; @@ -1313,10 +1773,10 @@ void sub_803A658(void) gBattleOutcome = gBattleBufferA[gActiveBank][1] ^ 3; FadeOutMapMusic(5); BeginFastPaletteFade(3); - dp01_tbl4_exec_completed(); + LinkOpponentBufferExecCompleted(); gBattleBankFunc[gActiveBank] = sub_8037F34; } -void nullsub_48(void) +void LinkOpponentHandlecmd56(void) { } diff --git a/src/battle_811DA74.c b/src/battle/battle_controller_linkpartner.c similarity index 86% rename from src/battle_811DA74.c rename to src/battle/battle_controller_linkpartner.c index 36a287efc..3e34b2e25 100644 --- a/src/battle_811DA74.c +++ b/src/battle/battle_controller_linkpartner.c @@ -64,10 +64,9 @@ extern u8 gUnknown_0300434C[]; extern u8 gBattleMonForms[]; extern u8 gAnimScriptActive; extern void (*gAnimScriptCallback)(void); -extern void (*const gLinkPartnerBufferCommands[])(void); extern u8 move_anim_start_t3(); -extern u8 sub_8078874(); +extern u8 AnimBankSpriteExists(); extern void sub_8044CA0(u8); extern void sub_8030E38(struct Sprite *); extern void sub_80E43C0(); @@ -83,16 +82,16 @@ extern void sub_80324BC(); extern u8 sub_8031720(); extern u8 mplay_80342A4(); extern void oamt_add_pos2_onto_pos1(); -extern void oamt_set_x3A_32(); +extern void StoreSpriteCallbackInData6(); extern void sub_8078B34(struct Sprite *); extern void sub_80105EC(struct Sprite *); extern s32 sub_803FC34(u16); -extern void sub_8031AF4(); +extern void LoadPlayerTrainerBankSprite(); extern void sub_80313A0(struct Sprite *); extern u8 sub_8046400(); extern void sub_80312F0(struct Sprite *); extern u8 CreateInvisibleSpriteWithCallback(); -extern void sub_80318FC(); +extern void BattleLoadPlayerMonSprite(); extern u8 sub_8077ABC(); extern u8 sub_8077F68(); extern u8 sub_8079E90(); @@ -111,6 +110,8 @@ extern void sub_8031F88(); extern void sub_8141828(); extern void c2_8011A1C(void); +// this file's functions + void LinkPartnerBufferRunCommand(void); void sub_811E0A0(void); void LinkPartnerBufferExecCompleted(void); @@ -122,6 +123,127 @@ void sub_811FF30(void); void sub_812071C(u8); void sub_81208E0(void); +void LinkPartnerHandleGetAttributes(void); +void LinkPartnerHandlecmd1(void); +void LinkPartnerHandleSetAttributes(void); +void LinkPartnerHandlecmd3(void); +void LinkPartnerHandleLoadPokeSprite(void); +void LinkPartnerHandleSendOutPoke(void); +void LinkPartnerHandleReturnPokeToBall(void); +void LinkPartnerHandleTrainerThrow(void); +void LinkPartnerHandleTrainerSlide(void); +void LinkPartnerHandleTrainerSlideBack(void); +void LinkPartnerHandlecmd10(void); +void LinkPartnerHandlecmd11(void); +void LinkPartnerHandlecmd12(void); +void LinkPartnerHandleBallThrow(void); +void LinkPartnerHandlePuase(void); +void LinkPartnerHandleMoveAnimation(void); +void LinkPartnerHandlePrintString(void); +void LinkPartnerHandlePrintStringPlayerOnly(void); +void LinkPartnerHandlecmd18(void); +void LinkPartnerHandlecmd19(void); +void LinkPartnerHandlecmd20(void); +void LinkPartnerHandleOpenBag(void); +void LinkPartnerHandlecmd22(void); +void LinkPartnerHandlecmd23(void); +void LinkPartnerHandleHealthBarUpdate(void); +void LinkPartnerHandleExpBarUpdate(void); +void LinkPartnerHandleStatusIconUpdate(void); +void LinkPartnerHandleStatusAnimation(void); +void LinkPartnerHandleStatusXor(void); +void LinkPartnerHandlecmd29(void); +void LinkPartnerHandleDMATransfer(void); +void LinkPartnerHandlecmd31(void); +void LinkPartnerHandlecmd32(void); +void LinkPartnerHandlecmd33(void); +void LinkPartnerHandlecmd34(void); +void LinkPartnerHandlecmd35(void); +void LinkPartnerHandlecmd36(void); +void LinkPartnerHandlecmd37(void); +void LinkPartnerHandlecmd38(void); +void LinkPartnerHandlecmd39(void); +void LinkPartnerHandlecmd40(void); +void LinkPartnerHandleHitAnimation(void); +void LinkPartnerHandlecmd42(void); +void LinkPartnerHandleEffectivenessSound(void); +void LinkPartnerHandlecmd44(void); +void LinkPartnerHandleFaintingCry(void); +void LinkPartnerHandleIntroSlide(void); +void LinkPartnerHandleTrainerBallThrow(void); +void LinkPartnerHandlecmd48(void); +void LinkPartnerHandlecmd49(void); +void LinkPartnerHandlecmd50(void); +void LinkPartnerHandleSpriteInvisibility(void); +void LinkPartnerHandleBattleAnimation(void); +void LinkPartnerHandleLinkStandbyMsg(void); +void LinkPartnerHandleResetActionMoveSelection(void); +void LinkPartnerHandlecmd55(void); +void LinkPartnerHandlecmd56(void); + +// const data +typedef void (*BattleBufferCmd) (void); +static const BattleBufferCmd gLinkPartnerBufferCommands[] = +{ + LinkPartnerHandleGetAttributes, + LinkPartnerHandlecmd1, + LinkPartnerHandleSetAttributes, + LinkPartnerHandlecmd3, + LinkPartnerHandleLoadPokeSprite, + LinkPartnerHandleSendOutPoke, + LinkPartnerHandleReturnPokeToBall, + LinkPartnerHandleTrainerThrow, + LinkPartnerHandleTrainerSlide, + LinkPartnerHandleTrainerSlideBack, + LinkPartnerHandlecmd10, + LinkPartnerHandlecmd11, + LinkPartnerHandlecmd12, + LinkPartnerHandleBallThrow, + LinkPartnerHandlePuase, + LinkPartnerHandleMoveAnimation, + LinkPartnerHandlePrintString, + LinkPartnerHandlePrintStringPlayerOnly, + LinkPartnerHandlecmd18, + LinkPartnerHandlecmd19, + LinkPartnerHandlecmd20, + LinkPartnerHandleOpenBag, + LinkPartnerHandlecmd22, + LinkPartnerHandlecmd23, + LinkPartnerHandleHealthBarUpdate, + LinkPartnerHandleExpBarUpdate, + LinkPartnerHandleStatusIconUpdate, + LinkPartnerHandleStatusAnimation, + LinkPartnerHandleStatusXor, + LinkPartnerHandlecmd29, + LinkPartnerHandleDMATransfer, + LinkPartnerHandlecmd31, + LinkPartnerHandlecmd32, + LinkPartnerHandlecmd33, + LinkPartnerHandlecmd34, + LinkPartnerHandlecmd35, + LinkPartnerHandlecmd36, + LinkPartnerHandlecmd37, + LinkPartnerHandlecmd38, + LinkPartnerHandlecmd39, + LinkPartnerHandlecmd40, + LinkPartnerHandleHitAnimation, + LinkPartnerHandlecmd42, + LinkPartnerHandleEffectivenessSound, + LinkPartnerHandlecmd44, + LinkPartnerHandleFaintingCry, + LinkPartnerHandleIntroSlide, + LinkPartnerHandleTrainerBallThrow, + LinkPartnerHandlecmd48, + LinkPartnerHandlecmd49, + LinkPartnerHandlecmd50, + LinkPartnerHandleSpriteInvisibility, + LinkPartnerHandleBattleAnimation, + LinkPartnerHandleLinkStandbyMsg, + LinkPartnerHandleResetActionMoveSelection, + LinkPartnerHandlecmd55, + LinkPartnerHandlecmd56, +}; +// code starts here void nullsub_74(void) { @@ -298,7 +420,7 @@ void sub_811E034(void) { if (gSprites[gHealthboxIDs[gActiveBank]].callback == SpriteCallbackDummy) { - if (ewram17800[gActiveBank].unk0_2) + if (ewram17800[gActiveBank].substituteSprite) move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 6); gBattleBankFunc[gActiveBank] = sub_811E0A0; } @@ -379,7 +501,7 @@ void LinkPartnerBufferExecCompleted(void) if (gBattleTypeFlags & 2) { multiplayerId = GetMultiplayerId(); - dp01_prepare_buffer_wireless_probably(2, 4, &multiplayerId); + PrepareBufferDataTransferLink(2, 4, &multiplayerId); gBattleBufferA[gActiveBank][0] = 0x38; } else @@ -421,7 +543,7 @@ void LinkPartnerHandleGetAttributes(void) r4 >>= 1; } } - dp01_build_cmdbuf_x1D_1D_numargs_varargs(1, r6, unk); + Emitcmd29(1, r6, unk); LinkPartnerBufferExecCompleted(); } @@ -731,7 +853,7 @@ u32 dp01_getattr_by_ch1_for_player_pokemon(u8 a, u8 *buffer) return size; } -void sub_811EC04(void) +void LinkPartnerHandlecmd1(void) { LinkPartnerBufferExecCompleted(); } @@ -976,7 +1098,7 @@ void sub_811EC68(u8 a) sub_80324F8(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); } -void sub_811F664(void) +void LinkPartnerHandlecmd3(void) { u8 *dst; u8 i; @@ -987,9 +1109,9 @@ void sub_811F664(void) LinkPartnerBufferExecCompleted(); } -void sub_811F6D8(void) +void LinkPartnerHandleLoadPokeSprite(void) { - sub_80318FC(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); + BattleLoadPlayerMonSprite(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); GetMonSpriteTemplate_803C56C( GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES), GetBankIdentity(gActiveBank)); @@ -1005,11 +1127,11 @@ void sub_811F6D8(void) gBattleBankFunc[gActiveBank] = sub_811DDE8; } -void sub_811F7F4(void) +void LinkPartnerHandleSendOutPoke(void) { sub_8032AA8(gActiveBank, gBattleBufferA[gActiveBank][2]); gBattlePartyID[gActiveBank] = gBattleBufferA[gActiveBank][1]; - sub_80318FC(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); + BattleLoadPlayerMonSprite(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); sub_811F864(gActiveBank, gBattleBufferA[gActiveBank][2]); gBattleBankFunc[gActiveBank] = sub_811E1BC; } @@ -1038,7 +1160,7 @@ void sub_811F864(u8 a, u8 b) gSprites[gUnknown_0300434C[a]].data0 = sub_8046400(0, 0xFF); } -void sub_811F9D0(void) +void LinkPartnerHandleReturnPokeToBall(void) { if (gBattleBufferA[gActiveBank][1] == 0) { @@ -1059,7 +1181,7 @@ void sub_811FA5C(void) switch (ewram17810[gActiveBank].unk4) { case 0: - if (ewram17800[gActiveBank].unk0_2) + if (ewram17800[gActiveBank].substituteSprite) move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5); ewram17810[gActiveBank].unk4 = 1; break; @@ -1074,7 +1196,7 @@ void sub_811FA5C(void) } } -void sub_811FAE4(void) +void LinkPartnerHandleTrainerThrow(void) { s16 xOffset; u32 gender; @@ -1092,7 +1214,7 @@ void sub_811FAE4(void) xOffset = 0; gender = gLinkPlayers[GetMultiplayerId() ^ 1].gender; } - sub_8031AF4(gender, gActiveBank); + LoadPlayerTrainerBankSprite(gender, gActiveBank); GetMonSpriteTemplate_803C5A0(gender, GetBankIdentity(gActiveBank)); gObjectBankIDs[gActiveBank] = CreateSprite( &gUnknown_02024E8C, @@ -1105,27 +1227,27 @@ void sub_811FAE4(void) gBattleBankFunc[gActiveBank] = sub_811DAE4; } -void sub_811FC30(void) +void LinkPartnerHandleTrainerSlide(void) { LinkPartnerBufferExecCompleted(); } -void sub_811FC3C(void) +void LinkPartnerHandleTrainerSlideBack(void) { oamt_add_pos2_onto_pos1(&gSprites[gObjectBankIDs[gActiveBank]]); gSprites[gObjectBankIDs[gActiveBank]].data0 = 35; gSprites[gObjectBankIDs[gActiveBank]].data2 = -40; gSprites[gObjectBankIDs[gActiveBank]].data4 = gSprites[gObjectBankIDs[gActiveBank]].pos1.y; gSprites[gObjectBankIDs[gActiveBank]].callback = sub_8078B34; - oamt_set_x3A_32(&gSprites[gObjectBankIDs[gActiveBank]], SpriteCallbackDummy); + StoreSpriteCallbackInData6(&gSprites[gObjectBankIDs[gActiveBank]], SpriteCallbackDummy); gBattleBankFunc[gActiveBank] = sub_811DB1C; } -void sub_811FCE8(void) +void LinkPartnerHandlecmd10(void) { if (ewram17810[gActiveBank].unk4 == 0) { - if (ewram17800[gActiveBank].unk0_2) + if (ewram17800[gActiveBank].substituteSprite) move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5); ewram17810[gActiveBank].unk4++; } @@ -1141,27 +1263,27 @@ void sub_811FCE8(void) } } -void sub_811FDCC(void) +void LinkPartnerHandlecmd11(void) { LinkPartnerBufferExecCompleted(); } -void sub_811FDD8(void) +void LinkPartnerHandlecmd12(void) { LinkPartnerBufferExecCompleted(); } -void sub_811FDE4(void) +void LinkPartnerHandleBallThrow(void) { LinkPartnerBufferExecCompleted(); } -void sub_811FDF0(void) +void LinkPartnerHandlePuase(void) { LinkPartnerBufferExecCompleted(); } -void sub_811FDFC(void) +void LinkPartnerHandleMoveAnimation(void) { if (!mplay_80342A4(gActiveBank)) { @@ -1200,7 +1322,7 @@ void sub_811FF30(void) switch (ewram17810[gActiveBank].unk4) { case 0: - if (ewram17800[gActiveBank].unk0_2 && !ewram17800[gActiveBank].unk0_3) + if (ewram17800[gActiveBank].substituteSprite && !ewram17800[gActiveBank].unk0_3) { ewram17800[gActiveBank].unk0_3 = 1; move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5); @@ -1220,7 +1342,7 @@ void sub_811FF30(void) if (!gAnimScriptActive) { sub_80326EC(1); - if ((ewram17800[gActiveBank].unk0_2) && r7 <= 1) + if ((ewram17800[gActiveBank].substituteSprite) && r7 <= 1) { move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 6); ewram17800[gActiveBank].unk0_3 = 0; @@ -1242,7 +1364,7 @@ void sub_811FF30(void) } } -void sub_8120094(void) +void LinkPartnerHandlePrintString(void) { gUnknown_030042A4 = 0; gUnknown_030042A0 = 0; @@ -1251,37 +1373,37 @@ void sub_8120094(void) gBattleBankFunc[gActiveBank] = sub_811DFA0; } -void sub_81200F8(void) +void LinkPartnerHandlePrintStringPlayerOnly(void) { LinkPartnerBufferExecCompleted(); } -void sub_8120104(void) +void LinkPartnerHandlecmd18(void) { LinkPartnerBufferExecCompleted(); } -void sub_8120110(void) +void LinkPartnerHandlecmd19(void) { LinkPartnerBufferExecCompleted(); } -void sub_812011C(void) +void LinkPartnerHandlecmd20(void) { LinkPartnerBufferExecCompleted(); } -void sub_8120128(void) +void LinkPartnerHandleOpenBag(void) { LinkPartnerBufferExecCompleted(); } -void sub_8120134(void) +void LinkPartnerHandlecmd22(void) { LinkPartnerBufferExecCompleted(); } -void sub_8120140(void) +void LinkPartnerHandlecmd23(void) { LinkPartnerBufferExecCompleted(); } @@ -1337,70 +1459,70 @@ void LinkPartnerHandleStatusAnimation(void) } } -void sub_8120324(void) +void LinkPartnerHandleStatusXor(void) { LinkPartnerBufferExecCompleted(); } -void sub_8120330(void) +void LinkPartnerHandlecmd29(void) { LinkPartnerBufferExecCompleted(); } -void sub_812033C(void) +void LinkPartnerHandleDMATransfer(void) { LinkPartnerBufferExecCompleted(); } -void sub_8120348(void) +void LinkPartnerHandlecmd31(void) { LinkPartnerBufferExecCompleted(); } -void sub_8120354(void) +void LinkPartnerHandlecmd32(void) { LinkPartnerBufferExecCompleted(); } -void sub_8120360(void) +void LinkPartnerHandlecmd33(void) { LinkPartnerBufferExecCompleted(); } -void sub_812036C(void) +void LinkPartnerHandlecmd34(void) { LinkPartnerBufferExecCompleted(); } -void sub_8120378(void) +void LinkPartnerHandlecmd35(void) { LinkPartnerBufferExecCompleted(); } -void sub_8120384(void) +void LinkPartnerHandlecmd36(void) { LinkPartnerBufferExecCompleted(); } -void sub_8120390(void) +void LinkPartnerHandlecmd37(void) { gUnknown_020238C8.unk0_0 = 0; LinkPartnerBufferExecCompleted(); } -void sub_81203AC(void) +void LinkPartnerHandlecmd38(void) { gUnknown_020238C8.unk0_0 = gBattleBufferA[gActiveBank][1]; LinkPartnerBufferExecCompleted(); } -void sub_81203E4(void) +void LinkPartnerHandlecmd39(void) { gUnknown_020238C8.unk0_7 = 0; LinkPartnerBufferExecCompleted(); } -void sub_81203FC(void) +void LinkPartnerHandlecmd40(void) { gUnknown_020238C8.unk0_7 ^= 1; LinkPartnerBufferExecCompleted(); @@ -1421,7 +1543,7 @@ void LinkPartnerHandleHitAnimation(void) } } -void sub_8120494(void) +void LinkPartnerHandlecmd42(void) { LinkPartnerBufferExecCompleted(); } @@ -1438,7 +1560,7 @@ void LinkPartnerHandleEffectivenessSound(void) LinkPartnerBufferExecCompleted(); } -void sub_81204E4(void) +void LinkPartnerHandlecmd44(void) { PlayFanfare(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8)); LinkPartnerBufferExecCompleted(); @@ -1452,14 +1574,14 @@ void LinkPartnerHandleFaintingCry(void) LinkPartnerBufferExecCompleted(); } -void dp01t_2E_3_battle_intro(void) +void LinkPartnerHandleIntroSlide(void) { sub_80E43C0(gBattleBufferA[gActiveBank][1]); gUnknown_02024DE8 |= 1; LinkPartnerBufferExecCompleted(); } -void sub_8120588(void) +void LinkPartnerHandleTrainerBallThrow(void) { u8 r4; u8 taskId; @@ -1470,7 +1592,7 @@ void sub_8120588(void) gSprites[gObjectBankIDs[gActiveBank]].data4 = gSprites[gObjectBankIDs[gActiveBank]].pos1.y; gSprites[gObjectBankIDs[gActiveBank]].callback = sub_8078B34; gSprites[gObjectBankIDs[gActiveBank]].data5 = gActiveBank; - oamt_set_x3A_32(&gSprites[gObjectBankIDs[gActiveBank]], sub_8030E38); + StoreSpriteCallbackInData6(&gSprites[gObjectBankIDs[gActiveBank]], sub_8030E38); StartSpriteAnim(&gSprites[gObjectBankIDs[gActiveBank]], 1); r4 = AllocSpritePalette(0xD6F9); LoadCompressedPalette( @@ -1508,7 +1630,7 @@ void sub_812071C(u8 taskId) sub_811F864(gActiveBank, 0); gActiveBank ^= 2; gBattleBufferA[gActiveBank][1] = gBattlePartyID[gActiveBank]; - sub_80318FC(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); + BattleLoadPlayerMonSprite(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); sub_811F864(gActiveBank, 0); gActiveBank ^= 2; } @@ -1517,7 +1639,7 @@ void sub_812071C(u8 taskId) DestroyTask(taskId); } -void dp01t_30_3_80EB11C(void) +void LinkPartnerHandlecmd48(void) { if (gBattleBufferA[gActiveBank][1] != 0 && GetBankSide(gActiveBank) == 0) { @@ -1546,21 +1668,21 @@ void sub_81208E0(void) } } -void sub_8120920(void) +void LinkPartnerHandlecmd49(void) { if (ewram17810[gActiveBank].unk0_0) gTasks[gUnknown_02024E68[gActiveBank]].func = sub_8044CA0; LinkPartnerBufferExecCompleted(); } -void sub_812096C(void) +void LinkPartnerHandlecmd50(void) { LinkPartnerBufferExecCompleted(); } -void sub_8120978(void) +void LinkPartnerHandleSpriteInvisibility(void) { - if (sub_8078874(gActiveBank) != 0) + if (AnimBankSpriteExists(gActiveBank) != 0) { gSprites[gObjectBankIDs[gActiveBank]].invisible = gBattleBufferA[gActiveBank][1]; sub_8031F88(gActiveBank); @@ -1568,7 +1690,7 @@ void sub_8120978(void) LinkPartnerBufferExecCompleted(); } -void sub_81209D8(void) +void LinkPartnerHandleBattleAnimation(void) { if (mplay_80342A4(gActiveBank) == 0) { @@ -1582,17 +1704,17 @@ void sub_81209D8(void) } } -void sub_8120A40(void) +void LinkPartnerHandleLinkStandbyMsg(void) { LinkPartnerBufferExecCompleted(); } -void sub_8120A4C(void) +void LinkPartnerHandleResetActionMoveSelection(void) { LinkPartnerBufferExecCompleted(); } -void sub_8120A58(void) +void LinkPartnerHandlecmd55(void) { gBattleOutcome = gBattleBufferA[gActiveBank][1]; FadeOutMapMusic(5); @@ -1601,6 +1723,6 @@ void sub_8120A58(void) gBattleBankFunc[gActiveBank] = sub_811E29C; } -void nullsub_75(void) +void LinkPartnerHandlecmd56(void) { } diff --git a/src/battle/battle_controller_opponent.c b/src/battle/battle_controller_opponent.c new file mode 100644 index 000000000..72b56b962 --- /dev/null +++ b/src/battle/battle_controller_opponent.c @@ -0,0 +1,2055 @@ +#include "global.h" +#include "battle.h" +#include "battle_interface.h" +#include "data2.h" +#include "battle_811DA74.h" +#include "battle_anim_813F0F4.h" +#include "link.h" +#include "m4a.h" +#include "main.h" +#include "palette.h" +#include "pokeball.h" +#include "pokemon.h" +#include "rom3.h" +#include "rom_8077ABC.h" +#include "sound.h" +#include "songs.h" +#include "sprite.h" +#include "string_util.h" +#include "task.h" +#include "text.h" +#include "util.h" + +struct UnknownStruct3 +{ + u16 moves[4]; + u8 pp[4]; + u8 ppBonuses; +}; + +extern u8 gActiveBank; +extern u8 gBattleBufferA[][0x200]; +extern u16 gBattlePartyID[]; +extern u8 gObjectBankIDs[]; +extern u8 gBattleMonForms[]; +extern struct SpriteTemplate gUnknown_02024E8C; +extern void (*gBattleBankFunc[])(void); +extern u8 gUnknown_0300434C[]; +extern u8 gHealthboxIDs[]; +extern u16 gBattleTypeFlags; +extern u16 gTrainerBattleOpponent; +extern u32 *gDisableStructMoveAnim; +extern u32 gMoveDmgMoveAnim; +extern u16 gMovePowerMoveAnim; +extern u8 gHappinessMoveAnim; +extern u16 gWeatherMoveAnim; +extern u32 gPID_perBank[]; +extern u8 gUnknown_0202F7C4; +extern u8 gAnimScriptActive; +extern void (*gAnimScriptCallback)(void); +extern struct Window gUnknown_03004210; +extern u16 gUnknown_030042A0; +extern u16 gUnknown_030042A4; +extern u8 gDisplayedStringBattle[]; +extern u8 gBankTarget; +extern u8 gAbsentBankFlags; +extern bool8 gDoingBattleAnim; +extern u16 gUnknown_02024DE8; +extern u8 gUnknown_02024E68[]; +extern MainCallback gPreBattleCallback1; +extern void (*const gOpponentBufferCommands[])(void); +extern struct MusicPlayerInfo gMPlay_SE1; +extern struct MusicPlayerInfo gMPlay_SE2; +extern struct MusicPlayerInfo gMPlay_BGM; +extern u32 gBattleExecBuffer; + +extern u8 sub_8077ABC(); +extern u8 sub_8077F68(); +extern u8 sub_8079E90(); +extern void sub_8033018(void); +extern void BattleLoadOpponentMonSprite(); +extern u8 GetBankIdentity(u8); +extern void sub_8032984(u8, u16); +extern void sub_80333D4(void); +extern void sub_80312F0(struct Sprite *); +extern u8 sub_8046400(); +extern void sub_8032A08(); +extern void sub_8043DB0(); +extern void sub_8033160(void); +extern u8 sub_8135FBC(void); +extern u8 get_trainer_class_pic_index(void); +extern void sub_80313A0(struct Sprite *); +extern void sub_8032B4C(void); +extern void sub_8031A6C(u16, u8); +extern void sub_8032B84(void); +extern void sub_8078B34(struct Sprite *); +extern void sub_8032BBC(void); +extern void oamt_add_pos2_onto_pos1(); +extern void StoreSpriteCallbackInData6(); +extern void sub_803311C(void); +extern void sub_8010384(struct Sprite *); +extern bool8 mplay_80342A4(u8); +extern u8 sub_8031720(); +extern void ExecuteMoveAnim(); +extern void sub_80326EC(); +extern void sub_8031F24(void); +extern void sub_80324BC(); +extern void BufferStringBattle(); +extern void sub_80331D0(void); +extern void sub_8036B0C(void); +extern u8 GetBankByPlayerAI(u8); +extern u8 sub_8036CD4(void); +extern void sub_80330C8(void); +extern void sub_8043D84(); +extern void sub_8045A5C(); +void sub_8033494(void); +extern void move_anim_start_t2_for_situation(); +extern void bx_blink_t7(void); +extern void sub_8047858(); +extern u8 GetBankSide(u8); +extern void sub_80E43C0(); +extern void sub_8044CA0(u8); +extern void nullsub_45(void); +extern void sub_8031B74(); +extern bool8 IsDoubleBattle(void); +extern void sub_8032E2C(void); +extern u8 AnimBankSpriteExists(); +extern u8 move_anim_start_t3(); +extern void sub_80334C0(void); + +// this file's functions + +void OpponentBufferExecCompleted(void); +void OpponentBufferRunCommand(void); +u32 sub_8033598(u8, u8 *); +void sub_8033E24(u8); +void sub_803495C(u8, u8); +void sub_8034B74(void); +void sub_8035238(void); +void sub_8035C10(struct Sprite *); +void sub_8035C44(u8); +void sub_8035E2C(void); +void sub_80332D0(void); + +void OpponentHandleGetAttributes(void); +void OpponentHandlecmd1(void); +void OpponentHandleSetAttributes(void); +void OpponentHandlecmd3(void); +void OpponentHandleLoadPokeSprite(void); +void OpponentHandleSendOutPoke(void); +void OpponentHandleReturnPokeToBall(void); +void OpponentHandleTrainerThrow(void); +void OpponentHandleTrainerSlide(void); +void OpponentHandleTrainerSlideBack(void); +void OpponentHandlecmd10(void); +void OpponentHandlecmd11(void); +void OpponentHandlecmd12(void); +void OpponentHandleBallThrow(void); +void OpponentHandlePuase(void); +void OpponentHandleMoveAnimation(void); +void OpponentHandlePrintString(void); +void OpponentHandlePrintStringPlayerOnly(void); +void OpponentHandlecmd18(void); +void OpponentHandlecmd19(void); +void OpponentHandlecmd20(void); +void OpponentHandleOpenBag(void); +void OpponentHandlecmd22(void); +void OpponentHandlecmd23(void); +void OpponentHandleHealthBarUpdate(void); +void OpponentHandleExpBarUpdate(void); +void OpponentHandleStatusIconUpdate(void); +void OpponentHandleStatusAnimation(void); +void OpponentHandleStatusXor(void); +void OpponentHandlecmd29(void); +void OpponentHandleDMATransfer(void); +void OpponentHandlecmd31(void); +void OpponentHandlecmd32(void); +void OpponentHandlecmd33(void); +void OpponentHandlecmd34(void); +void OpponentHandlecmd35(void); +void OpponentHandlecmd36(void); +void OpponentHandlecmd37(void); +void OpponentHandlecmd38(void); +void OpponentHandlecmd39(void); +void OpponentHandlecmd40(void); +void OpponentHandleHitAnimation(void); +void OpponentHandlecmd42(void); +void OpponentHandleEffectivenessSound(void); +void OpponentHandlecmd44(void); +void OpponentHandleFaintingCry(void); +void OpponentHandleIntroSlide(void); +void OpponentHandleTrainerBallThrow(void); +void OpponentHandlecmd48(void); +void OpponentHandlecmd49(void); +void OpponentHandlecmd50(void); +void OpponentHandleSpriteInvisibility(void); +void OpponentHandleBattleAnimation(void); +void OpponentHandleLinkStandbyMsg(void); +void OpponentHandleResetActionMoveSelection(void); +void OpponentHandlecmd55(void); +void OpponentHandlecmd56(void); + +// const data +typedef void (*BattleBufferCmd) (void); +static const BattleBufferCmd gOpponentBufferCommands[] = +{ + OpponentHandleGetAttributes, + OpponentHandlecmd1, + OpponentHandleSetAttributes, + OpponentHandlecmd3, + OpponentHandleLoadPokeSprite, + OpponentHandleSendOutPoke, + OpponentHandleReturnPokeToBall, + OpponentHandleTrainerThrow, + OpponentHandleTrainerSlide, + OpponentHandleTrainerSlideBack, + OpponentHandlecmd10, + OpponentHandlecmd11, + OpponentHandlecmd12, + OpponentHandleBallThrow, + OpponentHandlePuase, + OpponentHandleMoveAnimation, + OpponentHandlePrintString, + OpponentHandlePrintStringPlayerOnly, + OpponentHandlecmd18, + OpponentHandlecmd19, + OpponentHandlecmd20, + OpponentHandleOpenBag, + OpponentHandlecmd22, + OpponentHandlecmd23, + OpponentHandleHealthBarUpdate, + OpponentHandleExpBarUpdate, + OpponentHandleStatusIconUpdate, + OpponentHandleStatusAnimation, + OpponentHandleStatusXor, + OpponentHandlecmd29, + OpponentHandleDMATransfer, + OpponentHandlecmd31, + OpponentHandlecmd32, + OpponentHandlecmd33, + OpponentHandlecmd34, + OpponentHandlecmd35, + OpponentHandlecmd36, + OpponentHandlecmd37, + OpponentHandlecmd38, + OpponentHandlecmd39, + OpponentHandlecmd40, + OpponentHandleHitAnimation, + OpponentHandlecmd42, + OpponentHandleEffectivenessSound, + OpponentHandlecmd44, + OpponentHandleFaintingCry, + OpponentHandleIntroSlide, + OpponentHandleTrainerBallThrow, + OpponentHandlecmd48, + OpponentHandlecmd49, + OpponentHandlecmd50, + OpponentHandleSpriteInvisibility, + OpponentHandleBattleAnimation, + OpponentHandleLinkStandbyMsg, + OpponentHandleResetActionMoveSelection, + OpponentHandlecmd55, + OpponentHandlecmd56, +}; + +static const u8 sUnknownBytes[] = {0xB0, 0xB0, 0xC8, 0x98, 0x28, 0x28, 0x28, 0x20}; + +// code + +void nullsub_45(void) +{ +} + +void SetBankFuncToOpponentBufferRunCommand(void) +{ + gBattleBankFunc[gActiveBank] = OpponentBufferRunCommand; +} + +void OpponentBufferRunCommand(void) +{ + if (gBattleExecBuffer & gBitTable[gActiveBank]) + { + if (gBattleBufferA[gActiveBank][0] <= 0x38) + gOpponentBufferCommands[gBattleBufferA[gActiveBank][0]](); + else + OpponentBufferExecCompleted(); + } +} + +void sub_8032B4C(void) +{ + if (gSprites[gObjectBankIDs[gActiveBank]].callback == SpriteCallbackDummy) + OpponentBufferExecCompleted(); +} + +// Duplicate of sub_8032B4C +void sub_8032B84(void) +{ + if (gSprites[gObjectBankIDs[gActiveBank]].callback == SpriteCallbackDummy) + OpponentBufferExecCompleted(); +} + +void sub_8032BBC(void) +{ + if (gSprites[gObjectBankIDs[gActiveBank]].callback == SpriteCallbackDummy) + { + sub_8031B74(gSprites[gObjectBankIDs[gActiveBank]].oam.affineParam); + gSprites[gObjectBankIDs[gActiveBank]].oam.tileNum = gSprites[gObjectBankIDs[gActiveBank]].data5; + FreeSpriteOamMatrix(&gSprites[gObjectBankIDs[gActiveBank]]); + DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]); + OpponentBufferExecCompleted(); + } +} + +void sub_8032C4C(void) +{ + if ((--ewram17810[gActiveBank].unk9) == 0xFF) + { + ewram17810[gActiveBank].unk9 = 0; + OpponentBufferExecCompleted(); + } +} + +void sub_8032C88(void) +{ + bool8 r6 = FALSE; + + if (!IsDoubleBattle() || (IsDoubleBattle() && (gBattleTypeFlags & BATTLE_TYPE_MULTI))) + { + if (gSprites[gHealthboxIDs[gActiveBank]].callback == SpriteCallbackDummy) + r6 = TRUE; + } + else + { + if (gSprites[gHealthboxIDs[gActiveBank]].callback == SpriteCallbackDummy + && gSprites[gHealthboxIDs[gActiveBank ^ 2]].callback == SpriteCallbackDummy) + r6 = TRUE; + } + if (IsCryPlayingOrClearCrySongs()) + r6 = FALSE; + + if (r6 && ewram17810[gActiveBank].unk1_0 && ewram17810[gActiveBank ^ 2].unk1_0) + { + ewram17810[gActiveBank].unk0_7 = 0; + ewram17810[gActiveBank].unk1_0 = 0; + ewram17810[gActiveBank ^ 2].unk0_7 = 0; + ewram17810[gActiveBank ^ 2].unk1_0 = 0; + FreeSpriteTilesByTag(0x27F9); + FreeSpritePaletteByTag(0x27F9); + if (gBattleTypeFlags & BATTLE_TYPE_MULTI) + m4aMPlayContinue(&gMPlay_BGM); + else + m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 256); + ewram17810[gActiveBank].unk9 = 3; + gBattleBankFunc[gActiveBank] = sub_8032C4C; + } +} + +void sub_8032E2C(void) +{ + if (!ewram17810[gActiveBank].unk0_3 && !ewram17810[gActiveBank].unk0_7) + sub_8141828(gActiveBank, &gEnemyParty[gBattlePartyID[gActiveBank]]); + if (!ewram17810[gActiveBank ^ 2].unk0_3 && !ewram17810[gActiveBank ^ 2].unk0_7) + sub_8141828(gActiveBank ^ 2, &gEnemyParty[gBattlePartyID[gActiveBank ^ 2]]); + if (!ewram17810[gActiveBank].unk0_3 && !ewram17810[gActiveBank ^ 2].unk0_3) + { + if (IsDoubleBattle() && !(gBattleTypeFlags & BATTLE_TYPE_MULTI)) + { + DestroySprite(&gSprites[gUnknown_0300434C[gActiveBank ^ 2]]); + sub_8045A5C( + gHealthboxIDs[gActiveBank ^ 2], + &gEnemyParty[gBattlePartyID[gActiveBank ^ 2]], + 0); + sub_804777C(gActiveBank ^ 2); + sub_8043DFC(gHealthboxIDs[gActiveBank ^ 2]); + sub_8032984( + gActiveBank ^ 2, + GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank ^ 2]], MON_DATA_SPECIES)); + } + DestroySprite(&gSprites[gUnknown_0300434C[gActiveBank]]); + sub_8045A5C( + gHealthboxIDs[gActiveBank], + &gEnemyParty[gBattlePartyID[gActiveBank]], + 0); + sub_804777C(gActiveBank); + sub_8043DFC(gHealthboxIDs[gActiveBank]); + sub_8032984( + gActiveBank, + GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES)); + + ewram17840.unk9_0 = 0; + gBattleBankFunc[gActiveBank] = sub_8032C88; + } +} + +void sub_8033018(void) +{ + if (gSprites[gObjectBankIDs[gActiveBank]].animEnded == TRUE + && gSprites[gObjectBankIDs[gActiveBank]].pos2.x == 0) + { + if (!ewram17810[gActiveBank].unk0_7) + { + sub_8141828(gActiveBank, &gEnemyParty[gBattlePartyID[gActiveBank]]); + return; + } + if (ewram17810[gActiveBank].unk1_0) + { + ewram17810[gActiveBank].unk0_7 = 0; + ewram17810[gActiveBank].unk1_0 = 0; + FreeSpriteTilesByTag(0x27F9); + FreeSpritePaletteByTag(0x27F9); + OpponentBufferExecCompleted(); + return; + } + } +} + +void sub_80330C8(void) +{ + s16 r4 = sub_8045C78(gActiveBank, gHealthboxIDs[gActiveBank], 0, 0); + + sub_8043DFC(gHealthboxIDs[gActiveBank]); + if (r4 != -1) + sub_80440EC(gHealthboxIDs[gActiveBank], r4, 0); + else + OpponentBufferExecCompleted(); +} + +void sub_803311C(void) +{ + if (!gSprites[gObjectBankIDs[gActiveBank]].inUse) + { + sub_8043DB0(gHealthboxIDs[gActiveBank]); + OpponentBufferExecCompleted(); + } +} + +void sub_8033160(void) +{ + if (!ewram17810[gActiveBank].unk0_6) + { + FreeSpriteOamMatrix(&gSprites[gObjectBankIDs[gActiveBank]]); + DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]); + sub_8032A08(gActiveBank); + sub_8043DB0(gHealthboxIDs[gActiveBank]); + OpponentBufferExecCompleted(); + } +} + +void sub_80331D0(void) +{ + if (gUnknown_03004210.state == 0) + OpponentBufferExecCompleted(); +} + +void bx_blink_t7(void) +{ + u8 spriteId = gObjectBankIDs[gActiveBank]; + + if (gSprites[spriteId].data1 == 32) + { + gSprites[spriteId].data1 = 0; + gSprites[spriteId].invisible = FALSE; + gDoingBattleAnim = 0; + OpponentBufferExecCompleted(); + } + else + { + if (((u16)gSprites[spriteId].data1 % 4) == 0) + gSprites[spriteId].invisible ^= 1; + gSprites[spriteId].data1++; + } +} + +void sub_8033264(void) +{ + if (gSprites[gHealthboxIDs[gActiveBank]].callback == SpriteCallbackDummy) + { + if (ewram17800[gActiveBank].substituteSprite) + move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 6); + gBattleBankFunc[gActiveBank] = sub_80332D0; + } +} + +void sub_80332D0(void) +{ + if (!ewram17810[gActiveBank].unk0_6) + { + CreateTask(c3_0802FDF4, 10); + OpponentBufferExecCompleted(); + } +} + +void sub_8033308(void) +{ + if (ewram17810[gActiveBank].unk1_0) + { + ewram17810[gActiveBank].unk0_7 = 0; + ewram17810[gActiveBank].unk1_0 = 0; + FreeSpriteTilesByTag(0x27F9); + FreeSpritePaletteByTag(0x27F9); + StartSpriteAnim(&gSprites[gObjectBankIDs[gActiveBank]], 0); + sub_8045A5C( + gHealthboxIDs[gActiveBank], + &gEnemyParty[gBattlePartyID[gActiveBank]], + 0); + sub_804777C(gActiveBank); + sub_8043DFC(gHealthboxIDs[gActiveBank]); + sub_8031F88(gActiveBank); + gBattleBankFunc[gActiveBank] = sub_8033264; + } +} + +void sub_80333D4(void) +{ + if (!ewram17810[gActiveBank].unk0_3 && !ewram17810[gActiveBank].unk0_7) + sub_8141828(gActiveBank, &gEnemyParty[gBattlePartyID[gActiveBank]]); + if (gSprites[gUnknown_0300434C[gActiveBank]].callback == SpriteCallbackDummy + && !ewram17810[gActiveBank].unk0_3) + { + DestroySprite(&gSprites[gUnknown_0300434C[gActiveBank]]); + sub_8032984(gActiveBank, GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES)); + gBattleBankFunc[gActiveBank] = sub_8033308; + } +} + +void sub_8033494(void) +{ + if (!ewram17810[gActiveBank].unk0_4) + OpponentBufferExecCompleted(); +} + +void sub_80334C0(void) +{ + if (!ewram17810[gActiveBank].unk0_5) + OpponentBufferExecCompleted(); +} + +void OpponentBufferExecCompleted(void) +{ + gBattleBankFunc[gActiveBank] = OpponentBufferRunCommand; + gBattleExecBuffer &= ~gBitTable[gActiveBank]; +} + +void OpponentHandleGetAttributes(void) +{ + u8 buffer[256]; + int r6 = 0; + s32 i; + + if (gBattleBufferA[gActiveBank][2] == 0) + { + r6 = sub_8033598(gBattlePartyID[gActiveBank], buffer); + } + else + { + u8 r4 = gBattleBufferA[gActiveBank][2]; + + for (i = 0; i < 6; i++) + { + if (r4 & 1) + r6 += sub_8033598(i, buffer + r6); + r4 >>= 1; + } + } + Emitcmd29(1, r6, buffer); + OpponentBufferExecCompleted(); +} + +u32 sub_8033598(u8 a, u8 *buffer) +{ + struct BattlePokemon battlePokemon; + struct UnknownStruct3 moveData; + u8 nickname[20]; + u8 *src; + s16 data16; + u32 data32; + s32 size = 0; + + switch (gBattleBufferA[gActiveBank][1]) + { + case 0: + battlePokemon.species = GetMonData(&gEnemyParty[a], MON_DATA_SPECIES); + battlePokemon.item = GetMonData(&gEnemyParty[a], MON_DATA_HELD_ITEM); + for (size = 0; size < 4; size++) + { + battlePokemon.moves[size] = GetMonData(&gEnemyParty[a], MON_DATA_MOVE1 + size); + battlePokemon.pp[size] = GetMonData(&gEnemyParty[a], MON_DATA_PP1 + size); + } + battlePokemon.ppBonuses = GetMonData(&gEnemyParty[a], MON_DATA_PP_BONUSES); + battlePokemon.friendship = GetMonData(&gEnemyParty[a], MON_DATA_FRIENDSHIP); + battlePokemon.experience = GetMonData(&gEnemyParty[a], MON_DATA_EXP); + battlePokemon.hpIV = GetMonData(&gEnemyParty[a], MON_DATA_HP_IV); + battlePokemon.attackIV = GetMonData(&gEnemyParty[a], MON_DATA_ATK_IV); + battlePokemon.defenseIV = GetMonData(&gEnemyParty[a], MON_DATA_DEF_IV); + battlePokemon.speedIV = GetMonData(&gEnemyParty[a], MON_DATA_SPD_IV); + battlePokemon.spAttackIV = GetMonData(&gEnemyParty[a], MON_DATA_SPATK_IV); + battlePokemon.spDefenseIV = GetMonData(&gEnemyParty[a], MON_DATA_SPDEF_IV); + battlePokemon.personality = GetMonData(&gEnemyParty[a], MON_DATA_PERSONALITY); + battlePokemon.status1 = GetMonData(&gEnemyParty[a], MON_DATA_STATUS); + battlePokemon.level = GetMonData(&gEnemyParty[a], MON_DATA_LEVEL); + battlePokemon.hp = GetMonData(&gEnemyParty[a], MON_DATA_HP); + battlePokemon.maxHP = GetMonData(&gEnemyParty[a], MON_DATA_MAX_HP); + battlePokemon.attack = GetMonData(&gEnemyParty[a], MON_DATA_ATK); + battlePokemon.defense = GetMonData(&gEnemyParty[a], MON_DATA_DEF); + battlePokemon.speed = GetMonData(&gEnemyParty[a], MON_DATA_SPD); + battlePokemon.spAttack = GetMonData(&gEnemyParty[a], MON_DATA_SPATK); + battlePokemon.spDefense = GetMonData(&gEnemyParty[a], MON_DATA_SPDEF); + battlePokemon.isEgg = GetMonData(&gEnemyParty[a], MON_DATA_IS_EGG); + battlePokemon.altAbility = GetMonData(&gEnemyParty[a], MON_DATA_ALT_ABILITY); + battlePokemon.otId = GetMonData(&gEnemyParty[a], MON_DATA_OT_ID); + GetMonData(&gEnemyParty[a], MON_DATA_NICKNAME, nickname); + StringCopy10(battlePokemon.nickname, nickname); + GetMonData(&gEnemyParty[a], MON_DATA_OT_NAME, battlePokemon.otName); + src = (u8 *)&battlePokemon; + for (size = 0; size < sizeof(battlePokemon); size++) + buffer[size] = src[size]; + break; + case 1: + data16 = GetMonData(&gEnemyParty[a], MON_DATA_SPECIES); + buffer[0] = data16; + buffer[1] = data16 >> 8; + size = 2; + break; + case 2: + data16 = GetMonData(&gEnemyParty[a], MON_DATA_HELD_ITEM); + buffer[0] = data16; + buffer[1] = data16 >> 8; + size = 2; + break; + case 3: + for (size = 0; size < 4; size++) + { + moveData.moves[size] = GetMonData(&gEnemyParty[a], MON_DATA_MOVE1 + size); + moveData.pp[size] = GetMonData(&gEnemyParty[a], MON_DATA_PP1 + size); + } + moveData.ppBonuses = GetMonData(&gEnemyParty[a], MON_DATA_PP_BONUSES); + src = (u8 *)&moveData; + for (size = 0; size < sizeof(moveData); size++) + buffer[size] = src[size]; + break; + case 4: + case 5: + case 6: + case 7: + data16 = GetMonData(&gEnemyParty[a], MON_DATA_MOVE1 + gBattleBufferA[gActiveBank][1] - 4); + buffer[0] = data16; + buffer[1] = data16 >> 8; + size = 2; + break; + case 8: + for (size = 0; size < 4; size++) + buffer[size] = GetMonData(&gEnemyParty[a], MON_DATA_PP1 + size); + buffer[size] = GetMonData(&gEnemyParty[a], MON_DATA_PP_BONUSES); + size++; + break; + case 9: + case 10: + case 11: + case 12: + buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_PP1 + gBattleBufferA[gActiveBank][1] - 9); + size = 1; + break; + case 17: + data32 = GetMonData(&gEnemyParty[a], MON_DATA_OT_ID); + buffer[0] = (data32 & 0x000000FF); + buffer[1] = (data32 & 0x0000FF00) >> 8; + buffer[2] = (data32 & 0x00FF0000) >> 16; + size = 3; + break; + case 18: + data32 = GetMonData(&gEnemyParty[a], MON_DATA_EXP); + buffer[0] = (data32 & 0x000000FF); + buffer[1] = (data32 & 0x0000FF00) >> 8; + buffer[2] = (data32 & 0x00FF0000) >> 16; + size = 3; + break; + case 19: + buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_HP_EV); + size = 1; + break; + case 20: + buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_ATK_EV); + size = 1; + break; + case 21: + buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_DEF_EV); + size = 1; + break; + case 22: + buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_SPD_EV); + size = 1; + break; + case 23: + buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_SPATK_EV); + size = 1; + break; + case 24: + buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_SPDEF_EV); + size = 1; + break; + case 25: + buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_FRIENDSHIP); + size = 1; + break; + case 26: + buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_POKERUS); + size = 1; + break; + case 27: + buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_MET_LOCATION); + size = 1; + break; + case 28: + buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_MET_LEVEL); + size = 1; + break; + case 29: + buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_MET_GAME); + size = 1; + break; + case 30: + buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_POKEBALL); + size = 1; + break; + case 31: + buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_HP_IV); + buffer[1] = GetMonData(&gEnemyParty[a], MON_DATA_ATK_IV); + buffer[2] = GetMonData(&gEnemyParty[a], MON_DATA_DEF_IV); + buffer[3] = GetMonData(&gEnemyParty[a], MON_DATA_SPD_IV); + buffer[4] = GetMonData(&gEnemyParty[a], MON_DATA_SPATK_IV); + buffer[5] = GetMonData(&gEnemyParty[a], MON_DATA_SPDEF_IV); + size = 6; + break; + case 32: + buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_HP_IV); + size = 1; + break; + case 33: + buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_ATK_IV); + size = 1; + break; + case 34: + buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_DEF_IV); + size = 1; + break; + case 35: + buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_SPD_IV); + size = 1; + break; + case 36: + buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_SPATK_IV); + size = 1; + break; + case 37: + buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_SPDEF_IV); + size = 1; + break; + case 38: + data32 = GetMonData(&gEnemyParty[a], MON_DATA_PERSONALITY); + buffer[0] = (data32 & 0x000000FF); + buffer[1] = (data32 & 0x0000FF00) >> 8; + buffer[2] = (data32 & 0x00FF0000) >> 16; + buffer[3] = (data32 & 0xFF000000) >> 24; + size = 4; + break; + case 39: + data16 = GetMonData(&gEnemyParty[a], MON_DATA_CHECKSUM); + buffer[0] = data16; + buffer[1] = data16 >> 8; + size = 2; + break; + case 40: + data32 = GetMonData(&gEnemyParty[a], MON_DATA_STATUS); + buffer[0] = (data32 & 0x000000FF); + buffer[1] = (data32 & 0x0000FF00) >> 8; + buffer[2] = (data32 & 0x00FF0000) >> 16; + buffer[3] = (data32 & 0xFF000000) >> 24; + size = 4; + break; + case 41: + buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_LEVEL); + size = 1; + break; + case 42: + data16 = GetMonData(&gEnemyParty[a], MON_DATA_HP); + buffer[0] = data16; + buffer[1] = data16 >> 8; + size = 2; + break; + case 43: + data16 = GetMonData(&gEnemyParty[a], MON_DATA_MAX_HP); + buffer[0] = data16; + buffer[1] = data16 >> 8; + size = 2; + break; + case 44: + data16 = GetMonData(&gEnemyParty[a], MON_DATA_ATK); + buffer[0] = data16; + buffer[1] = data16 >> 8; + size = 2; + break; + case 45: + data16 = GetMonData(&gEnemyParty[a], MON_DATA_DEF); + buffer[0] = data16; + buffer[1] = data16 >> 8; + size = 2; + break; + case 46: + data16 = GetMonData(&gEnemyParty[a], MON_DATA_SPD); + buffer[0] = data16; + buffer[1] = data16 >> 8; + size = 2; + break; + case 47: + data16 = GetMonData(&gEnemyParty[a], MON_DATA_SPATK); + buffer[0] = data16; + buffer[1] = data16 >> 8; + size = 2; + break; + case 48: + data16 = GetMonData(&gEnemyParty[a], MON_DATA_SPDEF); + buffer[0] = data16; + buffer[1] = data16 >> 8; + size = 2; + break; + case 49: + buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_COOL); + size = 1; + break; + case 50: + buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_BEAUTY); + size = 1; + break; + case 51: + buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_CUTE); + size = 1; + break; + case 52: + buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_SMART); + size = 1; + break; + case 53: + buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_TOUGH); + size = 1; + break; + case 54: + buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_SHEEN); + size = 1; + break; + case 55: + buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_COOL_RIBBON); + size = 1; + break; + case 56: + buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_BEAUTY_RIBBON); + size = 1; + break; + case 57: + buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_CUTE_RIBBON); + size = 1; + break; + case 58: + buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_SMART_RIBBON); + size = 1; + break; + case 59: + buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_TOUGH_RIBBON); + size = 1; + break; + } + return size; +} + +void OpponentHandlecmd1(void) +{ + struct BattlePokemon buffer; + u8 *src = (u8 *)&gEnemyParty[gBattlePartyID[gActiveBank]] + gBattleBufferA[gActiveBank][1]; + u8 *dst = (u8 *)&buffer + gBattleBufferA[gActiveBank][1]; + u8 i; + + for (i = 0; i < gBattleBufferA[gActiveBank][2]; i++) + dst[i] = src[i]; + Emitcmd29(1, gBattleBufferA[gActiveBank][2], dst); + OpponentBufferExecCompleted(); +} + +void OpponentHandleSetAttributes(void) +{ + u8 i; + u8 r4; + + if (gBattleBufferA[gActiveBank][2] == 0) + { + sub_8033E24(gBattlePartyID[gActiveBank]); + } + else + { + r4 = gBattleBufferA[gActiveBank][2]; + for (i = 0; i < 6; i++) + { + if (r4 & 1) + sub_8033E24(i); + r4 >>= 1; + } + } + OpponentBufferExecCompleted(); +} + +void sub_8033E24(u8 a) +{ + struct BattlePokemon *battlePokemon = (struct BattlePokemon *)&gBattleBufferA[gActiveBank][3]; + struct UnknownStruct3 *moveData = (struct UnknownStruct3 *)&gBattleBufferA[gActiveBank][3]; + s32 i; + + switch (gBattleBufferA[gActiveBank][1]) + { + case 0: + { + u8 iv; + + SetMonData(&gEnemyParty[a], MON_DATA_SPECIES, (u8 *)&battlePokemon->species); + SetMonData(&gEnemyParty[a], MON_DATA_HELD_ITEM, (u8 *)&battlePokemon->item); + for (i = 0; i < 4; i++) + { + SetMonData(&gEnemyParty[a], MON_DATA_MOVE1 + i, (u8 *)&battlePokemon->moves[i]); + SetMonData(&gEnemyParty[a], MON_DATA_PP1 + i, (u8 *)&battlePokemon->pp[i]); + } + SetMonData(&gEnemyParty[a], MON_DATA_PP_BONUSES, (u8 *)&battlePokemon->ppBonuses); + SetMonData(&gEnemyParty[a], MON_DATA_FRIENDSHIP, (u8 *)&battlePokemon->friendship); + SetMonData(&gEnemyParty[a], MON_DATA_EXP, (u8 *)&battlePokemon->experience); + iv = battlePokemon->hpIV; + SetMonData(&gEnemyParty[a], MON_DATA_HP_IV, (u8 *)&iv); + iv = battlePokemon->attackIV; + SetMonData(&gEnemyParty[a], MON_DATA_ATK_IV, (u8 *)&iv); + iv = battlePokemon->defenseIV; + SetMonData(&gEnemyParty[a], MON_DATA_DEF_IV, (u8 *)&iv); + iv = battlePokemon->speedIV; + SetMonData(&gEnemyParty[a], MON_DATA_SPD_IV, (u8 *)&iv); + iv = battlePokemon->spAttackIV; + SetMonData(&gEnemyParty[a], MON_DATA_SPATK_IV, (u8 *)&iv); + iv = battlePokemon->spDefenseIV; + SetMonData(&gEnemyParty[a], MON_DATA_SPDEF_IV, (u8 *)&iv); + SetMonData(&gEnemyParty[a], MON_DATA_PERSONALITY, (u8 *)&battlePokemon->personality); + SetMonData(&gEnemyParty[a], MON_DATA_STATUS, (u8 *)&battlePokemon->status1); + SetMonData(&gEnemyParty[a], MON_DATA_LEVEL, (u8 *)&battlePokemon->level); + SetMonData(&gEnemyParty[a], MON_DATA_HP, (u8 *)&battlePokemon->hp); + SetMonData(&gEnemyParty[a], MON_DATA_MAX_HP, (u8 *)&battlePokemon->maxHP); + SetMonData(&gEnemyParty[a], MON_DATA_ATK, (u8 *)&battlePokemon->attack); + SetMonData(&gEnemyParty[a], MON_DATA_DEF, (u8 *)&battlePokemon->defense); + SetMonData(&gEnemyParty[a], MON_DATA_SPD, (u8 *)&battlePokemon->speed); + SetMonData(&gEnemyParty[a], MON_DATA_SPATK, (u8 *)&battlePokemon->spAttack); + SetMonData(&gEnemyParty[a], MON_DATA_SPDEF, (u8 *)&battlePokemon->spDefense); + } + break; + case 1: + SetMonData(&gEnemyParty[a], MON_DATA_SPECIES, &gBattleBufferA[gActiveBank][3]); + break; + case 2: + SetMonData(&gEnemyParty[a], MON_DATA_HELD_ITEM, &gBattleBufferA[gActiveBank][3]); + break; + case 3: + for (i = 0; i < 4; i++) + { + SetMonData(&gEnemyParty[a], MON_DATA_MOVE1 + i, (u8 *)&moveData->moves[i]); + SetMonData(&gEnemyParty[a], MON_DATA_PP1 + i, (u8 *)&moveData->pp[i]); + } + SetMonData(&gEnemyParty[a], MON_DATA_PP_BONUSES, &moveData->ppBonuses); + break; + case 4: + case 5: + case 6: + case 7: + SetMonData(&gEnemyParty[a], MON_DATA_MOVE1 + gBattleBufferA[gActiveBank][1] - 4, &gBattleBufferA[gActiveBank][3]); + break; + case 8: + SetMonData(&gEnemyParty[a], MON_DATA_PP1, &gBattleBufferA[gActiveBank][3]); + SetMonData(&gEnemyParty[a], MON_DATA_PP2, &gBattleBufferA[gActiveBank][4]); + SetMonData(&gEnemyParty[a], MON_DATA_PP3, &gBattleBufferA[gActiveBank][5]); + SetMonData(&gEnemyParty[a], MON_DATA_PP4, &gBattleBufferA[gActiveBank][6]); + SetMonData(&gEnemyParty[a], MON_DATA_PP_BONUSES, &gBattleBufferA[gActiveBank][7]); + break; + case 9: + case 10: + case 11: + case 12: + SetMonData(&gEnemyParty[a], MON_DATA_PP1 + gBattleBufferA[gActiveBank][1] - 9, &gBattleBufferA[gActiveBank][3]); + break; + case 17: + SetMonData(&gEnemyParty[a], MON_DATA_OT_ID, &gBattleBufferA[gActiveBank][3]); + break; + case 18: + SetMonData(&gEnemyParty[a], MON_DATA_EXP, &gBattleBufferA[gActiveBank][3]); + break; + case 19: + SetMonData(&gEnemyParty[a], MON_DATA_HP_EV, &gBattleBufferA[gActiveBank][3]); + break; + case 20: + SetMonData(&gEnemyParty[a], MON_DATA_ATK_EV, &gBattleBufferA[gActiveBank][3]); + break; + case 21: + SetMonData(&gEnemyParty[a], MON_DATA_DEF_EV, &gBattleBufferA[gActiveBank][3]); + break; + case 22: + SetMonData(&gEnemyParty[a], MON_DATA_SPD_EV, &gBattleBufferA[gActiveBank][3]); + break; + case 23: + SetMonData(&gEnemyParty[a], MON_DATA_SPATK_EV, &gBattleBufferA[gActiveBank][3]); + break; + case 24: + SetMonData(&gEnemyParty[a], MON_DATA_SPDEF_EV, &gBattleBufferA[gActiveBank][3]); + break; + case 25: + SetMonData(&gEnemyParty[a], MON_DATA_FRIENDSHIP, &gBattleBufferA[gActiveBank][3]); + break; + case 26: + SetMonData(&gEnemyParty[a], MON_DATA_POKERUS, &gBattleBufferA[gActiveBank][3]); + break; + case 27: + SetMonData(&gEnemyParty[a], MON_DATA_MET_LOCATION, &gBattleBufferA[gActiveBank][3]); + break; + case 28: + SetMonData(&gEnemyParty[a], MON_DATA_MET_LEVEL, &gBattleBufferA[gActiveBank][3]); + break; + case 29: + SetMonData(&gEnemyParty[a], MON_DATA_MET_GAME, &gBattleBufferA[gActiveBank][3]); + break; + case 30: + SetMonData(&gEnemyParty[a], MON_DATA_POKEBALL, &gBattleBufferA[gActiveBank][3]); + break; + case 31: + SetMonData(&gEnemyParty[a], MON_DATA_HP_IV, &gBattleBufferA[gActiveBank][3]); + SetMonData(&gEnemyParty[a], MON_DATA_ATK_IV, &gBattleBufferA[gActiveBank][4]); + SetMonData(&gEnemyParty[a], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBank][5]); + SetMonData(&gEnemyParty[a], MON_DATA_SPD_IV, &gBattleBufferA[gActiveBank][6]); + SetMonData(&gEnemyParty[a], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBank][7]); + SetMonData(&gEnemyParty[a], MON_DATA_SPDEF_IV, &gBattleBufferA[gActiveBank][8]); + break; + case 32: + SetMonData(&gEnemyParty[a], MON_DATA_HP_IV, &gBattleBufferA[gActiveBank][3]); + break; + case 33: + SetMonData(&gEnemyParty[a], MON_DATA_ATK_IV, &gBattleBufferA[gActiveBank][3]); + break; + case 34: + SetMonData(&gEnemyParty[a], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBank][3]); + break; + case 35: + SetMonData(&gEnemyParty[a], MON_DATA_SPD_IV, &gBattleBufferA[gActiveBank][3]); + break; + case 36: + SetMonData(&gEnemyParty[a], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBank][3]); + break; + case 37: + SetMonData(&gEnemyParty[a], MON_DATA_SPDEF_IV, &gBattleBufferA[gActiveBank][3]); + break; + case 38: + SetMonData(&gEnemyParty[a], MON_DATA_PERSONALITY, &gBattleBufferA[gActiveBank][3]); + break; + case 39: + SetMonData(&gEnemyParty[a], MON_DATA_CHECKSUM, &gBattleBufferA[gActiveBank][3]); + break; + case 40: + SetMonData(&gEnemyParty[a], MON_DATA_STATUS, &gBattleBufferA[gActiveBank][3]); + break; + case 41: + SetMonData(&gEnemyParty[a], MON_DATA_LEVEL, &gBattleBufferA[gActiveBank][3]); + break; + case 42: + SetMonData(&gEnemyParty[a], MON_DATA_HP, &gBattleBufferA[gActiveBank][3]); + break; + case 43: + SetMonData(&gEnemyParty[a], MON_DATA_MAX_HP, &gBattleBufferA[gActiveBank][3]); + break; + case 44: + SetMonData(&gEnemyParty[a], MON_DATA_ATK, &gBattleBufferA[gActiveBank][3]); + break; + case 45: + SetMonData(&gEnemyParty[a], MON_DATA_DEF, &gBattleBufferA[gActiveBank][3]); + break; + case 46: + SetMonData(&gEnemyParty[a], MON_DATA_SPD, &gBattleBufferA[gActiveBank][3]); + break; + case 47: + SetMonData(&gEnemyParty[a], MON_DATA_SPATK, &gBattleBufferA[gActiveBank][3]); + break; + case 48: + SetMonData(&gEnemyParty[a], MON_DATA_SPDEF, &gBattleBufferA[gActiveBank][3]); + break; + case 49: + SetMonData(&gEnemyParty[a], MON_DATA_COOL, &gBattleBufferA[gActiveBank][3]); + break; + case 50: + SetMonData(&gEnemyParty[a], MON_DATA_BEAUTY, &gBattleBufferA[gActiveBank][3]); + break; + case 51: + SetMonData(&gEnemyParty[a], MON_DATA_CUTE, &gBattleBufferA[gActiveBank][3]); + break; + case 52: + SetMonData(&gEnemyParty[a], MON_DATA_SMART, &gBattleBufferA[gActiveBank][3]); + break; + case 53: + SetMonData(&gEnemyParty[a], MON_DATA_TOUGH, &gBattleBufferA[gActiveBank][3]); + break; + case 54: + SetMonData(&gEnemyParty[a], MON_DATA_SHEEN, &gBattleBufferA[gActiveBank][3]); + break; + case 55: + SetMonData(&gEnemyParty[a], MON_DATA_COOL_RIBBON, &gBattleBufferA[gActiveBank][3]); + break; + case 56: + SetMonData(&gEnemyParty[a], MON_DATA_BEAUTY_RIBBON, &gBattleBufferA[gActiveBank][3]); + break; + case 57: + SetMonData(&gEnemyParty[a], MON_DATA_CUTE_RIBBON, &gBattleBufferA[gActiveBank][3]); + break; + case 58: + SetMonData(&gEnemyParty[a], MON_DATA_SMART_RIBBON, &gBattleBufferA[gActiveBank][3]); + break; + case 59: + SetMonData(&gEnemyParty[a], MON_DATA_TOUGH_RIBBON, &gBattleBufferA[gActiveBank][3]); + break; + } +} + +void OpponentHandlecmd3(void) +{ + u8 *dst; + u8 i; + + dst = (u8 *)&gEnemyParty[gBattlePartyID[gActiveBank]] + gBattleBufferA[gActiveBank][1]; + for (i = 0; i < gBattleBufferA[gActiveBank][2]; i++) + dst[i] = gBattleBufferA[gActiveBank][3 + i]; + OpponentBufferExecCompleted(); +} + +void OpponentHandleLoadPokeSprite(void) +{ + u16 species = GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES); + + BattleLoadOpponentMonSprite(&gEnemyParty[gBattlePartyID[gActiveBank]], gActiveBank); + GetMonSpriteTemplate_803C56C(species, GetBankIdentity(gActiveBank)); + gObjectBankIDs[gActiveBank] = CreateSprite( + &gUnknown_02024E8C, + sub_8077ABC(gActiveBank, 2), + sub_8077F68(gActiveBank), + sub_8079E90(gActiveBank)); + gSprites[gObjectBankIDs[gActiveBank]].pos2.x = -240; + gSprites[gObjectBankIDs[gActiveBank]].data0 = gActiveBank; + gSprites[gObjectBankIDs[gActiveBank]].data2 = species; + gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = gActiveBank; + StartSpriteAnim(&gSprites[gObjectBankIDs[gActiveBank]], gBattleMonForms[gActiveBank]); + sub_8032984(gActiveBank, GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES)); + gBattleBankFunc[gActiveBank] = sub_8033018; +} + +void OpponentHandleSendOutPoke(void) +{ + gBattlePartyID[gActiveBank] = gBattleBufferA[gActiveBank][1]; + + sub_803495C(gActiveBank, gBattleBufferA[gActiveBank][2]); + gBattleBankFunc[gActiveBank] = sub_80333D4; +} + +void sub_803495C(u8 a, u8 b) +{ + u16 species; + + sub_8032AA8(a, b); + gBattlePartyID[a] = gBattleBufferA[a][1]; + species = GetMonData(&gEnemyParty[gBattlePartyID[a]], MON_DATA_SPECIES); + gUnknown_0300434C[a] = CreateInvisibleSpriteWithCallback(sub_80312F0); + BattleLoadOpponentMonSprite(&gEnemyParty[gBattlePartyID[a]], a); + GetMonSpriteTemplate_803C56C(species, GetBankIdentity(a)); + gObjectBankIDs[a] = CreateSprite( + &gUnknown_02024E8C, + sub_8077ABC(a, 2), + sub_8077F68(a), + sub_8079E90(a)); + gSprites[gObjectBankIDs[a]].data0 = a; + gSprites[gObjectBankIDs[a]].data2 = species; + gSprites[gUnknown_0300434C[a]].data1 = gObjectBankIDs[a]; + gSprites[gObjectBankIDs[a]].oam.paletteNum = a; + StartSpriteAnim(&gSprites[gObjectBankIDs[a]], gBattleMonForms[a]); + gSprites[gObjectBankIDs[a]].invisible = TRUE; + gSprites[gObjectBankIDs[a]].callback = SpriteCallbackDummy; + gSprites[gUnknown_0300434C[a]].data0 = sub_8046400(0, 0xFE); +} + +void OpponentHandleReturnPokeToBall(void) +{ + if (gBattleBufferA[gActiveBank][1] == 0) + { + ewram17810[gActiveBank].unk4 = 0; + gBattleBankFunc[gActiveBank] = sub_8034B74; + } + else + { + FreeSpriteOamMatrix(&gSprites[gObjectBankIDs[gActiveBank]]); + DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]); + sub_8032A08(gActiveBank); + sub_8043DB0(gHealthboxIDs[gActiveBank]); + OpponentBufferExecCompleted(); + } +} + +void sub_8034B74(void) +{ + switch (ewram17810[gActiveBank].unk4) + { + case 0: + if (ewram17800[gActiveBank].substituteSprite) + move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5); + ewram17810[gActiveBank].unk4 = 1; + break; + case 1: + if (!ewram17810[gActiveBank].unk0_6) + { + ewram17810[gActiveBank].unk4 = 0; + move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 2); + gBattleBankFunc[gActiveBank] = sub_8033160; + } + break; + } +} + +void OpponentHandleTrainerThrow(void) +{ + u32 trainerPicIndex; + + if (gTrainerBattleOpponent == 0x400) + trainerPicIndex = GetSecretBaseTrainerPicIndex(); + else if (gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER) + trainerPicIndex = get_trainer_class_pic_index(); + else if (gBattleTypeFlags & BATTLE_TYPE_EREADER_TRAINER) + trainerPicIndex = sub_8135FBC(); + else + trainerPicIndex = gTrainers[gTrainerBattleOpponent].trainerPic; + + sub_8031A6C(trainerPicIndex, gActiveBank); + GetMonSpriteTemplate_803C5A0(trainerPicIndex, GetBankIdentity(gActiveBank)); + gObjectBankIDs[gActiveBank] = CreateSprite( + &gUnknown_02024E8C, + 0xB0, + 40 + 4 * (8 - gTrainerFrontPicCoords[trainerPicIndex].coords), + sub_8079E90(gActiveBank)); + gSprites[gObjectBankIDs[gActiveBank]].pos2.x = -240; + gSprites[gObjectBankIDs[gActiveBank]].data0 = 2; + gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[trainerPicIndex].tag); + gSprites[gObjectBankIDs[gActiveBank]].data5 = gSprites[gObjectBankIDs[gActiveBank]].oam.tileNum; + gSprites[gObjectBankIDs[gActiveBank]].oam.tileNum = GetSpriteTileStartByTag(gTrainerFrontPicTable[trainerPicIndex].tag); + gSprites[gObjectBankIDs[gActiveBank]].oam.affineParam = trainerPicIndex; + gSprites[gObjectBankIDs[gActiveBank]].callback = sub_80313A0; + gBattleBankFunc[gActiveBank] = sub_8032B4C; +} + +void OpponentHandleTrainerSlide(void) +{ + u32 trainerPicIndex; + + if (gTrainerBattleOpponent == 0x400) + trainerPicIndex = GetSecretBaseTrainerPicIndex(); + else if (gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER) + trainerPicIndex = get_trainer_class_pic_index(); + else if (gBattleTypeFlags & BATTLE_TYPE_EREADER_TRAINER) + trainerPicIndex = sub_8135FBC(); + else + trainerPicIndex = gTrainers[gTrainerBattleOpponent].trainerPic; + + sub_8031A6C(trainerPicIndex, gActiveBank); + GetMonSpriteTemplate_803C5A0(trainerPicIndex, GetBankIdentity(gActiveBank)); + gObjectBankIDs[gActiveBank] = CreateSprite( + &gUnknown_02024E8C, + 0xB0, + 40 + 4 * (8 - gTrainerFrontPicCoords[trainerPicIndex].coords), + 0x1E); + gSprites[gObjectBankIDs[gActiveBank]].pos2.x = 96; + gSprites[gObjectBankIDs[gActiveBank]].pos1.x += 32; + gSprites[gObjectBankIDs[gActiveBank]].data0 = -2; + gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[trainerPicIndex].tag); + gSprites[gObjectBankIDs[gActiveBank]].data5 = gSprites[gObjectBankIDs[gActiveBank]].oam.tileNum; + gSprites[gObjectBankIDs[gActiveBank]].oam.tileNum = GetSpriteTileStartByTag(gTrainerFrontPicTable[trainerPicIndex].tag); + gSprites[gObjectBankIDs[gActiveBank]].oam.affineParam = trainerPicIndex; + gSprites[gObjectBankIDs[gActiveBank]].callback = sub_80313A0; + gBattleBankFunc[gActiveBank] = sub_8032B84; +} + +void OpponentHandleTrainerSlideBack(void) +{ + oamt_add_pos2_onto_pos1(&gSprites[gObjectBankIDs[gActiveBank]]); + gSprites[gObjectBankIDs[gActiveBank]].data0 = 35; + gSprites[gObjectBankIDs[gActiveBank]].data2 = 280; + gSprites[gObjectBankIDs[gActiveBank]].data4 = gSprites[gObjectBankIDs[gActiveBank]].pos1.y; + gSprites[gObjectBankIDs[gActiveBank]].callback = sub_8078B34; + StoreSpriteCallbackInData6(&gSprites[gObjectBankIDs[gActiveBank]], SpriteCallbackDummy); + gBattleBankFunc[gActiveBank] = sub_8032BBC; +} + +void OpponentHandlecmd10(void) +{ + if (ewram17810[gActiveBank].unk4 == 0) + { + if (ewram17800[gActiveBank].substituteSprite) + move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5); + ewram17810[gActiveBank].unk4++; + } + else if (!ewram17810[gActiveBank].unk0_6) + { + ewram17810[gActiveBank].unk4 = 0; + PlaySE12WithPanning(SE_POKE_DEAD, 63); + gSprites[gObjectBankIDs[gActiveBank]].callback = sub_8010384; + gBattleBankFunc[gActiveBank] = sub_803311C; + } +} + +void OpponentHandlecmd11(void) +{ + OpponentBufferExecCompleted(); +} + +void OpponentHandlecmd12(void) +{ + OpponentBufferExecCompleted(); +} + +void OpponentHandleBallThrow(void) +{ + OpponentBufferExecCompleted(); +} + +void OpponentHandlePuase(void) +{ + OpponentBufferExecCompleted(); +} + +void OpponentHandleMoveAnimation(void) +{ + if (!mplay_80342A4(gActiveBank)) + { + u32 r0 = gBattleBufferA[gActiveBank][1] + | (gBattleBufferA[gActiveBank][2] << 8); + + gUnknown_0202F7C4 = gBattleBufferA[gActiveBank][3]; + gMovePowerMoveAnim = gBattleBufferA[gActiveBank][4] + | (gBattleBufferA[gActiveBank][5] << 8); + gMoveDmgMoveAnim = gBattleBufferA[gActiveBank][6] + | (gBattleBufferA[gActiveBank][7] << 8) + | (gBattleBufferA[gActiveBank][8] << 16) + | (gBattleBufferA[gActiveBank][9] << 24); + gHappinessMoveAnim = gBattleBufferA[gActiveBank][10]; + gWeatherMoveAnim = gBattleBufferA[gActiveBank][12] + | (gBattleBufferA[gActiveBank][13] << 8); + gDisableStructMoveAnim = (u32 *)&gBattleBufferA[gActiveBank][16]; + gPID_perBank[gActiveBank] = *gDisableStructMoveAnim; + + // Dead code. sub_8031720 always returns 0. + if (sub_8031720(r0, gUnknown_0202F7C4) != 0) + { + OpponentBufferExecCompleted(); + } + else + { + ewram17810[gActiveBank].unk4 = 0; + gBattleBankFunc[gActiveBank] = sub_8035238; + } + } +} + +void sub_8035238(void) +{ + u16 r4 = gBattleBufferA[gActiveBank][1] + | (gBattleBufferA[gActiveBank][2] << 8); + u8 r7 = gBattleBufferA[gActiveBank][11]; + + switch (ewram17810[gActiveBank].unk4) + { + case 0: + if (ewram17800[gActiveBank].substituteSprite && !ewram17800[gActiveBank].unk0_3) + { + ewram17800[gActiveBank].unk0_3 = 1; + move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5); + } + ewram17810[gActiveBank].unk4 = 1; + break; + case 1: + if (!ewram17810[gActiveBank].unk0_6) + { + sub_80326EC(0); + ExecuteMoveAnim(r4); + ewram17810[gActiveBank].unk4 = 2; + } + break; + case 2: + gAnimScriptCallback(); + if (!gAnimScriptActive) + { + sub_80326EC(1); + if ((ewram17800[gActiveBank].substituteSprite) && r7 <= 1) + { + move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 6); + ewram17800[gActiveBank].unk0_3 = 0; + } + ewram17810[gActiveBank].unk4 = 3; + } + break; + case 3: + if (!ewram17810[gActiveBank].unk0_6) + { + sub_8031F24(); + sub_80324BC( + gActiveBank, + gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8)); + ewram17810[gActiveBank].unk4 = 0; + OpponentBufferExecCompleted(); + } + break; + } +} + +void OpponentHandlePrintString(void) +{ + gUnknown_030042A4 = 0; + gUnknown_030042A0 = 0; + BufferStringBattle(*(u16 *)&gBattleBufferA[gActiveBank][2]); + sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); + gBattleBankFunc[gActiveBank] = sub_80331D0; +} + +void OpponentHandlePrintStringPlayerOnly(void) +{ + OpponentBufferExecCompleted(); +} + +void OpponentHandlecmd18(void) +{ + sub_8036B0C(); + OpponentBufferExecCompleted(); +} + +void OpponentHandlecmd19(void) +{ + OpponentBufferExecCompleted(); +} + +#ifdef NONMATCHING +void OpponentHandlecmd20(void) +{ + u16 r4; + // Needed to match closer + struct {u16 moves[4];} *r5 = (void *)&gBattleBufferA[gActiveBank][4]; + + if (gBattleTypeFlags & 0x498) + { + BattleAI_SetupAIData(); + r4 = BattleAI_GetAIActionToUse(); + switch (r4) + { + case 5: + Emitcmd33(1, 4, 0); + break; + case 4: + Emitcmd33(1, 3, 0); + break; + default: + if (gBattleMoves[r5->moves[r4]].target & 0x12) + gBankTarget = gActiveBank; + if (gBattleMoves[r5->moves[r4]].target & 8) + { + gBankTarget = GetBankByPlayerAI(0); + if (gAbsentBankFlags & gBitTable[gBankTarget]) + gBankTarget = GetBankByPlayerAI(2); + } + r4 |= gBankTarget << 8; + Emitcmd33(1, 10, r4); + break; + } + OpponentBufferExecCompleted(); + } + else + { + u16 r2; + + do + { + // Can't for the life of me get this to match. + r4 = Random() % 4; + r2 = r5->moves[r4]; + } while (r2 == 0); + + if (gBattleMoves[r2].target & 0x12) + { + r4 |= gActiveBank << 8; + Emitcmd33(1, 10, r4); + } + else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + { + u16 r2 = GetBankByPlayerAI(Random() & 2) << 8; + + Emitcmd33(1, 10, r4 | r2); + } + else + { + u16 r2 = GetBankByPlayerAI(0) << 8; + + Emitcmd33(1, 10, r4 | r2); + } + OpponentBufferExecCompleted(); + } +} +#else +__attribute__((naked)) +void OpponentHandlecmd20(void) +{ + asm(".syntax unified\n\ + push {r4-r6,lr}\n\ + ldr r6, _0803545C @ =gActiveBank\n\ + ldrb r0, [r6]\n\ + lsls r0, 9\n\ + ldr r1, _08035460 @ =gUnknown_02023A64\n\ + adds r5, r0, r1\n\ + ldr r0, _08035464 @ =gBattleTypeFlags\n\ + ldrh r1, [r0]\n\ + movs r0, 0x93\n\ + lsls r0, 3\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _080354F8\n\ + bl BattleAI_SetupAIData\n\ + bl BattleAI_GetAIActionToUse\n\ + lsls r0, 24\n\ + lsrs r4, r0, 24\n\ + cmp r4, 0x4\n\ + beq _08035468\n\ + cmp r4, 0x5\n\ + bne _08035474\n\ + movs r0, 0x1\n\ + movs r1, 0x4\n\ + b _0803546C\n\ + .align 2, 0\n\ +_0803545C: .4byte gActiveBank\n\ +_08035460: .4byte gUnknown_02023A64\n\ +_08035464: .4byte gBattleTypeFlags\n\ +_08035468:\n\ + movs r0, 0x1\n\ + movs r1, 0x3\n\ +_0803546C:\n\ + movs r2, 0\n\ + bl Emitcmd33\n\ + b _080354E0\n\ +_08035474:\n\ + ldr r3, _080354E8 @ =gBattleMoves\n\ + lsls r0, r4, 1\n\ + adds r2, r5, r0\n\ + ldrh r1, [r2]\n\ + lsls r0, r1, 1\n\ + adds r0, r1\n\ + lsls r0, 2\n\ + adds r0, r3\n\ + ldrb r1, [r0, 0x6]\n\ + movs r0, 0x12\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _08035494\n\ + ldr r1, _080354EC @ =gBankTarget\n\ + ldrb r0, [r6]\n\ + strb r0, [r1]\n\ +_08035494:\n\ + ldrh r1, [r2]\n\ + lsls r0, r1, 1\n\ + adds r0, r1\n\ + lsls r0, 2\n\ + adds r0, r3\n\ + ldrb r1, [r0, 0x6]\n\ + movs r0, 0x8\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _080354CE\n\ + movs r0, 0\n\ + bl GetBankByPlayerAI\n\ + ldr r5, _080354EC @ =gBankTarget\n\ + strb r0, [r5]\n\ + ldr r0, _080354F0 @ =gAbsentBankFlags\n\ + ldrb r1, [r0]\n\ + ldr r2, _080354F4 @ =gBitTable\n\ + ldrb r0, [r5]\n\ + lsls r0, 2\n\ + adds r0, r2\n\ + ldr r0, [r0]\n\ + ands r1, r0\n\ + cmp r1, 0\n\ + beq _080354CE\n\ + movs r0, 0x2\n\ + bl GetBankByPlayerAI\n\ + strb r0, [r5]\n\ +_080354CE:\n\ + ldr r0, _080354EC @ =gBankTarget\n\ + ldrb r0, [r0]\n\ + lsls r0, 8\n\ + orrs r4, r0\n\ + movs r0, 0x1\n\ + movs r1, 0xA\n\ + adds r2, r4, 0\n\ + bl Emitcmd33\n\ +_080354E0:\n\ + bl OpponentBufferExecCompleted\n\ + b _0803558A\n\ + .align 2, 0\n\ +_080354E8: .4byte gBattleMoves\n\ +_080354EC: .4byte gBankTarget\n\ +_080354F0: .4byte gAbsentBankFlags\n\ +_080354F4: .4byte gBitTable\n\ +_080354F8:\n\ + movs r6, 0x3\n\ +_080354FA:\n\ + bl Random\n\ + adds r4, r0, 0\n\ + ands r4, r6\n\ + lsls r0, r4, 1\n\ + adds r0, r5, r0\n\ + ldrh r2, [r0]\n\ + cmp r2, 0\n\ + beq _080354FA\n\ + ldr r1, _08035534 @ =gBattleMoves\n\ + lsls r0, r2, 1\n\ + adds r0, r2\n\ + lsls r0, 2\n\ + adds r0, r1\n\ + ldrb r1, [r0, 0x6]\n\ + movs r0, 0x12\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _0803553C\n\ + ldr r0, _08035538 @ =gActiveBank\n\ + ldrb r0, [r0]\n\ + lsls r0, 8\n\ + orrs r4, r0\n\ + movs r0, 0x1\n\ + movs r1, 0xA\n\ + adds r2, r4, 0\n\ + bl Emitcmd33\n\ + b _08035586\n\ + .align 2, 0\n\ +_08035534: .4byte gBattleMoves\n\ +_08035538: .4byte gActiveBank\n\ +_0803553C:\n\ + ldr r0, _0803556C @ =gBattleTypeFlags\n\ + ldrh r1, [r0]\n\ + movs r0, 0x1\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _08035570\n\ + bl Random\n\ + movs r1, 0x2\n\ + ands r1, r0\n\ + lsls r1, 24\n\ + lsrs r1, 24\n\ + adds r0, r1, 0\n\ + bl GetBankByPlayerAI\n\ + adds r2, r0, 0\n\ + lsls r2, 24\n\ + lsrs r2, 16\n\ + orrs r2, r4\n\ + movs r0, 0x1\n\ + movs r1, 0xA\n\ + bl Emitcmd33\n\ + b _08035586\n\ + .align 2, 0\n\ +_0803556C: .4byte gBattleTypeFlags\n\ +_08035570:\n\ + movs r0, 0\n\ + bl GetBankByPlayerAI\n\ + adds r2, r0, 0\n\ + lsls r2, 24\n\ + lsrs r2, 16\n\ + orrs r2, r4\n\ + movs r0, 0x1\n\ + movs r1, 0xA\n\ + bl Emitcmd33\n\ +_08035586:\n\ + bl OpponentBufferExecCompleted\n\ +_0803558A:\n\ + pop {r4-r6}\n\ + pop {r0}\n\ + bx r0\n\ + .syntax divided\n"); +} +#endif + +void OpponentHandleOpenBag(void) +{ + // What is this? + Emitcmd35(1, ewram[0x160D4 + gActiveBank / 2 * 2]); + OpponentBufferExecCompleted(); +} + +void OpponentHandlecmd22(void) +{ + s32 r4; + + if (ewram[0x160C8 + GetBankIdentity(gActiveBank) / 2] == 6) + { + u8 r6; + u8 r5; + + r4 = sub_8036CD4(); + if (r4 == 6) + { + if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE)) + { + r5 = GetBankByPlayerAI(1); + r6 = r5; + } + else + { + r6 = GetBankByPlayerAI(1); + r5 = GetBankByPlayerAI(3); + } + for (r4 = 0; r4 < 6; r4++) + { + if (GetMonData(&gEnemyParty[r4], MON_DATA_HP) != 0 + && r4 != gBattlePartyID[r6] + && r4 != gBattlePartyID[r5]) + break; + } + } + } + else + { + r4 = ewram[0x160C8 + GetBankIdentity(gActiveBank) / 2]; + ewram[0x160C8 + GetBankIdentity(gActiveBank) / 2] = 6; + } + ewram[0x16068 + gActiveBank] = r4; + Emitcmd34(1, r4, 0); + OpponentBufferExecCompleted(); +} + +void OpponentHandlecmd23(void) +{ + OpponentBufferExecCompleted(); +} + +void OpponentHandleHealthBarUpdate(void) +{ + s16 r7; + + load_gfxc_health_bar(0); + r7 = (gBattleBufferA[gActiveBank][3] << 8) | gBattleBufferA[gActiveBank][2]; + if (r7 != 0x7FFF) + { + u32 maxHP = GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_MAX_HP); + u32 hp = GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_HP); + + sub_8043D84(gActiveBank, gHealthboxIDs[gActiveBank], maxHP, hp, r7); + } + else + { + u32 maxHP = GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_MAX_HP); + + sub_8043D84(gActiveBank, gHealthboxIDs[gActiveBank], maxHP, 0, r7); + } + gBattleBankFunc[gActiveBank] = sub_80330C8; +} + +void OpponentHandleExpBarUpdate(void) +{ + OpponentBufferExecCompleted(); +} + +void OpponentHandleStatusIconUpdate(void) +{ + if (mplay_80342A4(gActiveBank) == 0) + { + sub_8045A5C(gHealthboxIDs[gActiveBank], &gEnemyParty[gBattlePartyID[gActiveBank]], 9); + ewram17810[gActiveBank].unk0_4 = 0; + gBattleBankFunc[gActiveBank] = sub_8033494; + } +} + +void OpponentHandleStatusAnimation(void) +{ + if (mplay_80342A4(gActiveBank) == 0) + { + move_anim_start_t2_for_situation( + gBattleBufferA[gActiveBank][1], + gBattleBufferA[gActiveBank][2] + | (gBattleBufferA[gActiveBank][3] << 8) + | (gBattleBufferA[gActiveBank][4] << 16) + | (gBattleBufferA[gActiveBank][5] << 24)); + gBattleBankFunc[gActiveBank] = sub_8033494; + } +} + +void OpponentHandleStatusXor(void) +{ + OpponentBufferExecCompleted(); +} + +void OpponentHandlecmd29(void) +{ + OpponentBufferExecCompleted(); +} + +void OpponentHandleDMATransfer(void) +{ + OpponentBufferExecCompleted(); +} + +void OpponentHandlecmd31(void) +{ + OpponentBufferExecCompleted(); +} + +void OpponentHandlecmd32(void) +{ + OpponentBufferExecCompleted(); +} + +void OpponentHandlecmd33(void) +{ + OpponentBufferExecCompleted(); +} + +void OpponentHandlecmd34(void) +{ + OpponentBufferExecCompleted(); +} + +void OpponentHandlecmd35(void) +{ + OpponentBufferExecCompleted(); +} + +void OpponentHandlecmd36(void) +{ + OpponentBufferExecCompleted(); +} + +void OpponentHandlecmd37(void) +{ + gUnknown_020238C8.unk0_0 = 0; + OpponentBufferExecCompleted(); +} + +void OpponentHandlecmd38(void) +{ + gUnknown_020238C8.unk0_0 = gBattleBufferA[gActiveBank][1]; + OpponentBufferExecCompleted(); +} + +void OpponentHandlecmd39(void) +{ + gUnknown_020238C8.unk0_7 = 0; + OpponentBufferExecCompleted(); +} + +void OpponentHandlecmd40(void) +{ + gUnknown_020238C8.unk0_7 ^= 1; + OpponentBufferExecCompleted(); +} + +void OpponentHandleHitAnimation(void) +{ + if (gSprites[gObjectBankIDs[gActiveBank]].invisible == TRUE) + { + OpponentBufferExecCompleted(); + } + else + { + gDoingBattleAnim = TRUE; + gSprites[gObjectBankIDs[gActiveBank]].data1 = 0; + sub_8047858(gActiveBank); + gBattleBankFunc[gActiveBank] = bx_blink_t7; + } +} + +void OpponentHandlecmd42(void) +{ + OpponentBufferExecCompleted(); +} + +void OpponentHandleEffectivenessSound(void) +{ + s8 pan; + + if (GetBankSide(gActiveBank) == 0) + pan = -64; + else + pan = 63; + PlaySE12WithPanning(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8), pan); + OpponentBufferExecCompleted(); +} + +void OpponentHandlecmd44(void) +{ + PlayFanfare(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8)); + OpponentBufferExecCompleted(); +} + +void OpponentHandleFaintingCry(void) +{ + PlayCry3( + GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES), + 25, 5); + OpponentBufferExecCompleted(); +} + +void OpponentHandleIntroSlide(void) +{ + sub_80E43C0(gBattleBufferA[gActiveBank][1]); + gUnknown_02024DE8 |= 1; + OpponentBufferExecCompleted(); +} + +void OpponentHandleTrainerBallThrow(void) +{ + u8 taskId; + + oamt_add_pos2_onto_pos1(&gSprites[gObjectBankIDs[gActiveBank]]); + gSprites[gObjectBankIDs[gActiveBank]].data0 = 35; + gSprites[gObjectBankIDs[gActiveBank]].data2 = 280; + gSprites[gObjectBankIDs[gActiveBank]].data4 = gSprites[gObjectBankIDs[gActiveBank]].pos1.y; + gSprites[gObjectBankIDs[gActiveBank]].callback = sub_8078B34; + StoreSpriteCallbackInData6(&gSprites[gObjectBankIDs[gActiveBank]], sub_8035C10); + taskId = CreateTask(sub_8035C44, 5); + gTasks[taskId].data[0] = gActiveBank; + if (ewram17810[gActiveBank].unk0_0) + gTasks[gUnknown_02024E68[gActiveBank]].func = sub_8044CA0; + ewram17840.unk9_0 = 1; + gBattleBankFunc[gActiveBank] = nullsub_45; +} + +void sub_8035C10(struct Sprite *sprite) +{ + sub_8031B74(sprite->oam.affineParam); + sprite->oam.tileNum = sprite->data5; + FreeSpriteOamMatrix(sprite); + DestroySprite(sprite); +} + +void sub_8035C44(u8 taskId) +{ + u8 r9; + + r9 = gActiveBank; + gActiveBank = gTasks[taskId].data[0]; + if (!IsDoubleBattle() || (gBattleTypeFlags & BATTLE_TYPE_MULTI)) + { + gBattleBufferA[gActiveBank][1] = gBattlePartyID[gActiveBank]; + sub_803495C(gActiveBank, 0); + } + else + { + gBattleBufferA[gActiveBank][1] = gBattlePartyID[gActiveBank]; + sub_803495C(gActiveBank, 0); + gActiveBank ^= 2; + gBattleBufferA[gActiveBank][1] = gBattlePartyID[gActiveBank]; + sub_803495C(gActiveBank, 0); + gActiveBank ^= 2; + } + gBattleBankFunc[gActiveBank] = sub_8032E2C; + gActiveBank = r9; + DestroyTask(taskId); +} + +void OpponentHandlecmd48(void) +{ + if (gBattleBufferA[gActiveBank][1] != 0 && GetBankSide(gActiveBank) == 0) + { + OpponentBufferExecCompleted(); + return; + } + + ewram17810[gActiveBank].unk0_0 = 1; + if (gBattleBufferA[gActiveBank][2] != 0) + { + if (ewram17810[gActiveBank].unk1_1 < 2) + { + ewram17810[gActiveBank].unk1_1++; + return; + } + else + { + ewram17810[gActiveBank].unk1_1 = 0; + } + } + gUnknown_02024E68[gActiveBank] = sub_8044804( + gActiveBank, + (struct BattleInterfaceStruct2 *)&gBattleBufferA[gActiveBank][4], + gBattleBufferA[gActiveBank][1], + gBattleBufferA[gActiveBank][2]); + ewram17810[gActiveBank].unk5 = 0; + if (gBattleBufferA[gActiveBank][2] != 0) + ewram17810[gActiveBank].unk5 = 0x5D; + gBattleBankFunc[gActiveBank] = sub_8035E2C; +} + +void sub_8035E2C(void) +{ + if (ewram17810[gActiveBank].unk5++ >= 93) + { + ewram17810[gActiveBank].unk5 = 0; + OpponentBufferExecCompleted(); + } +} + +void OpponentHandlecmd49(void) +{ + if (ewram17810[gActiveBank].unk0_0) + gTasks[gUnknown_02024E68[gActiveBank]].func = sub_8044CA0; + OpponentBufferExecCompleted(); +} + +void OpponentHandlecmd50(void) +{ + OpponentBufferExecCompleted(); +} + +void OpponentHandleSpriteInvisibility(void) +{ + if (AnimBankSpriteExists(gActiveBank) != 0) + { + gSprites[gObjectBankIDs[gActiveBank]].invisible = gBattleBufferA[gActiveBank][1]; + sub_8031F88(gActiveBank); + } + OpponentBufferExecCompleted(); +} + +void OpponentHandleBattleAnimation(void) +{ + if (mplay_80342A4(gActiveBank) == 0) + { + u8 r3 = gBattleBufferA[gActiveBank][1]; + u16 r4 = gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8); + + if (move_anim_start_t3(gActiveBank, gActiveBank, gActiveBank, r3, r4) != 0) + OpponentBufferExecCompleted(); + else + gBattleBankFunc[gActiveBank] = sub_80334C0; + } +} + +void OpponentHandleLinkStandbyMsg(void) +{ + OpponentBufferExecCompleted(); +} + +void OpponentHandleResetActionMoveSelection(void) +{ + OpponentBufferExecCompleted(); +} + +void OpponentHandlecmd55(void) +{ + if ((gBattleTypeFlags & BATTLE_TYPE_LINK) && !(gBattleTypeFlags & BATTLE_TYPE_WILD)) + { + gMain.inBattle = FALSE; + gMain.callback1 = gPreBattleCallback1; + SetMainCallback2(gMain.savedCallback); + } + OpponentBufferExecCompleted(); +} + +void OpponentHandlecmd56(void) +{ +} diff --git a/src/battle/battle_controller_player.c b/src/battle/battle_controller_player.c new file mode 100644 index 000000000..53b596c5e --- /dev/null +++ b/src/battle/battle_controller_player.c @@ -0,0 +1,3066 @@ +#include "global.h" +#include "data2.h" +#include "battle.h" +#include "battle_interface.h" +#include "battle_message.h" +#include "item.h" +#include "items.h" +#include "link.h" +#include "m4a.h" +#include "main.h" +#include "menu_cursor.h" +#include "moves.h" +#include "palette.h" +#include "pokemon.h" +#include "rom3.h" +#include "songs.h" +#include "sound.h" +#include "string_util.h" +#include "task.h" +#include "text.h" +#include "util.h" + +//Possibly PokemonSubstruct1 +struct UnknownStruct3 +{ + u16 moves[4]; + u8 pp[4]; + u8 ppBonuses; +}; + +#if ENGLISH +#define SUB_803037C_TILE_DATA_OFFSET 440 +#elif GERMAN +#define SUB_803037C_TILE_DATA_OFFSET 444 +#endif + +extern u16 gUnknown_030042A4; +extern u16 gUnknown_030042A0; + +extern struct Window gUnknown_03004210; + +extern void (*gBattleBankFunc[])(void); + +extern u8 gActiveBank; +extern u8 gActionSelectionCursor[]; +extern u8 gDisplayedStringBattle[]; +extern u8 gMoveSelectionCursor[]; +extern u8 gBattleBufferA[][0x200]; +extern u8 gBankInMenu; +extern u16 gBattlePartyID[]; +extern u8 gHealthboxIDs[]; +extern u8 gDoingBattleAnim; +extern u8 gObjectBankIDs[]; +extern u16 gBattleTypeFlags; +extern u8 gBattleOutcome; +extern void (*gAnimScriptCallback)(void); +extern bool8 gAnimScriptActive; +extern u16 gMovePowerMoveAnim; +extern u32 gMoveDmgMoveAnim; +extern u8 gHappinessMoveAnim; +extern u16 gWeatherMoveAnim; +extern u32 *gDisableStructMoveAnim; +extern u32 gPID_perBank[]; +extern u8 gBattleMonForms[]; +extern u16 gUnknown_02024DE8; +extern u8 gUnknown_02024E68[]; +extern struct SpriteTemplate gUnknown_02024E8C; +extern u8 gUnknown_0202F7C4; +extern u8 gUnknown_02038470[]; +extern u16 gUnknown_030041B0; +extern u16 gUnknown_030041B4; +extern u16 gUnknown_030041B8; +extern u16 gUnknown_03004280; +extern u16 gUnknown_03004288; +extern u16 gUnknown_030042A4; +extern u16 gUnknown_030042C0; +extern u8 gUnknown_03004344; +extern u8 gUnknown_0300434C[]; + +extern const u8 gUnknown_08400CA8[]; +extern const u8 gUnknown_08400CF3[]; +extern const u8 gUnknown_08400D38[]; + +extern void sub_802C68C(void); +extern void sub_802E1B0(void); +extern void sub_802E220(); +extern void sub_802E2D4(); +extern void sub_802E004(void); +extern void sub_802DF30(void); +extern void BattleMusicStop(void); +extern void PlayerBufferExecCompleted(void); +extern void bx_t1_healthbar_update(void); +extern void nullsub_91(void); +extern void sub_802D924(u8); +extern void sub_802E434(void); +extern bool8 mplay_80342A4(u8); +extern void move_anim_start_t2_for_situation(); +extern void bx_blink_t1(void); +extern void sub_8047858(); +extern u8 GetBankSide(u8); +extern void sub_80E43C0(); +extern void oamt_add_pos2_onto_pos1(); +extern void sub_8078B34(struct Sprite *); +extern void StoreSpriteCallbackInData6(); +extern void BattleLoadPlayerMonSprite(); +extern bool8 IsDoubleBattle(void); +extern void sub_802D500(void); +extern bool8 AnimBankSpriteExists(u8); +extern bool8 move_anim_start_t3(); +extern void sub_802E460(void); +extern void b_link_standby_message(void); +extern void sub_802D18C(void); +extern void sub_802DF18(void); +extern void BufferStringBattle(); +extern void sub_80326EC(); +extern void ExecuteMoveAnim(); +extern void sub_8031F24(void); +extern void sub_80324BC(); +extern u8 sub_8031720(); +extern void bx_wait_t1(void); +extern u8 GetBankByPlayerAI(u8); +extern void sub_802DE10(void); +extern void sub_80105EC(struct Sprite *); +extern void sub_802D274(void); +extern void sub_802D23C(void); +extern u8 GetBankIdentity(u8); +extern void LoadPlayerTrainerBankSprite(); +extern void sub_80313A0(struct Sprite *); +extern void sub_802D204(void); +extern u8 sub_8079E90(); +extern void sub_802DEAC(void); +extern void sub_80312F0(struct Sprite *); +extern u8 sub_8077ABC(); +extern u8 sub_8077F68(); +extern u8 sub_8046400(); +extern void sub_802D798(void); +extern void bx_0802E404(void); +extern u8 gActiveBank; +extern void (*gBattleBankFunc[])(void); +extern bool8 gDoingBattleAnim; +extern u16 gBattleTypeFlags; +extern u32 gBattleExecBuffer; +extern u8 gBattleBufferA[][0x200]; +extern u8 gObjectBankIDs[]; +extern u8 gActionSelectionCursor[]; +extern u8 gMoveSelectionCursor[]; +extern u8 gAbsentBankFlags; +extern u8 gUnknown_03004344; +extern u8 gNoOfAllBanks; +extern u16 gBattlePartyID[]; +extern u16 gUnknown_030042A0; +extern u16 gUnknown_030042A4; +extern struct Window gUnknown_03004210; +extern const u8 gUnknown_08400D89[]; +extern u8 gUnknown_03004348; +extern struct BattlePokemon gBattleMons[]; +extern MainCallback gPreBattleCallback1; +extern u8 gHealthboxIDs[]; +extern struct MusicPlayerInfo gMPlay_BGM; +extern u8 gUnknown_0300434C[]; +extern u8 gUnknown_0202E8F4; +extern u8 gUnknown_0202E8F5; +extern u8 gUnknown_02038470[]; +extern u16 gScriptItemId; +extern u8 gDisplayedStringBattle[]; +extern const u8 gUnknown_08400CE0[]; + +extern void dp11b_obj_instanciate(u8, u8, s8, s8); +extern u8 GetBankIdentity(u8); +extern u8 GetBankByPlayerAI(u8); +extern void dp11b_obj_free(u8, u8); +extern void sub_8010520(struct Sprite *); +extern void sub_8010574(struct Sprite *); +extern bool8 IsDoubleBattle(); +extern void sub_804777C(); +extern void sub_8141828(); +extern void sub_8094E20(u8); +extern void nullsub_14(void); +extern void sub_80A6DCC(void); +extern void ReshowBattleScreenAfterMenu(void); + +void PlayerHandleGetAttributes(void); +void PlayerHandlecmd1(void); +void PlayerHandleSetAttributes(void); +void PlayerHandlecmd3(void); +void PlayerHandleLoadPokeSprite(void); +void PlayerHandleSendOutPoke(void); +void PlayerHandleReturnPokeToBall(void); +void PlayerHandleTrainerThrow(void); +void PlayerHandleTrainerSlide(void); +void PlayerHandleTrainerSlideBack(void); +void PlayerHandlecmd10(void); +void PlayerHandlecmd11(void); +void PlayerHandlecmd12(void); +void PlayerHandleBallThrow(void); +void PlayerHandlePuase(void); +void PlayerHandleMoveAnimation(void); +void PlayerHandlePrintString(void); +void PlayerHandlePrintStringPlayerOnly(void); +void PlayerHandlecmd18(void); +void PlayerHandlecmd19(void); +void PlayerHandlecmd20(void); +void PlayerHandleOpenBag(void); +void PlayerHandlecmd22(void); +void PlayerHandlecmd23(void); +void PlayerHandleHealthBarUpdate(void); +void PlayerHandleExpBarUpdate(void); +void PlayerHandleStatusIconUpdate(void); +void PlayerHandleStatusAnimation(void); +void PlayerHandleStatusXor(void); +void PlayerHandlecmd29(void); +void PlayerHandleDMATransfer(void); +void PlayerHandlecmd31(void); +void PlayerHandlecmd32(void); +void PlayerHandlecmd33(void); +void PlayerHandlecmd34(void); +void PlayerHandlecmd35(void); +void PlayerHandlecmd36(void); +void PlayerHandlecmd37(void); +void PlayerHandlecmd38(void); +void PlayerHandlecmd39(void); +void PlayerHandlecmd40(void); +void PlayerHandleHitAnimation(void); +void PlayerHandlecmd42(void); +void PlayerHandleEffectivenessSound(void); +void PlayerHandlecmd44(void); +void PlayerHandleFaintingCry(void); +void PlayerHandleIntroSlide(void); +void PlayerHandleTrainerBallThrow(void); +void PlayerHandlecmd48(void); +void PlayerHandlecmd49(void); +void PlayerHandlecmd50(void); +void PlayerHandleSpriteInvisibility(void); +void PlayerHandleBattleAnimation(void); +void PlayerHandleLinkStandbyMsg(void); +void PlayerHandleResetActionMoveSelection(void); +void PlayerHandlecmd55(void); +void PlayerHandlecmd56(void); + +const u8 gString_TurnJP[] = _("ターン"); + +void (*const gPlayerBufferCommands[])(void) = +{ + PlayerHandleGetAttributes, + PlayerHandlecmd1, + PlayerHandleSetAttributes, + PlayerHandlecmd3, + PlayerHandleLoadPokeSprite, + PlayerHandleSendOutPoke, + PlayerHandleReturnPokeToBall, + PlayerHandleTrainerThrow, + PlayerHandleTrainerSlide, + PlayerHandleTrainerSlideBack, + PlayerHandlecmd10, + PlayerHandlecmd11, + PlayerHandlecmd12, + PlayerHandleBallThrow, + PlayerHandlePuase, + PlayerHandleMoveAnimation, + PlayerHandlePrintString, + PlayerHandlePrintStringPlayerOnly, + PlayerHandlecmd18, + PlayerHandlecmd19, + PlayerHandlecmd20, + PlayerHandleOpenBag, + PlayerHandlecmd22, + PlayerHandlecmd23, + PlayerHandleHealthBarUpdate, + PlayerHandleExpBarUpdate, + PlayerHandleStatusIconUpdate, + PlayerHandleStatusAnimation, + PlayerHandleStatusXor, + PlayerHandlecmd29, + PlayerHandleDMATransfer, + PlayerHandlecmd31, + PlayerHandlecmd32, + PlayerHandlecmd33, + PlayerHandlecmd34, + PlayerHandlecmd35, + PlayerHandlecmd36, + PlayerHandlecmd37, + PlayerHandlecmd38, + PlayerHandlecmd39, + PlayerHandlecmd40, + PlayerHandleHitAnimation, + PlayerHandlecmd42, + PlayerHandleEffectivenessSound, + PlayerHandlecmd44, + PlayerHandleFaintingCry, + PlayerHandleIntroSlide, + PlayerHandleTrainerBallThrow, + PlayerHandlecmd48, + PlayerHandlecmd49, + PlayerHandlecmd50, + PlayerHandleSpriteInvisibility, + PlayerHandleBattleAnimation, + PlayerHandleLinkStandbyMsg, + PlayerHandleResetActionMoveSelection, + PlayerHandlecmd55, + PlayerHandlecmd56, +}; + +void PlayerBufferRunCommand(void); +void sub_802C2EC(void); +void sub_802C68C(void); +void sub_802CA60(void); +void sub_802D730(void); +void sub_802DA9C(u8); +void sub_802DB6C(u8); +void sub_802DCB0(u8); +void sub_802DD10(u8); +void sub_802DDC4(u8); +void sub_802DF88(void); +void sub_802E03C(void); +void sub_802E12C(s32, const u8 *); +void sub_802E1B0(void); +void sub_802E220(void); +void sub_802E2D4(void); +void sub_802E3B4(u8, int); +void nullsub_7(u8); +void b_link_standby_message(void); +u32 dp01_getattr_by_ch1_for_player_pokemon_(u8, u8 *); +void dp01_setattr_by_ch1_for_player_pokemon(u8); +void sub_802F934(u8, u8); +void sub_802FB2C(void); +void sub_8030190(void); +void sub_80304A8(void); +void sub_8030E38(struct Sprite *); +void task05_08033660(u8); +void sub_8031064(void); + +void nullsub_91(void) +{ +} + +void SetBankFuncToPlayerBufferRunCommand(void) +{ + gBattleBankFunc[gActiveBank] = PlayerBufferRunCommand; + gDoingBattleAnim = FALSE; +} + +void PlayerBufferExecCompleted(void) +{ + gBattleBankFunc[gActiveBank] = PlayerBufferRunCommand; + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + { + u8 playerId = GetMultiplayerId(); + + PrepareBufferDataTransferLink(2, 4, &playerId); + gBattleBufferA[gActiveBank][0] = 0x38; + } + else + { + gBattleExecBuffer &= ~gBitTable[gActiveBank]; + } +} + +void PlayerBufferRunCommand(void) +{ + if (gBattleExecBuffer & gBitTable[gActiveBank]) + { + if (gBattleBufferA[gActiveBank][0] < 0x39) + gPlayerBufferCommands[gBattleBufferA[gActiveBank][0]](); + else + PlayerBufferExecCompleted(); + } +} + +void bx_0802E404(void) +{ + if (gSprites[gObjectBankIDs[gActiveBank]].pos2.x == 0) + PlayerBufferExecCompleted(); +} + +void sub_802C098(void) +{ + u16 itemId = gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8); + + dp11b_obj_instanciate(gActiveBank, 1, 7, 1); + dp11b_obj_instanciate(gActiveBank, 0, 7, 1); + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + DestroyMenuCursor(); + + // Useless switch statement. + switch (gActionSelectionCursor[gActiveBank]) + { + case 0: + Emitcmd33(1, 0, 0); + break; + case 1: + Emitcmd33(1, 1, 0); + break; + case 2: + Emitcmd33(1, 2, 0); + break; + case 3: + Emitcmd33(1, 3, 0); + break; + } + PlayerBufferExecCompleted(); + } + else if (gMain.newKeys & DPAD_LEFT) + { + if (gActionSelectionCursor[gActiveBank] & 1) + { + PlaySE(SE_SELECT); + nullsub_8(gActionSelectionCursor[gActiveBank]); + gActionSelectionCursor[gActiveBank] ^= 1; + sub_802E3E4(gActionSelectionCursor[gActiveBank], 0); + } + } + else if (gMain.newKeys & DPAD_RIGHT) + { + if (!(gActionSelectionCursor[gActiveBank] & 1)) + { + PlaySE(SE_SELECT); + nullsub_8(gActionSelectionCursor[gActiveBank]); + gActionSelectionCursor[gActiveBank] ^= 1; + sub_802E3E4(gActionSelectionCursor[gActiveBank], 0); + } + } + else if (gMain.newKeys & DPAD_UP) + { + if (gActionSelectionCursor[gActiveBank] & 2) + { + PlaySE(SE_SELECT); + nullsub_8(gActionSelectionCursor[gActiveBank]); + gActionSelectionCursor[gActiveBank] ^= 2; + sub_802E3E4(gActionSelectionCursor[gActiveBank], 0); + } + } + else if (gMain.newKeys & DPAD_DOWN) + { + if (!(gActionSelectionCursor[gActiveBank] & 2)) + { + PlaySE(SE_SELECT); + nullsub_8(gActionSelectionCursor[gActiveBank]); + gActionSelectionCursor[gActiveBank] ^= 2; + sub_802E3E4(gActionSelectionCursor[gActiveBank], 0); + } + } + else if (gMain.newKeys & B_BUTTON) + { + if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + && GetBankIdentity(gActiveBank) == 2 + && !(gAbsentBankFlags & gBitTable[GetBankByPlayerAI(0)]) + && !(gBattleTypeFlags & BATTLE_TYPE_MULTI)) + { + if (gBattleBufferA[gActiveBank][1] == 1) + { + // Add item to bag if it is a ball + if (itemId <= ITEM_PREMIER_BALL) + AddBagItem(itemId, 1); + else + return; + } + PlaySE(SE_SELECT); + Emitcmd33(1, 12, 0); + PlayerBufferExecCompleted(); + DestroyMenuCursor(); + } + } + else if (gMain.newKeys & START_BUTTON) + { + sub_804454C(); + } +} + +void unref_sub_802C2B8(void) +{ + dp11b_obj_free(gActiveBank, 1); + dp11b_obj_free(gActiveBank, 0); + gBattleBankFunc[gActiveBank] = sub_802C2EC; +} + +// TODO: fix this function +void sub_802C2EC(void) +{ + u8 arr[4] = {0, 2, 3, 1}; + s32 i; + + dp11b_obj_instanciate(gUnknown_03004344, 1, 15, 1); + i = 0; + if (gNoOfAllBanks != 0) + { + do + { + if (i != gUnknown_03004344) + dp11b_obj_free(i, 1); + i++; + } while (i < gNoOfAllBanks); + } + if (gMain.newKeys & A_BUTTON) + { + DestroyMenuCursor(); + PlaySE(SE_SELECT); + gSprites[gObjectBankIDs[gUnknown_03004344]].callback = sub_8010574; + Emitcmd33(1, 10, gMoveSelectionCursor[gActiveBank] | (gUnknown_03004344 << 8)); + dp11b_obj_free(gUnknown_03004344, 1); + PlayerBufferExecCompleted(); + } + //_0802C3A8 + else if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + gSprites[gObjectBankIDs[gUnknown_03004344]].callback = sub_8010574; + gBattleBankFunc[gActiveBank] = sub_802C68C; + dp11b_obj_instanciate(gActiveBank, 1, 7, 1); + dp11b_obj_instanciate(gActiveBank, 0, 7, 1); + dp11b_obj_free(gUnknown_03004344, 1); + } + else if (gMain.newKeys & 0x60) + { + PlaySE(SE_SELECT); + gSprites[gObjectBankIDs[gUnknown_03004344]].callback = sub_8010574; + do + { + u8 var = GetBankIdentity(gUnknown_03004344); + + for (i = 0; i < 4; i++) + { + if (var == arr[i]) + break; + } + do + { + i--; + if (i < 0) + i = 3; + gUnknown_03004344 = GetBankByPlayerAI(arr[i]); + } while(gUnknown_03004344 == gNoOfAllBanks); + i = 0; + switch (GetBankIdentity(gUnknown_03004344)) + { + case 0: + case 2: + if (gActiveBank == gUnknown_03004344) + { + u32 moveId; + + asm("":::"memory"); + moveId = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_MOVE1 + gMoveSelectionCursor[gActiveBank]); + if (!(gBattleMoves[moveId].target & 2)) + break; + } + i++; + break; + case 1: + case 3: + i++; + } + //_0802C500 + if (gAbsentBankFlags & gBitTable[gUnknown_03004344]) + i = 0; + } while (i == 0); + gSprites[gObjectBankIDs[gUnknown_03004344]].callback = sub_8010520; + } + //_0802C540 + else if (gMain.newKeys & 0x90) + { + PlaySE(SE_SELECT); + gSprites[gObjectBankIDs[gUnknown_03004344]].callback = sub_8010574; + do + { + u8 var = GetBankIdentity(gUnknown_03004344); + + for (i = 0; i < 4; i++) + { + if (var == arr[i]) + break; + } + do + { + i++; + if (i > 3) + i = 0; + gUnknown_03004344 = GetBankByPlayerAI(arr[i]); + } while (gUnknown_03004344 == gNoOfAllBanks); + i = 0; + switch (GetBankIdentity(gUnknown_03004344)) + { + case 0: + case 2: + if (gActiveBank == gUnknown_03004344) + { + u32 moveId; + + asm("":::"memory"); + moveId = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_MOVE1 + gMoveSelectionCursor[gActiveBank]); + if (!(gBattleMoves[moveId].target & 2)) + break; + } + i++; + break; + case 1: + case 3: + i++; + } + if (gAbsentBankFlags & gBitTable[gUnknown_03004344]) + i = 0; + } while (i == 0); + gSprites[gObjectBankIDs[gUnknown_03004344]].callback = sub_8010520; + } +} + +struct UnknownStruct1 +{ + u16 moves[4]; + u8 pp[4]; + u8 unkC[0x12-0xC]; + u8 unk12; + u8 unk13; + u8 filler14[0x20-0x14]; +}; + +const u8 gUnknown_081FAE80[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW WHITE LIGHT_BLUE WHITE2}"); + +void sub_802C68C(void) +{ + u32 r8 = 0; + struct UnknownStruct1 *r6 = (struct UnknownStruct1 *)(gBattleBufferA[gActiveBank] + 4); + + if (gMain.newKeys & A_BUTTON) + { + u32 r4; + + PlaySE(SE_SELECT); + + if (r6->moves[gMoveSelectionCursor[gActiveBank]] == MOVE_CURSE) + r4 = (r6->unk12 != TYPE_GHOST && (r6->unk13 ^ 7)) ? 0x10 : 0; + else + r4 = gBattleMoves[r6->moves[gMoveSelectionCursor[gActiveBank]]].target; + + if (r4 & 0x10) + gUnknown_03004344 = gActiveBank; + else + gUnknown_03004344 = GetBankByPlayerAI((GetBankIdentity(gActiveBank) & 1) ^ 1); + + if (gBattleBufferA[gActiveBank][1] == 0) + { + if ((r4 & 2) && gBattleBufferA[gActiveBank][2] == 0) + r8++; + } + else + { + if (!(r4 & 0x7D)) + r8++; + if (r6->pp[gMoveSelectionCursor[gActiveBank]] == 0) + { + r8 = 0; + } + else if (!(r4 & 0x12) && CountAliveMons(0) <= 1) + { + gUnknown_03004344 = sub_803C434(gActiveBank); + r8 = 0; + } + } + if (r8 == 0) + { + DestroyMenuCursor(); + Emitcmd33(1, 10, gMoveSelectionCursor[gActiveBank] | (gUnknown_03004344 << 8)); + PlayerBufferExecCompleted(); + } + else + { + gBattleBankFunc[gActiveBank] = sub_802C2EC; + if (r4 & 0x12) + gUnknown_03004344 = gActiveBank; + else if (gAbsentBankFlags & gBitTable[GetBankByPlayerAI(1)]) + gUnknown_03004344 = GetBankByPlayerAI(3); + else + gUnknown_03004344 = GetBankByPlayerAI(1); + gSprites[gObjectBankIDs[gUnknown_03004344]].callback = sub_8010520; + } + } + else if (gMain.newKeys & B_BUTTON) + { + DestroyMenuCursor(); + PlaySE(SE_SELECT); + gUnknown_030042A4 = 0; + gUnknown_030042A0 = 320; + Emitcmd33(1, 10, 0xFFFF); + PlayerBufferExecCompleted(); + } + else if (gMain.newKeys & DPAD_LEFT) + { + if (gMoveSelectionCursor[gActiveBank] & 1) + { + nullsub_7(gMoveSelectionCursor[gActiveBank]); + gMoveSelectionCursor[gActiveBank] ^= 1; + PlaySE(SE_SELECT); + sub_802E3B4(gMoveSelectionCursor[gActiveBank], 0); + sub_802E220(); + sub_802E2D4(); + } + } + else if (gMain.newKeys & DPAD_RIGHT) + { + if (!(gMoveSelectionCursor[gActiveBank] & 1) + && (gMoveSelectionCursor[gActiveBank] ^ 1) < gUnknown_03004348) + { + nullsub_7(gMoveSelectionCursor[gActiveBank]); + gMoveSelectionCursor[gActiveBank] ^= 1; + PlaySE(SE_SELECT); + sub_802E3B4(gMoveSelectionCursor[gActiveBank], 0); + sub_802E220(); + sub_802E2D4(); + } + } + else if (gMain.newKeys & DPAD_UP) + { + if (gMoveSelectionCursor[gActiveBank] & 2) + { + nullsub_7(gMoveSelectionCursor[gActiveBank]); + gMoveSelectionCursor[gActiveBank] ^= 2; + PlaySE(SE_SELECT); + sub_802E3B4(gMoveSelectionCursor[gActiveBank], 0); + sub_802E220(); + sub_802E2D4(); + } + } + else if (gMain.newKeys & DPAD_DOWN) + { + if (!(gMoveSelectionCursor[gActiveBank] & 2) + && (gMoveSelectionCursor[gActiveBank] ^ 2) < gUnknown_03004348) + { + nullsub_7(gMoveSelectionCursor[gActiveBank]); + gMoveSelectionCursor[gActiveBank] ^= 2; + PlaySE(SE_SELECT); + sub_802E3B4(gMoveSelectionCursor[gActiveBank], 0); + sub_802E220(); + sub_802E2D4(); + } + } + else if (gMain.newKeys & SELECT_BUTTON) + { + if (gUnknown_03004348 > 1 && !(gBattleTypeFlags & BATTLE_TYPE_LINK)) + { + sub_802E12C(gMoveSelectionCursor[gActiveBank], gUnknown_081FAE80); + if (gMoveSelectionCursor[gActiveBank] != 0) + gUnknown_03004344 = 0; + else + gUnknown_03004344 = gMoveSelectionCursor[gActiveBank] + 1; + sub_802E3B4(gUnknown_03004344, 27); + FillWindowRect(&gUnknown_03004210, 0x1016, 0x17, 0x37, 0x1C, 0x3A); + InitWindow(&gUnknown_03004210, gUnknown_08400D89, 0x290, 0x17, 0x37); + sub_8002F44(&gUnknown_03004210); + gBattleBankFunc[gActiveBank] = sub_802CA60; + } + } +} + +extern const u8 gUnknown_08400D49[]; +extern const u8 gUnknown_08400D38[]; + +void sub_802CA60(void) +{ + u8 perMovePPBonuses[4]; + struct + { + u16 moves[4]; + u8 pp[4]; + u8 filler18[8]; // what is this? + } sp0; + //struct UnknownStruct1 sp0; + u8 totalPPBonuses; + + if (gMain.newKeys & (A_BUTTON | SELECT_BUTTON)) + { + PlaySE(SE_SELECT); + if (gMoveSelectionCursor[gActiveBank] != gUnknown_03004344) + { + struct UnknownStruct1 *r9 = (struct UnknownStruct1 *)&gBattleBufferA[gActiveBank][4]; + s32 i; + + i = r9->moves[gMoveSelectionCursor[gActiveBank]]; + r9->moves[gMoveSelectionCursor[gActiveBank]] = r9->moves[gUnknown_03004344]; + r9->moves[gUnknown_03004344] = i; + + i = r9->pp[gMoveSelectionCursor[gActiveBank]]; + r9->pp[gMoveSelectionCursor[gActiveBank]] = r9->pp[gUnknown_03004344]; + r9->pp[gUnknown_03004344] = i; + + i = r9->unkC[gMoveSelectionCursor[gActiveBank]]; + r9->unkC[gMoveSelectionCursor[gActiveBank]] = r9->unkC[gUnknown_03004344]; + r9->unkC[gUnknown_03004344] = i; + + if (gDisableStructs[gActiveBank].unk18_b & gBitTable[gMoveSelectionCursor[gActiveBank]]) + { + gDisableStructs[gActiveBank].unk18_b &= ~gBitTable[gMoveSelectionCursor[gActiveBank]]; + gDisableStructs[gActiveBank].unk18_b |= gBitTable[gUnknown_03004344]; + } + + sub_802E1B0(); + + for (i = 0; i < 4; i++) + perMovePPBonuses[i] = (gBattleMons[gActiveBank].ppBonuses & (3 << (i * 2))) >> (i * 2); + totalPPBonuses = perMovePPBonuses[gMoveSelectionCursor[gActiveBank]]; + perMovePPBonuses[gMoveSelectionCursor[gActiveBank]] = perMovePPBonuses[gUnknown_03004344]; + perMovePPBonuses[gUnknown_03004344] = totalPPBonuses; + + totalPPBonuses = 0; + for (i = 0; i < 4; i++) + totalPPBonuses |= perMovePPBonuses[i] << (i * 2); + gBattleMons[gActiveBank].ppBonuses = totalPPBonuses; + + for (i = 0; i < 4; i++) + { + gBattleMons[gActiveBank].moves[i] = r9->moves[i]; + gBattleMons[gActiveBank].pp[i] = r9->pp[i]; + } + if (!(gBattleMons[gActiveBank].status2 & 0x200000)) + { + for (i = 0; i < 4; i++) + { + sp0.moves[i] = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_MOVE1 + i); + sp0.pp[i] = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_PP1 + i); + } + + totalPPBonuses = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_PP_BONUSES); + for (i = 0; i < 4; i++) + perMovePPBonuses[i] = (totalPPBonuses & (3 << (i * 2))) >> (i * 2); + + i = sp0.moves[gMoveSelectionCursor[gActiveBank]]; + sp0.moves[gMoveSelectionCursor[gActiveBank]] = sp0.moves[gUnknown_03004344]; + sp0.moves[gUnknown_03004344] = i; + + i = sp0.pp[gMoveSelectionCursor[gActiveBank]]; + sp0.pp[gMoveSelectionCursor[gActiveBank]] = sp0.pp[gUnknown_03004344]; + sp0.pp[gUnknown_03004344] = i; + + totalPPBonuses = perMovePPBonuses[gMoveSelectionCursor[gActiveBank]]; + perMovePPBonuses[gMoveSelectionCursor[gActiveBank]] = perMovePPBonuses[gUnknown_03004344]; + perMovePPBonuses[gUnknown_03004344] = totalPPBonuses; + + totalPPBonuses = 0; + for (i = 0; i < 4; i++) + totalPPBonuses |= perMovePPBonuses[i] << (i * 2); + + for (i = 0; i < 4; i++) + { + SetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_MOVE1 + i, (u8 *)&sp0.moves[i]); + SetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_PP1 + i, &sp0.pp[i]); + } + SetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_PP_BONUSES, &totalPPBonuses); + } + } + else + { + sub_802E12C(gUnknown_03004344, gUnknown_08400D49); + } + gBattleBankFunc[gActiveBank] = sub_802C68C; + gMoveSelectionCursor[gActiveBank] = gUnknown_03004344; + sub_802E3B4(gMoveSelectionCursor[gActiveBank], 0); + FillWindowRect(&gUnknown_03004210, 0x1016, 0x17, 0x37, 0x1C, 0x3A); + InitWindow(&gUnknown_03004210, gUnknown_08400D38, 0x290, 0x17, 0x37); + sub_8002F44(&gUnknown_03004210); + sub_802E220(); + sub_802E2D4(); + } + if (gMain.newKeys & (B_BUTTON | SELECT_BUTTON)) + { + PlaySE(SE_SELECT); + nullsub_7(gUnknown_03004344); + sub_802E3B4(gMoveSelectionCursor[gActiveBank], 0); + sub_802E12C(gMoveSelectionCursor[gActiveBank], gUnknown_08400D49); + gBattleBankFunc[gActiveBank] = sub_802C68C; + FillWindowRect(&gUnknown_03004210, 0x1016, 0x17, 0x37, 0x1C, 0x3A); + InitWindow(&gUnknown_03004210, gUnknown_08400D38, 0x290, 0x17, 0x37); + sub_8002F44(&gUnknown_03004210); + sub_802E220(); + sub_802E2D4(); + } + if ((gMain.newKeys & DPAD_LEFT) && (gUnknown_03004344 & 1)) + { + if (gUnknown_03004344 == gMoveSelectionCursor[gActiveBank]) + sub_802E3B4(gMoveSelectionCursor[gActiveBank], 0x1D); + else + nullsub_7(gUnknown_03004344); + gUnknown_03004344 ^= 1; + PlaySE(SE_SELECT); + if (gUnknown_03004344 == gMoveSelectionCursor[gActiveBank]) + sub_802E3B4(gUnknown_03004344, 0); + else + sub_802E3B4(gUnknown_03004344, 0x1B); + } + if ((gMain.newKeys & DPAD_RIGHT) && !(gUnknown_03004344 & 1) && (gUnknown_03004344 ^ 1) < gUnknown_03004348) + { + if (gUnknown_03004344 == gMoveSelectionCursor[gActiveBank]) + sub_802E3B4(gMoveSelectionCursor[gActiveBank], 0x1D); + else + nullsub_7(gUnknown_03004344); + gUnknown_03004344 ^= 1; + PlaySE(SE_SELECT); + if (gUnknown_03004344 == gMoveSelectionCursor[gActiveBank]) + sub_802E3B4(gUnknown_03004344, 0); + else + sub_802E3B4(gUnknown_03004344, 0x1B); + } + if ((gMain.newKeys & DPAD_UP) && (gUnknown_03004344 & 2)) + { + if (gUnknown_03004344 == gMoveSelectionCursor[gActiveBank]) + sub_802E3B4(gMoveSelectionCursor[gActiveBank], 0x1D); + else + nullsub_7(gUnknown_03004344); + gUnknown_03004344 ^= 2; + PlaySE(SE_SELECT); + if (gUnknown_03004344 == gMoveSelectionCursor[gActiveBank]) + sub_802E3B4(gUnknown_03004344, 0); + else + sub_802E3B4(gUnknown_03004344, 0x1B); + } + if ((gMain.newKeys & DPAD_DOWN) && !(gUnknown_03004344 & 2) && (gUnknown_03004344 ^ 2) < gUnknown_03004348) + { + if (gUnknown_03004344 == gMoveSelectionCursor[gActiveBank]) + sub_802E3B4(gMoveSelectionCursor[gActiveBank], 0x1D); + else + nullsub_7(gUnknown_03004344); + gUnknown_03004344 ^= 2; + PlaySE(SE_SELECT); + if (gUnknown_03004344 == gMoveSelectionCursor[gActiveBank]) + sub_802E3B4(gUnknown_03004344, 0); + else + sub_802E3B4(gUnknown_03004344, 0x1B); + } +} + +void sub_802D148(void) +{ + if (gReceivedRemoteLinkPlayers == 0) + { + m4aSongNumStop(SE_HINSI); + gMain.inBattle = FALSE; + gMain.callback1 = gPreBattleCallback1; + SetMainCallback2(c2_8011A1C); + } +} + +void sub_802D18C(void) +{ + if (!gPaletteFade.active) + { + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + { + sub_800832C(); + gBattleBankFunc[gActiveBank] = sub_802D148; + } + else + { + m4aSongNumStop(SE_HINSI); + gMain.inBattle = FALSE; + gMain.callback1 = gPreBattleCallback1; + SetMainCallback2(gMain.savedCallback); + } + } +} + +void sub_802D204(void) +{ + if (gSprites[gObjectBankIDs[gActiveBank]].callback == SpriteCallbackDummy) + PlayerBufferExecCompleted(); +} + +// duplicate of sub_802D204 +void sub_802D23C(void) +{ + if (gSprites[gObjectBankIDs[gActiveBank]].callback == SpriteCallbackDummy) + PlayerBufferExecCompleted(); +} + +void sub_802D274(void) +{ + if (gSprites[gObjectBankIDs[gActiveBank]].callback == SpriteCallbackDummy) + { + nullsub_10(gSaveBlock2.playerGender); + FreeSpriteOamMatrix(&gSprites[gObjectBankIDs[gActiveBank]]); + DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]); + PlayerBufferExecCompleted(); + } +} + +void sub_802D2E0(void) +{ + if (--ewram17810[gActiveBank].unk9 == 0xFF) + { + ewram17810[gActiveBank].unk9 = 0; + PlayerBufferExecCompleted(); + } +} + +void sub_802D31C(void) +{ + bool8 r6 = FALSE; + + if (!IsDoubleBattle() || (IsDoubleBattle() && (gBattleTypeFlags & BATTLE_TYPE_MULTI))) + { + if (gSprites[gHealthboxIDs[gActiveBank]].callback == SpriteCallbackDummy) + r6 = TRUE; + } + else + { + if (gSprites[gHealthboxIDs[gActiveBank]].callback == SpriteCallbackDummy + && gSprites[gHealthboxIDs[gActiveBank ^ 2]].callback == SpriteCallbackDummy) + r6 = TRUE; + } + if (IsCryPlayingOrClearCrySongs()) + r6 = FALSE; + + if (r6 && ewram17810[gActiveBank].unk1_0 && ewram17810[gActiveBank ^ 2].unk1_0) + { + ewram17810[gActiveBank].unk0_7 = 0; + ewram17810[gActiveBank].unk1_0 = 0; + ewram17810[gActiveBank ^ 2].unk0_7 = 0; + ewram17810[gActiveBank ^ 2].unk1_0 = 0; + FreeSpriteTilesByTag(0x27F9); + FreeSpritePaletteByTag(0x27F9); + if (gBattleTypeFlags & BATTLE_TYPE_MULTI) + m4aMPlayContinue(&gMPlay_BGM); + else + m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 256); + sub_80324F8(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); + if (IsDoubleBattle()) + sub_80324F8(&gPlayerParty[gBattlePartyID[gActiveBank ^ 2]], gActiveBank ^ 2); + ewram17810[gActiveBank].unk9 = 3; + gBattleBankFunc[gActiveBank] = sub_802D2E0; + } +} + +void sub_802D500(void) +{ + if (!ewram17810[gActiveBank].unk0_3 && !ewram17810[gActiveBank].unk0_7) + sub_8141828(gActiveBank, &gPlayerParty[gBattlePartyID[gActiveBank]]); + if (!ewram17810[gActiveBank ^ 2].unk0_3 && !ewram17810[gActiveBank ^ 2].unk0_7) + sub_8141828(gActiveBank ^ 2, &gPlayerParty[gBattlePartyID[gActiveBank ^ 2]]); + if (!ewram17810[gActiveBank].unk0_3 && !ewram17810[gActiveBank ^ 2].unk0_3) + { + if (IsDoubleBattle() && !(gBattleTypeFlags & BATTLE_TYPE_MULTI)) + { + DestroySprite(&gSprites[gUnknown_0300434C[gActiveBank ^ 2]]); + sub_8045A5C( + gHealthboxIDs[gActiveBank ^ 2], + &gPlayerParty[gBattlePartyID[gActiveBank ^ 2]], + 0); + sub_804777C(gActiveBank ^ 2); + sub_8043DFC(gHealthboxIDs[gActiveBank ^ 2]); + } + DestroySprite(&gSprites[gUnknown_0300434C[gActiveBank]]); + sub_8045A5C( + gHealthboxIDs[gActiveBank], + &gPlayerParty[gBattlePartyID[gActiveBank]], + 0); + sub_804777C(gActiveBank); + sub_8043DFC(gHealthboxIDs[gActiveBank]); + ewram17840.unk9_0 = 0; + gBattleBankFunc[gActiveBank] = sub_802D31C; + } +} + +void sub_802D680(void) +{ + if (gSprites[gHealthboxIDs[gActiveBank]].callback == SpriteCallbackDummy + && ewram17810[gActiveBank].unk1_0) + { + ewram17810[gActiveBank].unk0_7 = 0; + ewram17810[gActiveBank].unk1_0 = 0; + FreeSpriteTilesByTag(0x27F9); + FreeSpritePaletteByTag(0x27F9); + if (ewram17800[gActiveBank].substituteSprite) + move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 6); + gBattleBankFunc[gActiveBank] = sub_802D730; + } +} + +void sub_802D730(void) +{ + if (!ewram17810[gActiveBank].unk0_6 && !IsCryPlayingOrClearCrySongs()) + { + m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 0x100); + sub_80324F8(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); + PlayerBufferExecCompleted(); + } +} + +void sub_802D798(void) +{ + if (!ewram17810[gActiveBank].unk0_3 && !ewram17810[gActiveBank].unk0_7) + sub_8141828(gActiveBank, &gPlayerParty[gBattlePartyID[gActiveBank]]); + if (gSprites[gUnknown_0300434C[gActiveBank]].callback == SpriteCallbackDummy + && !ewram17810[gActiveBank].unk0_3) + { + DestroySprite(&gSprites[gUnknown_0300434C[gActiveBank]]); + sub_8045A5C(gHealthboxIDs[gActiveBank], &gPlayerParty[gBattlePartyID[gActiveBank]], 0); + sub_804777C(gActiveBank); + sub_8043DFC(gHealthboxIDs[gActiveBank]); + sub_8031F88(gActiveBank); + gBattleBankFunc[gActiveBank] = sub_802D680; + } +} + +void c3_0802FDF4(u8 taskId) +{ + if (!IsCryPlayingOrClearCrySongs()) + { + m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 0x100); + DestroyTask(taskId); + } +} + +void bx_t1_healthbar_update(void) +{ + s16 r4 = sub_8045C78(gActiveBank, gHealthboxIDs[gActiveBank], 0, 0); + + sub_8043DFC(gHealthboxIDs[gActiveBank]); + if (r4 != -1) + { + sub_80440EC(gHealthboxIDs[gActiveBank], r4, 0); + } + else + { + sub_80324F8(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); + PlayerBufferExecCompleted(); + } +} + +void sub_802D90C(void) +{ + if (gUnknown_03004210.state == 0) + PlayerBufferExecCompleted(); +} + +// Rare Candy usage, maybe? +void sub_802D924(u8 taskId) +{ + u32 pkmnIndex = (u8)gTasks[taskId].data[0]; + u8 bank = gTasks[taskId].data[2]; + s16 gainedExp = gTasks[taskId].data[1]; + + if (IsDoubleBattle() == TRUE || pkmnIndex != gBattlePartyID[bank]) + { + struct Pokemon *pkmn = &gPlayerParty[pkmnIndex]; + u16 species = GetMonData(pkmn, MON_DATA_SPECIES); + u8 level = GetMonData(pkmn, MON_DATA_LEVEL); + u32 currExp = GetMonData(pkmn, MON_DATA_EXP); + u32 nextLvlExp = gExperienceTables[gBaseStats[species].growthRate][level + 1]; + + if (currExp + gainedExp >= nextLvlExp) + { + u8 savedActiveBank; + + SetMonData(pkmn, MON_DATA_EXP, (u8 *)&nextLvlExp); + CalculateMonStats(pkmn); + gainedExp -= nextLvlExp - currExp; + savedActiveBank = gActiveBank; + gActiveBank = bank; + Emitcmd33(1, 11, gainedExp); + gActiveBank = savedActiveBank; + + if (IsDoubleBattle() == TRUE + && ((u16)pkmnIndex == gBattlePartyID[bank] || (u16)pkmnIndex == gBattlePartyID[bank ^ 2])) + gTasks[taskId].func = sub_802DCB0; + else + gTasks[taskId].func = sub_802DDC4; + } + else + { + currExp += gainedExp; + SetMonData(pkmn, MON_DATA_EXP, (u8 *)&currExp); + gBattleBankFunc[bank] = sub_802D90C; + DestroyTask(taskId); + } + } + else + { + gTasks[taskId].func = sub_802DA9C; + } +} + +void sub_802DA9C(u8 taskId) +{ + u8 pkmnIndex = gTasks[taskId].data[0]; + s32 r9 = gTasks[taskId].data[1]; + u8 bank = gTasks[taskId].data[2]; + struct Pokemon *pkmn = &gPlayerParty[pkmnIndex]; + u8 level = GetMonData(pkmn, MON_DATA_LEVEL); + u16 species = GetMonData(pkmn, MON_DATA_SPECIES); + u32 exp = GetMonData(pkmn, MON_DATA_EXP); + u32 currLvlExp = gExperienceTables[gBaseStats[species].growthRate][level]; + u32 expToNextLvl; + + exp -= currLvlExp; + expToNextLvl = gExperienceTables[gBaseStats[species].growthRate][level + 1] - currLvlExp; + sub_8043D84(bank, gHealthboxIDs[bank], expToNextLvl, exp, -r9); + PlaySE(SE_EXP); + gTasks[taskId].func = sub_802DB6C; +} + +#ifdef NONMATCHING +void sub_802DB6C(u8 taskId) +{ + if (gTasks[taskId].data[10] < 13) + { + gTasks[taskId].data[10]++; + } + else + { + u8 r9 = gTasks[taskId].data[0]; + s32 r10 = gTasks[taskId].data[1]; //s16? + u8 r7 = gTasks[taskId].data[2]; + s16 r4; + + r4 = sub_8045C78(r7, gHealthboxIDs[r7], 1, 0); + sub_8043DFC(gHealthboxIDs[r7]); + if (r4 == -1) + { + struct Pokemon *pkmn; + u8 r4; + u32 sp4; + u16 r0; + u32 sp0; + + m4aSongNumStop(SE_EXP); + pkmn = &gPlayerParty[r9]; + r4 = GetMonData(pkmn, MON_DATA_LEVEL); + sp4 = GetMonData(pkmn, MON_DATA_EXP); + r0 = GetMonData(pkmn, MON_DATA_SPECIES); + sp0 = gExperienceTables[gBaseStats[r0].growthRate][r4 + 1]; + if (sp4 + r10 >= sp0) + { + u8 r5; + u32 asdf; + + SetMonData(pkmn, MON_DATA_EXP, (u8 *)&sp0); + CalculateMonStats(pkmn); + //r10 -= sp0 - sp4; + asdf = sp0 - sp4; + //asdf = r10 - (sp0 - sp4); + r10 -= asdf; + r5 = gActiveBank; + gActiveBank = r7; + Emitcmd33(1, 11, r10); + gActiveBank = r5; + gTasks[taskId].func = sub_802DCB0; + } + else + { + //u32 asdf = sp4 + r10; + sp4 += r10; + SetMonData(pkmn, MON_DATA_EXP, (u8 *)&sp4); + gBattleBankFunc[r7] = sub_802D90C; + DestroyTask(taskId); + } + } + } +} +#else +__attribute__((naked)) +void sub_802DB6C(u8 taskId) +{ + asm_unified("push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + sub sp, 0x8\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + mov r8, r0\n\ + ldr r1, _0802DB98 @ =gTasks\n\ + lsls r0, 2\n\ + add r0, r8\n\ + lsls r0, 3\n\ + adds r6, r0, r1\n\ + ldrh r1, [r6, 0x1C]\n\ + movs r2, 0x1C\n\ + ldrsh r0, [r6, r2]\n\ + cmp r0, 0xC\n\ + bgt _0802DB9C\n\ + adds r0, r1, 0x1\n\ + strh r0, [r6, 0x1C]\n\ + b _0802DC98\n\ + .align 2, 0\n\ +_0802DB98: .4byte gTasks\n\ +_0802DB9C:\n\ + ldrb r0, [r6, 0x8]\n\ + mov r9, r0\n\ + ldrh r2, [r6, 0xA]\n\ + mov r10, r2\n\ + ldrb r7, [r6, 0xC]\n\ + ldr r5, _0802DC64 @ =gHealthboxIDs\n\ + adds r5, r7, r5\n\ + ldrb r1, [r5]\n\ + adds r0, r7, 0\n\ + movs r2, 0x1\n\ + movs r3, 0\n\ + bl sub_8045C78\n\ + adds r4, r0, 0\n\ + lsls r4, 16\n\ + lsrs r4, 16\n\ + ldrb r0, [r5]\n\ + bl sub_8043DFC\n\ + lsls r4, 16\n\ + asrs r4, 16\n\ + movs r0, 0x1\n\ + negs r0, r0\n\ + cmp r4, r0\n\ + bne _0802DC98\n\ + movs r0, 0x21\n\ + bl m4aSongNumStop\n\ + movs r0, 0x64\n\ + mov r1, r9\n\ + muls r1, r0\n\ + ldr r0, _0802DC68 @ =gPlayerParty\n\ + adds r5, r1, r0\n\ + adds r0, r5, 0\n\ + movs r1, 0x38\n\ + bl GetMonData\n\ + adds r4, r0, 0\n\ + lsls r4, 24\n\ + lsrs r4, 24\n\ + adds r0, r5, 0\n\ + movs r1, 0x19\n\ + bl GetMonData\n\ + str r0, [sp, 0x4]\n\ + adds r0, r5, 0\n\ + movs r1, 0xB\n\ + bl GetMonData\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + ldr r3, _0802DC6C @ =gExperienceTables\n\ + adds r4, 0x1\n\ + lsls r4, 2\n\ + ldr r2, _0802DC70 @ =gBaseStats\n\ + lsls r1, r0, 3\n\ + subs r1, r0\n\ + lsls r1, 2\n\ + adds r1, r2\n\ + ldrb r1, [r1, 0x13]\n\ + movs r0, 0xCA\n\ + lsls r0, 1\n\ + muls r0, r1\n\ + adds r4, r0\n\ + adds r4, r3\n\ + ldr r1, [r4]\n\ + str r1, [sp]\n\ + mov r2, r10\n\ + lsls r0, r2, 16\n\ + asrs r4, r0, 16\n\ + ldr r0, [sp, 0x4]\n\ + adds r0, r4\n\ + cmp r0, r1\n\ + blt _0802DC7C\n\ + adds r0, r5, 0\n\ + movs r1, 0x19\n\ + mov r2, sp\n\ + bl SetMonData\n\ + adds r0, r5, 0\n\ + bl CalculateMonStats\n\ + ldr r2, [sp]\n\ + add r0, sp, 0x4\n\ + ldrh r0, [r0]\n\ + subs r2, r0\n\ + subs r2, r4, r2\n\ + ldr r4, _0802DC74 @ =gActiveBank\n\ + ldrb r5, [r4]\n\ + strb r7, [r4]\n\ + lsls r2, 16\n\ + lsrs r2, 16\n\ + movs r0, 0x1\n\ + movs r1, 0xB\n\ + bl Emitcmd33\n\ + strb r5, [r4]\n\ + ldr r0, _0802DC78 @ =sub_802DCB0\n\ + str r0, [r6]\n\ + b _0802DC98\n\ + .align 2, 0\n\ +_0802DC64: .4byte gHealthboxIDs\n\ +_0802DC68: .4byte gPlayerParty\n\ +_0802DC6C: .4byte gExperienceTables\n\ +_0802DC70: .4byte gBaseStats\n\ +_0802DC74: .4byte gActiveBank\n\ +_0802DC78: .4byte sub_802DCB0\n\ +_0802DC7C:\n\ + str r0, [sp, 0x4]\n\ + add r2, sp, 0x4\n\ + adds r0, r5, 0\n\ + movs r1, 0x19\n\ + bl SetMonData\n\ + ldr r1, _0802DCA8 @ =gBattleBankFunc\n\ + lsls r0, r7, 2\n\ + adds r0, r1\n\ + ldr r1, _0802DCAC @ =sub_802D90C\n\ + str r1, [r0]\n\ + mov r0, r8\n\ + bl DestroyTask\n\ +_0802DC98:\n\ + add sp, 0x8\n\ + pop {r3-r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_0802DCA8: .4byte gBattleBankFunc\n\ +_0802DCAC: .4byte sub_802D90C\n"); +} +#endif + +void sub_802DCB0(u8 taskId) +{ + u8 bank = gTasks[taskId].data[2]; + u8 pkmnIndex = gTasks[taskId].data[0]; + + if (IsDoubleBattle() == TRUE && pkmnIndex == gBattlePartyID[bank ^ 2]) + bank ^= 2; + move_anim_start_t4(bank, bank, bank, 0); + gTasks[taskId].func = sub_802DD10; +} + +void sub_802DD10(u8 taskId) +{ + u8 bank = gTasks[taskId].data[2]; + + if (!ewram17810[bank].unk0_6) + { + u8 pkmnIndex = gTasks[taskId].data[0]; + + GetMonData(&gPlayerParty[pkmnIndex], MON_DATA_LEVEL); // Unused return value + if (IsDoubleBattle() == TRUE && pkmnIndex == gBattlePartyID[bank ^ 2]) + sub_8045A5C(gHealthboxIDs[bank ^ 2], &gPlayerParty[pkmnIndex], 0); + else + sub_8045A5C(gHealthboxIDs[bank], &gPlayerParty[pkmnIndex], 0); + gTasks[taskId].func = sub_802DDC4; + } +} + +void sub_802DDC4(u8 taskId) +{ + u8 pkmnIndex; + u8 bank; + + pkmnIndex = gTasks[taskId].data[0]; + GetMonData(&gPlayerParty[pkmnIndex], MON_DATA_LEVEL); // Unused return value + bank = gTasks[taskId].data[2]; + gBattleBankFunc[bank] = sub_802D90C; + DestroyTask(taskId); +} + +void sub_802DE10(void) +{ + if (gSprites[gObjectBankIDs[gActiveBank]].pos1.y + gSprites[gObjectBankIDs[gActiveBank]].pos2.y > DISPLAY_HEIGHT) + { + u16 species = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES); + + nullsub_9(species); + FreeOamMatrix(gSprites[gObjectBankIDs[gActiveBank]].oam.matrixNum); + DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]); + sub_8043DB0(gHealthboxIDs[gActiveBank]); + PlayerBufferExecCompleted(); + } +} + +void sub_802DEAC(void) +{ + if (!ewram17810[gActiveBank].unk0_6) + { + FreeSpriteOamMatrix(&gSprites[gObjectBankIDs[gActiveBank]]); + DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]); + sub_8043DB0(gHealthboxIDs[gActiveBank]); + PlayerBufferExecCompleted(); + } +} + +// Duplicate of sub_802D90C +void sub_802DF18(void) +{ + if (gUnknown_03004210.state == 0) + PlayerBufferExecCompleted(); +} + +void sub_802DF30(void) +{ + if (!gPaletteFade.active) + { + u8 r4; + + gBattleBankFunc[gActiveBank] = sub_802DF88; + r4 = gTasks[gUnknown_0300434C[gActiveBank]].data[0]; + DestroyTask(gUnknown_0300434C[gActiveBank]); + sub_8094E20(r4); + } +} + +void sub_802DF88(void) +{ + if (gMain.callback2 == sub_800F808 && !gPaletteFade.active) + { + if (gUnknown_0202E8F4 == 1) + Emitcmd34(1, gUnknown_0202E8F5, gUnknown_02038470); + else + Emitcmd34(1, 6, NULL); + if ((gBattleBufferA[gActiveBank][1] & 0xF) == 1) + b_link_standby_message(); + PlayerBufferExecCompleted(); + } +} + +void sub_802E004(void) +{ + if (!gPaletteFade.active) + { + gBattleBankFunc[gActiveBank] = sub_802E03C; + nullsub_14(); + sub_80A6DCC(); + } +} + +void sub_802E03C(void) +{ + if (gMain.callback2 == sub_800F808 && !gPaletteFade.active) + { + Emitcmd35(1, gScriptItemId); + PlayerBufferExecCompleted(); + } +} + +void bx_wait_t1(void) +{ + if (!gDoingBattleAnim || !ewram17810[gActiveBank].unk0_6) + PlayerBufferExecCompleted(); +} + +void bx_blink_t1(void) +{ + u8 spriteId = gObjectBankIDs[gActiveBank]; + + if (gSprites[spriteId].data1 == 32) + { + gSprites[spriteId].data1 = 0; + gSprites[spriteId].invisible = FALSE; + gDoingBattleAnim = 0; + PlayerBufferExecCompleted(); + } + else + { + if (((u16)gSprites[spriteId].data1 % 4) == 0) + gSprites[spriteId].invisible ^= 1; + gSprites[spriteId].data1++; + } +} + +void sub_802E12C(s32 a, const u8 *b) +{ + struct UnknownStruct1 *r4 = (struct UnknownStruct1 *)&gBattleBufferA[gActiveBank][4]; + + StringCopy(gDisplayedStringBattle, b); + StringAppend(gDisplayedStringBattle, gMoveNames[r4->moves[a]]); + InitWindow( + &gUnknown_03004210, + gDisplayedStringBattle, + 0x300 + a * 20, + (a & 1) ? 11 : 1, + (a < 2) ? 0x37 : 0x39); + sub_8002F44(&gUnknown_03004210); +} + +void sub_802E1B0(void) +{ + struct UnknownStruct1 *r4 = (struct UnknownStruct1 *)&gBattleBufferA[gActiveBank][4]; + s32 i; + + gUnknown_03004348 = 0; + FillWindowRect(&gUnknown_03004210, 0x1016, 1, 0x37, 0x14, 0x3A); + for (i = 0; i < 4; i++) + { + nullsub_7(i); + sub_802E12C(i, gUnknown_08400D49); + if (r4->moves[i] != 0) + gUnknown_03004348++; + } +} + +void sub_802E220(void) +{ + if (gBattleBufferA[gActiveBank][2] != 1) + { + struct UnknownStruct1 *r4 = (struct UnknownStruct1 *)&gBattleBufferA[gActiveBank][4]; + u8 *str = gDisplayedStringBattle; + + str = StringCopy(str, gUnknown_08400D49); + str[0] = EXT_CTRL_CODE_BEGIN; + str[1] = 0x11; + str[2] = 2; + str += 3; + str[0] = EXT_CTRL_CODE_BEGIN; + str[1] = 0x14; + str[2] = 6; + str += 3; + str = ConvertIntToDecimalStringN(str, r4->pp[gMoveSelectionCursor[gActiveBank]], 1, 2); + *str++ = CHAR_SLASH; + ConvertIntToDecimalStringN(str, r4->unkC[gMoveSelectionCursor[gActiveBank]], 1, 2); + InitWindow(&gUnknown_03004210, gDisplayedStringBattle, 0x2A2, 0x19, 0x37); + sub_8002F44(&gUnknown_03004210); + } +} + +extern const u8 gUnknown_08400D52[]; +extern const u8 gTypeNames[][7]; + +void sub_802E2D4(void) +{ + if (gBattleBufferA[gActiveBank][2] == 1) + { + FillWindowRect(&gUnknown_03004210, 0x1016, 0x17, 0x37, 0x1C, 0x3A); + InitWindow(&gUnknown_03004210, gUnknown_08400D52, 0x290, 0x13, 0x37); + } + else + { + struct UnknownStruct1 *r4 = (struct UnknownStruct1 *)&gBattleBufferA[gActiveBank][4]; + u8 *str = gDisplayedStringBattle; + + str = StringCopy(str, gUnknown_08400D49); + StringCopy(str, gTypeNames[gBattleMoves[r4->moves[gMoveSelectionCursor[gActiveBank]]].type]); + FillWindowRect(&gUnknown_03004210, 0x1016, 0x17, 0x39, 0x1C, 0x3A); + InitWindow(&gUnknown_03004210, gDisplayedStringBattle, 0x2C0, 0x17, 0x39); + } + sub_8002F44(&gUnknown_03004210); +} + +const u8 gUnknown_081FAE89[][2] = +{ + { 8, 120}, + {88, 120}, + { 8, 136}, + {88, 136}, +}; + +const u8 gUnknown_081FAE91[][2] = +{ + {144, 120}, + {190, 120}, + {144, 136}, + {190, 136}, + { 72, 72}, + { 32, 90}, + { 80, 80}, + { 80, 88}, +}; + +void sub_802E3B4(u8 a, int unused) +{ + sub_814A958(0x48); + sub_814A880(gUnknown_081FAE89[a][0], gUnknown_081FAE89[a][1]); +} + +void nullsub_7(u8 a) +{ +} + +void sub_802E3E4(u8 a, int unused) +{ + sub_814A958(0x2A); + sub_814A880(gUnknown_081FAE91[a][0], gUnknown_081FAE91[a][1]); +} + +void nullsub_8(u8 a) +{ +} + +void sub_802E414(void) +{ + SetMainCallback2(ReshowBattleScreenAfterMenu); +} + +void sub_802E424(void) +{ + SetMainCallback2(ReshowBattleScreenAfterMenu); +} + +void sub_802E434(void) +{ + if (!ewram17810[gActiveBank].unk0_4) + PlayerBufferExecCompleted(); +} + +void sub_802E460(void) +{ + if (!ewram17810[gActiveBank].unk0_5) + PlayerBufferExecCompleted(); +} + +void b_link_standby_message(void) +{ + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + { + gUnknown_030042A4 = 0; + gUnknown_030042A0 = 0; + sub_8002EB0(&gUnknown_03004210, gUnknown_08400CE0, 0x90, 2, 15); + } +} + +void PlayerHandleGetAttributes(void) +{ + u8 unkData[0x100]; + u32 offset = 0; + u8 r4; + s32 i; + + if (gBattleBufferA[gActiveBank][2] == 0) + { + offset += dp01_getattr_by_ch1_for_player_pokemon_(gBattlePartyID[gActiveBank], unkData); + } + else + { + r4 = gBattleBufferA[gActiveBank][2]; + for (i = 0; i < 6; i++) + { + if (r4 & 1) + offset += dp01_getattr_by_ch1_for_player_pokemon_(i, unkData + offset); + r4 >>= 1; + } + } + Emitcmd29(1, offset, unkData); + PlayerBufferExecCompleted(); +} + +// Duplicate of dp01_getattr_by_ch1_for_player_pokemon +u32 dp01_getattr_by_ch1_for_player_pokemon_(u8 a, u8 *buffer) +{ + struct BattlePokemon battlePokemon; + struct UnknownStruct3 moveData; + u8 nickname[20]; + u8 *src; + s16 data16; + u32 data32; + s32 size = 0; + + switch (gBattleBufferA[gActiveBank][1]) + { + case 0: + battlePokemon.species = GetMonData(&gPlayerParty[a], MON_DATA_SPECIES); + battlePokemon.item = GetMonData(&gPlayerParty[a], MON_DATA_HELD_ITEM); + for (size = 0; size < 4; size++) + { + battlePokemon.moves[size] = GetMonData(&gPlayerParty[a], MON_DATA_MOVE1 + size); + battlePokemon.pp[size] = GetMonData(&gPlayerParty[a], MON_DATA_PP1 + size); + } + battlePokemon.ppBonuses = GetMonData(&gPlayerParty[a], MON_DATA_PP_BONUSES); + battlePokemon.friendship = GetMonData(&gPlayerParty[a], MON_DATA_FRIENDSHIP); + battlePokemon.experience = GetMonData(&gPlayerParty[a], MON_DATA_EXP); + battlePokemon.hpIV = GetMonData(&gPlayerParty[a], MON_DATA_HP_IV); + battlePokemon.attackIV = GetMonData(&gPlayerParty[a], MON_DATA_ATK_IV); + battlePokemon.defenseIV = GetMonData(&gPlayerParty[a], MON_DATA_DEF_IV); + battlePokemon.speedIV = GetMonData(&gPlayerParty[a], MON_DATA_SPD_IV); + battlePokemon.spAttackIV = GetMonData(&gPlayerParty[a], MON_DATA_SPATK_IV); + battlePokemon.spDefenseIV = GetMonData(&gPlayerParty[a], MON_DATA_SPDEF_IV); + battlePokemon.personality = GetMonData(&gPlayerParty[a], MON_DATA_PERSONALITY); + battlePokemon.status1 = GetMonData(&gPlayerParty[a], MON_DATA_STATUS); + battlePokemon.level = GetMonData(&gPlayerParty[a], MON_DATA_LEVEL); + battlePokemon.hp = GetMonData(&gPlayerParty[a], MON_DATA_HP); + battlePokemon.maxHP = GetMonData(&gPlayerParty[a], MON_DATA_MAX_HP); + battlePokemon.attack = GetMonData(&gPlayerParty[a], MON_DATA_ATK); + battlePokemon.defense = GetMonData(&gPlayerParty[a], MON_DATA_DEF); + battlePokemon.speed = GetMonData(&gPlayerParty[a], MON_DATA_SPD); + battlePokemon.spAttack = GetMonData(&gPlayerParty[a], MON_DATA_SPATK); + battlePokemon.spDefense = GetMonData(&gPlayerParty[a], MON_DATA_SPDEF); + battlePokemon.isEgg = GetMonData(&gPlayerParty[a], MON_DATA_IS_EGG); + battlePokemon.altAbility = GetMonData(&gPlayerParty[a], MON_DATA_ALT_ABILITY); + battlePokemon.otId = GetMonData(&gPlayerParty[a], MON_DATA_OT_ID); + GetMonData(&gPlayerParty[a], MON_DATA_NICKNAME, nickname); + StringCopy10(battlePokemon.nickname, nickname); + GetMonData(&gPlayerParty[a], MON_DATA_OT_NAME, battlePokemon.otName); + src = (u8 *)&battlePokemon; + for (size = 0; size < sizeof(battlePokemon); size++) + buffer[size] = src[size]; + break; + case 1: + data16 = GetMonData(&gPlayerParty[a], MON_DATA_SPECIES); + buffer[0] = data16; + buffer[1] = data16 >> 8; + size = 2; + break; + case 2: + data16 = GetMonData(&gPlayerParty[a], MON_DATA_HELD_ITEM); + buffer[0] = data16; + buffer[1] = data16 >> 8; + size = 2; + break; + case 3: + for (size = 0; size < 4; size++) + { + moveData.moves[size] = GetMonData(&gPlayerParty[a], MON_DATA_MOVE1 + size); + moveData.pp[size] = GetMonData(&gPlayerParty[a], MON_DATA_PP1 + size); + } + moveData.ppBonuses = GetMonData(&gPlayerParty[a], MON_DATA_PP_BONUSES); + src = (u8 *)&moveData; + for (size = 0; size < sizeof(moveData); size++) + buffer[size] = src[size]; + break; + case 4: + case 5: + case 6: + case 7: + data16 = GetMonData(&gPlayerParty[a], MON_DATA_MOVE1 + gBattleBufferA[gActiveBank][1] - 4); + buffer[0] = data16; + buffer[1] = data16 >> 8; + size = 2; + break; + case 8: + for (size = 0; size < 4; size++) + buffer[size] = GetMonData(&gPlayerParty[a], MON_DATA_PP1 + size); + buffer[size] = GetMonData(&gPlayerParty[a], MON_DATA_PP_BONUSES); + size++; + break; + case 9: + case 10: + case 11: + case 12: + buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_PP1 + gBattleBufferA[gActiveBank][1] - 9); + size = 1; + break; + case 17: + data32 = GetMonData(&gPlayerParty[a], MON_DATA_OT_ID); + buffer[0] = (data32 & 0x000000FF); + buffer[1] = (data32 & 0x0000FF00) >> 8; + buffer[2] = (data32 & 0x00FF0000) >> 16; + size = 3; + break; + case 18: + data32 = GetMonData(&gPlayerParty[a], MON_DATA_EXP); + buffer[0] = (data32 & 0x000000FF); + buffer[1] = (data32 & 0x0000FF00) >> 8; + buffer[2] = (data32 & 0x00FF0000) >> 16; + size = 3; + break; + case 19: + buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_HP_EV); + size = 1; + break; + case 20: + buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_ATK_EV); + size = 1; + break; + case 21: + buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_DEF_EV); + size = 1; + break; + case 22: + buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SPD_EV); + size = 1; + break; + case 23: + buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SPATK_EV); + size = 1; + break; + case 24: + buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SPDEF_EV); + size = 1; + break; + case 25: + buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_FRIENDSHIP); + size = 1; + break; + case 26: + buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_POKERUS); + size = 1; + break; + case 27: + buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_MET_LOCATION); + size = 1; + break; + case 28: + buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_MET_LEVEL); + size = 1; + break; + case 29: + buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_MET_GAME); + size = 1; + break; + case 30: + buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_POKEBALL); + size = 1; + break; + case 31: + buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_HP_IV); + buffer[1] = GetMonData(&gPlayerParty[a], MON_DATA_ATK_IV); + buffer[2] = GetMonData(&gPlayerParty[a], MON_DATA_DEF_IV); + buffer[3] = GetMonData(&gPlayerParty[a], MON_DATA_SPD_IV); + buffer[4] = GetMonData(&gPlayerParty[a], MON_DATA_SPATK_IV); + buffer[5] = GetMonData(&gPlayerParty[a], MON_DATA_SPDEF_IV); + size = 6; + break; + case 32: + buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_HP_IV); + size = 1; + break; + case 33: + buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_ATK_IV); + size = 1; + break; + case 34: + buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_DEF_IV); + size = 1; + break; + case 35: + buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SPD_IV); + size = 1; + break; + case 36: + buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SPATK_IV); + size = 1; + break; + case 37: + buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SPDEF_IV); + size = 1; + break; + case 38: + data32 = GetMonData(&gPlayerParty[a], MON_DATA_PERSONALITY); + buffer[0] = (data32 & 0x000000FF); + buffer[1] = (data32 & 0x0000FF00) >> 8; + buffer[2] = (data32 & 0x00FF0000) >> 16; + buffer[3] = (data32 & 0xFF000000) >> 24; + size = 4; + break; + case 39: + data16 = GetMonData(&gPlayerParty[a], MON_DATA_CHECKSUM); + buffer[0] = data16; + buffer[1] = data16 >> 8; + size = 2; + break; + case 40: + data32 = GetMonData(&gPlayerParty[a], MON_DATA_STATUS); + buffer[0] = (data32 & 0x000000FF); + buffer[1] = (data32 & 0x0000FF00) >> 8; + buffer[2] = (data32 & 0x00FF0000) >> 16; + buffer[3] = (data32 & 0xFF000000) >> 24; + size = 4; + break; + case 41: + buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_LEVEL); + size = 1; + break; + case 42: + data16 = GetMonData(&gPlayerParty[a], MON_DATA_HP); + buffer[0] = data16; + buffer[1] = data16 >> 8; + size = 2; + break; + case 43: + data16 = GetMonData(&gPlayerParty[a], MON_DATA_MAX_HP); + buffer[0] = data16; + buffer[1] = data16 >> 8; + size = 2; + break; + case 44: + data16 = GetMonData(&gPlayerParty[a], MON_DATA_ATK); + buffer[0] = data16; + buffer[1] = data16 >> 8; + size = 2; + break; + case 45: + data16 = GetMonData(&gPlayerParty[a], MON_DATA_DEF); + buffer[0] = data16; + buffer[1] = data16 >> 8; + size = 2; + break; + case 46: + data16 = GetMonData(&gPlayerParty[a], MON_DATA_SPD); + buffer[0] = data16; + buffer[1] = data16 >> 8; + size = 2; + break; + case 47: + data16 = GetMonData(&gPlayerParty[a], MON_DATA_SPATK); + buffer[0] = data16; + buffer[1] = data16 >> 8; + size = 2; + break; + case 48: + data16 = GetMonData(&gPlayerParty[a], MON_DATA_SPDEF); + buffer[0] = data16; + buffer[1] = data16 >> 8; + size = 2; + break; + case 49: + buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_COOL); + size = 1; + break; + case 50: + buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_BEAUTY); + size = 1; + break; + case 51: + buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_CUTE); + size = 1; + break; + case 52: + buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SMART); + size = 1; + break; + case 53: + buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_TOUGH); + size = 1; + break; + case 54: + buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SHEEN); + size = 1; + break; + case 55: + buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_COOL_RIBBON); + size = 1; + break; + case 56: + buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_BEAUTY_RIBBON); + size = 1; + break; + case 57: + buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_CUTE_RIBBON); + size = 1; + break; + case 58: + buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SMART_RIBBON); + size = 1; + break; + case 59: + buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_TOUGH_RIBBON); + size = 1; + break; + } + return size; +} + +void PlayerHandlecmd1(void) +{ + struct BattlePokemon battleMon; // I think this is a BattlePokemon + u8 *src = (u8 *)&gPlayerParty[gBattlePartyID[gActiveBank]] + gBattleBufferA[gActiveBank][1]; + u8 *dst = (u8 *)&battleMon + gBattleBufferA[gActiveBank][1]; + u8 i; + + for (i = 0; i < gBattleBufferA[gActiveBank][2]; i++) + dst[i] = src[i]; + Emitcmd29(1, gBattleBufferA[gActiveBank][2], dst); + PlayerBufferExecCompleted(); +} + +void PlayerHandleSetAttributes(void) +{ + u8 r4; + u8 i; + + if (gBattleBufferA[gActiveBank][2] == 0) + { + dp01_setattr_by_ch1_for_player_pokemon(gBattlePartyID[gActiveBank]); + } + else + { + r4 = gBattleBufferA[gActiveBank][2]; + for (i = 0; i < 6; i++) + { + if (r4 & 1) + dp01_setattr_by_ch1_for_player_pokemon(i); + r4 >>= 1; + } + } + PlayerBufferExecCompleted(); +} + +// Duplicate of sub_811EC68 +void dp01_setattr_by_ch1_for_player_pokemon(u8 a) +{ + struct BattlePokemon *battlePokemon = (struct BattlePokemon *)&gBattleBufferA[gActiveBank][3]; + struct UnknownStruct3 *moveData = (struct UnknownStruct3 *)&gBattleBufferA[gActiveBank][3]; + s32 i; + + switch (gBattleBufferA[gActiveBank][1]) + { + case 0: + { + u8 iv; + + SetMonData(&gPlayerParty[a], MON_DATA_SPECIES, (u8 *)&battlePokemon->species); + SetMonData(&gPlayerParty[a], MON_DATA_HELD_ITEM, (u8 *)&battlePokemon->item); + for (i = 0; i < 4; i++) + { + SetMonData(&gPlayerParty[a], MON_DATA_MOVE1 + i, (u8 *)&battlePokemon->moves[i]); + SetMonData(&gPlayerParty[a], MON_DATA_PP1 + i, (u8 *)&battlePokemon->pp[i]); + } + SetMonData(&gPlayerParty[a], MON_DATA_PP_BONUSES, (u8 *)&battlePokemon->ppBonuses); + SetMonData(&gPlayerParty[a], MON_DATA_FRIENDSHIP, (u8 *)&battlePokemon->friendship); + SetMonData(&gPlayerParty[a], MON_DATA_EXP, (u8 *)&battlePokemon->experience); + iv = battlePokemon->hpIV; + SetMonData(&gPlayerParty[a], MON_DATA_HP_IV, (u8 *)&iv); + iv = battlePokemon->attackIV; + SetMonData(&gPlayerParty[a], MON_DATA_ATK_IV, (u8 *)&iv); + iv = battlePokemon->defenseIV; + SetMonData(&gPlayerParty[a], MON_DATA_DEF_IV, (u8 *)&iv); + iv = battlePokemon->speedIV; + SetMonData(&gPlayerParty[a], MON_DATA_SPD_IV, (u8 *)&iv); + iv = battlePokemon->spAttackIV; + SetMonData(&gPlayerParty[a], MON_DATA_SPATK_IV, (u8 *)&iv); + iv = battlePokemon->spDefenseIV; + SetMonData(&gPlayerParty[a], MON_DATA_SPDEF_IV, (u8 *)&iv); + SetMonData(&gPlayerParty[a], MON_DATA_PERSONALITY, (u8 *)&battlePokemon->personality); + SetMonData(&gPlayerParty[a], MON_DATA_STATUS, (u8 *)&battlePokemon->status1); + SetMonData(&gPlayerParty[a], MON_DATA_LEVEL, (u8 *)&battlePokemon->level); + SetMonData(&gPlayerParty[a], MON_DATA_HP, (u8 *)&battlePokemon->hp); + SetMonData(&gPlayerParty[a], MON_DATA_MAX_HP, (u8 *)&battlePokemon->maxHP); + SetMonData(&gPlayerParty[a], MON_DATA_ATK, (u8 *)&battlePokemon->attack); + SetMonData(&gPlayerParty[a], MON_DATA_DEF, (u8 *)&battlePokemon->defense); + SetMonData(&gPlayerParty[a], MON_DATA_SPD, (u8 *)&battlePokemon->speed); + SetMonData(&gPlayerParty[a], MON_DATA_SPATK, (u8 *)&battlePokemon->spAttack); + SetMonData(&gPlayerParty[a], MON_DATA_SPDEF, (u8 *)&battlePokemon->spDefense); + } + break; + case 1: + SetMonData(&gPlayerParty[a], MON_DATA_SPECIES, &gBattleBufferA[gActiveBank][3]); + break; + case 2: + SetMonData(&gPlayerParty[a], MON_DATA_HELD_ITEM, &gBattleBufferA[gActiveBank][3]); + break; + case 3: + for (i = 0; i < 4; i++) + { + SetMonData(&gPlayerParty[a], MON_DATA_MOVE1 + i, (u8 *)&moveData->moves[i]); + SetMonData(&gPlayerParty[a], MON_DATA_PP1 + i, (u8 *)&moveData->pp[i]); + } + SetMonData(&gPlayerParty[a], MON_DATA_PP_BONUSES, &moveData->ppBonuses); + break; + case 4: + case 5: + case 6: + case 7: + SetMonData(&gPlayerParty[a], MON_DATA_MOVE1 + gBattleBufferA[gActiveBank][1] - 4, &gBattleBufferA[gActiveBank][3]); + break; + case 8: + SetMonData(&gPlayerParty[a], MON_DATA_PP1, &gBattleBufferA[gActiveBank][3]); + SetMonData(&gPlayerParty[a], MON_DATA_PP2, &gBattleBufferA[gActiveBank][4]); + SetMonData(&gPlayerParty[a], MON_DATA_PP3, &gBattleBufferA[gActiveBank][5]); + SetMonData(&gPlayerParty[a], MON_DATA_PP4, &gBattleBufferA[gActiveBank][6]); + SetMonData(&gPlayerParty[a], MON_DATA_PP_BONUSES, &gBattleBufferA[gActiveBank][7]); + break; + case 9: + case 10: + case 11: + case 12: + SetMonData(&gPlayerParty[a], MON_DATA_PP1 + gBattleBufferA[gActiveBank][1] - 9, &gBattleBufferA[gActiveBank][3]); + break; + case 17: + SetMonData(&gPlayerParty[a], MON_DATA_OT_ID, &gBattleBufferA[gActiveBank][3]); + break; + case 18: + SetMonData(&gPlayerParty[a], MON_DATA_EXP, &gBattleBufferA[gActiveBank][3]); + break; + case 19: + SetMonData(&gPlayerParty[a], MON_DATA_HP_EV, &gBattleBufferA[gActiveBank][3]); + break; + case 20: + SetMonData(&gPlayerParty[a], MON_DATA_ATK_EV, &gBattleBufferA[gActiveBank][3]); + break; + case 21: + SetMonData(&gPlayerParty[a], MON_DATA_DEF_EV, &gBattleBufferA[gActiveBank][3]); + break; + case 22: + SetMonData(&gPlayerParty[a], MON_DATA_SPD_EV, &gBattleBufferA[gActiveBank][3]); + break; + case 23: + SetMonData(&gPlayerParty[a], MON_DATA_SPATK_EV, &gBattleBufferA[gActiveBank][3]); + break; + case 24: + SetMonData(&gPlayerParty[a], MON_DATA_SPDEF_EV, &gBattleBufferA[gActiveBank][3]); + break; + case 25: + SetMonData(&gPlayerParty[a], MON_DATA_FRIENDSHIP, &gBattleBufferA[gActiveBank][3]); + break; + case 26: + SetMonData(&gPlayerParty[a], MON_DATA_POKERUS, &gBattleBufferA[gActiveBank][3]); + break; + case 27: + SetMonData(&gPlayerParty[a], MON_DATA_MET_LOCATION, &gBattleBufferA[gActiveBank][3]); + break; + case 28: + SetMonData(&gPlayerParty[a], MON_DATA_MET_LEVEL, &gBattleBufferA[gActiveBank][3]); + break; + case 29: + SetMonData(&gPlayerParty[a], MON_DATA_MET_GAME, &gBattleBufferA[gActiveBank][3]); + break; + case 30: + SetMonData(&gPlayerParty[a], MON_DATA_POKEBALL, &gBattleBufferA[gActiveBank][3]); + break; + case 31: + SetMonData(&gPlayerParty[a], MON_DATA_HP_IV, &gBattleBufferA[gActiveBank][3]); + SetMonData(&gPlayerParty[a], MON_DATA_ATK_IV, &gBattleBufferA[gActiveBank][4]); + SetMonData(&gPlayerParty[a], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBank][5]); + SetMonData(&gPlayerParty[a], MON_DATA_SPD_IV, &gBattleBufferA[gActiveBank][6]); + SetMonData(&gPlayerParty[a], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBank][7]); + SetMonData(&gPlayerParty[a], MON_DATA_SPDEF_IV, &gBattleBufferA[gActiveBank][8]); + break; + case 32: + SetMonData(&gPlayerParty[a], MON_DATA_HP_IV, &gBattleBufferA[gActiveBank][3]); + break; + case 33: + SetMonData(&gPlayerParty[a], MON_DATA_ATK_IV, &gBattleBufferA[gActiveBank][3]); + break; + case 34: + SetMonData(&gPlayerParty[a], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBank][3]); + break; + case 35: + SetMonData(&gPlayerParty[a], MON_DATA_SPD_IV, &gBattleBufferA[gActiveBank][3]); + break; + case 36: + SetMonData(&gPlayerParty[a], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBank][3]); + break; + case 37: + SetMonData(&gPlayerParty[a], MON_DATA_SPDEF_IV, &gBattleBufferA[gActiveBank][3]); + break; + case 38: + SetMonData(&gPlayerParty[a], MON_DATA_PERSONALITY, &gBattleBufferA[gActiveBank][3]); + break; + case 39: + SetMonData(&gPlayerParty[a], MON_DATA_CHECKSUM, &gBattleBufferA[gActiveBank][3]); + break; + case 40: + SetMonData(&gPlayerParty[a], MON_DATA_STATUS, &gBattleBufferA[gActiveBank][3]); + break; + case 41: + SetMonData(&gPlayerParty[a], MON_DATA_LEVEL, &gBattleBufferA[gActiveBank][3]); + break; + case 42: + SetMonData(&gPlayerParty[a], MON_DATA_HP, &gBattleBufferA[gActiveBank][3]); + break; + case 43: + SetMonData(&gPlayerParty[a], MON_DATA_MAX_HP, &gBattleBufferA[gActiveBank][3]); + break; + case 44: + SetMonData(&gPlayerParty[a], MON_DATA_ATK, &gBattleBufferA[gActiveBank][3]); + break; + case 45: + SetMonData(&gPlayerParty[a], MON_DATA_DEF, &gBattleBufferA[gActiveBank][3]); + break; + case 46: + SetMonData(&gPlayerParty[a], MON_DATA_SPD, &gBattleBufferA[gActiveBank][3]); + break; + case 47: + SetMonData(&gPlayerParty[a], MON_DATA_SPATK, &gBattleBufferA[gActiveBank][3]); + break; + case 48: + SetMonData(&gPlayerParty[a], MON_DATA_SPDEF, &gBattleBufferA[gActiveBank][3]); + break; + case 49: + SetMonData(&gPlayerParty[a], MON_DATA_COOL, &gBattleBufferA[gActiveBank][3]); + break; + case 50: + SetMonData(&gPlayerParty[a], MON_DATA_BEAUTY, &gBattleBufferA[gActiveBank][3]); + break; + case 51: + SetMonData(&gPlayerParty[a], MON_DATA_CUTE, &gBattleBufferA[gActiveBank][3]); + break; + case 52: + SetMonData(&gPlayerParty[a], MON_DATA_SMART, &gBattleBufferA[gActiveBank][3]); + break; + case 53: + SetMonData(&gPlayerParty[a], MON_DATA_TOUGH, &gBattleBufferA[gActiveBank][3]); + break; + case 54: + SetMonData(&gPlayerParty[a], MON_DATA_SHEEN, &gBattleBufferA[gActiveBank][3]); + break; + case 55: + SetMonData(&gPlayerParty[a], MON_DATA_COOL_RIBBON, &gBattleBufferA[gActiveBank][3]); + break; + case 56: + SetMonData(&gPlayerParty[a], MON_DATA_BEAUTY_RIBBON, &gBattleBufferA[gActiveBank][3]); + break; + case 57: + SetMonData(&gPlayerParty[a], MON_DATA_CUTE_RIBBON, &gBattleBufferA[gActiveBank][3]); + break; + case 58: + SetMonData(&gPlayerParty[a], MON_DATA_SMART_RIBBON, &gBattleBufferA[gActiveBank][3]); + break; + case 59: + SetMonData(&gPlayerParty[a], MON_DATA_TOUGH_RIBBON, &gBattleBufferA[gActiveBank][3]); + break; + } + sub_80324F8(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); +} + +void PlayerHandlecmd3(void) +{ + u8 *dst = (u8 *)&gPlayerParty[gBattlePartyID[gActiveBank]] + gBattleBufferA[gActiveBank][1]; + u8 i; + + for (i = 0; i < gBattleBufferA[gActiveBank][2]; i++) + dst[i] = gBattleBufferA[gActiveBank][3 + i]; + PlayerBufferExecCompleted(); +} + +void PlayerHandleLoadPokeSprite(void) +{ + BattleLoadPlayerMonSprite(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); + gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = gActiveBank; + gBattleBankFunc[gActiveBank] = bx_0802E404; +} + +void PlayerHandleSendOutPoke(void) +{ + sub_8032AA8(gActiveBank, gBattleBufferA[gActiveBank][2]); + gBattlePartyID[gActiveBank] = gBattleBufferA[gActiveBank][1]; + BattleLoadPlayerMonSprite(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); + gActionSelectionCursor[gActiveBank] = 0; + gMoveSelectionCursor[gActiveBank] = 0; + sub_802F934(gActiveBank, gBattleBufferA[gActiveBank][2]); + gBattleBankFunc[gActiveBank] = sub_802D798; +} + +void sub_802F934(u8 bank, u8 b) +{ + u16 species; + + sub_8032AA8(bank, b); + gBattlePartyID[bank] = gBattleBufferA[bank][1]; + species = GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_SPECIES); + gUnknown_0300434C[bank] = CreateInvisibleSpriteWithCallback(sub_80312F0); + GetMonSpriteTemplate_803C56C(species, GetBankIdentity(bank)); + gObjectBankIDs[bank] = CreateSprite( + &gUnknown_02024E8C, + sub_8077ABC(bank, 2), + sub_8077F68(bank), + sub_8079E90(bank)); + gSprites[gUnknown_0300434C[bank]].data1 = gObjectBankIDs[bank]; + gSprites[gObjectBankIDs[bank]].data0 = bank; + gSprites[gObjectBankIDs[bank]].data2 = species; + gSprites[gObjectBankIDs[bank]].oam.paletteNum = bank; + StartSpriteAnim(&gSprites[gObjectBankIDs[bank]], gBattleMonForms[bank]); + gSprites[gObjectBankIDs[bank]].invisible = TRUE; + gSprites[gObjectBankIDs[bank]].callback = SpriteCallbackDummy; + gSprites[gUnknown_0300434C[bank]].data0 = sub_8046400(0, 0xFF); +} + +void PlayerHandleReturnPokeToBall(void) +{ + if (gBattleBufferA[gActiveBank][1] == 0) + { + ewram17810[gActiveBank].unk4 = 0; + gBattleBankFunc[gActiveBank] = sub_802FB2C; + } + else + { + FreeSpriteOamMatrix(&gSprites[gObjectBankIDs[gActiveBank]]); + DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]); + sub_8043DB0(gHealthboxIDs[gActiveBank]); + PlayerBufferExecCompleted(); + } +} + +void sub_802FB2C(void) +{ + switch (ewram17810[gActiveBank].unk4) + { + case 0: + if (ewram17800[gActiveBank].substituteSprite) + move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5); + ewram17810[gActiveBank].unk4 = 1; + break; + case 1: + if (!ewram17810[gActiveBank].unk0_6) + { + ewram17810[gActiveBank].unk4 = 0; + move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 1); + gBattleBankFunc[gActiveBank] = sub_802DEAC; + } + } +} + +void PlayerHandleTrainerThrow(void) +{ + s16 r7; + + if (gBattleTypeFlags & BATTLE_TYPE_MULTI) + { + if (GetBankIdentity(gActiveBank) & 2) + r7 = 16; + else + r7 = -16; + } + else + { + r7 = 0; + } + LoadPlayerTrainerBankSprite(gSaveBlock2.playerGender, gActiveBank); + GetMonSpriteTemplate_803C5A0(gSaveBlock2.playerGender, GetBankIdentity(gActiveBank)); + gObjectBankIDs[gActiveBank] = CreateSprite( + &gUnknown_02024E8C, + r7 + 80, + (8 - gTrainerBackPicCoords[gSaveBlock2.playerGender].coords) * 4 + 80, + sub_8079E90(gActiveBank)); + gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = gActiveBank; + gSprites[gObjectBankIDs[gActiveBank]].pos2.x = 240; + gSprites[gObjectBankIDs[gActiveBank]].data0 = -2; + gSprites[gObjectBankIDs[gActiveBank]].callback = sub_80313A0; + gBattleBankFunc[gActiveBank] = sub_802D204; +} + +void PlayerHandleTrainerSlide(void) +{ + LoadPlayerTrainerBankSprite(gSaveBlock2.playerGender, gActiveBank); + GetMonSpriteTemplate_803C5A0(gSaveBlock2.playerGender, GetBankIdentity(gActiveBank)); + gObjectBankIDs[gActiveBank] = CreateSprite( + &gUnknown_02024E8C, + 80, + (8 - gTrainerBackPicCoords[gSaveBlock2.playerGender].coords) * 4 + 80, + 30); + gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = gActiveBank; + gSprites[gObjectBankIDs[gActiveBank]].pos2.x = -96; + gSprites[gObjectBankIDs[gActiveBank]].data0 = 2; + gSprites[gObjectBankIDs[gActiveBank]].callback = sub_80313A0; + gBattleBankFunc[gActiveBank] = sub_802D23C; +} + +void PlayerHandleTrainerSlideBack(void) +{ + oamt_add_pos2_onto_pos1(&gSprites[gObjectBankIDs[gActiveBank]]); + gSprites[gObjectBankIDs[gActiveBank]].data0 = 50; + gSprites[gObjectBankIDs[gActiveBank]].data2 = -40; + gSprites[gObjectBankIDs[gActiveBank]].data4 = gSprites[gObjectBankIDs[gActiveBank]].pos1.y; + gSprites[gObjectBankIDs[gActiveBank]].callback = sub_8078B34; + StoreSpriteCallbackInData6(&gSprites[gObjectBankIDs[gActiveBank]], SpriteCallbackDummy); + StartSpriteAnim(&gSprites[gObjectBankIDs[gActiveBank]], 1); + gBattleBankFunc[gActiveBank] = sub_802D274; +} + +void PlayerHandlecmd10(void) +{ + if (ewram17810[gActiveBank].unk4 == 0) + { + if (ewram17800[gActiveBank].substituteSprite) + move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5); + ewram17810[gActiveBank].unk4++; + } + else + { + if (ewram17810[gActiveBank].unk0_6 == 0) + { + ewram17810[gActiveBank].unk4 = 0; + sub_80324F8(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); + PlaySE12WithPanning(SE_POKE_DEAD, -64); + gSprites[gObjectBankIDs[gActiveBank]].data1 = 0; + gSprites[gObjectBankIDs[gActiveBank]].data2 = 5; + gSprites[gObjectBankIDs[gActiveBank]].callback = sub_80105EC; + gBattleBankFunc[gActiveBank] = sub_802DE10; + } + } +} + +void PlayerHandlecmd11(void) +{ + BeginNormalPaletteFade(0xFFFFFFFF, 2, 0, 16, 0); + PlayerBufferExecCompleted(); +} + +void PlayerHandlecmd12(void) +{ + ewram17840.unk8 = 4; + gDoingBattleAnim = 1; + move_anim_start_t4(gActiveBank, gActiveBank, GetBankByPlayerAI(1), 3); + gBattleBankFunc[gActiveBank] = bx_wait_t1; +} + +void PlayerHandleBallThrow(void) +{ + u8 var = gBattleBufferA[gActiveBank][1]; + + ewram17840.unk8 = var; + gDoingBattleAnim = 1; + move_anim_start_t4(gActiveBank, gActiveBank, GetBankByPlayerAI(1), 3); + gBattleBankFunc[gActiveBank] = bx_wait_t1; +} + +void PlayerHandlePuase(void) +{ + u8 var = gBattleBufferA[gActiveBank][1]; + + // WTF is this?? + while (var != 0) + var--; + + PlayerBufferExecCompleted(); +} + +void PlayerHandleMoveAnimation(void) +{ + if (!mplay_80342A4(gActiveBank)) + { + u16 r0 = gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8); + + gUnknown_0202F7C4 = gBattleBufferA[gActiveBank][3]; + gMovePowerMoveAnim = gBattleBufferA[gActiveBank][4] | (gBattleBufferA[gActiveBank][5] << 8); + gMoveDmgMoveAnim = gBattleBufferA[gActiveBank][6] | (gBattleBufferA[gActiveBank][7] << 8) | (gBattleBufferA[gActiveBank][8] << 16) | (gBattleBufferA[gActiveBank][9] << 24); + gHappinessMoveAnim = gBattleBufferA[gActiveBank][10]; + gWeatherMoveAnim = gBattleBufferA[gActiveBank][12] | (gBattleBufferA[gActiveBank][13] << 8); + gDisableStructMoveAnim = (u32 *)&gBattleBufferA[gActiveBank][16]; + gPID_perBank[gActiveBank] = *gDisableStructMoveAnim; + if (sub_8031720(r0, gUnknown_0202F7C4) != 0) + { + // Dead code. sub_8031720 always returns 0. + PlayerBufferExecCompleted(); + } + else + { + ewram17810[gActiveBank].unk4 = 0; + gBattleBankFunc[gActiveBank] = sub_8030190; + } + } +} + +void sub_8030190(void) +{ + u16 r4 = gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8); + u8 r7 = gBattleBufferA[gActiveBank][11]; + + switch (ewram17810[gActiveBank].unk4) + { + case 0: + if (ewram17800[gActiveBank].substituteSprite == 1 && ewram17800[gActiveBank].unk0_3 == 0) + { + ewram17800[gActiveBank].unk0_3 = 1; + move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5); + } + ewram17810[gActiveBank].unk4 = 1; + break; + case 1: + if (ewram17810[gActiveBank].unk0_6 == 0) + { + sub_80326EC(0); + ExecuteMoveAnim(r4); + ewram17810[gActiveBank].unk4 = 2; + } + break; + case 2: + gAnimScriptCallback(); + if (!gAnimScriptActive) + { + sub_80326EC(1); + if (ewram17800[gActiveBank].substituteSprite == 1 && r7 < 2) + { + move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 6); + ewram17800[gActiveBank].unk0_3 = 0; + } + ewram17810[gActiveBank].unk4 = 3; + } + break; + case 3: + if (ewram17810[gActiveBank].unk0_6 == 0) + { + sub_8031F24(); + sub_80324BC(gActiveBank, gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8)); + ewram17810[gActiveBank].unk4 = 0; + PlayerBufferExecCompleted(); + } + break; + } +} + +void PlayerHandlePrintString(void) +{ + gUnknown_030042A4 = 0; + gUnknown_030042A0 = 0; + BufferStringBattle(*(u16 *)&gBattleBufferA[gActiveBank][2]); + sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 0x90, 2, 15); + gBattleBankFunc[gActiveBank] = sub_802DF18; +} + +void PlayerHandlePrintStringPlayerOnly(void) +{ + if (GetBankSide(gActiveBank) == 0) + PlayerHandlePrintString(); + else + PlayerBufferExecCompleted(); +} + +void PlayerHandlecmd18(void) +{ + int r4; + + gUnknown_030042A4 = 0; + gUnknown_030042A0 = 160; + FillWindowRect(&gUnknown_03004210, 10, 2, 15, 27, 18); + FillWindowRect(&gUnknown_03004210, 10, 2, 35, 16, 38); + + gBattleBankFunc[gActiveBank] = sub_802C098; + + InitWindow(&gUnknown_03004210, gUnknown_08400CF3, 400, 18, 35); + sub_8002F44(&gUnknown_03004210); + sub_814A5C0(0, 0xFFFF, 12, 11679, 0); + + for (r4 = 0; r4 < 4; r4++) + nullsub_8(r4); + + sub_802E3E4(gActionSelectionCursor[gActiveBank], 0); + + StrCpyDecodeToDisplayedStringBattle((u8 *) gUnknown_08400CA8); + InitWindow(&gUnknown_03004210, gDisplayedStringBattle, SUB_803037C_TILE_DATA_OFFSET, 2, 35); + sub_8002F44(&gUnknown_03004210); +} + +void PlayerHandlecmd19() +{ +} + +void PlayerHandlecmd20(void) +{ + sub_814A5C0(0, 0xFFFF, 12, 0x2D9F, 0); + sub_80304A8(); + gBattleBankFunc[gActiveBank] = sub_802C68C; +} + +void sub_80304A8(void) +{ + gUnknown_030042A4 = 0; + gUnknown_030042A0 = 320; + sub_802E1B0(); + gUnknown_03004344 = 0xFF; + sub_802E3B4(gMoveSelectionCursor[gActiveBank], 0); + if (gBattleBufferA[gActiveBank][2] != 1) + { + InitWindow(&gUnknown_03004210, gUnknown_08400D38, 656, 23, 55); + sub_8002F44(&gUnknown_03004210); + } + sub_802E220(); + sub_802E2D4(); +} + +void PlayerHandleOpenBag(void) +{ + s32 i; + + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); + gBattleBankFunc[gActiveBank] = sub_802E004; + gBankInMenu = gActiveBank; + for (i = 0; i < 3; i++) + gUnknown_02038470[i] = gBattleBufferA[gActiveBank][1 + i]; +} + +void PlayerHandlecmd22(void) +{ + s32 i; + + gUnknown_0300434C[gActiveBank] = CreateTask(TaskDummy, 0xFF); + gTasks[gUnknown_0300434C[gActiveBank]].data[0] = gBattleBufferA[gActiveBank][1] & 0xF; + ewram[0x16054] = gBattleBufferA[gActiveBank][1] >> 4; + ewram[0x1609D] = gBattleBufferA[gActiveBank][2]; + ewram[0x160C0] = gBattleBufferA[gActiveBank][3]; + for (i = 0; i < 3; i++) + gUnknown_02038470[i] = gBattleBufferA[gActiveBank][4 + i]; + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); + gBattleBankFunc[gActiveBank] = sub_802DF30; + gBankInMenu = gActiveBank; +} + +void PlayerHandlecmd23(void) +{ + BattleMusicStop(); + BeginNormalPaletteFade(0xFFFFFFFF, 2, 0, 16, 0); + PlayerBufferExecCompleted(); +} + +void PlayerHandleHealthBarUpdate(void) +{ + s16 r7; + + load_gfxc_health_bar(0); + r7 = gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8); + if (r7 != 0x7FFF) + { + u32 maxHP = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_MAX_HP); + u32 curHP = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_HP); + + sub_8043D84(gActiveBank, gHealthboxIDs[gActiveBank], maxHP, curHP, r7); + } + else + { + u32 maxHP = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_MAX_HP); + + sub_8043D84(gActiveBank, gHealthboxIDs[gActiveBank], maxHP, 0, r7); + sub_80440EC(gHealthboxIDs[gActiveBank], 0, 0); + } + gBattleBankFunc[gActiveBank] = bx_t1_healthbar_update; +} + +void PlayerHandleExpBarUpdate(void) +{ + u8 r7 = gBattleBufferA[gActiveBank][1]; + + if (GetMonData(&gPlayerParty[r7], MON_DATA_LEVEL) >= 100) + { + PlayerBufferExecCompleted(); + } + else + { + u16 r4; + u8 taskId; + + load_gfxc_health_bar(1); + GetMonData(&gPlayerParty[r7], MON_DATA_SPECIES); // unused return value + r4 = gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8); + taskId = CreateTask(sub_802D924, 10); + gTasks[taskId].data[0] = r7; + gTasks[taskId].data[1] = r4; + gTasks[taskId].data[2] = gActiveBank; + gBattleBankFunc[gActiveBank] = nullsub_91; + } +} + +void PlayerHandleStatusIconUpdate(void) +{ + if (!mplay_80342A4(gActiveBank)) + { + sub_8045A5C(gHealthboxIDs[gActiveBank], &gPlayerParty[gBattlePartyID[gActiveBank]], 9); + ewram17810[gActiveBank].unk0_4 = 0; + gBattleBankFunc[gActiveBank] = sub_802E434; + } +} + +void PlayerHandleStatusAnimation(void) +{ + if (!mplay_80342A4(gActiveBank)) + { + move_anim_start_t2_for_situation( + gBattleBufferA[gActiveBank][1], + gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8) | (gBattleBufferA[gActiveBank][4] << 16) | (gBattleBufferA[gActiveBank][5] << 24)); + gBattleBankFunc[gActiveBank] = sub_802E434; + } +} + +void PlayerHandleStatusXor(void) +{ + u8 val = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_STATUS) ^ gBattleBufferA[gActiveBank][1]; + + SetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_STATUS, &val); + PlayerBufferExecCompleted(); +} + +void PlayerHandlecmd29(void) +{ + PlayerBufferExecCompleted(); +} + +void PlayerHandleDMATransfer(void) +{ + u32 val1 = gBattleBufferA[gActiveBank][1] + | (gBattleBufferA[gActiveBank][2] << 8) + | (gBattleBufferA[gActiveBank][3] << 16) + | (gBattleBufferA[gActiveBank][4] << 24); + u16 val2 = gBattleBufferA[gActiveBank][5] | (gBattleBufferA[gActiveBank][6] << 8); + + const u8 *src = &gBattleBufferA[gActiveBank][7]; + u8 *dst = (u8 *)val1; + u32 size = val2; + + while (1) + { + if (size <= 0x1000) + { + DmaCopy16(3, src, dst, size); + break; + } + DmaCopy16(3, src, dst, 0x1000); + src += 0x1000; + dst += 0x1000; + size -= 0x1000; + } + PlayerBufferExecCompleted(); +} + +void PlayerHandlecmd31(void) +{ + PlayBGM(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8)); + PlayerBufferExecCompleted(); +} + +void PlayerHandlecmd32(void) +{ + PlayerBufferExecCompleted(); +} + +void PlayerHandlecmd33(void) +{ + Emitcmd33(1, 0, 0); + PlayerBufferExecCompleted(); +} + +void PlayerHandlecmd34(void) +{ + Emitcmd34(1, 0, 0); + PlayerBufferExecCompleted(); +} + +void PlayerHandlecmd35(void) +{ + Emitcmd35(1, 0); + PlayerBufferExecCompleted(); +} + +void PlayerHandlecmd36(void) +{ + Emitcmd36(1, 0); + PlayerBufferExecCompleted(); +} + +void PlayerHandlecmd37(void) +{ + gUnknown_020238C8.unk0_0 = 0; + PlayerBufferExecCompleted(); +} + +void PlayerHandlecmd38(void) +{ + gUnknown_020238C8.unk0_0 = gBattleBufferA[gActiveBank][1]; + PlayerBufferExecCompleted(); +} + +void PlayerHandlecmd39(void) +{ + gUnknown_020238C8.unk0_7 = 0; + PlayerBufferExecCompleted(); +} + +void PlayerHandlecmd40(void) +{ + gUnknown_020238C8.unk0_7 ^= 1; + PlayerBufferExecCompleted(); +} + +void PlayerHandleHitAnimation(void) +{ + if (gSprites[gObjectBankIDs[gActiveBank]].invisible == TRUE) + { + PlayerBufferExecCompleted(); + } + else + { + gDoingBattleAnim = 1; + gSprites[gObjectBankIDs[gActiveBank]].data1 = 0; + sub_8047858(gActiveBank); + gBattleBankFunc[gActiveBank] = bx_blink_t1; + } +} + +void PlayerHandlecmd42(void) +{ + PlayerBufferExecCompleted(); +} + +void PlayerHandleEffectivenessSound(void) +{ + s8 pan; + + if (GetBankSide(gActiveBank) == 0) + pan = -64; + else + pan = 63; + PlaySE12WithPanning(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8), pan); + PlayerBufferExecCompleted(); +} + +void PlayerHandlecmd44(void) +{ + PlayFanfare(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8)); + PlayerBufferExecCompleted(); +} + +void PlayerHandleFaintingCry(void) +{ + u16 species = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES); + + PlayCry3(species, -25, 5); + PlayerBufferExecCompleted(); +} + +void PlayerHandleIntroSlide(void) +{ + sub_80E43C0(gBattleBufferA[gActiveBank][1]); + gUnknown_02024DE8 |= 1; + PlayerBufferExecCompleted(); +} + +void PlayerHandleTrainerBallThrow(void) +{ + u8 paletteNum; + u8 taskId; + + oamt_add_pos2_onto_pos1(&gSprites[gObjectBankIDs[gActiveBank]]); + gSprites[gObjectBankIDs[gActiveBank]].data0 = 50; + gSprites[gObjectBankIDs[gActiveBank]].data2 = -40; + gSprites[gObjectBankIDs[gActiveBank]].data4 = gSprites[gObjectBankIDs[gActiveBank]].pos1.y; + gSprites[gObjectBankIDs[gActiveBank]].callback = sub_8078B34; + gSprites[gObjectBankIDs[gActiveBank]].data5 = gActiveBank; + StoreSpriteCallbackInData6(&gSprites[gObjectBankIDs[gActiveBank]], sub_8030E38); + StartSpriteAnim(&gSprites[gObjectBankIDs[gActiveBank]], 1); + paletteNum = AllocSpritePalette(0xD6F8); + LoadCompressedPalette(gTrainerBackPicPaletteTable[gSaveBlock2.playerGender].data, 0x100 + paletteNum * 16, 32); + gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = paletteNum; + taskId = CreateTask(task05_08033660, 5); + gTasks[taskId].data[0] = gActiveBank; + if (ewram17810[gActiveBank].unk0_0) + gTasks[gUnknown_02024E68[gActiveBank]].func = sub_8044CA0; + ewram17810[4].unk9 |= 1; + gBattleBankFunc[gActiveBank] = nullsub_91; +} + +void sub_8030E38(struct Sprite *sprite) +{ + u8 r4 = sprite->data5; + + FreeSpriteOamMatrix(sprite); + FreeSpritePaletteByTag(GetSpritePaletteTagByPaletteNum(sprite->oam.paletteNum)); + DestroySprite(sprite); + BattleLoadPlayerMonSprite(&gPlayerParty[gBattlePartyID[r4]], r4); + StartSpriteAnim(&gSprites[gObjectBankIDs[r4]], 0); +} + +void task05_08033660(u8 taskId) +{ + if (gTasks[taskId].data[1] < 31) + { + gTasks[taskId].data[1]++; + } + else + { + u8 savedActiveBank = gActiveBank; + + gActiveBank = gTasks[taskId].data[0]; + if (!IsDoubleBattle() || (gBattleTypeFlags & 0x40)) + { + gBattleBufferA[gActiveBank][1] = gBattlePartyID[gActiveBank]; + sub_802F934(gActiveBank, 0); + } + else + { + gBattleBufferA[gActiveBank][1] = gBattlePartyID[gActiveBank]; + sub_802F934(gActiveBank, 0); + gActiveBank ^= 2; + gBattleBufferA[gActiveBank][1] = gBattlePartyID[gActiveBank]; + BattleLoadPlayerMonSprite(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); + sub_802F934(gActiveBank, 0); + gActiveBank ^= 2; + } + gBattleBankFunc[gActiveBank] = sub_802D500; + gActiveBank = savedActiveBank; + DestroyTask(taskId); + } +} + +void PlayerHandlecmd48(void) +{ + if (gBattleBufferA[gActiveBank][1] != 0 && GetBankSide(gActiveBank) == 0) + { + PlayerBufferExecCompleted(); + } + else + { + ewram17810[gActiveBank].unk0_0 = 1; + gUnknown_02024E68[gActiveBank] = sub_8044804(gActiveBank, (struct BattleInterfaceStruct2 *)&gBattleBufferA[gActiveBank][4], gBattleBufferA[gActiveBank][1], gBattleBufferA[gActiveBank][2]); + ewram17810[gActiveBank].unk5 = 0; + if (gBattleBufferA[gActiveBank][2] != 0) + ewram17810[gActiveBank].unk5 = 0x5D; + gBattleBankFunc[gActiveBank] = sub_8031064; + } +} + +void sub_8031064(void) +{ + if (ewram17810[gActiveBank].unk5++ > 0x5C) + { + ewram17810[gActiveBank].unk5 = 0; + PlayerBufferExecCompleted(); + } +} + +void PlayerHandlecmd49(void) +{ + if (ewram17810[gActiveBank].unk0_0) + gTasks[gUnknown_02024E68[gActiveBank]].func = sub_8044CA0; + PlayerBufferExecCompleted(); +} + +void PlayerHandlecmd50(void) +{ + dp11b_obj_free(gActiveBank, 1); + dp11b_obj_free(gActiveBank, 0); + PlayerBufferExecCompleted(); +} + +void PlayerHandleSpriteInvisibility(void) +{ + if (AnimBankSpriteExists(gActiveBank)) + { + gSprites[gObjectBankIDs[gActiveBank]].invisible = gBattleBufferA[gActiveBank][1]; + sub_8031F88(gActiveBank); + } + PlayerBufferExecCompleted(); +} + +void PlayerHandleBattleAnimation(void) +{ + if (!mplay_80342A4(gActiveBank)) + { + u8 val2 = gBattleBufferA[gActiveBank][1]; + u16 val = gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8); + + if (move_anim_start_t3(gActiveBank, gActiveBank, gActiveBank, val2, val)) + PlayerBufferExecCompleted(); + else + gBattleBankFunc[gActiveBank] = sub_802E460; + } +} + +void PlayerHandleLinkStandbyMsg(void) +{ + switch (gBattleBufferA[gActiveBank][1]) + { + case 0: + b_link_standby_message(); + // fall through + case 1: + dp11b_obj_free(gActiveBank, 1); + dp11b_obj_free(gActiveBank, 0); + break; + case 2: + b_link_standby_message(); + break; + } + PlayerBufferExecCompleted(); +} + +void PlayerHandleResetActionMoveSelection(void) +{ + switch (gBattleBufferA[gActiveBank][1]) + { + case 0: + gActionSelectionCursor[gActiveBank] = 0; + gMoveSelectionCursor[gActiveBank] = 0; + break; + case 1: + gActionSelectionCursor[gActiveBank] = 0; + break; + case 2: + gMoveSelectionCursor[gActiveBank] = 0; + break; + } + PlayerBufferExecCompleted(); +} + +void PlayerHandlecmd55(void) +{ + gBattleOutcome = gBattleBufferA[gActiveBank][1]; + FadeOutMapMusic(5); + BeginFastPaletteFade(3); + PlayerBufferExecCompleted(); + gBattleBankFunc[gActiveBank] = sub_802D18C; +} + +void PlayerHandlecmd56(void) +{ +} diff --git a/src/battle/battle_controller_safari.c b/src/battle/battle_controller_safari.c new file mode 100644 index 000000000..e05578c31 --- /dev/null +++ b/src/battle/battle_controller_safari.c @@ -0,0 +1,709 @@ +#include "global.h" +#include "battle_anim_81258BC.h" +#include "battle.h" +#include "battle_message.h" +#include "data2.h" +#include "link.h" +#include "main.h" +#include "menu_cursor.h" +#include "palette.h" +#include "rom3.h" +#include "songs.h" +#include "sound.h" +#include "text.h" +#include "util.h" + +extern struct Window gUnknown_03004210; +extern u8 gDisplayedStringBattle[]; +extern u8 gActionSelectionCursor[]; + +extern const u8 gUnknown_08400CBB[]; +extern u8 gActiveBank; +extern const u8 gUnknown_08400D15[]; + +extern void *gBattleBankFunc[]; +extern u16 gUnknown_030042A0; +extern u16 gUnknown_030042A4; +extern u8 gBattleBufferA[][0x200]; +extern bool8 gDoingBattleAnim; +extern u8 gObjectBankIDs[]; +extern struct SpriteTemplate gUnknown_02024E8C; +extern u16 gBattleTypeFlags; +extern u32 gBattleExecBuffer; +extern u16 gScriptItemId; +extern MainCallback gPreBattleCallback1; +extern u8 gBankInMenu; +extern u8 gHealthboxIDs[]; +extern u16 gBattlePartyID[]; +extern u16 gUnknown_02024DE8; +extern u8 gBattleOutcome; + +extern u8 GetBankSide(u8); +extern u8 GetBankByPlayerAI(u8); +extern u8 GetBankIdentity(u8); +extern void LoadPlayerTrainerBankSprite(); +extern u8 sub_8079E90(); +extern void sub_80313A0(struct Sprite *); +extern void sub_810BADC(void); +extern void sub_8045A5C(); +extern void sub_80E43C0(); +extern void sub_804777C(); +extern void sub_8043DFC(); +extern bool8 move_anim_start_t3(); + +#if ENGLISH +#define SUB_812BB10_TILE_DATA_OFFSET 440 +#elif GERMAN +#define SUB_812BB10_TILE_DATA_OFFSET 444 +#endif + +// this file's functions +void SafariHandleGetAttributes(void); +void SafariHandlecmd1(void); +void SafariHandleSetAttributes(void); +void SafariHandlecmd3(void); +void SafariHandleLoadPokeSprite(void); +void SafariHandleSendOutPoke(void); +void SafariHandleReturnPokeToBall(void); +void SafariHandleTrainerThrow(void); +void SafariHandleTrainerSlide(void); +void SafariHandleTrainerSlideBack(void); +void SafariHandlecmd10(void); +void SafariHandlecmd11(void); +void SafariHandlecmd12(void); +void SafariHandleBallThrow(void); +void SafariHandlePuase(void); +void SafariHandleMoveAnimation(void); +void SafariHandlePrintString(void); +void SafariHandlePrintStringPlayerOnly(void); +void SafariHandlecmd18(void); +void SafariHandlecmd19(void); +void SafariHandlecmd20(void); +void SafariHandleOpenBag(void); +void SafariHandlecmd22(void); +void SafariHandlecmd23(void); +void SafariHandleHealthBarUpdate(void); +void SafariHandleExpBarUpdate(void); +void SafariHandleStatusIconUpdate(void); +void SafariHandleStatusAnimation(void); +void SafariHandleStatusXor(void); +void SafariHandlecmd29(void); +void SafariHandleDMATransfer(void); +void SafariHandlecmd31(void); +void SafariHandlecmd32(void); +void SafariHandlecmd33(void); +void SafariHandlecmd34(void); +void SafariHandlecmd35(void); +void SafariHandlecmd36(void); +void SafariHandlecmd37(void); +void SafariHandlecmd38(void); +void SafariHandlecmd39(void); +void SafariHandlecmd40(void); +void SafariHandleHitAnimation(void); +void SafariHandlecmd42(void); +void SafariHandleEffectivenessSound(void); +void SafariHandlecmd44(void); +void SafariHandleFaintingCry(void); +void SafariHandleIntroSlide(void); +void SafariHandleTrainerBallThrow(void); +void SafariHandlecmd48(void); +void SafariHandlecmd49(void); +void SafariHandlecmd50(void); +void SafariHandleSpriteInvisibility(void); +void SafariHandleBattleAnimation(void); +void SafariHandleLinkStandbyMsg(void); +void SafariHandleResetActionMoveSelection(void); +void SafariHandlecmd55(void); +void SafariHandlecmd56(void); + +// const data +typedef void (*BattleBufferCmd) (void); +const BattleBufferCmd gSafariBufferCommands[] = +{ + SafariHandleGetAttributes, + SafariHandlecmd1, + SafariHandleSetAttributes, + SafariHandlecmd3, + SafariHandleLoadPokeSprite, + SafariHandleSendOutPoke, + SafariHandleReturnPokeToBall, + SafariHandleTrainerThrow, + SafariHandleTrainerSlide, + SafariHandleTrainerSlideBack, + SafariHandlecmd10, + SafariHandlecmd11, + SafariHandlecmd12, + SafariHandleBallThrow, + SafariHandlePuase, + SafariHandleMoveAnimation, + SafariHandlePrintString, + SafariHandlePrintStringPlayerOnly, + SafariHandlecmd18, + SafariHandlecmd19, + SafariHandlecmd20, + SafariHandleOpenBag, + SafariHandlecmd22, + SafariHandlecmd23, + SafariHandleHealthBarUpdate, + SafariHandleExpBarUpdate, + SafariHandleStatusIconUpdate, + SafariHandleStatusAnimation, + SafariHandleStatusXor, + SafariHandlecmd29, + SafariHandleDMATransfer, + SafariHandlecmd31, + SafariHandlecmd32, + SafariHandlecmd33, + SafariHandlecmd34, + SafariHandlecmd35, + SafariHandlecmd36, + SafariHandlecmd37, + SafariHandlecmd38, + SafariHandlecmd39, + SafariHandlecmd40, + SafariHandleHitAnimation, + SafariHandlecmd42, + SafariHandleEffectivenessSound, + SafariHandlecmd44, + SafariHandleFaintingCry, + SafariHandleIntroSlide, + SafariHandleTrainerBallThrow, + SafariHandlecmd48, + SafariHandlecmd49, + SafariHandlecmd50, + SafariHandleSpriteInvisibility, + SafariHandleBattleAnimation, + SafariHandleLinkStandbyMsg, + SafariHandleResetActionMoveSelection, + SafariHandlecmd55, + SafariHandlecmd56, +}; +// code + +void SafariBufferExecCompleted(void); +void bx_wait_t6(void); +void sub_812B65C(void); +void SafariBufferRunCommand(void); +void sub_812B758(void); + +void unref_sub_812B464(void) +{ +} + +void SetBankFuncToSafariBufferRunCommand(void) +{ + gBattleBankFunc[gActiveBank] = SafariBufferRunCommand; +} + +void SafariBufferRunCommand(void) +{ + if (gBattleExecBuffer & gBitTable[gActiveBank]) + { + if (gBattleBufferA[gActiveBank][0] < 0x39) + gSafariBufferCommands[gBattleBufferA[gActiveBank][0]](); + else + SafariBufferExecCompleted(); + } +} + +void bx_battle_menu_t6_2(void) +{ + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + DestroyMenuCursor(); + + // Useless switch statement. + switch (gActionSelectionCursor[gActiveBank]) + { + case 0: + Emitcmd33(1, 5, 0); + break; + case 1: + Emitcmd33(1, 6, 0); + break; + case 2: + Emitcmd33(1, 7, 0); + break; + case 3: + Emitcmd33(1, 8, 0); + break; + } + SafariBufferExecCompleted(); + } + else if (gMain.newKeys & DPAD_LEFT) + { + if (gActionSelectionCursor[gActiveBank] & 1) + { + PlaySE(SE_SELECT); + nullsub_8(gActionSelectionCursor[gActiveBank]); + gActionSelectionCursor[gActiveBank] ^= 1; + sub_802E3E4(gActionSelectionCursor[gActiveBank], 0); + } + } + else if (gMain.newKeys & DPAD_RIGHT) + { + if (!(gActionSelectionCursor[gActiveBank] & 1)) + { + PlaySE(SE_SELECT); + nullsub_8(gActionSelectionCursor[gActiveBank]); + gActionSelectionCursor[gActiveBank] ^= 1; + sub_802E3E4(gActionSelectionCursor[gActiveBank], 0); + } + } + else if (gMain.newKeys & DPAD_UP) + { + if (gActionSelectionCursor[gActiveBank] & 2) + { + PlaySE(SE_SELECT); + nullsub_8(gActionSelectionCursor[gActiveBank]); + gActionSelectionCursor[gActiveBank] ^= 2; + sub_802E3E4(gActionSelectionCursor[gActiveBank], 0); + } + } + else if (gMain.newKeys & DPAD_DOWN) + { + if (!(gActionSelectionCursor[gActiveBank] & 2)) + { + PlaySE(SE_SELECT); + nullsub_8(gActionSelectionCursor[gActiveBank]); + gActionSelectionCursor[gActiveBank] ^= 2; + sub_802E3E4(gActionSelectionCursor[gActiveBank], 0); + } + } +} + +void sub_812B65C(void) +{ + if (gSprites[gObjectBankIDs[gActiveBank]].callback == SpriteCallbackDummy) + SafariBufferExecCompleted(); +} + +void sub_812B694(void) +{ + if (gUnknown_03004210.state == 0) + SafariBufferExecCompleted(); +} + +void sub_812B6AC(void) +{ + if (!gPaletteFade.active) + { + gMain.inBattle = FALSE; + gMain.callback1 = gPreBattleCallback1; + SetMainCallback2(gMain.savedCallback); + } +} + +void bx_wait_t6(void) +{ + if (!gDoingBattleAnim || !ewram17810[gActiveBank].unk0_6) + SafariBufferExecCompleted(); +} + +void sub_812B724(void) +{ + if (!gPaletteFade.active) + { + gBattleBankFunc[gActiveBank] = sub_812B758; + sub_810BADC(); + } +} + +void sub_812B758(void) +{ + if (gMain.callback2 == sub_800F808 && !gPaletteFade.active) + { + Emitcmd35(1, gScriptItemId); + SafariBufferExecCompleted(); + } +} + +void sub_812B794(void) +{ + if (!ewram17810[gActiveBank].unk0_5) + SafariBufferExecCompleted(); +} + +void SafariBufferExecCompleted(void) +{ + gBattleBankFunc[gActiveBank] = SafariBufferRunCommand; + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + { + u8 playerId = GetMultiplayerId(); + + PrepareBufferDataTransferLink(2, 4, &playerId); + gBattleBufferA[gActiveBank][0] = 0x38; + } + else + { + gBattleExecBuffer &= ~gBitTable[gActiveBank]; + } +} + +void unref_sub_812B838(void) +{ + if (!ewram17810[gActiveBank].unk0_4) + SafariBufferExecCompleted(); +} + +void SafariHandleGetAttributes(void) +{ + SafariBufferExecCompleted(); +} + +void SafariHandlecmd1(void) +{ + SafariBufferExecCompleted(); +} + +void SafariHandleSetAttributes(void) +{ + SafariBufferExecCompleted(); +} + +void SafariHandlecmd3(void) +{ + SafariBufferExecCompleted(); +} + +void SafariHandleLoadPokeSprite(void) +{ + SafariBufferExecCompleted(); +} + +void SafariHandleSendOutPoke(void) +{ + SafariBufferExecCompleted(); +} + +void SafariHandleReturnPokeToBall(void) +{ + SafariBufferExecCompleted(); +} + +void SafariHandleTrainerThrow(void) +{ + LoadPlayerTrainerBankSprite(gSaveBlock2.playerGender, gActiveBank); + GetMonSpriteTemplate_803C5A0(gSaveBlock2.playerGender, GetBankIdentity(gActiveBank)); + gObjectBankIDs[gActiveBank] = CreateSprite( + &gUnknown_02024E8C, + 80, + (8 - gTrainerBackPicCoords[gSaveBlock2.playerGender].coords) * 4 + 80, + 30); + gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = gActiveBank; + gSprites[gObjectBankIDs[gActiveBank]].pos2.x = 240; + gSprites[gObjectBankIDs[gActiveBank]].data0 = -2; + gSprites[gObjectBankIDs[gActiveBank]].callback = sub_80313A0; + gBattleBankFunc[gActiveBank] = sub_812B65C; +} + +void SafariHandleTrainerSlide(void) +{ + SafariBufferExecCompleted(); +} + +void SafariHandleTrainerSlideBack(void) +{ + SafariBufferExecCompleted(); +} + +void SafariHandlecmd10(void) +{ + SafariBufferExecCompleted(); +} + +void SafariHandlecmd11(void) +{ + SafariBufferExecCompleted(); +} + +void SafariHandlecmd12(void) +{ + ewram17840.unk8 = 4; + gDoingBattleAnim = 1; + move_anim_start_t4(gActiveBank, gActiveBank, GetBankByPlayerAI(1), 4); + gBattleBankFunc[gActiveBank] = bx_wait_t6; +} + +void SafariHandleBallThrow(void) +{ + u8 var = gBattleBufferA[gActiveBank][1]; + + ewram17840.unk8 = var; + gDoingBattleAnim = 1; + move_anim_start_t4(gActiveBank, gActiveBank, GetBankByPlayerAI(1), 4); + gBattleBankFunc[gActiveBank] = bx_wait_t6; +} + +// TODO: spell Pause correctly +void SafariHandlePuase(void) +{ + SafariBufferExecCompleted(); +} + +void SafariHandleMoveAnimation(void) +{ + SafariBufferExecCompleted(); +} + +void SafariHandlePrintString(void) +{ + gUnknown_030042A4 = 0; + gUnknown_030042A0 = 0; + BufferStringBattle(*(u16 *)&gBattleBufferA[gActiveBank][2]); + sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); + gBattleBankFunc[gActiveBank] = sub_812B694; +} + +void SafariHandlePrintStringPlayerOnly(void) +{ + if (GetBankSide(gActiveBank) == 0) + SafariHandlePrintString(); + else + SafariBufferExecCompleted(); +} + +void SafariHandlecmd18(void) +{ + int i; + + gUnknown_030042A4 = 0; + gUnknown_030042A0 = 160; + gUnknown_03004210.paletteNum = 0; + FillWindowRect_DefaultPalette(&gUnknown_03004210, 10, 2, 15, 27, 18); + FillWindowRect_DefaultPalette(&gUnknown_03004210, 10, 2, 35, 16, 36); + gBattleBankFunc[gActiveBank] = bx_battle_menu_t6_2; + + InitWindow(&gUnknown_03004210, gUnknown_08400D15, 400, 18, 35); + sub_8002F44(&gUnknown_03004210); + sub_814A5C0(0, 0xFFFF, 12, 11679, 0); + + for (i = 0; i < 4; i++) + nullsub_8(i); + + sub_802E3E4(gActionSelectionCursor[gActiveBank], 0); + StrCpyDecodeToDisplayedStringBattle((u8 *) gUnknown_08400CBB); + + InitWindow(&gUnknown_03004210, gDisplayedStringBattle, SUB_812BB10_TILE_DATA_OFFSET, 2, 35); + sub_8002F44(&gUnknown_03004210); +} + +void SafariHandlecmd19(void) +{ + SafariBufferExecCompleted(); +} + +void SafariHandlecmd20(void) +{ + SafariBufferExecCompleted(); +} + +void SafariHandleOpenBag(void) +{ + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); + gBattleBankFunc[gActiveBank] = sub_812B724; + gBankInMenu = gActiveBank; +} + +void SafariHandlecmd22(void) +{ + SafariBufferExecCompleted(); +} + +void SafariHandlecmd23(void) +{ + SafariBufferExecCompleted(); +} + +void SafariHandleHealthBarUpdate(void) +{ + SafariBufferExecCompleted(); +} + +void SafariHandleExpBarUpdate(void) +{ + SafariBufferExecCompleted(); +} + +void SafariHandleStatusIconUpdate(void) +{ + sub_8045A5C(gHealthboxIDs[gActiveBank], &gPlayerParty[gBattlePartyID[gActiveBank]], 11); + SafariBufferExecCompleted(); +} + +void SafariHandleStatusAnimation(void) +{ + SafariBufferExecCompleted(); +} + +void SafariHandleStatusXor(void) +{ + SafariBufferExecCompleted(); +} + +void SafariHandlecmd29(void) +{ + SafariBufferExecCompleted(); +} + +void SafariHandleDMATransfer(void) +{ + SafariBufferExecCompleted(); +} + +void SafariHandlecmd31(void) +{ + SafariBufferExecCompleted(); +} + +void SafariHandlecmd32(void) +{ + SafariBufferExecCompleted(); +} + +void SafariHandlecmd33(void) +{ + SafariBufferExecCompleted(); +} + +void SafariHandlecmd34(void) +{ + SafariBufferExecCompleted(); +} + +void SafariHandlecmd35(void) +{ + SafariBufferExecCompleted(); +} + +void SafariHandlecmd36(void) +{ + SafariBufferExecCompleted(); +} + +void SafariHandlecmd37(void) +{ + SafariBufferExecCompleted(); +} + +void SafariHandlecmd38(void) +{ + SafariBufferExecCompleted(); +} + +void SafariHandlecmd39(void) +{ + SafariBufferExecCompleted(); +} + +void SafariHandlecmd40(void) +{ + SafariBufferExecCompleted(); +} + +void SafariHandleHitAnimation(void) +{ + SafariBufferExecCompleted(); +} + +void SafariHandlecmd42(void) +{ + SafariBufferExecCompleted(); +} + +void SafariHandleEffectivenessSound(void) +{ + s8 pan; + + if (GetBankSide(gActiveBank) == 0) + pan = -64; + else + pan = 63; + PlaySE12WithPanning(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8), pan); + SafariBufferExecCompleted(); +} + +void SafariHandlecmd44(void) +{ + PlayFanfare(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8)); + SafariBufferExecCompleted(); +} + +void SafariHandleFaintingCry(void) +{ + u16 species = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES); + + PlayCry1(species, 25); + SafariBufferExecCompleted(); +} + +void SafariHandleIntroSlide(void) +{ + sub_80E43C0(gBattleBufferA[gActiveBank][1]); + gUnknown_02024DE8 |= 1; + SafariBufferExecCompleted(); +} + +void SafariHandleTrainerBallThrow(void) +{ + sub_8045A5C(gHealthboxIDs[gActiveBank], &gPlayerParty[gBattlePartyID[gActiveBank]], 10); + sub_804777C(gActiveBank); + sub_8043DFC(gHealthboxIDs[gActiveBank]); + SafariBufferExecCompleted(); +} + +void SafariHandlecmd48(void) +{ + SafariBufferExecCompleted(); +} + +void SafariHandlecmd49(void) +{ + SafariBufferExecCompleted(); +} + +void SafariHandlecmd50(void) +{ + SafariBufferExecCompleted(); +} + +void SafariHandleSpriteInvisibility(void) +{ + SafariBufferExecCompleted(); +} + +void SafariHandleBattleAnimation(void) +{ + u8 r3 = gBattleBufferA[gActiveBank][1]; + u16 r4 = gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8); + + if (move_anim_start_t3(gActiveBank, gActiveBank, gActiveBank, r3, r4) != 0) + SafariBufferExecCompleted(); + else + gBattleBankFunc[gActiveBank] = sub_812B794; +} + +void SafariHandleLinkStandbyMsg(void) +{ + SafariBufferExecCompleted(); +} + +void SafariHandleResetActionMoveSelection(void) +{ + SafariBufferExecCompleted(); +} + +void SafariHandlecmd55(void) +{ + gBattleOutcome = gBattleBufferA[gActiveBank][1]; + FadeOutMapMusic(5); + BeginFastPaletteFade(3); + SafariBufferExecCompleted(); + if ((gBattleTypeFlags & BATTLE_TYPE_LINK) && !(gBattleTypeFlags & BATTLE_TYPE_WILD)) + gBattleBankFunc[gActiveBank] = sub_812B6AC; +} + +void SafariHandlecmd56(void) +{ +} diff --git a/src/battle_anim_8137220.c b/src/battle/battle_controller_wally.c similarity index 86% rename from src/battle_anim_8137220.c rename to src/battle/battle_controller_wally.c index bb181d5fb..bf6ef0892 100644 --- a/src/battle_anim_8137220.c +++ b/src/battle/battle_controller_wally.c @@ -29,7 +29,6 @@ struct UnknownStruct3 extern u8 gActiveBank; extern void (*gBattleBankFunc[])(void); extern u32 gBattleExecBuffer; -extern void (*gWallyBufferCommands[])(void); extern u8 gBattleBufferA[][0x200]; extern u8 gObjectBankIDs[]; extern MainCallback gPreBattleCallback1; @@ -61,8 +60,8 @@ extern const u8 gUnknown_08400CCC[]; extern const u8 gUnknown_08400CF3[]; // TODO: include rom3.h when my other PR gets merged -extern void dp01_build_cmdbuf_x21_a_bb(u8, u8, u16); -extern void dp01_build_cmdbuf_x23_aa_0(u8, u16); +extern void Emitcmd33(u8, u8, u16); +extern void Emitcmd35(u8, u16); extern void nullsub_14(void); extern void PrepareBagForWallyTutorial(void); @@ -72,8 +71,8 @@ extern void sub_804777C(); extern void sub_8043DFC(); extern bool8 IsDoubleBattle(void); extern void c3_0802FDF4(u8); -extern void sub_802ECF0(void); -extern void sub_8031AF4(); +extern void PlayerHandlecmd1(void); +extern void LoadPlayerTrainerBankSprite(); extern u8 GetBankIdentity(u8); extern void sub_80313A0(struct Sprite *); extern u8 GetBankByPlayerAI(u8); @@ -90,7 +89,7 @@ extern void sub_80E43C0(); extern void oamt_add_pos2_onto_pos1(); extern void sub_8078B34(struct Sprite *); extern void sub_8030E38(struct Sprite *); -extern void oamt_set_x3A_32(); +extern void StoreSpriteCallbackInData6(); extern u8 sub_8046400(); extern u8 sub_8077ABC(); extern u8 sub_8077F68(); @@ -98,6 +97,8 @@ extern u8 sub_8079E90(); extern void sub_80312F0(struct Sprite *); extern bool8 move_anim_start_t3(); +// this file's functions + void WallyBufferRunCommand(void); void sub_81374FC(void); void sub_81376B8(void); @@ -107,6 +108,130 @@ void sub_8138294(u8); void sub_81390D0(void); void sub_8139A2C(u8); +void WallyHandleGetAttributes(void); +void WallyHandlecmd1(void); +void WallyHandleSetAttributes(void); +void WallyHandlecmd3(void); +void WallyHandleLoadPokeSprite(void); +void WallyHandleSendOutPoke(void); +void WallyHandleReturnPokeToBall(void); +void WallyHandleTrainerThrow(void); +void WallyHandleTrainerSlide(void); +void WallyHandleTrainerSlideBack(void); +void WallyHandlecmd10(void); +void WallyHandlecmd11(void); +void WallyHandlecmd12(void); +void WallyHandleBallThrow(void); +void WallyHandlePuase(void); +void WallyHandleMoveAnimation(void); +void WallyHandlePrintString(void); +void WallyHandlePrintStringPlayerOnly(void); +void WallyHandlecmd18(void); +void WallyHandlecmd19(void); +void WallyHandlecmd20(void); +void WallyHandleOpenBag(void); +void WallyHandlecmd22(void); +void WallyHandlecmd23(void); +void WallyHandleHealthBarUpdate(void); +void WallyHandleExpBarUpdate(void); +void WallyHandleStatusIconUpdate(void); +void WallyHandleStatusAnimation(void); +void WallyHandleStatusXor(void); +void WallyHandlecmd29(void); +void WallyHandleDMATransfer(void); +void WallyHandlecmd31(void); +void WallyHandlecmd32(void); +void WallyHandlecmd33(void); +void WallyHandlecmd34(void); +void WallyHandlecmd35(void); +void WallyHandlecmd36(void); +void WallyHandlecmd37(void); +void WallyHandlecmd38(void); +void WallyHandlecmd39(void); +void WallyHandlecmd40(void); +void WallyHandleHitAnimation(void); +void WallyHandlecmd42(void); +void WallyHandleEffectivenessSound(void); +void WallyHandlecmd44(void); +void WallyHandleFaintingCry(void); +void WallyHandleIntroSlide(void); +void WallyHandleTrainerBallThrow(void); +void WallyHandlecmd48(void); +void WallyHandlecmd49(void); +void WallyHandlecmd50(void); +void WallyHandleSpriteInvisibility(void); +void WallyHandleBattleAnimation(void); +void WallyHandleLinkStandbyMsg(void); +void WallyHandleResetActionMoveSelection(void); +void WallyHandlecmd55(void); +void WallyHandlecmd56(void); + +// const data + +typedef void (*BattleBufferCmd) (void); +static const BattleBufferCmd gWallyBufferCommands[] = +{ + WallyHandleGetAttributes, + WallyHandlecmd1, + WallyHandleSetAttributes, + WallyHandlecmd3, + WallyHandleLoadPokeSprite, + WallyHandleSendOutPoke, + WallyHandleReturnPokeToBall, + WallyHandleTrainerThrow, + WallyHandleTrainerSlide, + WallyHandleTrainerSlideBack, + WallyHandlecmd10, + WallyHandlecmd11, + WallyHandlecmd12, + WallyHandleBallThrow, + WallyHandlePuase, + WallyHandleMoveAnimation, + WallyHandlePrintString, + WallyHandlePrintStringPlayerOnly, + WallyHandlecmd18, + WallyHandlecmd19, + WallyHandlecmd20, + WallyHandleOpenBag, + WallyHandlecmd22, + WallyHandlecmd23, + WallyHandleHealthBarUpdate, + WallyHandleExpBarUpdate, + WallyHandleStatusIconUpdate, + WallyHandleStatusAnimation, + WallyHandleStatusXor, + WallyHandlecmd29, + WallyHandleDMATransfer, + WallyHandlecmd31, + WallyHandlecmd32, + WallyHandlecmd33, + WallyHandlecmd34, + WallyHandlecmd35, + WallyHandlecmd36, + WallyHandlecmd37, + WallyHandlecmd38, + WallyHandlecmd39, + WallyHandlecmd40, + WallyHandleHitAnimation, + WallyHandlecmd42, + WallyHandleEffectivenessSound, + WallyHandlecmd44, + WallyHandleFaintingCry, + WallyHandleIntroSlide, + WallyHandleTrainerBallThrow, + WallyHandlecmd48, + WallyHandlecmd49, + WallyHandlecmd50, + WallyHandleSpriteInvisibility, + WallyHandleBattleAnimation, + WallyHandleLinkStandbyMsg, + WallyHandleResetActionMoveSelection, + WallyHandlecmd55, + WallyHandlecmd56, +}; + +// code + void unref_sub_8137220(void) { } @@ -146,7 +271,7 @@ void sub_81372BC(void) if (r4 == 0) { PlaySE(SE_SELECT); - dp01_build_cmdbuf_x21_a_bb(1, 0, 0); + Emitcmd33(1, 0, 0); WallyBufferExecCompleted(); ewram[0x160A8]++; ewram[0x160A9] = r4; @@ -158,7 +283,7 @@ void sub_81372BC(void) if (r4 == 0) { PlaySE(SE_SELECT); - dp01_build_cmdbuf_x21_a_bb(1, 0, 0); + Emitcmd33(1, 0, 0); WallyBufferExecCompleted(); ewram[0x160A8]++; ewram[0x160A9] = r4; @@ -169,7 +294,7 @@ void sub_81372BC(void) r4 = --ewram[0x160AA]; if (r4 == 0) { - dp01_build_cmdbuf_x21_a_bb(1, 9, 0); + Emitcmd33(1, 9, 0); WallyBufferExecCompleted(); ewram[0x160A8]++; ewram[0x160A9] = r4; @@ -191,7 +316,7 @@ void sub_81372BC(void) { PlaySE(SE_SELECT); DestroyMenuCursor(); - dp01_build_cmdbuf_x21_a_bb(1, 1, 0); + Emitcmd33(1, 1, 0); WallyBufferExecCompleted(); } break; @@ -241,7 +366,7 @@ void sub_81374FC(void) if (gMain.callback2 == sub_800F808 && !gPaletteFade.active) { - dp01_build_cmdbuf_x23_aa_0(1, gScriptItemId); + Emitcmd35(1, gScriptItemId); WallyBufferExecCompleted(); } } @@ -359,7 +484,7 @@ void WallyBufferExecCompleted(void) { u8 multiplayerId = GetMultiplayerId(); - dp01_prepare_buffer_wireless_probably(2, 4, &multiplayerId); + PrepareBufferDataTransferLink(2, 4, &multiplayerId); gBattleBufferA[gActiveBank][0] = 0x38; } else @@ -374,7 +499,7 @@ void unref_sub_81379E4(void) WallyBufferExecCompleted(); } -void dp01t_00_5_getattr(void) +void WallyHandleGetAttributes(void) { u8 arr[0x100]; u32 r6 = 0; @@ -395,7 +520,7 @@ void dp01t_00_5_getattr(void) r4 >>= 1; } } - dp01_build_cmdbuf_x1D_1D_numargs_varargs(1, r6, arr); + Emitcmd29(1, r6, arr); WallyBufferExecCompleted(); } @@ -704,12 +829,12 @@ u32 sub_8137A84(u8 a, u8 *buffer) return size; } -void sub_8138230(void) +void WallyHandlecmd1(void) { - sub_802ECF0(); + PlayerHandlecmd1(); } -void sub_813823C(void) +void WallyHandleSetAttributes(void) { u8 r4; u8 i; @@ -948,22 +1073,22 @@ void sub_8138294(u8 a) sub_80324F8(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); } -void sub_8138C90(void) +void WallyHandlecmd3(void) { WallyBufferExecCompleted(); } -void sub_8138C9C(void) +void WallyHandleLoadPokeSprite(void) { WallyBufferExecCompleted(); } -void sub_8138CA8(void) +void WallyHandleSendOutPoke(void) { WallyBufferExecCompleted(); } -void sub_8138CB4(void) +void WallyHandleReturnPokeToBall(void) { if (gBattleBufferA[gActiveBank][1] == 0) { @@ -979,9 +1104,9 @@ void sub_8138CB4(void) } } -void sub_8138D38(void) +void WallyHandleTrainerThrow(void) { - sub_8031AF4(2, gActiveBank); + LoadPlayerTrainerBankSprite(2, gActiveBank); GetMonSpriteTemplate_803C5A0(2, GetBankIdentity(gActiveBank)); gObjectBankIDs[gActiveBank] = CreateSprite( &gUnknown_02024E8C, @@ -994,9 +1119,9 @@ void sub_8138D38(void) gBattleBankFunc[gActiveBank] = sub_813741C; } -void sub_8138E04(void) +void WallyHandleTrainerSlide(void) { - sub_8031AF4(2, gActiveBank); + LoadPlayerTrainerBankSprite(2, gActiveBank); GetMonSpriteTemplate_803C5A0(2, GetBankIdentity(gActiveBank)); gObjectBankIDs[gActiveBank] = CreateSprite( &gUnknown_02024E8C, @@ -1009,22 +1134,22 @@ void sub_8138E04(void) gBattleBankFunc[gActiveBank] = sub_8137908; } -void sub_8138ED0(void) +void WallyHandleTrainerSlideBack(void) { WallyBufferExecCompleted(); } -void sub_8138EDC(void) +void WallyHandlecmd10(void) { WallyBufferExecCompleted(); } -void sub_8138EE8(void) +void WallyHandlecmd11(void) { WallyBufferExecCompleted(); } -void sub_8138EF4(void) +void WallyHandlecmd12(void) { ewram17840.unk8 = 4; gDoingBattleAnim = TRUE; @@ -1032,7 +1157,7 @@ void sub_8138EF4(void) gBattleBankFunc[gActiveBank] = bx_wait_t5; } -void sub_8138F44(void) +void WallyHandleBallThrow(void) { u8 val = gBattleBufferA[gActiveBank][1]; @@ -1042,12 +1167,12 @@ void sub_8138F44(void) gBattleBankFunc[gActiveBank] = bx_wait_t5; } -void sub_8138FA0(void) +void WallyHandlePuase(void) { WallyBufferExecCompleted(); } -void sub_8138FAC(void) +void WallyHandleMoveAnimation(void) { u16 r0 = gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8); @@ -1081,7 +1206,7 @@ void sub_81390D0(void) switch (ewram17810[gActiveBank].unk4) { case 0: - if (ewram17800[gActiveBank].unk0_2 == 1) + if (ewram17800[gActiveBank].substituteSprite == 1) move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5); ewram17810[gActiveBank].unk4 = 1; break; @@ -1098,7 +1223,7 @@ void sub_81390D0(void) if (!gAnimScriptActive) { sub_80326EC(1); - if (ewram17800[gActiveBank].unk0_2 == 1) + if (ewram17800[gActiveBank].substituteSprite == 1) move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 6); ewram17810[gActiveBank].unk4 = 3; } @@ -1115,7 +1240,7 @@ void sub_81390D0(void) } } -void sub_8139208(void) +void WallyHandlePrintString(void) { u16 *ptr; @@ -1129,15 +1254,15 @@ void sub_8139208(void) gBattleBankFunc[gActiveBank] = sub_8137454; } -void dp01t_11_5_message_for_player_only(void) +void WallyHandlePrintStringPlayerOnly(void) { if (GetBankSide(gActiveBank) == 0) - sub_8139208(); + WallyHandlePrintString(); else WallyBufferExecCompleted(); } -void sub_8139298(void) +void WallyHandlecmd18(void) { s32 i; @@ -1162,12 +1287,12 @@ void sub_8139298(void) sub_8002F44(&gUnknown_03004210); } -void sub_8139378(void) +void WallyHandlecmd19(void) { WallyBufferExecCompleted(); } -void sub_8139384(void) +void WallyHandlecmd20(void) { switch (ewram[0x160A9]) { @@ -1182,31 +1307,31 @@ void sub_8139384(void) { DestroyMenuCursor(); PlaySE(SE_SELECT); - dp01_build_cmdbuf_x21_a_bb(1, 10, 256); + Emitcmd33(1, 10, 256); WallyBufferExecCompleted(); } break; } } -void sub_81393EC(void) +void WallyHandleOpenBag(void) { BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); gBattleBankFunc[gActiveBank] = sub_81374C4; gBankInMenu = gActiveBank; } -void sub_813942C(void) +void WallyHandlecmd22(void) { WallyBufferExecCompleted(); } -void sub_8139438(void) +void WallyHandlecmd23(void) { WallyBufferExecCompleted(); } -void sub_8139444(void) +void WallyHandleHealthBarUpdate(void) { s16 r7; @@ -1229,87 +1354,87 @@ void sub_8139444(void) gBattleBankFunc[gActiveBank] = sub_81377B0; } -void sub_8139544(void) +void WallyHandleExpBarUpdate(void) { WallyBufferExecCompleted(); } -void sub_8139550(void) +void WallyHandleStatusIconUpdate(void) { WallyBufferExecCompleted(); } -void sub_813955C(void) +void WallyHandleStatusAnimation(void) { WallyBufferExecCompleted(); } -void sub_8139568(void) +void WallyHandleStatusXor(void) { WallyBufferExecCompleted(); } -void sub_8139574(void) +void WallyHandlecmd29(void) { WallyBufferExecCompleted(); } -void sub_8139580(void) +void WallyHandleDMATransfer(void) { WallyBufferExecCompleted(); } -void sub_813958C(void) +void WallyHandlecmd31(void) { WallyBufferExecCompleted(); } -void sub_8139598(void) +void WallyHandlecmd32(void) { WallyBufferExecCompleted(); } -void sub_81395A4(void) +void WallyHandlecmd33(void) { WallyBufferExecCompleted(); } -void sub_81395B0(void) +void WallyHandlecmd34(void) { WallyBufferExecCompleted(); } -void sub_81395BC(void) +void WallyHandlecmd35(void) { WallyBufferExecCompleted(); } -void sub_81395C8(void) +void WallyHandlecmd36(void) { WallyBufferExecCompleted(); } -void sub_81395D4(void) +void WallyHandlecmd37(void) { WallyBufferExecCompleted(); } -void sub_81395E0(void) +void WallyHandlecmd38(void) { WallyBufferExecCompleted(); } -void sub_81395EC(void) +void WallyHandlecmd39(void) { WallyBufferExecCompleted(); } -void sub_81395F8(void) +void WallyHandlecmd40(void) { WallyBufferExecCompleted(); } -void sub_8139604(void) +void WallyHandleHitAnimation(void) { if (gSprites[gObjectBankIDs[gActiveBank]].invisible == TRUE) { @@ -1324,37 +1449,37 @@ void sub_8139604(void) } } -void sub_8139674(void) +void WallyHandlecmd42(void) { WallyBufferExecCompleted(); } -void sub_8139680(void) +void WallyHandleEffectivenessSound(void) { PlaySE(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8)); WallyBufferExecCompleted(); } -void sub_81396B0(void) +void WallyHandlecmd44(void) { PlayFanfare(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8)); WallyBufferExecCompleted(); } -void sub_81396E0(void) +void WallyHandleFaintingCry(void) { PlayCry1(GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES), 25); WallyBufferExecCompleted(); } -void dp01t_2E_5_battle_intro(void) +void WallyHandleIntroSlide(void) { sub_80E43C0(gBattleBufferA[gActiveBank][1]); gUnknown_02024DE8 |= 1; WallyBufferExecCompleted(); } -void sub_8139750(void) +void WallyHandleTrainerBallThrow(void) { u8 paletteNum; u8 taskId; @@ -1365,7 +1490,7 @@ void sub_8139750(void) gSprites[gObjectBankIDs[gActiveBank]].data4 = gSprites[gObjectBankIDs[gActiveBank]].pos1.y; gSprites[gObjectBankIDs[gActiveBank]].callback = sub_8078B34; gSprites[gObjectBankIDs[gActiveBank]].data5 = gActiveBank; - oamt_set_x3A_32(&gSprites[gObjectBankIDs[gActiveBank]], sub_8030E38); + StoreSpriteCallbackInData6(&gSprites[gObjectBankIDs[gActiveBank]], sub_8030E38); StartSpriteAnim(&gSprites[gObjectBankIDs[gActiveBank]], 1); paletteNum = AllocSpritePalette(0xD6F8); LoadCompressedPalette(gTrainerBackPicPaletteTable[2].data, 0x100 + paletteNum * 16, 32); @@ -1382,7 +1507,7 @@ void sub_81398BC(u8 bank) { u16 species; - ewram17800[bank].unk2 = 0; + ewram17800[bank].transformedSpecies = 0; gBattlePartyID[bank] = gBattleBufferA[bank][1]; species = GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_SPECIES); gUnknown_0300434C[bank] = CreateInvisibleSpriteWithCallback(sub_80312F0); @@ -1421,7 +1546,7 @@ void sub_8139A2C(u8 taskId) } } -void sub_8139AA0(void) +void WallyHandlecmd48(void) { if (gBattleBufferA[gActiveBank][1] != 0 && GetBankSide(gActiveBank) == 0) { @@ -1435,22 +1560,22 @@ void sub_8139AA0(void) } } -void sub_8139B20(void) +void WallyHandlecmd49(void) { WallyBufferExecCompleted(); } -void sub_8139B2C(void) +void WallyHandlecmd50(void) { WallyBufferExecCompleted(); } -void sub_8139B38(void) +void WallyHandleSpriteInvisibility(void) { WallyBufferExecCompleted(); } -void sub_8139B44(void) +void WallyHandleBattleAnimation(void) { u8 val2 = gBattleBufferA[gActiveBank][1]; u16 val = gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8); @@ -1461,17 +1586,17 @@ void sub_8139B44(void) gBattleBankFunc[gActiveBank] = sub_8137940; } -void sub_8139BA0(void) +void WallyHandleLinkStandbyMsg(void) { WallyBufferExecCompleted(); } -void sub_8139BAC(void) +void WallyHandleResetActionMoveSelection(void) { WallyBufferExecCompleted(); } -void sub_8139BB8(void) +void WallyHandlecmd55(void) { gBattleOutcome = gBattleBufferA[gActiveBank][1]; FadeOutMapMusic(5); @@ -1481,6 +1606,6 @@ void sub_8139BB8(void) gBattleBankFunc[gActiveBank] = sub_813746C; } -void nullsub_80(void) +void WallyHandlecmd56(void) { } diff --git a/src/battle_interface.c b/src/battle/battle_interface.c similarity index 99% rename from src/battle_interface.c rename to src/battle/battle_interface.c index 246bda62b..8bfeedd4d 100644 --- a/src/battle_interface.c +++ b/src/battle/battle_interface.c @@ -97,7 +97,7 @@ static int sub_8045F58(s32, s32, int, int *, u8, u16); static u8 GetScaledExpFraction(int, int, int, u8); static void sub_8045D58(u8, u8); static u8 sub_804602C(int, int, int, int *, u8 *, u8); -static void sub_8046128(struct BattleInterfaceStruct1 *a, int *b, void *c); +static void sub_8046128(struct BattleInterfaceStruct1 *a, int *b, u16 *c); static int do_nothing(s16 unused1, s16 unused2, int unused3) { @@ -2388,7 +2388,7 @@ static void sub_80451A0(u8 a, struct Pokemon *pkmn) gender = GetMonGender(pkmn); species = GetMonData(pkmn, MON_DATA_SPECIES); language = GetMonData(pkmn, MON_DATA_LANGUAGE); - if (sub_8040D3C(species, nickname, language)) + if (ShouldHideGenderIconForLanguage(species, nickname, language)) gender = 100; switch (gender) { @@ -2501,7 +2501,7 @@ static void sub_8045458(u8 a, u8 b) if (GetBankSide(r4) != 0) { u16 species = GetMonData(&gEnemyParty[gBattlePartyID[r4]], MON_DATA_SPECIES); - if (GetNationalPokedexFlag(SpeciesToNationalPokedexNum(species), 1) != 0) + if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(species), 1) != 0) { r4 = gSprites[a].data5; if (b != 0) @@ -2972,7 +2972,7 @@ static u8 sub_804602C(int a, int b, int c, int *d, u8 *e, u8 f) return r3; } -s16 sub_80460C8(struct BattleInterfaceStruct1 *a, int *b, void *c, int d) +s16 sub_80460C8(struct BattleInterfaceStruct1 *a, int *b, u16 *c, int d) { u16 r7; s16 r1; @@ -2987,7 +2987,7 @@ s16 sub_80460C8(struct BattleInterfaceStruct1 *a, int *b, void *c, int d) return r7; } -static void sub_8046128(struct BattleInterfaceStruct1 *a, int *b, void *c) +static void sub_8046128(struct BattleInterfaceStruct1 *a, int *b, u16 *c) { u8 sp8[6]; u16 sp10[6]; diff --git a/src/battle/battle_message.c b/src/battle/battle_message.c new file mode 100644 index 000000000..a3cc320ad --- /dev/null +++ b/src/battle/battle_message.c @@ -0,0 +1,959 @@ +#include "global.h" +#include "battle_message.h" +#include "battle.h" +#include "item.h" +#include "items.h" +#include "pokemon.h" +#include "data2.h" +#include "text.h" +#include "string_util.h" +#include "link.h" +#include "battle_setup.h" +#include "battle_tower.h" +#include "flags.h" + +#define BATTLESTRING_TO_SUB 12 +#define BATTLESTRINGS_NO 351 +#define BATTLESTRINGS_MAX BATTLESTRINGS_NO + BATTLESTRING_TO_SUB + +extern const u8* const gBattleStringsTable[BATTLESTRINGS_NO]; + +extern u16 gLastUsedItem; +extern u8 gLastUsedAbility; +extern u8 gActiveBank; +extern u8 gBankAttacker; +extern u8 gBankTarget; +extern u8 gStringBank; +extern u8 gEffectBank; +extern u8 gAbilitiesPerBank[4]; +extern u8 gBattleTextBuff1[]; +extern u8 gBattleTextBuff2[]; +extern u8 gBattleTextBuff3[]; +extern u8 gStringVar1[]; +extern u8 gStringVar2[]; +extern u8 gStringVar3[]; +extern u16 gBattleTypeFlags; +extern u16 gTrainerBattleOpponent; +extern u8 gDisplayedStringBattle[]; +extern u8 gStringVar1[]; +extern u8 gStringVar2[]; +extern u8 gStringVar3[]; +extern u16 gBattlePartyID[4]; +extern struct BattleEnigmaBerry gEnigmaBerries[4]; +extern u8 gBattleBufferA[4][0x200]; + +extern const u8 gUnknown_084005DB[]; +extern const u8 gUnknown_084005C7[]; +extern const u8 gUnknown_084005AA[]; +extern const u8 gUnknown_08400568[]; +extern const u8 gUnknown_08400590[]; +extern const u8 gUnknown_0840057B[]; +extern const u8 gUnknown_08400555[]; +extern const u8 gUnknown_084006F1[]; +extern const u8 gUnknown_084006A4[]; +extern const u8 gUnknown_0840069C[]; +extern const u8 gUnknown_0840065C[]; +extern const u8 gUnknown_08400645[]; +extern const u8 gUnknown_08400608[]; +extern const u8 gUnknown_08400635[]; +extern const u8 gUnknown_084005F5[]; +extern const u8 gUnknown_08400709[]; +extern const u8 gUnknown_08400727[]; +extern const u8 gUnknown_08400736[]; +extern const u8 gUnknown_08400749[]; +extern const u8 gUnknown_08400781[]; +extern const u8 gUnknown_08400771[]; +extern const u8 gUnknown_0840075E[]; +extern const u8 gUnknown_084006B3[]; +extern const u8 gUnknown_084006BB[]; +extern const u8 gUnknown_084006C6[]; +extern const u8 gUnknown_084006D5[]; +extern const u8 gUnknown_0840068C[]; +extern const u8 gUnknown_0840067C[]; +extern const u8 gUnknown_08400622[]; +extern const u8 gUnknown_084007BD[]; +extern const u8 gUnknown_083FFEFC[]; +extern const u8 gUnknown_083FFFF7[]; +extern const u8 gUnknown_083FFFEA[]; +extern const u8 gUnknown_083FFF6A[]; +extern const u8 gUnknown_083FFF99[]; +extern const u8 gUnknown_083FFFCB[]; +extern const u8 gUnknown_083FFF56[]; +extern const u8 gUnknown_083FFF81[]; +extern const u8 gUnknown_083FFFB3[]; +extern const u8 gUnknown_08400A78[]; +extern const u8 gUnknown_08400A85[]; +extern const u8 gUnknown_08400797[]; +extern const u8 gUnknown_08400791[]; +extern const u8 gUnknown_084007B7[]; +extern const u8 gUnknown_084007B2[]; +extern const u8 gUnknown_0840079C[]; +extern const u8 gUnknown_084007A1[]; +extern const u8 gUnknown_084007A7[]; +extern const u8 gUnknown_084007AC[]; +extern const u8 gUnknown_084009ED[]; +extern const u8 gUnknown_084009F7[]; +extern const u8 gUnknown_084007C8[]; +extern const u8 gUnknown_084007CA[]; +extern const u8 gUnknown_084007CC[]; +extern const u8 gUnknown_084007CE[]; +extern const u8 gUnknown_084007D0[]; +extern const u8 gUnknown_08400E5E[]; +extern const u8 gUnknown_08400E62[]; + +extern const u16 gUnknown_084016BC[]; // a table of moves + +extern const u8* const gUnknown_08401674[]; // table of pointers to 'a -TYPE' strings +extern const u8* const gUnknown_08400F58[]; // table of pointers to stat strings +extern const u8* const gUnknown_08400F78[]; // table of pointers to flavour strings + +struct StatusFlagString +{ + u8* flag; + u8* ptr; +}; + +extern const struct StatusFlagString gUnknown_081FA6D4[7]; // status flag/text +extern const u8 gUnknown_084017A8[8]; // empty flags + +extern struct StringInfoBattle* gSelectedOrderFromParty; +#define gStringInfo gSelectedOrderFromParty + +void sub_8121D1C(u8* textBuff); +void sub_8121D74(u8* textBuff); +void StrCpyDecodeBattleTextBuff(u8* src, u8* dst); + +u8 GetBankSide(u8 bank); +s32 sub_803FC34(u16); +void get_trainer_name(u8* dst); +u8 get_trainer_class_name_index(void); +u8 sub_8135FD8(void); +u8 GetMultiplayerId(void); +u8 GetBankByPlayerAI(u8 ID); +u8 GetBankSide(u8 bank); +u8 GetBankIdentity(u8 bank); +#ifdef GERMAN +extern u8 *de_sub_804110C(); +#endif + +void BufferStringBattle(u16 stringID) +{ + int i; + const u8* stringPtr = NULL; + + gStringInfo = (struct StringInfoBattle*)(&gBattleBufferA[gActiveBank][4]); + gLastUsedItem = gStringInfo->lastItem; + gLastUsedAbility = gStringInfo->lastAbility; + BATTLE_STRUCT->scriptingActive = gStringInfo->scrActive; + BATTLE_STRUCT->unk1605E = gStringInfo->unk1605E; + BATTLE_STRUCT->hpScale = gStringInfo->hpScale; + gStringBank = gStringInfo->StringBank; + BATTLE_STRUCT->stringMoveType = gStringInfo->moveType; + for (i = 0; i < 4; i++) + { + gAbilitiesPerBank[i] = gStringInfo->abilities[i]; + } + for (i = 0; i < 0x10; i++) + { + gBattleTextBuff1[i] = gStringInfo->textBuffs[0][i]; + gBattleTextBuff2[i] = gStringInfo->textBuffs[1][i]; + gBattleTextBuff3[i] = gStringInfo->textBuffs[2][i]; + } + switch (stringID) + { + case 0: // first battle msg + if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) + { + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + { + if (gBattleTypeFlags & BATTLE_TYPE_MULTI) + stringPtr = gUnknown_084005DB; + else + stringPtr = gUnknown_084005C7; + } + else + { + stringPtr = gUnknown_084005AA; +#ifdef GERMAN + stringPtr = de_sub_804110C(0xFFFF, stringPtr); +#endif + } + } + else + { + if (gBattleTypeFlags & BATTLE_TYPE_LEGENDARY) + stringPtr = gUnknown_08400568; + else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) // interesting, looks like they had something planned for wild double battles + stringPtr = gUnknown_08400590; + else if (gBattleTypeFlags & BATTLE_TYPE_WALLY_TUTORIAL) + stringPtr = gUnknown_0840057B; + else + stringPtr = gUnknown_08400555; + } + break; + case 1: // poke first send-out + if (GetBankSide(gActiveBank) == 0) + { + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + { + if (gBattleTypeFlags & BATTLE_TYPE_MULTI) + stringPtr = gUnknown_084006F1; + else + stringPtr = gUnknown_084006A4; + } + else + stringPtr = gUnknown_0840069C; + } + else + { + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + { + if (gBattleTypeFlags & BATTLE_TYPE_MULTI) + stringPtr = gUnknown_0840065C; + else if (gBattleTypeFlags & BATTLE_TYPE_LINK) + stringPtr = gUnknown_08400645; + else + { + stringPtr = gUnknown_08400608; +#ifdef GERMAN + stringPtr = de_sub_804110C(0xFFFF, stringPtr); +#endif + } + } + else if (gBattleTypeFlags & BATTLE_TYPE_LINK) + stringPtr = gUnknown_08400635; + else + { + stringPtr = gUnknown_084005F5; +#ifdef GERMAN + stringPtr = de_sub_804110C(0xFFFF, stringPtr); +#endif + } + } + break; + case 2: // sending poke to ball msg + if (GetBankSide(gActiveBank) == 0) + { + if (BATTLE_STRUCT->hpScale == 0) + stringPtr = gUnknown_08400709; + else if (BATTLE_STRUCT->hpScale == 1 || gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + stringPtr = gUnknown_08400727; + else if (BATTLE_STRUCT->hpScale == 2) + stringPtr = gUnknown_08400736; + else + stringPtr = gUnknown_08400749; + } + else + { + if (gTrainerBattleOpponent == 0x800) + { + if (gBattleTypeFlags & BATTLE_TYPE_MULTI) + stringPtr = gUnknown_08400781; + else + stringPtr = gUnknown_08400771; + } + else + { + stringPtr = gUnknown_0840075E; +#ifdef GERMAN + stringPtr = de_sub_804110C(0xFFFF, stringPtr); +#endif + } + } + break; + case 3: // switch-in msg + if (GetBankSide(BATTLE_STRUCT->scriptingActive) == 0) + { + if (BATTLE_STRUCT->hpScale == 0 || gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + stringPtr = gUnknown_084006B3; + else if (BATTLE_STRUCT->hpScale == 1) + stringPtr = gUnknown_084006BB; + else if (BATTLE_STRUCT->hpScale == 2) + stringPtr = gUnknown_084006C6; + else + stringPtr = gUnknown_084006D5; + } + else + { + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + { + if (gBattleTypeFlags & BATTLE_TYPE_MULTI) + stringPtr = gUnknown_0840068C; + else + stringPtr = gUnknown_0840067C; + } + else + { + stringPtr = gUnknown_08400622; +#ifdef GERMAN + stringPtr = de_sub_804110C(0xFFFF, stringPtr); +#endif + } + } + break; + case 4: // pokemon used a move msg + sub_8121D1C(gBattleTextBuff1); + if (gStringInfo->currentMove > 0x162) + StringCopy(gBattleTextBuff2, gUnknown_08401674[BATTLE_STRUCT->stringMoveType]); + else + StringCopy(gBattleTextBuff2, gMoveNames[gStringInfo->currentMove]); + sub_8121D74(gBattleTextBuff2); + stringPtr = gUnknown_084007BD; + break; + case 5: // battle end + if (gBattleTextBuff1[0] & 0x80) + { + gBattleTextBuff1[0] &= ~(0x80); + if (GetBankSide(gActiveBank) == 1 && gBattleTextBuff1[0] != 3) + gBattleTextBuff1[0] ^= 3; + if (gBattleTextBuff1[0] == BATTLE_LOST || gBattleTextBuff1[0] == BATTLE_DREW) + stringPtr = gUnknown_083FFEFC; + else + { + if (gBattleTypeFlags & BATTLE_TYPE_MULTI) + stringPtr = gUnknown_083FFFF7; + else + stringPtr = gUnknown_083FFFEA; + } + } + else + { + if (GetBankSide(gActiveBank) == 1 && gBattleTextBuff1[0] != 3) + gBattleTextBuff1[0] ^= 3; + if (gBattleTypeFlags & BATTLE_TYPE_MULTI) + { + switch (gBattleTextBuff1[0]) + { + case BATTLE_WON: + stringPtr = gUnknown_083FFF6A; + break; + case BATTLE_LOST: + stringPtr = gUnknown_083FFF99; + break; + case BATTLE_DREW: + stringPtr = gUnknown_083FFFCB; + break; + } + } + else + { + switch (gBattleTextBuff1[0]) + { + case BATTLE_WON: + stringPtr = gUnknown_083FFF56; + break; + case BATTLE_LOST: + stringPtr = gUnknown_083FFF81; + break; + case BATTLE_DREW: + stringPtr = gUnknown_083FFFB3; + break; + } + } + } + break; + default: // load a string from the table + if (stringID >= BATTLESTRINGS_MAX) + { + gDisplayedStringBattle[0] = EOS; + return; + } + else + { + stringPtr = gBattleStringsTable[stringID - BATTLESTRING_TO_SUB]; +#ifdef GERMAN + stringPtr = de_sub_804110C(stringID, stringPtr); +#endif + } + break; + } + StrCpyDecodeToDisplayedStringBattle(stringPtr); +} + +u32 StrCpyDecodeToDisplayedStringBattle(const u8* src) +{ + StrCpyDecodeBattle(src, gDisplayedStringBattle); +} + +const u8* AppendStatusString(u8* src) +{ + u32 i; + u8 status[8]; + u32 flag1, flag2; + u8* statusPtr; + + memcpy(status, gUnknown_084017A8, 8); + + statusPtr = status; + for (i = 0; i < sizeof(struct StatusFlagString); i++) + { + if (*src == EOS) + break; + *statusPtr = *src; + src++; + statusPtr++; + } + flag1 = *(u32*)(&status[0]); + flag2 = *(u32*)(&status[4]); + for (i = 0; i < 7; i++) + { + if (flag1 == *(u32*)(&gUnknown_081FA6D4[i].flag[0]) && flag2 == *(u32*)(&gUnknown_081FA6D4[i].flag[4])) + return gUnknown_081FA6D4[i].ptr; + } + return NULL; +} + +#ifdef GERMAN +extern u8 *de_sub_8073174(u8 *, const u8 *); +extern u8 *de_sub_8041024(s32, u32); +#endif + +#ifdef ENGLISH +#define HANDLE_NICKNAME_STRING_CASE(bank, monIndex) \ + if (GetBankSide(bank) != 0) \ + { \ + if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) \ + toCpy = gUnknown_08400797; \ + else \ + toCpy = gUnknown_08400791; \ + while (*toCpy != EOS) \ + { \ + dst[dstID] = *toCpy; \ + dstID++; \ + toCpy++; \ + } \ + GetMonData(&gEnemyParty[monIndex], MON_DATA_NICKNAME, text); \ + } \ + else \ + { \ + GetMonData(&gPlayerParty[monIndex], MON_DATA_NICKNAME, text); \ + } \ + StringGetEnd10(text); \ + toCpy = text; +#else +#define HANDLE_NICKNAME_STRING_CASE(bank, monIndex) \ + if (GetBankSide(bank) != 0) \ + { \ + GetMonData(&gEnemyParty[monIndex], MON_DATA_NICKNAME, text); \ + StringGetEnd10(text); \ + toCpy = text; \ + while (*toCpy != EOS) \ + { \ + dst[dstID] = *toCpy; \ + dstID++; \ + toCpy++; \ + } \ + if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) \ + toCpy = gUnknown_08400797; \ + else \ + toCpy = gUnknown_08400791; \ + } \ + else \ + { \ + GetMonData(&gPlayerParty[monIndex], MON_DATA_NICKNAME, text); \ + StringGetEnd10(text); \ + toCpy = text; \ + } +#endif + +u32 StrCpyDecodeBattle(const u8* src, u8* dst) +{ + u32 dstID = 0; // if they used dstID, why not use srcID as well? + const u8* toCpy = NULL; + u8 text[12]; + u8 multiplayerID = GetMultiplayerId(); + + while (*src != EOS) + { + if (*src == 0xFD) + { + src++; + switch (*src) + { + case 0: + if (gBattleTextBuff1[0] == 0xFD) + { + StrCpyDecodeBattleTextBuff(gBattleTextBuff1, gStringVar1); + toCpy = gStringVar1; + } + else + { + toCpy = AppendStatusString(gBattleTextBuff1); + if (toCpy == 0) + toCpy = gBattleTextBuff1; + } + break; + case 1: + if (gBattleTextBuff2[0] == 0xFD) + { + StrCpyDecodeBattleTextBuff(gBattleTextBuff2, gStringVar2); + toCpy = gStringVar2; + } + else + toCpy = gBattleTextBuff2; + break; + case 42: + if (gBattleTextBuff3[0] == 0xFD) + { + StrCpyDecodeBattleTextBuff(gBattleTextBuff3, gStringVar3); + toCpy = gStringVar3; + } + else + toCpy = gBattleTextBuff3; + break; + case 2: // first player poke name + GetMonData(&gPlayerParty[gBattlePartyID[GetBankByPlayerAI(0)]], MON_DATA_NICKNAME, text); + StringGetEnd10(text); + toCpy = text; + break; + case 3: // first enemy poke name + GetMonData(&gEnemyParty[gBattlePartyID[GetBankByPlayerAI(1)]], MON_DATA_NICKNAME, text); + StringGetEnd10(text); + toCpy = text; + break; + case 4: // second player poke name + GetMonData(&gPlayerParty[gBattlePartyID[GetBankByPlayerAI(2)]], MON_DATA_NICKNAME, text); + StringGetEnd10(text); + toCpy = text; + break; + case 5: // second enemy poke name + GetMonData(&gEnemyParty[gBattlePartyID[GetBankByPlayerAI(3)]], MON_DATA_NICKNAME, text); + StringGetEnd10(text); + toCpy = text; + break; + case 6: // link first player poke name + GetMonData(&gPlayerParty[gBattlePartyID[gLinkPlayers[multiplayerID].lp_field_18]], MON_DATA_NICKNAME, text); + StringGetEnd10(text); + toCpy = text; + break; + case 7: // link first opponent poke name + GetMonData(&gEnemyParty[gBattlePartyID[gLinkPlayers[multiplayerID].lp_field_18 ^ 1]], MON_DATA_NICKNAME, text); + StringGetEnd10(text); + toCpy = text; + break; + case 8: // link second player poke name + GetMonData(&gPlayerParty[gBattlePartyID[gLinkPlayers[multiplayerID].lp_field_18 ^ 2]], MON_DATA_NICKNAME, text); + StringGetEnd10(text); + toCpy = text; + break; + case 9: // link second opponent poke name + GetMonData(&gEnemyParty[gBattlePartyID[gLinkPlayers[multiplayerID].lp_field_18 ^ 3]], MON_DATA_NICKNAME, text); + StringGetEnd10(text); + toCpy = text; + break; + case 10: // attacker name with prefix, only bank 0/1 + HANDLE_NICKNAME_STRING_CASE(gBankAttacker, gBattlePartyID[GetBankByPlayerAI(GetBankIdentity(gBankAttacker) & 1)]) + break; + case 11: // attacker partner name, only bank 0/1 + if (GetBankSide(gBankAttacker) == 0) + GetMonData(&gPlayerParty[gBattlePartyID[GetBankByPlayerAI(GetBankIdentity(gBankAttacker) & 1) + 2]], MON_DATA_NICKNAME, text); + else + GetMonData(&gEnemyParty[gBattlePartyID[GetBankByPlayerAI(GetBankIdentity(gBankAttacker) & 1) + 2]], MON_DATA_NICKNAME, text); + + StringGetEnd10(text); + toCpy = text; + break; + case 12: // attacker name with prefix + HANDLE_NICKNAME_STRING_CASE(gBankAttacker, gBattlePartyID[gBankAttacker]) + break; + case 13: // target name with prefix + HANDLE_NICKNAME_STRING_CASE(gBankTarget, gBattlePartyID[gBankTarget]) + break; + case 14: // effect bank name with prefix + HANDLE_NICKNAME_STRING_CASE(gEffectBank, gBattlePartyID[gEffectBank]) + break; + case 15: // active bank name with prefix + HANDLE_NICKNAME_STRING_CASE(gActiveBank, gBattlePartyID[gActiveBank]) + break; + case 16: // scripting active bank name with prefix + HANDLE_NICKNAME_STRING_CASE(BATTLE_STRUCT->scriptingActive, gBattlePartyID[BATTLE_STRUCT->scriptingActive]) + break; + case 17: // current move name + if (gStringInfo->currentMove > 0x162) + toCpy = (void*) &gUnknown_08401674[BATTLE_STRUCT->stringMoveType]; + else + toCpy = gMoveNames[gStringInfo->currentMove]; + break; + case 18: // last used move name + if (gStringInfo->lastMove > 0x162) + toCpy = (void*) &gUnknown_08401674[BATTLE_STRUCT->stringMoveType]; + else + toCpy = gMoveNames[gStringInfo->lastMove]; + break; + case 19: // last used item + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + { + if (gLastUsedItem == ITEM_ENIGMA_BERRY) + { + if (gLinkPlayers[BATTLE_STRUCT->linkPlayerIndex].lp_field_18 == gStringBank) + { + StringCopy(text, gEnigmaBerries[gStringBank].name); +#ifdef ENGLISH + StringAppend(text, gUnknown_08400A85); +#else + de_sub_8073174(text, gUnknown_08400A85); +#endif + toCpy = text; + } + else + toCpy = gUnknown_08400A78; + } + else + { + CopyItemName(gLastUsedItem, text); + toCpy = text; + } + } + else + { + CopyItemName(gLastUsedItem, text); + toCpy = text; + } + break; + case 20: // last used ability + toCpy = gAbilityNames[gLastUsedAbility]; + break; + case 21: // attacker ability + toCpy = gAbilityNames[gAbilitiesPerBank[gBankAttacker]]; + break; + case 22: // target ability + toCpy = gAbilityNames[gAbilitiesPerBank[gBankTarget]]; + break; + case 23: // scripting active ability + toCpy = gAbilityNames[gAbilitiesPerBank[BATTLE_STRUCT->scriptingActive]]; + break; + case 24: // effect bank ability + toCpy = gAbilityNames[gAbilitiesPerBank[gEffectBank]]; + break; + case 25: // trainer class name +#ifdef ENGLISH + if (gTrainerBattleOpponent == 0x400) + toCpy = gTrainerClassNames[GetSecretBaseTrainerNameIndex()]; + else if (gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER) + toCpy = gTrainerClassNames[get_trainer_class_name_index()]; + else if (gBattleTypeFlags & BATTLE_TYPE_EREADER_TRAINER) + toCpy = gTrainerClassNames[sub_8135FD8()]; + else + toCpy = gTrainerClassNames[gTrainers[gTrainerBattleOpponent].trainerClass]; + break; +#else + if (gTrainerBattleOpponent == 0x400) + toCpy = de_sub_8041024(gTrainerBattleOpponent, 0); + else if (gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER) + toCpy = de_sub_8041024(BATTLE_TYPE_BATTLE_TOWER, 0); + else if (gBattleTypeFlags & BATTLE_TYPE_EREADER_TRAINER) + toCpy = de_sub_8041024(BATTLE_TYPE_EREADER_TRAINER, 0); + else + toCpy = de_sub_8041024(0, gTrainerBattleOpponent); + break; +#endif + case 26: // trainer name + if (gTrainerBattleOpponent == 0x400) + { + memset(text, 0xFF, 8); + memcpy(text, &ewram[0x17002], 7); + toCpy = text; + } + else if (gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER) + { + get_trainer_name(text); + toCpy = text; + } + else if (gBattleTypeFlags & BATTLE_TYPE_EREADER_TRAINER) + { + sub_8135FF4(text); + toCpy = text; + } + else + toCpy = gTrainers[gTrainerBattleOpponent].trainerName; + break; + case 27: // link player name? + toCpy = gLinkPlayers[multiplayerID].name; + break; + case 28: // link partner name? + toCpy = gLinkPlayers[sub_803FC34(2 ^ gLinkPlayers[multiplayerID].lp_field_18)].name; + break; + case 29: // link opponent 1 name? + toCpy = gLinkPlayers[sub_803FC34(1 ^ gLinkPlayers[multiplayerID].lp_field_18)].name; + break; + case 30: // link opponent 2 name? + toCpy = gLinkPlayers[sub_803FC34(3 ^ gLinkPlayers[multiplayerID].lp_field_18)].name; + break; + case 31: // link scripting active name + toCpy = gLinkPlayers[sub_803FC34(BATTLE_STRUCT->scriptingActive)].name; + break; + case 32: // player name + toCpy = gSaveBlock2.playerName; + break; + case 33: // ? + toCpy = sub_8082830(); + break; + case 34: // ? + HANDLE_NICKNAME_STRING_CASE(BATTLE_STRUCT->scriptingActive, BATTLE_STRUCT->unk1605E) + break; + case 35: // lanette pc + if (FlagGet(SYS_PC_LANETTE)) + toCpy = gUnknown_084009F7; + else + toCpy = gUnknown_084009ED; + break; + case 38: + if (GetBankSide(gBankAttacker) == 0) + toCpy = gUnknown_084007AC; + else + toCpy = gUnknown_084007A7; + break; + case 39: + if (GetBankSide(gBankTarget) == 0) + toCpy = gUnknown_084007AC; + else + toCpy = gUnknown_084007A7; + break; + case 36: + if (GetBankSide(gBankAttacker) == 0) + toCpy = gUnknown_084007A1; + else + toCpy = gUnknown_0840079C; + break; + case 37: + if (GetBankSide(gBankTarget) == 0) + toCpy = gUnknown_084007A1; + else + toCpy = gUnknown_0840079C; + break; + case 40: + if (GetBankSide(gBankAttacker) == 0) + toCpy = gUnknown_084007B7; + else + toCpy = gUnknown_084007B2; + break; + case 41: + if (GetBankSide(gBankTarget) == 0) + toCpy = gUnknown_084007B7; + else + toCpy = gUnknown_084007B2; + break; + } + //if (toCpy != NULL) really GF, why did you forget about this? + while (*toCpy != EOS) + { + dst[dstID] = *toCpy; + dstID++; + toCpy++; + } + if (*src == 33) + { + dst[dstID] = 0xFC; + dstID++; + dst[dstID] = 9; + dstID++; + } + } + else + { + dst[dstID] = *src; + dstID++; + } + src++; + } + dst[dstID] = *src; + dstID++; + return dstID; +} + +#define ByteRead16(ptr) ((ptr)[0] | ((ptr)[1] << 8)) +#define ByteRead32(ptr) ((ptr)[0] | (ptr)[1] << 8 | (ptr)[2] << 16 | (ptr)[3] << 24) + +void StrCpyDecodeBattleTextBuff(u8* src, u8* dst) +{ + u32 srcID = 1; + u32 value = 0; + u8 text[12]; + u16 hword; + + *dst = EOS; + while (src[srcID] != EOS) + { + switch (src[srcID]) + { + case 0: // battle string + hword = ByteRead16(&src[srcID + 1]); +#ifdef GERMAN + if (hword == 209 || hword == 211) + srcID += 3; +#endif + StringAppend(dst, gBattleStringsTable[hword - BATTLESTRING_TO_SUB]); + srcID += 3; + break; + case 1: // int to string + switch (src[srcID + 1]) + { + case 1: + value = src[srcID + 3]; + break; + case 2: + value = ByteRead16(&src[srcID + 3]); + break; + case 4: + value = ByteRead32(&src[srcID + 3]); + break; + } + ConvertIntToDecimalStringN(dst, value, 0, src[srcID + 2]); + srcID += src[srcID + 1] + 3; + break; + case 2: // move name + StringAppend(dst, gMoveNames[ByteRead16(&src[srcID + 1])]); + srcID += 3; + break; + case 3: // type name + StringAppend(dst, gTypeNames[src[srcID + 1]]); + srcID += 2; + break; + case 4: // poke nick with prefix +#ifdef ENGLISH + if (GetBankSide(src[srcID + 1]) == 0) + { + GetMonData(&gPlayerParty[src[srcID + 2]], MON_DATA_NICKNAME, text); + } + else + { + if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) + StringAppend(dst, gUnknown_08400797); + else + StringAppend(dst, gUnknown_08400791); + GetMonData(&gEnemyParty[src[srcID + 2]], MON_DATA_NICKNAME, text); + } + StringGetEnd10(text); + StringAppend(dst, text); +#else + if (GetBankSide(src[srcID + 1]) == 0) + { + GetMonData(&gPlayerParty[src[srcID + 2]], MON_DATA_NICKNAME, text); + StringGetEnd10(text); + StringAppend(dst, text); + } + else + { + GetMonData(&gEnemyParty[src[srcID + 2]], MON_DATA_NICKNAME, text); + StringGetEnd10(text); + StringAppend(dst, text); + if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) + StringAppend(dst, gUnknown_08400797); + else + StringAppend(dst, gUnknown_08400791); + } +#endif + srcID += 3; + break; + case 5: // stats + StringAppend(dst, gUnknown_08400F58[src[srcID + 1]]); + srcID += 2; + break; + case 6: // species name + GetSpeciesName(dst, ByteRead16(&src[srcID + 1])); + srcID += 3; + break; + case 7: // poke nick without prefix + if (GetBankSide(src[srcID + 1]) == 0) + GetMonData(&gPlayerParty[src[srcID + 2]], MON_DATA_NICKNAME, dst); + else + GetMonData(&gEnemyParty[src[srcID + 2]], MON_DATA_NICKNAME, dst); + StringGetEnd10(dst); + srcID += 3; + break; + case 8: // flavour table + StringAppend(dst, gUnknown_08400F78[src[srcID + 1]]); + srcID += 2; + break; + case 9: // ability names + StringAppend(dst, gAbilityNames[src[srcID + 1]]); + srcID += 2; + break; + case 10: // item name + { + hword = ByteRead16(&src[srcID + 1]); + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + { + if (hword == ITEM_ENIGMA_BERRY) + { + if (gLinkPlayers[BATTLE_STRUCT->linkPlayerIndex].lp_field_18 == gStringBank) + { + StringCopy(dst, gEnigmaBerries[gStringBank].name); +#ifdef ENGLISH + StringAppend(dst, gUnknown_08400A85); +#else + de_sub_8073174(dst, gUnknown_08400A85); +#endif + } + else + StringAppend(dst, gUnknown_08400A78); + } + else + CopyItemName(hword, dst); + } + else + CopyItemName(hword, dst); + srcID += 3; + } + break; + } + } +} + +void sub_8121D1C(u8* textBuff) +{ + s32 counter = 0; + u32 i = 0; + + while (counter != 4) + { + if (gUnknown_084016BC[i] == 0) + counter++; + if (gUnknown_084016BC[i++] == gStringInfo->currentMove) + break; + } + + if (counter >= 0) + { + if (counter <= 2) + StringCopy(textBuff, gUnknown_08400E5E); // is + else if (counter <= 4) + StringCopy(textBuff, gUnknown_08400E62); // 's + } +} + +void sub_8121D74(u8* dst) +{ + s32 counter = 0; + s32 i = 0; + + while (*dst != EOS) + dst++; + + while (counter != 4) + { + if (gUnknown_084016BC[i] == 0) + counter++; + if (gUnknown_084016BC[i++] == gStringInfo->currentMove) + break; + } + + switch (counter) + { + case 0: + StringCopy(dst, gUnknown_084007C8); + break; + case 1: + StringCopy(dst, gUnknown_084007CA); + break; + case 2: + StringCopy(dst, gUnknown_084007CC); + break; + case 3: + StringCopy(dst, gUnknown_084007CE); + break; + case 4: + StringCopy(dst, gUnknown_084007D0); + break; + } +} diff --git a/src/battle_party_menu.c b/src/battle/battle_party_menu.c similarity index 79% rename from src/battle_party_menu.c rename to src/battle/battle_party_menu.c index 73b847713..2f6dc6816 100644 --- a/src/battle_party_menu.c +++ b/src/battle/battle_party_menu.c @@ -22,38 +22,14 @@ extern u8 ewram[]; #define UNK_201606C_ARRAY (ewram + 0x1606C) // lazy define but whatever. -extern u8 IsLinkDoubleBattle(void); -extern void TryCreatePartyMenuMonIcon(u8, u8, struct Pokemon *); -extern void LoadHeldItemIconGraphics(void); -extern void CreateHeldItemIcons_806DC34(); extern u8 sub_806BD58(u8, u8); extern void PartyMenuPrintMonsLevelOrStatus(void); -extern void PrintPartyMenuMonNicknames(void); -extern void PartyMenuTryPrintMonsHP(void); extern void nullsub_13(void); -extern void PartyMenuDrawHPBars(void); -extern u8 sub_806B58C(u8); -extern u8 GetItemEffectType(); -extern void sub_806E750(u8, const struct PartyPopupMenu *, const struct PartyMenuItem *, int); -extern u16 sub_806BD80(); -extern u8 sub_806CA38(); -extern void sub_806D5A4(void); extern void sub_802E414(void); extern void sub_80A6DCC(void); -extern void sub_806AF4C(); -extern u8 sub_80F9344(void); -extern u8 sub_806B124(void); -extern void sub_806C994(); -extern void sub_806BF74(); -extern void sub_806AEDC(void); -extern TaskFunc PartyMenuGetPopupMenuFunc(u8, const struct PartyPopupMenu *, const struct PartyMenuItem *, u8); -extern void sub_806E7D0(u8, const struct PartyPopupMenu *); extern u8 *sub_8040D08(); extern void sub_8040B8C(void); -extern void sub_806E6F0(); -extern void sub_806D538(); extern void nullsub_14(); -extern void OpenPartyMenu(); extern u8 sub_803FBBC(void); extern u8 gPlayerPartyCount; @@ -86,7 +62,7 @@ static void Task_BattlePartyMenuSummary(u8 taskId); static void Task_BattlePartyMenuShift(u8 taskId); static void Task_BattlePartyMenuCancel(u8 taskId); -static const struct PartyMenuItem sBattlePartyMenuActions[] = +static const struct MenuAction2 sBattlePartyMenuActions[] = { {OtherText_Summary, Task_BattlePartyMenuSummary}, {gOtherText_CancelNoTerminator, Task_BattlePartyMenuCancel}, @@ -349,7 +325,7 @@ void unref_sub_8094DB0(void) { r4 = sub_8094C20(0); sub_8094C98(0, i); - sub_806E6F0(&gPlayerParty[r4], &gPlayerParty[n]); + SwapPokemon(&gPlayerParty[r4], &gPlayerParty[n]); break; } } @@ -361,7 +337,7 @@ void sub_8094E20(u8 a) gUnknown_02038473 = a; nullsub_14(); pokemon_change_order(); - OpenPartyMenu(1, 0xFF); + OpenPartyMenu(PARTY_MENU_TYPE_BATTLE, 0xFF); } void sub_8094E4C(void) @@ -369,93 +345,93 @@ void sub_8094E4C(void) sub_8094E20(3); } -int SetUpBattlePartyMenu(void) +bool8 SetUpBattlePartyMenu(void) { - switch (EWRAM_1B000.unk264) + switch (EWRAM_1B000.setupState) //switch (ewram1B000.unk264[0]) { case 0: //TODO: try to get rid of this duplicate code if (IsLinkDoubleBattle() == TRUE) { - if (EWRAM_1B000.unk266 != 6) + if (EWRAM_1B000.monIndex != 6) { - TryCreatePartyMenuMonIcon(EWRAM_1B000.unk260, EWRAM_1B000.unk266, &gPlayerParty[EWRAM_1B000.unk266]); - EWRAM_1B000.unk266++; + TryCreatePartyMenuMonIcon(EWRAM_1B000.menuHandlerTaskId, EWRAM_1B000.monIndex, &gPlayerParty[EWRAM_1B000.monIndex]); + EWRAM_1B000.monIndex++; } else { - EWRAM_1B000.unk266 = 0; - EWRAM_1B000.unk264++; + EWRAM_1B000.monIndex = 0; + EWRAM_1B000.setupState++; } } else { - if (EWRAM_1B000.unk266 < 6) + if (EWRAM_1B000.monIndex < 6) { - TryCreatePartyMenuMonIcon(EWRAM_1B000.unk260, EWRAM_1B000.unk266, &gPlayerParty[EWRAM_1B000.unk266]); - EWRAM_1B000.unk266++; + TryCreatePartyMenuMonIcon(EWRAM_1B000.menuHandlerTaskId, EWRAM_1B000.monIndex, &gPlayerParty[EWRAM_1B000.monIndex]); + EWRAM_1B000.monIndex++; } else { - EWRAM_1B000.unk266 = 0; - EWRAM_1B000.unk264++; + EWRAM_1B000.monIndex = 0; + EWRAM_1B000.setupState++; } } break; case 1: LoadHeldItemIconGraphics(); - EWRAM_1B000.unk264++; + EWRAM_1B000.setupState++; break; case 2: - CreateHeldItemIcons_806DC34(EWRAM_1B000.unk260); - EWRAM_1B000.unk264++; + CreateHeldItemIcons_806DC34(EWRAM_1B000.menuHandlerTaskId); + EWRAM_1B000.setupState++; break; case 3: - if (sub_806BD58(EWRAM_1B000.unk260, EWRAM_1B000.unk266) == 1) + if (sub_806BD58(EWRAM_1B000.menuHandlerTaskId, EWRAM_1B000.monIndex) == 1) { - EWRAM_1B000.unk266 = 0; - EWRAM_1B000.unk264++; + EWRAM_1B000.monIndex = 0; + EWRAM_1B000.setupState++; } else - EWRAM_1B000.unk266++; + EWRAM_1B000.monIndex++; break; case 4: PartyMenuPrintMonsLevelOrStatus(); - EWRAM_1B000.unk264++; + EWRAM_1B000.setupState++; break; case 5: PrintPartyMenuMonNicknames(); - EWRAM_1B000.unk264++; + EWRAM_1B000.setupState++; break; case 6: PartyMenuTryPrintMonsHP(); - EWRAM_1B000.unk264++; + EWRAM_1B000.setupState++; break; case 7: nullsub_13(); - EWRAM_1B000.unk264++; + EWRAM_1B000.setupState++; break; case 8: PartyMenuDrawHPBars(); - EWRAM_1B000.unk264++; + EWRAM_1B000.setupState++; break; case 9: - if (sub_806B58C(EWRAM_1B000.unk266) == 1) + if (DrawPartyMonBackground(EWRAM_1B000.monIndex) == 1) { - EWRAM_1B000.unk266 = 0; - EWRAM_1B000.unk264++; + EWRAM_1B000.monIndex = 0; + EWRAM_1B000.setupState++; } else - EWRAM_1B000.unk266++; + EWRAM_1B000.monIndex++; break; case 10: if (gUnknown_02038473 == 3) { if (GetItemEffectType(gScriptItemId) == 10) - ewram1B000.unk259 = 0xFF; + ewram1B000.promptTextId = 0xFF; else - ewram1B000.unk259 = 3; + ewram1B000.promptTextId = 3; } return TRUE; } @@ -468,55 +444,56 @@ static void sub_8095050(u8 a, u8 b) { if (gUnknown_02038473 == 1) { - gTasks[EWRAM_1B000.unk260].data[4] = 1; - gTasks[EWRAM_1B000.unk260].data[5] = 1; + gTasks[EWRAM_1B000.menuHandlerTaskId].data[4] = 1; + gTasks[EWRAM_1B000.menuHandlerTaskId].data[5] = 1; } else { - gTasks[EWRAM_1B000.unk260].data[4] = 0; - gTasks[EWRAM_1B000.unk260].data[5] = 0; + gTasks[EWRAM_1B000.menuHandlerTaskId].data[4] = 0; + gTasks[EWRAM_1B000.menuHandlerTaskId].data[5] = 0; } } else { - gTasks[EWRAM_1B000.unk260].data[4] = 2; - gTasks[EWRAM_1B000.unk260].data[5] = 2; + gTasks[EWRAM_1B000.menuHandlerTaskId].data[4] = 2; + gTasks[EWRAM_1B000.menuHandlerTaskId].data[5] = 2; } - sub_806E750(gTasks[a].data[4], sBattlePartyPopupMenus, sBattlePartyMenuActions, 0); + + ShowPartyPopupMenu(gTasks[a].data[4], sBattlePartyPopupMenus, sBattlePartyMenuActions, 0); } -void SetUpBattlePokemonMenu(u8 a) +void HandleBattlePartyMenu(u8 taskId) { if (!gPaletteFade.active) { if (gUnknown_02038473 == 3 && GetItemEffectType(gScriptItemId) == 10) { - gUnknown_03004AE4(a, gScriptItemId, Task_80952E4); + gUnknown_03004AE4(taskId, gScriptItemId, Task_80952E4); return; } - switch (sub_806BD80(a)) + switch (HandleDefaultPartyMenuInput(taskId)) { - case 1: + case A_BUTTON: if (gUnknown_02038473 == 3) { - if (GetMonData(&gPlayerParty[sub_806CA38(a)], MON_DATA_IS_EGG)) + if (GetMonData(&gPlayerParty[sub_806CA38(taskId)], MON_DATA_IS_EGG)) PlaySE(SE_HAZURE); else { sub_806D5A4(); - gUnknown_03004AE4(a, gScriptItemId, Task_80952E4); + gUnknown_03004AE4(taskId, gScriptItemId, Task_80952E4); } } else { PlaySE(SE_SELECT); - GetMonNickname(&gPlayerParty[sub_806CA38(a)], gStringVar1); - sub_8095050(a, sub_806CA38(a)); - SetTaskFuncWithFollowupFunc(a, Task_HandlePopupMenuInput, SetUpBattlePokemonMenu); + GetMonNickname(&gPlayerParty[sub_806CA38(taskId)], gStringVar1); + sub_8095050(taskId, sub_806CA38(taskId)); + SetTaskFuncWithFollowupFunc(taskId, Task_HandlePopupMenuInput, HandleBattlePartyMenu); } break; - case 2: + case B_BUTTON: if (gUnknown_02038473 == 1) PlaySE(SE_HAZURE); else @@ -525,12 +502,12 @@ void SetUpBattlePokemonMenu(u8 a) if (gUnknown_02038473 == 3) { gUnknown_0202E8F4 = 0; - gTasks[a].func = Task_80952E4; + gTasks[taskId].func = Task_80952E4; } else { gUnknown_0202E8F4 = 0; - gTasks[a].func = Task_809527C; + gTasks[taskId].func = Task_809527C; } } break; @@ -578,7 +555,7 @@ static void Task_8095330(u8 taskId) static void Task_809535C(void) { gPaletteFade.bufferTransferDisabled = TRUE; - sub_806AF4C(1, 0xFF, SetUpBattlePokemonMenu, 5); + SetPartyMenuSettings(PARTY_MENU_TYPE_BATTLE, 0xFF, HandleBattlePartyMenu, 5); SetMainCallback2(Task_809538C); } @@ -586,14 +563,14 @@ static void Task_809538C(void) { do { - if (sub_806B124() == 1) + if (InitPartyMenu() == TRUE) { - sub_806C994(EWRAM_1B000.unk260, gUnknown_020384F0); - sub_806BF74(EWRAM_1B000.unk260, 0); + sub_806C994(EWRAM_1B000.menuHandlerTaskId, gUnknown_020384F0); + ChangePartyMenuSelection(EWRAM_1B000.menuHandlerTaskId, 0); GetMonNickname(&gPlayerParty[gUnknown_020384F0], gStringVar1); - sub_8095050(EWRAM_1B000.unk260, gUnknown_020384F0); - SetTaskFuncWithFollowupFunc(EWRAM_1B000.unk260, Task_HandlePopupMenuInput, SetUpBattlePokemonMenu); - SetMainCallback2(sub_806AEDC); + sub_8095050(EWRAM_1B000.menuHandlerTaskId, gUnknown_020384F0); + SetTaskFuncWithFollowupFunc(EWRAM_1B000.menuHandlerTaskId, Task_HandlePopupMenuInput, HandleBattlePartyMenu); + SetMainCallback2(CB2_PartyMenuMain); return; } } while (sub_80F9344() != 1); @@ -667,7 +644,7 @@ static void Task_BattlePartyMenuShift(u8 taskId) u8 i; u8 r4; - sub_806E7D0(gTasks[taskId].data[4], sBattlePartyPopupMenus); + ClosePartyPopupMenu(gTasks[taskId].data[4], sBattlePartyPopupMenus); partySelection = sub_806CA38(taskId); if (IsLinkDoubleBattle() == TRUE && (partySelection == 1 || partySelection == 4 || partySelection == 5)) { @@ -742,15 +719,15 @@ static void Task_BattlePartyMenuShift(u8 taskId) gUnknown_0202E8F4 = 1; r4 = pokemon_order_func(gBattlePartyID[gBankInMenu]); sub_8094C98(r4, partySelection); - sub_806E6F0(&gPlayerParty[r4], &gPlayerParty[partySelection]); + SwapPokemon(&gPlayerParty[r4], &gPlayerParty[partySelection]); gTasks[taskId].func = Task_809527C; } static void Task_BattlePartyMenuCancel(u8 taskId) { HandleDestroyMenuCursors(); - sub_806E7D0(gTasks[taskId].data[4], sBattlePartyPopupMenus); + ClosePartyPopupMenu(gTasks[taskId].data[4], sBattlePartyPopupMenus); gTasks[taskId].data[4] = gTasks[taskId].data[5]; - sub_806D538(0, 0); + PrintPartyMenuPromptText(0, 0); SwitchTaskToFollowupFunc(taskId); } diff --git a/src/battle/battle_records.c b/src/battle/battle_records.c new file mode 100644 index 000000000..d848a10b8 --- /dev/null +++ b/src/battle/battle_records.c @@ -0,0 +1,334 @@ +#include "global.h" +#include "battle_records.h" +#include "game_stat.h" +#include "link.h" +#include "menu.h" +#include "overworld.h" +#include "string_util.h" +#include "strings2.h" +#include "trainer_card.h" + +extern struct LinkPlayerMapObject gLinkPlayerMapObjects[4]; +extern u8 gBattleOutcome; + +static void InitLinkBattleRecord(struct LinkBattleRecord *record) +{ + CpuFill16(0, record, sizeof(struct LinkBattleRecord)); + record->name[0] = 0xFF; + record->trainerId = 0; + record->wins = 0; + record->losses = 0; + record->draws = 0; +} + +static void InitLinkBattleRecords_(struct LinkBattleRecord *records) +{ + int i; + for (i = 0; i < 5; i++) + { + InitLinkBattleRecord(records + i); + } + SetGameStat(GAME_STAT_LINK_BATTLE_WINS, 0); + SetGameStat(GAME_STAT_LINK_BATTLE_LOSSES, 0); + SetGameStat(GAME_STAT_LINK_BATTLE_DRAWS, 0); +} + +static int GetLinkBattleRecordTotalBattles(struct LinkBattleRecord *record) +{ + return record->wins + record->losses + record->draws; +} + +static int FindLinkBattleRecord(struct LinkBattleRecord *records, u8 *name, u16 trainerId) +{ + int i; + + for (i = 0; i < 5; i++) + { + memcpy(gStringVar1, records[i].name, 7); + gStringVar1[7] = EOS; + if (!StringCompareWithoutExtCtrlCodes(gStringVar1, name) && records[i].trainerId == trainerId) + return i; + } + + return 5; +} + +static void SortLinkBattleRecords(struct LinkBattleRecord *records) +{ + int i, j; + + for (i = 4; i > 0; i--) + { + for (j = i - 1; j >= 0; j--) + { + int totalBattlesI = GetLinkBattleRecordTotalBattles(records + i); + int totalBattlesJ = GetLinkBattleRecordTotalBattles(records + j); + + if (totalBattlesI > totalBattlesJ) + { + struct LinkBattleRecord temp = *(records + i); + *(records + i) = *(records + j); + *(records + j) = temp; + } + } + } +} + +static void UpdateLinkBattleRecord(struct LinkBattleRecord *record, int battleOutcome) +{ + switch (battleOutcome) + { + case 1: + record->wins++; + if (record->wins > 9999) + record->wins = 9999; + break; + case 2: + record->losses++; + if (record->losses > 9999) + record->losses = 9999; + break; + case 3: + record->draws++; + if (record->draws > 9999) + record->draws = 9999; + break; + } +} + +static void UpdateLinkBattleGameStats(int battleOutcome) +{ + u8 stat; + + switch (battleOutcome) + { + case 1: + stat = GAME_STAT_LINK_BATTLE_WINS; + break; + case 2: + stat = GAME_STAT_LINK_BATTLE_LOSSES; + break; + case 3: + stat = GAME_STAT_LINK_BATTLE_DRAWS; + break; + default: + return; + } + + if (GetGameStat(stat) < 9999) + IncrementGameStat(stat); +} + +static void UpdateLinkBattleRecords_(struct LinkBattleRecord *records, u8 *name, u16 trainerId, int battleOutcome, u8 language) +{ + int index; + UpdateLinkBattleGameStats(battleOutcome); + SortLinkBattleRecords(records); + index = FindLinkBattleRecord(records, name, trainerId); + if (index == 5) + { + index = 4; + InitLinkBattleRecord(records + index); + if (language == LANGUAGE_JAPANESE) + { + records[index].name[0] = EXT_CTRL_CODE_BEGIN; + records[index].name[1] = 0x15; + StringCopyN(records[index].name + 2, name, 5); + } + else + { + StringCopyN(records[index].name, name, 7); + } + + // needed block to match + { + struct LinkBattleRecord *record = records + index; + record->trainerId = trainerId; + } + } + UpdateLinkBattleRecord(records + index, battleOutcome); + SortLinkBattleRecords(records); +} + +void InitLinkBattleRecords(void) +{ + InitLinkBattleRecords_(gSaveBlock1.linkBattleRecords); +} + +static void IncTrainerCardWins(int id) +{ + u16 *wins = &gTrainerCards[id].linkBattleWins; + (*wins)++; + if (*wins > 9999) + *wins = 9999; +} + +static void IncTrainerCardLosses(int id) +{ + u16 *losses = &gTrainerCards[id].linkBattleLosses; + (*losses)++; + if (*losses > 9999) + *losses = 9999; +} + +static void UpdateTrainerCardWinsLosses(int id) +{ + switch (gBattleOutcome) + { + case 1: + IncTrainerCardWins(id ^ 1); + IncTrainerCardLosses(id); + break; + case 2: + IncTrainerCardLosses(id ^ 1); + IncTrainerCardWins(id); + break; + } +} + +void UpdateLinkBattleRecords(int id) +{ + UpdateTrainerCardWinsLosses(id); + UpdateLinkBattleRecords_( + gSaveBlock1.linkBattleRecords, + gTrainerCards[id].playerName, + gTrainerCards[id].trainerId, + gBattleOutcome, + gLinkPlayers[gLinkPlayerMapObjects[id].linkPlayerId].language); +} + +static void PrintLinkBattleWinsLossesDraws(struct LinkBattleRecord *records) +{ + ConvertIntToDecimalStringN_DigitWidth6(gStringVar1, GetGameStat(GAME_STAT_LINK_BATTLE_WINS), STR_CONV_MODE_RIGHT_ALIGN, 4); + ConvertIntToDecimalStringN_DigitWidth6(gStringVar2, GetGameStat(GAME_STAT_LINK_BATTLE_LOSSES), STR_CONV_MODE_RIGHT_ALIGN, 4); + ConvertIntToDecimalStringN_DigitWidth6(gStringVar3, GetGameStat(GAME_STAT_LINK_BATTLE_DRAWS), STR_CONV_MODE_RIGHT_ALIGN, 4); + MenuPrint(gOtherText_WinRecord, 3, 3); +} + +static void PrintLinkBattleRecord(struct LinkBattleRecord *record, u8 y) +{ + if (!record->wins && !record->losses && !record->draws) + { + u8 buffer[16]; + buffer[0] = EXT_CTRL_CODE_BEGIN; + buffer[1] = 0x14; + buffer[2] = 6; + buffer[3] = EXT_CTRL_CODE_BEGIN; + buffer[4] = 0x11; + buffer[5] = 1; + StringCopy(buffer + 6, gOtherText_SevenDashes); + MenuPrint(buffer, 3, y); + StringCopy(buffer + 6, gOtherText_FourDashes); + MenuPrint(buffer, 11, y); + MenuPrint(buffer, 17, y); + MenuPrint(buffer, 23, y); + } + else + { + StringFillWithTerminator(gStringVar1, 8); + StringCopyN(gStringVar1, record->name, 7); + MenuPrint(gStringVar1, 3, y); + gStringVar1[0] = EXT_CTRL_CODE_BEGIN; + gStringVar1[1] = 0x14; + gStringVar1[2] = 6; + ConvertIntToDecimalStringN(gStringVar1 + 3, record->wins, STR_CONV_MODE_RIGHT_ALIGN, 4); + MenuPrint(gStringVar1, 11, y); + ConvertIntToDecimalStringN(gStringVar1 + 3, record->losses, STR_CONV_MODE_RIGHT_ALIGN, 4); + MenuPrint(gStringVar1, 17, y); + ConvertIntToDecimalStringN(gStringVar1 + 3, record->draws, STR_CONV_MODE_RIGHT_ALIGN, 4); + MenuPrint(gStringVar1, 23, y); + } +} + +void ShowLinkBattleRecords(void) { + s32 i; + MenuDrawTextWindow(1, 0, 28, 18); + sub_8072BD8((u8 *) gOtherText_BattleResults, 0, 1, 240); + + PrintLinkBattleWinsLossesDraws(gSaveBlock1.linkBattleRecords); +#if ENGLISH + MenuPrint(gOtherText_WinLoseDraw, 12, 6); +#elif GERMAN + MenuPrint_PixelCoords(gOtherText_WinLoseDraw, 88, 48, 1); +#endif + + for (i = 0; i < 5; i++) + { + PrintLinkBattleRecord(&gSaveBlock1.linkBattleRecords[i], 6 + (i + 1) * 2); + } +} + +static bool32 sub_8110494(u8 level) +{ + struct SaveBlock2_Sub *sb2sub = &gSaveBlock2.filler_A8; + + switch (sb2sub->var_4AE[level]) + { + case 0: + return FALSE; + case 1: + return FALSE; + case 2: + return TRUE; + case 4: + return FALSE; + case 3: + return TRUE; + case 5: + return FALSE; + case 6: + return TRUE; + default: + return FALSE; + } +} + +static void PrintWinStreak(const u8 *str, u16 streak, u8 left, u8 top) +{ + MenuPrint(str, left, top); + if (streak > 9999) + streak = 9999; + sub_8072C14(gStringVar1, streak, 24, 1); + MenuPrint(gOtherText_WinStreak, left + 7, top); +} + +static void PrintRecordWinStreak(u8 level, u8 left, u8 top) +{ + struct SaveBlock2_Sub *sb2sub = &gSaveBlock2.filler_A8; + u16 winStreak = sb2sub->recordWinStreak[level]; + PrintWinStreak(gOtherText_Record, winStreak, left, top); +} + +static u16 GetLastWinStreak(u8 level) +{ + u16 result = gSaveBlock2.filler_A8.winStreak[level]; + if (result > 9999) + result = 9999; + return result; +} + +static void PrintLastWinStreak(u8 level, u8 left, u8 top) +{ + u16 winStreak = GetLastWinStreak(level); + if (sub_8110494(level) == TRUE) + PrintWinStreak(gOtherText_Current, winStreak, left, top); + else + PrintWinStreak(gOtherText_Prev, winStreak, left, top); +} + +void ShowBattleTowerRecords(void) +{ + u16 i; + MenuDrawTextWindow(3, 1, 27, 17); + sub_8072BD8(gOtherText_BattleTowerResults, 3, 2, 0xC8); + MenuPrint(gOtherText_Lv50, 5, 6); + MenuPrint(gOtherText_Lv100, 5, 12); + for (i = 5; i < 26; i++) + { + sub_8071F60(CHAR_HYPHEN, i, 10); + } + PrintLastWinStreak(0, 10, 6); + PrintRecordWinStreak(0, 10, 8); + PrintLastWinStreak(1, 10, 12); + PrintRecordWinStreak(1, 10, 14); +} diff --git a/src/battle_setup.c b/src/battle/battle_setup.c similarity index 61% rename from src/battle_setup.c rename to src/battle/battle_setup.c index adcbe8eaa..91a0667d9 100644 --- a/src/battle_setup.c +++ b/src/battle/battle_setup.c @@ -18,7 +18,7 @@ #include "opponent_constants.h" #include "palette.h" #include "rng.h" -#include "rom4.h" +#include "overworld.h" #include "safari_zone.h" #include "script.h" #include "script_pokemon_80C4.h" @@ -37,15 +37,15 @@ extern u16 gScriptResult; extern void (*gFieldCallback)(void); -EWRAM_DATA u16 gTrainerBattleMode = 0; +EWRAM_DATA static u16 sTrainerBattleMode = 0; EWRAM_DATA u16 gTrainerBattleOpponent = 0; -EWRAM_DATA u16 gTrainerMapObjectLocalId = 0; -EWRAM_DATA u8 *gTrainerIntroSpeech = NULL; -EWRAM_DATA u8 *gTrainerDefeatSpeech = NULL; -EWRAM_DATA u8 *gTrainerVictorySpeech = NULL; -EWRAM_DATA u8 *gTrainerCannotBattleSpeech = NULL; -EWRAM_DATA u8 *gTrainerBattleScriptReturnAddress = NULL; -EWRAM_DATA u8 *gTrainerBattleEndScript = NULL; +EWRAM_DATA static u16 sTrainerMapObjectLocalId = 0; +EWRAM_DATA static u8 *sTrainerIntroSpeech = NULL; +EWRAM_DATA static u8 *sTrainerDefeatSpeech = NULL; +EWRAM_DATA static u8 *sTrainerVictorySpeech = NULL; +EWRAM_DATA static u8 *sTrainerCannotBattleSpeech = NULL; +EWRAM_DATA static u8 *sTrainerBattleScriptRetAddr = NULL; +EWRAM_DATA static u8 *sTrainerBattleEndScript = NULL; extern u16 gBattleTypeFlags; extern u16 gScriptLastTalked; @@ -62,80 +62,99 @@ extern u8 gUnknown_0819F8AE[]; extern u8 gUnknown_0819F80B[]; extern u8 gUnknown_081C6C02[]; - +// The first transition is used if the enemy pokemon are lower level than our pokemon. +// Otherwise, the second transition is used. static const u8 gBattleTransitionTable_Wild[][2] = { - {8, 9}, - {5, 10}, - {0, 10}, - {7, 6}, + {B_TRANSITION_SLICE, B_TRANSITION_WHITEFADE}, // Normal + {B_TRANSITION_CLOCKWISE_BLACKFADE, B_TRANSITION_GRID_SQUARES}, // Cave + {B_TRANSITION_BLUR, B_TRANSITION_GRID_SQUARES}, // Cave with flash used + {B_TRANSITION_WAVE, B_TRANSITION_RIPPLE}, // Water }; static const u8 gBattleTransitionTable_Trainer[][2] = { - {4, 11}, - {2, 3}, - {0, 10}, - {1, 6}, + {B_TRANSITION_POKEBALLS_TRAIL, B_TRANSITION_SHARDS}, // Normal + {B_TRANSITION_SHUFFLE, B_TRANSITION_BIG_POKEBALL}, // Cave + {B_TRANSITION_BLUR, B_TRANSITION_GRID_SQUARES}, // Cave with flash used + {B_TRANSITION_SWIRL, B_TRANSITION_RIPPLE}, // Water }; -static const struct TrainerBattleSpec gTrainerBattleSpecs_0[] = + +enum { - {&gTrainerBattleMode, 0}, - {&gTrainerBattleOpponent, 1}, - {&gTrainerMapObjectLocalId, 1}, - {&gTrainerIntroSpeech, 2}, - {&gTrainerDefeatSpeech, 2}, - {&gTrainerVictorySpeech, 5}, - {&gTrainerCannotBattleSpeech, 5}, - {&gTrainerBattleEndScript, 5}, - {&gTrainerBattleScriptReturnAddress, 6}, + TRAINER_PARAM_LOAD_VAL_8BIT, + TRAINER_PARAM_LOAD_VAL_16BIT, + TRAINER_PARAM_LOAD_VAL_32BIT, + TRAINER_PARAM_CLEAR_VAL_8BIT, + TRAINER_PARAM_CLEAR_VAL_16BIT, + TRAINER_PARAM_CLEAR_VAL_32BIT, + TRAINER_PARAM_LOAD_SCRIPT_RET_ADDR, }; -static const struct TrainerBattleSpec gTrainerBattleSpecs_1[] = + +struct TrainerBattleParameter { - {&gTrainerBattleMode, 0}, - {&gTrainerBattleOpponent, 1}, - {&gTrainerMapObjectLocalId, 1}, - {&gTrainerIntroSpeech, 2}, - {&gTrainerDefeatSpeech, 2}, - {&gTrainerVictorySpeech, 5}, - {&gTrainerCannotBattleSpeech, 5}, - {&gTrainerBattleEndScript, 2}, - {&gTrainerBattleScriptReturnAddress, 6}, + void *varPtr; + u8 ptrType; }; -static const struct TrainerBattleSpec gTrainerBattleSpecs_2[] = + +static const struct TrainerBattleParameter gTrainerBattleSpecs_0[] = { - {&gTrainerBattleMode, 0}, - {&gTrainerBattleOpponent, 1}, - {&gTrainerMapObjectLocalId, 1}, - {&gTrainerIntroSpeech, 2}, - {&gTrainerDefeatSpeech, 2}, - {&gTrainerVictorySpeech, 5}, - {&gTrainerCannotBattleSpeech, 2}, - {&gTrainerBattleEndScript, 5}, - {&gTrainerBattleScriptReturnAddress, 6}, + {&sTrainerBattleMode, TRAINER_PARAM_LOAD_VAL_8BIT}, + {&gTrainerBattleOpponent, TRAINER_PARAM_LOAD_VAL_16BIT}, + {&sTrainerMapObjectLocalId, TRAINER_PARAM_LOAD_VAL_16BIT}, + {&sTrainerIntroSpeech, TRAINER_PARAM_LOAD_VAL_32BIT}, + {&sTrainerDefeatSpeech, TRAINER_PARAM_LOAD_VAL_32BIT}, + {&sTrainerVictorySpeech, TRAINER_PARAM_CLEAR_VAL_32BIT}, + {&sTrainerCannotBattleSpeech, TRAINER_PARAM_CLEAR_VAL_32BIT}, + {&sTrainerBattleEndScript, TRAINER_PARAM_CLEAR_VAL_32BIT}, + {&sTrainerBattleScriptRetAddr, TRAINER_PARAM_LOAD_SCRIPT_RET_ADDR}, }; -static const struct TrainerBattleSpec gTrainerBattleSpecs_3[] = +static const struct TrainerBattleParameter gTrainerBattleSpecs_1[] = { - {&gTrainerBattleMode, 0}, - {&gTrainerBattleOpponent, 1}, - {&gTrainerMapObjectLocalId, 1}, - {&gTrainerIntroSpeech, 5}, - {&gTrainerDefeatSpeech, 2}, - {&gTrainerVictorySpeech, 5}, - {&gTrainerCannotBattleSpeech, 5}, - {&gTrainerBattleEndScript, 5}, - {&gTrainerBattleScriptReturnAddress, 6}, + {&sTrainerBattleMode, TRAINER_PARAM_LOAD_VAL_8BIT}, + {&gTrainerBattleOpponent, TRAINER_PARAM_LOAD_VAL_16BIT}, + {&sTrainerMapObjectLocalId, TRAINER_PARAM_LOAD_VAL_16BIT}, + {&sTrainerIntroSpeech, TRAINER_PARAM_LOAD_VAL_32BIT}, + {&sTrainerDefeatSpeech, TRAINER_PARAM_LOAD_VAL_32BIT}, + {&sTrainerVictorySpeech, TRAINER_PARAM_CLEAR_VAL_32BIT}, + {&sTrainerCannotBattleSpeech, TRAINER_PARAM_CLEAR_VAL_32BIT}, + {&sTrainerBattleEndScript, TRAINER_PARAM_LOAD_VAL_32BIT}, + {&sTrainerBattleScriptRetAddr, TRAINER_PARAM_LOAD_SCRIPT_RET_ADDR}, }; -static const struct TrainerBattleSpec gTrainerBattleSpecs_4[] = +static const struct TrainerBattleParameter gTrainerBattleSpecs_2[] = { - {&gTrainerBattleMode, 0}, - {&gTrainerBattleOpponent, 1}, - {&gTrainerMapObjectLocalId, 1}, - {&gTrainerIntroSpeech, 2}, - {&gTrainerDefeatSpeech, 2}, - {&gTrainerVictorySpeech, 5}, - {&gTrainerCannotBattleSpeech, 2}, - {&gTrainerBattleEndScript, 2}, - {&gTrainerBattleScriptReturnAddress, 6}, + {&sTrainerBattleMode, TRAINER_PARAM_LOAD_VAL_8BIT}, + {&gTrainerBattleOpponent, TRAINER_PARAM_LOAD_VAL_16BIT}, + {&sTrainerMapObjectLocalId, TRAINER_PARAM_LOAD_VAL_16BIT}, + {&sTrainerIntroSpeech, TRAINER_PARAM_LOAD_VAL_32BIT}, + {&sTrainerDefeatSpeech, TRAINER_PARAM_LOAD_VAL_32BIT}, + {&sTrainerVictorySpeech, TRAINER_PARAM_CLEAR_VAL_32BIT}, + {&sTrainerCannotBattleSpeech, TRAINER_PARAM_LOAD_VAL_32BIT}, + {&sTrainerBattleEndScript, TRAINER_PARAM_CLEAR_VAL_32BIT}, + {&sTrainerBattleScriptRetAddr, TRAINER_PARAM_LOAD_SCRIPT_RET_ADDR}, +}; +static const struct TrainerBattleParameter gTrainerBattleSpecs_3[] = +{ + {&sTrainerBattleMode, TRAINER_PARAM_LOAD_VAL_8BIT}, + {&gTrainerBattleOpponent, TRAINER_PARAM_LOAD_VAL_16BIT}, + {&sTrainerMapObjectLocalId, TRAINER_PARAM_LOAD_VAL_16BIT}, + {&sTrainerIntroSpeech, TRAINER_PARAM_CLEAR_VAL_32BIT}, + {&sTrainerDefeatSpeech, TRAINER_PARAM_LOAD_VAL_32BIT}, + {&sTrainerVictorySpeech, TRAINER_PARAM_CLEAR_VAL_32BIT}, + {&sTrainerCannotBattleSpeech, TRAINER_PARAM_CLEAR_VAL_32BIT}, + {&sTrainerBattleEndScript, TRAINER_PARAM_CLEAR_VAL_32BIT}, + {&sTrainerBattleScriptRetAddr, TRAINER_PARAM_LOAD_SCRIPT_RET_ADDR}, +}; +static const struct TrainerBattleParameter gTrainerBattleSpecs_4[] = +{ + {&sTrainerBattleMode, TRAINER_PARAM_LOAD_VAL_8BIT}, + {&gTrainerBattleOpponent, TRAINER_PARAM_LOAD_VAL_16BIT}, + {&sTrainerMapObjectLocalId, TRAINER_PARAM_LOAD_VAL_16BIT}, + {&sTrainerIntroSpeech, TRAINER_PARAM_LOAD_VAL_32BIT}, + {&sTrainerDefeatSpeech, TRAINER_PARAM_LOAD_VAL_32BIT}, + {&sTrainerVictorySpeech, TRAINER_PARAM_CLEAR_VAL_32BIT}, + {&sTrainerCannotBattleSpeech, TRAINER_PARAM_LOAD_VAL_32BIT}, + {&sTrainerBattleEndScript, TRAINER_PARAM_LOAD_VAL_32BIT}, + {&sTrainerBattleScriptRetAddr, TRAINER_PARAM_LOAD_SCRIPT_RET_ADDR}, }; const struct TrainerEyeTrainer gTrainerEyeTrainers[] = @@ -424,21 +443,36 @@ const struct TrainerEyeTrainer gTrainerEyeTrainers[] = static const u16 sBadgeFlags[] = {BADGE01_GET, BADGE02_GET, BADGE03_GET, BADGE04_GET, BADGE05_GET, BADGE06_GET, BADGE07_GET, BADGE08_GET}; -void task01_battle_start(u8 taskId) +static void DoStandardWildBattle(void); +static void DoSafariBattle(void); +static void SetTrainerFlagsAfterTrainerEyeRematch(void); +static void CB2_EndWildBattle(void); +static void CB2_EndScriptedWildBattle(void); +static u8 GetWildBattleTransition(void); +static u8 GetTrainerBattleTransition(void); +static void CB2_GiveStarter(void); +static void CB2_StartFirstBattle(void); +static void CB2_EndFirstBattle(void); +static bool32 IsPlayerDefeated(u32 a1); + +#define tState data[0] +#define tTransition data[1] + +static void Task_BattleStart(u8 taskId) { s16 *data = gTasks[taskId].data; - switch (data[0]) + switch (tState) { case 0: if (!FieldPoisonEffectIsRunning()) // is poison not active? { - sub_811AABC(data[1]); - data[0]++; // go to case 1. + BattleTransition_StartOnField(tTransition); + tState++; // go to case 1. } break; case 1: - if (sub_811AAE8() == TRUE) + if (IsBattleTransitionDone() == TRUE) { SetMainCallback2(sub_800E7C4); prev_quest_postbuffer_cursor_backup_reset(); @@ -449,132 +483,135 @@ void task01_battle_start(u8 taskId) } } -void task_add_01_battle_start(u8 transition, u16 song) +static void CreateBattleStartTask(u8 transition, u16 song) { - u8 taskId = CreateTask(task01_battle_start, 1); + u8 taskId = CreateTask(Task_BattleStart, 1); - gTasks[taskId].data[1] = transition; + gTasks[taskId].tTransition = transition; current_map_music_set__default_for_battle(song); } -void CheckForSafariZoneAndProceed(void) +#undef tState +#undef tTransition + +void BattleSetup_StartWildBattle(void) { if (GetSafariZoneFlag()) - StartBattle_Safari(); + DoSafariBattle(); else - StartBattle_StandardWild(); + DoStandardWildBattle(); } -void StartBattle_StandardWild(void) +static void DoStandardWildBattle(void) { ScriptContext2_Enable(); FreezeMapObjects(); sub_80597F4(); - gMain.savedCallback = HandleWildBattleEnd; + gMain.savedCallback = CB2_EndWildBattle; gBattleTypeFlags = 0; - task_add_01_battle_start(GetWildBattleTransition(), 0); + CreateBattleStartTask(GetWildBattleTransition(), 0); IncrementGameStat(7); IncrementGameStat(8); } -void StartBattle_Roamer(void) +void BattleSetup_StartRoamerBattle(void) { ScriptContext2_Enable(); FreezeMapObjects(); sub_80597F4(); - gMain.savedCallback = HandleWildBattleEnd; + gMain.savedCallback = CB2_EndWildBattle; gBattleTypeFlags = BATTLE_TYPE_ROAMER; - task_add_01_battle_start(GetWildBattleTransition(), 0); + CreateBattleStartTask(GetWildBattleTransition(), 0); IncrementGameStat(7); IncrementGameStat(8); } -void StartBattle_Safari(void) +static void DoSafariBattle(void) { ScriptContext2_Enable(); FreezeMapObjects(); sub_80597F4(); gMain.savedCallback = sub_80C824C; gBattleTypeFlags = BATTLE_TYPE_SAFARI; - task_add_01_battle_start(GetWildBattleTransition(), 0); + CreateBattleStartTask(GetWildBattleTransition(), 0); } -void task_add_01_battle_start_with_music_and_stats(void) +static void StartTheBattle(void) { - task_add_01_battle_start(GetTrainerBattleTransition(), 0); + CreateBattleStartTask(GetTrainerBattleTransition(), 0); IncrementGameStat(7); IncrementGameStat(9); } //Initiates battle where Wally catches Ralts -void StartBattle_WallyTutorial(void) +void ScrSpecial_StartWallyTutorialBattle(void) { CreateMaleMon(&gEnemyParty[0], SPECIES_RALTS, 5); ScriptContext2_Enable(); gMain.savedCallback = c2_exit_to_overworld_1_continue_scripts_restart_music; gBattleTypeFlags = BATTLE_TYPE_WALLY_TUTORIAL; - task_add_01_battle_start(8, 0); + CreateBattleStartTask(B_TRANSITION_SLICE, 0); } -void StartBattle_ScriptedWild(void) +void BattleSetup_StartScriptedWildBattle(void) { ScriptContext2_Enable(); - gMain.savedCallback = HandleScriptedWildBattleEnd; + gMain.savedCallback = CB2_EndScriptedWildBattle; gBattleTypeFlags = 0; - task_add_01_battle_start(GetWildBattleTransition(), 0); + CreateBattleStartTask(GetWildBattleTransition(), 0); IncrementGameStat(7); IncrementGameStat(8); } -void StartBattle_SouthernIsland(void) +void ScrSpecial_StartSouthernIslandBattle(void) { ScriptContext2_Enable(); - gMain.savedCallback = HandleScriptedWildBattleEnd; + gMain.savedCallback = CB2_EndScriptedWildBattle; gBattleTypeFlags = BATTLE_TYPE_LEGENDARY; - task_add_01_battle_start(GetWildBattleTransition(), 0); + CreateBattleStartTask(GetWildBattleTransition(), 0); IncrementGameStat(7); IncrementGameStat(8); } -void StartBattle_Rayquaza(void) +void ScrSpecial_StartRayquazaBattle(void) { ScriptContext2_Enable(); - gMain.savedCallback = HandleScriptedWildBattleEnd; + gMain.savedCallback = CB2_EndScriptedWildBattle; gBattleTypeFlags = BATTLE_TYPE_LEGENDARY; - task_add_01_battle_start(0, BGM_BATTLE34); + CreateBattleStartTask(B_TRANSITION_BLUR, BGM_BATTLE34); IncrementGameStat(7); IncrementGameStat(8); } -void StartBattle_GroudonKyogre(void) +void ScrSpecial_StartGroudonKyogreBattle(void) { ScriptContext2_Enable(); - gMain.savedCallback = HandleScriptedWildBattleEnd; + gMain.savedCallback = CB2_EndScriptedWildBattle; gBattleTypeFlags = BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_KYOGRE_GROUDON; - if (gGameVersion == 2) - task_add_01_battle_start(0xB, BGM_BATTLE34); // KYOGRE + if (gGameVersion == VERSION_RUBY) + CreateBattleStartTask(B_TRANSITION_SHARDS, BGM_BATTLE34); // GROUDON else - task_add_01_battle_start(0x6, BGM_BATTLE34); // GROUDON + CreateBattleStartTask(B_TRANSITION_RIPPLE, BGM_BATTLE34); // KYOGRE IncrementGameStat(7); IncrementGameStat(8); } -void StartBattle_Regi(void) +void ScrSpecial_StartRegiBattle(void) { ScriptContext2_Enable(); - gMain.savedCallback = HandleScriptedWildBattleEnd; + gMain.savedCallback = CB2_EndScriptedWildBattle; gBattleTypeFlags = BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_REGI; - task_add_01_battle_start(0xA, BGM_BATTLE36); + CreateBattleStartTask(B_TRANSITION_GRID_SQUARES, BGM_BATTLE36); IncrementGameStat(7); IncrementGameStat(8); } -void HandleWildBattleEnd(void) +static void CB2_EndWildBattle(void) { CpuFill16(0, (void *)BG_PLTT, BG_PLTT_SIZE); ResetOamRange(0, 128); - if (battle_exit_is_player_defeat(gBattleOutcome) == TRUE) + if (IsPlayerDefeated(gBattleOutcome) == TRUE) { SetMainCallback2(CB2_WhiteOut); } @@ -585,18 +622,18 @@ void HandleWildBattleEnd(void) } } -void HandleScriptedWildBattleEnd(void) +void CB2_EndScriptedWildBattle(void) { CpuFill16(0, (void *)BG_PLTT, BG_PLTT_SIZE); ResetOamRange(0, 128); - if (battle_exit_is_player_defeat(gBattleOutcome) == TRUE) + if (IsPlayerDefeated(gBattleOutcome) == TRUE) SetMainCallback2(CB2_WhiteOut); else SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); } -s8 GetBattleTerrain(void) +s8 BattleSetup_GetTerrain(void) { u16 tileBehavior; s16 x, y; @@ -605,11 +642,11 @@ s8 GetBattleTerrain(void) tileBehavior = MapGridGetMetatileBehaviorAt(x, y); if (MetatileBehavior_IsTallGrass(tileBehavior)) - return 0; + return BATTLE_TERRAIN_GRASS; if (MetatileBehavior_IsLongGrass(tileBehavior)) - return 1; + return BATTLE_TERRAIN_LONG_GRASS; if (MetatileBehavior_IsSandOrDeepSand(tileBehavior)) - return 2; + return BATTLE_TERRAIN_SAND; switch (gMapHeader.mapType) { case MAP_TYPE_TOWN: @@ -618,54 +655,49 @@ s8 GetBattleTerrain(void) break; case MAP_TYPE_UNDERGROUND: if (sub_80574C4(tileBehavior)) - return 8; + return BATTLE_TERRAIN_BUILDING; if (MetatileBehavior_IsSurfableWaterOrUnderwater(tileBehavior)) - return 5; - return 7; + return BATTLE_TERRAIN_POND; + return BATTLE_TERRAIN_CAVE; case MAP_TYPE_INDOOR: case MAP_TYPE_SECRET_BASE: - return 8; + return BATTLE_TERRAIN_BUILDING; case MAP_TYPE_UNDERWATER: - return 3; + return BATTLE_TERRAIN_UNDERWATER; case MAP_TYPE_6: if (MetatileBehavior_IsSurfableWaterOrUnderwater(tileBehavior)) - return 4; - return 9; + return BATTLE_TERRAIN_WATER; + return BATTLE_TERRAIN_PLAIN; } if (sub_8057568(tileBehavior)) - return 4; + return BATTLE_TERRAIN_WATER; if (MetatileBehavior_IsSurfableWaterOrUnderwater(tileBehavior)) - return 5; + return BATTLE_TERRAIN_POND; if (sub_80574D8(tileBehavior)) - return 6; + return BATTLE_TERRAIN_MOUNTAIN; if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING)) { if (sub_8057450(tileBehavior)) - return 5; + return BATTLE_TERRAIN_POND; if (MetatileBehavior_IsBridge(tileBehavior) == TRUE) - return 4; + return BATTLE_TERRAIN_WATER; } - if (gSaveBlock1.location.mapGroup == 0 && gSaveBlock1.location.mapNum == 28) - return 2; + if (gSaveBlock1.location.mapGroup == MAP_GROUP_ROUTE113 && gSaveBlock1.location.mapNum == MAP_ID_ROUTE113) + return BATTLE_TERRAIN_SAND; if (GetSav1Weather() == 8) - return 2; - return 9; + return BATTLE_TERRAIN_SAND; + return BATTLE_TERRAIN_PLAIN; } -s8 GetBattleTransitionTypeByMap(void) +static s8 GetBattleTransitionTypeByMap(void) { - u8 flashUsed; u16 tileBehavior; s16 x, y; PlayerGetDestCoords(&x, &y); tileBehavior = MapGridGetMetatileBehaviorAt(x, y); - - flashUsed = sav1_get_flash_used_on_map(); - - if (flashUsed) + if (Overworld_GetFlashLevel()) return 2; - if (!MetatileBehavior_IsSurfableWaterOrUnderwater(tileBehavior)) { switch (gMapHeader.mapType) @@ -681,7 +713,7 @@ s8 GetBattleTransitionTypeByMap(void) return 3; } -u16 GetSumOfPartyMonLevel(u8 numMons) +static u16 GetSumOfPlayerPartyLevel(u8 numMons) { u8 sum = 0; int i; @@ -701,37 +733,37 @@ u16 GetSumOfPartyMonLevel(u8 numMons) return sum; } -u8 GetSumOfEnemyPartyLevel(u16 trainerNum, u8 numMons) +static u8 GetSumOfEnemyPartyLevel(u16 opponentId, u8 numMons) { u8 i; u8 sum; u32 count = numMons; void *party; - if (gTrainers[trainerNum].partySize < count) - count = gTrainers[trainerNum].partySize; + if (gTrainers[opponentId].partySize < count) + count = gTrainers[opponentId].partySize; sum = 0; - switch (gTrainers[trainerNum].partyFlags) + switch (gTrainers[opponentId].partyFlags) { case 0: - party = gTrainers[trainerNum].party; + party = gTrainers[opponentId].party; for (i = 0; i < count; i++) sum += ((struct TrainerPartyMember0 *)party)[i].level; break; case 1: - party = gTrainers[trainerNum].party; + party = gTrainers[opponentId].party; for (i = 0; i < count; i++) sum += ((struct TrainerPartyMember1 *)party)[i].level; break; case 2: - party = gTrainers[trainerNum].party; + party = gTrainers[opponentId].party; for (i = 0; i < count; i++) sum += ((struct TrainerPartyMember2 *)party)[i].level; break; case 3: - party = gTrainers[trainerNum].party; + party = gTrainers[opponentId].party; for (i = 0; i < count; i++) sum += ((struct TrainerPartyMember3 *)party)[i].level; break; @@ -740,76 +772,79 @@ u8 GetSumOfEnemyPartyLevel(u16 trainerNum, u8 numMons) return sum; } -u8 GetWildBattleTransition(void) +static u8 GetWildBattleTransition(void) { - u8 flashVar = GetBattleTransitionTypeByMap(); - u8 level = GetMonData(&gEnemyParty[0], MON_DATA_LEVEL); + u8 transitionType = GetBattleTransitionTypeByMap(); + u8 enemyLevel = GetMonData(&gEnemyParty[0], MON_DATA_LEVEL); + u8 playerLevel = GetSumOfPlayerPartyLevel(1); - if (level < (u8)GetSumOfPartyMonLevel(1)) // is wild mon level than the player's mon level? - return gBattleTransitionTable_Wild[flashVar][0]; + if (enemyLevel < playerLevel) + return gBattleTransitionTable_Wild[transitionType][0]; else - return gBattleTransitionTable_Wild[flashVar][1]; // use a white fade in instead of normal transition. + return gBattleTransitionTable_Wild[transitionType][1]; } -u8 GetTrainerBattleTransition(void) +static u8 GetTrainerBattleTransition(void) { const struct Trainer *trainer; u8 minPartyCount; - u8 flashVar; - u8 level; + u8 transitionType; + u8 enemyLevel; + u8 playerLevel; if (gTrainerBattleOpponent == 1024) // link battle? - return 16; + return B_TRANSITION_STEVEN; trainer = gTrainers; if (trainer[gTrainerBattleOpponent].trainerClass == 24) // league? { if (gTrainerBattleOpponent == 261) - return 12; + return B_TRANSITION_SYDNEY; if (gTrainerBattleOpponent == 262) - return 13; + return B_TRANSITION_PHOEBE; if (gTrainerBattleOpponent == 263) - return 14; + return B_TRANSITION_GLACIA; if (gTrainerBattleOpponent == 264) - return 15; - return 16; + return B_TRANSITION_DRAKE; + return B_TRANSITION_STEVEN; } if (trainer[gTrainerBattleOpponent].trainerClass == 32) // team leader? - return 16; + return B_TRANSITION_STEVEN; if (trainer[gTrainerBattleOpponent].doubleBattle == TRUE) minPartyCount = 2; // double battles always at least have 2 pokemon. else minPartyCount = 1; - flashVar = GetBattleTransitionTypeByMap(); - level = GetSumOfEnemyPartyLevel(gTrainerBattleOpponent, minPartyCount); - - if (level < (u8)GetSumOfPartyMonLevel(minPartyCount)) // is wild mon level than the player's mon level? - return gBattleTransitionTable_Trainer[flashVar][0]; + transitionType = GetBattleTransitionTypeByMap(); + enemyLevel = GetSumOfEnemyPartyLevel(gTrainerBattleOpponent, minPartyCount); + playerLevel = GetSumOfPlayerPartyLevel(minPartyCount); + if (enemyLevel < playerLevel) // is wild mon level than the player's mon level? + return gBattleTransitionTable_Trainer[transitionType][0]; else - return gBattleTransitionTable_Trainer[flashVar][1]; + return gBattleTransitionTable_Trainer[transitionType][1]; } -u8 GetBattleTowerBattleTransition(void) +u8 BattleSetup_GetBattleTowerBattleTransition(void) { - u8 monData = GetMonData(&gEnemyParty[0], MON_DATA_LEVEL); + u8 enemyLevel = GetMonData(&gEnemyParty[0], MON_DATA_LEVEL); + u8 playerLevel = GetSumOfPlayerPartyLevel(1); - if (monData < (u8)GetSumOfPartyMonLevel(1)) - return 4; + if (enemyLevel < playerLevel) + return B_TRANSITION_POKEBALLS_TRAIL; else - return 3; + return B_TRANSITION_BIG_POKEBALL; } -void ChooseStarter(void) +void ScrSpecial_ChooseStarter(void) { SetMainCallback2(CB2_ChooseStarter); gMain.savedCallback = CB2_GiveStarter; } -void CB2_GiveStarter(void) +static void CB2_GiveStarter(void) { u16 starterPoke; @@ -819,18 +854,18 @@ void CB2_GiveStarter(void) ResetTasks(); sub_80408BC(); SetMainCallback2(CB2_StartFirstBattle); - sub_811AAD8(0); + BattleTransition_Start(0); } -void CB2_StartFirstBattle(void) +static void CB2_StartFirstBattle(void) { UpdatePaletteFade(); RunTasks(); - if (sub_811AAE8() == TRUE) + if (IsBattleTransitionDone() == TRUE) { gBattleTypeFlags = BATTLE_TYPE_FIRST_BATTLE; - gMain.savedCallback = HandleFirstBattleEnd; + gMain.savedCallback = CB2_EndFirstBattle; SetMainCallback2(sub_800E7C4); prev_quest_postbuffer_cursor_backup_reset(); overworld_poison_timer_set(); @@ -839,112 +874,112 @@ void CB2_StartFirstBattle(void) } } -void HandleFirstBattleEnd(void) +static void CB2_EndFirstBattle(void) { - sav1_reset_battle_music_maybe(); + Overworld_ClearSavedMusic(); SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); } -u32 TrainerBattleLoadArg32(u8 *ptr) +static u32 TrainerBattleLoadArg32(const u8 *ptr) { return ptr[0] | (ptr[1] << 8) | (ptr[2] << 16) | (ptr[3] << 24); } -u16 TrainerBattleLoadArg16(u8 *ptr) +static u16 TrainerBattleLoadArg16(const u8 *ptr) { return ptr[0] | (ptr[1] << 8); } -u8 TrainerBattleLoadArg8(u8 *ptr) +static u8 TrainerBattleLoadArg8(const u8 *ptr) { return ptr[0]; } -u16 trainerflag_opponent(void) +static u16 CurrentOpponentTrainerFlag(void) { return TRAINER_FLAG_START + gTrainerBattleOpponent; } -bool32 battle_exit_is_player_defeat(u32 a1) +static bool32 IsPlayerDefeated(u32 battleOutcome) { - switch (a1 - 1) + switch (battleOutcome) { - case 1: case 2: - return TRUE; - case 0: case 3: + return TRUE; + case 1: case 4: case 5: case 6: + case 7: return FALSE; } return FALSE; } -void sub_80822BC(void) +static void sub_80822BC(void) { - gTrainerBattleMode = 0; + sTrainerBattleMode = 0; gTrainerBattleOpponent = 0; - gTrainerMapObjectLocalId = 0; - gTrainerIntroSpeech = 0; - gTrainerDefeatSpeech = 0; - gTrainerVictorySpeech = 0; - gTrainerCannotBattleSpeech = 0; - gTrainerBattleScriptReturnAddress = 0; - gTrainerBattleEndScript = 0; + sTrainerMapObjectLocalId = 0; + sTrainerIntroSpeech = 0; + sTrainerDefeatSpeech = 0; + sTrainerVictorySpeech = 0; + sTrainerCannotBattleSpeech = 0; + sTrainerBattleScriptRetAddr = 0; + sTrainerBattleEndScript = 0; } -void TrainerBattleLoadArgs(const struct TrainerBattleSpec *specs, u8 *data) +static void TrainerBattleLoadArgs(const struct TrainerBattleParameter *specs, const u8 *data) { while (1) { switch (specs->ptrType) { - case 0: - *(u8 *)specs->ptr = TrainerBattleLoadArg8(data); - data++; + case TRAINER_PARAM_LOAD_VAL_8BIT: + *(u8 *)specs->varPtr = TrainerBattleLoadArg8(data); + data += 1; break; - case 1: - *(u16 *)specs->ptr = TrainerBattleLoadArg16(data); + case TRAINER_PARAM_LOAD_VAL_16BIT: + *(u16 *)specs->varPtr = TrainerBattleLoadArg16(data); data += 2; break; - case 2: - *(u32 *)specs->ptr = TrainerBattleLoadArg32(data); + case TRAINER_PARAM_LOAD_VAL_32BIT: + *(u32 *)specs->varPtr = TrainerBattleLoadArg32(data); data += 4; break; - case 3: - *(u8 *)specs->ptr = 0; + case TRAINER_PARAM_CLEAR_VAL_8BIT: + *(u8 *)specs->varPtr = 0; break; - case 4: - *(u16 *)specs->ptr = 0; + case TRAINER_PARAM_CLEAR_VAL_16BIT: + *(u16 *)specs->varPtr = 0; break; - case 5: - *(u32 *)specs->ptr = 0; + case TRAINER_PARAM_CLEAR_VAL_32BIT: + *(u32 *)specs->varPtr = 0; break; - case 6: - *(u8 **)specs->ptr = data; + case TRAINER_PARAM_LOAD_SCRIPT_RET_ADDR: + *(const u8 **)specs->varPtr = data; return; } specs++; } } -void battle_80801F0(void) +static void battle_80801F0(void) { - if (gTrainerMapObjectLocalId) + if (sTrainerMapObjectLocalId) { - gScriptLastTalked = gTrainerMapObjectLocalId; - gSelectedMapObject = GetFieldObjectIdByLocalIdAndMap(gTrainerMapObjectLocalId, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup); + gScriptLastTalked = sTrainerMapObjectLocalId; + gSelectedMapObject = GetFieldObjectIdByLocalIdAndMap(sTrainerMapObjectLocalId, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup); } } -u8 *TrainerBattleConfigure(u8 *data) +u8 *BattleSetup_ConfigureTrainerBattle(const u8 *data) { sub_80822BC(); - gTrainerBattleMode = TrainerBattleLoadArg8(data); + sTrainerBattleMode = TrainerBattleLoadArg8(data); - switch (gTrainerBattleMode) + switch (sTrainerBattleMode) { case 3: TrainerBattleLoadArgs(gTrainerBattleSpecs_3, data); @@ -984,7 +1019,7 @@ void TrainerWantsBattle(u8 trainerMapObjId, u8 *trainerScript) { gSelectedMapObject = trainerMapObjId; gScriptLastTalked = gMapObjects[trainerMapObjId].localId; - TrainerBattleConfigure(trainerScript + 1); + BattleSetup_ConfigureTrainerBattle(trainerScript + 1); ScriptContext1_SetupScript(gUnknown_0819F80B); ScriptContext2_Enable(); } @@ -1002,27 +1037,27 @@ void sub_8082524(void) npc_set_running_behaviour_etc(mapObject, npc_running_behaviour_by_direction(mapObject->mapobj_unk_18)); } -u8 sub_8082558(void) +u8 ScrSpecial_GetTrainerBattleMode(void) { - return gTrainerBattleMode; + return sTrainerBattleMode; } -u8 sub_8082564(void) +u8 ScrSpecial_HasTrainerBeenFought(void) { - return FlagGet(trainerflag_opponent()); + return FlagGet(CurrentOpponentTrainerFlag()); } -void sub_808257C(void) +void SetCurrentTrainerBattledFlag(void) { - FlagSet(trainerflag_opponent()); + FlagSet(CurrentOpponentTrainerFlag()); } void unref_sub_8082590(void) { - FlagSet(trainerflag_opponent()); // duplicate function + FlagSet(CurrentOpponentTrainerFlag()); // duplicate function } -u8 trainer_flag_check(u16 flag) +u8 HasTrainerAlreadyBeenFought(u16 flag) { return FlagGet(TRAINER_FLAG_START + flag); } @@ -1034,14 +1069,14 @@ void trainer_flag_set(u16 flag) void trainer_flag_clear(u16 flag) { - FlagReset(TRAINER_FLAG_START + flag); + FlagClear(TRAINER_FLAG_START + flag); } -void sub_80825E4(void) +void BattleSetup_StartTrainerBattle(void) { gBattleTypeFlags = BATTLE_TYPE_TRAINER; gMain.savedCallback = sub_808260C; - task_add_01_battle_start_with_music_and_stats(); + StartTheBattle(); ScriptContext1_Stop(); } @@ -1051,74 +1086,77 @@ void sub_808260C(void) { SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); // link battle? } - else if (battle_exit_is_player_defeat(gBattleOutcome) == TRUE) + else if (IsPlayerDefeated(gBattleOutcome) == TRUE) { SetMainCallback2(CB2_WhiteOut); } else { SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); - sub_808257C(); + SetCurrentTrainerBattledFlag(); } } -void do_choose_name_or_words_screen(void) +void CB2_EndTrainerEyeRematchBattle(void) { if (gTrainerBattleOpponent == 1024) { SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); // link battle? } - else if (battle_exit_is_player_defeat(gBattleOutcome) == TRUE) + else if (IsPlayerDefeated(gBattleOutcome) == TRUE) { SetMainCallback2(CB2_WhiteOut); } else { SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); - sub_808257C(); - sub_8082CB8(); + SetCurrentTrainerBattledFlag(); + SetTrainerFlagsAfterTrainerEyeRematch(); } } -void sub_80826B0(void) +void ScrSpecial_StartTrainerEyeRematch(void) { gBattleTypeFlags = BATTLE_TYPE_TRAINER; - gMain.savedCallback = do_choose_name_or_words_screen; - task_add_01_battle_start_with_music_and_stats(); + gMain.savedCallback = CB2_EndTrainerEyeRematchBattle; + StartTheBattle(); ScriptContext1_Stop(); } -void sub_80826D8(void) +static u8 *GetTrainerIntroSpeech(void); +static u8 *GetTrainerNonBattlingSpeech(void); + +void ScrSpecial_ShowTrainerIntroSpeech(void) { - ShowFieldMessage(sub_808281C()); + ShowFieldMessage(GetTrainerIntroSpeech()); } -u8 *sub_80826E8(void) +u8 *BattleSetup_GetScriptAddrAfterBattle(void) { - if (gTrainerBattleScriptReturnAddress) - return gTrainerBattleScriptReturnAddress; + if (sTrainerBattleScriptRetAddr) + return sTrainerBattleScriptRetAddr; else return gUnknown_081C6C02; } -u8 *sub_8082700(void) +u8 *BattleSetup_GetTrainerPostBattleScript(void) { - if (gTrainerBattleEndScript) - return gTrainerBattleEndScript; + if (sTrainerBattleEndScript) + return sTrainerBattleEndScript; else return gUnknown_081C6C02; } -void sub_8082718(void) +void ScrSpecial_ShowTrainerNonBattlingSpeech(void) { - ShowFieldMessage(sub_8082880()); + ShowFieldMessage(GetTrainerNonBattlingSpeech()); } void PlayTrainerEncounterMusic(void) { u16 music; - if (gTrainerBattleMode != 1 && gTrainerBattleMode != 8) + if (sTrainerBattleMode != 1 && sTrainerBattleMode != 8) { switch (sub_803FC58(gTrainerBattleOpponent)) { @@ -1169,7 +1207,7 @@ void PlayTrainerEncounterMusic(void) } //Returns an empty string if a null pointer was passed, otherwise returns str -u8 *SanitizeString(const u8 *str) +static u8 *SanitizeString(const u8 *str) { if (str) return (u8 *) str; @@ -1177,19 +1215,19 @@ u8 *SanitizeString(const u8 *str) return (u8 *) gOtherText_CancelWithTerminator; } -u8 *sub_808281C(void) +static u8 *GetTrainerIntroSpeech(void) { - return SanitizeString(gTrainerIntroSpeech); + return SanitizeString(sTrainerIntroSpeech); } u8 *sub_8082830(void) { - u8 *str; + const u8 *str; if (gTrainerBattleOpponent == 1024) str = sub_80BCCE8(); else - str = gTrainerDefeatSpeech; + str = sTrainerDefeatSpeech; StringExpandPlaceholders(gStringVar4, SanitizeString(str)); return gStringVar4; @@ -1197,43 +1235,43 @@ u8 *sub_8082830(void) u8 *unref_sub_808286C(void) { - return SanitizeString(gTrainerVictorySpeech); + return SanitizeString(sTrainerVictorySpeech); } -u8 *sub_8082880(void) +static u8 *GetTrainerNonBattlingSpeech(void) { - return SanitizeString(gTrainerCannotBattleSpeech); + return SanitizeString(sTrainerCannotBattleSpeech); } -s32 sub_8082894(const struct TrainerEyeTrainer *trainers, u16 trainerNum) +s32 sub_8082894(const struct TrainerEyeTrainer *trainers, u16 opponentId) { s32 i; for (i = 0; i < NUM_TRAINER_EYE_TRAINERS; i++) { - if (trainers[i].trainerNums[0] == trainerNum) + if (trainers[i].opponentIDs[0] == opponentId) return i; } return -1; } -s32 sub_80828B8(const struct TrainerEyeTrainer *trainers, u16 trainerNum) +s32 sub_80828B8(const struct TrainerEyeTrainer *trainers, u16 opponentId) { s32 i; s32 j; for (i = 0; i < NUM_TRAINER_EYE_TRAINERS; i++) { - for (j = 0; j < 5 && trainers[i].trainerNums[j] != 0; j++) + for (j = 0; j < 5 && trainers[i].opponentIDs[j] != 0; j++) { - if (trainers[i].trainerNums[j] == trainerNum) + if (trainers[i].opponentIDs[j] == opponentId) return i; } } return -1; } -bool32 sub_80828FC(const struct TrainerEyeTrainer *trainers, u16 mapGroup, u16 mapNum) +bool32 UpdateRandomTrainerEyeRematches(const struct TrainerEyeTrainer *trainers, u16 mapGroup, u16 mapNum) { int i; bool32 ret = FALSE; @@ -1243,14 +1281,19 @@ bool32 sub_80828FC(const struct TrainerEyeTrainer *trainers, u16 mapGroup, u16 m if (trainers[i].mapGroup == mapGroup && trainers[i].mapNum == mapNum) { if (gSaveBlock1.trainerRematches[i] != 0) - ret = TRUE; - else if (trainer_flag_check(trainers[i].trainerNums[0]) == TRUE && (Random() % 100) <= 30) { - int j = 1; + // Trainer already wants rematch. Don't bother updating it + ret = TRUE; + } + else if (HasTrainerAlreadyBeenFought(trainers[i].opponentIDs[0]) == TRUE + && (Random() % 100) <= 30) // 31% chance of getting a rematch + { + int rematches = 1; - while (j < 5 && trainers[i].trainerNums[j] != 0 && trainer_flag_check(trainers[i].trainerNums[j])) - j++; - gSaveBlock1.trainerRematches[i] = j; + while (rematches < 5 && trainers[i].opponentIDs[rematches] != 0 + && HasTrainerAlreadyBeenFought(trainers[i].opponentIDs[rematches])) + rematches++; + gSaveBlock1.trainerRematches[i] = rematches; ret = TRUE; } } @@ -1282,9 +1325,9 @@ s32 sub_80829E8(const struct TrainerEyeTrainer *trainers, u16 mapGroup, u16 mapN return 0; } -bool8 sub_8082A18(const struct TrainerEyeTrainer *trainers, u16 trainerNum) +bool8 sub_8082A18(const struct TrainerEyeTrainer *trainers, u16 opponentId) { - s32 trainerEyeIndex = sub_8082894(trainers, trainerNum); + s32 trainerEyeIndex = sub_8082894(trainers, opponentId); if (trainerEyeIndex != -1 && trainerEyeIndex < 100 && gSaveBlock1.trainerRematches[trainerEyeIndex]) return TRUE; @@ -1292,9 +1335,9 @@ bool8 sub_8082A18(const struct TrainerEyeTrainer *trainers, u16 trainerNum) return FALSE; } -bool8 sub_8082A54(const struct TrainerEyeTrainer *trainers, u16 trainerNum) +bool8 GetTrainerEyeRematchFlag(const struct TrainerEyeTrainer *trainers, u16 opponentId) { - s32 trainerEyeIndex = sub_80828B8(trainers, trainerNum); + s32 trainerEyeIndex = sub_80828B8(trainers, opponentId); if (trainerEyeIndex != -1 && trainerEyeIndex < 100 && gSaveBlock1.trainerRematches[trainerEyeIndex]) return TRUE; @@ -1302,38 +1345,38 @@ bool8 sub_8082A54(const struct TrainerEyeTrainer *trainers, u16 trainerNum) return FALSE; } -u16 sub_8082A90(const struct TrainerEyeTrainer *trainers, u16 trainerNum) +u16 sub_8082A90(const struct TrainerEyeTrainer *trainers, u16 opponentId) { int i; const struct TrainerEyeTrainer *trainer; - s32 trainerEyeIndex = sub_8082894(trainers, trainerNum); + s32 trainerEyeIndex = sub_8082894(trainers, opponentId); if (trainerEyeIndex == -1) return 0; trainer = &trainers[trainerEyeIndex]; for (i = 1; i < 5; i++) { - if (!trainer->trainerNums[i]) - return trainer->trainerNums[i - 1]; - if (!trainer_flag_check(trainer->trainerNums[i])) - return trainer->trainerNums[i]; + if (!trainer->opponentIDs[i]) + return trainer->opponentIDs[i - 1]; + if (!HasTrainerAlreadyBeenFought(trainer->opponentIDs[i])) + return trainer->opponentIDs[i]; } - return trainer->trainerNums[4]; + return trainer->opponentIDs[4]; } -void sub_8082AE4(const struct TrainerEyeTrainer *trainers, u16 trainerNum) +void ClearTrainerEyeRematchFlag(const struct TrainerEyeTrainer *trainers, u16 opponentId) { - s32 trainerEyeIndex = sub_80828B8(trainers, trainerNum); + s32 trainerEyeIndex = sub_80828B8(trainers, opponentId); if (trainerEyeIndex != -1) gSaveBlock1.trainerRematches[trainerEyeIndex] = 0; } -bool8 sub_8082B10(const struct TrainerEyeTrainer *trainers, u16 trainerNum) +bool8 sub_8082B10(const struct TrainerEyeTrainer *trainers, u16 opponentId) { - s32 trainerEyeIndex = sub_8082894(trainers, trainerNum); + s32 trainerEyeIndex = sub_8082894(trainers, opponentId); - if (trainerEyeIndex != -1 && trainer_flag_check(trainers[trainerEyeIndex].trainerNums[1])) + if (trainerEyeIndex != -1 && HasTrainerAlreadyBeenFought(trainers[trainerEyeIndex].opponentIDs[1])) return TRUE; else return FALSE; @@ -1377,7 +1420,7 @@ bool32 sub_8082BA4(void) void sub_8082BD0(u16 mapGroup, u16 mapNum) { - if (sub_8082BA4() && sub_80828FC(gTrainerEyeTrainers, mapGroup, mapNum) == TRUE) + if (sub_8082BA4() && UpdateRandomTrainerEyeRematches(gTrainerEyeTrainers, mapGroup, mapNum) == TRUE) gSaveBlock1.trainerRematchStepCounter = 0; } @@ -1391,9 +1434,9 @@ s32 unref_sub_8082C2C(u16 mapGroup, u16 mapNum) return sub_80829E8(gTrainerEyeTrainers, mapGroup, mapNum); } -u16 sub_8082C4C(u16 trainerNum) +u16 sub_8082C4C(u16 opponentId) { - return sub_8082A90(gTrainerEyeTrainers, trainerNum); + return sub_8082A90(gTrainerEyeTrainers, opponentId); } s32 sub_8082C68(void) @@ -1404,13 +1447,13 @@ s32 sub_8082C68(void) return sub_8082B10(gTrainerEyeTrainers, gTrainerBattleOpponent); } -u8 sub_8082C9C(void) +u8 ScrSpecial_GetTrainerEyeRematchFlag(void) { - return sub_8082A54(gTrainerEyeTrainers, gTrainerBattleOpponent); + return GetTrainerEyeRematchFlag(gTrainerEyeTrainers, gTrainerBattleOpponent); } -void sub_8082CB8(void) +void SetTrainerFlagsAfterTrainerEyeRematch(void) { - sub_8082AE4(gTrainerEyeTrainers, gTrainerBattleOpponent); - sub_808257C(); + ClearTrainerEyeRematchFlag(gTrainerEyeTrainers, gTrainerBattleOpponent); + SetCurrentTrainerBattledFlag(); } diff --git a/src/battle/battle_transition.c b/src/battle/battle_transition.c new file mode 100644 index 000000000..53d32d03a --- /dev/null +++ b/src/battle/battle_transition.c @@ -0,0 +1,2513 @@ +#include "global.h" +#include "battle_transition.h" +#include "main.h" +#include "overworld.h" +#include "task.h" +#include "palette.h" +#include "trig.h" +#include "field_effect.h" +#include "rng.h" +#include "sprite.h" +#include "sound.h" +#include "songs.h" +#include "trainer.h" +#include "field_camera.h" + +void sub_807DE10(void); +void dp12_8087EA4(void); + +extern u8 ewram[]; +extern u16 gUnknown_03005560[]; +extern u16 gUnknown_03004DE0[][0x3C0]; + +extern const struct OamData gFieldOamData_32x32; + +struct TransitionData +{ + vs8 VBlank_DMA; + u16 WININ; + u16 WINOUT; + u16 field_6; + u16 WIN0V; + u16 field_A; + u16 field_C; + u16 BLDCNT; + u16 BLDALPHA; + u16 BLDY; + s16 field_14; + s16 field_16; + s16 field_18; + s16 field_1A; + s16 field_1C; + s16 field_1E; // unused + s16 field_20; + s16 field_22; // unused + s16 data[11]; +}; + +#define TRANSITION_STRUCT (*(struct TransitionData *) (ewram + 0xC000)) +typedef bool8 (*TransitionState)(struct Task* task); +typedef bool8 (*TransitionSpriteCallback)(struct Sprite* sprite); + +// this file's functions +static void LaunchBattleTransitionTask(u8 transitionID); +static void Task_BattleTransitionMain(u8 taskID); +static void Phase1Task_TransitionAll(u8 taskID); +static void Phase2Task_Transition_Blur(u8 taskID); +static void Phase2Task_Transition_Swirl(u8 taskID); +static void Phase2Task_Transition_Shuffle(u8 taskID); +static void Phase2Task_Transition_BigPokeball(u8 taskID); +static void Phase2Task_Transition_PokeballsTrail(u8 taskID); +static void Phase2Task_Transition_Clockwise_BlackFade(u8 taskID); +static void Phase2Task_Transition_Ripple(u8 taskID); +static void Phase2Task_Transition_Wave(u8 taskID); +static void Phase2Task_Transition_Slice(u8 taskID); +static void Phase2Task_Transition_WhiteFade(u8 taskID); +static void Phase2Task_Transition_GridSquares(u8 taskID); +static void Phase2Task_Transition_Shards(u8 taskID); +static void Phase2Task_Transition_Sydney(u8 taskID); +static void Phase2Task_Transition_Phoebe(u8 taskID); +static void Phase2Task_Transition_Glacia(u8 taskID); +static void Phase2Task_Transition_Drake(u8 taskID); +static void Phase2Task_Transition_Steven(u8 taskID); +static bool8 Transition_Phase1(struct Task* task); +static bool8 Transition_WaitForPhase1(struct Task* task); +static bool8 Transition_Phase2(struct Task* task); +static bool8 Transition_WaitForPhase2(struct Task* task); +static void VBlankCB_Phase2_Transition_Swirl(void); +static void HBlankCB_Phase2_Transition_Swirl(void); +static void VBlankCB_Phase2_Transition_Shuffle(void); +static void HBlankCB_Phase2_Transition_Shuffle(void); +static void VBlankCB0_Phase2_Transition_BigPokeball(void); +static void VBlankCB1_Phase2_Transition_BigPokeball(void); +static void VBlankCB_Phase2_Transition_Clockwise_BlackFade(void); +static void VBlankCB_Phase2_Transition_Ripple(void); +static void HBlankCB_Phase2_Transition_Ripple(void); +static void VBlankCB_Phase2_Transition_Wave(void); +static void VBlankCB_Phase2_Transition_Slice(void); +static void HBlankCB_Phase2_Transition_Slice(void); +static void VBlankCB0_Phase2_Transition_WhiteFade(void); +static void VBlankCB1_Phase2_Transition_WhiteFade(void); +static void HBlankCB_Phase2_Transition_WhiteFade(void); +static void VBlankCB0_Phase2_Mugshots(void); +static void VBlankCB1_Phase2_Mugshots(void); +static void HBlankCB_Phase2_Mugshots(void); +static void VBlankCB_Phase2_Transition_Shards(void); +static bool8 Phase2_Transition_Blur_Func1(struct Task* task); +static bool8 Phase2_Transition_Blur_Func2(struct Task* task); +static bool8 Phase2_Transition_Blur_Func3(struct Task* task); +static bool8 Phase2_Transition_Swirl_Func1(struct Task* task); +static bool8 Phase2_Transition_Swirl_Func2(struct Task* task); +static bool8 Phase2_Transition_Shuffle_Func1(struct Task* task); +static bool8 Phase2_Transition_Shuffle_Func2(struct Task* task); +static bool8 Phase2_Transition_BigPokeball_Func1(struct Task* task); +static bool8 Phase2_Transition_BigPokeball_Func2(struct Task* task); +static bool8 Phase2_Transition_BigPokeball_Func3(struct Task* task); +static bool8 Phase2_Transition_BigPokeball_Func4(struct Task* task); +static bool8 Phase2_Transition_BigPokeball_Func5(struct Task* task); +static bool8 Phase2_Transition_BigPokeball_Func6(struct Task* task); +static bool8 Phase2_Transition_PokeballsTrail_Func1(struct Task* task); +static bool8 Phase2_Transition_PokeballsTrail_Func2(struct Task* task); +static bool8 Phase2_Transition_PokeballsTrail_Func3(struct Task* task); +static bool8 Phase2_Transition_Clockwise_BlackFade_Func1(struct Task* task); +static bool8 Phase2_Transition_Clockwise_BlackFade_Func2(struct Task* task); +static bool8 Phase2_Transition_Clockwise_BlackFade_Func3(struct Task* task); +static bool8 Phase2_Transition_Clockwise_BlackFade_Func4(struct Task* task); +static bool8 Phase2_Transition_Clockwise_BlackFade_Func5(struct Task* task); +static bool8 Phase2_Transition_Clockwise_BlackFade_Func6(struct Task* task); +static bool8 Phase2_Transition_Clockwise_BlackFade_Func7(struct Task* task); +static bool8 Phase2_Transition_Ripple_Func1(struct Task* task); +static bool8 Phase2_Transition_Ripple_Func2(struct Task* task); +static bool8 Phase2_Transition_Wave_Func1(struct Task* task); +static bool8 Phase2_Transition_Wave_Func2(struct Task* task); +static bool8 Phase2_Transition_Wave_Func3(struct Task* task); +static bool8 Phase2_Transition_Slice_Func1(struct Task* task); +static bool8 Phase2_Transition_Slice_Func2(struct Task* task); +static bool8 Phase2_Transition_Slice_Func3(struct Task* task); +static bool8 Phase2_Transition_WhiteFade_Func1(struct Task* task); +static bool8 Phase2_Transition_WhiteFade_Func2(struct Task* task); +static bool8 Phase2_Transition_WhiteFade_Func3(struct Task* task); +static bool8 Phase2_Transition_WhiteFade_Func4(struct Task* task); +static bool8 Phase2_Transition_WhiteFade_Func5(struct Task* task); +static bool8 Phase2_Transition_GridSquares_Func1(struct Task* task); +static bool8 Phase2_Transition_GridSquares_Func2(struct Task* task); +static bool8 Phase2_Transition_GridSquares_Func3(struct Task* task); +static bool8 Phase2_Transition_Shards_Func1(struct Task* task); +static bool8 Phase2_Transition_Shards_Func2(struct Task* task); +static bool8 Phase2_Transition_Shards_Func3(struct Task* task); +static bool8 Phase2_Transition_Shards_Func4(struct Task* task); +static bool8 Phase2_Transition_Shards_Func5(struct Task* task); +static bool8 Phase2_Mugshot_Func1(struct Task* task); +static bool8 Phase2_Mugshot_Func2(struct Task* task); +static bool8 Phase2_Mugshot_Func3(struct Task* task); +static bool8 Phase2_Mugshot_Func4(struct Task* task); +static bool8 Phase2_Mugshot_Func5(struct Task* task); +static bool8 Phase2_Mugshot_Func6(struct Task* task); +static bool8 Phase2_Mugshot_Func7(struct Task* task); +static bool8 Phase2_Mugshot_Func8(struct Task* task); +static bool8 Phase2_Mugshot_Func9(struct Task* task); +static bool8 Phase2_Mugshot_Func10(struct Task* task); +static void Phase2Task_MugShotTransition(u8 taskID); +static void Mugshots_CreateOpponentPlayerSprites(struct Task* task); +static void sub_811CA10(s16 spriteID, s16 value); +static void sub_811CA28(s16 spriteID); +static s16 sub_811CA44(s16 spriteID); +static bool8 sub_811C934(struct Sprite* sprite); +static bool8 sub_811C938(struct Sprite* sprite); +static bool8 sub_811C984(struct Sprite* sprite); +static bool8 sub_811C9B8(struct Sprite* sprite); +static bool8 sub_811C9E4(struct Sprite* sprite); +static void CreatePhase1Task(s16 a0, s16 a1, s16 a2, s16 a3, s16 a4); +static bool8 sub_811D52C(void); +static void Phase1_Task_RunFuncs(u8 taskID); +static bool8 Phase1_TransitionAll_Func1(struct Task* task); +static bool8 Phase1_TransitionAll_Func2(struct Task* task); +static void sub_811D658(void); +static void VBlankCB_BattleTransition(void); +static void sub_811D6A8(u16** a0, u16** a1); +static void sub_811D690(u16** a0); +static void sub_811D6D4(void); +static void sub_811D6E8(s16* array, s16 sinAdd, s16 index, s16 indexIncrementer, s16 amplitude, s16 arrSize); +static void sub_811D764(u16* a0, s16 a1, s16 a2, s16 a3); +static void sub_811D8FC(s16* a0, s16 a1, s16 a2, s16 a3, s16 a4, s16 a5, s16 a6); +static bool8 sub_811D978(s16* a0, bool8 a1, bool8 a2); +static void sub_811CFD0(struct Sprite* sprite); +static void sub_811B720(struct Sprite* sprite); +static void sub_811C90C(struct Sprite* sprite); + +// const data + +static const u32 sBigPokeball_Tileset[] = INCBIN_U32("graphics/battle_transitions/big_pokeball.4bpp"); +static const u32 sPokeballTrail_Tileset[] = INCBIN_U32("graphics/battle_transitions/pokeball_trail.4bpp"); +static const u8 sSpriteImage_83FC148[] = INCBIN_U8("graphics/battle_transitions/pokeball.4bpp"); +static const u32 sUnknown_083FC348[] = INCBIN_U32("graphics/battle_transitions/elite_four_bg.4bpp"); +static const u8 sSpriteImage_83FC528[] = INCBIN_U8("graphics/battle_transitions/unused_brendan.4bpp"); +static const u8 sSpriteImage_83FCD28[] = INCBIN_U8("graphics/battle_transitions/unused_lass.4bpp"); +static const u32 sShrinkingBoxTileset[] = INCBIN_U32("graphics/battle_transitions/shrinking_box.4bpp"); + +static struct TransitionData * const sTransitionStructPtr = &TRANSITION_STRUCT; + +static const TaskFunc sPhase1_Tasks[TRANSITIONS_NO] = +{ + [0 ... TRANSITIONS_NO - 1] = &Phase1Task_TransitionAll +}; + +static const TaskFunc sPhase2_Tasks[TRANSITIONS_NO] = +{ + Phase2Task_Transition_Blur, // 0 + Phase2Task_Transition_Swirl, // 1 + Phase2Task_Transition_Shuffle, // 2 + Phase2Task_Transition_BigPokeball, // 3 + Phase2Task_Transition_PokeballsTrail, // 4 + Phase2Task_Transition_Clockwise_BlackFade, // 5 + Phase2Task_Transition_Ripple, // 6 + Phase2Task_Transition_Wave, // 7 + Phase2Task_Transition_Slice, // 8 + Phase2Task_Transition_WhiteFade, // 9 + Phase2Task_Transition_GridSquares, // 10 + Phase2Task_Transition_Shards, // 11 + Phase2Task_Transition_Sydney, // 12 + Phase2Task_Transition_Phoebe, // 13 + Phase2Task_Transition_Glacia, // 14 + Phase2Task_Transition_Drake, // 15 + Phase2Task_Transition_Steven, // 16 +}; + +static const TransitionState sMainTransitionPhases[] = +{ + &Transition_Phase1, + &Transition_WaitForPhase1, + &Transition_Phase2, + &Transition_WaitForPhase2 +}; + +static const TransitionState sPhase2_Transition_Blur_Funcs[] = +{ + Phase2_Transition_Blur_Func1, + Phase2_Transition_Blur_Func2, + Phase2_Transition_Blur_Func3 +}; + +static const TransitionState sPhase2_Transition_Swirl_Funcs[] = +{ + Phase2_Transition_Swirl_Func1, + Phase2_Transition_Swirl_Func2, +}; + +static const TransitionState sPhase2_Transition_Shuffle_Funcs[] = +{ + Phase2_Transition_Shuffle_Func1, + Phase2_Transition_Shuffle_Func2, +}; + +static const TransitionState sPhase2_Transition_BigPokeball_Funcs[] = +{ + Phase2_Transition_BigPokeball_Func1, + Phase2_Transition_BigPokeball_Func2, + Phase2_Transition_BigPokeball_Func3, + Phase2_Transition_BigPokeball_Func4, + Phase2_Transition_BigPokeball_Func5, + Phase2_Transition_BigPokeball_Func6 +}; + +static const TransitionState sPhase2_Transition_PokeballsTrail_Funcs[] = +{ + Phase2_Transition_PokeballsTrail_Func1, + Phase2_Transition_PokeballsTrail_Func2, + Phase2_Transition_PokeballsTrail_Func3 +}; + +static const s16 sUnknown_083FD7E4[2] = {-16, 256}; +static const s16 sUnknown_083FD7E8[5] = {0, 32, 64, 18, 48}; +static const s16 sUnknown_083FD7F2[2] = {8, -8}; + +static const TransitionState sPhase2_Transition_Clockwise_BlackFade_Funcs[] = +{ + Phase2_Transition_Clockwise_BlackFade_Func1, + Phase2_Transition_Clockwise_BlackFade_Func2, + Phase2_Transition_Clockwise_BlackFade_Func3, + Phase2_Transition_Clockwise_BlackFade_Func4, + Phase2_Transition_Clockwise_BlackFade_Func5, + Phase2_Transition_Clockwise_BlackFade_Func6, + Phase2_Transition_Clockwise_BlackFade_Func7 +}; + +static const TransitionState sPhase2_Transition_Ripple_Funcs[] = +{ + Phase2_Transition_Ripple_Func1, + Phase2_Transition_Ripple_Func2 +}; + +static const TransitionState sPhase2_Transition_Wave_Funcs[] = +{ + Phase2_Transition_Wave_Func1, + Phase2_Transition_Wave_Func2, + Phase2_Transition_Wave_Func3 +}; + +static const TransitionState sPhase2_Mugshot_Transition_Funcs[] = +{ + Phase2_Mugshot_Func1, + Phase2_Mugshot_Func2, + Phase2_Mugshot_Func3, + Phase2_Mugshot_Func4, + Phase2_Mugshot_Func5, + Phase2_Mugshot_Func6, + Phase2_Mugshot_Func7, + Phase2_Mugshot_Func8, + Phase2_Mugshot_Func9, + Phase2_Mugshot_Func10 +}; + +static const u8 sMugshotsTrainerPicIDsTable[MUGSHOTS_NO] = {TRAINER_PIC_SIDNEY, TRAINER_PIC_PHOEBE, TRAINER_PIC_GLACIA, TRAINER_PIC_DRAKE, TRAINER_PIC_STEVEN}; +static const s16 sMugshotsOpponentRotationScales[MUGSHOTS_NO][2] = +{ + {0x200, 0x200}, + {0x200, 0x200}, + {0x1B0, 0x1B0}, + {0x1A0, 0x1A0}, + {0x188, 0x188}, +}; +static const s16 sMugshotsOpponentCoords[MUGSHOTS_NO][2] = +{ + {0, 0}, + {0, 0}, + {-4, 4}, + {0, 5}, + {0, 7}, +}; + +static const TransitionSpriteCallback sUnknown_083FD880[] = +{ + sub_811C934, + sub_811C938, + sub_811C984, + sub_811C9B8, + sub_811C934, + sub_811C9E4, + sub_811C934 +}; + +static const s16 sUnknown_083FD89C[2] = {12, -12}; +static const s16 sUnknown_083FD8A0[2] = {-1, 1}; + +static const TransitionState sPhase2_Transition_Slice_Funcs[] = +{ + Phase2_Transition_Slice_Func1, + Phase2_Transition_Slice_Func2, + Phase2_Transition_Slice_Func3 +}; + +static const TransitionState sPhase2_Transition_WhiteFade_Funcs[] = +{ + Phase2_Transition_WhiteFade_Func1, + Phase2_Transition_WhiteFade_Func2, + Phase2_Transition_WhiteFade_Func3, + Phase2_Transition_WhiteFade_Func4, + Phase2_Transition_WhiteFade_Func5 +}; + +static const s16 sUnknown_083FD8C4[8] = {0, 20, 15, 40, 10, 25, 35, 5}; + +static const TransitionState sPhase2_Transition_GridSquares_Funcs[] = +{ + Phase2_Transition_GridSquares_Func1, + Phase2_Transition_GridSquares_Func2, + Phase2_Transition_GridSquares_Func3 +}; + +static const TransitionState sPhase2_Transition_Shards_Funcs[] = +{ + Phase2_Transition_Shards_Func1, + Phase2_Transition_Shards_Func2, + Phase2_Transition_Shards_Func3, + Phase2_Transition_Shards_Func4, + Phase2_Transition_Shards_Func5 +}; + +static const s16 sUnknown_083FD8F4[][5] = +{ + {56, 0, 0, 160, 0}, + {104, 160, 240, 88, 1}, + {240, 72, 56, 0, 1}, + {0, 32, 144, 160, 0}, + {144, 160, 184, 0, 1}, + {56, 0, 168, 160, 0}, + {168, 160, 48, 0, 1}, +}; + +static const s16 sUnknown_083FD93A[] = {8, 4, 2, 1, 1, 1, 0}; + +static const TransitionState sPhase1_TransitionAll_Funcs[] = +{ + Phase1_TransitionAll_Func1, + Phase1_TransitionAll_Func2 +}; + +static const struct SpriteFrameImage sSpriteImageTable_83FD950[] = +{ + sSpriteImage_83FC148, 0x200 +}; + +static const union AnimCmd sSpriteAnim_83FD958[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END +}; + +static const union AnimCmd *const sSpriteAnimTable_83FD960[] = +{ + sSpriteAnim_83FD958 +}; + +static const union AffineAnimCmd sSpriteAffineAnim_83FD964[] = +{ + AFFINEANIMCMD_FRAME(0, 0, -4, 1), + AFFINEANIMCMD_JUMP(0) +}; + +static const union AffineAnimCmd sSpriteAffineAnim_83FD974[] = +{ + AFFINEANIMCMD_FRAME(0, 0, 4, 1), + AFFINEANIMCMD_JUMP(0) +}; + +static const union AffineAnimCmd *const sSpriteAffineAnimTable_83FD984[] = +{ + sSpriteAffineAnim_83FD964, + sSpriteAffineAnim_83FD974 +}; + +static const struct SpriteTemplate sSpriteTemplate_83FD98C = +{ + .tileTag = 0xFFFF, + .paletteTag = 4105, + .oam = &gFieldOamData_32x32, + .anims = sSpriteAnimTable_83FD960, + .images = sSpriteImageTable_83FD950, + .affineAnims = sSpriteAffineAnimTable_83FD984, + .callback = sub_811B720 +}; + +static const struct OamData gOamData_83FD9A4 = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 3, + .tileNum = 0, + .priority = 0, + .paletteNum = 0, + .affineParam = 0, +}; + +static const struct SpriteFrameImage sSpriteImageTable_83FD9AC[] = +{ + sSpriteImage_83FC528, 0x800 +}; + +static const struct SpriteFrameImage sSpriteImageTable_83FD9B4[] = +{ + sSpriteImage_83FCD28, 0x800 +}; + +static const union AnimCmd sSpriteAnim_83FD9BC[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END +}; + +static const union AnimCmd *const sSpriteAnimTable_83FD9C4[] = +{ + sSpriteAnim_83FD9BC +}; + +static const struct SpriteTemplate sSpriteTemplate_83FD9C8 = +{ + .tileTag = 0xFFFF, + .paletteTag = 4106, + .oam = &gOamData_83FD9A4, + .anims = sSpriteAnimTable_83FD9C4, + .images = sSpriteImageTable_83FD9AC, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_811C90C +}; + +static const struct SpriteTemplate sSpriteTemplate_83FD9E0 = +{ + .tileTag = 0xFFFF, + .paletteTag = 4106, + .oam = &gOamData_83FD9A4, + .anims = sSpriteAnimTable_83FD9C4, + .images = sSpriteImageTable_83FD9B4, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_811C90C +}; + +static const u16 gFieldEffectObjectPalette10[] = INCBIN_U16("graphics/field_effect_objects/palettes/10.gbapal"); + +const struct SpritePalette gFieldEffectObjectPaletteInfo10 = +{ + gFieldEffectObjectPalette10, 0x1009 +}; + +static const u16 sMugshotPal_Sydney[] = INCBIN_U16("graphics/battle_transitions/sidney_bg.gbapal"); +static const u16 sMugshotPal_Phoebe[] = INCBIN_U16("graphics/battle_transitions/phoebe_bg.gbapal"); +static const u16 sMugshotPal_Glacia[] = INCBIN_U16("graphics/battle_transitions/glacia_bg.gbapal"); +static const u16 sMugshotPal_Drake[] = INCBIN_U16("graphics/battle_transitions/drake_bg.gbapal"); +static const u16 sMugshotPal_Steven[] = INCBIN_U16("graphics/battle_transitions/steven_bg.gbapal"); +static const u16 sMugshotPal_Brendan[] = INCBIN_U16("graphics/battle_transitions/brendan_bg.gbapal"); +static const u16 sMugshotPal_May[] = INCBIN_U16("graphics/battle_transitions/may_bg.gbapal"); + +static const u16 * const sOpponentMugshotsPals[MUGSHOTS_NO] = +{ + sMugshotPal_Sydney, + sMugshotPal_Phoebe, + sMugshotPal_Glacia, + sMugshotPal_Drake, + sMugshotPal_Steven +}; + +static const u16 * const sPlayerMugshotsPals[2] = +{ + sMugshotPal_Brendan, + sMugshotPal_May +}; + +static const u16 sUnusedTrainerPalette[] = INCBIN_U16("graphics/battle_transitions/unused_trainer.gbapal"); +static const struct SpritePalette sSpritePalette_UnusedTrainer = +{ + sUnusedTrainerPalette, 0x100A +}; + +static const u16 sBigPokeball_Tilemap[] = INCBIN_U16("graphics/battle_transitions/big_pokeball_map.bin"); +static const u16 sMugshotsTilemap[] = INCBIN_U16("graphics/battle_transitions/elite_four_bg_map.bin"); + +// actual code starts here + +void BattleTransition_StartOnField(u8 transitionID) +{ + gMain.callback2 = CB2_OverworldBasic; + LaunchBattleTransitionTask(transitionID); +} + +void BattleTransition_Start(u8 transitionID) +{ + LaunchBattleTransitionTask(transitionID); +} + +#define tState data[0] +#define tTransitionID data[1] +#define tTransitionDone data[15] + +bool8 IsBattleTransitionDone(void) +{ + u8 taskID = FindTaskIdByFunc(Task_BattleTransitionMain); + if (gTasks[taskID].tTransitionDone) + { + DestroyTask(taskID); + return TRUE; + } + else + return FALSE; +} + +static void LaunchBattleTransitionTask(u8 transitionID) +{ + u8 taskID = CreateTask(Task_BattleTransitionMain, 2); + gTasks[taskID].tTransitionID = transitionID; +} + +static void Task_BattleTransitionMain(u8 taskID) +{ + while (sMainTransitionPhases[gTasks[taskID].tState](&gTasks[taskID])); +} + +static bool8 Transition_Phase1(struct Task* task) +{ + sub_807DE10(); + CpuCopy32(gPlttBufferFaded, gPlttBufferUnfaded, 0x400); + if (sPhase1_Tasks[task->tTransitionID] != NULL) + { + CreateTask(sPhase1_Tasks[task->tTransitionID], 4); + task->tState++; + return FALSE; + } + else + { + task->tState = 2; + return TRUE; + } +} + +static bool8 Transition_WaitForPhase1(struct Task* task) +{ + if (FindTaskIdByFunc(sPhase1_Tasks[task->tTransitionID]) == 0xFF) + { + task->tState++; + return TRUE; + } + else + return FALSE; +} + +static bool8 Transition_Phase2(struct Task* task) +{ + CreateTask(sPhase2_Tasks[task->tTransitionID], 0); + task->tState++; + return FALSE; +} + +static bool8 Transition_WaitForPhase2(struct Task* task) +{ + task->tTransitionDone = 0; + if (FindTaskIdByFunc(sPhase2_Tasks[task->tTransitionID]) == 0xFF) + task->tTransitionDone = 1; + return FALSE; +} + +static void Phase1Task_TransitionAll(u8 taskID) +{ + if (gTasks[taskID].tState == 0) + { + gTasks[taskID].tState++; + CreatePhase1Task(0, 0, 3, 2, 2); + } + else if (sub_811D52C()) + DestroyTask(taskID); +} + +static void Phase2Task_Transition_Blur(u8 taskID) +{ + while (sPhase2_Transition_Blur_Funcs[gTasks[taskID].tState](&gTasks[taskID])); +} + +static bool8 Phase2_Transition_Blur_Func1(struct Task* task) +{ + REG_MOSAIC = 0; + REG_BG1CNT |= BGCNT_MOSAIC; + REG_BG2CNT |= BGCNT_MOSAIC; + REG_BG3CNT |= BGCNT_MOSAIC; + task->tState++; + return TRUE; +} + +static bool8 Phase2_Transition_Blur_Func2(struct Task* task) +{ + if (task->data[1] != 0) + task->data[1]--; + else + { + task->data[1] = 4; + if (++task->data[2] == 10) + BeginNormalPaletteFade(-1, -1, 0, 0x10, 0); + REG_MOSAIC = (task->data[2] & 15) * 17; + if (task->data[2] > 14) + task->tState++; + } + return FALSE; +} + +static bool8 Phase2_Transition_Blur_Func3(struct Task* task) +{ + if (!gPaletteFade.active) + { + u8 taskID = FindTaskIdByFunc(Phase2Task_Transition_Blur); + DestroyTask(taskID); + } + return FALSE; +} + +static void Phase2Task_Transition_Swirl(u8 taskID) +{ + while (sPhase2_Transition_Swirl_Funcs[gTasks[taskID].tState](&gTasks[taskID])); +} + +static bool8 Phase2_Transition_Swirl_Func1(struct Task* task) +{ + u16 savedIME; + + sub_811D658(); + dp12_8087EA4(); + BeginNormalPaletteFade(-1, 4, 0, 0x10, 0); + sub_811D6E8(gUnknown_03005560, TRANSITION_STRUCT.field_14, 0, 2, 0, 160); + + SetVBlankCallback(VBlankCB_Phase2_Transition_Swirl); + SetHBlankCallback(HBlankCB_Phase2_Transition_Swirl); + + savedIME = REG_IME; + REG_IME = 0; + REG_IE |= (INTR_FLAG_VBLANK | INTR_FLAG_HBLANK); + REG_IME = savedIME; + REG_DISPSTAT |= (DISPSTAT_VBLANK_INTR | DISPSTAT_HBLANK_INTR); + + task->tState++; + return FALSE; +} + +static bool8 Phase2_Transition_Swirl_Func2(struct Task* task) +{ + TRANSITION_STRUCT.VBlank_DMA = 0; + task->data[1] += 4; + task->data[2] += 8; + + sub_811D6E8(gUnknown_03004DE0[0], TRANSITION_STRUCT.field_14, task->data[1], 2, task->data[2], 160); + + if (!gPaletteFade.active) + { + u8 taskID = FindTaskIdByFunc(Phase2Task_Transition_Swirl); + DestroyTask(taskID); + } + + TRANSITION_STRUCT.VBlank_DMA++; + return FALSE; +} + +static void VBlankCB_Phase2_Transition_Swirl(void) +{ + VBlankCB_BattleTransition(); + if (TRANSITION_STRUCT.VBlank_DMA) + DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); +} + +static void HBlankCB_Phase2_Transition_Swirl(void) +{ + u16 var = gUnknown_03004DE0[1][REG_VCOUNT]; + REG_BG1HOFS = var; + REG_BG2HOFS = var; + REG_BG3HOFS = var; +} + +static void Phase2Task_Transition_Shuffle(u8 taskID) +{ + while (sPhase2_Transition_Shuffle_Funcs[gTasks[taskID].tState](&gTasks[taskID])); +} + +static bool8 Phase2_Transition_Shuffle_Func1(struct Task* task) +{ + u16 savedIME; + + sub_811D658(); + dp12_8087EA4(); + + BeginNormalPaletteFade(-1, 4, 0, 0x10, 0); + memset(gUnknown_03005560, TRANSITION_STRUCT.field_16, 0x140); + + SetVBlankCallback(VBlankCB_Phase2_Transition_Shuffle); + SetHBlankCallback(HBlankCB_Phase2_Transition_Shuffle); + + savedIME = REG_IME; + REG_IME = 0; + REG_IE |= (INTR_FLAG_VBLANK | INTR_FLAG_HBLANK); + REG_IME = savedIME; + REG_DISPSTAT |= (DISPSTAT_VBLANK_INTR | DISPSTAT_HBLANK_INTR); + + task->tState++; + return FALSE; +} + +static bool8 Phase2_Transition_Shuffle_Func2(struct Task* task) +{ + u8 i; + u16 r3, r4; + + TRANSITION_STRUCT.VBlank_DMA = 0; + r4 = task->data[1]; + r3 = task->data[2] >> 8; + task->data[1] += 4224; + task->data[2] += 384; + + for (i = 0; i < 160; i++, r4 += 4224) + { + u16 var = r4 / 256; + gUnknown_03004DE0[0][i] = TRANSITION_STRUCT.field_16 + Sin(var, r3); + } + + if (!gPaletteFade.active) + DestroyTask(FindTaskIdByFunc(Phase2Task_Transition_Shuffle)); + + TRANSITION_STRUCT.VBlank_DMA++; + return FALSE; +} + +static void VBlankCB_Phase2_Transition_Shuffle(void) +{ + VBlankCB_BattleTransition(); + if (TRANSITION_STRUCT.VBlank_DMA) + DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); +} + +static void HBlankCB_Phase2_Transition_Shuffle(void) +{ + u16 var = gUnknown_03004DE0[1][REG_VCOUNT]; + REG_BG1VOFS = var; + REG_BG2VOFS = var; + REG_BG3VOFS = var; +} + +static void Phase2Task_Transition_BigPokeball(u8 taskID) +{ + while (sPhase2_Transition_BigPokeball_Funcs[gTasks[taskID].tState](&gTasks[taskID])); +} + +static bool8 Phase2_Transition_BigPokeball_Func1(struct Task* task) +{ + u16 i; + u16 *dst1, *dst2; + + sub_811D658(); + dp12_8087EA4(); + + task->data[1] = 16; + task->data[2] = 0; + task->data[4] = 0; + task->data[5] = 0x4000; + TRANSITION_STRUCT.WININ = 63; + TRANSITION_STRUCT.WINOUT = 0; + TRANSITION_STRUCT.field_6 = 240; + TRANSITION_STRUCT.WIN0V = 160; + TRANSITION_STRUCT.BLDCNT = 0x3F41; + TRANSITION_STRUCT.BLDALPHA = task->data[1] * 256; // 16 * 256 = 0x1000 + + for (i = 0; i < 160; i++) + { + gUnknown_03005560[i] = 240; + } + + SetVBlankCallback(VBlankCB0_Phase2_Transition_BigPokeball); + + sub_811D6A8(&dst1, & dst2); + CpuFill16(0, dst1, 0x800); + CpuSet(sBigPokeball_Tileset, dst2, 0x2C0); + LoadPalette(gFieldEffectObjectPalette10, 240, 32); + + task->tState++; + return FALSE; +} + +static bool8 Phase2_Transition_BigPokeball_Func2(struct Task* task) +{ + s16 i, j; + u16 *dst1, *dst2; + const u16* BigPokeballMap; + + BigPokeballMap = sBigPokeball_Tilemap; + sub_811D6A8(&dst1, &dst2); + for (i = 0; i < 20; i++) + { + for (j = 0; j < 30; j++, BigPokeballMap++) + { + dst1[i * 32 + j] = *BigPokeballMap | 0xF000; + } + } + sub_811D6E8(gUnknown_03004DE0[0], 0, task->data[4], 132, task->data[5], 160); + + task->tState++; + return TRUE; +} + +static bool8 Phase2_Transition_BigPokeball_Func3(struct Task* task) +{ + TRANSITION_STRUCT.VBlank_DMA = 0; + if (task->data[3] == 0 || --task->data[3] == 0) + { + task->data[2]++; + task->data[3] = 2; + } + TRANSITION_STRUCT.BLDALPHA = (task->data[1] << 8) | task->data[2]; + if (task->data[2] > 15) + task->tState++; + task->data[4] += 8; + task->data[5] -= 256; + + sub_811D6E8(gUnknown_03004DE0[0], 0, task->data[4], 132, task->data[5] >> 8, 160); + + TRANSITION_STRUCT.VBlank_DMA++; + return FALSE; +} + +static bool8 Phase2_Transition_BigPokeball_Func4(struct Task* task) +{ + TRANSITION_STRUCT.VBlank_DMA = 0; + if (task->data[3] == 0 || --task->data[3] == 0) + { + task->data[1]--; + task->data[3] = 2; + } + TRANSITION_STRUCT.BLDALPHA = (task->data[1] << 8) | task->data[2]; + if (task->data[1] == 0) + task->tState++; + task->data[4] += 8; + task->data[5] -= 256; + + sub_811D6E8(gUnknown_03004DE0[0], 0, task->data[4], 132, task->data[5] >> 8, 160); + + TRANSITION_STRUCT.VBlank_DMA++; + return FALSE; +} + +static bool8 Phase2_Transition_BigPokeball_Func5(struct Task* task) +{ + TRANSITION_STRUCT.VBlank_DMA = 0; + task->data[4] += 8; + task->data[5] -= 256; + + sub_811D6E8(gUnknown_03004DE0[0], 0, task->data[4], 132, task->data[5] >> 8, 160); + + if (task->data[5] <= 0) + { + task->tState++; + task->data[1] = 160; + task->data[2] = 256; + task->data[3] = 0; + } + + TRANSITION_STRUCT.VBlank_DMA++; + return FALSE; +} + +static bool8 Phase2_Transition_BigPokeball_Func6(struct Task* task) +{ + TRANSITION_STRUCT.VBlank_DMA = 0; + if (task->data[2] < 1024) + task->data[2] += 128; + if (task->data[1] != 0) + { + task->data[1] -= (task->data[2] >> 8); + if (task->data[1] < 0) + task->data[1] = 0; + } + sub_811D764(gUnknown_03004DE0[0], 120, 80, task->data[1]); + if (task->data[1] == 0) + { + DmaStop(0); + sub_811D6D4(); + DestroyTask(FindTaskIdByFunc(Phase2Task_Transition_BigPokeball)); + } + if (task->data[3] == 0) + { + task->data[3]++; + SetVBlankCallback(VBlankCB1_Phase2_Transition_BigPokeball); + } + + TRANSITION_STRUCT.VBlank_DMA++; + return FALSE; +} + +static void Transition_BigPokeball_Vblank(void) +{ + DmaStop(0); + VBlankCB_BattleTransition(); + if (TRANSITION_STRUCT.VBlank_DMA) + DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); + REG_WININ = TRANSITION_STRUCT.WININ; + REG_WINOUT = TRANSITION_STRUCT.WINOUT; + REG_WIN0V = TRANSITION_STRUCT.WIN0V; + REG_BLDCNT = TRANSITION_STRUCT.BLDCNT; + REG_BLDALPHA = TRANSITION_STRUCT.BLDALPHA; +} + +static void VBlankCB0_Phase2_Transition_BigPokeball(void) +{ + Transition_BigPokeball_Vblank(); + DmaSet(0, gUnknown_03005560, ®_BG0HOFS, 0xA2400001); +} + +static void VBlankCB1_Phase2_Transition_BigPokeball(void) +{ + Transition_BigPokeball_Vblank(); + DmaSet(0, gUnknown_03005560, ®_WIN0H, 0xA2400001); +} + +static void Phase2Task_Transition_PokeballsTrail(u8 taskID) +{ + while (sPhase2_Transition_PokeballsTrail_Funcs[gTasks[taskID].tState](&gTasks[taskID])); +} + +static bool8 Phase2_Transition_PokeballsTrail_Func1(struct Task* task) +{ + u16 *dst1, *dst2; + + sub_811D6A8(&dst1, &dst2); + CpuSet(sPokeballTrail_Tileset, dst2, 0x20); + CpuFill32(0, dst1, 0x800); + LoadPalette(gFieldEffectObjectPalette10, 0xF0, 0x20); + + task->tState++; + return FALSE; +} + +static bool8 Phase2_Transition_PokeballsTrail_Func2(struct Task* task) +{ + s16 i; + s16 rand; + s16 arr0[2]; + s16 arr1[5]; + + memcpy(arr0, sUnknown_083FD7E4, sizeof(sUnknown_083FD7E4)); + memcpy(arr1, sUnknown_083FD7E8, sizeof(sUnknown_083FD7E8)); + rand = Random() & 1; + for (i = 0; i <= 4; i++, rand ^= 1) + { + gFieldEffectArguments[0] = arr0[rand]; // x + gFieldEffectArguments[1] = (i * 32) + 16; // y + gFieldEffectArguments[2] = rand; + gFieldEffectArguments[3] = arr1[i]; + FieldEffectStart(FLDEFF_POKEBALL); + } + + task->tState++; + return FALSE; +} + +static bool8 Phase2_Transition_PokeballsTrail_Func3(struct Task* task) +{ + if (!FieldEffectActiveListContains(FLDEFF_POKEBALL)) + { + sub_811D6D4(); + DestroyTask(FindTaskIdByFunc(Phase2Task_Transition_PokeballsTrail)); + } + return FALSE; +} + +bool8 FldEff_Pokeball(void) +{ + u8 spriteID = CreateSpriteAtEnd(&sSpriteTemplate_83FD98C, gFieldEffectArguments[0], gFieldEffectArguments[1], 0); + gSprites[spriteID].oam.priority = 0; + gSprites[spriteID].oam.affineMode = 1; + gSprites[spriteID].data0 = gFieldEffectArguments[2]; + gSprites[spriteID].data1 = gFieldEffectArguments[3]; + gSprites[spriteID].data2 = -1; + InitSpriteAffineAnim(&gSprites[spriteID]); + StartSpriteAffineAnim(&gSprites[spriteID], gFieldEffectArguments[2]); + return FALSE; +} + +#define SOME_VRAM_STORE(ptr, posY, posX, toStore) \ +{ \ + u32 index = (posY) * 32 + posX; \ + ptr[index] = toStore; \ +} + +static void sub_811B720(struct Sprite* sprite) +{ + s16 arr0[2]; + + memcpy(arr0, sUnknown_083FD7F2, sizeof(sUnknown_083FD7F2)); + if (sprite->data1 != 0) + sprite->data1--; + else + { + if (sprite->pos1.x >= 0 && sprite->pos1.x <= 240) + { + s16 posX = sprite->pos1.x >> 3; + s16 posY = sprite->pos1.y >> 3; + + if (posX != sprite->data2) + { + u32 var; + u16 *ptr; + + sprite->data2 = posX; + var = (((REG_BG0CNT >> 8) & 0x1F) << 11); // r2 + ptr = (u16 *)(VRAM + var); + + SOME_VRAM_STORE(ptr, posY - 2, posX, 0xF001); + SOME_VRAM_STORE(ptr, posY - 1, posX, 0xF001); + SOME_VRAM_STORE(ptr, posY - 0, posX, 0xF001); + SOME_VRAM_STORE(ptr, posY + 1, posX, 0xF001); + } + } + sprite->pos1.x += arr0[sprite->data0]; + if (sprite->pos1.x < -15 || sprite->pos1.x > 255) + FieldEffectStop(sprite, FLDEFF_POKEBALL); + } +} + +static void Phase2Task_Transition_Clockwise_BlackFade(u8 taskID) +{ + while (sPhase2_Transition_Clockwise_BlackFade_Funcs[gTasks[taskID].tState](&gTasks[taskID])); +} + +static bool8 Phase2_Transition_Clockwise_BlackFade_Func1(struct Task* task) +{ + u16 i; + + sub_811D658(); + dp12_8087EA4(); + + TRANSITION_STRUCT.WININ = 0; + TRANSITION_STRUCT.WINOUT = 63; + TRANSITION_STRUCT.field_6 = -3855; + TRANSITION_STRUCT.WIN0V = 160; + + for (i = 0; i < 160; i++) + { + gUnknown_03005560[i] = 0xF3F4; + } + + SetVBlankCallback(VBlankCB_Phase2_Transition_Clockwise_BlackFade); + TRANSITION_STRUCT.data[4] = 120; + + task->tState++; + return TRUE; +} + +static bool8 Phase2_Transition_Clockwise_BlackFade_Func2(struct Task* task) +{ + TRANSITION_STRUCT.VBlank_DMA = 0; + + sub_811D8FC(TRANSITION_STRUCT.data, 120, 80, TRANSITION_STRUCT.data[4], -1, 1, 1); + do + { + gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] = (TRANSITION_STRUCT.data[2] + 1) | 0x7800; + } while (!sub_811D978(TRANSITION_STRUCT.data, 1, 1)); + + TRANSITION_STRUCT.data[4] += 16; + if (TRANSITION_STRUCT.data[4] >= 240) + { + TRANSITION_STRUCT.data[5] = 0; + task->tState++; + } + + TRANSITION_STRUCT.VBlank_DMA++; + return FALSE; +} + +static bool8 Phase2_Transition_Clockwise_BlackFade_Func3(struct Task* task) +{ + s16 r1, r3; + vu8 var = 0; + + TRANSITION_STRUCT.VBlank_DMA = 0; + + sub_811D8FC(TRANSITION_STRUCT.data, 120, 80, 240, TRANSITION_STRUCT.data[5], 1, 1); + + while (1) + { + r1 = 120, r3 = TRANSITION_STRUCT.data[2] + 1; + if (TRANSITION_STRUCT.data[5] >= 80) + r1 = TRANSITION_STRUCT.data[2], r3 = 240; + gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] = (r3) | (r1 << 8); + if (var != 0) + break; + var = sub_811D978(TRANSITION_STRUCT.data, 1, 1); + } + + TRANSITION_STRUCT.data[5] += 8; + if (TRANSITION_STRUCT.data[5] >= 160) + { + TRANSITION_STRUCT.data[4] = 240; + task->tState++; + } + else + { + while (TRANSITION_STRUCT.data[3] < TRANSITION_STRUCT.data[5]) + { + gUnknown_03004DE0[0][++TRANSITION_STRUCT.data[3]] = (r3) | (r1 << 8); + } + } + + TRANSITION_STRUCT.VBlank_DMA++; + return FALSE; +} + +static bool8 Phase2_Transition_Clockwise_BlackFade_Func4(struct Task* task) +{ + TRANSITION_STRUCT.VBlank_DMA = 0; + + sub_811D8FC(TRANSITION_STRUCT.data, 120, 80, TRANSITION_STRUCT.data[4], 160, 1, 1); + do + { + gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] = (TRANSITION_STRUCT.data[2] << 8) | 0xF0; + } while (!sub_811D978(TRANSITION_STRUCT.data, 1, 1)); + + TRANSITION_STRUCT.data[4] -= 16; + if (TRANSITION_STRUCT.data[4] <= 0) + { + TRANSITION_STRUCT.data[5] = 160; + task->tState++; + } + + TRANSITION_STRUCT.VBlank_DMA++; + return FALSE; +} + +static bool8 Phase2_Transition_Clockwise_BlackFade_Func5(struct Task* task) +{ + s16 r1, r2, r3; + vu8 var = 0; + + TRANSITION_STRUCT.VBlank_DMA = 0; + + sub_811D8FC(TRANSITION_STRUCT.data, 120, 80, 0, TRANSITION_STRUCT.data[5], 1, 1); + + while (1) + { + r1 = gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] & 0xFF, r2 = TRANSITION_STRUCT.data[2]; + if (TRANSITION_STRUCT.data[5] <= 80) + r2 = 120, r1 = TRANSITION_STRUCT.data[2]; + gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] = (r1) | (r2 << 8); + r3 = 0; + if (var != 0) + break; + var = sub_811D978(TRANSITION_STRUCT.data, 1, 1); + } + + TRANSITION_STRUCT.data[5] -= 8; + if (TRANSITION_STRUCT.data[5] <= 0) + { + TRANSITION_STRUCT.data[4] = r3; + task->tState++; + } + else + { + while (TRANSITION_STRUCT.data[3] > TRANSITION_STRUCT.data[5]) + { + gUnknown_03004DE0[0][--TRANSITION_STRUCT.data[3]] = (r1) | (r2 << 8); + } + } + + TRANSITION_STRUCT.VBlank_DMA++; + return FALSE; +} + +static bool8 Phase2_Transition_Clockwise_BlackFade_Func6(struct Task* task) +{ + TRANSITION_STRUCT.VBlank_DMA = 0; + + sub_811D8FC(TRANSITION_STRUCT.data, 120, 80, TRANSITION_STRUCT.data[4], 0, 1, 1); + do + { + s16 r2, r3; + + r2 = 120, r3 = TRANSITION_STRUCT.data[2]; + if (TRANSITION_STRUCT.data[2] >= 120) + r2 = 0, r3 = 240; + gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] = (r3) | (r2 << 8); + + } while (!sub_811D978(TRANSITION_STRUCT.data, 1, 1)); + + TRANSITION_STRUCT.data[4] += 16; + if (TRANSITION_STRUCT.data[2] > 120) + task->tState++; + + TRANSITION_STRUCT.VBlank_DMA++; + return FALSE; +} + +static bool8 Phase2_Transition_Clockwise_BlackFade_Func7(struct Task* task) +{ + DmaStop(0); + sub_811D6D4(); + DestroyTask(FindTaskIdByFunc(Phase2Task_Transition_Clockwise_BlackFade)); + return FALSE; +} + +static void VBlankCB_Phase2_Transition_Clockwise_BlackFade(void) +{ + DmaStop(0); + VBlankCB_BattleTransition(); + if (TRANSITION_STRUCT.VBlank_DMA != 0) + DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); + REG_WININ = TRANSITION_STRUCT.WININ; + REG_WINOUT = TRANSITION_STRUCT.WINOUT; + REG_WIN0V = TRANSITION_STRUCT.WIN0V; + REG_WIN0H = gUnknown_03004DE0[1][0]; + DmaSet(0, gUnknown_03004DE0[1], ®_WIN0H, 0xA2400001); +} + +static void Phase2Task_Transition_Ripple(u8 taskID) +{ + while (sPhase2_Transition_Ripple_Funcs[gTasks[taskID].tState](&gTasks[taskID])); +} + +static bool8 Phase2_Transition_Ripple_Func1(struct Task* task) +{ + u8 i; + + sub_811D658(); + dp12_8087EA4(); + + for (i = 0; i < 160; i++) + { + gUnknown_03005560[i] = TRANSITION_STRUCT.field_16; + } + + SetVBlankCallback(VBlankCB_Phase2_Transition_Ripple); + SetHBlankCallback(HBlankCB_Phase2_Transition_Ripple); + + REG_IE |= INTR_FLAG_HBLANK; + REG_DISPSTAT |= DISPSTAT_HBLANK_INTR; + + task->tState++; + return TRUE; +} + +static bool8 Phase2_Transition_Ripple_Func2(struct Task* task) +{ + u8 i; + s16 r3; + u16 r4, r8; + + TRANSITION_STRUCT.VBlank_DMA = 0; + + r3 = task->data[2] >> 8; + r4 = task->data[1]; + r8 = 384; + task->data[1] += 0x400; + if (task->data[2] <= 0x1FFF) + task->data[2] += 0x180; + + for (i = 0; i < 160; i++, r4 += r8) + { + // todo: fix the asm + s16 var = r4 >> 8; + asm(""); + gUnknown_03004DE0[0][i] = TRANSITION_STRUCT.field_16 + Sin(var, r3); + asm(""); + } + + if (++task->data[3] == 81) + { + task->data[4]++; + BeginNormalPaletteFade(-1, -2, 0, 0x10, 0); + } + + if (task->data[4] != 0 && !gPaletteFade.active) + DestroyTask(FindTaskIdByFunc(Phase2Task_Transition_Ripple)); + + TRANSITION_STRUCT.VBlank_DMA++; + return FALSE; +} + +static void VBlankCB_Phase2_Transition_Ripple(void) +{ + VBlankCB_BattleTransition(); + if (TRANSITION_STRUCT.VBlank_DMA) + DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); +} + +static void HBlankCB_Phase2_Transition_Ripple(void) +{ + u16 var = gUnknown_03004DE0[1][REG_VCOUNT]; + REG_BG1VOFS = var; + REG_BG2VOFS = var; + REG_BG3VOFS = var; +} + +static void Phase2Task_Transition_Wave(u8 taskID) +{ + while (sPhase2_Transition_Wave_Funcs[gTasks[taskID].tState](&gTasks[taskID])); +} + +static bool8 Phase2_Transition_Wave_Func1(struct Task* task) +{ + u8 i; + + sub_811D658(); + dp12_8087EA4(); + + TRANSITION_STRUCT.WININ = 63; + TRANSITION_STRUCT.WINOUT = 0; + TRANSITION_STRUCT.field_6 = 240; + TRANSITION_STRUCT.WIN0V = 160; + + for (i = 0; i < 160; i++) + { + gUnknown_03004DE0[1][i] = 242; + } + + SetVBlankCallback(VBlankCB_Phase2_Transition_Wave); + + task->tState++; + return TRUE; +} + +static bool8 Phase2_Transition_Wave_Func2(struct Task* task) +{ + u8 i, r5; + u16* toStore; + bool8 nextFunc; + + TRANSITION_STRUCT.VBlank_DMA = 0; + toStore = gUnknown_03004DE0[0]; + r5 = task->data[2]; + task->data[2] += 16; + task->data[1] += 8; + + for (i = 0, nextFunc = TRUE; i < 160; i++, r5 += 4, toStore++) + { + s16 value = task->data[1] + Sin(r5, 40); + if (value < 0) + value = 0; + if (value > 240) + value = 240; + *toStore = (value << 8) | (0xF1); + if (value < 240) + nextFunc = FALSE; + } + if (nextFunc) + task->tState++; + + TRANSITION_STRUCT.VBlank_DMA++; + return FALSE; +} + +static bool8 Phase2_Transition_Wave_Func3(struct Task* task) +{ + DmaStop(0); + sub_811D6D4(); + DestroyTask(FindTaskIdByFunc(Phase2Task_Transition_Wave)); + return FALSE; +} + +static void VBlankCB_Phase2_Transition_Wave(void) +{ + DmaStop(0); + VBlankCB_BattleTransition(); + if (TRANSITION_STRUCT.VBlank_DMA != 0) + DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); + REG_WININ = TRANSITION_STRUCT.WININ; + REG_WINOUT = TRANSITION_STRUCT.WINOUT; + REG_WIN0V = TRANSITION_STRUCT.WIN0V; + DmaSet(0, gUnknown_03004DE0[1], ®_WIN0H, 0xA2400001); +} + +#define tMugshotOpponentID data[13] +#define tMugshotPlayerID data[14] +#define tMugshotID data[15] + +static void Phase2Task_Transition_Sydney(u8 taskID) +{ + gTasks[taskID].tMugshotID = MUGSHOT_SYDNEY; + Phase2Task_MugShotTransition(taskID); +} + +static void Phase2Task_Transition_Phoebe(u8 taskID) +{ + gTasks[taskID].tMugshotID = MUGSHOT_PHOEBE; + Phase2Task_MugShotTransition(taskID); +} + +static void Phase2Task_Transition_Glacia(u8 taskID) +{ + gTasks[taskID].tMugshotID = MUGSHOT_GLACIA; + Phase2Task_MugShotTransition(taskID); +} + +static void Phase2Task_Transition_Drake(u8 taskID) +{ + gTasks[taskID].tMugshotID = MUGSHOT_DRAKE; + Phase2Task_MugShotTransition(taskID); +} + +static void Phase2Task_Transition_Steven(u8 taskID) +{ + gTasks[taskID].tMugshotID = MUGSHOT_STEVEN; + Phase2Task_MugShotTransition(taskID); +} + +static void Phase2Task_MugShotTransition(u8 taskID) +{ + while (sPhase2_Mugshot_Transition_Funcs[gTasks[taskID].tState](&gTasks[taskID])); +} + +static bool8 Phase2_Mugshot_Func1(struct Task* task) +{ + u8 i; + + sub_811D658(); + dp12_8087EA4(); + Mugshots_CreateOpponentPlayerSprites(task); + + task->data[1] = 0; + task->data[2] = 1; + task->data[3] = 239; + TRANSITION_STRUCT.WININ = 63; + TRANSITION_STRUCT.WINOUT = 62; + TRANSITION_STRUCT.WIN0V = 160; + + for (i = 0; i < 160; i++) + { + gUnknown_03004DE0[1][i] = 0xF0F1; + } + + SetVBlankCallback(VBlankCB0_Phase2_Mugshots); + + task->tState++; + return FALSE; +} + +static bool8 Phase2_Mugshot_Func2(struct Task* task) +{ + s16 i, j; + u16 *dst1, *dst2; + const u16* MugshotsMap; + + MugshotsMap = sMugshotsTilemap; + sub_811D6A8(&dst1, &dst2); + CpuSet(sUnknown_083FC348, dst2, 0xF0); + LoadPalette(sOpponentMugshotsPals[task->tMugshotID], 0xF0, 0x20); + LoadPalette(sPlayerMugshotsPals[gSaveBlock2.playerGender], 0xFA, 0xC); + + for (i = 0; i < 20; i++) + { + for (j = 0; j < 32; j++, MugshotsMap++) + { + dst1[i * 32 + j] = *MugshotsMap | 0xF000; + } + } + + REG_IE |= INTR_FLAG_HBLANK; + REG_DISPSTAT |= DISPSTAT_HBLANK_INTR; + SetHBlankCallback(HBlankCB_Phase2_Mugshots); + task->tState++; + return FALSE; +} + +static bool8 Phase2_Mugshot_Func3(struct Task* task) +{ + u8 i, r5; + u16* toStore; + s16 value; + s32 mergedValue; + + TRANSITION_STRUCT.VBlank_DMA = 0; + + toStore = gUnknown_03004DE0[0]; + r5 = task->data[1]; + task->data[1] += 0x10; + + for (i = 0; i < 80; i++, toStore++, r5 += 0x10) + { + value = task->data[2] + Sin(r5, 0x10); + if (value < 0) + value = 1; + if (value > 0xF0) + value = 0xF0; + *toStore = value; + } + for (; i < 160; i++, toStore++, r5 += 0x10) + { + value = task->data[3] - Sin(r5, 0x10); + if (value < 0) + value = 0; + if (value > 0xEF) + value = 0xEF; + *toStore = (value << 8) | (0xF0); + } + + task->data[2] += 8; + task->data[3] -= 8; + if (task->data[2] > 0xF0) + task->data[2] = 0xF0; + if (task->data[3] < 0) + task->data[3] = 0; + mergedValue = *(s32*)(&task->data[2]); + if (mergedValue == 0xF0) + task->tState++; + + TRANSITION_STRUCT.field_18 -= 8; + TRANSITION_STRUCT.field_1A += 8; + TRANSITION_STRUCT.VBlank_DMA++; + return FALSE; +} + +static bool8 Phase2_Mugshot_Func4(struct Task* task) +{ + u8 i; + u16* toStore; + + TRANSITION_STRUCT.VBlank_DMA = 0; + + for (i = 0, toStore = gUnknown_03004DE0[0]; i < 160; i++, toStore++) + { + *toStore = 0xF0; + } + + task->tState++; + task->data[1] = 0; + task->data[2] = 0; + task->data[3] = 0; + TRANSITION_STRUCT.field_18 -= 8; + TRANSITION_STRUCT.field_1A += 8; + + sub_811CA10(task->tMugshotOpponentID, 0); + sub_811CA10(task->tMugshotPlayerID, 1); + sub_811CA28(task->tMugshotOpponentID); + + PlaySE(SE_BT_START); + + TRANSITION_STRUCT.VBlank_DMA++; + return FALSE; +} + +static bool8 Phase2_Mugshot_Func5(struct Task* task) +{ + TRANSITION_STRUCT.field_18 -= 8; + TRANSITION_STRUCT.field_1A += 8; + if (sub_811CA44(task->tMugshotOpponentID)) + { + task->tState++; + sub_811CA28(task->tMugshotPlayerID); + } + return FALSE; +} + +static bool8 Phase2_Mugshot_Func6(struct Task* task) +{ + TRANSITION_STRUCT.field_18 -= 8; + TRANSITION_STRUCT.field_1A += 8; + if (sub_811CA44(task->tMugshotPlayerID)) + { + TRANSITION_STRUCT.VBlank_DMA = 0; + SetVBlankCallback(NULL); + DmaStop(0); + memset(gUnknown_03004DE0[0], 0, 0x140); + memset(gUnknown_03004DE0[1], 0, 0x140); + REG_WIN0H = 0xF0; + REG_BLDY = 0; + task->tState++; + task->data[3] = 0; + task->data[4] = 0; + TRANSITION_STRUCT.BLDCNT = 0xBF; + SetVBlankCallback(VBlankCB1_Phase2_Mugshots); + } + return FALSE; +} + +static bool8 Phase2_Mugshot_Func7(struct Task* task) +{ + bool32 r6; + + TRANSITION_STRUCT.VBlank_DMA = 0; + r6 = TRUE; + TRANSITION_STRUCT.field_18 -= 8; + TRANSITION_STRUCT.field_1A += 8; + + if (task->data[4] < 0x50) + task->data[4] += 2; + if (task->data[4] > 0x50) + task->data[4] = 0x50; + + if (++task->data[3] & 1) + { + s16 i; + for (i = 0, r6 = FALSE; i <= task->data[4]; i++) + { + s16 index1 = 0x50 - i; + s16 index2 = 0x50 + i; + if (gUnknown_03004DE0[0][index1] <= 15) + { + r6 = TRUE; + gUnknown_03004DE0[0][index1]++; + } + if (gUnknown_03004DE0[0][index2] <= 15) + { + r6 = TRUE; + gUnknown_03004DE0[0][index2]++; + } + } + } + + if (task->data[4] == 0x50 && !r6) + task->tState++; + + TRANSITION_STRUCT.VBlank_DMA++; + return FALSE; +} + +static bool8 Phase2_Mugshot_Func8(struct Task* task) +{ + TRANSITION_STRUCT.VBlank_DMA = 0; + BlendPalettes(-1, 0x10, 0x7FFF); + TRANSITION_STRUCT.BLDCNT = 0xFF; + task->data[3] = 0; + + task->tState++; + return TRUE; +} + +static bool8 Phase2_Mugshot_Func9(struct Task* task) +{ + TRANSITION_STRUCT.VBlank_DMA = 0; + + task->data[3]++; + memset(gUnknown_03004DE0[0], task->data[3], 0x140); + if (task->data[3] > 15) + task->tState++; + + TRANSITION_STRUCT.VBlank_DMA++; + return FALSE; +} + +static bool8 Phase2_Mugshot_Func10(struct Task* task) +{ + DmaStop(0); + sub_811D6D4(); + DestroyTask(FindTaskIdByFunc(task->func)); + return FALSE; +} + +static void VBlankCB0_Phase2_Mugshots(void) +{ + DmaStop(0); + VBlankCB_BattleTransition(); + if (TRANSITION_STRUCT.VBlank_DMA != 0) + DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); + REG_BG0VOFS = TRANSITION_STRUCT.field_1C; + REG_WININ = TRANSITION_STRUCT.WININ; + REG_WINOUT = TRANSITION_STRUCT.WINOUT; + REG_WIN0V = TRANSITION_STRUCT.WIN0V; + DmaSet(0, gUnknown_03004DE0[1], ®_WIN0H, 0xA2400001); +} + +static void VBlankCB1_Phase2_Mugshots(void) +{ + DmaStop(0); + VBlankCB_BattleTransition(); + if (TRANSITION_STRUCT.VBlank_DMA != 0) + DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); + REG_BLDCNT = TRANSITION_STRUCT.BLDCNT; + DmaSet(0, gUnknown_03004DE0[1], ®_BLDY, 0xA2400001); +} + +static void HBlankCB_Phase2_Mugshots(void) +{ + if (REG_VCOUNT < 80) + REG_BG0HOFS = TRANSITION_STRUCT.field_18; + else + REG_BG0HOFS = TRANSITION_STRUCT.field_1A; +} + +static void Mugshots_CreateOpponentPlayerSprites(struct Task* task) +{ + struct Sprite *opponentSprite, *playerSprite; + + s16 mugshotID = task->tMugshotID; + task->tMugshotOpponentID = CreateTrainerSprite(sMugshotsTrainerPicIDsTable[mugshotID], + sMugshotsOpponentCoords[mugshotID][0] - 32, + sMugshotsOpponentCoords[mugshotID][1] + 42, + 0, &ewram[0xC03C]); + task->tMugshotPlayerID = CreateTrainerSprite(gSaveBlock2.playerGender, 272, 106, 0, &ewram[0xC03C]); + + opponentSprite = &gSprites[task->tMugshotOpponentID]; + playerSprite = &gSprites[task->tMugshotPlayerID]; + + opponentSprite->callback = sub_811C90C; + playerSprite->callback = sub_811C90C; + + opponentSprite->oam.affineMode = 3; + playerSprite->oam.affineMode = 3; + + opponentSprite->oam.matrixNum = AllocOamMatrix(); + playerSprite->oam.matrixNum = AllocOamMatrix(); + + opponentSprite->oam.shape = 1; + playerSprite->oam.shape = 1; + + opponentSprite->oam.size = 3; + playerSprite->oam.size = 3; + + CalcCenterToCornerVec(opponentSprite, 1, 3, 3); + CalcCenterToCornerVec(playerSprite, 1, 3, 3); + + SetOamMatrixRotationScaling(opponentSprite->oam.matrixNum, sMugshotsOpponentRotationScales[mugshotID][0], sMugshotsOpponentRotationScales[mugshotID][1], 0); + SetOamMatrixRotationScaling(playerSprite->oam.matrixNum, -512, 0x200, 0); +} + +static void sub_811C90C(struct Sprite* sprite) +{ + while (sUnknown_083FD880[sprite->data0](sprite)); +} + +static bool8 sub_811C934(struct Sprite* sprite) +{ + return FALSE; +} + +static bool8 sub_811C938(struct Sprite* sprite) +{ + s16 arr0[2]; + s16 arr1[2]; + + memcpy(arr0, sUnknown_083FD89C, sizeof(sUnknown_083FD89C)); + memcpy(arr1, sUnknown_083FD8A0, sizeof(sUnknown_083FD8A0)); + + sprite->data0++; + sprite->data1 = arr0[sprite->data7]; + sprite->data2 = arr1[sprite->data7]; + return TRUE; +} + +static bool8 sub_811C984(struct Sprite* sprite) +{ + sprite->pos1.x += sprite->data1; + if (sprite->data7 && sprite->pos1.x < 133) + sprite->data0++; + else if (!sprite->data7 && sprite->pos1.x > 103) + sprite->data0++; + return FALSE; +} + +static bool8 sub_811C9B8(struct Sprite* sprite) +{ + sprite->data1 += sprite->data2; + sprite->pos1.x += sprite->data1; + if (sprite->data1 == 0) + { + sprite->data0++; + sprite->data2 = -sprite->data2; + sprite->data6 = 1; + } + return FALSE; +} + +static bool8 sub_811C9E4(struct Sprite* sprite) +{ + sprite->data1 += sprite->data2; + sprite->pos1.x += sprite->data1; + if (sprite->pos1.x < -31 || sprite->pos1.x > 271) + sprite->data0++; + return FALSE; +} + +static void sub_811CA10(s16 spriteID, s16 value) +{ + gSprites[spriteID].data7 = value; +} + +static void sub_811CA28(s16 spriteID) +{ + gSprites[spriteID].data0++; +} + +static s16 sub_811CA44(s16 spriteID) +{ + return gSprites[spriteID].data6; +} + +#undef tMugshotOpponentID +#undef tMugshotPlayerID +#undef tMugshotID + +static void Phase2Task_Transition_Slice(u8 taskID) +{ + while (sPhase2_Transition_Slice_Funcs[gTasks[taskID].tState](&gTasks[taskID])); +} + +static bool8 Phase2_Transition_Slice_Func1(struct Task* task) +{ + u16 i; + + sub_811D658(); + dp12_8087EA4(); + + task->data[2] = 256; + task->data[3] = 1; + TRANSITION_STRUCT.WININ = 63; + TRANSITION_STRUCT.WINOUT = 0; + TRANSITION_STRUCT.WIN0V = 160; + + for (i = 0; i < 160; i++) + { + gUnknown_03004DE0[1][i] = TRANSITION_STRUCT.field_14; + gUnknown_03004DE0[1][160 + i] = 0xF0; + } + + REG_IE |= INTR_FLAG_HBLANK; + REG_DISPSTAT |= DISPSTAT_HBLANK_INTR; + + SetVBlankCallback(VBlankCB_Phase2_Transition_Slice); + SetHBlankCallback(HBlankCB_Phase2_Transition_Slice); + + task->tState++; + return TRUE; +} + +static bool8 Phase2_Transition_Slice_Func2(struct Task* task) +{ + u16 i; + + TRANSITION_STRUCT.VBlank_DMA = 0; + + task->data[1] += (task->data[2] >> 8); + if (task->data[1] > 0xF0) + task->data[1] = 0xF0; + if (task->data[2] <= 0xFFF) + task->data[2] += task->data[3]; + if (task->data[3] < 128) + task->data[3] <<= 1; // multiplying by two + + for (i = 0; i < 160; i++) + { + u16* storeLoc1 = &gUnknown_03004DE0[0][i]; + u16* storeLoc2 = &gUnknown_03004DE0[0][i + 160]; + if (1 & i) + { + *storeLoc1 = TRANSITION_STRUCT.field_14 + task->data[1]; + *storeLoc2 = 0xF0 - task->data[1]; + } + else + { + *storeLoc1 = TRANSITION_STRUCT.field_14 - task->data[1]; + *storeLoc2 = (task->data[1] << 8) | (0xF1); + } + } + + if (task->data[1] > 0xEF) + task->tState++; + + TRANSITION_STRUCT.VBlank_DMA++; + return FALSE; +} + +static bool8 Phase2_Transition_Slice_Func3(struct Task* task) +{ + DmaStop(0); + sub_811D6D4(); + DestroyTask(FindTaskIdByFunc(Phase2Task_Transition_Slice)); + return FALSE; +} + +static void VBlankCB_Phase2_Transition_Slice(void) +{ + DmaStop(0); + VBlankCB_BattleTransition(); + REG_WININ = TRANSITION_STRUCT.WININ; + REG_WINOUT = TRANSITION_STRUCT.WINOUT; + REG_WIN0V = TRANSITION_STRUCT.WIN0V; + if (TRANSITION_STRUCT.VBlank_DMA) + DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 640); + DmaSet(0, &gUnknown_03004DE0[1][160], ®_WIN0H, 0xA2400001); +} + +static void HBlankCB_Phase2_Transition_Slice(void) +{ + u16 var = gUnknown_03004DE0[1][REG_VCOUNT]; + REG_BG1HOFS = var; + REG_BG2HOFS = var; + REG_BG3HOFS = var; +} + +static void Phase2Task_Transition_WhiteFade(u8 taskID) +{ + while (sPhase2_Transition_WhiteFade_Funcs[gTasks[taskID].tState](&gTasks[taskID])); +} + +static bool8 Phase2_Transition_WhiteFade_Func1(struct Task* task) +{ + u16 i; + + sub_811D658(); + dp12_8087EA4(); + + TRANSITION_STRUCT.BLDCNT = 0xBF; + TRANSITION_STRUCT.BLDY = 0; + TRANSITION_STRUCT.WININ = 0x1E; + TRANSITION_STRUCT.WINOUT = 0x3F; + TRANSITION_STRUCT.WIN0V = 0xA0; + + for (i = 0; i < 160; i++) + { + gUnknown_03004DE0[1][i] = 0; + gUnknown_03004DE0[1][i + 160] = 0xF0; + } + + REG_IE |= INTR_FLAG_HBLANK; + REG_DISPSTAT |= DISPSTAT_HBLANK_INTR; + + SetHBlankCallback(HBlankCB_Phase2_Transition_WhiteFade); + SetVBlankCallback(VBlankCB0_Phase2_Transition_WhiteFade); + + task->tState++; + return FALSE; +} + +static bool8 Phase2_Transition_WhiteFade_Func2(struct Task* task) +{ + s16 i, posY; + s16 arr1[8]; + struct Sprite* sprite; + + memcpy(arr1, sUnknown_083FD8C4, sizeof(sUnknown_083FD8C4)); + for (i = 0, posY = 0; i < 8; i++, posY += 0x14) + { + sprite = &gSprites[CreateInvisibleSprite(sub_811CFD0)]; + sprite->pos1.x = 0xF0; + sprite->pos1.y = posY; + sprite->data5 = arr1[i]; + } + sprite->data6++; + + task->tState++; + return FALSE; +} + +static bool8 Phase2_Transition_WhiteFade_Func3(struct Task* task) +{ + TRANSITION_STRUCT.VBlank_DMA = 0; + if (TRANSITION_STRUCT.field_20 > 7) + { + BlendPalettes(-1, 0x10, 0x7FFF); + task->tState++; + } + return FALSE; +} + +static bool8 Phase2_Transition_WhiteFade_Func4(struct Task* task) +{ + TRANSITION_STRUCT.VBlank_DMA = 0; + + DmaStop(0); + SetVBlankCallback(0); + SetHBlankCallback(0); + + TRANSITION_STRUCT.field_6 = 0xF0; + TRANSITION_STRUCT.BLDY = 0; + TRANSITION_STRUCT.BLDCNT = 0xFF; + TRANSITION_STRUCT.WININ = 0x3F; + + SetVBlankCallback(VBlankCB1_Phase2_Transition_WhiteFade); + + task->tState++; + return FALSE; +} + +static bool8 Phase2_Transition_WhiteFade_Func5(struct Task* task) +{ + if (++TRANSITION_STRUCT.BLDY > 16) + { + sub_811D6D4(); + DestroyTask(FindTaskIdByFunc(Phase2Task_Transition_WhiteFade)); + } + return FALSE; +} + +static void VBlankCB0_Phase2_Transition_WhiteFade(void) +{ + DmaStop(0); + VBlankCB_BattleTransition(); + REG_BLDCNT = TRANSITION_STRUCT.BLDCNT; + REG_WININ = TRANSITION_STRUCT.WININ; + REG_WINOUT = TRANSITION_STRUCT.WINOUT; + REG_WIN0V = TRANSITION_STRUCT.field_6; + if (TRANSITION_STRUCT.VBlank_DMA) + DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 640); + DmaSet(0, &gUnknown_03004DE0[1][160], ®_WIN0H, 0xA2400001); +} + +static void VBlankCB1_Phase2_Transition_WhiteFade(void) +{ + VBlankCB_BattleTransition(); + REG_BLDY = TRANSITION_STRUCT.BLDY; + REG_BLDCNT = TRANSITION_STRUCT.BLDCNT; + REG_WININ = TRANSITION_STRUCT.WININ; + REG_WINOUT = TRANSITION_STRUCT.WINOUT; + REG_WIN0H = TRANSITION_STRUCT.field_6; + REG_WIN0V = TRANSITION_STRUCT.WIN0V; +} + +static void HBlankCB_Phase2_Transition_WhiteFade(void) +{ + REG_BLDY = gUnknown_03004DE0[1][REG_VCOUNT]; +} + +static void sub_811CFD0(struct Sprite* sprite) +{ + if (sprite->data5) + { + sprite->data5--; + if (sprite->data6) + TRANSITION_STRUCT.VBlank_DMA = 1; + } + else + { + u16 i; + u16* ptr1 = &gUnknown_03004DE0[0][sprite->pos1.y]; + u16* ptr2 = &gUnknown_03004DE0[0][sprite->pos1.y + 160]; + for (i = 0; i < 20; i++) + { + ptr1[i] = sprite->data0 >> 8; + ptr2[i] = (u8)(sprite->pos1.x); + } + if (sprite->pos1.x == 0 && sprite->data0 == 0x1000) + sprite->data1 = 1; + + sprite->pos1.x -= 16; + sprite->data0 += 0x80; + + if (sprite->pos1.x < 0) + sprite->pos1.x = 0; + if (sprite->data0 > 0x1000) + sprite->data0 = 0x1000; + + if (sprite->data6) + TRANSITION_STRUCT.VBlank_DMA = 1; + + if (sprite->data1) + { + if (sprite->data6 == 0 || (TRANSITION_STRUCT.field_20 > 6 && sprite->data2++ > 7)) + { + TRANSITION_STRUCT.field_20++; + DestroySprite(sprite); + } + } + } +} + +static void Phase2Task_Transition_GridSquares(u8 taskID) +{ + while (sPhase2_Transition_GridSquares_Funcs[gTasks[taskID].tState](&gTasks[taskID])); +} + +static bool8 Phase2_Transition_GridSquares_Func1(struct Task* task) +{ + u16 *dst1, *dst2; + + sub_811D6A8(&dst1, &dst2); + CpuSet(sShrinkingBoxTileset, dst2, 0x10); + CpuFill16(0xF000, dst1, 0x800); + LoadPalette(gFieldEffectObjectPalette10, 0xF0, 0x20); + + task->tState++; + return FALSE; +} + +static bool8 Phase2_Transition_GridSquares_Func2(struct Task* task) +{ + u16* dst1; + + if (task->data[1] == 0) + { + sub_811D690(&dst1); + task->data[1] = 3; + task->data[2]++; + CpuSet(sShrinkingBoxTileset + (task->data[2] * 8), dst1, 0x10); + if (task->data[2] > 0xD) + { + task->tState++; + task->data[1] = 16; + } + } + + task->data[1]--; + return FALSE; +} + +static bool8 Phase2_Transition_GridSquares_Func3(struct Task* task) +{ + if (--task->data[1] == 0) + { + sub_811D6D4(); + DestroyTask(FindTaskIdByFunc(Phase2Task_Transition_GridSquares)); + } + return FALSE; +} + +static void Phase2Task_Transition_Shards(u8 taskID) +{ + while (sPhase2_Transition_Shards_Funcs[gTasks[taskID].tState](&gTasks[taskID])); +} + +static bool8 Phase2_Transition_Shards_Func1(struct Task* task) +{ + u16 i; + + sub_811D658(); + dp12_8087EA4(); + + TRANSITION_STRUCT.WININ = 0x3F; + TRANSITION_STRUCT.WINOUT = 0; + TRANSITION_STRUCT.WIN0V = 0xA0; + + for (i = 0; i < 160; i++) + { + gUnknown_03004DE0[0][i] = 0xF0; + } + + CpuSet(gUnknown_03004DE0[0], gUnknown_03004DE0[1], 0xA0); + SetVBlankCallback(VBlankCB_Phase2_Transition_Shards); + + task->tState++; + return TRUE; +} + +static bool8 Phase2_Transition_Shards_Func2(struct Task* task) +{ + sub_811D8FC(TRANSITION_STRUCT.data, + sUnknown_083FD8F4[task->data[1]][0], + sUnknown_083FD8F4[task->data[1]][1], + sUnknown_083FD8F4[task->data[1]][2], + sUnknown_083FD8F4[task->data[1]][3], + 1, 1); + task->data[2] = sUnknown_083FD8F4[task->data[1]][4]; + task->tState++; + return TRUE; +} + +static bool8 Phase2_Transition_Shards_Func3(struct Task* task) +{ + s16 i; + bool8 nextFunc; + + TRANSITION_STRUCT.VBlank_DMA = 0; + + for (i = 0, nextFunc = FALSE; i < 16; i++) + { + s16 r3 = gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] >> 8; + s16 r4 = gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] & 0xFF; + if (task->data[2] == 0) + { + if (r3 < TRANSITION_STRUCT.data[2]) + r3 = TRANSITION_STRUCT.data[2]; + if (r3 > r4) + r3 = r4; + } + else + { + if (r4 > TRANSITION_STRUCT.data[2]) + r4 = TRANSITION_STRUCT.data[2]; + if (r4 <= r3) + r4 = r3; + } + gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] = (r4) | (r3 << 8); + if (nextFunc) + { + task->tState++; + break; + } + else + nextFunc = sub_811D978(TRANSITION_STRUCT.data, 1, 1); + } + + TRANSITION_STRUCT.VBlank_DMA++; + return FALSE; +} + +static bool8 Phase2_Transition_Shards_Func4(struct Task* task) +{ + if (++task->data[1] < 7) + { + task->tState++; + task->data[3] = sUnknown_083FD93A[task->data[1] - 1]; + return TRUE; + } + else + { + DmaStop(0); + sub_811D6D4(); + DestroyTask(FindTaskIdByFunc(Phase2Task_Transition_Shards)); + return FALSE; + } +} + +static bool8 Phase2_Transition_Shards_Func5(struct Task* task) +{ + if (--task->data[3] == 0) + { + task->tState = 1; + return TRUE; + } + else + return FALSE; +} + +static void VBlankCB_Phase2_Transition_Shards(void) +{ + DmaStop(0); + VBlankCB_BattleTransition(); + if (TRANSITION_STRUCT.VBlank_DMA) + DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); + REG_WININ = TRANSITION_STRUCT.WININ; + REG_WINOUT = TRANSITION_STRUCT.WINOUT; + REG_WIN0V = TRANSITION_STRUCT.WIN0V; + REG_WIN0H = gUnknown_03004DE0[1][0]; + DmaSet(0, gUnknown_03004DE0[1], ®_WIN0H, 0xA2400001); +} + +static void CreatePhase1Task(s16 a0, s16 a1, s16 a2, s16 a3, s16 a4) +{ + u8 taskID = CreateTask(Phase1_Task_RunFuncs, 3); + gTasks[taskID].data[1] = a0; + gTasks[taskID].data[2] = a1; + gTasks[taskID].data[3] = a2; + gTasks[taskID].data[4] = a3; + gTasks[taskID].data[5] = a4; + gTasks[taskID].data[6] = a0; +} + +static bool8 sub_811D52C(void) +{ + if (FindTaskIdByFunc(Phase1_Task_RunFuncs) == 0xFF) + return TRUE; + else + return FALSE; +} + +static void Phase1_Task_RunFuncs(u8 taskID) +{ + while (sPhase1_TransitionAll_Funcs[gTasks[taskID].tState](&gTasks[taskID])); +} + +static bool8 Phase1_TransitionAll_Func1(struct Task* task) +{ + if (task->data[6] == 0 || --task->data[6] == 0) + { + task->data[6] = task->data[1]; + task->data[7] += task->data[4]; + if (task->data[7] > 16) + task->data[7] = 16; + BlendPalettes(-1, task->data[7], 0x2D6B); + } + if (task->data[7] > 15) + { + task->tState++; + task->data[6] = task->data[2]; + } + return FALSE; +} + +static bool8 Phase1_TransitionAll_Func2(struct Task* task) +{ + if (task->data[6] == 0 || --task->data[6] == 0) + { + task->data[6] = task->data[2]; + task->data[7] -= task->data[5]; + if (task->data[7] < 0) + task->data[7] = 0; + BlendPalettes(-1, task->data[7], 0x2D6B); + } + if (task->data[7] == 0) + { + if (--task->data[3] == 0) + DestroyTask(FindTaskIdByFunc(Phase1_Task_RunFuncs)); + else + { + task->data[6] = task->data[1]; + task->tState = 0; + } + } + return FALSE; +} + +static void sub_811D658(void) +{ + struct TransitionData* const* dummy = &sTransitionStructPtr; + memset(*dummy, 0, sizeof(struct TransitionData)); + sub_8057B14(&TRANSITION_STRUCT.field_14, &TRANSITION_STRUCT.field_16); +} + +static void VBlankCB_BattleTransition(void) +{ + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); +} + +static void sub_811D690(u16** a0) +{ + u16 reg, *vram; + + reg = REG_BG0CNT >> 2; + reg <<= 0xE; + vram = (u16*)(VRAM + reg); + + *a0 = vram; +} + +static void sub_811D6A8(u16** a0, u16** a1) +{ + u16 reg0, reg1, *vram0, *vram1; + + reg0 = REG_BG0CNT >> 8; + reg1 = REG_BG0CNT >> 2; + + reg0 <<= 0xB; + reg1 <<= 0xE; + + vram0 = (u16*)(VRAM + reg0); + *a0 = vram0; + + vram1 = (u16*)(VRAM + reg1); + *a1 = vram1; +} + +static void sub_811D6D4(void) +{ + BlendPalettes(-1, 0x10, 0); +} + +static void sub_811D6E8(s16* array, s16 sinAdd, s16 index, s16 indexIncrementer, s16 amplitude, s16 arrSize) +{ + u8 i; + for (i = 0; arrSize > 0; arrSize--, i++, index += indexIncrementer) + { + array[i] = sinAdd + Sin(0xFF & index, amplitude); + } +} + +static void sub_811D764(u16* array, s16 a1, s16 a2, s16 a3) +{ + s16 i; + + memset(array, 0xA, 160 * sizeof(s16)); + for (i = 0; i < 64; i++) + { + s16 sinResult, cosResult; + s16 toStoreOrr, r2, r3, toStore, r7, r8; + + sinResult = Sin(i, a3); + cosResult = Cos(i, a3); + + toStoreOrr = a1 - sinResult; + toStore = a1 + sinResult; + r7 = a2 - cosResult; + r8 = a2 + cosResult; + + if (toStoreOrr < 0) + toStoreOrr = 0; + if (toStore > 0xF0) + toStore = 0xF0; + if (r7 < 0) + r7 = 0; + if (r8 > 0x9F) + r8 = 0x9F; + + toStore |= (toStoreOrr << 8); + array[r7] = toStore; + array[r8] = toStore; + + cosResult = Cos(i + 1, a3); + r3 = a2 - cosResult; + r2 = a2 + cosResult; + + if (r3 < 0) + r3 = 0; + if (r2 > 0x9F) + r2 = 0x9F; + + while (r7 > r3) + array[--r7] = toStore; + while (r7 < r3) + array[++r7] = toStore; + + while (r8 > r2) + array[--r8] = toStore; + while (r8 < r2) + array[++r8] = toStore; + } +} + +static void sub_811D8FC(s16* data, s16 a1, s16 a2, s16 a3, s16 a4, s16 a5, s16 a6) +{ + data[0] = a1; + data[1] = a2; + data[2] = a1; + data[3] = a2; + data[4] = a3; + data[5] = a4; + data[6] = a5; + data[7] = a6; + data[8] = a3 - a1; + if (data[8] < 0) + { + data[8] = -data[8]; + data[6] = -a5; + } + data[9] = a4 - a2; + if (data[9] < 0) + { + data[9] = -data[9]; + data[7] = -a6; + } + data[10] = 0; +} + +static bool8 sub_811D978(s16* data, bool8 a1, bool8 a2) +{ + u8 var; + if (data[8] > data[9]) + { + data[2] += data[6]; + data[10] += data[9]; + if (data[10] > data[8]) + { + data[3] += data[7]; + data[10] -= data[8]; + } + } + else + { + data[3] += data[7]; + data[10] += data[8]; + if (data[10] > data[9]) + { + data[2] += data[6]; + data[10] -= data[9]; + } + } + var = 0; + if ((data[6] > 0 && data[2] >= data[4]) || (data[6] < 0 && data[2] <= data[4])) + { + var++; + if (a1) + data[2] = data[4]; + } + if ((data[7] > 0 && data[3] >= data[5]) || (data[7] < 0 && data[3] <= data[5])) + { + var++; + if (a2) + data[3] = data[5]; + } + if (var == 2) + return TRUE; + else + return FALSE; +} diff --git a/src/battle/calculate_base_damage.c b/src/battle/calculate_base_damage.c new file mode 100644 index 000000000..f5c679876 --- /dev/null +++ b/src/battle/calculate_base_damage.c @@ -0,0 +1,309 @@ +#include "global.h" +#include "abilities.h" +#include "battle.h" +#include "berry.h" +#include "data2.h" +#include "event_data.h" +#include "hold_effects.h" +#include "item.h" +#include "items.h" +#include "pokemon.h" +#include "species.h" +#include "moves.h" +#include "battle_move_effects.h" + +extern u32 dword_2017100[]; +extern u16 gBattleTypeFlags; +extern struct BattlePokemon gBattleMons[4]; +extern u16 gCurrentMove; +extern u8 gCritMultiplier; +extern u16 gBattleWeather; +extern struct BattleEnigmaBerry gEnigmaBerries[]; +extern u16 gBattleMovePower; +extern u16 gTrainerBattleOpponent; + +extern const u8 gHoldEffectToType[][2]; +extern const u8 gStatStageRatios[][2]; + +u8 GetBankSide(u8 bank); + +#define APPLY_STAT_MOD(var, mon, stat, statIndex) \ +{ \ + (var) = (stat) * (gStatStageRatios)[(mon)->statStages[(statIndex)]][0]; \ + (var) /= (gStatStageRatios)[(mon)->statStages[(statIndex)]][1]; \ +} + +s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *defender, u32 move, u16 sideStatus, u16 powerOverride, u8 typeOverride, u8 bankAtk, u8 bankDef) +{ + u32 i; + s32 damage = 0; + s32 damageHelper; + u8 type; + u16 attack, defense; + u16 spAttack, spDefense; + u8 defenderHoldEffect; + u8 defenderHoldEffectParam; + u8 attackerHoldEffect; + u8 attackerHoldEffectParam; + + if (!powerOverride) + gBattleMovePower = gBattleMoves[move].power; + else + gBattleMovePower = powerOverride; + + if (!typeOverride) + type = gBattleMoves[move].type; + else + type = typeOverride & 0x3F; + + attack = attacker->attack; + defense = defender->defense; + spAttack = attacker->spAttack; + spDefense = defender->spDefense; + + if (attacker->item == ITEM_ENIGMA_BERRY) + { + attackerHoldEffect = gEnigmaBerries[bankAtk].holdEffect; + attackerHoldEffectParam = gEnigmaBerries[bankAtk].holdEffectParam; + } + else + { + attackerHoldEffect = ItemId_GetHoldEffect(attacker->item); + attackerHoldEffectParam = ItemId_GetHoldEffectParam(attacker->item); + } + + if (defender->item == ITEM_ENIGMA_BERRY) + { + defenderHoldEffect = gEnigmaBerries[bankDef].holdEffect; + defenderHoldEffectParam = gEnigmaBerries[bankDef].holdEffectParam; + } + else + { + defenderHoldEffect = ItemId_GetHoldEffect(defender->item); + defenderHoldEffectParam = ItemId_GetHoldEffectParam(defender->item); + } + + if (attacker->ability == ABILITY_HUGE_POWER || attacker->ability == ABILITY_PURE_POWER) + attack *= 2; + + if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_EREADER_TRAINER))) + { + if ((gBattleTypeFlags & BATTLE_TYPE_TRAINER) + && gTrainerBattleOpponent != 1024 + && FlagGet(BADGE01_GET) + && !GetBankSide(bankAtk)) + attack = (110 * attack) / 100; + } + if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_EREADER_TRAINER))) + { + if ((gBattleTypeFlags & BATTLE_TYPE_TRAINER) + && gTrainerBattleOpponent != 1024 + && FlagGet(BADGE05_GET) + && !GetBankSide(bankDef)) + defense = (110 * defense) / 100; + } + if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_EREADER_TRAINER))) + { + if ((gBattleTypeFlags & BATTLE_TYPE_TRAINER) + && gTrainerBattleOpponent != 1024 + && FlagGet(BADGE07_GET) + && !GetBankSide(bankAtk)) + spAttack = (110 * spAttack) / 100; + } + if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_EREADER_TRAINER))) + { + if ((gBattleTypeFlags & BATTLE_TYPE_TRAINER) + && gTrainerBattleOpponent != 1024 + && FlagGet(BADGE07_GET) + && !GetBankSide(bankDef)) + spDefense = (110 * spDefense) / 100; + } + + for (i = 0; i < 17; i++) + { + if (attackerHoldEffect == gHoldEffectToType[i][0] + && type == gHoldEffectToType[i][1]) + { + if (type <= 8) + attack = (attack * (attackerHoldEffectParam + 100)) / 100; + else + spAttack = (spAttack * (attackerHoldEffectParam + 100)) / 100; + break; + } + } + + if (attackerHoldEffect == HOLD_EFFECT_CHOICE_BAND) + attack = (150 * attack) / 100; + if (attackerHoldEffect == HOLD_EFFECT_SOUL_DEW && !(gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER) && (attacker->species == SPECIES_LATIAS || attacker->species == SPECIES_LATIOS)) + spAttack = (150 * spAttack) / 100; + if (defenderHoldEffect == HOLD_EFFECT_SOUL_DEW && !(gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER) && (defender->species == SPECIES_LATIAS || defender->species == SPECIES_LATIOS)) + spDefense = (150 * spDefense) / 100; + if (attackerHoldEffect == HOLD_EFFECT_DEEP_SEA_TOOTH && attacker->species == SPECIES_CLAMPERL) + spAttack *= 2; + if (defenderHoldEffect == HOLD_EFFECT_DEEP_SEA_SCALE && defender->species == SPECIES_CLAMPERL) + spDefense *= 2; + if (attackerHoldEffect == HOLD_EFFECT_LIGHT_BALL && attacker->species == SPECIES_PIKACHU) + spAttack *= 2; + if (defenderHoldEffect == HOLD_EFFECT_METAL_POWDER && defender->species == SPECIES_DITTO) + defense *= 2; + if (attackerHoldEffect == HOLD_EFFECT_THICK_CLUB && (attacker->species == SPECIES_CUBONE || attacker->species == SPECIES_MAROWAK)) + attack *= 2; + if (defender->ability == ABILITY_THICK_FAT && (type == TYPE_FIRE || type == TYPE_ICE)) + spAttack /= 2; + if (attacker->ability == ABILITY_HUSTLE) + attack = (150 * attack) / 100; + if (attacker->ability == ABILITY_PLUS && AbilityBattleEffects(ABILITYEFFECT_FIELD_SPORT, 0, ABILITY_MINUS, 0, 0)) + spAttack = (150 * spAttack) / 100; + if (attacker->ability == ABILITY_MINUS && AbilityBattleEffects(ABILITYEFFECT_FIELD_SPORT, 0, ABILITY_PLUS, 0, 0)) + spAttack = (150 * spAttack) / 100; + if (attacker->ability == ABILITY_GUTS && attacker->status1) + attack = (150 * attack) / 100; + if (defender->ability == ABILITY_MARVEL_SCALE && defender->status1) + defense = (150 * defense) / 100; + if (type == TYPE_ELECTRIC && AbilityBattleEffects(ABILITYEFFECT_FIELD_SPORT, 0, 0, 0xFD, 0)) + gBattleMovePower /= 2; + if (type == TYPE_FIRE && AbilityBattleEffects(ABILITYEFFECT_FIELD_SPORT, 0, 0, 0xFE, 0)) + gBattleMovePower /= 2; + if (type == TYPE_GRASS && attacker->ability == ABILITY_OVERGROW && attacker->hp <= (attacker->maxHP / 3)) + gBattleMovePower = (150 * gBattleMovePower) / 100; + if (type == TYPE_FIRE && attacker->ability == ABILITY_BLAZE && attacker->hp <= (attacker->maxHP / 3)) + gBattleMovePower = (150 * gBattleMovePower) / 100; + if (type == TYPE_WATER && attacker->ability == ABILITY_TORRENT && attacker->hp <= (attacker->maxHP / 3)) + gBattleMovePower = (150 * gBattleMovePower) / 100; + if (type == TYPE_BUG && attacker->ability == ABILITY_SWARM && attacker->hp <= (attacker->maxHP / 3)) + gBattleMovePower = (150 * gBattleMovePower) / 100; + if (gBattleMoves[gCurrentMove].effect == EFFECT_EXPLOSION) + defense /= 2; + + if (type < TYPE_MYSTERY) // is physical + { + if (gCritMultiplier == 2) + { + if (attacker->statStages[STAT_STAGE_ATK] > 6) + APPLY_STAT_MOD(damage, attacker, attack, STAT_STAGE_ATK) + else + damage = attack; + } + else + APPLY_STAT_MOD(damage, attacker, attack, STAT_STAGE_ATK) + + damage = damage * gBattleMovePower; + damage *= (2 * attacker->level / 5 + 2); + + if (gCritMultiplier == 2) + { + if (defender->statStages[STAT_STAGE_DEF] < 6) + APPLY_STAT_MOD(damageHelper, defender, defense, STAT_STAGE_DEF) + else + damageHelper = defense; + } + else + APPLY_STAT_MOD(damageHelper, defender, defense, STAT_STAGE_DEF) + + damage = damage / damageHelper; + damage /= 50; + + if ((attacker->status1 & STATUS_BURN) && attacker->ability != ABILITY_GUTS) + damage /= 2; + + if ((sideStatus & SIDE_STATUS_REFLECT) && gCritMultiplier == 1) + { + if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && CountAliveMons(2) == 2) + damage = 2 * (damage / 3); + else + damage /= 2; + } + + if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && gBattleMoves[move].target == 8 && CountAliveMons(2) == 2) + damage /= 2; + + // moves always do at least 1 damage. + if (damage == 0) + damage = 1; + } + + if (type == TYPE_MYSTERY) + damage = 0; // is ??? type. does 0 damage. + + if (type > TYPE_MYSTERY) // is special? + { + if (gCritMultiplier == 2) + { + if (attacker->statStages[STAT_STAGE_SPATK] > 6) + APPLY_STAT_MOD(damage, attacker, spAttack, STAT_STAGE_SPATK) + else + damage = spAttack; + } + else + APPLY_STAT_MOD(damage, attacker, spAttack, STAT_STAGE_SPATK) + + damage = damage * gBattleMovePower; + damage *= (2 * attacker->level / 5 + 2); + + if (gCritMultiplier == 2) + { + if (defender->statStages[STAT_STAGE_SPDEF] < 6) + APPLY_STAT_MOD(damageHelper, defender, spDefense, STAT_STAGE_SPDEF) + else + damageHelper = spDefense; + } + else + APPLY_STAT_MOD(damageHelper, defender, spDefense, STAT_STAGE_SPDEF) + + damage = (damage / damageHelper); + damage /= 50; + + if ((sideStatus & SIDE_STATUS_LIGHTSCREEN) && gCritMultiplier == 1) + { + if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && CountAliveMons(2) == 2) + damage = 2 * (damage / 3); + else + damage /= 2; + } + + if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && gBattleMoves[move].target == 8 && CountAliveMons(2) == 2) + damage /= 2; + + // are effects of weather negated with cloud nine or air lock + if (!AbilityBattleEffects(ABILITYEFFECT_FIELD_SPORT, 0, ABILITY_CLOUD_NINE, 0, 0) + && !AbilityBattleEffects(ABILITYEFFECT_FIELD_SPORT, 0, ABILITY_AIR_LOCK, 0, 0)) + { + if (gBattleWeather & WEATHER_RAIN_TEMPORARY) + { + switch (type) + { + case TYPE_FIRE: + damage /= 2; + break; + case TYPE_WATER: + damage = (15 * damage) / 10; + break; + } + } + + // any weather except sun weakens solar beam + if ((gBattleWeather & (WEATHER_RAIN_ANY | WEATHER_SANDSTORM_ANY | WEATHER_HAIL)) && gCurrentMove == MOVE_SOLAR_BEAM) + damage /= 2; + + // sunny + if (gBattleWeather & WEATHER_SUN_ANY) + { + switch (type) + { + case TYPE_FIRE: + damage = (15 * damage) / 10; + break; + case TYPE_WATER: + damage /= 2; + break; + } + } + } + + // flash fire triggered + if ((dword_2017100[bankAtk] & 1) && type == TYPE_FIRE) + damage = (15 * damage) / 10; + } + + return damage + 2; +} diff --git a/src/contest_link_80C857C.c b/src/battle/contest_link_80C857C.c similarity index 100% rename from src/contest_link_80C857C.c rename to src/battle/contest_link_80C857C.c diff --git a/src/pokeball.c b/src/battle/pokeball.c similarity index 100% rename from src/pokeball.c rename to src/battle/pokeball.c diff --git a/src/post_battle_event_funcs.c b/src/battle/post_battle_event_funcs.c similarity index 96% rename from src/post_battle_event_funcs.c rename to src/battle/post_battle_event_funcs.c index 8d85705c8..27d7022fe 100644 --- a/src/post_battle_event_funcs.c +++ b/src/battle/post_battle_event_funcs.c @@ -4,7 +4,7 @@ #include "load_save.h" #include "main.h" #include "pokemon.h" -#include "rom4.h" +#include "overworld.h" #include "script_pokemon_80C4.h" extern u8 gUnknown_02039324; @@ -14,7 +14,7 @@ int GameClear(void) int i; bool32 ribbonGet; - HealPlayerParty(); + ScrSpecial_HealPlayerParty(); if (FlagGet(SYS_GAME_CLEAR) == TRUE) { diff --git a/src/battle/reshow_battle_screen.c b/src/battle/reshow_battle_screen.c new file mode 100644 index 000000000..343c8f183 --- /dev/null +++ b/src/battle/reshow_battle_screen.c @@ -0,0 +1,332 @@ +#include "global.h" +#include "battle.h" +#include "battle_anim.h" +#include "palette.h" +#include "main.h" +#include "unknown_task.h" +#include "text.h" +#include "rom_8077ABC.h" +#include "data2.h" + +extern struct SpriteTemplate gUnknown_02024E8C; +extern struct Window gUnknown_03004210; +extern u16 gUnknown_03004280; +extern u16 gUnknown_03004288; +extern u16 gUnknown_030042A4; +extern u16 gUnknown_030042C0; +extern u16 gUnknown_030041B0; +extern u16 gUnknown_030041B4; +extern u16 gUnknown_030041B8; +extern u16 gUnknown_030042A0; +extern u8 gReservedSpritePaletteCount; +extern u8 gActionSelectionCursor[4]; +extern u8 gBankInMenu; +extern u16 gBattlePartyID[4]; +extern u8 gNoOfAllBanks; +extern u16 gBattleTypeFlags; +extern u8 gObjectBankIDs[4]; +extern u8 gBattleMonForms[4]; +extern u8 gHealthboxIDs[4]; + +bool8 sub_800E414(u8 a0); +bool8 sub_8031C30(u8 a0); +void sub_8031EE8(void); +void sub_80327CC(void); +void sub_8032984(u8 a, u16 b); +void sub_800FCD4(void); +void BattleLoadOpponentMonSprite(struct Pokemon *, u8 bank); +void BattleLoadPlayerMonSprite(struct Pokemon *, u8 bank); +void BattleLoadSubstituteSprite(u8 bank, u8 b); +void LoadPlayerTrainerBankSprite(u16 a0, u8 bank); +u8 sub_8077F7C(u8 bank); +u8 sub_8077F68(u8 bank); +void nullsub_11(u8 healthboxID, u8 a1); +void sub_8043DB0(u8 bank); +u8 battle_make_oam_normal_battle(u8 bank); +u8 battle_make_oam_safari_battle(void); +void sub_8045A5C(u8 healthboxID, struct Pokemon*, u8); +void sub_8043F44(u8 bank); +void sub_8043DFC(u8 healthboxID); + +// this file's functions +static void CB2_ReshowBattleScreenAfterMenu(void); +static bool8 LoadAppropiateBankSprite(u8 bank); +static void sub_807B184(u8 bank); +static void sub_807B508(u8 bank); +static void sub_807B06C(void); + +#define gReshowState ewram[0x1FFFF] +#define gHelperState ewram[0x1FFFE] + +void nullsub_14(void) +{ + +} + +void ReshowBattleScreenAfterMenu(void) +{ + gPaletteFade.bufferTransferDisabled = 1; + SetHBlankCallback(0); + SetVBlankCallback(0); + REG_MOSAIC = 0; + gReshowState = 0; + gHelperState = 0; + SetMainCallback2(CB2_ReshowBattleScreenAfterMenu); +} + +static void CB2_ReshowBattleScreenAfterMenu(void) +{ + switch (gReshowState) + { + case 0: + dp12_8087EA4(); + SetUpWindowConfig(&gWindowConfig_81E6C58); + ResetPaletteFade(); + InitWindowFromConfig(&gUnknown_03004210, &gWindowConfig_81E6C58); + gUnknown_030042A4 = 0; + gUnknown_030042A0 = 0; + gUnknown_030042C0 = 0; + gUnknown_030041B4 = 0; + gUnknown_03004288 = 0; + gUnknown_03004280 = 0; + gUnknown_030041B0 = 0; + gUnknown_030041B8 = 0; + break; + case 1: + { + const u32 zero = 0; + CpuFastSet(&zero, (void*) VRAM, 0x1006000); + } + break; + case 2: + if (!sub_800E414(gHelperState)) + { + gHelperState++; + gReshowState--; + } + else + gHelperState = 0; + break; + case 3: + ResetSpriteData(); + break; + case 4: + FreeAllSpritePalettes(); + gReservedSpritePaletteCount = 4; + break; + case 5: + sub_8031EE8(); + break; + case 6: + if (sub_8031C30(gHelperState)) + gHelperState = 0; + else + { + gHelperState++; + gReshowState--; + } + break; + case 7: + if (!LoadAppropiateBankSprite(0)) + gReshowState--; + break; + case 8: + if (!LoadAppropiateBankSprite(1)) + gReshowState--; + break; + case 9: + if (!LoadAppropiateBankSprite(2)) + gReshowState--; + break; + case 10: + if (!LoadAppropiateBankSprite(3)) + gReshowState--; + break; + case 11: + sub_807B184(0); + break; + case 12: + sub_807B184(1); + break; + case 13: + sub_807B184(2); + break; + case 14: + sub_807B184(3); + break; + case 15: + sub_807B508(0); + break; + case 16: + sub_807B508(1); + break; + case 17: + sub_807B508(2); + break; + case 18: + sub_807B508(3); + break; + case 19: + { + u8 opponentBank; + u16 species; + + sub_80327CC(); + + opponentBank = GetBankByPlayerAI(1); + species = GetMonData(&gEnemyParty[gBattlePartyID[opponentBank]], MON_DATA_SPECIES); + sub_8032984(opponentBank, species); + + if (IsDoubleBattle()) + { + opponentBank = GetBankByPlayerAI(3); + species = GetMonData(&gEnemyParty[gBattlePartyID[opponentBank]], MON_DATA_SPECIES); + sub_8032984(opponentBank, species); + } + sub_802E3E4(gActionSelectionCursor[gBankInMenu], 0); + } + break; + default: + SetHBlankCallback(sub_800FCD4); + SetVBlankCallback(sub_800FCFC); + sub_807B06C(); + BeginHardwarePaletteFade(0xFF, 0, 0x10, 0, 1); + gPaletteFade.bufferTransferDisabled = 0; + SetMainCallback2(sub_800F808); + break; + } + gReshowState++; +} + +static void sub_807B06C(void) +{ + struct BGCntrlBitfield *regBgcnt1, *regBgcnt2; + + sub_800D6D4(); + + regBgcnt1 = (void*)(®_BG1CNT); + regBgcnt1->charBaseBlock = 0; + + regBgcnt2 = (void*)(®_BG2CNT); + regBgcnt2->charBaseBlock = 0; +} + +static bool8 LoadAppropiateBankSprite(u8 bank) +{ + if (bank < gNoOfAllBanks) + { + if (GetBankSide(bank)) + { + if (!ewram17800[bank].substituteSprite) + BattleLoadOpponentMonSprite(&gEnemyParty[gBattlePartyID[bank]], bank); + else + BattleLoadSubstituteSprite(bank, 0); + } + else if (gBattleTypeFlags & BATTLE_TYPE_SAFARI && bank == 0) + LoadPlayerTrainerBankSprite(gSaveBlock2.playerGender, 0); + else if (gBattleTypeFlags & BATTLE_TYPE_WALLY_TUTORIAL && bank == 0) + LoadPlayerTrainerBankSprite(2, 0); + else if (!ewram17800[bank].substituteSprite) + BattleLoadPlayerMonSprite(&gPlayerParty[gBattlePartyID[bank]], bank); + else + BattleLoadSubstituteSprite(bank, 0); + + gHelperState = 0; + } + return 1; +} + +static void sub_807B184(u8 bank) +{ + if (bank < gNoOfAllBanks) + { + u8 posY; + + if (ewram17800[bank].substituteSprite) + posY = sub_8077F7C(bank); + else + posY = sub_8077F68(bank); + if (GetBankSide(bank)) + { + if (GetMonData(&gEnemyParty[gBattlePartyID[bank]], MON_DATA_HP) == 0) + return; + GetMonSpriteTemplate_803C56C(GetMonData(&gEnemyParty[gBattlePartyID[bank]], MON_DATA_SPECIES), GetBankIdentity(bank)); + gObjectBankIDs[bank] = CreateSprite(&gUnknown_02024E8C, sub_8077ABC(bank, 2), posY, sub_8079E90(bank)); + gSprites[gObjectBankIDs[bank]].oam.paletteNum = bank; + gSprites[gObjectBankIDs[bank]].callback = SpriteCallbackDummy; + gSprites[gObjectBankIDs[bank]].data0 = bank; + gSprites[gObjectBankIDs[bank]].data2 = GetMonData(&gEnemyParty[gBattlePartyID[bank]], MON_DATA_SPECIES); + StartSpriteAnim(&gSprites[gObjectBankIDs[bank]], gBattleMonForms[bank]); + } + else if (gBattleTypeFlags & BATTLE_TYPE_SAFARI && bank == 0) + { + GetMonSpriteTemplate_803C5A0(gSaveBlock2.playerGender, GetBankIdentity(0)); + gObjectBankIDs[bank] = CreateSprite(&gUnknown_02024E8C, 0x50, + (8 - gTrainerBackPicCoords[gSaveBlock2.playerGender].coords) * 4 + 80, + sub_8079E90(0)); + gSprites[gObjectBankIDs[bank]].oam.paletteNum = bank; + gSprites[gObjectBankIDs[bank]].callback = SpriteCallbackDummy; + gSprites[gObjectBankIDs[bank]].data0 = bank; + } + else if (gBattleTypeFlags & BATTLE_TYPE_WALLY_TUTORIAL && bank == 0) + { + GetMonSpriteTemplate_803C5A0(2, GetBankIdentity(0)); + gObjectBankIDs[bank] = CreateSprite(&gUnknown_02024E8C, 0x50, + (8 - gTrainerBackPicCoords[2].coords) * 4 + 80, + sub_8079E90(0)); + gSprites[gObjectBankIDs[bank]].oam.paletteNum = bank; + gSprites[gObjectBankIDs[bank]].callback = SpriteCallbackDummy; + gSprites[gObjectBankIDs[bank]].data0 = bank; + } + else + { + if (GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_HP) == 0) + return; + GetMonSpriteTemplate_803C56C(GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_SPECIES), GetBankIdentity(bank)); + gObjectBankIDs[bank] = CreateSprite(&gUnknown_02024E8C, sub_8077ABC(bank, 2), posY, sub_8079E90(bank)); + gSprites[gObjectBankIDs[bank]].oam.paletteNum = bank; + gSprites[gObjectBankIDs[bank]].callback = SpriteCallbackDummy; + gSprites[gObjectBankIDs[bank]].data0 = bank; + gSprites[gObjectBankIDs[bank]].data2 = GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_SPECIES); + StartSpriteAnim(&gSprites[gObjectBankIDs[bank]], gBattleMonForms[bank]); + } + gSprites[gObjectBankIDs[bank]].invisible = ewram17800[bank].invisible; + } +} + +static void sub_807B508(u8 bank) +{ + if (bank < gNoOfAllBanks) + { + u8 healthboxID; + if (gBattleTypeFlags & BATTLE_TYPE_SAFARI && bank == 0) + healthboxID = battle_make_oam_safari_battle(); + else if (gBattleTypeFlags & BATTLE_TYPE_WALLY_TUTORIAL && bank == 0) + return; + else + healthboxID = battle_make_oam_normal_battle(bank); + gHealthboxIDs[bank] = healthboxID; + sub_8043F44(bank); + sub_8043DFC(healthboxID); + if (GetBankSide(bank)) + sub_8045A5C(gHealthboxIDs[bank], &gEnemyParty[gBattlePartyID[bank]], 0); + else if (gBattleTypeFlags & BATTLE_TYPE_SAFARI) + sub_8045A5C(gHealthboxIDs[bank], &gPlayerParty[gBattlePartyID[bank]], 10); + else + sub_8045A5C(gHealthboxIDs[bank], &gPlayerParty[gBattlePartyID[bank]], 0); + if (GetBankIdentity(bank) == 3 || GetBankIdentity(bank) == 2) + nullsub_11(gHealthboxIDs[bank], 1); + else + nullsub_11(gHealthboxIDs[bank], 0); + if (GetBankSide(bank)) + { + if (GetMonData(&gEnemyParty[gBattlePartyID[bank]], MON_DATA_HP) == 0) + sub_8043DB0(healthboxID); + } + else if (!(gBattleTypeFlags & BATTLE_TYPE_SAFARI)) + { + if (GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_HP) == 0) + sub_8043DB0(healthboxID); + } + } +} diff --git a/src/smokescreen.c b/src/battle/smokescreen.c similarity index 100% rename from src/smokescreen.c rename to src/battle/smokescreen.c diff --git a/src/battle_6.c b/src/battle_6.c deleted file mode 100644 index 9ea3f240a..000000000 --- a/src/battle_6.c +++ /dev/null @@ -1,1507 +0,0 @@ -#include "global.h" -#include "battle.h" -#include "battle_interface.h" -#include "battle_message.h" -#include "data2.h" -#include "menu_cursor.h" -#include "palette.h" -#include "pokemon.h" -#include "rom3.h" -#include "songs.h" -#include "sound.h" -#include "sprite.h" -#include "string_util.h" -#include "task.h" -#include "text.h" -#include "util.h" - -//Possibly PokemonSubstruct1 -struct UnknownStruct3 -{ - u16 moves[4]; - u8 pp[4]; - u8 ppBonuses; -}; - -extern u16 gUnknown_030042A4; -extern u16 gUnknown_030042A0; - -extern struct Window gUnknown_03004210; - -extern void (*gBattleBankFunc[])(void); - -extern u8 gActiveBank; -extern u8 gActionSelectionCursor[]; -extern u8 gDisplayedStringBattle[]; -extern u8 gMoveSelectionCursor[]; -extern u8 gBattleBufferA[][0x200]; -extern u8 gBankInMenu; -extern u16 gBattlePartyID[]; -extern u8 gHealthboxIDs[]; -extern u8 gDoingBattleAnim; -extern u8 gObjectBankIDs[]; -extern u16 gBattleTypeFlags; -extern u8 gBattleOutcome; -extern void (*gAnimScriptCallback)(void); -extern bool8 gAnimScriptActive; -extern u16 gMovePowerMoveAnim; -extern u32 gMoveDmgMoveAnim; -extern u8 gHappinessMoveAnim; -extern u16 gWeatherMoveAnim; -extern u32 *gDisableStructMoveAnim; -extern u32 gPID_perBank[]; -extern u8 gBattleMonForms[]; -extern u16 gUnknown_02024DE8; -extern u8 gUnknown_02024E68[]; -extern struct SpriteTemplate gUnknown_02024E8C; -extern u8 gUnknown_0202F7C4; -extern u8 gUnknown_02038470[]; -extern u16 gUnknown_030041B0; -extern u16 gUnknown_030041B4; -extern u16 gUnknown_030041B8; -extern u16 gUnknown_03004280; -extern u16 gUnknown_03004288; -extern u16 gUnknown_030042A4; -extern u16 gUnknown_030042C0; -extern u8 gUnknown_03004344; -extern u8 gUnknown_0300434C[]; - -extern const u8 gUnknown_08400CA8[]; -extern const u8 gUnknown_08400CF3[]; -extern const u8 gUnknown_08400D38[]; - -#if ENGLISH -#define SUB_803037C_TILE_DATA_OFFSET 440 -#elif GERMAN -#define SUB_803037C_TILE_DATA_OFFSET 444 -#endif - -extern void sub_802C68C(void); -extern void sub_802E1B0(void); -extern void sub_802E3B4(); -extern void sub_802E220(); -extern void sub_802E2D4(); -extern void sub_802E004(void); -extern void sub_802DF30(void); -extern void sub_80325B8(void); -extern void PlayerBufferExecCompleted(void); -extern void bx_t1_healthbar_update(void); -extern void nullsub_91(void); -extern void sub_802D924(u8); -extern void sub_802E434(void); -extern bool8 mplay_80342A4(u8); -extern void move_anim_start_t2_for_situation(); -extern void bx_blink_t1(void); -extern void sub_8047858(); -extern u8 GetBankSide(u8); -extern void sub_80E43C0(); -extern void oamt_add_pos2_onto_pos1(); -extern void sub_8078B34(struct Sprite *); -extern void oamt_set_x3A_32(); -extern void sub_80318FC(); -extern bool8 IsDoubleBattle(void); -extern void sub_802D500(void); -extern void dp11b_obj_free(); -extern bool8 sub_8078874(u8); -extern bool8 move_anim_start_t3(); -extern void sub_802E460(void); -extern void b_link_standby_message(void); -extern void sub_802D18C(void); -extern void sub_802DF18(void); -extern void BufferStringBattle(); -extern void sub_80326EC(); -extern void ExecuteMoveAnim(); -extern void sub_8031F24(void); -extern void sub_80324BC(); -extern u8 sub_8031720(); -extern void bx_wait_t1(void); -extern u8 GetBankByPlayerAI(u8); -extern void sub_802DE10(void); -extern void sub_80105EC(struct Sprite *); -extern void sub_802D274(void); -extern void sub_802D23C(void); -extern u8 GetBankIdentity(u8); -extern void sub_8031AF4(); -extern void sub_80313A0(struct Sprite *); -extern void sub_802D204(void); -extern u8 sub_8079E90(); -extern void sub_802DEAC(void); -extern void sub_80312F0(struct Sprite *); -extern u8 sub_8077ABC(); -extern u8 sub_8077F68(); -extern u8 sub_8046400(); -extern void sub_802D798(void); -extern void bx_0802E404(void); - -u32 dp01_getattr_by_ch1_for_player_pokemon_(u8, u8 *); -void dp01_setattr_by_ch1_for_player_pokemon(u8); -void sub_802F934(u8, u8); -void sub_802FB2C(void); -void sub_8030190(void); -void sub_80304A8(void); -void sub_8030E38(struct Sprite *); -void task05_08033660(u8); -void sub_8031064(void); - -void PlayerHandleGetAttributes(void) -{ - u8 unkData[0x100]; - u32 offset = 0; - u8 r4; - s32 i; - - if (gBattleBufferA[gActiveBank][2] == 0) - { - offset += dp01_getattr_by_ch1_for_player_pokemon_(gBattlePartyID[gActiveBank], unkData); - } - else - { - r4 = gBattleBufferA[gActiveBank][2]; - for (i = 0; i < 6; i++) - { - if (r4 & 1) - offset += dp01_getattr_by_ch1_for_player_pokemon_(i, unkData + offset); - r4 >>= 1; - } - } - dp01_build_cmdbuf_x1D_1D_numargs_varargs(1, offset, unkData); - PlayerBufferExecCompleted(); -} - -// Duplicate of dp01_getattr_by_ch1_for_player_pokemon -u32 dp01_getattr_by_ch1_for_player_pokemon_(u8 a, u8 *buffer) -{ - struct BattlePokemon battlePokemon; - struct UnknownStruct3 moveData; - u8 nickname[20]; - u8 *src; - s16 data16; - u32 data32; - s32 size = 0; - - switch (gBattleBufferA[gActiveBank][1]) - { - case 0: - battlePokemon.species = GetMonData(&gPlayerParty[a], MON_DATA_SPECIES); - battlePokemon.item = GetMonData(&gPlayerParty[a], MON_DATA_HELD_ITEM); - for (size = 0; size < 4; size++) - { - battlePokemon.moves[size] = GetMonData(&gPlayerParty[a], MON_DATA_MOVE1 + size); - battlePokemon.pp[size] = GetMonData(&gPlayerParty[a], MON_DATA_PP1 + size); - } - battlePokemon.ppBonuses = GetMonData(&gPlayerParty[a], MON_DATA_PP_BONUSES); - battlePokemon.friendship = GetMonData(&gPlayerParty[a], MON_DATA_FRIENDSHIP); - battlePokemon.experience = GetMonData(&gPlayerParty[a], MON_DATA_EXP); - battlePokemon.hpIV = GetMonData(&gPlayerParty[a], MON_DATA_HP_IV); - battlePokemon.attackIV = GetMonData(&gPlayerParty[a], MON_DATA_ATK_IV); - battlePokemon.defenseIV = GetMonData(&gPlayerParty[a], MON_DATA_DEF_IV); - battlePokemon.speedIV = GetMonData(&gPlayerParty[a], MON_DATA_SPD_IV); - battlePokemon.spAttackIV = GetMonData(&gPlayerParty[a], MON_DATA_SPATK_IV); - battlePokemon.spDefenseIV = GetMonData(&gPlayerParty[a], MON_DATA_SPDEF_IV); - battlePokemon.personality = GetMonData(&gPlayerParty[a], MON_DATA_PERSONALITY); - battlePokemon.status1 = GetMonData(&gPlayerParty[a], MON_DATA_STATUS); - battlePokemon.level = GetMonData(&gPlayerParty[a], MON_DATA_LEVEL); - battlePokemon.hp = GetMonData(&gPlayerParty[a], MON_DATA_HP); - battlePokemon.maxHP = GetMonData(&gPlayerParty[a], MON_DATA_MAX_HP); - battlePokemon.attack = GetMonData(&gPlayerParty[a], MON_DATA_ATK); - battlePokemon.defense = GetMonData(&gPlayerParty[a], MON_DATA_DEF); - battlePokemon.speed = GetMonData(&gPlayerParty[a], MON_DATA_SPD); - battlePokemon.spAttack = GetMonData(&gPlayerParty[a], MON_DATA_SPATK); - battlePokemon.spDefense = GetMonData(&gPlayerParty[a], MON_DATA_SPDEF); - battlePokemon.isEgg = GetMonData(&gPlayerParty[a], MON_DATA_IS_EGG); - battlePokemon.altAbility = GetMonData(&gPlayerParty[a], MON_DATA_ALT_ABILITY); - battlePokemon.otId = GetMonData(&gPlayerParty[a], MON_DATA_OT_ID); - GetMonData(&gPlayerParty[a], MON_DATA_NICKNAME, nickname); - StringCopy10(battlePokemon.nickname, nickname); - GetMonData(&gPlayerParty[a], MON_DATA_OT_NAME, battlePokemon.otName); - src = (u8 *)&battlePokemon; - for (size = 0; size < sizeof(battlePokemon); size++) - buffer[size] = src[size]; - break; - case 1: - data16 = GetMonData(&gPlayerParty[a], MON_DATA_SPECIES); - buffer[0] = data16; - buffer[1] = data16 >> 8; - size = 2; - break; - case 2: - data16 = GetMonData(&gPlayerParty[a], MON_DATA_HELD_ITEM); - buffer[0] = data16; - buffer[1] = data16 >> 8; - size = 2; - break; - case 3: - for (size = 0; size < 4; size++) - { - moveData.moves[size] = GetMonData(&gPlayerParty[a], MON_DATA_MOVE1 + size); - moveData.pp[size] = GetMonData(&gPlayerParty[a], MON_DATA_PP1 + size); - } - moveData.ppBonuses = GetMonData(&gPlayerParty[a], MON_DATA_PP_BONUSES); - src = (u8 *)&moveData; - for (size = 0; size < sizeof(moveData); size++) - buffer[size] = src[size]; - break; - case 4: - case 5: - case 6: - case 7: - data16 = GetMonData(&gPlayerParty[a], MON_DATA_MOVE1 + gBattleBufferA[gActiveBank][1] - 4); - buffer[0] = data16; - buffer[1] = data16 >> 8; - size = 2; - break; - case 8: - for (size = 0; size < 4; size++) - buffer[size] = GetMonData(&gPlayerParty[a], MON_DATA_PP1 + size); - buffer[size] = GetMonData(&gPlayerParty[a], MON_DATA_PP_BONUSES); - size++; - break; - case 9: - case 10: - case 11: - case 12: - buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_PP1 + gBattleBufferA[gActiveBank][1] - 9); - size = 1; - break; - case 17: - data32 = GetMonData(&gPlayerParty[a], MON_DATA_OT_ID); - buffer[0] = (data32 & 0x000000FF); - buffer[1] = (data32 & 0x0000FF00) >> 8; - buffer[2] = (data32 & 0x00FF0000) >> 16; - size = 3; - break; - case 18: - data32 = GetMonData(&gPlayerParty[a], MON_DATA_EXP); - buffer[0] = (data32 & 0x000000FF); - buffer[1] = (data32 & 0x0000FF00) >> 8; - buffer[2] = (data32 & 0x00FF0000) >> 16; - size = 3; - break; - case 19: - buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_HP_EV); - size = 1; - break; - case 20: - buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_ATK_EV); - size = 1; - break; - case 21: - buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_DEF_EV); - size = 1; - break; - case 22: - buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SPD_EV); - size = 1; - break; - case 23: - buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SPATK_EV); - size = 1; - break; - case 24: - buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SPDEF_EV); - size = 1; - break; - case 25: - buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_FRIENDSHIP); - size = 1; - break; - case 26: - buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_POKERUS); - size = 1; - break; - case 27: - buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_MET_LOCATION); - size = 1; - break; - case 28: - buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_MET_LEVEL); - size = 1; - break; - case 29: - buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_MET_GAME); - size = 1; - break; - case 30: - buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_POKEBALL); - size = 1; - break; - case 31: - buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_HP_IV); - buffer[1] = GetMonData(&gPlayerParty[a], MON_DATA_ATK_IV); - buffer[2] = GetMonData(&gPlayerParty[a], MON_DATA_DEF_IV); - buffer[3] = GetMonData(&gPlayerParty[a], MON_DATA_SPD_IV); - buffer[4] = GetMonData(&gPlayerParty[a], MON_DATA_SPATK_IV); - buffer[5] = GetMonData(&gPlayerParty[a], MON_DATA_SPDEF_IV); - size = 6; - break; - case 32: - buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_HP_IV); - size = 1; - break; - case 33: - buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_ATK_IV); - size = 1; - break; - case 34: - buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_DEF_IV); - size = 1; - break; - case 35: - buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SPD_IV); - size = 1; - break; - case 36: - buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SPATK_IV); - size = 1; - break; - case 37: - buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SPDEF_IV); - size = 1; - break; - case 38: - data32 = GetMonData(&gPlayerParty[a], MON_DATA_PERSONALITY); - buffer[0] = (data32 & 0x000000FF); - buffer[1] = (data32 & 0x0000FF00) >> 8; - buffer[2] = (data32 & 0x00FF0000) >> 16; - buffer[3] = (data32 & 0xFF000000) >> 24; - size = 4; - break; - case 39: - data16 = GetMonData(&gPlayerParty[a], MON_DATA_CHECKSUM); - buffer[0] = data16; - buffer[1] = data16 >> 8; - size = 2; - break; - case 40: - data32 = GetMonData(&gPlayerParty[a], MON_DATA_STATUS); - buffer[0] = (data32 & 0x000000FF); - buffer[1] = (data32 & 0x0000FF00) >> 8; - buffer[2] = (data32 & 0x00FF0000) >> 16; - buffer[3] = (data32 & 0xFF000000) >> 24; - size = 4; - break; - case 41: - buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_LEVEL); - size = 1; - break; - case 42: - data16 = GetMonData(&gPlayerParty[a], MON_DATA_HP); - buffer[0] = data16; - buffer[1] = data16 >> 8; - size = 2; - break; - case 43: - data16 = GetMonData(&gPlayerParty[a], MON_DATA_MAX_HP); - buffer[0] = data16; - buffer[1] = data16 >> 8; - size = 2; - break; - case 44: - data16 = GetMonData(&gPlayerParty[a], MON_DATA_ATK); - buffer[0] = data16; - buffer[1] = data16 >> 8; - size = 2; - break; - case 45: - data16 = GetMonData(&gPlayerParty[a], MON_DATA_DEF); - buffer[0] = data16; - buffer[1] = data16 >> 8; - size = 2; - break; - case 46: - data16 = GetMonData(&gPlayerParty[a], MON_DATA_SPD); - buffer[0] = data16; - buffer[1] = data16 >> 8; - size = 2; - break; - case 47: - data16 = GetMonData(&gPlayerParty[a], MON_DATA_SPATK); - buffer[0] = data16; - buffer[1] = data16 >> 8; - size = 2; - break; - case 48: - data16 = GetMonData(&gPlayerParty[a], MON_DATA_SPDEF); - buffer[0] = data16; - buffer[1] = data16 >> 8; - size = 2; - break; - case 49: - buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_COOL); - size = 1; - break; - case 50: - buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_BEAUTY); - size = 1; - break; - case 51: - buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_CUTE); - size = 1; - break; - case 52: - buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SMART); - size = 1; - break; - case 53: - buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_TOUGH); - size = 1; - break; - case 54: - buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SHEEN); - size = 1; - break; - case 55: - buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_COOL_RIBBON); - size = 1; - break; - case 56: - buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_BEAUTY_RIBBON); - size = 1; - break; - case 57: - buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_CUTE_RIBBON); - size = 1; - break; - case 58: - buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SMART_RIBBON); - size = 1; - break; - case 59: - buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_TOUGH_RIBBON); - size = 1; - break; - } - return size; -} - -void sub_802ECF0(void) -{ - struct BattlePokemon battleMon; // I think this is a BattlePokemon - u8 *src = (u8 *)&gPlayerParty[gBattlePartyID[gActiveBank]] + gBattleBufferA[gActiveBank][1]; - u8 *dst = (u8 *)&battleMon + gBattleBufferA[gActiveBank][1]; - u8 i; - - for (i = 0; i < gBattleBufferA[gActiveBank][2]; i++) - dst[i] = src[i]; - dp01_build_cmdbuf_x1D_1D_numargs_varargs(1, gBattleBufferA[gActiveBank][2], dst); - PlayerBufferExecCompleted(); -} - -void PlayerHandleSetAttributes(void) -{ - u8 r4; - u8 i; - - if (gBattleBufferA[gActiveBank][2] == 0) - { - dp01_setattr_by_ch1_for_player_pokemon(gBattlePartyID[gActiveBank]); - } - else - { - r4 = gBattleBufferA[gActiveBank][2]; - for (i = 0; i < 6; i++) - { - if (r4 & 1) - dp01_setattr_by_ch1_for_player_pokemon(i); - r4 >>= 1; - } - } - PlayerBufferExecCompleted(); -} - -// Duplicate of sub_811EC68 -void dp01_setattr_by_ch1_for_player_pokemon(u8 a) -{ - struct BattlePokemon *battlePokemon = (struct BattlePokemon *)&gBattleBufferA[gActiveBank][3]; - struct UnknownStruct3 *moveData = (struct UnknownStruct3 *)&gBattleBufferA[gActiveBank][3]; - s32 i; - - switch (gBattleBufferA[gActiveBank][1]) - { - case 0: - { - u8 iv; - - SetMonData(&gPlayerParty[a], MON_DATA_SPECIES, (u8 *)&battlePokemon->species); - SetMonData(&gPlayerParty[a], MON_DATA_HELD_ITEM, (u8 *)&battlePokemon->item); - for (i = 0; i < 4; i++) - { - SetMonData(&gPlayerParty[a], MON_DATA_MOVE1 + i, (u8 *)&battlePokemon->moves[i]); - SetMonData(&gPlayerParty[a], MON_DATA_PP1 + i, (u8 *)&battlePokemon->pp[i]); - } - SetMonData(&gPlayerParty[a], MON_DATA_PP_BONUSES, (u8 *)&battlePokemon->ppBonuses); - SetMonData(&gPlayerParty[a], MON_DATA_FRIENDSHIP, (u8 *)&battlePokemon->friendship); - SetMonData(&gPlayerParty[a], MON_DATA_EXP, (u8 *)&battlePokemon->experience); - iv = battlePokemon->hpIV; - SetMonData(&gPlayerParty[a], MON_DATA_HP_IV, (u8 *)&iv); - iv = battlePokemon->attackIV; - SetMonData(&gPlayerParty[a], MON_DATA_ATK_IV, (u8 *)&iv); - iv = battlePokemon->defenseIV; - SetMonData(&gPlayerParty[a], MON_DATA_DEF_IV, (u8 *)&iv); - iv = battlePokemon->speedIV; - SetMonData(&gPlayerParty[a], MON_DATA_SPD_IV, (u8 *)&iv); - iv = battlePokemon->spAttackIV; - SetMonData(&gPlayerParty[a], MON_DATA_SPATK_IV, (u8 *)&iv); - iv = battlePokemon->spDefenseIV; - SetMonData(&gPlayerParty[a], MON_DATA_SPDEF_IV, (u8 *)&iv); - SetMonData(&gPlayerParty[a], MON_DATA_PERSONALITY, (u8 *)&battlePokemon->personality); - SetMonData(&gPlayerParty[a], MON_DATA_STATUS, (u8 *)&battlePokemon->status1); - SetMonData(&gPlayerParty[a], MON_DATA_LEVEL, (u8 *)&battlePokemon->level); - SetMonData(&gPlayerParty[a], MON_DATA_HP, (u8 *)&battlePokemon->hp); - SetMonData(&gPlayerParty[a], MON_DATA_MAX_HP, (u8 *)&battlePokemon->maxHP); - SetMonData(&gPlayerParty[a], MON_DATA_ATK, (u8 *)&battlePokemon->attack); - SetMonData(&gPlayerParty[a], MON_DATA_DEF, (u8 *)&battlePokemon->defense); - SetMonData(&gPlayerParty[a], MON_DATA_SPD, (u8 *)&battlePokemon->speed); - SetMonData(&gPlayerParty[a], MON_DATA_SPATK, (u8 *)&battlePokemon->spAttack); - SetMonData(&gPlayerParty[a], MON_DATA_SPDEF, (u8 *)&battlePokemon->spDefense); - } - break; - case 1: - SetMonData(&gPlayerParty[a], MON_DATA_SPECIES, &gBattleBufferA[gActiveBank][3]); - break; - case 2: - SetMonData(&gPlayerParty[a], MON_DATA_HELD_ITEM, &gBattleBufferA[gActiveBank][3]); - break; - case 3: - for (i = 0; i < 4; i++) - { - SetMonData(&gPlayerParty[a], MON_DATA_MOVE1 + i, (u8 *)&moveData->moves[i]); - SetMonData(&gPlayerParty[a], MON_DATA_PP1 + i, (u8 *)&moveData->pp[i]); - } - SetMonData(&gPlayerParty[a], MON_DATA_PP_BONUSES, &moveData->ppBonuses); - break; - case 4: - case 5: - case 6: - case 7: - SetMonData(&gPlayerParty[a], MON_DATA_MOVE1 + gBattleBufferA[gActiveBank][1] - 4, &gBattleBufferA[gActiveBank][3]); - break; - case 8: - SetMonData(&gPlayerParty[a], MON_DATA_PP1, &gBattleBufferA[gActiveBank][3]); - SetMonData(&gPlayerParty[a], MON_DATA_PP2, &gBattleBufferA[gActiveBank][4]); - SetMonData(&gPlayerParty[a], MON_DATA_PP3, &gBattleBufferA[gActiveBank][5]); - SetMonData(&gPlayerParty[a], MON_DATA_PP4, &gBattleBufferA[gActiveBank][6]); - SetMonData(&gPlayerParty[a], MON_DATA_PP_BONUSES, &gBattleBufferA[gActiveBank][7]); - break; - case 9: - case 10: - case 11: - case 12: - SetMonData(&gPlayerParty[a], MON_DATA_PP1 + gBattleBufferA[gActiveBank][1] - 9, &gBattleBufferA[gActiveBank][3]); - break; - case 17: - SetMonData(&gPlayerParty[a], MON_DATA_OT_ID, &gBattleBufferA[gActiveBank][3]); - break; - case 18: - SetMonData(&gPlayerParty[a], MON_DATA_EXP, &gBattleBufferA[gActiveBank][3]); - break; - case 19: - SetMonData(&gPlayerParty[a], MON_DATA_HP_EV, &gBattleBufferA[gActiveBank][3]); - break; - case 20: - SetMonData(&gPlayerParty[a], MON_DATA_ATK_EV, &gBattleBufferA[gActiveBank][3]); - break; - case 21: - SetMonData(&gPlayerParty[a], MON_DATA_DEF_EV, &gBattleBufferA[gActiveBank][3]); - break; - case 22: - SetMonData(&gPlayerParty[a], MON_DATA_SPD_EV, &gBattleBufferA[gActiveBank][3]); - break; - case 23: - SetMonData(&gPlayerParty[a], MON_DATA_SPATK_EV, &gBattleBufferA[gActiveBank][3]); - break; - case 24: - SetMonData(&gPlayerParty[a], MON_DATA_SPDEF_EV, &gBattleBufferA[gActiveBank][3]); - break; - case 25: - SetMonData(&gPlayerParty[a], MON_DATA_FRIENDSHIP, &gBattleBufferA[gActiveBank][3]); - break; - case 26: - SetMonData(&gPlayerParty[a], MON_DATA_POKERUS, &gBattleBufferA[gActiveBank][3]); - break; - case 27: - SetMonData(&gPlayerParty[a], MON_DATA_MET_LOCATION, &gBattleBufferA[gActiveBank][3]); - break; - case 28: - SetMonData(&gPlayerParty[a], MON_DATA_MET_LEVEL, &gBattleBufferA[gActiveBank][3]); - break; - case 29: - SetMonData(&gPlayerParty[a], MON_DATA_MET_GAME, &gBattleBufferA[gActiveBank][3]); - break; - case 30: - SetMonData(&gPlayerParty[a], MON_DATA_POKEBALL, &gBattleBufferA[gActiveBank][3]); - break; - case 31: - SetMonData(&gPlayerParty[a], MON_DATA_HP_IV, &gBattleBufferA[gActiveBank][3]); - SetMonData(&gPlayerParty[a], MON_DATA_ATK_IV, &gBattleBufferA[gActiveBank][4]); - SetMonData(&gPlayerParty[a], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBank][5]); - SetMonData(&gPlayerParty[a], MON_DATA_SPD_IV, &gBattleBufferA[gActiveBank][6]); - SetMonData(&gPlayerParty[a], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBank][7]); - SetMonData(&gPlayerParty[a], MON_DATA_SPDEF_IV, &gBattleBufferA[gActiveBank][8]); - break; - case 32: - SetMonData(&gPlayerParty[a], MON_DATA_HP_IV, &gBattleBufferA[gActiveBank][3]); - break; - case 33: - SetMonData(&gPlayerParty[a], MON_DATA_ATK_IV, &gBattleBufferA[gActiveBank][3]); - break; - case 34: - SetMonData(&gPlayerParty[a], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBank][3]); - break; - case 35: - SetMonData(&gPlayerParty[a], MON_DATA_SPD_IV, &gBattleBufferA[gActiveBank][3]); - break; - case 36: - SetMonData(&gPlayerParty[a], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBank][3]); - break; - case 37: - SetMonData(&gPlayerParty[a], MON_DATA_SPDEF_IV, &gBattleBufferA[gActiveBank][3]); - break; - case 38: - SetMonData(&gPlayerParty[a], MON_DATA_PERSONALITY, &gBattleBufferA[gActiveBank][3]); - break; - case 39: - SetMonData(&gPlayerParty[a], MON_DATA_CHECKSUM, &gBattleBufferA[gActiveBank][3]); - break; - case 40: - SetMonData(&gPlayerParty[a], MON_DATA_STATUS, &gBattleBufferA[gActiveBank][3]); - break; - case 41: - SetMonData(&gPlayerParty[a], MON_DATA_LEVEL, &gBattleBufferA[gActiveBank][3]); - break; - case 42: - SetMonData(&gPlayerParty[a], MON_DATA_HP, &gBattleBufferA[gActiveBank][3]); - break; - case 43: - SetMonData(&gPlayerParty[a], MON_DATA_MAX_HP, &gBattleBufferA[gActiveBank][3]); - break; - case 44: - SetMonData(&gPlayerParty[a], MON_DATA_ATK, &gBattleBufferA[gActiveBank][3]); - break; - case 45: - SetMonData(&gPlayerParty[a], MON_DATA_DEF, &gBattleBufferA[gActiveBank][3]); - break; - case 46: - SetMonData(&gPlayerParty[a], MON_DATA_SPD, &gBattleBufferA[gActiveBank][3]); - break; - case 47: - SetMonData(&gPlayerParty[a], MON_DATA_SPATK, &gBattleBufferA[gActiveBank][3]); - break; - case 48: - SetMonData(&gPlayerParty[a], MON_DATA_SPDEF, &gBattleBufferA[gActiveBank][3]); - break; - case 49: - SetMonData(&gPlayerParty[a], MON_DATA_COOL, &gBattleBufferA[gActiveBank][3]); - break; - case 50: - SetMonData(&gPlayerParty[a], MON_DATA_BEAUTY, &gBattleBufferA[gActiveBank][3]); - break; - case 51: - SetMonData(&gPlayerParty[a], MON_DATA_CUTE, &gBattleBufferA[gActiveBank][3]); - break; - case 52: - SetMonData(&gPlayerParty[a], MON_DATA_SMART, &gBattleBufferA[gActiveBank][3]); - break; - case 53: - SetMonData(&gPlayerParty[a], MON_DATA_TOUGH, &gBattleBufferA[gActiveBank][3]); - break; - case 54: - SetMonData(&gPlayerParty[a], MON_DATA_SHEEN, &gBattleBufferA[gActiveBank][3]); - break; - case 55: - SetMonData(&gPlayerParty[a], MON_DATA_COOL_RIBBON, &gBattleBufferA[gActiveBank][3]); - break; - case 56: - SetMonData(&gPlayerParty[a], MON_DATA_BEAUTY_RIBBON, &gBattleBufferA[gActiveBank][3]); - break; - case 57: - SetMonData(&gPlayerParty[a], MON_DATA_CUTE_RIBBON, &gBattleBufferA[gActiveBank][3]); - break; - case 58: - SetMonData(&gPlayerParty[a], MON_DATA_SMART_RIBBON, &gBattleBufferA[gActiveBank][3]); - break; - case 59: - SetMonData(&gPlayerParty[a], MON_DATA_TOUGH_RIBBON, &gBattleBufferA[gActiveBank][3]); - break; - } - sub_80324F8(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); -} - -void sub_802F7CC(void) -{ - u8 *dst = (u8 *)&gPlayerParty[gBattlePartyID[gActiveBank]] + gBattleBufferA[gActiveBank][1]; - u8 i; - - for (i = 0; i < gBattleBufferA[gActiveBank][2]; i++) - dst[i] = gBattleBufferA[gActiveBank][3 + i]; - PlayerBufferExecCompleted(); -} - -void PlayerHandleLoadPokeSprite(void) -{ - sub_80318FC(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); - gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = gActiveBank; - gBattleBankFunc[gActiveBank] = bx_0802E404; -} - -void PlayerHandleSendOutPoke(void) -{ - sub_8032AA8(gActiveBank, gBattleBufferA[gActiveBank][2]); - gBattlePartyID[gActiveBank] = gBattleBufferA[gActiveBank][1]; - sub_80318FC(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); - gActionSelectionCursor[gActiveBank] = 0; - gMoveSelectionCursor[gActiveBank] = 0; - sub_802F934(gActiveBank, gBattleBufferA[gActiveBank][2]); - gBattleBankFunc[gActiveBank] = sub_802D798; -} - -void sub_802F934(u8 bank, u8 b) -{ - u16 species; - - sub_8032AA8(bank, b); - gBattlePartyID[bank] = gBattleBufferA[bank][1]; - species = GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_SPECIES); - gUnknown_0300434C[bank] = CreateInvisibleSpriteWithCallback(sub_80312F0); - GetMonSpriteTemplate_803C56C(species, GetBankIdentity(bank)); - gObjectBankIDs[bank] = CreateSprite( - &gUnknown_02024E8C, - sub_8077ABC(bank, 2), - sub_8077F68(bank), - sub_8079E90(bank)); - gSprites[gUnknown_0300434C[bank]].data1 = gObjectBankIDs[bank]; - gSprites[gObjectBankIDs[bank]].data0 = bank; - gSprites[gObjectBankIDs[bank]].data2 = species; - gSprites[gObjectBankIDs[bank]].oam.paletteNum = bank; - StartSpriteAnim(&gSprites[gObjectBankIDs[bank]], gBattleMonForms[bank]); - gSprites[gObjectBankIDs[bank]].invisible = TRUE; - gSprites[gObjectBankIDs[bank]].callback = SpriteCallbackDummy; - gSprites[gUnknown_0300434C[bank]].data0 = sub_8046400(0, 0xFF); -} - -void PlayerHandleReturnPokeToBall(void) -{ - if (gBattleBufferA[gActiveBank][1] == 0) - { - ewram17810[gActiveBank].unk4 = 0; - gBattleBankFunc[gActiveBank] = sub_802FB2C; - } - else - { - FreeSpriteOamMatrix(&gSprites[gObjectBankIDs[gActiveBank]]); - DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]); - sub_8043DB0(gHealthboxIDs[gActiveBank]); - PlayerBufferExecCompleted(); - } -} - -void sub_802FB2C(void) -{ - switch (ewram17810[gActiveBank].unk4) - { - case 0: - if (ewram17800[gActiveBank].unk0_2) - move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5); - ewram17810[gActiveBank].unk4 = 1; - break; - case 1: - if (!ewram17810[gActiveBank].unk0_6) - { - ewram17810[gActiveBank].unk4 = 0; - move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 1); - gBattleBankFunc[gActiveBank] = sub_802DEAC; - } - } -} - -void PlayerHandleTrainerThrow(void) -{ - s16 r7; - - if (gBattleTypeFlags & BATTLE_TYPE_MULTI) - { - if (GetBankIdentity(gActiveBank) & 2) - r7 = 16; - else - r7 = -16; - } - else - { - r7 = 0; - } - sub_8031AF4(gSaveBlock2.playerGender, gActiveBank); - GetMonSpriteTemplate_803C5A0(gSaveBlock2.playerGender, GetBankIdentity(gActiveBank)); - gObjectBankIDs[gActiveBank] = CreateSprite( - &gUnknown_02024E8C, - r7 + 80, - (8 - gTrainerBackPicCoords[gSaveBlock2.playerGender].coords) * 4 + 80, - sub_8079E90(gActiveBank)); - gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = gActiveBank; - gSprites[gObjectBankIDs[gActiveBank]].pos2.x = 240; - gSprites[gObjectBankIDs[gActiveBank]].data0 = -2; - gSprites[gObjectBankIDs[gActiveBank]].callback = sub_80313A0; - gBattleBankFunc[gActiveBank] = sub_802D204; -} - -void PlayerHandleTrainerSlide(void) -{ - sub_8031AF4(gSaveBlock2.playerGender, gActiveBank); - GetMonSpriteTemplate_803C5A0(gSaveBlock2.playerGender, GetBankIdentity(gActiveBank)); - gObjectBankIDs[gActiveBank] = CreateSprite( - &gUnknown_02024E8C, - 80, - (8 - gTrainerBackPicCoords[gSaveBlock2.playerGender].coords) * 4 + 80, - 30); - gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = gActiveBank; - gSprites[gObjectBankIDs[gActiveBank]].pos2.x = -96; - gSprites[gObjectBankIDs[gActiveBank]].data0 = 2; - gSprites[gObjectBankIDs[gActiveBank]].callback = sub_80313A0; - gBattleBankFunc[gActiveBank] = sub_802D23C; -} - -void PlayerHandleTrainerSlideBack(void) -{ - oamt_add_pos2_onto_pos1(&gSprites[gObjectBankIDs[gActiveBank]]); - gSprites[gObjectBankIDs[gActiveBank]].data0 = 50; - gSprites[gObjectBankIDs[gActiveBank]].data2 = -40; - gSprites[gObjectBankIDs[gActiveBank]].data4 = gSprites[gObjectBankIDs[gActiveBank]].pos1.y; - gSprites[gObjectBankIDs[gActiveBank]].callback = sub_8078B34; - oamt_set_x3A_32(&gSprites[gObjectBankIDs[gActiveBank]], SpriteCallbackDummy); - StartSpriteAnim(&gSprites[gObjectBankIDs[gActiveBank]], 1); - gBattleBankFunc[gActiveBank] = sub_802D274; -} - -void sub_802FE7C(void) -{ - if (ewram17810[gActiveBank].unk4 == 0) - { - if (ewram17800[gActiveBank].unk0_2) - move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5); - ewram17810[gActiveBank].unk4++; - } - else - { - if (ewram17810[gActiveBank].unk0_6 == 0) - { - ewram17810[gActiveBank].unk4 = 0; - sub_80324F8(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); - PlaySE12WithPanning(SE_POKE_DEAD, -64); - gSprites[gObjectBankIDs[gActiveBank]].data1 = 0; - gSprites[gObjectBankIDs[gActiveBank]].data2 = 5; - gSprites[gObjectBankIDs[gActiveBank]].callback = sub_80105EC; - gBattleBankFunc[gActiveBank] = sub_802DE10; - } - } -} - -void sub_802FF60(void) -{ - BeginNormalPaletteFade(0xFFFFFFFF, 2, 0, 16, 0); - PlayerBufferExecCompleted(); -} - -void sub_802FF80(void) -{ - ewram17840.unk8 = 4; - gDoingBattleAnim = 1; - move_anim_start_t4(gActiveBank, gActiveBank, GetBankByPlayerAI(1), 3); - gBattleBankFunc[gActiveBank] = bx_wait_t1; -} - -void PlayerHandleBallThrow(void) -{ - u8 var = gBattleBufferA[gActiveBank][1]; - - ewram17840.unk8 = var; - gDoingBattleAnim = 1; - move_anim_start_t4(gActiveBank, gActiveBank, GetBankByPlayerAI(1), 3); - gBattleBankFunc[gActiveBank] = bx_wait_t1; -} - -void PlayerHandlePuase(void) -{ - u8 var = gBattleBufferA[gActiveBank][1]; - - // WTF is this?? - while (var != 0) - var--; - - PlayerBufferExecCompleted(); -} - -void PlayerHandleMoveAnimation(void) -{ - if (!mplay_80342A4(gActiveBank)) - { - u16 r0 = gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8); - - gUnknown_0202F7C4 = gBattleBufferA[gActiveBank][3]; - gMovePowerMoveAnim = gBattleBufferA[gActiveBank][4] | (gBattleBufferA[gActiveBank][5] << 8); - gMoveDmgMoveAnim = gBattleBufferA[gActiveBank][6] | (gBattleBufferA[gActiveBank][7] << 8) | (gBattleBufferA[gActiveBank][8] << 16) | (gBattleBufferA[gActiveBank][9] << 24); - gHappinessMoveAnim = gBattleBufferA[gActiveBank][10]; - gWeatherMoveAnim = gBattleBufferA[gActiveBank][12] | (gBattleBufferA[gActiveBank][13] << 8); - gDisableStructMoveAnim = (u32 *)&gBattleBufferA[gActiveBank][16]; - gPID_perBank[gActiveBank] = *gDisableStructMoveAnim; - if (sub_8031720(r0, gUnknown_0202F7C4) != 0) - { - // Dead code. sub_8031720 always returns 0. - PlayerBufferExecCompleted(); - } - else - { - ewram17810[gActiveBank].unk4 = 0; - gBattleBankFunc[gActiveBank] = sub_8030190; - } - } -} - -void sub_8030190(void) -{ - u16 r4 = gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8); - u8 r7 = gBattleBufferA[gActiveBank][11]; - - switch (ewram17810[gActiveBank].unk4) - { - case 0: - if (ewram17800[gActiveBank].unk0_2 == 1 && ewram17800[gActiveBank].unk0_3 == 0) - { - ewram17800[gActiveBank].unk0_3 = 1; - move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5); - } - ewram17810[gActiveBank].unk4 = 1; - break; - case 1: - if (ewram17810[gActiveBank].unk0_6 == 0) - { - sub_80326EC(0); - ExecuteMoveAnim(r4); - ewram17810[gActiveBank].unk4 = 2; - } - break; - case 2: - gAnimScriptCallback(); - if (!gAnimScriptActive) - { - sub_80326EC(1); - if (ewram17800[gActiveBank].unk0_2 == 1 && r7 < 2) - { - move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 6); - ewram17800[gActiveBank].unk0_3 = 0; - } - ewram17810[gActiveBank].unk4 = 3; - } - break; - case 3: - if (ewram17810[gActiveBank].unk0_6 == 0) - { - sub_8031F24(); - sub_80324BC(gActiveBank, gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8)); - ewram17810[gActiveBank].unk4 = 0; - PlayerBufferExecCompleted(); - } - break; - } -} - -void PlayerHandlePrintString(void) -{ - gUnknown_030042A4 = 0; - gUnknown_030042A0 = 0; - BufferStringBattle(*(u16 *)&gBattleBufferA[gActiveBank][2]); - sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 0x90, 2, 15); - gBattleBankFunc[gActiveBank] = sub_802DF18; -} - -void PlayerHandlePrintStringPlayerOnly(void) -{ - if (GetBankSide(gActiveBank) == 0) - PlayerHandlePrintString(); - else - PlayerBufferExecCompleted(); -} - -void sub_803037C(void) -{ - int r4; - - gUnknown_030042A4 = 0; - gUnknown_030042A0 = 160; - FillWindowRect(&gUnknown_03004210, 10, 2, 15, 27, 18); - FillWindowRect(&gUnknown_03004210, 10, 2, 35, 16, 38); - - gBattleBankFunc[gActiveBank] = sub_802C098; - - InitWindow(&gUnknown_03004210, gUnknown_08400CF3, 400, 18, 35); - sub_8002F44(&gUnknown_03004210); - sub_814A5C0(0, 0xFFFF, 12, 11679, 0); - - for (r4 = 0; r4 < 4; r4++) - nullsub_8(r4); - - sub_802E3E4(gActionSelectionCursor[gActiveBank], 0); - - StrCpyDecodeToDisplayedStringBattle((u8 *) gUnknown_08400CA8); - InitWindow(&gUnknown_03004210, gDisplayedStringBattle, SUB_803037C_TILE_DATA_OFFSET, 2, 35); - sub_8002F44(&gUnknown_03004210); -} - -void nullsub_42() -{ -} - -void sub_8030468(void) -{ - sub_814A5C0(0, 0xFFFF, 12, 0x2D9F, 0); - sub_80304A8(); - gBattleBankFunc[gActiveBank] = sub_802C68C; -} - -void sub_80304A8(void) -{ - gUnknown_030042A4 = 0; - gUnknown_030042A0 = 320; - sub_802E1B0(); - gUnknown_03004344 = 0xFF; - sub_802E3B4(gMoveSelectionCursor[gActiveBank], 0); - if (gBattleBufferA[gActiveBank][2] != 1) - { - InitWindow(&gUnknown_03004210, gUnknown_08400D38, 656, 23, 55); - sub_8002F44(&gUnknown_03004210); - } - sub_802E220(); - sub_802E2D4(); -} - -void PlayerHandleOpenBag(void) -{ - s32 i; - - BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); - gBattleBankFunc[gActiveBank] = sub_802E004; - gBankInMenu = gActiveBank; - for (i = 0; i < 3; i++) - gUnknown_02038470[i] = gBattleBufferA[gActiveBank][1 + i]; -} - -void sub_8030594(void) -{ - s32 i; - - gUnknown_0300434C[gActiveBank] = CreateTask(TaskDummy, 0xFF); - gTasks[gUnknown_0300434C[gActiveBank]].data[0] = gBattleBufferA[gActiveBank][1] & 0xF; - ewram[0x16054] = gBattleBufferA[gActiveBank][1] >> 4; - ewram[0x1609D] = gBattleBufferA[gActiveBank][2]; - ewram[0x160C0] = gBattleBufferA[gActiveBank][3]; - for (i = 0; i < 3; i++) - gUnknown_02038470[i] = gBattleBufferA[gActiveBank][4 + i]; - BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); - gBattleBankFunc[gActiveBank] = sub_802DF30; - gBankInMenu = gActiveBank; -} - -void sub_8030674(void) -{ - sub_80325B8(); - BeginNormalPaletteFade(0xFFFFFFFF, 2, 0, 16, 0); - PlayerBufferExecCompleted(); -} - -void PlayerHandleHealthBarUpdate(void) -{ - s16 r7; - - load_gfxc_health_bar(0); - r7 = gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8); - if (r7 != 0x7FFF) - { - u32 maxHP = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_MAX_HP); - u32 curHP = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_HP); - - sub_8043D84(gActiveBank, gHealthboxIDs[gActiveBank], maxHP, curHP, r7); - } - else - { - u32 maxHP = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_MAX_HP); - - sub_8043D84(gActiveBank, gHealthboxIDs[gActiveBank], maxHP, 0, r7); - sub_80440EC(gHealthboxIDs[gActiveBank], 0, 0); - } - gBattleBankFunc[gActiveBank] = bx_t1_healthbar_update; -} - -void PlayerHandleExpBarUpdate(void) -{ - u8 r7 = gBattleBufferA[gActiveBank][1]; - - if (GetMonData(&gPlayerParty[r7], MON_DATA_LEVEL) >= 100) - { - PlayerBufferExecCompleted(); - } - else - { - u16 r4; - u8 taskId; - - load_gfxc_health_bar(1); - GetMonData(&gPlayerParty[r7], MON_DATA_SPECIES); // unused return value - r4 = gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8); - taskId = CreateTask(sub_802D924, 10); - gTasks[taskId].data[0] = r7; - gTasks[taskId].data[1] = r4; - gTasks[taskId].data[2] = gActiveBank; - gBattleBankFunc[gActiveBank] = nullsub_91; - } -} - -void PlayerHandleStatusIconUpdate(void) -{ - if (!mplay_80342A4(gActiveBank)) - { - sub_8045A5C(gHealthboxIDs[gActiveBank], &gPlayerParty[gBattlePartyID[gActiveBank]], 9); - ewram17810[gActiveBank].unk0_4 = 0; - gBattleBankFunc[gActiveBank] = sub_802E434; - } -} - -void PlayerHandleStatusAnimation(void) -{ - if (!mplay_80342A4(gActiveBank)) - { - move_anim_start_t2_for_situation( - gBattleBufferA[gActiveBank][1], - gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8) | (gBattleBufferA[gActiveBank][4] << 16) | (gBattleBufferA[gActiveBank][5] << 24)); - gBattleBankFunc[gActiveBank] = sub_802E434; - } -} - -void PlayerHandleStatusXor(void) -{ - u8 val = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_STATUS) ^ gBattleBufferA[gActiveBank][1]; - - SetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_STATUS, &val); - PlayerBufferExecCompleted(); -} - -void sub_803097C(void) -{ - PlayerBufferExecCompleted(); -} - -void PlayerHandleDMATransfer(void) -{ - u32 val1 = gBattleBufferA[gActiveBank][1] - | (gBattleBufferA[gActiveBank][2] << 8) - | (gBattleBufferA[gActiveBank][3] << 16) - | (gBattleBufferA[gActiveBank][4] << 24); - u16 val2 = gBattleBufferA[gActiveBank][5] | (gBattleBufferA[gActiveBank][6] << 8); - - const u8 *src = &gBattleBufferA[gActiveBank][7]; - u8 *dst = (u8 *)val1; - u32 size = val2; - - while (1) - { - if (size <= 0x1000) - { - DmaCopy16(3, src, dst, size); - break; - } - DmaCopy16(3, src, dst, 0x1000); - src += 0x1000; - dst += 0x1000; - size -= 0x1000; - } - PlayerBufferExecCompleted(); -} - -void sub_8030A3C(void) -{ - PlayBGM(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8)); - PlayerBufferExecCompleted(); -} - -void sub_8030A6C(void) -{ - PlayerBufferExecCompleted(); -} - -void sub_8030A78(void) -{ - dp01_build_cmdbuf_x21_a_bb(1, 0, 0); - PlayerBufferExecCompleted(); -} - -void sub_8030A8C(void) -{ - dp01_build_cmdbuf_x22_a_three_bytes(1, 0, 0); - PlayerBufferExecCompleted(); -} - -void sub_8030AA0(void) -{ - dp01_build_cmdbuf_x23_aa_0(1, 0); - PlayerBufferExecCompleted(); -} - -void sub_8030AB4(void) -{ - dp01_build_cmdbuf_x24_aa_0(1, 0); - PlayerBufferExecCompleted(); -} - -void sub_8030AC8(void) -{ - gUnknown_020238C8.unk0_0 = 0; - PlayerBufferExecCompleted(); -} - -void sub_8030AE4(void) -{ - gUnknown_020238C8.unk0_0 = gBattleBufferA[gActiveBank][1]; - PlayerBufferExecCompleted(); -} - -void sub_8030B1C(void) -{ - gUnknown_020238C8.unk0_7 = 0; - PlayerBufferExecCompleted(); -} - -void sub_8030B34(void) -{ - gUnknown_020238C8.unk0_7 ^= 1; - PlayerBufferExecCompleted(); -} - -void PlayerHandleHitAnimation(void) -{ - if (gSprites[gObjectBankIDs[gActiveBank]].invisible == TRUE) - { - PlayerBufferExecCompleted(); - } - else - { - gDoingBattleAnim = 1; - gSprites[gObjectBankIDs[gActiveBank]].data1 = 0; - sub_8047858(gActiveBank); - gBattleBankFunc[gActiveBank] = bx_blink_t1; - } -} - -void sub_8030BCC(void) -{ - PlayerBufferExecCompleted(); -} - -void PlayerHandleEffectivenessSound(void) -{ - s8 pan; - - if (GetBankSide(gActiveBank) == 0) - pan = -64; - else - pan = 63; - PlaySE12WithPanning(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8), pan); - PlayerBufferExecCompleted(); -} - -void sub_8030C1C(void) -{ - PlayFanfare(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8)); - PlayerBufferExecCompleted(); -} - -void PlayerHandleFaintingCry(void) -{ - u16 species = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES); - - PlayCry3(species, -25, 5); - PlayerBufferExecCompleted(); -} - -void PlayerHandleIntroSlide(void) -{ - sub_80E43C0(gBattleBufferA[gActiveBank][1]); - gUnknown_02024DE8 |= 1; - PlayerBufferExecCompleted(); -} - -void PlayerHandleTrainerBallThrow(void) -{ - u8 paletteNum; - u8 taskId; - - oamt_add_pos2_onto_pos1(&gSprites[gObjectBankIDs[gActiveBank]]); - gSprites[gObjectBankIDs[gActiveBank]].data0 = 50; - gSprites[gObjectBankIDs[gActiveBank]].data2 = -40; - gSprites[gObjectBankIDs[gActiveBank]].data4 = gSprites[gObjectBankIDs[gActiveBank]].pos1.y; - gSprites[gObjectBankIDs[gActiveBank]].callback = sub_8078B34; - gSprites[gObjectBankIDs[gActiveBank]].data5 = gActiveBank; - oamt_set_x3A_32(&gSprites[gObjectBankIDs[gActiveBank]], sub_8030E38); - StartSpriteAnim(&gSprites[gObjectBankIDs[gActiveBank]], 1); - paletteNum = AllocSpritePalette(0xD6F8); - LoadCompressedPalette(gTrainerBackPicPaletteTable[gSaveBlock2.playerGender].data, 0x100 + paletteNum * 16, 32); - gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = paletteNum; - taskId = CreateTask(task05_08033660, 5); - gTasks[taskId].data[0] = gActiveBank; - if (ewram17810[gActiveBank].unk0_0) - gTasks[gUnknown_02024E68[gActiveBank]].func = sub_8044CA0; - ewram17810[4].unk9 |= 1; - gBattleBankFunc[gActiveBank] = nullsub_91; -} - -void sub_8030E38(struct Sprite *sprite) -{ - u8 r4 = sprite->data5; - - FreeSpriteOamMatrix(sprite); - FreeSpritePaletteByTag(GetSpritePaletteTagByPaletteNum(sprite->oam.paletteNum)); - DestroySprite(sprite); - sub_80318FC(&gPlayerParty[gBattlePartyID[r4]], r4); - StartSpriteAnim(&gSprites[gObjectBankIDs[r4]], 0); -} - -void task05_08033660(u8 taskId) -{ - if (gTasks[taskId].data[1] < 31) - { - gTasks[taskId].data[1]++; - } - else - { - u8 savedActiveBank = gActiveBank; - - gActiveBank = gTasks[taskId].data[0]; - if (!IsDoubleBattle() || (gBattleTypeFlags & 0x40)) - { - gBattleBufferA[gActiveBank][1] = gBattlePartyID[gActiveBank]; - sub_802F934(gActiveBank, 0); - } - else - { - gBattleBufferA[gActiveBank][1] = gBattlePartyID[gActiveBank]; - sub_802F934(gActiveBank, 0); - gActiveBank ^= 2; - gBattleBufferA[gActiveBank][1] = gBattlePartyID[gActiveBank]; - sub_80318FC(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); - sub_802F934(gActiveBank, 0); - gActiveBank ^= 2; - } - gBattleBankFunc[gActiveBank] = sub_802D500; - gActiveBank = savedActiveBank; - DestroyTask(taskId); - } -} - -void sub_8030FAC(void) -{ - if (gBattleBufferA[gActiveBank][1] != 0 && GetBankSide(gActiveBank) == 0) - { - PlayerBufferExecCompleted(); - } - else - { - ewram17810[gActiveBank].unk0_0 = 1; - gUnknown_02024E68[gActiveBank] = sub_8044804(gActiveBank, (struct BattleInterfaceStruct2 *)&gBattleBufferA[gActiveBank][4], gBattleBufferA[gActiveBank][1], gBattleBufferA[gActiveBank][2]); - ewram17810[gActiveBank].unk5 = 0; - if (gBattleBufferA[gActiveBank][2] != 0) - ewram17810[gActiveBank].unk5 = 0x5D; - gBattleBankFunc[gActiveBank] = sub_8031064; - } -} - -void sub_8031064(void) -{ - if (ewram17810[gActiveBank].unk5++ > 0x5C) - { - ewram17810[gActiveBank].unk5 = 0; - PlayerBufferExecCompleted(); - } -} - -void sub_80310A4(void) -{ - if (ewram17810[gActiveBank].unk0_0) - gTasks[gUnknown_02024E68[gActiveBank]].func = sub_8044CA0; - PlayerBufferExecCompleted(); -} - -void sub_80310F0(void) -{ - dp11b_obj_free(gActiveBank, 1); - dp11b_obj_free(gActiveBank, 0); - PlayerBufferExecCompleted(); -} - -void PlayerHandleSpriteInvisibility(void) -{ - if (sub_8078874(gActiveBank)) - { - gSprites[gObjectBankIDs[gActiveBank]].invisible = gBattleBufferA[gActiveBank][1]; - sub_8031F88(gActiveBank); - } - PlayerBufferExecCompleted(); -} - -void PlayerHandleBattleAnimation(void) -{ - if (!mplay_80342A4(gActiveBank)) - { - u8 val2 = gBattleBufferA[gActiveBank][1]; - u16 val = gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8); - - if (move_anim_start_t3(gActiveBank, gActiveBank, gActiveBank, val2, val)) - PlayerBufferExecCompleted(); - else - gBattleBankFunc[gActiveBank] = sub_802E460; - } -} - -void PlayerHandleLinkStandbyMsg(void) -{ - switch (gBattleBufferA[gActiveBank][1]) - { - case 0: - b_link_standby_message(); - // fall through - case 1: - dp11b_obj_free(gActiveBank, 1); - dp11b_obj_free(gActiveBank, 0); - break; - case 2: - b_link_standby_message(); - break; - } - PlayerBufferExecCompleted(); -} - -void PlayerHandleResetActionMoveSelection(void) -{ - switch (gBattleBufferA[gActiveBank][1]) - { - case 0: - gActionSelectionCursor[gActiveBank] = 0; - gMoveSelectionCursor[gActiveBank] = 0; - break; - case 1: - gActionSelectionCursor[gActiveBank] = 0; - break; - case 2: - gMoveSelectionCursor[gActiveBank] = 0; - break; - } - PlayerBufferExecCompleted(); -} - -void sub_80312A0(void) -{ - gBattleOutcome = gBattleBufferA[gActiveBank][1]; - FadeOutMapMusic(5); - BeginFastPaletteFade(3); - PlayerBufferExecCompleted(); - gBattleBankFunc[gActiveBank] = sub_802D18C; -} - -void nullsub_43(void) -{ -} diff --git a/src/battle_anim_81258BC.c b/src/battle_anim_81258BC.c deleted file mode 100644 index 5bdbb4946..000000000 --- a/src/battle_anim_81258BC.c +++ /dev/null @@ -1,50 +0,0 @@ -#include "global.h" -#include "battle_anim_81258BC.h" -#include "battle.h" -#include "battle_message.h" -#include "menu_cursor.h" -#include "text.h" - -extern struct Window gUnknown_03004210; -extern u8 gDisplayedStringBattle[]; -extern u8 gActionSelectionCursor[]; - -extern const u8 gUnknown_08400CBB[]; -extern u8 gActiveBank; -extern const u8 gUnknown_08400D15[]; - -extern void *gBattleBankFunc[]; -extern u16 gUnknown_030042A0; -extern u16 gUnknown_030042A4; - -#if ENGLISH -#define SUB_812BB10_TILE_DATA_OFFSET 440 -#elif GERMAN -#define SUB_812BB10_TILE_DATA_OFFSET 444 -#endif - -void sub_812BB10(void) { - int i; - - gUnknown_030042A4 = 0; - gUnknown_030042A0 = 160; - gUnknown_03004210.paletteNum = 0; - FillWindowRect_DefaultPalette(&gUnknown_03004210, 10, 2, 15, 27, 18); - FillWindowRect_DefaultPalette(&gUnknown_03004210, 10, 2, 35, 16, 36); - gBattleBankFunc[gActiveBank] = bx_battle_menu_t6_2; - - InitWindow(&gUnknown_03004210, gUnknown_08400D15, 400, 18, 35); - sub_8002F44(&gUnknown_03004210); - sub_814A5C0(0, 0xFFFF, 12, 11679, 0); - - for (i = 0; i < 4; i++) - { - nullsub_8(i); - } - - sub_802E3E4(gActionSelectionCursor[gActiveBank], 0); - StrCpyDecodeToDisplayedStringBattle((u8 *) gUnknown_08400CBB); - - InitWindow(&gUnknown_03004210, gDisplayedStringBattle, SUB_812BB10_TILE_DATA_OFFSET, 2, 35); - sub_8002F44(&gUnknown_03004210); -} \ No newline at end of file diff --git a/src/battle_records.c b/src/battle_records.c deleted file mode 100644 index cf86787f0..000000000 --- a/src/battle_records.c +++ /dev/null @@ -1,22 +0,0 @@ -#include "global.h" -#include "battle_records.h" -#include "menu.h" -#include "strings2.h" - -void ShowLinkBattleRecords(void) { - s32 i; - MenuDrawTextWindow(1, 0, 28, 18); - sub_8072BD8((u8 *) gOtherText_BattleResults, 0, 1, 240); - - PrintLinkBattleWinsLossesDraws(gSaveBlock1.linkBattleRecords); -#if ENGLISH - MenuPrint(gOtherText_WinLoseDraw, 12, 6); -#elif GERMAN - MenuPrint_PixelCoords((u8 *) gOtherText_WinLoseDraw, 88, 48, 1); -#endif - - for (i = 0; i < 5; i++) - { - PrintLinkBattleRecord(gSaveBlock1.linkBattleRecords[i], 6 + (i + 1) * 2); - } -} diff --git a/src/cable_club.c b/src/cable_club.c deleted file mode 100644 index 70b372205..000000000 --- a/src/cable_club.c +++ /dev/null @@ -1,318 +0,0 @@ -#include "global.h" -#include "cable_club.h" -#include "field_message_box.h" -#include "link.h" -#include "main.h" -#include "script.h" -#include "songs.h" -#include "sound.h" -#include "string_util.h" -#include "task.h" -#include "text.h" -#include "trainer_card.h" - -extern u16 gScriptResult; -extern struct TrainerCard gTrainerCards[4]; -extern struct LinkPlayer gLinkPlayers[]; - -extern u8 gUnknown_03004860; -extern u8 gFieldLinkPlayerCount; - -extern u8 gUnknown_081A4932[]; -extern const u8 gUnknown_081A4975[]; - -static void sub_80830E4(u8 taskId); -static void sub_8083288(u8 taskId); -static void sub_8083314(u8 taskId); - -void sub_808303C(u8 taskId) { - s32 linkPlayerCount; - s16 *taskData; - - taskData = gTasks[taskId].data; - - linkPlayerCount = GetLinkPlayerCount_2(); - - if (sub_8082E28(taskId) == 1 || - sub_8082EB8(taskId) == 1 || - sub_8082DF4(taskId) == 1) - { - return; - } - - sub_8082D60(taskId, linkPlayerCount); - - if (!(gMain.newKeys & A_BUTTON)) - { - return; - } - -#if ENGLISH - if (linkPlayerCount < taskData[1]) - { - return; - } - - sub_80081C8(linkPlayerCount); - sub_8082D4C(); - ConvertIntToDecimalStringN(gStringVar1, linkPlayerCount, STR_CONV_MODE_LEFT_ALIGN, 1); // r5 - ShowFieldAutoScrollMessage((u8 *) gUnknown_081A4975); - gTasks[taskId].func = sub_80830E4; -#elif GERMAN - if ((gLinkType == 0x2255 && (u32) linkPlayerCount > 1) || - (gLinkType != 0x2255 && taskData[1] <= linkPlayerCount)) - { - sub_80081C8(linkPlayerCount); - sub_8082D4C(); - ConvertIntToDecimalStringN(gStringVar1, linkPlayerCount, STR_CONV_MODE_LEFT_ALIGN, 1); // r5 - ShowFieldAutoScrollMessage((u8 *) gUnknown_081A4975); - gTasks[taskId].func = sub_80830E4; - } -#endif -} - -#ifdef NONMATCHING -static void sub_80830E4(u8 taskId) { - if (sub_8082E28(taskId) == 1 || - sub_8082EB8(taskId) == 1 || - sub_8082DF4(taskId) == 1 || - GetFieldMessageBoxMode()) - { - return; - } - - if (sub_800820C() == GetLinkPlayerCount_2() && - !(gMain.heldKeys & B_BUTTON)) - { - ShowFieldAutoScrollMessage(gUnknown_081A4932); - gTasks[taskId].func = sub_8082FEC; - return; - } - - if (gMain.heldKeys & A_BUTTON) - { - PlaySE(SE_SELECT); - sub_8007F4C(); - gTasks[(u32) taskId].func = sub_8083188; - } -} -#else -__attribute__((naked)) -static void sub_80830E4(u8 taskId) { - asm(".syntax unified\n\ - push {r4-r6,lr}\n\ - lsls r0, 24\n\ - lsrs r5, r0, 24\n\ - adds r6, r5, 0\n\ - adds r0, r5, 0\n\ - bl sub_8082E28\n\ - cmp r0, 0x1\n\ - beq _08083178\n\ - adds r0, r5, 0\n\ - bl sub_8082EB8\n\ - cmp r0, 0x1\n\ - beq _08083178\n\ - adds r0, r5, 0\n\ - bl sub_8082DF4\n\ - cmp r0, 0x1\n\ - beq _08083178\n\ - bl GetFieldMessageBoxMode\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - bne _08083178\n\ - bl sub_800820C\n\ - adds r4, r0, 0\n\ - bl GetLinkPlayerCount_2\n\ - lsls r4, 24\n\ - lsls r0, 24\n\ - cmp r4, r0\n\ - bne _08083132\n\ - ldr r0, _08083148 @ =gMain\n\ - ldrh r1, [r0, 0x2C]\n\ - movs r0, 0x2\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _08083158\n\ -_08083132:\n\ - ldr r0, _0808314C @ =gUnknown_081A4932\n\ - bl ShowFieldAutoScrollMessage\n\ - ldr r1, _08083150 @ =gTasks\n\ - lsls r0, r5, 2\n\ - adds r0, r5\n\ - lsls r0, 3\n\ - adds r0, r1\n\ - ldr r1, _08083154 @ =sub_8082FEC\n\ - str r1, [r0]\n\ - b _08083178\n\ - .align 2, 0\n\ -_08083148: .4byte gMain\n\ -_0808314C: .4byte gUnknown_081A4932\n\ -_08083150: .4byte gTasks\n\ -_08083154: .4byte sub_8082FEC\n\ -_08083158:\n\ - movs r0, 0x1\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _08083178\n\ - movs r0, 0x5\n\ - bl PlaySE\n\ - bl sub_8007F4C\n\ - ldr r0, _08083180 @ =gTasks\n\ - lsls r1, r6, 2\n\ - adds r1, r6\n\ - lsls r1, 3\n\ - adds r1, r0\n\ - ldr r0, _08083184 @ =sub_8083188\n\ - str r0, [r1]\n\ -_08083178:\n\ - pop {r4-r6}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_08083180: .4byte gTasks\n\ -_08083184: .4byte sub_8083188\n\ - .syntax divided\n"); -} -#endif - -void sub_8083188(u8 taskId) { - u8 local1, local2; - u16 *result; - - local1 = gTasks[taskId].data[1]; - local2 = gTasks[taskId].data[2]; - - - if (sub_8082DF4(taskId) == 1 || - sub_8083444(taskId) == 1) - { - return; - } - - if (GetLinkPlayerCount_2() != sub_800820C()) - { - gTasks[taskId].func = sub_8083418; - return; - } - - result = &gScriptResult; - *result = sub_8082D9C(local1, local2); - if (*result) - { - gTasks[taskId].func = sub_8083288; - } -} - -void sub_80831F8(u8 taskId) { - u8 local1, local2; - u16 *result; - - local1 = gTasks[taskId].data[1]; - local2 = gTasks[taskId].data[2]; - - if (sub_8082E28(taskId) == 1 || - sub_8082DF4(taskId) == 1) - { - return; - } - - result = &gScriptResult; - *result = sub_8082D9C(local1, local2); - if (*result == 0) - { - return; - } - - - if (*result == 3) - { - sub_800832C(); - HideFieldMessageBox(); - gTasks[taskId].func = sub_80833C4; - } - else - { - gFieldLinkPlayerCount = GetLinkPlayerCount_2(); - gUnknown_03004860 = GetMultiplayerId(); - sub_80081C8(gFieldLinkPlayerCount); - sub_8093390((struct TrainerCard *) gBlockSendBuffer); - gTasks[taskId].func = sub_8083314; - } -} - -static void sub_8083288(u8 taskId) { - if (sub_8082DF4(taskId) == 1) - { - return; - } - - if (gScriptResult == 3) - { - sub_800832C(); - HideFieldMessageBox(); - gTasks[taskId].func = sub_80833C4; - } - else - { - gFieldLinkPlayerCount = GetLinkPlayerCount_2(); - gUnknown_03004860 = GetMultiplayerId(); - sub_80081C8(gFieldLinkPlayerCount); - sub_8093390((struct TrainerCard *) gBlockSendBuffer); - gTasks[taskId].func = sub_8083314; - sub_8007E9C(2); - } -} - -static void sub_8083314(u8 taskId) { - u8 index; - - struct TrainerCard *trainerCards; - - if (sub_8082DF4(taskId) == 1) - { - return; - } - - if (GetBlockReceivedStatus() != sub_8008198()) - { - return; - } - - index = 0; - trainerCards = gTrainerCards; - for (index = 0; index < GetLinkPlayerCount(); index++) - { - void *src; - src = gBlockRecvBuffer[index]; - memcpy(&trainerCards[index], src, sizeof(struct TrainerCard)); - } - - SetSuppressLinkErrorMessage(FALSE); - ResetBlockReceivedFlags(); - HideFieldMessageBox(); - - if (gScriptResult == 1) - { -#if ENGLISH - u16 linkType; - linkType = gLinkType; - // FIXME: sub_8082D4C doesn't take any arguments - sub_8082D4C(0x00004411, linkType); -#elif GERMAN - if (gLinkType != 0x4411) - { - if (gLinkType == 0x6601) - { - deUnkValue2 = 1; - } - } - sub_8082D4C(); -#endif - EnableBothScriptContexts(); - DestroyTask(taskId); - return; - } - - sub_800832C(); - gTasks[taskId].func = sub_80833C4; -} diff --git a/src/calculate_base_damage.c b/src/calculate_base_damage.c deleted file mode 100644 index 0f2605e5b..000000000 --- a/src/calculate_base_damage.c +++ /dev/null @@ -1,1474 +0,0 @@ -#include "global.h" -#include "abilities.h" -#include "battle.h" -#include "berry.h" -#include "data2.h" -#include "event_data.h" -#include "hold_effects.h" -#include "item.h" -#include "items.h" -#include "main.h" -#include "pokemon.h" -#include "species.h" -#include "sprite.h" -#include "string_util.h" -#include "strings2.h" -#include "text.h" - -extern u8 gPlayerPartyCount; -extern u8 gEnemyPartyCount; - -extern u16 unk_20160BC[]; -extern struct SecretBaseRecord gSecretBaseRecord; -extern u32 dword_2017100[]; -extern u16 gBattleTypeFlags; -extern struct BattlePokemon gBattleMons[4]; -extern u16 gCurrentMove; -extern u8 gLastUsedAbility; -extern u8 gCritMultiplier; -extern u16 gBattleWeather; -extern struct BattleEnigmaBerry gEnigmaBerries[]; -extern u16 gBattleMovePower; -extern struct SpriteTemplate gUnknown_02024E8C; -extern u16 gTrainerBattleOpponent; -extern struct PokemonStorage gPokemonStorage; - -extern u8 gBadEggNickname[]; -extern struct SpriteTemplate gSpriteTemplate_8208288[]; -extern u8 gTrainerClassToPicIndex[]; -extern u8 gTrainerClassToNameIndex[]; -extern u8 gUnknown_08208238[]; -extern u8 gUnknown_0820823C[]; -extern u8 gStatStageRatios[]; -extern u8 gHoldEffectToType[][2]; - -#define APPLY_STAT_MOD(var, mon, stat, statIndex) \ -{ \ - (var) = (stat) * (gStatStageRatios)[(mon)->statStages[(statIndex)] * 2]; \ - (var) /= (gStatStageRatios + 1)[(mon)->statStages[(statIndex)] * 2]; \ -} - -#ifdef NONMATCHING -s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *defender, u32 move, u16 a4, u16 powerOverride, u8 typeOverride, u8 a7, u8 a8) -{ - s32 i; - s32 damage = 0; - u8 type; - u16 attack, defense; - u16 spAttack, spDefense; - u8 defenderHoldEffect; - u8 defenderHoldEffectParam; - u8 attackerHoldEffect; - u8 attackerHoldEffectParam; - s32 a, b; - - if (!powerOverride) - gBattleMovePower = gBattleMoves[move].power; - else - gBattleMovePower = powerOverride; - - if (!typeOverride) - type = gBattleMoves[move].type; - else - type = typeOverride & 0x3F; - - attack = attacker->attack; - defense = defender->defense; - spAttack = attacker->spAttack; - spDefense = defender->spDefense; - - if (attacker->item == ITEM_ENIGMA_BERRY) - { - attackerHoldEffect = gEnigmaBerries[a7].holdEffect; - attackerHoldEffectParam = gEnigmaBerries[a7].holdEffectParam; - } - else - { - attackerHoldEffect = ItemId_GetHoldEffect(attacker->item); - attackerHoldEffectParam = ItemId_GetHoldEffectParam(attacker->item); - } - - if (defender->item == ITEM_ENIGMA_BERRY) - { - defenderHoldEffect = gEnigmaBerries[a8].holdEffect; - defenderHoldEffectParam = gEnigmaBerries[a8].holdEffectParam; - } - else - { - defenderHoldEffect = ItemId_GetHoldEffect(defender->item); - defenderHoldEffectParam = ItemId_GetHoldEffectParam(defender->item); - } - - if (attacker->ability == ABILITY_HUGE_POWER || attacker->ability == ABILITY_PURE_POWER) - attack *= 2; - - if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_EREADER_TRAINER))) - { - if ((gBattleTypeFlags & BATTLE_TYPE_TRAINER) - && gTrainerBattleOpponent != 1024 - && FlagGet(BADGE01_GET) - && !GetBankSide(a7)) - attack = (110 * attack) / 100; - - if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_EREADER_TRAINER))) - { - if ((gBattleTypeFlags & BATTLE_TYPE_TRAINER) - && gTrainerBattleOpponent != 1024 - && FlagGet(BADGE05_GET) - && !GetBankSide(a8)) - defense = (110 * defense) / 100; - - if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_EREADER_TRAINER))) - { - if ((gBattleTypeFlags & BATTLE_TYPE_TRAINER) - && gTrainerBattleOpponent != 1024 - && FlagGet(BADGE07_GET) - && !GetBankSide(a7)) - spAttack = (110 * spAttack) / 100; - - if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_EREADER_TRAINER))) - { - if ((gBattleTypeFlags & BATTLE_TYPE_TRAINER) - && gTrainerBattleOpponent != 1024 - && FlagGet(BADGE07_GET) - && !GetBankSide(a8)) - spDefense = (110 * spDefense) / 100; - } - } - } - } - - for (i = 0; i < 17; i++) - { - if (attackerHoldEffect == gHoldEffectToType[i][0] - && type == gHoldEffectToType[i][1]) - { - if (type <= 8) - attack = (attack * (attackerHoldEffectParam + 100)) / 100; - else - spAttack = (spAttack * (attackerHoldEffectParam + 100)) / 100; - break; - } - } - - if (attackerHoldEffect == HOLD_EFFECT_CHOICE_BAND) - attack = (150 * attack) / 100; - if (attackerHoldEffect == HOLD_EFFECT_SOUL_DEW && !(gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER) && (attacker->species == SPECIES_LATIAS || attacker->species == SPECIES_LATIOS)) - spAttack = (150 * spAttack) / 100; - if (defenderHoldEffect == HOLD_EFFECT_SOUL_DEW && !(gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER) && (defender->species == SPECIES_LATIAS || defender->species == SPECIES_LATIOS)) - spDefense = (150 * spDefense) / 100; - if (attackerHoldEffect == HOLD_EFFECT_DEEP_SEA_TOOTH && attacker->species == SPECIES_CLAMPERL) - spAttack *= 2; - if (defenderHoldEffect == HOLD_EFFECT_DEEP_SEA_SCALE && defender->species == SPECIES_CLAMPERL) - spDefense *= 2; - if (attackerHoldEffect == HOLD_EFFECT_LIGHT_BALL && attacker->species == SPECIES_PIKACHU) - spAttack *= 2; - if (defenderHoldEffect == HOLD_EFFECT_METAL_POWDER && defender->species == SPECIES_DITTO) - defense *= 2; - if (attackerHoldEffect == HOLD_EFFECT_THICK_CLUB && (attacker->species == SPECIES_CUBONE || attacker->species == SPECIES_MAROWAK)) - attack *= 2; - if (defender->ability == ABILITY_THICK_FAT && (type == TYPE_FIRE || type == TYPE_ICE)) - spAttack /= 2; - if (attacker->ability == ABILITY_HUSTLE) - attack = (150 * attack) / 100; - if (attacker->ability == ABILITY_PLUS && AbilityBattleEffects(0xE, 0, ABILITY_MINUS, 0, 0)) - spAttack = (150 * spAttack) / 100; - if (attacker->ability == ABILITY_MINUS && AbilityBattleEffects(0xE, 0, ABILITY_PLUS, 0, 0)) - spAttack = (150 * spAttack) / 100; - if (attacker->ability == ABILITY_GUTS && attacker->status1) - attack = (150 * attack) / 100; - if (defender->ability == ABILITY_MARVEL_SCALE && defender->status1) - defense = (150 * defense) / 100; - if (type == TYPE_ELECTRIC && AbilityBattleEffects(0xE, 0, 0, 0xFD, 0)) - gBattleMovePower /= 2; - if (type == TYPE_FIRE && AbilityBattleEffects(0xE, 0, 0, 0xFE, 0)) - gBattleMovePower /= 2; - if (type == TYPE_GRASS && attacker->ability == ABILITY_OVERGROW && attacker->hp <= (attacker->maxHP / 3)) - gBattleMovePower = (150 * gBattleMovePower) / 100; - if (type == TYPE_FIRE && attacker->ability == ABILITY_BLAZE && attacker->hp <= (attacker->maxHP / 3)) - gBattleMovePower = (150 * gBattleMovePower) / 100; - if (type == TYPE_WATER && attacker->ability == ABILITY_TORRENT && attacker->hp <= (attacker->maxHP / 3)) - gBattleMovePower = (150 * gBattleMovePower) / 100; - if (type == TYPE_BUG && attacker->ability == ABILITY_SWARM && attacker->hp <= (attacker->maxHP / 3)) - gBattleMovePower = (150 * gBattleMovePower) / 100; - if (gBattleMoves[gCurrentMove].effect == 7) - defense /= 2; - - if (type < TYPE_MYSTERY) // is physical? - { - if (gCritMultiplier == 2) - { - if (attacker->statStages[1] > 6) - APPLY_STAT_MOD(a, attacker, attack, 1) - else - a = attack; - } - else - APPLY_STAT_MOD(a, attacker, attack, 1) - - a = a * gBattleMovePower * (2 * attacker->level / 5 + 2); - - if (gCritMultiplier == 2) - { - if (defender->statStages[2] < 6) - APPLY_STAT_MOD(b, defender, defense, 2) - else - b = defense; - } - else - APPLY_STAT_MOD(b, defender, defense, 2) - - damage = (a / b) / 50; - - if ((attacker->status1 & 0x10) && attacker->ability != ABILITY_GUTS) - damage /= 2; - - if ((a4 & 1) && gCritMultiplier == 1) - { - if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && CountAliveMons(2) == 2) - damage = 2 * (damage / 3); - else - damage /= 2; - } - - if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && gBattleMoves[move].target == 8 && CountAliveMons(2) == 2) - damage /= 2; - - // moves always do at least 1 damage. - if (damage == 0) - damage = 1; - } - - if (type == TYPE_MYSTERY) - damage = 0; // is ??? type. does 0 damage. - - if (type > TYPE_MYSTERY) // is special? - { - if (gCritMultiplier == 2) - { - if (attacker->statStages[4] > 6) - APPLY_STAT_MOD(a, attacker, spAttack, 4) - else - a = spAttack; - } - else - APPLY_STAT_MOD(a, attacker, spAttack, 4) - - a = a * gBattleMovePower * (2 * attacker->level / 5 + 2); - - if (gCritMultiplier == 2) - { - if (defender->statStages[5] < 6) - APPLY_STAT_MOD(b, defender, spDefense, 5) - else - b = spDefense; - } - else - APPLY_STAT_MOD(b, defender, spDefense, 5) - - damage = (a / b) / 50; - - if ((a4 & 2) && gCritMultiplier == 1) - { - if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && CountAliveMons(2) == 2) - damage = 2 * (damage / 3); - else - damage /= 2; - } - - if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && gBattleMoves[move].target == 8 && CountAliveMons(2) == 2) - damage /= 2; - - // are effects of weather negated with cloud nine or air lock? - if (!AbilityBattleEffects(0xE, 0, ABILITY_CLOUD_NINE, 0, 0) && !AbilityBattleEffects(0xE, 0, ABILITY_AIR_LOCK, 0, 0)) - { - // rain? - if (gBattleWeather & 1) - { - if (type == TYPE_FIRE) - damage /= 2; - else if (type == TYPE_WATER) - damage = (15 * damage) / 10; - } - - // does lack of sun half solar beam damage? - if ((gBattleWeather & 0x9F) && gCurrentMove == 76) - damage /= 2; - - // sunny? - if (gBattleWeather & 0x60) - { - if (type == TYPE_FIRE) - damage = (15 * damage) / 10; - else if (type == TYPE_WATER) - damage /= 2; - } - } - - // flash fire triggered? - if ((dword_2017100[a7] & 1) && type == TYPE_FIRE) - damage = (15 * damage) / 10; - } - - return damage + 2; -} -#else -__attribute__((naked)) -s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *defender, u32 move, u16 a4, u16 powerOverride, u8 typeOverride, u8 a7, u8 a8) -{ - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r10\n\ - mov r6, r9\n\ - mov r5, r8\n\ - push {r5-r7}\n\ - sub sp, 0x2C\n\ - adds r7, r0, 0\n\ - str r1, [sp, 0x4]\n\ - str r2, [sp, 0x8]\n\ - ldr r0, [sp, 0x4C]\n\ - ldr r1, [sp, 0x50]\n\ - ldr r2, [sp, 0x54]\n\ - ldr r4, [sp, 0x58]\n\ - lsls r3, 16\n\ - lsrs r3, 16\n\ - str r3, [sp, 0xC]\n\ - lsls r0, 16\n\ - lsrs r3, r0, 16\n\ - lsls r1, 24\n\ - lsrs r6, r1, 24\n\ - lsls r2, 24\n\ - lsrs r2, 24\n\ - str r2, [sp, 0x10]\n\ - lsls r4, 24\n\ - lsrs r4, 24\n\ - movs r5, 0\n\ - cmp r3, 0\n\ - bne _0803BA80\n\ - ldr r2, _0803BA78 @ =gBattleMovePower\n\ - ldr r1, _0803BA7C @ =gBattleMoves\n\ - ldr r3, [sp, 0x8]\n\ - lsls r0, r3, 1\n\ - adds r0, r3\n\ - lsls r0, 2\n\ - adds r0, r1\n\ - ldrb r0, [r0, 0x1]\n\ - strh r0, [r2]\n\ - b _0803BA84\n\ - .align 2, 0\n\ -_0803BA78: .4byte gBattleMovePower\n\ -_0803BA7C: .4byte gBattleMoves\n\ -_0803BA80:\n\ - ldr r0, _0803BA9C @ =gBattleMovePower\n\ - strh r3, [r0]\n\ -_0803BA84:\n\ - cmp r6, 0\n\ - bne _0803BAA4\n\ - ldr r1, _0803BAA0 @ =gBattleMoves\n\ - ldr r6, [sp, 0x8]\n\ - lsls r0, r6, 1\n\ - adds r0, r6\n\ - lsls r0, 2\n\ - adds r0, r1\n\ - ldrb r0, [r0, 0x2]\n\ - mov r9, r0\n\ - b _0803BAAE\n\ - .align 2, 0\n\ -_0803BA9C: .4byte gBattleMovePower\n\ -_0803BAA0: .4byte gBattleMoves\n\ -_0803BAA4:\n\ - movs r0, 0x3F\n\ - mov r9, r0\n\ - mov r1, r9\n\ - ands r1, r6\n\ - mov r9, r1\n\ -_0803BAAE:\n\ - ldrh r6, [r7, 0x2]\n\ - ldr r2, [sp, 0x4]\n\ - ldrh r2, [r2, 0x4]\n\ - str r2, [sp, 0x14]\n\ - ldrh r3, [r7, 0x8]\n\ - mov r8, r3\n\ - ldr r0, [sp, 0x4]\n\ - ldrh r0, [r0, 0xA]\n\ - str r0, [sp, 0x18]\n\ - ldrh r0, [r7, 0x2E]\n\ - cmp r0, 0xAF\n\ - bne _0803BAE0\n\ - ldr r1, _0803BADC @ =gEnigmaBerries\n\ - ldr r2, [sp, 0x10]\n\ - lsls r0, r2, 3\n\ - subs r0, r2\n\ - lsls r0, 2\n\ - adds r0, r1\n\ - ldrb r3, [r0, 0x7]\n\ - mov r10, r3\n\ - ldrb r0, [r0, 0x1A]\n\ - b _0803BAF6\n\ - .align 2, 0\n\ -_0803BADC: .4byte gEnigmaBerries\n\ -_0803BAE0:\n\ - ldrh r0, [r7, 0x2E]\n\ - bl ItemId_GetHoldEffect\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - mov r10, r0\n\ - ldrh r0, [r7, 0x2E]\n\ - bl ItemId_GetHoldEffectParam\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ -_0803BAF6:\n\ - str r0, [sp, 0x20]\n\ - ldr r1, [sp, 0x4]\n\ - ldrh r0, [r1, 0x2E]\n\ - cmp r0, 0xAF\n\ - bne _0803BB26\n\ - ldr r1, _0803BB10 @ =gEnigmaBerries\n\ - lsls r0, r4, 3\n\ - subs r0, r4\n\ - lsls r0, 2\n\ - adds r0, r1\n\ - ldrb r0, [r0, 0x7]\n\ - str r0, [sp, 0x1C]\n\ - b _0803BB3C\n\ - .align 2, 0\n\ -_0803BB10: .4byte gEnigmaBerries\n\ -_0803BB14:\n\ - ldr r0, [sp, 0x20]\n\ - adds r0, 0x64\n\ - muls r0, r6\n\ - movs r1, 0x64\n\ - bl __divsi3\n\ - lsls r0, 16\n\ - lsrs r6, r0, 16\n\ - b _0803BCDC\n\ -_0803BB26:\n\ - ldr r2, [sp, 0x4]\n\ - ldrh r0, [r2, 0x2E]\n\ - bl ItemId_GetHoldEffect\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - str r0, [sp, 0x1C]\n\ - ldr r3, [sp, 0x4]\n\ - ldrh r0, [r3, 0x2E]\n\ - bl ItemId_GetHoldEffectParam\n\ -_0803BB3C:\n\ - adds r0, r7, 0\n\ - adds r0, 0x20\n\ - ldrb r1, [r0]\n\ - str r0, [sp, 0x24]\n\ - cmp r1, 0x25\n\ - beq _0803BB4C\n\ - cmp r1, 0x4A\n\ - bne _0803BB50\n\ -_0803BB4C:\n\ - lsls r0, r6, 17\n\ - lsrs r6, r0, 16\n\ -_0803BB50:\n\ - ldr r0, _0803BCB8 @ =gBattleTypeFlags\n\ - ldrh r1, [r0]\n\ - ldr r0, _0803BCBC @ =0x00000902\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _0803BB5E\n\ - b _0803BC78\n\ -_0803BB5E:\n\ - movs r0, 0x8\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _0803BB98\n\ - ldr r0, _0803BCC0 @ =gTrainerBattleOpponent\n\ - ldrh r1, [r0]\n\ - movs r0, 0x80\n\ - lsls r0, 3\n\ - cmp r1, r0\n\ - beq _0803BB98\n\ - ldr r0, _0803BCC4 @ =0x00000807\n\ - bl FlagGet\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - beq _0803BB98\n\ - ldr r0, [sp, 0x10]\n\ - bl GetBankSide\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - bne _0803BB98\n\ - movs r0, 0x6E\n\ - muls r0, r6\n\ - movs r1, 0x64\n\ - bl __divsi3\n\ - lsls r0, 16\n\ - lsrs r6, r0, 16\n\ -_0803BB98:\n\ - ldr r0, _0803BCB8 @ =gBattleTypeFlags\n\ - ldrh r1, [r0]\n\ - ldr r0, _0803BCBC @ =0x00000902\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - bne _0803BC78\n\ - movs r0, 0x8\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _0803BBE2\n\ - ldr r0, _0803BCC0 @ =gTrainerBattleOpponent\n\ - ldrh r1, [r0]\n\ - movs r0, 0x80\n\ - lsls r0, 3\n\ - cmp r1, r0\n\ - beq _0803BBE2\n\ - ldr r0, _0803BCC8 @ =0x0000080b\n\ - bl FlagGet\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - beq _0803BBE2\n\ - adds r0, r4, 0\n\ - bl GetBankSide\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - bne _0803BBE2\n\ - movs r0, 0x6E\n\ - ldr r1, [sp, 0x14]\n\ - muls r0, r1\n\ - movs r1, 0x64\n\ - bl __divsi3\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - str r0, [sp, 0x14]\n\ -_0803BBE2:\n\ - ldr r0, _0803BCB8 @ =gBattleTypeFlags\n\ - ldrh r1, [r0]\n\ - ldr r0, _0803BCBC @ =0x00000902\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - bne _0803BC78\n\ - movs r0, 0x8\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _0803BC2E\n\ - ldr r0, _0803BCC0 @ =gTrainerBattleOpponent\n\ - ldrh r1, [r0]\n\ - movs r0, 0x80\n\ - lsls r0, 3\n\ - cmp r1, r0\n\ - beq _0803BC2E\n\ - ldr r0, _0803BCCC @ =0x0000080d\n\ - bl FlagGet\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - beq _0803BC2E\n\ - ldr r0, [sp, 0x10]\n\ - bl GetBankSide\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - bne _0803BC2E\n\ - movs r0, 0x6E\n\ - mov r2, r8\n\ - muls r2, r0\n\ - adds r0, r2, 0\n\ - movs r1, 0x64\n\ - bl __divsi3\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - mov r8, r0\n\ -_0803BC2E:\n\ - ldr r0, _0803BCB8 @ =gBattleTypeFlags\n\ - ldrh r1, [r0]\n\ - ldr r0, _0803BCBC @ =0x00000902\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - bne _0803BC78\n\ - movs r0, 0x8\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _0803BC78\n\ - ldr r0, _0803BCC0 @ =gTrainerBattleOpponent\n\ - ldrh r1, [r0]\n\ - movs r0, 0x80\n\ - lsls r0, 3\n\ - cmp r1, r0\n\ - beq _0803BC78\n\ - ldr r0, _0803BCCC @ =0x0000080d\n\ - bl FlagGet\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - beq _0803BC78\n\ - adds r0, r4, 0\n\ - bl GetBankSide\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - bne _0803BC78\n\ - movs r0, 0x6E\n\ - ldr r3, [sp, 0x18]\n\ - muls r0, r3\n\ - movs r1, 0x64\n\ - bl __divsi3\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - str r0, [sp, 0x18]\n\ -_0803BC78:\n\ - movs r2, 0\n\ - ldr r4, _0803BCD0 @ =gHoldEffectToType\n\ - ldr r0, [sp, 0x4]\n\ - adds r0, 0x20\n\ - str r0, [sp, 0x28]\n\ - adds r3, r4, 0\n\ -_0803BC84:\n\ - lsls r1, r2, 1\n\ - ldrb r0, [r3]\n\ - cmp r10, r0\n\ - bne _0803BCD4\n\ - adds r0, r4, 0x1\n\ - adds r0, r1, r0\n\ - ldrb r0, [r0]\n\ - cmp r9, r0\n\ - bne _0803BCD4\n\ - mov r1, r9\n\ - cmp r1, 0x8\n\ - bhi _0803BC9E\n\ - b _0803BB14\n\ -_0803BC9E:\n\ - ldr r0, [sp, 0x20]\n\ - adds r0, 0x64\n\ - mov r2, r8\n\ - muls r2, r0\n\ - adds r0, r2, 0\n\ - movs r1, 0x64\n\ - bl __divsi3\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - mov r8, r0\n\ - b _0803BCDC\n\ - .align 2, 0\n\ -_0803BCB8: .4byte gBattleTypeFlags\n\ -_0803BCBC: .4byte 0x00000902\n\ -_0803BCC0: .4byte gTrainerBattleOpponent\n\ -_0803BCC4: .4byte 0x00000807\n\ -_0803BCC8: .4byte 0x0000080b\n\ -_0803BCCC: .4byte 0x0000080d\n\ -_0803BCD0: .4byte gHoldEffectToType\n\ -_0803BCD4:\n\ - adds r3, 0x2\n\ - adds r2, 0x1\n\ - cmp r2, 0x10\n\ - bls _0803BC84\n\ -_0803BCDC:\n\ - mov r3, r10\n\ - cmp r3, 0x1D\n\ - bne _0803BCF0\n\ - movs r0, 0x96\n\ - muls r0, r6\n\ - movs r1, 0x64\n\ - bl __divsi3\n\ - lsls r0, 16\n\ - lsrs r6, r0, 16\n\ -_0803BCF0:\n\ - mov r0, r10\n\ - cmp r0, 0x22\n\ - bne _0803BD28\n\ - ldr r0, _0803BFDC @ =gBattleTypeFlags\n\ - ldrh r1, [r0]\n\ - movs r0, 0x80\n\ - lsls r0, 1\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - bne _0803BD28\n\ - ldr r1, _0803BFE0 @ =0xfffffe69\n\ - adds r0, r1, 0\n\ - ldrh r2, [r7]\n\ - adds r0, r2\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - cmp r0, 0x1\n\ - bhi _0803BD28\n\ - movs r0, 0x96\n\ - mov r3, r8\n\ - muls r3, r0\n\ - adds r0, r3, 0\n\ - movs r1, 0x64\n\ - bl __divsi3\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - mov r8, r0\n\ -_0803BD28:\n\ - ldr r0, [sp, 0x1C]\n\ - cmp r0, 0x22\n\ - bne _0803BD60\n\ - ldr r0, _0803BFDC @ =gBattleTypeFlags\n\ - ldrh r1, [r0]\n\ - movs r0, 0x80\n\ - lsls r0, 1\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - bne _0803BD60\n\ - ldr r1, _0803BFE0 @ =0xfffffe69\n\ - adds r0, r1, 0\n\ - ldr r2, [sp, 0x4]\n\ - ldrh r2, [r2]\n\ - adds r0, r2\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - cmp r0, 0x1\n\ - bhi _0803BD60\n\ - movs r0, 0x96\n\ - ldr r3, [sp, 0x18]\n\ - muls r0, r3\n\ - movs r1, 0x64\n\ - bl __divsi3\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - str r0, [sp, 0x18]\n\ -_0803BD60:\n\ - mov r0, r10\n\ - cmp r0, 0x23\n\ - bne _0803BD76\n\ - ldrh r1, [r7]\n\ - ldr r0, _0803BFE4 @ =0x00000175\n\ - cmp r1, r0\n\ - bne _0803BD76\n\ - mov r1, r8\n\ - lsls r0, r1, 17\n\ - lsrs r0, 16\n\ - mov r8, r0\n\ -_0803BD76:\n\ - ldr r2, [sp, 0x1C]\n\ - cmp r2, 0x24\n\ - bne _0803BD8E\n\ - ldr r3, [sp, 0x4]\n\ - ldrh r1, [r3]\n\ - ldr r0, _0803BFE4 @ =0x00000175\n\ - cmp r1, r0\n\ - bne _0803BD8E\n\ - ldr r1, [sp, 0x18]\n\ - lsls r0, r1, 17\n\ - lsrs r0, 16\n\ - str r0, [sp, 0x18]\n\ -_0803BD8E:\n\ - mov r2, r10\n\ - cmp r2, 0x2D\n\ - bne _0803BDA2\n\ - ldrh r0, [r7]\n\ - cmp r0, 0x19\n\ - bne _0803BDA2\n\ - mov r3, r8\n\ - lsls r0, r3, 17\n\ - lsrs r0, 16\n\ - mov r8, r0\n\ -_0803BDA2:\n\ - ldr r0, [sp, 0x1C]\n\ - cmp r0, 0x40\n\ - bne _0803BDB8\n\ - ldr r1, [sp, 0x4]\n\ - ldrh r0, [r1]\n\ - cmp r0, 0x84\n\ - bne _0803BDB8\n\ - ldr r2, [sp, 0x14]\n\ - lsls r0, r2, 17\n\ - lsrs r0, 16\n\ - str r0, [sp, 0x14]\n\ -_0803BDB8:\n\ - mov r3, r10\n\ - cmp r3, 0x41\n\ - bne _0803BDCE\n\ - ldrh r0, [r7]\n\ - subs r0, 0x68\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - cmp r0, 0x1\n\ - bhi _0803BDCE\n\ - lsls r0, r6, 17\n\ - lsrs r6, r0, 16\n\ -_0803BDCE:\n\ - ldr r1, [sp, 0x28]\n\ - ldrb r0, [r1]\n\ - cmp r0, 0x2F\n\ - bne _0803BDE6\n\ - mov r2, r9\n\ - cmp r2, 0xA\n\ - beq _0803BDE0\n\ - cmp r2, 0xF\n\ - bne _0803BDE6\n\ -_0803BDE0:\n\ - mov r3, r8\n\ - lsrs r3, 1\n\ - mov r8, r3\n\ -_0803BDE6:\n\ - ldr r0, [sp, 0x24]\n\ - ldrb r4, [r0]\n\ - cmp r4, 0x37\n\ - bne _0803BDFC\n\ - movs r0, 0x96\n\ - muls r0, r6\n\ - movs r1, 0x64\n\ - bl __divsi3\n\ - lsls r0, 16\n\ - lsrs r6, r0, 16\n\ -_0803BDFC:\n\ - cmp r4, 0x39\n\ - bne _0803BE2A\n\ - movs r0, 0\n\ - str r0, [sp]\n\ - movs r0, 0xE\n\ - movs r1, 0\n\ - movs r2, 0x3A\n\ - movs r3, 0\n\ - bl AbilityBattleEffects\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - beq _0803BE2A\n\ - movs r0, 0x96\n\ - mov r1, r8\n\ - muls r1, r0\n\ - adds r0, r1, 0\n\ - movs r1, 0x64\n\ - bl __divsi3\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - mov r8, r0\n\ -_0803BE2A:\n\ - ldr r2, [sp, 0x24]\n\ - ldrb r0, [r2]\n\ - cmp r0, 0x3A\n\ - bne _0803BE5C\n\ - movs r0, 0\n\ - str r0, [sp]\n\ - movs r0, 0xE\n\ - movs r1, 0\n\ - movs r2, 0x39\n\ - movs r3, 0\n\ - bl AbilityBattleEffects\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - beq _0803BE5C\n\ - movs r0, 0x96\n\ - mov r3, r8\n\ - muls r3, r0\n\ - adds r0, r3, 0\n\ - movs r1, 0x64\n\ - bl __divsi3\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - mov r8, r0\n\ -_0803BE5C:\n\ - ldr r1, [sp, 0x24]\n\ - ldrb r0, [r1]\n\ - cmp r0, 0x3E\n\ - bne _0803BE78\n\ - ldr r0, [r7, 0x4C]\n\ - cmp r0, 0\n\ - beq _0803BE78\n\ - movs r0, 0x96\n\ - muls r0, r6\n\ - movs r1, 0x64\n\ - bl __divsi3\n\ - lsls r0, 16\n\ - lsrs r6, r0, 16\n\ -_0803BE78:\n\ - ldr r2, [sp, 0x28]\n\ - ldrb r0, [r2]\n\ - cmp r0, 0x3F\n\ - bne _0803BE9A\n\ - ldr r3, [sp, 0x4]\n\ - ldr r0, [r3, 0x4C]\n\ - cmp r0, 0\n\ - beq _0803BE9A\n\ - movs r0, 0x96\n\ - ldr r1, [sp, 0x14]\n\ - muls r0, r1\n\ - movs r1, 0x64\n\ - bl __divsi3\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - str r0, [sp, 0x14]\n\ -_0803BE9A:\n\ - mov r2, r9\n\ - cmp r2, 0xD\n\ - bne _0803BEBE\n\ - movs r0, 0\n\ - str r0, [sp]\n\ - movs r0, 0xE\n\ - movs r1, 0\n\ - movs r2, 0\n\ - movs r3, 0xFD\n\ - bl AbilityBattleEffects\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - beq _0803BEBE\n\ - ldr r1, _0803BFE8 @ =gBattleMovePower\n\ - ldrh r0, [r1]\n\ - lsrs r0, 1\n\ - strh r0, [r1]\n\ -_0803BEBE:\n\ - mov r3, r9\n\ - cmp r3, 0xA\n\ - bne _0803BEE2\n\ - movs r0, 0\n\ - str r0, [sp]\n\ - movs r0, 0xE\n\ - movs r1, 0\n\ - movs r2, 0\n\ - movs r3, 0xFE\n\ - bl AbilityBattleEffects\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - beq _0803BEE2\n\ - ldr r1, _0803BFE8 @ =gBattleMovePower\n\ - ldrh r0, [r1]\n\ - lsrs r0, 1\n\ - strh r0, [r1]\n\ -_0803BEE2:\n\ - mov r0, r9\n\ - cmp r0, 0xC\n\ - bne _0803BF12\n\ - ldr r1, [sp, 0x24]\n\ - ldrb r0, [r1]\n\ - cmp r0, 0x41\n\ - bne _0803BF12\n\ - ldrh r0, [r7, 0x2C]\n\ - movs r1, 0x3\n\ - bl __udivsi3\n\ - ldrh r1, [r7, 0x28]\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - cmp r1, r0\n\ - bhi _0803BF12\n\ - ldr r4, _0803BFE8 @ =gBattleMovePower\n\ - ldrh r1, [r4]\n\ - movs r0, 0x96\n\ - muls r0, r1\n\ - movs r1, 0x64\n\ - bl __divsi3\n\ - strh r0, [r4]\n\ -_0803BF12:\n\ - mov r2, r9\n\ - cmp r2, 0xA\n\ - bne _0803BF42\n\ - ldr r3, [sp, 0x24]\n\ - ldrb r0, [r3]\n\ - cmp r0, 0x42\n\ - bne _0803BF42\n\ - ldrh r0, [r7, 0x2C]\n\ - movs r1, 0x3\n\ - bl __udivsi3\n\ - ldrh r1, [r7, 0x28]\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - cmp r1, r0\n\ - bhi _0803BF42\n\ - ldr r4, _0803BFE8 @ =gBattleMovePower\n\ - ldrh r1, [r4]\n\ - movs r0, 0x96\n\ - muls r0, r1\n\ - movs r1, 0x64\n\ - bl __divsi3\n\ - strh r0, [r4]\n\ -_0803BF42:\n\ - mov r0, r9\n\ - cmp r0, 0xB\n\ - bne _0803BF72\n\ - ldr r1, [sp, 0x24]\n\ - ldrb r0, [r1]\n\ - cmp r0, 0x43\n\ - bne _0803BF72\n\ - ldrh r0, [r7, 0x2C]\n\ - movs r1, 0x3\n\ - bl __udivsi3\n\ - ldrh r1, [r7, 0x28]\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - cmp r1, r0\n\ - bhi _0803BF72\n\ - ldr r4, _0803BFE8 @ =gBattleMovePower\n\ - ldrh r1, [r4]\n\ - movs r0, 0x96\n\ - muls r0, r1\n\ - movs r1, 0x64\n\ - bl __divsi3\n\ - strh r0, [r4]\n\ -_0803BF72:\n\ - mov r2, r9\n\ - cmp r2, 0x6\n\ - bne _0803BFA2\n\ - ldr r3, [sp, 0x24]\n\ - ldrb r0, [r3]\n\ - cmp r0, 0x44\n\ - bne _0803BFA2\n\ - ldrh r0, [r7, 0x2C]\n\ - movs r1, 0x3\n\ - bl __udivsi3\n\ - ldrh r1, [r7, 0x28]\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - cmp r1, r0\n\ - bhi _0803BFA2\n\ - ldr r4, _0803BFE8 @ =gBattleMovePower\n\ - ldrh r1, [r4]\n\ - movs r0, 0x96\n\ - muls r0, r1\n\ - movs r1, 0x64\n\ - bl __divsi3\n\ - strh r0, [r4]\n\ -_0803BFA2:\n\ - ldr r2, _0803BFEC @ =gBattleMoves\n\ - ldr r0, _0803BFF0 @ =gCurrentMove\n\ - ldrh r1, [r0]\n\ - lsls r0, r1, 1\n\ - adds r0, r1\n\ - lsls r0, 2\n\ - adds r0, r2\n\ - ldrb r0, [r0]\n\ - cmp r0, 0x7\n\ - bne _0803BFBC\n\ - ldr r0, [sp, 0x14]\n\ - lsrs r0, 1\n\ - str r0, [sp, 0x14]\n\ -_0803BFBC:\n\ - mov r1, r9\n\ - cmp r1, 0x8\n\ - bls _0803BFC4\n\ - b _0803C122\n\ -_0803BFC4:\n\ - ldr r0, _0803BFF4 @ =gCritMultiplier\n\ - ldrb r1, [r0]\n\ - adds r4, r0, 0\n\ - cmp r1, 0x2\n\ - bne _0803C000\n\ - movs r0, 0x19\n\ - ldrsb r0, [r7, r0]\n\ - cmp r0, 0x6\n\ - ble _0803BFFC\n\ - ldr r2, _0803BFF8 @ =gStatStageRatios\n\ - b _0803C006\n\ - .align 2, 0\n\ -_0803BFDC: .4byte gBattleTypeFlags\n\ -_0803BFE0: .4byte 0xfffffe69\n\ -_0803BFE4: .4byte 0x00000175\n\ -_0803BFE8: .4byte gBattleMovePower\n\ -_0803BFEC: .4byte gBattleMoves\n\ -_0803BFF0: .4byte gCurrentMove\n\ -_0803BFF4: .4byte gCritMultiplier\n\ -_0803BFF8: .4byte gStatStageRatios\n\ -_0803BFFC:\n\ - adds r5, r6, 0\n\ - b _0803C01E\n\ -_0803C000:\n\ - ldr r2, _0803C050 @ =gStatStageRatios\n\ - movs r0, 0x19\n\ - ldrsb r0, [r7, r0]\n\ -_0803C006:\n\ - lsls r0, 1\n\ - adds r1, r0, r2\n\ - ldrb r1, [r1]\n\ - adds r5, r6, 0\n\ - muls r5, r1\n\ - adds r2, 0x1\n\ - adds r0, r2\n\ - ldrb r1, [r0]\n\ - adds r0, r5, 0\n\ - bl __divsi3\n\ - adds r5, r0, 0\n\ -_0803C01E:\n\ - ldr r0, _0803C054 @ =gBattleMovePower\n\ - ldrh r0, [r0]\n\ - muls r5, r0\n\ - adds r0, r7, 0\n\ - adds r0, 0x2A\n\ - ldrb r0, [r0]\n\ - lsls r0, 1\n\ - movs r1, 0x5\n\ - bl __divsi3\n\ - adds r0, 0x2\n\ - muls r5, r0\n\ - ldrb r0, [r4]\n\ - cmp r0, 0x2\n\ - bne _0803C05C\n\ - ldr r2, [sp, 0x4]\n\ - movs r0, 0x1A\n\ - ldrsb r0, [r2, r0]\n\ - cmp r0, 0x5\n\ - bgt _0803C058\n\ - ldr r2, _0803C050 @ =gStatStageRatios\n\ - ldr r3, [sp, 0x4]\n\ - movs r0, 0x1A\n\ - ldrsb r0, [r3, r0]\n\ - b _0803C064\n\ - .align 2, 0\n\ -_0803C050: .4byte gStatStageRatios\n\ -_0803C054: .4byte gBattleMovePower\n\ -_0803C058:\n\ - ldr r3, [sp, 0x14]\n\ - b _0803C07E\n\ -_0803C05C:\n\ - ldr r2, _0803C0DC @ =gStatStageRatios\n\ - ldr r1, [sp, 0x4]\n\ - movs r0, 0x1A\n\ - ldrsb r0, [r1, r0]\n\ -_0803C064:\n\ - lsls r0, 1\n\ - adds r1, r0, r2\n\ - ldrb r1, [r1]\n\ - ldr r6, [sp, 0x14]\n\ - adds r3, r6, 0\n\ - muls r3, r1\n\ - adds r2, 0x1\n\ - adds r0, r2\n\ - ldrb r1, [r0]\n\ - adds r0, r3, 0\n\ - bl __divsi3\n\ - adds r3, r0, 0\n\ -_0803C07E:\n\ - adds r0, r5, 0\n\ - adds r1, r3, 0\n\ - bl __divsi3\n\ - adds r5, r0, 0\n\ - movs r1, 0x32\n\ - bl __divsi3\n\ - adds r5, r0, 0\n\ - ldr r0, [r7, 0x4C]\n\ - movs r1, 0x10\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _0803C0A8\n\ - ldr r1, [sp, 0x24]\n\ - ldrb r0, [r1]\n\ - cmp r0, 0x3E\n\ - beq _0803C0A8\n\ - lsrs r0, r5, 31\n\ - adds r0, r5, r0\n\ - asrs r5, r0, 1\n\ -_0803C0A8:\n\ - movs r0, 0x1\n\ - ldr r2, [sp, 0xC]\n\ - ands r0, r2\n\ - cmp r0, 0\n\ - beq _0803C0EA\n\ - ldrb r1, [r4]\n\ - cmp r1, 0x1\n\ - bne _0803C0EA\n\ - ldr r0, _0803C0E0 @ =gBattleTypeFlags\n\ - ldrh r0, [r0]\n\ - ands r1, r0\n\ - cmp r1, 0\n\ - beq _0803C0E4\n\ - movs r0, 0x2\n\ - bl CountAliveMons\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - cmp r0, 0x2\n\ - bne _0803C0E4\n\ - adds r0, r5, 0\n\ - movs r1, 0x3\n\ - bl __divsi3\n\ - lsls r5, r0, 1\n\ - b _0803C0EA\n\ - .align 2, 0\n\ -_0803C0DC: .4byte gStatStageRatios\n\ -_0803C0E0: .4byte gBattleTypeFlags\n\ -_0803C0E4:\n\ - lsrs r0, r5, 31\n\ - adds r0, r5, r0\n\ - asrs r5, r0, 1\n\ -_0803C0EA:\n\ - ldr r0, _0803C148 @ =gBattleTypeFlags\n\ - ldrh r1, [r0]\n\ - movs r0, 0x1\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _0803C11C\n\ - ldr r0, _0803C14C @ =gBattleMoves\n\ - ldr r3, [sp, 0x8]\n\ - lsls r1, r3, 1\n\ - adds r1, r3\n\ - lsls r1, 2\n\ - adds r1, r0\n\ - ldrb r0, [r1, 0x6]\n\ - cmp r0, 0x8\n\ - bne _0803C11C\n\ - movs r0, 0x2\n\ - bl CountAliveMons\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - cmp r0, 0x2\n\ - bne _0803C11C\n\ - lsrs r0, r5, 31\n\ - adds r0, r5, r0\n\ - asrs r5, r0, 1\n\ -_0803C11C:\n\ - cmp r5, 0\n\ - bne _0803C122\n\ - movs r5, 0x1\n\ -_0803C122:\n\ - mov r6, r9\n\ - cmp r6, 0x9\n\ - bne _0803C12A\n\ - movs r5, 0\n\ -_0803C12A:\n\ - mov r0, r9\n\ - cmp r0, 0x9\n\ - bhi _0803C132\n\ - b _0803C330\n\ -_0803C132:\n\ - ldr r0, _0803C150 @ =gCritMultiplier\n\ - ldrb r1, [r0]\n\ - adds r4, r0, 0\n\ - cmp r1, 0x2\n\ - bne _0803C15C\n\ - movs r0, 0x1C\n\ - ldrsb r0, [r7, r0]\n\ - cmp r0, 0x6\n\ - ble _0803C158\n\ - ldr r2, _0803C154 @ =gStatStageRatios\n\ - b _0803C162\n\ - .align 2, 0\n\ -_0803C148: .4byte gBattleTypeFlags\n\ -_0803C14C: .4byte gBattleMoves\n\ -_0803C150: .4byte gCritMultiplier\n\ -_0803C154: .4byte gStatStageRatios\n\ -_0803C158:\n\ - mov r5, r8\n\ - b _0803C17A\n\ -_0803C15C:\n\ - ldr r2, _0803C1A8 @ =gStatStageRatios\n\ - movs r0, 0x1C\n\ - ldrsb r0, [r7, r0]\n\ -_0803C162:\n\ - lsls r0, 1\n\ - adds r1, r0, r2\n\ - ldrb r1, [r1]\n\ - mov r5, r8\n\ - muls r5, r1\n\ - adds r2, 0x1\n\ - adds r0, r2\n\ - ldrb r1, [r0]\n\ - adds r0, r5, 0\n\ - bl __divsi3\n\ - adds r5, r0, 0\n\ -_0803C17A:\n\ - ldr r0, _0803C1AC @ =gBattleMovePower\n\ - ldrh r0, [r0]\n\ - muls r5, r0\n\ - adds r0, r7, 0\n\ - adds r0, 0x2A\n\ - ldrb r0, [r0]\n\ - lsls r0, 1\n\ - movs r1, 0x5\n\ - bl __divsi3\n\ - adds r0, 0x2\n\ - muls r5, r0\n\ - ldrb r0, [r4]\n\ - cmp r0, 0x2\n\ - bne _0803C1B4\n\ - ldr r1, [sp, 0x4]\n\ - movs r0, 0x1D\n\ - ldrsb r0, [r1, r0]\n\ - cmp r0, 0x5\n\ - bgt _0803C1B0\n\ - ldr r2, _0803C1A8 @ =gStatStageRatios\n\ - b _0803C1BC\n\ - .align 2, 0\n\ -_0803C1A8: .4byte gStatStageRatios\n\ -_0803C1AC: .4byte gBattleMovePower\n\ -_0803C1B0:\n\ - ldr r3, [sp, 0x18]\n\ - b _0803C1D6\n\ -_0803C1B4:\n\ - ldr r2, _0803C21C @ =gStatStageRatios\n\ - ldr r1, [sp, 0x4]\n\ - movs r0, 0x1D\n\ - ldrsb r0, [r1, r0]\n\ -_0803C1BC:\n\ - lsls r0, 1\n\ - adds r1, r0, r2\n\ - ldrb r1, [r1]\n\ - ldr r6, [sp, 0x18]\n\ - adds r3, r6, 0\n\ - muls r3, r1\n\ - adds r2, 0x1\n\ - adds r0, r2\n\ - ldrb r1, [r0]\n\ - adds r0, r3, 0\n\ - bl __divsi3\n\ - adds r3, r0, 0\n\ -_0803C1D6:\n\ - adds r0, r5, 0\n\ - adds r1, r3, 0\n\ - bl __divsi3\n\ - adds r5, r0, 0\n\ - movs r1, 0x32\n\ - bl __divsi3\n\ - adds r5, r0, 0\n\ - movs r0, 0x2\n\ - ldr r1, [sp, 0xC]\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _0803C22A\n\ - ldrb r1, [r4]\n\ - cmp r1, 0x1\n\ - bne _0803C22A\n\ - ldr r0, _0803C220 @ =gBattleTypeFlags\n\ - ldrh r0, [r0]\n\ - ands r1, r0\n\ - cmp r1, 0\n\ - beq _0803C224\n\ - movs r0, 0x2\n\ - bl CountAliveMons\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - cmp r0, 0x2\n\ - bne _0803C224\n\ - adds r0, r5, 0\n\ - movs r1, 0x3\n\ - bl __divsi3\n\ - lsls r5, r0, 1\n\ - b _0803C22A\n\ - .align 2, 0\n\ -_0803C21C: .4byte gStatStageRatios\n\ -_0803C220: .4byte gBattleTypeFlags\n\ -_0803C224:\n\ - lsrs r0, r5, 31\n\ - adds r0, r5, r0\n\ - asrs r5, r0, 1\n\ -_0803C22A:\n\ - ldr r0, _0803C2A4 @ =gBattleTypeFlags\n\ - ldrh r1, [r0]\n\ - movs r0, 0x1\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _0803C25C\n\ - ldr r0, _0803C2A8 @ =gBattleMoves\n\ - ldr r2, [sp, 0x8]\n\ - lsls r1, r2, 1\n\ - adds r1, r2\n\ - lsls r1, 2\n\ - adds r1, r0\n\ - ldrb r0, [r1, 0x6]\n\ - cmp r0, 0x8\n\ - bne _0803C25C\n\ - movs r0, 0x2\n\ - bl CountAliveMons\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - cmp r0, 0x2\n\ - bne _0803C25C\n\ - lsrs r0, r5, 31\n\ - adds r0, r5, r0\n\ - asrs r5, r0, 1\n\ -_0803C25C:\n\ - movs r0, 0\n\ - str r0, [sp]\n\ - movs r0, 0xE\n\ - movs r1, 0\n\ - movs r2, 0xD\n\ - movs r3, 0\n\ - bl AbilityBattleEffects\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - cmp r0, 0\n\ - bne _0803C30C\n\ - str r0, [sp]\n\ - movs r0, 0xE\n\ - movs r1, 0\n\ - movs r2, 0x4D\n\ - movs r3, 0\n\ - bl AbilityBattleEffects\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - bne _0803C30C\n\ - ldr r2, _0803C2AC @ =gBattleWeather\n\ - ldrh r1, [r2]\n\ - movs r0, 0x1\n\ - ands r0, r1\n\ - adds r4, r2, 0\n\ - cmp r0, 0\n\ - beq _0803C2C4\n\ - mov r3, r9\n\ - cmp r3, 0xA\n\ - beq _0803C2B0\n\ - cmp r3, 0xB\n\ - beq _0803C2B8\n\ - b _0803C2C4\n\ - .align 2, 0\n\ -_0803C2A4: .4byte gBattleTypeFlags\n\ -_0803C2A8: .4byte gBattleMoves\n\ -_0803C2AC: .4byte gBattleWeather\n\ -_0803C2B0:\n\ - lsrs r0, r5, 31\n\ - adds r0, r5, r0\n\ - asrs r5, r0, 1\n\ - b _0803C2C4\n\ -_0803C2B8:\n\ - lsls r0, r5, 4\n\ - subs r0, r5\n\ - movs r1, 0xA\n\ - bl __divsi3\n\ - adds r5, r0, 0\n\ -_0803C2C4:\n\ - ldrh r1, [r4]\n\ - movs r0, 0x9F\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _0803C2DC\n\ - ldr r0, _0803C2F4 @ =gCurrentMove\n\ - ldrh r0, [r0]\n\ - cmp r0, 0x4C\n\ - bne _0803C2DC\n\ - lsrs r0, r5, 31\n\ - adds r0, r5, r0\n\ - asrs r5, r0, 1\n\ -_0803C2DC:\n\ - ldrh r1, [r4]\n\ - movs r0, 0x60\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _0803C30C\n\ - mov r6, r9\n\ - cmp r6, 0xA\n\ - beq _0803C2F8\n\ - cmp r6, 0xB\n\ - beq _0803C306\n\ - b _0803C30C\n\ - .align 2, 0\n\ -_0803C2F4: .4byte gCurrentMove\n\ -_0803C2F8:\n\ - lsls r0, r5, 4\n\ - subs r0, r5\n\ - movs r1, 0xA\n\ - bl __divsi3\n\ - adds r5, r0, 0\n\ - b _0803C30C\n\ -_0803C306:\n\ - lsrs r0, r5, 31\n\ - adds r0, r5, r0\n\ - asrs r5, r0, 1\n\ -_0803C30C:\n\ - ldr r1, _0803C344 @ =0x02017100\n\ - ldr r2, [sp, 0x10]\n\ - lsls r0, r2, 2\n\ - adds r0, r1\n\ - ldr r0, [r0]\n\ - movs r1, 0x1\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _0803C330\n\ - mov r3, r9\n\ - cmp r3, 0xA\n\ - bne _0803C330\n\ - lsls r0, r5, 4\n\ - subs r0, r5\n\ - movs r1, 0xA\n\ - bl __divsi3\n\ - adds r5, r0, 0\n\ -_0803C330:\n\ - adds r0, r5, 0x2\n\ - add sp, 0x2C\n\ - pop {r3-r5}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - mov r10, r5\n\ - pop {r4-r7}\n\ - pop {r1}\n\ - bx r1\n\ - .align 2, 0\n\ -_0803C344: .4byte 0x02017100\n\ - .syntax divided"); -} -#endif diff --git a/src/data/item_descriptions_de.h b/src/data/item_descriptions_de.h new file mode 100644 index 000000000..ba1147f9b --- /dev/null +++ b/src/data/item_descriptions_de.h @@ -0,0 +1,1392 @@ +static const u8 gItemDescription_MasterBall[] = _( + "Der beste BALL.\n" + "Fängt das POKéMON\n" + "garantiert."); + +static const u8 gItemDescription_UltraBall[] = _( + "BALL mit hoher Er-\n" + "folgsquote. Besser\n" + "als ein SUPERBALL."); + +static const u8 gItemDescription_GreatBall[] = _( + "BALL mit guter Er-\n" + "folgsquote. Besser\n" + "als ein POKéBALL."); + +static const u8 gItemDescription_PokeBall[] = _( + "Damit fängst\n" + "du wilde\n" + "POKéMON."); + +static const u8 gItemDescription_SafariBall[] = _( + "Ein BALL, der nur\n" + "in der SAFARI-ZONE\n" + "eingesetzt wird."); + +static const u8 gItemDescription_NetBall[] = _( + "BALL fängt POKéMON\n" + "des Typs WASSER\n" + "und KÄFER besser."); + +static const u8 gItemDescription_DiveBall[] = _( + "BALL fängt besser\n" + "POKéMON auf\n" + "dem Meeresgrund."); + +static const u8 gItemDescription_NestBall[] = _( + "BALL mit höherer\n" + "Erfolgsquote bei\n" + "schwachen POKéMON."); + +static const u8 gItemDescription_RepeatBall[] = _( + "BALL fängt besser\n" + "bereits gefangene\n" + "POKéMON."); + +static const u8 gItemDescription_TimerBall[] = _( + "BALL wird effekti-\n" + "ver, je länger der\n" + "Kampf dauert."); + +static const u8 gItemDescription_LuxuryBall[] = _( + "Behaglicher BALL,\n" + "der POKéMON\n" + "freundlicher macht."); + +static const u8 gItemDescription_PremierBall[] = _( + "Seltener BALL, als\n" + "Reminiszenz an ir-\n" + "gendein Ereignis."); + +static const u8 gItemDescription_Potion[] = _( + "Füllt die KP eines\n" + "POKéMON um\n" + "20 Punkte auf."); + +static const u8 gItemDescription_Antidote[] = _( + "Heilt Vergiftungen\n" + "bei POKéMON."); + +static const u8 gItemDescription_BurnHeal[] = _( + "Heilt Verbrennun-\n" + "gen bei POKéMON."); + +static const u8 gItemDescription_IceHeal[] = _( + "Taut POKéMON\n" + "wieder auf."); + +static const u8 gItemDescription_Awakening[] = _( + "Weckt schlafendes\n" + "POKéMON auf."); + +static const u8 gItemDescription_ParalyzeHeal[] = _( + "Heilt Paralyse\n" + "eines POKéMON."); + +static const u8 gItemDescription_FullRestore[] = _( + "Stellt KP und\n" + "Status eines\n" + "POKéMON wieder her."); + +static const u8 gItemDescription_MaxPotion[] = _( + "Füllt die KP\n" + "vollständig auf."); + +static const u8 gItemDescription_HyperPotion[] = _( + "Füllt die KP eines\n" + "POKéMON um\n" + "200 Punkte auf."); + +static const u8 gItemDescription_SuperPotion[] = _( + "Füllt die KP eines\n" + "POKéMON um\n" + "50 Punkte auf."); + +static const u8 gItemDescription_FullHeal[] = _( + "Beseitigt alle\n" + "Statusprobleme\n" + "eines POKéMON."); + +static const u8 gItemDescription_Revive[] = _( + "Belebt POKéMON\n" + "und füllt die KP zur\n" + "Hälfte wieder auf."); + +static const u8 gItemDescription_MaxRevive[] = _( + "Belebt POKéMON\n" + "und füllt KP voll-\n" + "ständig wieder auf."); + +static const u8 gItemDescription_FreshWater[] = _( + "Ein stilles Wasser,\n" + "das die KP um 50\n" + "Punkte auffüllt."); + +static const u8 gItemDescription_SodaPop[] = _( + "Ein Mineralwasser,\n" + "das die KP um 60\n" + "Punkte auffüllt."); + +static const u8 gItemDescription_Lemonade[] = _( + "Ein süßes Getränk,\n" + "das die KP um 80\n" + "Punkte auffüllt."); + +static const u8 gItemDescription_MoomooMilk[] = _( + "Vitaminreiche Milch,\n" + "die die KP um 100\n" + "Punkte auffüllt."); + +static const u8 gItemDescription_EnergyPowder[] = _( + "Ein bitteres Pulver,\n" + "das die KP um\n" + "50 Punkte auffüllt."); + +static const u8 gItemDescription_EnergyRoot[] = _( + "Eine bittere Wurzel,\n" + "die die KP um 200\n" + "Punkte auffüllt."); + +static const u8 gItemDescription_HealPowder[] = _( + "Ein bitteres Pulver,\n" + "das alle Statuspro-\n" + "bleme heilt."); + +static const u8 gItemDescription_RevivalHerb[] = _( + "Ein bitteres Kraut,\n" + "das besiegte\n" + "POKéMON belebt."); + +static const u8 gItemDescription_Ether[] = _( + "Füllt AP einer aus-\n" + "gewählten Attacke\n" + "um 10 Punkte auf."); + +static const u8 gItemDescription_MaxEther[] = _( + "Füllt AP einer aus-\n" + "gewählten Attacke\n" + "vollständig auf."); + +static const u8 gItemDescription_Elixir[] = _( + "Füllt alle AP\n" + "um 10 Punkte auf."); + +static const u8 gItemDescription_MaxElixir[] = _( + "Füllt alle AP eines\n" + "POKéMON voll-\n" + "ständig auf."); + +static const u8 gItemDescription_LavaCookie[] = _( + "Eine regionale Spe-\n" + "zialität. Heilt alle\n" + "Statusprobleme."); + +static const u8 gItemDescription_BlueFlute[] = _( + "Eine gläserne Flöte,\n" + "die schlafende\n" + "POKéMON aufweckt."); + +static const u8 gItemDescription_YellowFlute[] = _( + "Eine gläserne Flöte,\n" + "die verwirrte\n" + "POKéMON heilt."); + +static const u8 gItemDescription_RedFlute[] = _( + "Eine gläserne Flöte,\n" + "die POKéMON von\n" + "Anziehung heilt."); + +static const u8 gItemDescription_BlackFlute[] = _( + "Eine gläserne Flöte,\n" + "die wilde\n" + "POKéMON abhält."); + +static const u8 gItemDescription_WhiteFlute[] = _( + "Eine gläserne Flöte,\n" + "die wilde\n" + "POKéMON anzieht."); + +static const u8 gItemDescription_BerryJuice[] = _( + "Reiner Fruchtsaft,\n" + "der die KP um\n" + "20 Punkte auffüllt."); + +static const u8 gItemDescription_SacredAsh[] = _( + "Belebt und\n" + "erfrischt alle\n" + "besiegten POKéMON."); + +static const u8 gItemDescription_ShoalSalt[] = _( + "Salz, das sich tief\n" + "in der KÜSTEN- \n" + "HÖHLE befand."); + +static const u8 gItemDescription_ShoalShell[] = _( + "Muschelschale, die\n" + "sich in der KÜSTEN- \n" + "HÖHLE befand."); + +static const u8 gItemDescription_RedShard[] = _( + "Scherbe eines\n" + "antiken Relikts\n" + "von geringem Wert."); + +static const u8 gItemDescription_BlueShard[] = _( + "Scherbe eines\n" + "antiken Relikts\n" + "von geringem Wert."); + +static const u8 gItemDescription_YellowShard[] = _( + "Scherbe eines\n" + "antiken Relikts\n" + "von geringem Wert."); + +static const u8 gItemDescription_GreenShard[] = _( + "Scherbe eines\n" + "antiken Relikts\n" + "von geringem Wert."); + +static const u8 gItemDescription_HPUp[] = _( + "Hebt die KP\n" + "eines POKéMON."); + +static const u8 gItemDescription_Protein[] = _( + "Hebt den\n" + "ANGR.-Wert\n" + "eines POKéMON."); + +static const u8 gItemDescription_Iron[] = _( + "Hebt den\n" + "VERT.-Wert\n" + "eines POKéMON."); + +static const u8 gItemDescription_Carbos[] = _( + "Hebt den\n" + "INIT.-Wert\n" + "eines POKéMON."); + +static const u8 gItemDescription_Calcium[] = _( + "Hebt den\n" + "SP. ANGR.-Wert\n" + "eines POKéMON."); + +static const u8 gItemDescription_RareCandy[] = _( + "Hebt den Level\n" + "eines POKéMON\n" + "um eins an."); + +static const u8 gItemDescription_PPUp[] = _( + "Hebt die maximale\n" + "Anzahl der AP\n" + "einer Attacke."); + +static const u8 gItemDescription_Zinc[] = _( + "Hebt den\n" + "SP. VERT.-Wert\n" + "eines POKéMON."); + +static const u8 gItemDescription_PPMax[] = _( + "Maximiert die\n" + "Anzahl der AP\n" + "einer Attacke."); + +static const u8 gItemDescription_GuardSpec[] = _( + "Statusänderung\n" + "wird für einen\n" + "Kampf verhindert."); + +static const u8 gItemDescription_DireHit[] = _( + "Hebt die\n" + "Volltrefferquote\n" + "für einen Kampf."); + +static const u8 gItemDescription_XAttack[] = _( + "Hebt den\n" + "ANGR.-Wert\n" + "für einen Kampf."); + +static const u8 gItemDescription_XDefend[] = _( + "Hebt den\n" + "VERT.-Wert\n" + "für einen Kampf."); + +static const u8 gItemDescription_XSpeed[] = _( + "Hebt den\n" + "INIT.-Wert\n" + "für einen Kampf."); + +static const u8 gItemDescription_XAccuracy[] = _( + "Hebt die\n" + "GENAUIGKEIT\n" + "für einen Kampf."); + +static const u8 gItemDescription_XSpecial[] = _( + "Hebt den\n" + "SP. ANGR.-Wert\n" + "für einen Kampf."); + +static const u8 gItemDescription_PokeDoll[] = _( + "Ermöglicht Flucht\n" + "im Kampf gegen\n" + "wilde POKéMON."); + +static const u8 gItemDescription_FluffyTail[] = _( + "Entfliehe damit\n" + "jedem Kampf mit ei-\n" + "nem wilden POKéMON."); + +static const u8 gItemDescription_SuperRepel[] = _( + "Hält 200 Schritte\n" + "lang schwache,\n" + "wilde POKéMON ab."); + +static const u8 gItemDescription_MaxRepel[] = _( + "Hält 250 Schritte\n" + "lang schwache,\n" + "wilde POKéMON ab."); + +static const u8 gItemDescription_EscapeRope[] = _( + "Ermöglicht die\n" + "Flucht aus Höhlen\n" + "oder Ähnlichem."); + +static const u8 gItemDescription_Repel[] = _( + "Hält 100 Schritte\n" + "lang schwache,\n" + "wilde POKéMON ab."); + +static const u8 gItemDescription_SunStone[] = _( + "Löst bei bestimm-\n" + "ten POKéMON die\n" + "Entwicklung aus."); + +static const u8 gItemDescription_MoonStone[] = _( + "Löst bei bestimm-\n" + "ten POKéMON die\n" + "Entwicklung aus."); + +static const u8 gItemDescription_FireStone[] = _( + "Löst bei bestimm-\n" + "ten POKéMON die\n" + "Entwicklung aus."); + +static const u8 gItemDescription_ThunderStone[] = _( + "Löst bei bestimm-\n" + "ten POKéMON die\n" + "Entwicklung aus."); + +static const u8 gItemDescription_WaterStone[] = _( + "Löst bei bestimm-\n" + "ten POKéMON die\n" + "Entwicklung aus."); + +static const u8 gItemDescription_LeafStone[] = _( + "Löst bei bestimm-\n" + "ten POKéMON die\n" + "Entwicklung aus."); + +static const u8 gItemDescription_TinyMushroom[] = _( + "Ein gemeiner\n" + "Pilz von \n" + "geringem Wert."); + +static const u8 gItemDescription_BigMushroom[] = _( + "Ein seltener\n" + "Pilz von \n" + "hohem Wert."); + +static const u8 gItemDescription_Pearl[] = _( + "Eine hübsche Perle\n" + "von geringem Wert."); + +static const u8 gItemDescription_BigPearl[] = _( + "Schöne, große Per-\n" + "le, die einen hohen\n" + "Preis erzielen kann."); + +static const u8 gItemDescription_Stardust[] = _( + "Schöner, roter\n" + "Sand, der von\n" + "großem Wert ist."); + +static const u8 gItemDescription_StarPiece[] = _( + "Roter Edelstein,\n" + "der einen hohen\n" + "Preis erzielen kann."); + +static const u8 gItemDescription_Nugget[] = _( + "Ein Barren aus pu-\n" + "rem Gold, der von\n" + "großem Wert ist."); + +static const u8 gItemDescription_HeartScale[] = _( + "Hübsche Schuppe,\n" + "höchst begehrt\n" + "bei Sammlern."); + +static const u8 gItemDescription_OrangeMail[] = _( + "BRIEF (Tragen) mit \n" + "ZIGZACHS-\n" + "Aufdruck."); + +static const u8 gItemDescription_HarborMail[] = _( + "BRIEF (Tragen) mit \n" + "WINGULL-\n" + "Aufdruck."); + +static const u8 gItemDescription_GlitterMail[] = _( + "BRIEF (Tragen) mit \n" + "PIKACHU-\n" + "Aufdruck."); + +static const u8 gItemDescription_MechMail[] = _( + "BRIEF (Tragen) mit \n" + "MAGNETILO-\n" + "Aufdruck."); + +static const u8 gItemDescription_WoodMail[] = _( + "BRIEF (Tragen) mit \n" + "BUMMELZ-\n" + "Aufdruck."); + +static const u8 gItemDescription_WaveMail[] = _( + "BRIEF (Tragen) mit \n" + "WAILMER-\n" + "Aufdruck."); + +static const u8 gItemDescription_BeadMail[] = _( + "BRIEF mit Abbildung\n" + "des POKéMON, das\n" + "ihn trägt."); + +static const u8 gItemDescription_ShadowMail[] = _( + "BRIEF (Tragen) mit \n" + "ZWIRRLICHT-\n" + "Aufdruck."); + +static const u8 gItemDescription_TropicMail[] = _( + "BRIEF (Tragen) mit \n" + "BLUBELLA-\n" + "Aufdruck."); + +static const u8 gItemDescription_DreamMail[] = _( + "BRIEF mit Abbildung\n" + "des POKéMON, das\n" + "ihn trägt."); + +static const u8 gItemDescription_FabMail[] = _( + "BRIEF (Tragen) mit \n" + "edlem Aufdruck."); + +static const u8 gItemDescription_RetroMail[] = _( + "BRIEF mit den Ab-\n" + "bildungen dreier\n" + "POKéMON-Gesichter."); + +static const u8 gItemDescription_CheriBerry[] = _( + "Item (Tragen) be-\n" + "wirkt Selbstheilung\n" + "bei Paralyse."); + +static const u8 gItemDescription_ChestoBerry[] = _( + "Item (Tragen)\n" + "weckt schlafendes\n" + "POKéMON im Kampf."); + +static const u8 gItemDescription_PechaBerry[] = _( + "Item (Tragen) be-\n" + "wirkt Selbstheilung\n" + "bei Vergiftung."); + +static const u8 gItemDescription_RawstBerry[] = _( + "Item (Tragen) be-\n" + "wirkt Selbstheilung\n" + "bei Verbrennung."); + +static const u8 gItemDescription_AspearBerry[] = _( + "Item (Tragen) be-\n" + "wirkt Selbstheilung\n" + "bei Frost."); + +static const u8 gItemDescription_LeppaBerry[] = _( + "Item (Tragen) füllt\n" + "AP im Kampf um\n" + "10 Punkte auf."); + +static const u8 gItemDescription_OranBerry[] = _( + "Item (Tragen) füllt\n" + "KP im Kampf um\n" + "10 Punkte auf."); + +static const u8 gItemDescription_PersimBerry[] = _( + "Item (Tragen) be-\n" + "wirkt Selbstheilung\n" + "bei Verwirrung."); + +static const u8 gItemDescription_LumBerry[] = _( + "Item (Tragen) be-\n" + "wirkt Selbstheilung\n" + "bei Statusproblem."); + +static const u8 gItemDescription_SitrusBerry[] = _( + "Item (Tragen) füllt\n" + "KP im Kampf um\n" + "30 Punkte auf."); + +static const u8 gItemDescription_FigyBerry[] = _( + "Item (Tragen) füllt\n" + "im Kampf KP auf, be-\n" + "wirkt evtl. Verwirr."); + +static const u8 gItemDescription_WikiBerry[] = _( + "Item (Tragen) füllt\n" + "KP auf, bewirkt\n" + "evtl. Verwirrung."); + +static const u8 gItemDescription_MagoBerry[] = _( + "Item (Tragen) füllt\n" + "KP auf, bewirkt\n" + "evtl. Verwirrung."); + +static const u8 gItemDescription_AguavBerry[] = _( + "Item (Tragen) füllt\n" + "KP auf, bewirkt\n" + "evtl. Verwirrung."); + +static const u8 gItemDescription_IapapaBerry[] = _( + "Item (Tragen) füllt\n" + "KP auf, bewirkt\n" + "evtl. Verwirrung."); + +static const u8 gItemDescription_RazzBerry[] = _( + "Säe {POKEBLOCK}-Zutat\n" + "in Lehmboden, damit\n" + "HIMMIH wächst."); + +static const u8 gItemDescription_BlukBerry[] = _( + "Säe {POKEBLOCK}-Zutat\n" + "in Lehmboden, damit\n" + "MORB wächst."); + +static const u8 gItemDescription_NanabBerry[] = _( + "Säe {POKEBLOCK}-Zutat\n" + "in Lehmboden, damit\n" + "NANAB wächst."); + +static const u8 gItemDescription_WepearBerry[] = _( + "Säe {POKEBLOCK}-Zutat\n" + "in Lehmboden, damit\n" + "NIRBE wächst."); + +static const u8 gItemDescription_PinapBerry[] = _( + "Säe {POKEBLOCK}-Zutat\n" + "in Lehmboden, damit\n" + "SANANA wächst."); + +static const u8 gItemDescription_PomegBerry[] = _( + "Säe {POKEBLOCK}-Zutat\n" + "in Lehmboden, damit\n" + "GRANA wächst."); + +static const u8 gItemDescription_KelpsyBerry[] = _( + "Säe {POKEBLOCK}-Zutat\n" + "in Lehmboden, damit\n" + "SETANG wächst."); + +static const u8 gItemDescription_QualotBerry[] = _( + "Säe {POKEBLOCK}-Zutat\n" + "in Lehmboden, damit\n" + "QUALOT wächst."); + +static const u8 gItemDescription_HondewBerry[] = _( + "Säe {POKEBLOCK}-Zutat\n" + "in Lehmboden, damit\n" + "HONMEL wächst."); + +static const u8 gItemDescription_GrepaBerry[] = _( + "Säe {POKEBLOCK}-Zutat\n" + "in Lehmboden, damit\n" + "LABRUS wächst."); + +static const u8 gItemDescription_TamatoBerry[] = _( + "Säe {POKEBLOCK}-Zutat\n" + "in Lehmboden, damit\n" + "TAMOT wächst."); + +static const u8 gItemDescription_CornnBerry[] = _( + "Säe {POKEBLOCK}-Zutat\n" + "in Lehmboden, damit\n" + "SAIM wächst."); + +static const u8 gItemDescription_MagostBerry[] = _( + "Säe {POKEBLOCK}-Zutat\n" + "in Lehmboden, damit\n" + "MAGOST wächst."); + +static const u8 gItemDescription_RabutaBerry[] = _( + "Säe {POKEBLOCK}-Zutat\n" + "in Lehmboden, damit\n" + "RABUTA wächst."); + +static const u8 gItemDescription_NomelBerry[] = _( + "Säe {POKEBLOCK}-Zutat\n" + "in Lehmboden, damit\n" + "TRONZI wächst."); + +static const u8 gItemDescription_SpelonBerry[] = _( + "Säe {POKEBLOCK}-Zutat\n" + "in Lehmboden, damit\n" + "KIWAN wächst."); + +static const u8 gItemDescription_PamtreBerry[] = _( + "Säe {POKEBLOCK}-Zutat\n" + "in Lehmboden, damit\n" + "PALLM wächst."); + +static const u8 gItemDescription_WatmelBerry[] = _( + "Säe {POKEBLOCK}-Zutat\n" + "in Lehmboden, damit\n" + "WASMEL wächst."); + +static const u8 gItemDescription_DurinBerry[] = _( + "Säe {POKEBLOCK}-Zutat\n" + "in Lehmboden, damit\n" + "DURIN wächst."); + +static const u8 gItemDescription_BelueBerry[] = _( + "Säe {POKEBLOCK}-Zutat\n" + "in Lehmboden, damit\n" + "MYRTIL wächst."); + +static const u8 gItemDescription_LiechiBerry[] = _( + "Item (Tragen) hebt\n" + "ANGR.-Wert in einer\n" + "Notlage."); + +static const u8 gItemDescription_GanlonBerry[] = _( + "Item (Tragen) hebt\n" + "VERT.-Wert in einer\n" + "Notlage."); + +static const u8 gItemDescription_SalacBerry[] = _( + "Item (Tragen) hebt\n" + "INIT.-Wert in einer\n" + "Notlage."); + +static const u8 gItemDescription_PetayaBerry[] = _( + "Item (Tragen) hebt\n" + "SP. ANGR.-Wert\n" + "in einer Notlage."); + +static const u8 gItemDescription_ApicotBerry[] = _( + "Item (Tragen) hebt\n" + "SP. VERT.-Wert\n" + "in einer Notlage."); + +static const u8 gItemDescription_LansatBerry[] = _( + "Item (Tragen) hebt\n" + "Volltrefferquote\n" + "in einer Notlage."); + +static const u8 gItemDescription_StarfBerry[] = _( + "Item (Tragen) hebt\n" + "einen Statuswert\n" + "in einer Notlage."); + +static const u8 gItemDescription_EnigmaBerry[] = _( + "Säe {POKEBLOCK}-Zutat\n" + "in Lehmboden, damit\n" + "Mysterium wächst."); + +static const u8 gItemDescription_BrightPowder[] = _( + "Item (Tragen)\n" + "senkt die Genauig-\n" + "keit des Gegners."); + +static const u8 gItemDescription_WhiteHerb[] = _( + "Item (Tragen) hebt\n" + "jede Statusverän-\n" + "derung auf."); + +static const u8 gItemDescription_MachoBrace[] = _( + "Item (Tragen) för-\n" + "dert Wachstum,\n" + "aber senkt INIT."); + +static const u8 gItemDescription_ExpShare[] = _( + "Item (Tragen) teilt\n" + "die Kampf-EP."); + +static const u8 gItemDescription_QuickClaw[] = _( + "Item (Tragen) hebt\n" + "die Erstschlag-\n" + "quote."); + +static const u8 gItemDescription_SootheBell[] = _( + "Item (Tragen) be-\n" + "sänftigt und för-\n" + "dert Sympathie."); + +static const u8 gItemDescription_MentalHerb[] = _( + "Item (Tragen) er-\n" + "löst POKéMON von\n" + "der Anziehung."); + +static const u8 gItemDescription_ChoiceBand[] = _( + "Stärkt eine Atta-\n" + "cke. Aber nur diese\n" + "ist einsetzbar."); + +static const u8 gItemDescription_KingsRock[] = _( + "Item (Tragen) kann\n" + "Gegner zurück-\n" + "weichen lassen."); + +static const u8 gItemDescription_SilverPowder[] = _( + "Item (Tragen) ver-\n" + "bessert KÄFER-\n" + "Attacken."); + +static const u8 gItemDescription_AmuletCoin[] = _( + "Doppelter Geldbe-\n" + "trag, wenn Träger \n" + "am Kampf teilnimmt."); + +static const u8 gItemDescription_CleanseTag[] = _( + "Item (Tragen) kann\n" + "wilde POKéMON\n" + "abhalten."); + +static const u8 gItemDescription_SoulDew[] = _( + "Item (Tragen) hebt\n" + "SP.ANG & SP.VER von\n" + "LATIOS & LATIAS."); + +static const u8 gItemDescription_DeepSeaTooth[] = _( + "Item (Tragen) hebt\n" + "SP. ANGR. von\n" + "PERLU."); + +static const u8 gItemDescription_DeepSeaScale[] = _( + "Item (Tragen) hebt\n" + "SP. VERT. von\n" + "PERLU."); + +static const u8 gItemDescription_SmokeBall[] = _( + "Item (Tragen) er-\n" + "möglicht Flucht vor\n" + "wilden POKéMON."); + +static const u8 gItemDescription_Everstone[] = _( + "Wundersamer Stein\n" + "zum Tragen. Bewirkt\n" + "Entwicklungsstopp."); + +static const u8 gItemDescription_FocusBand[] = _( + "Item (Tragen) kann\n" + "manchmal K.O.\n" + "verhindern."); + +static const u8 gItemDescription_LuckyEgg[] = _( + "Item (Tragen)\n" + "erhöht im Kampf er-\n" + "haltene Extra-EP."); + +static const u8 gItemDescription_ScopeLens[] = _( + "Item (Tragen)\n" + "erhöht die\n" + "Volltrefferquote."); + +static const u8 gItemDescription_MetalCoat[] = _( + "Item (Tragen)\n" + "verstärkt STAHL-\n" + "Attacken."); + +static const u8 gItemDescription_Leftovers[] = _( + "Item (Tragen) füllt\n" + "im Kampf langsam\n" + "KP wieder auf."); + +static const u8 gItemDescription_DragonScale[] = _( + "Seltsame Haut zum\n" + "Tragen für POKéMON\n" + "des Typs DRACHEN."); + +static const u8 gItemDescription_LightBall[] = _( + "Item (Tragen)\n" + "erhöht PIKACHUS\n" + "SP. ANGR."); + +static const u8 gItemDescription_SoftSand[] = _( + "Item (Tragen)\n" + "verstärkt BODEN-\n" + "Attacken."); + +static const u8 gItemDescription_HardStone[] = _( + "Item (Tragen)\n" + "verstärkt GESTEIN-\n" + "Attacken."); + +static const u8 gItemDescription_MiracleSeed[] = _( + "Item (Tragen)\n" + "verstärkt PFLAN-\n" + "ZEN-Attacken."); + +static const u8 gItemDescription_BlackGlasses[] = _( + "Item (Tragen)\n" + "verstärkt UNLICHT-\n" + "Attacken."); + +static const u8 gItemDescription_BlackBelt[] = _( + "Item (Tragen)\n" + "verstärkt KAMPF-\n" + "Attacken."); + +static const u8 gItemDescription_Magnet[] = _( + "Item (Tragen)\n" + "verstärkt ELEKTRO-\n" + "Attacken."); + +static const u8 gItemDescription_MysticWater[] = _( + "Item (Tragen)\n" + "verstärkt WASSER-\n" + "Attacken."); + +static const u8 gItemDescription_SharpBeak[] = _( + "Item (Tragen)\n" + "verstärkt FLUG-\n" + "Attacken."); + +static const u8 gItemDescription_PoisonBarb[] = _( + "Item (Tragen)\n" + "verstärkt GIFT-\n" + "Attacken."); + +static const u8 gItemDescription_NeverMeltIce[] = _( + "Item (Tragen)\n" + "verstärkt EIS-\n" + "Attacken."); + +static const u8 gItemDescription_SpellTag[] = _( + "Item (Tragen)\n" + "verstärkt GEIST-\n" + "Attacken."); + +static const u8 gItemDescription_TwistedSpoon[] = _( + "Item (Tragen)\n" + "verstärkt PSYCHO-\n" + "Attacken."); + +static const u8 gItemDescription_Charcoal[] = _( + "Item (Tragen)\n" + "verstärkt FEUER-\n" + "Attacken."); + +static const u8 gItemDescription_DragonFang[] = _( + "Item (Tragen)\n" + "verstärkt DRACHEN-\n" + "Attacken."); + +static const u8 gItemDescription_SilkScarf[] = _( + "Item (Tragen)\n" + "verstärkt NORMAL-\n" + "Attacken."); + +static const u8 gItemDescription_UpGrade[] = _( + "Eine mysteriöse\n" + "Box der SILPH CO."); + +static const u8 gItemDescription_ShellBell[] = _( + "Item (Tragen) füllt\n" + "im Kampf langsam \n" + "KP wieder auf."); + +static const u8 gItemDescription_SeaIncense[] = _( + "Item (Tragen)\n" + "verstärkt WASSER-\n" + "Attacken."); + +static const u8 gItemDescription_LaxIncense[] = _( + "Item (Tragen)\n" + "senkt Genauigkeit\n" + "des Gegners."); + +static const u8 gItemDescription_LuckyPunch[] = _( + "Item (Tragen)\n" + "erhöht CHANEIRAS\n" + "Volltrefferquote."); + +static const u8 gItemDescription_MetalPowder[] = _( + "Item (Tragen)\n" + "erhöht VERT.-Wert\n" + "von DITTO."); + +static const u8 gItemDescription_ThickClub[] = _( + "Irgendeine Art\n" + "Knochen von\n" + "geringem Wert."); + +static const u8 gItemDescription_Stick[] = _( + "Gemeiner Lauch,\n" + "der nur von\n" + "geringem Wert ist."); + +static const u8 gItemDescription_RedScarf[] = _( + "Item (Tragen) hebt\n" + "COOL.-Wert für den\n" + "WETTBEWERB."); + +static const u8 gItemDescription_BlueScarf[] = _( + "Item (Tragen) hebt\n" + "SCHÖN.-Wert für den\n" + "WETTBEWERB."); + +static const u8 gItemDescription_PinkScarf[] = _( + "Item (Tragen) hebt\n" + "ANMUT-Wert für den\n" + "WETTBEWERB."); + +static const u8 gItemDescription_GreenScarf[] = _( + "Item (Tragen) hebt\n" + "KLUG.-Wert für den\n" + "WETTBEWERB."); + +static const u8 gItemDescription_YellowScarf[] = _( + "Item (Tragen) hebt\n" + "STÄRKE-Wert für\n" + "den WETTBEWERB."); + +static const u8 gItemDescription_MachBike[] = _( + "Klapprad, das dop-\n" + "pelt so schnell ist\n" + "wie ein Fußgänger."); + +static const u8 gItemDescription_CoinCase[] = _( + "Kann bis zu 9.999\n" + "MÜNZEN aufnehmen."); + +static const u8 gItemDescription_Itemfinder[] = _( + "Ein Gerät, das ver-\n" + "borgene Items via \n" + "Schallwellen ortet."); + +static const u8 gItemDescription_OldRod[] = _( + "Damit kannst du in\n" + "jedem Gewässer\n" + "POKéMON angeln."); + +static const u8 gItemDescription_GoodRod[] = _( + "Eine recht gute\n" + "Angel zum\n" + "POKéMON-Fischen."); + +static const u8 gItemDescription_SuperRod[] = _( + "Die beste Angel,\n" + "um nach POKéMON\n" + "zu fischen."); + +static const u8 gItemDescription_SSTicket[] = _( + "Ein Ticket zur\n" + "Fahrt auf\n" + "einer Fähre."); + +static const u8 gItemDescription_ContestPass[] = _( + "Ausweis zur Teil-\n" + "nahme an POKéMON- \n" + "WETTBEWERBEN."); + +static const u8 gItemDescription_WailmerPail[] = _( + "Ein Gegenstand zum\n" + "Gießen von Pflan-\n" + "zen wie BEEREN."); + +static const u8 gItemDescription_DevonGoods[] = _( + "Päckchen, das Ma-\n" + "schinenteile von\n" + "DEVON enthält."); + +static const u8 gItemDescription_SootSack[] = _( + "Beutel zum Sammeln\n" + "und Aufbewahren\n" + "von Vulkanasche."); + +static const u8 gItemDescription_BasementKey[] = _( + "Schlüssel für NEU\n" + "MALVENFROH unter\n" + "MALVENFROH CITY."); + +static const u8 gItemDescription_AcroBike[] = _( + "Klapprad ermög-\n" + "licht Sprünge und\n" + "Wheelies."); + +static const u8 gItemDescription_PokeblockCase[] = _( + "Box für {POKEBLOCK},\n" + "die im BEERENMIXER\n" + "hergestellt werden."); + +static const u8 gItemDescription_Letter[] = _( + "Brief an TROY\n" + "vom PRÄSIDENTEN\n" + "der DEVON CORP."); + +static const u8 gItemDescription_EonTicket[] = _( + "Bootsticket zu\n" + "einer fernen Insel\n" + "im Süden."); + +static const u8 gItemDescription_RedOrb[] = _( + "Rot glühende Kugel,\n" + "die eine uralte\n" + "Macht bergen soll."); + +static const u8 gItemDescription_BlueOrb[] = _( + "Blau glühende Kugel,\n" + "die eine uralte\n" + "Macht bergen soll."); + +static const u8 gItemDescription_Scanner[] = _( + "Ein Gerät, das\n" + "im SCHIFFSWRACK\n" + "gefunden wurde."); + +static const u8 gItemDescription_GoGoggles[] = _( + "Schicke Brille, die\n" + "die Augen vor Sand-\n" + "stürmen schützt."); + +static const u8 gItemDescription_Meteorite[] = _( + "Meteorit. Fundort:\n" + "METEORFÄLLE."); + +static const u8 gItemDescription_Room1Key[] = _( + "Schlüssel zur Tür\n" + "einer Kabine auf\n" + "dem SCHIFFSWRACK."); + +static const u8 gItemDescription_Room2Key[] = _( + "Schlüssel zur Tür\n" + "einer Kabine auf\n" + "dem SCHIFFSWRACK."); + +static const u8 gItemDescription_Room4Key[] = _( + "Schlüssel zur Tür\n" + "einer Kabine auf\n" + "dem SCHIFFSWRACK."); + +static const u8 gItemDescription_Room6Key[] = _( + "Schlüssel zur Tür\n" + "einer Kabine auf\n" + "dem SCHIFFSWRACK."); + +static const u8 gItemDescription_StorageKey[] = _( + "Schlüssel zum\n" + "Lagerraum auf\n" + "dem SCHIFFSWRACK."); + +static const u8 gItemDescription_RootFossil[] = _( + "Fossil eines ural-\n" + "ten POKéMON, das in\n" + "der Tiefsee lebte."); + +static const u8 gItemDescription_ClawFossil[] = _( + "Fossil eines ural-\n" + "ten POKéMON, das in\n" + "der Tiefsee lebte."); + +static const u8 gItemDescription_DevonScope[] = _( + "Gerät von DEVON, \n" + "das unsichtbare\n" + "POKéMON entlarvt."); + +static const u8 gItemDescription_TM01[] = _( + "Stark. POKéMON er-\n" + "schrickt vielleicht\n" + "bei gegn. Attacke."); + +static const u8 gItemDescription_TM02[] = _( + "Gegner wird mit\n" + "langen, scharfen\n" + "Krallen attackiert."); + +static const u8 gItemDescription_TM03[] = _( + "Eine Ultraschall-\n" + "welle, die den Geg-\n" + "ner verwirren kann."); + +static const u8 gItemDescription_TM04[] = _( + "Verstärkt SP. ANGR.\n" + "und SP. VERT. durch\n" + "Konzentration."); + +static const u8 gItemDescription_TM05[] = _( + "Brüller schlägt Geg-\n" + "ner in die Flucht \n" + "und beendet Kampf."); + +static const u8 gItemDescription_TM06[] = _( + "Vergiftet den Geg-\n" + "ner und schadet \n" + "ihm zunehmend."); + +static const u8 gItemDescription_TM07[] = _( + "Hagelsturm schadet\n" + "allen POKéMON außer\n" + "denen des Typs EIS."); + +static const u8 gItemDescription_TM08[] = _( + "Stärkt den Körper.\n" + "So steigt ANGR.-\n" + "und VERT.-Wert."); + +static const u8 gItemDescription_TM09[] = _( + "Bepflanzt den\n" + "Gegner mit 2 bis 5\n" + "Samen auf einmal."); + +static const u8 gItemDescription_TM10[] = _( + "Die Stärke dieser\n" + "Attacke hängt vom \n" + "jew. POKéMON ab."); + +static const u8 gItemDescription_TM11[] = _( + "Verstärkt FEUER-\n" + "Attacken über \n" + "5 Runden."); + +static const u8 gItemDescription_TM12[] = _( + "Reizt Geg. so, dass\n" + "er nur Angriffs-\n" + "attacken einsetzt."); + +static const u8 gItemDescription_TM13[] = _( + "Eisig kalter Strahl,\n" + "der den Gegner\n" + "einfrieren kann."); + +static const u8 gItemDescription_TM14[] = _( + "Eis- und Schnee- \n" + "Attacke, die Gegner\n" + "einfrieren kann."); + +static const u8 gItemDescription_TM15[] = _( + "Stark, muss sich\n" + "aber in der nächs-\n" + "ten Runde aufladen."); + +static const u8 gItemDescription_TM16[] = _( + "Wand aus Licht, die\n" + "Senkung des SP.\n" + "ANGR. verringert."); + +static const u8 gItemDescription_TM17[] = _( + "Schützt, könnte\n" + "aber bei häufigem\n" + "Einsatz versagen."); + +static const u8 gItemDescription_TM18[] = _( + "Verstärkt WASSER-\n" + "Attacken über\n" + "5 Runden."); + +static const u8 gItemDescription_TM19[] = _( + "Füllt KP um die Hälf-\n" + "te der zugefügten\n" + "Schadenspunkte."); + +static const u8 gItemDescription_TM20[] = _( + "Mystische Macht\n" + "verhindert Status-\n" + "veränderungen."); + +static const u8 gItemDescription_TM21[] = _( + "Je unbeliebter der\n" + "Trainer, desto grö-\n" + "ßer die Wirkung."); + +static const u8 gItemDescription_TM22[] = _( + "Erst wird Sonnen-\n" + "licht absorbiert,\n" + "dann erfolgt Angr."); + +static const u8 gItemDescription_TM23[] = _( + "Schlag mit harter\n" + "Rute. Kann gleichz.\n" + "VERT.-Wert senken."); + +static const u8 gItemDescription_TM24[] = _( + "Starke Elektro-\n" + "Attacke kann\n" + "Paralyse bewirken."); + +static const u8 gItemDescription_TM25[] = _( + "Mächtiger Donner-\n" + "schlag, der Paraly-\n" + "se bewirken kann."); + +static const u8 gItemDescription_TM26[] = _( + "Starkes Beben hat\n" + "keinen Einfluss auf\n" + "fliegende Gegner."); + +static const u8 gItemDescription_TM27[] = _( + "Je beliebter der\n" + "Trainer, desto grö-\n" + "ßer die Wirkung."); + +static const u8 gItemDescription_TM28[] = _( + "Erst gräbt sich An-\n" + "greifer ein, dann\n" + "erfolgt Angriff."); + +static const u8 gItemDescription_TM29[] = _( + "Starke PSYCHO-At-\n" + "tacke, die SP. VERT.\n" + "senken kann."); + +static const u8 gItemDescription_TM30[] = _( + "Dunkler Klumpen,\n" + "der SP. VERT.\n" + "senken kann."); + +static const u8 gItemDescription_TM31[] = _( + "Zerstört Barrieren\n" + "wie SCHUTZSCHILD,\n" + "fügt Schaden zu."); + +static const u8 gItemDescription_TM32[] = _( + "Virtueller Doppel-\n" + "gänger erhöht\n" + "den Flucht-Wert."); + +static const u8 gItemDescription_TM33[] = _( + "Wand aus Licht, die\n" + "physische Atta-\n" + "cken schwächt."); + +static const u8 gItemDescription_TM34[] = _( + "Fügt Gegner einen\n" + "Stromschlag zu,\n" + "der nie verfehlt."); + +static const u8 gItemDescription_TM35[] = _( + "Entfesselt Feuer-\n" + "strahl, der Gegner\n" + "verbrennen kann."); + +static const u8 gItemDescription_TM36[] = _( + "Bewirft Gegner mit\n" + "Matsch, der ihn\n" + "vergiften kann."); + +static const u8 gItemDescription_TM37[] = _( + "Sandsturm trifft\n" + "etliche Runden lang\n" + "die Kämpfenden."); + +static const u8 gItemDescription_TM38[] = _( + "Kraftvolle FEUER-\n" + "Attacke, die Gegner\n" + "verbrennen kann."); + +static const u8 gItemDescription_TM39[] = _( + "Stoppt GESTEIN-\n" + "Attacken. Kann\n" + "INIT.-Wert senken."); + +static const u8 gItemDescription_TM40[] = _( + "Eine extrem schnel-\n" + "le Attacke, die\n" + "unausweichlich ist."); + +static const u8 gItemDescription_TM41[] = _( + "Blockiert gerade\n" + "verwendete Atta-\n" + "cke des Gegners."); + +static const u8 gItemDescription_TM42[] = _( + "Stärkt ANGR.-Wert\n" + "bei Gift, Brand oder\n" + "Paralyse."); + +static const u8 gItemDescription_TM43[] = _( + "Die Umgebung\n" + "beeinflusst die Art\n" + "der Attacke."); + +static const u8 gItemDescription_TM44[] = _( + "POKéMON schläft\n" + "2 Runden. Füllt KP\n" + "und heilt Status."); + +static const u8 gItemDescription_TM45[] = _( + "Erschwert Angriff\n" + "auf Gegner des an-\n" + "deren Geschlechts."); + +static const u8 gItemDescription_TM46[] = _( + "Beim Angriff wird\n" + "Item des Gegners\n" + "evtl. gestohlen."); + +static const u8 gItemDescription_TM47[] = _( + "Den Gegner\n" + "treffen stählerne\n" + "Flügelschläge."); + +static const u8 gItemDescription_TM48[] = _( + "Austausch der\n" + "Fähigkeiten bei der\n" + "nächsten Attacke."); + +static const u8 gItemDescription_TM49[] = _( + "Stiehlt die\n" + "Effekte der gegne-\n" + "rischen Attacke."); + +static const u8 gItemDescription_TM50[] = _( + "Höchste Kraft,\n" + "aber senkt SP.\n" + "ANGR. enorm."); + +static const u8 gItemDescription_HM01[] = _( + "Gegner wird mit\n" + "klingenscharfen\n" + "Krallen attackiert."); + +static const u8 gItemDescription_HM02[] = _( + "PKMN fliegt hoch,\n" + "dann erfolgt rasan-\n" + "ter Luftangriff."); + +static const u8 gItemDescription_HM03[] = _( + "Eine riesige Flut-\n" + "welle ergießt sich\n" + "über dem Gegner."); + +static const u8 gItemDescription_HM04[] = _( + "Den Gegner trifft \n" + "ein energiegelade-\n" + "ner Kraftschlag."); + +static const u8 gItemDescription_HM05[] = _( + "Ein gleißender\n" + "Lichtstrahl, der\n" + "Genau. senken kann."); + +static const u8 gItemDescription_HM06[] = _( + "Steinbrecherische\n" + "Attacke, die VERT.-\n" + "Wert senken kann."); + +static const u8 gItemDescription_HM07[] = _( + "Mächtige Attacke,\n" + "die Wasserfälle\n" + "bezwingbar macht."); + +static const u8 gItemDescription_HM08[] = _( + "PKMN taucht ab,\n" + "dann erfolgt An-\n" + "griff aus der Tiefe."); + +static const u8 gItemDescription_Dummy[] = _(""); diff --git a/src/data/item_descriptions_en.h b/src/data/item_descriptions_en.h new file mode 100644 index 000000000..e07a5fc19 --- /dev/null +++ b/src/data/item_descriptions_en.h @@ -0,0 +1,1392 @@ +static const u8 gItemDescription_MasterBall[] = _( + "The best BALL that\n" + "catches a POKéMON\n" + "without fail."); + +static const u8 gItemDescription_UltraBall[] = _( + "A better BALL with\n" + "a higher catch rate\n" + "than a GREAT BALL."); + +static const u8 gItemDescription_GreatBall[] = _( + "A good BALL with a\n" + "higher catch rate\n" + "than a POKé BALL."); + +static const u8 gItemDescription_PokeBall[] = _( + "A tool used for\n" + "catching wild\n" + "POKéMON."); + +static const u8 gItemDescription_SafariBall[] = _( + "A special BALL that\n" + "is used only in the\n" + "SAFARI ZONE."); + +static const u8 gItemDescription_NetBall[] = _( + "A BALL that works\n" + "well on WATER- and\n" + "BUG-type POKéMON."); + +static const u8 gItemDescription_DiveBall[] = _( + "A BALL that works\n" + "better on POKéMON\n" + "on the ocean floor."); + +static const u8 gItemDescription_NestBall[] = _( + "A BALL that works\n" + "better on weaker\n" + "POKéMON."); + +static const u8 gItemDescription_RepeatBall[] = _( + "A BALL that works\n" + "better on POKéMON\n" + "caught before."); + +static const u8 gItemDescription_TimerBall[] = _( + "More effective as\n" + "more turns are\n" + "taken in battle."); + +static const u8 gItemDescription_LuxuryBall[] = _( + "A cozy BALL that\n" + "makes POKéMON\n" + "more friendly."); + +static const u8 gItemDescription_PremierBall[] = _( + "A rare BALL made\n" + "in commemoration\n" + "of some event."); + +static const u8 gItemDescription_Potion[] = _( + "Restores the HP of\n" + "a POKéMON by\n" + "20 points."); + +static const u8 gItemDescription_Antidote[] = _( + "Heals a poisoned\n" + "POKéMON."); + +static const u8 gItemDescription_BurnHeal[] = _( + "Heals POKéMON\n" + "of a burn."); + +static const u8 gItemDescription_IceHeal[] = _( + "Defrosts a frozen\n" + "POKéMON."); + +static const u8 gItemDescription_Awakening[] = _( + "Awakens a sleeping\n" + "POKéMON."); + +static const u8 gItemDescription_ParalyzeHeal[] = _( + "Heals a paralyzed\n" + "POKéMON."); + +static const u8 gItemDescription_FullRestore[] = _( + "Fully restores the\n" + "HP and status of a\n" + "POKéMON."); + +static const u8 gItemDescription_MaxPotion[] = _( + "Fully restores the\n" + "HP of a POKéMON."); + +static const u8 gItemDescription_HyperPotion[] = _( + "Restores the HP of\n" + "a POKéMON by\n" + "200 points."); + +static const u8 gItemDescription_SuperPotion[] = _( + "Restores the HP of\n" + "a POKéMON by\n" + "50 points."); + +static const u8 gItemDescription_FullHeal[] = _( + "Heals all the status\n" + "problems of one\n" + "POKéMON."); + +static const u8 gItemDescription_Revive[] = _( + "Revives a fainted\n" + "POKéMON with half\n" + "its HP."); + +static const u8 gItemDescription_MaxRevive[] = _( + "Revives a fainted\n" + "POKéMON with all\n" + "its HP."); + +static const u8 gItemDescription_FreshWater[] = _( + "A mineral water\n" + "that restores HP\n" + "by 50 points."); + +static const u8 gItemDescription_SodaPop[] = _( + "A fizzy soda drink\n" + "that restores HP\n" + "by 60 points."); + +static const u8 gItemDescription_Lemonade[] = _( + "A very sweet drink\n" + "that restores HP\n" + "by 80 points."); + +static const u8 gItemDescription_MoomooMilk[] = _( + "A nutritious milk\n" + "that restores HP\n" + "by 100 points."); + +static const u8 gItemDescription_EnergyPowder[] = _( + "A bitter powder\n" + "that restores HP\n" + "by 50 points."); + +static const u8 gItemDescription_EnergyRoot[] = _( + "A bitter root\n" + "that restores HP\n" + "by 200 points."); + +static const u8 gItemDescription_HealPowder[] = _( + "A bitter powder\n" + "that heals all\n" + "status problems."); + +static const u8 gItemDescription_RevivalHerb[] = _( + "A very bitter herb\n" + "that revives a\n" + "fainted POKéMON."); + +static const u8 gItemDescription_Ether[] = _( + "Restores the PP\n" + "of a selected move\n" + "by 10."); + +static const u8 gItemDescription_MaxEther[] = _( + "Fully restores the\n" + "PP of a selected\n" + "move."); + +static const u8 gItemDescription_Elixir[] = _( + "Restores the PP\n" + "of all moves by 10."); + +static const u8 gItemDescription_MaxElixir[] = _( + "Fully restores the\n" + "PP of a POKéMON’s\n" + "moves."); + +static const u8 gItemDescription_LavaCookie[] = _( + "A local specialty\n" + "that heals all\n" + "status problems."); + +static const u8 gItemDescription_BlueFlute[] = _( + "A glass flute that\n" + "awakens sleeping\n" + "POKéMON."); + +static const u8 gItemDescription_YellowFlute[] = _( + "A glass flute that\n" + "snaps POKéMON\n" + "out of confusion."); + +static const u8 gItemDescription_RedFlute[] = _( + "A glass flute that\n" + "snaps POKéMON\n" + "out of attraction."); + +static const u8 gItemDescription_BlackFlute[] = _( + "A glass flute that\n" + "keeps away wild\n" + "POKéMON."); + +static const u8 gItemDescription_WhiteFlute[] = _( + "A glass flute that\n" + "lures wild POKéMON."); + +static const u8 gItemDescription_BerryJuice[] = _( + "A 100% pure juice\n" + "that restores HP\n" + "by 20 points."); + +static const u8 gItemDescription_SacredAsh[] = _( + "Fully revives and\n" + "restores all\n" + "fainted POKéMON."); + +static const u8 gItemDescription_ShoalSalt[] = _( + "Salt obtained from\n" + "deep inside the\n" + "SHOAL CAVE."); + +static const u8 gItemDescription_ShoalShell[] = _( + "A seashell found\n" + "deep inside the\n" + "SHOAL CAVE."); + +static const u8 gItemDescription_RedShard[] = _( + "A shard from an\n" + "ancient item.\n" + "Can be sold cheaply."); + +static const u8 gItemDescription_BlueShard[] = _( + "A shard from an\n" + "ancient item.\n" + "Can be sold cheaply."); + +static const u8 gItemDescription_YellowShard[] = _( + "A shard from an\n" + "ancient item.\n" + "Can be sold cheaply."); + +static const u8 gItemDescription_GreenShard[] = _( + "A shard from an\n" + "ancient item.\n" + "Can be sold cheaply."); + +static const u8 gItemDescription_HPUp[] = _( + "Raises the HP of\n" + "one POKéMON."); + +static const u8 gItemDescription_Protein[] = _( + "Raises the stat\n" + "ATTACK of one\n" + "POKéMON."); + +static const u8 gItemDescription_Iron[] = _( + "Raises the stat\n" + "DEFENSE of one\n" + "POKéMON."); + +static const u8 gItemDescription_Carbos[] = _( + "Raises the stat\n" + "SPEED of one\n" + "POKéMON."); + +static const u8 gItemDescription_Calcium[] = _( + "Raises the stat\n" + "SP. ATK of one\n" + "POKéMON."); + +static const u8 gItemDescription_RareCandy[] = _( + "Raises the level\n" + "of a POKéMON by\n" + "one."); + +static const u8 gItemDescription_PPUp[] = _( + "Raises the maximum\n" + "PP of a selected\n" + "move."); + +static const u8 gItemDescription_Zinc[] = _( + "Raises the stat\n" + "SP. DEF of one\n" + "POKéMON."); + +static const u8 gItemDescription_PPMax[] = _( + "Raises the PP of a\n" + "move to its maximum\n" + "points."); + +static const u8 gItemDescription_GuardSpec[] = _( + "Prevents stat\n" + "reduction when\n" + "used in battle."); + +static const u8 gItemDescription_DireHit[] = _( + "Raises the\n" + "critical-hit ratio\n" + "during one battle."); + +static const u8 gItemDescription_XAttack[] = _( + "Raises the stat\n" + "ATTACK during one\n" + "battle."); + +static const u8 gItemDescription_XDefend[] = _( + "Raises the stat\n" + "DEFENSE during one\n" + "battle."); + +static const u8 gItemDescription_XSpeed[] = _( + "Raises the stat\n" + "SPEED during one\n" + "battle."); + +static const u8 gItemDescription_XAccuracy[] = _( + "Raises accuracy\n" + "of attack moves\n" + "during one battle."); + +static const u8 gItemDescription_XSpecial[] = _( + "Raises the stat\n" + "SP. ATK during one\n" + "battle."); + +static const u8 gItemDescription_PokeDoll[] = _( + "Use to flee from\n" + "any battle with\n" + "a wild POKéMON."); + +static const u8 gItemDescription_FluffyTail[] = _( + "Use to flee from\n" + "any battle with\n" + "a wild POKéMON."); + +static const u8 gItemDescription_SuperRepel[] = _( + "Repels weak wild\n" + "POKéMON for 200\n" + "steps."); + +static const u8 gItemDescription_MaxRepel[] = _( + "Repels weak wild\n" + "POKéMON for 250\n" + "steps."); + +static const u8 gItemDescription_EscapeRope[] = _( + "Use to escape\n" + "instantly from a\n" + "cave or a dungeon."); + +static const u8 gItemDescription_Repel[] = _( + "Repels weak wild\n" + "POKéMON for 100\n" + "steps."); + +static const u8 gItemDescription_SunStone[] = _( + "Makes certain\n" + "species of POKéMON\n" + "evolve."); + +static const u8 gItemDescription_MoonStone[] = _( + "Makes certain\n" + "species of POKéMON\n" + "evolve."); + +static const u8 gItemDescription_FireStone[] = _( + "Makes certain\n" + "species of POKéMON\n" + "evolve."); + +static const u8 gItemDescription_ThunderStone[] = _( + "Makes certain\n" + "species of POKéMON\n" + "evolve."); + +static const u8 gItemDescription_WaterStone[] = _( + "Makes certain\n" + "species of POKéMON\n" + "evolve."); + +static const u8 gItemDescription_LeafStone[] = _( + "Makes certain\n" + "species of POKéMON\n" + "evolve."); + +static const u8 gItemDescription_TinyMushroom[] = _( + "A plain, ordinary\n" + "mushroom.\n" + "Can be sold cheaply."); + +static const u8 gItemDescription_BigMushroom[] = _( + "A rare mushroom\n" + "that would sell at a\n" + "high price."); + +static const u8 gItemDescription_Pearl[] = _( + "A pretty pearl.\n" + "Can be sold cheaply."); + +static const u8 gItemDescription_BigPearl[] = _( + "A lovely large pearl\n" + "that would sell at a\n" + "high price."); + +static const u8 gItemDescription_Stardust[] = _( + "Beautiful red sand.\n" + "Can be sold at a\n" + "high price."); + +static const u8 gItemDescription_StarPiece[] = _( + "A red gem shard.\n" + "It would sell for a\n" + "very high price."); + +static const u8 gItemDescription_Nugget[] = _( + "A nugget of pure\n" + "gold. Can be sold at\n" + "a high price."); + +static const u8 gItemDescription_HeartScale[] = _( + "A lovely scale.\n" + "It is coveted by\n" + "collectors."); + +static const u8 gItemDescription_OrangeMail[] = _( + "A ZIGZAGOON-print\n" + "MAIL to be held by\n" + "a POKéMON."); + +static const u8 gItemDescription_HarborMail[] = _( + "A WINGULL-print\n" + "MAIL to be held by\n" + "a POKéMON."); + +static const u8 gItemDescription_GlitterMail[] = _( + "A PIKACHU-print\n" + "MAIL to be held by\n" + "a POKéMON."); + +static const u8 gItemDescription_MechMail[] = _( + "A MAGNEMITE-print\n" + "MAIL to be held by\n" + "a POKéMON."); + +static const u8 gItemDescription_WoodMail[] = _( + "A SLAKOTH-print\n" + "MAIL to be held by\n" + "a POKéMON."); + +static const u8 gItemDescription_WaveMail[] = _( + "A WAILMER-print\n" + "MAIL to be held by\n" + "a POKéMON."); + +static const u8 gItemDescription_BeadMail[] = _( + "MAIL featuring a\n" + "sketch of the\n" + "holding POKéMON."); + +static const u8 gItemDescription_ShadowMail[] = _( + "A DUSKULL-print\n" + "MAIL to be held by\n" + "a POKéMON."); + +static const u8 gItemDescription_TropicMail[] = _( + "A BELLOSSOM-print\n" + "MAIL to be held by\n" + "a POKéMON."); + +static const u8 gItemDescription_DreamMail[] = _( + "MAIL featuring a\n" + "sketch of the\n" + "holding POKéMON."); + +static const u8 gItemDescription_FabMail[] = _( + "A gorgeous-print\n" + "MAIL to be held\n" + "by a POKéMON."); + +static const u8 gItemDescription_RetroMail[] = _( + "MAIL featuring the\n" + "drawings of three\n" + "POKéMON."); + +static const u8 gItemDescription_CheriBerry[] = _( + "A hold item that\n" + "heals paralysis\n" + "in battle."); + +static const u8 gItemDescription_ChestoBerry[] = _( + "A hold item that\n" + "awakens POKéMON\n" + "in battle."); + +static const u8 gItemDescription_PechaBerry[] = _( + "A hold item that\n" + "heals poisoning\n" + "in battle."); + +static const u8 gItemDescription_RawstBerry[] = _( + "A hold item that\n" + "heals a burn in\n" + "battle."); + +static const u8 gItemDescription_AspearBerry[] = _( + "A hold item that\n" + "defrosts POKéMON\n" + "in battle."); + +static const u8 gItemDescription_LeppaBerry[] = _( + "A hold item that\n" + "restores 10 PP in\n" + "battle."); + +static const u8 gItemDescription_OranBerry[] = _( + "A hold item that\n" + "restores 10 HP in\n" + "battle."); + +static const u8 gItemDescription_PersimBerry[] = _( + "A hold item that\n" + "heals confusion\n" + "in battle."); + +static const u8 gItemDescription_LumBerry[] = _( + "A hold item that\n" + "heals status in\n" + "battle."); + +static const u8 gItemDescription_SitrusBerry[] = _( + "A hold item that\n" + "restores 30 HP in\n" + "battle."); + +static const u8 gItemDescription_FigyBerry[] = _( + "A hold item that\n" + "restores HP but\n" + "may confuse."); + +static const u8 gItemDescription_WikiBerry[] = _( + "A hold item that\n" + "restores HP but\n" + "may confuse."); + +static const u8 gItemDescription_MagoBerry[] = _( + "A hold item that\n" + "restores HP but\n" + "may confuse."); + +static const u8 gItemDescription_AguavBerry[] = _( + "A hold item that\n" + "restores HP but\n" + "may confuse."); + +static const u8 gItemDescription_IapapaBerry[] = _( + "A hold item that\n" + "restores HP but\n" + "may confuse."); + +static const u8 gItemDescription_RazzBerry[] = _( + "{POKEBLOCK} ingredient.\n" + "Plant in loamy soil\n" + "to grow RAZZ."); + +static const u8 gItemDescription_BlukBerry[] = _( + "{POKEBLOCK} ingredient.\n" + "Plant in loamy soil\n" + "to grow BLUK."); + +static const u8 gItemDescription_NanabBerry[] = _( + "{POKEBLOCK} ingredient.\n" + "Plant in loamy soil\n" + "to grow NANAB."); + +static const u8 gItemDescription_WepearBerry[] = _( + "{POKEBLOCK} ingredient.\n" + "Plant in loamy soil\n" + "to grow WEPEAR."); + +static const u8 gItemDescription_PinapBerry[] = _( + "{POKEBLOCK} ingredient.\n" + "Plant in loamy soil\n" + "to grow PINAP."); + +static const u8 gItemDescription_PomegBerry[] = _( + "{POKEBLOCK} ingredient.\n" + "Plant in loamy soil\n" + "to grow POMEG."); + +static const u8 gItemDescription_KelpsyBerry[] = _( + "{POKEBLOCK} ingredient.\n" + "Plant in loamy soil\n" + "to grow KELPSY."); + +static const u8 gItemDescription_QualotBerry[] = _( + "{POKEBLOCK} ingredient.\n" + "Plant in loamy soil\n" + "to grow QUALOT."); + +static const u8 gItemDescription_HondewBerry[] = _( + "{POKEBLOCK} ingredient.\n" + "Plant in loamy soil\n" + "to grow HONDEW."); + +static const u8 gItemDescription_GrepaBerry[] = _( + "{POKEBLOCK} ingredient.\n" + "Plant in loamy soil\n" + "to grow GREPA."); + +static const u8 gItemDescription_TamatoBerry[] = _( + "{POKEBLOCK} ingredient.\n" + "Plant in loamy soil\n" + "to grow TAMATO."); + +static const u8 gItemDescription_CornnBerry[] = _( + "{POKEBLOCK} ingredient.\n" + "Plant in loamy soil\n" + "to grow CORNN."); + +static const u8 gItemDescription_MagostBerry[] = _( + "{POKEBLOCK} ingredient.\n" + "Plant in loamy soil\n" + "to grow MAGOST."); + +static const u8 gItemDescription_RabutaBerry[] = _( + "{POKEBLOCK} ingredient.\n" + "Plant in loamy soil\n" + "to grow RABUTA."); + +static const u8 gItemDescription_NomelBerry[] = _( + "{POKEBLOCK} ingredient.\n" + "Plant in loamy soil\n" + "to grow NOMEL."); + +static const u8 gItemDescription_SpelonBerry[] = _( + "{POKEBLOCK} ingredient.\n" + "Plant in loamy soil\n" + "to grow SPELON."); + +static const u8 gItemDescription_PamtreBerry[] = _( + "{POKEBLOCK} ingredient.\n" + "Plant in loamy soil\n" + "to grow PAMTRE."); + +static const u8 gItemDescription_WatmelBerry[] = _( + "{POKEBLOCK} ingredient.\n" + "Plant in loamy soil\n" + "to grow WATMEL."); + +static const u8 gItemDescription_DurinBerry[] = _( + "{POKEBLOCK} ingredient.\n" + "Plant in loamy soil\n" + "to grow DURIN."); + +static const u8 gItemDescription_BelueBerry[] = _( + "{POKEBLOCK} ingredient.\n" + "Plant in loamy soil\n" + "to grow BELUE."); + +static const u8 gItemDescription_LiechiBerry[] = _( + "A hold item that\n" + "raises ATTACK in\n" + "a pinch."); + +static const u8 gItemDescription_GanlonBerry[] = _( + "A hold item that\n" + "raises DEFENSE in\n" + "a pinch."); + +static const u8 gItemDescription_SalacBerry[] = _( + "A hold item that\n" + "raises SPEED in\n" + "a pinch."); + +static const u8 gItemDescription_PetayaBerry[] = _( + "A hold item that\n" + "raises SP. ATK in\n" + "a pinch."); + +static const u8 gItemDescription_ApicotBerry[] = _( + "A hold item that\n" + "raises SP. DEF in\n" + "a pinch."); + +static const u8 gItemDescription_LansatBerry[] = _( + "A hold item that\n" + "ups the critical-\n" + "hit rate in a pinch."); + +static const u8 gItemDescription_StarfBerry[] = _( + "A hold item that\n" + "sharply boosts a\n" + "stat in a pinch."); + +static const u8 gItemDescription_EnigmaBerry[] = _( + "{POKEBLOCK} ingredient.\n" + "Plant in loamy soil\n" + "to grow a mystery."); + +static const u8 gItemDescription_BrightPowder[] = _( + "A hold item that\n" + "casts a glare to\n" + "reduce accuracy."); + +static const u8 gItemDescription_WhiteHerb[] = _( + "A hold item that\n" + "restores any\n" + "lowered stat."); + +static const u8 gItemDescription_MachoBrace[] = _( + "A hold item that\n" + "promotes growth,\n" + "but reduces SPEED."); + +static const u8 gItemDescription_ExpShare[] = _( + "A hold item that\n" + "gets EXP. points\n" + "from battles."); + +static const u8 gItemDescription_QuickClaw[] = _( + "A hold item that\n" + "occasionally allows\n" + "the first strike."); + +static const u8 gItemDescription_SootheBell[] = _( + "A hold item that\n" + "calms spirits and\n" + "fosters friendship."); + +static const u8 gItemDescription_MentalHerb[] = _( + "A hold item that\n" + "snaps POKéMON out\n" + "of infatuation."); + +static const u8 gItemDescription_ChoiceBand[] = _( + "Raises a move’s\n" + "power, but permits\n" + "only that move."); + +static const u8 gItemDescription_KingsRock[] = _( + "A hold item that\n" + "may cause flinching\n" + "when the foe is hit."); + +static const u8 gItemDescription_SilverPowder[] = _( + "A hold item that\n" + "raises the power of\n" + "BUG-type moves."); + +static const u8 gItemDescription_AmuletCoin[] = _( + "Doubles money in\n" + "battle if the holder\n" + "takes part."); + +static const u8 gItemDescription_CleanseTag[] = _( + "A hold item that\n" + "helps repel wild\n" + "POKéMON."); + +static const u8 gItemDescription_SoulDew[] = _( + "Hold item: Raises\n" + "SP. ATK & SP. DEF\n" + "of LATIOS & LATIAS."); + +static const u8 gItemDescription_DeepSeaTooth[] = _( + "A hold item that\n" + "raises the SP. ATK\n" + "of CLAMPERL."); + +static const u8 gItemDescription_DeepSeaScale[] = _( + "A hold item that\n" + "raises the SP. DEF\n" + "of CLAMPERL."); + +static const u8 gItemDescription_SmokeBall[] = _( + "A hold item that\n" + "can be used to flee\n" + "from a wild POKéMON."); + +static const u8 gItemDescription_Everstone[] = _( + "A wondrous stone\n" + "& a hold item that\n" + "prevents evolution."); + +static const u8 gItemDescription_FocusBand[] = _( + "A hold item that\n" + "occasionally\n" + "prevents fainting."); + +static const u8 gItemDescription_LuckyEgg[] = _( + "A hold item that\n" + "boosts EXP. points\n" + "earned in battle."); + +static const u8 gItemDescription_ScopeLens[] = _( + "A hold item that\n" + "raises the critical-\n" + "hit rate."); + +static const u8 gItemDescription_MetalCoat[] = _( + "A hold item that\n" + "raises the power of\n" + "STEEL-type moves."); + +static const u8 gItemDescription_Leftovers[] = _( + "A hold item that\n" + "gradually restores\n" + "HP in battle."); + +static const u8 gItemDescription_DragonScale[] = _( + "A strange scale\n" + "held by DRAGON-\n" + "type POKéMON."); + +static const u8 gItemDescription_LightBall[] = _( + "A hold item that\n" + "raises the SP. ATK\n" + "of PIKACHU."); + +static const u8 gItemDescription_SoftSand[] = _( + "A hold item that\n" + "raises the power of\n" + "GROUND-type moves."); + +static const u8 gItemDescription_HardStone[] = _( + "A hold item that\n" + "raises the power of\n" + "ROCK-type moves."); + +static const u8 gItemDescription_MiracleSeed[] = _( + "A hold item that\n" + "raises the power of\n" + "GRASS-type moves."); + +static const u8 gItemDescription_BlackGlasses[] = _( + "A hold item that\n" + "raises the power of\n" + "DARK-type moves."); + +static const u8 gItemDescription_BlackBelt[] = _( + "A hold item that\n" + "boosts FIGHTING-\n" + "type moves."); + +static const u8 gItemDescription_Magnet[] = _( + "A hold item that\n" + "boosts ELECTRIC-\n" + "type moves."); + +static const u8 gItemDescription_MysticWater[] = _( + "A hold item that\n" + "raises the power of\n" + "WATER-type moves."); + +static const u8 gItemDescription_SharpBeak[] = _( + "A hold item that\n" + "raises the power of\n" + "FLYING-type moves."); + +static const u8 gItemDescription_PoisonBarb[] = _( + "A hold item that\n" + "raises the power of\n" + "POISON-type moves."); + +static const u8 gItemDescription_NeverMeltIce[] = _( + "A hold item that\n" + "raises the power of\n" + "ICE-type moves."); + +static const u8 gItemDescription_SpellTag[] = _( + "A hold item that\n" + "raises the power of\n" + "GHOST-type moves."); + +static const u8 gItemDescription_TwistedSpoon[] = _( + "A hold item that\n" + "boosts PSYCHIC-\n" + "type moves."); + +static const u8 gItemDescription_Charcoal[] = _( + "A hold item that\n" + "raises the power of\n" + "FIRE-type moves."); + +static const u8 gItemDescription_DragonFang[] = _( + "A hold item that\n" + "raises the power of\n" + "DRAGON-type moves."); + +static const u8 gItemDescription_SilkScarf[] = _( + "A hold item that\n" + "raises the power of\n" + "NORMAL-type moves."); + +static const u8 gItemDescription_UpGrade[] = _( + "A peculiar box made\n" + "by SILPH CO."); + +static const u8 gItemDescription_ShellBell[] = _( + "A hold item that\n" + "restores HP upon\n" + "striking the foe."); + +static const u8 gItemDescription_SeaIncense[] = _( + "A hold item that\n" + "slightly boosts\n" + "WATER-type moves."); + +static const u8 gItemDescription_LaxIncense[] = _( + "A hold item that\n" + "slightly lowers the\n" + "foe’s accuracy."); + +static const u8 gItemDescription_LuckyPunch[] = _( + "A hold item that\n" + "raises CHANSEY’s\n" + "critical-hit rate."); + +static const u8 gItemDescription_MetalPowder[] = _( + "A hold item that\n" + "raises DEFENSE."); + +static const u8 gItemDescription_ThickClub[] = _( + "A bone of some\n" + "sort. It can be sold\n" + "cheaply."); + +static const u8 gItemDescription_Stick[] = _( + "A stick of leek.\n" + "It can be sold\n" + "cheaply."); + +static const u8 gItemDescription_RedScarf[] = _( + "A hold item that\n" + "raises COOL in\n" + "CONTESTS."); + +static const u8 gItemDescription_BlueScarf[] = _( + "A hold item that\n" + "raises BEAUTY in\n" + "CONTESTS."); + +static const u8 gItemDescription_PinkScarf[] = _( + "A hold item that\n" + "raises CUTE in\n" + "CONTESTS."); + +static const u8 gItemDescription_GreenScarf[] = _( + "A hold item that\n" + "raises SMART in\n" + "CONTESTS."); + +static const u8 gItemDescription_YellowScarf[] = _( + "A hold item that\n" + "raises TOUGH in\n" + "CONTESTS."); + +static const u8 gItemDescription_MachBike[] = _( + "A folding bicycle\n" + "that more than\n" + "doubles foot speed."); + +static const u8 gItemDescription_CoinCase[] = _( + "A case that holds\n" + "up to 9,999 COINS."); + +static const u8 gItemDescription_Itemfinder[] = _( + "A device that\n" + "signals an invisible\n" + "item by sound."); + +static const u8 gItemDescription_OldRod[] = _( + "Use by any body of\n" + "water to fish for\n" + "wild POKéMON."); + +static const u8 gItemDescription_GoodRod[] = _( + "A decent fishing\n" + "rod for catching\n" + "wild POKéMON."); + +static const u8 gItemDescription_SuperRod[] = _( + "The best fishing\n" + "rod for catching\n" + "wild POKéMON."); + +static const u8 gItemDescription_SSTicket[] = _( + "The ticket required\n" + "for sailing on a\n" + "ferry."); + +static const u8 gItemDescription_ContestPass[] = _( + "The pass required\n" + "for entering\n" + "POKéMON CONTESTS."); + +static const u8 gItemDescription_WailmerPail[] = _( + "A tool used for\n" + "watering BERRIES\n" + "and plants."); + +static const u8 gItemDescription_DevonGoods[] = _( + "A package that\n" + "contains DEVON’s\n" + "machine parts."); + +static const u8 gItemDescription_SootSack[] = _( + "A sack used to\n" + "gather and hold\n" + "volcanic ash."); + +static const u8 gItemDescription_BasementKey[] = _( + "The key for NEW\n" + "MAUVILLE beneath\n" + "MAUVILLE CITY."); + +static const u8 gItemDescription_AcroBike[] = _( + "A folding bicycle\n" + "capable of jumps\n" + "and wheelies."); + +static const u8 gItemDescription_PokeblockCase[] = _( + "A case for holding\n" + "{POKEBLOCK}S made with\n" + "a BERRY BLENDER."); + +static const u8 gItemDescription_Letter[] = _( + "A letter to STEVEN\n" + "from the PRESIDENT\n" + "of the DEVON CORP."); + +static const u8 gItemDescription_EonTicket[] = _( + "The ticket for a\n" + "ferry to a distant\n" + "southern island."); + +static const u8 gItemDescription_RedOrb[] = _( + "A red, glowing orb\n" + "said to contain an\n" + "ancient power."); + +static const u8 gItemDescription_BlueOrb[] = _( + "A blue, glowing orb\n" + "said to contain an\n" + "ancient power."); + +static const u8 gItemDescription_Scanner[] = _( + "A device found\n" + "inside the\n" + "ABANDONED SHIP."); + +static const u8 gItemDescription_GoGoggles[] = _( + "Nifty goggles that\n" + "protect eyes from\n" + "desert sandstorms."); + +static const u8 gItemDescription_Meteorite[] = _( + "A meteorite found\n" + "at METEOR FALLS."); + +static const u8 gItemDescription_Room1Key[] = _( + "A key that opens a\n" + "door inside the\n" + "ABANDONED SHIP."); + +static const u8 gItemDescription_Room2Key[] = _( + "A key that opens a\n" + "door inside the\n" + "ABANDONED SHIP."); + +static const u8 gItemDescription_Room4Key[] = _( + "A key that opens a\n" + "door inside the\n" + "ABANDONED SHIP."); + +static const u8 gItemDescription_Room6Key[] = _( + "A key that opens a\n" + "door inside the\n" + "ABANDONED SHIP."); + +static const u8 gItemDescription_StorageKey[] = _( + "The key to the\n" + "storage inside the\n" + "ABANDONED SHIP."); + +static const u8 gItemDescription_RootFossil[] = _( + "A fossil of an\n" + "ancient, seafloor-\n" + "dwelling POKéMON."); + +static const u8 gItemDescription_ClawFossil[] = _( + "A fossil of an\n" + "ancient, seafloor-\n" + "dwelling POKéMON."); + +static const u8 gItemDescription_DevonScope[] = _( + "A device by DEVON\n" + "that signals any\n" + "unseeable POKéMON."); + +static const u8 gItemDescription_TM01[] = _( + "Powerful, but makes\n" + "the user flinch if\n" + "hit by the foe."); + +static const u8 gItemDescription_TM02[] = _( + "Hooks and slashes\n" + "the foe with long,\n" + "sharp claws."); + +static const u8 gItemDescription_TM03[] = _( + "Generates an\n" + "ultrasonic wave\n" + "that may confuse."); + +static const u8 gItemDescription_TM04[] = _( + "Raises SP. ATK and\n" + "SP. DEF by focusing\n" + "the mind."); + +static const u8 gItemDescription_TM05[] = _( + "A savage roar that\n" + "makes the foe flee \n" + "to end the battle."); + +static const u8 gItemDescription_TM06[] = _( + "Poisons the foe\n" + "with a toxin that\n" + "gradually worsens."); + +static const u8 gItemDescription_TM07[] = _( + "Summons a hailstorm\n" + "that hurts all\n" + "types except ICE."); + +static const u8 gItemDescription_TM08[] = _( + "Bulks up the body\n" + "to boost both\n" + "ATTACK & DEFENSE."); + +static const u8 gItemDescription_TM09[] = _( + "Shoots 2 to 5 seeds\n" + "in a row to strike\n" + "the foe."); + +static const u8 gItemDescription_TM10[] = _( + "The attack power\n" + "varies among\n" + "different POKéMON."); + +static const u8 gItemDescription_TM11[] = _( + "Raises the power of\n" + "FIRE-type moves\n" + "for 5 turns."); + +static const u8 gItemDescription_TM12[] = _( + "Enrages the foe so\n" + "it can only use\n" + "attack moves."); + +static const u8 gItemDescription_TM13[] = _( + "Fires an icy cold\n" + "beam that may\n" + "freeze the foe."); + +static const u8 gItemDescription_TM14[] = _( + "A vicious snow-and-\n" + "wind attack that\n" + "may freeze the foe."); + +static const u8 gItemDescription_TM15[] = _( + "Powerful, but needs\n" + "recharging the\n" + "next turn."); + +static const u8 gItemDescription_TM16[] = _( + "Creates a wall of\n" + "light that lowers\n" + "SP. ATK damage."); + +static const u8 gItemDescription_TM17[] = _( + "Negates all damage,\n" + "but may fail if used\n" + "in succession."); + +static const u8 gItemDescription_TM18[] = _( + "Raises the power of\n" + "WATER-type moves\n" + "for 5 turns."); + +static const u8 gItemDescription_TM19[] = _( + "Recovers half the\n" + "HP of the damage \n" + "this move inflicts."); + +static const u8 gItemDescription_TM20[] = _( + "Prevents status\n" + "abnormality with a\n" + "mystical power."); + +static const u8 gItemDescription_TM21[] = _( + "The less the user\n" + "likes you, the more\n" + "powerful this move."); + +static const u8 gItemDescription_TM22[] = _( + "Absorbs sunlight in\n" + "the 1st turn, then\n" + "attacks next turn."); + +static const u8 gItemDescription_TM23[] = _( + "Slams the foe with\n" + "a hard tail. It may\n" + "lower DEFENSE."); + +static const u8 gItemDescription_TM24[] = _( + "A powerful electric\n" + "attack that may\n" + "cause paralysis."); + +static const u8 gItemDescription_TM25[] = _( + "Strikes the foe\n" + "with a thunderbolt.\n" + "It may paralyze."); + +static const u8 gItemDescription_TM26[] = _( + "Causes a quake\n" + "that has no effect\n" + "on flying foes."); + +static const u8 gItemDescription_TM27[] = _( + "The more the user\n" + "likes you, the more\n" + "powerful this move."); + +static const u8 gItemDescription_TM28[] = _( + "Digs underground\n" + "the 1st turn, then\n" + "strikes next turn."); + +static const u8 gItemDescription_TM29[] = _( + "A powerful psychic\n" + "attack that may\n" + "lower SP. DEF."); + +static const u8 gItemDescription_TM30[] = _( + "Hurls a dark lump\n" + "at the foe. It may\n" + "lower SP. DEF."); + +static const u8 gItemDescription_TM31[] = _( + "Destroys barriers\n" + "like LIGHT SCREEN\n" + "and causes damage."); + +static const u8 gItemDescription_TM32[] = _( + "Creates illusory\n" + "copies to enhance\n" + "elusiveness."); + +static const u8 gItemDescription_TM33[] = _( + "Creates a wall of\n" + "light that weakens\n" + "physical attacks."); + +static const u8 gItemDescription_TM34[] = _( + "Zaps the foe with a\n" + "jolt of electricity\n" + "that never misses."); + +static const u8 gItemDescription_TM35[] = _( + "Looses a stream of\n" + "fire that may burn\n" + "the foe."); + +static const u8 gItemDescription_TM36[] = _( + "Hurls sludge at the\n" + "foe. It may poison\n" + "the foe."); + +static const u8 gItemDescription_TM37[] = _( + "Causes a sandstorm\n" + "that hits the foe\n" + "over several turns."); + +static const u8 gItemDescription_TM38[] = _( + "A powerful fire\n" + "attack that may\n" + "burn the foe."); + +static const u8 gItemDescription_TM39[] = _( + "Stops the foe from\n" + "moving with rocks.\n" + "May lower SPEED."); + +static const u8 gItemDescription_TM40[] = _( + "An extremely fast\n" + "attack that can’t\n" + "be avoided."); + +static const u8 gItemDescription_TM41[] = _( + "Prevents the foe\n" + "from using the same\n" + "move in a row."); + +static const u8 gItemDescription_TM42[] = _( + "Raises ATTACK when\n" + "poisoned, burned,\n" + "or paralyzed."); + +static const u8 gItemDescription_TM43[] = _( + "Adds an effect to\n" + "attack depending\n" + "on the location."); + +static const u8 gItemDescription_TM44[] = _( + "The user sleeps for\n" + "2 turns to restore\n" + "health and status."); + +static const u8 gItemDescription_TM45[] = _( + "Makes it tough to\n" + "attack a foe of the\n" + "opposite gender."); + +static const u8 gItemDescription_TM46[] = _( + "While attacking,\n" + "it may steal the\n" + "foe’s held item."); + +static const u8 gItemDescription_TM47[] = _( + "Spreads hard-edged\n" + "wings and slams\n" + "into the foe."); + +static const u8 gItemDescription_TM48[] = _( + "Switches abilities\n" + "with the foe on the\n" + "turn this is used."); + +static const u8 gItemDescription_TM49[] = _( + "Steals the effects\n" + "of the move the foe\n" + "is trying to use."); + +static const u8 gItemDescription_TM50[] = _( + "Enables full-power\n" + "attack, but sharply\n" + "lowers SP. ATK."); + +static const u8 gItemDescription_HM01[] = _( + "Attacks the foe\n" + "with sharp blades\n" + "or claws."); + +static const u8 gItemDescription_HM02[] = _( + "Flies up on the\n" + "first turn, then\n" + "attacks next turn."); + +static const u8 gItemDescription_HM03[] = _( + "Creates a huge\n" + "wave, then crashes\n" + "it down on the foe."); + +static const u8 gItemDescription_HM04[] = _( + "Builds enormous\n" + "power, then slams\n" + "the foe."); + +static const u8 gItemDescription_HM05[] = _( + "Looses a powerful\n" + "blast of light that\n" + "reduces accuracy."); + +static const u8 gItemDescription_HM06[] = _( + "A rock-crushingly\n" + "tough attack that\n" + "may lower DEFENSE."); + +static const u8 gItemDescription_HM07[] = _( + "Attacks the foe\n" + "with enough power\n" + "to climb waterfalls."); + +static const u8 gItemDescription_HM08[] = _( + "Dives underwater\n" + "the 1st turn, then\n" + "attacks next turn."); + +static const u8 gItemDescription_Dummy[] = _(""); diff --git a/src/data/items_de.h b/src/data/items_de.h new file mode 100644 index 000000000..0453a95d0 --- /dev/null +++ b/src/data/items_de.h @@ -0,0 +1,5587 @@ +const struct Item gItems[] = +{ + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("MEISTERBALL"), + .itemId = ITEM_MASTER_BALL, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_MasterBall, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_POKE_BALLS, + .type = 0, + .fieldUseFunc = NULL, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_PokeBall, + .secondaryId = 0, + }, + { + .name = _("HYPERBALL"), + .itemId = ITEM_ULTRA_BALL, + .price = 1200, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_UltraBall, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_POKE_BALLS, + .type = 1, + .fieldUseFunc = NULL, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_PokeBall, + .secondaryId = 1, + }, + { + .name = _("SUPERBALL"), + .itemId = ITEM_GREAT_BALL, + .price = 600, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_GreatBall, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_POKE_BALLS, + .type = 2, + .fieldUseFunc = NULL, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_PokeBall, + .secondaryId = 2, + }, + { + .name = _("POKéBALL"), + .itemId = ITEM_POKE_BALL, + .price = 200, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_PokeBall, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_POKE_BALLS, + .type = 3, + .fieldUseFunc = NULL, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_PokeBall, + .secondaryId = 3, + }, + { + .name = _("SAFARIBALL"), + .itemId = ITEM_SAFARI_BALL, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_SafariBall, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_POKE_BALLS, + .type = 4, + .fieldUseFunc = NULL, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_PokeBall, + .secondaryId = 4, + }, + { + .name = _("NETZBALL"), + .itemId = ITEM_NET_BALL, + .price = 1000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_NetBall, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_POKE_BALLS, + .type = 5, + .fieldUseFunc = NULL, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_PokeBall, + .secondaryId = 5, + }, + { + .name = _("TAUCHBALL"), + .itemId = ITEM_DIVE_BALL, + .price = 1000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_DiveBall, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_POKE_BALLS, + .type = 6, + .fieldUseFunc = NULL, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_PokeBall, + .secondaryId = 6, + }, + { + .name = _("NESTBALL"), + .itemId = ITEM_NEST_BALL, + .price = 1000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_NestBall, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_POKE_BALLS, + .type = 7, + .fieldUseFunc = NULL, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_PokeBall, + .secondaryId = 7, + }, + { + .name = _("WIEDERBALL"), + .itemId = ITEM_REPEAT_BALL, + .price = 1000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_RepeatBall, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_POKE_BALLS, + .type = 8, + .fieldUseFunc = NULL, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_PokeBall, + .secondaryId = 8, + }, + { + .name = _("TIMERBALL"), + .itemId = ITEM_TIMER_BALL, + .price = 1000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TimerBall, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_POKE_BALLS, + .type = 9, + .fieldUseFunc = NULL, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_PokeBall, + .secondaryId = 9, + }, + { + .name = _("LUXUSBALL"), + .itemId = ITEM_LUXURY_BALL, + .price = 1000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_LuxuryBall, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_POKE_BALLS, + .type = 10, + .fieldUseFunc = NULL, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_PokeBall, + .secondaryId = 10, + }, + { + .name = _("PREMIERBALL"), + .itemId = ITEM_PREMIER_BALL, + .price = 200, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_PremierBall, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_POKE_BALLS, + .type = 11, + .fieldUseFunc = NULL, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_PokeBall, + .secondaryId = 11, + }, + { + .name = _("TRANK"), + .itemId = ITEM_POTION, + .price = 300, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 20, + .description = gItemDescription_Potion, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("GEGENGIFT"), + .itemId = ITEM_ANTIDOTE, + .price = 100, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Antidote, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("FEUERHEILER"), + .itemId = ITEM_BURN_HEAL, + .price = 250, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_BurnHeal, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("EISHEILER"), + .itemId = ITEM_ICE_HEAL, + .price = 250, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_IceHeal, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("AUFWECKER"), + .itemId = ITEM_AWAKENING, + .price = 250, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Awakening, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("PARA-HEILER"), + .itemId = ITEM_PARALYZE_HEAL, + .price = 200, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_ParalyzeHeal, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("TOP-GENESUNG"), + .itemId = ITEM_FULL_RESTORE, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 255, + .description = gItemDescription_FullRestore, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("TOP-TRANK"), + .itemId = ITEM_MAX_POTION, + .price = 2500, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 255, + .description = gItemDescription_MaxPotion, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("HYPERTRANK"), + .itemId = ITEM_HYPER_POTION, + .price = 1200, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 200, + .description = gItemDescription_HyperPotion, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("SUPERTRANK"), + .itemId = ITEM_SUPER_POTION, + .price = 700, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 50, + .description = gItemDescription_SuperPotion, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("HYPERHEILER"), + .itemId = ITEM_FULL_HEAL, + .price = 600, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_FullHeal, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("BELEBER"), + .itemId = ITEM_REVIVE, + .price = 1500, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Revive, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("TOP-BELEBER"), + .itemId = ITEM_MAX_REVIVE, + .price = 4000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_MaxRevive, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("TAFELWASSER"), + .itemId = ITEM_FRESH_WATER, + .price = 200, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 50, + .description = gItemDescription_FreshWater, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("SPRUDEL"), + .itemId = ITEM_SODA_POP, + .price = 300, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 60, + .description = gItemDescription_SodaPop, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("LIMONADE"), + .itemId = ITEM_LEMONADE, + .price = 350, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 80, + .description = gItemDescription_Lemonade, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("KUHMUH-MILCH"), + .itemId = ITEM_MOOMOO_MILK, + .price = 500, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 100, + .description = gItemDescription_MoomooMilk, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("ENERGIESTAUB"), + .itemId = ITEM_ENERGY_POWDER, + .price = 500, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_EnergyPowder, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("KRAFTWURZEL"), + .itemId = ITEM_ENERGY_ROOT, + .price = 800, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_EnergyRoot, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("HEILPUDER"), + .itemId = ITEM_HEAL_POWDER, + .price = 450, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_HealPowder, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("VITALKRAUT"), + .itemId = ITEM_REVIVAL_HERB, + .price = 2800, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_RevivalHerb, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("ÄTHER"), + .itemId = ITEM_ETHER, + .price = 1200, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 10, + .description = gItemDescription_Ether, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_PPRecovery, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_PPRecovery, + .secondaryId = 0, + }, + { + .name = _("TOP-ÄTHER"), + .itemId = ITEM_MAX_ETHER, + .price = 2000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 255, + .description = gItemDescription_MaxEther, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_PPRecovery, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_PPRecovery, + .secondaryId = 0, + }, + { + .name = _("ELIXIER"), + .itemId = ITEM_ELIXIR, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 10, + .description = gItemDescription_Elixir, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_PPRecovery, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_PPRecovery, + .secondaryId = 0, + }, + { + .name = _("TOP-ELIXIER"), + .itemId = ITEM_MAX_ELIXIR, + .price = 4500, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 255, + .description = gItemDescription_MaxElixir, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_PPRecovery, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_PPRecovery, + .secondaryId = 0, + }, + { + .name = _("LAVAKEKS"), + .itemId = ITEM_LAVA_COOKIE, + .price = 200, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_LavaCookie, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("BLAUE FLÖTE"), + .itemId = ITEM_BLUE_FLUTE, + .price = 100, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_BlueFlute, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("GELBE FLÖTE"), + .itemId = ITEM_YELLOW_FLUTE, + .price = 200, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_YellowFlute, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("ROTE FLÖTE"), + .itemId = ITEM_RED_FLUTE, + .price = 300, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_RedFlute, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("SCHW. FLÖTE"), + .itemId = ITEM_BLACK_FLUTE, + .price = 400, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 50, + .description = gItemDescription_BlackFlute, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_BlackWhiteFlute, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("WEISSE FLÖTE"), + .itemId = ITEM_WHITE_FLUTE, + .price = 500, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 150, + .description = gItemDescription_WhiteFlute, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_BlackWhiteFlute, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("BEERENSAFT"), + .itemId = ITEM_BERRY_JUICE, + .price = 100, + .holdEffect = HOLD_EFFECT_RESTORE_HP, + .holdEffectParam = 20, + .description = gItemDescription_BerryJuice, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("ZAUBERASCHE"), + .itemId = ITEM_SACRED_ASH, + .price = 200, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_SacredAsh, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_SacredAsh, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("KÜSTENSALZ"), + .itemId = ITEM_SHOAL_SALT, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_ShoalSalt, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("KÜSTENSCHALE"), + .itemId = ITEM_SHOAL_SHELL, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_ShoalShell, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("PURPURSTÜCK"), + .itemId = ITEM_RED_SHARD, + .price = 200, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_RedShard, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("INDIGOSTÜCK"), + .itemId = ITEM_BLUE_SHARD, + .price = 200, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_BlueShard, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("GELBSTÜCK"), + .itemId = ITEM_YELLOW_SHARD, + .price = 200, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_YellowShard, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("GRÜNSTÜCK"), + .itemId = ITEM_GREEN_SHARD, + .price = 200, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_GreenShard, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("KP-PLUS"), + .itemId = ITEM_HP_UP, + .price = 9800, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_HPUp, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("PROTEIN"), + .itemId = ITEM_PROTEIN, + .price = 9800, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Protein, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("EISEN"), + .itemId = ITEM_IRON, + .price = 9800, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Iron, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("CARBON"), + .itemId = ITEM_CARBOS, + .price = 9800, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Carbos, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("KALZIUM"), + .itemId = ITEM_CALCIUM, + .price = 9800, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Calcium, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SONDERBONBON"), + .itemId = ITEM_RARE_CANDY, + .price = 4800, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_RareCandy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_RareCandy, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("AP-PLUS"), + .itemId = ITEM_PP_UP, + .price = 9800, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_PPUp, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_PPUp, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("ZINK"), + .itemId = ITEM_ZINC, + .price = 9800, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Zinc, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("AP-TOP"), + .itemId = ITEM_PP_MAX, + .price = 9800, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_PPMax, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_PPUp, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("MEGABLOCK"), + .itemId = ITEM_GUARD_SPEC, + .price = 700, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_GuardSpec, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_StatIncrease, + .secondaryId = 0, + }, + { + .name = _("ANGRIFFPLUS"), + .itemId = ITEM_DIRE_HIT, + .price = 650, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_DireHit, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_StatIncrease, + .secondaryId = 0, + }, + { + .name = _("X-ANGRIFF"), + .itemId = ITEM_X_ATTACK, + .price = 500, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_XAttack, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_StatIncrease, + .secondaryId = 0, + }, + { + .name = _("X-ABWEHR"), + .itemId = ITEM_X_DEFEND, + .price = 550, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_XDefend, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_StatIncrease, + .secondaryId = 0, + }, + { + .name = _("X-TEMPO"), + .itemId = ITEM_X_SPEED, + .price = 350, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_XSpeed, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_StatIncrease, + .secondaryId = 0, + }, + { + .name = _("X-TREFFER"), + .itemId = ITEM_X_ACCURACY, + .price = 950, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_XAccuracy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_StatIncrease, + .secondaryId = 0, + }, + { + .name = _("X-SPEZIAL"), + .itemId = ITEM_X_SPECIAL, + .price = 350, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_XSpecial, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_StatIncrease, + .secondaryId = 0, + }, + { + .name = _("POKéPUPPE"), + .itemId = ITEM_POKE_DOLL, + .price = 1000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_PokeDoll, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_Escape, + .secondaryId = 0, + }, + { + .name = _("ENECO-RUTE"), + .itemId = ITEM_FLUFFY_TAIL, + .price = 1000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_FluffyTail, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_Escape, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SUPERSCHUTZ"), + .itemId = ITEM_SUPER_REPEL, + .price = 500, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 200, + .description = gItemDescription_SuperRepel, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_Repel, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TOP-SCHUTZ"), + .itemId = ITEM_MAX_REPEL, + .price = 700, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 250, + .description = gItemDescription_MaxRepel, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_Repel, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("FLUCHTSEIL"), + .itemId = ITEM_ESCAPE_ROPE, + .price = 550, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_EscapeRope, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 2, + .fieldUseFunc = ItemUseOutOfBattle_EscapeRope, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SCHUTZ"), + .itemId = ITEM_REPEL, + .price = 350, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 100, + .description = gItemDescription_Repel, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_Repel, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SONNENSTEIN"), + .itemId = ITEM_SUN_STONE, + .price = 2100, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_SunStone, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_EvolutionStone, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("MONDSTEIN"), + .itemId = ITEM_MOON_STONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_MoonStone, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_EvolutionStone, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("FEUERSTEIN"), + .itemId = ITEM_FIRE_STONE, + .price = 2100, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_FireStone, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_EvolutionStone, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("DONNERSTEIN"), + .itemId = ITEM_THUNDER_STONE, + .price = 2100, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_ThunderStone, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_EvolutionStone, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("WASSERSTEIN"), + .itemId = ITEM_WATER_STONE, + .price = 2100, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_WaterStone, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_EvolutionStone, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("BLATTSTEIN"), + .itemId = ITEM_LEAF_STONE, + .price = 2100, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_LeafStone, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_EvolutionStone, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("MINIPILZ"), + .itemId = ITEM_TINY_MUSHROOM, + .price = 500, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TinyMushroom, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("RIESENPILZ"), + .itemId = ITEM_BIG_MUSHROOM, + .price = 5000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_BigMushroom, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("PERLE"), + .itemId = ITEM_PEARL, + .price = 1400, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Pearl, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("RIESENPERLE"), + .itemId = ITEM_BIG_PEARL, + .price = 7500, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_BigPearl, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("STERNENSTAUB"), + .itemId = ITEM_STARDUST, + .price = 2000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Stardust, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("STERNENSTÜCK"), + .itemId = ITEM_STAR_PIECE, + .price = 9800, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_StarPiece, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("NUGGET"), + .itemId = ITEM_NUGGET, + .price = 10000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Nugget, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("HERZSCHUPPE"), + .itemId = ITEM_HEART_SCALE, + .price = 100, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_HeartScale, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("ZIGZAGBRIEF"), + .itemId = ITEM_ORANGE_MAIL, + .price = 50, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_OrangeMail, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 0, + .fieldUseFunc = ItemUseOutOfBattle_Mail, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("HAFENBRIEF"), + .itemId = ITEM_HARBOR_MAIL, + .price = 50, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_HarborMail, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 0, + .fieldUseFunc = ItemUseOutOfBattle_Mail, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 1, + }, + { + .name = _("GLITZERBRIEF"), + .itemId = ITEM_GLITTER_MAIL, + .price = 50, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_GlitterMail, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 0, + .fieldUseFunc = ItemUseOutOfBattle_Mail, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 2, + }, + { + .name = _("EILBRIEF"), + .itemId = ITEM_MECH_MAIL, + .price = 50, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_MechMail, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 0, + .fieldUseFunc = ItemUseOutOfBattle_Mail, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 3, + }, + { + .name = _("WALDBRIEF"), + .itemId = ITEM_WOOD_MAIL, + .price = 50, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_WoodMail, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 0, + .fieldUseFunc = ItemUseOutOfBattle_Mail, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 4, + }, + { + .name = _("WELLENBRIEF"), + .itemId = ITEM_WAVE_MAIL, + .price = 50, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_WaveMail, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 0, + .fieldUseFunc = ItemUseOutOfBattle_Mail, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 5, + }, + { + .name = _("PERLENBRIEF"), + .itemId = ITEM_BEAD_MAIL, + .price = 50, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_BeadMail, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 0, + .fieldUseFunc = ItemUseOutOfBattle_Mail, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 6, + }, + { + .name = _("DUNKELBRIEF"), + .itemId = ITEM_SHADOW_MAIL, + .price = 50, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_ShadowMail, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 0, + .fieldUseFunc = ItemUseOutOfBattle_Mail, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 7, + }, + { + .name = _("TROPENBRIEF"), + .itemId = ITEM_TROPIC_MAIL, + .price = 50, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TropicMail, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 0, + .fieldUseFunc = ItemUseOutOfBattle_Mail, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 8, + }, + { + .name = _("TRAUMBRIEF"), + .itemId = ITEM_DREAM_MAIL, + .price = 50, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_DreamMail, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 0, + .fieldUseFunc = ItemUseOutOfBattle_Mail, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 9, + }, + { + .name = _("EDELBRIEF"), + .itemId = ITEM_FAB_MAIL, + .price = 50, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_FabMail, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 0, + .fieldUseFunc = ItemUseOutOfBattle_Mail, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 10, + }, + { + .name = _("RETROBRIEF"), + .itemId = ITEM_RETRO_MAIL, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_RetroMail, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 0, + .fieldUseFunc = ItemUseOutOfBattle_Mail, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 11, + }, + { + .name = _("AMRENABEERE"), + .itemId = ITEM_CHERI_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_CURE_PAR, + .holdEffectParam = 0, + .description = gItemDescription_CheriBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("MARONBEERE"), + .itemId = ITEM_CHESTO_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_CURE_SLP, + .holdEffectParam = 0, + .description = gItemDescription_ChestoBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("PIRSIFBEERE"), + .itemId = ITEM_PECHA_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_CURE_PSN, + .holdEffectParam = 0, + .description = gItemDescription_PechaBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("FRAGIABEERE"), + .itemId = ITEM_RAWST_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_CURE_BRN, + .holdEffectParam = 0, + .description = gItemDescription_RawstBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("WILBIRBEERE"), + .itemId = ITEM_ASPEAR_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_CURE_FRZ, + .holdEffectParam = 0, + .description = gItemDescription_AspearBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("JONAGOBEERE"), + .itemId = ITEM_LEPPA_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_RESTORE_PP, + .holdEffectParam = 10, + .description = gItemDescription_LeppaBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_PPRecovery, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_PPRecovery, + .secondaryId = 0, + }, + { + .name = _("SINELBEERE"), + .itemId = ITEM_ORAN_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_RESTORE_HP, + .holdEffectParam = 10, + .description = gItemDescription_OranBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("PERSIMBEERE"), + .itemId = ITEM_PERSIM_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_CURE_CONFUSION, + .holdEffectParam = 0, + .description = gItemDescription_PersimBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("PRUNUSBEERE"), + .itemId = ITEM_LUM_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_CURE_STATUS, + .holdEffectParam = 0, + .description = gItemDescription_LumBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("TSITRUBEERE"), + .itemId = ITEM_SITRUS_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_RESTORE_HP, + .holdEffectParam = 30, + .description = gItemDescription_SitrusBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("GIEFEBEERE"), + .itemId = ITEM_FIGY_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_CONFUSE_SPICY, + .holdEffectParam = 8, + .description = gItemDescription_FigyBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("WIKIBEERE"), + .itemId = ITEM_WIKI_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_CONFUSE_DRY, + .holdEffectParam = 8, + .description = gItemDescription_WikiBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("MAGOBEERE"), + .itemId = ITEM_MAGO_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_CONFUSE_SWEET, + .holdEffectParam = 8, + .description = gItemDescription_MagoBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("GAUVEBEERE"), + .itemId = ITEM_AGUAV_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_CONFUSE_BITTER, + .holdEffectParam = 8, + .description = gItemDescription_AguavBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("YAPABEERE"), + .itemId = ITEM_IAPAPA_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_CONFUSE_SOUR, + .holdEffectParam = 8, + .description = gItemDescription_IapapaBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("HIMMIHBEERE"), + .itemId = ITEM_RAZZ_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_RazzBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("MORBBEERE"), + .itemId = ITEM_BLUK_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_BlukBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("NANABBEERE"), + .itemId = ITEM_NANAB_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_NanabBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("NIRBEBEERE"), + .itemId = ITEM_WEPEAR_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_WepearBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SANANABEERE"), + .itemId = ITEM_PINAP_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_PinapBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("GRANABEERE"), + .itemId = ITEM_POMEG_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_PomegBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SETANGBEERE"), + .itemId = ITEM_KELPSY_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_KelpsyBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("QUALOTBEERE"), + .itemId = ITEM_QUALOT_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_QualotBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("HONMELBEERE"), + .itemId = ITEM_HONDEW_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_HondewBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("LABRUSBEERE"), + .itemId = ITEM_GREPA_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_GrepaBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TAMOTBEERE"), + .itemId = ITEM_TAMATO_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TamatoBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SAIMBEERE"), + .itemId = ITEM_CORNN_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_CornnBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("MAGOSTBEERE"), + .itemId = ITEM_MAGOST_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_MagostBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("RABUTABEERE"), + .itemId = ITEM_RABUTA_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_RabutaBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TRONZIBEERE"), + .itemId = ITEM_NOMEL_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_NomelBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("KIWANBEERE"), + .itemId = ITEM_SPELON_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_SpelonBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("PALLMBEERE"), + .itemId = ITEM_PAMTRE_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_PamtreBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("WASMELBEERE"), + .itemId = ITEM_WATMEL_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_WatmelBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("DURINBEERE"), + .itemId = ITEM_DURIN_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_DurinBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("MYRTILBEERE"), + .itemId = ITEM_BELUE_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_BelueBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("LYDZIBEERE"), + .itemId = ITEM_LIECHI_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_ATTACK_UP, + .holdEffectParam = 4, + .description = gItemDescription_LiechiBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("LINGANBEERE"), + .itemId = ITEM_GANLON_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_DEFENSE_UP, + .holdEffectParam = 4, + .description = gItemDescription_GanlonBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SALKABEERE"), + .itemId = ITEM_SALAC_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_SPEED_UP, + .holdEffectParam = 4, + .description = gItemDescription_SalacBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TAHAYBEERE"), + .itemId = ITEM_PETAYA_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_SP_ATTACK_UP, + .holdEffectParam = 4, + .description = gItemDescription_PetayaBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("APIKOBEERE"), + .itemId = ITEM_APICOT_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_SP_DEFENSE_UP, + .holdEffectParam = 4, + .description = gItemDescription_ApicotBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("LANSATBEERE"), + .itemId = ITEM_LANSAT_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_CRITICAL_UP, + .holdEffectParam = 4, + .description = gItemDescription_LansatBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("KRAMBOBEERE"), + .itemId = ITEM_STARF_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_RANDOM_STAT_UP, + .holdEffectParam = 4, + .description = gItemDescription_StarfBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("ENIGMABEERE"), + .itemId = ITEM_ENIGMA_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_EnigmaBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_EnigmaBerry, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_EnigmaBerry, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("BLENDPUDER"), + .itemId = ITEM_BRIGHT_POWDER, + .price = 10, + .holdEffect = HOLD_EFFECT_EVASION_UP, + .holdEffectParam = 10, + .description = gItemDescription_BrightPowder, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SCHLOHKRAUT"), + .itemId = ITEM_WHITE_HERB, + .price = 100, + .holdEffect = HOLD_EFFECT_RESTORE_STATS, + .holdEffectParam = 0, + .description = gItemDescription_WhiteHerb, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("MACHOBAND"), + .itemId = ITEM_MACHO_BRACE, + .price = 3000, + .holdEffect = HOLD_EFFECT_MACHO_BRACE, + .holdEffectParam = 0, + .description = gItemDescription_MachoBrace, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("EP-TEILER"), + .itemId = ITEM_EXP_SHARE, + .price = 3000, + .holdEffect = HOLD_EFFECT_EXP_SHARE, + .holdEffectParam = 0, + .description = gItemDescription_ExpShare, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("FLINKKLAUE"), + .itemId = ITEM_QUICK_CLAW, + .price = 100, + .holdEffect = HOLD_EFFECT_QUICK_CLAW, + .holdEffectParam = 20, + .description = gItemDescription_QuickClaw, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SANFTGLOCKE"), + .itemId = ITEM_SOOTHE_BELL, + .price = 100, + .holdEffect = HOLD_EFFECT_HAPPINESS_UP, + .holdEffectParam = 0, + .description = gItemDescription_SootheBell, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("MENTALKRAUT"), + .itemId = ITEM_MENTAL_HERB, + .price = 100, + .holdEffect = HOLD_EFFECT_CURE_ATTRACT, + .holdEffectParam = 0, + .description = gItemDescription_MentalHerb, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("WAHLBAND"), + .itemId = ITEM_CHOICE_BAND, + .price = 100, + .holdEffect = HOLD_EFFECT_CHOICE_BAND, + .holdEffectParam = 0, + .description = gItemDescription_ChoiceBand, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("KING-STEIN"), + .itemId = ITEM_KINGS_ROCK, + .price = 100, + .holdEffect = HOLD_EFFECT_FLINCH, + .holdEffectParam = 10, + .description = gItemDescription_KingsRock, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SILBERSTAUB"), + .itemId = ITEM_SILVER_POWDER, + .price = 100, + .holdEffect = HOLD_EFFECT_BUG_POWER, + .holdEffectParam = 10, + .description = gItemDescription_SilverPowder, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("MÜNZAMULETT"), + .itemId = ITEM_AMULET_COIN, + .price = 100, + .holdEffect = HOLD_EFFECT_DOUBLE_PRIZE, + .holdEffectParam = 10, + .description = gItemDescription_AmuletCoin, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SCHUTZBAND"), + .itemId = ITEM_CLEANSE_TAG, + .price = 200, + .holdEffect = HOLD_EFFECT_REPEL, + .holdEffectParam = 0, + .description = gItemDescription_CleanseTag, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SEELENTAU"), + .itemId = ITEM_SOUL_DEW, + .price = 200, + .holdEffect = HOLD_EFFECT_SOUL_DEW, + .holdEffectParam = 0, + .description = gItemDescription_SoulDew, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("ABYSSZAHN"), + .itemId = ITEM_DEEP_SEA_TOOTH, + .price = 200, + .holdEffect = HOLD_EFFECT_DEEP_SEA_TOOTH, + .holdEffectParam = 0, + .description = gItemDescription_DeepSeaTooth, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("ABYSSPLATTE"), + .itemId = ITEM_DEEP_SEA_SCALE, + .price = 200, + .holdEffect = HOLD_EFFECT_DEEP_SEA_SCALE, + .holdEffectParam = 0, + .description = gItemDescription_DeepSeaScale, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("RAUCHBALL"), + .itemId = ITEM_SMOKE_BALL, + .price = 200, + .holdEffect = HOLD_EFFECT_CAN_ALWAYS_RUN, + .holdEffectParam = 0, + .description = gItemDescription_SmokeBall, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("EWIGSTEIN"), + .itemId = ITEM_EVERSTONE, + .price = 200, + .holdEffect = HOLD_EFFECT_PREVENT_EVOLVE, + .holdEffectParam = 0, + .description = gItemDescription_Everstone, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("FOKUS-BAND"), + .itemId = ITEM_FOCUS_BAND, + .price = 200, + .holdEffect = HOLD_EFFECT_FOCUS_BAND, + .holdEffectParam = 10, + .description = gItemDescription_FocusBand, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("GLÜCKS-EI"), + .itemId = ITEM_LUCKY_EGG, + .price = 200, + .holdEffect = HOLD_EFFECT_LUCKY_EGG, + .holdEffectParam = 0, + .description = gItemDescription_LuckyEgg, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SCOPE-LINSE"), + .itemId = ITEM_SCOPE_LENS, + .price = 200, + .holdEffect = HOLD_EFFECT_SCOPE_LENS, + .holdEffectParam = 0, + .description = gItemDescription_ScopeLens, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("METALLMANTEL"), + .itemId = ITEM_METAL_COAT, + .price = 100, + .holdEffect = HOLD_EFFECT_STEEL_POWER, + .holdEffectParam = 10, + .description = gItemDescription_MetalCoat, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("ÜBERRESTE"), + .itemId = ITEM_LEFTOVERS, + .price = 200, + .holdEffect = HOLD_EFFECT_LEFTOVERS, + .holdEffectParam = 10, + .description = gItemDescription_Leftovers, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("DRACHENHAUT"), + .itemId = ITEM_DRAGON_SCALE, + .price = 2100, + .holdEffect = HOLD_EFFECT_DRAGON_SCALE, + .holdEffectParam = 10, + .description = gItemDescription_DragonScale, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("KUGELBLITZ"), + .itemId = ITEM_LIGHT_BALL, + .price = 100, + .holdEffect = HOLD_EFFECT_LIGHT_BALL, + .holdEffectParam = 0, + .description = gItemDescription_LightBall, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("PUDERSAND"), + .itemId = ITEM_SOFT_SAND, + .price = 100, + .holdEffect = HOLD_EFFECT_GROUND_POWER, + .holdEffectParam = 10, + .description = gItemDescription_SoftSand, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("GRANITSTEIN"), + .itemId = ITEM_HARD_STONE, + .price = 100, + .holdEffect = HOLD_EFFECT_ROCK_POWER, + .holdEffectParam = 10, + .description = gItemDescription_HardStone, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("WUNDERSAAT"), + .itemId = ITEM_MIRACLE_SEED, + .price = 100, + .holdEffect = HOLD_EFFECT_GRASS_POWER, + .holdEffectParam = 10, + .description = gItemDescription_MiracleSeed, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SCHATTENGLAS"), + .itemId = ITEM_BLACK_GLASSES, + .price = 100, + .holdEffect = HOLD_EFFECT_DARK_POWER, + .holdEffectParam = 10, + .description = gItemDescription_BlackGlasses, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SCHWARZGURT"), + .itemId = ITEM_BLACK_BELT, + .price = 100, + .holdEffect = HOLD_EFFECT_FIGHTING_POWER, + .holdEffectParam = 10, + .description = gItemDescription_BlackBelt, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("MAGNET"), + .itemId = ITEM_MAGNET, + .price = 100, + .holdEffect = HOLD_EFFECT_ELECTRIC_POWER, + .holdEffectParam = 10, + .description = gItemDescription_Magnet, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("ZAUBERWASSER"), + .itemId = ITEM_MYSTIC_WATER, + .price = 100, + .holdEffect = HOLD_EFFECT_WATER_POWER, + .holdEffectParam = 10, + .description = gItemDescription_MysticWater, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("HACKATTACK"), + .itemId = ITEM_SHARP_BEAK, + .price = 100, + .holdEffect = HOLD_EFFECT_FLYING_POWER, + .holdEffectParam = 10, + .description = gItemDescription_SharpBeak, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("GIFTSTICH"), + .itemId = ITEM_POISON_BARB, + .price = 100, + .holdEffect = HOLD_EFFECT_POISON_POWER, + .holdEffectParam = 10, + .description = gItemDescription_PoisonBarb, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("EWIGES EIS"), + .itemId = ITEM_NEVER_MELT_ICE, + .price = 100, + .holdEffect = HOLD_EFFECT_ICE_POWER, + .holdEffectParam = 10, + .description = gItemDescription_NeverMeltIce, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("BANNSTICKER"), + .itemId = ITEM_SPELL_TAG, + .price = 100, + .holdEffect = HOLD_EFFECT_GHOST_POWER, + .holdEffectParam = 10, + .description = gItemDescription_SpellTag, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("KRÜMMLÖFFEL"), + .itemId = ITEM_TWISTED_SPOON, + .price = 100, + .holdEffect = HOLD_EFFECT_PSYCHIC_POWER, + .holdEffectParam = 10, + .description = gItemDescription_TwistedSpoon, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("HOLZKOHLE"), + .itemId = ITEM_CHARCOAL, + .price = 9800, + .holdEffect = HOLD_EFFECT_FIRE_POWER, + .holdEffectParam = 10, + .description = gItemDescription_Charcoal, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("DRACHENZAHN"), + .itemId = ITEM_DRAGON_FANG, + .price = 100, + .holdEffect = HOLD_EFFECT_DRAGON_POWER, + .holdEffectParam = 10, + .description = gItemDescription_DragonFang, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SEIDENSCHAL"), + .itemId = ITEM_SILK_SCARF, + .price = 100, + .holdEffect = HOLD_EFFECT_NORMAL_POWER, + .holdEffectParam = 10, + .description = gItemDescription_SilkScarf, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("UP-GRADE"), + .itemId = ITEM_UP_GRADE, + .price = 2100, + .holdEffect = HOLD_EFFECT_UP_GRADE, + .holdEffectParam = 0, + .description = gItemDescription_UpGrade, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SEEGESANG"), + .itemId = ITEM_SHELL_BELL, + .price = 200, + .holdEffect = HOLD_EFFECT_SHELL_BELL, + .holdEffectParam = 8, + .description = gItemDescription_ShellBell, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SEERAUCH"), + .itemId = ITEM_SEA_INCENSE, + .price = 9600, + .holdEffect = HOLD_EFFECT_WATER_POWER, + .holdEffectParam = 5, + .description = gItemDescription_SeaIncense, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("LAXRAUCH"), + .itemId = ITEM_LAX_INCENSE, + .price = 9600, + .holdEffect = HOLD_EFFECT_EVASION_UP, + .holdEffectParam = 5, + .description = gItemDescription_LaxIncense, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("LUCKY PUNCH"), + .itemId = ITEM_LUCKY_PUNCH, + .price = 10, + .holdEffect = HOLD_EFFECT_LUCKY_PUNCH, + .holdEffectParam = 0, + .description = gItemDescription_LuckyPunch, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("METALLSTAUB"), + .itemId = ITEM_METAL_POWDER, + .price = 10, + .holdEffect = HOLD_EFFECT_METAL_POWDER, + .holdEffectParam = 0, + .description = gItemDescription_MetalPowder, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("KAMPFKNOCHEN"), + .itemId = ITEM_THICK_CLUB, + .price = 500, + .holdEffect = HOLD_EFFECT_THICK_CLUB, + .holdEffectParam = 0, + .description = gItemDescription_ThickClub, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("LAUCHSTANGE"), + .itemId = ITEM_STICK, + .price = 200, + .holdEffect = HOLD_EFFECT_STICK, + .holdEffectParam = 0, + .description = gItemDescription_Stick, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("ROTER SCHAL"), + .itemId = ITEM_RED_SCARF, + .price = 100, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_RedScarf, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("BLAUER SCHAL"), + .itemId = ITEM_BLUE_SCARF, + .price = 100, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_BlueScarf, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("ROSA SCHAL"), + .itemId = ITEM_PINK_SCARF, + .price = 100, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_PinkScarf, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("GRÜNER SCHAL"), + .itemId = ITEM_GREEN_SCARF, + .price = 100, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_GreenScarf, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("GELBER SCHAL"), + .itemId = ITEM_YELLOW_SCARF, + .price = 100, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_YellowScarf, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("EILRAD"), + .itemId = ITEM_MACH_BIKE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_MachBike, + .importance = 1, + .unk19 = 1, + .pocket = POCKET_KEY_ITEMS, + .type = 2, + .fieldUseFunc = ItemUseOutOfBattle_Bike, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("MÜNZKORB"), + .itemId = ITEM_COIN_CASE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_CoinCase, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CoinCase, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("DETEKTOR"), + .itemId = ITEM_ITEMFINDER, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Itemfinder, + .importance = 1, + .unk19 = 1, + .pocket = POCKET_KEY_ITEMS, + .type = 2, + .fieldUseFunc = ItemUseOutOfBattle_Itemfinder, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("ANGEL"), + .itemId = ITEM_OLD_ROD, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_OldRod, + .importance = 1, + .unk19 = 1, + .pocket = POCKET_KEY_ITEMS, + .type = 2, + .fieldUseFunc = ItemUseOutOfBattle_Rod, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("PROFIANGEL"), + .itemId = ITEM_GOOD_ROD, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_GoodRod, + .importance = 1, + .unk19 = 1, + .pocket = POCKET_KEY_ITEMS, + .type = 2, + .fieldUseFunc = ItemUseOutOfBattle_Rod, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 1, + }, + { + .name = _("SUPERANGEL"), + .itemId = ITEM_SUPER_ROD, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_SuperRod, + .importance = 1, + .unk19 = 1, + .pocket = POCKET_KEY_ITEMS, + .type = 2, + .fieldUseFunc = ItemUseOutOfBattle_Rod, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 2, + }, + { + .name = _("BOOTSTICKET"), + .itemId = ITEM_SS_TICKET, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_SSTicket, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("WETTB.-KARTE"), + .itemId = ITEM_CONTEST_PASS, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_ContestPass, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("WAILMERKANNE"), + .itemId = ITEM_WAILMER_PAIL, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_WailmerPail, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 2, + .fieldUseFunc = ItemUseOutOfBattle_WailmerPail, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("DEVON-WAREN"), + .itemId = ITEM_DEVON_GOODS, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_DevonGoods, + .importance = 2, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("ASCHETASCHE"), + .itemId = ITEM_SOOT_SACK, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_SootSack, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("KELLERÖFFNER"), + .itemId = ITEM_BASEMENT_KEY, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_BasementKey, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("KUNSTRAD"), + .itemId = ITEM_ACRO_BIKE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_AcroBike, + .importance = 1, + .unk19 = 1, + .pocket = POCKET_KEY_ITEMS, + .type = 2, + .fieldUseFunc = ItemUseOutOfBattle_Bike, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 1, + }, + { + .name = _("{POKEBLOCK}BOX"), + .itemId = ITEM_POKEBLOCK_CASE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_PokeblockCase, + .importance = 1, + .unk19 = 1, + .pocket = POCKET_KEY_ITEMS, + .type = 3, + .fieldUseFunc = ItemUseOutOfBattle_PokeblockCase, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("BRIEF"), + .itemId = ITEM_LETTER, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Letter, + .importance = 2, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("ÄON-TICKET"), + .itemId = ITEM_EON_TICKET, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_EonTicket, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 1, + }, + { + .name = _("ROTE KUGEL"), + .itemId = ITEM_RED_ORB, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_RedOrb, + .importance = 2, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("BLAUE KUGEL"), + .itemId = ITEM_BLUE_ORB, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_BlueOrb, + .importance = 2, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SCANNER"), + .itemId = ITEM_SCANNER, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Scanner, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("WÜSTENGLAS"), + .itemId = ITEM_GO_GOGGLES, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_GoGoggles, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("METEORIT"), + .itemId = ITEM_METEORITE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Meteorite, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("K1-SCHLÜSSEL"), + .itemId = ITEM_ROOM_1_KEY, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Room1Key, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("K2-SCHLÜSSEL"), + .itemId = ITEM_ROOM_2_KEY, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Room2Key, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("K4-SCHLÜSSEL"), + .itemId = ITEM_ROOM_4_KEY, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Room4Key, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("K6-SCHLÜSSEL"), + .itemId = ITEM_ROOM_6_KEY, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Room6Key, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("L.-SCHLÜSSEL"), + .itemId = ITEM_STORAGE_KEY, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_StorageKey, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("WURZELFOSSIL"), + .itemId = ITEM_ROOT_FOSSIL, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_RootFossil, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("KLAUENFOSSIL"), + .itemId = ITEM_CLAW_FOSSIL, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_ClawFossil, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("DEVON-SCOPE"), + .itemId = ITEM_DEVON_SCOPE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_DevonScope, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM01"), + .itemId = ITEM_TM01, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM01, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM02"), + .itemId = ITEM_TM02, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM02, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM03"), + .itemId = ITEM_TM03, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM03, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM04"), + .itemId = ITEM_TM04, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM04, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM05"), + .itemId = ITEM_TM05, + .price = 1000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM05, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM06"), + .itemId = ITEM_TM06, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM06, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM07"), + .itemId = ITEM_TM07, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM07, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM08"), + .itemId = ITEM_TM08, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM08, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM09"), + .itemId = ITEM_TM09, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM09, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM10"), + .itemId = ITEM_TM10, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM10, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM11"), + .itemId = ITEM_TM11, + .price = 2000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM11, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM12"), + .itemId = ITEM_TM12, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM12, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM13"), + .itemId = ITEM_TM13, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM13, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM14"), + .itemId = ITEM_TM14, + .price = 5500, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM14, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM15"), + .itemId = ITEM_TM15, + .price = 7500, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM15, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM16"), + .itemId = ITEM_TM16, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM16, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM17"), + .itemId = ITEM_TM17, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM17, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM18"), + .itemId = ITEM_TM18, + .price = 2000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM18, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM19"), + .itemId = ITEM_TM19, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM19, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM20"), + .itemId = ITEM_TM20, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM20, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM21"), + .itemId = ITEM_TM21, + .price = 1000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM21, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM22"), + .itemId = ITEM_TM22, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM22, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM23"), + .itemId = ITEM_TM23, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM23, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM24"), + .itemId = ITEM_TM24, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM24, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM25"), + .itemId = ITEM_TM25, + .price = 5500, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM25, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM26"), + .itemId = ITEM_TM26, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM26, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM27"), + .itemId = ITEM_TM27, + .price = 1000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM27, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM28"), + .itemId = ITEM_TM28, + .price = 2000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM28, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM29"), + .itemId = ITEM_TM29, + .price = 2000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM29, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM30"), + .itemId = ITEM_TM30, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM30, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM31"), + .itemId = ITEM_TM31, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM31, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM32"), + .itemId = ITEM_TM32, + .price = 2000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM32, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM33"), + .itemId = ITEM_TM33, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM33, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM34"), + .itemId = ITEM_TM34, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM34, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM35"), + .itemId = ITEM_TM35, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM35, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM36"), + .itemId = ITEM_TM36, + .price = 1000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM36, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM37"), + .itemId = ITEM_TM37, + .price = 2000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM37, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM38"), + .itemId = ITEM_TM38, + .price = 5500, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM38, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM39"), + .itemId = ITEM_TM39, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM39, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM40"), + .itemId = ITEM_TM40, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM40, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM41"), + .itemId = ITEM_TM41, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM41, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM42"), + .itemId = ITEM_TM42, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM42, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM43"), + .itemId = ITEM_TM43, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM43, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM44"), + .itemId = ITEM_TM44, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM44, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM45"), + .itemId = ITEM_TM45, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM45, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM46"), + .itemId = ITEM_TM46, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM46, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM47"), + .itemId = ITEM_TM47, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM47, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM48"), + .itemId = ITEM_TM48, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM48, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM49"), + .itemId = ITEM_TM49, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM49, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM50"), + .itemId = ITEM_TM50, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM50, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("VM01"), + .itemId = ITEM_HM01, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_HM01, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("VM02"), + .itemId = ITEM_HM02, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_HM02, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("VM03"), + .itemId = ITEM_HM03, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_HM03, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("VM04"), + .itemId = ITEM_HM04, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_HM04, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("VM05"), + .itemId = ITEM_HM05, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_HM05, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("VM06"), + .itemId = ITEM_HM06, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_HM06, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("VM07"), + .itemId = ITEM_HM07, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_HM07, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("VM08"), + .itemId = ITEM_HM08, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_HM08, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, +}; diff --git a/src/data/items_en.h b/src/data/items_en.h new file mode 100644 index 000000000..a3e822370 --- /dev/null +++ b/src/data/items_en.h @@ -0,0 +1,5587 @@ +const struct Item gItems[] = +{ + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("MASTER BALL"), + .itemId = ITEM_MASTER_BALL, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_MasterBall, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_POKE_BALLS, + .type = 0, + .fieldUseFunc = NULL, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_PokeBall, + .secondaryId = 0, + }, + { + .name = _("ULTRA BALL"), + .itemId = ITEM_ULTRA_BALL, + .price = 1200, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_UltraBall, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_POKE_BALLS, + .type = 1, + .fieldUseFunc = NULL, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_PokeBall, + .secondaryId = 1, + }, + { + .name = _("GREAT BALL"), + .itemId = ITEM_GREAT_BALL, + .price = 600, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_GreatBall, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_POKE_BALLS, + .type = 2, + .fieldUseFunc = NULL, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_PokeBall, + .secondaryId = 2, + }, + { + .name = _("POKé BALL"), + .itemId = ITEM_POKE_BALL, + .price = 200, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_PokeBall, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_POKE_BALLS, + .type = 3, + .fieldUseFunc = NULL, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_PokeBall, + .secondaryId = 3, + }, + { + .name = _("SAFARI BALL"), + .itemId = ITEM_SAFARI_BALL, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_SafariBall, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_POKE_BALLS, + .type = 4, + .fieldUseFunc = NULL, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_PokeBall, + .secondaryId = 4, + }, + { + .name = _("NET BALL"), + .itemId = ITEM_NET_BALL, + .price = 1000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_NetBall, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_POKE_BALLS, + .type = 5, + .fieldUseFunc = NULL, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_PokeBall, + .secondaryId = 5, + }, + { + .name = _("DIVE BALL"), + .itemId = ITEM_DIVE_BALL, + .price = 1000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_DiveBall, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_POKE_BALLS, + .type = 6, + .fieldUseFunc = NULL, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_PokeBall, + .secondaryId = 6, + }, + { + .name = _("NEST BALL"), + .itemId = ITEM_NEST_BALL, + .price = 1000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_NestBall, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_POKE_BALLS, + .type = 7, + .fieldUseFunc = NULL, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_PokeBall, + .secondaryId = 7, + }, + { + .name = _("REPEAT BALL"), + .itemId = ITEM_REPEAT_BALL, + .price = 1000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_RepeatBall, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_POKE_BALLS, + .type = 8, + .fieldUseFunc = NULL, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_PokeBall, + .secondaryId = 8, + }, + { + .name = _("TIMER BALL"), + .itemId = ITEM_TIMER_BALL, + .price = 1000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TimerBall, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_POKE_BALLS, + .type = 9, + .fieldUseFunc = NULL, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_PokeBall, + .secondaryId = 9, + }, + { + .name = _("LUXURY BALL"), + .itemId = ITEM_LUXURY_BALL, + .price = 1000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_LuxuryBall, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_POKE_BALLS, + .type = 10, + .fieldUseFunc = NULL, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_PokeBall, + .secondaryId = 10, + }, + { + .name = _("PREMIER BALL"), + .itemId = ITEM_PREMIER_BALL, + .price = 200, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_PremierBall, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_POKE_BALLS, + .type = 11, + .fieldUseFunc = NULL, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_PokeBall, + .secondaryId = 11, + }, + { + .name = _("POTION"), + .itemId = ITEM_POTION, + .price = 300, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 20, + .description = gItemDescription_Potion, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("ANTIDOTE"), + .itemId = ITEM_ANTIDOTE, + .price = 100, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Antidote, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("BURN HEAL"), + .itemId = ITEM_BURN_HEAL, + .price = 250, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_BurnHeal, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("ICE HEAL"), + .itemId = ITEM_ICE_HEAL, + .price = 250, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_IceHeal, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("AWAKENING"), + .itemId = ITEM_AWAKENING, + .price = 250, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Awakening, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("PARLYZ HEAL"), + .itemId = ITEM_PARALYZE_HEAL, + .price = 200, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_ParalyzeHeal, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("FULL RESTORE"), + .itemId = ITEM_FULL_RESTORE, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 255, + .description = gItemDescription_FullRestore, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("MAX POTION"), + .itemId = ITEM_MAX_POTION, + .price = 2500, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 255, + .description = gItemDescription_MaxPotion, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("HYPER POTION"), + .itemId = ITEM_HYPER_POTION, + .price = 1200, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 200, + .description = gItemDescription_HyperPotion, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("SUPER POTION"), + .itemId = ITEM_SUPER_POTION, + .price = 700, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 50, + .description = gItemDescription_SuperPotion, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("FULL HEAL"), + .itemId = ITEM_FULL_HEAL, + .price = 600, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_FullHeal, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("REVIVE"), + .itemId = ITEM_REVIVE, + .price = 1500, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Revive, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("MAX REVIVE"), + .itemId = ITEM_MAX_REVIVE, + .price = 4000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_MaxRevive, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("FRESH WATER"), + .itemId = ITEM_FRESH_WATER, + .price = 200, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 50, + .description = gItemDescription_FreshWater, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("SODA POP"), + .itemId = ITEM_SODA_POP, + .price = 300, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 60, + .description = gItemDescription_SodaPop, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("LEMONADE"), + .itemId = ITEM_LEMONADE, + .price = 350, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 80, + .description = gItemDescription_Lemonade, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("MOOMOO MILK"), + .itemId = ITEM_MOOMOO_MILK, + .price = 500, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 100, + .description = gItemDescription_MoomooMilk, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("ENERGYPOWDER"), + .itemId = ITEM_ENERGY_POWDER, + .price = 500, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_EnergyPowder, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("ENERGY ROOT"), + .itemId = ITEM_ENERGY_ROOT, + .price = 800, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_EnergyRoot, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("HEAL POWDER"), + .itemId = ITEM_HEAL_POWDER, + .price = 450, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_HealPowder, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("REVIVAL HERB"), + .itemId = ITEM_REVIVAL_HERB, + .price = 2800, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_RevivalHerb, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("ETHER"), + .itemId = ITEM_ETHER, + .price = 1200, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 10, + .description = gItemDescription_Ether, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_PPRecovery, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_PPRecovery, + .secondaryId = 0, + }, + { + .name = _("MAX ETHER"), + .itemId = ITEM_MAX_ETHER, + .price = 2000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 255, + .description = gItemDescription_MaxEther, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_PPRecovery, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_PPRecovery, + .secondaryId = 0, + }, + { + .name = _("ELIXIR"), + .itemId = ITEM_ELIXIR, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 10, + .description = gItemDescription_Elixir, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_PPRecovery, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_PPRecovery, + .secondaryId = 0, + }, + { + .name = _("MAX ELIXIR"), + .itemId = ITEM_MAX_ELIXIR, + .price = 4500, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 255, + .description = gItemDescription_MaxElixir, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_PPRecovery, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_PPRecovery, + .secondaryId = 0, + }, + { + .name = _("LAVA COOKIE"), + .itemId = ITEM_LAVA_COOKIE, + .price = 200, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_LavaCookie, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("BLUE FLUTE"), + .itemId = ITEM_BLUE_FLUTE, + .price = 100, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_BlueFlute, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("YELLOW FLUTE"), + .itemId = ITEM_YELLOW_FLUTE, + .price = 200, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_YellowFlute, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("RED FLUTE"), + .itemId = ITEM_RED_FLUTE, + .price = 300, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_RedFlute, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("BLACK FLUTE"), + .itemId = ITEM_BLACK_FLUTE, + .price = 400, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 50, + .description = gItemDescription_BlackFlute, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_BlackWhiteFlute, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("WHITE FLUTE"), + .itemId = ITEM_WHITE_FLUTE, + .price = 500, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 150, + .description = gItemDescription_WhiteFlute, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_BlackWhiteFlute, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("BERRY JUICE"), + .itemId = ITEM_BERRY_JUICE, + .price = 100, + .holdEffect = HOLD_EFFECT_RESTORE_HP, + .holdEffectParam = 20, + .description = gItemDescription_BerryJuice, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("SACRED ASH"), + .itemId = ITEM_SACRED_ASH, + .price = 200, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_SacredAsh, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_SacredAsh, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SHOAL SALT"), + .itemId = ITEM_SHOAL_SALT, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_ShoalSalt, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SHOAL SHELL"), + .itemId = ITEM_SHOAL_SHELL, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_ShoalShell, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("RED SHARD"), + .itemId = ITEM_RED_SHARD, + .price = 200, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_RedShard, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("BLUE SHARD"), + .itemId = ITEM_BLUE_SHARD, + .price = 200, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_BlueShard, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("YELLOW SHARD"), + .itemId = ITEM_YELLOW_SHARD, + .price = 200, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_YellowShard, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("GREEN SHARD"), + .itemId = ITEM_GREEN_SHARD, + .price = 200, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_GreenShard, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("HP UP"), + .itemId = ITEM_HP_UP, + .price = 9800, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_HPUp, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("PROTEIN"), + .itemId = ITEM_PROTEIN, + .price = 9800, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Protein, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("IRON"), + .itemId = ITEM_IRON, + .price = 9800, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Iron, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("CARBOS"), + .itemId = ITEM_CARBOS, + .price = 9800, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Carbos, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("CALCIUM"), + .itemId = ITEM_CALCIUM, + .price = 9800, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Calcium, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("RARE CANDY"), + .itemId = ITEM_RARE_CANDY, + .price = 4800, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_RareCandy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_RareCandy, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("PP UP"), + .itemId = ITEM_PP_UP, + .price = 9800, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_PPUp, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_PPUp, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("ZINC"), + .itemId = ITEM_ZINC, + .price = 9800, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Zinc, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("PP MAX"), + .itemId = ITEM_PP_MAX, + .price = 9800, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_PPMax, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_PPUp, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("GUARD SPEC."), + .itemId = ITEM_GUARD_SPEC, + .price = 700, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_GuardSpec, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_StatIncrease, + .secondaryId = 0, + }, + { + .name = _("DIRE HIT"), + .itemId = ITEM_DIRE_HIT, + .price = 650, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_DireHit, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_StatIncrease, + .secondaryId = 0, + }, + { + .name = _("X ATTACK"), + .itemId = ITEM_X_ATTACK, + .price = 500, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_XAttack, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_StatIncrease, + .secondaryId = 0, + }, + { + .name = _("X DEFEND"), + .itemId = ITEM_X_DEFEND, + .price = 550, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_XDefend, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_StatIncrease, + .secondaryId = 0, + }, + { + .name = _("X SPEED"), + .itemId = ITEM_X_SPEED, + .price = 350, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_XSpeed, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_StatIncrease, + .secondaryId = 0, + }, + { + .name = _("X ACCURACY"), + .itemId = ITEM_X_ACCURACY, + .price = 950, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_XAccuracy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_StatIncrease, + .secondaryId = 0, + }, + { + .name = _("X SPECIAL"), + .itemId = ITEM_X_SPECIAL, + .price = 350, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_XSpecial, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_StatIncrease, + .secondaryId = 0, + }, + { + .name = _("POKé DOLL"), + .itemId = ITEM_POKE_DOLL, + .price = 1000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_PokeDoll, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_Escape, + .secondaryId = 0, + }, + { + .name = _("FLUFFY TAIL"), + .itemId = ITEM_FLUFFY_TAIL, + .price = 1000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_FluffyTail, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_Escape, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SUPER REPEL"), + .itemId = ITEM_SUPER_REPEL, + .price = 500, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 200, + .description = gItemDescription_SuperRepel, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_Repel, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("MAX REPEL"), + .itemId = ITEM_MAX_REPEL, + .price = 700, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 250, + .description = gItemDescription_MaxRepel, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_Repel, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("ESCAPE ROPE"), + .itemId = ITEM_ESCAPE_ROPE, + .price = 550, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_EscapeRope, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 2, + .fieldUseFunc = ItemUseOutOfBattle_EscapeRope, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("REPEL"), + .itemId = ITEM_REPEL, + .price = 350, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 100, + .description = gItemDescription_Repel, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_Repel, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SUN STONE"), + .itemId = ITEM_SUN_STONE, + .price = 2100, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_SunStone, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_EvolutionStone, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("MOON STONE"), + .itemId = ITEM_MOON_STONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_MoonStone, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_EvolutionStone, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("FIRE STONE"), + .itemId = ITEM_FIRE_STONE, + .price = 2100, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_FireStone, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_EvolutionStone, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("THUNDERSTONE"), + .itemId = ITEM_THUNDER_STONE, + .price = 2100, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_ThunderStone, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_EvolutionStone, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("WATER STONE"), + .itemId = ITEM_WATER_STONE, + .price = 2100, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_WaterStone, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_EvolutionStone, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("LEAF STONE"), + .itemId = ITEM_LEAF_STONE, + .price = 2100, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_LeafStone, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_EvolutionStone, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TINYMUSHROOM"), + .itemId = ITEM_TINY_MUSHROOM, + .price = 500, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TinyMushroom, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("BIG MUSHROOM"), + .itemId = ITEM_BIG_MUSHROOM, + .price = 5000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_BigMushroom, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("PEARL"), + .itemId = ITEM_PEARL, + .price = 1400, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Pearl, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("BIG PEARL"), + .itemId = ITEM_BIG_PEARL, + .price = 7500, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_BigPearl, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("STARDUST"), + .itemId = ITEM_STARDUST, + .price = 2000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Stardust, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("STAR PIECE"), + .itemId = ITEM_STAR_PIECE, + .price = 9800, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_StarPiece, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("NUGGET"), + .itemId = ITEM_NUGGET, + .price = 10000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Nugget, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("HEART SCALE"), + .itemId = ITEM_HEART_SCALE, + .price = 100, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_HeartScale, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("ORANGE MAIL"), + .itemId = ITEM_ORANGE_MAIL, + .price = 50, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_OrangeMail, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 0, + .fieldUseFunc = ItemUseOutOfBattle_Mail, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("HARBOR MAIL"), + .itemId = ITEM_HARBOR_MAIL, + .price = 50, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_HarborMail, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 0, + .fieldUseFunc = ItemUseOutOfBattle_Mail, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 1, + }, + { + .name = _("GLITTER MAIL"), + .itemId = ITEM_GLITTER_MAIL, + .price = 50, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_GlitterMail, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 0, + .fieldUseFunc = ItemUseOutOfBattle_Mail, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 2, + }, + { + .name = _("MECH MAIL"), + .itemId = ITEM_MECH_MAIL, + .price = 50, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_MechMail, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 0, + .fieldUseFunc = ItemUseOutOfBattle_Mail, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 3, + }, + { + .name = _("WOOD MAIL"), + .itemId = ITEM_WOOD_MAIL, + .price = 50, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_WoodMail, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 0, + .fieldUseFunc = ItemUseOutOfBattle_Mail, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 4, + }, + { + .name = _("WAVE MAIL"), + .itemId = ITEM_WAVE_MAIL, + .price = 50, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_WaveMail, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 0, + .fieldUseFunc = ItemUseOutOfBattle_Mail, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 5, + }, + { + .name = _("BEAD MAIL"), + .itemId = ITEM_BEAD_MAIL, + .price = 50, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_BeadMail, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 0, + .fieldUseFunc = ItemUseOutOfBattle_Mail, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 6, + }, + { + .name = _("SHADOW MAIL"), + .itemId = ITEM_SHADOW_MAIL, + .price = 50, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_ShadowMail, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 0, + .fieldUseFunc = ItemUseOutOfBattle_Mail, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 7, + }, + { + .name = _("TROPIC MAIL"), + .itemId = ITEM_TROPIC_MAIL, + .price = 50, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TropicMail, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 0, + .fieldUseFunc = ItemUseOutOfBattle_Mail, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 8, + }, + { + .name = _("DREAM MAIL"), + .itemId = ITEM_DREAM_MAIL, + .price = 50, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_DreamMail, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 0, + .fieldUseFunc = ItemUseOutOfBattle_Mail, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 9, + }, + { + .name = _("FAB MAIL"), + .itemId = ITEM_FAB_MAIL, + .price = 50, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_FabMail, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 0, + .fieldUseFunc = ItemUseOutOfBattle_Mail, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 10, + }, + { + .name = _("RETRO MAIL"), + .itemId = ITEM_RETRO_MAIL, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_RetroMail, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 0, + .fieldUseFunc = ItemUseOutOfBattle_Mail, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 11, + }, + { + .name = _("CHERI BERRY"), + .itemId = ITEM_CHERI_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_CURE_PAR, + .holdEffectParam = 0, + .description = gItemDescription_CheriBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("CHESTO BERRY"), + .itemId = ITEM_CHESTO_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_CURE_SLP, + .holdEffectParam = 0, + .description = gItemDescription_ChestoBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("PECHA BERRY"), + .itemId = ITEM_PECHA_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_CURE_PSN, + .holdEffectParam = 0, + .description = gItemDescription_PechaBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("RAWST BERRY"), + .itemId = ITEM_RAWST_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_CURE_BRN, + .holdEffectParam = 0, + .description = gItemDescription_RawstBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("ASPEAR BERRY"), + .itemId = ITEM_ASPEAR_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_CURE_FRZ, + .holdEffectParam = 0, + .description = gItemDescription_AspearBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("LEPPA BERRY"), + .itemId = ITEM_LEPPA_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_RESTORE_PP, + .holdEffectParam = 10, + .description = gItemDescription_LeppaBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_PPRecovery, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_PPRecovery, + .secondaryId = 0, + }, + { + .name = _("ORAN BERRY"), + .itemId = ITEM_ORAN_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_RESTORE_HP, + .holdEffectParam = 10, + .description = gItemDescription_OranBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("PERSIM BERRY"), + .itemId = ITEM_PERSIM_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_CURE_CONFUSION, + .holdEffectParam = 0, + .description = gItemDescription_PersimBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("LUM BERRY"), + .itemId = ITEM_LUM_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_CURE_STATUS, + .holdEffectParam = 0, + .description = gItemDescription_LumBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("SITRUS BERRY"), + .itemId = ITEM_SITRUS_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_RESTORE_HP, + .holdEffectParam = 30, + .description = gItemDescription_SitrusBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("FIGY BERRY"), + .itemId = ITEM_FIGY_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_CONFUSE_SPICY, + .holdEffectParam = 8, + .description = gItemDescription_FigyBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("WIKI BERRY"), + .itemId = ITEM_WIKI_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_CONFUSE_DRY, + .holdEffectParam = 8, + .description = gItemDescription_WikiBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("MAGO BERRY"), + .itemId = ITEM_MAGO_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_CONFUSE_SWEET, + .holdEffectParam = 8, + .description = gItemDescription_MagoBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("AGUAV BERRY"), + .itemId = ITEM_AGUAV_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_CONFUSE_BITTER, + .holdEffectParam = 8, + .description = gItemDescription_AguavBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("IAPAPA BERRY"), + .itemId = ITEM_IAPAPA_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_CONFUSE_SOUR, + .holdEffectParam = 8, + .description = gItemDescription_IapapaBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("RAZZ BERRY"), + .itemId = ITEM_RAZZ_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_RazzBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("BLUK BERRY"), + .itemId = ITEM_BLUK_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_BlukBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("NANAB BERRY"), + .itemId = ITEM_NANAB_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_NanabBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("WEPEAR BERRY"), + .itemId = ITEM_WEPEAR_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_WepearBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("PINAP BERRY"), + .itemId = ITEM_PINAP_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_PinapBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("POMEG BERRY"), + .itemId = ITEM_POMEG_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_PomegBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("KELPSY BERRY"), + .itemId = ITEM_KELPSY_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_KelpsyBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("QUALOT BERRY"), + .itemId = ITEM_QUALOT_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_QualotBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("HONDEW BERRY"), + .itemId = ITEM_HONDEW_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_HondewBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("GREPA BERRY"), + .itemId = ITEM_GREPA_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_GrepaBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TAMATO BERRY"), + .itemId = ITEM_TAMATO_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TamatoBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("CORNN BERRY"), + .itemId = ITEM_CORNN_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_CornnBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("MAGOST BERRY"), + .itemId = ITEM_MAGOST_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_MagostBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("RABUTA BERRY"), + .itemId = ITEM_RABUTA_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_RabutaBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("NOMEL BERRY"), + .itemId = ITEM_NOMEL_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_NomelBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SPELON BERRY"), + .itemId = ITEM_SPELON_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_SpelonBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("PAMTRE BERRY"), + .itemId = ITEM_PAMTRE_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_PamtreBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("WATMEL BERRY"), + .itemId = ITEM_WATMEL_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_WatmelBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("DURIN BERRY"), + .itemId = ITEM_DURIN_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_DurinBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("BELUE BERRY"), + .itemId = ITEM_BELUE_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_BelueBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("LIECHI BERRY"), + .itemId = ITEM_LIECHI_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_ATTACK_UP, + .holdEffectParam = 4, + .description = gItemDescription_LiechiBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("GANLON BERRY"), + .itemId = ITEM_GANLON_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_DEFENSE_UP, + .holdEffectParam = 4, + .description = gItemDescription_GanlonBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SALAC BERRY"), + .itemId = ITEM_SALAC_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_SPEED_UP, + .holdEffectParam = 4, + .description = gItemDescription_SalacBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("PETAYA BERRY"), + .itemId = ITEM_PETAYA_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_SP_ATTACK_UP, + .holdEffectParam = 4, + .description = gItemDescription_PetayaBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("APICOT BERRY"), + .itemId = ITEM_APICOT_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_SP_DEFENSE_UP, + .holdEffectParam = 4, + .description = gItemDescription_ApicotBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("LANSAT BERRY"), + .itemId = ITEM_LANSAT_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_CRITICAL_UP, + .holdEffectParam = 4, + .description = gItemDescription_LansatBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("STARF BERRY"), + .itemId = ITEM_STARF_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_RANDOM_STAT_UP, + .holdEffectParam = 4, + .description = gItemDescription_StarfBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("ENIGMA BERRY"), + .itemId = ITEM_ENIGMA_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_EnigmaBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_EnigmaBerry, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_EnigmaBerry, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("BRIGHTPOWDER"), + .itemId = ITEM_BRIGHT_POWDER, + .price = 10, + .holdEffect = HOLD_EFFECT_EVASION_UP, + .holdEffectParam = 10, + .description = gItemDescription_BrightPowder, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("WHITE HERB"), + .itemId = ITEM_WHITE_HERB, + .price = 100, + .holdEffect = HOLD_EFFECT_RESTORE_STATS, + .holdEffectParam = 0, + .description = gItemDescription_WhiteHerb, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("MACHO BRACE"), + .itemId = ITEM_MACHO_BRACE, + .price = 3000, + .holdEffect = HOLD_EFFECT_MACHO_BRACE, + .holdEffectParam = 0, + .description = gItemDescription_MachoBrace, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("EXP. SHARE"), + .itemId = ITEM_EXP_SHARE, + .price = 3000, + .holdEffect = HOLD_EFFECT_EXP_SHARE, + .holdEffectParam = 0, + .description = gItemDescription_ExpShare, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("QUICK CLAW"), + .itemId = ITEM_QUICK_CLAW, + .price = 100, + .holdEffect = HOLD_EFFECT_QUICK_CLAW, + .holdEffectParam = 20, + .description = gItemDescription_QuickClaw, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SOOTHE BELL"), + .itemId = ITEM_SOOTHE_BELL, + .price = 100, + .holdEffect = HOLD_EFFECT_HAPPINESS_UP, + .holdEffectParam = 0, + .description = gItemDescription_SootheBell, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("MENTAL HERB"), + .itemId = ITEM_MENTAL_HERB, + .price = 100, + .holdEffect = HOLD_EFFECT_CURE_ATTRACT, + .holdEffectParam = 0, + .description = gItemDescription_MentalHerb, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("CHOICE BAND"), + .itemId = ITEM_CHOICE_BAND, + .price = 100, + .holdEffect = HOLD_EFFECT_CHOICE_BAND, + .holdEffectParam = 0, + .description = gItemDescription_ChoiceBand, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("KING’S ROCK"), + .itemId = ITEM_KINGS_ROCK, + .price = 100, + .holdEffect = HOLD_EFFECT_FLINCH, + .holdEffectParam = 10, + .description = gItemDescription_KingsRock, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SILVERPOWDER"), + .itemId = ITEM_SILVER_POWDER, + .price = 100, + .holdEffect = HOLD_EFFECT_BUG_POWER, + .holdEffectParam = 10, + .description = gItemDescription_SilverPowder, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("AMULET COIN"), + .itemId = ITEM_AMULET_COIN, + .price = 100, + .holdEffect = HOLD_EFFECT_DOUBLE_PRIZE, + .holdEffectParam = 10, + .description = gItemDescription_AmuletCoin, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("CLEANSE TAG"), + .itemId = ITEM_CLEANSE_TAG, + .price = 200, + .holdEffect = HOLD_EFFECT_REPEL, + .holdEffectParam = 0, + .description = gItemDescription_CleanseTag, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SOUL DEW"), + .itemId = ITEM_SOUL_DEW, + .price = 200, + .holdEffect = HOLD_EFFECT_SOUL_DEW, + .holdEffectParam = 0, + .description = gItemDescription_SoulDew, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("DEEPSEATOOTH"), + .itemId = ITEM_DEEP_SEA_TOOTH, + .price = 200, + .holdEffect = HOLD_EFFECT_DEEP_SEA_TOOTH, + .holdEffectParam = 0, + .description = gItemDescription_DeepSeaTooth, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("DEEPSEASCALE"), + .itemId = ITEM_DEEP_SEA_SCALE, + .price = 200, + .holdEffect = HOLD_EFFECT_DEEP_SEA_SCALE, + .holdEffectParam = 0, + .description = gItemDescription_DeepSeaScale, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SMOKE BALL"), + .itemId = ITEM_SMOKE_BALL, + .price = 200, + .holdEffect = HOLD_EFFECT_CAN_ALWAYS_RUN, + .holdEffectParam = 0, + .description = gItemDescription_SmokeBall, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("EVERSTONE"), + .itemId = ITEM_EVERSTONE, + .price = 200, + .holdEffect = HOLD_EFFECT_PREVENT_EVOLVE, + .holdEffectParam = 0, + .description = gItemDescription_Everstone, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("FOCUS BAND"), + .itemId = ITEM_FOCUS_BAND, + .price = 200, + .holdEffect = HOLD_EFFECT_FOCUS_BAND, + .holdEffectParam = 10, + .description = gItemDescription_FocusBand, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("LUCKY EGG"), + .itemId = ITEM_LUCKY_EGG, + .price = 200, + .holdEffect = HOLD_EFFECT_LUCKY_EGG, + .holdEffectParam = 0, + .description = gItemDescription_LuckyEgg, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SCOPE LENS"), + .itemId = ITEM_SCOPE_LENS, + .price = 200, + .holdEffect = HOLD_EFFECT_SCOPE_LENS, + .holdEffectParam = 0, + .description = gItemDescription_ScopeLens, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("METAL COAT"), + .itemId = ITEM_METAL_COAT, + .price = 100, + .holdEffect = HOLD_EFFECT_STEEL_POWER, + .holdEffectParam = 10, + .description = gItemDescription_MetalCoat, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("LEFTOVERS"), + .itemId = ITEM_LEFTOVERS, + .price = 200, + .holdEffect = HOLD_EFFECT_LEFTOVERS, + .holdEffectParam = 10, + .description = gItemDescription_Leftovers, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("DRAGON SCALE"), + .itemId = ITEM_DRAGON_SCALE, + .price = 2100, + .holdEffect = HOLD_EFFECT_DRAGON_SCALE, + .holdEffectParam = 10, + .description = gItemDescription_DragonScale, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("LIGHT BALL"), + .itemId = ITEM_LIGHT_BALL, + .price = 100, + .holdEffect = HOLD_EFFECT_LIGHT_BALL, + .holdEffectParam = 0, + .description = gItemDescription_LightBall, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SOFT SAND"), + .itemId = ITEM_SOFT_SAND, + .price = 100, + .holdEffect = HOLD_EFFECT_GROUND_POWER, + .holdEffectParam = 10, + .description = gItemDescription_SoftSand, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("HARD STONE"), + .itemId = ITEM_HARD_STONE, + .price = 100, + .holdEffect = HOLD_EFFECT_ROCK_POWER, + .holdEffectParam = 10, + .description = gItemDescription_HardStone, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("MIRACLE SEED"), + .itemId = ITEM_MIRACLE_SEED, + .price = 100, + .holdEffect = HOLD_EFFECT_GRASS_POWER, + .holdEffectParam = 10, + .description = gItemDescription_MiracleSeed, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("BLACKGLASSES"), + .itemId = ITEM_BLACK_GLASSES, + .price = 100, + .holdEffect = HOLD_EFFECT_DARK_POWER, + .holdEffectParam = 10, + .description = gItemDescription_BlackGlasses, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("BLACK BELT"), + .itemId = ITEM_BLACK_BELT, + .price = 100, + .holdEffect = HOLD_EFFECT_FIGHTING_POWER, + .holdEffectParam = 10, + .description = gItemDescription_BlackBelt, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("MAGNET"), + .itemId = ITEM_MAGNET, + .price = 100, + .holdEffect = HOLD_EFFECT_ELECTRIC_POWER, + .holdEffectParam = 10, + .description = gItemDescription_Magnet, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("MYSTIC WATER"), + .itemId = ITEM_MYSTIC_WATER, + .price = 100, + .holdEffect = HOLD_EFFECT_WATER_POWER, + .holdEffectParam = 10, + .description = gItemDescription_MysticWater, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SHARP BEAK"), + .itemId = ITEM_SHARP_BEAK, + .price = 100, + .holdEffect = HOLD_EFFECT_FLYING_POWER, + .holdEffectParam = 10, + .description = gItemDescription_SharpBeak, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("POISON BARB"), + .itemId = ITEM_POISON_BARB, + .price = 100, + .holdEffect = HOLD_EFFECT_POISON_POWER, + .holdEffectParam = 10, + .description = gItemDescription_PoisonBarb, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("NEVERMELTICE"), + .itemId = ITEM_NEVER_MELT_ICE, + .price = 100, + .holdEffect = HOLD_EFFECT_ICE_POWER, + .holdEffectParam = 10, + .description = gItemDescription_NeverMeltIce, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SPELL TAG"), + .itemId = ITEM_SPELL_TAG, + .price = 100, + .holdEffect = HOLD_EFFECT_GHOST_POWER, + .holdEffectParam = 10, + .description = gItemDescription_SpellTag, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TWISTEDSPOON"), + .itemId = ITEM_TWISTED_SPOON, + .price = 100, + .holdEffect = HOLD_EFFECT_PSYCHIC_POWER, + .holdEffectParam = 10, + .description = gItemDescription_TwistedSpoon, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("CHARCOAL"), + .itemId = ITEM_CHARCOAL, + .price = 9800, + .holdEffect = HOLD_EFFECT_FIRE_POWER, + .holdEffectParam = 10, + .description = gItemDescription_Charcoal, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("DRAGON FANG"), + .itemId = ITEM_DRAGON_FANG, + .price = 100, + .holdEffect = HOLD_EFFECT_DRAGON_POWER, + .holdEffectParam = 10, + .description = gItemDescription_DragonFang, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SILK SCARF"), + .itemId = ITEM_SILK_SCARF, + .price = 100, + .holdEffect = HOLD_EFFECT_NORMAL_POWER, + .holdEffectParam = 10, + .description = gItemDescription_SilkScarf, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("UP-GRADE"), + .itemId = ITEM_UP_GRADE, + .price = 2100, + .holdEffect = HOLD_EFFECT_UP_GRADE, + .holdEffectParam = 0, + .description = gItemDescription_UpGrade, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SHELL BELL"), + .itemId = ITEM_SHELL_BELL, + .price = 200, + .holdEffect = HOLD_EFFECT_SHELL_BELL, + .holdEffectParam = 8, + .description = gItemDescription_ShellBell, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SEA INCENSE"), + .itemId = ITEM_SEA_INCENSE, + .price = 9600, + .holdEffect = HOLD_EFFECT_WATER_POWER, + .holdEffectParam = 5, + .description = gItemDescription_SeaIncense, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("LAX INCENSE"), + .itemId = ITEM_LAX_INCENSE, + .price = 9600, + .holdEffect = HOLD_EFFECT_EVASION_UP, + .holdEffectParam = 5, + .description = gItemDescription_LaxIncense, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("LUCKY PUNCH"), + .itemId = ITEM_LUCKY_PUNCH, + .price = 10, + .holdEffect = HOLD_EFFECT_LUCKY_PUNCH, + .holdEffectParam = 0, + .description = gItemDescription_LuckyPunch, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("METAL POWDER"), + .itemId = ITEM_METAL_POWDER, + .price = 10, + .holdEffect = HOLD_EFFECT_METAL_POWDER, + .holdEffectParam = 0, + .description = gItemDescription_MetalPowder, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("THICK CLUB"), + .itemId = ITEM_THICK_CLUB, + .price = 500, + .holdEffect = HOLD_EFFECT_THICK_CLUB, + .holdEffectParam = 0, + .description = gItemDescription_ThickClub, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("STICK"), + .itemId = ITEM_STICK, + .price = 200, + .holdEffect = HOLD_EFFECT_STICK, + .holdEffectParam = 0, + .description = gItemDescription_Stick, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("RED SCARF"), + .itemId = ITEM_RED_SCARF, + .price = 100, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_RedScarf, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("BLUE SCARF"), + .itemId = ITEM_BLUE_SCARF, + .price = 100, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_BlueScarf, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("PINK SCARF"), + .itemId = ITEM_PINK_SCARF, + .price = 100, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_PinkScarf, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("GREEN SCARF"), + .itemId = ITEM_GREEN_SCARF, + .price = 100, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_GreenScarf, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("YELLOW SCARF"), + .itemId = ITEM_YELLOW_SCARF, + .price = 100, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_YellowScarf, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("MACH BIKE"), + .itemId = ITEM_MACH_BIKE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_MachBike, + .importance = 1, + .unk19 = 1, + .pocket = POCKET_KEY_ITEMS, + .type = 2, + .fieldUseFunc = ItemUseOutOfBattle_Bike, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("COIN CASE"), + .itemId = ITEM_COIN_CASE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_CoinCase, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CoinCase, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("ITEMFINDER"), + .itemId = ITEM_ITEMFINDER, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Itemfinder, + .importance = 1, + .unk19 = 1, + .pocket = POCKET_KEY_ITEMS, + .type = 2, + .fieldUseFunc = ItemUseOutOfBattle_Itemfinder, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("OLD ROD"), + .itemId = ITEM_OLD_ROD, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_OldRod, + .importance = 1, + .unk19 = 1, + .pocket = POCKET_KEY_ITEMS, + .type = 2, + .fieldUseFunc = ItemUseOutOfBattle_Rod, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("GOOD ROD"), + .itemId = ITEM_GOOD_ROD, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_GoodRod, + .importance = 1, + .unk19 = 1, + .pocket = POCKET_KEY_ITEMS, + .type = 2, + .fieldUseFunc = ItemUseOutOfBattle_Rod, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 1, + }, + { + .name = _("SUPER ROD"), + .itemId = ITEM_SUPER_ROD, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_SuperRod, + .importance = 1, + .unk19 = 1, + .pocket = POCKET_KEY_ITEMS, + .type = 2, + .fieldUseFunc = ItemUseOutOfBattle_Rod, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 2, + }, + { + .name = _("S.S. TICKET"), + .itemId = ITEM_SS_TICKET, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_SSTicket, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("CONTEST PASS"), + .itemId = ITEM_CONTEST_PASS, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_ContestPass, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("WAILMER PAIL"), + .itemId = ITEM_WAILMER_PAIL, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_WailmerPail, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 2, + .fieldUseFunc = ItemUseOutOfBattle_WailmerPail, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("DEVON GOODS"), + .itemId = ITEM_DEVON_GOODS, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_DevonGoods, + .importance = 2, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SOOT SACK"), + .itemId = ITEM_SOOT_SACK, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_SootSack, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("BASEMENT KEY"), + .itemId = ITEM_BASEMENT_KEY, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_BasementKey, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("ACRO BIKE"), + .itemId = ITEM_ACRO_BIKE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_AcroBike, + .importance = 1, + .unk19 = 1, + .pocket = POCKET_KEY_ITEMS, + .type = 2, + .fieldUseFunc = ItemUseOutOfBattle_Bike, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 1, + }, + { + .name = _("{POKEBLOCK} CASE"), + .itemId = ITEM_POKEBLOCK_CASE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_PokeblockCase, + .importance = 1, + .unk19 = 1, + .pocket = POCKET_KEY_ITEMS, + .type = 3, + .fieldUseFunc = ItemUseOutOfBattle_PokeblockCase, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("LETTER"), + .itemId = ITEM_LETTER, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Letter, + .importance = 2, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("EON TICKET"), + .itemId = ITEM_EON_TICKET, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_EonTicket, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 1, + }, + { + .name = _("RED ORB"), + .itemId = ITEM_RED_ORB, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_RedOrb, + .importance = 2, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("BLUE ORB"), + .itemId = ITEM_BLUE_ORB, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_BlueOrb, + .importance = 2, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SCANNER"), + .itemId = ITEM_SCANNER, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Scanner, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("GO-GOGGLES"), + .itemId = ITEM_GO_GOGGLES, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_GoGoggles, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("METEORITE"), + .itemId = ITEM_METEORITE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Meteorite, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("RM. 1 KEY"), + .itemId = ITEM_ROOM_1_KEY, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Room1Key, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("RM. 2 KEY"), + .itemId = ITEM_ROOM_2_KEY, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Room2Key, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("RM. 4 KEY"), + .itemId = ITEM_ROOM_4_KEY, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Room4Key, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("RM. 6 KEY"), + .itemId = ITEM_ROOM_6_KEY, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Room6Key, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("STORAGE KEY"), + .itemId = ITEM_STORAGE_KEY, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_StorageKey, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("ROOT FOSSIL"), + .itemId = ITEM_ROOT_FOSSIL, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_RootFossil, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("CLAW FOSSIL"), + .itemId = ITEM_CLAW_FOSSIL, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_ClawFossil, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("DEVON SCOPE"), + .itemId = ITEM_DEVON_SCOPE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_DevonScope, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM01"), + .itemId = ITEM_TM01, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM01, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM02"), + .itemId = ITEM_TM02, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM02, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM03"), + .itemId = ITEM_TM03, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM03, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM04"), + .itemId = ITEM_TM04, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM04, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM05"), + .itemId = ITEM_TM05, + .price = 1000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM05, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM06"), + .itemId = ITEM_TM06, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM06, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM07"), + .itemId = ITEM_TM07, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM07, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM08"), + .itemId = ITEM_TM08, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM08, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM09"), + .itemId = ITEM_TM09, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM09, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM10"), + .itemId = ITEM_TM10, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM10, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM11"), + .itemId = ITEM_TM11, + .price = 2000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM11, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM12"), + .itemId = ITEM_TM12, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM12, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM13"), + .itemId = ITEM_TM13, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM13, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM14"), + .itemId = ITEM_TM14, + .price = 5500, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM14, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM15"), + .itemId = ITEM_TM15, + .price = 7500, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM15, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM16"), + .itemId = ITEM_TM16, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM16, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM17"), + .itemId = ITEM_TM17, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM17, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM18"), + .itemId = ITEM_TM18, + .price = 2000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM18, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM19"), + .itemId = ITEM_TM19, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM19, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM20"), + .itemId = ITEM_TM20, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM20, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM21"), + .itemId = ITEM_TM21, + .price = 1000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM21, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM22"), + .itemId = ITEM_TM22, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM22, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM23"), + .itemId = ITEM_TM23, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM23, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM24"), + .itemId = ITEM_TM24, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM24, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM25"), + .itemId = ITEM_TM25, + .price = 5500, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM25, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM26"), + .itemId = ITEM_TM26, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM26, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM27"), + .itemId = ITEM_TM27, + .price = 1000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM27, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM28"), + .itemId = ITEM_TM28, + .price = 2000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM28, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM29"), + .itemId = ITEM_TM29, + .price = 2000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM29, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM30"), + .itemId = ITEM_TM30, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM30, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM31"), + .itemId = ITEM_TM31, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM31, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM32"), + .itemId = ITEM_TM32, + .price = 2000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM32, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM33"), + .itemId = ITEM_TM33, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM33, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM34"), + .itemId = ITEM_TM34, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM34, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM35"), + .itemId = ITEM_TM35, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM35, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM36"), + .itemId = ITEM_TM36, + .price = 1000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM36, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM37"), + .itemId = ITEM_TM37, + .price = 2000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM37, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM38"), + .itemId = ITEM_TM38, + .price = 5500, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM38, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM39"), + .itemId = ITEM_TM39, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM39, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM40"), + .itemId = ITEM_TM40, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM40, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM41"), + .itemId = ITEM_TM41, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM41, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM42"), + .itemId = ITEM_TM42, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM42, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM43"), + .itemId = ITEM_TM43, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM43, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM44"), + .itemId = ITEM_TM44, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM44, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM45"), + .itemId = ITEM_TM45, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM45, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM46"), + .itemId = ITEM_TM46, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM46, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM47"), + .itemId = ITEM_TM47, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM47, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM48"), + .itemId = ITEM_TM48, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM48, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM49"), + .itemId = ITEM_TM49, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM49, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM50"), + .itemId = ITEM_TM50, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM50, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("HM01"), + .itemId = ITEM_HM01, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_HM01, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("HM02"), + .itemId = ITEM_HM02, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_HM02, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("HM03"), + .itemId = ITEM_HM03, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_HM03, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("HM04"), + .itemId = ITEM_HM04, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_HM04, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("HM05"), + .itemId = ITEM_HM05, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_HM05, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("HM06"), + .itemId = ITEM_HM06, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_HM06, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("HM07"), + .itemId = ITEM_HM07, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_HM07, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("HM08"), + .itemId = ITEM_HM08, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_HM08, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, +}; diff --git a/src/data/pokedex_entries_de.h b/src/data/pokedex_entries_de.h index 38263ec6e..0f64cba66 100644 --- a/src/data/pokedex_entries_de.h +++ b/src/data/pokedex_entries_de.h @@ -1,3 +1,11 @@ +#ifdef SAPPHIRE +static const u8 DexDescription_Dummy_1[] = _( + "Dieses POKéMON wurde erst vor kurzem \n" + "entdeckt und wird noch erforscht."); +static const u8 DexDescription_Dummy_2[] = _( + "Zur Zeit sind keine genauen Informatio-\n" + "nen über dieses POKéMON vorhanden."); +#else static const u8 DexDescription_Dummy_1[] = _( "Dieses POKéMON wurde erst vor kurzem \n" "entdeckt und wird noch erforscht."); @@ -5,7 +13,17 @@ static const u8 DexDescription_Dummy_2[] = _( "Zur Zeit sind keine genauen\n" "Informationen über dieses\n" "POKéMON vorhanden."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Bisasam_1[] = _( + "BISASAM macht gern einmal ein\n" + "Nickerchen im Sonnenschein.\n" + "Auf seinem Rücken trägt es einen Samen."); +static const u8 DexDescription_Bisasam_2[] = _( + "Indem es Sonnenstrahlen aufsaugt,\n" + "wird er zunehmend größer."); +#else static const u8 DexDescription_Bisasam_1[] = _( "BISASAM macht gern einmal ein\n" "Nickerchen im Sonnenschein.\n" @@ -13,7 +31,18 @@ static const u8 DexDescription_Bisasam_1[] = _( static const u8 DexDescription_Bisasam_2[] = _( "Indem es Sonnenstrahlen aufsaugt,\n" "wird der Samen zunehmend größer."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Bisaknosp_1[] = _( + "BISAKNOSP hat eine Knospe auf seinem\n" + "Rücken. Seine Beine und sein Stamm sind\n" + "kräftig genug, um sein Gewicht zu"); +static const u8 DexDescription_Bisaknosp_2[] = _( + "tragen. Wenn es lange in der Sonne liegt,\n" + "ist das ein Anzeichen dafür, dass die\n" + "Knospe bald blüht."); +#else static const u8 DexDescription_Bisaknosp_1[] = _( "BISAKNOSP hat eine Knospe auf seinem\n" "Rücken. Beine und Rumpf sind kräftig\n" @@ -22,7 +51,17 @@ static const u8 DexDescription_Bisaknosp_2[] = _( "Wenn es lange in der Sonne liegt, ist das\n" "ein Anzeichen dafür, dass die Knospe\n" "bald blüht."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Bisaflor_1[] = _( + "BISAFLOR hat eine Blume auf seinem\n" + "Rücken. Wenn sie viel Nahrung und Sonne\n" + "aufnimmt, verfärbt sie sich bunt."); +static const u8 DexDescription_Bisaflor_2[] = _( + "Der Duft der Blume besänftigt die\n" + "Gemüter der Menschen."); +#else static const u8 DexDescription_Bisaflor_1[] = _( "BISAFLOR hat eine Blume auf seinem\n" "Rücken. Wenn sie viel Nahrung und Sonne\n" @@ -30,7 +69,17 @@ static const u8 DexDescription_Bisaflor_1[] = _( static const u8 DexDescription_Bisaflor_2[] = _( "Der Duft der Blume mildert die Emotionen\n" "der Menschen."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Glumanda_1[] = _( + "Die Flamme auf seiner Schweifspitze\n" + "zeigt seine Gefühlslage an. Sie\n" + "flackert, wenn GLUMANDA zufrieden ist."); +static const u8 DexDescription_Glumanda_2[] = _( + "Wenn dieses POKéMON wütend wird, lodert\n" + "die Flamme sehr stark."); +#else static const u8 DexDescription_Glumanda_1[] = _( "Die Flamme auf seiner Schweifspitze\n" "zeigt seine Gefühlslage an. Sie\n" @@ -38,7 +87,18 @@ static const u8 DexDescription_Glumanda_1[] = _( static const u8 DexDescription_Glumanda_2[] = _( "Wenn dieses POKéMON wütend wird, lodert\n" "die Flamme gewaltig."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Glutexo_1[] = _( + "GLUTEXO attackiert seine Feinde mit\n" + "aller Gewalt und unter Einsatz seiner\n" + "scharfen Krallen. Trifft es auf starke"); +static const u8 DexDescription_Glutexo_2[] = _( + "Gegner, wird es wütend und die\n" + "Flamme auf seiner Schweifspitze\n" + "flackert in einem bläulichen Ton."); +#else static const u8 DexDescription_Glutexo_1[] = _( "Gnadenlos besiegt GLUTEXO seine Geg-\n" "ner mit seinen scharfen Klauen. Wenn es \n" @@ -47,7 +107,17 @@ static const u8 DexDescription_Glutexo_2[] = _( "wütend und die Flamme auf seiner\n" "Schweifspitze flackert in einem\n" "bläulichen Ton."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Glurak_1[] = _( + "GLURAK fliegt durch die Lüfte, um\n" + "starke Gegner aufzuspüren. Sein heißer\n" + "Feueratem bringt alles zum Schmelzen."); +static const u8 DexDescription_Glurak_2[] = _( + "Aber es richtet seinen Feueratem nie\n" + "gegen schwächere Gegner."); +#else static const u8 DexDescription_Glurak_1[] = _( "GLURAK fliegt durch die Lüfte, um\n" "starke Gegner aufzuspüren. Sein heißer\n" @@ -55,6 +125,7 @@ static const u8 DexDescription_Glurak_1[] = _( static const u8 DexDescription_Glurak_2[] = _( "Aber es richtet seinen Feueratem nie\n" "auf schwächere Gegner."); +#endif static const u8 DexDescription_Schiggy_1[] = _( "SCHIGGYs Panzer dient nicht nur zum\n" @@ -81,6 +152,15 @@ static const u8 DexDescription_Turtok_2[] = _( "verschießen, dass es damit aus fast\n" "50 Metern leere Dosen trifft."); +#ifdef SAPPHIRE +static const u8 DexDescription_Raupy_1[] = _( + "RAUPY ist sehr gefräßig. Es kann\n" + "Blätter verschlingen, die seine eigene\n" + "Größe um ein Vielfaches übersteigen."); +static const u8 DexDescription_Raupy_2[] = _( + "Seine Antennen sondern einen\n" + "übel riechenden Gestank ab."); +#else static const u8 DexDescription_Raupy_1[] = _( "RAUPY ist sehr gefräßig, es kann\n" "Blätter verschlingen, die größer sind\n" @@ -88,7 +168,17 @@ static const u8 DexDescription_Raupy_1[] = _( static const u8 DexDescription_Raupy_2[] = _( "Seine Antennen sondern einen\n" "übel riechenden Gestank ab."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Safcon_1[] = _( + "Der Panzer dieses POKéMON ist hart wie\n" + "Stahl. SAFCON bewegt sich kaum, da es\n" + "das weiche Innere unter seiner harten"); +static const u8 DexDescription_Safcon_2[] = _( + "Schale auf seine Entwicklung \n" + "vorbereitet."); +#else static const u8 DexDescription_Safcon_1[] = _( "Der Panzer dieses POKéMON ist hart wie\n" "Stahl. SAFCON bewegt sich kaum,"); @@ -96,6 +186,7 @@ static const u8 DexDescription_Safcon_2[] = _( "da es das weiche Innere unter seiner\n" "harten Schale auf seine Entwicklung \n" "vorbereitet."); +#endif static const u8 DexDescription_Smettbo_1[] = _( "SMETTBOs größte Fähigkeit ist das Auf-\n" @@ -105,6 +196,16 @@ static const u8 DexDescription_Smettbo_2[] = _( "fast 10 km von seinem Nest entfernt\n" "blühen."); +#ifdef SAPPHIRE +static const u8 DexDescription_Hornliu_1[] = _( + "HORNLIU verfügt über einen ausge-\n" + "zeichneten Geruchssinn. Es ist in der\n" + "Lage, seine Lieblingsblätter von denen"); +static const u8 DexDescription_Hornliu_2[] = _( + "zu unterscheiden, die es nicht mag,\n" + "indem es mit seinem großen roten\n" + "Rüssel daran schnuppert."); +#else static const u8 DexDescription_Hornliu_1[] = _( "HORNLIU verfügt über einen ausge-\n" "zeichneten Geruchssinn. So kann es\n" @@ -113,7 +214,18 @@ static const u8 DexDescription_Hornliu_2[] = _( "unterscheiden, die es nicht mag, indem\n" "es mit seiner großen roten Nase daran\n" "schnuppert."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Kokuna_1[] = _( + "KOKUNA bewegt sich kaum, wenn es sich\n" + "an einen Baum heftet. In seinem Inneren\n" + "jedoch regt sich einiges, da es sich auf"); +static const u8 DexDescription_Kokuna_2[] = _( + "seine bevorstehende Entwicklung \n" + "vorbereitet. Dabei wird seine Schale\n" + "sehr heiß."); +#else static const u8 DexDescription_Kokuna_1[] = _( "KOKUNA bewegt sich kaum, wenn es an\n" "einem Baum haftet. In seinem Inneren\n" @@ -122,14 +234,33 @@ static const u8 DexDescription_Kokuna_2[] = _( "seine bevorstehende Entwicklung vor-\n" "bereitet. Dabei wird seine Schale sehr\n" "heiß."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Bibor_1[] = _( + "BIBOR ist sehr wehrhaft. Es sollte sich\n" + "besser niemand seinem Nest nähern."); +static const u8 DexDescription_Bibor_2[] = _( + "Wenn man sie ärgert, greifen sie in\n" + "Schwärmen an."); +#else static const u8 DexDescription_Bibor_1[] = _( "BIBOR sind sehr wehrhaft. Es sollte sich\n" "besser niemand ihrem Nest nähern."); static const u8 DexDescription_Bibor_2[] = _( "Wenn man sie ärgert, greifen sie in\n" "Schwärmen an."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Taubsi_1[] = _( + "TAUBSI verfügt über einen sehr ge-\n" + "schulten Orientierungssinn. Es kehrt \n" + "zielsicher zu seinem Nest zurück,"); +static const u8 DexDescription_Taubsi_2[] = _( + "egal, wie weit es sich von seiner \n" + "gewohnten Umgebung entfernt hat."); +#else static const u8 DexDescription_Taubsi_1[] = _( "TAUBSI verfügt über einen sehr ge-\n" "schulten Orientierungssinn. Es kehrt \n" @@ -137,6 +268,7 @@ static const u8 DexDescription_Taubsi_1[] = _( static const u8 DexDescription_Taubsi_2[] = _( "egal, wie weit es sich von seiner\n" "gewohnten Umgebung entfernt hat."); +#endif static const u8 DexDescription_Tauboga_1[] = _( "TAUBOGA nennt ein großes Gebiet sein\n" @@ -165,6 +297,15 @@ static const u8 DexDescription_Rattfratz_2[] = _( "seinen Lebensraum und richtet sein\n" "Nest überall ein."); +#ifdef SAPPHIRE +static const u8 DexDescription_Rattikarl_1[] = _( + "RATTIKARLs kräftige Zähne wachsen\n" + "immer nach. Deshalb nagt es ständig\n" + "Steine und Baumstämme an."); +static const u8 DexDescription_Rattikarl_2[] = _( + "Manchmal knabbert es sogar\n" + "Hauswände an."); +#else static const u8 DexDescription_Rattikarl_1[] = _( "RATTIKARLs kräftige Zähne wachsen\n" "ständig. Deshalb nagt es unablässig\n" @@ -172,7 +313,18 @@ static const u8 DexDescription_Rattikarl_1[] = _( static const u8 DexDescription_Rattikarl_2[] = _( "um sie abzuwetzen. Manchmal knabbert\n" "es sogar Hauswände an."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Habitak_1[] = _( + "HABITAK kann einen sehr lauten Schrei\n" + "ausstoßen, den man über die Entfernung\n" + "von 1 km vernehmen kann. Durch das"); +static const u8 DexDescription_Habitak_2[] = _( + "Echo seiner hohen, wehklagenden \n" + "Schreie warnt dieses POKéMON seine\n" + "Artgenossen vor drohender Gefahr."); +#else static const u8 DexDescription_Habitak_1[] = _( "HABITAK kann einen sehr lauten Schrei\n" "ausstoßen, den man über die Entfernung\n" @@ -181,7 +333,18 @@ static const u8 DexDescription_Habitak_2[] = _( "Durch das Echo seiner hohen, wehklagen-\n" "den Schreie warnt dieses POKéMON seine\n" "Artgenossen vor drohender Gefahr."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Ibitak_1[] = _( + "IBITAK erkennt man an seinem langen \n" + "Schnabel. \n" + "Er ist hervorragend dafür geeignet,"); +static const u8 DexDescription_Ibitak_2[] = _( + "im Erdreich oder im Wasser Beute zu\n" + "jagen. Es setzt seinen langen, dünnen\n" + "Schnabel dabei sehr geschickt ein."); +#else static const u8 DexDescription_Ibitak_1[] = _( "IBITAK erkennt man an seinem langen \n" "Hals und Schnabel. \n" @@ -190,7 +353,17 @@ static const u8 DexDescription_Ibitak_2[] = _( "im Erdreich oder im Wasser Beute zu\n" "jagen. Es setzt seinen langen, dünnen\n" "Schnabel dabei sehr geschickt ein."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Rettan_1[] = _( + "RETTAN rollt sich zu einer Spirale \n" + "zusammen, wenn es sich ausruht.\n" + "Aus dieser Haltung kann es blitzschnell"); +static const u8 DexDescription_Rettan_2[] = _( + "auf Bedrohungen aus allen Richtungen\n" + "reagieren, indem es seinen Kopf hebt."); +#else static const u8 DexDescription_Rettan_1[] = _( "RETTAN rollt sich zu einer Spirale zu-\n" "sammen, wenn es sich ausruht.\n" @@ -198,6 +371,7 @@ static const u8 DexDescription_Rettan_1[] = _( static const u8 DexDescription_Rettan_2[] = _( "auf Bedrohungen aus allen Richtungen\n" "reagieren, indem es seinen Kopf hebt."); +#endif static const u8 DexDescription_Arbok_1[] = _( "Dieses POKéMON ist unheimlich stark. Es\n" @@ -208,6 +382,16 @@ static const u8 DexDescription_Arbok_2[] = _( "es unmöglich, seinem Würgegriff zu ent-\n" "kommen."); +#ifdef SAPPHIRE +static const u8 DexDescription_Pikachu_1[] = _( + "Dieses POKéMON kann in seinen\n" + "Backentaschen Elektrizität speichern.\n" + "Diese laden sich nachts auf, während"); +static const u8 DexDescription_Pikachu_2[] = _( + "PIKACHU schläft. Es entlädt manchmal\n" + "seine elektrische Ladung, wenn es gera-\n" + "de aufgewacht und noch schläfrig ist."); +#else static const u8 DexDescription_Pikachu_1[] = _( "Immer wenn PIKACHU auf etwas Neues\n" "stößt, jagt es einen Elektroschock \n" @@ -216,7 +400,17 @@ static const u8 DexDescription_Pikachu_2[] = _( "Wenn du eine verkohlte Beere findest,\n" "hat dieses POKéMON seine elektrische\n" "Ladung falsch eingeschätzt."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Raichu_1[] = _( + "Dieses POKéMON gibt eine schwache\n" + "elektrische Ladung ab. Dadurch glüht\n" + "es bei Dunkelheit leicht. RAICHU entlädt"); +static const u8 DexDescription_Raichu_2[] = _( + "Elektrizität, indem es sein\n" + "Hinterteil in den Boden gräbt."); +#else static const u8 DexDescription_Raichu_1[] = _( "Wenn seine elektrische Ladung zu groß\n" "wird, entlädt RAICHU seine Energie ins\n" @@ -224,7 +418,18 @@ static const u8 DexDescription_Raichu_1[] = _( static const u8 DexDescription_Raichu_2[] = _( "Neben dem Nest dieses POKéMON findet\n" "man häufig versengtes Erdreich."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Sandan_1[] = _( + "SANDAN hat eine sehr trockene und\n" + "extrem robuste Haut. Dieses POKéMON\n" + "kann sich zu einem Ball zusammenrollen,"); +static const u8 DexDescription_Sandan_2[] = _( + "von dem jegliche Angriffe abprallen.\n" + "Nachts gräbt es sich im Wüstensand ein\n" + "und schläft dort."); +#else static const u8 DexDescription_Sandan_1[] = _( "SANDANs Körper kann sehr viel Wasser\n" "aufnehmen, so dass es auch in der\n" @@ -232,7 +437,18 @@ static const u8 DexDescription_Sandan_1[] = _( static const u8 DexDescription_Sandan_2[] = _( "Dieses POKéMON rollt sich zusammen, um\n" "sich vor Feinden zu schützen."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Sandamer_1[] = _( + "SANDAMER kann sich zu einem Ball mit\n" + "langen Stacheln zusammenrollen. Im\n" + "Kampf schlägt es seine Gegner in die"); +static const u8 DexDescription_Sandamer_2[] = _( + "Flucht, indem es sie mit seinen Stacheln\n" + "sticht. Dann springt es sie an und\n" + "schlägt mit seinen scharfen Klauen zu."); +#else static const u8 DexDescription_Sandamer_1[] = _( "SANDAMERs Körper ist übersät\n" "mit spitzen Stacheln, die eigentlich\n" @@ -240,7 +456,18 @@ static const u8 DexDescription_Sandamer_1[] = _( static const u8 DexDescription_Sandamer_2[] = _( "Einmal im Jahr fallen die alten Stacheln\n" "aus und werden durch neue ersetzt."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_NidoranF_1[] = _( + "NIDORAN besitzt Widerhaken, die ein\n" + "starkes Gift ausstoßen. Sie sind \n" + "vermutlich zum Schutz dieses"); +static const u8 DexDescription_NidoranF_2[] = _( + "schmächtigen POKéMON entstanden.\n" + "Wenn es wütend wird, stößt es ein\n" + "gefährliches Gift aus seinem Horn aus."); +#else static const u8 DexDescription_NidoranF_1[] = _( "NIDORAN besitzt Widerhaken, die ein\n" "starkes Gift ausstoßen. Sie sind ver-\n" @@ -249,7 +476,18 @@ static const u8 DexDescription_NidoranF_2[] = _( "schmächtigen POKéMON entstanden.\n" "Wenn es wütend wird, stößt es ein\n" "gefährliches Gift aus seinem Horn aus."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Nidorina_1[] = _( + "Wenn NIDORINA mit seinen Freunden oder\n" + "seiner Familie zusammen ist, zieht\n" + "es seine Widerhaken ein, damit"); +static const u8 DexDescription_Nidorina_2[] = _( + "es niemanden verletzt. Dieses\n" + "POKéMON wird nervös, wenn man es\n" + "von seinen Artgenossen trennt."); +#else static const u8 DexDescription_Nidorina_1[] = _( "Wenn NIDORINA mit seinen Freunden oder\n" "seiner Familie zusammen ist, zieht\n" @@ -258,7 +496,18 @@ static const u8 DexDescription_Nidorina_2[] = _( "niemanden verletzt. Dieses\n" "POKéMON wird nervös, wenn man es\n" "von seinen Artgenossen trennt."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Nidoqueen_1[] = _( + "NIDOQUEENs Körper ist mit sehr harten\n" + "Schuppen bedeckt. Es ist sehr\n" + "geschickt darin, Gegner mit harten"); +static const u8 DexDescription_Nidoqueen_2[] = _( + "Attacken wegzuschleudern.\n" + "Dieses POKéMON entwickelt die größte\n" + "Kraft, wenn es seine Jungen verteidigt."); +#else static const u8 DexDescription_Nidoqueen_1[] = _( "NIDOQUEENs Körper ist mit sehr harten\n" "Schuppen bedeckt. Es ist sehr ge-\n" @@ -267,7 +516,18 @@ static const u8 DexDescription_Nidoqueen_2[] = _( "Attacken wegzuschleudern.\n" "Dieses POKéMON entwickelt am meisten\n" "Kraft, wenn es seine Jungen verteidigt."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_NidoranM_1[] = _( + "Das männliche NIDORAN hat Muskeln\n" + "entwickelt, um seine Ohren bewegen zu\n" + "können. Dadurch kann es sie in jede"); +static const u8 DexDescription_NidoranM_2[] = _( + "beliebige Richtung wenden. Diesem\n" + "POKéMON entgeht nicht das leiseste\n" + "Geräusch."); +#else static const u8 DexDescription_NidoranM_1[] = _( "Das männliche NIDORAN hat Muskeln ent-\n" "wickelt, um seine Ohren bewegen zu kön-\n" @@ -276,6 +536,7 @@ static const u8 DexDescription_NidoranM_2[] = _( "ge Richtung drehen. Diesem POKéMON \n" "entgeht nicht einmal das leiseste Ge-\n" "räusch."); +#endif static const u8 DexDescription_Nidorino_1[] = _( "NIDORINO besitzt ein Horn, das sogar\n" @@ -286,6 +547,15 @@ static const u8 DexDescription_Nidorino_2[] = _( "auf und es schlägt den Gegner mit aller\n" "Kraft in die Flucht."); +#ifdef SAPPHIRE +static const u8 DexDescription_Nidoking_1[] = _( + "NIDOKINGs Schweif ist enorm stark. Mit\n" + "einer Bewegung kann es einen \n" + "metallenen Sendemast zum Einsturz"); +static const u8 DexDescription_Nidoking_2[] = _( + "bringen. Wenn es in Rage gerät, ist es\n" + "nur schwer aufzuhalten."); +#else static const u8 DexDescription_Nidoking_1[] = _( "NIDOKINGs Schweif ist enorm stark. Mit\n" "einer Bewegung kann es einen metalle-\n" @@ -293,7 +563,18 @@ static const u8 DexDescription_Nidoking_1[] = _( static const u8 DexDescription_Nidoking_2[] = _( "Wenn es in Rage gerät, ist es nur schwer\n" "aufzuhalten."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Piepi_1[] = _( + "In Vollmondnächten zeigt sich dieses\n" + "POKéMON. Wenn es Tag wird, kehrt \n" + "PIEPI zu seinem Zufluchtsort in den"); +static const u8 DexDescription_Piepi_2[] = _( + "Bergen zurück und schläft \n" + "eingekuschelt neben seinen\n" + "Artgenossen ein."); +#else static const u8 DexDescription_Piepi_1[] = _( "In Vollmondnächten sammeln sich einige\n" "dieser POKéMON, um zu spielen. Wird es \n" @@ -302,6 +583,7 @@ static const u8 DexDescription_Piepi_2[] = _( "ort in den Bergen zurück und\n" "schläft eingekuschelt neben\n" "seinen Artgenossen ein."); +#endif static const u8 DexDescription_Pixi_1[] = _( "PIXI bewegt sich fort, indem es leicht\n" @@ -311,6 +593,16 @@ static const u8 DexDescription_Pixi_2[] = _( "Wasser gehen. Bei Mondschein \n" "unternimmt es Spaziergänge auf Seen."); +#ifdef SAPPHIRE +static const u8 DexDescription_Vulpix_1[] = _( + "In VULPIX’ Körper brennt eine Flamme,\n" + "die niemals erlischt. Am Tage, wenn die\n" + "Temperaturen steigen, stößt dieses"); +static const u8 DexDescription_Vulpix_2[] = _( + "POKéMON Flammen aus seinem Mund aus.\n" + "So schützt es sich davor, dass sein\n" + "Körper zu heiß wird."); +#else static const u8 DexDescription_Vulpix_1[] = _( "VULPIX kommt mit einem weißen Schweif\n" "zur Welt. Dieser teilt sich sechsfach, \n" @@ -319,7 +611,18 @@ static const u8 DexDescription_Vulpix_2[] = _( "viel Zuneigung bekommt.\n" "Seine sechs Schweife kräuseln sich\n" "schließlich."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Vulnona_1[] = _( + "Eine Legende besagt, dass VULNONA\n" + "zu existieren begann, als neun\n" + "Zauberer mit heiligen Kräften zu einem"); +static const u8 DexDescription_Vulnona_2[] = _( + "verschmolzen. Dieses POKéMON ist\n" + "hochintelligent und versteht die\n" + "menschliche Sprache."); +#else static const u8 DexDescription_Vulnona_1[] = _( "VULNONA sendet einen unheimlichen\n" "Lichtstrahl aus seinen hellroten Augen\n" @@ -328,7 +631,18 @@ static const u8 DexDescription_Vulnona_2[] = _( "Gedanken seines Gegners zu erlangen.\n" "Man sagt, dieses POKéMON könne 1000\n" "Jahre leben."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Pummeluff_1[] = _( + "Wenn dieses POKéMON singt, hört es\n" + "nicht auf zu atmen. Im Kampf gegen\n" + "einen Gegner, der nicht so leicht"); +static const u8 DexDescription_Pummeluff_2[] = _( + "in Schlaf zu versetzen ist, kann\n" + "PUMMELUFF nicht atmen. Leider\n" + "gefährdet es sich dadurch selbst."); +#else static const u8 DexDescription_Pummeluff_1[] = _( "PUMMELUFFs Stimmbänder können die\n" "Tonlage seiner Stimme beliebig vari-\n" @@ -336,7 +650,17 @@ static const u8 DexDescription_Pummeluff_1[] = _( static const u8 DexDescription_Pummeluff_2[] = _( "Fähigkeit, um seine Gegner mit monoto-\n" "nem Gesang in Tiefschlaf zu versetzen."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Knuddeluff_1[] = _( + "KNUDDELUFFs Körper ist sehr dehnbar.\n" + "Indem es tief einatmet, kann sich\n" + "dieses POKéMON selbst aufblasen."); +static const u8 DexDescription_Knuddeluff_2[] = _( + "Wenn es aufgepumpt ist, hüpft es\n" + "wie ein Luftballon umher."); +#else static const u8 DexDescription_Knuddeluff_1[] = _( "KNUDDELUFF hat handtellergroße Augen,\n" "die immer mit Tränenflüssigkeit bedeckt\n" @@ -344,7 +668,17 @@ static const u8 DexDescription_Knuddeluff_1[] = _( static const u8 DexDescription_Knuddeluff_2[] = _( "POKéMON, so wird dieser sofort ausge-\n" "spült."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Zubat_1[] = _( + "ZUBAT meidet Sonnenlicht, da es dadurch\n" + "krank würde. Am Tage hält es sich in\n" + "Höhlen oder unter den Dachrinnen alter"); +static const u8 DexDescription_Zubat_2[] = _( + "Häuser auf. Dort schläft es mit dem\n" + "Kopf nach unten."); +#else static const u8 DexDescription_Zubat_1[] = _( "Tagsüber bleibt ZUBAT an einem dunklen\n" "Ort und bewegt sich kaum. Wenn es dem \n" @@ -352,7 +686,18 @@ static const u8 DexDescription_Zubat_1[] = _( static const u8 DexDescription_Zubat_2[] = _( "wird, zieht es sich Verbrennungen an\n" "seinem Körper zu."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Golbat_1[] = _( + "GOLBAT beißt seine Beute mit seinen\n" + "vier Reißzähnen und trinkt das Blut\n" + "seiner Opfer. Es wird in Nächten aktiv,"); +static const u8 DexDescription_Golbat_2[] = _( + "in denen nicht einmal der Mond scheint.\n" + "Es fliegt dann durch die Dunkelheit und\n" + "greift Menschen und POKéMON an."); +#else static const u8 DexDescription_Golbat_1[] = _( "GOLBAT hat es auf das Blut von Lebe-\n" "wesen abgesehen. Im Schutze der Nacht\n" @@ -361,7 +706,18 @@ static const u8 DexDescription_Golbat_2[] = _( "Dieses POKéMON fliegt durch die\n" "Nacht, um nach frischem Blut zu\n" "suchen."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Myrapla_1[] = _( + "MYRAPLA sucht nach fruchtbarem, \n" + "nahrhaftem Boden und pflanzt sich\n" + "selbst darin ein. Solange es"); +static const u8 DexDescription_Myrapla_2[] = _( + "eingepflanzt ist, nehmen seine Füße\n" + "tagsüber die Gestalt von Baumwurzeln\n" + "an."); +#else static const u8 DexDescription_Myrapla_1[] = _( "Am Tage vergräbt sich MYRAPLA im Boden,\n" "um mit seinem ganzen Körper Nahrung\n" @@ -369,7 +725,17 @@ static const u8 DexDescription_Myrapla_1[] = _( static const u8 DexDescription_Myrapla_2[] = _( "Je fruchtbarer der Boden ist, desto\n" "glänzender werden seine Blätter."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Duflor_1[] = _( + "Aus DUFLORs Mund tropft übelst\n" + "riechender Honig. Diesen Gestank\n" + "scheint es zu lieben, denn es"); +static const u8 DexDescription_Duflor_2[] = _( + "schnieft die giftigen Dämpfe ein und\n" + "sabbert danach noch mehr Honig."); +#else static const u8 DexDescription_Duflor_1[] = _( "DUFLOR produziert einen Ekel\n" "erregenden Gestank aus dem Stempel\n" @@ -378,7 +744,17 @@ static const u8 DexDescription_Duflor_2[] = _( "wird der Gestank noch unerträglicher. \n" "Wenn sich dieses POKéMON in Sicherheit\n" "befindet, stößt es keinen Gestank aus."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Giflor_1[] = _( + "GIFLOR hat die größten Blätter der Welt.\n" + "Sie ziehen Beute an und bestäuben sie\n" + "mit giftigen Sporen. Wenn die Beute"); +static const u8 DexDescription_Giflor_2[] = _( + "sich nicht mehr rührt, fängt dieses\n" + "POKéMON sie und frisst sie auf."); +#else static const u8 DexDescription_Giflor_1[] = _( "GIFLORs giftige Pollen rufen böse\n" "allergische Anfälle hervor. Deshalb ist\n" @@ -386,7 +762,18 @@ static const u8 DexDescription_Giflor_1[] = _( static const u8 DexDescription_Giflor_2[] = _( "Dschungel zu nähern, so anziehend sie\n" "auch sein mag."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Paras_1[] = _( + "Auf PARAS’ Rücken wachsen parasitäre\n" + "Pilze, die Tochukaso genannt werden.\n" + "Sie wachsen, indem sie diesem"); +static const u8 DexDescription_Paras_2[] = _( + "KÄFER-/PFLANZEN-PKMN Nährstoffe\n" + "entziehen. Sie sind sehr wertvoll als\n" + "lebensverlängernde Medizin."); +#else static const u8 DexDescription_Paras_1[] = _( "Auf PARAS’ Rücken wachsen parasitäre\n" "Pilze, die Tochukaso genannt werden.\n" @@ -395,7 +782,18 @@ static const u8 DexDescription_Paras_2[] = _( "KÄFER/PFLANZEN-PKMN Nährstoffe\n" "entziehen. Sie sind sehr wertvoll als\n" "lebensverlängernde Medizin."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Parasek_1[] = _( + "PARASEK sucht große Bäume heim und\n" + "entzieht Nährstoffe aus Stamm und \n" + "Wurzeln."); +static const u8 DexDescription_Parasek_2[] = _( + "Wenn ein befallener Baum stirbt, sucht\n" + "es sich zusammen mit seinen \n" + "Artgenossen einen neuen Wirt."); +#else static const u8 DexDescription_Parasek_1[] = _( "PARASEK sucht große Bäume heim und\n" "entzieht Nährstoffe aus Stamm und \n" @@ -404,6 +802,7 @@ static const u8 DexDescription_Parasek_2[] = _( "Wenn ein befallener Baum stirbt, sucht\n" "es sich zusammen mit seinen Artge-\n" "nossen einen neuen Wirt."); +#endif static const u8 DexDescription_Bluzuk_1[] = _( "BLUZUK hat einen Pelz aus dünnen\n" @@ -413,6 +812,15 @@ static const u8 DexDescription_Bluzuk_2[] = _( "Es hat große Augen, denen auch winzig\n" "kleine Beute nicht entgeht."); +#ifdef SAPPHIRE +static const u8 DexDescription_Omot_1[] = _( + "OMOT ist ein nachtaktives POKéMON.\n" + "Kleine Insekten, die vom Licht in der\n" + "Dunkelheit angezogen, Straßenlaternen"); +static const u8 DexDescription_Omot_2[] = _( + "umschwärmen, sind seine bevorzugte\n" + "Beute."); +#else static const u8 DexDescription_Omot_1[] = _( "OMOT ist ein nachtaktives POKéMON.\n" "Kleine Insekten, die vom Licht in der\n" @@ -420,6 +828,7 @@ static const u8 DexDescription_Omot_1[] = _( static const u8 DexDescription_Omot_2[] = _( "umschwärmen, sind seine bevorzugte\n" "Beute."); +#endif static const u8 DexDescription_Digda_1[] = _( "DIGDA wird zumeist auf Farmen\n" @@ -438,6 +847,15 @@ static const u8 DexDescription_Digdri_2[] = _( "Sie arbeiten so gut zusammen, dass sie \n" "endlos graben können."); +#ifdef SAPPHIRE +static const u8 DexDescription_Mauzi_1[] = _( + "MAUZI zieht seine scharfen Krallen ein,\n" + "um umherschleichen zu können, ohne\n" + "verräterische Spuren zu hinterlassen."); +static const u8 DexDescription_Mauzi_2[] = _( + "Dieses POKéMON hat eine Vorliebe für\n" + "Münzen, die das Licht reflektieren."); +#else static const u8 DexDescription_Mauzi_1[] = _( "MAUZI zieht seine scharfen Krallen ein,\n" "um umherschleichen zu können, ohne\n" @@ -445,6 +863,7 @@ static const u8 DexDescription_Mauzi_1[] = _( static const u8 DexDescription_Mauzi_2[] = _( "Dieses POKéMON hat eine Vorliebe für\n" "Münzen, die im Licht glitzern."); +#endif static const u8 DexDescription_Snobilikat_1[] = _( "SNOBILIKAT hat sechs dicke Schnurr-\n" @@ -455,6 +874,16 @@ static const u8 DexDescription_Snobilikat_2[] = _( "wird sehr zutraulich, wenn man es an den\n" "Schnurrhaaren berührt."); +#ifdef SAPPHIRE +static const u8 DexDescription_Enton_1[] = _( + "ENTON besitzt mystische Kräfte. Wenn\n" + "es sie einsetzt, erinnert es sich nicht\n" + "mehr daran. Es kann ein solches"); +static const u8 DexDescription_Enton_2[] = _( + "Ereignis offensichtlich nicht im Ge-\n" + "dächtnis behalten, da es sich in einen\n" + "tiefschlafähnlichen Zustand versetzt."); +#else static const u8 DexDescription_Enton_1[] = _( "ENTON verwendet eine geheimnisvolle\n" "Kraft. Dabei erzeugt es Gehirnströme,\n" @@ -463,7 +892,18 @@ static const u8 DexDescription_Enton_2[] = _( "kennt. Diese Entdeckung führte zu \n" "einer umstrittenen Diskussion unter\n" "Wissenschaftlern."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Entoron_1[] = _( + "ENTORON ist der schnellste Schwimmer\n" + "von allen POKéMON. Es schwimmt mit\n" + "Leichtigkeit auch durch eine raue,"); +static const u8 DexDescription_Entoron_2[] = _( + "stürmische See. Manchmal rettet es\n" + "Menschen, die in Seenot geraten sind\n" + "und auf dem Meer treiben."); +#else static const u8 DexDescription_Entoron_1[] = _( "Die schwimmhäutigen Flossen an seinen\n" "Vorder- und Hinterbeinen und der \n" @@ -472,7 +912,17 @@ static const u8 DexDescription_Entoron_2[] = _( "ENTORON unheimlich schnell. Dieses\n" "POKéMON ist auf jeden Fall schneller als\n" "die meisten Hochleistungsschwimmer."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Menki_1[] = _( + "Wenn MENKI sich schüttelt und schwer\n" + "durch die Nase atmet, dann ist es \n" + "wütend. Da es blitzartig in Raserei"); +static const u8 DexDescription_Menki_2[] = _( + "gerät, ist es unmöglich, seinem Zorn\n" + "zu entkommen."); +#else static const u8 DexDescription_Menki_1[] = _( "Wenn MENKI sich schüttelt und schwer\n" "durch die Nase atmet, dann ist es \n" @@ -480,7 +930,17 @@ static const u8 DexDescription_Menki_1[] = _( static const u8 DexDescription_Menki_2[] = _( "gerät, ist es unmöglich seinem Zorn\n" "zu entkommen."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Rasaff_1[] = _( + "Wenn RASAFF wütend ist, wird seine Blut-\n" + "zirkulation gesteigert und seine Mus-\n" + "keln werden noch stärker."); +static const u8 DexDescription_Rasaff_2[] = _( + "Allerdings sinkt dabei auch die\n" + "Fähigkeit logischen Denkens."); +#else static const u8 DexDescription_Rasaff_1[] = _( "Wenn RASAFF wütend ist, wird seine Blut-\n" "zirkulation gesteigert und seine Mus-\n" @@ -488,7 +948,18 @@ static const u8 DexDescription_Rasaff_1[] = _( static const u8 DexDescription_Rasaff_2[] = _( "Allerdings mindert das auch die \n" "Fähigkeit zum logischen Denken."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Fukano_1[] = _( + "FUKANO hat einen ausgezeichneten Ge-\n" + "ruchssinn. Wenn dieses POKéMON ein-\n" + "mal einen Geruch wahrgenommen hat,"); +static const u8 DexDescription_Fukano_2[] = _( + "vergisst es ihn nicht mehr. Es benutzt\n" + "diese Fähigkeit dazu, die Gefühlslage\n" + "von Lebewesen zu erkennen."); +#else static const u8 DexDescription_Fukano_1[] = _( "FUKANO hat einen ausgezeichneten Ge-\n" "ruchssinn. Wenn dieses POKéMON ein-\n" @@ -497,6 +968,7 @@ static const u8 DexDescription_Fukano_2[] = _( "vergisst es ihn nicht mehr. Es benutzt\n" "diese Fähigkeit dazu, die Gefühlslage\n" "von Lebewesen auszuloten."); +#endif static const u8 DexDescription_Arkani_1[] = _( "ARKANI ist sehr schnell. Es kann an\n" @@ -521,6 +993,14 @@ static const u8 DexDescription_Quaputzi_1[] = _( static const u8 DexDescription_Quaputzi_2[] = _( "eines Gegners entkommen."); +#ifdef SAPPHIRE +static const u8 DexDescription_Quappo_1[] = _( + "QUAPPO besitzt hochentwickelte, starke\n" + "Muskeln, die niemals ermüden. Es ist so\n" + "kräftig, dass es mühelos den Pazifik"); +static const u8 DexDescription_Quappo_2[] = _( + "durchschwimmen kann."); +#else static const u8 DexDescription_Quappo_1[] = _( "QUAPPO besitzt hochentwickelte, starke\n" "Muskeln, die niemals ermüden, egal, wie\n" @@ -528,7 +1008,17 @@ static const u8 DexDescription_Quappo_1[] = _( static const u8 DexDescription_Quappo_2[] = _( "Es ist so kräftig, dass es mühelos den\n" "Pazifik durchschwimmen kann."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Abra_1[] = _( + "ABRA braucht achtzehn Stunden Schlaf\n" + "pro Tag, sonst verliert es die Fähigkeit,\n" + "seine telekinetischen Kräfte zu"); +static const u8 DexDescription_Abra_2[] = _( + "nutzen. ABRA flüchtet mit Hilfe des\n" + "TELEPORT, schläft dabei aber weiter."); +#else static const u8 DexDescription_Abra_1[] = _( "ABRA schläft 18 Stunden am Tag.\n" "Es nimmt die Gegenwart von Feinden\n" @@ -537,7 +1027,18 @@ static const u8 DexDescription_Abra_2[] = _( "In einer solchen Situation bringt es\n" "sich umgehend mit TELEPORT in\n" "Sicherheit."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Kadabra_1[] = _( + "KADABRA hält einen silbernen Löffel in\n" + "der Hand. Es verstärkt damit die\n" + "Alphawellen in seinem Gehirn. Ohne den"); +static const u8 DexDescription_Kadabra_2[] = _( + "Löffel könnte dieses POKéMON nur die\n" + "Hälfte seiner telekinetischen Kräfte\n" + "nutzen."); +#else static const u8 DexDescription_Kadabra_1[] = _( "KADABRA sendet Alphawellen aus, wenn es\n" "Kopfschmerzen hat. Nur wer eine beson-\n" @@ -545,7 +1046,18 @@ static const u8 DexDescription_Kadabra_1[] = _( static const u8 DexDescription_Kadabra_2[] = _( "dieses POKéMON unter seine Fittiche\n" "nehmen."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Simsala_1[] = _( + "SIMSALAs Hirn wächst stetig weiter und\n" + "seine Gehirnzellen werden unendlich\n" + "vervielfacht. Durch sein verblüffendes"); +static const u8 DexDescription_Simsala_2[] = _( + "Gehirn erreicht dieses POKéMON einen IQ\n" + "von 5.000. Es erinnert sich an alles, was\n" + "in der Welt passiert ist."); +#else static const u8 DexDescription_Simsala_1[] = _( "SIMSALAs Gehirn hört nicht auf zu\n" "wachsen, so dass sein Kopf zu schwer\n" @@ -553,7 +1065,17 @@ static const u8 DexDescription_Simsala_1[] = _( static const u8 DexDescription_Simsala_2[] = _( "Dieses POKéMON hält seinen Kopf mit\n" "psychokinetischer Energie aufrecht."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Machollo_1[] = _( + "MACHOLLO trainiert, indem es ein GEOROK\n" + "hochhebt, als wäre es eine Hantel. Es\n" + "gibt auch MACHOLLO, die durch die Welt"); +static const u8 DexDescription_Machollo_2[] = _( + "reisen, um alle Arten der Kampfkunst \n" + "zu erlernen."); +#else static const u8 DexDescription_Machollo_1[] = _( "MACHOLLOs Muskeln sind etwas Beson-\n" "deres. Sie schmerzen nie, egal, wie sehr\n" @@ -561,7 +1083,17 @@ static const u8 DexDescription_Machollo_1[] = _( static const u8 DexDescription_Machollo_2[] = _( "Dieses POKéMON hat genug Kraft, um 100\n" "Erwachsene umherzuwerfen."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Maschock_1[] = _( + "MASCHOCK stählt seinen Körper jeden\n" + "Tag, zum Beispiel indem es Menschen bei\n" + "einer harten körperlichen Arbeit hilft."); +static const u8 DexDescription_Maschock_2[] = _( + "An seinen freien Tagen begibt es sich\n" + "auf Felder und Berge, um zu trainieren."); +#else static const u8 DexDescription_Maschock_1[] = _( "MASCHOCKs starke Muskeln sind so hart\n" "wie Stahl. Dieses POKéMON hat so viel\n" @@ -569,7 +1101,18 @@ static const u8 DexDescription_Maschock_1[] = _( static const u8 DexDescription_Maschock_2[] = _( "einen Sumo-Ringer in der Luft halten\n" "kann."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Machomei_1[] = _( + "MACHOMEI wurde berühmt, da es alle\n" + "Arten der Kampfkunst beherrscht. Wenn\n" + "es einen Gegner mit seinen vier Armen zu"); +static const u8 DexDescription_Machomei_2[] = _( + "fassen gekriegt hat, ist der Kampf noch\n" + "nicht vorbei. Es schleudert ihn dann\n" + "nämlich weit über den Horizont hinaus."); +#else static const u8 DexDescription_Machomei_1[] = _( "MACHOMEI hat genug Kraft, um alles \n" "Mögliche zu stemmen. Bei Tätigkeiten,\n" @@ -578,7 +1121,18 @@ static const u8 DexDescription_Machomei_2[] = _( "machen es ihm seine Arme jedoch nicht\n" "leicht. Dieses POKéMON neigt dazu,\n" "zuerst zu handeln und dann zu denken."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Knofensa_1[] = _( + "KNOFENSAs schlanker und elastischer\n" + "Körper ermöglicht es ihm, jeglichem\n" + "Angriff auszuweichen, so heftig dieser"); +static const u8 DexDescription_Knofensa_2[] = _( + "auch sein mag. Dieses POKéMON spuckt\n" + "eine ätzende Flüssigkeit aus, die sogar\n" + "Eisen zersetzen kann."); +#else static const u8 DexDescription_Knofensa_1[] = _( "KNOFENSAs schlanker und elastischer\n" "Körper ermöglicht es ihm, jedem\n" @@ -587,7 +1141,18 @@ static const u8 DexDescription_Knofensa_2[] = _( "auch sein mag. Dieses POKéMON spuckt\n" "eine ätzende Flüssigkeit aus, die sogar\n" "Eisen zersetzen kann."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Ultrigaria_1[] = _( + "ULTRIGARIA hat einen großen Haken\n" + "an seinem Hinterteil. Nachts hängt\n" + "sich dieses POKéMON zum Schlafen an"); +static const u8 DexDescription_Ultrigaria_2[] = _( + "einen Ast. Wenn es sich im Schlaf \n" + "bewegt, kann es passieren, dass es auf\n" + "dem Boden wieder aufwacht."); +#else static const u8 DexDescription_Ultrigaria_1[] = _( "ULTRIGARIA hat einen großen Haken\n" "an seinem Hinterteil. Nachts hängt\n" @@ -596,6 +1161,7 @@ static const u8 DexDescription_Ultrigaria_2[] = _( "einen Ast. Wenn es sich im Schlaf be-\n" "wegt, kann es passieren, dass es auf\n" "dem Boden wieder aufwacht."); +#endif static const u8 DexDescription_Sarzenia_1[] = _( "Aus SARZENIAs Kopf ragt eine lange\n" @@ -606,6 +1172,16 @@ static const u8 DexDescription_Sarzenia_2[] = _( "nähert, wird sie von diesem POKéMON\n" "im Ganzen verschlungen."); +#ifdef SAPPHIRE +static const u8 DexDescription_Tentacha_1[] = _( + "TENTACHA nimmt Sonnenlicht auf und\n" + "bricht es in seinem Körper mit Hilfe von\n" + "Wasser, um es in Strahlenenergie"); +static const u8 DexDescription_Tentacha_2[] = _( + "umzuwandeln. Dieses POKéMON verschießt\n" + "Strahlen aus seinen kristallartigen\n" + "Augen."); +#else static const u8 DexDescription_Tentacha_1[] = _( "TENTACHAs Körper setzt sich zum größ-\n" "ten Teil aus Wasser zusammen. Wenn es\n" @@ -614,7 +1190,18 @@ static const u8 DexDescription_Tentacha_2[] = _( "Wenn dieses POKéMON auszutrocknen be-\n" "ginnt, sollte man es schnell wieder ins\n" "Wasser zurückbringen."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Tentoxa_1[] = _( + "TENTOXA besitzt Tentakel, die es\n" + "jederzeit ausfahren und einziehen\n" + "kann. Es fängt damit Beute und"); +static const u8 DexDescription_Tentoxa_2[] = _( + "schwächt diese, indem es ihr ein\n" + "starkes Gift verabreicht. Es kann bis\n" + "zu 80 Opfer gleichzeitig fangen."); +#else static const u8 DexDescription_Tentoxa_1[] = _( "TENTOXA hat große, rote Kugeln auf \n" "seinem Kopf. Sie glühen auf, bevor sie \n" @@ -623,7 +1210,18 @@ static const u8 DexDescription_Tentoxa_2[] = _( "erschüttern. Ein Ausbruch dieses \n" "POKéMON erzeugt starke Wellen \n" "in seiner Umgebung."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Kleinstein_1[] = _( + "Wenn KLEINSTEIN tief und fest schläft,\n" + "gräbt es sich selbst zur Hälfte im Boden\n" + "ein. Selbst wenn Wanderer versehentlich"); +static const u8 DexDescription_Kleinstein_2[] = _( + "auf KLEINSTEIN treten, wacht es nicht\n" + "auf. Am Morgen rollt es auf der Suche\n" + "nach Nahrung den Berg herunter."); +#else static const u8 DexDescription_Kleinstein_1[] = _( "Je länger ein KLEINSTEIN lebt, desto\n" "mehr wird seine raue Oberfläche ab-\n" @@ -631,7 +1229,18 @@ static const u8 DexDescription_Kleinstein_1[] = _( static const u8 DexDescription_Kleinstein_2[] = _( "Das Herz dieses POKéMON bleibt aber\n" "für immer versteinert, hart und rau."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Georok_1[] = _( + "Steine sind GEOROKs Lieblingsspeise.\n" + "Dieses POKéMON klettert vom Fuße\n" + "eines Berges zu seinem Gipfel empor"); +static const u8 DexDescription_Georok_2[] = _( + "und zermalmt dabei das Gestein. Wenn es\n" + "den Gipfel erreicht hat, rollt es wieder\n" + "herunter."); +#else static const u8 DexDescription_Georok_1[] = _( "GEOROK wächst, indem es sich von Stei-\n" "nen ernährt. Am liebsten mag es Steine,\n" @@ -639,14 +1248,36 @@ static const u8 DexDescription_Georok_1[] = _( static const u8 DexDescription_Georok_2[] = _( "Dieses POKéMON frisst sich täglich\n" "durch eine riesige Menge von Steinen."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Geowaz_1[] = _( + "GEOWAZ ist dafür bekannt, dass es\n" + "Berghänge herunterrollt. Damit es nicht\n" + "in die Häuser der Menschen hineinrollt,"); +static const u8 DexDescription_Geowaz_2[] = _( + "wurden Gräben so an den Bergen\n" + "angelegt, dass der Weg dieses POKéMON\n" + "umgeleitet wird."); +#else static const u8 DexDescription_Geowaz_1[] = _( "GEOWAZ lebt hoch in den Bergen. Gibt es \n" "ein starkes Erdbeben, rollt dieses\n" "POKéMON so lange den Berg hinunter,"); static const u8 DexDescription_Geowaz_2[] = _( "bis es schließlich unten angekommen ist."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Ponita_1[] = _( + "Nach seiner Geburt ist PONITA sehr\n" + "schwach. Es braucht sehr lange, bis es\n" + "auf allen Vieren steht. Dieses POKéMON"); +static const u8 DexDescription_Ponita_2[] = _( + "wird stärker, da es bei dem Versuch, mit\n" + "seinen Eltern Schritt zu halten, immer\n" + "wieder stolpert und hinfällt."); +#else static const u8 DexDescription_Ponita_1[] = _( "Nach seiner Geburt ist PONITA so\n" "schwach, dass es kaum von alleine\n" @@ -655,7 +1286,18 @@ static const u8 DexDescription_Ponita_2[] = _( "dadurch schnell stärker, dass es sich\n" "beim Versuch, mit seinen Eltern Schritt\n" "zu halten, immer wieder aufrappeln muss."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Gallopa_1[] = _( + "Man kann GALLOPA dabei beobachten, \n" + "wie es fröhlich über Felder und Wiesen\n" + "galoppiert. Wenn dieses POKéMON"); +static const u8 DexDescription_Gallopa_2[] = _( + "jedoch Ernst macht, erreicht es bis zu\n" + "240 km/h. Dann beginnt seine Mähne\n" + "zu lodern."); +#else static const u8 DexDescription_Gallopa_1[] = _( "Man kann GALLOPA dabei beobachten, \n" "wie es lässig über Felder und Wiesen\n" @@ -664,6 +1306,7 @@ static const u8 DexDescription_Gallopa_2[] = _( "jedoch Ernst macht, erreicht es bis zu\n" "240 km/h. Dann beginnt seine Mähne\n" "zu lodern."); +#endif static const u8 DexDescription_Flegmon_1[] = _( "FLEGMON benutzt seinen Schweif, um \n" @@ -674,6 +1317,16 @@ static const u8 DexDescription_Flegmon_2[] = _( "gerade tun wollte, und verbringt ganze \n" "Tage damit, am Ufer herumzutrödeln."); +#ifdef SAPPHIRE +static const u8 DexDescription_Lahmus_1[] = _( + "An LAHMUS’ Schweif hat sich ein \n" + "MUSCHAS festgebissen. Daher kann es\n" + "ihn nicht mehr zum Fischen benutzen"); +static const u8 DexDescription_Lahmus_2[] = _( + "und ist dazu gezwungen, umherzu-\n" + "schwimmen und Ausschau nach Beute zu\n" + "halten."); +#else static const u8 DexDescription_Lahmus_1[] = _( "An LAHMUS’ Rute hat sich ein MUSCHAS\n" "festgebissen. Daher kann es ihn nicht\n" @@ -682,7 +1335,18 @@ static const u8 DexDescription_Lahmus_2[] = _( "und es ist dazu gezwungen, umherzu-\n" "schwimmen und nach Beute Ausschau\n" "zu halten."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Magnetilo_1[] = _( + "MAGNETILO segelt durch die Luft und \n" + "sendet dabei elektromagnetische Wellen\n" + "an beiden Seiten seines Körpers aus."); +static const u8 DexDescription_Magnetilo_2[] = _( + "Dieses POKéMON wird flugunfähig, wenn\n" + "die Stromquelle in seinem Inneren\n" + "erschöpft ist."); +#else static const u8 DexDescription_Magnetilo_1[] = _( "MAGNETILO ernährt sich von Elektri-\n" "zität aus Stromleitungen. Dieses\n" @@ -691,7 +1355,18 @@ static const u8 DexDescription_Magnetilo_2[] = _( "Sicherungskästen. Wenn es in deinem\n" "Haus zu einem Stromausfall kommt,\n" "solltest du die Sicherungen überprüfen."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Magneton_1[] = _( + "MAGNETON strahlt eine starke magne-\n" + "tische Energie ab, die für elektronische\n" + "Geräte und Präzisionsinstrumente sehr"); +static const u8 DexDescription_Magneton_2[] = _( + "schädlich ist. In einigen Städten\n" + "werden die Bewohner gebeten, dieses\n" + "POKéMON in einem POKéBALL zu halten."); +#else static const u8 DexDescription_Magneton_1[] = _( "MAGNETON erzeugt ein sehr starkes Mag-\n" "netfeld, das Maschinen zerstören kann.\n" @@ -699,7 +1374,18 @@ static const u8 DexDescription_Magneton_1[] = _( static const u8 DexDescription_Magneton_2[] = _( "Sirenen, die die Bürger vor Scharen\n" "dieses POKéMON warnen sollen."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Porenta_1[] = _( + "PORENTA trifft man immer mit einem\n" + "Stock irgendeiner Pflanze an. Es gibt\n" + "gute und schlechte Stöcke."); +static const u8 DexDescription_Porenta_2[] = _( + "Von diesem POKéMON wird behauptet, es \n" + "kämpfe gegen die eigenen Artgenossen\n" + "um die besten Stöcke."); +#else static const u8 DexDescription_Porenta_1[] = _( "PORENTA trifft man immer mit einer\n" "Lauchstange an. Es gibt gute und\n" @@ -707,14 +1393,35 @@ static const u8 DexDescription_Porenta_1[] = _( static const u8 DexDescription_Porenta_2[] = _( "Dieses POKéMON kämpft mit Hilfe seiner\n" "Stange gegen seine Gegner."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Dodu_1[] = _( + "DODU hat zwei Köpfe mit absolut\n" + "identischen Gehirnen. Eine wissen-\n" + "schaftliche Studie hat allerdings"); +static const u8 DexDescription_Dodu_2[] = _( + "nachgewiesen, dass es auch Exemplare\n" + "dieses POKéMON gibt, die zwei\n" + "unterschiedliche Gehirne haben."); +#else static const u8 DexDescription_Dodu_1[] = _( "DODU hat zwei Köpfe, die nie zur \n" "selben Zeit, sondern abwechselnd\n" "schlafen. Während ein Kopf schläft,"); static const u8 DexDescription_Dodu_2[] = _( "hält der andere Ausschau nach Feinden."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Dodri_1[] = _( + "DODRI hat nicht nur drei Köpfe, auch\n" + "andere Körperteile sind dreifach\n" + "vorhanden. Es besitzt drei Herzen und"); +static const u8 DexDescription_Dodri_2[] = _( + "drei Lungen, so dass es lange Strecken\n" + "ohne Pause rennen kann."); +#else static const u8 DexDescription_Dodri_1[] = _( "DODRIs drei Köpfe blicken in drei ver-\n" "schiedene Richtungen. Es ist immer auf\n" @@ -723,7 +1430,17 @@ static const u8 DexDescription_Dodri_2[] = _( "Du solltest dich diesem POKéMON nicht\n" "nähern, wenn es bereits misstrauisch \n" "ist. Es könnte nach dir hacken."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Jurob_1[] = _( + "JUROB jagt unter der frostigen Ober-\n" + "fläche des Eismeeres nach Beute. Zum\n" + "Luft holen schlägt es mit dem"); +static const u8 DexDescription_Jurob_2[] = _( + "vorstehenden Teil seines Kopfes ein \n" + "Loch ins Eis."); +#else static const u8 DexDescription_Jurob_1[] = _( "JUROB jagt unter der eisigen Ober-\n" "fläche des Eismeeres nach Beute. Zum\n" @@ -731,7 +1448,17 @@ static const u8 DexDescription_Jurob_1[] = _( static const u8 DexDescription_Jurob_2[] = _( "vorstehenden Teil seines Kopfes ein \n" "Loch ins Eis."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Jugong_1[] = _( + "JUGONG liebt es, auf bitterkalten \n" + "Eisschollen ein Nickerchen zu machen.\n" + "Ein Seemann, der ein solches POKéMON"); +static const u8 DexDescription_Jugong_2[] = _( + "eines Tages auf einem Eisberg schlafen\n" + "sah, hielt es für eine Meerjungfrau."); +#else static const u8 DexDescription_Jugong_1[] = _( "JUGONG liebt es, auf bitterkalten Eis-\n" "schollen ein Nickerchen zu machen.\n" @@ -740,7 +1467,18 @@ static const u8 DexDescription_Jugong_2[] = _( "POKéMON schlafend auf einem\n" "Eisberg sah, hielt es irrtümlicherweise\n" "für eine Meerjungfrau."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Sleima_1[] = _( + "SLEIMA ist aus dem Schlamm eines\n" + "verseuchten Flussbetts entstanden.\n" + "Dieses POKéMON liebt verschmutzte"); +static const u8 DexDescription_Sleima_2[] = _( + "Dinge. Es scheidet ständig eine mit\n" + "Bakterien verseuchte Flüssigkeit aus\n" + "seinem ganzen Körper aus."); +#else static const u8 DexDescription_Sleima_1[] = _( "SLEIMAs glitschiger, gummiartiger\n" "Körper passt durch jede noch so kleine\n" @@ -748,14 +1486,35 @@ static const u8 DexDescription_Sleima_1[] = _( static const u8 DexDescription_Sleima_2[] = _( "Kanalisation hinab, um fauliges\n" "Abwasser zu trinken."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Sleimok_1[] = _( + "SLEIMOKs Lieblingsspeise ist alles, was\n" + "widerlich verschmutzt ist. In dreckigen\n" + "Städten, in denen sich Menschen nichts"); +static const u8 DexDescription_Sleimok_2[] = _( + "dabei denken, wenn sie Müll auf die\n" + "Straße werfen, lassen sich diese\n" + "POKéMON mit Vorliebe in Scharen nieder."); +#else static const u8 DexDescription_Sleimok_1[] = _( "SLEIMOK scheidet eine widerlich\n" "stinkende Substanz aus. Ein einziger\n" "Tropfen seiner Körpersubstanz reicht"); static const u8 DexDescription_Sleimok_2[] = _( "aus, um ein Gewässer zu verseuchen."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Muschas_1[] = _( + "Nachts verwendet dieses POKéMON seine\n" + "breite Zunge, um ein Loch in den \n" + "Meeresboden zu graben. Darin schläft"); +static const u8 DexDescription_Muschas_2[] = _( + "es. Dabei schließt es seine Schale,\n" + "lässt aber seine Zunge heraushängen."); +#else static const u8 DexDescription_Muschas_1[] = _( "Nachts benutzt dieses POKéMON seine\n" "breite Zunge, um ein Loch in den \n" @@ -764,7 +1523,17 @@ static const u8 DexDescription_Muschas_2[] = _( "Darin schläft es. Dabei schließt es\n" "seine Schale, aber die Zunge hängt\n" "heraus."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Austos_1[] = _( + "AUSTOS kann im Meerwasser schwimmen,\n" + "indem es Wasser schluckt und mit Druck\n" + "wieder herausspritzt."); +static const u8 DexDescription_Austos_2[] = _( + "Auf dieselbe Weise verschießt dieses\n" + "POKéMON scharfe Stacheln."); +#else static const u8 DexDescription_Austos_1[] = _( "AUSTOS kann im Meerwasser schwimmen,\n" "indem es Wasser schluckt und wieder\n" @@ -773,6 +1542,7 @@ static const u8 DexDescription_Austos_2[] = _( "Dieses POKéMON kann sich auch ver- \n" "teidigen, indem es spitze Stacheln mit\n" "Hilfe des Wasserdrucks verschießt."); +#endif static const u8 DexDescription_Nebulak_1[] = _( "NEBULAK hat einen gasförmigen Körper.\n" @@ -783,6 +1553,16 @@ static const u8 DexDescription_Nebulak_2[] = _( "unter Dachrinnen, um sich vor dem\n" "gefährlichen Wind zu schützen."); +#ifdef SAPPHIRE +static const u8 DexDescription_Alpollo_1[] = _( + "ALPOLLO ist ein gefährliches POKéMON.\n" + "Wenn es dir ein Zeichen gibt, während es\n" + "durch die Dunkelheit schwebt, darfst"); +static const u8 DexDescription_Alpollo_2[] = _( + "du es nicht berühren. Dieses POKéMON\n" + "wird versuchen, an dir zu lecken und\n" + "dein Leben zu stehlen."); +#else static const u8 DexDescription_Alpollo_1[] = _( "ALPOLLO ist ein gefährliches POKéMON.\n" "Wenn es dich zu sich lockt, während es\n" @@ -791,6 +1571,7 @@ static const u8 DexDescription_Alpollo_2[] = _( "du ihm keinesfalls zu nahe kommen.\n" "Dieses POKéMON wird versuchen, an dir\n" "zu lecken und dein Leben zu stehlen."); +#endif static const u8 DexDescription_Gengar_1[] = _( "Nachts kann es passieren, dass dich\n" @@ -810,6 +1591,16 @@ static const u8 DexDescription_Onix_2[] = _( "älter wird, wird sein Körper immer\n" "runder und glatter."); +#ifdef SAPPHIRE +static const u8 DexDescription_Traumato_1[] = _( + "Wenn dir im Schlaf die Nase juckt, ist\n" + "das ein sicheres Zeichen dafür, dass\n" + "eines dieser POKéMON über deinem"); +static const u8 DexDescription_Traumato_2[] = _( + "Kissen schwebt, um deinen Traum durch\n" + "deine Nasenlöcher hindurch zu\n" + "verspeisen."); +#else static const u8 DexDescription_Traumato_1[] = _( "Wenn dir im Schlaf die Nase juckt, ist\n" "das ein sicheres Zeichen dafür, dass\n" @@ -818,6 +1609,7 @@ static const u8 DexDescription_Traumato_2[] = _( "Kissen sitzt, um deinen Traum durch\n" "deine Nasenlöcher hindurch zu\n" "verspeisen."); +#endif static const u8 DexDescription_Hypno_1[] = _( "HYPNO hält ein Pendel in der Hand. Das\n" @@ -828,6 +1620,14 @@ static const u8 DexDescription_Hypno_2[] = _( "der Suche nach Beute ist, poliert es \n" "sein Pendel."); +#ifdef SAPPHIRE +static const u8 DexDescription_Krabby_1[] = _( + "KRABBY lebt an Stränden, in Löchern im \n" + "Sand. An Sandstränden, an denen es\n" + "wenig Nahrung findet, sieht man dieses"); +static const u8 DexDescription_Krabby_2[] = _( + "POKéMON mit Artgenossen streiten."); +#else static const u8 DexDescription_Krabby_1[] = _( "KRABBY lebt an Stränden, in Löchern im \n" "Sand. An Sandstränden, an denen es\n" @@ -835,6 +1635,7 @@ static const u8 DexDescription_Krabby_1[] = _( static const u8 DexDescription_Krabby_2[] = _( "POKéMON mit Artgenossen um sein\n" "Revier streiten."); +#endif static const u8 DexDescription_Kingler_1[] = _( "KINGLER hat eine riesige Schere. Es\n" @@ -844,6 +1645,16 @@ static const u8 DexDescription_Kingler_2[] = _( "Da seine Schere aber so schwer ist, wird\n" "dieses POKéMON schnell müde."); +#ifdef SAPPHIRE +static const u8 DexDescription_Voltobal_1[] = _( + "VOLTOBAL ist äußerst empfindlich, es\n" + "explodiert schon bei der leichtesten\n" + "Erschütterung. Man munkelt, es"); +static const u8 DexDescription_Voltobal_2[] = _( + "sei entstanden, als ein POKéBALL einen\n" + "starken elektrischen Schlag bekommen\n" + "hat."); +#else static const u8 DexDescription_Voltobal_1[] = _( "VOLTOBAL wurde zuerst bei einer Firma\n" "beobachtet, die POKéBÄLLE herstellt.\n" @@ -852,7 +1663,18 @@ static const u8 DexDescription_Voltobal_2[] = _( "Beobachtung und der Tatsache, dass\n" "dieses POKéMON wie ein POKéBALL\n" "aussieht, ist noch ungeklärt."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Lektrobal_1[] = _( + "Typisch für LEKTROBAL ist seine große\n" + "Faszination für Elektrizität. Es ist ein\n" + "problematisches POKéMON, das sich"); +static const u8 DexDescription_Lektrobal_2[] = _( + "meistens in Kraftwerken niederlässt, wo\n" + "es sich von frisch erzeugtem Strom\n" + "ernähren kann."); +#else static const u8 DexDescription_Lektrobal_1[] = _( "LEKTROBAL ernährt sich von\n" "Elektrizität aus der Atmosphäre. An\n" @@ -860,6 +1682,7 @@ static const u8 DexDescription_Lektrobal_1[] = _( static const u8 DexDescription_Lektrobal_2[] = _( "dieses POKéMON dauernd, da es zu viel\n" "Elektrizität zu sich nimmt."); +#endif static const u8 DexDescription_Owei_1[] = _( "Dieses POKéMON besteht aus sechs\n" @@ -921,13 +1744,34 @@ static const u8 DexDescription_Schlurp_2[] = _( "des Geschmacks.\n" "Saure Sachen schrecken es eher ab."); +#ifdef SAPPHIRE +static const u8 DexDescription_Smogon_1[] = _( + "SMOGONs Körper enthält giftige\n" + "Substanzen. Es vermischt die Toxine mit\n" + "Müll, um eine chemische Reaktion in Gang"); +static const u8 DexDescription_Smogon_2[] = _( + "zu bringen, die ein unheimlich starkes\n" + "Giftgas hervorbringt. Je höher die Tem-\n" + "peratur, desto mehr Gas produziert es."); +#else static const u8 DexDescription_Smogon_1[] = _( "Wenn SMOGON sich aufregt, lässt es\n" "das giftige Gas in seinem Inneren\n" "entweichen. Wenn es sich zu sehr"); static const u8 DexDescription_Smogon_2[] = _( "aufbläht, explodiert dieses POKéMON."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Smogmog_1[] = _( + "SMOGMOG bläst seine beiden Körper\n" + "abwechselnd auf und lässt sie wieder\n" + "zusammenschrumpfen, um die giftigen"); +static const u8 DexDescription_Smogmog_2[] = _( + "Gase darin zu vermischen. Je mehr Gase\n" + "vermischt werden, desto stärker werden\n" + "die Toxine."); +#else static const u8 DexDescription_Smogmog_1[] = _( "SMOGMOG liebt die Gase verrottender,\n" "fauler Küchenabfälle. Dieses POKéMON\n" @@ -936,7 +1780,18 @@ static const u8 DexDescription_Smogmog_2[] = _( "schmutziges Gebäude und richtet sich\n" "dort häuslich ein. Nachts, wenn die\n" "Menschen schlafen, wühlt es im Müll."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Rihorn_1[] = _( + "RIHORNs Hirn ist sehr klein. Es ist so\n" + "beschränkt, dass es während des\n" + "Laufens vergisst, warum es überhaupt"); +static const u8 DexDescription_Rihorn_2[] = _( + "losgelaufen ist. Manchmal erinnert es\n" + "sich aber daran, dass es etwas\n" + "zerstört hat."); +#else static const u8 DexDescription_Rihorn_1[] = _( "RIHORN läuft immer geradeaus und\n" "zerstampft alles, was ihm in die Quere\n" @@ -945,7 +1800,18 @@ static const u8 DexDescription_Rihorn_2[] = _( "wenn es mit dem Kopf voran gegen einen\n" "Stahlklotz rennt. Am nächsten Tag\n" "allerdings könnte es Schmerzen haben."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Rizeros_1[] = _( + "RIZEROS hat ein Horn, das es als Bohrer\n" + "benutzen kann. Damit zerstört es \n" + "Felsblöcke und Steine. Dieses POKéMON"); +static const u8 DexDescription_Rizeros_2[] = _( + "rammt sein Horn manchmal in Ströme von\n" + "Magma. Seine panzerähnliche Haut\n" + "schützt es dabei vor der Hitze."); +#else static const u8 DexDescription_Rizeros_1[] = _( "Mit seinem Horn kann RIZEROS selbst\n" "Diamanten zerbrechen. Ein einziger\n" @@ -954,6 +1820,7 @@ static const u8 DexDescription_Rizeros_2[] = _( "zum Einsturz bringen. Die Haut dieses\n" "POKéMON ist so hart, dass nicht einmal\n" "Kanonenkugeln Kratzer hinterlassen."); +#endif static const u8 DexDescription_Chaneira_1[] = _( "CHANEIRA legt täglich ausgesprochen\n" @@ -962,6 +1829,16 @@ static const u8 DexDescription_Chaneira_1[] = _( static const u8 DexDescription_Chaneira_2[] = _( "werden, die gar keinen Appetit haben."); +#ifdef SAPPHIRE +static const u8 DexDescription_Tangela_1[] = _( + "Wenn man TANGELAs Ranken berührt, \n" + "fallen diese oft ab. Dabei empfindet\n" + "es keine Schmerzen und es kann"); +static const u8 DexDescription_Tangela_2[] = _( + "sich schnell in Sicherheit bringen. \n" + "Verliert es Ranken, werden diese am\n" + "nächsten Tag durch neue ersetzt."); +#else static const u8 DexDescription_Tangela_1[] = _( "Wenn man TANGELAs Ranken berührt, \n" "fallen diese sofort ab. Das tut ihm\n" @@ -970,7 +1847,18 @@ static const u8 DexDescription_Tangela_2[] = _( "sich schnell in Sicherheit bringen. \n" "Verliert es Ranken, werden diese am\n" "nächsten Tag durch neue ersetzt."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Kangama_1[] = _( + "Wenn du auf ein junges, spielendes\n" + "KANGAMA stößt, solltest du es nicht\n" + "stören oder versuchen es einzufangen."); +static const u8 DexDescription_Kangama_2[] = _( + "Die Mutter dieses Baby-POKéMON ist\n" + "bestimmt in Reichweite und könnte\n" + "sehr wütend auf dich werden."); +#else static const u8 DexDescription_Kangama_1[] = _( "Wenn du auf ein spielendes KANGAMA\n" "stößt, solltest du es nicht stören oder\n" @@ -979,7 +1867,18 @@ static const u8 DexDescription_Kangama_2[] = _( "Die Mutter dieses Baby-POKéMON ist\n" "bestimmt in Reichweite und könnte\n" "sehr wütend auf dich werden."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Seeper_1[] = _( + "Wenn SEEPER Gefahr wittert, versprüht\n" + "es reflexartig eine tiefschwarze Tinte\n" + "aus seinem Mund und ergreift die Flucht."); +static const u8 DexDescription_Seeper_2[] = _( + "Dieses POKéMON kann schwimmen, indem\n" + "es geschickt mit den Flossen auf seinem\n" + "Rücken schlägt."); +#else static const u8 DexDescription_Seeper_1[] = _( "SEEPER ernährt sich von kleinen\n" "Insekten und dem Moos auf Steinen.\n" @@ -988,7 +1887,18 @@ static const u8 DexDescription_Seeper_2[] = _( "dieses POKéMON mit seinem Schweif an\n" "Steinen oder Korallen, damit es nicht\n" "weggespült wird."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Seemon_1[] = _( + "SEEMON erzeugt Strudel, indem es sich\n" + "schnell um die eigene Achse dreht. Diese\n" + "Strudel können sogar Fischerboote in"); +static const u8 DexDescription_Seemon_2[] = _( + "die Tiefe reißen. Damit schwächt es\n" + "Beute, bevor es sie im Ganzen\n" + "verschlingt."); +#else static const u8 DexDescription_Seemon_1[] = _( "Sobald sich SEEMON um eine Koralle\n" "gewickelt hat, schläft es. Von Zeit zu\n" @@ -997,7 +1907,18 @@ static const u8 DexDescription_Seemon_2[] = _( "Widerhaken dieses POKéMON verletzt, \n" "wenn sie versuchen, Korallen zu ernten\n" "und es dabei nicht bemerken."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Goldini_1[] = _( + "GOLDINI liebt es, in Teichen und Flüssen\n" + "zu schwimmen. Wenn ein solches\n" + "POKéMON in ein Aquarium gebracht wird,"); +static const u8 DexDescription_Goldini_2[] = _( + "wird es selbst das dickste Glas mit\n" + "einem Stoß seines Horns zum Zerbersten\n" + "bringen und die Flucht ergreifen."); +#else static const u8 DexDescription_Goldini_1[] = _( "GOLDINI ist ein wunderschönes POKéMON,\n" "dessen Flossen sich elegant im Wasser\n" @@ -1005,7 +1926,18 @@ static const u8 DexDescription_Goldini_1[] = _( static const u8 DexDescription_Goldini_2[] = _( "POKéMON Acht geben. Es könnte einen\n" "sonst heftig mit seinem Horn rammen."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Golking_1[] = _( + "GOLKING gibt sehr viel Acht auf seine\n" + "Brut. Es patrouilliert um sein Nest und\n" + "die Eier herum, wobei sich das männliche"); +static const u8 DexDescription_Golking_2[] = _( + "und das weibliche Exemplar abwechseln.\n" + "Das Bewachen der Eier beschäftigt\n" + "dieses POKéMON für über einen Monat."); +#else static const u8 DexDescription_Golking_1[] = _( "Im Herbst kann man männliche GOLKING\n" "dabei beobachten, wie sie Balztänze in \n" @@ -1014,7 +1946,18 @@ static const u8 DexDescription_Golking_2[] = _( "weiblichen Exemplare zu beeindrucken.\n" "Während dieser Zeit ist die Farbe\n" "dieser POKéMON am schönsten."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Sterndu_1[] = _( + "STERNDU kommuniziert mit den Sternen\n" + "am Nachthimmel, indem es den roten\n" + "Kern in seiner Körpermitte blinken"); +static const u8 DexDescription_Sterndu_2[] = _( + "lässt. Wenn Teile seines Körpers\n" + "beschädigt wurden, stellt es die\n" + "fehlenden Teile selber wieder her."); +#else static const u8 DexDescription_Sterndu_1[] = _( "In STERNDUs Körpermitte befindet sich\n" "ein hellrot leuchtendes Organ - \n" @@ -1023,13 +1966,24 @@ static const u8 DexDescription_Sterndu_2[] = _( "an einen Strand gehst, sehen die\n" "leuchtenden Kerne dieser POKéMON aus\n" "wie Sterne."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Starmie_1[] = _( + "STARMIE kann schwimmen, indem es\n" + "seinen sternförmigen Körper wie eine\n" + "Schiffsschraube dreht. Der Kern in"); +static const u8 DexDescription_Starmie_2[] = _( + "seiner Körpermitte leuchtet in sieben\n" + "Farben."); +#else static const u8 DexDescription_Starmie_1[] = _( "STARMIEs Mittelteil, sein Kern, leuchtet\n" "in sieben Farben. Aufgrund dieser\n" "Eigenschaft wird es auch"); static const u8 DexDescription_Starmie_2[] = _( "“Juwel des Meeres” genannt."); +#endif static const u8 DexDescription_Pantimos_1[] = _( "PANTIMOS ist ein Meister der Pantomime.\n" @@ -1076,6 +2030,16 @@ static const u8 DexDescription_Magmar_2[] = _( "die das Gras und die Bäume der Umgebung\n" "in Brand setzen."); +#ifdef SAPPHIRE +static const u8 DexDescription_Pinsir_1[] = _( + "PINSIR hat ein Paar massive Hörner. Aus\n" + "diesen ragen Dornen hervor, die sich in\n" + "den Körper seines Gegners"); +static const u8 DexDescription_Pinsir_2[] = _( + "hineinbohren, wenn sich die Zange\n" + "schließt, und ihm das Entkommen\n" + "schwer machen."); +#else static const u8 DexDescription_Pinsir_1[] = _( "PINSIR ist erstaunlich stark. Es kann\n" "einen Feind, der doppelt so viel wiegt\n" @@ -1084,7 +2048,17 @@ static const u8 DexDescription_Pinsir_2[] = _( "packen und hochheben. Bei niedrigen\n" "Temperaturen werden die Bewegungen\n" "dieses POKéMON schwerfällig."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Tauros_1[] = _( + "Dieses POKéMON ist nur zufrieden, wenn\n" + "es kämpfen kann. Wenn TAUROS keinen\n" + "Gegner findet, sucht es sich robuste"); +static const u8 DexDescription_Tauros_2[] = _( + "Bäume und haut sie um, um sich\n" + "abzureagieren."); +#else static const u8 DexDescription_Tauros_1[] = _( "Dieses POKéMON ist nur zufrieden, wenn\n" "es kämpfen kann. Wenn TAUROS keinen\n" @@ -1092,7 +2066,18 @@ static const u8 DexDescription_Tauros_1[] = _( static const u8 DexDescription_Tauros_2[] = _( "Bäume und lässt sich an ihnen aus,\n" "um sich abzureagieren."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Karpador_1[] = _( + "KARPADOR ist im Kampf praktisch nutz-\n" + "los, da es nur platschen kann.\n" + "Daher wird es als schwach eingeschätzt."); +static const u8 DexDescription_Karpador_2[] = _( + "Es ist aber tatsächlich sehr robust und\n" + "kann in jedem Gewässer überleben, egal,\n" + "wie verseucht dieses ist."); +#else static const u8 DexDescription_Karpador_1[] = _( "KARPADOR ist ein armseliges POKéMON,\n" "das nur platschen kann. Sein\n" @@ -1100,7 +2085,18 @@ static const u8 DexDescription_Karpador_1[] = _( static const u8 DexDescription_Karpador_2[] = _( "Wissenschaftler zum Forschen\n" "angeregt."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Garados_1[] = _( + "Wenn GARADOS in Rage gerät, ist sein\n" + "wildes Blut kaum zu beruhigen, bis es\n" + "alles niedergebrannt hat."); +static const u8 DexDescription_Garados_2[] = _( + "Aufzeichnungen belegen, dass die\n" + "Zerstörungswut dieses POKéMON einen\n" + "ganzen Monat anhalten kann."); +#else static const u8 DexDescription_Garados_1[] = _( "Wenn sich KARPADOR zu GARADOS\n" "entwickelt, durchlaufen seine\n" @@ -1109,6 +2105,7 @@ static const u8 DexDescription_Garados_2[] = _( "Veränderung, was wohl der Grund für die\n" "zügellose, gewalttätige Natur dieses\n" "POKéMON ist."); +#endif static const u8 DexDescription_Lapras_1[] = _( "Die Menschen sind dafür verantwortlich,\n" @@ -1126,6 +2123,15 @@ static const u8 DexDescription_Ditto_2[] = _( "Gedächtnis verlässt, unterlaufen \n" "diesem POKéMON schon mal Fehler."); +#ifdef SAPPHIRE +static const u8 DexDescription_Evoli_1[] = _( + "EVOLIs genetisches Erbmaterial ist so\n" + "instabil, dass die Umgebung plötzliche\n" + "Mutationen auslösen kann."); +static const u8 DexDescription_Evoli_2[] = _( + "Die Wirkung verschiedener STEINE\n" + "führt zur Entwicklung dieses POKéMON."); +#else static const u8 DexDescription_Evoli_1[] = _( "EVOLIs genetisches Erbmaterial ist so\n" "instabil, dass die Umgebung plötzliche\n" @@ -1134,7 +2140,18 @@ static const u8 DexDescription_Evoli_2[] = _( "Die Wirkung verschiedener \n" "STEINE führt zur Entwicklung dieses \n" "POKéMON."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Aquana_1[] = _( + "AQUANA hat eine spontane Mutation\n" + "durchlaufen. Ihm sind Flossen und \n" + "Kiemen gewachsen. Dadurch kann es"); +static const u8 DexDescription_Aquana_2[] = _( + "unter Wasser leben.\n" + "Dieses POKéMON kann Wasser nach\n" + "Belieben manipulieren."); +#else static const u8 DexDescription_Aquana_1[] = _( "AQUANA hat eine spontane Mutation\n" "durchgemacht und ihm sind Flossen und \n" @@ -1143,6 +2160,7 @@ static const u8 DexDescription_Aquana_2[] = _( "unter Wasser leben.\n" "Dieses POKéMON kann Wasser nach\n" "Belieben manipulieren."); +#endif static const u8 DexDescription_Blitza_1[] = _( "BLITZAs Zellen erzeugen schwache\n" @@ -1171,6 +2189,16 @@ static const u8 DexDescription_Porygon_2[] = _( "dass es durch Kopieren nicht\n" "vervielfältigt werden kann."); +#ifdef SAPPHIRE +static const u8 DexDescription_Amonitas_1[] = _( + "AMONITAS ist ein POKéMON, das seit\n" + "langer Zeit ausgestorben war, aber\n" + "durch die Menschen aus Fossilien"); +static const u8 DexDescription_Amonitas_2[] = _( + "reproduziert wurde. Wenn es von einem\n" + "Feind angegriffen wird, zieht es sich in\n" + "sein hartes Gehäuse zurück."); +#else static const u8 DexDescription_Amonitas_1[] = _( "AMONITAS ist ein POKéMON, das seit\n" "langer Zeit ausgestorben war, aber\n" @@ -1179,7 +2207,18 @@ static const u8 DexDescription_Amonitas_2[] = _( "reproduziert wurde. Wenn es von einem\n" "Feind angegriffen wird, zieht es sich in\n" "sein hartes Gehäuse zurück."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Amoroso_1[] = _( + "AMOROSO benutzt seine Tentakel, um\n" + "Beute einzufangen. Man nimmt an,\n" + "dass es ausgestorben ist, weil seine"); +static const u8 DexDescription_Amoroso_2[] = _( + "Schale zu groß und zu schwer geworden\n" + "ist, so dass seine Bewegungen immer\n" + "langsamer und schwerfälliger wurden."); +#else static const u8 DexDescription_Amoroso_1[] = _( "AMOROSO benutzt seine Tentakel, um\n" "Beute einzufangen. Man nimmt an,\n" @@ -1188,6 +2227,7 @@ static const u8 DexDescription_Amoroso_2[] = _( "Schale zu groß und zu schwer geworden\n" "war, so dass seine Bewegungen immer\n" "langsamer und schwerfälliger wurden."); +#endif static const u8 DexDescription_Kabuto_1[] = _( "KABUTO ist ein POKéMON, das aus einem\n" @@ -1224,6 +2264,16 @@ static const u8 DexDescription_Relaxo_2[] = _( "Kinder seinen dicken Bauch als Platz\n" "zum Spielen nutzen."); +#ifdef SAPPHIRE +static const u8 DexDescription_Arktos_1[] = _( + "ARKTOS ist ein sagenumwobenes\n" + "Vogel-POKéMON, das Eis manipulieren\n" + "kann. Das Schlagen seiner Flügel"); +static const u8 DexDescription_Arktos_2[] = _( + "bringt die Luft zum Gefrieren. Man nimmt\n" + "an, dass es zu schneien beginnt, wenn\n" + "dieses POKéMON fliegt."); +#else static const u8 DexDescription_Arktos_1[] = _( "ARKTOS ist ein sagenumwobenes\n" "Vogel-POKéMON, das Eis manipulieren\n" @@ -1232,6 +2282,7 @@ static const u8 DexDescription_Arktos_2[] = _( "bringt die Luft zum Gefrieren. Es wird\n" "behauptet, dass es zu schneien\n" "beginnt, wenn dieses POKéMON fliegt."); +#endif static const u8 DexDescription_Zapdos_1[] = _( "ZAPDOS ist ein legendäres\n" @@ -1251,12 +2302,21 @@ static const u8 DexDescription_Lavados_2[] = _( "Vulkans, um sich zu verbrennen\n" "und selbst zu heilen."); +#ifdef SAPPHIRE +static const u8 DexDescription_Dratini_1[] = _( + "DRATINI häutet sich ständig, da die\n" + "Lebensenergie in seinem Körper\n" + "stetig und unkontrollierbar ansteigt."); +static const u8 DexDescription_Dratini_2[] = _( + ""); +#else static const u8 DexDescription_Dratini_1[] = _( "DRATINI häutet sich ständig und\n" "entledigt sich so seiner Haut, da die\n" "Lebensenergie in seinem Körper"); static const u8 DexDescription_Dratini_2[] = _( "stetig und unkontrollierbar ansteigt."); +#endif static const u8 DexDescription_Dragonir_1[] = _( "DRAGONIR speichert eine enorme Menge\n" @@ -1292,6 +2352,16 @@ static const u8 DexDescription_Mew_2[] = _( "machen, so dass es sich auch Menschen\n" "nähern kann, ohne bemerkt zu werden."); +#ifdef SAPPHIRE +static const u8 DexDescription_Endivie_1[] = _( + "Im Kampf wedelt ENDIVIE mit seinem\n" + "Blatt, um den Feind fern zu halten. Von\n" + "dem Blatt geht auch ein süßlicher Duft"); +static const u8 DexDescription_Endivie_2[] = _( + "aus, der das gegnerische POKéMON im\n" + "Kampf beruhigt und eine gemütliche,\n" + "freundliche Atmosphäre schafft."); +#else static const u8 DexDescription_Endivie_1[] = _( "Im Kampf wedelt ENDIVIE mit seinem\n" "Blatt, um den Feind fern zu halten. Von\n" @@ -1300,6 +2370,7 @@ static const u8 DexDescription_Endivie_2[] = _( "aus, der die kämpfenden POKéMON\n" "beruhigt und eine gemütliche,\n" "freundliche Atmosphäre schafft."); +#endif static const u8 DexDescription_Lorblatt_1[] = _( "LORBLATTs Nacken ist mit\n" @@ -1310,6 +2381,15 @@ static const u8 DexDescription_Lorblatt_2[] = _( "Der Duft dieses Triebes bringt\n" "Menschen auf Trab."); +#ifdef SAPPHIRE +static const u8 DexDescription_Meganie_1[] = _( + "Der Duft von MEGANIEs Blume besänftigt\n" + "die Gemüter. Im Kampf gibt dieses\n" + "POKéMON mehr von seinem beruhigenden"); +static const u8 DexDescription_Meganie_2[] = _( + "Duftstoff ab, um den Kampfgeist des\n" + "Gegners zu besänftigen."); +#else static const u8 DexDescription_Meganie_1[] = _( "Der Duft von MEGANIEs Blume besänftigt\n" "Gemüter. Im Kampf gibt dieses POKéMON\n" @@ -1317,7 +2397,18 @@ static const u8 DexDescription_Meganie_1[] = _( static const u8 DexDescription_Meganie_2[] = _( "Duftstoff ab, um den Kampfgeist des\n" "Gegners zu schwächen."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Feurigel_1[] = _( + "FEURIGEL lässt Flammen aus seinem\n" + "Rücken lodern, wenn es sich schützen\n" + "muss. Die Flammen sind sehr stark,"); +static const u8 DexDescription_Feurigel_2[] = _( + "wenn dieses POKéMON wütend ist. Ist es\n" + "aber müde, flackern die Flammen nur\n" + "unregelmäßig und schwach."); +#else static const u8 DexDescription_Feurigel_1[] = _( "FEURIGEL lässt Flammen aus seinem\n" "Rücken lodern, wenn es sich schützen\n" @@ -1326,6 +2417,7 @@ static const u8 DexDescription_Feurigel_2[] = _( "wenn dieses POKéMON wütend ist. Ist es\n" "aber müde, flackern die Flammen nur\n" "unregelmäßig und schwach."); +#endif static const u8 DexDescription_Igelavar_1[] = _( "IGELAVAR hält seine Gegner mit Flammen\n" @@ -1336,6 +2428,15 @@ static const u8 DexDescription_Igelavar_2[] = _( "Angriffen auszuweichen und seinen\n" "Gegner gleichzeitig zu versengen."); +#ifdef SAPPHIRE +static const u8 DexDescription_Tornupto_1[] = _( + "TORNUPTO versteckt sich hinter einem\n" + "flimmernden Hitzeschild, den es mit\n" + "Hilfe seiner heißen Flammen erzeugt."); +static const u8 DexDescription_Tornupto_2[] = _( + "Dieses POKéMON erzeugt Explosionen,\n" + "die alles in Schutt und Asche legen."); +#else static const u8 DexDescription_Tornupto_1[] = _( "TORNUPTO versteckt sich hinter einem\n" "flimmernden Hitzeschild, den es mit\n" @@ -1344,6 +2445,7 @@ static const u8 DexDescription_Tornupto_2[] = _( "Dieses POKéMON erzeugt Explosionen,\n" "die alles in Schutt und Asche\n" "legen."); +#endif static const u8 DexDescription_Karnimani_1[] = _( "KARNIMANI ist zwar sehr klein, aber\n" @@ -1390,6 +2492,15 @@ static const u8 DexDescription_Wiesenior_2[] = _( "Gliedmaßen ist dieses POKéMON sehr\n" "wendig und flink."); +#ifdef SAPPHIRE +static const u8 DexDescription_Hoothoot_1[] = _( + "HOOTHOOT besitzt ein inneres Organ, das\n" + "die Erdumdrehung wahrnimmt. Dieses\n" + "besondere Organ ermöglicht es diesem"); +static const u8 DexDescription_Hoothoot_2[] = _( + "POKéMON, jeden Tag zur selben Zeit\n" + "zu schreien."); +#else static const u8 DexDescription_Hoothoot_1[] = _( "HOOTHOOT besitzt ein inneres Organ, das\n" "die Erdumdrehung wahrnimmt. Dieses\n" @@ -1397,7 +2508,18 @@ static const u8 DexDescription_Hoothoot_1[] = _( static const u8 DexDescription_Hoothoot_2[] = _( "POKéMON, jeden Tag zur selben Zeit zu\n" "schreien."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Noctuh_1[] = _( + "Dank seines hervorragenden\n" + "Sehvermögens, mit dem es auch bei\n" + "geringer Beleuchtung sehen kann, und"); +static const u8 DexDescription_Noctuh_2[] = _( + "dank seiner geschmeidigen Flügel,\n" + "mit denen es geräuschlos fliegen kann,\n" + "entgeht NOCTUH keine Beute."); +#else static const u8 DexDescription_Noctuh_1[] = _( "Dank seines hervorragenden\n" "Sehvermögens, mit dem es auch bei\n" @@ -1406,6 +2528,7 @@ static const u8 DexDescription_Noctuh_2[] = _( "dank seiner geschmeidigen Flügel,\n" "mit denen es geräuschlos fliegt,\n" "entgeht NOCTUH keine Beute."); +#endif static const u8 DexDescription_Ledyba_1[] = _( "LEDYBA sondert eine duftende\n" @@ -1432,6 +2555,15 @@ static const u8 DexDescription_Webarak_2[] = _( "Vibrationen der Netzfäden bestimmen,\n" "welche Art Beute sich darauf befindet."); +#ifdef SAPPHIRE +static const u8 DexDescription_Ariados_1[] = _( + "ARIADOS hat kleine hakenförmige Krallen\n" + "an seinen Füßen. Damit kann es an\n" + "Decken und Wänden entlangflitzen."); +static const u8 DexDescription_Ariados_2[] = _( + "Dieses POKéMON erdrückt seine Gegner\n" + "mit starkem, dünnem Seidenfaden."); +#else static const u8 DexDescription_Ariados_1[] = _( "ARIADOS hat kleine hakenförmige Krallen\n" "an seinen Füßen. Damit kann es an\n" @@ -1439,7 +2571,18 @@ static const u8 DexDescription_Ariados_1[] = _( static const u8 DexDescription_Ariados_2[] = _( "Dieses POKéMON erdrückt seine Gegner\n" "mit starkem, dünnem Seidenfaden."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Iksbat_1[] = _( + "IKSBATs Flügelschlag ist so leise, dass\n" + "die Beute lautlos überrascht wird.\n" + "Dieses POKéMON ruht sich"); +static const u8 DexDescription_Iksbat_2[] = _( + "aus, indem es sich mit seinen\n" + "Hinterbeinen, die ihm als Flügel\n" + "dienen, an einen Ast hängt."); +#else static const u8 DexDescription_Iksbat_1[] = _( "Wenn IKSBAT fliegt, indem es nur ein \n" "Paar Flügel, entweder an seinen Vorder-\n" @@ -1448,7 +2591,17 @@ static const u8 DexDescription_Iksbat_2[] = _( "Anzeichen dafür, dass dieses POKéMON \n" "bereits eine lange Strecke hinter sich\n" "hat. Dann wechselt es die Flügel häufig."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Lampi_1[] = _( + "LAMPIs zwei Antennen sind mit Zellen\n" + "gefüllt, die Elektrizität erzeugen. \n" + "Die elektrische Ladung ist so stark,"); +static const u8 DexDescription_Lampi_2[] = _( + "dass es sogar ein leichtes Kribbeln\n" + "verspürt."); +#else static const u8 DexDescription_Lampi_1[] = _( "LAMPI gibt positive und negative\n" "elektrische Ladungen durch seine\n" @@ -1457,7 +2610,18 @@ static const u8 DexDescription_Lampi_2[] = _( "Dieses POKéMON lässt seine Lichter\n" "aufflackern und tauscht Signale mit\n" "seinen Artgenossen aus."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Lanturn_1[] = _( + "LANTURN strahlt Licht ab. Wenn du\n" + "nachts aufs dunkle Meer hinausblickst,\n" + "kannst du vielleicht das Licht dieses"); +static const u8 DexDescription_Lanturn_2[] = _( + "PKMN aus der Tiefe, in der es schwimmt,\n" + "heraufschimmern sehen. Es lässt das\n" + "Meer wie eine sternklare Nacht wirken."); +#else static const u8 DexDescription_Lanturn_1[] = _( "LANTURN wird auch “Tiefseestern”\n" "genannt, da es leuchtende Antennen\n" @@ -1466,7 +2630,18 @@ static const u8 DexDescription_Lanturn_2[] = _( "indem es in den Antennen eine chemische\n" "Reaktion zwischen Bakterien und seinen\n" "Körperflüssigkeiten erzeugt."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Pichu_1[] = _( + "Wenn PICHU mit anderen spielt, kann es\n" + "einen Kurzschluss mit einem seiner \n" + "Artgenossen erzeugen, so dass die"); +static const u8 DexDescription_Pichu_2[] = _( + "Funken sprühen. Dann beginnt es zu\n" + "weinen, weil es vor den Funken\n" + "erschrickt."); +#else static const u8 DexDescription_Pichu_1[] = _( "An Gewittertagen oder Tagen, an denen\n" "die Luft sehr trocken ist, kann sich\n" @@ -1474,7 +2649,17 @@ static const u8 DexDescription_Pichu_1[] = _( static const u8 DexDescription_Pichu_2[] = _( "aufladen. Dann kann man das Knistern\n" "statischer Aufladung hören."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Pii_1[] = _( + "In Nächten mit vielen Sternschnuppen\n" + "kann man PII im Kreis tanzen sehen. Es\n" + "tanzt die ganze Nacht hindurch und"); +static const u8 DexDescription_Pii_2[] = _( + "hört erst bei Sonnenaufgang auf, um\n" + "seinen Durst mit Morgentau zu stillen."); +#else static const u8 DexDescription_Pii_1[] = _( "In Nächten mit vielen Sternschnuppen,\n" "kann man PII im Kreis tanzen sehen. Es\n" @@ -1482,7 +2667,16 @@ static const u8 DexDescription_Pii_1[] = _( static const u8 DexDescription_Pii_2[] = _( "hört erst bei Sonnenaufgang auf, um\n" "seinen Durst mit Morgentau zu stillen."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Fluffeluff_1[] = _( + "FLUFFELUFF hat einen weichen Körper,\n" + "der sich anfühlt wie ein Marshmallow. Es\n" + "verströmt einen süßlichen Duft, der"); +static const u8 DexDescription_Fluffeluff_2[] = _( + "die Emotionen seiner Gegner beruhigt."); +#else static const u8 DexDescription_Fluffeluff_1[] = _( "FLUFFELUFFs Stimmbänder sind noch\n" "nicht voll entwickelt. Wenn es zu viel\n" @@ -1490,7 +2684,18 @@ static const u8 DexDescription_Fluffeluff_1[] = _( static const u8 DexDescription_Fluffeluff_2[] = _( "Dieses POKéMON gurgelt mit Süßwasser\n" "aus einem sauberen Fluss."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Togepi_1[] = _( + "TOGEPI benutzt die positiven Emotionen\n" + "Freude und Mitgefühl von Menschen und\n" + "POKéMON als Energie."); +static const u8 DexDescription_Togepi_2[] = _( + "Dieses POKéMON speichert Glücksgefühle\n" + "in seiner Schale und teilt sie mit\n" + "anderen."); +#else static const u8 DexDescription_Togepi_1[] = _( "TOGEPI nutzt die positiven Emotionen,\n" "wie Freude und Mitgefühl, von Menschen\n" @@ -1499,14 +2704,33 @@ static const u8 DexDescription_Togepi_2[] = _( "Dieses POKéMON speichert Glücksgefühle\n" "in seiner Schale und teilt sie mit\n" "anderen."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Togetic_1[] = _( + "TOGETIC ist ein POKéMON, das Glück\n" + "bringt. Wenn es jemanden trifft, der\n" + "gutherzig ist, teilt es seine Freude mit"); +static const u8 DexDescription_Togetic_2[] = _( + "dieser Person."); +#else static const u8 DexDescription_Togetic_1[] = _( "TOGETIC ist ein POKéMON, das Glück\n" "bringt. Wenn es jemanden trifft, der\n" "reinen Herzens ist, zeigt es sich und"); static const u8 DexDescription_Togetic_2[] = _( "teilt sein Glück mit dieser Person."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Natu_1[] = _( + "NATU kann hervorragend springen.\n" + "Dieses POKéMON schlägt mit den Flügeln\n" + "und springt auf Äste, die höher liegen,"); +static const u8 DexDescription_Natu_2[] = _( + "als ein Erwachsener groß ist, um an die\n" + "neuen Triebe eines Baumes zu kommen."); +#else static const u8 DexDescription_Natu_1[] = _( "NATU kann nicht fliegen, da seine Flügel\n" "noch nicht ausgewachsen sind. Wenn du\n" @@ -1515,7 +2739,17 @@ static const u8 DexDescription_Natu_2[] = _( "starrt es dich konzentriert an. Wenn du\n" "dich aber bewegst, hüpft es weg, um sich\n" "in Sicherheit zu bringen."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Xatu_1[] = _( + "XATU steht den ganzen Tag \n" + "bewegungslos herum und starrt die\n" + "Sonne an. Einige Menschen verehren es"); +static const u8 DexDescription_Xatu_2[] = _( + "als ein mystisches POKéMON. Sie glauben,\n" + "dass XATU in die Zukunft sehen könne."); +#else static const u8 DexDescription_Xatu_1[] = _( "XATU bleibt den ganzen Tag an ein und\n" "demselben Ort wie angewurzelt stehen. \n" @@ -1523,6 +2757,7 @@ static const u8 DexDescription_Xatu_1[] = _( static const u8 DexDescription_Xatu_2[] = _( "Angst vor den Dingen tut, die es für die\n" "Zukunft vorausgesehen hat."); +#endif static const u8 DexDescription_Voltilamm_1[] = _( "VOLTILAMMs flauschiges, wollenes Fell\n" @@ -1549,6 +2784,15 @@ static const u8 DexDescription_Ampharos_2[] = _( "dieses POKéMON dazu, Signale über\n" "weite Entfernungen auszutauschen."); +#ifdef SAPPHIRE +static const u8 DexDescription_Blubella_1[] = _( + "BLUBELLA wachsen schönere Blumen,\n" + "wenn es sich aus einem übel riechenden\n" + "DUFLOR entwickelt hat - je stinkender,"); +static const u8 DexDescription_Blubella_2[] = _( + "desto besser. Nachts schließt dieses\n" + "POKéMON seine Blätter und schläft."); +#else static const u8 DexDescription_Blubella_1[] = _( "Wenn BLUBELLA starkem Sonnenlicht\n" "ausgesetzt ist, beginnen sich die Blät-\n" @@ -1556,7 +2800,17 @@ static const u8 DexDescription_Blubella_1[] = _( static const u8 DexDescription_Blubella_2[] = _( "Der Tanz dieses POKéMON ist in\n" "südlichen Ländern sehr bekannt."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Marill_1[] = _( + "Wenn es am Ufer eines reißenden Flusses\n" + "fischt, wickelt MARILL seinen Schweif\n" + "um einen Baumstamm. Der Schweif dieses"); +static const u8 DexDescription_Marill_2[] = _( + "POKéMON ist flexibel und elastisch, so\n" + "dass es ihn ausdehnen kann."); +#else static const u8 DexDescription_Marill_1[] = _( "MARILLs Schweif ist mit Öl gefüllt und\n" "dient ihm als eine Art Rettungsring.\n" @@ -1565,7 +2819,18 @@ static const u8 DexDescription_Marill_2[] = _( "Wasseroberfläche zu sehen ist, taucht\n" "dieses POKéMON gerade, um sich von\n" "Wasserpflanzen zu ernähren."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Azumarill_1[] = _( + "AZUMARILL kann aus Luft Ballons\n" + "machen. Diese Luft-Ballons erzeugt es,\n" + "wenn es ein ertrinkendes POKéMON"); +static const u8 DexDescription_Azumarill_2[] = _( + "erspäht. Durch die Ballons kann das\n" + "POKéMON, das in Schwierigkeiten \n" + "geraten ist, atmen."); +#else static const u8 DexDescription_Azumarill_1[] = _( "AZUMARILLs lange Ohren dienen ihm\n" "als unentbehrliche Sensoren. Wenn es\n" @@ -1574,6 +2839,7 @@ static const u8 DexDescription_Azumarill_2[] = _( "POKéMON auch in reißenden Flüssen\n" "identifizieren, welche Art von Beute\n" "sich in seiner Nähe befindet."); +#endif static const u8 DexDescription_Mogelbaum_1[] = _( "MOGELBAUM tarnt sich als Baum, um\n" @@ -1583,6 +2849,15 @@ static const u8 DexDescription_Mogelbaum_2[] = _( "das ganze Jahr über grün bleiben, fällt\n" "seine Tarnung im Winter leicht auf."); +#ifdef SAPPHIRE +static const u8 DexDescription_Quaxo_1[] = _( + "QUAXO hat lockiges Haar, das ihm den\n" + "Status eines Königs bescheinigt. Je\n" + "länger und lockiger sein Haar ist, desto"); +static const u8 DexDescription_Quaxo_2[] = _( + "mehr Respekt erntet dieses POKéMON\n" + "von seinen Artgenossen."); +#else static const u8 DexDescription_Quaxo_1[] = _( "QUAXO hat gelocktes Haar, das ihm den\n" "Status eines Königs bescheinigt. Je\n" @@ -1590,6 +2865,7 @@ static const u8 DexDescription_Quaxo_1[] = _( static const u8 DexDescription_Quaxo_2[] = _( "mehr Respekt erntet dieses POKéMON\n" "von seinen Artgenossen."); +#endif static const u8 DexDescription_Hoppspross_1[] = _( "HOPPSPROSS lässt sich vom Wind\n" @@ -1599,6 +2875,16 @@ static const u8 DexDescription_Hoppspross_2[] = _( "Blätter mit anderen HOPPSPROSS,\n" "damit es nicht davongeweht wird."); +#ifdef SAPPHIRE +static const u8 DexDescription_Hubelupf_1[] = _( + "HUBELUPFs Blume beginnt zu blühen, wenn\n" + "die Temperatur über 18 Grad steigt. Wie\n" + "weit sich die Blume öffnet, hängt von"); +static const u8 DexDescription_Hubelupf_2[] = _( + "der Temperatur ab. Daher wird dieses\n" + "POKéMON manchmal als Thermometer\n" + "eingesetzt."); +#else static const u8 DexDescription_Hubelupf_1[] = _( "HUBELUPFs Blume beginnt zu blühen, wenn\n" "die Temperatur über 18 Grad steigt. Wie\n" @@ -1607,6 +2893,7 @@ static const u8 DexDescription_Hubelupf_2[] = _( "der Höhe der Temperatur ab. Daher wird\n" "dieses POKéMON manchmal als\n" "Thermometer eingesetzt."); +#endif static const u8 DexDescription_Papungha_1[] = _( "PAPUNGHA nutzt den Südwind, um das\n" @@ -1642,6 +2929,16 @@ static const u8 DexDescription_Sonnflora_2[] = _( "Wenn aber die Sonne untergegangen ist,\n" "hört es auf sich zu bewegen."); +#ifdef SAPPHIRE +static const u8 DexDescription_Yanma_1[] = _( + "YANMA hat einen Blickwinkel von 360\n" + "Grad, ohne die Augen bewegen zu müssen.\n" + "Es ist ein großartiger Flieger und geübt"); +static const u8 DexDescription_Yanma_2[] = _( + "darin, plötzlich anzuhalten oder\n" + "Wendemanöver hinzulegen. So kann es\n" + "sich blitzschnell auf Beute stürzen."); +#else static const u8 DexDescription_Yanma_1[] = _( "YANMA hat einen Blickwinkel von 360\n" "Grad, ohne die Augen bewegen zu müssen.\n" @@ -1650,6 +2947,7 @@ static const u8 DexDescription_Yanma_2[] = _( "darin, plötzlich anzuhalten oder\n" "Wendemanöver vorzunehmen. So kann es\n" "sich blitzschnell auf Beute stürzen."); +#endif static const u8 DexDescription_Felino_1[] = _( "FELINO lebt eigentlich im Wasser.\n" @@ -1711,6 +3009,16 @@ static const u8 DexDescription_Traunfugil_2[] = _( "Feinde aufzunehmen und sie in\n" "Nahrung umzuwandeln."); +#ifdef SAPPHIRE +static const u8 DexDescription_Icognito_1[] = _( + "ICOGNITO hat die Form antiker\n" + "Schriftzeichen. Bis heute ist unklar,\n" + "was zuerst da war - die antiken"); +static const u8 DexDescription_Icognito_2[] = _( + "Schriftzeichen oder die vielen unter-\n" + "schiedlichen ICOGNITO. Trotz umfang-\n" + "reicher Forschung bleiben Fragen offen."); +#else static const u8 DexDescription_Icognito_1[] = _( "ICOGNITO hat die Form antiker\n" "Schriftzeichen. Bis heute ist unklar,\n" @@ -1719,7 +3027,18 @@ static const u8 DexDescription_Icognito_2[] = _( "Schriftzeichen oder die vielen unter-\n" "schiedlichen ICOGNITO. Trotz umfang-\n" "reicher Forschung bleiben Fragen offen."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Woingenau_1[] = _( + "WOINGENAU tut nichts anderes als\n" + "Angriffe auszuhalten. Von sich aus\n" + "würde es nie angreifen. Eine Attacke"); +static const u8 DexDescription_Woingenau_2[] = _( + "auf seinen Schweif würde es allerdings\n" + "niemals dulden. Wenn das passiert, \n" + "setzt es ABGANGSBUND ein."); +#else static const u8 DexDescription_Woingenau_1[] = _( "Wenn zwei oder mehr WOINGENAU \n" "aufeinander treffen, versuchen sie,\n" @@ -1728,7 +3047,18 @@ static const u8 DexDescription_Woingenau_2[] = _( "Sie möchten herausfinden, welches\n" "POKéMON es am längsten ohne Nahrung\n" "aushält. Darauf müssen Trainer achten."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Girafarig_1[] = _( + "Der Kopf an GIRAFARIGs Hinterteil\n" + "verfügt nur über ein kleines Gehirn, mit\n" + "dem es nicht denken kann. Dieses Gehirn"); +static const u8 DexDescription_Girafarig_2[] = _( + "benötigt jedoch keinen Schlaf und ist\n" + "somit in der Lage, die Umgebung rund\n" + "um die Uhr im Auge zu behalten."); +#else static const u8 DexDescription_Girafarig_1[] = _( "Der Kopf an GIRAFARIGs Hinterteil hat\n" "ein eigenes Gehirn. Er reagiert mit\n" @@ -1737,7 +3067,17 @@ static const u8 DexDescription_Girafarig_2[] = _( "Wenn man sich diesem POKéMON von\n" "hinten nähert, könnte der hintere Kopf\n" "plötzlich vorschnellen und zubeißen."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Tannza_1[] = _( + "TANNZA hängt an Ästen und wartet auf\n" + "Beute. Wenn man dieses POKéMON bei\n" + "einer Mahlzeit stört, indem man seinen"); +static const u8 DexDescription_Tannza_2[] = _( + "Baum schüttelt, fällt es herunter und\n" + "explodiert ohne Vorwarnung."); +#else static const u8 DexDescription_Tannza_1[] = _( "TANNZA hängt an Ästen und wartet auf\n" "Beute. Wenn man dieses POKéMON bei\n" @@ -1746,6 +3086,7 @@ static const u8 DexDescription_Tannza_2[] = _( "Baum, auf dem es sich befindet,\n" "schüttelt, fällt es herunter und\n" "explodiert ohne Vorwarnung."); +#endif static const u8 DexDescription_Forstellka_1[] = _( "FORSTELLKA versteckt sich in seiner\n" @@ -1799,6 +3140,16 @@ static const u8 DexDescription_Granbull_2[] = _( "Es beißt nur zu, wenn es erschreckt\n" "wird."); +#ifdef SAPPHIRE +static const u8 DexDescription_Baldorfish_1[] = _( + "BALDORFISH saugt Wasser ein, um sich\n" + "aufzublasen. Dieses POKéMON nutzt den\n" + "Druck des Wassers dazu, giftige"); +static const u8 DexDescription_Baldorfish_2[] = _( + "Stacheln zu verschießen. Es betrachtet\n" + "Schwimmen als eine echte Heraus-\n" + "forderung."); +#else static const u8 DexDescription_Baldorfish_1[] = _( "BALDORFISH saugt Wasser ein, um sich\n" "aufzublasen. Dieses POKéMON nutzt den\n" @@ -1807,6 +3158,7 @@ static const u8 DexDescription_Baldorfish_2[] = _( "Stacheln aus seinem Körper zu\n" "verschießen. Es betrachtet Schwimmen\n" "als eine echte Herausforderung."); +#endif static const u8 DexDescription_Scherox_1[] = _( "SCHEROX’ Körper ist hart wie Stahl.\n" @@ -1816,6 +3168,16 @@ static const u8 DexDescription_Scherox_2[] = _( "mit den Flügeln, um seine\n" "Körpertemperatur zu regulieren."); +#ifdef SAPPHIRE +static const u8 DexDescription_Pottrott_1[] = _( + "POTTROTT versteckt sich leise unter\n" + "Steinen und verbirgt seinen Körper in\n" + "seiner harten Schale, wenn es Beeren"); +static const u8 DexDescription_Pottrott_2[] = _( + "zu sich nimmt.\n" + "Die Beeren vermischen sich mit seinen\n" + "Körperflüssigkeiten zu einem Saft."); +#else static const u8 DexDescription_Pottrott_1[] = _( "POTTROTT versteckt sich leise unter\n" "Steinen und verbirgt seinen Körper in\n" @@ -1824,7 +3186,18 @@ static const u8 DexDescription_Pottrott_2[] = _( "gesammelte Beeren zu sich nimmt. Die\n" "Beeren vermischen sich mit seinen\n" "Körperflüssigkeiten zu einem Saft."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Skaraborn_1[] = _( + "SKARABORN hat scharfe Krallen an den\n" + "Füßen. Diese bohren sich fest in den\n" + "Boden oder in die Rinde eines Baumes"); +static const u8 DexDescription_Skaraborn_2[] = _( + "und geben diesem POKéMON einen siche-\n" + "ren Halt. So kann es seine Gegner mit\n" + "seinem imposanten Horn wegschleudern."); +#else static const u8 DexDescription_Skaraborn_1[] = _( "SKARABORN geht direkt auf seinen\n" "Gegner los, rutscht auf ihn zu, um ihn\n" @@ -1833,7 +3206,17 @@ static const u8 DexDescription_Skaraborn_2[] = _( "Horn wegzuschleudern. Dieses POKéMON\n" "hat genug Kraft, um einen massigen\n" "Baum umzustoßen."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Sniebel_1[] = _( + "SNIEBEL klettert an Bäumen hoch, indem\n" + "es seine hakenförmigen Krallen in die\n" + "Rinde schlägt. Dieses POKéMON sucht"); +static const u8 DexDescription_Sniebel_2[] = _( + "nach unbewachten Nestern und stiehlt\n" + "die Eier. Davon ernährt es sich."); +#else static const u8 DexDescription_Sniebel_1[] = _( "SNIEBEL klettert an Bäumen hoch, indem\n" "es seine hakenförmigen Krallen in die\n" @@ -1842,7 +3225,17 @@ static const u8 DexDescription_Sniebel_2[] = _( "nach unbewachten Nestern und stiehlt\n" "die Eier, wenn die Eltern auf Nahrungs-\n" "suche sind. Davon ernährt es sich."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Teddiursa_1[] = _( + "TEDDIURSA leckt gern seine mit Honig\n" + "bedeckten Pfoten ab. Dieses POKéMON\n" + "bereitet seinen eigenen Honig zu, indem"); +static const u8 DexDescription_Teddiursa_2[] = _( + "es die von BIBOR gesammelten Früchte\n" + "und Pollen vermengt."); +#else static const u8 DexDescription_Teddiursa_1[] = _( "TEDDIURSA leckt gern seine mit Honig\n" "bedeckten Pranken ab. Dieses POKéMON\n" @@ -1850,6 +3243,7 @@ static const u8 DexDescription_Teddiursa_1[] = _( static const u8 DexDescription_Teddiursa_2[] = _( "es die von BIBOR gesammelten Früchte\n" "und Pollen miteinander vermengt."); +#endif static const u8 DexDescription_Ursaring_1[] = _( "In den von URSARING bewohnten Wäldern\n" @@ -1859,6 +3253,15 @@ static const u8 DexDescription_Ursaring_2[] = _( "POKéMON läuft täglich durch den Wald,\n" "um nach Essbarem zu suchen."); +#ifdef SAPPHIRE +static const u8 DexDescription_Schneckmag_1[] = _( + "SCHNECKMAG hat kein Blut in seinem\n" + "Körper. Stattdessen fließt glühend\n" + "heißes Magma in diesem POKéMON,"); +static const u8 DexDescription_Schneckmag_2[] = _( + "das seine Organe mit lebenswichtigen\n" + "Nährstoffen und Sauerstoff versorgt."); +#else static const u8 DexDescription_Schneckmag_1[] = _( "Durch SCHNECKMAGs Kreislaufsystem\n" "fließt Magma. Wenn dieses POKéMON\n" @@ -1867,7 +3270,18 @@ static const u8 DexDescription_Schneckmag_2[] = _( "aus und erhärtet. Sein Körper wird\n" "spröde und es brechen Stücke heraus,\n" "so dass es kleiner wird."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Magcargo_1[] = _( + "MAGCARGOs Körpertemperatur liegt bei\n" + "etwa 10.000 Grad. Dieses POKéMON\n" + "bringt Wasser sofort zum Verdampfen."); +static const u8 DexDescription_Magcargo_2[] = _( + "Wenn dieses POKéMON im Regen steht,\n" + "werden die Tropfen augenblicklich zu\n" + "Dampf und es entsteht dichter Nebel."); +#else static const u8 DexDescription_Magcargo_1[] = _( "MAGCARGOs Schale ist eigentlich seine\n" "Haut, die erhärtet ist, als es auskühlte.\n" @@ -1876,7 +3290,18 @@ static const u8 DexDescription_Magcargo_2[] = _( "zerbrechlich. Schon bei einer leichten\n" "Berührung bricht sie auseinander. Dann\n" "muss es ein Bad in Magma nehmen."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Quiekel_1[] = _( + "Auf Nahrungssuche schnüffelt QUIEKEL\n" + "am Boden entlang. Seine \n" + "Lieblingsspeise ist ein Pilz, der unter"); +static const u8 DexDescription_Quiekel_2[] = _( + "abgestorbenem Gras wächst. \n" + "Manchmal spürt dieses POKéMON heiße\n" + "Quellen auf."); +#else static const u8 DexDescription_Quiekel_1[] = _( "Auf Nahrungssuche schnüffelt QUIEKEL\n" "am Boden entlang. Seine \n" @@ -1885,7 +3310,18 @@ static const u8 DexDescription_Quiekel_2[] = _( "verwesendem Gras wächst. \n" "Manchmal spürt dieses POKéMON heiße\n" "Quellen auf."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Keifel_1[] = _( + "KEIFEL hat ein dichtes Fell aus langen\n" + "Haaren. Dadurch ist es gegen eisige\n" + "Kälte gewappnet."); +static const u8 DexDescription_Keifel_2[] = _( + "Dieses POKéMON benutzt seine\n" + "Stoßzähne, um an Nahrung zu gelangen,\n" + "die unter dem Eis eingeschlossen ist."); +#else static const u8 DexDescription_Keifel_1[] = _( "KEIFEL hat ein dichtes Fell aus langen\n" "Haaren. Dadurch ist es gegen eisige\n" @@ -1894,7 +3330,18 @@ static const u8 DexDescription_Keifel_2[] = _( "Dieses POKéMON benutzt seine\n" "Hauer, um an Nahrung zu gelangen, die\n" "unter dem Eis eingeschlossen ist."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Corasonn_1[] = _( + "Scharen von CORASONN sammeln sich im\n" + "warmen Meer und dienen kleineren\n" + "POKéMON als ideale Plätze zum"); +static const u8 DexDescription_Corasonn_2[] = _( + "Verstecken. Wenn die Wassertemperatur\n" + "sinkt, wandert dieses POKéMON in die\n" + "südlichen Meere ab."); +#else static const u8 DexDescription_Corasonn_1[] = _( "Wenn CORASONNs Arme Sonnenlicht\n" "abbekommen, glitzern sie wunderschön\n" @@ -1902,6 +3349,7 @@ static const u8 DexDescription_Corasonn_1[] = _( static const u8 DexDescription_Corasonn_2[] = _( "abbricht, wächst über Nacht ein neuer\n" "nach."); +#endif static const u8 DexDescription_Remoraid_1[] = _( "REMORAID saugt Wasser ein und spritzt\n" @@ -1921,6 +3369,16 @@ static const u8 DexDescription_Octillery_2[] = _( "Wenn ein Feind zu stark ist, speit es\n" "Tinte aus und flüchtet."); +#ifdef SAPPHIRE +static const u8 DexDescription_Botogel_1[] = _( + "BOTOGEL sammelt seine Nahrung in\n" + "seinem Schweif. Es gab einmal einen\n" + "berühmten Entdecker, der es dank eines"); +static const u8 DexDescription_Botogel_2[] = _( + "BOTOGEL geschafft hat, einen der\n" + "höchsten Berge der Welt zu besteigen.\n" + "Es hat seine Nahrung mit ihm geteilt."); +#else static const u8 DexDescription_Botogel_1[] = _( "BOTOGEL sammelt seine Nahrung in\n" "seinem Schweif. Es gab einmal einen\n" @@ -1929,7 +3387,18 @@ static const u8 DexDescription_Botogel_2[] = _( "BOTOGELs geschafft hat, einen der\n" "höchsten Berge der Welt zu besteigen.\n" "Es hatte seine Nahrung mit ihm geteilt."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Mantax_1[] = _( + "An schönen Tagen sieht man Scharen\n" + "von MANTAX elegant über die Wellen des\n" + "Ozeans springen."); +static const u8 DexDescription_Mantax_2[] = _( + "Durch REMORAID, die an ihm haften\n" + "und ihn begleiten, fühlt sich dieses\n" + "POKéMON nicht belästigt."); +#else static const u8 DexDescription_Mantax_1[] = _( "An schönen Tagen sieht man Schwärme\n" "von MANTAX elegant über die Wellen des\n" @@ -1938,7 +3407,17 @@ static const u8 DexDescription_Mantax_2[] = _( "Durch REMORAID, die an ihm haften\n" "und ihn begleiten, fühlt sich dieses\n" "POKéMON nicht belästigt."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Panzaeron_1[] = _( + "PANZAERONs Stahlflügel bekommen in den\n" + "vielen Kämpfen, die es austrägt, Risse\n" + "und Beulen. Einmal im Jahr wachsen"); +static const u8 DexDescription_Panzaeron_2[] = _( + "seine Flügel komplett nach und werden\n" + "wiederhergestellt."); +#else static const u8 DexDescription_Panzaeron_1[] = _( "PANZAERON ist komplett in einen harten,\n" "schützenden Panzer eingehüllt. Dieses\n" @@ -1946,6 +3425,7 @@ static const u8 DexDescription_Panzaeron_1[] = _( static const u8 DexDescription_Panzaeron_2[] = _( "Es greift seine Feinde mit seinen\n" "messerscharfen Flügeln an."); +#endif static const u8 DexDescription_Hunduster_1[] = _( "HUNDUSTER jagen in Gruppen. Sie\n" @@ -1965,13 +3445,31 @@ static const u8 DexDescription_Hundemon_2[] = _( "durch das Ausfechten von Kämpfen\n" "untereinander."); +#ifdef SAPPHIRE +static const u8 DexDescription_Seedraking_1[] = _( + "SEEDRAKING schläft auf dem Meeres-\n" + "boden, wo ansonsten niemand lebt. Wenn\n" + "ein Sturm aufkommt, wacht es auf und"); +static const u8 DexDescription_Seedraking_2[] = _( + "macht sich auf die Suche nach Beute."); +#else static const u8 DexDescription_Seedraking_1[] = _( "SEEDRAKING lebt in den Tiefen des\n" "Ozeans, die ansonsten verwaist sind.\n" "Lange hat man geglaubt, dass das"); static const u8 DexDescription_Seedraking_2[] = _( "Gähnen dieses POKéMON Strudel auslöst."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Phanpy_1[] = _( + "PHANPY kann sich mit seiner langen Nase\n" + "selbst duschen. Wenn andere dabei sind,\n" + "begießen sie sich gegenseitig mit"); +static const u8 DexDescription_Phanpy_2[] = _( + "Wasser. Danach trocknet es seinen \n" + "durchnässten Körper am Ufer."); +#else static const u8 DexDescription_Phanpy_1[] = _( "Um sich ein Nest zu bauen, gräbt\n" "PHANPY am Flussufer ein Loch ins\n" @@ -1980,7 +3478,17 @@ static const u8 DexDescription_Phanpy_2[] = _( "seines Nests mit Hilfe seines Rüssels,\n" "damit seine Artgenossen wissen, dass\n" "dieses Gebiet vergeben ist."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Donphan_1[] = _( + "DONPHAN kann mit seinem harten Körper\n" + "sogar ein Haus zerstören. Mit seiner\n" + "imposanten Kraft hilft dieses POKéMON"); +static const u8 DexDescription_Donphan_2[] = _( + "dabei, Erdrutsche aus dem Weg zu\n" + "räumen, die Bergpfade versperren."); +#else static const u8 DexDescription_Donphan_1[] = _( "DONPHANs Lieblingsattacke ist es, als\n" "Ball zusammengerollt mit voller Wucht\n" @@ -1988,6 +3496,7 @@ static const u8 DexDescription_Donphan_1[] = _( static const u8 DexDescription_Donphan_2[] = _( "Wenn es erst einmal rollt, ist dieses\n" "POKéMON nur schwer aufzuhalten."); +#endif static const u8 DexDescription_Porygon2_1[] = _( "PORYGON2 wurde in einem\n" @@ -1998,6 +3507,14 @@ static const u8 DexDescription_Porygon2_2[] = _( "selbstständig neue Gesten und Gefühle\n" "erlernen kann."); +#ifdef SAPPHIRE +static const u8 DexDescription_Damhirplex_1[] = _( + "DAMHIRPLEX hat ein prächtiges Geweih,\n" + "für das hohe Preise gezahlt werden.\n" + "Daher wurde dieses POKéMON gejagt"); +static const u8 DexDescription_Damhirplex_2[] = _( + "und wäre beinahe ausgestorben."); +#else static const u8 DexDescription_Damhirplex_1[] = _( "DAMHIRPLEX hat ein prächtiges Geweih,\n" "für das hohe Preise gezahlt werden, da\n" @@ -2005,7 +3522,18 @@ static const u8 DexDescription_Damhirplex_1[] = _( static const u8 DexDescription_Damhirplex_2[] = _( "Daher wurde dieses POKéMON gejagt und\n" "wäre beinahe ausgestorben."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Farbeagle_1[] = _( + "FARBEAGLE markiert sein Revier mit\n" + "einer Flüssigkeit, die aus seiner\n" + "Schweifspitze austritt."); +static const u8 DexDescription_Farbeagle_2[] = _( + "Es wurden über 5.000 unterschiedliche\n" + "Markierungen entdeckt, die dieses\n" + "POKéMON hinterlassen hat."); +#else static const u8 DexDescription_Farbeagle_1[] = _( "FARBEAGLE markiert sein Revier mit\n" "einer Flüssigkeit, die aus seiner\n" @@ -2014,7 +3542,18 @@ static const u8 DexDescription_Farbeagle_2[] = _( "Es wurden über 5000 unterschiedliche\n" "Markierungen entdeckt, die dieses\n" "POKéMON hinterlassen hat."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Rabauz_1[] = _( + "RABAUZ muss jeden Tag trainieren,\n" + "sonst ist es nicht ausgelastet und\n" + "reagiert gestresst. Wenn man dieses"); +static const u8 DexDescription_Rabauz_2[] = _( + "POKéMON trainiert, muss man\n" + "zahlreiche Trainingsmethoden\n" + "einsetzen und ausbauen."); +#else static const u8 DexDescription_Rabauz_1[] = _( "RABAUZ muss jeden Tag trainieren,\n" "sonst ist es nicht ausgelastet und\n" @@ -2023,7 +3562,18 @@ static const u8 DexDescription_Rabauz_2[] = _( "POKéMON trainiert, muss man\n" "zahlreiche Trainingsmethoden\n" "einsetzen und sie ständig ausbauen."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Kapoera_1[] = _( + "KAPOERA dreht sich auf dem Kopf\n" + "stehend um die eigene Achse und teilt\n" + "Tritte aus. Seine Technik ist eine"); +static const u8 DexDescription_Kapoera_2[] = _( + "bemerkenswerte Mischung aus Angriff \n" + "und Verteidigung. Es bewegt sich\n" + "drehend schneller voran als laufend."); +#else static const u8 DexDescription_Kapoera_1[] = _( "KAPOERA dreht sich auf dem Kopf\n" "stehend um die eigene Achse und teilt\n" @@ -2032,7 +3582,18 @@ static const u8 DexDescription_Kapoera_2[] = _( "bemerkenswerte Mischung aus Angriff \n" "und Verteidigung. Es bewegt sich \n" "drehend schneller voran als laufend."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Kussilla_1[] = _( + "KUSSILLA läuft hektisch umher, fällt\n" + "aber auch ziemlich oft hin. Es lässt\n" + "keine Möglichkeit aus, sein Spiegelbild"); +static const u8 DexDescription_Kussilla_2[] = _( + "zu betrachten, um sicherzustellen,\n" + "dass sein Gesicht nicht schmutzig\n" + "geworden ist."); +#else static const u8 DexDescription_Kussilla_1[] = _( "KUSSILLA läuft hektisch umher, fällt\n" "aber auch ziemlich oft hin. Es lässt\n" @@ -2041,6 +3602,7 @@ static const u8 DexDescription_Kussilla_2[] = _( "zu betrachten, um sicherzustellen,\n" "dass sein Gesicht nicht schmutzig\n" "geworden ist."); +#endif static const u8 DexDescription_Elekid_1[] = _( "ELEKID speichert Elektrizität in seinem\n" @@ -2067,6 +3629,16 @@ static const u8 DexDescription_Miltank_2[] = _( "Menschen, die keine Milch trinken,\n" "essen sie stattdessen als Joghurt."); +#ifdef SAPPHIRE +static const u8 DexDescription_Heiteira_1[] = _( + "HEITEIRA nimmt mit seinem flauschigen\n" + "Fell Traurigkeit wahr. Es hastet zu\n" + "einer traurigen Person, egal, wie weit"); +static const u8 DexDescription_Heiteira_2[] = _( + "diese entfernt ist und teilt ein \n" + "GLÜCKS-EI mit ihr, um sie zum\n" + "Lächeln zu bringen."); +#else static const u8 DexDescription_Heiteira_1[] = _( "HEITEIRA nimmt mit seinem flauschigen\n" "Fell Traurigkeit wahr. Es hastet zu\n" @@ -2075,6 +3647,7 @@ static const u8 DexDescription_Heiteira_2[] = _( "diese entfernt ist und teilt ein \n" "GLÜCKS-EI mit ihr, um sie zum Lächeln\n" "zu bringen."); +#endif static const u8 DexDescription_Raikou_1[] = _( "RAIKOU ist so schnell wie der Blitz. Das\n" @@ -2093,12 +3666,21 @@ static const u8 DexDescription_Entei_2[] = _( "alles auslöschen, was mit ihnen in\n" "Kontakt kommt."); +#ifdef SAPPHIRE +static const u8 DexDescription_Suicune_1[] = _( + "SUICUNE wohnt die Reinheit einer\n" + "Quelle inne. Es läuft graziös herum und \n" + "hat die Macht, schmutziges Wasser zu"); +static const u8 DexDescription_Suicune_2[] = _( + "reinigen."); +#else static const u8 DexDescription_Suicune_1[] = _( "SUICUNE wohnt die Reinheit einer\n" "Quelle inne. Es bewegt sich graziös und \n" "hat die Macht, schmutziges Wasser zu"); static const u8 DexDescription_Suicune_2[] = _( "reinigen."); +#endif static const u8 DexDescription_Larvitar_1[] = _( "LARVITAR wurde tief unter der Erde\n" @@ -2108,6 +3690,16 @@ static const u8 DexDescription_Larvitar_2[] = _( "Erdreich fressen. Erst dann bekommt es\n" "seine Eltern zu Gesicht."); +#ifdef SAPPHIRE +static const u8 DexDescription_Pupitar_1[] = _( + "PUPITAR erzeugt in seinem Körper ein\n" + "Gas, das es komprimiert und kraftvoll\n" + "ausstößt, um sich wie ein"); +static const u8 DexDescription_Pupitar_2[] = _( + "Düsenflugzeug anzutreiben. Sein Körper\n" + "ist robust und hält auch Angriffen mit\n" + "massivem Stahl stand."); +#else static const u8 DexDescription_Pupitar_1[] = _( "PUPITAR erzeugt in seinem Körper ein\n" "Gas, das es komprimiert und kraftvoll\n" @@ -2116,6 +3708,7 @@ static const u8 DexDescription_Pupitar_2[] = _( "Düsenflugzeug anzutreiben. Sein\n" "Körper ist sehr robust und er hält\n" "auch massivem Stahl stand."); +#endif static const u8 DexDescription_Despotar_1[] = _( "DESPOTAR ist erstaunlich stark. Es\n" @@ -2125,6 +3718,16 @@ static const u8 DexDescription_Despotar_2[] = _( "wandert in den Bergen umher und sucht\n" "nach Gegnern für einen Kampf."); +#ifdef SAPPHIRE +static const u8 DexDescription_Lugia_1[] = _( + "LUGIAs Flügel haben eine\n" + "zerstörerische Kraft. Bereits ein\n" + "leichtes Flattern kann Häuser"); +static const u8 DexDescription_Lugia_2[] = _( + "hinfortwehen. Daher hat sich dieses\n" + "POKéMON dafür entschieden, tief unten\n" + "im Meer zu leben, wo es niemand sieht."); +#else static const u8 DexDescription_Lugia_1[] = _( "LUGIAs Flügel haben eine\n" "zerstörerische Kraft. Bereits ein\n" @@ -2133,6 +3736,7 @@ static const u8 DexDescription_Lugia_2[] = _( "hinfortwehen. Daher hat sich dieses\n" "POKéMON dafür entschieden, tief unter\n" "dem Meer zu leben, wo es niemand sieht."); +#endif static const u8 DexDescription_HoOh_1[] = _( "HO-OHs Federn leuchten in sieben\n" @@ -2143,6 +3747,15 @@ static const u8 DexDescription_HoOh_2[] = _( "bringen. Dieses POKéMON lebt am Fuße\n" "eines Regenbogens."); +#ifdef SAPPHIRE +static const u8 DexDescription_Celebi_1[] = _( + "Dieses POKéMON kommt aus der Zukunft\n" + "und ist durch die Zeit gereist. Solange\n" + "CELEBI auftaucht, ist der"); +static const u8 DexDescription_Celebi_2[] = _( + "Menschheit angeblich eine rosige\n" + "Zukunft beschieden."); +#else static const u8 DexDescription_Celebi_1[] = _( "Dieses POKéMON kommt aus der Zukunft\n" "und ist durch die Zeit gereist. Solange\n" @@ -2150,7 +3763,17 @@ static const u8 DexDescription_Celebi_1[] = _( static const u8 DexDescription_Celebi_2[] = _( "ist der Menschheit angeblich eine\n" "rosige Zukunft beschieden."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Geckarbor_1[] = _( + "GECKARBOR ist ruhig und beherrscht, es\n" + "gerät niemals in Panik. Wenn es ein\n" + "stärkerer Feind zornig anstarrt,"); +static const u8 DexDescription_Geckarbor_2[] = _( + "erwidert es den bösen Blick, weicht aber\n" + "keinen Millimeter zurück."); +#else static const u8 DexDescription_Geckarbor_1[] = _( "Mit den kleinen Haken unter seinen\n" "Füßen kann GECKARBOR an Wänden\n" @@ -2158,7 +3781,17 @@ static const u8 DexDescription_Geckarbor_1[] = _( static const u8 DexDescription_Geckarbor_2[] = _( "Feinde an, indem es mit seinem\n" "mächtigen Schweif zuschlägt."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Reptain_1[] = _( + "Dieses POKéMON fliegt geschickt von\n" + "Ast zu Ast. Keinem POKéMON wird es\n" + "jemals gelingen, ein REPTAIN zu"); +static const u8 DexDescription_Reptain_2[] = _( + "erwischen. Da kann es noch so schnell\n" + "sein."); +#else static const u8 DexDescription_Reptain_1[] = _( "REPTAIN kann sich mit den Blättern, die\n" "aus seinem Körper herauswachsen, im\n" @@ -2167,7 +3800,18 @@ static const u8 DexDescription_Reptain_2[] = _( "Dieses POKéMON ist ein wahrer Meister\n" "darin, auf die Bäume des Dschungels zu\n" "klettern."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Gewaldro_1[] = _( + "Auf GEWALDROs Rücken wachsen Samen.\n" + "Darin sind Nährstoffe, die Bäume\n" + "beleben können. Dieses POKéMON"); +static const u8 DexDescription_Gewaldro_2[] = _( + "achtet mit viel Fürsorge darauf, dass\n" + "die Bäume seines Waldes prächtig\n" + "gedeihen."); +#else static const u8 DexDescription_Gewaldro_1[] = _( "Die Blätter, die auf GEWALDROs Körper\n" "wachsen, sind sehr scharfkantig. Dieses\n" @@ -2175,7 +3819,17 @@ static const u8 DexDescription_Gewaldro_1[] = _( static const u8 DexDescription_Gewaldro_2[] = _( "Ast zu Ast und springt seine Feinde\n" "von oben oder hinten an."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Flemmli_1[] = _( + "In FLEMMLIs Körper brennt eine\n" + "Flamme. Wenn man es umarmt, beginnt\n" + "es zu glühen."); +static const u8 DexDescription_Flemmli_2[] = _( + "Dieses POKéMON trägt ein flauschiges\n" + "Fell aus Daunen."); +#else static const u8 DexDescription_Flemmli_1[] = _( "FLEMMLI hängt an seinem Trainer wie\n" "eine Klette. Es schlurft immer hinter ihm\n" @@ -2183,7 +3837,17 @@ static const u8 DexDescription_Flemmli_1[] = _( static const u8 DexDescription_Flemmli_2[] = _( "heißes Feuer, das seinen Feinden\n" "ordentlich einheizt."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Jungglut_1[] = _( + "JUNGGLUT stößt im Kampf glühend\n" + "heiße Flammen aus seinem Schnabel aus\n" + "und setzt extrem vernichtende Tritte"); +static const u8 DexDescription_Jungglut_2[] = _( + "ein. Das Geschrei dieses POKéMON ist\n" + "sehr laut und verwirrend."); +#else static const u8 DexDescription_Jungglut_1[] = _( "JUNGGLUT trainiert seine Beine und\n" "Oberschenkel, indem es über Felder und\n" @@ -2192,7 +3856,18 @@ static const u8 DexDescription_Jungglut_2[] = _( "sind sowohl schnell als auch kräftig,\n" "so dass es 10 Tritte pro Sekunde\n" "ausführen kann."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Lohgock_1[] = _( + "LOHGOCK besitzt unglaublich starke\n" + "Beine, mit denen es ein 30 Stockwerke\n" + "hohes Gebäude mit einem Sprung"); +static const u8 DexDescription_Lohgock_2[] = _( + "überwinden kann. Die flammenden Schläge\n" + "dieses POKéMON lassen verkohlte Gegner\n" + "zurück."); +#else static const u8 DexDescription_Lohgock_1[] = _( "LOHGOCK stößt heftige Flammen aus\n" "seinen Handgelenken aus und greift\n" @@ -2200,7 +3875,18 @@ static const u8 DexDescription_Lohgock_1[] = _( static const u8 DexDescription_Lohgock_2[] = _( "Feind ist, desto stärker lodern die\n" "Handgelenke dieses POKéMON."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Hydropi_1[] = _( + "Im Wasser atmet HYDROPI durch die\n" + "Kiemen an seinen Wangen. Wenn es im\n" + "Kampf in eine brenzlige Situation gerät,"); +static const u8 DexDescription_Hydropi_2[] = _( + "setzt es seine verblüffende Kraft ein,\n" + "mit der es Felsbrocken zerquetschen\n" + "kann, die größer sind als es selbst."); +#else static const u8 DexDescription_Hydropi_1[] = _( "Die Flosse an HYDROPIs Kopf dient als\n" "hochempfindliches Radar. Damit kann es\n" @@ -2209,7 +3895,17 @@ static const u8 DexDescription_Hydropi_2[] = _( "wahrnehmen. So weiß es jederzeit, was\n" "in seiner Umgebung passiert, ohne\n" "dabei seine Augen zu benutzen."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Moorabbel_1[] = _( + "MOORABBEL kommt im Schlamm besser\n" + "voran als im Wasser. Das Hinterteil\n" + "dieses POKéMON ist gut entwickelt,"); +static const u8 DexDescription_Moorabbel_2[] = _( + "so dass es auf seinen Hinterbeinen\n" + "laufen kann."); +#else static const u8 DexDescription_Moorabbel_1[] = _( "MOORABBELs Körper ist mit einem\n" "klebrigen Film überzogen, durch den es\n" @@ -2217,7 +3913,18 @@ static const u8 DexDescription_Moorabbel_1[] = _( static const u8 DexDescription_Moorabbel_2[] = _( "spielt bei Ebbe in den Schlammpfützen\n" "am Strand."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Sumpex_1[] = _( + "SUMPEX kann Stürme voraussagen,\n" + "indem es feine Veränderungen der\n" + "Geräusche von Wellen und Wind mit"); +static const u8 DexDescription_Sumpex_2[] = _( + "seinen Finnen wahrnimmt. Wenn eine\n" + "Sturmfront aufzieht, häuft es\n" + "Felsbrocken an, um sich zu schützen."); +#else static const u8 DexDescription_Sumpex_1[] = _( "SUMPEX ist sehr stark. Es kann mit\n" "Leichtigkeit einen Felsblock bewegen,\n" @@ -2226,7 +3933,18 @@ static const u8 DexDescription_Sumpex_2[] = _( "Weiterhin ist es mit einem exzellenten\n" "Sehvermögen ausgestattet, wodurch es\n" "auch in trüben Gewässern sehen kann."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Fiffyen_1[] = _( + "FIFFYEN ist ein Allesfresser.\n" + "Auffällig an diesem POKéMON ist das\n" + "Verhältnis seiner Körpergröße zur"); +static const u8 DexDescription_Fiffyen_2[] = _( + "Länge seiner Zähne. Es versucht Feinde\n" + "einzuschüchtern, indem es die Haare an\n" + "seinem Schweif abstehen lässt."); +#else static const u8 DexDescription_Fiffyen_1[] = _( "Sobald FIFFYEN eine Bewegung wahr-\n" "nimmt, schnappt es zu. Es jagt seine\n" @@ -2235,7 +3953,16 @@ static const u8 DexDescription_Fiffyen_2[] = _( "erschöpft ist. Wenn sich die Beute\n" "allerdings wehrt, kann es passieren, \n" "dass FIFFYEN klein beigibt und flieht."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Magnayen_1[] = _( + "MAGNAYEN zieht in Gruppen durch die\n" + "Wildnis. Durch seine Erfahrungen in der\n" + "Wildnis hört es nur auf TRAINER, die"); +static const u8 DexDescription_Magnayen_2[] = _( + "außergewöhnliche Fähigkeiten haben."); +#else static const u8 DexDescription_Magnayen_1[] = _( "MAGNAYEN sendet deutliche Signale\n" "aus, wenn es sich auf einen Angriff\n" @@ -2243,14 +3970,36 @@ static const u8 DexDescription_Magnayen_1[] = _( static const u8 DexDescription_Magnayen_2[] = _( "sich flach. Dieses POKéMON kann mit\n" "seinen spitzen Zähnen brutal zubeißen."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Zigzachs_1[] = _( + "Das Haar auf ZIGZACHS’ Rücken ist\n" + "struppig. Es reibt seine Rückenborsten\n" + "an Bäumen, um sein Revier zu markieren."); +static const u8 DexDescription_Zigzachs_2[] = _( + "Dieses POKéMON stellt sich im Kampf\n" + "schon einmal tot, um seine Feinde\n" + "reinzulegen."); +#else static const u8 DexDescription_Zigzachs_1[] = _( "ZIGZACHS ist ein rastloser Wanderer.\n" "Dieses POKéMON ist nämlich sehr\n" "neugierig und es inspiziert alles,"); static const u8 DexDescription_Zigzachs_2[] = _( "was ihm zufällig begegnet."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Geradaks_1[] = _( + "Auf der Jagd rennt GERADAKS so schnell\n" + "es kann schnurstracks hinter seiner\n" + "Beute her. Es erreicht zwar über"); +static const u8 DexDescription_Geradaks_2[] = _( + "100 km/h, muss aber erst aus vollem\n" + "Lauf zum Stehen kommen, bevor es die\n" + "Richtung wechseln kann."); +#else static const u8 DexDescription_Geradaks_1[] = _( "GERADAKS rennt immer mit vollem Tempo\n" "und nie im Zickzack, sondern nur gerade.\n" @@ -2259,7 +4008,18 @@ static const u8 DexDescription_Geradaks_2[] = _( "läuft es rechtwinklig daran vorbei. Für\n" "dieses POKéMON stellen leichte Kurven\n" "eine große Herausforderung dar."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Waumpel_1[] = _( + "WAUMPEL wird von SCHWALBOSS als Beute\n" + "angesehen. Dieses POKéMON wehrt sich\n" + "gegen angreifende Räuber, indem es die"); +static const u8 DexDescription_Waumpel_2[] = _( + "Stacheln an seinem Hinterteil auf sie\n" + "richtet. Es schwächt seine Gegner mit\n" + "dem Gift, das aus den Stacheln austritt."); +#else static const u8 DexDescription_Waumpel_1[] = _( "WAUMPEL kann mit den Stacheln an\n" "seinem Hinterteil die Rinde von Bäumen\n" @@ -2268,7 +4028,18 @@ static const u8 DexDescription_Waumpel_2[] = _( "austretenden Saft. An den Füßen dieses\n" "POKéMON befinden sich Saugnäpfe, mit\n" "denen es auch an Glas nicht abrutscht."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Schaloko_1[] = _( + "Bisher nahm man an, dass SCHALOKO vor\n" + "seiner Entwicklung hungert und\n" + "überhaupt nichts zu sich nimmt. Nun"); +static const u8 DexDescription_Schaloko_2[] = _( + "aber wird behauptet, dass es seinen \n" + "Durst mit Regenwasser löscht, das sich\n" + "auf seinem seidigen Fell sammelt."); +#else static const u8 DexDescription_Schaloko_1[] = _( "SCHALOKO bindet sich mit einem\n" "Seidenfaden an einen Ast. Es baumelt\n" @@ -2276,7 +4047,17 @@ static const u8 DexDescription_Schaloko_1[] = _( static const u8 DexDescription_Schaloko_2[] = _( "Durch ein kleines Loch in seinem\n" "Seidenkokon lugt es heraus."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Papinella_1[] = _( + "PAPINELLA hat einen langen Rüssel, der\n" + "hervorragend zum Sammeln von Blüten-\n" + "pollen geeignet ist. Dieses POKéMON"); +static const u8 DexDescription_Papinella_2[] = _( + "flattert im Frühlingswind herum\n" + "und sammelt Blütenstaub."); +#else static const u8 DexDescription_Papinella_1[] = _( "PAPINELLAs Lieblingsspeise ist\n" "Blütenstaub. Wenn du dieses POKéMON\n" @@ -2285,7 +4066,18 @@ static const u8 DexDescription_Papinella_2[] = _( "einen Blumentopf vor ein geöffnetes\n" "Fenster stellen. PAPINELLA wird sich\n" "diese Leckerei nicht entgehen lassen."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Panekon_1[] = _( + "Wenn es angegriffen wird, bewegt sich\n" + "PANEKON in keiner Weise, egal, wie\n" + "schwer es dabei verletzt wird. Wenn es"); +static const u8 DexDescription_Panekon_2[] = _( + "sich bewegen würde, wäre sein Körper zu\n" + "schwach für seine Entwicklung. Die\n" + "Schmerzen allerdings vergisst es nie."); +#else static const u8 DexDescription_Panekon_1[] = _( "PANEKON baut seinen schützenden\n" "Kokon, indem es seinen Körper mit\n" @@ -2294,7 +4086,18 @@ static const u8 DexDescription_Panekon_2[] = _( "Mund austritt. Wenn sein Körper mit\n" "Seide bedeckt ist, wird diese hart. Im\n" "Kokon wartet es auf seine Entwicklung."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Pudox_1[] = _( + "Wenn PUDOX mit den Flügeln schlägt,\n" + "verteilt es einen feinen Puder. Es\n" + "handelt sich um ein starkes Gift, das"); +static const u8 DexDescription_Pudox_2[] = _( + "sogar einen Profiboxer umhauen würde.\n" + "Bei der Futtersuche benutzt dieses \n" + "POKéMON seine Antennen als Radar."); +#else static const u8 DexDescription_Pudox_1[] = _( "PUDOX wird instinktiv vom Licht\n" "angezogen. In hell erleuchteten \n" @@ -2303,7 +4106,18 @@ static const u8 DexDescription_Pudox_2[] = _( "POKéMON dabei beobachten, die\n" "großen Schaden anrichten, indem sie die\n" "Blätter von Bäumen abfressen."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Loturzel_1[] = _( + "LOTURZEL soll einige Zeit an Land\n" + "verbracht haben, aber ins Wasser\n" + "zurückgekehrt sein, weil das Blatt"); +static const u8 DexDescription_Loturzel_2[] = _( + "auf seinem Kopf zu groß und zu schwer\n" + "geworden ist. Nun lässt es sich auf dem\n" + "Wasser treiben."); +#else static const u8 DexDescription_Loturzel_1[] = _( "LOTURZEL lebt auf der Wasseroberfläche\n" "von Teichen oder Seen. Es wird\n" @@ -2312,7 +4126,17 @@ static const u8 DexDescription_Loturzel_2[] = _( "abstirbt. Nur selten geht dieses\n" "POKéMON an Land, um nach sauberem\n" "Wasser Ausschau zu halten."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Lombrero_1[] = _( + "LOMBREROs Körper ist mit einem\n" + "glitschigen Film bedeckt. Es fühlt sich\n" + "widerlich an, wenn einen dieses POKéMON"); +static const u8 DexDescription_Lombrero_2[] = _( + "mit seinen Händen berührt. LOMBRERO\n" + "wird häufig für ein Kind gehalten."); +#else static const u8 DexDescription_Lombrero_1[] = _( "LOMBRERO liebt die Nacht und wird mit\n" "Einbruch der Dunkelheit aktiv. Es spielt\n" @@ -2321,7 +4145,17 @@ static const u8 DexDescription_Lombrero_2[] = _( "Wenn es Angler sieht, zieht es unter\n" "Wasser an ihren Angelschnüren und\n" "erfreut sich an ihrer Entrüstung."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Kappalores_1[] = _( + "Wenn KAPPALORES einen fröhlichen\n" + "Rhythmus hört, werden die Zellen in\n" + "seinem Körper aktiviert. Auch im Kampf"); +static const u8 DexDescription_Kappalores_2[] = _( + "zeigt dieses POKéMON seine\n" + "verblüffende Stärke."); +#else static const u8 DexDescription_Kappalores_1[] = _( "KAPPALORES fängt sofort zu tanzen an,\n" "wenn es stimmungsvolle, feierliche Musik\n" @@ -2329,7 +4163,18 @@ static const u8 DexDescription_Kappalores_1[] = _( static const u8 DexDescription_Kappalores_2[] = _( "angeblich, wenn es Kinder auf \n" "Wanderausflügen singen hört."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Samurzel_1[] = _( + "SAMURZEL sieht aus wie eine Eichel, wenn\n" + "es an einem Ast hängt. Es erschreckt\n" + "andere POKéMON, indem es sich dann"); +static const u8 DexDescription_Samurzel_2[] = _( + "plötzlich bewegt. Dieses POKéMON\n" + "poliert seinen Körper einmal am Tag mit\n" + "Blättern."); +#else static const u8 DexDescription_Samurzel_1[] = _( "SAMURZEL hängt sich mit dem Kopf an\n" "einen Ast. Dabei entzieht es dem Baum\n" @@ -2337,7 +4182,17 @@ static const u8 DexDescription_Samurzel_1[] = _( static const u8 DexDescription_Samurzel_2[] = _( "desto glänzender wird der Körper dieses\n" "POKéMON."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Blanas_1[] = _( + "Dieses POKéMON reißt das Blatt auf\n" + "seinem Kopf heraus und benutzt es\n" + "als Flöte. Diese Geräusche jagen den"); +static const u8 DexDescription_Blanas_2[] = _( + "Menschen, die sich im Wald verirrt haben,\n" + "Angst ein."); +#else static const u8 DexDescription_Blanas_1[] = _( "BLANAS lebt in dichten Wäldern.\n" "Manchmal wagt es sich aus dem Wald\n" @@ -2345,7 +4200,18 @@ static const u8 DexDescription_Blanas_1[] = _( static const u8 DexDescription_Blanas_2[] = _( "Dieses POKéMON mag es überhaupt nicht,\n" "wenn man seine lange Nase zwickt."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Tengulist_1[] = _( + "TENGULISTs große Fächer erzeugen\n" + "Böen, die eine Geschwindigkeit von\n" + "30 m/sek erreichen können und alles"); +static const u8 DexDescription_Tengulist_2[] = _( + "und jeden hinwegfegen können. Dieses\n" + "POKéMON lebt still und zurückgezogen\n" + "in den Tiefen der Wälder."); +#else static const u8 DexDescription_Tengulist_1[] = _( "TENGULIST ist ein geheimnisvolles\n" "POKéMON, das angeblich auf hohen\n" @@ -2354,7 +4220,17 @@ static const u8 DexDescription_Tengulist_2[] = _( "alt sind. Mit den Blätterventilatoren an\n" "seinen Händen kann es heftige Stürme\n" "erzeugen."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Schwalbini_1[] = _( + "SCHWALBINI ist noch klein, es hat\n" + "gerade erst sein Nest verlassen. Daher\n" + "fühlt es sich manchmal einsam und weint"); +static const u8 DexDescription_Schwalbini_2[] = _( + "nachts. Dieses POKéMON ernährt sich\n" + "von WAUMPEL."); +#else static const u8 DexDescription_Schwalbini_1[] = _( "Mutig behauptet SCHWALBINI sein\n" "Territorium gegen Eindringlinge, so\n" @@ -2363,7 +4239,16 @@ static const u8 DexDescription_Schwalbini_2[] = _( "Dieses unerschrockene POKéMON bleibt\n" "trotz einer Niederlage angriffslustig,\n" "heult aber laut, wenn es Hunger hat."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Schwalboss_1[] = _( + "SCHWALBOSS ist sehr gewissenhaft bei\n" + "der Pflege seiner glänzenden Flügel.\n" + "Wenn zwei SCHWALBOSS zusammen sind,"); +static const u8 DexDescription_Schwalboss_2[] = _( + "putzen sie sich ihre Flügel gegenseitig."); +#else static const u8 DexDescription_Schwalboss_1[] = _( "Dieses POKéMON taucht in einem steilen\n" "Winkel ab, sobald es Beute wahrgenommen\n" @@ -2371,7 +4256,17 @@ static const u8 DexDescription_Schwalboss_1[] = _( static const u8 DexDescription_Schwalboss_2[] = _( "seinen Krallen und lässt sie\n" "nicht mehr entkommen."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Wingull_1[] = _( + "WINGULL breitet seine langen, schmalen\n" + "Flügel aus und segelt im Seewind. Der\n" + "lange Schnabel dieses POKéMON"); +static const u8 DexDescription_Wingull_2[] = _( + "ist ihm beim Jagen nach Beute sehr\n" + "hilfreich."); +#else static const u8 DexDescription_Wingull_1[] = _( "Man sieht WINGULL oft mit seiner\n" "Beute oder seinen Besitztümern im\n" @@ -2380,14 +4275,34 @@ static const u8 DexDescription_Wingull_2[] = _( "nach geeigneten Verstecken. Dieses\n" "POKéMON fliegt durch die Lüfte, als\n" "würde es gleiten."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Pelipper_1[] = _( + "PELIPPER sucht nach Nahrung, während\n" + "es über die Wellen fliegt. Dieses \n" + "POKéMON taucht seinen großen Schnabel"); +static const u8 DexDescription_Pelipper_2[] = _( + "ins Meer, um seine Beute abzuschöpfen.\n" + "Dann schluckt es alles auf einmal\n" + "herunter."); +#else static const u8 DexDescription_Pelipper_1[] = _( "PELIPPER transportiert kleine POKéMON\n" "und Eier in seinem riesigen Schnabel\n" "durch die Lüfte. Dieses POKéMON baut"); static const u8 DexDescription_Pelipper_2[] = _( "sein Nest auf steilen Klippen am Meer."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Trasla_1[] = _( + "TRASLA hat die Fähigkeit, die Emotionen\n" + "von Menschen wahrzunehmen. Wenn sein\n" + "TRAINER gute Laune hat, ist dieses"); +static const u8 DexDescription_Trasla_2[] = _( + "POKéMON ebenfalls fröhlich."); +#else static const u8 DexDescription_Trasla_1[] = _( "TRASLA nimmt mit den Hörnern an seinem\n" "Kopf die Gefühle von Menschen wahr.\n" @@ -2396,7 +4311,18 @@ static const u8 DexDescription_Trasla_2[] = _( "nur selten zu Gesicht. Wenn es bemerkt,\n" "dass eine Person gut gelaunt ist, traut\n" "es sich näher an sie heran."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Kirlia_1[] = _( + "KIRLIA benutzt die Hörner an seinem\n" + "Kopf dazu, seine psychokinetische\n" + "Energie zu verstärken. Wenn dieses"); +static const u8 DexDescription_Kirlia_2[] = _( + "POKéMON seine spezielle Kraft einsetzt,\n" + "wird die Luft verformt und ein Trugbild\n" + "einer Landschaft erzeugt."); +#else static const u8 DexDescription_Kirlia_1[] = _( "Man sagt, dass ein KIRLIA, das häufig\n" "positive Emotionen seines TRAINERs\n" @@ -2405,7 +4331,18 @@ static const u8 DexDescription_Kirlia_2[] = _( "Dieses POKéMON kontrolliert\n" "psychokinetische Energie mit seinem\n" "hochentwickelten Gehirn."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Guardevoir_1[] = _( + "GUARDEVOIR kann mit seiner psycho-\n" + "kinetischen Energie die Dimensionen\n" + "verzerren und ein kleines Schwarzes"); +static const u8 DexDescription_Guardevoir_2[] = _( + "Loch erzeugen. Es schützt seinen\n" + "TRAINER selbst unter Einsatz seines\n" + "eigenen Lebens."); +#else static const u8 DexDescription_Guardevoir_1[] = _( "GUARDEVOIR kann in die Zukunft\n" "schauen. Wenn es eine Gefahr für seinen\n" @@ -2413,7 +4350,17 @@ static const u8 DexDescription_Guardevoir_1[] = _( static const u8 DexDescription_Guardevoir_2[] = _( "psychokinetische Energie mit voller\n" "Kraft."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Gehweiher_1[] = _( + "Wenn GEHWEIHER Gefahr wittert,\n" + "scheidet es einen dickflüssigen Sirup\n" + "aus seinem Kopf aus. Es gibt einige"); +static const u8 DexDescription_Gehweiher_2[] = _( + "POKéMON, die ganz wild auf diesen\n" + "Sirup sind."); +#else static const u8 DexDescription_Gehweiher_1[] = _( "GEHWEIHER scheidet aus seinen Zehen\n" "ein Öl aus, das es ihm ermöglicht, über\n" @@ -2421,7 +4368,18 @@ static const u8 DexDescription_Gehweiher_1[] = _( static const u8 DexDescription_Gehweiher_2[] = _( "ernährt sich von Mikroorganismen aus\n" "Teichen und Seen."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Maskeregen_1[] = _( + "MASKEREGENs Antennen haben ein\n" + "augenähnliches Muster, das ihm ein\n" + "Furcht erregendes Äußeres verleiht."); +static const u8 DexDescription_Maskeregen_2[] = _( + "Wenn seine “Augen” \n" + "traurig aussehen, ist ein heftiger \n" + "Regenguss im Anzug."); +#else static const u8 DexDescription_Maskeregen_1[] = _( "MASKEREGEN schüchtert seine Feinde\n" "mit den augenähnlichen Mustern auf\n" @@ -2430,7 +4388,17 @@ static const u8 DexDescription_Maskeregen_2[] = _( "kann mit seinen vier Flügeln wie ein\n" "Hubschrauber in jede Richtung fliegen,\n" "sogar seitwärts und rückwärts."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Knilz_1[] = _( + "Wenn KNILZ Gefahr wittert, \n" + "schüttelt es seinen Körper und verteilt\n" + "Sporen von seinem Kopf."); +static const u8 DexDescription_Knilz_2[] = _( + "Diese Sporen sind so giftig, dass Bäume\n" + "und Gräser davon eingehen."); +#else static const u8 DexDescription_Knilz_1[] = _( "KNILZ lebt im feuchten Erdboden\n" "finsterer Wälder. Es wird oft reglos\n" @@ -2438,7 +4406,17 @@ static const u8 DexDescription_Knilz_1[] = _( static const u8 DexDescription_Knilz_2[] = _( "gefunden. Dieses POKéMON ernährt sich\n" "von Kompost aus verrotteten Blättern."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Kapilz_1[] = _( + "Die Samen am Schweif von KAPILZ\n" + "bestehen aus gehärteten Giftsporen.\n" + "Man sollte sie lieber nicht essen."); +static const u8 DexDescription_Kapilz_2[] = _( + "Ein einziger Bissen davon kann eine\n" + "heftige Magenverstimmung hervorrufen."); +#else static const u8 DexDescription_Kapilz_1[] = _( "Mit leichtfüßiger Beinarbeit nähert \n" "sich KAPILZ seinen Feinden und\n" @@ -2447,7 +4425,17 @@ static const u8 DexDescription_Kapilz_2[] = _( "Armen um sich. Die Kampftechnik dieses\n" "POKéMON treibt Profiboxern die\n" "Schamesröte ins Gesicht."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Bummelz_1[] = _( + "BUMMELZ’ Herz schlägt nur ein Mal pro\n" + "Minute. Dieses POKéMON ist damit\n" + "zufrieden, bewegungslos"); +static const u8 DexDescription_Bummelz_2[] = _( + "herumzulungern. Nur ganz selten sieht\n" + "man dieses POKéMON sich bewegen."); +#else static const u8 DexDescription_Bummelz_1[] = _( "BUMMELZ geht zwanzig Stunden pro Tag\n" "müßig. Da es sich sehr wenig bewegt,\n" @@ -2455,7 +4443,18 @@ static const u8 DexDescription_Bummelz_1[] = _( static const u8 DexDescription_Bummelz_2[] = _( "Seine Tagesration besteht lediglich aus\n" "drei Blättern."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Muntier_1[] = _( + "MUNTIER findet einfach keine Ruhe.\n" + "Wenn es versucht zu schlafen, beginnt\n" + "das Blut in seinen Adern zu pulsieren."); +static const u8 DexDescription_Muntier_2[] = _( + "Dann muss es wie wild durch den \n" + "Dschungel rennen, um überhaupt Ruhe zu\n" + "finden."); +#else static const u8 DexDescription_Muntier_1[] = _( "MUNTIER brennt darauf, sich\n" "auszutoben. Es kann nicht einmal für\n" @@ -2463,7 +4462,17 @@ static const u8 DexDescription_Muntier_1[] = _( static const u8 DexDescription_Muntier_2[] = _( "Stress, wenn es sich nicht andauernd\n" "bewegen kann."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Letarking_1[] = _( + "Wo dieses LETARKING lebt, hinterlässt\n" + "es Kreise von 1 m Radius auf den\n" + "Wiesen. Es frisst nämlich all das Gras,"); +static const u8 DexDescription_Letarking_2[] = _( + "das in seiner Reichweite wächst. Dabei\n" + "liegt es bäuchlings auf dem Boden."); +#else static const u8 DexDescription_Letarking_1[] = _( "LETARKING verbringt den Tag damit,\n" "herumzuliegen und nichts zu tun. Es \n" @@ -2472,7 +4481,18 @@ static const u8 DexDescription_Letarking_2[] = _( "Reichweite wächst. Hat es alles\n" "aufgefressen, so sucht es sich\n" "widerwillig ein anderes Plätzchen."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Nincada_1[] = _( + "NINCADA lebt unter der Erde. Es benutzt\n" + "seine scharfen Krallen, um die Wurzeln\n" + "von Bäumen freizulegen und an"); +static const u8 DexDescription_Nincada_2[] = _( + "Flüssigkeit und Nährstoffe zu kommen. \n" + "Dieses POKéMON kann grelles Sonnen-\n" + "licht nicht aushalten und meidet es."); +#else static const u8 DexDescription_Nincada_1[] = _( "NINCADA lebt viele Jahre in absoluter\n" "Dunkelheit unter der Erde. Dieses\n" @@ -2480,7 +4500,18 @@ static const u8 DexDescription_Nincada_1[] = _( static const u8 DexDescription_Nincada_2[] = _( "Baumwurzeln auf. Es rührt sich nicht,\n" "da es auf seine Entwicklung wartet."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Ninjask_1[] = _( + "Wenn NINJASK nicht richtig trainiert\n" + "wird, hört es nicht mehr auf seinen\n" + "TRAINER und beginnt unaufhörlich und"); +static const u8 DexDescription_Ninjask_2[] = _( + "laut zu brüllen. Es stellt die Fähig-\n" + "keiten eines TRAINERs auf eine harte\n" + "Probe."); +#else static const u8 DexDescription_Ninjask_1[] = _( "NINJASK bewegt sich so schnell, dass\n" "man es nicht sehen kann. Seine Schreie\n" @@ -2488,7 +4519,18 @@ static const u8 DexDescription_Ninjask_1[] = _( static const u8 DexDescription_Ninjask_2[] = _( "Deshalb hielt man dieses POKéMON lange\n" "für unsichtbar."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Ninjatom_1[] = _( + "NINJATOM ist ein ganz besonderes\n" + "POKéMON. Es taucht plötzlich in\n" + "einem POKéBALL auf, nachdem sich"); +static const u8 DexDescription_Ninjatom_2[] = _( + "ein NINCADA entwickelt hat. Dieses\n" + "POKéMON ist absolut bewegungsunfähig\n" + "und atmet nicht einmal."); +#else static const u8 DexDescription_Ninjatom_1[] = _( "NINJATOMs harter Körper bewegt sich\n" "überhaupt nicht. Er scheint bloß eine\n" @@ -2497,7 +4539,17 @@ static const u8 DexDescription_Ninjatom_2[] = _( "soll angeblich die Seele eines jeden\n" "stehlen, der hinterrücks einen Blick in\n" "seinen hohlen Körper riskiert."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Flurmel_1[] = _( + "FLURMEL ist sehr scheu. Wenn es laut\n" + "brüllt, erschrickt es und brüllt dadurch\n" + "noch lauter. Wenn es schließlich damit"); +static const u8 DexDescription_Flurmel_2[] = _( + "aufhört, ist es völlig ausgepumpt und \n" + "legt sich schlafen."); +#else static const u8 DexDescription_Flurmel_1[] = _( "Normalerweise ist FLURMELs Stimme sehr\n" "leise, selbst mit größter Anstrengung\n" @@ -2505,7 +4557,17 @@ static const u8 DexDescription_Flurmel_1[] = _( static const u8 DexDescription_Flurmel_2[] = _( "POKéMON jedoch eine Gefahr wittert,\n" "stößt es ohrenbetäubende Schreie aus."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Krakeelo_1[] = _( + "KRAKEELO schreit und stampft mit\n" + "seinen Füßen auf den Boden. Danach\n" + "kann es für eine Weile nichts hören."); +static const u8 DexDescription_Krakeelo_2[] = _( + "Dies scheint die Schwachstelle dieses\n" + "POKéMON zu sein."); +#else static const u8 DexDescription_Krakeelo_1[] = _( "KRAKEELOs Brüllen kann ein Holzhaus zum\n" "Einsturz bringen. Es setzt seine Stimme\n" @@ -2513,7 +4575,18 @@ static const u8 DexDescription_Krakeelo_1[] = _( static const u8 DexDescription_Krakeelo_2[] = _( "Die runden Ohren dieses POKéMON dienen\n" "als Lautsprecher."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Krawumms_1[] = _( + "KRAWUMMS vermittelt seinen Artge-\n" + "nossen seine Gefühle, indem es eine Art\n" + "Pfeifen durch die Röhren an seinem"); +static const u8 DexDescription_Krawumms_2[] = _( + "Körper von sich gibt. Dieses\n" + "POKéMON erhebt nur im Kampf\n" + "seine Stimme."); +#else static const u8 DexDescription_Krawumms_1[] = _( "KRAWUMMS kann durch sein Brüllen\n" "Erdbeben auslösen. Wenn dieses\n" @@ -2521,7 +4594,17 @@ static const u8 DexDescription_Krawumms_1[] = _( static const u8 DexDescription_Krawumms_2[] = _( "kräftig einatmet, ist es kurz davor,\n" "ein mächtiges Brüllen von sich zu geben."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Makuhita_1[] = _( + "MAKUHITAs Geist ist unbezwingbar. Es\n" + "gibt die Hoffnung niemals auf. Es frisst\n" + "eine Menge, bekommt viel Schlaf und"); +static const u8 DexDescription_Makuhita_2[] = _( + "trainiert unermüdlich. Dadurch füllt es\n" + "seinen Körper mit Energie auf."); +#else static const u8 DexDescription_Makuhita_1[] = _( "MAKUHITA ist sehr zäh. Selbst wenn es im\n" "Kampf mehrfach niedergeschlagen\n" @@ -2530,14 +4613,35 @@ static const u8 DexDescription_Makuhita_2[] = _( "greift seinen Gegner an. Bei jedem Mal\n" "speichert es mehr Energie in seinem\n" "Körper für seine Entwicklung."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Hariyama_1[] = _( + "HARIYAMAs Körper mag vielleicht fett\n" + "aussehen, er besteht aber aus festen\n" + "Muskeln. Wenn dieses POKéMON all"); +static const u8 DexDescription_Hariyama_2[] = _( + "seine Muskeln anspannt, wird sein\n" + "Körper steinhart."); +#else static const u8 DexDescription_Hariyama_1[] = _( "HARIYAMA führt seinen berüchtigten\n" "Streckarm-Schlag überall aus. Ein Schlag\n" "von diesem POKéMON reicht aus,"); static const u8 DexDescription_Hariyama_2[] = _( "um einen Strommast zu zerlegen."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Azurill_1[] = _( + "AZURILLs Schweif ist lang und federnd.\n" + "Er ist vollgepackt mit Nährstoffen, die\n" + "dieses POKéMON zum Wachsen braucht."); +static const u8 DexDescription_Azurill_2[] = _( + "Man kann es häufig dabei beobachten,\n" + "wie es auf seinem gummiartigen Schweif\n" + "umherhüpft und spielt."); +#else static const u8 DexDescription_Azurill_1[] = _( "AZURILL schleudert seinen Schweif wie\n" "ein Lasso weit aus und fliegt dann \n" @@ -2546,7 +4650,18 @@ static const u8 DexDescription_Azurill_2[] = _( "hat es auf diese Weise geschafft, die\n" "Rekordweite von 10 Metern\n" "zurückzulegen."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Nasgnet_1[] = _( + "NASGNET wurde zunächst als völlig\n" + "unbeweglich beschrieben, da seine\n" + "magnetische Nase immer nach Norden"); +static const u8 DexDescription_Nasgnet_2[] = _( + "zeigt. Genauere Beobachtungen haben\n" + "jedoch ergeben, dass es sich pro Jahr\n" + "tatsächlich etwa um 1 cm bewegt."); +#else static const u8 DexDescription_Nasgnet_1[] = _( "NASGNET besitzt eine magnetische\n" "Nase, die immer nach Norden zeigt. Wenn\n" @@ -2555,7 +4670,17 @@ static const u8 DexDescription_Nasgnet_2[] = _( "sich einander nicht zuwenden, da ihre\n" "magnetischen Nasen sich gegenseitig\n" "abstoßen."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Eneco_1[] = _( + "ENECO jagt spielerisch seinen eigenen\n" + "Schweif. In der Wildnis lebt dieses\n" + "POKéMON in den Löchern von Bäumen."); +static const u8 DexDescription_Eneco_2[] = _( + "Es ist als Haustier sehr beliebt, da es\n" + "bezaubernd aussieht."); +#else static const u8 DexDescription_Eneco_1[] = _( "ENECO ist davon fasziniert,\n" "Gegenstände zu bewegen und sie zu\n" @@ -2563,7 +4688,17 @@ static const u8 DexDescription_Eneco_1[] = _( static const u8 DexDescription_Eneco_2[] = _( "seinen eigenen Schweif, so dass ihm\n" "schwindlig wird."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Enekoro_1[] = _( + "ENEKORO schläft dort, wo es ihm gefällt\n" + "und hat kein dauerhaftes Nest. Nähern\n" + "sich ihm andere POKéMON, wenn"); +static const u8 DexDescription_Enekoro_2[] = _( + "es schläft, kämpft es nicht mit ihnen,\n" + "sondern zieht weiter."); +#else static const u8 DexDescription_Enekoro_1[] = _( "ENEKORO liebt seine Eigenständigkeit.\n" "So kann es das tun, was es möchte, und\n" @@ -2572,7 +4707,18 @@ static const u8 DexDescription_Enekoro_2[] = _( "Da dieses POKéMON schläft und isst,\n" "wenn es Lust dazu hat, ist sein\n" "Tagesablauf eher zufälliger Natur."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Zobiris_1[] = _( + "ZOBIRIS durchwühlt mit seinen scharfen\n" + "Krallen den Erdboden auf der Suche nach\n" + "Steinen, von denen es sich ernährt."); +static const u8 DexDescription_Zobiris_2[] = _( + "Die Substanzen in den Steinen nehmen\n" + "schließlich eine feste Form an und\n" + "gelangen auf seine Körperoberfläche."); +#else static const u8 DexDescription_Zobiris_1[] = _( "ZOBIRIS führt ein ruhiges, \n" "zurückgezogenes Leben tief im Innern\n" @@ -2581,7 +4727,18 @@ static const u8 DexDescription_Zobiris_2[] = _( "gefürchtet, da man sagt, es stehle die\n" "Seelen der Menschen, wenn seine Augen\n" "im Dunkeln Furcht erregend funkeln."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Flunkifer_1[] = _( + "Fall bloß nicht auf das hübsche Gesicht\n" + "dieses POKéMON herein - es ist sehr ge-\n" + "fährlich. FLUNKIFER lenkt seine Feinde"); +static const u8 DexDescription_Flunkifer_2[] = _( + "ab und schlägt dann mit seinem massiven\n" + "Kiefer zu. Seine kräftigen Stahlkiefer\n" + "sind eigentlich umgewandelte Hörner."); +#else static const u8 DexDescription_Flunkifer_1[] = _( "FLUNKIFERs sagenhafte Kiefer sind\n" "eigentlich umgewandelte Stahlhörner.\n" @@ -2590,7 +4747,18 @@ static const u8 DexDescription_Flunkifer_2[] = _( "dient dazu, seinen Gegner in Sicherheit\n" "zu wiegen, so dass er unaufmerksam\n" "wird. Dann schnappt es zu!"); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Stollunior_1[] = _( + "STOLLUNIORs Körper besteht aus Stahl.\n" + "Mit 1 Schlag kann dieses POKéMON einen\n" + "Schwerlasttransporter demolieren."); +static const u8 DexDescription_Stollunior_2[] = _( + "Der Lastwagen stellt danach eine\n" + "handliche Mahlzeit für dieses POKéMON\n" + "dar."); +#else static const u8 DexDescription_Stollunior_1[] = _( "Dieses POKéMON hat einen Körper aus\n" "Stahl. STOLLUNIOR ernährt sich von\n" @@ -2598,7 +4766,17 @@ static const u8 DexDescription_Stollunior_1[] = _( static const u8 DexDescription_Stollunior_2[] = _( "richtet es großen Schaden an, weil es\n" "Brücken und Bahngleise auffrisst."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Stollrak_1[] = _( + "STOLLRAK ernährt sich von Eisen, das in\n" + "Steinen und Wasser enthalten ist. Es \n" + "baut sein Nest in Bergen, in denen"); +static const u8 DexDescription_Stollrak_2[] = _( + "Eisenerz abgebaut wird. Es gerät dabei\n" + "häufig mit Bergarbeitern in Konflikt."); +#else static const u8 DexDescription_Stollrak_1[] = _( "STOLLRAK temperiert seinen Körper,\n" "indem es ausgesprochen nahrhaftes \n" @@ -2607,7 +4785,18 @@ static const u8 DexDescription_Stollrak_2[] = _( "aufgebläht ist. Dieses POKéMON baut\n" "sein Nest in der Nähe von Quellen, aus\n" "denen köstliches Wasser sprudelt."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Stolloss_1[] = _( + "STOLLOSS geht erstaunlicherweise sehr\n" + "behutsam mit der Umwelt um. Wenn sein\n" + "Berg von einem Erdrutsch oder einem"); +static const u8 DexDescription_Stolloss_2[] = _( + "Feuer verwüstet wurde, schleppt es\n" + "Erde in das Gebiet, pflanzt Bäume an und\n" + "richtet sein Territorium wieder her."); +#else static const u8 DexDescription_Stolloss_1[] = _( "STOLLOSS nennt einen ganzen Berg sein\n" "Territorium. Gnadenlos schlägt es jeden\n" @@ -2615,7 +4804,17 @@ static const u8 DexDescription_Stolloss_1[] = _( static const u8 DexDescription_Stolloss_2[] = _( "Dieses POKéMON behält sein Territorium\n" "jederzeit im Auge."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Meditie_1[] = _( + "MEDITIE erhöht seine Energie durch\n" + "Meditation. Es lebt von nur einer Beere\n" + "am Tag. Diese absolut reduzierte"); +static const u8 DexDescription_Meditie_2[] = _( + "Ernährung ist Bestandteil seines \n" + "Trainings."); +#else static const u8 DexDescription_Meditie_1[] = _( "MEDITIE unterzieht sich einem\n" "strikten mentalen Training tief in den\n" @@ -2624,7 +4823,18 @@ static const u8 DexDescription_Meditie_2[] = _( "jedoch immer seine Konzentration.\n" "Deshalb wird sein Training niemals\n" "ein Ende haben."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Meditalis_1[] = _( + "Mittels Meditation hat MEDITALIS\n" + "seinen sechsten Sinn entwickelt. So\n" + "kann es seine psychokinetischen"); +static const u8 DexDescription_Meditalis_2[] = _( + "Kräfte nutzen. Dieses POKéMON\n" + "meditiert einen ganzen Monat ohne\n" + "etwas zu essen."); +#else static const u8 DexDescription_Meditalis_1[] = _( "Mittels Meditation erhöht MEDITALIS\n" "seine Körperenergie und schärft seinen\n" @@ -2632,7 +4842,18 @@ static const u8 DexDescription_Meditalis_1[] = _( static const u8 DexDescription_Meditalis_2[] = _( "verbirgt sich, indem es eins mit den\n" "Feldern und Bergen wird."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Frizelbliz_1[] = _( + "FRIZELBLIZ rennt so schnell, dass\n" + "das menschliche Auge es nicht\n" + "wahrnehmen kann. Die Reibung,"); +static const u8 DexDescription_Frizelbliz_2[] = _( + "die dabei entsteht, wandelt es in\n" + "Elektrizität um, die es in seinem Fell\n" + "speichert."); +#else static const u8 DexDescription_Frizelbliz_1[] = _( "FRIZELBLIZ speichert Elektrizität in\n" "seiner langen Körperbehaarung. Dieses\n" @@ -2641,7 +4862,16 @@ static const u8 DexDescription_Frizelbliz_2[] = _( "Beinmuskulatur durch Stromstöße.\n" "Dadurch ist es in der Lage, explosiv\n" "zu beschleunigen."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Voltenso_1[] = _( + "VOLTENSO sammelt Elektrizität aus\n" + "der Atmosphäre in seiner Mähne und\n" + "entlädt diese. Dieses POKéMON erzeugt"); +static const u8 DexDescription_Voltenso_2[] = _( + "Gewitterwolken über seinem Kopf."); +#else static const u8 DexDescription_Voltenso_1[] = _( "VOLTENSO entlädt ständig Elektrizität\n" "aus seiner Mähne. Es fliegen dabei\n" @@ -2649,7 +4879,16 @@ static const u8 DexDescription_Voltenso_1[] = _( static const u8 DexDescription_Voltenso_2[] = _( "führen. In einem Kampf erzeugt dieses\n" "POKéMON Gewitterwolken."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Plusle_1[] = _( + "Wenn PLUSLE seinen Partner anfeuert,\n" + "sprüht es Funken aus seinem Körper.\n" + "Wenn sein Partner verliert, brüllt dieses"); +static const u8 DexDescription_Plusle_2[] = _( + "POKéMON laut."); +#else static const u8 DexDescription_Plusle_1[] = _( "PLUSLE dient seinen Artgenossen als\n" "Cheerleader. Wenn ein Teamkamerad\n" @@ -2657,7 +4896,17 @@ static const u8 DexDescription_Plusle_1[] = _( static const u8 DexDescription_Plusle_2[] = _( "das prasselnde Geräusch von Funken, um\n" "so seine Freude zu zeigen."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Minun_1[] = _( + "MINUN liebt es, seinen Partner im Kampf\n" + "anzufeuern. Dabei sprüht es Funken aus\n" + "seinem Körper. Wenn sein Partner in"); +static const u8 DexDescription_Minun_2[] = _( + "Schwierigkeiten gerät, sprüht es immer\n" + "mehr Funken."); +#else static const u8 DexDescription_Minun_1[] = _( "MINUN kümmert sich mehr um das\n" "Anfeuern seiner Partner als um seine\n" @@ -2666,7 +4915,18 @@ static const u8 DexDescription_Minun_2[] = _( "Elektrizität in seinem Körper dazu,\n" "einen Funkenregen zu erzeugen und\n" "seine Teamkameraden anzufeuern."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Volbeat_1[] = _( + "VOLBEATs Schweif leuchtet wie eine\n" + "Glühbirne. Zusammen mit anderen \n" + "VOLBEAT malt es mit seinem Schweif"); +static const u8 DexDescription_Volbeat_2[] = _( + "geometrische Figuren an den Nacht-\n" + "himmel. Dieses POKéMON liebt den von\n" + "ILLUMISE verströmten Duft."); +#else static const u8 DexDescription_Volbeat_1[] = _( "Wenn es Nacht wird, beginnt VOLBEATs\n" "Schweif zu leuchten. Es kommuniziert\n" @@ -2675,7 +4935,17 @@ static const u8 DexDescription_Volbeat_2[] = _( "und das Blinken dieses Lichts reguliert.\n" "Dieses POKéMON wird vom süßen Duft\n" "der ILLUMISE angezogen."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Illumise_1[] = _( + "ILLUMISE leitet einen Schwarm VOLBEAT\n" + "an, wenn sie Zeichen an den Nachthimmel\n" + "malen. Je komplexer diese werden, desto"); +static const u8 DexDescription_Illumise_2[] = _( + "mehr Respekt bekommt es von seinen\n" + "Artgenossen."); +#else static const u8 DexDescription_Illumise_1[] = _( "ILLUMISE zieht ganze VOLBEAT-Scharen\n" "mit seinem süßlichen Duft an. Dann\n" @@ -2683,7 +4953,16 @@ static const u8 DexDescription_Illumise_1[] = _( static const u8 DexDescription_Illumise_2[] = _( "Schwarm an, indem es geometrische\n" "Figuren an den Nachthimmel malt."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Roselia_1[] = _( + "Nur sehr selten bekommt man ROSELIA\n" + "mit seinen ungewöhnlich farbigen Blumen\n" + "zu Gesicht. Die Dornen am Kopf dieses"); +static const u8 DexDescription_Roselia_2[] = _( + "POKéMON enthalten ein grausames Gift."); +#else static const u8 DexDescription_Roselia_1[] = _( "ROSELIA verschießt scharfe Stacheln\n" "auf jeden Feind, der versucht, die\n" @@ -2691,7 +4970,18 @@ static const u8 DexDescription_Roselia_1[] = _( static const u8 DexDescription_Roselia_2[] = _( "Der Duft dieses POKéMON beruhigt\n" "Lebewesen."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Schluppuck_1[] = _( + "SCHLUPPUCKs Körper besteht zum\n" + "größten Teil aus seinem Magen. Sein Herz\n" + "und sein Gehirn sind im Vergleich dazu"); +static const u8 DexDescription_Schluppuck_2[] = _( + "sehr klein. Der Magen dieses POKéMON\n" + "enthält Enzyme, die alles zersetzen\n" + "können."); +#else static const u8 DexDescription_Schluppuck_1[] = _( "Eigentlich besteht SCHLUPPUCKs Körper\n" "nur aus einem Magen. Daher kann es\n" @@ -2700,7 +4990,17 @@ static const u8 DexDescription_Schluppuck_2[] = _( "Größe hat. Sein Magen enthält eine\n" "spezielle Flüssigkeit, die wirklich alles\n" "verdauen kann."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Schlukwech_1[] = _( + "SCHLUKWECH hat keine Zähne. Alles was\n" + "es isst, schluckt es im Ganzen herunter.\n" + "Sein Maul ist so riesig, dass mit"); +static const u8 DexDescription_Schlukwech_2[] = _( + "Leichtigkeit ein Autoreifen hinein-\n" + "passen würde."); +#else static const u8 DexDescription_Schlukwech_1[] = _( "Wenn SCHLUKWECH Beute sichtet,\n" "verspritzt es eine höchst giftige\n" @@ -2709,7 +5009,17 @@ static const u8 DexDescription_Schlukwech_2[] = _( "besprüht damit sein Ziel. Wenn die Beute\n" "geschwächt ist, schluckt es sie mit\n" "seinem riesigen Maul im Ganzen herunter."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Kanivanha_1[] = _( + "Wenn jemand KANIVANHAs Revier betritt,\n" + "schwärmt es aus und schnappt mit\n" + "seinen spitzen Zähnen nach dem"); +static const u8 DexDescription_Kanivanha_2[] = _( + "Eindringling. Wenn es allein ist, ist\n" + "dieses POKéMON sehr scheu."); +#else static const u8 DexDescription_Kanivanha_1[] = _( "KANIVANHAs starke Kiefer und seine\n" "spitzen Zähne verfügen über die \n" @@ -2717,7 +5027,17 @@ static const u8 DexDescription_Kanivanha_1[] = _( static const u8 DexDescription_Kanivanha_2[] = _( "verschlingen zu können. Dieses POKéMON\n" "hat schon viele Boote versenkt."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Tohaido_1[] = _( + "TOHAIDO kann bis zu 120 km/h schnell\n" + "schwimmen, indem es Meerwasser aus\n" + "seinem Hinterteil herausschießt."); +static const u8 DexDescription_Tohaido_2[] = _( + "Dieses POKéMON kann jedoch nicht sehr\n" + "weite Strecken zurücklegen."); +#else static const u8 DexDescription_Tohaido_1[] = _( "TOHAIDO trägt den Spitznamen\n" "“Tyrann des Meeres” und ist\n" @@ -2726,7 +5046,17 @@ static const u8 DexDescription_Tohaido_2[] = _( "wachsen sofort nach, wenn sie\n" "ausgebrochen sind. Es kann sogar einen\n" "Öltanker zerreißen."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Wailmer_1[] = _( + "WAILMER kann Wasser in seinem Körper\n" + "speichern, um sich in einen Ball zu\n" + "verwandeln und herumzuhüpfen."); +static const u8 DexDescription_Wailmer_2[] = _( + "Wenn es die Wassermenge steigert, kann\n" + "dieses POKéMON noch höher hüpfen."); +#else static const u8 DexDescription_Wailmer_1[] = _( "WAILMERs Nasenlöcher liegen über\n" "seinen Augen. Dieses verspielte\n" @@ -2735,7 +5065,18 @@ static const u8 DexDescription_Wailmer_2[] = _( "indem es das Meerwasser, das es in\n" "seinem Körper speichert, mit aller Kraft\n" "herausprustet."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Wailord_1[] = _( + "WAILORD jagt seine Beute, indem es aus\n" + "dem Meer herausspringt und ein gewal-\n" + "tiges Platschen erzeugt. Es ist"); +static const u8 DexDescription_Wailord_2[] = _( + "atemberaubend, eine Gruppe dieses\n" + "POKéMON aus dem Wasser springen zu\n" + "sehen."); +#else static const u8 DexDescription_Wailord_1[] = _( "WAILORD ist bisher das größte aller\n" "identifizierten POKéMON. Es schwimmt\n" @@ -2743,7 +5084,17 @@ static const u8 DexDescription_Wailord_1[] = _( static const u8 DexDescription_Wailord_2[] = _( "mit seinem enormen Maul riesige Mengen\n" "an Nahrung auf."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Camaub_1[] = _( + "CAMAUB speichert fast 1200 Grad heißes\n" + "Magma in seinem Körper. Wenn es nass\n" + "wird, kühlt das Magma ab und wird hart."); +static const u8 DexDescription_Camaub_2[] = _( + "Dadurch wird der Körper dieses POKéMON\n" + "schwer und seine Bewegungen träge."); +#else static const u8 DexDescription_Camaub_1[] = _( "CAMAUB ist nicht besonders helle. Es\n" "nimmt nicht einmal wahr, wenn es\n" @@ -2752,7 +5103,17 @@ static const u8 DexDescription_Camaub_2[] = _( "allerdings kann es nicht einmal eine\n" "Sekunde lang aushalten. In seinem\n" "Körper brodelt glühend heißes Magma."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Camerupt_1[] = _( + "Die Höcker auf CAMERUPTs Rücken sind\n" + "durch eine Transformation seiner\n" + "Knochen entstanden. Hin und wieder"); +static const u8 DexDescription_Camerupt_2[] = _( + "stoßen sie Magma aus. Dieses POKéMON\n" + "bricht häufig aus, wenn es wütend ist."); +#else static const u8 DexDescription_Camerupt_1[] = _( "CAMERUPT trägt einen Vulkan in seinem\n" "Körper. 10.000 Grad heißes Magma fließt\n" @@ -2760,7 +5121,17 @@ static const u8 DexDescription_Camerupt_1[] = _( static const u8 DexDescription_Camerupt_2[] = _( "seinem Rücken aus und verspucken \n" "glühend heißes Magma."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Qurtel_1[] = _( + "QURTEL erzeugt Energie, indem es Kohle\n" + "verbrennt. Wenn das Feuer nachlässt,\n" + "wird es schwächer."); +static const u8 DexDescription_Qurtel_2[] = _( + "In der Vorbereitung auf einen Kampf\n" + "verbrennt dieses POKéMON mehr Kohle."); +#else static const u8 DexDescription_Qurtel_1[] = _( "QURTEL schaufelt sich auf der Suche\n" "nach Kohle durch die Berge. Wenn es\n" @@ -2769,7 +5140,17 @@ static const u8 DexDescription_Qurtel_2[] = _( "seines Panzers mit Kohle und verbrennt\n" "diese. Wenn es angegriffen wird, stößt\n" "es dicken schwarzen Rauch aus."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Spoink_1[] = _( + "SPOINK trägt eine Perle auf seinem\n" + "Kopf, die seine psychokinetische\n" + "Energie verstärkt. Deshalb ist es"); +static const u8 DexDescription_Spoink_2[] = _( + "dauernd auf der Suche nach einer\n" + "größeren Perle."); +#else static const u8 DexDescription_Spoink_1[] = _( "SPOINK hüpft auf seinem Schweif durch\n" "die Gegend. Die Erschütterung des\n" @@ -2778,7 +5159,18 @@ static const u8 DexDescription_Spoink_2[] = _( "Deshalb kann dieses POKéMON das Hüpfen\n" "nicht sein lassen, ansonsten würde sein\n" "Herz aufhören zu schlagen."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Groink_1[] = _( + "GROINK benutzt die schwarzen Perlen\n" + "an seinem Körper, um seine fantas-\n" + "tischen Kräfte nutzen zu können. Dabei"); +static const u8 DexDescription_Groink_2[] = _( + "tanzt es sonderbar. Die schwarzen\n" + "Perlen dieses POKéMON sind wahre\n" + "Kunstwerke und ebenso wertvoll."); +#else static const u8 DexDescription_Groink_1[] = _( "GROINK benutzt die schwarzen Perlen\n" "an seinem Körper dazu, die\n" @@ -2787,14 +5179,35 @@ static const u8 DexDescription_Groink_2[] = _( "Wenn es diese spezielle Fähigkeit nutzt,\n" "wird sein schnaubender Atem\n" "schwerfällig."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Pandir_1[] = _( + "Jedes PANDIR trägt ein einzigartiges \n" + "Fleckenmuster auf seiner Haut. Dieses\n" + "POKéMON bewegt sich höchst seltsam."); +static const u8 DexDescription_Pandir_2[] = _( + "Es schwankt und stolpert, als wäre ihm\n" + "schwindlig. Seine schlingernden Bewe-\n" + "gungen verwirren seine Gegner."); +#else static const u8 DexDescription_Pandir_1[] = _( "Jedes PANDIR auf der Welt soll ein\n" "einzigartiges Fleckenmuster haben. Der\n" "schwankende Gang dieses POKéMON"); static const u8 DexDescription_Pandir_2[] = _( "erweckt den Eindruck, es würde tanzen."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Knacklion_1[] = _( + "KNACKLION ist ein geduldiger Jäger. Es\n" + "gräbt in einer Wüste eine tiefe Grube\n" + "und wartet auf Beute, die hineinfällt."); +static const u8 DexDescription_Knacklion_2[] = _( + "Dieses POKéMON kommt eine ganze Woche\n" + "ohne Wasser aus."); +#else static const u8 DexDescription_Knacklion_1[] = _( "KNACKLIONs Bau ist eine Art in den Sand\n" "gegrabener Kessel. Dieses POKéMON\n" @@ -2803,7 +5216,17 @@ static const u8 DexDescription_Knacklion_2[] = _( "seinen Bau zu werfen. Seine gigan-\n" "tischen Kiefer verfügen über genügend\n" "Kraft, um einen Felsen zu zerquetschen."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Vibrava_1[] = _( + "VIBRAVAs Flügel sind noch nicht ganz\n" + "ausgewachsen. Für lange Strecken sind\n" + "seine Flügel weniger geeignet."); +static const u8 DexDescription_Vibrava_2[] = _( + "Aber es kann mit ihnen Ultraschallwellen\n" + "erzeugen, wenn es sie vibrieren lässt."); +#else static const u8 DexDescription_Vibrava_1[] = _( "Um seine Beute zu schwächen, erzeugt\n" "VIBRAVA Ultraschallwellen, indem es\n" @@ -2812,7 +5235,18 @@ static const u8 DexDescription_Vibrava_2[] = _( "Die Ultraschallwellen dieses POKéMON \n" "sind so stark, dass sie bei Menschen\n" "Kopfschmerzen verursachen können."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Libelldra_1[] = _( + "LIBELLDRA wirbelt einen Sandsturm auf,\n" + "wenn es mit den Flügeln schlägt. Seine\n" + "Flügel erzeugen dabei Töne, die wie"); +static const u8 DexDescription_Libelldra_2[] = _( + "Gesang klingen. Da dieser “Gesang” das\n" + "Einzige ist, was man in einem Sandsturm\n" + "hört, wird es auch Wüstengeist genannt."); +#else static const u8 DexDescription_Libelldra_1[] = _( "LIBELLDRA wird auch “Geist der\n" "Wüste” genannt. Da seine flatternden\n" @@ -2820,7 +5254,17 @@ static const u8 DexDescription_Libelldra_1[] = _( static const u8 DexDescription_Libelldra_2[] = _( "dieses POKéMON beim Fliegen immer\n" "von einem Sandsturm umgeben."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Tuska_1[] = _( + "Je trockener und trostloser seine\n" + "Umgebung ist, desto schöner und\n" + "duftender wird TUSKAs Blume."); +static const u8 DexDescription_Tuska_2[] = _( + "Dieses POKéMON schwingt im Kampf wild\n" + "mit seinen dornigen Armen."); +#else static const u8 DexDescription_Tuska_1[] = _( "TUSKA lebt an trockenen Orten, z. B. in\n" "Wüsten. Es versprüht einen starken\n" @@ -2829,7 +5273,18 @@ static const u8 DexDescription_Tuska_2[] = _( "anzuziehen. Wenn sich Beute nähert,\n" "verschießt es scharfe Stacheln, um\n" "seinen Gegner zu überwältigen."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Noktuska_1[] = _( + "Wenn ein Reisender mitten in der Nacht\n" + "durch eine Wüste wandert, folgt \n" + "NOKTUSKA ihm und spielt ihm Streiche."); +static const u8 DexDescription_Noktuska_2[] = _( + "Dann wartet dieses POKéMON darauf,\n" + "dass der Reisende müde wird und sich\n" + "nicht mehr bewegen kann."); +#else static const u8 DexDescription_Noktuska_1[] = _( "Am Tage bleibt NOKTUSKA reglos, damit es\n" "in der brennenden Wüstenhitze keine\n" @@ -2837,7 +5292,18 @@ static const u8 DexDescription_Noktuska_1[] = _( static const u8 DexDescription_Noktuska_2[] = _( "Dieses POKéMON wird bei Nacht aktiv,\n" "wenn die Temperatur sinkt."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Wablu_1[] = _( + "WABLU liebt es, Dinge zu putzen. Wenn\n" + "es etwas Schmutziges bemerkt, fängt\n" + "es an, dieses mit seinen weichen"); +static const u8 DexDescription_Wablu_2[] = _( + "Flügeln zu putzen. Wenn seine Flügel\n" + "dreckig werden, sucht sich dieses\n" + "POKéMON einen Fluss und duscht sich ab."); +#else static const u8 DexDescription_Wablu_1[] = _( "WABLU hat leichte, flauschige Flügel,\n" "die wie Schäfchenwolken aussehen.\n" @@ -2846,7 +5312,17 @@ static const u8 DexDescription_Wablu_2[] = _( "Menschen. Es landet auf ihren Köpfen \n" "und bleibt dort sitzen wie ein \n" "wattierter Hut."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Altaria_1[] = _( + "ALTARIA hat eine tolle Sopran-Stimme.\n" + "Seine Flügel sehen aus wie Schäfchen-\n" + "wolken. Dieses POKéMON stürzt sich"); +static const u8 DexDescription_Altaria_2[] = _( + "in einen Aufwind und steigt in den\n" + "Himmel empor."); +#else static const u8 DexDescription_Altaria_1[] = _( "ALTARIA tanzt und dreht sich in der\n" "Luft durch viele Schäfchenwolken.\n" @@ -2855,7 +5331,18 @@ static const u8 DexDescription_Altaria_2[] = _( "Stimme Melodien singt, versetzt es\n" "seine Zuhörer in verträumtes\n" "Erstaunen."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Sengo_1[] = _( + "SENGO bewegt sich normalerweise auf\n" + "allen Vieren. Wenn es aber wütend wird, \n" + "stellt es sich auf seine Hinterbeine und"); +static const u8 DexDescription_Sengo_2[] = _( + "fährt seine Klauen aus. Dieses POKéMON\n" + "ist seit Generationen ein erbitterter\n" + "Rivale von VIPITIS."); +#else static const u8 DexDescription_Sengo_1[] = _( "Die Erinnerungen an den Kampf mit\n" "seinem Erzrivalen VIPITIS haben sich in\n" @@ -2864,7 +5351,18 @@ static const u8 DexDescription_Sengo_2[] = _( "eingebrannt. Dieses POKéMON weicht\n" "feindlichen Angriffen unheimlich\n" "raffiniert und geschickt aus."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Vipitis_1[] = _( + "VIPITIS kann mit seinem Schweif\n" + "Feinden einen Hieb versetzen und sie\n" + "mit einem abgesonderten Gift"); +static const u8 DexDescription_Vipitis_2[] = _( + "bespritzen. Dieses POKéMON wird in der\n" + "langwährenden Blutsfehde mit SENGO\n" + "nicht nachgeben."); +#else static const u8 DexDescription_Vipitis_1[] = _( "VIPITIS lebt seit Generationen in\n" "Fehde mit SENGO. Die Narben auf\n" @@ -2873,7 +5371,18 @@ static const u8 DexDescription_Vipitis_2[] = _( "Kämpfe. Dieses POKéMON greift seine\n" "Gegner mit seinem scharfkantigen\n" "Schweif an."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Lunastein_1[] = _( + "LUNASTEIN wird bei Vollmond aktiv.\n" + "Es läuft nicht, sondern schwebt\n" + "durch die Luft."); +static const u8 DexDescription_Lunastein_2[] = _( + "Die bedrohlichen roten Augen dieses\n" + "POKéMON lassen alle, die es sehen,\n" + "vor Angst erstarren."); +#else static const u8 DexDescription_Lunastein_1[] = _( "LUNASTEIN wurde in der Nähe eines\n" "Meteoritenkraters entdeckt. Daher\n" @@ -2882,7 +5391,18 @@ static const u8 DexDescription_Lunastein_2[] = _( "dieses POKéMON aus dem Weltall stammt.\n" "Diese Theorie konnte allerdings bisher\n" "noch nicht belegt werden."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Sonnfel_1[] = _( + "Aus Sonnenlicht zieht SONNFEL seine\n" + "Energie. Es kann angeblich die Emotio-\n" + "nen anderer sehen."); +static const u8 DexDescription_Sonnfel_2[] = _( + "Dieses POKéMON gibt eine starke Hitze\n" + "ab, wenn es sich um die eigene Achse\n" + "dreht."); +#else static const u8 DexDescription_Sonnfel_1[] = _( "SONNFEL ist eine neue POKéMON-Spezies,\n" "die angeblich aus dem Weltall\n" @@ -2891,7 +5411,18 @@ static const u8 DexDescription_Sonnfel_2[] = _( "Luft und bewegt sich leise. Im Kampf\n" "setzt dieses POKéMON sehr helles Licht\n" "ein."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Schmerbe_1[] = _( + "SCHMERBEs Körper ist mit einem\n" + "schleimigen Film bedeckt. Wenn ein\n" + "Gegner es packen will, entgeht es"); +static const u8 DexDescription_Schmerbe_2[] = _( + "seinem Griff. Dieses POKéMON wird\n" + "geschwächt, wenn sein schleimiger\n" + "Überzug austrocknet."); +#else static const u8 DexDescription_Schmerbe_1[] = _( "SCHMERBEs empfindliche Barthaare\n" "dienen ihm als hervorragendes\n" @@ -2900,7 +5431,17 @@ static const u8 DexDescription_Schmerbe_2[] = _( "sich im Schlamm, so dass nur noch seine\n" "Barthaare herausgucken, und wartet\n" "auf Beute."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Welsar_1[] = _( + "Wenn WELSAR auf einen wilden Beute-\n" + "zug geht, erzeugt es ein Beben mit \n" + "einem Radius von 5 Kilometern."); +static const u8 DexDescription_Welsar_2[] = _( + "Dieses POKéMON kann wirkliche Erdbeben\n" + "voraussehen."); +#else static const u8 DexDescription_Welsar_1[] = _( "WELSAR legt viel Wert auf sein\n" "Territorium. Ein einzelnes POKéMON\n" @@ -2909,7 +5450,18 @@ static const u8 DexDescription_Welsar_2[] = _( "Wenn sich ein Feind nähert, schlägt es\n" "um sich und verursacht ein gewaltiges\n" "Erdbeben."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Krebscorps_1[] = _( + "KREBSCORPS fängt seine Beute mit\n" + "seinen scharfen Krallen. Es hat keine\n" + "besonderen Ansprüche an seine"); +static const u8 DexDescription_Krebscorps_2[] = _( + "Nahrung, es frisst einfach alles.\n" + "Dieses POKéMON lebt gern in\n" + "schmutzigem Wasser."); +#else static const u8 DexDescription_Krebscorps_1[] = _( "KREBSCORPS ist kein heimisches\n" "POKéMON, sondern wurde als Haustier\n" @@ -2918,7 +5470,18 @@ static const u8 DexDescription_Krebscorps_2[] = _( "Dieses POKéMON ist mittlerweile sehr\n" "robust und hat seine Population\n" "vergrößert."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Krebutack_1[] = _( + "KREBUTACK legt seine Schale regelmäßig\n" + "ab. Direkt danach ist seine Schale weich\n" + "und empfindlich. Bis sie gehärtet"); +static const u8 DexDescription_Krebutack_2[] = _( + "ist, sucht es sich ein Versteck in einem\n" + "Flussbett, damit es nicht von Gegnern\n" + "angegriffen wird."); +#else static const u8 DexDescription_Krebutack_1[] = _( "KREBUTACK ist von Natur aus sehr\n" "gewalttätig, so dass es dauernd andere\n" @@ -2927,7 +5490,17 @@ static const u8 DexDescription_Krebutack_2[] = _( "muss. Andere Lebensformen lehnen es ab,\n" "mit diesem POKéMON in ein und demselben\n" "Teich zu leben."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Puppance_1[] = _( + "Sobald es Artgenossen bemerkt, tut\n" + "sich PUPPANCE mit ihnen zusammen und\n" + "sie brüllen gemeinsam. Dieses POKéMON"); +static const u8 DexDescription_Puppance_2[] = _( + "schläft, während es geschickt auf \n" + "seinem Fuß balanciert."); +#else static const u8 DexDescription_Puppance_1[] = _( "PUPPANCE bewegt sich, indem es sich auf\n" "seinem Fuß im Kreis dreht. In sehr alten\n" @@ -2935,7 +5508,17 @@ static const u8 DexDescription_Puppance_1[] = _( static const u8 DexDescription_Puppance_2[] = _( "entdeckt, die dieses POKéMON in\n" "Begleitung von Menschen zeigen."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Lepumentas_1[] = _( + "LEPUMENTAS ist ein Rätsel um eine Ton-\n" + "statue, die vor 20.000 Jahren von einer\n" + "antiken Zivilisation geschaffen wurde."); +static const u8 DexDescription_Lepumentas_2[] = _( + "Dieses POKéMON verschießt Strahlen aus\n" + "beiden Händen."); +#else static const u8 DexDescription_Lepumentas_1[] = _( "LEPUMENTAS sind aus Schlamm gefertigte\n" "Puppen, die von primitiven Menschen\n" @@ -2944,7 +5527,17 @@ static const u8 DexDescription_Lepumentas_2[] = _( "Strahlen zum Leben erweckt wurden.\n" "Diese POKéMON bewegen sich\n" "schwebend fort."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Liliep_1[] = _( + "LILIEP ist ein antikes POKéMON, das aus\n" + "einem Fossil erzeugt wurde. Es bleibt\n" + "ständig an einem Felsen verankert."); +static const u8 DexDescription_Liliep_2[] = _( + "Mit seinen beiden Augen hält es ständig\n" + "Ausschau nach Beute."); +#else static const u8 DexDescription_Liliep_1[] = _( "Von LILIEP nahm man an, es sei seit\n" "etwa hundert Millionen Jahren\n" @@ -2953,7 +5546,17 @@ static const u8 DexDescription_Liliep_2[] = _( "Blütenblätter geformten Tentakeln\n" "heftet es sich an einen Felsen auf dem\n" "Meeresboden und fängt Beute."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Wielie_1[] = _( + "WIELIEs Körper dient ihm als Anker und\n" + "schützt ihn davor, in die stürmische\n" + "See gespült zu werden. Dieses POKéMON"); +static const u8 DexDescription_Wielie_2[] = _( + "sondert eine starke Verdauungsflüssig-\n" + "keit aus seinen Tentakeln ab."); +#else static const u8 DexDescription_Wielie_1[] = _( "WIELIE durchforstet den Meeresboden\n" "nach Beute. Dieses POKéMON fährt\n" @@ -2961,7 +5564,17 @@ static const u8 DexDescription_Wielie_1[] = _( static const u8 DexDescription_Wielie_2[] = _( "und fängt mit seinen acht Tentakeln\n" "Beute."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Anorith_1[] = _( + "ANORITH soll ein POKéMON-Vorgänger\n" + "sein, es hat acht Flügel an seinem\n" + "Körper. Dieses POKéMON schwamm im"); +static const u8 DexDescription_Anorith_2[] = _( + "Urmeer, indem es seine acht Flügel\n" + "schwang."); +#else static const u8 DexDescription_Anorith_1[] = _( "ANORITH wurde aus einem\n" "prähistorischen Fossil erzeugt. Dieses\n" @@ -2970,7 +5583,17 @@ static const u8 DexDescription_Anorith_2[] = _( "Gewässern. Es klemmt seine Beute\n" "fest zwischen seine beiden riesigen\n" "Klauen ein."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Armaldo_1[] = _( + "ARMALDO ist eine POKéMON-Spezies, die\n" + "vor vielen Jahren ausgestorben ist.\n" + "Dieses POKéMON soll sich auf seinen"); +static const u8 DexDescription_Armaldo_2[] = _( + "Hinterbeinen fortbewegt haben, da dies\n" + "für das Leben an Land bequemer war."); +#else static const u8 DexDescription_Armaldo_1[] = _( "Von ARMALDOs hartem Panzer prallen\n" "alle Angriffe ab. Dieses POKéMON\n" @@ -2979,7 +5602,17 @@ static const u8 DexDescription_Armaldo_2[] = _( "ausfahren oder einziehen kann. Es hat\n" "so viel Kraft, dass es damit eine\n" "Stahlplatte pulverisieren kann."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Barschwa_1[] = _( + "Obwohl BARSCHWAs Körper zerfetzt ist,\n" + "besitzt es eine harte und zähe Lebens-\n" + "kraft, so dass es überall leben kann."); +static const u8 DexDescription_Barschwa_2[] = _( + "Aber dieses POKéMON ist langsam und\n" + "dusselig. Daher ist es leicht zu fangen."); +#else static const u8 DexDescription_Barschwa_1[] = _( "BARSCHWAs Flossen waren schon immer\n" "zerfetzt. Wegen seines merkwürdigen\n" @@ -2987,7 +5620,17 @@ static const u8 DexDescription_Barschwa_1[] = _( static const u8 DexDescription_Barschwa_2[] = _( "weitgehend ignoriert. Es kann sowohl im\n" "Meer als auch in Flüssen leben."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Milotic_1[] = _( + "MILOTIC lebt auf dem Grund großer Seen.\n" + "Wenn dieses POKéMON rosa leuchtet,\n" + "gibt es eine Energiewelle ab, die einem"); +static const u8 DexDescription_Milotic_2[] = _( + "rastlosen Geist wohltuende Ruhe\n" + "verschaffen kann."); +#else static const u8 DexDescription_Milotic_1[] = _( "MILOTIC soll das Schönste aller\n" "POKéMON sein. Es hat die Macht,\n" @@ -2995,7 +5638,17 @@ static const u8 DexDescription_Milotic_1[] = _( static const u8 DexDescription_Milotic_2[] = _( "besänftigen und somit erbitterten\n" "Streit zu vermeiden."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Formeo_1[] = _( + "FORMEO bedient sich der Kraft der\n" + "Natur, um die Gestalt der Sonne, von\n" + "Regen- oder Schneewolken anzunehmen."); +static const u8 DexDescription_Formeo_2[] = _( + "Die Gefühlslage dieses POKéMON\n" + "verändert sich mit dem Wetter."); +#else static const u8 DexDescription_Formeo_1[] = _( "FORMEOs Erscheinung ändert sich\n" "mit dem Wetter. Dieses POKéMON hat\n" @@ -3003,7 +5656,18 @@ static const u8 DexDescription_Formeo_1[] = _( static const u8 DexDescription_Formeo_2[] = _( "Kraft der Natur zu nutzen, um seinen\n" "winzigen Körper zu schützen."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Kecleon_1[] = _( + "KECLEON verändert seine Körper-\n" + "färbung, um sich seiner Umgebung\n" + "anzupassen. Dadurch kann es sich"); +static const u8 DexDescription_Kecleon_2[] = _( + "prima an seine ahnungslose Beute an-\n" + "schleichen. Es schlägt mit seiner dehn-\n" + "baren, langen Zunge aus und fängt sie."); +#else static const u8 DexDescription_Kecleon_1[] = _( "KECLEON kann die Farbe seines Körpers\n" "bei Bedarf verändern, um sich seiner\n" @@ -3011,7 +5675,18 @@ static const u8 DexDescription_Kecleon_1[] = _( static const u8 DexDescription_Kecleon_2[] = _( "eine Ausnahme: Das Zickzackmuster auf\n" "seinem Bauch kann es nicht verändern."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Shuppet_1[] = _( + "SHUPPET wächst, indem es sich von\n" + "düsteren Gefühlen wie Rachsucht und\n" + "Neid ernährt."); +static const u8 DexDescription_Shuppet_2[] = _( + "Es streift durch Städte und sucht nach\n" + "Empfindungen, die als Ursache für den\n" + "Verderb der Menschen gelten."); +#else static const u8 DexDescription_Shuppet_1[] = _( "SHUPPET wird durch Gefühle wie Neid und\n" "Rachsucht angezogen. Wenn jemand\n" @@ -3020,7 +5695,18 @@ static const u8 DexDescription_Shuppet_2[] = _( "erscheint dieses POKéMON in Scharen\n" "und reiht sich unter der Dachrinne der\n" "Person auf."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Banette_1[] = _( + "Die Energie eines Fluchs durchdrang\n" + "die Füllung einer weggeworfenen und\n" + "vergessenen Plüschpuppe und erweckte"); +static const u8 DexDescription_Banette_2[] = _( + "BANETTE zum Leben. Die Energie dieses\n" + "POKéMON würde entweichen, wenn es\n" + "seinen Mund öffnen sollte."); +#else static const u8 DexDescription_Banette_1[] = _( "BANETTE belegt andere mit Flüchen,\n" "indem es Nadeln in seinen eigenen\n" @@ -3028,7 +5714,18 @@ static const u8 DexDescription_Banette_1[] = _( static const u8 DexDescription_Banette_2[] = _( "ursprünglich eine Mitleid erregende\n" "Plüschpuppe, die weggeworfen wurde."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Zwirrlicht_1[] = _( + "ZWIRRLICHT wandert verloren durch die\n" + "tiefe Dunkelheit der Nacht. Kinder\n" + "werden oft ermahnt, dass dieses"); +static const u8 DexDescription_Zwirrlicht_2[] = _( + "POKéMON böse Kinder wegzaubert, die\n" + "von ihren Müttern ausgeschimpft \n" + "worden sind."); +#else static const u8 DexDescription_Zwirrlicht_1[] = _( "ZWIRRLICHT kann durch jede Wand gehen,\n" "egal, wie dick diese ist. Wenn dieses\n" @@ -3036,7 +5733,18 @@ static const u8 DexDescription_Zwirrlicht_1[] = _( static const u8 DexDescription_Zwirrlicht_2[] = _( "verfolgt es seinen Feind unnachgiebig\n" "bis zum Sonnenaufgang."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Zwirrklop_1[] = _( + "ZWIRRKLOP absorbiert alles, egal, wie\n" + "groß es auch sein mag. Dieses POKéMON\n" + "hypnotisiert seinen Gegner, indem es"); +static const u8 DexDescription_Zwirrklop_2[] = _( + "auf makabre Weise winkt und sein\n" + "einziges Auge zeigt. Der hypnotisierte\n" + "Gegner führt dann seine Befehle aus."); +#else static const u8 DexDescription_Zwirrklop_1[] = _( "ZWIRRKLOPs Körper ist komplett hohl. Es\n" "wird auch mit einem Schwarzen Loch\n" @@ -3044,7 +5752,18 @@ static const u8 DexDescription_Zwirrklop_1[] = _( static const u8 DexDescription_Zwirrklop_2[] = _( "in seinem Körper auf, es kommt jedoch\n" "nichts wieder heraus."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Tropius_1[] = _( + "Kinder aus den südlichen Tropen essen\n" + "die Früchte, die am Nacken von TROPIUS\n" + "hängen, als Zwischenmahlzeit."); +static const u8 DexDescription_Tropius_2[] = _( + "Dieses POKéMON kann fliegen, indem es\n" + "mit den Blättern auf seinem Rücken\n" + "schlägt, als ob es Flügel wären."); +#else static const u8 DexDescription_Tropius_1[] = _( "Die Früchte am Nacken von TROPIUS\n" "sind bei Kindern sehr beliebt. Dieses\n" @@ -3053,7 +5772,18 @@ static const u8 DexDescription_Tropius_2[] = _( "ständig. Offensichtlich sind ihm wegen\n" "dieser Vorliebe selber Früchte\n" "gewachsen."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Palimpalim_1[] = _( + "Bei starkem Wind hängt sich\n" + "PALIMPALIM an einen Ast oder an die\n" + "Dachrinne eines Gebäudes, wobei es eine"); +static const u8 DexDescription_Palimpalim_2[] = _( + "Saugkappe auf seinem Kopf benutzt.\n" + "Das POKéMON pflückt mit seinem langen\n" + "Schweif Beeren und verspeist sie."); +#else static const u8 DexDescription_Palimpalim_1[] = _( "PALIMPALIMs Schreie hallen durch\n" "seinen hohlen Körper. Wenn dieses\n" @@ -3062,7 +5792,17 @@ static const u8 DexDescription_Palimpalim_2[] = _( "seine Schreie Ultraschallwellen, die\n" "seine Feinde buchstäblich wegfegen\n" "können."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Absol_1[] = _( + "ABSOL kann bevorstehende Natur-\n" + "katastrophen voraussagen. Es lebt auf\n" + "einem kargen, zerklüfteten Berg."); +static const u8 DexDescription_Absol_2[] = _( + "Dieses POKéMON wagt sich nur sehr\n" + "selten ins Tal herunter."); +#else static const u8 DexDescription_Absol_1[] = _( "Jedes Mal, wenn ABSOL sich den Menschen\n" "zeigt, endet dies in einer Katastrophe\n" @@ -3070,7 +5810,17 @@ static const u8 DexDescription_Absol_1[] = _( static const u8 DexDescription_Absol_2[] = _( "Deswegen ist es auch als das\n" "Katastrophen-POKéMON bekannt."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Isso_1[] = _( + "ISSO sammeln sich in Mondnächten,\n" + "um sich gegenseitig zu quetschen.\n" + "Dadurch gewinnt dieses POKéMON an"); +static const u8 DexDescription_Isso_2[] = _( + "Ausdauer und kann wirkungsvolle \n" + "Gegenangriffe trainieren."); +#else static const u8 DexDescription_Isso_1[] = _( "ISSO hat immer ein breites, fröhliches\n" "Lächeln auf seinem Gesicht. Um \n" @@ -3079,7 +5829,18 @@ static const u8 DexDescription_Isso_2[] = _( "man seinen Schweif betrachten. Wenn es\n" "wütend ist, schlägt es damit auf den\n" "Boden."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Schneppke_1[] = _( + "SCHNEPPKE kann überleben, indem es nur\n" + "Schnee und Eis zu sich nimmt. Alte\n" + "Überlieferungen besagen, dass ein Haus,"); +static const u8 DexDescription_Schneppke_2[] = _( + "welches von diesem POKéMON besucht\n" + "wird, vielen kommenden Generationen\n" + "Glück und Erfolg beschert."); +#else static const u8 DexDescription_Schneppke_1[] = _( "SCHNEPPKE lebt in Gebieten mit heftigem\n" "Schneefall. In Jahreszeiten, in denen es\n" @@ -3088,7 +5849,18 @@ static const u8 DexDescription_Schneppke_2[] = _( "Sommer, nimmt das POKéMON Reißaus, um\n" "in einer Höhle ein ruhiges Leben unter\n" "Stalaktiten und Stalagmiten zu führen."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Firnontor_1[] = _( + "FIRNONTOR hat die Fähigkeit, Eis zu\n" + "kontrollieren. Es kann beispielsweise\n" + "einen Gegner augenblicklich einfrieren."); +static const u8 DexDescription_Firnontor_2[] = _( + "Nachdem es einen Gegner im Eis\n" + "bewegungsunfähig gemacht hat,\n" + "verspeist es ihn genüsslich."); +#else static const u8 DexDescription_Firnontor_1[] = _( "FIRNONTOR hat einen Körper aus Stein,\n" "den es mit einem Panzer aus Eis noch\n" @@ -3097,7 +5869,18 @@ static const u8 DexDescription_Firnontor_2[] = _( "die Luftfeuchtigkeit der Atmosphäre\n" "einfrieren und in jegliche Form\n" "verwandeln."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Seemops_1[] = _( + "SEEMOPS bewegt sich fort, indem es\n" + "seinen ballartigen Körper herumrollt.\n" + "Wenn Eisschollen auftauchen, kann man"); +static const u8 DexDescription_Seemops_2[] = _( + "dieses POKéMON dabei beobachten, wie\n" + "es über das Eis rollt und das Meer\n" + "überquert."); +#else static const u8 DexDescription_Seemops_1[] = _( "SEEMOPS kann schneller rollen als laufen.\n" "Wenn Gruppen dieses POKéMON \n" @@ -3106,7 +5889,18 @@ static const u8 DexDescription_Seemops_2[] = _( "gleichzeitig, um ihre Freude zu zeigen.\n" "Deswegen sind ihre Mahlzeiten sehr\n" "laut."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Seejong_1[] = _( + "SEEJONG balanciert häufig Dinge auf\n" + "seiner Nasenspitze und rollt sie hin und\n" + "her. Während es das tut, überprüft es"); +static const u8 DexDescription_Seejong_2[] = _( + "den Duft und die Beschaffenheit des\n" + "Gegenstandes und stellt fest, ob es das\n" + "Objekt mag oder nicht."); +#else static const u8 DexDescription_Seejong_1[] = _( "SEEJONG hat die Angewohnheit, alles,\n" "was es zum ersten Mal sieht, auf seiner \n" @@ -3115,7 +5909,18 @@ static const u8 DexDescription_Seejong_2[] = _( "POKéMON hält sich bei Laune, indem es\n" "manchmal ein SEEMOPS auf seiner Nase\n" "balanciert und hin- und herrollt."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Walraisa_1[] = _( + "WALRAISA schwimmt in eiskaltem Meer-\n" + "wasser und zertrümmert Eisberge mit\n" + "seinen beeindruckenden Stoßzähnen."); +static const u8 DexDescription_Walraisa_2[] = _( + "Eine dicke Schicht aus Walfischspeck\n" + "lässt gegnerische Attacken von ihm ab-\n" + "prallen."); +#else static const u8 DexDescription_Walraisa_1[] = _( "WALRAISA hat zwei massive Stoßzähne,\n" "die mit einem Hieb Eisblöcke\n" @@ -3124,7 +5929,18 @@ static const u8 DexDescription_Walraisa_2[] = _( "10 Tonnen wiegen. Es besitzt eine dicke\n" "Speckschicht, die es vor eisigen\n" "Temperaturen schützt."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Perlu_1[] = _( + "PERLU wächst, während es von seiner\n" + "steinharten Schale geschützt wird. \n" + "Wenn sein Körper zu groß für seine"); +static const u8 DexDescription_Perlu_2[] = _( + "Schale wird, ist dies ein sicheres\n" + "Anzeichen dafür, dass dieses POKéMON\n" + "kurz vor seiner Entwicklung steht."); +#else static const u8 DexDescription_Perlu_1[] = _( "PERLUs kräftige Schale dient nicht\n" "nur dem Schutz, es nutzt sie auch zum\n" @@ -3132,7 +5948,18 @@ static const u8 DexDescription_Perlu_1[] = _( static const u8 DexDescription_Perlu_2[] = _( "Schale eines PERLU weist viele\n" "Kerben und Kratzer auf."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Aalabyss_1[] = _( + "AALABYSS’ Schweif ist wie ein Fisch\n" + "geformt. Es benutzt ihn, um Beute\n" + "anzuziehen und schluckt diese dann"); +static const u8 DexDescription_Aalabyss_2[] = _( + "im Ganzen herunter. Beim Schwimmen\n" + "bewegt es seinen schlanken Körper\n" + "wie eine Schlange."); +#else static const u8 DexDescription_Aalabyss_1[] = _( "AALABYSS entging lange der\n" "Aufmerksamkeit des Menschen, da es in\n" @@ -3141,7 +5968,18 @@ static const u8 DexDescription_Aalabyss_2[] = _( "Die Augen dieses POKéMON können\n" "selbst in den dunklen und trüben Tiefen\n" "des Meeres einwandfrei sehen."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Saganabyss_1[] = _( + "Obwohl SAGANABYSS beim Schwimmen ein\n" + "Bild von Eleganz und Schönheit bietet,\n" + "kann es auch sehr grausam sein. Wenn es"); +static const u8 DexDescription_Saganabyss_2[] = _( + "Beute sichtet, sticht es sein dünnes\n" + "Maul in den Körper eines Gegners und\n" + "entzieht ihm die Flüssigkeit."); +#else static const u8 DexDescription_Saganabyss_1[] = _( "SAGANABYSS lebt in extremen Tiefen des\n" "Südmeeres. Sein Körper ist so angelegt,\n" @@ -3150,7 +5988,18 @@ static const u8 DexDescription_Saganabyss_2[] = _( "unglaublichen Tiefe standhalten kann.\n" "Daher übersteht dieses POKéMON\n" "gewöhnliche Attacken unbeschadet."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Relicanth_1[] = _( + "RELICANTH ist eine seltene Spezies, die\n" + "auf einer Tiefsee-Expedition entdeckt\n" + "wurde. Dieses POKéMON hält dem"); +static const u8 DexDescription_Relicanth_2[] = _( + "enormen Wasserdruck des Ozeans stand.\n" + "Sein Körper ist mit steinharten\n" + "Schuppen bedeckt."); +#else static const u8 DexDescription_Relicanth_1[] = _( "RELICANTH ist eine POKéMON-Spezies,\n" "die vor hundert Millionen Jahren\n" @@ -3159,7 +6008,17 @@ static const u8 DexDescription_Relicanth_2[] = _( "verändern. Dieses antike POKéMON\n" "hat ein zahnloses Maul und ernährt sich\n" "von Mikroorganismen."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Liebiskus_1[] = _( + "LIEBISKUS’ herzförmiger Körper ist ein\n" + "Symbol der Liebe und der Romantik.\n" + "Man sagt, jedem Paar, dem es begegnet,"); +static const u8 DexDescription_Liebiskus_2[] = _( + "stünde eine unendliche Liebesbeziehung\n" + "bevor."); +#else static const u8 DexDescription_Liebiskus_1[] = _( "LIEBISKUS lebt in den seichten\n" "Gewässern der Tropen. Dieses herz-\n" @@ -3168,7 +6027,18 @@ static const u8 DexDescription_Liebiskus_2[] = _( "der Tatsache, dass es hinter Liebes-\n" "paaren herschwamm, die es in den Wellen\n" "des Ozeans beobachtet hatte."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Kindwurm_1[] = _( + "KINDWURM hegt einen unerfüllten Traum.\n" + "Es möchte einmal hoch über den Wolken\n" + "fliegen. Um seinen Frust über seine"); +static const u8 DexDescription_Kindwurm_2[] = _( + "Flugunfähigkeit zu vertreiben, rammt\n" + "es seinen harten Kopf gegen riesige\n" + "Felsen und macht Kiesel aus ihnen."); +#else static const u8 DexDescription_Kindwurm_1[] = _( "KINDWURM hat den Traum, fliegen zu\n" "können. In zahlreichen vergeblichen\n" @@ -3176,7 +6046,18 @@ static const u8 DexDescription_Kindwurm_1[] = _( static const u8 DexDescription_Kindwurm_2[] = _( "herunter. Daher ist sein Kopf sehr\n" "robust und so hart wie Stahl geworden."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Draschel_1[] = _( + "Auf DRASCHELs Körper befinden sich\n" + "knochenähnliche Auswüchse. Sein Panzer\n" + "ist sehr hart und wehrt jeden Angriff"); +static const u8 DexDescription_Draschel_2[] = _( + "eines Gegners ab. Während es auf seine\n" + "Entwicklung wartet, versteckt es sich\n" + "in einer Höhle."); +#else static const u8 DexDescription_Draschel_1[] = _( "In DRASCHELs panzerartiger Schale\n" "vollziehen seine Zellen eine\n" @@ -3185,7 +6066,18 @@ static const u8 DexDescription_Draschel_2[] = _( "Körper zu bilden. Die Schale dieses\n" "POKéMON ist ausgesprochen schwer, so\n" "dass seine Bewegungen träge wirken."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Brutalanda_1[] = _( + "Indem es sich in BRUTALANDA verwandelt,\n" + "setzt dieses POKéMON seinen lang\n" + "gehegten Traum von Flügeln um."); +static const u8 DexDescription_Brutalanda_2[] = _( + "Um seine Freude zu zeigen, fliegt es\n" + "durch die Luft und dreht sich. Dabei\n" + "verspuckt es Flammen aus seinem Mund."); +#else static const u8 DexDescription_Brutalanda_1[] = _( "BRUTALANDA träumte sehr lange davon,\n" "dass ihm Flügel wachsen mögen. Dieser\n" @@ -3194,7 +6086,18 @@ static const u8 DexDescription_Brutalanda_2[] = _( "plötzliche Mutation in den Zellen dieses\n" "POKéMON hervorgerufen, so dass ihm\n" "plötzlich prächtige Flügel wuchsen."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Tanhel_1[] = _( + "TANHEL hält sich am Schweben, indem es\n" + "eine magnetische Kraft erzeugt, die die\n" + "natürliche Anziehungskraft der Erde"); +static const u8 DexDescription_Tanhel_2[] = _( + "abstößt. Wenn es schläft, verankert\n" + "sich dieses POKéMON mit den Haken an\n" + "seinem Hinterteil an einem Felsen."); +#else static const u8 DexDescription_Tanhel_1[] = _( "Anstelle von Blut fließt eine starke\n" "magnetische Energie durch TANHELs\n" @@ -3202,7 +6105,18 @@ static const u8 DexDescription_Tanhel_1[] = _( static const u8 DexDescription_Tanhel_2[] = _( "mit anderen, indem es kontrollierte\n" "magnetische Impulse aussendet."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Metang_1[] = _( + "Wenn zwei TANHEL miteinander\n" + "verschmelzen, entsteht daraus METANG.\n" + "Die Gehirne der TANHEL werden mit"); +static const u8 DexDescription_Metang_2[] = _( + "einem magnetischen Nervensystem ver-\n" + "bunden. Es schlägt seine Arme nach hin-\n" + "ten, um sich schnell bewegen zu können."); +#else static const u8 DexDescription_Metang_1[] = _( "Wenn zwei TANHEL miteinander\n" "verschmelzen, entsteht daraus METANG.\n" @@ -3211,7 +6125,17 @@ static const u8 DexDescription_Metang_2[] = _( "einem magnetischen Nervensystem\n" "verbunden. Dadurch erzeugt es starke\n" "psychokinetische Energie."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Metagross_1[] = _( + "METAGROSS ist aus der Verschmelzung\n" + "zweier METANG hervorgegangen. Auf der\n" + "Jagd drückt es seine Beute mit seinem"); +static const u8 DexDescription_Metagross_2[] = _( + "massigen Körper zu Boden. Dann frisst\n" + "es sein hilfloses Opfer auf."); +#else static const u8 DexDescription_Metagross_1[] = _( "METAGROSS hat insgesamt vier Gehirne.\n" "Diese können schwierige Berechnungen\n" @@ -3220,7 +6144,17 @@ static const u8 DexDescription_Metagross_2[] = _( "Dieses POKéMON kann durch die Lüfte\n" "schweben, indem es seine vier Beine\n" "einklappt."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Regirock_1[] = _( + "REGIROCKs Körper besteht komplett aus\n" + "Steinen. Erst kürzlich stellte man\n" + "erstaunt fest, dass die Steine alle an"); +static const u8 DexDescription_Regirock_2[] = _( + "unterschiedlichen Orten ausgegraben\n" + "wurden."); +#else static const u8 DexDescription_Regirock_1[] = _( "REGIROCK wurde vor langer Zeit von\n" "Menschen weggeschlossen. Wenn der\n" @@ -3229,7 +6163,18 @@ static const u8 DexDescription_Regirock_2[] = _( "Schaden nimmt, sucht es nach\n" "passenden Steinen, um sich selber zu\n" "reparieren."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Regice_1[] = _( + "REGICE umhüllt sich selbst mit kalter\n" + "Luft von 200 Grad minus. Alles\n" + "und jeder, der sich diesem POKéMON"); +static const u8 DexDescription_Regice_2[] = _( + "nähert, friert sofort ein. Sein eisiger\n" + "Körper ist so kalt, dass nicht einmal\n" + "Magma es schmelzen könnte."); +#else static const u8 DexDescription_Regice_1[] = _( "REGICEs tiefgefrorener Körper\n" "entstand während der Eiszeit. Es kann\n" @@ -3237,7 +6182,17 @@ static const u8 DexDescription_Regice_1[] = _( static const u8 DexDescription_Regice_2[] = _( "werden. Dieses POKéMON kontrolliert\n" "eisige Luft von minus 200 Grad."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Registeel_1[] = _( + "REGISTEEL wurde in der Antike von\n" + "den Menschen eingesperrt. Das Metall,\n" + "aus dem sein Körper besteht, ist eine"); +static const u8 DexDescription_Registeel_2[] = _( + "seltsame Substanz, die nicht von dieser\n" + "Welt sein soll."); +#else static const u8 DexDescription_Registeel_1[] = _( "REGISTEEL hat einen Körper, der härter\n" "ist als jede Art von Metall. Sein Körper\n" @@ -3245,7 +6200,18 @@ static const u8 DexDescription_Registeel_1[] = _( static const u8 DexDescription_Registeel_2[] = _( "Niemand hat eine Ahnung, was dieses\n" "POKéMON wohl frisst."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Latias_1[] = _( + "LATIAS ist sehr intelligent und kann die\n" + "menschliche Sprache verstehen. Es ist\n" + "mit gläsernen Daunen bedeckt."); +static const u8 DexDescription_Latias_2[] = _( + "Dieses POKéMON umhüllt seinen Körper\n" + "mit den Daunen und kann Licht brechen,\n" + "um seine Gestalt zu verändern."); +#else static const u8 DexDescription_Latias_1[] = _( "LATIAS ist in höchstem Maße empfindlich\n" "gegenüber den Emotionen der Menschen.\n" @@ -3254,7 +6220,18 @@ static const u8 DexDescription_Latias_2[] = _( "wahrnimmt, werden seine Federn\n" "zerzaust und es stößt schrille Schreie\n" "aus, um seinen Gegner einzuschüchtern."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Latios_1[] = _( + "LATIOS schüttet nur seinem TRAINER\n" + "gegenüber sein Herz aus. Dieses\n" + "POKéMON fliegt schneller als ein"); +static const u8 DexDescription_Latios_2[] = _( + "Flugzeug, indem es seine Vorderbeine\n" + "einklappt, um den Luftwiderstand zu\n" + "verringern."); +#else static const u8 DexDescription_Latios_1[] = _( "LATIOS kann seinem Feind ein Bild\n" "von etwas, das dieser einmal gesehen\n" @@ -3262,7 +6239,18 @@ static const u8 DexDescription_Latios_1[] = _( static const u8 DexDescription_Latios_2[] = _( "POKéMON ist intelligent und es versteht\n" "die menschliche Sprache."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Kyogre_1[] = _( + "In der Mythologie taucht KYOGRE als\n" + "dasjenige POKéMON auf, das das Meer\n" + "vergrößert hat, indem es sintflutartige"); +static const u8 DexDescription_Kyogre_2[] = _( + "Regenfälle und Sturmfluten erzeugt hat.\n" + "Nach einem katastrophalen Kampf mit\n" + "GROUDON legte es sich schlafen."); +#else static const u8 DexDescription_Kyogre_1[] = _( "KYOGRE kann riesige Regenwolken\n" "erzeugen, die den gesamten Himmel\n" @@ -3271,7 +6259,18 @@ static const u8 DexDescription_Kyogre_2[] = _( "Niederschläge hervorrufen. Dieses\n" "POKéMON hat vielen Menschen das Leben\n" "gerettet, die unter einer Dürre litten."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Groudon_1[] = _( + "GROUDON hat die Macht, mit Licht und\n" + "Hitze Regenwolken zu vertreiben und \n" + "Wasser verdunsten zu lassen."); +static const u8 DexDescription_Groudon_2[] = _( + "Es brachte den Menschen Erlösung, die\n" + "unter schrecklichen Überschwemmungen\n" + "gelitten hatten."); +#else static const u8 DexDescription_Groudon_1[] = _( "GROUDON wurde lange Zeit in der\n" "Mythologie als ein POKéMON\n" @@ -3280,7 +6279,16 @@ static const u8 DexDescription_Groudon_2[] = _( "Kontinente vergrößern kann. Dieses\n" "POKéMON fiel nach einem erbitterten\n" "Kampf mit KYOGRE in den Schlaf."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Rayquaza_1[] = _( + "RAYQUAZA soll für hunderte Millionen\n" + "Jahre in der Ozonschicht der Erde über\n" + "den Wolken gelebt haben. Daher wusste"); +static const u8 DexDescription_Rayquaza_2[] = _( + "man so lange nicht von seiner Existenz."); +#else static const u8 DexDescription_Rayquaza_1[] = _( "RAYQUAZA lebte für hunderte Millionen\n" "Jahre in der Ozonschicht und stieg nie\n" @@ -3288,7 +6296,17 @@ static const u8 DexDescription_Rayquaza_1[] = _( static const u8 DexDescription_Rayquaza_2[] = _( "lebt von Wasser und Partikeln aus der\n" "Atmosphäre."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Jirachi_1[] = _( + "JIRACHI wird aus seinem tausend-\n" + "jährigen Schlaf erwachen, wenn du ihm\n" + "mit klarer Stimme etwas vorsingst."); +static const u8 DexDescription_Jirachi_2[] = _( + "Es soll angeblich alle Wünsche der\n" + "Menschen erfüllen."); +#else static const u8 DexDescription_Jirachi_1[] = _( "Einer Legende nach erfüllt JIRACHI\n" "jeden Wunsch, der auf einen Notizzettel\n" @@ -3297,7 +6315,18 @@ static const u8 DexDescription_Jirachi_2[] = _( "dieses POKéMON Gefahr wittert, kämpft\n" "es bereits, bevor es überhaupt\n" "aufgewacht ist."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Deoxys_1[] = _( + "DEOXYS ging aus einem Virus aus dem\n" + "Weltraum hervor. Es ist sehr intelligent\n" + "und nutzt psychokinetische Energie."); +static const u8 DexDescription_Deoxys_2[] = _( + "Dieses POKéMON verschießt\n" + "Laserstrahlen aus einem kristallartigen\n" + "Organ auf seinem Brustkorb."); +#else static const u8 DexDescription_Deoxys_1[] = _( "Die DNS eines Weltraumvirus hat eine\n" "spontane Mutation erfahren, da sie\n" @@ -3306,6 +6335,7 @@ static const u8 DexDescription_Deoxys_2[] = _( "Daraus entstand DEOXYS. \n" "Das kristallartige Organ auf der Brust\n" "dieses POKéMON ist sein Gehirn."); +#endif static const struct PokedexEntry gPokedexEntries[] = { { diff --git a/src/data/region_map_layout.h b/src/data/region_map_layout.h new file mode 100644 index 000000000..ca33ef37a --- /dev/null +++ b/src/data/region_map_layout.h @@ -0,0 +1,42 @@ +// Abbreviated definitions to make the map layout more visual +#define R(routeNum) MAPSEC_ROUTE_##routeNum +#define LITT_T MAPSEC_LITTLEROOT_TOWN +#define OLDA_T MAPSEC_OLDALE_TOWN +#define DEWF_T MAPSEC_DEWFORD_TOWN +#define LAVA_T MAPSEC_LAVARIDGE_TOWN +#define FALL_T MAPSEC_FALLARBOR_TOWN +#define VERD_T MAPSEC_VERDANTURF_TOWN +#define PACI_T MAPSEC_PACIFIDLOG_TOWN +#define PETA_C MAPSEC_PETALBURG_CITY +#define SLAT_C MAPSEC_SLATEPORT_CITY +#define MAUV_C MAPSEC_MAUVILLE_CITY +#define RUST_C MAPSEC_RUSTBORO_CITY +#define FORT_C MAPSEC_FORTREE_CITY +#define LILY_C MAPSEC_LILYCOVE_CITY +#define MOSS_C MAPSEC_MOSSDEEP_CITY +#define SOOT_C MAPSEC_SOOTOPOLIS_CITY +#define EVER_C MAPSEC_EVER_GRANDE_CITY +#define MTCHIM MAPSEC_MT_CHIMNEY +#define SAFARI MAPSEC_SAFARI_ZONE +#define BTLTWR MAPSEC_BATTLE_TOWER +#define S_ISLD MAPSEC_SOUTHERN_ISLAND +#define ______ MAPSEC_NONE + +static const u8 sRegionMapLayout[] = +{ + ______, R(114), R(114), FALL_T, R(113), R(113), R(113), R(113), R(111), ______, ______, R(119), FORT_C, R(120), ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, + ______, R(114), ______, ______, ______, ______, MTCHIM, MTCHIM, R(111), ______, ______, R(119), ______, R(120), ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, + R(115), R(114), ______, ______, ______, ______, MTCHIM, MTCHIM, R(111), ______, ______, R(119), ______, R(120), ______, ______, SAFARI, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, + R(115), ______, ______, ______, ______, LAVA_T, R(112), R(112), R(111), ______, ______, R(119), ______, R(120), R(121), R(121), R(121), R(121), LILY_C, LILY_C, R(124), R(124), R(124), R(124), R(125), R(125), ______, ______, + R(115), ______, ______, ______, ______, ______, ______, ______, R(111), ______, ______, R(119), ______, ______, ______, ______, R(122), ______, ______, ______, R(124), R(124), R(124), R(124), R(125), R(125), ______, ______, + RUST_C, R(116), R(116), R(116), R(116), ______, ______, ______, R(111), ______, ______, R(119), ______, ______, ______, ______, R(122), ______, ______, ______, R(124), R(124), R(124), R(124), MOSS_C, MOSS_C, ______, ______, + RUST_C, ______, ______, ______, VERD_T, R(117), R(117), R(117), MAUV_C, MAUV_C, R(118), R(118), R(123), R(123), R(123), R(123), R(123), ______, ______, ______, R(126), R(126), R(126), R(127), R(127), R(127), ______, ______, + R(104), ______, ______, ______, ______, ______, ______, ______, R(110), ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, R(126), SOOT_C, R(126), R(127), R(127), R(127), ______, ______, + R(104), ______, ______, ______, R(103), R(103), R(103), R(103), R(110), ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, R(126), R(126), R(126), R(127), R(127), R(127), ______, EVER_C, + R(104), PETA_C, R(102), R(102), OLDA_T, ______, ______, ______, R(110), ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, R(128), R(128), R(128), R(128), EVER_C, + R(105), ______, ______, ______, R(101), ______, ______, ______, SLAT_C, R(134), R(134), R(134), R(133), R(133), R(133), R(132), R(132), PACI_T, R(131), R(131), R(131), R(130), R(130), R(130), R(129), R(129), ______, ______, + R(105), ______, ______, ______, LITT_T, ______, ______, ______, SLAT_C, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, + R(105), ______, ______, ______, ______, ______, ______, ______, R(109), ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, BTLTWR, ______, ______, ______, ______, ______, + R(106), R(106), R(106), ______, ______, ______, ______, ______, R(109), ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, + ______, ______, DEWF_T, R(107), R(107), R(107), R(108), R(108), R(109), ______, ______, ______, S_ISLD, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, +}; diff --git a/src/data/region_map_names_de.h b/src/data/region_map_names_de.h new file mode 100644 index 000000000..10f53c8ba --- /dev/null +++ b/src/data/region_map_names_de.h @@ -0,0 +1,79 @@ +const u8 gMapName_LittlerootTown[] = _("WURZELHEIM"); +const u8 gMapName_OldaleTown[] = _("ROSALTSTADT"); +const u8 gMapName_DewfordTown[] = _("FAUSTAUHAVEN"); +const u8 gMapName_LavaridgeTown[] = _("BAD LAVASTADT"); +const u8 gMapName_FallarborTown[] = _("LAUBWECHSEL{NAME_END}FELD"); +const u8 gMapName_VerdanturfTown[] = _("WIESENFLUR"); +const u8 gMapName_PacifidlogTown[] = _("FLOSSBRUNN"); +const u8 gMapName_PetalburgCity[] = _("BLÜTENBURG{NAME_END} CITY"); +const u8 gMapName_SlateportCity[] = _("GRAPHITPORT{NAME_END} CITY"); +const u8 gMapName_MauvilleCity[] = _("MALVENFROH{NAME_END} CITY"); +const u8 gMapName_RustboroCity[] = _("METAROST{NAME_END} CITY"); +const u8 gMapName_FortreeCity[] = _("BAUMHAUSEN{NAME_END} CITY"); +const u8 gMapName_LilycoveCity[] = _("SEEGRASULB{NAME_END} CITY"); +const u8 gMapName_MossdeepCity[] = _("MOOSBACH{NAME_END} CITY"); +const u8 gMapName_SootopolisCity[] = _("XENEROVILLE"); +const u8 gMapName_EverGrandeCity[] = _("PRACHTPOLIS{NAME_END} CITY"); +const u8 gMapName_Route101[] = _("ROUTE 101"); +const u8 gMapName_Route102[] = _("ROUTE 102"); +const u8 gMapName_Route103[] = _("ROUTE 103"); +const u8 gMapName_Route104[] = _("ROUTE 104"); +const u8 gMapName_Route105[] = _("ROUTE 105"); +const u8 gMapName_Route106[] = _("ROUTE 106"); +const u8 gMapName_Route107[] = _("ROUTE 107"); +const u8 gMapName_Route108[] = _("ROUTE 108"); +const u8 gMapName_Route109[] = _("ROUTE 109"); +const u8 gMapName_Route110[] = _("ROUTE 110"); +const u8 gMapName_Route111[] = _("ROUTE 111"); +const u8 gMapName_Route112[] = _("ROUTE 112"); +const u8 gMapName_Route113[] = _("ROUTE 113"); +const u8 gMapName_Route114[] = _("ROUTE 114"); +const u8 gMapName_Route115[] = _("ROUTE 115"); +const u8 gMapName_Route116[] = _("ROUTE 116"); +const u8 gMapName_Route117[] = _("ROUTE 117"); +const u8 gMapName_Route118[] = _("ROUTE 118"); +const u8 gMapName_Route119[] = _("ROUTE 119"); +const u8 gMapName_Route120[] = _("ROUTE 120"); +const u8 gMapName_Route121[] = _("ROUTE 121"); +const u8 gMapName_Route122[] = _("ROUTE 122"); +const u8 gMapName_Route123[] = _("ROUTE 123"); +const u8 gMapName_Route124[] = _("ROUTE 124"); +const u8 gMapName_Route125[] = _("ROUTE 125"); +const u8 gMapName_Route126[] = _("ROUTE 126"); +const u8 gMapName_Route127[] = _("ROUTE 127"); +const u8 gMapName_Route128[] = _("ROUTE 128"); +const u8 gMapName_Route129[] = _("ROUTE 129"); +const u8 gMapName_Route130[] = _("ROUTE 130"); +const u8 gMapName_Route131[] = _("ROUTE 131"); +const u8 gMapName_Route132[] = _("ROUTE 132"); +const u8 gMapName_Route133[] = _("ROUTE 133"); +const u8 gMapName_Route134[] = _("ROUTE 134"); +const u8 gMapName_Underwater[] = _("UNTERWASSER"); +const u8 gMapName_GraniteCave[] = _("GRANITHÖHLE"); +const u8 gMapName_MtChimney[] = _("SCHLOTBERG"); +const u8 gMapName_SafariZone[] = _("SAFARI-ZONE"); +const u8 gMapName_BattleTower[] = _("DUELLTURM"); +const u8 gMapName_PetalburgWoods[] = _("BLÜTENBURGWALD"); +const u8 gMapName_RusturfTunnel[] = _("METAFLURTUNNEL"); +const u8 gMapName_AbandonedShip[] = _("SCHIFFSWRACK"); +const u8 gMapName_NewMauville[] = _("NEU MALVENFROH"); +const u8 gMapName_MeteorFalls[] = _("METEORFÄLLE"); +const u8 gMapName_MtPyre[] = _("PYROBERG"); +const u8 gMapName_EvilTeamHideout[] = _("{EVIL_TEAM}s VERSTECK"); +const u8 gMapName_ShoalCave[] = _("KÜSTENHÖHLE"); +const u8 gMapName_SeafloorCavern[] = _("TIEFSEEHÖHLE"); +const u8 gMapName_VictoryRoad[] = _("SIEGESSTRASSE"); +const u8 gMapName_MirageIsland[] = _("WUNDEREILAND"); +const u8 gMapName_CaveOfOrigin[] = _("URZEITHÖHLE"); +const u8 gMapName_SouthernIsland[] = _("INSEL IM SÜDEN"); +const u8 gMapName_FieryPath[] = _("FEURIGER PFAD"); +const u8 gMapName_JaggedPass[] = _("STEILPASS"); +const u8 gMapName_SealedChamber[] = _("SIEGELKAMMER"); +const u8 gMapName_ScorchedSlab[] = _("SONNENGROTTE"); +const u8 gMapName_IslandCave[] = _("INSELHÖHLE"); +const u8 gMapName_DesertRuins[] = _("WÜSTENRUINE"); +const u8 gMapName_AncientTomb[] = _("GRABMAL"); +const u8 gMapName_InsideOfTruck[] = _("IM MÖBELWAGEN"); +const u8 gMapName_SkyPillar[] = _("HIMMELTURM"); +const u8 gMapName_SecretBase[] = _("GEHEIMBASIS"); +const u8 gMapName_None[] = _(""); diff --git a/src/data/region_map_names_en.h b/src/data/region_map_names_en.h new file mode 100644 index 000000000..9dde3d71a --- /dev/null +++ b/src/data/region_map_names_en.h @@ -0,0 +1,79 @@ +const u8 gMapName_LittlerootTown[] = _("LITTLEROOT{NAME_END} TOWN"); +const u8 gMapName_OldaleTown[] = _("OLDALE{NAME_END} TOWN"); +const u8 gMapName_DewfordTown[] = _("DEWFORD{NAME_END} TOWN"); +const u8 gMapName_LavaridgeTown[] = _("LAVARIDGE{NAME_END} TOWN"); +const u8 gMapName_FallarborTown[] = _("FALLARBOR{NAME_END} TOWN"); +const u8 gMapName_VerdanturfTown[] = _("VERDANTURF{NAME_END} TOWN"); +const u8 gMapName_PacifidlogTown[] = _("PACIFIDLOG{NAME_END} TOWN"); +const u8 gMapName_PetalburgCity[] = _("PETALBURG{NAME_END} CITY"); +const u8 gMapName_SlateportCity[] = _("SLATEPORT{NAME_END} CITY"); +const u8 gMapName_MauvilleCity[] = _("MAUVILLE{NAME_END} CITY"); +const u8 gMapName_RustboroCity[] = _("RUSTBORO{NAME_END} CITY"); +const u8 gMapName_FortreeCity[] = _("FORTREE{NAME_END} CITY"); +const u8 gMapName_LilycoveCity[] = _("LILYCOVE{NAME_END} CITY"); +const u8 gMapName_MossdeepCity[] = _("MOSSDEEP{NAME_END} CITY"); +const u8 gMapName_SootopolisCity[] = _("SOOTOPOLIS{NAME_END} CITY"); +const u8 gMapName_EverGrandeCity[] = _("EVER GRANDE{NAME_END} CITY"); +const u8 gMapName_Route101[] = _("ROUTE 101"); +const u8 gMapName_Route102[] = _("ROUTE 102"); +const u8 gMapName_Route103[] = _("ROUTE 103"); +const u8 gMapName_Route104[] = _("ROUTE 104"); +const u8 gMapName_Route105[] = _("ROUTE 105"); +const u8 gMapName_Route106[] = _("ROUTE 106"); +const u8 gMapName_Route107[] = _("ROUTE 107"); +const u8 gMapName_Route108[] = _("ROUTE 108"); +const u8 gMapName_Route109[] = _("ROUTE 109"); +const u8 gMapName_Route110[] = _("ROUTE 110"); +const u8 gMapName_Route111[] = _("ROUTE 111"); +const u8 gMapName_Route112[] = _("ROUTE 112"); +const u8 gMapName_Route113[] = _("ROUTE 113"); +const u8 gMapName_Route114[] = _("ROUTE 114"); +const u8 gMapName_Route115[] = _("ROUTE 115"); +const u8 gMapName_Route116[] = _("ROUTE 116"); +const u8 gMapName_Route117[] = _("ROUTE 117"); +const u8 gMapName_Route118[] = _("ROUTE 118"); +const u8 gMapName_Route119[] = _("ROUTE 119"); +const u8 gMapName_Route120[] = _("ROUTE 120"); +const u8 gMapName_Route121[] = _("ROUTE 121"); +const u8 gMapName_Route122[] = _("ROUTE 122"); +const u8 gMapName_Route123[] = _("ROUTE 123"); +const u8 gMapName_Route124[] = _("ROUTE 124"); +const u8 gMapName_Route125[] = _("ROUTE 125"); +const u8 gMapName_Route126[] = _("ROUTE 126"); +const u8 gMapName_Route127[] = _("ROUTE 127"); +const u8 gMapName_Route128[] = _("ROUTE 128"); +const u8 gMapName_Route129[] = _("ROUTE 129"); +const u8 gMapName_Route130[] = _("ROUTE 130"); +const u8 gMapName_Route131[] = _("ROUTE 131"); +const u8 gMapName_Route132[] = _("ROUTE 132"); +const u8 gMapName_Route133[] = _("ROUTE 133"); +const u8 gMapName_Route134[] = _("ROUTE 134"); +const u8 gMapName_Underwater[] = _("UNDERWATER"); +const u8 gMapName_GraniteCave[] = _("GRANITE CAVE"); +const u8 gMapName_MtChimney[] = _("MT. CHIMNEY"); +const u8 gMapName_SafariZone[] = _("SAFARI ZONE"); +const u8 gMapName_BattleTower[] = _("BATTLE TOWER"); +const u8 gMapName_PetalburgWoods[] = _("PETALBURG WOODS"); +const u8 gMapName_RusturfTunnel[] = _("RUSTURF TUNNEL"); +const u8 gMapName_AbandonedShip[] = _("ABANDONED SHIP"); +const u8 gMapName_NewMauville[] = _("NEW MAUVILLE"); +const u8 gMapName_MeteorFalls[] = _("METEOR FALLS"); +const u8 gMapName_MtPyre[] = _("MT. PYRE"); +const u8 gMapName_EvilTeamHideout[] = _("{EVIL_TEAM} HIDEOUT"); +const u8 gMapName_ShoalCave[] = _("SHOAL CAVE"); +const u8 gMapName_SeafloorCavern[] = _("SEAFLOOR CAVERN"); +const u8 gMapName_VictoryRoad[] = _("VICTORY ROAD"); +const u8 gMapName_MirageIsland[] = _("MIRAGE ISLAND"); +const u8 gMapName_CaveOfOrigin[] = _("CAVE OF ORIGIN"); +const u8 gMapName_SouthernIsland[] = _("SOUTHERN ISLAND"); +const u8 gMapName_FieryPath[] = _("FIERY PATH"); +const u8 gMapName_JaggedPass[] = _("JAGGED PASS"); +const u8 gMapName_SealedChamber[] = _("SEALED CHAMBER"); +const u8 gMapName_ScorchedSlab[] = _("SCORCHED SLAB"); +const u8 gMapName_IslandCave[] = _("ISLAND CAVE"); +const u8 gMapName_DesertRuins[] = _("DESERT RUINS"); +const u8 gMapName_AncientTomb[] = _("ANCIENT TOMB"); +const u8 gMapName_InsideOfTruck[] = _("INSIDE OF TRUCK"); +const u8 gMapName_SkyPillar[] = _("SKY PILLAR"); +const u8 gMapName_SecretBase[] = _("SECRET BASE"); +const u8 gMapName_None[] = _(""); diff --git a/src/daycare.c b/src/daycare.c deleted file mode 100644 index cded18207..000000000 --- a/src/daycare.c +++ /dev/null @@ -1,350 +0,0 @@ -#include "global.h" -#include "daycare.h" -#include "pokemon.h" -#include "species.h" -#include "items.h" -#include "string_util.h" - -extern u8 gLastFieldPokeMenuOpened; - -u8 *GetMonNick(struct Pokemon *mon, u8 *dest) -{ - s8 nickname[POKEMON_NAME_LENGTH * 2]; - - GetMonData(mon, MON_DATA_NICKNAME, nickname); - return StringCopy10(dest, nickname); -} - -u8 *GetBoxMonNick(struct BoxPokemon *mon, u8 *dest) -{ - s8 nickname[POKEMON_NAME_LENGTH * 2]; - - GetBoxMonData(mon, MON_DATA_NICKNAME, nickname); - return StringCopy10(dest, nickname); -} - -u8 Daycare_CountPokemon(struct BoxPokemon *daycare_data) -{ - u8 i, count; - count = 0; - - for(i = 0;i <= 1;i++) - if(GetBoxMonData(daycare_data + i, MON_DATA_SPECIES) != 0) - count++; - - return count; -} - -void sub_8041324(struct BoxPokemon * box_pokemon, struct RecordMixing_UnknownStruct * void_pointer) -{ - u8 i; - u8 specCount; - specCount = 0; - for (i=0; i<2; i++) - { - if (GetBoxMonData(&box_pokemon[i], MON_DATA_SPECIES) != SPECIES_NONE) - { - specCount ++; - if (GetBoxMonData(&box_pokemon[i], MON_DATA_HELD_ITEM) == ITEM_NONE) - { - void_pointer->unk74[i] = 0; - } else - { - void_pointer->unk74[i] = 1; - } - } else - { - void_pointer->unk74[i] = 1; - } - } - void_pointer->unk70 = specCount; -} - -s8 Daycare_FindEmptySpot(struct BoxPokemon * daycare_data) -{ - u8 i; - - for(i = 0;i <= 1;i++) - if(GetBoxMonData(daycare_data + i, MON_DATA_SPECIES) == 0) - return i; - - return -1; -} - -/*void Daycare_SendPokemon(struct Pokemon * mon, struct BoxPokemon * daycare_data){ // unfinished - s8 empty_slot; - - empty_slot = Daycare_FindEmptySpot(daycare_data); - if(MonHasMail(mon) != 0){ // if the mon holds a mail? - u8 empty_slot_times_56 = empty_slot * 56; - u8 * something2 = ((u8 *) (daycare_data + 2)) + empty_slot_times_56 + 36; - StringCopy(something2, gSaveBlock2.playerName); - PadNameString(something2, 0xFC); - something2 += 8; - GetMonNick(mon, something2); - u8 pokerus = GetMonData(mon, MON_DATA_64); - something1 += (u8 * daycare_data) -}*/ - -__attribute__((naked)) -void Daycare_SendPokemon() -{ - // strange stack usage - happens because THUMB ARM only allows R0-R7 to be pushed/popped: - // all registers in reglist must be Lo registers, except that PUSH can include the LR, and POP can include the PC - // the ldm/stm section probably copies some struct, but I'm not sure how the code would look - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r9\n\ - mov r6, r8\n\ - push {r6,r7}\n\ - adds r7, r0, 0\n\ - mov r8, r1\n\ - mov r0, r8\n\ - bl Daycare_FindEmptySpot\n\ - lsls r0, 24\n\ - lsrs r4, r0, 24\n\ - mov r9, r4\n\ - adds r0, r7, 0\n\ - bl MonHasMail\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - beq _0804144A\n\ - lsls r0, r4, 24\n\ - asrs r0, 24\n\ - lsls r4, r0, 3\n\ - subs r4, r0\n\ - lsls r4, 3\n\ - adds r5, r4, 0\n\ - adds r5, 0xA0\n\ - add r5, r8\n\ - adds r6, r5, 0\n\ - adds r6, 0x24\n\ - ldr r1, _08041490 @ =gSaveBlock2\n\ - adds r0, r6, 0\n\ - bl StringCopy\n\ - adds r0, r6, 0\n\ - movs r1, 0xFC\n\ - bl PadNameString\n\ - adds r6, 0x8\n\ - adds r0, r7, 0\n\ - adds r1, r6, 0\n\ - bl GetMonNick\n\ - adds r0, r7, 0\n\ - movs r1, 0x40\n\ - bl GetMonData\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - add r4, r8\n\ - ldr r2, _08041494 @ =gSaveBlock1\n\ - lsls r1, r0, 3\n\ - adds r1, r0\n\ - lsls r1, 2\n\ - adds r1, r2\n\ - adds r4, 0xA0\n\ - ldr r0, _08041498 @ =0x00002b4c\n\ - adds r1, r0\n\ - ldm r1!, {r0,r2,r3}\n\ - stm r4!, {r0,r2,r3}\n\ - ldm r1!, {r0,r2,r3}\n\ - stm r4!, {r0,r2,r3}\n\ - ldm r1!, {r0,r2,r3}\n\ - stm r4!, {r0,r2,r3}\n\ - adds r0, r7, 0\n\ - bl TakeMailFromMon\n\ -_0804144A:\n\ - mov r2, r9\n\ - lsls r4, r2, 24\n\ - asrs r4, 24\n\ - lsls r5, r4, 2\n\ - adds r4, r5, r4\n\ - lsls r4, 4\n\ - add r4, r8\n\ - adds r0, r4, 0\n\ - adds r1, r7, 0\n\ - movs r2, 0x50\n\ - bl memcpy\n\ - adds r0, r4, 0\n\ - bl BoxMonRestorePP\n\ - movs r0, 0x88\n\ - lsls r0, 1\n\ - add r0, r8\n\ - adds r0, r5\n\ - movs r1, 0\n\ - str r1, [r0]\n\ - adds r0, r7, 0\n\ - bl ZeroMonData\n\ - bl party_compaction\n\ - bl CalculatePlayerPartyCount\n\ - pop {r3,r4}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_08041490: .4byte gSaveBlock2\n\ -_08041494: .4byte gSaveBlock1\n\ -_08041498: .4byte 0x00002b4c\n\ - .syntax divided\n"); -} - -void Daycare_SendPokemon_Special() -{ - Daycare_SendPokemon(gPlayerParty + gLastFieldPokeMenuOpened, gSaveBlock1.daycareData); -} - -void sub_80417F4(u8 *); - -void sub_80414C0(struct BoxPokemon * daycare_data) -{ - u32 second_species; - if((GetBoxMonData(&daycare_data[1], MON_DATA_SPECIES) != 0) && ((second_species = GetBoxMonData(&daycare_data[0], MON_DATA_SPECIES)) == 0)){ - daycare_data[0] = daycare_data[1]; - ZeroBoxMonData(&daycare_data[1]); - memcpy(daycare_data + 2, (u8 *) (daycare_data + 1) + 0x88, 0x38); - *((u32 *)(daycare_data) + 68) = *((u32 *)(daycare_data) + 69); - *((u32 *)(daycare_data) + 69) = second_species; - sub_80417F4((u8 *) (daycare_data + 1) + 0x88); - } -} - -u8 TryIncrementMonLevel(struct Pokemon *); -extern u16 word_2024E82; - -void sub_804151C(struct Pokemon * mon) -{ - s32 i; - u8 r6; - u16 temp; - - for(i = 0; i < 100; i++){ - if(TryIncrementMonLevel(mon) == FALSE) goto end; - - r6 = 1; - while((temp = sub_803B7C8(mon, r6)) != 0){ - r6 = 0; - if(temp == 0xffff){ - DeleteFirstMoveAndGiveMoveToMon(mon, word_2024E82); - } - } - } - - end: - - CalculateMonStats(mon); -} - -__attribute__((naked)) -u16 sub_8041570(struct BoxPokemon * daycare_data, u8 a2){ - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r9\n\ - mov r6, r8\n\ - push {r6,r7}\n\ - sub sp, 0x68\n\ - adds r5, r0, 0\n\ - lsls r1, 24\n\ - lsrs r4, r1, 24\n\ - lsls r7, r4, 2\n\ - adds r0, r7, r4\n\ - lsls r0, 4\n\ - adds r6, r5, r0\n\ - ldr r1, _08041640 @ =gStringVar1\n\ - adds r0, r6, 0\n\ - bl GetBoxMonNick\n\ - adds r0, r6, 0\n\ - movs r1, 0xB\n\ - bl GetBoxMonData\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - mov r9, r0\n\ - adds r0, r6, 0\n\ - mov r1, sp\n\ - bl sub_803B4B4\n\ - mov r0, sp\n\ - movs r1, 0x38\n\ - bl GetMonData\n\ - cmp r0, 0x64\n\ - beq _080415D8\n\ - mov r0, sp\n\ - movs r1, 0x19\n\ - bl GetMonData\n\ - movs r2, 0x88\n\ - lsls r2, 1\n\ - adds r1, r5, r2\n\ - adds r1, r7\n\ - ldr r1, [r1]\n\ - adds r0, r1\n\ - str r0, [sp, 0x64]\n\ - add r2, sp, 0x64\n\ - mov r0, sp\n\ - movs r1, 0x19\n\ - bl SetMonData\n\ - mov r0, sp\n\ - bl sub_804151C\n\ -_080415D8:\n\ - ldr r0, _08041644 @ =gPlayerParty\n\ - movs r1, 0xFA\n\ - lsls r1, 1\n\ - adds r1, r0\n\ - mov r8, r1\n\ - mov r0, r8\n\ - mov r1, sp\n\ - movs r2, 0x64\n\ - bl memcpy\n\ - lsls r0, r4, 3\n\ - subs r0, r4\n\ - lsls r1, r0, 3\n\ - adds r0, r5, r1\n\ - adds r0, 0xC0\n\ - ldrh r0, [r0]\n\ - cmp r0, 0\n\ - beq _08041610\n\ - adds r4, r1, 0\n\ - adds r4, 0xA0\n\ - adds r4, r5, r4\n\ - mov r0, r8\n\ - adds r1, r4, 0\n\ - bl GiveMailToMon2\n\ - adds r0, r4, 0\n\ - bl sub_80417F4\n\ -_08041610:\n\ - bl party_compaction\n\ - adds r0, r6, 0\n\ - bl ZeroBoxMonData\n\ - movs r2, 0x88\n\ - lsls r2, 1\n\ - adds r0, r5, r2\n\ - adds r0, r7\n\ - movs r1, 0\n\ - str r1, [r0]\n\ - adds r0, r5, 0\n\ - bl sub_80414C0\n\ - bl CalculatePlayerPartyCount\n\ - mov r0, r9\n\ - add sp, 0x68\n\ - pop {r3,r4}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - pop {r4-r7}\n\ - pop {r1}\n\ - bx r1\n\ - .align 2, 0\n\ -_08041640: .4byte gStringVar1\n\ -_08041644: .4byte gPlayerParty\n\ - .syntax divided"); -} - -extern u8 gSpecialVar_0x8004; - -u16 sub_8041648() -{ - return sub_8041570(gSaveBlock1.daycareData, gSpecialVar_0x8004); -} - -u8 Daycare_GetLevelAfterSteps(struct BoxPokemon * mon, u32 steps){ - struct BoxPokemon temp = *mon; - u32 new_exp = GetBoxMonData(mon, MON_DATA_EXP) + steps; - SetBoxMonData(&temp, MON_DATA_EXP, (u8 *) &new_exp); - return GetLevelFromBoxMonExp(&temp); -} diff --git a/src/de_rom_8040FE0.c b/src/de_rom_8040FE0.c index c618ebdb2..eebcc1437 100644 --- a/src/de_rom_8040FE0.c +++ b/src/de_rom_8040FE0.c @@ -142,124 +142,124 @@ u8 *de_sub_8041024(s32 arg0, u32 arg1) { __attribute__((naked)) void de_sub_8041024(void) { asm(".syntax unified\n\ - push {r4-r6,lr}\n\ - adds r2, r0, 0\n\ - adds r6, r1, 0\n\ - movs r0, 0x80\n\ - lsls r0, 3\n\ - cmp r2, r0\n\ - beq _0804104A\n\ - cmp r2, r0\n\ - bgt _08041040\n\ - movs r0, 0x80\n\ - lsls r0, 1\n\ - cmp r2, r0\n\ - beq _08041064\n\ - b _0804109C\n\ + push {r4-r6,lr}\n\ + adds r2, r0, 0\n\ + adds r6, r1, 0\n\ + movs r0, 0x80\n\ + lsls r0, 3\n\ + cmp r2, r0\n\ + beq _0804104A\n\ + cmp r2, r0\n\ + bgt _08041040\n\ + movs r0, 0x80\n\ + lsls r0, 1\n\ + cmp r2, r0\n\ + beq _08041064\n\ + b _0804109C\n\ _08041040:\n\ - movs r0, 0x80\n\ - lsls r0, 4\n\ - cmp r2, r0\n\ - beq _08041086\n\ - b _0804109C\n\ + movs r0, 0x80\n\ + lsls r0, 4\n\ + cmp r2, r0\n\ + beq _08041086\n\ + b _0804109C\n\ _0804104A:\n\ - bl GetSecretBaseTrainerNameIndex\n\ - lsls r0, 24\n\ - lsrs r5, r0, 24\n\ - ldr r0, _08041060 @ =0x02017000\n\ - ldrb r0, [r0, 0x1]\n\ - lsls r0, 27\n\ - lsrs r2, r0, 31\n\ - cmp r5, 0x1A\n\ - beq _080410B8\n\ - b _080410F8\n\ - .align 2, 0\n\ + bl GetSecretBaseTrainerNameIndex\n\ + lsls r0, 24\n\ + lsrs r5, r0, 24\n\ + ldr r0, _08041060 @ =0x02017000\n\ + ldrb r0, [r0, 0x1]\n\ + lsls r0, 27\n\ + lsrs r2, r0, 31\n\ + cmp r5, 0x1A\n\ + beq _080410B8\n\ + b _080410F8\n\ + .align 2, 0\n\ _08041060: .4byte 0x02017000\n\ _08041064:\n\ - bl de_sub_81364AC\n\ - lsls r0, 24\n\ - lsrs r4, r0, 24\n\ - bl get_trainer_class_name_index\n\ + bl de_sub_81364AC\n\ + lsls r0, 24\n\ + lsrs r4, r0, 24\n\ + bl get_trainer_class_name_index\n\ _08041070:\n\ - lsls r0, 24\n\ - lsrs r5, r0, 24\n\ - cmp r4, 0x1E\n\ - beq _08041094\n\ - adds r0, r4, 0\n\ - subs r0, 0x3D\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - cmp r0, 0x2\n\ - bls _080410CC\n\ - b _080410F8\n\ + lsls r0, 24\n\ + lsrs r5, r0, 24\n\ + cmp r4, 0x1E\n\ + beq _08041094\n\ + adds r0, r4, 0\n\ + subs r0, 0x3D\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + cmp r0, 0x2\n\ + bls _080410CC\n\ + b _080410F8\n\ _08041086:\n\ - bl de_sub_81364F8\n\ - lsls r0, 24\n\ - lsrs r4, r0, 24\n\ - bl sub_8135FD8\n\ - b _08041070\n\ + bl de_sub_81364F8\n\ + lsls r0, 24\n\ + lsrs r4, r0, 24\n\ + bl sub_8135FD8\n\ + b _08041070\n\ _08041094:\n\ - movs r0, 0x1\n\ - bl de_sub_8040FE0\n\ - b _08041102\n\ + movs r0, 0x1\n\ + bl de_sub_8040FE0\n\ + b _08041102\n\ _0804109C:\n\ - ldr r1, _080410C0 @ =gTrainers\n\ - lsls r4, r6, 2\n\ - adds r0, r4, r6\n\ - lsls r0, 3\n\ - adds r0, r1\n\ - ldrb r5, [r0, 0x1]\n\ - lsls r0, r6, 16\n\ - lsrs r0, 16\n\ - bl sub_803FC58\n\ - lsls r0, 24\n\ - lsrs r2, r0, 24\n\ - cmp r5, 0x1A\n\ - bne _080410C4\n\ + ldr r1, _080410C0 @ =gTrainers\n\ + lsls r4, r6, 2\n\ + adds r0, r4, r6\n\ + lsls r0, 3\n\ + adds r0, r1\n\ + ldrb r5, [r0, 0x1]\n\ + lsls r0, r6, 16\n\ + lsrs r0, 16\n\ + bl sub_803FC58\n\ + lsls r0, 24\n\ + lsrs r2, r0, 24\n\ + cmp r5, 0x1A\n\ + bne _080410C4\n\ _080410B8:\n\ - adds r0, r2, 0\n\ - bl de_sub_8040FE0\n\ - b _08041102\n\ - .align 2, 0\n\ + adds r0, r2, 0\n\ + bl de_sub_8040FE0\n\ + b _08041102\n\ + .align 2, 0\n\ _080410C0: .4byte gTrainers\n\ _080410C4:\n\ - cmp r5, 0x2E\n\ - bne _080410D4\n\ - cmp r2, 0x1\n\ - bne _080410D4\n\ + cmp r5, 0x2E\n\ + bne _080410D4\n\ + cmp r2, 0x1\n\ + bne _080410D4\n\ _080410CC:\n\ - movs r0, 0x1\n\ - bl de_sub_8040FF4\n\ - b _08041102\n\ + movs r0, 0x1\n\ + bl de_sub_8040FF4\n\ + b _08041102\n\ _080410D4:\n\ - cmp r5, 0x19\n\ - bne _080410F8\n\ - ldr r0, _080410F4 @ =gTrainers\n\ - adds r1, r4, r6\n\ - lsls r1, 3\n\ - adds r1, r0\n\ - ldrb r0, [r1, 0x18]\n\ - movs r2, 0\n\ - cmp r0, 0x1\n\ - bne _080410EA\n\ - movs r2, 0x1\n\ + cmp r5, 0x19\n\ + bne _080410F8\n\ + ldr r0, _080410F4 @ =gTrainers\n\ + adds r1, r4, r6\n\ + lsls r1, 3\n\ + adds r1, r0\n\ + ldrb r0, [r1, 0x18]\n\ + movs r2, 0\n\ + cmp r0, 0x1\n\ + bne _080410EA\n\ + movs r2, 0x1\n\ _080410EA:\n\ - adds r0, r2, 0\n\ - bl de_sub_804100C\n\ - b _08041102\n\ - .align 2, 0\n\ + adds r0, r2, 0\n\ + bl de_sub_804100C\n\ + b _08041102\n\ + .align 2, 0\n\ _080410F4: .4byte gTrainers\n\ _080410F8:\n\ - movs r0, 0xD\n\ - adds r1, r5, 0\n\ - muls r1, r0\n\ - ldr r0, _08041108 @ =gTrainerClassNames\n\ - adds r0, r1, r0\n\ + movs r0, 0xD\n\ + adds r1, r5, 0\n\ + muls r1, r0\n\ + ldr r0, _08041108 @ =gTrainerClassNames\n\ + adds r0, r1, r0\n\ _08041102:\n\ - pop {r4-r6}\n\ - pop {r1}\n\ - bx r1\n\ - .align 2, 0\n\ + pop {r4-r6}\n\ + pop {r1}\n\ + bx r1\n\ + .align 2, 0\n\ _08041108: .4byte gTrainerClassNames\n\ .syntax divided\n"); } diff --git a/src/matsuda_debug_menu.c b/src/debug/matsuda_debug_menu.c similarity index 99% rename from src/matsuda_debug_menu.c rename to src/debug/matsuda_debug_menu.c index 3665cabd8..c7d81f502 100644 --- a/src/matsuda_debug_menu.c +++ b/src/debug/matsuda_debug_menu.c @@ -8,7 +8,7 @@ #include "main.h" #include "menu.h" #include "palette.h" -#include "rom4.h" +#include "overworld.h" #include "sprite.h" #include "start_menu.h" #include "string_util.h" diff --git a/src/mori_debug_menu.c b/src/debug/mori_debug_menu.c similarity index 88% rename from src/mori_debug_menu.c rename to src/debug/mori_debug_menu.c index 2d9e3fa6f..1595ecd2e 100644 --- a/src/mori_debug_menu.c +++ b/src/debug/mori_debug_menu.c @@ -12,9 +12,10 @@ #define SIO_MULTI_CNT ((struct SioMultiCnt *)REG_ADDR_SIOCNT) -extern u8 gUnknown_03004DA0[]; extern u8 (*gCallback_03004AE8)(void); +u8 gUnknown_03004DA0[0x20]; + extern u8 gUnknown_0839B22C[][3]; extern u8 gUnknown_0839B24A[]; extern u8 gUnknown_0839B24D[]; @@ -51,7 +52,7 @@ u8 MoriDebugMenu_SearchChild(u8 a1, u8 a2, u8 *ptr) u16 monData; u16 var; - monData = GetMonData(gPlayerParty, 11, ptr); + monData = GetMonData(gPlayerParty, MON_DATA_SPECIES, ptr); var = sub_8041870(monData); StringCopy(localPtr, gSpeciesNames[monData]); StringAppend(localPtr, gUnknown_0839B24D); @@ -66,7 +67,7 @@ u8 MoriDebugMenu_SearchChild(u8 a1, u8 a2, u8 *ptr) s8 MoriDebugMenu_Egg(void) { - if ( Daycare_CountPokemon(gSaveBlock1.daycareData) == 2 && daycare_relationship_score_from_savegame() ) + if ( Daycare_CountPokemon(&gSaveBlock1.daycareData) == 2 && daycare_relationship_score_from_savegame() ) sub_8041940(); CloseMenu(); @@ -75,7 +76,7 @@ s8 MoriDebugMenu_Egg(void) s8 MoriDebugMenu_MaleEgg(void) { - if ( Daycare_CountPokemon(gSaveBlock1.daycareData) == 2 && daycare_relationship_score_from_savegame() ) + if ( Daycare_CountPokemon(&gSaveBlock1.daycareData) == 2 && daycare_relationship_score_from_savegame() ) sub_8041950(); CloseMenu(); @@ -116,7 +117,7 @@ s8 MoriDebugMenu_BreedEgg(void) SetMonData(&gPlayerParty[loopCounter], MON_DATA_FRIENDSHIP, &friendship); } } - gSaveBlock1.filler_30B6 = -3; + gSaveBlock1.daycareData.misc.countersEtc.unk_11a = -3; CloseMenu(); return 1; } @@ -133,7 +134,7 @@ s8 MoriDebugMenu_PokeblockCase(void) s32 loopCounter; for (loopCounter = 0; loopCounter <= 39; loopCounter++) - sub_810CA6C(loopCounter); + PokeblockClearIfExists(loopCounter); CloseMenu(); return 1; diff --git a/src/debug/sound_check_menu.c b/src/debug/sound_check_menu.c new file mode 100644 index 000000000..14261b75e --- /dev/null +++ b/src/debug/sound_check_menu.c @@ -0,0 +1,1300 @@ +#include "global.h" +#include "sprite.h" +#include "palette.h" +#include "task.h" +#include "m4a.h" +#include "main.h" +#include "text.h" +#include "menu.h" +#include "songs.h" +#include "title_screen.h" +#include "sound.h" +#include "pokedex_cry_screen.h" + +// local task defines +#define tWindowSelected data[0] +#define tBgmIndex data[1] +#define tSeIndex data[2] + +// window selections +enum +{ + BGM_WINDOW, + SE_WINDOW +}; + +// driver test cry enums +enum +{ + CRY_TEST_VOICE, + CRY_TEST_VOLUME, + CRY_TEST_PANPOT, + CRY_TEST_PITCH, + CRY_TEST_LENGTH, + CRY_TEST_RELEASE, + CRY_TEST_PROGRESS, + CRY_TEST_CHORUS, + CRY_TEST_PRIORITY +}; + +// minmax range enums +enum +{ + MIN, + MAX +}; + +extern struct ToneData voicegroup_84537C0[]; +extern struct ToneData voicegroup_8452590[]; +extern struct ToneData voicegroup_8453DC0[]; +extern struct ToneData voicegroup_8452B90[]; +extern struct ToneData voicegroup_84543C0[]; +extern struct ToneData voicegroup_8453190[]; +extern struct ToneData voicegroup_84549C0[]; +extern struct ToneData voicegroup_8453790[]; + +static EWRAM_DATA u8 gUnknown_020387B0 = 0; +static EWRAM_DATA u8 gUnknown_020387B1 = 0; +static EWRAM_DATA u8 gUnknown_020387B2 = 0; +static EWRAM_DATA s8 sDriverTestSelection = 0; +static EWRAM_DATA int sSoundTestParams[9] = {0}; +static EWRAM_DATA u8 gUnknown_020387D8 = 0; +static EWRAM_DATA u8 gUnknown_020387D9 = 0; + +u16 gSoundTestCryNum; +extern u8 gUnknown_03005E98; + +struct MusicPlayerInfo *gUnknown_03005D30; + +extern struct MusicPlayerInfo gMPlay_BGM; + +void Task_InitSoundCheckMenu(u8); +void sub_80BA384(u8); +void sub_80BA65C(u8); +void sub_80BA68C(u8); +void HighlightSelectedWindow(u8); +void PrintSoundNumber(u16, u16, u16); +void sub_80BA79C(const u8 *const, u16, u16); +void Task_DrawDriverTestMenu(u8); +void Task_ProcessDriverTestInput(u8); +void AdjustSelectedDriverParam(s8); +void PrintDriverTestMenuText(void); +void sub_80BAE10(u8, u8); +void PrintSignedNumber(int, u16, u16, u8); +void sub_80BAF84(u8); +void sub_80BB038(u8); +void sub_80BB1D4(void); +void Task_InitCryTest(u8); +void Task_ProcessCryTestInput(u8); +void PrintCryNumber(void); + +void CB2_SoundCheckMenu(void) +{ + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +void VBlankCB_SoundCheckMenu(void) +{ + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); + + if (gUnknown_020387B0 != 0) + { + m4aSoundMain(); + m4aSoundMain(); + m4aSoundMain(); + } +} + +// unused +void CB2_StartSoundCheckMenu(void) +{ + u8 taskId; + + SetVBlankCallback(NULL); + REG_DISPCNT = 0; + REG_BG2CNT = 0; + REG_BG1CNT = 0; + REG_BG0CNT = 0; + REG_BG2HOFS = 0; + REG_BG2VOFS = 0; + REG_BG1HOFS = 0; + REG_BG1VOFS = 0; + REG_BG0HOFS = 0; + REG_BG0VOFS = 0; + DmaFill16(3, 0, VRAM, VRAM_SIZE); + DmaFill32(3, 0, OAM, OAM_SIZE); + DmaFill16(3, 0, PLTT, PLTT_SIZE); + ResetPaletteFade(); + ResetTasks(); + ResetSpriteData(); + SetUpWindowConfig(&gWindowConfig_81E6C3C); + InitMenuWindow(&gWindowConfig_81E6CE4); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0); + REG_WIN0H = WIN_RANGE(0, 0); + REG_WIN0V = WIN_RANGE(0, 0); + REG_WIN1H = WIN_RANGE(0, 0); + REG_WIN1V = WIN_RANGE(0, 0); + REG_WININ = 0x1111; + REG_WINOUT = 0x31; + REG_BLDCNT = 0xE1; + REG_BLDALPHA = 0; + REG_BLDY = 7; + REG_IE = 1; // could be a typo of REG_IME + REG_IE |= 1; + REG_DISPSTAT |= 8; + SetVBlankCallback(VBlankCB_SoundCheckMenu); + SetMainCallback2(CB2_SoundCheckMenu); + REG_DISPCNT = 0x7140; + taskId = CreateTask(Task_InitSoundCheckMenu, 0); + gTasks[taskId].tWindowSelected = BGM_WINDOW; + gTasks[taskId].tBgmIndex = 0; + gTasks[taskId].tSeIndex = 0; + gTasks[taskId].data[3] = 0; + gUnknown_020387B0 = 0; + gTasks[taskId].data[3] = 0; // why? + m4aSoundInit(); +} + +void Task_InitSoundCheckMenu(u8 taskId) +{ + u8 soundcheckStr[] = _("サウンドチェック"); + u8 bgmStr[] = _("BGM"); + u8 seStr[] = _("SE "); + u8 abDescStr[] = _("A‥さいせい B‥おわり"); + u8 upDownStr[] = _("L‥UP R‥DOWN"); + u8 driverStr[] = _("R‥DRIVER-TEST"); + + if (!gPaletteFade.active) + { + MenuDrawTextWindow(2, 0, 27, 3); + MenuDrawTextWindow(2, 5, 27, 10); + MenuDrawTextWindow(2, 12, 27, 17); + MenuPrint(soundcheckStr, 4, 1); + MenuPrint(abDescStr, 14, 1); + MenuPrint(bgmStr, 4, 6); + MenuPrint(upDownStr, 14, 6); + MenuPrint(seStr, 4, 13); + MenuPrint(upDownStr, 14, 13); + MenuPrint(driverStr, 14, 18); + gTasks[taskId].func = sub_80BA384; + REG_WIN0H = WIN_RANGE(17, 223); + REG_WIN0V = WIN_RANGE(1, 31); + } +} + +// ideally this should be a multi Coords8 struct, but it wont match when its treated like a struct. +static const u8 gUnknown_083D0300[] = { 1, 1, 1, 3, 1, 5, 1, 7, 1, 9, 1, 11, 1, 13, 1, 15, 1, 17 }; + +extern const u8 *const gBGMNames[]; +extern const u8 *const gSENames[]; + +void sub_80BA384(u8 taskId) // Task_HandleDrawingSoundCheckMenuText +{ + HighlightSelectedWindow(gTasks[taskId].tWindowSelected); + PrintSoundNumber(gTasks[taskId].tBgmIndex + BGM_STOP, 7, 8); // print by BGM index + sub_80BA79C(gBGMNames[gTasks[taskId].tBgmIndex], 11, 8); + PrintSoundNumber(gTasks[taskId].tSeIndex, 7, 15); + sub_80BA79C(gSENames[gTasks[taskId].tSeIndex], 11, 15); + gTasks[taskId].func = sub_80BA65C; +} + +bool8 Task_ProcessSoundCheckMenuInput(u8 taskId) +{ + if (gMain.newKeys & R_BUTTON) // driver test + { + gTasks[taskId].func = Task_DrawDriverTestMenu; + } + else if (gMain.newKeys & L_BUTTON) + { + gTasks[taskId].func = sub_80BAF84; + } + else if (gMain.newKeys & START_BUTTON) + { + gTasks[taskId].func = Task_InitCryTest; + } + else if (gMain.newKeys & A_BUTTON) + { + if (gTasks[taskId].tWindowSelected != 0) // is playing? + { + if (gTasks[taskId].data[4] != 0) + { + if (gTasks[taskId].tSeIndex != 0) + { + m4aSongNumStop(gTasks[taskId].data[4]); + m4aSongNumStart(gTasks[taskId].tSeIndex); + gTasks[taskId].data[4] = gTasks[taskId].tSeIndex; + } + else + { + m4aSongNumStop(gTasks[taskId].data[4]); + gTasks[taskId].data[4] = 0; + } + } + else if (gTasks[taskId].tSeIndex != 0) + { + m4aSongNumStart(gTasks[taskId].tSeIndex); + gTasks[taskId].data[4] = gTasks[taskId].tSeIndex; + } + } + else + { + if (gTasks[taskId].data[3] != 0) + { + if (gTasks[taskId].tBgmIndex != 0) + { + m4aSongNumStop(gTasks[taskId].data[3] + BGM_STOP); + m4aSongNumStart(gTasks[taskId].tBgmIndex + BGM_STOP); + gTasks[taskId].data[3] = gTasks[taskId].tBgmIndex; + } + else + { + m4aSongNumStop(gTasks[taskId].data[3] + BGM_STOP); + gTasks[taskId].data[3] = 0; + } + } + else if (gTasks[taskId].tBgmIndex != 0) + { + m4aSongNumStart(gTasks[taskId].tBgmIndex + BGM_STOP); + gTasks[taskId].data[3] = gTasks[taskId].tBgmIndex; + } + } + } + else if (gMain.newKeys & B_BUTTON) + { + m4aSongNumStart(SE_SELECT); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); + gTasks[taskId].func = sub_80BA68C; + } + else if (gMain.newAndRepeatedKeys & DPAD_UP) + { + gTasks[taskId].tWindowSelected ^= 1; + return TRUE; + } + else if (gMain.newAndRepeatedKeys & DPAD_DOWN) + { + gTasks[taskId].tWindowSelected ^= 1; + return TRUE; + } + else if (gMain.newAndRepeatedKeys & DPAD_RIGHT) + { + if (gTasks[taskId].tWindowSelected != 0) + { + if (gTasks[taskId].tSeIndex > 0) + gTasks[taskId].tSeIndex--; + else + gTasks[taskId].tSeIndex = 247; + } + else + { + if (gTasks[taskId].tBgmIndex > 0) + gTasks[taskId].tBgmIndex--; + else + gTasks[taskId].tBgmIndex = 117; + } + return TRUE; + } + else if (gMain.newAndRepeatedKeys & DPAD_LEFT) + { + if (gTasks[taskId].tWindowSelected != 0) + { + if (gTasks[taskId].tSeIndex < 247) + gTasks[taskId].tSeIndex++; + else + gTasks[taskId].tSeIndex = 0; + } + else + { + if (gTasks[taskId].tBgmIndex < 117) + gTasks[taskId].tBgmIndex++; + else + gTasks[taskId].tBgmIndex = 0; + } + return TRUE; + } + else if (gMain.heldKeys & SELECT_BUTTON) + { + gUnknown_020387B0 = 1; + } + else + { + gUnknown_020387B0 = 0; + } + return FALSE; +} + +void sub_80BA65C(u8 taskId) +{ + if (Task_ProcessSoundCheckMenuInput(taskId) != FALSE) + gTasks[taskId].func = sub_80BA384; +} + +void sub_80BA68C(u8 taskId) +{ + if (!gPaletteFade.active) + { + DestroyTask(taskId); + SetMainCallback2(CB2_InitTitleScreen); + } +} + +void HighlightSelectedWindow(u8 windowType) +{ + switch (windowType) + { + case BGM_WINDOW: + default: + REG_WIN1H = WIN_RANGE(17, 223); + REG_WIN1V = WIN_RANGE(41, 87); + break; + case SE_WINDOW: + REG_WIN1H = WIN_RANGE(17, 223); + REG_WIN1V = WIN_RANGE(97, 143); + break; + } +} + +void PrintSoundNumber(u16 soundIndex, u16 x, u16 y) // PrintSoundNumber ? +{ + u8 i; + u8 str[5]; + bool8 someBool; + u8 divisorValue; + + for (i = 0; i < 3; i++) + str[i] = 0; // initialize array + + str[3] = CHAR_ELLIPSIS; + str[4] = EOS; + someBool = FALSE; + + divisorValue = soundIndex / 100; + if (divisorValue) + { + str[0] = divisorValue + CHAR_0; + someBool = TRUE; + } + + divisorValue = (soundIndex % 100) / 10; + if (divisorValue || someBool) + str[1] = divisorValue + CHAR_0; + + str[2] = ((soundIndex % 100) % 10) + CHAR_0; + MenuPrint(str, x, y); +} + +void sub_80BA79C(const u8 *const string, u16 x, u16 y) +{ + u8 i; + u8 str[11]; + + for (i = 0; i <= 10; i++) + str[i] = 0; // format string. + + str[10] = EOS; // the above for loop formats the last element of the array unnecessarily. + + for (i = 0; string[i] != EOS && i < 10; i++) + str[i] = string[i]; + + MenuPrint(str, x, y); +} + +void Task_DrawDriverTestMenu(u8 taskId) // Task_DrawDriverTestMenu +{ + u8 bbackStr[] = _("Bぼたんで もどる"); + u8 aplayStr[] = _("Aぼたんで さいせい"); + u8 voiceStr[] = _("VOICE‥‥‥‥"); + u8 volumeStr[] = _("VOLUME‥‥‥"); + u8 panpotStr[] = _("PANPOT‥‥‥"); + u8 pitchStr[] = _("PITCH‥‥‥‥"); + u8 lengthStr[] = _("LENGTH‥‥‥"); + u8 releaseStr[] = _("RELEASE‥‥"); + u8 progressStr[] = _("PROGRESS‥"); + u8 chorusStr[] = _("CHORUS‥‥‥"); + u8 priorityStr[] = _("PRIORITY‥"); + u8 playingStr[] = _("さいせいちゆう‥"); // 再生中 (playing) + u8 reverseStr[] = _("はんてん‥‥‥‥"); // 反転 (reverse) + u8 stereoStr[] = _("すてれお‥‥‥‥"); // stereo + + REG_DISPCNT = 0x3140; + MenuDrawTextWindow(0, 0, 29, 19); + MenuPrint(bbackStr, 19, 4); + MenuPrint(aplayStr, 19, 2); + MenuPrint(voiceStr, 2, 1); + MenuPrint(volumeStr, 2, 3); + MenuPrint(panpotStr, 2, 5); + MenuPrint(pitchStr, 2, 7); + MenuPrint(lengthStr, 2, 9); + MenuPrint(releaseStr, 2, 11); + MenuPrint(progressStr, 2, 13); + MenuPrint(chorusStr, 2, 15); + MenuPrint(priorityStr, 2, 17); + MenuPrint(playingStr, 19, 16); + MenuPrint(reverseStr, 19, 14); + MenuPrint(stereoStr, 19, 12); + REG_WIN0H = WIN_RANGE(0, DISPLAY_WIDTH); + REG_WIN0V = WIN_RANGE(0, DISPLAY_HEIGHT); + sDriverTestSelection = 0; + gUnknown_020387B1 = 0; + gUnknown_020387B2 = 0; + gUnknown_03005D30 = NULL; + gUnknown_020387D8 = 0; + gUnknown_020387D9 = 1; + sSoundTestParams[CRY_TEST_VOICE] = 0; + sSoundTestParams[CRY_TEST_VOLUME] = 120; + sSoundTestParams[CRY_TEST_PANPOT] = 0; + sSoundTestParams[CRY_TEST_PITCH] = 15360; + sSoundTestParams[CRY_TEST_LENGTH] = 180; + sSoundTestParams[CRY_TEST_PROGRESS] = 0; + sSoundTestParams[CRY_TEST_RELEASE] = 0; + sSoundTestParams[CRY_TEST_CHORUS] = 0; + sSoundTestParams[CRY_TEST_PRIORITY] = 2; + PrintDriverTestMenuText(); + sub_80BAE10(0, 0); + gTasks[taskId].func = Task_ProcessDriverTestInput; +} + +void Task_ProcessDriverTestInput(u8 taskId) +{ + if (gMain.newKeys & B_BUTTON) + { + REG_DISPCNT = 0x7140; + REG_WIN0H = WIN_RANGE(17, 223); + REG_WIN0V = WIN_RANGE(1, 31); + MenuZeroFillWindowRect(0, 0, 29, 19); + gTasks[taskId].func = Task_InitSoundCheckMenu; + return; + } + if (gMain.newAndRepeatedKeys & DPAD_UP) // _080BAAA8 + { + u8 old = sDriverTestSelection; + + if(--sDriverTestSelection < 0) + sDriverTestSelection = 8; + sub_80BAE10(old, sDriverTestSelection); + return; + } + if (gMain.newAndRepeatedKeys & DPAD_DOWN) // _080BAAD0 + { + u8 old = sDriverTestSelection; + + if(++sDriverTestSelection > 8) + sDriverTestSelection = 0; + sub_80BAE10(old, sDriverTestSelection); + return; + } + if (gMain.newKeys & START_BUTTON) // _080BAAF8 + { + gUnknown_020387D8 ^= 1; + PrintDriverTestMenuText(); + return; + } + if (gMain.newKeys & SELECT_BUTTON) // _080BAB14 + { + gUnknown_020387D9 ^= 1; + PrintDriverTestMenuText(); + SetPokemonCryStereo(gUnknown_020387D9); + return; + } + if (gMain.newAndRepeatedKeys & R_BUTTON) // _080BAB38 + { + AdjustSelectedDriverParam(10); + PrintDriverTestMenuText(); + return; + } + if (gMain.newAndRepeatedKeys & L_BUTTON) // _080BAB46 + { + AdjustSelectedDriverParam(-10); + PrintDriverTestMenuText(); + return; + } + if (gMain.newAndRepeatedKeys & DPAD_LEFT) // _080BAB56 + { + AdjustSelectedDriverParam(-1); + PrintDriverTestMenuText(); + return; + } + if (gMain.newAndRepeatedKeys & DPAD_RIGHT) // _080BAB64 + { + AdjustSelectedDriverParam(1); + PrintDriverTestMenuText(); + return; + } + if (gMain.newKeys & A_BUTTON) // _080BAB78 + { + u8 divide, remaining; + + SetPokemonCryVolume(sSoundTestParams[CRY_TEST_VOLUME]); + SetPokemonCryPanpot(sSoundTestParams[CRY_TEST_PANPOT]); + SetPokemonCryPitch(sSoundTestParams[CRY_TEST_PITCH]); + SetPokemonCryLength(sSoundTestParams[CRY_TEST_LENGTH]); + SetPokemonCryProgress(sSoundTestParams[CRY_TEST_PROGRESS]); + SetPokemonCryRelease(sSoundTestParams[CRY_TEST_RELEASE]); + SetPokemonCryChorus(sSoundTestParams[CRY_TEST_CHORUS]); + SetPokemonCryPriority(sSoundTestParams[CRY_TEST_PRIORITY]); + + remaining = sSoundTestParams[CRY_TEST_VOICE] % 128; + divide = sSoundTestParams[CRY_TEST_VOICE] / 128; + + switch (divide) + { + case 0: + if (gUnknown_020387D8) + gUnknown_03005D30 = SetPokemonCryTone(&voicegroup_84537C0[remaining]); + else + gUnknown_03005D30 = SetPokemonCryTone(&voicegroup_8452590[remaining]); + break; + case 1: + if (gUnknown_020387D8) + gUnknown_03005D30 = SetPokemonCryTone(&voicegroup_8453DC0[remaining]); + else + gUnknown_03005D30 = SetPokemonCryTone(&voicegroup_8452B90[remaining]); + break; + case 2: + if (gUnknown_020387D8) + gUnknown_03005D30 = SetPokemonCryTone(&voicegroup_84543C0[remaining]); + else + gUnknown_03005D30 = SetPokemonCryTone(&voicegroup_8453190[remaining]); + break; + case 3: + if (gUnknown_020387D8) + gUnknown_03005D30 = SetPokemonCryTone(&voicegroup_84549C0[remaining]); + else + gUnknown_03005D30 = SetPokemonCryTone(&voicegroup_8453790[remaining]); + break; + } + } + + // _080BACA2 + if (gUnknown_03005D30 != NULL) + { + gUnknown_020387B1 = IsPokemonCryPlaying(gUnknown_03005D30); + + if (gUnknown_020387B1 != gUnknown_020387B2) + PrintDriverTestMenuText(); + + gUnknown_020387B2 = gUnknown_020387B1; + } +} + +void AdjustSelectedDriverParam(s8 delta) +{ + // also ideally should be a MinMax struct, but any attempt to make this into a struct causes it to not match due to the weird multi dim access. + int paramRanges[] = + { + 0, 387, // Voice + 0, 127, // Volume + -127, 127, // Panpot + -128, 32639, // Pitch + 0, 65535, // Length + 0, 255, // Release + 0, 65535, // Progress + -64, 63 // Chorus + // Priority??? Why is it missing? + }; + + sSoundTestParams[sDriverTestSelection] += delta; + + if (sSoundTestParams[sDriverTestSelection] > paramRanges[MULTI_DIM_ARR(sDriverTestSelection, B_16, MAX)]) + sSoundTestParams[sDriverTestSelection] = paramRanges[MULTI_DIM_ARR(sDriverTestSelection, B_16, MIN)]; + + if (sSoundTestParams[sDriverTestSelection] < paramRanges[MULTI_DIM_ARR(sDriverTestSelection, B_16, MIN)]) + sSoundTestParams[sDriverTestSelection] = paramRanges[MULTI_DIM_ARR(sDriverTestSelection, B_16, MAX)]; +} + +void PrintDriverTestMenuText(void) +{ + PrintSignedNumber(sSoundTestParams[CRY_TEST_VOICE] + 1, 11, 1, 5); + PrintSignedNumber(sSoundTestParams[CRY_TEST_VOLUME], 11, 3, 5); + PrintSignedNumber(sSoundTestParams[CRY_TEST_PANPOT], 11, 5, 5); + PrintSignedNumber(sSoundTestParams[CRY_TEST_PITCH], 11, 7, 5); + PrintSignedNumber(sSoundTestParams[CRY_TEST_LENGTH], 11, 9, 5); + PrintSignedNumber(sSoundTestParams[CRY_TEST_RELEASE], 11, 11, 5); + PrintSignedNumber(sSoundTestParams[CRY_TEST_PROGRESS], 11, 13, 5); + PrintSignedNumber(sSoundTestParams[CRY_TEST_CHORUS], 11, 15, 5); + PrintSignedNumber(sSoundTestParams[CRY_TEST_PRIORITY], 11, 17, 5); + PrintSignedNumber(gUnknown_020387B1, 27, 16, 1); + PrintSignedNumber(gUnknown_020387D8, 27, 14, 1); + PrintSignedNumber(gUnknown_020387D9, 27, 12, 1); +} + +void sub_80BAE10(u8 var1, u8 var2) +{ + u8 str1[] = _("▶"); + u8 str2[] = _(" "); + + MenuPrint(str2, gUnknown_083D0300[MULTI_DIM_ARR(var1, B_16, 0)], gUnknown_083D0300[MULTI_DIM_ARR(var1, B_16, 1)]); + MenuPrint(str1, gUnknown_083D0300[MULTI_DIM_ARR(var2, B_16, 0)], gUnknown_083D0300[MULTI_DIM_ARR(var2, B_16, 1)]); +} + +void PrintSignedNumber(int n, u16 x, u16 y, u8 digits) +{ + int powersOfTen[6] = + { + 1, + 10, + 100, + 1000, + 10000, + 100000 + }; + u8 str[8]; + s8 i; + s8 negative; + s8 someVar2; + + for (i = 0; i <= digits; i++) + str[i] = CHAR_SPACE; + str[digits + 1] = EOS; + + negative = FALSE; + if (n < 0) + { + n = -n; + negative = TRUE; + } + + if (digits == 1) + someVar2 = TRUE; + else + someVar2 = FALSE; + + for (i = digits - 1; i >= 0; i--) + { + s8 d = n / powersOfTen[i]; + + if (d != 0 || someVar2 || i == 0) + { + if (negative && !someVar2) + str[digits - i - 1] = CHAR_HYPHEN; + str[digits - i] = CHAR_0 + d; + someVar2 = TRUE; + } + n %= powersOfTen[i]; + } + + MenuPrint(str, x, y); +} + +static const s8 gUnknown_083D03F8[5] = { 0x3F, 0x00, 0xC0, 0x7F, 0x80 }; + +void sub_80BAF84(u8 taskId) +{ + u8 seStr[] = _("SE"); + u8 panStr[] = _("PAN"); + u8 playingStr[] = _("さいせいちゆう‥"); + + REG_DISPCNT = 0x3140; + MenuDrawTextWindow(0, 0, 29, 19); + MenuPrint(seStr, 3, 2); + MenuPrint(panStr, 3, 4); + MenuPrint(playingStr, 3, 8); + REG_WIN0H = WIN_RANGE(0, DISPLAY_WIDTH); + REG_WIN0V = WIN_RANGE(0, DISPLAY_HEIGHT); + sSoundTestParams[CRY_TEST_VOICE] = 1; + sSoundTestParams[CRY_TEST_PANPOT] = 0; + sSoundTestParams[CRY_TEST_CHORUS] = 0; + sSoundTestParams[CRY_TEST_PROGRESS] = 0; + sSoundTestParams[CRY_TEST_RELEASE] = 0; + sub_80BB1D4(); + gTasks[taskId].func = sub_80BB038; +} + +void sub_80BB038(u8 taskId) +{ + sub_80BB1D4(); + if (sSoundTestParams[CRY_TEST_PROGRESS]) + { + if (sSoundTestParams[CRY_TEST_RELEASE]) + { + sSoundTestParams[CRY_TEST_RELEASE]--; + } + else // _080BB05C + { + s8 panpot = gUnknown_083D03F8[sSoundTestParams[CRY_TEST_PANPOT]]; + if (panpot != -128) + { + if (panpot == 127) + { + sSoundTestParams[CRY_TEST_CHORUS] += 2; + if (sSoundTestParams[CRY_TEST_CHORUS] < 63) + SE12PanpotControl(sSoundTestParams[CRY_TEST_CHORUS]); + } + } + else // _080BB08C + { + sSoundTestParams[CRY_TEST_CHORUS] -= 2; + if (sSoundTestParams[CRY_TEST_CHORUS] > -64) + SE12PanpotControl(sSoundTestParams[CRY_TEST_CHORUS]); + } + } + } + // _080BB0A2 + if (gMain.newKeys & B_BUTTON) + { + REG_DISPCNT = 0x7140; + REG_WIN0H = WIN_RANGE(17, 223); + REG_WIN0V = WIN_RANGE(1, 31); + MenuZeroFillWindowRect(0, 0, 29, 19); + gTasks[taskId].func = Task_InitSoundCheckMenu; + return; + } + if (gMain.newKeys & A_BUTTON) // _080BB104 + { + s8 panpot = gUnknown_083D03F8[sSoundTestParams[CRY_TEST_PANPOT]]; + if (panpot != -128) + { + if (panpot == 127) + { + PlaySE12WithPanning(sSoundTestParams[CRY_TEST_VOICE], -64); + sSoundTestParams[CRY_TEST_CHORUS] = -64; + sSoundTestParams[CRY_TEST_PROGRESS] = 1; + sSoundTestParams[CRY_TEST_RELEASE] = 30; + return; + } + } + else // _080BB140 + { + PlaySE12WithPanning(sSoundTestParams[CRY_TEST_VOICE], 63); + sSoundTestParams[CRY_TEST_CHORUS] = 63; + sSoundTestParams[CRY_TEST_PROGRESS] = 1; + sSoundTestParams[CRY_TEST_RELEASE] = 30; + return; + } + // _080BB154 + PlaySE12WithPanning(sSoundTestParams[CRY_TEST_VOICE], panpot); + sSoundTestParams[CRY_TEST_PROGRESS] = 0; + return; + } + if (gMain.newKeys & L_BUTTON) // _080BB15E + { + sSoundTestParams[CRY_TEST_PANPOT]++; + if (sSoundTestParams[CRY_TEST_PANPOT] > 4) + sSoundTestParams[CRY_TEST_PANPOT] = 0; + } + if (gMain.newKeys & R_BUTTON) // _080BB176 + { + sSoundTestParams[CRY_TEST_PANPOT]--; + if (sSoundTestParams[CRY_TEST_PANPOT] < 0) + sSoundTestParams[CRY_TEST_PANPOT] = 4; + } + if (gMain.newAndRepeatedKeys & DPAD_RIGHT) // _080BB192 + { + sSoundTestParams[CRY_TEST_VOICE]++; + if (sSoundTestParams[CRY_TEST_VOICE] > 247) + sSoundTestParams[CRY_TEST_VOICE] = 0; + } + else if (gMain.newAndRepeatedKeys & DPAD_LEFT) // _080BB1B0 + { + sSoundTestParams[CRY_TEST_VOICE]--; + if (sSoundTestParams[CRY_TEST_VOICE] < 0) + sSoundTestParams[CRY_TEST_VOICE] = 247; + } +} + +void sub_80BB1D4(void) +{ + u8 lrStr[] = _(" LR"); + u8 rlStr[] = _(" RL"); + + PrintSignedNumber(sSoundTestParams[CRY_TEST_VOICE], 7, 2, 3); + + switch (gUnknown_083D03F8[sSoundTestParams[CRY_TEST_PANPOT]]) + { + case 127: + MenuPrint(lrStr, 7, 4); + break; + case -128: + MenuPrint(rlStr, 7, 4); + break; + default: + PrintSignedNumber(gUnknown_083D03F8[sSoundTestParams[CRY_TEST_PANPOT]], 7, 4, 3); + break; + } + PrintSignedNumber(IsSEPlaying(), 12, 8, 1); +} + +#define SOUND_LIST_BGM \ + X(BGM_STOP, "STOP") \ + X(BGM_TETSUJI, "TETSUJI") \ + X(BGM_FIELD13, "FIELD13") \ + X(BGM_KACHI22, "KACHI22") \ + X(BGM_KACHI2, "KACHI2") \ + X(BGM_KACHI3, "KACHI3") \ + X(BGM_KACHI5, "KACHI5") \ + X(BGM_PCC, "PCC") \ + X(BGM_NIBI, "NIBI") \ + X(BGM_SUIKUN, "SUIKUN") \ + X(BGM_DOORO1, "DOORO1") \ + X(BGM_DOORO_X1, "DOORO-X1") \ + X(BGM_DOORO_X3, "DOORO-X3") \ + X(BGM_MACHI_S2, "MACHI-S2") \ + X(BGM_MACHI_S4, "MACHI-S4") \ + X(BGM_GIM, "GIM") \ + X(BGM_NAMINORI, "NAMINORI") \ + X(BGM_DAN01, "DAN01") \ + X(BGM_FANFA1, "FANFA1") \ + X(BGM_ME_ASA, "ME-ASA") \ + X(BGM_ME_BACHI, "ME-BACHI") \ + X(BGM_FANFA4, "FANFA4") \ + X(BGM_FANFA5, "FANFA5") \ + X(BGM_ME_WAZA, "ME-WAZA") \ + X(BGM_BIJYUTU, "BIJYUTU") \ + X(BGM_DOORO_X4, "DOORO-X4") \ + X(BGM_FUNE_KAN, "FUNE-KAN") \ + X(BGM_ME_SHINKA, "ME-SHINKA") \ + X(BGM_SHINKA, "SHINKA") \ + X(BGM_ME_WASURE, "ME-WASURE") \ + X(BGM_SYOUJOEYE, "SYOUJOEYE") \ + X(BGM_BOYEYE, "BOYEYE") \ + X(BGM_DAN02, "DAN02") \ + X(BGM_MACHI_S3, "MACHI-S3") \ + X(BGM_ODAMAKI, "ODAMAKI") \ + X(BGM_B_TOWER, "B-TOWER") \ + X(BGM_SWIMEYE, "SWIMEYE") \ + X(BGM_DAN03, "DAN03") \ + X(BGM_ME_KINOMI, "ME-KINOMI") \ + X(BGM_ME_TAMA, "ME-TAMA") \ + X(BGM_ME_B_BIG, "ME-B-BIG") \ + X(BGM_ME_B_SMALL, "ME-B-SMALL") \ + X(BGM_ME_ZANNEN, "ME-ZANNEN") \ + X(BGM_BD_TIME, "BD-TIME") \ + X(BGM_TEST1, "TEST1") \ + X(BGM_TEST2, "TEST2") \ + X(BGM_TEST3, "TEST3") \ + X(BGM_TEST4, "TEST4") \ + X(BGM_TEST, "TEST") \ + X(BGM_GOMACHI0, "GOMACHI0") \ + X(BGM_GOTOWN, "GOTOWN") \ + X(BGM_POKECEN, "POKECEN") \ + X(BGM_NEXTROAD, "NEXTROAD") \ + X(BGM_GRANROAD, "GRANROAD") \ + X(BGM_CYCLING, "CYCLING") \ + X(BGM_FRIENDLY, "FRIENDLY") \ + X(BGM_MISHIRO, "MISHIRO") \ + X(BGM_TOZAN, "TOZAN") \ + X(BGM_GIRLEYE, "GIRLEYE") \ + X(BGM_MINAMO, "MINAMO") \ + X(BGM_ASHROAD, "ASHROAD") \ + X(BGM_EVENT0, "EVENT0") \ + X(BGM_DEEPDEEP, "DEEPDEEP") \ + X(BGM_KACHI1, "KACHI1") \ + X(BGM_TITLE3, "TITLE3") \ + X(BGM_DEMO1, "DEMO1") \ + X(BGM_GIRL_SUP, "GIRL-SUP") \ + X(BGM_HAGESHII, "HAGESHII") \ + X(BGM_KAKKOII, "KAKKOII") \ + X(BGM_KAZANBAI, "KAZANBAI") \ + X(BGM_AQA_0, "AQA-0") \ + X(BGM_TSURETEK, "TSURETEK") \ + X(BGM_BOY_SUP, "BOY-SUP") \ + X(BGM_RAINBOW, "RAINBOW") \ + X(BGM_AYASII, "AYASII") \ + X(BGM_KACHI4, "KACHI4") \ + X(BGM_ROPEWAY, "ROPEWAY") \ + X(BGM_CASINO, "CASINO") \ + X(BGM_HIGHTOWN, "HIGHTOWN") \ + X(BGM_SAFARI, "SAFARI") \ + X(BGM_C_ROAD, "C-ROAD") \ + X(BGM_AJITO, "AJITO") \ + X(BGM_M_BOAT, "M-BOAT") \ + X(BGM_M_DUNGON, "M-DUNGON") \ + X(BGM_FINECITY, "FINECITY") \ + X(BGM_MACHUPI, "MACHUPI") \ + X(BGM_P_SCHOOL, "P-SCHOOL") \ + X(BGM_DENDOU, "DENDOU") \ + X(BGM_TONEKUSA, "TONEKUSA") \ + X(BGM_MABOROSI, "MABOROSI") \ + X(BGM_CON_FAN, "CON-FAN") \ + X(BGM_CONTEST0, "CONTEST0") \ + X(BGM_MGM0, "MGM0") \ + X(BGM_T_BATTLE, "T-BATTLE") \ + X(BGM_OOAME, "OOAME") \ + X(BGM_HIDERI, "HIDERI") \ + X(BGM_RUNECITY, "RUNECITY") \ + X(BGM_CON_K, "CON-K") \ + X(BGM_EIKOU_R, "EIKOU-R") \ + X(BGM_KARAKURI, "KARAKURI") \ + X(BGM_HUTAGO, "HUTAGO") \ + X(BGM_SITENNOU, "SITENNOU") \ + X(BGM_YAMA_EYE, "YAMA-EYE") \ + X(BGM_CONLOBBY, "CONLOBBY") \ + X(BGM_INTER_V, "INTER-V") \ + X(BGM_DAIGO, "DAIGO") \ + X(BGM_THANKFOR, "THANKFOR") \ + X(BGM_END, "END") \ + X(BGM_BATTLE27, "BATTLE27") \ + X(BGM_BATTLE31, "BATTLE31") \ + X(BGM_BATTLE20, "BATTLE20") \ + X(BGM_BATTLE32, "BATTLE32") \ + X(BGM_BATTLE33, "BATTLE33") \ + X(BGM_BATTLE36, "BATTLE36") \ + X(BGM_BATTLE34, "BATTLE34") \ + X(BGM_BATTLE35, "BATTLE35") \ + X(BGM_BATTLE38, "BATTLE38") \ + X(BGM_BATTLE30, "BATTLE30") + +#define SOUND_LIST_SE \ + X(SE_STOP, "STOP") \ + X(SE_KAIFUKU, "KAIFUKU") \ + X(SE_PC_LOGON, "PC-LOGON") \ + X(SE_PC_OFF, "PC-OFF") \ + X(SE_PC_ON, "PC-ON") \ + X(SE_SELECT, "SELECT") \ + X(SE_WIN_OPEN, "WIN-OPEN") \ + X(SE_WALL_HIT, "WALL-HIT") \ + X(SE_DOOR, "DOOR") \ + X(SE_KAIDAN, "KAIDAN") \ + X(SE_DANSA, "DANSA") \ + X(SE_JITENSYA, "JITENSYA") \ + X(SE_KOUKA_L, "KOUKA-L") \ + X(SE_KOUKA_M, "KOUKA-M") \ + X(SE_KOUKA_H, "KOUKA-H") \ + X(SE_BOWA2, "BOWA2") \ + X(SE_POKE_DEAD, "POKE-DEAD") \ + X(SE_NIGERU, "NIGERU") \ + X(SE_JIDO_DOA, "JIDO-DOA") \ + X(SE_NAMINORI, "NAMINORI") \ + X(SE_BAN, "BAN") \ + X(SE_PIN, "PIN") \ + X(SE_BOO, "BOO") \ + X(SE_BOWA, "BOWA") \ + X(SE_JYUNI, "JYUNI") \ + X(SE_A, "A") \ + X(SE_I, "I") \ + X(SE_U, "U") \ + X(SE_E, "E") \ + X(SE_O, "O") \ + X(SE_N, "N") \ + X(SE_SEIKAI, "SEIKAI") \ + X(SE_HAZURE, "HAZURE") \ + X(SE_EXP, "EXP") \ + X(SE_JITE_PYOKO, "JITE-PYOKO") \ + X(SE_MU_PACHI, "MU-PACHI") \ + X(SE_TK_KASYA, "TK-KASYA") \ + X(SE_FU_ZAKU, "FU-ZAKU") \ + X(SE_FU_ZAKU2, "FU-ZAKU2") \ + X(SE_FU_ZUZUZU, "FU-ZUZUZU") \ + X(SE_RU_GASHIN, "RU-GASHIN") \ + X(SE_RU_GASYAN, "RU-GASYAN") \ + X(SE_RU_BARI, "RU-BARI") \ + X(SE_RU_HYUU, "RU-HYUU") \ + X(SE_KI_GASYAN, "KI-GASYAN") \ + X(SE_TK_WARPIN, "TK-WARPIN") \ + X(SE_TK_WARPOUT, "TK-WARPOUT") \ + X(SE_TU_SAA, "TU-SAA") \ + X(SE_HI_TURUN, "HI-TURUN") \ + X(SE_TRACK_MOVE, "TRACK-MOVE") \ + X(SE_TRACK_STOP, "TRACK-STOP") \ + X(SE_TRACK_HAIK, "TRACK-HAIK") \ + X(SE_TRACK_DOOR, "TRACK-DOOR") \ + X(SE_MOTER, "MOTER") \ + X(SE_CARD, "CARD") \ + X(SE_SAVE, "SAVE") \ + X(SE_KON, "KON") \ + X(SE_KON2, "KON2") \ + X(SE_KON3, "KON3") \ + X(SE_KON4, "KON4") \ + X(SE_SUIKOMU, "SUIKOMU") \ + X(SE_NAGERU, "NAGERU") \ + X(SE_TOY_C, "TOY-C") \ + X(SE_TOY_D, "TOY-D") \ + X(SE_TOY_E, "TOY-E") \ + X(SE_TOY_F, "TOY-F") \ + X(SE_TOY_G, "TOY-G") \ + X(SE_TOY_A, "TOY-A") \ + X(SE_TOY_B, "TOY-B") \ + X(SE_TOY_C1, "TOY-C1") \ + X(SE_MIZU, "MIZU") \ + X(SE_HASHI, "HASHI") \ + X(SE_DAUGI, "DAUGI") \ + X(SE_PINPON, "PINPON") \ + X(SE_FUUSEN1, "FUUSEN1") \ + X(SE_FUUSEN2, "FUUSEN2") \ + X(SE_FUUSEN3, "FUUSEN3") \ + X(SE_TOY_KABE, "TOY-KABE") \ + X(SE_TOY_DANGO, "TOY-DANGO") \ + X(SE_DOKU, "DOKU") \ + X(SE_ESUKA, "ESUKA") \ + X(SE_T_AME, "T-AME") \ + X(SE_T_AME_E, "T-AME-E") \ + X(SE_T_OOAME, "T-OOAME") \ + X(SE_T_OOAME_E, "T-OOAME-E") \ + X(SE_T_KOAME, "T-KOAME") \ + X(SE_T_KOAME_E, "T-KOAME-E") \ + X(SE_T_KAMI, "T-KAMI") \ + X(SE_T_KAMI2, "T-KAMI2") \ + X(SE_ELEBETA, "ELEBETA") \ + X(SE_HINSI, "HINSI") \ + X(SE_EXPMAX, "EXPMAX") \ + X(SE_TAMAKORO, "TAMAKORO") \ + X(SE_TAMAKORO_E, "TAMAKORO-E") \ + X(SE_BASABASA, "BASABASA") \ + X(SE_REGI, "REGI") \ + X(SE_C_GAJI, "C-GAJI") \ + X(SE_C_MAKU_U, "C-MAKU-U") \ + X(SE_C_MAKU_D, "C-MAKU-D") \ + X(SE_C_PASI, "C-PASI") \ + X(SE_C_SYU, "C-SYU") \ + X(SE_C_PIKON, "C-PIKON") \ + X(SE_REAPOKE, "REAPOKE") \ + X(SE_OP_BASYU, "OP-BASYU") \ + X(SE_BT_START, "BT-START") \ + X(SE_DENDOU, "DENDOU") \ + X(SE_JIHANKI, "JIHANKI") \ + X(SE_TAMA, "TAMA") \ + X(SE_Z_SCROLL, "Z-SCROLL") \ + X(SE_Z_PAGE, "Z-PAGE") \ + X(SE_PN_ON, "PN-ON") \ + X(SE_PN_OFF, "PN-OFF") \ + X(SE_Z_SEARCH, "Z-SEARCH") \ + X(SE_TAMAGO, "TAMAGO") \ + X(SE_TB_START, "TB-START") \ + X(SE_TB_KON, "TB-KON") \ + X(SE_TB_KARA, "TB-KARA") \ + X(SE_BIDORO, "BIDORO") \ + X(SE_W085, "W085") \ + X(SE_W085B, "W085B") \ + X(SE_W231, "W231") \ + X(SE_W171, "W171") \ + X(SE_W233, "W233") \ + X(SE_W233B, "W233B") \ + X(SE_W145, "W145") \ + X(SE_W145B, "W145B") \ + X(SE_W145C, "W145C") \ + X(SE_W240, "W240") \ + X(SE_W015, "W015") \ + X(SE_W081, "W081") \ + X(SE_W081B, "W081B") \ + X(SE_W088, "W088") \ + X(SE_W016, "W016") \ + X(SE_W016B, "W016B") \ + X(SE_W003, "W003") \ + X(SE_W104, "W104") \ + X(SE_W013, "W013") \ + X(SE_W196, "W196") \ + X(SE_W086, "W086") \ + X(SE_W004, "W004") \ + X(SE_W025, "W025") \ + X(SE_W025B, "W025B") \ + X(SE_W152, "W152") \ + X(SE_W026, "W026") \ + X(SE_W172, "W172") \ + X(SE_W172B, "W172B") \ + X(SE_W053, "W053") \ + X(SE_W007, "W007") \ + X(SE_W092, "W092") \ + X(SE_W221, "W221") \ + X(SE_W221B, "W221B") \ + X(SE_W052, "W052") \ + X(SE_W036, "W036") \ + X(SE_W059, "W059") \ + X(SE_W059B, "W059B") \ + X(SE_W010, "W010") \ + X(SE_W011, "W011") \ + X(SE_W017, "W017") \ + X(SE_W019, "W019") \ + X(SE_W028, "W028") \ + X(SE_W013B, "W013B") \ + X(SE_W044, "W044") \ + X(SE_W029, "W029") \ + X(SE_W057, "W057") \ + X(SE_W056, "W056") \ + X(SE_W250, "W250") \ + X(SE_W030, "W030") \ + X(SE_W039, "W039") \ + X(SE_W054, "W054") \ + X(SE_W077, "W077") \ + X(SE_W020, "W020") \ + X(SE_W082, "W082") \ + X(SE_W047, "W047") \ + X(SE_W195, "W195") \ + X(SE_W006, "W006") \ + X(SE_W091, "W091") \ + X(SE_W146, "W146") \ + X(SE_W120, "W120") \ + X(SE_W153, "W153") \ + X(SE_W071B, "W071B") \ + X(SE_W071, "W071") \ + X(SE_W103, "W103") \ + X(SE_W062, "W062") \ + X(SE_W062B, "W062B") \ + X(SE_W048, "W048") \ + X(SE_W187, "W187") \ + X(SE_W118, "W118") \ + X(SE_W155, "W155") \ + X(SE_W122, "W122") \ + X(SE_W060, "W060") \ + X(SE_W185, "W185") \ + X(SE_W014, "W014") \ + X(SE_W043, "W043") \ + X(SE_W207, "W207") \ + X(SE_W207B, "W207B") \ + X(SE_W215, "W215") \ + X(SE_W109, "W109") \ + X(SE_W173, "W173") \ + X(SE_W280, "W280") \ + X(SE_W202, "W202") \ + X(SE_W060B, "W060B") \ + X(SE_W076, "W076") \ + X(SE_W080, "W080") \ + X(SE_W100, "W100") \ + X(SE_W107, "W107") \ + X(SE_W166, "W166") \ + X(SE_W129, "W129") \ + X(SE_W115, "W115") \ + X(SE_W112, "W112") \ + X(SE_W197, "W197") \ + X(SE_W199, "W199") \ + X(SE_W236, "W236") \ + X(SE_W204, "W204") \ + X(SE_W268, "W268") \ + X(SE_W070, "W070") \ + X(SE_W063, "W063") \ + X(SE_W127, "W127") \ + X(SE_W179, "W179") \ + X(SE_W151, "W151") \ + X(SE_W201, "W201") \ + X(SE_W161, "W161") \ + X(SE_W161B, "W161B") \ + X(SE_W227, "W227") \ + X(SE_W227B, "W227B") \ + X(SE_W226, "W226") \ + X(SE_W208, "W208") \ + X(SE_W213, "W213") \ + X(SE_W213B, "W213B") \ + X(SE_W234, "W234") \ + X(SE_W260, "W260") \ + X(SE_W328, "W328") \ + X(SE_W320, "W320") \ + X(SE_W255, "W255") \ + X(SE_W291, "W291") \ + X(SE_W089, "W089") \ + X(SE_W239, "W239") \ + X(SE_W230, "W230") \ + X(SE_W281, "W281") \ + X(SE_W327, "W327") \ + X(SE_W287, "W287") \ + X(SE_W257, "W257") \ + X(SE_W253, "W253") \ + X(SE_W258, "W258") \ + X(SE_W322, "W322") \ + X(SE_W298, "W298") \ + X(SE_W287B, "W287B") \ + X(SE_W114, "W114") \ + X(SE_W063B, "W063B") + +// Create BGM list +#define X(songId, name) static const u8 sBGMName_##songId[] = _(name); +SOUND_LIST_BGM +#undef X + +#define X(songId, name) sBGMName_##songId, +static const u8 *const gBGMNames[] = +{ +SOUND_LIST_BGM +}; +#undef X + +// Create SE list +#define X(songId, name) static const u8 sSEName_##songId[] = _(name); +SOUND_LIST_SE +#undef X + +#define X(songId, name) sSEName_##songId, +static const u8 *const gSENames[] = +{ +SOUND_LIST_SE +}; +#undef X + +void Task_InitCryTest(u8 taskId) +{ + struct CryRelatedStruct cryStruct, cryStruct2; + u8 zero; + + SetUpWindowConfig(&gWindowConfig_81E6C3C); + InitMenuWindow(&gWindowConfig_81E6CE4); + gSoundTestCryNum = 1; + ResetSpriteData(); + FreeAllSpritePalettes(); + + cryStruct.unk0 = 0x2000; + cryStruct.unk2 = 29; + cryStruct.paletteNo = 12; + cryStruct.yPos = 30; + cryStruct.xPos = 4; + + zero = 0; // wtf? + gUnknown_03005E98 = 0; + + while (sub_8119E3C(&cryStruct, 3) == FALSE) + ; + + cryStruct2.unk0 = 0; + cryStruct2.unk2 = 15; + cryStruct2.paletteNo = 13; + cryStruct2.xPos = 12; + cryStruct2.yPos = 12; + + zero = 0; // wtf? + gUnknown_03005E98 = 0; + + while (ShowPokedexCryScreen(&cryStruct2, 2) == FALSE) + ; + + MenuDrawTextWindow(0, 16, 5, 19); + PrintCryNumber(); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0); + REG_BG2HOFS = 0; + REG_BG2VOFS = 0; + REG_BG2CNT = 0xF01; + REG_BG3CNT = 0x1D03; + REG_DISPCNT = 0x1d40; + m4aMPlayFadeOutTemporarily(&gMPlay_BGM, 2); + gTasks[taskId].func = Task_ProcessCryTestInput; +} + +void Task_ProcessCryTestInput(u8 taskId) +{ + sub_8119F88(3); + + if (gMain.newKeys & A_BUTTON) + { + sub_811A050(gSoundTestCryNum); + } + if (gMain.newKeys & R_BUTTON) + { + StopCryAndClearCrySongs(); + } + if (gMain.newAndRepeatedKeys & DPAD_UP) + { + if(--gSoundTestCryNum == 0) + gSoundTestCryNum = 384; // total species + PrintCryNumber(); + } + if (gMain.newAndRepeatedKeys & DPAD_DOWN) + { + if(++gSoundTestCryNum > 384) + gSoundTestCryNum = 1; + PrintCryNumber(); + } + if (gMain.newKeys & B_BUTTON) + { + REG_DISPCNT = 0x7140; + REG_WIN0H = WIN_RANGE(17, 223); + REG_WIN0V = WIN_RANGE(1, 31); + MenuZeroFillWindowRect(0, 0, 29, 19); + gTasks[taskId].func = Task_InitSoundCheckMenu; + DestroyCryMeterNeedleSprite(); + } +} + +void PrintCryNumber(void) +{ + PrintSignedNumber(gSoundTestCryNum, 1, 17, 3); +} diff --git a/src/unknown_debug_menu.c b/src/debug/unknown_debug_menu.c similarity index 92% rename from src/unknown_debug_menu.c rename to src/debug/unknown_debug_menu.c index 6a8bad0d4..a81625f2a 100644 --- a/src/unknown_debug_menu.c +++ b/src/debug/unknown_debug_menu.c @@ -41,8 +41,8 @@ static u8 sub_814A464(void) u8 sub_814A4B8(void) { - gSaveBlock2.filler_A8.var_4AE = 3; - gSaveBlock2.filler_A8.var_4AF = 3; + gSaveBlock2.filler_A8.var_4AE[0] = 3; + gSaveBlock2.filler_A8.var_4AE[1] = 3; gSaveBlock2.filler_A8.var_4B4 = gBattleCommunication[0] + 1; gSaveBlock2.filler_A8.var_4B6 = gBattleCommunication[0] + 1; gSaveBlock2.filler_A8.var_4B0 = 1; diff --git a/src/egg_hatch.c b/src/egg_hatch.c deleted file mode 100644 index 32fbe1547..000000000 --- a/src/egg_hatch.c +++ /dev/null @@ -1,52 +0,0 @@ -#include "global.h" -#include "pokemon.h" - -void CreatedHatchedMon(struct Pokemon *egg, struct Pokemon *temp) { - u16 species; - u32 personality, pokerus; - u8 i, friendship, language, gameMet, markings; - u16 moves[4]; - u32 ivs[6]; - - - species = GetMonData(egg, MON_DATA_SPECIES); - - for (i = 0; i < 4; i++) - { - moves[i] = GetMonData(egg, MON_DATA_MOVE1 + i); - } - - personality = GetMonData(egg, MON_DATA_PERSONALITY); - - for (i = 0; i < 6; i++) - { - ivs[i] = GetMonData(egg, MON_DATA_HP_IV + i); - } - - gameMet = GetMonData(egg, MON_DATA_MET_GAME); - markings = GetMonData(egg, MON_DATA_MARKINGS); - pokerus = GetMonData(egg, MON_DATA_POKERUS); - - CreateMon(temp, species, 5, 32, TRUE, personality, 0, 0); - - for (i = 0; i < 4; i++) - { - SetMonData(temp, MON_DATA_MOVE1 + i, (const u8 *) &moves[i]); - } - - for (i = 0; i < 6; i++) - { - SetMonData(temp, MON_DATA_HP_IV + i, (const u8 *) &ivs[i]); - } - - language = GAME_LANGUAGE; - SetMonData(temp, MON_DATA_LANGUAGE, &language); - SetMonData(temp, MON_DATA_MET_GAME, &gameMet); - SetMonData(temp, MON_DATA_MARKINGS, &markings); - - friendship = 120; - SetMonData(temp, MON_DATA_FRIENDSHIP, &friendship); - SetMonData(temp, MON_DATA_POKERUS, (const u8 *) &pokerus); - - *egg = *temp; -} diff --git a/src/blend_palette.c b/src/engine/blend_palette.c similarity index 100% rename from src/blend_palette.c rename to src/engine/blend_palette.c diff --git a/src/engine/cable_club.c b/src/engine/cable_club.c new file mode 100644 index 000000000..c61a1d01c --- /dev/null +++ b/src/engine/cable_club.c @@ -0,0 +1,905 @@ +#include "global.h" +#include "battle.h" +#include "battle_records.h" +#include "cable_club.h" +#include "field_message_box.h" +#include "field_weather.h" +#include "link.h" +#include "load_save.h" +#include "m4a.h" +#include "main.h" +#include "menu.h" +#include "palette.h" +#include "record_mixing.h" +#include "overworld.h" +#include "script.h" +#include "script_pokemon_80C4.h" +#include "songs.h" +#include "sound.h" +#include "start_menu.h" +#include "string_util.h" +#include "strings2.h" +#include "task.h" +#include "text.h" +#include "trainer_card.h" + +extern u16 gScriptResult; +extern struct TrainerCard gTrainerCards[4]; +extern u8 gUnknown_03004860; +extern u8 gFieldLinkPlayerCount; +extern u16 gSpecialVar_0x8004; +extern u16 gSpecialVar_0x8005; +extern u16 gSpecialVar_0x8006; +extern u16 gBattleTypeFlags; +extern const u8 gUnknown_081A4932[]; +extern const u8 gUnknown_081A4975[]; +extern const u8 gUnknown_081A49B6[]; +extern const u8 gUnknown_081A490C[]; +extern const u8* const gTrainerCardColorNames[]; +extern struct +{ + u8 field0; + u8 field1; +} gUnknown_020297D8; + +static void sub_8082F20(u8 taskId); +static void sub_8082F68(u8 taskId); +static void sub_8082FEC(u8 taskId); +static void sub_808303C(u8 taskId); +static void sub_80830E4(u8 taskId); +static void sub_8083188(u8 taskId); +static void sub_8083288(u8 taskId); +static void sub_8083314(u8 taskId); +static void sub_80833C4(u8 taskId); +static void sub_80833EC(u8 taskId); +static void sub_8083418(u8 taskId); +static bool8 sub_8083444(u8 taskId); +static void sub_808353C(u8 taskId); +static void sub_8083710(u8 taskId); +static void sub_8083760(u8 taskId); +static void sub_80837B4(u8 taskId); +static void sub_80837EC(u8 taskId); +static void sub_808382C(u8 taskId); +static void sub_8083958(void); +static void sub_80839DC(u8 taskId); +static void sub_8083AAC(u8 taskId); +static void sub_8083B44(u8 taskId); +static void sub_8083B6C(void); +static void sub_8083CA4(u8 taskId); + +extern void sub_80831F8(u8 taskId); +extern void Overworld_ResetMapMusic(void); +extern void sub_810FEFC(void); +extern void sub_8047CD8(void); +extern void sub_805559C(void); +extern void sub_8055574(void); +extern s32 sub_80554F8(void); +extern void sub_805465C(void); + +static void sub_8082CD4(u8 arg0, u8 arg1) +{ + if (FindTaskIdByFunc(sub_8082F20) == 0xFF) + { + u8 taskId = CreateTask(sub_8082F20, 80); + + gTasks[taskId].data[1] = arg0; + gTasks[taskId].data[2] = arg1; + } +} + +static void sub_8082D18(u32 value) +{ + ConvertIntToDecimalStringN(gStringVar1, value, STR_CONV_MODE_LEFT_ALIGN, 1); + MenuDrawTextWindow(18, 10, 28, 13); + sub_8072BD8(gOtherText_PLink, 19, 11, 72); +} + +static void sub_8082D4C() +{ + MenuZeroFillWindowRect(18, 10, 28, 13); +} + +static void sub_8082D60(u8 taskId, u8 arg1) +{ + s16 *data = &gTasks[taskId].data[3]; + + if (arg1 != *data) + { + if (arg1 <= 1) + sub_8082D4C(); + else + sub_8082D18(arg1); + *data = arg1; + } +} + +static u32 sub_8082D9C(u8 minPlayers, u8 maxPlayers) +{ + int playerCount; + + switch (GetLinkPlayerDataExchangeStatusTimed()) + { + case EXCHANGE_COMPLETE: + playerCount = GetLinkPlayerCount_2(); + if (minPlayers <= playerCount && playerCount <= maxPlayers) + return 1; + ConvertIntToDecimalStringN(gStringVar1, playerCount, STR_CONV_MODE_LEFT_ALIGN, 1); + return 4; + case EXCHANGE_TIMED_OUT: + return 0; + case EXCHANGE_IN_PROGRESS: + return 3; + default: + return 0; + } +} + +static bool32 sub_8082DF4(u8 taskId) +{ + if (HasLinkErrorOccurred() == TRUE) + { + gTasks[taskId].func = sub_8083418; + return TRUE; + } + return FALSE; +} + +static bool32 sub_8082E28(u8 taskId) +{ + if ((gMain.newKeys & B_BUTTON) + && IsLinkConnectionEstablished() == FALSE) + { + gTasks[taskId].func = sub_80833EC; + return TRUE; + } + return FALSE; +} + +static bool32 sub_8082E6C(u8 taskId) +{ + if (IsLinkConnectionEstablished()) + SetSuppressLinkErrorMessage(TRUE); + + if (gMain.newKeys & B_BUTTON) + { + gTasks[taskId].func = sub_80833EC; + return TRUE; + } + return FALSE; +} + +static bool32 sub_8082EB8(u8 taskId) +{ + if (GetSioMultiSI() == 1) + { + gTasks[taskId].func = sub_8083418; + return TRUE; + } + return FALSE; +} + +void unref_sub_8082EEC(u8 taskId) +{ + gTasks[taskId].data[0]++; + if (gTasks[taskId].data[0] == 10) + { + sub_8007E9C(2); + DestroyTask(taskId); + } +} + +static void sub_8082F20(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + + if (data[0] == 0) + { + OpenLinkTimed(); + sub_80082EC(); + ResetLinkPlayers(); + } + else if (data[0] > 9) + { + gTasks[taskId].func = sub_8082F68; + } + data[0]++; +} + +static void sub_8082F68(u8 taskId) +{ + u32 playerCount = GetLinkPlayerCount_2(); + + if (sub_8082E28(taskId) == TRUE + || sub_8082E6C(taskId) == TRUE + || playerCount < 2) + return; + + SetSuppressLinkErrorMessage(TRUE); + gTasks[taskId].data[3] = 0; + if (IsLinkMaster() == TRUE) + { + PlaySE(SE_PIN); + ShowFieldAutoScrollMessage(gUnknown_081A4932); + gTasks[taskId].func = sub_8082FEC; + } + else + { + PlaySE(SE_BOO); + ShowFieldAutoScrollMessage(gUnknown_081A49B6); + gTasks[taskId].func = sub_80831F8; + } +} + +static void sub_8082FEC(u8 taskId) +{ + if (sub_8082E28(taskId) == TRUE + || sub_8082EB8(taskId) == TRUE + || sub_8082DF4(taskId) == TRUE) + return; + + if (GetFieldMessageBoxMode() == FIELD_MESSAGE_BOX_HIDDEN) + { + gTasks[taskId].data[3] = 0; + gTasks[taskId].func = sub_808303C; + } +} + +static void sub_808303C(u8 taskId) +{ + s16 *taskData = gTasks[taskId].data; + s32 linkPlayerCount = GetLinkPlayerCount_2(); + + if (sub_8082E28(taskId) == TRUE + || sub_8082EB8(taskId) == TRUE + || sub_8082DF4(taskId) == TRUE) + return; + + sub_8082D60(taskId, linkPlayerCount); + + if (!(gMain.newKeys & A_BUTTON)) + return; + +#if ENGLISH + if (linkPlayerCount < taskData[1]) + return; + + sub_80081C8(linkPlayerCount); + sub_8082D4C(); + ConvertIntToDecimalStringN(gStringVar1, linkPlayerCount, STR_CONV_MODE_LEFT_ALIGN, 1); + ShowFieldAutoScrollMessage((u8 *)gUnknown_081A4975); + gTasks[taskId].func = sub_80830E4; +#elif GERMAN + if ((gLinkType == 0x2255 && (u32)linkPlayerCount > 1) + || (gLinkType != 0x2255 && taskData[1] <= linkPlayerCount)) + { + sub_80081C8(linkPlayerCount); + sub_8082D4C(); + ConvertIntToDecimalStringN(gStringVar1, linkPlayerCount, STR_CONV_MODE_LEFT_ALIGN, 1); + ShowFieldAutoScrollMessage((u8 *)gUnknown_081A4975); + gTasks[taskId].func = sub_80830E4; + } +#endif +} + +static void sub_80830E4(u8 taskId) +{ + if (sub_8082E28(taskId) == TRUE + || sub_8082EB8(taskId) == TRUE + || sub_8082DF4(taskId) == TRUE) + return; + + if (GetFieldMessageBoxMode() == FIELD_MESSAGE_BOX_HIDDEN) + { + if (sub_800820C() != GetLinkPlayerCount_2()) + { + ShowFieldAutoScrollMessage(gUnknown_081A4932); + gTasks[taskId].func = sub_8082FEC; + } + else if (gMain.heldKeys & B_BUTTON) + { + ShowFieldAutoScrollMessage(gUnknown_081A4932); + gTasks[taskId].func = sub_8082FEC; + } + else if (gMain.heldKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + sub_8007F4C(); + gTasks[taskId].func = sub_8083188; + } + } +} + +static void sub_8083188(u8 taskId) +{ + u8 local1 = gTasks[taskId].data[1]; + u8 local2 = gTasks[taskId].data[2]; + + if (sub_8082DF4(taskId) == TRUE + || sub_8083444(taskId) == TRUE) + return; + + if (GetLinkPlayerCount_2() != sub_800820C()) + { + gTasks[taskId].func = sub_8083418; + } + else + { + gScriptResult = sub_8082D9C(local1, local2); + if (gScriptResult != 0) + gTasks[taskId].func = sub_8083288; + } +} + +void sub_80831F8(u8 taskId) +{ + u8 local1, local2; + + local1 = gTasks[taskId].data[1]; + local2 = gTasks[taskId].data[2]; + + if (sub_8082E28(taskId) == TRUE + || sub_8082DF4(taskId) == TRUE) + return; + + gScriptResult = sub_8082D9C(local1, local2); + if (gScriptResult == 0) + return; + if (gScriptResult == 3) + { + sub_800832C(); + HideFieldMessageBox(); + gTasks[taskId].func = sub_80833C4; + } + else + { + gFieldLinkPlayerCount = GetLinkPlayerCount_2(); + gUnknown_03004860 = GetMultiplayerId(); + sub_80081C8(gFieldLinkPlayerCount); + sub_8093390((struct TrainerCard *)gBlockSendBuffer); + gTasks[taskId].func = sub_8083314; + } +} + +static void sub_8083288(u8 taskId) +{ + if (sub_8082DF4(taskId) == TRUE) + return; + + if (gScriptResult == 3) + { + sub_800832C(); + HideFieldMessageBox(); + gTasks[taskId].func = sub_80833C4; + } + else + { + gFieldLinkPlayerCount = GetLinkPlayerCount_2(); + gUnknown_03004860 = GetMultiplayerId(); + sub_80081C8(gFieldLinkPlayerCount); + sub_8093390((struct TrainerCard *)gBlockSendBuffer); + gTasks[taskId].func = sub_8083314; + sub_8007E9C(2); + } +} + +static void sub_8083314(u8 taskId) +{ + u8 index; + struct TrainerCard *trainerCards; + + if (sub_8082DF4(taskId) == TRUE) + return; + + if (GetBlockReceivedStatus() != sub_8008198()) + return; + + index = 0; + trainerCards = gTrainerCards; + for (index = 0; index < GetLinkPlayerCount(); index++) + { + void *src; + src = gBlockRecvBuffer[index]; + memcpy(&trainerCards[index], src, sizeof(struct TrainerCard)); + } + + SetSuppressLinkErrorMessage(FALSE); + ResetBlockReceivedFlags(); + HideFieldMessageBox(); + + if (gScriptResult == 1) + { +#if ENGLISH + u16 linkType; + linkType = gLinkType; + // FIXME: sub_8082D4C doesn't take any arguments + sub_8082D4C(0x4411, linkType); +#elif GERMAN + if (gLinkType != 0x4411) + { + if (gLinkType == 0x6601) + deUnkValue2 = 1; + } + sub_8082D4C(); +#endif + EnableBothScriptContexts(); + DestroyTask(taskId); + return; + } + + sub_800832C(); + gTasks[taskId].func = sub_80833C4; +} + +static void sub_80833C4(u8 taskId) +{ + if (gReceivedRemoteLinkPlayers == FALSE) + { + sub_8082D4C(); + EnableBothScriptContexts(); + DestroyTask(taskId); + } +} + +static void sub_80833EC(u8 taskId) +{ + gScriptResult = 5; + sub_8082D4C(); + HideFieldMessageBox(); + EnableBothScriptContexts(); + DestroyTask(taskId); +} + +static void sub_8083418(u8 taskId) +{ + gScriptResult = 6; + sub_8082D4C(); + HideFieldMessageBox(); + EnableBothScriptContexts(); + DestroyTask(taskId); +} + +static bool8 sub_8083444(u8 taskId) +{ + gTasks[taskId].data[4]++; + if (gTasks[taskId].data[4] > 600) + { + gTasks[taskId].func = sub_8083418; + return TRUE; + } + + return FALSE; +} + +void sub_808347C(u8 arg0) +{ + u32 r3 = 2; + u32 r2 = 2; + + switch (gSpecialVar_0x8004) + { + case 1: + r3 = 2; + gLinkType = 0x2233; + break; + case 2: + r3 = 2; + gLinkType = 0x2244; + break; + case 5: + r3 = 4; + r2 = 4; + gLinkType = 0x2255; + break; + } + + sub_8082CD4(r3, r2); +} + +void sub_80834E4(void) +{ + gLinkType = 0x1133; + gBattleTypeFlags = 0; + sub_8082CD4(2, 2); +} + +void sub_808350C(void) +{ + gScriptResult = 0; + gLinkType = 0x3311; + gBattleTypeFlags = 0; + sub_8082CD4(2, 4); +} + +static void sub_808353C(u8 taskId) +{ + int playerCount; + int i; + + switch (gTasks[taskId].data[0]) + { + case 0: + if (gScriptResult == 1) + { + playerCount = GetLinkPlayerCount(); + for (i = 0; i < playerCount; i++) + { + if (gLinkPlayers[i].language == LANGUAGE_JAPANESE) + { + gScriptResult = 7; + sub_8008480(); + gTasks[taskId].data[0] = 1; + return; + } + } + } + EnableBothScriptContexts(); + DestroyTask(taskId); + break; + case 1: + if (gReceivedRemoteLinkPlayers == FALSE) + { + EnableBothScriptContexts(); + DestroyTask(taskId); + } + break; + } +} + +void sub_80835D8(void) +{ + int taskId = FindTaskIdByFunc(sub_808353C); + + if (taskId == 0xFF) + { + taskId = CreateTask(sub_808353C, 80); + gTasks[taskId].data[0] = 0; + } +} + +void sub_8083614(void) +{ + gLinkType = 0x4411; + gBattleTypeFlags = 0; + sub_8082CD4(2, 4); +} + +void sub_808363C(void) +{ + gLinkType = 0x6601; + gBattleTypeFlags = 0; + sub_8082CD4(4, 4); +} + +u8 sub_8083664(void) +{ + if (FuncIsActiveTask(sub_8083710) != FALSE) + return 0xFF; + + switch (gSpecialVar_0x8004) + { + case 1: + gLinkType = 0x2233; + break; + case 2: + gLinkType = 0x2244; + break; + case 5: + gLinkType = 0x2255; + break; + case 3: + gLinkType = 0x1111; + break; + case 4: + gLinkType = 0x3322; + break; + } + + return CreateTask(sub_8083710, 80); +} + +static void sub_8083710(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + + if (data[0] == 0) + { + OpenLink(); + ResetLinkPlayers(); + CreateTask(sub_8083C50, 80); + } + else if (data[0] >= 10) + { + gTasks[taskId].func = sub_8083760; + } + data[0]++; +} + +static void sub_8083760(u8 taskId) +{ + if (GetLinkPlayerCount_2() >= 2) + { + if (IsLinkMaster() == TRUE) + gTasks[taskId].func = sub_80837B4; + else + gTasks[taskId].func = sub_80837EC; + } +} + +static void sub_80837B4(u8 taskId) +{ + if (sub_800820C() == GetLinkPlayerCount_2()) + { + sub_8007F4C(); + gTasks[taskId].func = sub_80837EC; + } +} + +static void sub_80837EC(u8 taskId) +{ + if (gReceivedRemoteLinkPlayers == TRUE + && IsLinkPlayerDataExchangeComplete() == TRUE) + { + sub_800826C(); + sub_8007B14(); + DestroyTask(taskId); + } +} + +void sub_8083820(void) +{ + ScrSpecial_DoSaveDialog(); +} + +static void sub_808382C(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + + switch (task->data[0]) + { + case 0: + fade_screen(1, 0); + gLinkType = 0x2211; + ClearLinkCallback_2(); + task->data[0]++; + break; + case 1: + if (!gPaletteFade.active) + task->data[0]++; + break; + case 2: + task->data[1]++; + if (task->data[1] > 20) + task->data[0]++; + break; + case 3: + sub_800832C(); + task->data[0]++; + break; + case 4: + if (!gReceivedRemoteLinkPlayers) + task->data[0]++; + break; + case 5: + if (gLinkPlayers[0].trainerId & 1) + current_map_music_set__default_for_battle(BGM_BATTLE32); + else + current_map_music_set__default_for_battle(BGM_BATTLE20); + + switch (gSpecialVar_0x8004) + { + case 1: + gBattleTypeFlags = BATTLE_TYPE_TRAINER | BATTLE_TYPE_LINK; + break; + case 2: + gBattleTypeFlags = BATTLE_TYPE_TRAINER | BATTLE_TYPE_LINK | BATTLE_TYPE_DOUBLE; + break; + case 5: + ReducePlayerPartyToThree(); + gBattleTypeFlags = BATTLE_TYPE_TRAINER | BATTLE_TYPE_LINK | BATTLE_TYPE_DOUBLE | BATTLE_TYPE_MULTI; + break; + } + + SetMainCallback2(sub_800E7C4); + gMain.savedCallback = sub_8083958; + DestroyTask(taskId); + break; + } +} + +static void sub_8083958(void) +{ + Overworld_ResetMapMusic(); + LoadPlayerParty(); + SavePlayerBag(); + sub_810FEFC(); + + if (gSpecialVar_0x8004 != 5) + UpdateLinkBattleRecords(gUnknown_03004860 ^ 1); + + gMain.savedCallback = sub_805465C; + SetMainCallback2(sub_8071B28); +} + +void sub_80839A4(void) +{ + if (gSpecialVar_0x8004 == 1 || gSpecialVar_0x8004 == 2 || gSpecialVar_0x8004 == 5) + { + LoadPlayerParty(); + SavePlayerBag(); + } + copy_saved_warp2_bank_and_enter_x_to_warp1(0x7F); +} + +void sub_80839D0(void) +{ + sub_805559C(); +} + +static void sub_80839DC(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + + switch (task->data[0]) + { + case 0: + ShowFieldMessage(gUnknown_081A490C); + task->data[0] = 1; + break; + case 1: + if (IsFieldMessageBoxHidden()) + { + sub_8055574(); + sub_8007270(gSpecialVar_0x8005); + task->data[0] = 2; + } + break; + case 2: + switch (sub_80554F8()) + { + case 0: + break; + case 1: + HideFieldMessageBox(); + task->data[0] = 0; + SwitchTaskToFollowupFunc(taskId); + break; + case 2: + task->data[0] = 3; + break; + } + break; + case 3: + sub_8055588(); + HideFieldMessageBox(); + MenuZeroFillScreen(); + DestroyTask(taskId); + EnableBothScriptContexts(); + break; + } +} + +void sub_8083A84(TaskFunc followupFunc) +{ + u8 taskId = CreateTask(sub_80839DC, 80); + SetTaskFuncWithFollowupFunc(taskId, sub_80839DC, followupFunc); + ScriptContext1_Stop(); +} + +static void sub_8083AAC(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + + switch (task->data[0]) + { + case 0: + ScriptContext2_Enable(); + fade_screen(1, 0); + ClearLinkCallback_2(); + task->data[0]++; + break; + case 1: + if (!gPaletteFade.active) + task->data[0]++; + break; + case 2: + gUnknown_020297D8.field0 = 0; + gUnknown_020297D8.field1 = 0; + m4aMPlayAllStop(); + sub_800832C(); + task->data[0]++; + break; + case 3: + if (!gReceivedRemoteLinkPlayers) + { + SetMainCallback2(sub_8047CD8); + DestroyTask(taskId); + } + break; + } +} + +static void sub_8083B44(u8 taskId) +{ + sub_8083B6C(); + DestroyTask(taskId); +} + +void sub_8083B5C(void) +{ + sub_8083A84(sub_8083B44); +} + +static void sub_8083B6C(void) +{ + CreateTask(sub_8083AAC, 80); +} + +void sub_8083B80(void) +{ + sub_8083B6C(); + ScriptContext1_Stop(); +} + +void sub_8083B90(void) +{ + gLinkType = 0x2211; + sub_8083A84(sub_808382C); +} + +void unref_sub_8083BB0(void) +{ + u8 taskId = CreateTask(sub_80839DC, 80); + SetTaskFuncWithFollowupFunc(taskId, sub_80839DC, Task_RecordMixing_Main); + ScriptContext1_Stop(); +} + +void sub_8083BDC(void) +{ + sub_8093130(gSpecialVar_0x8006, c2_exit_to_overworld_1_continue_scripts_restart_music); +} + +bool32 sub_8083BF4(u8 linkPlayerIndex) +{ + u32 trainerCardColorIndex; + + gSpecialVar_0x8006 = linkPlayerIndex; + StringCopy(gStringVar1, gLinkPlayers[linkPlayerIndex].name); + + trainerCardColorIndex = sub_80934C4(linkPlayerIndex); + if (trainerCardColorIndex == 0) + return FALSE; + + StringCopy(gStringVar2, gTrainerCardColorNames[trainerCardColorIndex - 1]); + return TRUE; +} + +void sub_8083C50(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + + task->data[0]++; + if (task->data[0] > 300) + { + CloseLink(); + SetMainCallback2(CB2_LinkError); + DestroyTask(taskId); + } + + if (gReceivedRemoteLinkPlayers) + DestroyTask(taskId); +} + +static void sub_8083CA4(u8 taskId) +{ + if (!gReceivedRemoteLinkPlayers) + { + EnableBothScriptContexts(); + DestroyTask(taskId); + } +} + +void unref_sub_8083CC8(u8 taskId) +{ + sub_800832C(); + gTasks[taskId].func = sub_8083CA4; +} \ No newline at end of file diff --git a/src/clear_save_data_menu.c b/src/engine/clear_save_data_menu.c similarity index 100% rename from src/clear_save_data_menu.c rename to src/engine/clear_save_data_menu.c diff --git a/src/clock.c b/src/engine/clock.c similarity index 98% rename from src/clock.c rename to src/engine/clock.c index 1f2aac9fd..9635514d2 100644 --- a/src/clock.c +++ b/src/engine/clock.c @@ -7,7 +7,7 @@ #include "field_weather.h" #include "lottery_corner.h" #include "main.h" -#include "rom4.h" +#include "overworld.h" #include "rtc.h" #include "time_events.h" #include "tv.h" diff --git a/src/decompress.c b/src/engine/decompress.c similarity index 98% rename from src/decompress.c rename to src/engine/decompress.c index d7f7087a7..3e5993118 100644 --- a/src/decompress.c +++ b/src/engine/decompress.c @@ -6,7 +6,7 @@ #define WRAM 0x02000000 -void sub_800D238(const void *src, void *dest) +void LZDecompressWram(const void *src, void *dest) { LZ77UnCompWram(src, dest); } diff --git a/src/link.c b/src/engine/link.c similarity index 99% rename from src/link.c rename to src/engine/link.c index 5858ad8bf..850201ccb 100644 --- a/src/link.c +++ b/src/engine/link.c @@ -2,7 +2,6 @@ #include "link.h" #include "battle.h" #include "berry.h" -#include "berry_blender.h" #include "hall_of_fame.h" #include "item_use.h" #include "main.h" @@ -42,6 +41,8 @@ extern u16 gBattleTypeFlags; extern u16 word_3004858; +extern void Blender_SetBankBerryData(u8 bank, u16 itemID); + static void InitLinkTestBG(u8, u8, u8, u8); void InitLinkTestBG_Unused(u8, u8, u8, u8); void LinkTestScreen(); @@ -556,7 +557,7 @@ static void ProcessRecvCmds(u8 unusedParam) sub_8007E24(); break; case 0xAAAB: - sub_80516C4(i, gRecvCmds[1][i]); + Blender_SetBankBerryData(i, gRecvCmds[1][i]); break; case 0xCCCC: #if defined(ENGLISH) diff --git a/src/load_save.c b/src/engine/load_save.c similarity index 73% rename from src/load_save.c rename to src/engine/load_save.c index 0630f060c..8424b1121 100644 --- a/src/load_save.c +++ b/src/engine/load_save.c @@ -3,7 +3,7 @@ #include "load_save.h" #include "main.h" #include "pokemon.h" -#include "rom4.h" +#include "overworld.h" extern u8 gPlayerPartyCount; @@ -19,7 +19,10 @@ struct LoadedSaveData struct MailStruct mail[16]; }; -extern struct LoadedSaveData gLoadedSaveData[]; +EWRAM_DATA struct SaveBlock2 gSaveBlock2 = {0}; +EWRAM_DATA struct SaveBlock1 gSaveBlock1 = {0}; + +static EWRAM_DATA struct LoadedSaveData gLoadedSaveData = {0}; void CheckForFlashMemory(void) { @@ -112,27 +115,27 @@ void LoadPlayerBag(void) // load player items. for (i = 0; i < 20; i++) - gLoadedSaveData->items[i] = gSaveBlock1.bagPocket_Items[i]; + gLoadedSaveData.items[i] = gSaveBlock1.bagPocket_Items[i]; // load player key items. for (i = 0; i < 20; i++) - gLoadedSaveData->keyItems[i] = gSaveBlock1.bagPocket_KeyItems[i]; + gLoadedSaveData.keyItems[i] = gSaveBlock1.bagPocket_KeyItems[i]; // load player pokeballs. for (i = 0; i < 16; i++) - gLoadedSaveData->pokeBalls[i] = gSaveBlock1.bagPocket_PokeBalls[i]; + gLoadedSaveData.pokeBalls[i] = gSaveBlock1.bagPocket_PokeBalls[i]; // load player TMs and HMs. for (i = 0; i < 64; i++) - gLoadedSaveData->TMsHMs[i] = gSaveBlock1.bagPocket_TMHM[i]; + gLoadedSaveData.TMsHMs[i] = gSaveBlock1.bagPocket_TMHM[i]; // load player berries. for (i = 0; i < 46; i++) - gLoadedSaveData->berries[i] = gSaveBlock1.bagPocket_Berries[i]; + gLoadedSaveData.berries[i] = gSaveBlock1.bagPocket_Berries[i]; // load mail. for (i = 0; i < 16; i++) - gLoadedSaveData->mail[i] = gSaveBlock1.mail[i]; + gLoadedSaveData.mail[i] = gSaveBlock1.mail[i]; } void SavePlayerBag(void) @@ -141,25 +144,25 @@ void SavePlayerBag(void) // save player items. for (i = 0; i < 20; i++) - gSaveBlock1.bagPocket_Items[i] = gLoadedSaveData->items[i]; + gSaveBlock1.bagPocket_Items[i] = gLoadedSaveData.items[i]; // save player key items. for (i = 0; i < 20; i++) - gSaveBlock1.bagPocket_KeyItems[i] = gLoadedSaveData->keyItems[i]; + gSaveBlock1.bagPocket_KeyItems[i] = gLoadedSaveData.keyItems[i]; // save player pokeballs. for (i = 0; i < 16; i++) - gSaveBlock1.bagPocket_PokeBalls[i] = gLoadedSaveData->pokeBalls[i]; + gSaveBlock1.bagPocket_PokeBalls[i] = gLoadedSaveData.pokeBalls[i]; // save player TMs and HMs. for (i = 0; i < 64; i++) - gSaveBlock1.bagPocket_TMHM[i] = gLoadedSaveData->TMsHMs[i]; + gSaveBlock1.bagPocket_TMHM[i] = gLoadedSaveData.TMsHMs[i]; // save player berries. for (i = 0; i < 46; i++) - gSaveBlock1.bagPocket_Berries[i] = gLoadedSaveData->berries[i]; + gSaveBlock1.bagPocket_Berries[i] = gLoadedSaveData.berries[i]; // save mail. for (i = 0; i < 16; i++) - gSaveBlock1.mail[i] = gLoadedSaveData->mail[i]; + gSaveBlock1.mail[i] = gLoadedSaveData.mail[i]; } diff --git a/src/main.c b/src/engine/main.c similarity index 99% rename from src/main.c rename to src/engine/main.c index afaa0e77a..d7c11b6c8 100644 --- a/src/main.c +++ b/src/engine/main.c @@ -9,7 +9,7 @@ #include "play_time.h" #include "rng.h" #include "rom3.h" -#include "rom4.h" +#include "overworld.h" #include "rtc.h" #include "siirtc.h" #include "sound.h" diff --git a/src/main_menu.c b/src/engine/main_menu.c similarity index 78% rename from src/main_menu.c rename to src/engine/main_menu.c index 09fd06d9e..e0af86f3d 100644 --- a/src/main_menu.c +++ b/src/engine/main_menu.c @@ -10,7 +10,7 @@ #include "option_menu.h" #include "palette.h" #include "pokeball.h" -#include "rom4.h" +#include "overworld.h" #include "rtc.h" #include "save_menu_util.h" #include "songs.h" @@ -56,32 +56,14 @@ extern const union AffineAnimCmd *const gSpriteAffineAnimTable_81E79AC[]; extern u8 unk_2000000[]; -//Task data -enum { - TD_MENULAYOUT, - TD_SELECTEDMENUITEM, -}; - //Menu layouts -enum { +enum +{ HAS_NO_SAVED_GAME, //NEW GAME, OPTION HAS_SAVED_GAME, //CONTINUE, NEW GAME, OPTION HAS_MYSTERY_GIFT, //CONTINUE, NEW GAME, MYSTERY EVENTS, OPTION }; -//Task data -enum { - TD_TRAINER_SPRITE_ID = 2, //Trainer sprite being displayed during gender menu - TD_BGHOFS = 4, //Used to set REG_BG1HOFS and slide the platform around - TD_SUBTASK_DONE, //Set to true if the spawned task has finished - TD_GENDER_SELECTION, - TD_COUNTER, - TD_BIRCH_SPRITE_ID, - TD_AZURILL_SPRITE_ID, - TD_BRENDAN_SPRITE_ID, - TD_MAY_SPRITE_ID -}; - static void CB2_MainMenu(void); static void VBlankCB_MainMenu(void); static void CB2_InitMainMenuFromOptions(void); @@ -180,6 +162,9 @@ static void CB2_InitMainMenuFromOptions(void) InitMainMenu(TRUE); } +#define tMenuLayout data[0] +#define tMenuSelection data[1] + u32 InitMainMenu(u8 a1) { u16 savedIme; @@ -239,7 +224,7 @@ u32 InitMainMenu(u8 a1) | DISPCNT_WIN0_ON; taskId = CreateTask(Task_MainMenuCheckSave, 0); - gTasks[taskId].data[TD_SELECTEDMENUITEM] = 0; + gTasks[taskId].tMenuSelection = 0; return 0; } @@ -261,9 +246,9 @@ void Task_MainMenuCheckSave(u8 taskId) { case 1: if (IsMysteryGiftEnabled() == TRUE) - gTasks[taskId].data[TD_MENULAYOUT] = HAS_MYSTERY_GIFT; + gTasks[taskId].tMenuLayout = HAS_MYSTERY_GIFT; else - gTasks[taskId].data[TD_MENULAYOUT] = HAS_SAVED_GAME; + gTasks[taskId].tMenuLayout = HAS_SAVED_GAME; gTasks[taskId].func = Task_MainMenuCheckRtc; break; @@ -272,7 +257,7 @@ void Task_MainMenuCheckSave(u8 taskId) MenuPrintMessage(gSaveFileDeletedMessage, 3, 15); REG_WIN0H = WIN_RANGE(17, 223); REG_WIN0V = WIN_RANGE(113, 159); - gTasks[taskId].data[TD_MENULAYOUT] = HAS_NO_SAVED_GAME; + gTasks[taskId].tMenuLayout = HAS_NO_SAVED_GAME; gTasks[taskId].func = Task_MainMenuWaitForSaveErrorAck; break; case 255: @@ -280,17 +265,17 @@ void Task_MainMenuCheckSave(u8 taskId) MenuPrintMessage(gSaveFileCorruptMessage, 3, 15); REG_WIN0H = WIN_RANGE(17, 223); REG_WIN0V = WIN_RANGE(113, 159); - gTasks[taskId].data[TD_MENULAYOUT] = HAS_SAVED_GAME; + gTasks[taskId].tMenuLayout = HAS_SAVED_GAME; gTasks[taskId].func = Task_MainMenuWaitForSaveErrorAck; if (IsMysteryGiftEnabled() == TRUE) - gTasks[taskId].data[TD_MENULAYOUT] = HAS_MYSTERY_GIFT; + gTasks[taskId].tMenuLayout = HAS_MYSTERY_GIFT; else - gTasks[taskId].data[TD_MENULAYOUT] = HAS_SAVED_GAME; + gTasks[taskId].tMenuLayout = HAS_SAVED_GAME; break; case 0: default: - gTasks[taskId].data[TD_MENULAYOUT] = HAS_NO_SAVED_GAME; + gTasks[taskId].tMenuLayout = HAS_NO_SAVED_GAME; gTasks[taskId].func = Task_MainMenuCheckRtc; break; case 4: @@ -298,7 +283,7 @@ void Task_MainMenuCheckSave(u8 taskId) MenuPrintMessage(gBoardNotInstalledMessage, 3, 15); REG_WIN0H = WIN_RANGE(17, 223); REG_WIN0V = WIN_RANGE(113, 159); - gTasks[taskId].data[TD_MENULAYOUT] = HAS_NO_SAVED_GAME; + gTasks[taskId].tMenuLayout = HAS_NO_SAVED_GAME; gTasks[taskId].func = Task_MainMenuWaitForSaveErrorAck; return; } @@ -383,7 +368,7 @@ void Task_MainMenuDraw(u8 taskId) LoadPalette(&palette, 241, 2); } - switch (gTasks[taskId].data[TD_MENULAYOUT]) + switch (gTasks[taskId].tMenuLayout) { case HAS_NO_SAVED_GAME: default: @@ -420,7 +405,7 @@ void Task_MainMenuDraw(u8 taskId) void Task_MainMenuHighlight(u8 taskId) { - HighlightCurrentMenuItem(gTasks[taskId].data[TD_MENULAYOUT], gTasks[taskId].data[TD_SELECTEDMENUITEM]); + HighlightCurrentMenuItem(gTasks[taskId].tMenuLayout, gTasks[taskId].tMenuSelection); gTasks[taskId].func = Task_MainMenuProcessKeyInput; } @@ -444,7 +429,7 @@ bool8 MainMenuProcessKeyInput(u8 taskId) { s32 menuItemCount; - switch (gTasks[taskId].data[TD_MENULAYOUT]) + switch (gTasks[taskId].tMenuLayout) { case HAS_NO_SAVED_GAME: default: @@ -460,17 +445,17 @@ bool8 MainMenuProcessKeyInput(u8 taskId) if (gMain.newKeys & DPAD_UP) { - if (gTasks[taskId].data[TD_SELECTEDMENUITEM] > 0) + if (gTasks[taskId].tMenuSelection > 0) { - gTasks[taskId].data[TD_SELECTEDMENUITEM]--; + gTasks[taskId].tMenuSelection--; return TRUE; } } if (gMain.newKeys & DPAD_DOWN) { - if (gTasks[taskId].data[TD_SELECTEDMENUITEM] < menuItemCount - 1) + if (gTasks[taskId].tMenuSelection < menuItemCount - 1) { - gTasks[taskId].data[TD_SELECTEDMENUITEM]++; + gTasks[taskId].tMenuSelection++; return TRUE; } } @@ -499,11 +484,11 @@ void Task_MainMenuPressedA(u8 taskId) if (gPaletteFade.active) return; - switch (gTasks[taskId].data[TD_MENULAYOUT]) + switch (gTasks[taskId].tMenuLayout) { case HAS_NO_SAVED_GAME: default: - switch (gTasks[taskId].data[TD_SELECTEDMENUITEM]) + switch (gTasks[taskId].tMenuSelection) { case 0: default: @@ -515,7 +500,7 @@ void Task_MainMenuPressedA(u8 taskId) } break; case HAS_SAVED_GAME: - switch (gTasks[taskId].data[TD_SELECTEDMENUITEM]) + switch (gTasks[taskId].tMenuSelection) { case 0: default: @@ -530,7 +515,7 @@ void Task_MainMenuPressedA(u8 taskId) } break; case HAS_MYSTERY_GIFT: - switch (gTasks[taskId].data[TD_SELECTEDMENUITEM]) + switch (gTasks[taskId].tMenuSelection) { case 0: default: @@ -584,6 +569,9 @@ void Task_MainMenuPressedB(u8 taskId) } } +#undef tMenuLayout +#undef tMenuSelection + void HighlightCurrentMenuItem(u8 layout, u8 menuItem) { REG_WIN0H = WIN_RANGE(9, 231); @@ -710,6 +698,16 @@ void PrintBadgeCount(void) MenuPrint_PixelCoords(buffer, 205, 40, 1); } +#define tTrainerSpriteId data[2] +#define tBGhofs data[4] +#define tSubtaskIsDone data[5] +#define tGenderSelection data[6] +#define tFrameCounter data[7] +#define tBirchSpriteId data[8] +#define tAzurillSpriteId data[9] +#define tBrendanSpriteId data[10] +#define tMaySpriteId data[11] + static void Task_NewGameSpeech1(u8 taskId) { SetUpWindowConfig(&gWindowConfig_81E6C3C); @@ -732,25 +730,25 @@ static void Task_NewGameSpeech1(u8 taskId) BeginNormalPaletteFade(-1, 0, 0x10, 0, 0); REG_BG1CNT = BGCNT_PRIORITY(3) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(7) | BGCNT_16COLOR | BGCNT_TXT256x256; REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_BG0_ON | DISPCNT_BG1_ON | DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP; - gTasks[taskId].data[TD_BGHOFS] = 0; + gTasks[taskId].tBGhofs = 0; gTasks[taskId].func = Task_NewGameSpeech2; - gTasks[taskId].data[TD_TRAINER_SPRITE_ID] = 0xFF; + gTasks[taskId].tTrainerSpriteId = 0xFF; gTasks[taskId].data[3] = 0xFF; - gTasks[taskId].data[TD_COUNTER] = 216; //Wait 3.6 seconds (216 frames) before starting speech + gTasks[taskId].tFrameCounter = 216; //Wait 3.6 seconds (216 frames) before starting speech PlayBGM(BGM_DOORO_X4); } static void Task_NewGameSpeech2(u8 taskId) { - if (gTasks[taskId].data[TD_COUNTER] != 0) + if (gTasks[taskId].tFrameCounter != 0) { - gTasks[taskId].data[TD_COUNTER]--; + gTasks[taskId].tFrameCounter--; } else { //Initialize Birch sprite - u8 spriteId = gTasks[taskId].data[TD_BIRCH_SPRITE_ID]; + u8 spriteId = gTasks[taskId].tBirchSpriteId; gSprites[spriteId].pos1.x = 136; gSprites[spriteId].pos1.y = 60; @@ -758,19 +756,19 @@ static void Task_NewGameSpeech2(u8 taskId) gSprites[spriteId].oam.objMode = ST_OAM_OBJ_BLEND; StartSpriteFadeIn(taskId, 10); StartBackgroundFadeIn(taskId, 20); - gTasks[taskId].data[TD_COUNTER] = 80; + gTasks[taskId].tFrameCounter = 80; gTasks[taskId].func = Task_NewGameSpeech3; } } static void Task_NewGameSpeech3(u8 taskId) { - if (gTasks[taskId].data[TD_SUBTASK_DONE] != FALSE) + if (gTasks[taskId].tSubtaskIsDone) { - gSprites[gTasks[taskId].data[TD_BIRCH_SPRITE_ID]].oam.objMode = ST_OAM_OBJ_NORMAL; - if (gTasks[taskId].data[TD_COUNTER]) + gSprites[gTasks[taskId].tBirchSpriteId].oam.objMode = ST_OAM_OBJ_NORMAL; + if (gTasks[taskId].tFrameCounter) { - gTasks[taskId].data[TD_COUNTER]--; + gTasks[taskId].tFrameCounter--; } else { @@ -801,7 +799,7 @@ static void Task_NewGameSpeech5(u8 taskId) static void Task_NewGameSpeech6(u8 taskId) { - u8 spriteId = gTasks[taskId].data[TD_AZURILL_SPRITE_ID]; + u8 spriteId = gTasks[taskId].tAzurillSpriteId; gSprites[spriteId].pos1.x = 104; gSprites[spriteId].pos1.y = 72; @@ -809,7 +807,7 @@ static void Task_NewGameSpeech6(u8 taskId) gSprites[spriteId].data0 = 0; CreatePokeballSprite(spriteId, gSprites[spriteId].oam.paletteNum, 0x70, 0x3A, 0, 0, 0x20, 0x0000FFFF); gTasks[taskId].func = Task_NewGameSpeech7; - gTasks[taskId].data[TD_COUNTER] = 0; + gTasks[taskId].tFrameCounter = 0; } static void Task_NewGameSpeech7(u8 taskId) @@ -817,18 +815,18 @@ static void Task_NewGameSpeech7(u8 taskId) if (IsCryFinished()) { //Go on to next sentence after frame 95 - if (gTasks[taskId].data[TD_COUNTER] > 95) + if (gTasks[taskId].tFrameCounter > 95) { MenuSetText(gSystemText_NewPara); gTasks[taskId].func = Task_NewGameSpeech8; } } - if (gTasks[taskId].data[TD_COUNTER] < 16384) + if (gTasks[taskId].tFrameCounter < 16384) { - gTasks[taskId].data[TD_COUNTER]++; + gTasks[taskId].tFrameCounter++; //Play Azurill cry at frame 32 - if (gTasks[taskId].data[TD_COUNTER] == 32) + if (gTasks[taskId].tFrameCounter == 32) PlayCry1(SPECIES_AZURILL, 0); } } @@ -859,11 +857,11 @@ static void Task_NewGameSpeech10(u8 taskId) { if (BirchSpeechUpdateWindowText()) { - gSprites[gTasks[taskId].data[TD_BIRCH_SPRITE_ID]].oam.objMode = ST_OAM_OBJ_BLEND; - gSprites[gTasks[taskId].data[TD_AZURILL_SPRITE_ID]].oam.objMode = ST_OAM_OBJ_BLEND; + gSprites[gTasks[taskId].tBirchSpriteId].oam.objMode = ST_OAM_OBJ_BLEND; + gSprites[gTasks[taskId].tAzurillSpriteId].oam.objMode = ST_OAM_OBJ_BLEND; StartSpriteFadeOut(taskId, 2); StartBackgroundFadeOut(taskId, 1); - gTasks[taskId].data[TD_COUNTER] = 64; + gTasks[taskId].tFrameCounter = 64; gTasks[taskId].func = Task_NewGameSpeech11; } } @@ -871,41 +869,41 @@ static void Task_NewGameSpeech10(u8 taskId) //Slide platform away to the right static void Task_NewGameSpeech11(u8 taskId) { - if (gTasks[taskId].data[TD_BGHOFS] != -60) + if (gTasks[taskId].tBGhofs != -60) { - gTasks[taskId].data[TD_BGHOFS] -= 2; - REG_BG1HOFS = gTasks[taskId].data[TD_BGHOFS]; + gTasks[taskId].tBGhofs -= 2; + REG_BG1HOFS = gTasks[taskId].tBGhofs; } else { - gTasks[taskId].data[TD_BGHOFS] = -60; + gTasks[taskId].tBGhofs = -60; gTasks[taskId].func = Task_NewGameSpeech12; } } static void Task_NewGameSpeech12(u8 taskId) { - if (gTasks[taskId].data[TD_SUBTASK_DONE]) + if (gTasks[taskId].tSubtaskIsDone) { //Hide Birch and Azurill - gSprites[gTasks[taskId].data[TD_BIRCH_SPRITE_ID]].invisible = TRUE; - gSprites[gTasks[taskId].data[TD_AZURILL_SPRITE_ID]].invisible = TRUE; + gSprites[gTasks[taskId].tBirchSpriteId].invisible = TRUE; + gSprites[gTasks[taskId].tAzurillSpriteId].invisible = TRUE; - if (gTasks[taskId].data[TD_COUNTER]) + if (gTasks[taskId].tFrameCounter) { - gTasks[taskId].data[TD_COUNTER]--; + gTasks[taskId].tFrameCounter--; } else { //Initialize Brendan sprite - u8 spriteId = gTasks[taskId].data[TD_BRENDAN_SPRITE_ID]; + u8 spriteId = gTasks[taskId].tBrendanSpriteId; gSprites[spriteId].pos1.x = 180; gSprites[spriteId].pos1.y = 60; gSprites[spriteId].invisible = FALSE; gSprites[spriteId].oam.objMode = ST_OAM_OBJ_BLEND; - gTasks[taskId].data[TD_TRAINER_SPRITE_ID] = spriteId; - gTasks[taskId].data[TD_GENDER_SELECTION] = 0; + gTasks[taskId].tTrainerSpriteId = spriteId; + gTasks[taskId].tGenderSelection = 0; StartSpriteFadeIn(taskId, 2); StartBackgroundFadeIn(taskId, 1); gTasks[taskId].func = Task_NewGameSpeech13; @@ -915,9 +913,9 @@ static void Task_NewGameSpeech12(u8 taskId) static void Task_NewGameSpeech13(u8 taskId) { - if (gTasks[taskId].data[TD_SUBTASK_DONE]) + if (gTasks[taskId].tSubtaskIsDone) { - gSprites[gTasks[taskId].data[TD_TRAINER_SPRITE_ID]].oam.objMode = ST_OAM_OBJ_NORMAL; + gSprites[gTasks[taskId].tTrainerSpriteId].oam.objMode = ST_OAM_OBJ_NORMAL; gTasks[taskId].func = Task_NewGameSpeech14; } } @@ -964,11 +962,11 @@ static void Task_NewGameSpeech16(u8 taskId) cursorPos = GetMenuCursorPos(); - if (cursorPos != gTasks[taskId].data[TD_GENDER_SELECTION]) + if (cursorPos != gTasks[taskId].tGenderSelection) { //Menu selection changed. Slide Brendan or May out and slide the other in - gTasks[taskId].data[TD_GENDER_SELECTION] = cursorPos; - gSprites[gTasks[taskId].data[TD_TRAINER_SPRITE_ID]].oam.objMode = ST_OAM_OBJ_BLEND; + gTasks[taskId].tGenderSelection = cursorPos; + gSprites[gTasks[taskId].tTrainerSpriteId].oam.objMode = ST_OAM_OBJ_BLEND; StartSpriteFadeOut(taskId, 0); gTasks[taskId].func = Task_NewGameSpeech17; } @@ -977,9 +975,9 @@ static void Task_NewGameSpeech16(u8 taskId) //Slide old trainer sprite off right of screen static void Task_NewGameSpeech17(u8 taskId) { - u8 spriteId = gTasks[taskId].data[TD_TRAINER_SPRITE_ID]; + u8 spriteId = gTasks[taskId].tTrainerSpriteId; - if (gTasks[taskId].data[TD_SUBTASK_DONE] == FALSE) + if (gTasks[taskId].tSubtaskIsDone == FALSE) { gSprites[spriteId].pos1.x += 4; //Move sprite right } @@ -988,14 +986,14 @@ static void Task_NewGameSpeech17(u8 taskId) gSprites[spriteId].invisible = TRUE; //Set up new trainer sprite - if (gTasks[taskId].data[TD_GENDER_SELECTION]) - spriteId = gTasks[taskId].data[TD_MAY_SPRITE_ID]; + if (gTasks[taskId].tGenderSelection) + spriteId = gTasks[taskId].tMaySpriteId; else - spriteId = gTasks[taskId].data[TD_BRENDAN_SPRITE_ID]; + spriteId = gTasks[taskId].tBrendanSpriteId; gSprites[spriteId].pos1.x = 240; gSprites[spriteId].pos1.y = 60; gSprites[spriteId].invisible = FALSE; - gTasks[taskId].data[TD_TRAINER_SPRITE_ID] = spriteId; + gTasks[taskId].tTrainerSpriteId = spriteId; gSprites[spriteId].oam.objMode = ST_OAM_OBJ_BLEND; StartSpriteFadeIn(taskId, 0); gTasks[taskId].func = Task_NewGameSpeech18; @@ -1005,7 +1003,7 @@ static void Task_NewGameSpeech17(u8 taskId) //Slide new trainer sprite from right of screen static void Task_NewGameSpeech18(u8 taskId) { - u8 spriteId = gTasks[taskId].data[TD_TRAINER_SPRITE_ID]; + u8 spriteId = gTasks[taskId].tTrainerSpriteId; if (gSprites[spriteId].pos1.x > 180) { @@ -1014,7 +1012,7 @@ static void Task_NewGameSpeech18(u8 taskId) else { gSprites[spriteId].pos1.x = 180; - if (gTasks[taskId].data[TD_SUBTASK_DONE]) + if (gTasks[taskId].tSubtaskIsDone) { gSprites[spriteId].oam.objMode = ST_OAM_OBJ_NORMAL; gTasks[taskId].func = Task_NewGameSpeech16; //Go back to gender menu @@ -1106,7 +1104,7 @@ static void Task_NewGameSpeech25(u8 taskId) case 0: //YES PlaySE(SE_SELECT); MenuZeroFillWindowRect(2, 1, 8, 7); - gSprites[gTasks[taskId].data[TD_TRAINER_SPRITE_ID]].oam.objMode = ST_OAM_OBJ_BLEND; + gSprites[gTasks[taskId].tTrainerSpriteId].oam.objMode = ST_OAM_OBJ_BLEND; StartSpriteFadeOut(taskId, 2); StartBackgroundFadeOut(taskId, 1); gTasks[taskId].func = Task_NewGameSpeech26; //Continue @@ -1122,10 +1120,10 @@ static void Task_NewGameSpeech25(u8 taskId) static void Task_NewGameSpeech26(u8 taskId) { - if (gTasks[taskId].data[TD_BGHOFS]) + if (gTasks[taskId].tBGhofs) { - gTasks[taskId].data[TD_BGHOFS] += 2; - REG_BG1HOFS = gTasks[taskId].data[TD_BGHOFS]; + gTasks[taskId].tBGhofs += 2; + REG_BG1HOFS = gTasks[taskId].tBGhofs; } else { @@ -1135,23 +1133,23 @@ static void Task_NewGameSpeech26(u8 taskId) static void Task_NewGameSpeech27(u8 taskId) { - if (gTasks[taskId].data[TD_SUBTASK_DONE]) + if (gTasks[taskId].tSubtaskIsDone) { s16 spriteId; //Hide Brendan and May sprites - spriteId = gTasks[taskId].data[TD_BRENDAN_SPRITE_ID]; + spriteId = gTasks[taskId].tBrendanSpriteId; gSprites[spriteId].invisible = TRUE; - spriteId = gTasks[taskId].data[TD_MAY_SPRITE_ID]; + spriteId = gTasks[taskId].tMaySpriteId; gSprites[spriteId].invisible = TRUE; //Fade in Birch and Azurill - spriteId = (u8)gTasks[taskId].data[TD_BIRCH_SPRITE_ID]; + spriteId = (u8)gTasks[taskId].tBirchSpriteId; gSprites[spriteId].pos1.x = 136; gSprites[spriteId].pos1.y = 64; gSprites[spriteId].invisible = FALSE; gSprites[spriteId].oam.objMode = ST_OAM_OBJ_BLEND; - spriteId = (u8)gTasks[taskId].data[TD_AZURILL_SPRITE_ID]; + spriteId = (u8)gTasks[taskId].tAzurillSpriteId; gSprites[spriteId].pos1.x = 104; gSprites[spriteId].pos1.y = 72; gSprites[spriteId].invisible = FALSE; @@ -1170,27 +1168,27 @@ static void Task_NewGameSpeech27(u8 taskId) static void Task_NewGameSpeech28(u8 taskId) { - if (gTasks[taskId].data[TD_SUBTASK_DONE]) + if (gTasks[taskId].tSubtaskIsDone) { s16 spriteId; - spriteId = gTasks[taskId].data[TD_BIRCH_SPRITE_ID]; + spriteId = gTasks[taskId].tBirchSpriteId; gSprites[spriteId].oam.objMode = ST_OAM_OBJ_NORMAL; - spriteId = gTasks[taskId].data[TD_AZURILL_SPRITE_ID]; + spriteId = gTasks[taskId].tAzurillSpriteId; gSprites[spriteId].oam.objMode = ST_OAM_OBJ_NORMAL; if (BirchSpeechUpdateWindowText()) { //Fade out Birch and Azurill - spriteId = gTasks[taskId].data[TD_BIRCH_SPRITE_ID]; + spriteId = gTasks[taskId].tBirchSpriteId; gSprites[spriteId].oam.objMode = ST_OAM_OBJ_BLEND; - spriteId = gTasks[taskId].data[TD_AZURILL_SPRITE_ID]; + spriteId = gTasks[taskId].tAzurillSpriteId; gSprites[spriteId].oam.objMode = ST_OAM_OBJ_BLEND; StartSpriteFadeOut(taskId, 2); StartBackgroundFadeOut(taskId, 1); - gTasks[taskId].data[TD_COUNTER] = 64; + gTasks[taskId].tFrameCounter = 64; gTasks[taskId].func = Task_NewGameSpeech29; } } @@ -1198,19 +1196,19 @@ static void Task_NewGameSpeech28(u8 taskId) static void Task_NewGameSpeech29(u8 taskId) { - if (gTasks[taskId].data[TD_SUBTASK_DONE]) + if (gTasks[taskId].tSubtaskIsDone) { s16 spriteId; //Hide Birch and Azurill - spriteId = gTasks[taskId].data[TD_BIRCH_SPRITE_ID]; + spriteId = gTasks[taskId].tBirchSpriteId; gSprites[spriteId].invisible = TRUE; - spriteId = gTasks[taskId].data[TD_AZURILL_SPRITE_ID]; + spriteId = gTasks[taskId].tAzurillSpriteId; gSprites[spriteId].invisible = TRUE; - if (gTasks[taskId].data[TD_COUNTER]) + if (gTasks[taskId].tFrameCounter) { - gTasks[taskId].data[TD_COUNTER]--; + gTasks[taskId].tFrameCounter--; } else { @@ -1218,14 +1216,14 @@ static void Task_NewGameSpeech29(u8 taskId) //Fade in trainer and background if (gSaveBlock2.playerGender) - spriteId = (u8)gTasks[taskId].data[TD_MAY_SPRITE_ID]; + spriteId = (u8)gTasks[taskId].tMaySpriteId; else - spriteId = (u8)gTasks[taskId].data[TD_BRENDAN_SPRITE_ID]; + spriteId = (u8)gTasks[taskId].tBrendanSpriteId; gSprites[spriteId].pos1.x = 120; gSprites[spriteId].pos1.y = 60; gSprites[spriteId].invisible = FALSE; gSprites[spriteId].oam.objMode = ST_OAM_OBJ_BLEND; - gTasks[taskId].data[TD_TRAINER_SPRITE_ID] = spriteId; + gTasks[taskId].tTrainerSpriteId = spriteId; StartSpriteFadeIn(taskId, 2); StartBackgroundFadeIn(taskId, 1); @@ -1238,18 +1236,18 @@ static void Task_NewGameSpeech29(u8 taskId) static void Task_NewGameSpeech30(u8 taskId) { - if (gTasks[taskId].data[TD_SUBTASK_DONE]) + if (gTasks[taskId].tSubtaskIsDone) { s16 spriteId; - spriteId = gTasks[taskId].data[TD_TRAINER_SPRITE_ID]; + spriteId = gTasks[taskId].tTrainerSpriteId; gSprites[spriteId].oam.objMode = ST_OAM_OBJ_NORMAL; if (BirchSpeechUpdateWindowText()) { u8 spriteId; - spriteId = gTasks[taskId].data[TD_TRAINER_SPRITE_ID]; + spriteId = gTasks[taskId].tTrainerSpriteId; gSprites[spriteId].oam.affineMode = 1; gSprites[spriteId].affineAnims = gSpriteAffineAnimTable_81E79AC; InitSpriteAffineAnim(&gSprites[spriteId]); @@ -1264,7 +1262,7 @@ static void Task_NewGameSpeech30(u8 taskId) static void Task_NewGameSpeech31(u8 taskId) { - u8 spriteId = gTasks[taskId].data[TD_TRAINER_SPRITE_ID]; + u8 spriteId = gTasks[taskId].tTrainerSpriteId; if (gSprites[spriteId].affineAnimEnded) gTasks[taskId].func = Task_NewGameSpeech32; @@ -1274,7 +1272,7 @@ static void Task_NewGameSpeech32(u8 taskId) { if (!gPaletteFade.active) { - u8 spriteId = gTasks[taskId].data[TD_TRAINER_SPRITE_ID]; + u8 spriteId = gTasks[taskId].tTrainerSpriteId; gSprites[spriteId].callback = nullsub_34; REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON; BeginNormalPaletteFade(0xFFFF0000, 0, 0, 0x10, 0xFFFF); @@ -1328,7 +1326,7 @@ void CB_ContinueNewGameSpeechPart2() taskId = CreateTask(Task_NewGameSpeech23, 0); - gTasks[taskId].data[TD_BGHOFS] = -60; + gTasks[taskId].tBGhofs = -60; remove_some_task(); ResetSpriteData(); @@ -1340,20 +1338,20 @@ void CB_ContinueNewGameSpeechPart2() if (gSaveBlock2.playerGender != MALE) { - gTasks[taskId].data[TD_GENDER_SELECTION] = FEMALE; - spriteId = gTasks[taskId].data[TD_MAY_SPRITE_ID]; + gTasks[taskId].tGenderSelection = FEMALE; + spriteId = gTasks[taskId].tMaySpriteId; } else { - gTasks[taskId].data[TD_GENDER_SELECTION] = MALE; - spriteId = gTasks[taskId].data[TD_BRENDAN_SPRITE_ID]; + gTasks[taskId].tGenderSelection = MALE; + spriteId = gTasks[taskId].tBrendanSpriteId; } gSprites[spriteId].pos1.x = 180; gSprites[spriteId].pos1.y = 60; gSprites[spriteId].invisible = FALSE; - gTasks[taskId].data[TD_TRAINER_SPRITE_ID] = spriteId; + gTasks[taskId].tTrainerSpriteId = spriteId; REG_BG1HOFS = -60; @@ -1412,56 +1410,67 @@ void AddBirchSpeechObjects(u8 taskId) gSprites[spriteId].callback = nullsub_34; gSprites[spriteId].oam.priority = 0; gSprites[spriteId].invisible = 1; - gTasks[taskId].data[TD_BIRCH_SPRITE_ID] = spriteId; + gTasks[taskId].tBirchSpriteId = spriteId; spriteId = CreateAzurillSprite(0x68, 0x48); gSprites[spriteId].callback = nullsub_34; gSprites[spriteId].oam.priority = 0; gSprites[spriteId].invisible = 1; - gTasks[taskId].data[TD_AZURILL_SPRITE_ID] = spriteId; + gTasks[taskId].tAzurillSpriteId = spriteId; //Create Brendan sprite - spriteId = CreateTrainerSprite_BirchSpeech(0, 120, 60, 0, unk_2000000); + spriteId = CreateTrainerSprite(0, 120, 60, 0, unk_2000000); gSprites[spriteId].callback = nullsub_34; gSprites[spriteId].invisible = 1; gSprites[spriteId].oam.priority = 0; - gTasks[taskId].data[TD_BRENDAN_SPRITE_ID] = spriteId; + gTasks[taskId].tBrendanSpriteId = spriteId; //Create May sprite - spriteId = CreateTrainerSprite_BirchSpeech(1, 120, 60, 0, unk_2000000 + 0x800); + spriteId = CreateTrainerSprite(1, 120, 60, 0, unk_2000000 + 0x800); gSprites[spriteId].callback = nullsub_34; gSprites[spriteId].invisible = 1; gSprites[spriteId].oam.priority = 0; - gTasks[taskId].data[TD_MAY_SPRITE_ID] = spriteId; + gTasks[taskId].tMaySpriteId = spriteId; } -enum { - TD_PARENT_TASK_ID, - TD_EVA, //EVA coefficient of REG_BLDALPHA - TD_EVB, //EVB coefficient of REG_BLDALPHA - TD_INTERVAL, - TD_FRAMECOUNTER -}; +#undef tTrainerSpriteId +#undef tBGhofs +//#undef tSubtaskIsDone +#undef tGenderSelection +#undef tFrameCounter +#undef tBirchSpriteId +#undef tAzurillSpriteId +#undef tBrendanSpriteId +#undef tMaySpriteId + + +// Sprite Fade task + +#define tMainTaskId data[0] +#define tBlendEVA data[1] +#define tBlendEVB data[2] +#define tUpdateInterval data[3] +#define tFrameCounter data[4] static void Task_SpriteFadeOut(u8 taskId) { - if (gTasks[taskId].data[TD_EVA] == 0) + if (gTasks[taskId].tBlendEVA == 0) { - gTasks[gTasks[taskId].data[TD_PARENT_TASK_ID]].data[TD_SUBTASK_DONE] = TRUE; + gTasks[gTasks[taskId].tMainTaskId].tSubtaskIsDone = TRUE; DestroyTask(taskId); } else { - if (gTasks[taskId].data[TD_FRAMECOUNTER]) + if (gTasks[taskId].tFrameCounter) { - gTasks[taskId].data[TD_FRAMECOUNTER]--; + gTasks[taskId].tFrameCounter--; } else { - gTasks[taskId].data[TD_FRAMECOUNTER] = gTasks[taskId].data[TD_INTERVAL]; - gTasks[taskId].data[TD_EVA]--; - gTasks[taskId].data[TD_EVB]++; - REG_BLDALPHA = gTasks[taskId].data[TD_EVA] + (gTasks[taskId].data[TD_EVB] * 256); + gTasks[taskId].tFrameCounter = gTasks[taskId].tUpdateInterval; + gTasks[taskId].tBlendEVA--; + gTasks[taskId].tBlendEVB++; + REG_BLDALPHA = gTasks[taskId].tBlendEVA + (gTasks[taskId].tBlendEVB * 256); } } } @@ -1474,33 +1483,33 @@ static void StartSpriteFadeOut(u8 taskId, u8 interval) REG_BLDCNT = 592; REG_BLDALPHA = 16; REG_BLDY = 0; - gTasks[taskId].data[TD_SUBTASK_DONE] = FALSE; + gTasks[taskId].tSubtaskIsDone = FALSE; newTaskId = CreateTask(Task_SpriteFadeOut, 0); - gTasks[newTaskId].data[TD_PARENT_TASK_ID] = taskId; - gTasks[newTaskId].data[TD_EVA] = 16; - gTasks[newTaskId].data[TD_EVB] = 0; - gTasks[newTaskId].data[TD_INTERVAL] = interval; - gTasks[newTaskId].data[TD_FRAMECOUNTER] = interval; + gTasks[newTaskId].tMainTaskId = taskId; + gTasks[newTaskId].tBlendEVA = 16; + gTasks[newTaskId].tBlendEVB = 0; + gTasks[newTaskId].tUpdateInterval = interval; + gTasks[newTaskId].tFrameCounter = interval; } static void Task_SpriteFadeIn(u8 taskId) { - if (gTasks[taskId].data[TD_EVA] == 16) + if (gTasks[taskId].tBlendEVA == 16) { - gTasks[gTasks[taskId].data[TD_PARENT_TASK_ID]].data[TD_SUBTASK_DONE] = TRUE; + gTasks[gTasks[taskId].tMainTaskId].tSubtaskIsDone = TRUE; DestroyTask(taskId); } - else if (gTasks[taskId].data[TD_FRAMECOUNTER]) + else if (gTasks[taskId].tFrameCounter) { - gTasks[taskId].data[TD_FRAMECOUNTER]--; + gTasks[taskId].tFrameCounter--; } else { - gTasks[taskId].data[TD_FRAMECOUNTER] = gTasks[taskId].data[TD_INTERVAL]; - gTasks[taskId].data[TD_EVA]++; - gTasks[taskId].data[TD_EVB]--; - REG_BLDALPHA = gTasks[taskId].data[TD_EVA] + (gTasks[taskId].data[TD_EVB] * 256); + gTasks[taskId].tFrameCounter = gTasks[taskId].tUpdateInterval; + gTasks[taskId].tBlendEVA++; + gTasks[taskId].tBlendEVB--; + REG_BLDALPHA = gTasks[taskId].tBlendEVA + (gTasks[taskId].tBlendEVB * 256); } } @@ -1512,36 +1521,49 @@ static void StartSpriteFadeIn(u8 taskId, u8 interval) REG_BLDCNT = 592; REG_BLDALPHA = 4096; REG_BLDY = 0; - gTasks[taskId].data[TD_SUBTASK_DONE] = FALSE; + gTasks[taskId].tSubtaskIsDone = FALSE; newTaskId = CreateTask(Task_SpriteFadeIn, 0); - gTasks[newTaskId].data[TD_PARENT_TASK_ID] = taskId; - gTasks[newTaskId].data[TD_EVA] = 0; - gTasks[newTaskId].data[TD_EVB] = 16; - gTasks[newTaskId].data[TD_INTERVAL] = interval; - gTasks[newTaskId].data[TD_FRAMECOUNTER] = interval; + gTasks[newTaskId].tMainTaskId = taskId; + gTasks[newTaskId].tBlendEVA = 0; + gTasks[newTaskId].tBlendEVB = 16; + gTasks[newTaskId].tUpdateInterval = interval; + gTasks[newTaskId].tFrameCounter = interval; } -enum { - TD_FADELEVEL = 1, - TD_DELAY, -}; +#undef tMainTaskId +#undef tBlendEVA +#undef tBlendEVB +#undef tUpdateInterval +#undef tFrameCounter + + +// Background fade task + +#define tMainTaskId data[0] +#define tFadeLevel data[1] +#define tDelay data[2] +#define tUpdateInterval data[3] +#define tFrameCounter data[4] static void HandleFloorShadowFadeOut(u8 taskId) { - if (gTasks[taskId].data[TD_DELAY]) - gTasks[taskId].data[TD_DELAY]--; + if (gTasks[taskId].tDelay) + gTasks[taskId].tDelay--; else { - if (gTasks[taskId].data[TD_FADELEVEL] == 8) + if (gTasks[taskId].tFadeLevel == 8) DestroyTask(taskId); - else if (gTasks[taskId].data[TD_FRAMECOUNTER]) - gTasks[taskId].data[TD_FRAMECOUNTER]--; else { - gTasks[taskId].data[TD_FRAMECOUNTER] = gTasks[taskId].data[TD_INTERVAL]; - gTasks[taskId].data[TD_FADELEVEL]++; - LoadPalette(&gUnknown_081E795C[gTasks[taskId].data[TD_FADELEVEL]], 1, 0x10); + if (gTasks[taskId].tFrameCounter) + gTasks[taskId].tFrameCounter--; + else + { + gTasks[taskId].tFrameCounter = gTasks[taskId].tUpdateInterval; + gTasks[taskId].tFadeLevel++; + LoadPalette(&gUnknown_081E795C[gTasks[taskId].tFadeLevel], 1, 0x10); + } } } } @@ -1550,30 +1572,30 @@ static void HandleFloorShadowFadeOut(u8 taskId) static void StartBackgroundFadeOut(u8 taskId, u8 interval) { u8 newTaskId = CreateTask(HandleFloorShadowFadeOut, 0); - gTasks[newTaskId].data[TD_PARENT_TASK_ID] = taskId; - gTasks[newTaskId].data[TD_FADELEVEL] = 0; - gTasks[newTaskId].data[TD_DELAY] = 8; - gTasks[newTaskId].data[TD_INTERVAL] = interval; - gTasks[newTaskId].data[TD_FRAMECOUNTER] = interval; + gTasks[newTaskId].tMainTaskId = taskId; + gTasks[newTaskId].tFadeLevel = 0; + gTasks[newTaskId].tDelay = 8; + gTasks[newTaskId].tUpdateInterval = interval; + gTasks[newTaskId].tFrameCounter = interval; } static void HandleFloorShadowFadeIn(u8 taskId) { - if (gTasks[taskId].data[TD_DELAY]) - gTasks[taskId].data[TD_DELAY]--; + if (gTasks[taskId].tDelay) + gTasks[taskId].tDelay--; else { - if (gTasks[taskId].data[TD_FADELEVEL] == 0) + if (gTasks[taskId].tFadeLevel == 0) DestroyTask(taskId); else { - if (gTasks[taskId].data[TD_FRAMECOUNTER]) - gTasks[taskId].data[TD_FRAMECOUNTER]--; + if (gTasks[taskId].tFrameCounter) + gTasks[taskId].tFrameCounter--; else { - gTasks[taskId].data[TD_FRAMECOUNTER] = gTasks[taskId].data[TD_INTERVAL]; - gTasks[taskId].data[TD_FADELEVEL]--; - LoadPalette(&gUnknown_081E795C[gTasks[taskId].data[TD_FADELEVEL]], 1, 0x10); + gTasks[taskId].tFrameCounter = gTasks[taskId].tUpdateInterval; + gTasks[taskId].tFadeLevel--; + LoadPalette(&gUnknown_081E795C[gTasks[taskId].tFadeLevel], 1, 0x10); } } } @@ -1583,13 +1605,19 @@ static void HandleFloorShadowFadeIn(u8 taskId) static void StartBackgroundFadeIn(u8 taskId, u8 interval) { u8 newTaskId = CreateTask(HandleFloorShadowFadeIn, 0); - gTasks[newTaskId].data[TD_PARENT_TASK_ID] = taskId; - gTasks[newTaskId].data[TD_FADELEVEL] = 8; - gTasks[newTaskId].data[TD_DELAY] = 8; - gTasks[newTaskId].data[TD_INTERVAL] = interval; - gTasks[newTaskId].data[TD_FRAMECOUNTER] = interval; + gTasks[newTaskId].tMainTaskId = taskId; + gTasks[newTaskId].tFadeLevel = 8; + gTasks[newTaskId].tDelay = 8; + gTasks[newTaskId].tUpdateInterval = interval; + gTasks[newTaskId].tFrameCounter = interval; } +#undef tMainTaskId +#undef tFadeLevel +#undef tDelay +#undef tUpdateInterval +#undef tFrameCounter + static void CreateGenderMenu(u8 left, u8 top) { u8 menuLeft, menuTop; diff --git a/src/menu.c b/src/engine/menu.c similarity index 90% rename from src/menu.c rename to src/engine/menu.c index d532fc602..a9c4aaa43 100644 --- a/src/menu.c +++ b/src/engine/menu.c @@ -154,9 +154,9 @@ void MenuPrint(const u8 *str, u8 left, u8 top) sub_8003460(gMenuWindowPtr, str, gMenuTextTileOffset, left, top); } -void MenuZeroFillWindowRect(u8 a1, u8 a2, u8 a3, u8 a4) +void MenuZeroFillWindowRect(u8 left, u8 top, u8 right, u8 bottom) { - ZeroFillWindowRect(gMenuWindowPtr, a1, a2, a3, a4); + ZeroFillWindowRect(gMenuWindowPtr, left, top, right, bottom); } void MenuFillWindowRectWithBlankTile(u8 left, u8 top, u8 right, u8 bottom) @@ -180,7 +180,7 @@ void sub_8071F40(const u8 *str) MenuPrint(str, 3, 15); } -void sub_8071F60(u8 a1, u8 a2, u8 a3, u8 a4) +void sub_8071F60(u8 a1, u8 a2, u8 a3) { sub_8003490(gMenuWindowPtr, a1, gMenuTextTileOffset, a2, a3); } @@ -205,7 +205,7 @@ void MenuPrintMessage(const u8 *str, u8 left, u8 top) sub_8002EB0(gMenuWindowPtr, str, gMenuTextTileOffset, left, top); } -void sub_8072044(const u8 *str) +void MenuPrintMessageDefaultCoords(const u8 *str) { sub_8002EB0(gMenuWindowPtr, str, gMenuTextTileOffset, 2, 15); } @@ -571,7 +571,7 @@ void PrintMenuItems(u8 left, u8 top, u8 menuItemCount, const struct MenuAction m MenuPrint(menuItems[i].text, left, top + 2 * i); } -void PrintMenuItemsReordered(u8 left, u8 top, u8 menuItemCount, const struct MenuAction menuItems[], const u8 *order) +void PrintMenuItemsReordered(u8 left, u8 top, u8 menuItemCount, const struct MenuAction2 menuItems[], const u8 *order) { u8 i; @@ -630,87 +630,87 @@ __attribute__((naked)) int sub_8072AB0(const u8 *str, u8 left, u16 top, u8 width, u8 height, u32 a6) { asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - sub sp, 0x10\n\ - mov r12, r0\n\ - ldr r0, [sp, 0x24]\n\ - ldr r4, [sp, 0x28]\n\ - str r4, [sp, 0xC]\n\ - lsls r1, 24\n\ - lsrs r5, r1, 24\n\ - lsls r2, 16\n\ - lsrs r4, r2, 16\n\ - lsls r3, 24\n\ - lsrs r6, r3, 24\n\ - lsls r0, 24\n\ - lsrs r7, r0, 24\n\ - ldr r0, _08072AF8 @ =gMenuWindowPtr\n\ - ldr r0, [r0]\n\ - ldr r1, _08072AFC @ =gMenuTextTileOffset\n\ - ldrh r3, [r1]\n\ - str r5, [sp]\n\ - str r4, [sp, 0x4]\n\ - str r6, [sp, 0x8]\n\ - movs r1, 0\n\ - mov r2, r12\n\ - bl sub_8004FD0\n\ - adds r1, r0, 0\n\ - lsls r1, 24\n\ - lsrs r2, r1, 24\n\ - movs r3, 0x7\n\ - ands r3, r5\n\ - cmp r3, 0\n\ - bne _08072B00\n\ - adds r1, r6, 0x7\n\ - asrs r1, 3\n\ - subs r1, 0x1\n\ - b _08072B0C\n\ - .align 2, 0\n\ + push {r4-r7,lr}\n\ + sub sp, 0x10\n\ + mov r12, r0\n\ + ldr r0, [sp, 0x24]\n\ + ldr r4, [sp, 0x28]\n\ + str r4, [sp, 0xC]\n\ + lsls r1, 24\n\ + lsrs r5, r1, 24\n\ + lsls r2, 16\n\ + lsrs r4, r2, 16\n\ + lsls r3, 24\n\ + lsrs r6, r3, 24\n\ + lsls r0, 24\n\ + lsrs r7, r0, 24\n\ + ldr r0, _08072AF8 @ =gMenuWindowPtr\n\ + ldr r0, [r0]\n\ + ldr r1, _08072AFC @ =gMenuTextTileOffset\n\ + ldrh r3, [r1]\n\ + str r5, [sp]\n\ + str r4, [sp, 0x4]\n\ + str r6, [sp, 0x8]\n\ + movs r1, 0\n\ + mov r2, r12\n\ + bl sub_8004FD0\n\ + adds r1, r0, 0\n\ + lsls r1, 24\n\ + lsrs r2, r1, 24\n\ + movs r3, 0x7\n\ + ands r3, r5\n\ + cmp r3, 0\n\ + bne _08072B00\n\ + adds r1, r6, 0x7\n\ + asrs r1, 3\n\ + subs r1, 0x1\n\ + b _08072B0C\n\ + .align 2, 0\n\ _08072AF8: .4byte gMenuWindowPtr\n\ _08072AFC: .4byte gMenuTextTileOffset\n\ _08072B00:\n\ - adds r3, r6, r3\n\ - subs r1, r3, 0x1\n\ - cmp r1, 0\n\ - bge _08072B0A\n\ - adds r1, r3, 0x6\n\ + adds r3, r6, r3\n\ + subs r1, r3, 0x1\n\ + cmp r1, 0\n\ + bge _08072B0A\n\ + adds r1, r3, 0x6\n\ _08072B0A:\n\ - asrs r1, 3\n\ + asrs r1, 3\n\ _08072B0C:\n\ - lsls r1, 24\n\ - lsrs r1, 24\n\ - adds r6, r1, 0\n\ - lsrs r5, 3\n\ - adds r1, r7, 0x7\n\ - asrs r1, 3\n\ - lsls r1, 24\n\ - lsrs r7, r1, 24\n\ - lsrs r4, 3\n\ - cmp r2, r7\n\ - bcs _08072B3E\n\ - lsls r1, r2, 1\n\ - adds r1, r4, r1\n\ - lsls r1, 24\n\ - lsrs r1, 24\n\ - adds r2, r5, r6\n\ - lsls r2, 24\n\ - lsrs r2, 24\n\ - adds r3, r7, r4\n\ - subs r3, 0x1\n\ - lsls r3, 24\n\ - lsrs r3, 24\n\ - adds r0, r5, 0\n\ - bl MenuFillWindowRectWithBlankTile\n\ + lsls r1, 24\n\ + lsrs r1, 24\n\ + adds r6, r1, 0\n\ + lsrs r5, 3\n\ + adds r1, r7, 0x7\n\ + asrs r1, 3\n\ + lsls r1, 24\n\ + lsrs r7, r1, 24\n\ + lsrs r4, 3\n\ + cmp r2, r7\n\ + bcs _08072B3E\n\ + lsls r1, r2, 1\n\ + adds r1, r4, r1\n\ + lsls r1, 24\n\ + lsrs r1, 24\n\ + adds r2, r5, r6\n\ + lsls r2, 24\n\ + lsrs r2, 24\n\ + adds r3, r7, r4\n\ + subs r3, 0x1\n\ + lsls r3, 24\n\ + lsrs r3, 24\n\ + adds r0, r5, 0\n\ + bl MenuFillWindowRectWithBlankTile\n\ _08072B3E:\n\ - add sp, 0x10\n\ - pop {r4-r7}\n\ - pop {r1}\n\ - bx r1\n\ + add sp, 0x10\n\ + pop {r4-r7}\n\ + pop {r1}\n\ + bx r1\n\ .syntax divided\n"); } #endif -void MenuPrint_RightAligned(u8 *str, u8 left, u8 top) +void MenuPrint_RightAligned(const u8 *str, u8 left, u8 top) { sub_8004D38(gMenuWindowPtr, str, gMenuTextTileOffset, left, top); } diff --git a/src/menu_cursor.c b/src/engine/menu_cursor.c similarity index 89% rename from src/menu_cursor.c rename to src/engine/menu_cursor.c index 2dc36cf32..d43be2a2f 100644 --- a/src/menu_cursor.c +++ b/src/engine/menu_cursor.c @@ -22,13 +22,12 @@ extern const struct Subsprite gUnknown_0842F790; extern u16 gUnknown_0203A360[]; -extern struct Subsprite gMenuCursorSubsprites[]; - -extern u8 gUnknown_0203A3D0; -extern u8 gUnknown_0203A3D1; -extern u8 gUnknown_0203A3D2; -extern u8 gUnknown_0203A3D3; -extern u8 gUnknown_0203A3D4; +EWRAM_DATA struct Subsprite gMenuCursorSubsprites[10] = {0}; +EWRAM_DATA u8 gUnknown_0203A3D0 = 0; +EWRAM_DATA u8 gUnknown_0203A3D1 = 0; +EWRAM_DATA u8 gUnknown_0203A3D2 = 0; +EWRAM_DATA u8 gUnknown_0203A3D3 = 0; +EWRAM_DATA u8 gUnknown_0203A3D4 = 0; void sub_814A590(void) { @@ -187,73 +186,67 @@ void sub_814A904(void) return; } +#if ENGLISH #ifdef NONMATCHING // Fix pls -void sub_814A958(u8 a1) +void sub_814A958(u8 a) { - struct Subsprite *cursub; - u8 v2; // r7@1 - s16 v3; // r2@1 - s32 v5; // r0@1 - s32 v6; // r3@1 - s32 v7; // r5@3 - int v8; // r7@9 - s16 negone; + u8 r7; + struct Subsprite *r4 = &gMenuCursorSubsprites[0]; + s16 r2 = -1; + s32 _a = a; + s16 r5; + s16 i; - cursub = &gMenuCursorSubsprites[0]; - negone = -1; - cursub = (struct Subsprite){0,2}; - cursub->x = negone; - cursub++; - - v2 = 1; - v3 = 1; - v5 = (a1 - 1) << 0x10; - v6 = v5 >> 0x10; - if ((v5 >> 0x10) > 7) + *r4 = (struct Subsprite){.x = 0, .y = 0, .shape = 2, .size = 0, .tileOffset = 0, .priority = 0}; + r4->x = r2; + r4++; + r7 = 1; + r2 = 1; + r5 = a; + i = r5; + while ((i -= r2) >= 8) { - do + if (i > 0x1F) { - if (v6 > 0x1F) + *r4 = gUnknown_0842F780; + r4->x = r2; + r2 += 32; + r5 = a; + } + //_0814A9D4 + else + { + r5 = a; + if (_a > 0x27 && i > 8) { - *cursub = gUnknown_0842F780; - cursub->x = v3; - v3 = ((v3 << 16) + 0x200000) >> 16; - v7 = a1 << 16; + *r4 = gUnknown_0842F780; + r4->x = (r2 - 32) + (i & ~7); + r2 += i & 0x18; } + //_0814AA0A else { - v7 = a1 << 16; - if (a1 <= 0x27 || v6 <= 0x8) - { - *cursub = gUnknown_0842F788; - cursub->x = v3; - v3 = ((v3 << 16) + 0x80000) >> 16; - } - else - { - *cursub = gUnknown_0842F780; - cursub->x = v3 - 0x20 + (v6 & 0xFFF8); - v3 = (v3 + (v6 & 0x18)) & negone; - } + *r4 = gUnknown_0842F788; + r4->x = r2; + r2 += 8; } - - cursub++; - v2 = v2 + 1; - v6 = ((v7 >> 16) - v3) & 0xFFFF; } - while (v7 - v3 > 7); + //_0814AA20 + r4++; + r7++; + i = r5; } - *cursub = gUnknown_0842F790; - cursub->x = v6 + v3 - 7; - v8 = v2 + 1; - if (gUnknown_0203A3D0 != 0x40) - SetSubspriteTables(&gSprites[gUnknown_0203A3D0], &gSubspriteTables_842F5C0[v8]); - if (gUnknown_0203A3D1 != 0x40) - SetSubspriteTables(&gSprites[gUnknown_0203A3D1], &gSubspriteTables_842F5C0[v8]); - return; + //_0814AA3A + *r4 = gUnknown_0842F790; + r4->x = r2 - 7 + i; + r7++; + if (gUnknown_0203A3D0 != 64) + SetSubspriteTables(&gSprites[gUnknown_0203A3D0], gSubspriteTables_842F5C0 + r7); + if (gUnknown_0203A3D1 != 64) + SetSubspriteTables(&gSprites[gUnknown_0203A3D1], gSubspriteTables_842F5C0 + r7); } -#elif ENGLISH +#else __attribute__((naked)) void sub_814A958(u8 a1) { @@ -435,6 +428,7 @@ _0814AAB4: .4byte gSubspriteTables_842F5C0\n\ _0814AAB8: .4byte gUnknown_0203A3D1\n\ .syntax divided\n"); } +#endif #elif GERMAN __attribute__((naked)) void sub_814A958(u8 a1) @@ -555,7 +549,7 @@ _0814AA24:\n\ cmp r1, 0x7\n\ bgt _0814A99E\n\ _0814AA3E:\n\ - ldr r5, _0814AAAC @ =0x0843d6d8\n\ + ldr r5, _0814AAAC @ =gUnknown_0842F798\n\ ldr r0, [r5]\n\ ldr r1, [r5, 0x4]\n\ str r0, [r4]\n\ @@ -611,7 +605,7 @@ _0814AA9C:\n\ pop {r0}\n\ bx r0\n\ .align 2, 0\n\ -_0814AAAC: .4byte 0x0843d6d8\n\ +_0814AAAC: .4byte gUnknown_0842F798\n\ _0814AAB0: .4byte gUnknown_0203A3D0\n\ _0814AAB4: .4byte gSprites\n\ _0814AAB8: .4byte gSubspriteTables_842F5C0\n\ diff --git a/src/mystery_event_menu.c b/src/engine/mystery_event_menu.c similarity index 90% rename from src/mystery_event_menu.c rename to src/engine/mystery_event_menu.c index 4be5dec1c..0e48dc177 100644 --- a/src/mystery_event_menu.c +++ b/src/engine/mystery_event_menu.c @@ -15,7 +15,8 @@ #include "text.h" extern u8 unk_2000000[]; -extern u8 gUnknown_02039338; + +static EWRAM_DATA u8 gUnknown_02039338 = 0; static void VBlankCB(void); static bool8 CheckLanguageMatch(void); @@ -93,7 +94,7 @@ static void CB2_MysteryEventMenu(void) case 1: if (gPaletteFade.active) break; - sub_8072044(gSystemText_LinkStandby); + MenuPrintMessageDefaultCoords(gSystemText_LinkStandby); gMain.state++; break; case 2: @@ -108,7 +109,7 @@ static void CB2_MysteryEventMenu(void) if ((gLinkStatus & 0x20) && (gLinkStatus & 0x1C) > 4) { PlaySE(SE_PIN); - sub_8072044(gSystemText_LoadEventPressA); + MenuPrintMessageDefaultCoords(gSystemText_LoadEventPressA); gMain.state++; } if (gMain.newKeys & B_BUTTON) @@ -127,7 +128,7 @@ static void CB2_MysteryEventMenu(void) if (GetLinkPlayerCount_2() != 2) { GetEventLoadMessage(gStringVar4, 1); - sub_8072044(gStringVar4); + MenuPrintMessageDefaultCoords(gStringVar4); gMain.state = 13; break; } @@ -157,13 +158,13 @@ static void CB2_MysteryEventMenu(void) sub_800832C(); MenuZeroFillWindowRect(6, 5, 23, 8); GetEventLoadMessage(gStringVar4, 1); - sub_8072044(gStringVar4); + MenuPrintMessageDefaultCoords(gStringVar4); gMain.state = 13; break; } else if (CheckLanguageMatch()) { - sub_8072044(gSystemText_DontCutLink); + MenuPrintMessageDefaultCoords(gSystemText_DontCutLink); gMain.state++; break; } @@ -172,7 +173,7 @@ static void CB2_MysteryEventMenu(void) CloseLink(); MenuZeroFillWindowRect(6, 5, 23, 8); GetEventLoadMessage(gStringVar4, 1); - sub_8072044(gStringVar4); + MenuPrintMessageDefaultCoords(gStringVar4); gMain.state = 13; break; } @@ -221,7 +222,7 @@ static void CB2_MysteryEventMenu(void) sub_800832C(); MenuZeroFillWindowRect(6, 5, 23, 8); GetEventLoadMessage(gStringVar4, 1); - sub_8072044(gStringVar4); + MenuPrintMessageDefaultCoords(gStringVar4); ptr = (u8 *)&gMain; offset1 = offsetof(struct Main, state); asm("" ::: "r1"); @@ -233,7 +234,7 @@ static void CB2_MysteryEventMenu(void) register u8 *ptr2 asm("r1"); register int offset3 asm("r0"); register int dummy asm("r2"); - sub_8072044(gSystemText_DontCutLink); + MenuPrintMessageDefaultCoords(gSystemText_DontCutLink); ptr2 = (u8 *)&gMain; offset3 = offsetof(struct Main, state); if (dummy) @@ -248,7 +249,7 @@ static void CB2_MysteryEventMenu(void) MenuZeroFillWindowRect(6, 5, 23, 8); label: GetEventLoadMessage(gStringVar4, 1); - sub_8072044(gStringVar4); + MenuPrintMessageDefaultCoords(gStringVar4); ptr = (u8 *)&gMain; offset2 = offsetof(struct Main, state); ptr += offset2; @@ -286,14 +287,14 @@ static void CB2_MysteryEventMenu(void) case 11: if (gReceivedRemoteLinkPlayers) break; - unkVal = sub_812613C(unk_2000000); + unkVal = RunMysteryEventScript(unk_2000000); CpuFill32(0, unk_2000000, 0x7D4); if (!GetEventLoadMessage(gStringVar4, unkVal)) TrySavingData(NORMAL_SAVE); gMain.state++; break; case 12: - sub_8072044(gStringVar4); + MenuPrintMessageDefaultCoords(gStringVar4); gMain.state++; break; case 13: @@ -328,7 +329,7 @@ static void CB2_MysteryEventMenu(void) CloseLink(); MenuZeroFillWindowRect(6, 5, 23, 8); GetEventLoadMessage(gStringVar4, 1); - sub_8072044(gStringVar4); + MenuPrintMessageDefaultCoords(gStringVar4); gMain.state = 13; } } diff --git a/src/engine/mystery_event_script.c b/src/engine/mystery_event_script.c new file mode 100644 index 000000000..a6568f5de --- /dev/null +++ b/src/engine/mystery_event_script.c @@ -0,0 +1,462 @@ +#include "global.h" +#include "berry.h" +#include "easy_chat.h" +#include "event_data.h" +#include "mail_data.h" +#include "mystery_event_script.h" +#include "pokedex.h" +#include "pokemon.h" +#include "pokemon_size_record.h" +#include "script.h" +#include "species.h" +#include "strings.h" +#include "string_util.h" +#include "text.h" +#include "util.h" + +#if ENGLISH +#define LANGUAGE_MASK 0x2 +#elif GERMAN +#define LANGUAGE_MASK 0x4 +#endif + +#ifdef SAPPHIRE +#define VERSION_MASK 0x100 +#else +#define VERSION_MASK 0x80 +#endif + +extern void party_compaction(void); +extern void sub_813601C(void); + +extern ScrCmdFunc gMysteryEventScriptCmdTable[]; +extern ScrCmdFunc gMysteryEventScriptCmdTableEnd[]; + +extern const u8 gOtherText_BerryObtainedDadHasIt[]; +extern const u8 gOtherText_BerryTransformed[]; +extern const u8 gOtherText_BerryAlreadyObtained[]; +extern const u8 gOtherText_SpecialRibbonReceived[]; +extern const u8 gOtherText_DexUpgraded[]; +extern const u8 gOtherText_RareWordAdded[]; +extern const u8 gOtherText_PokeWasSentOver[]; +extern const u8 gOtherText_PartyIsFull[]; +extern const u8 gOtherText_NewTrainerInHoenn[]; +extern const u8 gOtherText_DataCannotUseVersion[]; + +static EWRAM_DATA struct ScriptContext sMysteryEventScriptContext = {0}; + +static bool32 CheckCompatibility(u16 a1, u32 a2, u16 a3, u32 a4) +{ + if (!(a1 & LANGUAGE_MASK)) + return FALSE; + + if (!(a2 & LANGUAGE_MASK)) + return FALSE; + + if (!(a3 & 0x4)) + return FALSE; + + if (!(a4 & VERSION_MASK)) + return FALSE; + + return TRUE; +} + +static void SetIncompatible(void) +{ + StringExpandPlaceholders(gStringVar4, gOtherText_DataCannotUseVersion); + SetMysteryEventScriptStatus(3); +} + +static void InitMysteryEventScript(struct ScriptContext *ctx, u8 *script) +{ + InitScriptContext(ctx, gMysteryEventScriptCmdTable, gMysteryEventScriptCmdTableEnd); + SetupBytecodeScript(ctx, script); + ctx->data[0] = (u32)script; + ctx->data[1] = 0; + ctx->data[2] = 0; + ctx->data[3] = 0; +} + +static bool32 RunMysteryEventScriptCommand(struct ScriptContext *ctx) +{ + if (RunScriptCommand(ctx) && ctx->data[3]) + return TRUE; + else + return FALSE; +} + +u32 RunMysteryEventScript(u8 *script) +{ + struct ScriptContext *ctx = &sMysteryEventScriptContext; + InitMysteryEventScript(ctx, script); + while (RunMysteryEventScriptCommand(ctx)) + ; + return ctx->data[2]; +} + +void SetMysteryEventScriptStatus(u32 val) +{ + sMysteryEventScriptContext.data[2] = val; +} + +static int CalcChecksum(u8 *data, int size) +{ + unsigned int i; + int sum = 0; + + for (i = 0; i < size; i++) + sum += data[i]; + + return sum; +} + +static u32 GetWord(u8 *ptr) +{ + return ptr[0] | (ptr[1] << 8) | (ptr[2] << 16) | (ptr[3] << 24); +} + +static void SetWord(u8 *ptr, u32 val) +{ + ptr[0] = val; + ptr[1] = val >> 8; + ptr[2] = val >> 16; + ptr[3] = val >> 24; +} + +bool8 unref_sub_81261B4(u8 *a1, int a2) +{ + if (a1[0x0] == 1 && a1[0x11] == 15 && !GetWord(a1 + 0x12)) + { + int v4 = GetWord(a1 + 0x16) - a2 + (int)a1; + int v5 = GetWord(a1 + 0x1A); + int v6 = CalcChecksum((u8*)v4, v5 - a2 + (int)a1 - v4); + SetWord(a1 + 0x12, v6); + return TRUE; + } + + return FALSE; +} + +bool8 unref_sub_812620C(u8 *a1, int a2) +{ + if (a1[0x0] == 1 && a1[0x11] == 16 && !GetWord(a1 + 0x12)) + { + int v4 = GetWord(a1 + 0x16) - a2 + (int)a1; + int v5 = GetWord(a1 + 0x1A); + int v6 = CalcCRC16((u8*)v4, v5 - a2 + (int)a1 - v4); + SetWord(a1 + 0x12, v6); + return TRUE; + } + + return FALSE; +} + +static u32 CalcRecordMixingGiftChecksum(void) +{ + u32 sum = 0; + int i; + char *data = (char *)&gSaveBlock1.recordMixingGift.data; + + for (i = 0; i < sizeof(gSaveBlock1.recordMixingGift.data); i++) + { + sum += data[i]; + } + + return sum; +} + +static bool32 IsRecordMixingGiftValid(void) +{ + struct RecordMixingGiftData *data = &gSaveBlock1.recordMixingGift.data; + + u32 checksum = CalcRecordMixingGiftChecksum(); + + if (!data->unk0) + return FALSE; + + if (!data->quantity) + return FALSE; + + if (!data->itemId) + return FALSE; + + if (checksum == 0) + return FALSE; + + if (checksum == gSaveBlock1.recordMixingGift.checksum) + return TRUE; + else + return FALSE; +} + +static void ClearRecordMixingGift(void) +{ + CpuFill16(0, &gSaveBlock1.recordMixingGift, sizeof(gSaveBlock1.recordMixingGift)); +} + +static void SetRecordMixingGift(u8 unk, u8 quantity, u16 itemId) +{ + if (!unk || !quantity || !itemId) + { + ClearRecordMixingGift(); + } + else + { + gSaveBlock1.recordMixingGift.data.unk0 = unk; + gSaveBlock1.recordMixingGift.data.quantity = quantity; + gSaveBlock1.recordMixingGift.data.itemId = itemId; + gSaveBlock1.recordMixingGift.checksum = CalcRecordMixingGiftChecksum(); + } +} + +u16 GetRecordMixingGift(void) +{ + struct RecordMixingGiftData *data = &gSaveBlock1.recordMixingGift.data; + + if (!IsRecordMixingGiftValid()) + { + ClearRecordMixingGift(); + return 0; + } + else + { + u16 itemId = data->itemId; + data->quantity--; + if (data->quantity == 0) + ClearRecordMixingGift(); + else + gSaveBlock1.recordMixingGift.checksum = CalcRecordMixingGiftChecksum(); + return itemId; + } +} + +bool8 MEScrCmd_end(struct ScriptContext *ctx) +{ + StopScript(ctx); + return TRUE; +} + +bool8 MEScrCmd_checkcompat(struct ScriptContext *ctx) +{ + u16 v1; + u32 v2; + u16 v3; + u32 v4; + + ctx->data[1] = ScriptReadWord(ctx); + v1 = ScriptReadHalfword(ctx); + v2 = ScriptReadWord(ctx); + v3 = ScriptReadHalfword(ctx); + v4 = ScriptReadWord(ctx); + + if (CheckCompatibility(v1, v2, v3, v4) == TRUE) + ctx->data[3] = 1; + else + SetIncompatible(); + + return TRUE; +} + +bool8 MEScrCmd_nop(struct ScriptContext *ctx) +{ + return FALSE; +} + +bool8 MEScrCmd_setstatus(struct ScriptContext *ctx) +{ + u8 value = ScriptReadByte(ctx); + ctx->data[2] = value; + return FALSE; +} + +bool8 MEScrCmd_setmsg(struct ScriptContext *ctx) +{ + u8 value = ScriptReadByte(ctx); + u8 *str = (u8 *)(ScriptReadWord(ctx) - ctx->data[1] + ctx->data[0]); + if (value == 255 || value == ctx->data[2]) + StringExpandPlaceholders(gStringVar4, str); + return FALSE; +} + +bool8 MEScrCmd_runscript(struct ScriptContext *ctx) +{ + u8 *script = (u8 *)(ScriptReadWord(ctx) - ctx->data[1] + ctx->data[0]); + ScriptContext2_RunNewScript(script); + return FALSE; +} + +bool8 MEScrCmd_setenigmaberry(struct ScriptContext *ctx) +{ + u8 *str; + const u8 *message; + bool32 haveBerry = IsEnigmaBerryValid(); + u8 *berry = (u8 *)(ScriptReadWord(ctx) - ctx->data[1] + ctx->data[0]); + StringCopyN(gStringVar1, gSaveBlock1.enigmaBerry.berry.name, 7); + SetEnigmaBerry(berry); + StringCopyN(gStringVar2, gSaveBlock1.enigmaBerry.berry.name, 7); + + if (!haveBerry) + { + str = gStringVar4; + message = gOtherText_BerryObtainedDadHasIt; + } + else if (StringCompare(gStringVar1, gStringVar2)) + { + str = gStringVar4; + message = gOtherText_BerryTransformed; + } + else + { + str = gStringVar4; + message = gOtherText_BerryAlreadyObtained; + } + + StringExpandPlaceholders(str, message); + + ctx->data[2] = 2; + + if (IsEnigmaBerryValid() == TRUE) + VarSet(0x402D, 1); + else + ctx->data[2] = 1; + + return FALSE; +} + +bool8 MEScrCmd_giveribbon(struct ScriptContext *ctx) +{ + u8 index = ScriptReadByte(ctx); + u8 ribbonId = ScriptReadByte(ctx); + GiveGiftRibbonToParty(index, ribbonId); + StringExpandPlaceholders(gStringVar4, gOtherText_SpecialRibbonReceived); + ctx->data[2] = 2; + return FALSE; +} + +bool8 MEScrCmd_initramscript(struct ScriptContext *ctx) +{ + u8 mapGroup = ScriptReadByte(ctx); + u8 mapNum = ScriptReadByte(ctx); + u8 objectId = ScriptReadByte(ctx); + u8 *script = (u8 *)(ScriptReadWord(ctx) - ctx->data[1] + ctx->data[0]); + u8 *scriptEnd = (u8 *)(ScriptReadWord(ctx) - ctx->data[1] + ctx->data[0]); + InitRamScript(script, scriptEnd - script, mapGroup, mapNum, objectId); + return FALSE; +} + +bool8 MEScrCmd_givenationaldex(struct ScriptContext *ctx) +{ + EnableNationalPokedex(); + StringExpandPlaceholders(gStringVar4, gOtherText_DexUpgraded); + ctx->data[2] = 2; + return FALSE; +} + +bool8 MEScrCmd_addrareword(struct ScriptContext *ctx) +{ + sub_80EB890(ScriptReadByte(ctx)); + StringExpandPlaceholders(gStringVar4, gOtherText_RareWordAdded); + ctx->data[2] = 2; + return FALSE; +} + +bool8 MEScrCmd_setrecordmixinggift(struct ScriptContext *ctx) +{ + u8 unk = ScriptReadByte(ctx); + u8 quantity = ScriptReadByte(ctx); + u16 itemId = ScriptReadHalfword(ctx); + SetRecordMixingGift(unk, quantity, itemId); + return FALSE; +} + +bool8 MEScrCmd_givepokemon(struct ScriptContext *ctx) +{ + struct MailStruct mail; + struct Pokemon pokemon; + u16 species; + u16 heldItem; + u32 data = ScriptReadWord(ctx) - ctx->data[1] + ctx->data[0]; + void *pokemonPtr = (void *)data; + void *mailPtr = (void *)(data + sizeof(struct Pokemon)); + + pokemon = *(struct Pokemon *)pokemonPtr; + species = GetMonData(&pokemon, MON_DATA_SPECIES2); + + if (species == SPECIES_EGG) + StringCopyN(gStringVar1, gSystemText_Egg, 11); + else + StringCopyN(gStringVar1, gSystemText_Pokemon2, 11); + + if (gPlayerPartyCount == 6) + { + StringExpandPlaceholders(gStringVar4, gOtherText_PartyIsFull); + ctx->data[2] = 3; + } + else + { + memcpy(&gPlayerParty[5], pokemonPtr, sizeof(struct Pokemon)); + memcpy(&mail, mailPtr, sizeof(struct MailStruct)); + + if (species != SPECIES_EGG) + { + u16 pokedexNum = SpeciesToNationalPokedexNum(species); + GetSetPokedexFlag(pokedexNum, 2); + GetSetPokedexFlag(pokedexNum, 3); + } + + heldItem = GetMonData(&gPlayerParty[5], MON_DATA_HELD_ITEM); + if (ItemIsMail(heldItem)) + GiveMailToMon2(&gPlayerParty[5], &mail); + party_compaction(); + CalculatePlayerPartyCount(); + StringExpandPlaceholders(gStringVar4, gOtherText_PokeWasSentOver); + ctx->data[2] = 2; + } + + return FALSE; +} + +bool8 MEScrCmd_addtrainer(struct ScriptContext *ctx) +{ + u32 data = ScriptReadWord(ctx) - ctx->data[1] + ctx->data[0]; + memcpy(gSaveBlock2.filler_A8.ereaderTrainer, (void *)data, sizeof(gSaveBlock2.filler_A8.ereaderTrainer)); + sub_813601C(); + StringExpandPlaceholders(gStringVar4, gOtherText_NewTrainerInHoenn); + ctx->data[2] = 2; + return FALSE; +} + +bool8 MEScrCmd_enableresetrtc(struct ScriptContext *ctx) +{ + EnableResetRTC(); + StringExpandPlaceholders(gStringVar4, gSystemText_ClockAdjustmentUsable); + ctx->data[2] = 2; + return FALSE; +} + +bool8 MEScrCmd_checksum(struct ScriptContext *ctx) +{ + int checksum = ScriptReadWord(ctx); + u8 *data = (u8 *)(ScriptReadWord(ctx) - ctx->data[1] + ctx->data[0]); + u8 *dataEnd = (u8 *)(ScriptReadWord(ctx) - ctx->data[1] + ctx->data[0]); + if (checksum != CalcChecksum(data, dataEnd - data)) + { + ctx->data[3] = 0; + ctx->data[2] = 1; + } + return TRUE; +} + +bool8 MEScrCmd_crc(struct ScriptContext *ctx) +{ + int crc = ScriptReadWord(ctx); + u8 *data = (u8 *)(ScriptReadWord(ctx) - ctx->data[1] + ctx->data[0]); + u8 *dataEnd = (u8 *)(ScriptReadWord(ctx) - ctx->data[1] + ctx->data[0]); + if (crc != CalcCRC16(data, dataEnd - data)) + { + ctx->data[3] = 0; + ctx->data[2] = 1; + } + return TRUE; +} diff --git a/src/name_string_util.c b/src/engine/name_string_util.c similarity index 100% rename from src/name_string_util.c rename to src/engine/name_string_util.c diff --git a/src/naming_screen.c b/src/engine/naming_screen.c similarity index 99% rename from src/naming_screen.c rename to src/engine/naming_screen.c index 6c107f022..a20a15569 100644 --- a/src/naming_screen.c +++ b/src/engine/naming_screen.c @@ -30,6 +30,8 @@ extern u8 unk_2000000[]; #define namingScreenData (*(struct NamingScreenData *)(unk_2000000)) +extern u8 CreateMonIcon(u16 species, void (*callback)(struct Sprite *), s16 x, s16 y, u8 subpriority, u32 personality); + const u32 gSpriteImage_83CE094[] = INCBIN_U32("graphics/naming_screen/pc_icon/0.4bpp"); const u32 gSpriteImage_83CE154[] = INCBIN_U32("graphics/naming_screen/pc_icon/1.4bpp"); @@ -1618,7 +1620,7 @@ static void DisplaySentToPCMessage(void) StringExpandPlaceholders(gStringVar4, gOtherText_SentToPC); BasicInitMenuWindow(&gWindowConfig_81E6E88); MenuDisplayMessageBox(); - sub_8072044(gStringVar4); + MenuPrintMessageDefaultCoords(gStringVar4); } static void sub_80B753C(void) diff --git a/src/option_menu.c b/src/engine/option_menu.c similarity index 91% rename from src/option_menu.c rename to src/engine/option_menu.c index 2463b11c6..dfc49b035 100644 --- a/src/option_menu.c +++ b/src/engine/option_menu.c @@ -32,8 +32,9 @@ enum { MENUITEM_CANCEL, }; -extern u8 gUnknown_0839F63C[]; -extern u8 gUnknown_0839F5FC[]; //palette +const u16 gUnknown_0839F5FC[] = INCBIN_U16("graphics/misc/option_menu_text.gbapal"); +// note: this is only used in the Japanese release +const u8 gUnknown_0839F63C[] = INCBIN_U8("graphics/misc/option_menu_equals_sign.4bpp"); static void Task_OptionMenuFadeIn(u8 taskId); static void Task_OptionMenuProcessInput(u8 taskId); @@ -485,61 +486,61 @@ __attribute__((naked)) static void FrameType_DrawChoices(u8 selection) { asm(".syntax unified\n\ - push {r4-r6,lr}\n\ - sub sp, 0x10\n\ - lsls r0, 24\n\ - movs r1, 0x80\n\ - lsls r1, 17\n\ - adds r0, r1\n\ - lsrs r5, r0, 24\n\ - ldr r1, _0808C368 @ =gSystemText_Type\n\ - mov r0, sp\n\ - bl StringCopy\n\ - ldr r1, _0808C36C @ =gSystemText_Terminator\n\ - mov r0, sp\n\ - bl StringAppend\n\ - adds r4, r0, 0\n\ - adds r0, r5, 0\n\ - movs r1, 0xA\n\ - bl __udivsi3\n\ - adds r1, r0, 0\n\ - lsls r0, r1, 24\n\ - lsrs r6, r0, 24\n\ - cmp r6, 0\n\ - beq _0808C370\n\ - adds r0, r1, 0\n\ - adds r0, 0xA1\n\ - strb r0, [r4]\n\ - adds r4, 0x1\n\ - adds r0, r5, 0\n\ - movs r1, 0xA\n\ - bl __umodsi3\n\ - adds r0, 0xA1\n\ - strb r0, [r4]\n\ - b _0808C380\n\ - .align 2, 0\n\ + push {r4-r6,lr}\n\ + sub sp, 0x10\n\ + lsls r0, 24\n\ + movs r1, 0x80\n\ + lsls r1, 17\n\ + adds r0, r1\n\ + lsrs r5, r0, 24\n\ + ldr r1, _0808C368 @ =gSystemText_Type\n\ + mov r0, sp\n\ + bl StringCopy\n\ + ldr r1, _0808C36C @ =gSystemText_Terminator\n\ + mov r0, sp\n\ + bl StringAppend\n\ + adds r4, r0, 0\n\ + adds r0, r5, 0\n\ + movs r1, 0xA\n\ + bl __udivsi3\n\ + adds r1, r0, 0\n\ + lsls r0, r1, 24\n\ + lsrs r6, r0, 24\n\ + cmp r6, 0\n\ + beq _0808C370\n\ + adds r0, r1, 0\n\ + adds r0, 0xA1\n\ + strb r0, [r4]\n\ + adds r4, 0x1\n\ + adds r0, r5, 0\n\ + movs r1, 0xA\n\ + bl __umodsi3\n\ + adds r0, 0xA1\n\ + strb r0, [r4]\n\ + b _0808C380\n\ + .align 2, 0\n\ _0808C368: .4byte gSystemText_Type\n\ _0808C36C: .4byte gSystemText_Terminator\n\ _0808C370:\n\ - adds r0, r5, 0\n\ - movs r1, 0xA\n\ - bl __umodsi3\n\ - adds r0, 0xA1\n\ - strb r0, [r4]\n\ - adds r4, 0x1\n\ - strb r6, [r4]\n\ + adds r0, r5, 0\n\ + movs r1, 0xA\n\ + bl __umodsi3\n\ + adds r0, 0xA1\n\ + strb r0, [r4]\n\ + adds r4, 0x1\n\ + strb r6, [r4]\n\ _0808C380:\n\ - adds r4, 0x1\n\ - movs r0, 0xFF\n\ - strb r0, [r4]\n\ - mov r0, sp\n\ - movs r1, 0xF\n\ - movs r2, 0xF\n\ - bl MenuPrint\n\ - add sp, 0x10\n\ - pop {r4-r6}\n\ - pop {r0}\n\ - bx r0\n\ + adds r4, 0x1\n\ + movs r0, 0xFF\n\ + strb r0, [r4]\n\ + mov r0, sp\n\ + movs r1, 0xF\n\ + movs r2, 0xF\n\ + bl MenuPrint\n\ + add sp, 0x10\n\ + pop {r4-r6}\n\ + pop {r0}\n\ + bx r0\n\ .syntax divided\n"); } #endif diff --git a/src/palette.c b/src/engine/palette.c similarity index 99% rename from src/palette.c rename to src/engine/palette.c index 94a4f8092..17e9ca178 100644 --- a/src/palette.c +++ b/src/engine/palette.c @@ -74,7 +74,7 @@ static bool8 IsSoftwarePaletteFadeFinishing(void); void LoadCompressedPalette(const void *src, u16 offset, u16 size) { - sub_800D238(src, sPaletteDecompressionBuffer); + LZDecompressWram(src, sPaletteDecompressionBuffer); CpuCopy16(sPaletteDecompressionBuffer, gPlttBufferUnfaded + offset, size); CpuCopy16(sPaletteDecompressionBuffer, gPlttBufferFaded + offset, size); } diff --git a/src/play_time.c b/src/engine/play_time.c similarity index 100% rename from src/play_time.c rename to src/engine/play_time.c diff --git a/src/engine/record_mixing.c b/src/engine/record_mixing.c new file mode 100644 index 000000000..8dff432c1 --- /dev/null +++ b/src/engine/record_mixing.c @@ -0,0 +1,1085 @@ +#include "global.h" +#include "record_mixing.h" +#include "battle_tower.h" +#include "cable_club.h" +#include "daycare.h" +#include "dewford_trend.h" +#include "event_data.h" +#include "fldeff_80C5CD4.h" +#include "item.h" +#include "items.h" +#include "load_save.h" +#include "link.h" +#include "mauville_man.h" +#include "menu.h" +#include "mystery_event_script.h" +#include "rng.h" +#include "overworld.h" +#include "save.h" +#include "script.h" +#include "secret_base.h" +#include "songs.h" +#include "sound.h" +#include "string_util.h" +#include "strings2.h" +#include "task.h" +#include "tv.h" + +extern u8 ewram[]; +#define unk_2018000 (*(struct PlayerRecords *)(ewram + 0x18000)) +#define unk_2008000 (*(struct PlayerRecords *)(ewram + 0x08000)) + +extern struct RecordMixingDayCareMail gUnknown_02038738; +extern u16 gSpecialVar_0x8005; + +u32 gUnknown_03005D2C; + +static u8 gUnknown_03000718; +static u8 gUnknown_0300071C[4]; + +void *recordMixingSecretBases = &gSaveBlock1.secretBases; +void *recordMixingTvShows = &gSaveBlock1.tvShows; +void *gUnknown_083D0274 = &gSaveBlock1.unknown_2ABC; +void *gUnknown_083D0278 = &gSaveBlock1.mauvilleMan; +void *recordMixingEasyChatPairs = &gSaveBlock1.easyChatPairs; +struct RecordMixingDayCareMail *gUnknown_083D0280 = &gUnknown_02038738; +void *gUnknown_083D0284 = &gSaveBlock2.filler_A8; + +#define BUFFER_CHUNK_SIZE 200 + +void sub_80B929C(void) +{ + sub_8083A84(Task_RecordMixing_Main); +} + +struct PlayerRecords +{ + struct SecretBaseRecord secretBases[20]; + TVShow tvShows[25]; + u8 filler1004[0x40]; + u8 filler1044[0x40]; + struct EasyChatPair easyChatPairs[5]; + struct RecordMixingDayCareMail filler10AC; + u8 filler1124[0xA4]; + u16 filler11C8[0x34]; +}; + +void RecordMixing_PrepareExchangePacket(void) +{ + sub_80BC300(); + sub_80C045C(); + + memcpy(unk_2018000.secretBases, recordMixingSecretBases, sizeof(unk_2018000.secretBases)); + memcpy(unk_2018000.tvShows, recordMixingTvShows, sizeof(unk_2018000.tvShows)); + memcpy(unk_2018000.filler1004, gUnknown_083D0274, sizeof(unk_2008000.filler1004)); + memcpy(unk_2018000.filler1044, gUnknown_083D0278, sizeof(unk_2008000.filler1044)); + memcpy(unk_2018000.easyChatPairs, recordMixingEasyChatPairs, sizeof(unk_2018000.easyChatPairs)); + gUnknown_02038738.mail[0] = gSaveBlock1.daycareData.misc.mail[0]; + gUnknown_02038738.mail[1] = gSaveBlock1.daycareData.misc.mail[1]; + sub_8041324(gSaveBlock1.daycareData.mons, &gUnknown_02038738); + memcpy(&unk_2018000.filler10AC, gUnknown_083D0280, sizeof(struct RecordMixingDayCareMail)); + memcpy(unk_2018000.filler1124, gUnknown_083D0284, sizeof(unk_2018000.filler1124)); + + if (GetMultiplayerId() == 0) + unk_2018000.filler11C8[0] = GetRecordMixingGift(); +} + +void RecordMixing_ReceiveExchangePacket(u32 a) +{ + sub_80BD674(unk_2008000.secretBases, sizeof(struct PlayerRecords), a); + sub_80BFD44((u8 *)unk_2008000.tvShows, sizeof(struct PlayerRecords), a); + sub_80C0514(unk_2008000.filler1004, sizeof(struct PlayerRecords), a); + sub_80B9B1C(unk_2008000.filler1044, sizeof(struct PlayerRecords), a); + sub_80FA4E4(unk_2008000.easyChatPairs, sizeof(struct PlayerRecords), a); + sub_80B9C6C((u8 *)&unk_2008000.filler10AC, sizeof(struct PlayerRecords), a, unk_2008000.tvShows); + sub_80B9B70(unk_2008000.filler1124, sizeof(struct PlayerRecords), a); + sub_80B9F3C(unk_2008000.filler11C8, a); +} + +#define tCounter data[0] + +void Task_RecordMixing_SoundEffect(u8 taskId) +{ + gTasks[taskId].tCounter++; + if (gTasks[taskId].tCounter == 50) + { + PlaySE(SE_W213); + gTasks[taskId].tCounter = 0; + } +} + +#undef tCounter + + +#define tState data[0] +#define tSndEffTaskId data[15] + +void Task_RecordMixing_Main(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + + switch (tState) + { + case 0: // init + sub_8007270(gSpecialVar_0x8005); + VarSet(VAR_0x4000, 1); + gUnknown_03000718 = 0; + RecordMixing_PrepareExchangePacket(); + CreateRecordMixingSprite(); + tState = 1; + data[10] = CreateTask(sub_80B95F0, 0x50); + tSndEffTaskId = CreateTask(Task_RecordMixing_SoundEffect, 0x51); + break; + case 1: // wait for sub_80B95F0 + if (!gTasks[data[10]].isActive) + { + tState = 2; + FlagSet(SYS_MIX_RECORD); + DestroyRecordMixingSprite(); + DestroyTask(tSndEffTaskId); + } + break; + case 2: + data[10] = CreateTask(sub_80BA00C, 10); + tState = 3; + PlaySE(SE_W226); + break; + case 3: // wait for sub_80BA00C + if (!gTasks[data[10]].isActive) + { + tState = 4; + data[10] = sub_8083664(); + sub_80720B0(); + MenuPrint(gOtherText_MixingComplete, 2, 15); + data[8] = 0; + } + break; + case 4: // wait 60 frames + data[8]++; + if (data[8] > 60) + tState = 5; + break; + case 5: + if (!gTasks[data[10]].isActive) + { + sub_8055588(); + MenuZeroFillScreen(); + DestroyTask(taskId); + EnableBothScriptContexts(); + } + break; + } +} + +void sub_80B95F0(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + + switch (task->tState) + { + case 0: + sub_80B9A78(); + MenuDisplayMessageBox(); + MenuPrint(gOtherText_MixingRecordsWithFriend, 2, 15); + task->data[8] = 0x708; + task->tState = 400; + ClearLinkCallback_2(); + break; + case 100: // wait 20 frames + task->data[12]++; + if (task->data[12] > 20) + { + task->data[12] = 0; + task->tState = 101; + } + break; + case 101: + { + u8 players = GetLinkPlayerCount_2(); + + if (IsLinkMaster() == 1) + { + if (players == sub_800820C()) + { + PlaySE(SE_PIN); + task->tState = 201; + task->data[12] = 0; + } + } + else + { + PlaySE(SE_BOO); + task->tState = 301; + } + } + break; + case 201: + if (sub_800820C() == GetLinkPlayerCount_2()) + { + if (++task->data[12] > GetLinkPlayerCount_2() * 30) + { + sub_8007F4C(); + task->tState = 1; + } + } + break; + case 301: + if (sub_800820C() == GetLinkPlayerCount_2()) + task->tState = 1; + break; + case 400: // wait 20 frames + task->data[12]++; + if (task->data[12] > 20) + { + task->tState = 1; + task->data[12] = 0; + } + break; + case 1: // wait for handshake + if (gReceivedRemoteLinkPlayers) + { + ConvertIntToDecimalStringN(gStringVar1, GetMultiplayerId_(), 2, 2); + task->tState = 5; + } + break; + case 2: + { + u8 subTaskId; + + task->data[6] = GetLinkPlayerCount_2(); + task->tState = 0; + task->data[5] = GetMultiplayerId_(); + task->func = Task_RecordMixing_SendPacket; + StorePtrInTaskData(&unk_2018000, &task->data[2]); + subTaskId = CreateTask(Task_RecordMixing_CopyReceiveBuffer, 0x50); + task->data[10] = subTaskId; + gTasks[subTaskId].data[0] = taskId; + StorePtrInTaskData((u8 *)&unk_2008000, &gTasks[subTaskId].data[5]); + } + break; + case 5: // wait 60 frames + task->data[10]++; + if (task->data[10] > 60) + { + task->data[10] = 0; + task->tState = 2; + } + break; + } +} + +void Task_RecordMixing_SendPacket(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + // does this send the data 24 times? + + switch (task->tState) + { + case 0: //Copy record data to send buffer + { + void *recordData = (u8 *)LoadPtrFromTaskData(&task->data[2]) + BUFFER_CHUNK_SIZE * task->data[4]; + + memcpy(gBlockSendBuffer, recordData, BUFFER_CHUNK_SIZE); + task->tState++; + } + break; + case 1: + if (GetMultiplayerId() == 0) + sub_8007E9C(1); + task->tState++; + break; + case 2: + break; + case 3: + task->data[4]++; + if ((u16)task->data[4] == 24) + task->tState++; + else + task->tState = 0; + break; + case 4: + if (!gTasks[task->data[10]].isActive) + task->func = Task_RecordMixing_SendPacket_SwitchToReceive; + } +} + +void Task_RecordMixing_CopyReceiveBuffer(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + s32 recvStatus = GetBlockReceivedStatus(); + u8 handledPlayers = 0; + + if (recvStatus == sub_8008198()) + { + u8 player; + + for (player = 0; player < GetLinkPlayerCount(); player++) + { + void *src; + u8 *dst; + + if ((recvStatus >> player) & 1) + { + dst = LoadPtrFromTaskData(&task->data[5]) + task->data[player + 1] * BUFFER_CHUNK_SIZE + player * sizeof(struct PlayerRecords); + src = GetPlayerRecvBuffer(player); + if ((task->data[player + 1] + 1) * BUFFER_CHUNK_SIZE > sizeof(struct PlayerRecords)) + memcpy(dst, src, sizeof(struct PlayerRecords) - task->data[player + 1] * BUFFER_CHUNK_SIZE); + else + memcpy(dst, src, BUFFER_CHUNK_SIZE); + ResetBlockReceivedFlag(player); + task->data[player + 1]++; + if ((u16)task->data[player + 1] == 0x18) + handledPlayers++; + } + } + gTasks[task->data[0]].data[0]++; + } + if (handledPlayers == GetLinkPlayerCount()) + DestroyTask(taskId); +} + +void sub_80B99B4(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + + if (!gTasks[task->data[10]].isActive) + DestroyTask(taskId); +} + +void Task_RecordMixing_ReceivePacket(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + + task->func = sub_80B99B4; + if (gUnknown_03000718 == 1) + RecordMixing_ReceiveExchangePacket(task->data[5]); +} + +void Task_RecordMixing_SendPacket_SwitchToReceive(u8 taskId) +{ + gTasks[taskId].func = Task_RecordMixing_ReceivePacket; + gUnknown_03000718 = 1; +} + +void *LoadPtrFromTaskData(u16 *taskData) +{ + return (void *)(taskData[0] | (taskData[1] << 16)); +} + +void StorePtrInTaskData(void *ptr, u16 *taskData) +{ + taskData[0] = (u32)ptr; + taskData[1] = (u32)ptr >> 16; +} + +u8 GetMultiplayerId_(void) +{ + return GetMultiplayerId(); +} + +u16 *GetPlayerRecvBuffer(u8 player) +{ + return gBlockRecvBuffer[player]; +} + +void sub_80B9A78(void) +{ + gUnknown_03005D2C = sizeof(struct PlayerRecords); +} + +const u8 gUnknown_083D0288[2] = {1, 0}; + +const u8 gUnknown_083D028A[2][3] = +{ + {1, 2, 0}, + {2, 0, 1}, +}; + +const u8 gUnknown_083D0290[9][4] = +{ + {1, 0, 3, 2}, + {3, 0, 1, 2}, + {2, 0, 3, 1}, + {1, 3, 0, 2}, + {2, 3, 0, 1}, + {3, 2, 0, 1}, + {1, 2, 3, 0}, + {2, 3, 1, 0}, + {3, 2, 1, 0}, +}; + +void sub_80B9A88(u8 *a) +{ + u32 i; + u32 id; + u32 players = GetLinkPlayerCount(); + + switch (players) + { + case 2: + for (i = 0; i < 2; i++) + a[i] = gUnknown_083D0288[i]; + break; + case 3: + id = GetLinkPlayerTrainerId(0) % 2; + for (i = 0; i < 3; i++) + a[i] = gUnknown_083D028A[id][i]; + break; + case 4: + id = GetLinkPlayerTrainerId(0) % 9; + for (i = 0; i < 4; i++) + a[i] = gUnknown_083D0290[id][i]; + break; + default: + break; + } +} + +void sub_80B9B1C(u8 *a, size_t size, u8 index) +{ + u8 arr[4]; + u8 *ptr; + + sub_80B9A88(arr); + //Probably not how it was originally written, but this matches. + memcpy(a + index * size, (ptr = gUnknown_083D0278), 0x40); + memcpy(ptr, a + arr[index] * size, 0x40); + sub_80F7F30(); +} + +void sub_80B9B70(u8 *a, size_t size, u8 index) +{ + sub_80B9A88(gUnknown_0300071C); + memcpy(a + size * index, a + size * gUnknown_0300071C[index], 0xA4); + sub_8134AC0(a + size * index); +} + +u8 sub_80B9BBC(u16 *a) +{ + return a[16]; +} + +void sub_80B9BC4(u8 *a, size_t b, u8 c[][2], u8 d, u8 e) +{ + struct DayCareMail *r6 = (struct DayCareMail *)(a + b * c[d][0]); + struct DayCareMail *src = r6 + c[d][1]; + struct DayCareMail sp0 = *src; + struct DayCareMail *r8 = (struct DayCareMail *)(a + b * c[e][0]); + + r6 += c[d][1]; + *r6 = *(r8 + c[e][1]); + + r8 += c[e][1]; + *r8 = sp0; +} + +u8 sub_80B9C4C(u8 *a) +{ + int i; + u8 r2 = 0; + + for (i = 0; i < 0x100; i++) + r2 += a[i]; + return r2; +} + +const u8 gUnknown_083D02B4[][2] = +{ + {0, 1}, + {1, 2}, + {2, 0}, +}; + +const u8 gUnknown_083D02BA[3][4] = +{ + {0, 1, 2, 3}, + {0, 2, 1, 3}, + {0, 3, 2, 1}, +}; + +#ifdef NONMATCHING +void sub_80B9C6C(u8 *a, u32 b, u8 c, void *d) +{ + u8 r8; + u8 sp4[4]; + u8 sp8[4]; + void *spC[4]; + u8 sp1C[4][2]; + u8 sp24[4][2]; + u8 sp3C; + u16 sp40 = Random(); + u16 i; // r3 + u16 r7; + u8 r1; + struct DayCareMisc *r6; + + //asm("":::"r8"); + SeedRng(gLinkPlayers[0].trainerId); + r8 = GetLinkPlayerCount(); + for (i = 0; i < 4; i++) + { + sp4[i] = 0xFF; + sp8[i] = 0; + sp1C[i][0] = 0; + sp1C[i][1] = 0; + } + sp3C = 0; + for (i = 0; i < r8; i++) + { + r6 = (struct DayCareMisc *)(a + b * i); + if (r6->unk70 != 0) + { + for (r7 = 0; r7 < r6->unk70; r7++) + { + if (r6->unk74[r7] == 0) + sp1C[i][r7] = 1; + } + } + //_080B9D3C + } + //_080B9D46 + for (r7 = 0, i = 0; i < r8; i++) + { + r6 = (struct DayCareMisc *)(a + b * i); + if (sp1C[i][0] == 1 || sp1C[i][1] == 1) + sp3C++; + if (sp1C[i][0] == 1 && sp1C[i][1] == 0) + { + sp24[r7][0] = i; + sp24[r7][1] = 0; + r7++; + } + else if (sp1C[i][0] == 0 && sp1C[i][1] == 1) + { + sp24[r7][0] = i; + sp24[r7][1] = 0; + r7++; + } + //else if (sp1C[i][0] == 1 + 1 && sp1C[i][1] + 1 == 1 + 1) + else if (sp1C[i][0] == 1 && sp1C[i][1] == 1) + { + u8 r4, r1; + + sp24[r7][0] = i; + r4 = sub_80B9BBC((u16 *)&r6->data[0]); + r1 = sub_80B9BBC((u16 *)&r6->data[1]); + + asm(""); + if (r4 == 0 && r1 != 0) + sp24[r7][1] = 1; + else if ((r4 == 0 && r1 == 0) || (r4 != 0 && r1 != 0)) + sp24[r7][1] = Random() % 2; + else + sp24[r7][1] = 0; + /* + if (r4 == 0 && r1 != 0) + sp24[r7][1] = 1; + else if ((r4 == 0 && r1 == 0) || (r4 != 0 && r1 != 0)) + sp24[r7][1] = Random() % 2; + else + sp24[r7][1] = 0; + */ + + /* + if (r4 == 0 && r1 != 0) + sp24[r7][1] = 1; + else if ((r4 == 0 && r1 == 0) || (r4 != 0 && r1 != 0)) + //sp24[r7][1] = ((Random() << 16) >> 16) % 2; + sp24[r7][1] = Random() % 2; + else + sp24[r7][1] = 0; + */ + //_080B9E2C: + r7++; + } + } + //_080B9E3E + for (i = 0; i < 4; i++) + { + r6 = (struct DayCareMisc *)a + b * c; + spC[i] = r6; + } + r1 = sub_80B9C4C(d) % 3; + switch (sp3C) + { + case 2: + sub_80B9BC4(a, b, (u8 *)sp24, 0, 1); + break; + case 3: + { + u8 var1 = gUnknown_083D02B4[r1][0]; + u8 var2 = gUnknown_083D02B4[r1][1]; + sub_80B9BC4(a, b, (u8 *)sp24, var1, var2); + } + break; + case 4: + { + u8 *r6 = (u8 *)sp24; + u8 var1 = gUnknown_083D02BA[r1][0]; + u8 var2 = gUnknown_083D02BA[r1][1]; + sub_80B9BC4(a, b, r6, var1, var2); + } + { + u8 *r6 = (u8 *)sp24; + u8 var1 = gUnknown_083D02BA[r1][2]; + u8 var2 = gUnknown_083D02BA[r1][3]; + sub_80B9BC4(a, b, r6, var1, var2); + } + break; + } + //_080B9EF0 + //memcpy(&gSaveBlock1.filler_303C.data[0], a + b * c, 0x38); + //memcpy(&gSaveBlock1.filler_303C.data[1], a + b * c + 0x38, 0x38); + r6 = (struct DayCareMisc *)(a + b * c); + gSaveBlock1.filler_303C.data[0] = r6->data[0]; + gSaveBlock1.filler_303C.data[1] = r6->data[1]; + //memcpy(&gSaveBlock1.filler_303C.data[0], &r6->data[0], 0x38); + //memcpy(&gSaveBlock1.filler_303C.data[1], &r6->data[1], 0x38); + SeedRng(sp40); +} +#else +__attribute__((naked)) +void sub_80B9C6C(u8 *a, u32 b, u8 c, void *d) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + sub sp, 0x58\n\ + str r0, [sp, 0x2C]\n\ + str r1, [sp, 0x30]\n\ + str r3, [sp, 0x38]\n\ + lsls r2, 24\n\ + lsrs r2, 24\n\ + str r2, [sp, 0x34]\n\ + bl Random\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + str r0, [sp, 0x40]\n\ + ldr r0, _080B9DA8 @ =gLinkPlayers\n\ + ldrh r0, [r0, 0x4]\n\ + bl SeedRng\n\ + bl GetLinkPlayerCount\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + mov r8, r0\n\ + movs r3, 0\n\ + add r0, sp, 0x1C\n\ + mov r9, r0\n\ + movs r1, 0x1D\n\ + add r1, sp\n\ + mov r10, r1\n\ + mov r2, sp\n\ + adds r2, 0xC\n\ + str r2, [sp, 0x4C]\n\ + movs r7, 0xFF\n\ + add r4, sp, 0x8\n\ + movs r2, 0\n\ + mov r6, r9\n\ + mov r5, r10\n\ +_080B9CBC:\n\ + mov r1, sp\n\ + adds r1, r3\n\ + adds r1, 0x4\n\ + ldrb r0, [r1]\n\ + orrs r0, r7\n\ + strb r0, [r1]\n\ + adds r0, r4, r3\n\ + strb r2, [r0]\n\ + lsls r1, r3, 1\n\ + adds r0, r6, r1\n\ + strb r2, [r0]\n\ + adds r1, r5, r1\n\ + strb r2, [r1]\n\ + adds r0, r3, 0x1\n\ + lsls r0, 16\n\ + lsrs r3, r0, 16\n\ + cmp r3, 0x3\n\ + bls _080B9CBC\n\ + movs r4, 0\n\ + str r4, [sp, 0x3C]\n\ + movs r3, 0\n\ + mov r1, r8\n\ + lsls r0, r1, 16\n\ + lsrs r1, r0, 16\n\ + str r0, [sp, 0x50]\n\ + ldr r4, [sp, 0x30]\n\ + ldr r0, [sp, 0x34]\n\ + adds r2, r4, 0\n\ + muls r2, r0\n\ + str r2, [sp, 0x48]\n\ + ldr r2, [sp, 0x3C]\n\ + cmp r2, r1\n\ + bcs _080B9D46\n\ + mov r8, r1\n\ +_080B9D00:\n\ + ldr r4, [sp, 0x30]\n\ + adds r0, r4, 0\n\ + muls r0, r3\n\ + ldr r1, [sp, 0x2C]\n\ + adds r6, r1, r0\n\ + ldr r0, [r6, 0x70]\n\ + cmp r0, 0\n\ + beq _080B9D3C\n\ + movs r7, 0\n\ + cmp r7, r0\n\ + bcs _080B9D3C\n\ + adds r4, r6, 0\n\ + adds r4, 0x74\n\ + mov r2, r9\n\ + lsls r1, r3, 1\n\ + movs r5, 0x1\n\ +_080B9D20:\n\ + lsls r0, r7, 1\n\ + adds r0, r4, r0\n\ + ldrh r0, [r0]\n\ + cmp r0, 0\n\ + bne _080B9D30\n\ + adds r0, r7, r1\n\ + adds r0, r2, r0\n\ + strb r5, [r0]\n\ +_080B9D30:\n\ + adds r0, r7, 0x1\n\ + lsls r0, 16\n\ + lsrs r7, r0, 16\n\ + ldr r0, [r6, 0x70]\n\ + cmp r7, r0\n\ + bcc _080B9D20\n\ +_080B9D3C:\n\ + adds r0, r3, 0x1\n\ + lsls r0, 16\n\ + lsrs r3, r0, 16\n\ + cmp r3, r8\n\ + bcc _080B9D00\n\ +_080B9D46:\n\ + movs r7, 0\n\ + movs r3, 0\n\ + ldr r2, [sp, 0x50]\n\ + cmp r2, 0\n\ + beq _080B9E3E\n\ + mov r4, sp\n\ + adds r4, 0x24\n\ + str r4, [sp, 0x44]\n\ + movs r0, 0x25\n\ + add r0, sp\n\ + mov r8, r0\n\ +_080B9D5C:\n\ + ldr r1, [sp, 0x30]\n\ + adds r0, r1, 0\n\ + muls r0, r3\n\ + ldr r2, [sp, 0x2C]\n\ + adds r6, r2, r0\n\ + lsls r1, r3, 1\n\ + mov r4, r9\n\ + adds r0, r4, r1\n\ + ldrb r0, [r0]\n\ + cmp r0, 0x1\n\ + beq _080B9D7C\n\ + mov r2, r10\n\ + adds r0, r2, r1\n\ + ldrb r0, [r0]\n\ + cmp r0, 0x1\n\ + bne _080B9D86\n\ +_080B9D7C:\n\ + ldr r0, [sp, 0x3C]\n\ + adds r0, 0x1\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + str r0, [sp, 0x3C]\n\ +_080B9D86:\n\ + mov r4, r9\n\ + adds r0, r4, r1\n\ + ldrb r0, [r0]\n\ + cmp r0, 0x1\n\ + bne _080B9DAC\n\ + mov r2, r10\n\ + adds r0, r2, r1\n\ + ldrb r2, [r0]\n\ + cmp r2, 0\n\ + bne _080B9DAC\n\ +_080B9D9A:\n\ + lsls r1, r7, 1\n\ + ldr r4, [sp, 0x44]\n\ + adds r0, r4, r1\n\ + strb r3, [r0]\n\ + add r1, r8\n\ + strb r2, [r1]\n\ + b _080B9E2C\n\ + .align 2, 0\n\ +_080B9DA8: .4byte gLinkPlayers\n\ +_080B9DAC:\n\ + mov r2, r9\n\ + adds r0, r2, r1\n\ + ldrb r0, [r0]\n\ + cmp r0, 0\n\ + bne _080B9DC0\n\ + mov r4, r10\n\ + adds r0, r4, r1\n\ + ldrb r2, [r0]\n\ + cmp r2, 0x1\n\ + beq _080B9D9A\n\ +_080B9DC0:\n\ + mov r2, r9\n\ + adds r0, r2, r1\n\ + ldrb r0, [r0]\n\ + cmp r0, 0x1\n\ + bne _080B9E32\n\ + mov r4, r10\n\ + adds r0, r4, r1\n\ + ldrb r0, [r0]\n\ + cmp r0, 0x1\n\ + bne _080B9E32\n\ + lsls r5, r7, 1\n\ + ldr r1, [sp, 0x44]\n\ + adds r0, r1, r5\n\ + strb r3, [r0]\n\ + adds r0, r6, 0\n\ + str r3, [sp, 0x54]\n\ + bl sub_80B9BBC\n\ + adds r4, r0, 0\n\ + lsls r4, 24\n\ + lsrs r4, 24\n\ + adds r0, r6, 0\n\ + adds r0, 0x38\n\ + bl sub_80B9BBC\n\ + lsls r0, 24\n\ + lsrs r1, r0, 24\n\ + ldr r3, [sp, 0x54]\n\ + cmp r4, 0\n\ + bne _080B9E0A\n\ + cmp r1, 0\n\ + beq _080B9E0E\n\ + mov r2, r8\n\ + adds r1, r2, r5\n\ + movs r0, 0x1\n\ + strb r0, [r1]\n\ + b _080B9E2C\n\ +_080B9E0A:\n\ + cmp r1, 0\n\ + beq _080B9E26\n\ +_080B9E0E:\n\ + str r3, [sp, 0x54]\n\ + bl Random\n\ + mov r4, r8\n\ + adds r2, r4, r5\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + movs r1, 0x1\n\ + ands r0, r1\n\ + strb r0, [r2]\n\ + ldr r3, [sp, 0x54]\n\ + b _080B9E2C\n\ +_080B9E26:\n\ + mov r2, r8\n\ + adds r0, r2, r5\n\ + strb r1, [r0]\n\ +_080B9E2C:\n\ + adds r0, r7, 0x1\n\ + lsls r0, 16\n\ + lsrs r7, r0, 16\n\ +_080B9E32:\n\ + adds r0, r3, 0x1\n\ + lsls r0, 16\n\ + lsrs r3, r0, 16\n\ + ldr r4, [sp, 0x50]\n\ + cmp r0, r4\n\ + bcc _080B9D5C\n\ +_080B9E3E:\n\ + movs r3, 0\n\ + ldr r1, [sp, 0x48]\n\ + lsls r0, r1, 4\n\ + subs r0, r1\n\ + lsls r0, 3\n\ + ldr r2, [sp, 0x2C]\n\ + adds r6, r2, r0\n\ + ldr r1, [sp, 0x4C]\n\ +_080B9E4E:\n\ + lsls r0, r3, 2\n\ + adds r0, r1, r0\n\ + str r6, [r0]\n\ + adds r0, r3, 0x1\n\ + lsls r0, 16\n\ + lsrs r3, r0, 16\n\ + cmp r3, 0x3\n\ + bls _080B9E4E\n\ + ldr r0, [sp, 0x38]\n\ + bl sub_80B9C4C\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + movs r1, 0x3\n\ + bl __umodsi3\n\ + lsls r0, 24\n\ + lsrs r1, r0, 24\n\ + ldr r4, [sp, 0x3C]\n\ + cmp r4, 0x3\n\ + beq _080B9E9C\n\ + cmp r4, 0x3\n\ + bgt _080B9E82\n\ + cmp r4, 0x2\n\ + beq _080B9E8A\n\ + b _080B9EF0\n\ +_080B9E82:\n\ + ldr r0, [sp, 0x3C]\n\ + cmp r0, 0x4\n\ + beq _080B9EBC\n\ + b _080B9EF0\n\ +_080B9E8A:\n\ + add r2, sp, 0x24\n\ + movs r0, 0x1\n\ + str r0, [sp]\n\ + ldr r0, [sp, 0x2C]\n\ + ldr r1, [sp, 0x30]\n\ + movs r3, 0\n\ + bl sub_80B9BC4\n\ + b _080B9EF0\n\ +_080B9E9C:\n\ + ldr r0, _080B9EB8 @ =gUnknown_083D02B4\n\ + lsls r1, 1\n\ + adds r2, r1, r0\n\ + ldrb r3, [r2]\n\ + adds r0, 0x1\n\ + adds r1, r0\n\ + ldrb r0, [r1]\n\ + add r2, sp, 0x24\n\ + str r0, [sp]\n\ + ldr r0, [sp, 0x2C]\n\ + ldr r1, [sp, 0x30]\n\ + bl sub_80B9BC4\n\ + b _080B9EF0\n\ + .align 2, 0\n\ +_080B9EB8: .4byte gUnknown_083D02B4\n\ +_080B9EBC:\n\ + add r6, sp, 0x24\n\ + ldr r4, _080B9F2C @ =gUnknown_083D02BA\n\ + lsls r5, r1, 2\n\ + adds r0, r5, r4\n\ + ldrb r3, [r0]\n\ + adds r0, r4, 0x1\n\ + adds r0, r5, r0\n\ + ldrb r0, [r0]\n\ + str r0, [sp]\n\ + ldr r0, [sp, 0x2C]\n\ + ldr r1, [sp, 0x30]\n\ + adds r2, r6, 0\n\ + bl sub_80B9BC4\n\ + adds r0, r4, 0x2\n\ + adds r0, r5, r0\n\ + ldrb r3, [r0]\n\ + adds r4, 0x3\n\ + adds r5, r4\n\ + ldrb r0, [r5]\n\ + str r0, [sp]\n\ + ldr r0, [sp, 0x2C]\n\ + ldr r1, [sp, 0x30]\n\ + adds r2, r6, 0\n\ + bl sub_80B9BC4\n\ +_080B9EF0:\n\ + ldr r1, [sp, 0x2C]\n\ + ldr r2, [sp, 0x48]\n\ + adds r6, r1, r2\n\ + ldr r4, _080B9F30 @ =gSaveBlock1\n\ + ldr r1, _080B9F34 @ =0x0000303c\n\ + adds r0, r4, r1\n\ + adds r1, r6, 0\n\ + movs r2, 0x38\n\ + bl memcpy\n\ + ldr r2, _080B9F38 @ =0x00003074\n\ + adds r4, r2\n\ + adds r1, r6, 0\n\ + adds r1, 0x38\n\ + adds r0, r4, 0\n\ + movs r2, 0x38\n\ + bl memcpy\n\ + ldr r0, [sp, 0x40]\n\ + bl SeedRng\n\ + add sp, 0x58\n\ + pop {r3-r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_080B9F2C: .4byte gUnknown_083D02BA\n\ +_080B9F30: .4byte gSaveBlock1\n\ +_080B9F34: .4byte 0x0000303c\n\ +_080B9F38: .4byte 0x00003074\n\ + .syntax divided\n"); +} +#endif + +void sub_80B9F3C(u16 *a, u8 b) +{ + if (b != 0 && *a != 0) + { + if (GetPocketByItemId(*a) == 5) + { + if (!CheckBagHasItem(*a, 1) && !CheckPCHasItem(*a, 1) && AddBagItem(*a, 1)) + { + VarSet(VAR_0x4001, *a); + StringCopy(gStringVar1, gLinkPlayers[0].name); + if (*a == ITEM_EON_TICKET) + FlagSet(SYS_HAS_EON_TICKET); + } + else + { + VarSet(VAR_0x4001, ITEM_NONE); + } + } + else + { + if (AddBagItem(*a, 1) == TRUE) + { + VarSet(VAR_0x4001, *a); + StringCopy(gStringVar1, gLinkPlayers[0].name); + } + else + { + VarSet(VAR_0x4001, ITEM_NONE); + } + } + } +} + +void sub_80BA00C(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + + switch (task->data[0]) + { + case 0: + task->data[0]++; + break; + case 1: + task->data[0]++; + break; + case 2: + SetSecretBase2Field_9_AndHideBG(); + sub_8125E2C(); + task->data[0]++; + break; + case 3: + if (sub_8125E6C() != 0) + { + ClearSecretBase2Field_9_2(); + task->data[0]++; + task->data[1] = 0; + } + break; + case 4: + task->data[1]++; + if (task->data[1] > 10) + { + sub_800832C(); + task->data[0]++; + } + break; + case 5: + if (!gReceivedRemoteLinkPlayers) + DestroyTask(taskId); + break; + } +} diff --git a/src/engine/reset_rtc_screen.c b/src/engine/reset_rtc_screen.c new file mode 100644 index 000000000..d052992ad --- /dev/null +++ b/src/engine/reset_rtc_screen.c @@ -0,0 +1,496 @@ +#include "global.h" +#include "event_data.h" +#include "main.h" +#include "menu.h" +#include "palette.h" +#include "rtc.h" +#include "save.h" +#include "sprite.h" +#include "songs.h" +#include "sound.h" +#include "string_util.h" +#include "strings.h" +#include "strings2.h" +#include "task.h" +#include "text.h" +#include "unknown_task.h" + +struct ResetRtcStruct +{ + /*0x0*/ u8 dataIndex; + /*0x2*/ u16 minVal; + /*0x4*/ u16 maxVal; + /*0x6*/ u8 left; + /*0x7*/ u8 right; + /*0x8*/ u8 unk8; +}; + +extern u16 gSaveFileStatus; + +extern struct ResetRtcStruct gUnknown_08376420[]; +extern struct SpritePalette gUnknown_083764BC; +extern struct SpriteTemplate gSpriteTemplate_83764E8; +extern u8 gUnknown_08376500[]; + +void CB2_ResetRtcScreen(void); +void VBlankCB_ResetRtcScreen(void); +void Task_ResetRtcScreen(u8); + +void SpriteCB_ResetRtcCusor0(struct Sprite *sprite) +{ + int state = gTasks[sprite->data0].data[2]; + if (state != sprite->data1) + { + sprite->data1 = state; + switch (state) + { + case 1: + sprite->invisible = FALSE; + sprite->animNum = 1; + sprite->animDelayCounter = 0; + sprite->pos1.x = 53; + sprite->pos1.y = 68; + break; + case 2: + sprite->invisible = FALSE; + sprite->animNum = 1; + sprite->animDelayCounter = 0; + sprite->pos1.x = 86; + sprite->pos1.y = 68; + break; + case 3: + sprite->invisible = FALSE; + sprite->animNum = 1; + sprite->animDelayCounter = 0; + sprite->pos1.x = 107; + sprite->pos1.y = 68; + break; + case 4: + sprite->invisible = FALSE; + sprite->animNum = 1; + sprite->animDelayCounter = 0; + sprite->pos1.x = 128; + sprite->pos1.y = 68; + break; + case 5: + sprite->invisible = FALSE; + sprite->animNum = 2; + sprite->animDelayCounter = 0; + sprite->pos1.x = 155; + sprite->pos1.y = 80; + break; + case 6: + DestroySprite(sprite); + break; + } + } +} + +void SpriteCB_ResetRtcCusor1(struct Sprite *sprite) +{ + int state = gTasks[sprite->data0].data[2]; + if (state != sprite->data1) + { + sprite->data1 = state; + switch (state) + { + case 1: + sprite->invisible = FALSE; + sprite->animNum = 0; + sprite->animDelayCounter = 0; + sprite->pos1.x = 53; + sprite->pos1.y = 92; + break; + case 2: + sprite->invisible = FALSE; + sprite->animNum = 0; + sprite->animDelayCounter = 0; + sprite->pos1.x = 86; + sprite->pos1.y = 92; + break; + case 3: + sprite->invisible = FALSE; + sprite->animNum = 0; + sprite->animDelayCounter = 0; + sprite->pos1.x = 107; + sprite->pos1.y = 92; + break; + case 4: + sprite->invisible = FALSE; + sprite->animNum = 0; + sprite->animDelayCounter = 0; + sprite->pos1.x = 128; + sprite->pos1.y = 92; + break; + case 5: + sprite->invisible = TRUE; + break; + case 6: + DestroySprite(sprite); + break; + } + } +} + +void ResetRtcScreen_CreateCursor(u8 taskId) +{ + int spriteId; + + LoadSpritePalette(&gUnknown_083764BC); + + spriteId = CreateSpriteAtEnd(&gSpriteTemplate_83764E8, 53, 68, 0); + gSprites[spriteId].callback = SpriteCB_ResetRtcCusor0; + gSprites[spriteId].data0 = taskId; + gSprites[spriteId].data1 = -1; + + spriteId = CreateSpriteAtEnd(&gSpriteTemplate_83764E8, 53, 68, 0); + gSprites[spriteId].callback = SpriteCB_ResetRtcCusor1; + gSprites[spriteId].data0 = taskId; + gSprites[spriteId].data1 = -1; +} + +void ResetRtcScreen_FreeCursorPalette(void) +{ + FreeSpritePaletteByTag(gUnknown_083764BC.tag); +} + +void ResetRtcScreen_HideChooseTimeWindow(void) +{ + MenuZeroFillWindowRect(3, 8, 25, 11); +} + +void ResetRtcScreen_PrintTime(u8 x, u8 y, u16 days, u8 hours, u8 minutes, u8 seconds) +{ + u8 *dest = gStringVar4; + days %= 10000; + hours %= 24; + minutes %= 60; + seconds %= 60; + sub_8072C44(gStringVar1, days, 24, 1); + dest = StringCopy(dest, gStringVar1); + dest = StringCopy(dest, gOtherText_Day); + sub_8072C44(gStringVar1, hours, 18, 1); + dest = StringCopy(dest, gStringVar1); + dest = StringCopy(dest, gUnknown_08376500); + dest = ConvertIntToDecimalStringN(dest, minutes, STR_CONV_MODE_LEADING_ZEROS, 2); + dest = StringCopy(dest, gUnknown_08376500); + ConvertIntToDecimalStringN(dest, seconds, STR_CONV_MODE_LEADING_ZEROS, 2); + MenuPrint(gStringVar4, x, y); +} + +void ResetRtcScreen_ShowChooseTimeWindow(u16 days, u8 hours, u8 minutes, u8 seconds) +{ + MenuDrawTextWindow(3, 8, 25, 11); + MenuPrint(gOtherText_OK, 20, 9); + ResetRtcScreen_PrintTime(4, 9, days, hours, minutes, seconds); +} + +bool32 ResetRtcScreen_MoveTimeUpDown(s16 *val, int minVal, int maxVal, u16 keys) +{ + if (keys & DPAD_DOWN) + { + (*val)--; + if (*val < minVal) + *val = maxVal; + } + else if (keys & DPAD_UP) + { + (*val)++; + if (*val > maxVal) + *val = minVal; + } + else if (keys & DPAD_LEFT) + { + *val -= 10; + if (*val < minVal) + *val = maxVal; + } + else if (keys & DPAD_RIGHT) + { + *val += 10; + if (*val > maxVal) + *val = minVal; + } + else + { + return FALSE; + } + + return TRUE; +} + +void Task_ResetRtc_3(u8 taskId) +{ + gTasks[taskId].data[0] = 1; +} + +void Task_ResetRtc_2(u8 taskId) +{ + ResetRtcScreen_HideChooseTimeWindow(); + ResetRtcScreen_FreeCursorPalette(); + gTasks[taskId].func = Task_ResetRtc_3; +} + +void Task_ResetRtc_1(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + u8 selection = data[2]; + struct ResetRtcStruct *selectionInfo = &gUnknown_08376420[selection - 1]; + + if (gMain.newKeys & B_BUTTON) + { + gTasks[taskId].func = Task_ResetRtc_2; + data[1] = 0; + data[2] = 6; + PlaySE(SE_SELECT); + return; + } + + if (gMain.newKeys & DPAD_RIGHT) + { + if (selectionInfo->right) + { + data[2] = selectionInfo->right; + PlaySE(SE_SELECT); + return; + } + } + + if (gMain.newKeys & DPAD_LEFT) + { + if (selectionInfo->left) + { + data[2] = selectionInfo->left; + PlaySE(SE_SELECT); + return; + } + } + + if (selection == 5) + { + if (gMain.newKeys & A_BUTTON) + { + gLocalTime.days = data[3]; + gLocalTime.hours = data[4]; + gLocalTime.minutes = data[5]; + gLocalTime.seconds = data[6]; + PlaySE(SE_SELECT); + gTasks[taskId].func = Task_ResetRtc_2; + data[1] = 1; + data[2] = 6; + } + } + else if (ResetRtcScreen_MoveTimeUpDown(&data[selectionInfo->dataIndex], selectionInfo->minVal, selectionInfo->maxVal, gMain.newAndRepeatedKeys & (DPAD_UP | DPAD_DOWN))) + { + PlaySE(SE_SELECT); + ResetRtcScreen_PrintTime(4, 9, data[3], data[4], data[5], data[6]); + } +} + +void Task_ResetRtc_0(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + data[0] = 0; + data[3] = gLocalTime.days; + data[4] = gLocalTime.hours; + data[5] = gLocalTime.minutes; + data[6] = gLocalTime.seconds; + ResetRtcScreen_ShowChooseTimeWindow(data[3], data[4], data[5], data[6]); + ResetRtcScreen_CreateCursor(taskId); + data[2] = 2; + gTasks[taskId].func = Task_ResetRtc_1; +} + +void CB2_InitResetRtcScreen(void) +{ + u8 *addr; + u32 size; + + REG_DISPCNT = 0; + SetVBlankCallback(NULL); + + DmaClear16(3, PLTT, PLTT_SIZE); + + addr = (u8 *)VRAM; + size = 0x18000; + while (1) + { + DmaFill16(3, 0, addr, 0x1000); + addr += 0x1000; + size -= 0x1000; + if (size <= 0x1000) + { + DmaFill16(3, 0, addr, size); + break; + } + } + + ResetOamRange(0, 128); + LoadOam(); + remove_some_task(); + dp12_8087EA4(); + ResetSpriteData(); + ResetTasks(); + ResetPaletteFade(); + SetUpWindowConfig(&gWindowConfig_81E6CE4); + InitMenuWindow(&gWindowConfig_81E6CE4); + REG_DISPCNT = 4352; + SetVBlankCallback(VBlankCB_ResetRtcScreen); + SetMainCallback2(CB2_ResetRtcScreen); + CreateTask(Task_ResetRtcScreen, 80); +} + +void CB2_ResetRtcScreen(void) +{ + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +void VBlankCB_ResetRtcScreen(void) +{ + ProcessSpriteCopyRequests(); + LoadOam(); + TransferPlttBuffer(); +} + +void ResetRtcScreen_ShowMessage(const u8 *str) +{ + MenuDisplayMessageBox(); + MenuPrint(str, 2, 15); +} + +void Task_ShowResetRtcPrompt(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + + switch (data[0]) + { + case 0: + MenuZeroFillScreen(); + MenuDrawTextWindow(0, 0, 20, 10); + MenuPrint(gSystemText_PresentTime, 1, 1); + ResetRtcScreen_PrintTime( + 1, + 3, + gLocalTime.days, + gLocalTime.hours, + gLocalTime.minutes, + gLocalTime.seconds); + MenuPrint(gSystemText_PreviousTime, 1, 5); + ResetRtcScreen_PrintTime( + 1, + 7, + gSaveBlock2.lastBerryTreeUpdate.days, + gSaveBlock2.lastBerryTreeUpdate.hours, + gSaveBlock2.lastBerryTreeUpdate.minutes, + gSaveBlock2.lastBerryTreeUpdate.seconds); + ResetRtcScreen_ShowMessage(gSystemText_ResetRTCPrompt); + data[0]++; + case 1: + if (gMain.newKeys & B_BUTTON) + { + DestroyTask(taskId); + DoSoftReset(); + } + else if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + DestroyTask(taskId); + } + break; + } +} + +void Task_ResetRtcScreen(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + + switch (data[0]) + { + case 0: + BeginNormalPaletteFade(0xFFFFFFFF, 1, 0x10, 0, 0xFFFF); + data[0] = 1; + break; + case 1: + if (!gPaletteFade.active) + { + if (gSaveFileStatus == 0 || gSaveFileStatus == 2) + { + ResetRtcScreen_ShowMessage(gSystemText_NoSaveFileNoTime); + data[0] = 5; + } + else + { + RtcCalcLocalTime(); + data[1] = CreateTask(Task_ShowResetRtcPrompt, 80); + data[0] = 2; + } + } + break; + case 2: + if (gTasks[data[1]].isActive != TRUE) + { + MenuZeroFillScreen(); + ResetRtcScreen_ShowMessage(gSystemText_PleaseResetTime); + gLocalTime = gSaveBlock2.lastBerryTreeUpdate; + data[1] = CreateTask(Task_ResetRtc_0, 80); + data[0] = 3; + } + break; + case 3: + if (gTasks[data[1]].data[0]) + { + if (!gTasks[data[1]].data[1]) + { + DestroyTask(data[1]); + data[0] = 2; + } + else + { + DestroyTask(data[1]); + RtcReset(); + RtcCalcLocalTimeOffset( + gLocalTime.days, + gLocalTime.hours, + gLocalTime.minutes, + gLocalTime.seconds); + gSaveBlock2.lastBerryTreeUpdate = gLocalTime; + VarSet(VAR_DAYS, gLocalTime.days); + DisableResetRTC(); + ResetRtcScreen_ShowMessage(gSystemText_ClockResetDataSave); + data[0] = 4; + } + } + break; + case 4: + if (TrySavingData(0) == TRUE) + { + ResetRtcScreen_ShowMessage(gSystemText_SaveCompleted); + PlaySE(SE_PINPON); + } + else + { + ResetRtcScreen_ShowMessage(gSystemText_SaveFailed); + PlaySE(SE_BOO); + } + data[0] = 5; + case 5: + if (gMain.newKeys & A_BUTTON) + { + BeginNormalPaletteFade(0xFFFFFFFF, 1, 0, 0x10, 0xFFFF); + data[0] = 6; + } + else + { + break; + } + case 6: + if (!gPaletteFade.active) + { + DestroyTask(taskId); + DoSoftReset(); + } + } +} diff --git a/src/rng.c b/src/engine/rng.c similarity index 100% rename from src/rng.c rename to src/engine/rng.c diff --git a/src/rtc.c b/src/engine/rtc.c similarity index 100% rename from src/rtc.c rename to src/engine/rtc.c diff --git a/src/save.c b/src/engine/save.c similarity index 97% rename from src/save.c rename to src/engine/save.c index 570210fb0..eae3f4470 100644 --- a/src/save.c +++ b/src/engine/save.c @@ -3,7 +3,7 @@ #include "gba/flash_internal.h" #include "save.h" #include "load_save.h" -#include "rom4.h" +#include "overworld.h" #include "save_failed_screen.h" #define GETVALIDSTATUSBITFIELD ((1 << ARRAY_COUNT(gSaveSectionLocations)) - 1) @@ -11,21 +11,23 @@ #define GETBLOCKOFFSET(n) (0xF80 * (n - 1)) #define TOTALNUMSECTORS ((ARRAY_COUNT(gSaveSectionLocations) * 2) + (ARRAY_COUNT(gHallOfFameSaveSectionLocations) * 2)) // there are 2 slots, so double each array count and get the sum. -extern u32 gLastSaveSectorStatus; // used but in an unferenced function, so unused -extern u16 gLastWrittenSector; -extern u32 gLastSaveCounter; -extern u16 gLastKnownGoodSector; -extern u32 gDamagedSaveSectors; -extern u32 gSaveCounter; extern struct SaveSection unk_2000000; // slow save RAM -extern struct SaveSection *gFastSaveSection; // the pointer is in fast IWRAM but may sometimes point to the slower EWRAM. -extern u16 gUnknown_03005EB4; -extern u16 gSaveFileStatus; -extern u32 gGameContinueCallback; + +u16 gLastWrittenSector; +u32 gLastSaveCounter; +u16 gLastKnownGoodSector; +u32 gDamagedSaveSectors; +u32 gSaveCounter; +struct SaveSection *gFastSaveSection; // the pointer is in fast IWRAM but may sometimes point to the slower EWRAM. +u16 gUnknown_03005EB4; +u16 gSaveFileStatus; +u32 gGameContinueCallback; extern struct PokemonStorage gPokemonStorage; extern struct HallOfFame gHallOfFame; +static EWRAM_DATA u32 gLastSaveSectorStatus = 0; // used but in an unferenced function, so unused + const struct SaveSectionLocation gSaveSectionLocations[] = { {((u8 *) &gSaveBlock2) + GETBLOCKOFFSET(1), GETCHUNKSIZE(gSaveBlock2, 1)}, @@ -672,9 +674,9 @@ u8 sub_8125E2C(void) return 0; } -u8 sub_8125E6C(void) +bool8 sub_8125E6C(void) { - u8 retVal = 0; + u8 retVal = FALSE; u16 val = ++gUnknown_03005EB4; if (val <= 4) { @@ -684,7 +686,7 @@ u8 sub_8125E6C(void) else { sub_81257F0(val, gSaveSectionLocations); - retVal = 1; + retVal = TRUE; } if (gDamagedSaveSectors) DoSaveFailedScreen(1); diff --git a/src/save_failed_screen.c b/src/engine/save_failed_screen.c similarity index 88% rename from src/save_failed_screen.c rename to src/engine/save_failed_screen.c index a64b3eb5f..b91e8b5bf 100644 --- a/src/save_failed_screen.c +++ b/src/engine/save_failed_screen.c @@ -22,17 +22,11 @@ #define CLOCK_WIN_TOP (MSG_WIN_TOP - 4) -struct SaveFailedClockStruct -{ - bool16 clockRunning; - u16 timer; // appears to be unused, the only case its "used" cannot be reached normally - u8 unused[0xE]; // appears to be unused space. alternatively, there could have been multiple clock structs. however, neither of these cases are fulfilled, so the purpose of this space is unknown. one theory is that there is room for 3 more clock structs (2 16-bit values), so its possible GF intended there to be support for link-based save failed screens in case the synchronization failed, or it in fact was present in an earlier build but taken out for reasons. -}; - extern u8 unk_2000000[]; -extern u16 gSaveFailedType; -extern struct SaveFailedClockStruct gSaveFailedClockInfo; +static EWRAM_DATA u16 gSaveFailedType = 0; +static EWRAM_DATA u16 gSaveFailedClockInfo[9] = {0}; + extern u32 gDamagedSaveSectors; extern u32 gGameContinueCallback; @@ -83,7 +77,7 @@ void DoSaveFailedScreen(u8 saveType) { SetMainCallback2(CB2_SaveFailedScreen); gSaveFailedType = saveType; - gSaveFailedClockInfo.clockRunning = FALSE; + gSaveFailedClockInfo[0] = FALSE; } static void VBlankCB(void) @@ -159,7 +153,7 @@ static void CB2_WipeSave(void) { u8 wipeTries = 0; - gSaveFailedClockInfo.clockRunning = TRUE; + gSaveFailedClockInfo[0] = TRUE; while (gDamagedSaveSectors != 0 && wipeTries < 3) // while there are still attempts left, keep trying to fix the save sectors. { @@ -208,7 +202,7 @@ static void CB2_WipeSave(void) static void CB2_GameplayCannotBeContinued(void) { - gSaveFailedClockInfo.clockRunning = FALSE; + gSaveFailedClockInfo[0] = FALSE; if (gMain.newKeys & A_BUTTON) { @@ -221,7 +215,7 @@ static void CB2_GameplayCannotBeContinued(void) static void CB2_FadeAndReturnToTitleScreen(void) { - gSaveFailedClockInfo.clockRunning = FALSE; + gSaveFailedClockInfo[0] = FALSE; if (gMain.newKeys & A_BUTTON) { @@ -255,7 +249,7 @@ static void VBlankCB_UpdateClockGraphics(void) gMain.oamBuffer[0].x = 112; gMain.oamBuffer[0].y = (CLOCK_WIN_TOP + 1) * 8; - if (gSaveFailedClockInfo.clockRunning != FALSE) + if (gSaveFailedClockInfo[0] != FALSE) { gMain.oamBuffer[0].tileNum = sClockFrames[n][0]; gMain.oamBuffer[0].matrixNum = (sClockFrames[n][2] << 4) | (sClockFrames[n][1] << 3); @@ -267,8 +261,8 @@ static void VBlankCB_UpdateClockGraphics(void) CpuFastCopy(gMain.oamBuffer, (void *)OAM, 4); - if (gSaveFailedClockInfo.timer) // maybe was used for debugging? - gSaveFailedClockInfo.timer--; + if (gSaveFailedClockInfo[1]) // maybe was used for debugging? + gSaveFailedClockInfo[1]--; } static bool8 VerifySectorWipe(u16 sector) diff --git a/src/save_menu_util.c b/src/engine/save_menu_util.c similarity index 98% rename from src/save_menu_util.c rename to src/engine/save_menu_util.c index b2dd662d6..a2d17bd36 100644 --- a/src/save_menu_util.c +++ b/src/engine/save_menu_util.c @@ -70,7 +70,7 @@ void PrintSaveMapName(s16 x, s16 y) { char name[32]; - CopyMapName(name, gMapHeader.name); + CopyMapName(name, gMapHeader.regionMapSectionId); MenuPrint(name, x, y); } diff --git a/src/script.c b/src/engine/script.c similarity index 76% rename from src/script.c rename to src/engine/script.c index 488a67de1..8625cfdc2 100644 --- a/src/script.c +++ b/src/engine/script.c @@ -3,9 +3,16 @@ #include "event_data.h" #define RAM_SCRIPT_MAGIC 51 +#define SCRIPT_STACK_SIZE 20 -extern u8 *gUnknown_0202E8AC; -extern u32 gUnknown_0202E8B0; +enum +{ + SCRIPT_MODE_STOPPED, + SCRIPT_MODE_BYTECODE, + SCRIPT_MODE_NATIVE, +}; + +EWRAM_DATA u8 *gUnknown_0202E8AC = NULL; static u8 sScriptContext1Status; static struct ScriptContext sScriptContext1; @@ -20,66 +27,66 @@ void InitScriptContext(struct ScriptContext *ctx, void *cmdTable, void *cmdTable { s32 i; - ctx->mode = 0; - ctx->scriptPtr = 0; + ctx->mode = SCRIPT_MODE_STOPPED; + ctx->scriptPtr = NULL; ctx->stackDepth = 0; - ctx->nativePtr = 0; + ctx->nativePtr = NULL; ctx->cmdTable = cmdTable; ctx->cmdTableEnd = cmdTableEnd; for (i = 0; i < 4; i++) ctx->data[i] = 0; - for (i = 0; i < 20; i++) + for (i = 0; i < SCRIPT_STACK_SIZE; i++) ctx->stack[i] = 0; } -u8 SetupBytecodeScript(struct ScriptContext *ctx, void *ptr) +u8 SetupBytecodeScript(struct ScriptContext *ctx, const u8 *ptr) { ctx->scriptPtr = ptr; - ctx->mode = 1; + ctx->mode = SCRIPT_MODE_BYTECODE; return 1; } -void SetupNativeScript(struct ScriptContext *ctx, void *ptr) +void SetupNativeScript(struct ScriptContext *ctx, bool8 (*ptr)(void)) { - ctx->mode = 2; + ctx->mode = SCRIPT_MODE_NATIVE; ctx->nativePtr = ptr; } void StopScript(struct ScriptContext *ctx) { - ctx->mode = 0; - ctx->scriptPtr = 0; + ctx->mode = SCRIPT_MODE_STOPPED; + ctx->scriptPtr = NULL; } -u8 RunScript(struct ScriptContext *ctx) +bool8 RunScriptCommand(struct ScriptContext *ctx) { - if (ctx->mode == 0) - return 0; + if (ctx->mode == SCRIPT_MODE_STOPPED) + return FALSE; switch (ctx->mode) { - case 0: - return 0; - case 2: + case SCRIPT_MODE_STOPPED: + return FALSE; + case SCRIPT_MODE_NATIVE: if (ctx->nativePtr) { - if (ctx->nativePtr() == 1) - ctx->mode = 1; - return 1; + if (ctx->nativePtr() == TRUE) + ctx->mode = SCRIPT_MODE_BYTECODE; + return TRUE; } - ctx->mode = 1; - case 1: + ctx->mode = SCRIPT_MODE_BYTECODE; + case SCRIPT_MODE_BYTECODE: while (1) { u8 cmdCode; - ScrCmdFunc *func; + ScrCmdFunc *cmdFunc; - if (!ctx->scriptPtr) + if (ctx->scriptPtr == NULL) { - ctx->mode = 0; - return 0; + ctx->mode = SCRIPT_MODE_STOPPED; + return FALSE; } if (ctx->scriptPtr == gNullScriptPtr) @@ -90,25 +97,25 @@ u8 RunScript(struct ScriptContext *ctx) cmdCode = *(ctx->scriptPtr); ctx->scriptPtr++; - func = &ctx->cmdTable[cmdCode]; + cmdFunc = &ctx->cmdTable[cmdCode]; - if (func >= ctx->cmdTableEnd) + if (cmdFunc >= ctx->cmdTableEnd) { - ctx->mode = 0; - return 0; + ctx->mode = SCRIPT_MODE_STOPPED; + return FALSE; } - if ((*func)(ctx) == 1) - return 1; + if ((*cmdFunc)(ctx) == TRUE) + return TRUE; } } - return 1; + return TRUE; } -u8 ScriptPush(struct ScriptContext *ctx, u8 *ptr) +u8 ScriptPush(struct ScriptContext *ctx, const u8 *ptr) { - if (ctx->stackDepth + 1 >= 20) + if (ctx->stackDepth + 1 >= SCRIPT_STACK_SIZE) { return 1; } @@ -120,7 +127,7 @@ u8 ScriptPush(struct ScriptContext *ctx, u8 *ptr) } } -u8 *ScriptPop(struct ScriptContext *ctx) +const u8 *ScriptPop(struct ScriptContext *ctx) { if (ctx->stackDepth == 0) return NULL; @@ -192,7 +199,7 @@ bool8 ScriptContext2_RunScript(void) ScriptContext2_Enable(); - if (!RunScript(&sScriptContext1)) + if (!RunScriptCommand(&sScriptContext1)) { sScriptContext1Status = 2; ScriptContext2_Disable(); @@ -202,7 +209,7 @@ bool8 ScriptContext2_RunScript(void) return 1; } -void ScriptContext1_SetupScript(u8 *ptr) +void ScriptContext1_SetupScript(const u8 *ptr) { InitScriptContext(&sScriptContext1, gScriptCmdTable, gScriptCmdTableEnd); SetupBytecodeScript(&sScriptContext1, ptr); @@ -221,24 +228,24 @@ void EnableBothScriptContexts() ScriptContext2_Enable(); } -void ScriptContext2_RunNewScript(u8 *ptr) +void ScriptContext2_RunNewScript(const u8 *ptr) { InitScriptContext(&sScriptContext2, &gScriptCmdTable, &gScriptCmdTableEnd); SetupBytecodeScript(&sScriptContext2, ptr); - while (RunScript(&sScriptContext2) == 1) + while (RunScriptCommand(&sScriptContext2) == 1) ; } -u8 *mapheader_get_tagged_pointer(u8 tag) +static u8 *mapheader_get_tagged_pointer(u8 tag) { u8 *mapScripts = gMapHeader.mapScripts; - if (!mapScripts) + if (mapScripts == NULL) return NULL; while (1) { - if (!*mapScripts) + if (*mapScripts == 0) return NULL; if (*mapScripts == tag) { @@ -249,14 +256,14 @@ u8 *mapheader_get_tagged_pointer(u8 tag) } } -void mapheader_run_script_by_tag(u8 tag) +static void mapheader_run_script_by_tag(u8 tag) { u8 *ptr = mapheader_get_tagged_pointer(tag); if (ptr) ScriptContext2_RunNewScript(ptr); } -u8 *mapheader_get_first_match_from_tagged_ptr_list(u8 tag) +static u8 *mapheader_get_first_match_from_tagged_ptr_list(u8 tag) { u8 *ptr = mapheader_get_tagged_pointer(tag); @@ -317,7 +324,7 @@ void mapheader_run_first_tag4_script_list_match(void) ScriptContext2_RunNewScript(ptr); } -u32 CalculateRamScriptChecksum(void) +static u32 CalculateRamScriptChecksum(void) { u32 i; u32 sum = 0; diff --git a/src/sound.c b/src/engine/sound.c similarity index 92% rename from src/sound.c rename to src/engine/sound.c index c9c4916b0..a6a61c0b5 100644 --- a/src/sound.c +++ b/src/engine/sound.c @@ -4,6 +4,7 @@ #include "battle.h" #include "m4a.h" #include "main.h" +#include "pokemon.h" #include "songs.h" #include "task.h" @@ -13,12 +14,10 @@ struct Fanfare u16 duration; }; -// FIXME: different prototype than definition -u32 SpeciesToCryId(u32); - extern u16 gBattleTypeFlags; -extern struct MusicPlayerInfo *gMPlay_PokemonCry; -extern u8 gPokemonCryBGMDuckingCounter; + +static EWRAM_DATA struct MusicPlayerInfo *gMPlay_PokemonCry = NULL; +static EWRAM_DATA u8 gPokemonCryBGMDuckingCounter = 0; static u16 sCurrentMapMusic; static u16 sNextMapMusic; @@ -26,7 +25,8 @@ static u8 sMapMusicState; static u8 sMapMusicFadeInSpeed; static u16 sFanfareCounter; -extern bool8 gDisableMusic; +bool8 gDisableMusic; + extern struct MusicPlayerInfo gMPlay_BGM; extern struct MusicPlayerInfo gMPlay_SE1; extern struct MusicPlayerInfo gMPlay_SE2; @@ -81,8 +81,6 @@ void MapMusicMain(void) PlayBGM(sCurrentMapMusic); break; case 2: - case 3: - case 4: break; case 5: if (IsBGMStopped()) @@ -353,21 +351,9 @@ void PlayCry5(u16 species, u8 mode) RestoreBGMVolumeAfterPokemonCry(); } -#define GET_CRY_PTR(a, b)\ -{\ - struct ToneData *tone;\ - if (v0)\ - tone = &a[index];\ - else\ - tone = &b[index];\ - gMPlay_PokemonCry = SetPokemonCryTone(tone);\ - break;\ -} - static void PlayCryInternal(u16 species, s8 pan, s8 volume, u8 priority, u8 mode) { - u32 cryId; - u32 v0; + bool32 v0; u32 release; u32 length; u32 pitch; @@ -376,10 +362,7 @@ static void PlayCryInternal(u16 species, s8 pan, s8 volume, u8 priority, u8 mode u8 table; species--; - - cryId = species; - - v0 = 0; + v0 = FALSE; release = 0; length = 140; pitch = 15360; @@ -425,26 +408,28 @@ static void PlayCryInternal(u16 species, s8 pan, s8 volume, u8 priority, u8 mode SetPokemonCryChorus(chorus); SetPokemonCryPriority(priority); - asm(""); - asm(""); - asm(""); - asm(""); - asm(""); - asm(""); - asm(""); - - cryId = SpeciesToCryId(cryId); - index = 0x7F; - asm("" ::: "r0"); - index &= cryId; - table = cryId >> 7; + species = SpeciesToCryId(species); + index = species & 0x7F; + table = species >> 7; switch (table) { - case 0: GET_CRY_PTR(voicegroup_84537C0, voicegroup_8452590); - case 1: GET_CRY_PTR(voicegroup_8453DC0, voicegroup_8452B90); - case 2: GET_CRY_PTR(voicegroup_84543C0, voicegroup_8453190); - case 3: GET_CRY_PTR(voicegroup_84549C0, voicegroup_8453790); + case 0: + gMPlay_PokemonCry = SetPokemonCryTone( + v0 ? &voicegroup_84537C0[index] : &voicegroup_8452590[index]); + break; + case 1: + gMPlay_PokemonCry = SetPokemonCryTone( + v0 ? &voicegroup_8453DC0[index] : &voicegroup_8452B90[index]); + break; + case 2: + gMPlay_PokemonCry = SetPokemonCryTone( + v0 ? &voicegroup_84543C0[index] : &voicegroup_8453190[index]); + break; + case 3: + gMPlay_PokemonCry = SetPokemonCryTone( + v0 ? &voicegroup_84549C0[index] : &voicegroup_8453790[index]); + break; } } diff --git a/src/sprite.c b/src/engine/sprite.c similarity index 99% rename from src/sprite.c rename to src/engine/sprite.c index fb8c2b648..5d394502a 100644 --- a/src/sprite.c +++ b/src/engine/sprite.c @@ -916,16 +916,17 @@ void DestroySpriteAndFreeResources(struct Sprite *sprite) DestroySprite(sprite); } -void sub_800142C(u32 a1, u32 a2, u16 *a3, u16 a4, u32 a5) +// Loads the mon name, level, and hp sprites into OAM. +void DrawPartyMenuMonText(u32 a1, u32 a2, const u16 *a3, u16 a4, u32 baseTileNumber) { - u16 *d = a3; + const u16 *d = a3; struct OamData *oam = &gMain.oamBuffer[gMain.objCount]; while (!(gMain.objCount & 0x80) && (s16)(d[0] + 1) != 0) { u16 *x = (u16 *)oam; x[0] = (d[0] & sOamBitmasks[0]) | ((d[0] + a2) & sOamBitmasks[1]) | ((a4 & sOamBitmasks[2]) << 8); x[1] = (d[1] & sOamBitmasks[3]) | ((d[1] + a1) & sOamBitmasks[4]) | ((a4 & sOamBitmasks[5]) << 4); - x[2] = (d[2] & sOamBitmasks[6]) | ((d[2] + a5) & sOamBitmasks[7]) | (a4 & sOamBitmasks[8]); + x[2] = (d[2] & sOamBitmasks[6]) | ((d[2] + baseTileNumber) & sOamBitmasks[7]) | (a4 & sOamBitmasks[8]); oam++; gMain.objCount++; d += 3; diff --git a/src/string_util.c b/src/engine/string_util.c similarity index 100% rename from src/string_util.c rename to src/engine/string_util.c diff --git a/src/task.c b/src/engine/task.c similarity index 98% rename from src/task.c rename to src/engine/task.c index 3c28a66d9..7bd2b5937 100644 --- a/src/task.c +++ b/src/engine/task.c @@ -11,6 +11,9 @@ struct Task gTasks[ACTIVE_SENTINEL]; static void InsertTask(u8 newTaskId); static u8 FindFirstActiveTask(); +// Unused string +const u8 sTaskOverString[] = _("TASK OVER\nタスクがオーバーしました"); + void ResetTasks() { u8 taskId; diff --git a/src/text.c b/src/engine/text.c similarity index 99% rename from src/text.c rename to src/engine/text.c index b27084b86..87903608f 100644 --- a/src/text.c +++ b/src/engine/text.c @@ -219,12 +219,12 @@ static const u8 sBrailleGlyphs[] = INCBIN_U8("graphics/fonts/font6_braille.1bpp" static const u32 sDownArrowTiles[] = INCBIN_U32("graphics/fonts/down_arrow.4bpp"); // clang-format off -#include "data/text/type1_map.h" -#include "data/text/type3_map.h" -#include "data/text/font1_widths.h" -#include "data/text/font4_widths.h" -#include "data/text/font0_widths.h" -#include "data/text/font3_widths.h" +#include "../data/text/type1_map.h" +#include "../data/text/type3_map.h" +#include "../data/text/font1_widths.h" +#include "../data/text/font4_widths.h" +#include "../data/text/font0_widths.h" +#include "../data/text/font3_widths.h" // clang-format on const u16 gUnknownPalette_81E6692[] = INCBIN_U16("graphics/fonts/unknown_81E6692.gbapal"); @@ -1943,7 +1943,7 @@ void InitWindowFromConfig(struct Window *win, const struct WindowConfig *winConf void InitWindow(struct Window *win, const u8 *text, u16 tileDataStartOffset, u8 left, u8 top) { - struct WindowConfig *winConfig = win->config; + const struct WindowConfig *winConfig = win->config; win->textMode = winConfig->textMode; win->fontNum = winConfig->fontNum; win->language = GAME_LANGUAGE; @@ -2342,7 +2342,7 @@ u8 sub_8003490(struct Window *win, u8 c, u16 tileDataStartOffset, u8 left, u8 to void sub_80034D4(u8 *tileData, const u8 *text) { - sub_8004E3C((struct WindowConfig *)&gWindowConfig_81E6C74, tileData, text); + sub_8004E3C(&gWindowConfig_81E6C74, tileData, text); } u8 sub_80034EC(u8 *str) @@ -3645,7 +3645,7 @@ void sub_8004E28(struct Window *win, u8 *foreground, u8 *background, u8 *shadow) *shadow = win->shadowColor; } -void sub_8004E3C(struct WindowConfig *winConfig, u8 *tileData, const u8 *text) +void sub_8004E3C(const struct WindowConfig *winConfig, u8 *tileData, const u8 *text) { sTempWindow.config = winConfig; InitWindow(&sTempWindow, text, 0, 0, 0); @@ -3653,7 +3653,7 @@ void sub_8004E3C(struct WindowConfig *winConfig, u8 *tileData, const u8 *text) sub_8002F44(&sTempWindow); } -u8 GetStringWidthGivenWindowConfig(struct WindowConfig *winConfig, const u8 *s) +u8 GetStringWidthGivenWindowConfig(const struct WindowConfig *winConfig, const u8 *s) { sTempWindow.config = winConfig; InitWindow(&sTempWindow, s, 0, 0, 0); diff --git a/src/text_window.c b/src/engine/text_window.c similarity index 100% rename from src/text_window.c rename to src/engine/text_window.c diff --git a/src/tileset_anim.c b/src/engine/tileset_anim.c similarity index 100% rename from src/tileset_anim.c rename to src/engine/tileset_anim.c diff --git a/src/time_events.c b/src/engine/time_events.c similarity index 93% rename from src/time_events.c rename to src/engine/time_events.c index e1b9a2e9e..accb03db8 100644 --- a/src/time_events.c +++ b/src/engine/time_events.c @@ -4,7 +4,7 @@ #include "field_weather.h" #include "pokemon.h" #include "rng.h" -#include "rom4.h" +#include "overworld.h" #include "rtc.h" #include "script.h" #include "task.h" @@ -81,13 +81,13 @@ void UpdateShoalTideFlag(void) 1, }; - if (is_light_level_1_2_3_5_or_6(get_map_light_from_warp0())) + if (is_map_type_1_2_3_5_or_6(get_map_type_from_warp0())) { RtcCalcLocalTime(); if (tide[gLocalTime.hours]) FlagSet(SYS_SHOAL_TIDE); else - FlagReset(SYS_SHOAL_TIDE); + FlagClear(SYS_SHOAL_TIDE); } } diff --git a/src/engine/trade.c b/src/engine/trade.c new file mode 100644 index 000000000..6e78ba3ce --- /dev/null +++ b/src/engine/trade.c @@ -0,0 +1,5715 @@ +#include "global.h" +#include "name_string_util.h" +#include "string_util.h" +#include "text.h" +#include "main.h" +#include "species.h" +#include "items.h" +#include "moves.h" +#include "easy_chat.h" +#include "link.h" +#include "strings2.h" +#include "graphics.h" +#include "palette.h" +#include "task.h" +#include "menu.h" +#include "text_window.h" +#include "pokemon_icon.h" +#include "cable_club.h" +#include "party_menu.h" +#include "songs.h" +#include "sound.h" +#include "data2.h" +#include "pokemon_summary_screen.h" +#include "overworld.h" +#include "rom_8077ABC.h" +#include "daycare.h" +#include "event_data.h" +#include "strings.h" +#include "load_save.h" +#include "save.h" +#include "script.h" +#include "field_fadetransition.h" +#include "decompress.h" +#include "mail_data.h" +#include "evolution_scene.h" +#include "pokeball.h" +#include "pokedex.h" +#include "field_effect.h" +#include "util.h" +#include "battle_interface.h" +#include "trade.h" + +#ifdef ENGLISH +#define sub_804A96C_alt sub_804A96C +asm(".set sub_804A96C_alt, sub_804A96C"); +#endif + +#define Trade_SendData(ptr) (SendBlock(bitmask_all_link_players_but_self(), ptr->linkData, 20)) + +struct InGameTrade { + /*0x00*/ u8 name[11]; + /*0x0C*/ u16 species; + /*0x0E*/ u8 ivs[6]; + /*0x14*/ bool8 secondAbility; + /*0x18*/ u32 otId; + /*0x1C*/ u8 stats[5]; + /*0x24*/ u32 personality; + /*0x28*/ u16 heldItem; + /*0x2A*/ u8 mailNum; + /*0x2B*/ u8 otName[11]; + /*0x36*/ u8 otGender; + /*0x37*/ u8 sheen; + /*0x38*/ u16 playerSpecies; +}; + +struct UnkStructC { + /*0x00*/ u16 words[9]; + /*0x10*/ u8 string[8]; + /*0x1A*/ u8 otId[4]; + /*0x1E*/ u16 species; + /*0x20*/ u16 heldItem; +}; + +struct UnkStructD { + /*0x00*/ u8 filler_00[8]; + /*0x08*/ void *vramAddr; + /*0x0c*/ u8 filler_0c[4]; + /*0x10*/ u8 unk_10; + /*0x12*/ u16 unk_12[0x400]; +}; + +struct UnkStructE { + /*0x00*/ u8 unk_00; + /*0x02*/ u16 unk_02; + /*0x04*/ u8 unk_04; +}; + +struct TradeEwramSubstruct { + /*0x0000*/ u8 unk_0000; + /*0x0001*/ u8 unk_0001; + /*0x0004*/ struct Window window; + /*0x0034*/ u8 partyIcons[2][6]; + /*0x0040*/ u8 tradeMenuCursorSpriteIdx; + /*0x0041*/ u8 tradeMenuCursorPosition; + /*0x0042*/ u8 partyCounts[2]; + /*0x0044*/ u8 tradeMenuOptionsActive[13]; + /*0x0051*/ u8 unk_0051[2][6]; + /*0x005d*/ u8 unk_005d[2][6]; + /*0x005d*/ u8 unk_0069[2][6]; + /*0x0075*/ u8 unk_0075; + /*0x0076*/ u8 filler_0076[4]; + /*0x007a*/ u8 unk_007a; + /*0x007b*/ u8 unk_007b; + /*0x007c*/ u8 unk_007c; + /*0x007d*/ u8 unk_007d; + /*0x007e*/ u16 unk_007e; + /*0x0080*/ u8 unk_0080[2]; + /*0x0082*/ u8 unk_0082[2]; + /*0x0084*/ u8 unk_0084; + /*0x0085*/ u8 unk_0085; + /*0x0086*/ u8 unk_0086; + /*0x0087*/ u8 unk_0087; + /*0x0088*/ u8 filler_0088[2]; + /*0x008a*/ u8 unk_008a; + /*0x008b*/ u8 unk_008b; + /*0x008c*/ u16 linkData[20]; + /*0x00b4*/ u8 unk_00b4; + /*0x00b5*/ u8 unk_00b5[11]; + /*0x00c0*/ u8 filler_00c0[8]; + /*0x00c8*/ struct UnkStructD unk_00c8; + /*0x08dc*/ struct UnkStructE unk_08dc[4]; + /*0x08fc*/ u8 filler_08fc[0x704]; +}; + +IWRAM_DATA u8 gUnknown_03000508[8]; + +struct UnkStructF { + u8 filler_0000[9]; + u8 unk_0009; + u8 filler_000a[0xff6]; +}; + +struct TradeEwramStruct { + /*0x00000*/ u8 filler_00000[0x7000]; + /*0x07000*/ struct TradeEwramSubstruct unk_07000; + /*0x08000*/ struct UnkStructF unk_08000; + /*0x09000*/ u8 filler_09000[0x4000]; + /*0x0d000*/ u8 tileBuffers[13][256]; + /*0x0dd00*/ u8 filler_0dd00[0x1300]; + /*0x0f000*/ struct TradeEwramSubstruct2 unk_0f000; +}; + +static void sub_8047EC0(void); +static void sub_804AFB8(const struct WindowConfig *, u8 *, const u8 *, u8); +static void sub_804ACD8(const u8 *, u8 *, u8); +static void nullsub_5(u8, u8); +static void sub_804AA88(void); +static void sub_804A964(struct UnkStructD *, void *); +static void sub_80489F4(void); +static void sub_804AA0C(u8); +static bool8 sub_8048D44(void); +static void sub_804AF84(void); +static bool8 sub_804ABF8(void); +static void sub_804ACF4(u8); +static void sub_804A41C(u8); +static void sub_8048C70(void); +static void sub_8048B0C(u8); +static void sub_804AE3C(u8); +static void sub_804AF10(void); +static void sub_80494D8(void); +static void sub_8048AB4(void); +static void sub_804A940(struct UnkStructD *); +static void sub_804B41C(void); +static void sub_8049DE0(void); +static void sub_804AB30(void); +static void sub_8049ED4(u8); +static void sub_804A6DC(u8); +static void sub_804A938(struct UnkStructD *); +static void sub_804A9F4(u8); +static void sub_804AA00(u8); +static void sub_8049E9C(u8); +static void sub_804AADC(u16, u8); +static void sub_804A80C(void); +static u8 sub_80499F0(const u8 *, u8, u8); +static void sub_804A840(u8); +#ifdef NONMATCHING +static +#endif +u8 sub_804A2B4(u8 *, u8, u8); +static void sub_804A96C_alt(struct UnkStructD *, u8, u8, const u16 *, u8, u8, u16); +static void sub_804A96C(struct UnkStructD *, u8, u8, const u16 *, u8, u8, u16); +#ifdef NONMATCHING +static +#endif +void sub_804A33C(u8 *, u8, u8); +#ifdef NONMATCHING +static +#endif +void sub_804A51C(u8, u8, u8, u8, u8, u8); +static void sub_804D7AC(struct Sprite *); +static bool8 sub_804C29C(void); +static void sub_804DC18(void); +static u8 sub_804B2B0(void); +static void sub_804E144(void); +static void sub_804E1A0(u8); +static void sub_804DAD4(struct MailStruct *, const struct InGameTrade *); +static void sub_804DC88(void); +static void sub_804D6BC(struct Sprite *); +static void sub_804D738(struct Sprite *); +static void sub_804BBE8(u8); +static void sub_804B058(struct Sprite *); +static void sub_804B07C(struct Sprite *); +static void sub_804B0BC(struct Sprite *); +static void sub_804B104(struct Sprite *); +static void sub_804D80C(struct Sprite *); +static void sub_804E1DC(void); +static void sub_804BBCC(void); +static void sub_804D8E4(void); +static void sub_804C164(void); +static void sub_804C1A8(void); +#ifdef NONMATCHING +static +#endif +void sub_804DB84(void); + +extern u8 gUnknown_020297D8[2]; +extern u8 *gUnknown_020296CC[13]; +extern struct TradeEwramSubstruct *gUnknown_03004824; +extern struct MailStruct gUnknown_02029700[16]; + +#define ewram_2010000 (*(struct TradeEwramStruct *)(ewram + 0x10000)) + + +const u32 unref_data_820ABD4[] = { + 0x00000890, + 0x00003AC0, + 0x0000001C, + 0x00000530, + 0x00000024, + 0x00000064, + 0x000004D8 +}; + +const u16 gTradeMovesBoxTilemap[] = INCBIN_U16("graphics/trade/moves_box_map.bin"); +const u16 gTradePartyBoxTilemap[] = INCBIN_U16("graphics/trade/party_box_map.bin"); +const u16 gTradeStripesBG2Tilemap[] = INCBIN_U16("graphics/trade/stripes_bg2_map.bin"); +const u16 gTradeStripesBG3Tilemap[] = INCBIN_U16("graphics/trade/stripes_bg3_map.bin"); + +const struct OamData gOamData_820BFEC = { + .shape = ST_OAM_H_RECTANGLE, + .size = 2, + .priority = 1 +}; + +const union AnimCmd gSpriteAnim_820BFF4[] = { + ANIMCMD_FRAME(0, 5), + ANIMCMD_END +}; + +const union AnimCmd gSpriteAnim_820BFFC[] = { + ANIMCMD_FRAME(8, 5), + ANIMCMD_END +}; + +const union AnimCmd gSpriteAnim_820C004[] = { + ANIMCMD_FRAME(16, 5), + ANIMCMD_END +}; + +const union AnimCmd gSpriteAnim_820C00C[] = { + ANIMCMD_FRAME(24, 5), + ANIMCMD_END +}; + +const union AnimCmd gSpriteAnim_820C014[] = { + ANIMCMD_FRAME(32, 5), + ANIMCMD_END +}; + +const union AnimCmd gSpriteAnim_820C01C[] = { + ANIMCMD_FRAME(40, 5), + ANIMCMD_END +}; + +const union AnimCmd *const gSpriteAnimTable_820C024[] = { + gSpriteAnim_820BFF4, + gSpriteAnim_820BFFC, + gSpriteAnim_820C004, + gSpriteAnim_820C00C, + gSpriteAnim_820C014, + gSpriteAnim_820C01C +}; + +const u16 TradeScreenTextPalette[] = INCBIN_U16("graphics/trade/text1.gbapal"); +const u16 UnrefTradeScreenTextPalette[] = INCBIN_U16("graphics/trade/text2.gbapal"); + +const struct SpriteSheet gUnknown_0820C07C[] = { + {ewram_2010000.tileBuffers[ 0], 256, 200}, + {ewram_2010000.tileBuffers[ 1], 256, 201}, + {ewram_2010000.tileBuffers[ 2], 256, 202}, + {ewram_2010000.tileBuffers[ 3], 256, 203}, + {ewram_2010000.tileBuffers[ 4], 256, 204}, + {ewram_2010000.tileBuffers[ 5], 256, 205}, + {ewram_2010000.tileBuffers[ 6], 256, 206}, + {ewram_2010000.tileBuffers[ 7], 256, 207}, + {ewram_2010000.tileBuffers[ 8], 256, 208}, + {ewram_2010000.tileBuffers[ 9], 256, 209}, + {ewram_2010000.tileBuffers[10], 256, 210}, + {ewram_2010000.tileBuffers[11], 256, 211}, + {ewram_2010000.tileBuffers[12], 256, 212}, +}; + +const struct SpritePalette gSpritePalette_TradeScreenText = { + TradeScreenTextPalette, 4925 +}; + +const struct SpriteTemplate gSpriteTemplate_820C0EC = { + 200, + 4925, + &gOamData_820BFEC, + gSpriteAnimTable_820C024, + NULL, + gDummySpriteAffineAnimTable, + SpriteCallbackDummy +}; + +const struct OamData gOamData_820C104 = { + .shape = ST_OAM_H_RECTANGLE, + .size = 3, + .priority = 1 +}; + +const union AnimCmd gSpriteAnim_820C10C[] = { + ANIMCMD_FRAME(0, 5), + ANIMCMD_END +}; + +const union AnimCmd gSpriteAnim_820C114[] = { + ANIMCMD_FRAME(32, 5), + ANIMCMD_END +}; + +const union AnimCmd *const gSpriteAnimTable_820C11C[] = { + gSpriteAnim_820C10C, + gSpriteAnim_820C114 +}; + +const struct SpriteSheet gUnknown_0820C124 = { + gUnknown_08EA1DEC, 0x800, 300 +}; + +const struct SpritePalette gUnknown_0820C12C = { + gUnknown_08EA0328, 2345 +}; + +const struct SpriteTemplate gSpriteTemplate_820C134 = { + 300, + 2345, + &gOamData_820C104, + gSpriteAnimTable_820C11C, + NULL, + gDummySpriteAffineAnimTable, + SpriteCallbackDummy +}; + +const u8 *const gUnknown_0820C14C[] = { + TradeText_Cancel, + TradeText_ChoosePoke, + TradeText_Summary1, + TradeText_Trade1, + TradeText_CancelTradePrompt, + TradeText_PressBToExit +}; + +// This is used to determine the next mon to select when the D-Pad is +// pressed in a given direction. +// Note that the mons are laid out like this. +// 0-5 are the player's party and 6-11 are the trading partner's party. +// 12 is the cancel button. +// 0 1 6 7 +// 2 3 8 9 +// 4 5 10 11 +// 12 + +const u8 gTradeNextSelectedMonTable[][4][6] = { + { + { 4, 2, 12, 12, 0, 0}, + { 2, 4, 12, 12, 0, 0}, + { 7, 6, 1, 0, 0, 0}, + { 1, 6, 7, 0, 0, 0} + }, { + { 5, 3, 12, 12, 0, 0}, + { 3, 5, 12, 12, 0, 0}, + { 0, 7, 6, 1, 0, 0}, + { 6, 7, 0, 1, 0, 0} + }, { + { 0, 0, 0, 0, 0, 0}, + { 4, 0, 0, 0, 0, 0}, + { 9, 8, 7, 6, 0, 0}, + { 3, 1, 0, 0, 0, 0} + }, { + { 1, 1, 1, 1, 0, 0}, + { 5, 1, 1, 1, 0, 0}, + { 2, 9, 8, 7, 0, 0}, + { 8, 9, 6, 6, 0, 0} + }, { + { 2, 2, 2, 2, 0, 0}, + { 0, 0, 0, 0, 0, 0}, + {11, 10, 9, 8, 7, 6}, + { 5, 3, 1, 0, 0, 0} + }, { + { 3, 3, 3, 3, 0, 0}, + { 1, 1, 1, 1, 0, 0}, + { 4, 4, 4, 4, 0, 0}, + {10, 8, 6, 0, 0, 0} + }, { + {10, 8, 12, 0, 0, 0}, + { 8, 10, 12, 0, 0, 0}, + { 1, 0, 0, 0, 0, 0}, + { 7, 0, 1, 0, 0, 0} + }, { + {12, 0, 0, 0, 0, 0}, + { 9, 12, 0, 0, 0, 0}, + { 6, 0, 0, 0, 0, 0}, + { 0, 0, 0, 0, 0, 0} + }, { + { 6, 0, 0, 0, 0, 0}, + {10, 6, 0, 0, 0, 0}, + { 3, 2, 1, 0, 0, 0}, + { 9, 7, 0, 0, 0, 0} + }, { + { 7, 0, 0, 0, 0, 0}, + {11, 12, 0, 0, 0, 0}, + { 8, 0, 0, 0, 0, 0}, + { 2, 1, 0, 0, 0, 0} + }, { + { 8, 0, 0, 0, 0, 0}, + { 6, 0, 0, 0, 0, 0}, + { 5, 4, 3, 2, 1, 0}, + {11, 9, 7, 0, 0, 0} + }, { + { 9, 0, 0, 0, 0, 0}, + {12, 0, 0, 0, 0, 0}, + {10, 0, 0, 0, 0, 0}, + { 4, 2, 0, 0, 0, 0} + }, { + {11, 9, 7, 6, 0, 0}, + { 7, 6, 0, 0, 0, 0}, + {12, 0, 0, 0, 0, 0}, + {12, 0, 0, 0, 0, 0} + } +}; + +const u8 gTradeMonSpriteCoords[][2] = { + // Your party + {1, 5}, + {8, 5}, + {1, 10}, + {8, 10}, + {1, 15}, + {8, 15}, + + // Friend's party + {16, 5}, + {23, 5}, + {16, 10}, + {23, 10}, + {16, 15}, + {23, 15}, + + {23, 18} // CANCEL +}; + +const u8 gTradeLevelDisplayCoords[2][6][2] = { + { + // Your party + {5, 4}, + {12, 4}, + {5, 9}, + {12, 9}, + {5, 14}, + {12, 14}, + }, + { + // Friend's party + {20, 4}, + {27, 4}, + {20, 9}, + {27, 9}, + {20, 14}, + {27, 14} + } +}; + +const u8 gTradeMonBoxCoords[2][6][2] = { + { + // Your party + {1, 3}, + {8, 3}, + {1, 8}, + {8, 8}, + {1, 13}, + {8, 13}, + }, + { + // Friend's party + {16, 3}, + {23, 3}, + {16, 8}, + {23, 8}, + {16, 13}, + {23, 13} + } +}; + +const u8 gTradeUnknownSpriteCoords[][2][2] = { + { + { 59, 10}, + {179, 10}, + }, + { + { 59, 10}, + {179, 10} + } +}; + +const u8 *const gUnknown_0820C2F0[] = { + TradeText_LinkStandby, + TradeText_TradeCancelled, + TradeText_OnlyPoke, + TradeText_NonTradablePoke, + TradeText_WaitingForFriend, + TradeText_WantToTrade +}; + +const u8 gTradeMessageWindowRects[][4] = { + {8, 7, 22, 12}, + {8, 7, 22, 12}, + {6, 7, 24, 12}, + {6, 7, 24, 12}, + {8, 7, 22, 12}, + {7, 7, 23, 12} +}; + +const struct MenuAction2 gUnknown_0820C320[] = { + {TradeText_Summary2, sub_804A9F4}, + {TradeText_Trade2, sub_804AA00} +}; + +const u8 gUnknown_0820C330[][2] = { + { 0, 14}, + {15, 29} +}; + +const u8 gUnknown_0820C334[][2] = { + { 3, 5}, + { 3, 7}, + {18, 5}, + {18, 7} +}; + +const u8 gOtherText_Terminator[] = _(""); +const u8 gOtherText_MaleSymbol3[] = _("♂"); +const u8 gOtherText_FemaleSymbol3[] = _("♀"); +const u8 gOtherText_GenderlessSymbol[] = _("$"); + +u8 *const unref_data_820C344 = gTileBuffer; +const u8 unref_strings_820C348[][13] = { + _("かいめの そうしん"), + _("かいめの じゅしん"), + _("ポケモンアイコンセット"), + _("OBJテキストセット"), + _("セルセット"), + _("OBJテキストADD"), + _("システムメッセージADD"), + _("はいけいセット"), +}; + +const u8 gUnknown_0820C3B0[] = _("ヌケニン"); +const u8 unref_string_0820C3B5[] = _("こうかんせいりつ "); +const u8 unref_string_0820C3C3[] = _("だめだたらしいよ "); +const u8 gUnknown_0820C3D1[][2] = { + { 4, 3}, + {19, 3}, + { 0, 0} +}; + +const u16 gTradeBallPalette[] = INCBIN_U16("graphics/trade/ball.gbapal"); +const u32 gTradeBallTiles[] = INCBIN_U32("graphics/trade/ball.4bpp"); +const u16 gUnknown_0820C9F8[][16] = { + INCBIN_U16("graphics/trade/unknown.gbapal"), + INCBIN_U16("graphics/trade/gba.gbapal"), + INCBIN_U16("graphics/trade/shadow.gbapal"), + {}, + INCBIN_U16("graphics/trade/misc.gbapal") +}; + +const u32 gUnknown_0820CA98[] = INCBIN_U32("graphics/trade/gba.4bpp"); +const u32 gUnknown_0820CA98_2[] = INCBIN_U32("graphics/trade/shadow.4bpp"); +const u32 gUnknown_0820DD98[] = INCBIN_U32("graphics/trade/pokeball_symbol.8bpp"); +const u16 gUnknown_0820F798[] = INCBIN_U16("graphics/trade/shadow_map.bin"); +const u16 gUnknown_08210798[] = INCBIN_U16("graphics/trade/gba_map.bin"); +const u16 gUnknown_08211798[] = INCBIN_U16("graphics/trade/cable_closeup_map.bin"); +const u16 gUnknown_08211F98[] = INCBIN_U16("graphics/trade/pokeball_symbol_map.bin"); +const u16 unused_08212098[] = INCBIN_U16("graphics/unused/unknown/8212098.gbapal"); +const u16 gTradeCableEndPalette[] = INCBIN_U16("graphics/trade/cable_end.gbapal"); +const u16 unused_082120D8[] = INCBIN_U16("graphics/unused/unknown/82120D8.gbapal"); +const u16 nullpal_082120F8[16] = {}; +const u16 gTradeGlowPalette[] = INCBIN_U16("graphics/trade/glow.gbapal"); +const u32 gTradeGlow1Tiles[] = INCBIN_U32("graphics/trade/glow1.4bpp"); +const u32 gTradeGlow2Tiles[] = INCBIN_U32("graphics/trade/glow2.4bpp"); +const u32 gTradeCableEndTiles[] = INCBIN_U32("graphics/trade/cable_end.4bpp"); +const u32 gTradeGBAScreenTiles[] = INCBIN_U32("graphics/trade/gba_screen.4bpp"); +const u32 gUnknown_08213738[] = INCBIN_U32("graphics/trade/gba_affine.8bpp"); +const u16 gUnknown_08215778[] = INCBIN_U16("graphics/trade/gba_affine_map.bin"); + +const struct OamData gOamData_8215878 = { + .affineMode = 1, + .size = 1 +}; + +const union AnimCmd gSpriteAnim_8215880[] = { + ANIMCMD_FRAME( 0, 3), + ANIMCMD_FRAME( 4, 3), + ANIMCMD_FRAME( 8, 3), + ANIMCMD_FRAME(12, 3), + ANIMCMD_FRAME(16, 3), + ANIMCMD_FRAME(20, 3), + ANIMCMD_FRAME(24, 3), + ANIMCMD_FRAME(28, 3), + ANIMCMD_FRAME(32, 3), + ANIMCMD_FRAME(36, 3), + ANIMCMD_FRAME(40, 3), + ANIMCMD_FRAME(44, 3), + ANIMCMD_LOOP(1), + ANIMCMD_FRAME( 0, 3), + ANIMCMD_END +}; + +const union AnimCmd gSpriteAnim_82158BC[] = { + ANIMCMD_FRAME( 0, 3), + ANIMCMD_FRAME( 4, 3), + ANIMCMD_FRAME( 8, 3), + ANIMCMD_FRAME(12, 3), + ANIMCMD_FRAME(16, 3), + ANIMCMD_FRAME(20, 3), + ANIMCMD_FRAME(24, 3), + ANIMCMD_FRAME(28, 3), + ANIMCMD_FRAME(32, 3), + ANIMCMD_FRAME(36, 3), + ANIMCMD_FRAME(40, 3), + ANIMCMD_FRAME(44, 3), + ANIMCMD_LOOP(2), + ANIMCMD_FRAME( 0, 3), + ANIMCMD_END +}; + +const union AnimCmd *const gSpriteAnimTable_82158F8[] = { + gSpriteAnim_8215880, + gSpriteAnim_82158BC +}; + +const union AffineAnimCmd gSpriteAffineAnim_8215900[] = { + AFFINEANIMCMD_FRAME(0, 0, 0, 1), + AFFINEANIMCMD_END +}; + +const union AffineAnimCmd gSpriteAffineAnim_8215910[] = { + AFFINEANIMCMD_FRAME(-8, 0, 0, 20), + AFFINEANIMCMD_END +}; + +const union AffineAnimCmd gSpriteAffineAnim_8215920[] = { + AFFINEANIMCMD_FRAME(0x60, 0x100, 0, 0), + AFFINEANIMCMD_FRAME( 0, 0, 0, 5), + AFFINEANIMCMD_FRAME( 8, 0, 0, 20), + AFFINEANIMCMD_END +}; + +const union AffineAnimCmd *const gSpriteAffineAnimTable_8215940[] = { + gSpriteAffineAnim_8215900, + gSpriteAffineAnim_8215910, + gSpriteAffineAnim_8215920 +}; + +const struct SpriteSheet gUnknown_0821594C = { + (const u8 *)gTradeBallTiles, 0x600, 5557 +}; + +const struct SpritePalette gUnknown_08215954 = { + gTradeBallPalette, 5558 +}; + +const struct SpriteTemplate gSpriteTemplate_821595C = { + 5557, + 5558, + &gOamData_8215878, + gSpriteAnimTable_82158F8, + NULL, + gSpriteAffineAnimTable_8215940, + sub_804D6BC +}; + +const struct OamData gOamData_8215974 = { + .affineMode = 1, + .objMode = 1, + .size = 2, + .priority = 1 +}; + +const union AnimCmd gSpriteAnim_821597C[] = { + ANIMCMD_FRAME(0, 5, .hFlip = TRUE, .vFlip = TRUE), + ANIMCMD_END +}; + +const union AnimCmd *const gSpriteAnimTable_8215984[] = { + gSpriteAnim_821597C +}; + +const union AffineAnimCmd gSpriteAffineAnim_8215988[] = { + AFFINEANIMCMD_FRAME(-10, -10, 0, 5), + AFFINEANIMCMD_FRAME(10, 10, 0, 5), + AFFINEANIMCMD_JUMP(0) +}; + +const union AffineAnimCmd *const gSpriteAffineAnimTable_82159A0[] = { + gSpriteAffineAnim_8215988 +}; + +const struct SpriteSheet gUnknown_082159A4 = { + (const u8 *)gTradeGlow1Tiles, 0x200, 5550 +}; + +const struct SpritePalette gUnknown_082159AC = { + gTradeGlowPalette, 5551 +}; + +const struct SpritePalette gUnknown_082159B4 = { + gTradeCableEndPalette, 5555 +}; + +const struct SpriteTemplate gSpriteTemplate_82159BC = { + 5550, + 5551, + &gOamData_8215974, + gSpriteAnimTable_8215984, + NULL, + gSpriteAffineAnimTable_82159A0, + sub_804B058 +}; + +const struct OamData gOamData_82159D4 = { + .shape = ST_OAM_V_RECTANGLE, + .size = 2, + .priority = 1 +}; + +const union AnimCmd gSpriteAnim_82159DC[] = { + ANIMCMD_FRAME(0, 5, .vFlip = TRUE, .hFlip = TRUE), + ANIMCMD_END +}; + +const union AnimCmd gSpriteAnim_82159E4[] = { + ANIMCMD_FRAME(8, 5, .vFlip = TRUE, .hFlip = TRUE), + ANIMCMD_END +}; + +const union AnimCmd *const gSpriteAnimTable_82159EC[] = { + gSpriteAnim_82159DC, + gSpriteAnim_82159E4 +}; + +const struct SpriteSheet gUnknown_082159F4 = { + (const u8 *)gTradeGlow2Tiles, 0x300, 5552 +}; + +const struct SpriteTemplate gSpriteTemplate_82159FC = { + 5552, + 5551, + &gOamData_82159D4, + gSpriteAnimTable_82159EC, + NULL, + gDummySpriteAffineAnimTable, + sub_804B07C +}; + +const struct OamData gOamData_8215A14 = { + .shape = ST_OAM_V_RECTANGLE, + .size = 2, + .priority = 1 +}; + +const union AnimCmd gSpriteAnim_8215A1C[] = { + ANIMCMD_FRAME(0, 10), + ANIMCMD_END +}; + +const union AnimCmd *const gSpriteAnimTable_8215A24[] = { + gSpriteAnim_8215A1C +}; + +const struct SpriteSheet gUnknown_08215A28 = { + (const u8 *)gTradeCableEndTiles, 0x100, 5554 +}; + +const struct SpriteTemplate gSpriteTemplate_8215A30 = { + 5554, + 5555, + &gOamData_8215A14, + gSpriteAnimTable_8215A24, + NULL, + gDummySpriteAffineAnimTable, + sub_804B0BC +}; + +const struct OamData gOamData_8215A48 = { + .shape = ST_OAM_H_RECTANGLE, + .size = 3, + .priority = 1 +}; + +const union AnimCmd gSpriteAnim_8215A50[] = { + ANIMCMD_FRAME( 0, 2, .vFlip = TRUE, .hFlip = TRUE), + ANIMCMD_FRAME(32, 2, .vFlip = TRUE, .hFlip = TRUE), + ANIMCMD_FRAME(64, 2, .vFlip = TRUE, .hFlip = TRUE), + ANIMCMD_FRAME(96, 2, .vFlip = TRUE, .hFlip = TRUE), + ANIMCMD_FRAME(64, 2, .vFlip = TRUE, .hFlip = TRUE), + ANIMCMD_FRAME(32, 2, .vFlip = TRUE, .hFlip = TRUE), + ANIMCMD_FRAME( 0, 2, .vFlip = TRUE, .hFlip = TRUE), + ANIMCMD_LOOP(8), + ANIMCMD_END +}; + +const union AnimCmd *const gSpriteAnimTable_8215A74[] = { + gSpriteAnim_8215A50 +}; + +const struct SpriteSheet gUnknown_08215A78 = { + (const u8 *)gTradeGBAScreenTiles, 0x1000, 5556 +}; + +const struct SpriteTemplate gSpriteTemplate_8215A80 = { + 5556, + 5555, + &gOamData_8215A48, + gSpriteAnimTable_8215A74, + NULL, + gDummySpriteAffineAnimTable, + sub_804B104 +}; + +const u16 gTradeGlow2PaletteAnimTable[] = { + RGB(18, 24, 31), + RGB(18, 24, 31), + RGB(18, 24, 31), + RGB(31, 31, 31), + RGB(31, 31, 31), + RGB(31, 31, 31), + RGB(18, 24, 31), + RGB(18, 24, 31), + RGB(18, 24, 31), + RGB(31, 31, 31), + RGB(31, 31, 31), + RGB(31, 31, 31), +}; + +const union AffineAnimCmd gSpriteAffineAnim_8215AB0[] = { + AFFINEANIMCMD_FRAME(-0x100, 0x100, 0, 0), + AFFINEANIMCMD_JUMP(0) +}; + +const union AffineAnimCmd *const gSpriteAffineAnimTable_8215AC0[] = { + gSpriteAffineAnim_8215AB0 +}; + +const struct InGameTrade gIngameTrades[] = { +#if ENGLISH + { + _("MAKIT"), SPECIES_MAKUHITA, + 5, 5, 4, 4, 4, 4, + TRUE, 49562, + 5, 5, 5, 5, 30, + 0x9C40, + ITEM_X_ATTACK, -1, + _("ELYSSA"), MALE, 10, + SPECIES_SLAKOTH + }, { + _("SKITIT"), SPECIES_SKITTY, + 5, 4, 4, 5, 4, 4, + FALSE, 2259, + 5, 5, 30, 5, 5, + 0x498A2E17, + ITEM_GLITTER_MAIL, 0, + _("DARRELL"), FEMALE, 10, + SPECIES_PIKACHU + }, { + _("COROSO"), + SPECIES_CORSOLA, + 4, 4, 5, 4, 4, 5, + TRUE, 50183, + 5, 30, 5, 5, 5, + 0x4C970B7F, + ITEM_TROPIC_MAIL, 1, + _("LANE"), FEMALE, 10, + SPECIES_BELLOSSOM + } +#elif GERMAN + { + _("MAKIT"), SPECIES_MAKUHITA, + 5, 5, 4, 4, 4, 4, + TRUE, 49562, + 5, 5, 5, 5, 30, + 0x9C40, + ITEM_X_ATTACK, -1, + _("MAIK"), MALE, 10, + SPECIES_SLAKOTH + }, { + _("CONEC"), SPECIES_SKITTY, + 5, 4, 4, 5, 4, 4, + FALSE, 2259, + 5, 5, 30, 5, 5, + 0x498A2E17, + ITEM_GLITTER_MAIL, 0, + _("MADINA"), FEMALE, 10, + SPECIES_PIKACHU + }, { + _("CORASO"), + SPECIES_CORSOLA, + 4, 4, 5, 4, 4, 5, + TRUE, 50183, + 5, 30, 5, 5, 5, + 0x4C970B7F, + ITEM_TROPIC_MAIL, 1, + _("LIANA"), FEMALE, 10, + SPECIES_BELLOSSOM + } +#endif +}; + +const u16 gIngameTradeMail[][10] = { +#if ENGLISH + { + EC_POKEMON(PIKACHU), + EC_WORD_THANK_YOU, + EC_WORD_EXCL, + EC_WORD_MY, + EC_POKEMON(SKITTY), + EC_WORD_EATS, + EC_WORD_A_LOT, + EC_WORD_NOW, + EC_WORD_EXCL, + 0 + }, { + EC_WORD_I, + EC_WORD_WANT, + EC_WORD_TO, + EC_WORD_SEE, + EC_WORD_A, + EC_MOVE2(PETAL_DANCE), + EC_WORD_IT_S, + EC_WORD_SO, + EC_WORD_PRETTY, + 0 + } +#elif GERMAN + { + EC_POKEMON(PIKACHU), + EC_WORD_THANK_YOU, + EC_WORD_EXCL, + EC_WORD_MY, + EC_POKEMON(SKITTY), + EC_WORD_EATS, + 0xFFFF, + EC_WORD_A_LOT, + EC_WORD_EXCL, + 0 + }, { + EC_WORD_I, + EC_WORD_WANT, + EC_WORD_OF, + EC_MOVE2(PETAL_DANCE), + EC_WORD_WORKS, + EC_WORD_THE, + EC_WORD_IS, + EC_WORD_SO, + EC_WORD_PRETTY, + 0 + } +#endif +}; + +const s8 gTradeBallVerticalVelocityTable[] = { + 0, 0, 1, 0, + 1, 0, 1, 1, + 1, 1, 2, 2, + 2, 2, 3, 3, + 3, 3, 4, 4, + 4, 4, -4, -4, + -4, -3, -3, -3, + -3, -2, -2, -2, + -2, -1, -1, -1, + -1, 0, -1, 0, + -1, 0, 0, 0, + 0, 0, 1, 0, + 1, 0, 1, 1, + 1, 1, 2, 2, + 2, 2, 3, 3, + 3, 3, 4, 4, + 4, 4, -4, -3, + -3, -2, -2, -1, + -1, -1, 0, -1, + 0, 0, 0, 0, + 0, 0, 1, 0, + 1, 1, 1, 2, + 2, 3, 3, 4, + -4, -3, -2, -1, + -1, -1, 0, 0, + 0, 0, 1, 0, + 1, 1, 2, 3 +}; + +// .text + +void sub_8047CD8(void) +{ + SetMainCallback2(sub_8047EC0); +} + +static void sub_8047CE8(void) +{ + u8 mpId; + sub_804AFB8(&gWindowConfig_81E725C, gUnknown_020296CC[0], gSaveBlock2.playerName, 0xC); + mpId = GetMultiplayerId(); + sub_804AFB8(&gWindowConfig_81E725C, gUnknown_020296CC[3], gLinkPlayers[mpId ^ 1].name, 0xC); + sub_804AFB8(&gWindowConfig_81E725C, gUnknown_020296CC[6], gUnknown_0820C14C[0], 0x8); + sub_804ACD8(gUnknown_0820C14C[1], gUnknown_020296CC[8], 0x14); + nullsub_5(3, 0); +} + +static void sub_8047D58(void) +{ + struct SpriteTemplate spriteTemplate; + int i; + u8 mpId; + u16 slen; + int language; + + slen = StringLength(gSaveBlock2.playerName); + language = slen <= 5 ? 0 : 1; + for (i = 0; i < 3; i ++) + { + spriteTemplate = gSpriteTemplate_820C0EC; + spriteTemplate.tileTag += i; + CreateSprite(&spriteTemplate, gTradeUnknownSpriteCoords[language][0][0] + 32 * i, gTradeUnknownSpriteCoords[language][0][1], 1); + } + + mpId = GetMultiplayerId(); + slen = StringLength(gLinkPlayers[mpId ^ 1].name); + language = slen <= 5 ? 0 : 1; + for (i = 0; i < 3; i ++) + { + spriteTemplate = gSpriteTemplate_820C0EC; + spriteTemplate.tileTag += i + 3; + CreateSprite(&spriteTemplate, gTradeUnknownSpriteCoords[language][1][0] + 32 * i, gTradeUnknownSpriteCoords[language][1][1], 1); + } + nullsub_5(5, 0); +} + +static void sub_8047E44(void) +{ + struct SpriteTemplate spriteTemplate; + int i; + + for (i = 0; i < 2; i ++) + { + spriteTemplate = gSpriteTemplate_820C0EC; + spriteTemplate.tileTag += i + 6; + CreateSprite(&spriteTemplate, 0xd6 + 32 * i, 0x98, 1); + } + + for (i = 0; i < 5; i ++) + { + spriteTemplate = gSpriteTemplate_820C0EC; + spriteTemplate.tileTag += i + 8; + CreateSprite(&spriteTemplate, 0x18 + 32 * i, 0x96, 1); + } +} + +static void sub_8047EC0(void) +{ + int i; + + switch (gMain.state) + { + case 0: + gUnknown_03004824 = &ewram_2010000.unk_07000; + sub_804AA88(); + ResetSpriteData(); + FreeAllSpritePalettes(); + ResetTasks(); + sub_804A964(&gUnknown_03004824->unk_00c8, (void *)BG_SCREEN_ADDR(5)); + SetVBlankCallback(sub_80489F4); + InitMenuWindow(&gWindowConfig_81E6CE4); + SetUpWindowConfig(&gWindowConfig_81E6F84); + InitWindowFromConfig(&gUnknown_03004824->window, &gWindowConfig_81E6F84); + gUnknown_03004824->unk_007a = SetTextWindowBaseTileNum(20); + LoadTextWindowGraphics(&gUnknown_03004824->window); + MenuZeroFillScreen(); + sub_809D51C(); + gUnknown_03004824->unk_0075 = 0; + gUnknown_03004824->unk_007b = 0; + gUnknown_03004824->unk_007c = 0; + gUnknown_03004824->unk_0080[0] = 0; + gUnknown_03004824->unk_0080[1] = 0; + gUnknown_03004824->unk_0086 = 0; + gUnknown_03004824->unk_0087 = 0; + gUnknown_03004824->unk_00b4 = 0; + gUnknown_03000508[0] = 0; + gMain.state ++; + sub_804AA0C(0); + CpuFill16(0, ewram_2010000.tileBuffers, sizeof(ewram_2010000.tileBuffers)); + for (i = 0; i < 13; i ++) + gUnknown_020296CC[i] = ewram_2010000.tileBuffers[i]; + break; + case 1: + gLinkType = 0x1122; + OpenLink(); + for (i = 0; i < PARTY_SIZE; i ++) + CreateMon(&gEnemyParty[i], 0, 0, 0x20, FALSE, 0, FALSE, 0); + gMain.state ++; + gUnknown_03004824->unk_00b4 = 0; + CreateTask(sub_8083C50, 1); + break; + case 2: + gUnknown_03004824->unk_00b4 ++; + if (gUnknown_03004824->unk_00b4 > 11) + { + gUnknown_03004824->unk_00b4 = 0; + gMain.state ++; + } + break; + case 3: + if (GetLinkPlayerCount_2() >= sub_800820C()) + { + if (IsLinkMaster()) + { + if (++gUnknown_03004824->unk_00b4 > 30) + { + sub_8007F4C(); + gMain.state ++; + } + } + else + gMain.state ++; + } + break; + case 4: + if (gReceivedRemoteLinkPlayers == 1 && IsLinkPlayerDataExchangeComplete() == TRUE) + { + CalculatePlayerPartyCount(); + gMain.state ++; + } + break; + case 5: + if (sub_8048D44()) + { + sub_804AF84(); + gMain.state ++; + } + break; + case 6: + CalculateEnemyPartyCount(); + FillWindowRect_DefaultPalette(&gUnknown_03004824->window, 0, 0, 0, 29, 19); + REG_DISPCNT = 0; + gUnknown_03004824->partyCounts[0] = gPlayerPartyCount; + gUnknown_03004824->partyCounts[1] = gEnemyPartyCount; + for (i = 0; i < gUnknown_03004824->partyCounts[0]; i ++) + gUnknown_03004824->partyIcons[0][i] = CreateMonIcon(GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2), sub_809D62C, gTradeMonSpriteCoords[i][0] * 8 + 14, gTradeMonSpriteCoords[i][1] * 8 - 12, TRUE, GetMonData(&gPlayerParty[i], MON_DATA_PERSONALITY)); + for (i = 0; i < gUnknown_03004824->partyCounts[1]; i ++) + gUnknown_03004824->partyIcons[1][i] = CreateMonIcon(GetMonData(&gEnemyParty[i], MON_DATA_SPECIES2, NULL), sub_809D62C, gTradeMonSpriteCoords[6 + i][0] * 8 + 14, gTradeMonSpriteCoords[6 + i][1] * 8 - 12, TRUE, GetMonData(&gEnemyParty[i], MON_DATA_PERSONALITY)); + nullsub_5(2, 0); + gMain.state ++; + break; + case 7: + LoadHeldItemIconGraphics(); + CreateHeldItemIcons(&gUnknown_03004824->partyCounts[0], gUnknown_03004824->partyIcons[0], 0); + gMain.state ++; + break; + case 8: + CreateHeldItemIcons(&gUnknown_03004824->partyCounts[0], gUnknown_03004824->partyIcons[0], 1); + gMain.state ++; + break; + case 9: + sub_8047CE8(); + gMain.state ++; + gUnknown_03004824->unk_00b4 = 0; + break; + case 10: + nullsub_5(4, 0); + if (sub_804ABF8()) + gMain.state ++; + break; + case 11: + sub_8047D58(); + gMain.state ++; + break; + case 12: + sub_8047E44(); + gUnknown_03004824->tradeMenuCursorSpriteIdx = CreateSprite(&gSpriteTemplate_820C134, gTradeMonSpriteCoords[0][0] * 8 + 32, gTradeMonSpriteCoords[0][1] * 8, 2); + gUnknown_03004824->tradeMenuCursorPosition = 0; + gMain.state ++; + nullsub_5(6, 0); + break; + case 13: + sub_804ACF4(0); + sub_804A41C(0); + gUnknown_03004824->unk_0000 = 0; + gUnknown_03004824->unk_0001 = 0; + sub_8048C70(); + gMain.state ++; + nullsub_5(7, 0); + PlayBGM(BGM_P_SCHOOL); + break; + case 14: + sub_804ACF4(1); + sub_804A41C(1); + gMain.state ++; + // fallthrough + case 15: + sub_8048B0C(0); + gMain.state ++; + break; + case 16: + sub_8048B0C(1); + gMain.state ++; + break; + case 17: + BeginNormalPaletteFade(-1, 0, 16, 0, 0); + gMain.state ++; + break; + case 18: + REG_DISPCNT = DISPCNT_OBJ_1D_MAP | DISPCNT_BG_ALL_ON | DISPCNT_OBJ_ON; + gMain.state ++; + break; + case 19: + sub_804AE3C(0); + gMain.state ++; + break; + case 20: + sub_804AE3C(1); + sub_804AF10(); + gMain.state ++; + break; + case 21: + if (!gPaletteFade.active) + { + gMain.callback1 = sub_80494D8; + SetMainCallback2(sub_8048AB4); + gUnknown_03000508[0] = 0; + } + break; + } + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +static void sub_80484F4(void) +{ + int i; + struct UnkStructF *unkStructF; + + switch (gMain.state) + { + case 0: + gUnknown_03004824 = &ewram_2010000.unk_07000; + ResetSpriteData(); + FreeAllSpritePalettes(); + ResetTasks(); + sub_804A964(&gUnknown_03004824->unk_00c8, (void *)BG_SCREEN_ADDR(5)); + SetVBlankCallback(sub_80489F4); + InitMenuWindow(&gWindowConfig_81E6CE4); + SetUpWindowConfig(&gWindowConfig_81E6F84); + InitWindowFromConfig(&gUnknown_03004824->window, &gWindowConfig_81E6F84); + gUnknown_03004824->unk_007a = SetTextWindowBaseTileNum(20); + LoadTextWindowGraphics(&gUnknown_03004824->window); + MenuZeroFillScreen(); + sub_809D51C(); + gUnknown_03004824->unk_0075 = 0; + gUnknown_03004824->unk_007b = 0; + gUnknown_03004824->unk_007c = 0; + gUnknown_03004824->unk_0080[0] = 0; + gUnknown_03004824->unk_0080[1] = 0; + gUnknown_03004824->unk_0086 = 0; + gUnknown_03004824->unk_0087 = 0; + gUnknown_03004824->unk_00b4 = 0; + gUnknown_03000508[0] = 0; + gMain.state ++; + for (i = 0; i < 13; i ++) + gUnknown_020296CC[i] = ewram_2010000.tileBuffers[i]; + break; + case 1: + gMain.state ++; + gUnknown_03004824->unk_00b4 = 0; + break; + case 2: + gMain.state ++; + break; + case 3: + gMain.state ++; + break; + case 4: + CalculatePlayerPartyCount(); + gMain.state ++; + break; + case 5: + gMain.state ++; + break; + case 6: + CalculateEnemyPartyCount(); + REG_DISPCNT = 0; + gUnknown_03004824->partyCounts[0] = gPlayerPartyCount; + gUnknown_03004824->partyCounts[1] = gEnemyPartyCount; + sub_804A41C(0); + sub_804A41C(1); + for (i = 0; i < gUnknown_03004824->partyCounts[0]; i ++) + gUnknown_03004824->partyIcons[0][i] = CreateMonIcon(GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2, NULL), sub_809D62C, gTradeMonSpriteCoords[i][0] * 8 + 14, gTradeMonSpriteCoords[i][1] * 8 - 12, TRUE, GetMonData(&gPlayerParty[i], MON_DATA_PERSONALITY)); + for (i = 0; i < gUnknown_03004824->partyCounts[1]; i ++) + gUnknown_03004824->partyIcons[1][i] = CreateMonIcon(GetMonData(&gEnemyParty[i], MON_DATA_SPECIES2, NULL), sub_809D62C, gTradeMonSpriteCoords[6 + i][0] * 8 + 14, gTradeMonSpriteCoords[6 + i][1] * 8 - 12, TRUE, GetMonData(&gEnemyParty[i], MON_DATA_PERSONALITY)); + nullsub_5(2, 0); + gMain.state ++; + break; + case 7: + LoadHeldItemIconGraphics(); + CreateHeldItemIcons(&gUnknown_03004824->partyCounts[0], gUnknown_03004824->partyIcons[0], 0); + gMain.state ++; + break; + case 8: + CreateHeldItemIcons(&gUnknown_03004824->partyCounts[0], gUnknown_03004824->partyIcons[0], 1); + gMain.state ++; + break; + case 9: + sub_8047CE8(); + gMain.state ++; + gUnknown_03004824->unk_00b4 = 0; + break; + case 10: + nullsub_5(4, 0); + if (sub_804ABF8()) + { + gMain.state ++; + } + break; + case 11: + sub_8047D58(); + gMain.state ++; + break; + case 12: + sub_8047E44(); + unkStructF = &ewram_2010000.unk_08000; + if (gUnknown_03004824->tradeMenuCursorPosition < 6) + gUnknown_03004824->tradeMenuCursorPosition = unkStructF->unk_0009; + else + gUnknown_03004824->tradeMenuCursorPosition = unkStructF->unk_0009 + 6; + gUnknown_03004824->tradeMenuCursorSpriteIdx = CreateSprite(&gSpriteTemplate_820C134, gTradeMonSpriteCoords[gUnknown_03004824->tradeMenuCursorPosition][0] * 8 + 32, gTradeMonSpriteCoords[gUnknown_03004824->tradeMenuCursorPosition][1] * 8, 2); + gMain.state = 15; + nullsub_5(6, 0); + break; + case 15: + sub_8048B0C(0); + gMain.state ++; + break; + case 16: + sub_8048B0C(1); + gUnknown_03004824->unk_0000 = 0; + gUnknown_03004824->unk_0001 = 0; + sub_8048C70(); + nullsub_5(7, 0); + gMain.state ++; + break; + case 17: + BeginNormalPaletteFade(-1, 0, 16, 0, 0); + gMain.state ++; + break; + case 18: + REG_DISPCNT = DISPCNT_OBJ_1D_MAP | DISPCNT_BG_ALL_ON | DISPCNT_OBJ_ON; + gMain.state ++; + break; + case 19: + gMain.state ++; + break; + case 20: + sub_804AF10(); + gMain.state ++; + break; + case 21: + if (!gPaletteFade.active) + { + SetMainCallback2(sub_8048AB4); + gUnknown_03000508[0] = 0; + } + break; + } + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +static void sub_80489F4(void) +{ + sub_804A940(&gUnknown_03004824->unk_00c8); + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); +} + +/*static*/ void sub_8048A14(void) +{ + if (++gUnknown_03004824->unk_00b4 >= 16) + { + BeginNormalPaletteFade(-1, 0, 0, 16, 0); + gUnknown_03004824->unk_007b = 10; + } +} + +/*static*/ void sub_8048A50(void) +{ + if (!gPaletteFade.active) + { + gUnknown_020297D8[0] = gUnknown_03004824->tradeMenuCursorPosition; + gUnknown_020297D8[1] = gUnknown_03004824->unk_008a; + sub_800832C(); + gUnknown_03004824->unk_007b = 13; + } +} + +/*static*/ void sub_8048A90(void) +{ + if (!gReceivedRemoteLinkPlayers) + { + gMain.callback1 = NULL; + SetMainCallback2(sub_804B41C); + } +} + +static void sub_8048AB4(void) +{ + sub_8049DE0(); + sub_804AB30(); + sub_8049ED4(0); + sub_8049ED4(1); + REG_BG2HOFS = gUnknown_03004824->unk_0000++; + REG_BG3HOFS = gUnknown_03004824->unk_0001--; + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +#ifdef NONMATCHING +// Only minor register permutations +#pragma push_macro("BLOCKSIZE") +#define BLOCKSIZE 0x800 +static void sub_8048B0C(u8 a0) +{ + int i; + u16 *dest; + const u16 *src; + u32 size; + switch (a0) + { + case 0: + for (i = 0; i < 48; i ++) + { + gPlttBufferUnfaded[i] = *(gUnknown_08EA02C8 + i); + gPlttBufferFaded[i] = *(gUnknown_08EA02C8 + i); + } + src = gUnknown_08EA0348; + dest = (u16 *)BG_VRAM; + size = 0x1280; + while (1) + { + DmaCopy16(3, src, dest, BLOCKSIZE * sizeof(u16)); + src += BLOCKSIZE; + dest += BLOCKSIZE; + size -= BLOCKSIZE * sizeof(u16); + if (size <= BLOCKSIZE * sizeof(u16)) + { + DmaCopy16(3, src, dest, size); + break; + } + } + for (i = 0; i < 0x400; i ++) + gUnknown_03004824->unk_00c8.unk_12[i] = gUnknown_08EA15C8[i]; + dest = (u16 *)BG_SCREEN_ADDR(6); + DmaCopy16(3, gTradeStripesBG2Tilemap, dest, 0x800); + break; + case 1: + src = gTradeStripesBG3Tilemap; + dest = (u16 *)BG_SCREEN_ADDR(7); + DmaCopy16(3, src, dest, 0x800); + sub_804A6DC(0); + sub_804A6DC(1); + sub_804A938(&gUnknown_03004824->unk_00c8); + REG_BG0CNT &= ~0x03; // BGCNT_PRIORITY(0) + REG_BG1CNT = BGCNT_PRIORITY(1) | BGCNT_SCREENBASE(5); + REG_BG2CNT = BGCNT_PRIORITY(2) | BGCNT_SCREENBASE(6); + REG_BG3CNT = BGCNT_PRIORITY(3) | BGCNT_SCREENBASE(7); + REG_BG0HOFS = 0; + REG_BG1HOFS = 0; + REG_BG2HOFS = 0; + REG_BG3HOFS = 0; + REG_BG0VOFS = 0; + REG_BG1VOFS = 0; + REG_BG2VOFS = 0; + REG_BG3VOFS = 0; + break; + } +} +#pragma pop_macro("BLOCKSIZE") +#else +asm(".include \"constants/gba_constants.inc\""); +__attribute__((naked)) +static void sub_8048B0C(u8 a0) +{ + asm_unified("\tpush {r4-r7,lr}\n" + "\tlsls r0, 24\n" + "\tlsrs r0, 24\n" + "\tcmp r0, 0\n" + "\tbeq _08048B1C\n" + "\tcmp r0, 0x1\n" + "\tbeq _08048BD0\n" + "\tb _08048C3A\n" + "_08048B1C:\n" + "\tldr r5, _08048BA0 @ =gUnknown_08EA0348\n" + "\tldr r0, _08048BA4 @ =gTradeStripesBG2Tilemap\n" + "\tmov r12, r0\n" + "\tldr r1, _08048BA8 @ =gUnknown_08EA02C8\n" + "\tldr r4, _08048BAC @ =gPlttBufferFaded\n" + "\tldr r3, _08048BB0 @ =gPlttBufferUnfaded\n" + "\tmovs r2, 0x2F\n" + "_08048B2A:\n" + "\tldrh r0, [r1]\n" + "\tstrh r0, [r3]\n" + "\tldrh r0, [r1]\n" + "\tstrh r0, [r4]\n" + "\tadds r1, 0x2\n" + "\tadds r4, 0x2\n" + "\tadds r3, 0x2\n" + "\tsubs r2, 0x1\n" + "\tcmp r2, 0\n" + "\tbge _08048B2A\n" + "\tadds r3, r5, 0\n" + "\tmovs r4, 0xC0\n" + "\tlsls r4, 19\n" + "\tmovs r5, 0x94\n" + "\tlsls r5, 5\n" + "\tldr r1, _08048BB4 @ =0x040000d4\n" + "\tldr r6, _08048BB8 @ =0x80000800\n" + "\tmovs r2, 0x80\n" + "\tlsls r2, 5\n" + "\tmovs r7, 0x80\n" + "\tlsls r7, 24\n" + "_08048B54:\n" + "\tstr r3, [r1]\n" + "\tstr r4, [r1, 0x4]\n" + "\tstr r6, [r1, 0x8]\n" + "\tldr r0, [r1, 0x8]\n" + "\tadds r3, r2\n" + "\tadds r4, r2\n" + "\tsubs r5, r2\n" + "\tcmp r5, r2\n" + "\tbhi _08048B54\n" + "\tstr r3, [r1]\n" + "\tstr r4, [r1, 0x4]\n" + "\tlsrs r0, r5, 1\n" + "\torrs r0, r7\n" + "\tstr r0, [r1, 0x8]\n" + "\tldr r0, [r1, 0x8]\n" + "\tmovs r2, 0\n" + "\tldr r5, _08048BBC @ =0x000003ff\n" + "\tldr r4, _08048BC0 @ =gUnknown_03004824\n" + "\tldr r3, _08048BC4 @ =gUnknown_08EA15C8\n" + "_08048B7A:\n" + "\tldr r0, [r4]\n" + "\tlsls r1, r2, 1\n" + "\tadds r0, 0xDA\n" + "\tadds r0, r1\n" + "\tldrh r1, [r3]\n" + "\tstrh r1, [r0]\n" + "\tadds r3, 0x2\n" + "\tadds r2, 0x1\n" + "\tcmp r2, r5\n" + "\tble _08048B7A\n" + "\tldr r1, _08048BC8 @ =0x06003000\n" + "\tldr r0, _08048BB4 @ =0x040000d4\n" + "\tmov r2, r12\n" + "\tstr r2, [r0]\n" + "\tstr r1, [r0, 0x4]\n" + "\tldr r1, _08048BCC @ =0x80000400\n" + "\tstr r1, [r0, 0x8]\n" + "\tldr r0, [r0, 0x8]\n" + "\tb _08048C3A\n" + "\t.align 2, 0\n" + "_08048BA0: .4byte gUnknown_08EA0348\n" + "_08048BA4: .4byte gTradeStripesBG2Tilemap\n" + "_08048BA8: .4byte gUnknown_08EA02C8\n" + "_08048BAC: .4byte gPlttBufferFaded\n" + "_08048BB0: .4byte gPlttBufferUnfaded\n" + "_08048BB4: .4byte 0x040000d4\n" + "_08048BB8: .4byte 0x80000800\n" + "_08048BBC: .4byte 0x000003ff\n" + "_08048BC0: .4byte gUnknown_03004824\n" + "_08048BC4: .4byte gUnknown_08EA15C8\n" + "_08048BC8: .4byte 0x06003000\n" + "_08048BCC: .4byte 0x80000400\n" + "_08048BD0:\n" + "\tldr r1, _08048C40 @ =gTradeStripesBG3Tilemap\n" + "\tldr r2, _08048C44 @ =0x06003800\n" + "\tldr r0, _08048C48 @ =0x040000d4\n" + "\tstr r1, [r0]\n" + "\tstr r2, [r0, 0x4]\n" + "\tldr r1, _08048C4C @ =0x80000400\n" + "\tstr r1, [r0, 0x8]\n" + "\tldr r0, [r0, 0x8]\n" + "\tmovs r0, 0\n" + "\tbl sub_804A6DC\n" + "\tmovs r0, 0x1\n" + "\tbl sub_804A6DC\n" + "\tldr r0, _08048C50 @ =gUnknown_03004824\n" + "\tldr r0, [r0]\n" + "\tadds r0, 0xC8\n" + "\tbl sub_804A938\n" + "\tldr r2, _08048C54 @ =REG_BG0CNT\n" + "\tldrh r1, [r2]\n" + "\tldr r0, _08048C58 @ =0x0000fffc\n" + "\tands r0, r1\n" + "\tstrh r0, [r2]\n" + "\tldr r1, _08048C5C @ =REG_BG1CNT\n" + "\tldr r2, _08048C60 @ =0x00000501\n" + "\tadds r0, r2, 0\n" + "\tstrh r0, [r1]\n" + "\tadds r1, 0x2\n" + "\tldr r2, _08048C64 @ =0x00000602\n" + "\tadds r0, r2, 0\n" + "\tstrh r0, [r1]\n" + "\tadds r1, 0x2\n" + "\tldr r2, _08048C68 @ =0x00000703\n" + "\tadds r0, r2, 0\n" + "\tstrh r0, [r1]\n" + "\tldr r0, _08048C6C @ =REG_BG0HOFS\n" + "\tmovs r1, 0\n" + "\tstrh r1, [r0]\n" + "\tadds r0, 0x4\n" + "\tstrh r1, [r0]\n" + "\tadds r0, 0x4\n" + "\tstrh r1, [r0]\n" + "\tadds r0, 0x4\n" + "\tstrh r1, [r0]\n" + "\tsubs r0, 0xA\n" + "\tstrh r1, [r0]\n" + "\tadds r0, 0x4\n" + "\tstrh r1, [r0]\n" + "\tadds r0, 0x4\n" + "\tstrh r1, [r0]\n" + "\tadds r0, 0x4\n" + "\tstrh r1, [r0]\n" + "_08048C3A:\n" + "\tpop {r4-r7}\n" + "\tpop {r0}\n" + "\tbx r0\n" + "\t.align 2, 0\n" + "_08048C40: .4byte gTradeStripesBG3Tilemap\n" + "_08048C44: .4byte 0x06003800\n" + "_08048C48: .4byte 0x040000d4\n" + "_08048C4C: .4byte 0x80000400\n" + "_08048C50: .4byte gUnknown_03004824\n" + "_08048C54: .4byte REG_BG0CNT\n" + "_08048C58: .4byte 0x0000fffc\n" + "_08048C5C: .4byte REG_BG1CNT\n" + "_08048C60: .4byte 0x00000501\n" + "_08048C64: .4byte 0x00000602\n" + "_08048C68: .4byte 0x00000703\n" + "_08048C6C: .4byte REG_BG0HOFS"); +} +#endif + +static void sub_8048C70(void) +{ + int i; + for (i = 0; i < PARTY_SIZE; i ++) + { + if (i < gUnknown_03004824->partyCounts[0]) + { + gSprites[gUnknown_03004824->partyIcons[0][i]].invisible = FALSE; + gUnknown_03004824->tradeMenuOptionsActive[i] = TRUE; + } + else + { + gUnknown_03004824->tradeMenuOptionsActive[i] = FALSE; + } + if (i < gUnknown_03004824->partyCounts[1]) + { + gSprites[gUnknown_03004824->partyIcons[1][i]].invisible = FALSE; + gUnknown_03004824->tradeMenuOptionsActive[i + 6] = TRUE; + } + else + { + gUnknown_03004824->tradeMenuOptionsActive[i + 6] = FALSE; + } + } + gUnknown_03004824->tradeMenuOptionsActive[12] = TRUE; +} + +static void nullsub_5(u8 a0, u8 a1) {} + +static void sub_8048D24(u8 *dest, const u8 *src, u32 size) +{ + int i; + for (i = 0; i < size; i ++) dest[i] = src[i]; +} + +static bool8 sub_8048D44(void) +{ + u8 mpId = GetMultiplayerId(); + int i; + u16 species; + u8 nickname[11]; + struct Pokemon *pokemon; + + SetLinkDebugValues(gUnknown_03004824->unk_0075 / 100, gUnknown_03004824->unk_0075 % 100); + switch (gUnknown_03004824->unk_0075) + { + case 0: + sub_8048D24(gBlockSendBuffer, (const u8 *)&gPlayerParty[0], 2 * sizeof(struct Pokemon)); + gUnknown_03004824->unk_0075 ++; + break; + case 1: + if (sub_8007ECC()) + { + if (GetBlockReceivedStatus() == 0) + { + gUnknown_03004824->unk_0075 ++; + } + else + { + ResetBlockReceivedFlags(); + gUnknown_03004824->unk_0075 ++; + } + } + break; + case 2: + if (mpId == 0) + { + sub_8007E9C(1); + } + gUnknown_03004824->unk_0075 ++; + break; + case 3: + if (GetBlockReceivedStatus() == 3) + { + sub_8048D24((u8 *)&gEnemyParty[0], (const u8 *)gBlockRecvBuffer[mpId ^ 1], 2 * sizeof(struct Pokemon)); + ResetBlockReceivedFlags(); + gUnknown_03004824->unk_0075 ++; + } + break; + case 4: + sub_8048D24(gBlockSendBuffer, (const u8 *)&gPlayerParty[2], 2 * sizeof(struct Pokemon)); + gUnknown_03004824->unk_0075 ++; + break; + case 5: + if (mpId == 0) + { + sub_8007E9C(1); + } + gUnknown_03004824->unk_0075 ++; + break; + case 6: + if (GetBlockReceivedStatus() == 3) + { + sub_8048D24((u8 *)&gEnemyParty[2], (const u8 *)gBlockRecvBuffer[mpId ^ 1], 2 * sizeof(struct Pokemon)); + ResetBlockReceivedFlags(); + gUnknown_03004824->unk_0075 ++; + } + break; + case 7: + sub_8048D24(gBlockSendBuffer, (const u8 *)&gPlayerParty[4], 2 * sizeof(struct Pokemon)); + gUnknown_03004824->unk_0075 ++; + break; + case 8: + if (mpId == 0) + { + sub_8007E9C(1); + } + gUnknown_03004824->unk_0075 ++; + break; + case 9: + if (GetBlockReceivedStatus() == 3) + { + sub_8048D24((u8 *)&gEnemyParty[4], (const u8 *)gBlockRecvBuffer[mpId ^ 1], 2 * sizeof(struct Pokemon)); + ResetBlockReceivedFlags(); + gUnknown_03004824->unk_0075 ++; + } + break; + case 10: + sub_8048D24(gBlockSendBuffer, (const u8 *)&gSaveBlock1.mail[0], 6 * sizeof(struct MailStruct) + 4); + gUnknown_03004824->unk_0075 ++; + break; + case 11: + if (mpId == 0) + { + sub_8007E9C(3); + } + gUnknown_03004824->unk_0075 ++; + break; + case 12: + if (GetBlockReceivedStatus() == 3) + { + sub_8048D24((u8 *)&gUnknown_02029700[0], (const u8 *)gBlockRecvBuffer[mpId ^ 1], 6 * sizeof(struct MailStruct)); + ResetBlockReceivedFlags(); + gUnknown_03004824->unk_0075 ++; + } + break; + case 13: + sub_8048D24(gBlockSendBuffer, (const u8 *)gSaveBlock1.giftRibbons, 11); + gUnknown_03004824->unk_0075 ++; + break; + case 14: + if (mpId == 0) + { + sub_8007E9C(4); + } + gUnknown_03004824->unk_0075 ++; + break; + case 15: + if (GetBlockReceivedStatus() == 3) + { + sub_8048D24((u8 *)gUnknown_03004824->unk_00b5, (const u8 *)gBlockRecvBuffer[mpId ^ 1], 11); + ResetBlockReceivedFlags(); + gUnknown_03004824->unk_0075 ++; + } + break; + case 16: + pokemon = gEnemyParty; + for (i = 0; i < PARTY_SIZE; i ++) + { + if ((species = GetMonData(pokemon, MON_DATA_SPECIES)) != SPECIES_NONE && species == SPECIES_SHEDINJA && GetMonData(pokemon, MON_DATA_LANGUAGE) != LANGUAGE_JAPANESE) + { + GetMonData(pokemon, MON_DATA_NICKNAME, nickname); + if (!StringCompareWithoutExtCtrlCodes(nickname, gUnknown_0820C3B0)) + SetMonData(pokemon, MON_DATA_NICKNAME, gSpeciesNames[SPECIES_SHEDINJA]); + } + pokemon ++; + } + return TRUE; + } + return FALSE; +} + +static void sub_8049088(void) +{ + u8 string[28]; + StringCopy(string, gTradeText_TradeOkayPrompt); + sub_804ACD8(string, (u8 *)BG_CHAR_ADDR(4) + gUnknown_03004824->unk_007e * 32, 20); +} + +static void sub_80490BC(u8 mpId, u8 a1) +{ + if (a1 & 1) + { + switch (gBlockRecvBuffer[mpId][0]) + { + case 0xeeaa: + gUnknown_03004824->unk_0084 = 2; + break; + case 0xaabb: + gUnknown_03004824->unk_0084 = 1; + break; + case 0xbbbb: + gUnknown_03004824->unk_0086 = 1; + break; + case 0xbbcc: + gUnknown_03004824->unk_0086 = 2; + break; + } + ResetBlockReceivedFlag(0); + } + if (a1 & 2) + { + switch (gBlockRecvBuffer[1][0]) + { + case 0xeeaa: + gUnknown_03004824->unk_0085 = 2; + break; + case 0xaabb: + gUnknown_03004824->unk_008a = gBlockRecvBuffer[1][1] + 6; + gUnknown_03004824->unk_0085 = 1; + break; + case 0xbbbb: + gUnknown_03004824->unk_0087 = 1; + break; + case 0xbbcc: + gUnknown_03004824->unk_0087 = 2; + break; + } + ResetBlockReceivedFlag(1); + } +} + +static void sub_80491E4(u8 mpId, u8 status) +{ + if (status & 1) + { + switch (gBlockRecvBuffer[0][0]) + { + case 0xeebb: + BeginNormalPaletteFade(-1, 0, 0, 16, 0); + sub_804AA0C(4); + gUnknown_03004824->unk_007b = 11; + break; + case 0xeecc: + sub_804AA0C(5); + gUnknown_03004824->unk_007b = 8; + break; + case 0xdddd: + gUnknown_03004824->unk_008a = ((u8 *)gBlockRecvBuffer[0])[1 * sizeof(u16)] + 6; + sub_8049E9C(gUnknown_03004824->tradeMenuCursorPosition); + sub_8049E9C(gUnknown_03004824->unk_008a); + gUnknown_03004824->unk_007b = 7; + break; + case 0xccdd: + BeginNormalPaletteFade(-1, 0, 0, 16, 0); + gUnknown_03004824->unk_007b = 10; + break; + case 0xddee: + sub_804AA0C(1); + gUnknown_03004824->unk_007b = 8; + break; + } + ResetBlockReceivedFlag(0); + } + if (status & 2) + { + ResetBlockReceivedFlag(1); + } +} + +static void sub_80492D8(void) +{ + if (gUnknown_03004824->unk_0084 && gUnknown_03004824->unk_0085) + { + if (gUnknown_03004824->unk_0084 == 1 && gUnknown_03004824->unk_0085 == 1) + { + gUnknown_03004824->unk_007b = 6; + gUnknown_03004824->linkData[0] = 0xdddd; + gUnknown_03004824->linkData[1] = gUnknown_03004824->tradeMenuCursorPosition; + sub_804AADC(5, 0); + gUnknown_03004824->unk_0084 = gUnknown_03004824->unk_0085 = 0; + } + else if (gUnknown_03004824->unk_0084 == 1 && gUnknown_03004824->unk_0085 == 2) + { + sub_804AA0C(1); + gUnknown_03004824->linkData[0] = 0xeecc; + gUnknown_03004824->linkData[1] = 0; + sub_804AADC(5, 0); + gUnknown_03004824->unk_0086 = gUnknown_03004824->unk_0087 = 0; + gUnknown_03004824->unk_0084 = gUnknown_03004824->unk_0085 = 0; + gUnknown_03004824->unk_007b = 8; + } + else if (gUnknown_03004824->unk_0084 == 2 && gUnknown_03004824->unk_0085 == 1) + { + sub_804AA0C(5); + gUnknown_03004824->linkData[0] = 0xddee; + gUnknown_03004824->linkData[1] = 0; + sub_804AADC(5, 0); + gUnknown_03004824->unk_0086 = gUnknown_03004824->unk_0087 = 0; + gUnknown_03004824->unk_0084 = gUnknown_03004824->unk_0085 = 0; + gUnknown_03004824->unk_007b = 8; + } + else if (gUnknown_03004824->unk_0084 == 2 && gUnknown_03004824->unk_0085 == 2) + { + gUnknown_03004824->linkData[0] = 0xeebb; + gUnknown_03004824->linkData[1] = 0; + sub_804AADC(5, 0); + BeginNormalPaletteFade(-1, 0, 0, 16, 0); + gUnknown_03004824->unk_0084 = gUnknown_03004824->unk_0085 = 0; + gUnknown_03004824->unk_007b = 11; + } + } + if (gUnknown_03004824->unk_0086 && gUnknown_03004824->unk_0087) + { + if (gUnknown_03004824->unk_0086 == 1 && gUnknown_03004824->unk_0087 == 1) + { + gUnknown_03004824->linkData[0] = 0xccdd; + gUnknown_03004824->linkData[1] = 0; + sub_804AADC(5, 0); + gUnknown_03004824->unk_0086 = 0; + gUnknown_03004824->unk_0087 = 0; + gUnknown_03004824->unk_007b = 9; + } + if (gUnknown_03004824->unk_0086 == 2 || gUnknown_03004824->unk_0087 == 2) + { + sub_804AA0C(1); + gUnknown_03004824->linkData[0] = 0xddee; + gUnknown_03004824->linkData[1] = 0; + sub_804AADC(5, 0); + gUnknown_03004824->unk_0086 = 0; + gUnknown_03004824->unk_0087 = 0; + gUnknown_03004824->unk_007b = 8; + } + } +} + +static void sub_80494D8(void) +{ + u8 mpId = GetMultiplayerId(); + u8 status; + if ((status = GetBlockReceivedStatus())) + { + if (mpId == 0) + sub_80490BC(mpId, status); + else + sub_80491E4(mpId, status); + ResetBlockReceivedFlags(); + } + if (mpId == 0) + sub_80492D8(); +} + +static u8 sub_8049514(u8 oldPosition, u8 direction) +{ + int i; + u8 newPosition = 0; + for (i = 0; i < PARTY_SIZE; i ++) + { + if (gUnknown_03004824->tradeMenuOptionsActive[gTradeNextSelectedMonTable[oldPosition][direction][i]] == TRUE) + { + newPosition = gTradeNextSelectedMonTable[oldPosition][direction][i]; + break; + } + } + return newPosition; +} + +static void TradeMenuMoveCursor(u8 *tradeMenuCursorPosition, u8 direction) +{ + u8 newPosition = sub_8049514(*tradeMenuCursorPosition, direction); + if (newPosition == 12) // CANCEL + { + StartSpriteAnim(&gSprites[gUnknown_03004824->tradeMenuCursorSpriteIdx], 1); + gSprites[gUnknown_03004824->tradeMenuCursorSpriteIdx].pos1.x = 0xe0; + gSprites[gUnknown_03004824->tradeMenuCursorSpriteIdx].pos1.y = 0xa0; + } + else + { + StartSpriteAnim(&gSprites[gUnknown_03004824->tradeMenuCursorSpriteIdx], 0); + gSprites[gUnknown_03004824->tradeMenuCursorSpriteIdx].pos1.x = gTradeMonSpriteCoords[newPosition][0] * 8 + 32; + gSprites[gUnknown_03004824->tradeMenuCursorSpriteIdx].pos1.y = gTradeMonSpriteCoords[newPosition][1] * 8; + } + if (*tradeMenuCursorPosition != newPosition) + { + PlaySE(SE_SELECT); + } + *tradeMenuCursorPosition = newPosition; +} + +static void sub_8049620(void) +{ + sub_804AA0C(0); + gUnknown_03004824->unk_007b = 5; + if (GetMultiplayerId() == 1) + { + gUnknown_03004824->linkData[0] = 0xaabb; + gUnknown_03004824->linkData[1] = gUnknown_03004824->tradeMenuCursorPosition; + Trade_SendData(gUnknown_03004824); + } + else + { + gUnknown_03004824->unk_0084 = 1; + } +} + +static void sub_8049680(void) +{ + int i; + if (gMain.newAndRepeatedKeys & DPAD_UP) + { + TradeMenuMoveCursor(&gUnknown_03004824->tradeMenuCursorPosition, 0); + } + else if (gMain.newAndRepeatedKeys & DPAD_DOWN) + { + TradeMenuMoveCursor(&gUnknown_03004824->tradeMenuCursorPosition, 1); + } + else if (gMain.newAndRepeatedKeys & DPAD_LEFT) + { + TradeMenuMoveCursor(&gUnknown_03004824->tradeMenuCursorPosition, 2); + } + else if (gMain.newAndRepeatedKeys & DPAD_RIGHT) + { + TradeMenuMoveCursor(&gUnknown_03004824->tradeMenuCursorPosition, 3); + } + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + if (gUnknown_03004824->tradeMenuCursorPosition < PARTY_SIZE) + { + DrawTextWindow(&gUnknown_03004824->window, 18, 14, 28, 19); + PrintMenuItems(19, 15, 2, (const struct MenuAction *)gUnknown_0820C320); + InitMenu(0, 19, 15, 2, 0, 9); + gUnknown_03004824->unk_007b = 1; + } + else if (gUnknown_03004824->tradeMenuCursorPosition < 2 * PARTY_SIZE) + { + BeginNormalPaletteFade(-1, 0, 0, 16, 0); + gUnknown_03004824->unk_007b = 2; + } + else if (gUnknown_03004824->tradeMenuCursorPosition == 2 * PARTY_SIZE) + { + DrawTextWindow(&gUnknown_03004824->window, 24, 14, 29, 19); + InitYesNoMenu(24, 14, 4); + gUnknown_03004824->unk_007b = 4; + sub_804ACD8(gUnknown_0820C14C[4], (u8 *)(BG_CHAR_ADDR(4) + 32 * gUnknown_03004824->unk_007e), 20); + } + } + if (gMain.newKeys & R_BUTTON) + { + for (i = 0; i < 10; i ++) + { + gUnknown_03004824->linkData[i] = i; + } + Trade_SendData(gUnknown_03004824); + } +} + +static void sub_8049804(void) +{ + HandleDestroyMenuCursors(); + sub_804A80C(); + gUnknown_03004824->unk_007b = 0; + gSprites[gUnknown_03004824->tradeMenuCursorSpriteIdx].invisible = FALSE; + sub_804ACD8(gUnknown_0820C14C[1], (u8 *)(BG_CHAR_ADDR(4) + 32 * gUnknown_03004824->unk_007e), 20); +} + +static void sub_8049860(void) +{ + if (gMain.newAndRepeatedKeys & DPAD_UP) + { + PlaySE(SE_SELECT); + gUnknown_03004824->unk_007c = MoveMenuCursor(-1); + } + else if (gMain.newAndRepeatedKeys & DPAD_DOWN) + { + PlaySE(SE_SELECT); + gUnknown_03004824->unk_007c = MoveMenuCursor(+1); + } + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + if (GetMenuCursorPos() == 0) + { + BeginNormalPaletteFade(-1, 0, 0, 16, 0); + gUnknown_03004824->unk_007b = 2; + } + else if (sub_80499F0(gUnknown_03004824->unk_0051[0], gUnknown_03004824->partyCounts[0], gUnknown_03004824->tradeMenuCursorPosition) == 0) + { + sub_804AADC(3, 2); + gUnknown_03004824->unk_007b = 8; + } + else + { + sub_8049620(); + gSprites[gUnknown_03004824->tradeMenuCursorSpriteIdx].invisible = TRUE; + } + } + else if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + sub_8049804(); + } +} + +static void sub_8049954(void) +{ + if (gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + sub_8049804(); + } +} + +static void sub_804997C(void) +{ + if (!gPaletteFade.active) + { + if (gUnknown_03004824->tradeMenuCursorPosition < PARTY_SIZE) + { + ShowPokemonSummaryScreen(gPlayerParty, gUnknown_03004824->tradeMenuCursorPosition, gUnknown_03004824->partyCounts[0] - 1, sub_80484F4, 4); + } + else + { + ShowPokemonSummaryScreen(gEnemyParty, gUnknown_03004824->tradeMenuCursorPosition - 6, gUnknown_03004824->partyCounts[1] - 1, sub_80484F4, 4); + } + } +} + +static u8 sub_80499F0(const u8 *src, u8 partyCount, u8 tradeMenuCursorPosition) +{ + u8 retval = 0; + int i; + for (i = 0; i < partyCount; i ++) + { + if (tradeMenuCursorPosition != i) + { + retval += src[i]; + } + } + return retval; +} + +static void sub_8049A20(void) +{ + u8 unk_0051[12]; + int i; + for (i = 0; i < gUnknown_03004824->partyCounts[0]; i ++) + { + unk_0051[i] = gUnknown_03004824->unk_0051[0][i]; + } + if (sub_80499F0(unk_0051, gUnknown_03004824->partyCounts[0], gUnknown_03004824->tradeMenuCursorPosition) == 0) + { + sub_804AADC(3, 2); + gUnknown_03004824->linkData[0] = 0xbbcc; + sub_804AADC(0xb4, 0); + } + else + { + sub_804AADC(3, 1); + gUnknown_03004824->linkData[0] = 0xbbbb; + if (sub_8007ECC()) + { + Trade_SendData(gUnknown_03004824); + } + } +} + +static void sub_8049AC0(void) +{ + if (gMain.newAndRepeatedKeys & DPAD_UP) + { + PlaySE(SE_SELECT); + gUnknown_03004824->unk_007c = MoveMenuCursor(-1); + } + else if (gMain.newAndRepeatedKeys & DPAD_DOWN) + { + PlaySE(SE_SELECT); + gUnknown_03004824->unk_007c = MoveMenuCursor(+1); + } + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + if (GetMenuCursorPos() == 0) + { + sub_8049A20(); + } + else + { + sub_804AADC(3, 1); + if (sub_8007ECC()) + { + gUnknown_03004824->linkData[0] = 0xbbcc; + Trade_SendData(gUnknown_03004824); + } + } + gUnknown_03004824->unk_007b = 100; + } + else if (gMain.newKeys & B_BUTTON) + { + sub_804AADC(3, 1); + if (GetMenuCursorPos() == 0) + { + gUnknown_03004824->unk_007c = MoveMenuCursor(+1); + } + gUnknown_03004824->linkData[0] = 0xbbcc; + Trade_SendData(gUnknown_03004824); + gUnknown_03004824->unk_007b = 100; + } +} + +static void sub_8049BC0(void) +{ + if (gMain.newAndRepeatedKeys & DPAD_UP) + { + PlaySE(SE_SELECT); + gUnknown_03004824->unk_007c = MoveMenuCursor(-1); + } + else if (gMain.newAndRepeatedKeys & DPAD_DOWN) + { + PlaySE(SE_SELECT); + gUnknown_03004824->unk_007c = MoveMenuCursor(+1); + } + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + if (GetMenuCursorPos() == 0) + { + sub_804AA0C(4); + gUnknown_03004824->linkData[0] = 0xeeaa; + gUnknown_03004824->linkData[1] = 0; + sub_804AADC(5, 0); + gSprites[gUnknown_03004824->tradeMenuCursorSpriteIdx].invisible = TRUE; + gUnknown_03004824->unk_007b = 100; + } + else + { + sub_8049804(); + } + } + else if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + sub_8049804(); + } +} + +static void sub_8049C8C(void) +{ + if (GetMultiplayerId() == 0) + { + sub_8049E9C(gUnknown_03004824->tradeMenuCursorPosition); + sub_8049E9C(gUnknown_03004824->unk_008a); + } + gUnknown_03004824->unk_007b = 7; +} + +static void sub_8049CC4(void) +{ + if (gUnknown_03004824->unk_0080[0] == 5 && gUnknown_03004824->unk_0080[1] == 5) + { + sub_8049088(); + gUnknown_03004824->unk_007b = 14; + } +} + +static void DisplayMessageAndContinueTask(void) +{ + gUnknown_03004824->unk_00b4++; + if (gUnknown_03004824->unk_00b4 > 120) + { + DrawTextWindow(&gUnknown_03004824->window, 24, 14, 29, 19); + InitYesNoMenu(24, 14, 4); + gUnknown_03004824->unk_00b4 = 0; + gUnknown_03004824->unk_007b = 3; + } +} + +static void sub_8049D44(void) +{ + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + sub_804A840(0); + sub_804A840(1); + gUnknown_03004824->unk_007b = 0; + gSprites[gUnknown_03004824->tradeMenuCursorSpriteIdx].invisible = FALSE; + } +} + +static void sub_8049D9C(void) +{ + if (!gPaletteFade.active) + { + sub_800832C(); + gUnknown_03004824->unk_007b = 12; + } +} + +static void sub_8049DC4(void) +{ + if (gReceivedRemoteLinkPlayers == 0) + { + SetMainCallback2(sub_805465C); + } +} + +static void sub_8049DE0(void) +{ + switch (gUnknown_03004824->unk_007b) + { + case 0: + sub_8049680(); + break; + case 1: + sub_8049860(); + break; + case 2: + sub_804997C(); + break; + case 3: + sub_8049AC0(); + break; + case 4: + sub_8049BC0(); + break; + case 6: + sub_8049C8C(); + break; + case 7: + sub_8049CC4(); + break; + case 8: + sub_8049D44(); + break; + case 9: + sub_8048A14(); + break; + case 10: + sub_8048A50(); + break; + case 11: + sub_8049D9C(); + break; + case 12: + sub_8049DC4(); + break; + case 13: + sub_8048A90(); + break; + case 14: + DisplayMessageAndContinueTask(); + break; + case 15: + sub_8049954(); + break; + } +} + +static void sub_8049E9C(u8 a0) +{ + u8 v0 = a0 / 6; + if (gUnknown_03004824->unk_0080[v0] == 0) + { + gUnknown_03004824->unk_0080[v0] = 1; + gUnknown_03004824->unk_0082[v0] = a0; + } +} + +// TODO: Figure out what the f**k is going on here +#ifdef NONMATCHING +static void sub_8049ED4(u8 a0) +{ + u8 i; + s8 stringLength; + u8 whichParty = 1; + u8 whichPokemon; + u8 string1[40]; + u8 string2[56]; + u8 temp0 = gUnknown_03004824->unk_0082[a0]; + if (temp0 < PARTY_SIZE) + whichParty = 0; + whichPokemon = temp0 % PARTY_SIZE; + + switch (gUnknown_03004824->unk_0080[a0]) + { + case 1: + for (i = 0; i < gUnknown_03004824->partyCounts[a0]; i ++) + { + gSprites[gUnknown_03004824->partyIcons[whichParty][i]].invisible = TRUE; + } + gSprites[gUnknown_03004824->partyIcons[whichParty][whichPokemon]].invisible = FALSE; + gSprites[gUnknown_03004824->partyIcons[whichParty][whichPokemon]].data0 = 20; + gSprites[gUnknown_03004824->partyIcons[whichParty][whichPokemon]].data2 = (gTradeMonSpriteCoords[6 * whichParty + whichPokemon][0] + gTradeMonSpriteCoords[6 * whichParty + whichPokemon + 1][0]) / 2 * 8 + 14; + gSprites[gUnknown_03004824->partyIcons[whichParty][whichPokemon]].data4 = gTradeMonSpriteCoords[6 * whichParty + whichPokemon][1] * 8 - 12; + StoreSpriteCallbackInData6(&gSprites[gUnknown_03004824->partyIcons[whichParty][whichPokemon]], sub_809D62C); + gUnknown_03004824->unk_0080[a0] ++; + sub_8078A34(&gSprites[gUnknown_03004824->partyIcons[whichParty][whichPokemon]]); + HandleDestroyMenuCursors(); + FillWindowRect_DefaultPalette(&gUnknown_03004824->window, 0, gUnknown_0820C330[whichParty][0], 0, gUnknown_0820C330[whichParty][1], 19); + sub_804A96C_alt(&gUnknown_03004824->unk_00c8, 15 * a0, 0, gTradePartyBoxTilemap, 15, 17, 0); + if (whichParty == 0) + { + sub_804A80C(); + } + break; + case 2: + if (gSprites[gUnknown_03004824->partyIcons[whichParty][whichPokemon]].callback == sub_809D62C) + { + gUnknown_03004824->unk_0080[a0] = 3; + } + break; + case 3: + sub_804A96C_alt(&gUnknown_03004824->unk_00c8, 15 * whichParty, 0, gTradePartyBoxTilemap, 15, 17, 0); + gSprites[gUnknown_03004824->partyIcons[whichParty][whichPokemon]].pos1.x = (gTradeMonSpriteCoords[6 * whichParty + whichPokemon ][0] + gTradeMonSpriteCoords[6 * whichParty + whichPokemon + 1][0]) / 2 * 8 + 14; + gSprites[gUnknown_03004824->partyIcons[whichParty][whichPokemon]].pos1.y = gTradeMonSpriteCoords[6 * whichParty + whichPokemon ][1] * 8 - 12; + gSprites[gUnknown_03004824->partyIcons[whichParty][whichPokemon]].pos2.x = 0; + gSprites[gUnknown_03004824->partyIcons[whichParty][whichPokemon]].pos2.y = 0; + stringLength = sub_804A2B4(string1 + 6, whichParty, whichPokemon); + string1[0] = 0xFC; + string1[1] = 0x06; + string1[2] = 0x04; + string1[3] = 0xFC; + string1[4] = 0x11; + string1[5] = (64 - stringLength) / 2; + sub_8003460(&gUnknown_03004824->window, string1, gUnknown_03004824->unk_007a + whichParty * 6 * 32, gUnknown_0820C334[whichParty][0], gUnknown_0820C334[whichParty][1]); + sub_804A33C(string2, whichParty, whichPokemon); + sub_8003460(&gUnknown_03004824->window, gOtherText_Terminator2, gUnknown_03004824->unk_007a + whichParty * 6 * 32 + 32, gUnknown_0820C334[whichParty + 1][0], gUnknown_0820C334[whichParty + 1][1] + 1); + sub_8003460(&gUnknown_03004824->window, string2, gUnknown_03004824->unk_007a + whichParty * 6 * 32 + 38, gUnknown_0820C334[whichParty + 1][0], gUnknown_0820C334[whichParty + 1][1] + 1); + gUnknown_03004824->unk_0080[a0] ++; + break; + case 4: + sub_804ACD8(gUnknown_0820C14C[5], (u8 *)(BG_CHAR_ADDR(4) + 32 * gUnknown_03004824->unk_007e), 20); + sub_804A51C(a0, whichPokemon, gUnknown_0820C3D1[a0][0] + 4, gUnknown_0820C3D1[a0][1] + 1, gUnknown_0820C3D1[a0][0], gUnknown_0820C3D1[a0][1]); + gUnknown_03004824->unk_0080[a0] ++; + break; + } +} +#else +__attribute__((naked)) +static void sub_8049ED4(u8 a0) +{ + asm_unified("\tpush {r4-r7,lr}\n" + "\tmov r7, r10\n" + "\tmov r6, r9\n" + "\tmov r5, r8\n" + "\tpush {r5-r7}\n" + "\tsub sp, 0x74\n" + "\tlsls r0, 24\n" + "\tlsrs r0, 24\n" + "\tmov r10, r0\n" + "\tldr r0, _08049F24 @ =gUnknown_03004824\n" + "\tldr r5, [r0]\n" + "\tadds r0, r5, 0\n" + "\tadds r0, 0x82\n" + "\tadd r0, r10\n" + "\tldrb r0, [r0]\n" + "\tmovs r1, 0x1\n" + "\tstr r1, [sp, 0x6C]\n" + "\tcmp r0, 0x5\n" + "\tbhi _08049EFE\n" + "\tmovs r2, 0\n" + "\tstr r2, [sp, 0x6C]\n" + "_08049EFE:\n" + "\tmovs r1, 0x6\n" + "\tbl __umodsi3\n" + "\tlsls r0, 24\n" + "\tlsrs r0, 24\n" + "\tmov r8, r0\n" + "\tadds r0, r5, 0\n" + "\tadds r0, 0x80\n" + "\tmov r1, r10\n" + "\tadds r3, r0, r1\n" + "\tldrb r0, [r3]\n" + "\tcmp r0, 0x2\n" + "\tbne _08049F1A\n" + "\tb _0804A0AC\n" + "_08049F1A:\n" + "\tcmp r0, 0x2\n" + "\tbgt _08049F28\n" + "\tcmp r0, 0x1\n" + "\tbeq _08049F36\n" + "\tb _0804A294\n" + "\t.align 2, 0\n" + "_08049F24: .4byte gUnknown_03004824\n" + "_08049F28:\n" + "\tcmp r0, 0x3\n" + "\tbne _08049F2E\n" + "\tb _0804A0E4\n" + "_08049F2E:\n" + "\tcmp r0, 0x4\n" + "\tbne _08049F34\n" + "\tb _0804A244\n" + "_08049F34:\n" + "\tb _0804A294\n" + "_08049F36:\n" + "\tmovs r4, 0\n" + "\tadds r0, r5, 0\n" + "\tadds r0, 0x42\n" + "\tadd r0, r10\n" + "\tldr r7, _0804A094 @ =gSprites\n" + "\tldr r2, [sp, 0x6C]\n" + "\tlsls r2, 1\n" + "\tmov r9, r2\n" + "\tldr r3, _0804A098 @ =gTradeMonSpriteCoords\n" + "\tmov r12, r3\n" + "\tmov r5, r10\n" + "\tlsls r5, 4\n" + "\tstr r5, [sp, 0x70]\n" + "\tldrb r0, [r0]\n" + "\tcmp r4, r0\n" + "\tbcs _08049F8E\n" + "\tadds r6, r7, 0\n" + "\tldr r2, _0804A09C @ =gUnknown_03004824\n" + "\tldr r0, [sp, 0x6C]\n" + "\tadd r0, r9\n" + "\tlsls r3, r0, 1\n" + "\tmovs r5, 0x4\n" + "_08049F62:\n" + "\tldr r0, [r2]\n" + "\tadds r1, r4, r3\n" + "\tadds r0, 0x34\n" + "\tadds r0, r1\n" + "\tldrb r1, [r0]\n" + "\tlsls r0, r1, 4\n" + "\tadds r0, r1\n" + "\tlsls r0, 2\n" + "\tadds r0, r6\n" + "\tadds r0, 0x3E\n" + "\tldrb r1, [r0]\n" + "\torrs r1, r5\n" + "\tstrb r1, [r0]\n" + "\tadds r0, r4, 0x1\n" + "\tlsls r0, 24\n" + "\tlsrs r4, r0, 24\n" + "\tldr r0, [r2]\n" + "\tadds r0, 0x42\n" + "\tadd r0, r10\n" + "\tldrb r0, [r0]\n" + "\tcmp r4, r0\n" + "\tbcc _08049F62\n" + "_08049F8E:\n" + "\tldr r1, _0804A09C @ =gUnknown_03004824\n" + "\tldr r0, [r1]\n" + "\tldr r5, [sp, 0x6C]\n" + "\tadd r5, r9\n" + "\tlsls r3, r5, 1\n" + "\tmov r2, r8\n" + "\tadds r6, r2, r3\n" + "\tadds r0, 0x34\n" + "\tadds r0, r6\n" + "\tldrb r1, [r0]\n" + "\tlsls r0, r1, 4\n" + "\tadds r0, r1\n" + "\tlsls r0, 2\n" + "\tadds r0, r7\n" + "\tadds r0, 0x3E\n" + "\tldrb r2, [r0]\n" + "\tmovs r1, 0x5\n" + "\tnegs r1, r1\n" + "\tands r1, r2\n" + "\tstrb r1, [r0]\n" + "\tldr r0, _0804A09C @ =gUnknown_03004824\n" + "\tldr r4, [r0]\n" + "\tadds r4, 0x34\n" + "\tadds r4, r6\n" + "\tldrb r1, [r4]\n" + "\tlsls r0, r1, 4\n" + "\tadds r0, r1\n" + "\tlsls r0, 2\n" + "\tadds r0, r7\n" + "\tmovs r1, 0x14\n" + "\tstrh r1, [r0, 0x2E]\n" + "\tldrb r0, [r4]\n" + "\tlsls r2, r0, 4\n" + "\tadds r2, r0\n" + "\tlsls r2, 2\n" + "\tadds r2, r7\n" + "\tlsls r5, 2\n" + "\tmov r1, r12\n" + "\tadds r0, r5, r1\n" + "\tldrb r0, [r0]\n" + "\tadds r3, 0x1\n" + "\tlsls r3, 1\n" + "\tadd r3, r12\n" + "\tldrb r1, [r3]\n" + "\tadds r0, r1\n" + "\tasrs r0, 1\n" + "\tlsls r0, 3\n" + "\tadds r0, 0xE\n" + "\tstrh r0, [r2, 0x32]\n" + "\tldrb r0, [r4]\n" + "\tlsls r1, r0, 4\n" + "\tadds r1, r0\n" + "\tlsls r1, 2\n" + "\tadds r1, r7\n" + "\tmov r0, r12\n" + "\tadds r0, 0x1\n" + "\tadds r5, r0\n" + "\tldrb r0, [r5]\n" + "\tlsls r0, 3\n" + "\tsubs r0, 0xC\n" + "\tstrh r0, [r1, 0x36]\n" + "\tldrb r1, [r4]\n" + "\tlsls r0, r1, 4\n" + "\tadds r0, r1\n" + "\tlsls r0, 2\n" + "\tadds r0, r7\n" + "\tldr r1, _0804A0A0 @ =sub_809D62C\n" + "\tbl StoreSpriteCallbackInData6\n" + "\tldr r2, _0804A09C @ =gUnknown_03004824\n" + "\tldr r1, [r2]\n" + "\tadds r1, 0x80\n" + "\tadd r1, r10\n" + "\tldrb r0, [r1]\n" + "\tadds r0, 0x1\n" + "\tstrb r0, [r1]\n" + "\tldr r0, [r2]\n" + "\tadds r0, 0x34\n" + "\tadds r0, r6\n" + "\tldrb r1, [r0]\n" + "\tlsls r0, r1, 4\n" + "\tadds r0, r1\n" + "\tlsls r0, 2\n" + "\tadds r0, r7\n" + "\tbl sub_8078A34\n" + "\tbl HandleDestroyMenuCursors\n" + "\tldr r3, _0804A09C @ =gUnknown_03004824\n" + "\tldr r0, [r3]\n" + "\tadds r0, 0x4\n" + "\tldr r1, _0804A0A4 @ =gUnknown_0820C330\n" + "\tmov r5, r9\n" + "\tadds r2, r5, r1\n" + "\tldrb r2, [r2]\n" + "\tadds r1, 0x1\n" + "\tadd r1, r9\n" + "\tldrb r1, [r1]\n" + "\tstr r1, [sp]\n" + "\tmovs r1, 0x13\n" + "\tstr r1, [sp, 0x4]\n" + "\tmovs r1, 0\n" + "\tmovs r3, 0\n" + "\tbl FillWindowRect_DefaultPalette\n" + "\tldr r1, _0804A09C @ =gUnknown_03004824\n" + "\tldr r0, [r1]\n" + "\tadds r0, 0xC8\n" + "\tldr r2, [sp, 0x70]\n" + "\tmov r3, r10\n" + "\tsubs r1, r2, r3\n" + "\tlsls r1, 24\n" + "\tlsrs r1, 24\n" + "\tldr r3, _0804A0A8 @ =gTradePartyBoxTilemap\n" + "\tmovs r2, 0xF\n" + "\tstr r2, [sp]\n" + "\tmovs r2, 0x11\n" + "\tstr r2, [sp, 0x4]\n" + "\tmovs r5, 0\n" + "\tstr r5, [sp, 0x8]\n" + "\tmovs r2, 0\n" + "\tbl sub_804A96C_alt\n" + "\tldr r0, [sp, 0x6C]\n" + "\tcmp r0, 0\n" + "\tbeq _0804A08C\n" + "\tb _0804A294\n" + "_0804A08C:\n" + "\tbl sub_804A80C\n" + "\tb _0804A294\n" + "\t.align 2, 0\n" + "_0804A094: .4byte gSprites\n" + "_0804A098: .4byte gTradeMonSpriteCoords\n" + "_0804A09C: .4byte gUnknown_03004824\n" + "_0804A0A0: .4byte sub_809D62C\n" + "_0804A0A4: .4byte gUnknown_0820C330\n" + "_0804A0A8: .4byte gTradePartyBoxTilemap\n" + "_0804A0AC:\n" + "\tldr r2, _0804A0DC @ =gSprites\n" + "\tldr r1, [sp, 0x6C]\n" + "\tlsls r0, r1, 1\n" + "\tadds r0, r1\n" + "\tlsls r0, 1\n" + "\tadd r0, r8\n" + "\tadds r1, r5, 0\n" + "\tadds r1, 0x34\n" + "\tadds r1, r0\n" + "\tldrb r1, [r1]\n" + "\tlsls r0, r1, 4\n" + "\tadds r0, r1\n" + "\tlsls r0, 2\n" + "\tadds r2, 0x1C\n" + "\tadds r0, r2\n" + "\tldr r1, [r0]\n" + "\tldr r0, _0804A0E0 @ =sub_809D62C\n" + "\tcmp r1, r0\n" + "\tbeq _0804A0D4\n" + "\tb _0804A294\n" + "_0804A0D4:\n" + "\tmovs r0, 0x3\n" + "\tstrb r0, [r3]\n" + "\tb _0804A294\n" + "\t.align 2, 0\n" + "_0804A0DC: .4byte gSprites\n" + "_0804A0E0: .4byte sub_809D62C\n" + "_0804A0E4:\n" + "\tadds r0, r5, 0\n" + "\tadds r0, 0xC8\n" + "\tldr r2, [sp, 0x6C]\n" + "\tlsls r1, r2, 4\n" + "\tsubs r1, r2\n" + "\tlsls r1, 24\n" + "\tlsrs r1, 24\n" + "\tldr r3, _0804A228 @ =gTradeMovesBoxTilemap\n" + "\tmovs r2, 0xF\n" + "\tstr r2, [sp]\n" + "\tmovs r7, 0x11\n" + "\tstr r7, [sp, 0x4]\n" + "\tmovs r5, 0\n" + "\tstr r5, [sp, 0x8]\n" + "\tmovs r2, 0\n" + "\tbl sub_804A96C_alt\n" + "\tldr r0, _0804A22C @ =gUnknown_03004824\n" + "\tldr r3, [r0]\n" + "\tldr r1, [sp, 0x6C]\n" + "\tlsls r6, r1, 1\n" + "\tadds r1, r6\n" + "\tmov r9, r1\n" + "\tlsls r1, 1\n" + "\tmov r2, r8\n" + "\tadds r0, r2, r1\n" + "\tadds r3, 0x34\n" + "\tadds r3, r0\n" + "\tldrb r0, [r3]\n" + "\tlsls r2, r0, 4\n" + "\tadds r2, r0\n" + "\tlsls r2, 2\n" + "\tldr r5, _0804A230 @ =gSprites\n" + "\tadds r2, r5\n" + "\tldr r4, _0804A234 @ =gTradeMonSpriteCoords\n" + "\tmov r0, r9\n" + "\tlsls r5, r0, 2\n" + "\tadds r0, r5, r4\n" + "\tldrb r0, [r0]\n" + "\tadds r1, 0x1\n" + "\tlsls r1, 1\n" + "\tadds r1, r4\n" + "\tldrb r1, [r1]\n" + "\tadds r0, r1\n" + "\tasrs r0, 1\n" + "\tlsls r0, 3\n" + "\tadds r0, 0xE\n" + "\tstrh r0, [r2, 0x20]\n" + "\tldrb r0, [r3]\n" + "\tlsls r1, r0, 4\n" + "\tadds r1, r0\n" + "\tlsls r1, 2\n" + "\tldr r2, _0804A230 @ =gSprites\n" + "\tadds r1, r2\n" + "\tadds r4, 0x1\n" + "\tadds r5, r4\n" + "\tldrb r0, [r5]\n" + "\tlsls r0, 3\n" + "\tsubs r0, 0xC\n" + "\tstrh r0, [r1, 0x22]\n" + "\tldrb r1, [r3]\n" + "\tlsls r0, r1, 4\n" + "\tadds r0, r1\n" + "\tlsls r0, 2\n" + "\tadds r0, r2\n" + "\tmovs r5, 0\n" + "\tstrh r5, [r0, 0x24]\n" + "\tldrb r1, [r3]\n" + "\tlsls r0, r1, 4\n" + "\tadds r0, r1\n" + "\tlsls r0, 2\n" + "\tadds r0, r2\n" + "\tstrh r5, [r0, 0x26]\n" + "\tmov r0, sp\n" + "\tadds r0, 0x12\n" + "\tldr r1, [sp, 0x6C]\n" + "\tmov r2, r8\n" + "\tbl sub_804A2B4\n" + "\tadd r1, sp, 0xC\n" + "\tmovs r3, 0xFC\n" + "\tstrb r3, [r1]\n" + "\tadds r2, r1, 0\n" + "\tmovs r1, 0x6\n" + "\tstrb r1, [r2, 0x1]\n" + "\tmovs r1, 0x4\n" + "\tstrb r1, [r2, 0x2]\n" + "\tadds r1, r2, 0\n" + "\tstrb r3, [r1, 0x3]\n" + "\tstrb r7, [r1, 0x4]\n" + "\tlsls r0, 24\n" + "\tasrs r0, 24\n" + "\tmovs r1, 0x40\n" + "\tsubs r1, r0\n" + "\tlsrs r0, r1, 31\n" + "\tadds r1, r0\n" + "\tasrs r1, 1\n" + "\tstrb r1, [r2, 0x5]\n" + "\tldr r0, _0804A22C @ =gUnknown_03004824\n" + "\tldr r1, [r0]\n" + "\tadds r0, r1, 0x4\n" + "\tadds r1, 0x7A\n" + "\tldrb r2, [r1]\n" + "\tmov r1, r9\n" + "\tlsls r1, 6\n" + "\tmov r9, r1\n" + "\tadd r2, r9\n" + "\tldr r4, _0804A238 @ =gUnknown_0820C334\n" + "\tldr r3, [sp, 0x6C]\n" + "\tlsls r1, r3, 2\n" + "\tadds r3, r1, r4\n" + "\tldrb r3, [r3]\n" + "\tldr r5, _0804A23C @ =gUnknown_0820C334 + 0x1\n" + "\tadds r1, r5\n" + "\tldrb r1, [r1]\n" + "\tstr r1, [sp]\n" + "\tadd r1, sp, 0xC\n" + "\tbl sub_8003460\n" + "\tadd r7, sp, 0x34\n" + "\tadds r0, r7, 0\n" + "\tldr r1, [sp, 0x6C]\n" + "\tmov r2, r8\n" + "\tbl sub_804A33C\n" + "\tldr r0, _0804A22C @ =gUnknown_03004824\n" + "\tldr r2, [r0]\n" + "\tadds r0, r2, 0x4\n" + "\tldr r1, _0804A240 @ =gOtherText_Terminator2\n" + "\tadds r2, 0x7A\n" + "\tldrb r2, [r2]\n" + "\tadd r2, r9\n" + "\tadds r2, 0x20\n" + "\tadds r6, 0x1\n" + "\tlsls r6, 1\n" + "\tadds r4, r6, r4\n" + "\tldrb r5, [r4]\n" + "\tldr r3, _0804A23C @ =gUnknown_0820C334 + 0x1\n" + "\tadds r6, r3\n" + "\tldrb r4, [r6]\n" + "\tadds r4, 0x1\n" + "\tlsls r4, 24\n" + "\tlsrs r4, 24\n" + "\tstr r4, [sp]\n" + "\tadds r3, r5, 0\n" + "\tbl sub_8003460\n" + "\tldr r0, _0804A22C @ =gUnknown_03004824\n" + "\tldr r1, [r0]\n" + "\tadds r0, r1, 0x4\n" + "\tadds r1, 0x7A\n" + "\tldrb r2, [r1]\n" + "\tadd r2, r9\n" + "\tadds r2, 0x26\n" + "\tstr r4, [sp]\n" + "\tadds r1, r7, 0\n" + "\tadds r3, r5, 0\n" + "\tbl sub_8003460\n" + "\tldr r2, _0804A22C @ =gUnknown_03004824\n" + "\tldr r1, [r2]\n" + "\tb _0804A28A\n" + "\t.align 2, 0\n" + "_0804A228: .4byte gTradeMovesBoxTilemap\n" + "_0804A22C: .4byte gUnknown_03004824\n" + "_0804A230: .4byte gSprites\n" + "_0804A234: .4byte gTradeMonSpriteCoords\n" + "_0804A238: .4byte gUnknown_0820C334\n" + "_0804A23C: .4byte gUnknown_0820C334 + 0x1\n" + "_0804A240: .4byte gOtherText_Terminator2\n" + "_0804A244:\n" + "\tldr r0, _0804A2A4 @ =gUnknown_0820C14C\n" + "\tldr r0, [r0, 0x14]\n" + "\tadds r1, r5, 0\n" + "\tadds r1, 0x7E\n" + "\tldrh r1, [r1]\n" + "\tlsls r1, 5\n" + "\tldr r3, _0804A2A8 @ =0x06010000\n" + "\tadds r1, r3\n" + "\tmovs r2, 0x14\n" + "\tbl sub_804ACD8\n" + "\tldr r0, _0804A2AC @ =gUnknown_0820C3D1\n" + "\tmov r5, r10\n" + "\tlsls r1, r5, 1\n" + "\tadds r4, r1, r0\n" + "\tldrb r2, [r4]\n" + "\tadds r2, 0x4\n" + "\tlsls r2, 24\n" + "\tlsrs r2, 24\n" + "\tadds r0, 0x1\n" + "\tadds r1, r0\n" + "\tldrb r3, [r1]\n" + "\tadds r3, 0x1\n" + "\tlsls r3, 24\n" + "\tlsrs r3, 24\n" + "\tldrb r0, [r4]\n" + "\tstr r0, [sp]\n" + "\tldrb r0, [r1]\n" + "\tstr r0, [sp, 0x4]\n" + "\tmov r0, r10\n" + "\tmov r1, r8\n" + "\tbl sub_804A51C\n" + "\tldr r0, _0804A2B0 @ =gUnknown_03004824\n" + "\tldr r1, [r0]\n" + "_0804A28A:\n" + "\tadds r1, 0x80\n" + "\tadd r1, r10\n" + "\tldrb r0, [r1]\n" + "\tadds r0, 0x1\n" + "\tstrb r0, [r1]\n" + "_0804A294:\n" + "\tadd sp, 0x74\n" + "\tpop {r3-r5}\n" + "\tmov r8, r3\n" + "\tmov r9, r4\n" + "\tmov r10, r5\n" + "\tpop {r4-r7}\n" + "\tpop {r0}\n" + "\tbx r0\n" + "\t.align 2, 0\n" + "_0804A2A4: .4byte gUnknown_0820C14C\n" + "_0804A2A8: .4byte 0x06010000\n" + "_0804A2AC: .4byte gUnknown_0820C3D1\n" + "_0804A2B0: .4byte gUnknown_03004824"); +} +#endif + +#ifdef NONMATCHING +static +#endif +u8 sub_804A2B4(u8 *a0, u8 whichParty, u8 whichPokemon) +{ + u8 string[11]; + if (whichParty == 0) + { + GetMonData(&gPlayerParty[whichPokemon], MON_DATA_NICKNAME, string); + StringCopy10(a0, string); + GetMonGender(&gPlayerParty[whichPokemon]); + GetMonData(&gPlayerParty[whichPokemon], MON_DATA_LEVEL); + } + else + { + GetMonData(&gEnemyParty[whichPokemon], MON_DATA_NICKNAME, string); + StringCopy10(a0, string); + GetMonGender(&gEnemyParty[whichPokemon]); + GetMonData(&gEnemyParty[whichPokemon], MON_DATA_LEVEL); + } + return GetStringWidthGivenWindowConfig(&gWindowConfig_81E7294, a0); +} + +#ifdef NONMATCHING +static +#endif +void sub_804A33C(u8 *a0, u8 whichParty, u8 whichPokemon) +{ + u16 i; + u16 moves[4]; + if (gUnknown_03004824->unk_005d[whichParty][whichPokemon] == 0) + { + for (i = 0; i < 4; i ++) + { + if (whichParty == 0) + moves[i] = GetMonData(&gPlayerParty[whichPokemon], MON_DATA_MOVE1 + i, NULL); + else + moves[i] = GetMonData(&gEnemyParty[whichPokemon], MON_DATA_MOVE1 + i, NULL); + } + StringCopy(a0, gOtherText_Terminator); + for (i = 0; i < 4; i ++) + { + if (moves[i] != 0) + { + StringAppend(a0, gMoveNames[moves[i]]); + } + StringAppend(a0, gOtherText_ControlAndMiscText); + } + } + else + { + StringCopy(a0, gOtherText_Terminator); + StringAppend(a0, gOtherText_FourQuestions); + } +} + +#ifdef NONMATCHING +static void sub_804A41C(u8 whichParty) +{ + u8 i; + u8 nickname[22]; + u8 string[40]; + struct Pokemon *pokemon; + + string[0] = 0xFC; + string[1] = 0x06; + string[2] = 0x04; + string[3] = 0xFC; + string[4] = 0x11; + string[5] = 0x00; + + for (i = 0; i < gUnknown_03004824->partyCounts[whichParty]; i ++) + { + pokemon = whichParty == 0 ? &gPlayerParty[i] : &gEnemyParty[i]; + GetMonData(pokemon, MON_DATA_NICKNAME, nickname); + StringCopy10(string + 6, nickname); + GetMonGender(pokemon); + string[5] = (50 - GetStringWidthGivenWindowConfig(&gWindowConfig_81E7294, string + 6)) / 2; + sub_8003460(&gUnknown_03004824->window, string, gUnknown_03004824->unk_007a + 22 * 6 * whichParty + 22 * i, gTradeMonSpriteCoords[i + 6 * whichParty][0], gTradeMonSpriteCoords[i + 6 * whichParty][1]); + } +} +#else +__attribute__((naked)) +static void sub_804A41C(u8 whichParty) +{ + asm_unified("\tpush {r4-r7,lr}\n" + "\tmov r7, r10\n" + "\tmov r6, r9\n" + "\tmov r5, r8\n" + "\tpush {r5-r7}\n" + "\tsub sp, 0x44\n" + "\tlsls r0, 24\n" + "\tlsrs r5, r0, 24\n" + "\tadd r3, sp, 0x1C\n" + "\tmovs r2, 0\n" + "\tmovs r1, 0xFC\n" + "\tstrb r1, [r3]\n" + "\tmovs r0, 0x6\n" + "\tstrb r0, [r3, 0x1]\n" + "\tmovs r0, 0x4\n" + "\tstrb r0, [r3, 0x2]\n" + "\tstrb r1, [r3, 0x3]\n" + "\tmovs r0, 0x11\n" + "\tstrb r0, [r3, 0x4]\n" + "\tstrb r2, [r3, 0x5]\n" + "\tmovs r6, 0\n" + "\tldr r1, _0804A470 @ =gUnknown_03004824\n" + "\tldr r0, [r1]\n" + "\tadds r0, 0x42\n" + "\tadds r0, r5\n" + "\tldrb r0, [r0]\n" + "\tcmp r6, r0\n" + "\tbcs _0804A504\n" + "\tmov r8, r3\n" + "\tadds r7, r1, 0\n" + "\tldr r0, _0804A474 @ =gTradeMonSpriteCoords\n" + "\tmov r9, r0\n" + "\tmovs r4, 0x1\n" + "\tadd r4, r9\n" + "\tmov r10, r4\n" + "_0804A462:\n" + "\tcmp r5, 0\n" + "\tbne _0804A47C\n" + "\tmovs r0, 0x64\n" + "\tadds r4, r6, 0\n" + "\tmuls r4, r0\n" + "\tldr r0, _0804A478 @ =gPlayerParty\n" + "\tb _0804A484\n" + "\t.align 2, 0\n" + "_0804A470: .4byte gUnknown_03004824\n" + "_0804A474: .4byte gTradeMonSpriteCoords\n" + "_0804A478: .4byte gPlayerParty\n" + "_0804A47C:\n" + "\tmovs r0, 0x64\n" + "\tadds r4, r6, 0\n" + "\tmuls r4, r0\n" + "\tldr r0, _0804A514 @ =gEnemyParty\n" + "_0804A484:\n" + "\tadds r4, r0\n" + "\tadds r0, r4, 0\n" + "\tmovs r1, 0x2\n" + "\tadd r2, sp, 0x4\n" + "\tbl GetMonData\n" + "\tmov r0, sp\n" + "\tadds r0, 0x22\n" + "\tadd r1, sp, 0x4\n" + "\tbl StringCopy10\n" + "\tadds r0, r4, 0\n" + "\tbl GetMonGender\n" + "\tmov r1, sp\n" + "\tadds r1, 0x22\n" + "\tldr r0, _0804A518 @ =gWindowConfig_81E7294\n" + "\tbl GetStringWidthGivenWindowConfig\n" + "\tlsls r0, 24\n" + "\tlsrs r0, 24\n" + "\tmovs r1, 0x32\n" + "\tsubs r1, r0\n" + "\tlsrs r0, r1, 31\n" + "\tadds r1, r0\n" + "\tasrs r1, 1\n" + "\tmov r0, r8\n" + "\tstrb r1, [r0, 0x5]\n" + "\tldr r1, [r7]\n" + "\tadds r0, r1, 0x4\n" + "\tadds r1, 0x7A\n" + "\tlsls r2, r5, 5\n" + "\tadds r2, r5\n" + "\tlsls r2, 2\n" + "\tldrb r1, [r1]\n" + "\tadds r2, r1\n" + "\tmovs r1, 0x16\n" + "\tmuls r1, r6\n" + "\tadds r2, r1\n" + "\tlsls r2, 16\n" + "\tlsrs r2, 16\n" + "\tlsls r1, r5, 1\n" + "\tadds r1, r5\n" + "\tlsls r1, 1\n" + "\tadds r1, r6, r1\n" + "\tlsls r1, 1\n" + "\tmov r4, r9\n" + "\tadds r3, r1, r4\n" + "\tldrb r3, [r3]\n" + "\tadd r1, r10\n" + "\tldrb r1, [r1]\n" + "\tstr r1, [sp]\n" + "\tmov r1, r8\n" + "\tbl sub_8003460\n" + "\tadds r0, r6, 0x1\n" + "\tlsls r0, 24\n" + "\tlsrs r6, r0, 24\n" + "\tldr r0, [r7]\n" + "\tadds r0, 0x42\n" + "\tadds r0, r5\n" + "\tldrb r0, [r0]\n" + "\tcmp r6, r0\n" + "\tbcc _0804A462\n" + "_0804A504:\n" + "\tadd sp, 0x44\n" + "\tpop {r3-r5}\n" + "\tmov r8, r3\n" + "\tmov r9, r4\n" + "\tmov r10, r5\n" + "\tpop {r4-r7}\n" + "\tpop {r0}\n" + "\tbx r0\n" + "\t.align 2, 0\n" + "_0804A514: .4byte gEnemyParty\n" + "_0804A518: .4byte gWindowConfig_81E7294"); +} +#endif + +#ifdef NONMATCHING +static +#endif +void sub_804A51C(u8 a0, u8 a1, u8 a2, u8 a3, u8 a4, u8 a5) +{ + u8 nickname[24]; + u8 level; + u8 gender; + u8 lv_div_10; + sub_804A96C(&gUnknown_03004824->unk_00c8, a4, a5, gTradeMonBoxTilemap, 6, 3, 0); + if (a0 == 0) + { + level = GetMonData(&gPlayerParty[a1], MON_DATA_LEVEL, NULL); + gender = GetMonGender(&gPlayerParty[a1]); + GetMonData(&gPlayerParty[a1], MON_DATA_NICKNAME, nickname); + } + else + { + level = GetMonData(&gEnemyParty[a1], MON_DATA_LEVEL, NULL); + gender = GetMonGender(&gEnemyParty[a1]); + GetMonData(&gEnemyParty[a1], MON_DATA_NICKNAME, nickname); + } + if (gUnknown_03004824->unk_005d[a0][a1] == 0) + { + lv_div_10 = level / 10; + if (lv_div_10 != 0) + { + gUnknown_03004824->unk_00c8.unk_12[a2 + 32 * a3] = lv_div_10 + 0x60; + } + gUnknown_03004824->unk_00c8.unk_12[a2 + 32 * a3 + 1] = (u8)(level % 10) + 0x70; + if (gender == MON_MALE) + { + if (!NameHasGenderSymbol(nickname, MON_MALE)) + { + gUnknown_03004824->unk_00c8.unk_12[a2 + 32 * a3 - 31] += 1; + } + } + else if (gender == MON_FEMALE) + { + if (!NameHasGenderSymbol(nickname, MON_FEMALE)) + { + gUnknown_03004824->unk_00c8.unk_12[a2 + 32 * a3 - 31] += 2; + } + } + } + else + { + gUnknown_03004824->unk_00c8.unk_12[a2 + 32 * a3 - 32] = gUnknown_03004824->unk_00c8.unk_12[a2 + 32 * a3 - 33]; + gUnknown_03004824->unk_00c8.unk_12[a2 + 32 * a3 - 31] = gUnknown_03004824->unk_00c8.unk_12[a2 + 32 * a3 - 36] | 0x400; + } +#ifdef GERMAN + gUnknown_03004824->unk_00c8.unk_10 = 1; +#endif +} + +#ifdef NONMATCHING +static void sub_804A6DC(u8 whichParty) +{ + int i; + for (i = 0; i < gUnknown_03004824->partyCounts[whichParty]; i ++) + { + sub_804A51C(whichParty, i, gTradeLevelDisplayCoords[whichParty][i][0], gTradeLevelDisplayCoords[whichParty][i][1], gTradeMonBoxCoords[whichParty][i][0], gTradeMonBoxCoords[whichParty][i][1]); + } +} +#else +__attribute__((naked)) +static void sub_804A6DC(u8 whichParty) +{ + asm_unified("\tpush {r4-r7,lr}\n" + "\tsub sp, 0x8\n" + "\tlsls r0, 24\n" + "\tlsrs r6, r0, 24\n" + "\tmovs r7, 0\n" + "\tldr r0, _0804A734 @ =gUnknown_03004824\n" + "\tldr r0, [r0]\n" + "\tadds r0, 0x42\n" + "\tadds r0, r6\n" + "\tldrb r0, [r0]\n" + "\tcmp r7, r0\n" + "\tbge _0804A72C\n" + "\tlsls r0, r6, 1\n" + "\tadds r0, r6\n" + "\tldr r1, _0804A738 @ =gTradeLevelDisplayCoords\n" + "\tlsls r0, 2\n" + "\tadds r5, r0, r1\n" + "\tldr r1, _0804A73C @ =gTradeMonBoxCoords\n" + "\tadds r4, r0, r1\n" + "_0804A702:\n" + "\tlsls r1, r7, 24\n" + "\tlsrs r1, 24\n" + "\tldrb r2, [r5]\n" + "\tldrb r3, [r5, 0x1]\n" + "\tldrb r0, [r4]\n" + "\tstr r0, [sp]\n" + "\tldrb r0, [r4, 0x1]\n" + "\tstr r0, [sp, 0x4]\n" + "\tadds r0, r6, 0\n" + "\tbl sub_804A51C\n" + "\tadds r5, 0x2\n" + "\tadds r4, 0x2\n" + "\tadds r7, 0x1\n" + "\tldr r0, _0804A734 @ =gUnknown_03004824\n" + "\tldr r0, [r0]\n" + "\tadds r0, 0x42\n" + "\tadds r0, r6\n" + "\tldrb r0, [r0]\n" + "\tcmp r7, r0\n" + "\tblt _0804A702\n" + "_0804A72C:\n" + "\tadd sp, 0x8\n" + "\tpop {r4-r7}\n" + "\tpop {r0}\n" + "\tbx r0\n" + "\t.align 2, 0\n" + "_0804A734: .4byte gUnknown_03004824\n" + "_0804A738: .4byte gTradeLevelDisplayCoords\n" + "_0804A73C: .4byte gTradeMonBoxCoords"); +} +#endif + +static void sub_804A740(u8 whichParty) +{ + int i; + for (i = 0; i < gUnknown_03004824->partyCounts[whichParty]; i ++) + { + gSprites[gUnknown_03004824->partyIcons[whichParty][i]].invisible = FALSE; + gSprites[gUnknown_03004824->partyIcons[whichParty][i]].pos1.x = gTradeMonSpriteCoords[6 * whichParty + i][0] * 8 + 14; + gSprites[gUnknown_03004824->partyIcons[whichParty][i]].pos1.y = gTradeMonSpriteCoords[6 * whichParty + i][1] * 8 - 12; + gSprites[gUnknown_03004824->partyIcons[whichParty][i]].pos2.x = 0; + gSprites[gUnknown_03004824->partyIcons[whichParty][i]].pos2.y = 0; + } +} + +static void sub_804A80C(void) +{ + FillWindowRect_DefaultPalette(&gUnknown_03004824->window, 0, gUnknown_0820C330[1][0], 0, gUnknown_0820C330[1][1], 19); + sub_804A41C(1); +} + +static void sub_804A840(u8 whichParty) +{ + if (whichParty == 0) + { + FillWindowRect_DefaultPalette(&gUnknown_03004824->window, 0, gUnknown_0820C330[0][0], 0, gUnknown_0820C330[0][1], 19); + sub_804A96C_alt(&gUnknown_03004824->unk_00c8, 0, 0, gTradePartyBoxTilemap, 15, 17, 0); + sub_804A6DC(0); + sub_804A41C(0); + sub_804A740(0); + sub_804A938(&gUnknown_03004824->unk_00c8); + } + else + { + HandleDestroyMenuCursors(); + FillWindowRect_DefaultPalette(&gUnknown_03004824->window, 0, gUnknown_0820C330[1][0], 0, gUnknown_0820C330[1][1], 19); + sub_804A96C_alt(&gUnknown_03004824->unk_00c8, 15, 0, gTradePartyBoxTilemap, 15, 17, 0); + sub_804A6DC(1); + sub_804A41C(1); + sub_804A740(1); + sub_804A938(&gUnknown_03004824->unk_00c8); + } + sub_804ACD8(gUnknown_0820C14C[1], (u8 *)(BG_CHAR_ADDR(4) + 32 * gUnknown_03004824->unk_007e), 20); + gUnknown_03004824->unk_0080[whichParty] = 0; +} + +static void sub_804A938(struct UnkStructD *unkStructD) +{ + unkStructD->unk_10 = 1; +} + +static void sub_804A940(struct UnkStructD *unkStructD) +{ + if (unkStructD->unk_10) + { + CpuCopy16(unkStructD->unk_12, unkStructD->vramAddr, sizeof(unkStructD->unk_12)); + unkStructD->unk_10 = 0; + } +} + +static void sub_804A964(struct UnkStructD *unkStructD, void *dest) +{ + unkStructD->unk_10 = 0; + unkStructD->vramAddr = dest; +} + +static void sub_804A96C(struct UnkStructD *arg0, u8 left, u8 top, const u16 *tilemap, u8 width, u8 height, u16 sp8) { + int y, x; + + for (y = 0; y < height; y++) + { + + for (x = 0; x < width; x++) + { + arg0->unk_12[(top * 32 + left) + y * 32 + x] = tilemap[width * y + x] | sp8; + } + } + +#if ENGLISH + arg0->unk_10 = 1; +#endif +} + +#if GERMAN +static void sub_804A96C_alt(struct UnkStructD *arg0, u8 left, u8 top, const u16 *tilemap, u8 width, u8 height, u16 sp8) { + sub_804A96C(arg0, left, top, tilemap, width, height, sp8); + + arg0->unk_10 = 1; +} +#endif + +static void sub_804A9F4(u8 unused) +{ + MenuZeroFillScreen(); +} + +static void sub_804AA00(u8 unused) +{ + MenuZeroFillScreen(); +} + +static void sub_804AA0C(u8 a0) +{ + DrawTextWindow(&gUnknown_03004824->window, gTradeMessageWindowRects[a0][0], gTradeMessageWindowRects[a0][1], gTradeMessageWindowRects[a0][2], gTradeMessageWindowRects[a0][3]); + sub_8003460(&gUnknown_03004824->window, gUnknown_0820C2F0[a0], 0x180 + gUnknown_03004824->unk_007a, gTradeMessageWindowRects[a0][0] + 1, gTradeMessageWindowRects[a0][1] + 1); +} + +static void sub_804AA88(void) +{ + int i; + for (i = 0; i < 4; i ++) + { + gUnknown_03004824->unk_08dc[i].unk_00 = 0; + gUnknown_03004824->unk_08dc[i].unk_02 = 0; + gUnknown_03004824->unk_08dc[i].unk_04 |= 0xff; + } +} + +static void sub_804AADC(u16 a0, u8 a1) +{ + int i; + for (i = 0; i < 4; i ++) + { + if (gUnknown_03004824->unk_08dc[i].unk_00 == 0) + { + gUnknown_03004824->unk_08dc[i].unk_02 = a0; + gUnknown_03004824->unk_08dc[i].unk_04 = a1; + gUnknown_03004824->unk_08dc[i].unk_00 = 1; + break; + } + } +} + +static void sub_804AB30(void) +{ + int i; + for (i = 0; i < 4; i ++) + { + if (gUnknown_03004824->unk_08dc[i].unk_00) + { + if (gUnknown_03004824->unk_08dc[i].unk_02 != 0) + { + gUnknown_03004824->unk_08dc[i].unk_02 --; + continue; + } + switch (gUnknown_03004824->unk_08dc[i].unk_04) + { + case 0: + Trade_SendData(gUnknown_03004824); + break; + case 1: + sub_804AA0C(0); + break; + case 2: + sub_804AA0C(2); + break; + case 3: + sub_804AA0C(3); + break; + case 4: + sub_804AA0C(3); + break; + case 5: + sub_804AA0C(3); + break; + } + gUnknown_03004824->unk_08dc[i].unk_00 = 0; + } + } +} + +static bool8 sub_804ABF8(void) +{ + switch (gUnknown_03004824->unk_00b4) + { + case 8: + gUnknown_03004824->unk_007e = LoadSpriteSheet(&gUnknown_0820C07C[gUnknown_03004824->unk_00b4]); + gUnknown_03004824->unk_00b4 ++; + return FALSE; + case 13: + LoadSpritePalette(&gSpritePalette_TradeScreenText); + gUnknown_03004824->unk_00b4 ++; + return FALSE; + case 14: + LoadSpritePalette(&gUnknown_0820C12C); + gUnknown_03004824->unk_00b4 ++; + return FALSE; + case 15: + LoadSpriteSheet(&gUnknown_0820C124); + gUnknown_03004824->unk_00b4 ++; + // fallthrough + case 16: + gUnknown_03004824->unk_00b4 = 0; + return TRUE; + default: + LoadSpriteSheet(&gUnknown_0820C07C[gUnknown_03004824->unk_00b4]); + gUnknown_03004824->unk_00b4 ++; + return FALSE; + } +} + +static void sub_804ACD8(const u8 *src, u8 *dest, u8 a2) +{ + sub_804AFB8(&gWindowConfig_81E725C, dest, src, a2); +} + +#ifdef NONMATCHING +static void sub_804ACF4(u8 who) +{ + struct Pokemon *pokemon; + int i; + switch (who) + { + case 0: + for (i = 0; i < gUnknown_03004824->partyCounts[0]; i ++) + { + pokemon = &gPlayerParty[i]; + if (GetMonData(pokemon, MON_DATA_IS_EGG) == TRUE) + { + gUnknown_03004824->unk_0051[0][i] = 0; + gUnknown_03004824->unk_005d[0][i] = 1; + } + else if (GetMonData(pokemon, MON_DATA_HP) == 0) + { + gUnknown_03004824->unk_0051[0][i] = 0; + gUnknown_03004824->unk_005d[0][i] = 0; + } + else + { + gUnknown_03004824->unk_0051[0][i] = 1; + gUnknown_03004824->unk_005d[0][i] = 0; + } + } + break; + case 1: + for (i = 0; i < gUnknown_03004824->partyCounts[1]; i ++) + { + pokemon = &gEnemyParty[i]; + if (GetMonData(pokemon, MON_DATA_IS_EGG) == TRUE) + { + gUnknown_03004824->unk_0051[1][i] = 0; + gUnknown_03004824->unk_005d[1][i] = 1; + } + else if (GetMonData(pokemon, MON_DATA_HP) == 0) + { + gUnknown_03004824->unk_0051[1][i] = 0; + gUnknown_03004824->unk_005d[1][i] = 0; + } + else + { + gUnknown_03004824->unk_0051[1][i] = 1; + gUnknown_03004824->unk_005d[1][i] = 0; + } + } + break; + } +} +#else +static __attribute__((naked)) void sub_804ACF4(u8 who) +{ + asm_unified("\tpush {r4-r7,lr}\n" + "\tmov r7, r9\n" + "\tmov r6, r8\n" + "\tpush {r6,r7}\n" + "\tlsls r0, 24\n" + "\tlsrs r0, 24\n" + "\tmov r8, r0\n" + "\tcmp r0, 0\n" + "\tbeq _0804AD0C\n" + "\tcmp r0, 0x1\n" + "\tbeq _0804ADA0\n" + "\tb _0804AE2C\n" + "_0804AD0C:\n" + "\tmovs r7, 0\n" + "\tldr r1, _0804AD4C @ =gUnknown_03004824\n" + "\tldr r0, [r1]\n" + "\tadds r0, 0x42\n" + "\tldrb r0, [r0]\n" + "\tcmp r7, r0\n" + "\tblt _0804AD1C\n" + "\tb _0804AE2C\n" + "_0804AD1C:\n" + "\tadds r6, r1, 0\n" + "\tmovs r5, 0\n" + "\tmov r9, r5\n" + "_0804AD22:\n" + "\tmovs r0, 0x64\n" + "\tadds r1, r7, 0\n" + "\tmuls r1, r0\n" + "\tldr r0, _0804AD50 @ =gPlayerParty\n" + "\tadds r4, r1, r0\n" + "\tadds r0, r4, 0\n" + "\tmovs r1, 0x2D\n" + "\tbl GetMonData\n" + "\tadds r1, r0, 0\n" + "\tcmp r1, 0x1\n" + "\tbne _0804AD54\n" + "\tldr r0, [r6]\n" + "\tadds r0, 0x51\n" + "\tadds r0, r5\n" + "\tmov r2, r9\n" + "\tstrb r2, [r0]\n" + "\tldr r0, [r6]\n" + "\tadds r0, 0x5D\n" + "\tadds r0, r5\n" + "\tb _0804AD84\n" + "\t.align 2, 0\n" + "_0804AD4C: .4byte gUnknown_03004824\n" + "_0804AD50: .4byte gPlayerParty\n" + "_0804AD54:\n" + "\tadds r0, r4, 0\n" + "\tmovs r1, 0x39\n" + "\tbl GetMonData\n" + "\tadds r1, r0, 0\n" + "\tcmp r1, 0\n" + "\tbne _0804AD72\n" + "\tldr r0, [r6]\n" + "\tadds r0, 0x51\n" + "\tadds r0, r5\n" + "\tstrb r1, [r0]\n" + "\tldr r0, [r6]\n" + "\tadds r0, 0x5D\n" + "\tadds r0, r5\n" + "\tb _0804AD84\n" + "_0804AD72:\n" + "\tldr r0, [r6]\n" + "\tadds r0, 0x51\n" + "\tadds r0, r5\n" + "\tmovs r1, 0x1\n" + "\tstrb r1, [r0]\n" + "\tldr r0, [r6]\n" + "\tadds r0, 0x5D\n" + "\tadds r0, r5\n" + "\tmov r1, r9\n" + "_0804AD84:\n" + "\tstrb r1, [r0]\n" + "\tldr r0, _0804AD9C @ =gUnknown_03004824\n" + "\tadds r5, 0x1\n" + "\tadds r7, 0x1\n" + "\tldr r0, [r0]\n" + "\tadds r0, 0x42\n" + "\tadd r0, r8\n" + "\tldrb r0, [r0]\n" + "\tcmp r7, r0\n" + "\tblt _0804AD22\n" + "\tb _0804AE2C\n" + "\t.align 2, 0\n" + "_0804AD9C: .4byte gUnknown_03004824\n" + "_0804ADA0:\n" + "\tmovs r7, 0\n" + "\tldr r1, _0804ADE0 @ =gUnknown_03004824\n" + "\tldr r0, [r1]\n" + "\tadds r0, 0x43\n" + "\tldrb r0, [r0]\n" + "\tcmp r7, r0\n" + "\tbge _0804AE2C\n" + "\tadds r6, r1, 0\n" + "\tmovs r5, 0x6\n" + "\tmovs r2, 0\n" + "\tmov r9, r2\n" + "_0804ADB6:\n" + "\tmovs r0, 0x64\n" + "\tadds r1, r7, 0\n" + "\tmuls r1, r0\n" + "\tldr r0, _0804ADE4 @ =gEnemyParty\n" + "\tadds r4, r1, r0\n" + "\tadds r0, r4, 0\n" + "\tmovs r1, 0x2D\n" + "\tbl GetMonData\n" + "\tadds r1, r0, 0\n" + "\tcmp r1, 0x1\n" + "\tbne _0804ADE8\n" + "\tldr r0, [r6]\n" + "\tadds r0, 0x51\n" + "\tadds r0, r5\n" + "\tmov r2, r9\n" + "\tstrb r2, [r0]\n" + "\tldr r0, [r6]\n" + "\tadds r0, 0x5D\n" + "\tadds r0, r5\n" + "\tb _0804AE18\n" + "\t.align 2, 0\n" + "_0804ADE0: .4byte gUnknown_03004824\n" + "_0804ADE4: .4byte gEnemyParty\n" + "_0804ADE8:\n" + "\tadds r0, r4, 0\n" + "\tmovs r1, 0x39\n" + "\tbl GetMonData\n" + "\tadds r1, r0, 0\n" + "\tcmp r1, 0\n" + "\tbne _0804AE06\n" + "\tldr r0, [r6]\n" + "\tadds r0, 0x51\n" + "\tadds r0, r5\n" + "\tstrb r1, [r0]\n" + "\tldr r0, [r6]\n" + "\tadds r0, 0x5D\n" + "\tadds r0, r5\n" + "\tb _0804AE18\n" + "_0804AE06:\n" + "\tldr r0, [r6]\n" + "\tadds r0, 0x51\n" + "\tadds r0, r5\n" + "\tmovs r1, 0x1\n" + "\tstrb r1, [r0]\n" + "\tldr r0, [r6]\n" + "\tadds r0, 0x5D\n" + "\tadds r0, r5\n" + "\tmov r1, r9\n" + "_0804AE18:\n" + "\tstrb r1, [r0]\n" + "\tldr r0, _0804AE38 @ =gUnknown_03004824\n" + "\tadds r5, 0x1\n" + "\tadds r7, 0x1\n" + "\tldr r0, [r0]\n" + "\tadds r0, 0x42\n" + "\tadd r0, r8\n" + "\tldrb r0, [r0]\n" + "\tcmp r7, r0\n" + "\tblt _0804ADB6\n" + "_0804AE2C:\n" + "\tpop {r3,r4}\n" + "\tmov r8, r3\n" + "\tmov r9, r4\n" + "\tpop {r4-r7}\n" + "\tpop {r0}\n" + "\tbx r0\n" + "\t.align 2, 0\n" + "_0804AE38: .4byte gUnknown_03004824"); +} +#endif + +static void sub_804AE3C(u8 who) +{ + u16 i; + u16 curHp; + u16 maxHp; + switch (who) + { + case 0: + for (i = 0; i < gUnknown_03004824->partyCounts[0]; i ++) + { + curHp = GetMonData(&gPlayerParty[i], MON_DATA_HP); + maxHp = GetMonData(&gPlayerParty[i], MON_DATA_MAX_HP); + gUnknown_03004824->unk_0069[0][i] = GetHPBarLevel(curHp, maxHp); + } + break; + case 1: + for (i = 0; i < gUnknown_03004824->partyCounts[1]; i ++) + { + curHp = GetMonData(&gEnemyParty[i], MON_DATA_HP); + maxHp = GetMonData(&gEnemyParty[i], MON_DATA_MAX_HP); + gUnknown_03004824->unk_0069[1][i] = GetHPBarLevel(curHp, maxHp); + } + break; + } +} + +static void sub_804AF10(void) +{ + int i, j; + for (i = 0; i < 2; i ++) + { + for (j = 0; j < gUnknown_03004824->partyCounts[i]; j ++) + { + sub_809D824(&gSprites[gUnknown_03004824->partyIcons[i][j]], 4 - gUnknown_03004824->unk_0069[i][j]); + } + } +} + +static void sub_804AF84(void) +{ + int i; + for (i = 0; i < 11; i ++) + if (gSaveBlock1.giftRibbons[i] == 0 && gUnknown_03004824->unk_00b5[i] != 0) + gSaveBlock1.giftRibbons[i] = gUnknown_03004824->unk_00b5[i]; +} + +static void sub_804AFB8(const struct WindowConfig *windowConfig, u8 *dest, const u8 *src, u8 size) +{ + u8 i; + u8 *tileBuffer; + size = (size + 3) / 4; + tileBuffer = gTileBuffer; + CpuFill16(0, tileBuffer, size * 0x80); + CpuFill16(0, tileBuffer + windowConfig->width * 0x20, size * 0x80); + sub_8004E3C(windowConfig, tileBuffer, src); + for (i = 0; i < size; i ++) + { + CpuCopy16(&tileBuffer[32 * (i * 4)], &dest[32 * (i * 8)], 0x80); + CpuCopy16(&tileBuffer[32 * (i * 4 + windowConfig->width)], &dest[32 * (i * 8 + 4)], 0x80); + } +} + +static void sub_804B058(struct Sprite *sprite) +{ + if (++ sprite->data0 == 10) + { + PlaySE(SE_BOWA); + sprite->data0 = 0; + } +} + +static void sub_804B07C(struct Sprite *sprite) +{ + if (sprite->data1 == 0) + { + if (++ sprite->data0 == 12) + sprite->data0 = 0; + LoadPalette(&gTradeGlow2PaletteAnimTable[sprite->data0], 16 * (sprite->oam.paletteNum + 16) + 4, 2); + } +} + +static void sub_804B0BC(struct Sprite *sprite) +{ + sprite->data0 ++; + sprite->pos2.y ++; + if (sprite->data0 == 10) + DestroySprite(sprite); +} + +static void sub_804B0E0(struct Sprite *sprite) +{ + sprite->data0 ++; + sprite->pos2.y --; + if (sprite->data0 == 10) + DestroySprite(sprite); +} + +static void sub_804B104(struct Sprite *sprite) +{ + if (++ sprite->data0 == 15) + { + PlaySE(SE_W107); + sprite->data0 = 0; + } +} + +static void sub_804B128(void) +{ + struct BgAffineDstData dest; + DoBgAffineSet(&dest, gUnknown_03004828->unk_0104 << 8, gUnknown_03004828->unk_0106 << 8, gUnknown_03004828->unk_010c, gUnknown_03004828->unk_010e, gUnknown_03004828->unk_0118, gUnknown_03004828->unk_0118, gUnknown_03004828->unk_011c); + REG_BG2PA = dest.pa; + REG_BG2PB = dest.pb; + REG_BG2PC = dest.pc; + REG_BG2PD = dest.pd; + REG_BG2X = dest.dx; + REG_BG2Y = dest.dy; +} + +#ifdef NONMATCHING +static void sub_804B1BC(void) +{ + REG_BG1VOFS = gUnknown_03004828->bg1vofs; + REG_BG1HOFS = gUnknown_03004828->bg1hofs; + if ((REG_DISPCNT & 7) == DISPCNT_MODE_0) + { + REG_BG2VOFS = gUnknown_03004828->bg2vofs; + REG_BG2HOFS = gUnknown_03004828->bg2hofs; + } + else + { + sub_804B128(); + } +} +#else +__attribute__((naked)) static void sub_804B1BC(void) +{ + asm_unified("\tpush {lr}\n" + "\tldr r1, _0804B1FC @ =REG_BG1VOFS\n" + "\tldr r0, _0804B200 @ =gUnknown_03004828\n" + "\tldr r2, [r0]\n" + "\tmovs r3, 0x88\n" + "\tlsls r3, 1\n" + "\tadds r0, r2, r3\n" + "\tldrh r0, [r0]\n" + "\tstrh r0, [r1]\n" + "\tsubs r1, 0x2\n" + "\tadds r3, 0x2\n" + "\tadds r0, r2, r3\n" + "\tldrh r0, [r0]\n" + "\tstrh r0, [r1]\n" + "\tmovs r0, 0x80\n" + "\tlsls r0, 19\n" + "\tldrh r0, [r0]\n" + "\tmovs r1, 0x7\n" + "\tands r0, r1\n" + "\tcmp r0, 0\n" + "\tbne _0804B208\n" + "\tldr r1, _0804B204 @ =REG_BG2VOFS\n" + "\tadds r3, 0x2\n" + "\tadds r0, r2, r3\n" + "\tldrh r0, [r0]\n" + "\tstrh r0, [r1]\n" + "\tsubs r1, 0x2\n" + "\tadds r3, 0x2\n" + "\tadds r0, r2, r3\n" + "\tldrh r0, [r0]\n" + "\tstrh r0, [r1]\n" + "\tb _0804B20C\n" + "\t.align 2, 0\n" + "_0804B1FC: .4byte REG_BG1VOFS\n" + "_0804B200: .4byte gUnknown_03004828\n" + "_0804B204: .4byte REG_BG2VOFS\n" + "_0804B208:\n" + "\tbl sub_804B128\n" + "_0804B20C:\n" + "\tpop {r0}\n" + "\tbx r0"); +} +#endif + +static void sub_804B210(void) +{ + sub_804B1BC(); + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); +} + +static void sub_804B228(void) +{ + gUnknown_03004828->unk_00b4 = 0; + gUnknown_03004828->unk_00b2 = 0; + gUnknown_03004828->unk_00b3 = 0; +} + +#ifdef NONMATCHING +static +#endif +void sub_804B24C(void) +{ + if (gUnknown_03004828->unk_00b2 == gUnknown_03004828->unk_00b3) + { + gUnknown_03004828->unk_00b4 ++; + } + else + { + gUnknown_03004828->unk_00b4 = 0; + } + if (gUnknown_03004828->unk_00b4 > 0xb4) + { + gUnknown_03004828->unk_00b4 = 0; + gUnknown_03004828->unk_00b3 = 0; + gUnknown_03004828->unk_00b2 = 0; + } + gUnknown_03004828->unk_00b3 = gUnknown_03004828->unk_00b2; +} + +static u8 sub_804B2B0(void) +{ + if (gReceivedRemoteLinkPlayers) + return GetMultiplayerId(); + return 0; +} + +static void sub_804B2D0(u8 whichParty, u8 a1) +{ + u8 v0; + struct Pokemon *pokemon; + u16 species; + u32 personality; + + v0 = 0; + pokemon = NULL; + if (whichParty == 0) + { + pokemon = &gPlayerParty[gUnknown_020297D8[0]]; + v0 = 1; + } + if (whichParty == 1) + { + pokemon = &gEnemyParty[gUnknown_020297D8[1] % 6]; + v0 = 3; + } + switch (a1) + { + case 0: + species = GetMonData(pokemon, MON_DATA_SPECIES2); + personality = GetMonData(pokemon, MON_DATA_PERSONALITY); + HandleLoadSpecialPokePic(&gMonFrontPicTable[species], gMonFrontPicCoords[species].coords, gMonFrontPicCoords[species].y_offset, (u32)ewram, gUnknown_081FAF4C[whichParty * 2 + 1], species, personality); + LoadCompressedObjectPalette(GetMonSpritePalStruct(pokemon)); + gUnknown_03004828->tradeSpecies[whichParty] = species; + break; + case 1: + GetMonSpriteTemplate_803C56C(GetMonSpritePalStruct(pokemon)->tag, v0); + gUnknown_03004828->pokePicSpriteIdxs[whichParty] = CreateSprite(&gUnknown_02024E8C, 0x78, 0x3c, 0x6); + gSprites[gUnknown_03004828->pokePicSpriteIdxs[whichParty]].invisible = TRUE; + gSprites[gUnknown_03004828->pokePicSpriteIdxs[whichParty]].callback = SpriteCallbackDummy; + break; + } +} + +#ifdef NONMATCHING +static void sub_804B41C(void) +// Link trade init +{ + switch (gMain.state) + { + case 0: + REG_DISPCNT = 0; + ResetTasks(); + CloseLink(); + gUnknown_03004828 = &ewram_2010000.unk_0f000; + ResetSpriteData(); + FreeAllSpritePalettes(); + SetVBlankCallback(sub_804B210); + sub_804B228(); + SetUpWindowConfig(&gWindowConfig_81E6F84); + InitWindowFromConfig(&gUnknown_03004828->window, &gWindowConfig_81E6F84); + gUnknown_03004828->textWindowBaseTileNum = SetTextWindowBaseTileNum(2); + LoadTextWindowGraphics(&gUnknown_03004828->window); + MenuZeroFillScreen(); + gLinkType = 0x1144; + gMain.state ++; + LZDecompressVram(gUnknown_08D00000, (void *)VRAM); + CpuCopy16(gUnknown_08D00524, ewram, 0x1000); + DmaCopy16Defvars(3, ewram, (void *)BG_SCREEN_ADDR(5), 0x500); + LoadCompressedPalette(gUnknown_08D004E0, 0, 32); + gUnknown_03004828->unk_00b6 = 0; + gUnknown_03004828->unk_00c4 = 0; + gUnknown_03004828->isLinkTrade = TRUE; + gUnknown_03004828->unk_0104 = 0x40; + gUnknown_03004828->unk_0106 = 0x40; + gUnknown_03004828->unk_0108 = 0; + gUnknown_03004828->unk_010a = 0; + gUnknown_03004828->unk_010c = 0x78; + gUnknown_03004828->unk_010e = 0x50; + gUnknown_03004828->unk_0118 = 0x100; + gUnknown_03004828->unk_011c = 0; + break; + case 1: + OpenLink(); + gMain.state ++; + gUnknown_03004828->unk_00c0 = 0; + break; + case 2: + if (++ gUnknown_03004828->unk_00c0 > 60) + { + gUnknown_03004828->unk_00c0 = 0; + gMain.state ++; + } + break; + case 3: + if (IsLinkMaster()) + { + if (GetLinkPlayerCount_2() >= sub_800820C() && ++ gUnknown_03004828->unk_00c0 > 30) + { + sub_8007F4C(); + gMain.state ++; + } + } + else + { + gMain.state ++; + } + break; + case 4: + sub_804B24C(); + if (gReceivedRemoteLinkPlayers == TRUE && IsLinkPlayerDataExchangeComplete() == TRUE) gMain.state ++; + break; + case 5: + gUnknown_03004828->unk_009c = 0; + gUnknown_03004828->unk_009d = 0; + gUnknown_03004828->unk_00bd = 0; + sub_804B2D0(0, 0); + gMain.state ++; + break; + case 6: + sub_804B2D0(0, 1); + gMain.state ++; + break; + case 7: + sub_804B2D0(1, 0); + gMain.state ++; + break; + case 8: + sub_804B2D0(1, 1); + gMain.state ++; + break; + case 9: + sub_804C164(); + LoadSpriteSheet(&gUnknown_0821594C); + LoadSpritePalette(&gUnknown_08215954); + REG_BG1CNT = BGCNT_PRIORITY(2) | BGCNT_SCREENBASE(5); + gMain.state ++; + break; + case 10: + gMain.state ++; + // fallthrough + case 11: + sub_804BBE8(5); + sub_804BBE8(0); + sub_804C1A8(); + BeginNormalPaletteFade(-1, 0, 16, 0, 0); + gMain.state ++; + break; + case 12: + if (!gPaletteFade.active) + { + SetMainCallback2(sub_804DB84); + } + break; + } + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} +#else +static __attribute__((naked)) void sub_804B41C(void) +{ + asm_unified("\tpush {r4-r6,lr}\n" + "\tsub sp, 0x4\n" + "\tldr r1, _0804B43C @ =gMain\n" + "\tldr r2, _0804B440 @ =0x0000043c\n" + "\tadds r0, r1, r2\n" + "\tldrb r0, [r0]\n" + "\tadds r2, r1, 0\n" + "\tcmp r0, 0xC\n" + "\tbls _0804B430\n" + "\tb _0804B76E_break\n" + "_0804B430:\n" + "\tlsls r0, 2\n" + "\tldr r1, _0804B444 @ =_0804B448\n" + "\tadds r0, r1\n" + "\tldr r0, [r0]\n" + "\tmov pc, r0\n" + "\t.align 2, 0\n" + "_0804B43C: .4byte gMain\n" + "_0804B440: .4byte 0x0000043c\n" + "_0804B444: .4byte _0804B448\n" + "\t.align 2, 0\n" + "_0804B448:\n" + "\t.4byte _0804B47C_case00\n" + "\t.4byte _0804B5AC_case01\n" + "\t.4byte _0804B5D4_case02\n" + "\t.4byte _0804B5FC_case03\n" + "\t.4byte _0804B648_case04\n" + "\t.4byte _0804B678_case05\n" + "\t.4byte _0804B6A8_case06\n" + "\t.4byte _0804B6B2_case07\n" + "\t.4byte _0804B6CC_case08\n" + "\t.4byte _0804B6E4_case09\n" + "\t.4byte _0804B71C_case10\n" + "\t.4byte _0804B726_case11\n" + "\t.4byte _0804B75C_case12\n" + "_0804B47C_case00:\n" + "\tmovs r1, 0x80\n" + "\tlsls r1, 19\n" + "\tmovs r0, 0\n" + "\tstrh r0, [r1]\n" + "\tbl ResetTasks\n" + "\tbl CloseLink\n" + "\tldr r6, _0804B570 @ =gUnknown_03004828\n" + "\tldr r5, _0804B574 @ =0x0201f000\n" + "\tstr r5, [r6]\n" + "\tbl ResetSpriteData\n" + "\tbl FreeAllSpritePalettes\n" + "\tldr r0, _0804B578 @ =sub_804B210\n" + "\tbl SetVBlankCallback\n" + "\tbl sub_804B228\n" + "\tldr r4, _0804B57C @ =gWindowConfig_81E6F84\n" + "\tadds r0, r4, 0\n" + "\tbl SetUpWindowConfig\n" + "\tldr r0, [r6]\n" + "\tadds r0, 0x4\n" + "\tadds r1, r4, 0\n" + "\tbl InitWindowFromConfig\n" + "\tmovs r0, 0x2\n" + "\tbl SetTextWindowBaseTileNum\n" + "\tldr r1, [r6]\n" + "\tadds r1, 0x34\n" + "\tstrb r0, [r1]\n" + "\tldr r0, [r6]\n" + "\tadds r0, 0x4\n" + "\tbl LoadTextWindowGraphics\n" + "\tbl MenuZeroFillScreen\n" + "\tldr r1, _0804B580 @ =gLinkType\n" + "\tldr r4, _0804B584 @ =0x00001144\n" + "\tadds r0, r4, 0\n" + "\tstrh r0, [r1]\n" + "\tldr r1, _0804B588 @ =gMain\n" + "\tldr r0, _0804B58C @ =0x0000043c\n" + "\tadds r1, r0\n" + "\tldrb r0, [r1]\n" + "\tadds r0, 0x1\n" + "\tstrb r0, [r1]\n" + "\tldr r0, _0804B590 @ =gUnknown_08D00000\n" + "\tmovs r1, 0xC0\n" + "\tlsls r1, 19\n" + "\tbl LZDecompressVram\n" + "\tldr r0, _0804B594 @ =gUnknown_08D00524\n" + "\tldr r1, _0804B598 @ =0xfffe1000\n" + "\tadds r5, r1\n" + "\tmovs r2, 0x80\n" + "\tlsls r2, 4\n" + "\tadds r1, r5, 0\n" + "\tbl CpuSet\n" + "\tldr r1, _0804B59C @ =0x06002800\n" + "\tldr r0, _0804B5A0 @ =0x040000d4\n" + "\tstr r5, [r0]\n" + "\tstr r1, [r0, 0x4]\n" + "\tldr r1, _0804B5A4 @ =0x80000280\n" + "\tstr r1, [r0, 0x8]\n" + "\tldr r0, [r0, 0x8]\n" + "\tldr r0, _0804B5A8 @ =gUnknown_08D004E0\n" + "\tmovs r1, 0\n" + "\tmovs r2, 0x20\n" + "\tbl LoadCompressedPalette\n" + "\tldr r1, [r6]\n" + "\tadds r0, r1, 0\n" + "\tadds r0, 0xB6\n" + "\tmovs r2, 0\n" + "\tstrh r2, [r0]\n" + "\tadds r0, 0xE\n" + "\tstrh r2, [r0]\n" + "\tmovs r4, 0x8F\n" + "\tlsls r4, 1\n" + "\tadds r1, r4\n" + "\tmovs r0, 0x1\n" + "\tstrb r0, [r1]\n" + "\tldr r3, [r6]\n" + "\tmovs r1, 0x82\n" + "\tlsls r1, 1\n" + "\tadds r0, r3, r1\n" + "\tmovs r1, 0x40\n" + "\tstrh r1, [r0]\n" + "\tsubs r4, 0x18\n" + "\tadds r0, r3, r4\n" + "\tstrh r1, [r0]\n" + "\tadds r1, 0xC8\n" + "\tadds r0, r3, r1\n" + "\tstrh r2, [r0]\n" + "\tadds r4, 0x4\n" + "\tadds r0, r3, r4\n" + "\tstrh r2, [r0]\n" + "\tmovs r0, 0x86\n" + "\tlsls r0, 1\n" + "\tadds r1, r3, r0\n" + "\tmovs r0, 0x78\n" + "\tstrh r0, [r1]\n" + "\tadds r4, 0x4\n" + "\tadds r1, r3, r4\n" + "\tmovs r0, 0x50\n" + "\tstrh r0, [r1]\n" + "\tadds r0, 0xC8\n" + "\tadds r1, r3, r0\n" + "\tsubs r0, 0x18\n" + "\tstrh r0, [r1]\n" + "\tmovs r1, 0x8E\n" + "\tlsls r1, 1\n" + "\tadds r0, r3, r1\n" + "\tstrh r2, [r0]\n" + "\tb _0804B76E_break\n" + "\t.align 2, 0\n" + "_0804B570: .4byte gUnknown_03004828\n" + "_0804B574: .4byte 0x0201f000\n" + "_0804B578: .4byte sub_804B210\n" + "_0804B57C: .4byte gWindowConfig_81E6F84\n" + "_0804B580: .4byte gLinkType\n" + "_0804B584: .4byte 0x00001144\n" + "_0804B588: .4byte gMain\n" + "_0804B58C: .4byte 0x0000043c\n" + "_0804B590: .4byte gUnknown_08D00000\n" + "_0804B594: .4byte gUnknown_08D00524\n" + "_0804B598: .4byte 0xfffe1000\n" + "_0804B59C: .4byte 0x06002800\n" + "_0804B5A0: .4byte 0x040000d4\n" + "_0804B5A4: .4byte 0x80000280\n" + "_0804B5A8: .4byte gUnknown_08D004E0\n" + "_0804B5AC_case01:\n" + "\tbl OpenLink\n" + "\tldr r1, _0804B5C8 @ =gMain\n" + "\tldr r2, _0804B5CC @ =0x0000043c\n" + "\tadds r1, r2\n" + "\tldrb r0, [r1]\n" + "\tadds r0, 0x1\n" + "\tmovs r2, 0\n" + "\tstrb r0, [r1]\n" + "\tldr r0, _0804B5D0 @ =gUnknown_03004828\n" + "\tldr r0, [r0]\n" + "\tadds r0, 0xC0\n" + "\tstr r2, [r0]\n" + "\tb _0804B76E_break\n" + "\t.align 2, 0\n" + "_0804B5C8: .4byte gMain\n" + "_0804B5CC: .4byte 0x0000043c\n" + "_0804B5D0: .4byte gUnknown_03004828\n" + "_0804B5D4_case02:\n" + "\tldr r0, _0804B5F4 @ =gUnknown_03004828\n" + "\tldr r0, [r0]\n" + "\tadds r1, r0, 0\n" + "\tadds r1, 0xC0\n" + "\tldr r0, [r1]\n" + "\tadds r0, 0x1\n" + "\tstr r0, [r1]\n" + "\tcmp r0, 0x3C\n" + "\tbhi _0804B5E8\n" + "\tb _0804B76E_break\n" + "_0804B5E8:\n" + "\tmovs r0, 0\n" + "\tstr r0, [r1]\n" + "\tldr r4, _0804B5F8 @ =0x0000043c\n" + "\tadds r1, r2, r4\n" + "\tb _0804B74C\n" + "\t.align 2, 0\n" + "_0804B5F4: .4byte gUnknown_03004828\n" + "_0804B5F8: .4byte 0x0000043c\n" + "_0804B5FC_case03:\n" + "\tbl IsLinkMaster\n" + "\tlsls r0, 24\n" + "\tcmp r0, 0\n" + "\tbne _0804B608\n" + "\tb _0804B746\n" + "_0804B608:\n" + "\tbl GetLinkPlayerCount_2\n" + "\tadds r4, r0, 0\n" + "\tbl sub_800820C\n" + "\tlsls r4, 24\n" + "\tlsls r0, 24\n" + "\tcmp r4, r0\n" + "\tbcs _0804B61C\n" + "\tb _0804B76E_break\n" + "_0804B61C:\n" + "\tldr r0, _0804B63C @ =gUnknown_03004828\n" + "\tldr r1, [r0]\n" + "\tadds r1, 0xC0\n" + "\tldr r0, [r1]\n" + "\tadds r0, 0x1\n" + "\tstr r0, [r1]\n" + "\tcmp r0, 0x1E\n" + "\tbhi _0804B62E\n" + "\tb _0804B76E_break\n" + "_0804B62E:\n" + "\tbl sub_8007F4C\n" + "\tldr r1, _0804B640 @ =gMain\n" + "\tldr r0, _0804B644 @ =0x0000043c\n" + "\tadds r1, r0\n" + "\tb _0804B74C\n" + "\t.align 2, 0\n" + "_0804B63C: .4byte gUnknown_03004828\n" + "_0804B640: .4byte gMain\n" + "_0804B644: .4byte 0x0000043c\n" + "_0804B648_case04:\n" + "\tbl sub_804B24C\n" + "\tldr r0, _0804B66C @ =gReceivedRemoteLinkPlayers\n" + "\tldrb r0, [r0]\n" + "\tcmp r0, 0x1\n" + "\tbeq _0804B656\n" + "\tb _0804B76E_break\n" + "_0804B656:\n" + "\tbl IsLinkPlayerDataExchangeComplete\n" + "\tlsls r0, 24\n" + "\tlsrs r0, 24\n" + "\tcmp r0, 0x1\n" + "\tbeq _0804B664\n" + "\tb _0804B76E_break\n" + "_0804B664:\n" + "\tldr r1, _0804B670 @ =gMain\n" + "\tldr r4, _0804B674 @ =0x0000043c\n" + "\tadds r1, r4\n" + "\tb _0804B74C\n" + "\t.align 2, 0\n" + "_0804B66C: .4byte gReceivedRemoteLinkPlayers\n" + "_0804B670: .4byte gMain\n" + "_0804B674: .4byte 0x0000043c\n" + "_0804B678_case05:\n" + "\tldr r2, _0804B69C @ =gUnknown_03004828\n" + "\tldr r0, [r2]\n" + "\tadds r0, 0x9C\n" + "\tmovs r1, 0\n" + "\tstrb r1, [r0]\n" + "\tldr r0, [r2]\n" + "\tadds r0, 0x9D\n" + "\tstrb r1, [r0]\n" + "\tldr r0, [r2]\n" + "\tadds r0, 0xBD\n" + "\tstrb r1, [r0]\n" + "\tmovs r0, 0\n" + "\tbl sub_804B2D0\n" + "\tldr r1, _0804B6A0 @ =gMain\n" + "\tldr r0, _0804B6A4 @ =0x0000043c\n" + "\tadds r1, r0\n" + "\tb _0804B74C\n" + "\t.align 2, 0\n" + "_0804B69C: .4byte gUnknown_03004828\n" + "_0804B6A0: .4byte gMain\n" + "_0804B6A4: .4byte 0x0000043c\n" + "_0804B6A8_case06:\n" + "\tmovs r0, 0\n" + "\tmovs r1, 0x1\n" + "\tbl sub_804B2D0\n" + "\tb _0804B746\n" + "_0804B6B2_case07:\n" + "\tmovs r0, 0x1\n" + "\tmovs r1, 0\n" + "\tbl sub_804B2D0\n" + "\tldr r1, _0804B6C4 @ =gMain\n" + "\tldr r4, _0804B6C8 @ =0x0000043c\n" + "\tadds r1, r4\n" + "\tb _0804B74C\n" + "\t.align 2, 0\n" + "_0804B6C4: .4byte gMain\n" + "_0804B6C8: .4byte 0x0000043c\n" + "_0804B6CC_case08:\n" + "\tmovs r0, 0x1\n" + "\tmovs r1, 0x1\n" + "\tbl sub_804B2D0\n" + "\tldr r1, _0804B6DC @ =gMain\n" + "\tldr r0, _0804B6E0 @ =0x0000043c\n" + "\tadds r1, r0\n" + "\tb _0804B74C\n" + "\t.align 2, 0\n" + "_0804B6DC: .4byte gMain\n" + "_0804B6E0: .4byte 0x0000043c\n" + "_0804B6E4_case09:\n" + "\tbl sub_804C164\n" + "\tldr r0, _0804B704 @ =gUnknown_0821594C\n" + "\tbl LoadSpriteSheet\n" + "\tldr r0, _0804B708 @ =gUnknown_08215954\n" + "\tbl LoadSpritePalette\n" + "\tldr r1, _0804B70C @ =REG_BG1CNT\n" + "\tldr r2, _0804B710 @ =0x00000502\n" + "\tadds r0, r2, 0\n" + "\tstrh r0, [r1]\n" + "\tldr r1, _0804B714 @ =gMain\n" + "\tldr r4, _0804B718 @ =0x0000043c\n" + "\tadds r1, r4\n" + "\tb _0804B74C\n" + "\t.align 2, 0\n" + "_0804B704: .4byte gUnknown_0821594C\n" + "_0804B708: .4byte gUnknown_08215954\n" + "_0804B70C: .4byte REG_BG1CNT\n" + "_0804B710: .4byte 0x00000502\n" + "_0804B714: .4byte gMain\n" + "_0804B718: .4byte 0x0000043c\n" + "_0804B71C_case10:\n" + "\tldr r0, _0804B754 @ =0x0000043c\n" + "\tadds r1, r2, r0\n" + "\tldrb r0, [r1]\n" + "\tadds r0, 0x1\n" + "\tstrb r0, [r1]\n" + "_0804B726_case11:\n" + "\tmovs r0, 0x5\n" + "\tbl sub_804BBE8\n" + "\tmovs r0, 0\n" + "\tbl sub_804BBE8\n" + "\tbl sub_804C1A8\n" + "\tmovs r0, 0x1\n" + "\tnegs r0, r0\n" + "\tmovs r1, 0\n" + "\tstr r1, [sp]\n" + "\tmovs r2, 0x10\n" + "\tmovs r3, 0\n" + "\tbl BeginNormalPaletteFade\n" + "_0804B746:\n" + "\tldr r1, _0804B758 @ =gMain\n" + "\tldr r2, _0804B754 @ =0x0000043c\n" + "\tadds r1, r2\n" + "_0804B74C:\n" + "\tldrb r0, [r1]\n" + "\tadds r0, 0x1\n" + "\tstrb r0, [r1]\n" + "\tb _0804B76E_break\n" + "\t.align 2, 0\n" + "_0804B754: .4byte 0x0000043c\n" + "_0804B758: .4byte gMain\n" + "_0804B75C_case12:\n" + "\tldr r0, _0804B788 @ =gPaletteFade\n" + "\tldrb r1, [r0, 0x7]\n" + "\tmovs r0, 0x80\n" + "\tands r0, r1\n" + "\tcmp r0, 0\n" + "\tbne _0804B76E_break\n" + "\tldr r0, _0804B78C @ =sub_804DB84\n" + "\tbl SetMainCallback2\n" + "_0804B76E_break:\n" + "\tbl RunTasks\n" + "\tbl AnimateSprites\n" + "\tbl BuildOamBuffer\n" + "\tbl UpdatePaletteFade\n" + "\tadd sp, 0x4\n" + "\tpop {r4-r6}\n" + "\tpop {r0}\n" + "\tbx r0\n" + "\t.align 2, 0\n" + "_0804B788: .4byte gPaletteFade\n" + "_0804B78C: .4byte sub_804DB84"); +} +#endif + +static void sub_804B790(void) +// In-game trade init +{ + u8 otName[11]; + switch (gMain.state) + { + case 0: + gUnknown_020297D8[0] = gSpecialVar_0x8005; + gUnknown_020297D8[1] = 6; + StringCopy(gLinkPlayers[0].name, gSaveBlock2.playerName); + GetMonData(&gEnemyParty[0], MON_DATA_OT_NAME, otName); + StringCopy(gLinkPlayers[1].name, otName); + REG_DISPCNT = 0; + ResetTasks(); + gUnknown_03004828 = &ewram_2010000.unk_0f000; + ResetSpriteData(); + FreeAllSpritePalettes(); + SetVBlankCallback(sub_804B210); + sub_804B228(); + SetUpWindowConfig(&gWindowConfig_81E717C); + InitWindowFromConfig(&gUnknown_03004828->window, &gWindowConfig_81E717C); + gUnknown_03004828->textWindowBaseTileNum = SetTextWindowBaseTileNum(2); + LoadTextWindowGraphics(&gUnknown_03004828->window); + MenuZeroFillScreen(); + gLinkType = 0x1144; + gUnknown_03004828->isLinkTrade = FALSE; + gUnknown_03004828->unk_00b6 = 0; + gUnknown_03004828->unk_00c4 = 0; + gUnknown_03004828->unk_0104 = 0x40; + gUnknown_03004828->unk_0106 = 0x40; + gUnknown_03004828->unk_0108 = 0; + gUnknown_03004828->unk_010a = 0; + gUnknown_03004828->unk_010c = 0x78; + gUnknown_03004828->unk_010e = 0x50; + gUnknown_03004828->unk_0118 = 0x100; + gUnknown_03004828->unk_011c = 0; + gUnknown_03004828->unk_00c0 = 0; + gMain.state = 5; + break; + case 5: + sub_804B2D0(0, 0); + gMain.state ++; + break; + case 6: + sub_804B2D0(0, 1); + gMain.state ++; + break; + case 7: + sub_804B2D0(1, 0); + gMain.state ++; + break; + case 8: + sub_804B2D0(1, 1); + gMain.state ++; + break; + case 9: + sub_804C164(); + LoadSpriteSheet(&gUnknown_0821594C); + LoadSpritePalette(&gUnknown_08215954); + REG_BG1CNT = BGCNT_PRIORITY(2) | BGCNT_SCREENBASE(5); + gMain.state ++; + break; + case 10: + gMain.state ++; + // fallthrough + case 11: + sub_804BBE8(5); + sub_804BBE8(0); + sub_804C1A8(); + BeginNormalPaletteFade(-1, 0, 16, 0, 0); + gMain.state ++; + break; + case 12: + if (!gPaletteFade.active) + { + SetMainCallback2(sub_804BBCC); + } + break; + } + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +static void sub_804BA18(u8 partyIdx) +{ + struct Pokemon *pokemon = &gPlayerParty[partyIdx]; + if (!GetMonData(pokemon, MON_DATA_IS_EGG)) + { + u16 species = SpeciesToNationalPokedexNum(GetMonData(pokemon, MON_DATA_SPECIES, NULL)); + GetSetPokedexFlag(species, 2); + GetSetPokedexFlag(species, 3); + } +} + +static void sub_804BA64(void) +{ + u8 mpId = GetMultiplayerId(); + if (gLinkPlayers[mpId ^ 1].lp_field_2 == 0x8000) + EnableNationalPokedex(); +} + +static void sub_804BA94(u8 a0, u8 a1) +{ + u8 friendship; + struct Pokemon *playerPokemon = &gPlayerParty[a0]; + u16 playerMail = GetMonData(playerPokemon, MON_DATA_MAIL); + + struct Pokemon *friendPokemon = &gEnemyParty[a1]; + u16 friendMail = GetMonData(friendPokemon, MON_DATA_MAIL); + + if (playerMail != 0xff) + ClearMailStruct(&gSaveBlock1.mail[playerMail]); + + // This is where the actual trade happens!! + gUnknown_03004828->pokemon = *playerPokemon; + *playerPokemon = *friendPokemon; + *friendPokemon = gUnknown_03004828->pokemon; + + friendship = 70; + if (!GetMonData(playerPokemon, MON_DATA_IS_EGG)) + SetMonData(playerPokemon, MON_DATA_FRIENDSHIP, &friendship); + + if (friendMail != 0xff) + GiveMailToMon2(playerPokemon, &gUnknown_02029700[friendMail]); + + sub_804BA18(a0); + if (gReceivedRemoteLinkPlayers) + sub_804BA64(); +} + +static void sub_804BB78(void) +{ + switch (gUnknown_03004828->unk_00bd) + { + case 1: + if (sub_8007ECC()) + { + Trade_SendData(gUnknown_03004828); + gUnknown_03004828->unk_00bd ++; + } + // fallthrough + case 2: + gUnknown_03004828->unk_00bd = 0; + break; + } +} + +static void sub_804BBCC(void) +{ + sub_804C29C(); + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +static void sub_804BBE8(u8 a0) +{ + int i; + u16 *buffer; + switch (a0) + { + case 0: + LoadPalette(gUnknown_0820C9F8, 0x10, 0xa0); + DmaCopyLarge16(3, gUnknown_0820CA98, (void *)BG_CHAR_ADDR(1), 0x1300, 0x1000); + DmaCopy16Defvars(3, gUnknown_0820F798, (void *)BG_SCREEN_ADDR(18), 0x1000); + gUnknown_03004828->bg2vofs = 0; + gUnknown_03004828->bg2hofs = 0xb4; + REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_BG1_ON | DISPCNT_BG2_ON | DISPCNT_OBJ_ON; + REG_BG2CNT = BGCNT_PRIORITY(2) | BGCNT_CHARBASE(1) | BGCNT_SCREENBASE(18) | BGCNT_TXT512x256; + break; + case 1: + gUnknown_03004828->bg1hofs = 0; + gUnknown_03004828->bg1vofs = 0x15c; + REG_BG1VOFS = 0x15c; + REG_BG1CNT = BGCNT_PRIORITY(2) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(5) | BGCNT_TXT256x512; + + DmaCopy16Defvars(3, gUnknown_08210798, (void *)BG_SCREEN_ADDR(5), 0x1000); + DmaCopyLarge16(3, gUnknown_0820CA98, (void *)BG_CHAR_ADDR(0), 0x1300, 0x1000); + REG_DISPCNT = DISPCNT_MODE_1 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG1_ON | DISPCNT_OBJ_ON; + break; + case 2: + gUnknown_03004828->bg1vofs = 0; + gUnknown_03004828->bg1hofs = 0; + REG_DISPCNT = DISPCNT_MODE_1 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG1_ON | DISPCNT_OBJ_ON; + DmaCopy16Defvars(3, gUnknown_08211798, (void *)BG_SCREEN_ADDR(5), 0x800); + break; + case 3: + REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG1_ON | DISPCNT_OBJ_ON; + gUnknown_03004828->unk_0104 = 0x40; + gUnknown_03004828->unk_0106 = 0x40; + gUnknown_03004828->unk_010c = 0x78; + gUnknown_03004828->unk_010e = -0x46; + gUnknown_03004828->unk_011c = 0; + DmaCopyLarge16(3, gUnknown_0820DD98, (void *)BG_CHAR_ADDR(1), 0x1a00, 0x1000); + DmaCopy16Defvars(3, gUnknown_08211F98, (void *)BG_SCREEN_ADDR(18), 0x100); + break; + case 4: + REG_DISPCNT = DISPCNT_MODE_1 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG2_ON | DISPCNT_OBJ_ON; + REG_BG2CNT = BGCNT_PRIORITY(3) | BGCNT_CHARBASE(1) | BGCNT_256COLOR | BGCNT_SCREENBASE(18); + gUnknown_03004828->unk_0104 = 0x40; + gUnknown_03004828->unk_0106 = 0x5c; + gUnknown_03004828->unk_0118 = 0x20; + gUnknown_03004828->unk_011a = 0x400; + gUnknown_03004828->unk_011c = 0; + DmaCopyLarge16(3, gUnknown_08213738, (void *)BG_CHAR_ADDR(1), 0x2040, 0x1000); + DmaCopy16Defvars(3, gUnknown_08215778, (void *)BG_SCREEN_ADDR(18), 0x100); + break; + case 5: + gUnknown_03004828->bg1vofs = 0; + gUnknown_03004828->bg1hofs = 0; + REG_BG1CNT = BGCNT_PRIORITY(2) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(5); + LZDecompressVram(gUnknown_08D00000, (void *)BG_CHAR_ADDR(0)); + CpuCopy16(gUnknown_08D00524, buffer = (u16 *)ewram, 0x1000); + LoadCompressedPalette(gUnknown_08D004E0, 0x70, 0x20); + FillPalette(0, 0, 2); + for (i = 0; i < 0x280; i ++) + buffer[i] |= 0x7000; + DmaCopy16Defvars(3, ewram, (void *)BG_SCREEN_ADDR(5), 0x500); + MenuZeroFillWindowRect(2, 15, 27, 18); + break; + case 6: + REG_DISPCNT = DISPCNT_MODE_1 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG2_ON | DISPCNT_OBJ_ON; + REG_BG2CNT = BGCNT_PRIORITY(3) | BGCNT_CHARBASE(1) | BGCNT_256COLOR | BGCNT_SCREENBASE(18); + gUnknown_03004828->unk_0104 = 0x40; + gUnknown_03004828->unk_0106 = 0x5c; + gUnknown_03004828->unk_0118 = 0x100; + gUnknown_03004828->unk_011a = 0x80; + gUnknown_03004828->unk_010c = 0x78; + gUnknown_03004828->unk_010e = 0x50; + gUnknown_03004828->unk_011c = 0; + DmaCopyLarge16(3, gUnknown_08213738, (void *)BG_CHAR_ADDR(1), 0x2040, 0x1000); + DmaCopy16Defvars(3, gUnknown_08215778, (void *)BG_SCREEN_ADDR(18), 0x100); + break; + case 7: + gUnknown_03004828->bg2vofs = 0; + gUnknown_03004828->bg2hofs = 0; + REG_BG2CNT = BGCNT_PRIORITY(2) | BGCNT_CHARBASE(1) | BGCNT_SCREENBASE(18) | BGCNT_TXT512x256; + LoadPalette(gUnknown_0820C9F8, 0x10, 0xa0); + DmaCopyLarge16(3, gUnknown_0820CA98, (void *)BG_CHAR_ADDR(1), 0x1300, 0x1000); + DmaCopy16Defvars(3, gUnknown_0820F798, (void *)BG_SCREEN_ADDR(18), 0x1000); + break; + } +} + +static void sub_804C0F8(u8 a0) +{ + if (a0 == 0) + { + if (gUnknown_03004828->bg1vofs < 0x10a) + { + gUnknown_03004828->unk_010e ++; + gUnknown_03004828->unk_011c += 64; + } + } + else + { + if (gUnknown_03004828->unk_010e > -0x40) + { + gUnknown_03004828->unk_010e --; + gUnknown_03004828->unk_011c += 64; + } + } +} + +static void sub_804C164(void) +{ + LoadSpriteSheet(&gUnknown_082159A4); + LoadSpriteSheet(&gUnknown_082159F4); + LoadSpriteSheet(&gUnknown_08215A28); + LoadSpriteSheet(&gUnknown_08215A78); + LoadSpritePalette(&gUnknown_082159AC); + LoadSpritePalette(&gUnknown_082159B4); +} + +static void sub_804C1A8(void) +{ + u8 mpId; + u8 string[20]; + const struct InGameTrade *ingameTrade; + if (gUnknown_03004828->isLinkTrade) + { + mpId = GetMultiplayerId(); + StringCopy(gStringVar1, gLinkPlayers[mpId ^ 1].name); + GetMonData(&gEnemyParty[gUnknown_020297D8[1] % 6], MON_DATA_NICKNAME, string); + StringCopy10(gStringVar3, string); + GetMonData(&gPlayerParty[gUnknown_020297D8[0]], MON_DATA_NICKNAME, string); + StringCopy10(gStringVar2, string); + } + else + { + ingameTrade = &gIngameTrades[gSpecialVar_0x8004]; + StringCopy(gStringVar1, ingameTrade->otName); + StringCopy10(gStringVar3, ingameTrade->name); + GetMonData(&gPlayerParty[gSpecialVar_0x8005], MON_DATA_NICKNAME, string); + StringCopy10(gStringVar2, string); + } +} + +static bool8 sub_804C29C(void) +{ + u16 evoTarget; + + switch (gUnknown_03004828->unk_00c4) + { + case 0: + gSprites[gUnknown_03004828->pokePicSpriteIdxs[0]].invisible = FALSE; + gSprites[gUnknown_03004828->pokePicSpriteIdxs[0]].pos2.x = -0xb4; + gSprites[gUnknown_03004828->pokePicSpriteIdxs[0]].pos2.y = gMonFrontPicCoords[gUnknown_03004828->tradeSpecies[0]].y_offset; + gUnknown_03004828->unk_00c4 ++; + gUnknown_03004828->unk_0124 = GetCurrentMapMusic(); + PlayBGM(BGM_SHINKA); + break; + case 1: + if (gUnknown_03004828->bg2hofs > 0) + { + gSprites[gUnknown_03004828->pokePicSpriteIdxs[0]].pos2.x += 3; + gUnknown_03004828->bg2hofs -= 3; + } + else + { + gSprites[gUnknown_03004828->pokePicSpriteIdxs[0]].pos2.x = 0; + gUnknown_03004828->bg2hofs = 0; + gUnknown_03004828->unk_00c4 = 10; + } + break; + + case 10: + StringExpandPlaceholders(gStringVar4, gTradeText_WillBeSent); + sub_8003460(&gUnknown_03004828->window, gStringVar4, gUnknown_03004828->textWindowBaseTileNum, 2, 15); + gUnknown_03004828->unk_00c4 = 11; + gUnknown_03004828->unk_00c0 = 0; + break; + case 11: + if (++gUnknown_03004828->unk_00c0 == 80) + { + gUnknown_03004828->unk_0102 = sub_8047580(gUnknown_03004828->pokePicSpriteIdxs[0], gSprites[gUnknown_03004828->pokePicSpriteIdxs[0]].oam.paletteNum, 0x78, 0x20, 0x2, 0x1, 0x14, 0xfffff); + gUnknown_03004828->unk_00c4 ++; + ZeroFillWindowRect(&gUnknown_03004828->window, 0, 0, 29, 19); + StringExpandPlaceholders(gStringVar4, gTradeText_ByeBye); + sub_8003460(&gUnknown_03004828->window, gStringVar4, gUnknown_03004828->textWindowBaseTileNum, 2, 15); + } + break; + case 12: + if (gSprites[gUnknown_03004828->unk_0102].callback == SpriteCallbackDummy && sub_80035AC(&gUnknown_03004828->window) == TRUE) + { + gUnknown_03004828->unk_0103 = CreateSprite(&gSpriteTemplate_821595C, 0x78, 0x20, 0); + gSprites[gUnknown_03004828->unk_0103].callback = sub_804D738; + DestroySprite(&gSprites[gUnknown_03004828->unk_0102]); + gUnknown_03004828->unk_00c4 ++; + } + break; + case 13: + // The game waits here for the sprite to finish its animation sequence. + break; + case 14: + BeginNormalPaletteFade(-1, 0, 0, 16, 0); + gUnknown_03004828->unk_00c4 = 20; + break; + + case 20: + if (!gPaletteFade.active) + { + sub_804BBE8(4); + gUnknown_03004828->unk_00c4 ++; + } + break; + case 21: + BeginNormalPaletteFade(-1, -1, 16, 0, 0); + gUnknown_03004828->unk_00c4 ++; + break; + case 22: + if (!gPaletteFade.active) + { + gUnknown_03004828->unk_00c4 = 23; + } + break; + case 23: + if (gUnknown_03004828->unk_011a > 0x100) + { + gUnknown_03004828->unk_011a -= 0x34; + } + else + { + sub_804BBE8(1); + gUnknown_03004828->unk_011a = 0x80; + gUnknown_03004828->unk_00c4 ++; + gUnknown_03004828->unk_00c0 = 0; + } + gUnknown_03004828->unk_0118 = 0x8000 / gUnknown_03004828->unk_011a; + break; + case 24: + if (++ gUnknown_03004828->unk_00c0 > 20) + { + sub_804BBE8(3); + sub_804B128(); + gUnknown_03004828->unk_00bb = CreateSprite(&gSpriteTemplate_8215A80, 0x78, 0x50, 0); + gUnknown_03004828->unk_00c4 ++; + } + break; + case 25: + if (gSprites[gUnknown_03004828->unk_00bb].animEnded) + { + DestroySprite(&gSprites[gUnknown_03004828->unk_00bb]); + REG_BLDCNT = 0x640; + REG_BLDALPHA = 0x40C; + gUnknown_03004828->unk_00c4 ++; + } + break; + case 26: + if (-- gUnknown_03004828->bg1vofs == 0x13C) + { + gUnknown_03004828->unk_00c4 ++; + } + if (gUnknown_03004828->bg1vofs == 0x148) + { + gUnknown_03004828->unk_00bc = CreateSprite(&gSpriteTemplate_8215A30, 0x80, 0x41, 0); + } + break; + case 27: + gUnknown_03004828->unk_00ba = CreateSprite(&gSpriteTemplate_82159BC, 0x80, 0x50, 3); + gUnknown_03004828->unk_00bb = CreateSprite(&gSpriteTemplate_82159FC, 0x80, 0x50, 0); + StartSpriteAnim(&gSprites[gUnknown_03004828->unk_00bb], 1); + gUnknown_03004828->unk_00c4 ++; + break; + case 28: + if ((gUnknown_03004828->bg1vofs -= 2) == 0xA6) + { + gUnknown_03004828->unk_00c4 = 200; + } + sub_804C0F8(0); + REG_DISPCNT = DISPCNT_MODE_1 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG1_ON | DISPCNT_BG2_ON | DISPCNT_OBJ_ON; + break; + case 200: + gSprites[gUnknown_03004828->unk_00ba].pos1.y -= 2; + gSprites[gUnknown_03004828->unk_00bb].pos1.y -= 2; + sub_804C0F8(0); + if (gSprites[gUnknown_03004828->unk_00ba].pos1.y < -8) + { + gUnknown_03004828->unk_00c4 = 29; + } + break; + case 29: + BeginNormalPaletteFade(-1, -1, 0, 16, 0); + gUnknown_03004828->unk_00c4 = 30; + break; + case 30: + if (!gPaletteFade.active) + { + DestroySprite(&gSprites[gUnknown_03004828->unk_00ba]); + DestroySprite(&gSprites[gUnknown_03004828->unk_00bb]); + sub_804BBE8(2); + gUnknown_03004828->unk_00c4 ++; + } + break; + case 31: + BeginNormalPaletteFade(-1, -1, 16, 0, 0); + gUnknown_03004828->unk_00ba = CreateSprite(&gSpriteTemplate_82159FC, 0x6f, 0xaa, 0); + gUnknown_03004828->unk_00bb = CreateSprite(&gSpriteTemplate_82159FC, 0x81, -0xa, 0); + gUnknown_03004828->unk_00c4 ++; + break; + case 32: + if (!gPaletteFade.active) + { + PlaySE(SE_TK_WARPOUT); + gUnknown_03004828->unk_00c4 ++; + } + gSprites[gUnknown_03004828->unk_00ba].pos2.y -= 3; + gSprites[gUnknown_03004828->unk_00bb].pos2.y += 3; + break; + case 33: + gSprites[gUnknown_03004828->unk_00ba].pos2.y -= 3; + gSprites[gUnknown_03004828->unk_00bb].pos2.y += 3; + if (gSprites[gUnknown_03004828->unk_00ba].pos2.y <= -0x5a) + { + gSprites[gUnknown_03004828->unk_00ba].data1 = 1; + gSprites[gUnknown_03004828->unk_00bb].data1 = 1; + gUnknown_03004828->unk_00c4 ++; + } + break; + case 34: + BlendPalettes(1, 16, 0xffff); + gUnknown_03004828->unk_00c4 ++; + break; + case 35: + BlendPalettes(1, 0, 0xffff); + gUnknown_03004828->unk_00c4 ++; + break; + case 36: + BlendPalettes(1, 16, 0xffff); + gUnknown_03004828->unk_00c4 ++; + break; + case 37: + if (!IsPokeSpriteNotFlipped(gUnknown_03004828->tradeSpecies[0])) + { + gSprites[gUnknown_03004828->pokePicSpriteIdxs[0]].affineAnims = gSpriteAffineAnimTable_8215AC0; + gSprites[gUnknown_03004828->pokePicSpriteIdxs[0]].oam.affineMode = 3; + CalcCenterToCornerVec(&gSprites[gUnknown_03004828->pokePicSpriteIdxs[0]], 0, 3, 3); + StartSpriteAffineAnim(&gSprites[gUnknown_03004828->pokePicSpriteIdxs[0]], 0); + } + else + { + StartSpriteAffineAnim(&gSprites[gUnknown_03004828->pokePicSpriteIdxs[0]], 0); + } + StartSpriteAffineAnim(&gSprites[gUnknown_03004828->pokePicSpriteIdxs[1]], 0); + gSprites[gUnknown_03004828->pokePicSpriteIdxs[0]].pos1.x = 0x3c; + gSprites[gUnknown_03004828->pokePicSpriteIdxs[1]].pos1.x = 0xb4; + gSprites[gUnknown_03004828->pokePicSpriteIdxs[0]].pos1.y = 0xc0; + gSprites[gUnknown_03004828->pokePicSpriteIdxs[1]].pos1.y = -0x20; + gSprites[gUnknown_03004828->pokePicSpriteIdxs[0]].invisible = FALSE; + gSprites[gUnknown_03004828->pokePicSpriteIdxs[1]].invisible = FALSE; + gUnknown_03004828->unk_00c4 ++; + break; + case 38: + gSprites[gUnknown_03004828->pokePicSpriteIdxs[0]].pos2.y -= 3; + gSprites[gUnknown_03004828->pokePicSpriteIdxs[1]].pos2.y += 3; + if (-0xa0 > gSprites[gUnknown_03004828->pokePicSpriteIdxs[0]].pos2.y && gSprites[gUnknown_03004828->pokePicSpriteIdxs[0]].pos2.y >= -0xa3) + { + PlaySE(SE_TK_WARPIN); + } + if (gSprites[gUnknown_03004828->pokePicSpriteIdxs[0]].pos2.y < -0xde) + { + gSprites[gUnknown_03004828->unk_00ba].data1 = 0; + gSprites[gUnknown_03004828->unk_00bb].data1 = 0; + gUnknown_03004828->unk_00c4 ++; + gSprites[gUnknown_03004828->pokePicSpriteIdxs[0]].invisible = TRUE; + gSprites[gUnknown_03004828->pokePicSpriteIdxs[1]].invisible = TRUE; + BlendPalettes(1, 0, 0xffff); + } + break; + case 39: + gSprites[gUnknown_03004828->unk_00ba].pos2.y -= 3; + gSprites[gUnknown_03004828->unk_00bb].pos2.y += 3; + if (gSprites[gUnknown_03004828->unk_00ba].pos2.y <= -0xde) + { + BeginNormalPaletteFade(-1, -1, 0, 16, 0); + gUnknown_03004828->unk_00c4 ++; + DestroySprite(&gSprites[gUnknown_03004828->unk_00ba]); + DestroySprite(&gSprites[gUnknown_03004828->unk_00bb]); + } + break; + case 40: + if (!gPaletteFade.active) + { + gUnknown_03004828->unk_00c4 ++; + sub_804BBE8(1); + gUnknown_03004828->bg1vofs = 0xa6; + gUnknown_03004828->unk_00ba = CreateSprite(&gSpriteTemplate_82159BC, 0x80, -0x14, 3); + gUnknown_03004828->unk_00bb = CreateSprite(&gSpriteTemplate_82159FC, 0x80, -0x14, 0); + StartSpriteAnim(&gSprites[gUnknown_03004828->unk_00bb], 1); + } + break; + case 41: + BeginNormalPaletteFade(-1, -1, 16, 0, 0); + gUnknown_03004828->unk_00c4 ++; + break; + case 42: + REG_DISPCNT = DISPCNT_MODE_1 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG1_ON | DISPCNT_BG2_ON | DISPCNT_OBJ_ON; + sub_804C0F8(1); + if (!gPaletteFade.active) + { + gUnknown_03004828->unk_00c4 ++; + } + break; + case 43: + sub_804C0F8(1); + gSprites[gUnknown_03004828->unk_00ba].pos2.y += 3; + gSprites[gUnknown_03004828->unk_00bb].pos2.y += 3; + if (gSprites[gUnknown_03004828->unk_00ba].pos2.y + gSprites[gUnknown_03004828->unk_00ba].pos1.y == 64) + { + gUnknown_03004828->unk_00c4 ++; + } + break; + case 44: + sub_804C0F8(1); + if ((gUnknown_03004828->bg1vofs += 2) > 0x13c) + { + gUnknown_03004828->bg1vofs = 0x13c; + gUnknown_03004828->unk_00c4 ++; + } + break; + case 45: + DestroySprite(&gSprites[gUnknown_03004828->unk_00ba]); + DestroySprite(&gSprites[gUnknown_03004828->unk_00bb]); + gUnknown_03004828->unk_00c4 ++; + gUnknown_03004828->unk_00c0 = 0; + break; + case 46: + if (++ gUnknown_03004828->unk_00c0 == 10) + { + gUnknown_03004828->unk_00c4 ++; + } + break; + case 47: + if (++ gUnknown_03004828->bg1vofs > 0x15c) + { + gUnknown_03004828->bg1vofs = 0x15c; + gUnknown_03004828->unk_00c4 ++; + } + if (gUnknown_03004828->bg1vofs == 0x148) + gUnknown_03004828->unk_00bc = CreateSprite(&gSpriteTemplate_8215A30, 0x80, 0x41, 0); + gSprites[gUnknown_03004828->unk_00bc].callback = sub_804B0E0; + break; + case 48: + gUnknown_03004828->unk_00bb = CreateSprite(&gSpriteTemplate_8215A80, 0x78, 0x50, 0); + gUnknown_03004828->unk_00c4 = 50; + break; + + case 50: + if (gSprites[gUnknown_03004828->unk_00bb].animEnded) + { + DestroySprite(&gSprites[gUnknown_03004828->unk_00bb]); + sub_804BBE8(6); + gUnknown_03004828->unk_00c4 ++; + PlaySE(SE_W028); + } + break; + case 51: + if (gUnknown_03004828->unk_011a < 0x400) + { + gUnknown_03004828->unk_011a += 0x34; + } + else + { + gUnknown_03004828->unk_011a = 0x400; + gUnknown_03004828->unk_00c4 ++; + } + gUnknown_03004828->unk_0118 = 0x8000 / gUnknown_03004828->unk_011a; + break; + case 52: + BeginNormalPaletteFade(-1, 0, 0, 16, 0); + gUnknown_03004828->unk_00c4 = 60; + break; + + case 60: + if (!gPaletteFade.active) + { + sub_804BBE8(5); + sub_804BBE8(7); + gUnknown_03004828->unk_00c4 ++; + } + break; + case 61: + BeginNormalPaletteFade(-1, 0, 16, 0, 0); + gUnknown_03004828->unk_00c4 ++; + break; + case 62: + REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG2_ON | DISPCNT_OBJ_ON; + if (!gPaletteFade.active) + { + gUnknown_03004828->unk_00c4 ++; + } + break; + case 63: + gUnknown_03004828->unk_0103 = CreateSprite(&gSpriteTemplate_821595C, 0x78, -0x8, 0); + gSprites[gUnknown_03004828->unk_0103].data3 = 0x4a; + gSprites[gUnknown_03004828->unk_0103].callback = sub_804D80C; + StartSpriteAnim(&gSprites[gUnknown_03004828->unk_0103], 1); + StartSpriteAffineAnim(&gSprites[gUnknown_03004828->unk_0103], 2); + BlendPalettes(1 << (16 + gSprites[gUnknown_03004828->unk_0103].oam.paletteNum), 16, 0xffff); + gUnknown_03004828->unk_00c4 ++; + gUnknown_03004828->unk_00c0 = 0; + break; + case 64: + BeginNormalPaletteFade(1 << (16 + gSprites[gUnknown_03004828->unk_0103].oam.paletteNum), 1, 16, 0, 0xffff); + gUnknown_03004828->unk_00c4 ++; + break; + case 65: + if (gSprites[gUnknown_03004828->unk_0103].callback == SpriteCallbackDummy) + { + gUnknown_03004828->unk_00c4 ++; + } + break; + case 66: + gSprites[gUnknown_03004828->pokePicSpriteIdxs[1]].pos1.x = 0x78; + gSprites[gUnknown_03004828->pokePicSpriteIdxs[1]].pos1.y = gMonFrontPicCoords[gUnknown_03004828->tradeSpecies[1]].y_offset + 60; + gSprites[gUnknown_03004828->pokePicSpriteIdxs[1]].pos2.x = 0; + gSprites[gUnknown_03004828->pokePicSpriteIdxs[1]].pos2.y = 0; + CreatePokeballSprite(gUnknown_03004828->pokePicSpriteIdxs[1], gSprites[gUnknown_03004828->pokePicSpriteIdxs[1]].oam.paletteNum, 0x78, 0x54, 2, 1, 0x14, 0xfffff); + FreeSpriteOamMatrix(&gSprites[gUnknown_03004828->unk_0103]); + DestroySprite(&gSprites[gUnknown_03004828->unk_0103]); + gUnknown_03004828->unk_00c4 ++; + break; + case 67: + REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_BG1_ON | DISPCNT_BG2_ON | DISPCNT_OBJ_ON; + ZeroFillWindowRect(&gUnknown_03004828->window, 0, 0, 29, 19); + StringExpandPlaceholders(gStringVar4, gTradeText_SentOverPoke); + sub_8003460(&gUnknown_03004828->window, gStringVar4, gUnknown_03004828->textWindowBaseTileNum, 2, 15); + gUnknown_03004828->unk_00c4 ++; + gUnknown_03004828->unk_00c0 = 0; + break; + case 68: + if (++ gUnknown_03004828->unk_00c0 == 4) + { + PlayFanfare(BGM_FANFA5); + } + if (gUnknown_03004828->unk_00c0 == 0xf0) + { + gUnknown_03004828->unk_00c4 ++; + ZeroFillWindowRect(&gUnknown_03004828->window, 0, 0, 29, 19); + StringExpandPlaceholders(gStringVar4, gTradeText_TakeGoodCare); + sub_8003460(&gUnknown_03004828->window, gStringVar4, gUnknown_03004828->textWindowBaseTileNum, 2, 15); + gUnknown_03004828->unk_00c0 = 0; + } + break; + case 69: // OneHand + if (++ gUnknown_03004828->unk_00c0 == 60) + { + gUnknown_03004828->unk_00c4 ++; + } + break; + case 70: + sub_804E1DC(); + gUnknown_03004828->unk_00c4 ++; + break; + case 71: + if (gUnknown_03004828->isLinkTrade) + { + return TRUE; + } + else if (gMain.newKeys & A_BUTTON) + { + gUnknown_03004828->unk_00c4 ++; + } + break; + case 72: // Only if in-game trade + sub_804BA94(gSpecialVar_0x8005, 0); + gCB2_AfterEvolution = sub_804BBCC; + evoTarget = GetEvolutionTargetSpecies(&gPlayerParty[gUnknown_020297D8[0]], TRUE, ITEM_NONE); + if (evoTarget != SPECIES_NONE) + TradeEvolutionScene(&gPlayerParty[gUnknown_020297D8[0]], evoTarget, gUnknown_03004828->pokePicSpriteIdxs[1], gUnknown_020297D8[0]); + gUnknown_03004828->unk_00c4 ++; + break; + case 73: + BeginNormalPaletteFade(-1, 0, 0, 16, 0); + gUnknown_03004828->unk_00c4 ++; + break; + case 74: + if (!gPaletteFade.active) + { + PlayBGM(gUnknown_03004828->unk_0124); + SetMainCallback2(c2_exit_to_overworld_2_switch); + sub_804D8E4(); + } + break; + } + return FALSE; +} + +static void sub_804D588(void) +{ + u16 evoTarget; + switch (gMain.state) + { + case 0: + gMain.state = 4; + gSoftResetDisabled = TRUE; + break; + case 4: + gCB2_AfterEvolution = sub_804DC88; + evoTarget = GetEvolutionTargetSpecies(&gPlayerParty[gUnknown_020297D8[0]], TRUE, ITEM_NONE); + if (evoTarget != SPECIES_NONE) + TradeEvolutionScene(&gPlayerParty[gUnknown_020297D8[0]], evoTarget, gUnknown_03004828->pokePicSpriteIdxs[1], gUnknown_020297D8[0]); + else + SetMainCallback2(sub_804DC88); + gUnknown_020297D8[0] = 255; + break; + } + if (!HasLinkErrorOccurred()) + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +static void sub_804D63C(void) +{ + u8 blockReceivedStatus; + sub_804B2B0(); + blockReceivedStatus = GetBlockReceivedStatus(); + if (blockReceivedStatus & 0x01) + { + if (gBlockRecvBuffer[0][0] == 0xdcba) + { + SetMainCallback2(sub_804D588); + } + if (gBlockRecvBuffer[0][0] == 0xabcd) + { + gUnknown_03004828->unk_009c = 1; + } + ResetBlockReceivedFlag(0); + } + if (blockReceivedStatus & 0x02) + { + if (gBlockRecvBuffer[1][0] == 0xabcd) + { + gUnknown_03004828->unk_009d = 1; + } + ResetBlockReceivedFlag(1); + } +} + +static void sub_804D6BC(struct Sprite *sprite) +{ + sprite->pos1.y += sprite->data0 / 10; + sprite->data5 += sprite->data1; + sprite->pos1.x = sprite->data5 / 10; + if (sprite->pos1.y > 0x4c) + { + sprite->pos1.y = 0x4c; + sprite->data0 = -(sprite->data0 * sprite->data2) / 100; + sprite->data3 ++; + } + if (sprite->pos1.x == 0x78) + sprite->data1 = 0; + sprite->data0 += sprite->data4; + if (sprite->data3 == 4) + { + sprite->data7 = 1; + sprite->callback = SpriteCallbackDummy; + } +} + +static void sub_804D738(struct Sprite *sprite) +{ + sprite->pos2.y += gTradeBallVerticalVelocityTable[sprite->data0]; + if (sprite->data0 == 22) + PlaySE(SE_KON); + if (++ sprite->data0 == 44) + { + PlaySE(SE_W025); + sprite->callback = sub_804D7AC; + sprite->data0 = 0; + BeginNormalPaletteFade(1 << (16 + sprite->oam.paletteNum), -1, 0, 16, -1); + } +} + +static void sub_804D7AC(struct Sprite *sprite) +{ + if (sprite->data1 == 20) + StartSpriteAffineAnim(sprite, 1); + if (++ sprite->data1 > 20) + { + sprite->pos2.y -= gTradeBallVerticalVelocityTable[sprite->data0]; + if (++ sprite->data0 == 23) + { + DestroySprite(sprite); + gUnknown_03004828->unk_00c4 = 14; // Resume the master trade animation + } + } +} + +static void sub_804D80C(struct Sprite *sprite) +{ + if (sprite->data2 == 0) + { + if ((sprite->pos1.y += 4) > sprite->data3) + { + sprite->data2 ++; + sprite->data0 = 0x16; + PlaySE(SE_KON); + } + } + else + { + if (sprite->data0 == 0x42) + PlaySE(SE_KON2); + if (sprite->data0 == 0x5c) + PlaySE(SE_KON3); + if (sprite->data0 == 0x6b) + PlaySE(SE_KON4); + sprite->pos2.y += gTradeBallVerticalVelocityTable[sprite->data0]; + if (++sprite->data0 == 0x6c) + sprite->callback = SpriteCallbackDummy; + } +} + +u16 sub_804D89C(void) +{ + const struct InGameTrade *inGameTrade = &gIngameTrades[gSpecialVar_0x8004]; + StringCopy(gStringVar1, gSpeciesNames[inGameTrade->playerSpecies]); + StringCopy(gStringVar2, gSpeciesNames[inGameTrade->species]); + return inGameTrade->playerSpecies; +} + +static void sub_804D8E4(void) +{ + u8 nickname[32]; + const struct InGameTrade *inGameTrade = &gIngameTrades[gSpecialVar_0x8004]; + GetMonData(&gPlayerParty[gSpecialVar_0x8005], MON_DATA_NICKNAME, nickname); + StringCopy10(gStringVar1, nickname); + StringCopy(gStringVar2, gSpeciesNames[inGameTrade->species]); +} + +static void sub_804D948(u8 whichPlayerMon, u8 whichInGameTrade) +{ + const struct InGameTrade *inGameTrade = &gIngameTrades[whichInGameTrade]; + u8 level = GetMonData(&gPlayerParty[whichPlayerMon], MON_DATA_LEVEL); + + struct MailStruct mail; + u8 metLocation = 0xFE; + u8 isMail; + u8 *item; + struct Pokemon *pokemon = &gEnemyParty[0]; + + CreateMon(pokemon, inGameTrade->species, level, 32, TRUE, inGameTrade->personality, TRUE, inGameTrade->otId); + + SetMonData(pokemon, MON_DATA_HP_IV, &inGameTrade->ivs[0]); + SetMonData(pokemon, MON_DATA_ATK_IV, &inGameTrade->ivs[1]); + SetMonData(pokemon, MON_DATA_DEF_IV, &inGameTrade->ivs[2]); + SetMonData(pokemon, MON_DATA_SPD_IV, &inGameTrade->ivs[3]); + SetMonData(pokemon, MON_DATA_SPATK_IV, &inGameTrade->ivs[4]); + SetMonData(pokemon, MON_DATA_SPDEF_IV, &inGameTrade->ivs[5]); + SetMonData(pokemon, MON_DATA_NICKNAME, inGameTrade->name); + SetMonData(pokemon, MON_DATA_OT_NAME, inGameTrade->otName); + SetMonData(pokemon, MON_DATA_OT_GENDER, &inGameTrade->otGender); + SetMonData(pokemon, MON_DATA_ALT_ABILITY, &inGameTrade->secondAbility); + SetMonData(pokemon, MON_DATA_BEAUTY, &inGameTrade->stats[1]); + SetMonData(pokemon, MON_DATA_CUTE, &inGameTrade->stats[2]); + SetMonData(pokemon, MON_DATA_COOL, &inGameTrade->stats[0]); + SetMonData(pokemon, MON_DATA_SMART, &inGameTrade->stats[3]); + SetMonData(pokemon, MON_DATA_TOUGH, &inGameTrade->stats[4]); + SetMonData(pokemon, MON_DATA_SHEEN, &inGameTrade->sheen); + SetMonData(pokemon, MON_DATA_MET_LOCATION, &metLocation); + + isMail = FALSE; + if (inGameTrade->heldItem != ITEM_NONE) + { + if (ItemIsMail(inGameTrade->heldItem)) + { + sub_804DAD4(&mail, inGameTrade); + gUnknown_02029700[0] = mail; + SetMonData(pokemon, MON_DATA_MAIL, &isMail); + SetMonData(pokemon, MON_DATA_HELD_ITEM, (u8 *)&inGameTrade->heldItem); + } + else + { + item = (u8 *)&inGameTrade->heldItem; + SetMonData(pokemon, MON_DATA_HELD_ITEM, item); + } + } + CalculateMonStats(&gEnemyParty[0]); +} + +static void sub_804DAD4(struct MailStruct *mail, const struct InGameTrade *trade) { + s32 i; + + for (i = 0; i < 9; i++) + { + mail->words[i] = gIngameTradeMail[trade->mailNum][i]; + } + + StringCopy(mail->playerName, trade->otName); + +#if GERMAN + PadNameString(mail->playerName, CHAR_SPACE); +#endif + + mail->trainerId[0] = trade->otId >> 24; + mail->trainerId[1] = trade->otId >> 16; + mail->trainerId[2] = trade->otId >> 8; + mail->trainerId[3] = trade->otId; + mail->species = trade->species; + mail->itemId = trade->heldItem; +} + +u16 sub_804DB2C(void) +{ + if (GetMonData(&gPlayerParty[gSpecialVar_0x8005], MON_DATA_IS_EGG)) + return SPECIES_NONE; + return GetMonData(&gPlayerParty[gSpecialVar_0x8005], MON_DATA_SPECIES); +} + +void sub_804DB68(void) +{ + sub_804D948(gSpecialVar_0x8005, gSpecialVar_0x8004); +} + +#ifdef NONMATCHING +static +#endif +void sub_804DB84(void) +{ + if (sub_804C29C() == TRUE) + { + DestroySprite(&gSprites[gUnknown_03004828->pokePicSpriteIdxs[0]]); + FreeSpriteOamMatrix(&gSprites[gUnknown_03004828->pokePicSpriteIdxs[1]]); + sub_804BA94(gUnknown_020297D8[0], gUnknown_020297D8[1] % 6); + gUnknown_03004828->linkData[0] = 0xabcd; + gUnknown_03004828->unk_00bd = 1; + SetMainCallback2(sub_804DC18); + } + sub_804BB78(); + sub_804D63C(); + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +static void sub_804DC18(void) +{ + u8 mpId = sub_804B2B0(); + sub_804D63C(); + if (mpId == 0 && gUnknown_03004828->unk_009c == 1 && gUnknown_03004828->unk_009d == 1) + { + gUnknown_03004828->linkData[0] = 0xdcba; + Trade_SendData(gUnknown_03004828); + gUnknown_03004828->unk_009c = 2; + gUnknown_03004828->unk_009d = 2; + } + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +static void sub_804DC88(void) +{ + switch (gMain.state) + { + case 0: + gUnknown_03004828 = &ewram_2010000.unk_0f000; + gMain.state ++; + ZeroFillWindowRect(&gUnknown_03004828->window, 0, 0, 29, 19); + StringExpandPlaceholders(gStringVar4, gOtherText_LinkStandby2); + sub_8003460(&gUnknown_03004828->window, gStringVar4, gUnknown_03004828->textWindowBaseTileNum, 2, 15); + break; + case 1: + sub_80084A4(); + gMain.state = 100; + gUnknown_03004828->unk_00c0 = 0; + break; + case 100: + if (++ gUnknown_03004828->unk_00c0 > 180) + { + gMain.state = 101; + gUnknown_03004828->unk_00c0 = 0; + } + if (sub_8007ECC()) + { + gMain.state = 2; + } + break; + case 101: + if (sub_8007ECC()) + { + gMain.state = 2; + } + break; + case 2: + gMain.state = 50; + ZeroFillWindowRect(&gUnknown_03004828->window, 0, 0, 29, 19); + sub_8003460(&gUnknown_03004828->window, gSystemText_Saving, gUnknown_03004828->textWindowBaseTileNum, 2, 15); + break; + case 50: + SetSecretBase2Field_9_AndHideBG(); + IncrementGameStat(GAME_STAT_POKEMON_TRADES); + sub_8125D80(); + gMain.state ++; + gUnknown_03004828->unk_00c0 = 0; + break; + case 51: + if (++ gUnknown_03004828->unk_00c0 == 5) + { + gMain.state ++; + } + break; + case 52: + if (sub_8125DA8()) + { + ClearSecretBase2Field_9_2(); + gMain.state = 4; + } + else + { + gUnknown_03004828->unk_00c0 = 0; + gMain.state = 51; + } + break; + case 4: + sub_8125DDC(); + gMain.state = 40; + gUnknown_03004828->unk_00c0 = 0; + break; + case 40: + if (++ gUnknown_03004828->unk_00c0 > 50) + { + gUnknown_03004828->unk_00c0 = 0; + gMain.state = 41; + } + break; + case 41: + sub_80084A4(); + gMain.state = 42; + break; + case 42: + if (sub_8007ECC()) + { + sub_8125E04(); + gSoftResetDisabled = FALSE; + gMain.state = 5; + } + break; + case 5: + if (++ gUnknown_03004828->unk_00c0 > 60) + { + gMain.state ++; + sub_80084A4(); + } + break; + case 6: + if (sub_8007ECC()) + { + BeginNormalPaletteFade(-1, 0, 0, 16, 0); + gMain.state ++; + } + break; + case 7: + if (!gPaletteFade.active) + { + FadeOutBGM(3); + gMain.state ++; + } + break; + case 8: + if (IsBGMStopped() == TRUE) + { + sub_800832C(); + gMain.state ++; + } + break; + case 9: + if (!gReceivedRemoteLinkPlayers) + { + SetMainCallback2(sub_804E144); + } + break; + } + if (!HasLinkErrorOccurred()) + { + RunTasks(); + } + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +static void sub_804E144(void) +{ + if (!gPaletteFade.active) + SetMainCallback2((sub_8047CD8)); + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +void sub_804E174(void) +{ + ScriptContext2_Enable(); + CreateTask(sub_804E1A0, 10); + BeginNormalPaletteFade(-1, 0, 0, 16, 0); +} + +static void sub_804E1A0(u8 taskId) +{ + if (!gPaletteFade.active) + { + SetMainCallback2(sub_804B790); + gFieldCallback = sub_8080990; + DestroyTask(taskId); + } +} + +static void sub_804E1DC(void) +{ + u8 i; + u8 numRibbons = 0; + for (i = 0; i < 12; i ++) + { + numRibbons += GetMonData(&gEnemyParty[gUnknown_020297D8[1] % 6], MON_DATA_CHAMPION_RIBBON + i); + } + if (numRibbons != 0) + FlagSet(SYS_RIBBON_GET); +} + +void sub_804E22C(void) +{ + const u16 *src; + u16 *dest; + LZDecompressVram(gUnknown_08D00000, (u8 *)VRAM); + CpuCopy16(gUnknown_08D00524, ewram, 0x1000); + src = (const u16 *)ewram; + dest = (u16 *)(BG_SCREEN_ADDR(5)); + DmaCopy16(3, src, dest, 0x500) + LoadCompressedPalette(gUnknown_08D004E0, 0, 32); + REG_BG1CNT = BGCNT_PRIORITY(2) | BGCNT_SCREENBASE(5); +} diff --git a/src/trainer_card.c b/src/engine/trainer_card.c similarity index 66% rename from src/trainer_card.c rename to src/engine/trainer_card.c index 876a3b426..bcb62ede6 100644 --- a/src/trainer_card.c +++ b/src/engine/trainer_card.c @@ -3,13 +3,14 @@ #include "easy_chat.h" #include "event_data.h" #include "field_effect.h" +#include "graphics.h" #include "link.h" #include "main.h" #include "menu.h" #include "money.h" #include "palette.h" #include "pokedex.h" -#include "rom4.h" +#include "overworld.h" #include "script_pokemon_80C4.h" #include "songs.h" #include "sound.h" @@ -50,26 +51,60 @@ extern u8 ewram[]; #define ewram0 (*(struct Struct2000000 *)(ewram)) extern struct LinkPlayerMapObject gLinkPlayerMapObjects[]; -extern struct TrainerCard gTrainerCards[4]; + +EWRAM_DATA struct TrainerCard gTrainerCards[4] = {0}; struct UnknownStruct1 { - u8 filler0[0x780]; + u16 filler0[0x3C0]; u16 unk780[160]; }; extern struct UnknownStruct1 gUnknown_03004DE0; -extern u8 gUnknown_083B5EF4[]; -extern u16 *gUnknown_083B5EF8[5]; -extern u16 gUnknown_083B5F0C[]; -extern u16 gBadgesPalette[]; -extern u16 gUnknown_083B5F4C[]; +extern const u8 gBadgesTiles[]; +extern const u16 gUnknown_083B5F0C[]; +extern const u16 gBadgesPalette[]; +extern const u16 gUnknown_083B5F4C[]; +extern const u16 gUnknown_083B5F6C[]; +extern const u16 gUnknown_083B5F8C[][4]; -extern u16 gUnknown_08E8CFC0[]; -extern u16 gUnknown_08E8D9C0[]; +const u8 gBadgesTiles[] = INCBIN_U8("graphics/trainer_card/badges.4bpp"); +// XXX: what is this? +u8 *const ewram_ = ewram; -extern bool8 (*const gUnknown_083B5EBC[])(struct Task *); -extern bool8 (*const gUnknown_083B5ED8[])(struct Task *); +bool8 sub_8093864(struct Task *); +bool8 sub_80938A8(struct Task *); +bool8 sub_80938CC(struct Task *); +bool8 sub_8093918(struct Task *); +bool8 sub_8093938(struct Task *); +bool8 sub_8093954(struct Task *); +bool8 sub_8093980(struct Task *); + +bool8 (*const gUnknown_083B5EBC[])(struct Task *) = +{ + sub_8093864, + sub_80938A8, + sub_80938CC, + sub_8093918, + sub_8093938, + sub_8093954, + sub_8093980, +}; + +bool8 sub_8093AA0(struct Task *); +bool8 sub_8093AF0(struct Task *); +bool8 sub_8093C0C(struct Task *); +bool8 sub_8093C38(struct Task *); +bool8 sub_8093D50(struct Task *); + +bool8 (*const gUnknown_083B5ED8[])(struct Task *) = +{ + sub_8093AA0, + sub_8093AF0, + sub_8093C0C, + sub_8093C38, + sub_8093D50, +}; // FIXME: Other signature than on save_menu_util.h void FormatPlayTime(u8 *playtime, u16 hours, u16 minutes, s16 colon); @@ -171,38 +206,35 @@ static void sub_8093174(void) case 0: sub_8093534(); sub_8093688(); - gMain.state += 1; + gMain.state++; break; case 1: sub_8093598(); - gMain.state += 1; + gMain.state++; break; case 2: sub_80935EC(); - gMain.state += 1; + gMain.state++; break; case 3: sub_8093610(); sub_80937A4(); - gMain.state += 1; + gMain.state++; break; case 4: sub_80937BC(); - gMain.state += 1; + gMain.state++; case 5: - if (MultistepInitMenuWindowContinue() == FALSE) - { - return; - } - gMain.state += 1; + if (MultistepInitMenuWindowContinue()) + gMain.state++; break; case 6: sub_80937F0(); - gMain.state += 1; + gMain.state++; break; case 7: sub_80937D8(); - gMain.state += 1; + gMain.state++; break; case 8: nullsub_15(); @@ -376,22 +408,22 @@ static u8 sub_80934F4(struct TrainerCard *trainerCard) if (trainerCard->firstHallOfFameA != 0 || trainerCard->firstHallOfFameB != 0 || trainerCard->firstHallOfFameC != 0) { - value += 1; + value++; } if (trainerCard->var_3) { - value += 1; + value++; } if (trainerCard->battleTowerLosses > 49) { - value += 1; + value++; } if (trainerCard->var_4) { - value += 1; + value++; } return value; @@ -470,21 +502,14 @@ static void sub_8093688(void) u8 i; sub_8093324(); - - ewram0.var_0 = FALSE; - ewram0.var_3 = FALSE; + ewram0.var_0 = 0; + ewram0.var_3 = 0; ewram0.var_4 = FALSE; - ewram0.var_2 = ewram0.var_64.stars; - - ewram0.var_5 = FALSE; - ewram0.var_6 = FALSE; - + ewram0.var_5 = 0; + ewram0.var_6 = 0; for (i = 0; i < 4; i++) - { - sub_80EB3FC(ewram0.var_20[i], ewram0.var_64.var_28[i]); - } - + EasyChat_GetWordText(ewram0.var_20[i], ewram0.var_64.var_28[i]); sub_80936D4(); } @@ -497,61 +522,43 @@ void sub_80936D4(void) ewram0.var_b = 0; ewram0.var_c = 0; ewram0.var_d = 0; - memset(ewram0.var_e, 0, sizeof(ewram0.var_e)); if (ewram0.var_64.hasPokedex) - { - ewram0.var_7 += 1; - } + ewram0.var_7++; - if (ewram0.var_64.firstHallOfFameA != 0 || ewram0.var_64.firstHallOfFameB != 0 || - ewram0.var_64.firstHallOfFameC != 0) - { - ewram0.var_8 += 1; - } + if (ewram0.var_64.firstHallOfFameA != 0 + || ewram0.var_64.firstHallOfFameB != 0 + || ewram0.var_64.firstHallOfFameC != 0) + ewram0.var_8++; if (ewram0.var_64.linkBattleWins != 0 || ewram0.var_64.linkBattleLosses != 0) - { - ewram0.var_9 += 1; - } + ewram0.var_9++; if (ewram0.var_64.battleTowerWins != 0 || ewram0.var_64.battleTowerLosses != 0) - { - ewram0.var_a += 1; - } + ewram0.var_a++; if (ewram0.var_64.contestsWithFriends != 0) - { - ewram0.var_b += 1; - } + ewram0.var_b++; if (ewram0.var_64.pokeblocksWithFriends != 0) - { - ewram0.var_c += 1; - } + ewram0.var_c++; if (ewram0.var_64.pokemonTrades != 0) - { - ewram0.var_d += 1; - } + ewram0.var_d++; if (!ewram0.var_1) { u32 badgeFlag; - int i; + int i = 0; - i = 0; badgeFlag = BADGE01_GET; while (1) { if (FlagGet(badgeFlag)) - { - ewram0.var_e[i] += 1; - } - - badgeFlag += 1; - i += 1; + ewram0.var_e[i]++; + badgeFlag++; + i++; if (badgeFlag > BADGE08_GET) { break; @@ -616,14 +623,14 @@ bool8 sub_8093864(struct Task *task) ewram0.var_6 = gSaveBlock2.playTimeVBlanks; sub_80939A4(); BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0); - ewram0.var_0 += 1; + ewram0.var_0++; return FALSE; } bool8 sub_80938A8(struct Task *task) { if (!gPaletteFade.active) - ewram0.var_0 += 1; + ewram0.var_0++; return FALSE; } @@ -639,16 +646,14 @@ bool8 sub_80938CC(struct Task *task) if (ewram0.var_3 != 0) { ewram0.var_0 = 5; - return TRUE; } else { ewram0.var_3 ^= 1; ewram0.var_0 = 3; - return TRUE; } + return TRUE; } - return FALSE; } @@ -656,19 +661,14 @@ bool8 sub_8093918(struct Task *task) { sub_8093A28(); PlaySE(SE_CARD); - - ewram0.var_0 += 1; - + ewram0.var_0++; return FALSE; } bool8 sub_8093938(struct Task *task) { if (sub_8093A48()) - { ewram0.var_0 = 2; - } - return FALSE; } @@ -676,17 +676,14 @@ bool8 sub_8093954(struct Task *task) { sub_80939C0(); BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); - ewram0.var_0 += 1; + ewram0.var_0++; return FALSE; } bool8 sub_8093980(struct Task *task) { if (!gPaletteFade.active) - { SetMainCallback2((MainCallback)ewram0.var_60); - } - return FALSE; } @@ -698,28 +695,22 @@ static void sub_80939A4(void) static void sub_80939C0(void) { - u8 taskId; - - taskId = FindTaskIdByFunc(sub_80939DC); + u8 taskId = FindTaskIdByFunc(sub_80939DC); if (taskId != 0xFF) - { DestroyTask(taskId); - } } static void sub_80939DC(u8 taskId) { u8 buffer[32]; - struct Task *task; - task = &gTasks[taskId]; + struct Task *task = &gTasks[taskId]; if (ewram0.var_5 != task->data[TD_1]) { task->data[TD_1] = ewram0.var_5; task->data[TD_0] ^= TRUE; } - TrainerCard_Front_PrintPlayTime(buffer, task->data[TD_0]); MenuPrint(buffer, 10, 12); } @@ -750,18 +741,66 @@ bool8 sub_8093AA0(struct Task *task) { s32 i; - ewram0.var_4 = 0; + ewram0.var_4 = FALSE; dp12_8087EA4(); for (i = 0; i < ARRAY_COUNT(gUnknown_03004DE0.unk780); i++) gUnknown_03004DE0.unk780[i] = -4; SetHBlankCallback(sub_8093D7C); - ewram0.var_4 = 1; + ewram0.var_4 = TRUE; task->data[0]++; return FALSE; } +/* +bool8 sub_8093AF0(struct Task *task) +{ + u32 r7; + u16 r9; + u32 r6; + u32 r5; + u32 r4; + u32 r10; + u32 sp0; + s16 i; + + ewram0.var_4 = 0; + task->data[1] += 3; + if (task->data[1] > 79) + task->data[1] = 79; + + r7 = task->data[1]; + r9 = 160 - r7; + r4 = r9 - r7; + r6 = -r7 << 16; + r5 = (160 << 16) / r4; + r5 -= 1 << 16; + r10 = r5 * r4 + r6; + sp0 = r5 / r4; + r5 *= 2; + + for (i = 0; i < r7; i++) + { + gUnknown_03004DE0.filler0[i] = -4 - (u32)i; + } + //_08093B74 + for (; i < r9; i++) + { + u16 var = r6 >> 16; + r6 += r5; + r5 -= sp0; + gUnknown_03004DE0.filler0[i] = -4 + var; + } + for (; i < 160; i++) + gUnknown_03004DE0.filler0[i] = -4 + (u16)(r10 >> 16); + ewram0.var_4 = 1; + if (task->data[1] > 0x4A) + task->data[0]++; + return FALSE; +} +*/ + __attribute__((naked)) -bool8 sub_8093AF0() +bool8 sub_8093AF0(struct Task *task) { asm(".syntax unified\n\ push {r4-r7,lr}\n\ @@ -912,23 +951,18 @@ _08093C08: .4byte 0x0000fffc\n\ .syntax divided\n"); } -bool8 sub_8093C0C(struct TrainerCard *trainerCard) +bool8 sub_8093C0C(struct Task *task) { sub_80939C0(); sub_8093DAC(); - if (!ewram0.var_3) - { sub_80939A4(); - } - - trainerCard->firstHallOfFameB += 1; - + task->data[0]++; return TRUE; } __attribute__((naked)) -bool8 sub_8093C38() +bool8 sub_8093C38(struct Task *task) { asm(".syntax unified\n\ push {r4-r7,lr}\n\ @@ -1077,59 +1111,33 @@ _08093D4C: .4byte 0x0000fffc\n\ .syntax divided\n"); } -bool8 sub_8093D50(void) +bool8 sub_8093D50(struct Task *task) { u8 taskId; ewram0.var_4 = FALSE; SetHBlankCallback(NULL); sub_8093E04(); - taskId = FindTaskIdByFunc(sub_8093A68); DestroyTask(taskId); - return FALSE; } -__attribute__((naked)) void sub_8093D7C(void) { - asm(".syntax unified\n\ - ldr r1, _08093DA0 @ =gUnknown_03004DE0\n\ - ldr r0, _08093DA4 @ =REG_VCOUNT\n\ - ldrh r2, [r0]\n\ - movs r0, 0xFF\n\ - ands r0, r2\n\ - lsls r0, 1\n\ - movs r2, 0xF0\n\ - lsls r2, 3\n\ - adds r1, r2\n\ - adds r0, r1\n\ - ldrh r1, [r0]\n\ - ldr r0, _08093DA8 @ =REG_BG0VOFS\n\ - strh r1, [r0]\n\ - adds r0, 0x4\n\ - strh r1, [r0]\n\ - adds r0, 0x4\n\ - strh r1, [r0]\n\ - bx lr\n\ - .align 2, 0\n\ -_08093DA0: .4byte gUnknown_03004DE0\n\ -_08093DA4: .4byte 0x4000006 @ REG_VCOUNT\n\ -_08093DA8: .4byte 0x4000012 @ REG_BG0VOFS\n\ - .syntax divided\n"); + u16 bgVOffset = gUnknown_03004DE0.unk780[REG_VCOUNT & 0xFF]; + + REG_BG0VOFS = bgVOffset; + REG_BG1VOFS = bgVOffset; + REG_BG2VOFS = bgVOffset; } static void sub_8093DAC(void) { if (ewram0.var_3) - { sub_8093DEC(); - } else - { sub_8093DC8(); - } } static void sub_8093DC8(void) @@ -1151,99 +1159,55 @@ static void sub_8093DEC(void) sub_8094188(); } -__attribute__((naked)) -static void sub_8093E04() +static void sub_8093E04(void) { - asm(".syntax unified\n\ - ldr r0, _08093E20 @ =REG_BG0VOFS\n\ - ldr r2, _08093E24 @ =0x0000fffc\n\ - adds r1, r2, 0\n\ - strh r1, [r0]\n\ - adds r0, 0x2\n\ - movs r2, 0\n\ - strh r2, [r0]\n\ - adds r0, 0x2\n\ - strh r1, [r0]\n\ - adds r0, 0x2\n\ - strh r2, [r0]\n\ - adds r0, 0x2\n\ - strh r1, [r0]\n\ - bx lr\n\ - .align 2, 0\n\ -_08093E20: .4byte 0x4000012 @ REG_BG0VOFS\n\ -_08093E24: .4byte 0x0000fffc\n\ - .syntax divided\n"); + REG_BG0VOFS = -4; + REG_BG1HOFS = 0; + REG_BG1VOFS = -4; + REG_BG2HOFS = 0; + REG_BG2VOFS = -4; } -__attribute__((naked)) static void sub_8093E28(void) { - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - bl sub_8093EA0\n\ - ldr r0, _08093E84 @ =gUnknown_083B5F6C\n\ - movs r1, 0xE0\n\ - movs r2, 0x20\n\ - bl LoadPalette\n\ - ldr r3, _08093E88 @ =gMenuTrainerCard_Gfx\n\ - movs r4, 0xC0\n\ - lsls r4, 19\n\ - movs r5, 0xA4\n\ - lsls r5, 5\n\ - ldr r1, _08093E8C @ =0x040000d4\n\ - ldr r6, _08093E90 @ =0x80000800\n\ - movs r2, 0x80\n\ - lsls r2, 5\n\ - movs r7, 0x80\n\ - lsls r7, 24\n\ -_08093E4E:\n\ - str r3, [r1]\n\ - str r4, [r1, 0x4]\n\ - str r6, [r1, 0x8]\n\ - ldr r0, [r1, 0x8]\n\ - adds r3, r2\n\ - adds r4, r2\n\ - subs r5, r2\n\ - cmp r5, r2\n\ - bhi _08093E4E\n\ - str r3, [r1]\n\ - str r4, [r1, 0x4]\n\ - lsrs r0, r5, 1\n\ - orrs r0, r7\n\ - str r0, [r1, 0x8]\n\ - ldr r0, [r1, 0x8]\n\ - ldr r1, _08093E94 @ =gBadgesTiles\n\ - ldr r2, _08093E98 @ =0x06001480\n\ - ldr r0, _08093E8C @ =0x040000d4\n\ - str r1, [r0]\n\ - str r2, [r0, 0x4]\n\ - ldr r1, _08093E9C @ =0x80000200\n\ - str r1, [r0, 0x8]\n\ - ldr r0, [r0, 0x8]\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_08093E84: .4byte gUnknown_083B5F6C\n\ -_08093E88: .4byte gMenuTrainerCard_Gfx\n\ -_08093E8C: .4byte 0x040000d4\n\ -_08093E90: .4byte 0x80000800\n\ -_08093E94: .4byte gBadgesTiles\n\ -_08093E98: .4byte 0x06001480\n\ -_08093E9C: .4byte 0x80000200\n\ - .syntax divided\n"); + const u8 *src; + u8 *dst; + u32 size; + + sub_8093EA0(); + LoadPalette(gUnknown_083B5F6C, 0xE0, 32); + src = gMenuTrainerCard_Gfx; + dst = (void *)VRAM; + size = 0x1480; + while (1) + { + DmaCopy16(3, src, dst, 0x1000); + src += 0x1000; + dst += 0x1000; + size -= 0x1000; + if (size <= 0x1000) + { + DmaCopy16(3, src, dst, size); + break; + } + } + { + const void *src = gBadgesTiles; + void *dst = (void *)(VRAM + 0x1480); + + DmaCopy16(3, src, dst, 0x400); + } } +extern const u16 *const gUnknown_083B5EF8[]; + void sub_8093EA0(void) { LoadPalette(gUnknown_083B5EF8[ewram0.var_2], 0, 48 * 2); LoadPalette(gBadgesPalette, 48, 16 * 2); LoadPalette(gUnknown_083B5F4C, 64, 16 * 2); - if (ewram0.var_64.gender != MALE) - { LoadPalette(gUnknown_083B5F0C, 16, 16 * 2); - } } static void sub_8093EF8(void) @@ -1251,36 +1215,32 @@ static void sub_8093EF8(void) LoadTrainerGfx_TrainerCard(ewram0.var_64.gender, 80, (void *)(VRAM + 0x1880)); } -__attribute__((naked)) static void sub_8093F14(void) { - asm(".syntax unified\n\ - push {lr}\n\ - sub sp, 0x8\n\ - ldr r0, _08093F3C @ =gUnknown_083B5EEC\n\ - ldr r1, [r0, 0x4]\n\ - ldr r0, [r0]\n\ - str r0, [sp]\n\ - str r1, [sp, 0x4]\n\ - ldr r0, _08093F40 @ =0x02000000\n\ - ldrb r0, [r0, 0x1]\n\ - lsls r0, 2\n\ - add r0, sp\n\ - ldr r0, [r0]\n\ - ldr r1, _08093F44 @ =0x06004800\n\ - movs r2, 0xA0\n\ - lsls r2, 1\n\ - bl CpuFastSet\n\ - add sp, 0x8\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_08093F3C: .4byte gUnknown_083B5EEC\n\ -_08093F40: .4byte 0x02000000\n\ -_08093F44: .4byte 0x06004800\n\ - .syntax divided\n"); + const void *arr[] = {gUnknown_08E8CAC0, gUnknown_08E8D4C0}; + + CpuFastSet(arr[ewram0.var_1], (void *)(VRAM + 0x4800), 0x140); } +// I don't really know where to put the data. It's in such a weird order. + +const u8 gUnknown_083B5EF4[] = _(" : "); + +const u16 *const gUnknown_083B5EF8[] = +{ + gMenuTrainerCard0Star_Pal, + gMenuTrainerCard1Star_Pal, + gMenuTrainerCard2Star_Pal, + gMenuTrainerCard3Star_Pal, + gMenuTrainerCard4Star_Pal, +}; + +const u16 gUnknown_083B5F0C[] = INCBIN_U16("graphics/trainer_card/83B5F0C.gbapal"); +const u16 gBadgesPalette[] = INCBIN_U16("graphics/trainer_card/badges.gbapal"); +const u16 gUnknown_083B5F4C[] = INCBIN_U16("graphics/trainer_card/83B5F4C.gbapal"); +const u16 gUnknown_083B5F6C[] = INCBIN_U16("graphics/trainer_card/83B5F6C.gbapal"); +const u16 gUnknown_083B5F8C[][4] = INCBIN_U16("graphics/trainer_card/83B5F8C_map.bin"); + static void sub_8093F48(void) { CpuFastSet(gUnknown_08E8CFC0, (void *)(VRAM + 0x4800), 320); @@ -1291,266 +1251,79 @@ static void sub_8093F64(void) CpuFastSet(gUnknown_08E8D9C0, (void *)(VRAM + 0x5000), 320); } -__attribute__((naked)) static void sub_8093F80(void) { - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - movs r5, 0xC4\n\ - ldr r7, _08093FCC @ =0x06004000\n\ - movs r1, 0x5\n\ - movs r0, 0xA0\n\ - lsls r0, 7\n\ - adds r6, r0, 0\n\ -_08093F8E:\n\ - movs r0, 0x13\n\ - lsls r3, r1, 16\n\ - asrs r4, r3, 11\n\ -_08093F94:\n\ - lsls r2, r0, 16\n\ - asrs r2, 16\n\ - adds r1, r4, r2\n\ - lsls r1, 1\n\ - adds r1, r7\n\ - adds r0, r5, 0\n\ - orrs r0, r6\n\ - strh r0, [r1]\n\ - adds r2, 0x1\n\ - lsls r2, 16\n\ - adds r0, r5, 0x1\n\ - lsls r0, 16\n\ - lsrs r5, r0, 16\n\ - lsrs r0, r2, 16\n\ - asrs r2, 16\n\ - cmp r2, 0x1A\n\ - ble _08093F94\n\ - movs r1, 0x80\n\ - lsls r1, 9\n\ - adds r0, r3, r1\n\ - lsrs r1, r0, 16\n\ - asrs r0, 16\n\ - cmp r0, 0xC\n\ - ble _08093F8E\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_08093FCC: .4byte 0x06004000\n\ - .syntax divided\n"); + u16 r5 = 0xC4; + u16 *ptr = (u16 *)(VRAM + 0x4000); + s16 i; + s16 j; + + for (i = 5; i < 13; i++) + { + for (j = 19; j < 27; j++, r5++) + ptr[i * 32 + j] = r5 | 0x5000; + } } -__attribute__((naked)) static void sub_8093FD0(void) { - asm(".syntax unified\n\ - push {r4-r6,lr}\n\ - ldr r4, _0809402C @ =0x06004000\n\ - movs r2, 0xF\n\ - ldr r0, _08094030 @ =0x02000000\n\ - ldrb r0, [r0, 0x2]\n\ - adds r0, 0xF\n\ - cmp r2, r0\n\ - bge _08094002\n\ - movs r6, 0xC0\n\ - lsls r6, 1\n\ - ldr r1, _08094034 @ =0x0000408f\n\ - adds r5, r1, 0\n\ - adds r3, r0, 0\n\ -_08093FEA:\n\ - lsls r1, r2, 16\n\ - asrs r1, 16\n\ - lsls r0, r1, 1\n\ - adds r0, r4\n\ - adds r0, r6\n\ - strh r5, [r0]\n\ - adds r1, 0x1\n\ - lsls r1, 16\n\ - lsrs r2, r1, 16\n\ - asrs r1, 16\n\ - cmp r1, r3\n\ - blt _08093FEA\n\ -_08094002:\n\ - lsls r1, r2, 16\n\ - asrs r0, r1, 16\n\ - cmp r0, 0x12\n\ - bgt _08094024\n\ - movs r3, 0xC0\n\ - lsls r3, 1\n\ - movs r2, 0\n\ -_08094010:\n\ - asrs r0, r1, 16\n\ - lsls r1, r0, 1\n\ - adds r1, r4\n\ - adds r1, r3\n\ - strh r2, [r1]\n\ - adds r0, 0x1\n\ - lsls r1, r0, 16\n\ - asrs r0, r1, 16\n\ - cmp r0, 0x12\n\ - ble _08094010\n\ -_08094024:\n\ - pop {r4-r6}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_0809402C: .4byte 0x06004000\n\ -_08094030: .4byte 0x02000000\n\ -_08094034: .4byte 0x0000408f\n\ - .syntax divided\n"); + u16 *ptr = (u16 *)(VRAM + 0x4000); + s16 i = 15; + s16 var = 15 + ewram0.var_2; + + while (i < var) + { + ptr[6 * 32 + i] = 0x408F; + i++; + } + while (i < 0x13) + { + ptr[6 * 32 + i] = 0; + i++; + } } -__attribute__((naked)) static void sub_8094038(void) { - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r9\n\ - mov r6, r8\n\ - push {r6,r7}\n\ - ldr r1, _080940D0 @ =0x02000000\n\ - ldrb r0, [r1, 0x1]\n\ - cmp r0, 0\n\ - bne _080940C2\n\ - ldr r0, _080940D4 @ =0x06004000\n\ - mov r9, r0\n\ - movs r0, 0\n\ - movs r2, 0x4\n\ - adds r1, 0xE\n\ - mov r8, r1\n\ - ldr r7, _080940D8 @ =gUnknown_083B5F8C\n\ - movs r1, 0xC0\n\ - lsls r1, 6\n\ - adds r6, r1, 0\n\ - adds r1, r7, 0x6\n\ - mov r12, r1\n\ -_08094060:\n\ - lsls r0, 16\n\ - asrs r4, r0, 16\n\ - mov r1, r8\n\ - adds r0, r4, r1\n\ - ldrb r0, [r0]\n\ - lsls r5, r2, 16\n\ - cmp r0, 0\n\ - beq _080940AE\n\ - asrs r1, r5, 15\n\ - add r1, r9\n\ - movs r2, 0xF0\n\ - lsls r2, 2\n\ - adds r3, r1, r2\n\ - lsls r2, r4, 3\n\ - adds r0, r2, r7\n\ - ldrh r0, [r0]\n\ - orrs r0, r6\n\ - strh r0, [r3]\n\ - ldr r0, _080940DC @ =0x000003c2\n\ - adds r3, r1, r0\n\ - adds r0, r7, 0x2\n\ - adds r0, r2, r0\n\ - ldrh r0, [r0]\n\ - orrs r0, r6\n\ - strh r0, [r3]\n\ - movs r0, 0x80\n\ - lsls r0, 3\n\ - adds r3, r1, r0\n\ - adds r0, r7, 0x4\n\ - adds r0, r2, r0\n\ - ldrh r0, [r0]\n\ - orrs r0, r6\n\ - strh r0, [r3]\n\ - ldr r0, _080940E0 @ =0x00000402\n\ - adds r1, r0\n\ - add r2, r12\n\ - ldrh r0, [r2]\n\ - orrs r0, r6\n\ - strh r0, [r1]\n\ -_080940AE:\n\ - adds r1, r4, 0x1\n\ - lsls r1, 16\n\ - movs r2, 0xC0\n\ - lsls r2, 10\n\ - adds r0, r5, r2\n\ - lsrs r2, r0, 16\n\ - lsrs r0, r1, 16\n\ - asrs r1, 16\n\ - cmp r1, 0x7\n\ - ble _08094060\n\ -_080940C2:\n\ - pop {r3,r4}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_080940D0: .4byte 0x02000000\n\ -_080940D4: .4byte 0x06004000\n\ -_080940D8: .4byte gUnknown_083B5F8C\n\ -_080940DC: .4byte 0x000003c2\n\ -_080940E0: .4byte 0x00000402\n\ - .syntax divided\n"); + if (ewram0.var_1 == 0) + { + u16 *ptr = (u16 *)(VRAM + 0x4000); + s16 i; + s16 r2; + + for (i = 0, r2 = 4; i < 8; i++, r2 += 3) + { + if (ewram0.var_e[i] != 0) + { + ptr[15 * 32 + r2 + 0] = gUnknown_083B5F8C[i][0] | 0x3000; + ptr[15 * 32 + r2 + 1] = gUnknown_083B5F8C[i][1] | 0x3000; + ptr[16 * 32 + r2 + 0] = gUnknown_083B5F8C[i][2] | 0x3000; + ptr[16 * 32 + r2 + 1] = gUnknown_083B5F8C[i][3] | 0x3000; + } + } + } } -__attribute__((naked)) -static void sub_80940E4() +static void sub_80940E4(void) { - asm(".syntax unified\n\ - push {r4,lr}\n\ - movs r2, 0\n\ - ldr r1, _08094108 @ =0x06004000\n\ - movs r4, 0\n\ - ldr r3, _0809410C @ =0x000003ff\n\ -_080940EE:\n\ - strh r4, [r1]\n\ - lsls r0, r2, 16\n\ - movs r2, 0x80\n\ - lsls r2, 9\n\ - adds r0, r2\n\ - adds r1, 0x2\n\ - lsrs r2, r0, 16\n\ - asrs r0, 16\n\ - cmp r0, r3\n\ - ble _080940EE\n\ - pop {r4}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_08094108: .4byte 0x06004000\n\ -_0809410C: .4byte 0x000003ff\n\ - .syntax divided\n"); + s16 i; + u16 *ptr; + + for (i = 0, ptr = (u16 *)(VRAM + 0x4000); i < 0x400; i++, ptr++) + *ptr = 0; } -__attribute__((naked)) -static void sub_8094110() +static void sub_8094110(void) { - asm(".syntax unified\n\ - push {r4-r6,lr}\n\ - ldr r6, _0809413C @ =0x06004800\n\ - movs r2, 0x3\n\ - movs r5, 0xA0\n\ - lsls r5, 2\n\ - movs r3, 0x1\n\ - movs r4, 0xB0\n\ - lsls r4, 2\n\ -_08094120:\n\ - lsls r0, r2, 1\n\ - adds r0, r6\n\ - adds r1, r0, r5\n\ - strh r3, [r1]\n\ - adds r0, r4\n\ - strh r3, [r0]\n\ - adds r0, r2, 0x1\n\ - lsls r0, 16\n\ - lsrs r2, r0, 16\n\ - cmp r2, 0x10\n\ - bls _08094120\n\ - pop {r4-r6}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_0809413C: .4byte 0x06004800\n\ - .syntax divided\n"); -} + u16 *ptr = (u16 *)(VRAM + 0x4800); + u16 i; + for (i = 3; i < 17; i++) + { + ptr[10 * 32 + i] = 1; + ptr[11 * 32 + i] = 1; + } +} static void sub_8094140(void) { @@ -1609,11 +1382,12 @@ static void TrainerCard_Front_PrintPokedexCount(void) if (ewram0.var_7 == FALSE) { sub_8094110(); - return; } - - ConvertIntToDecimalStringN(buffer, ewram0.var_64.pokedexSeen, STR_CONV_MODE_LEFT_ALIGN, 3); - MenuPrint_RightAligned(buffer, 16, 10); + else + { + ConvertIntToDecimalStringN(buffer, ewram0.var_64.pokedexSeen, STR_CONV_MODE_LEFT_ALIGN, 3); + MenuPrint_RightAligned(buffer, 16, 10); + } } static void TrainerCard_Front_PrintPlayTime(u8 *arg1, s16 colon) @@ -1624,13 +1398,11 @@ static void TrainerCard_Front_PrintPlayTime(u8 *arg1, s16 colon) playTimeHours = gSaveBlock2.playTimeHours; playTimeMinutes = gSaveBlock2.playTimeMinutes; - if (ewram0.var_1 != 0) { playTimeHours = ewram0.var_64.playTimeHours; playTimeMinutes = ewram0.var_64.playTimeMinutes; } - FormatPlayTime(buffer, playTimeHours, playTimeMinutes, colon); sub_8072C74(arg1, buffer, 48, 1); } @@ -1639,24 +1411,22 @@ static void sub_809429C(void) { u8 *str; - if (ewram0.var_1 == FALSE) + if (ewram0.var_1 != 0) { - return; + str = gStringVar1; + str = StringCopy(str, ewram0.var_20[0]); + str[0] = 00; + str++; + str = StringCopy(str, ewram0.var_20[1]); + MenuPrint(gStringVar1, 2, 14); + + str = gStringVar1; + str = StringCopy(str, ewram0.var_20[2]); + str[0] = 00; + str++; + str = StringCopy(str, ewram0.var_20[3]); + MenuPrint(gStringVar1, 2, 16); } - - str = gStringVar1; - str = StringCopy(str, ewram0.var_20[0]); - str[0] = 00; - str++; - str = StringCopy(str, ewram0.var_20[1]); - MenuPrint(gStringVar1, 2, 14); - - str = gStringVar1; - str = StringCopy(str, ewram0.var_20[2]); - str[0] = 00; - str++; - str = StringCopy(str, ewram0.var_20[3]); - MenuPrint(gStringVar1, 2, 16); } static void TrainerCard_Back_PrintName(void) @@ -1678,152 +1448,115 @@ static void TrainerCard_Back_PrintName(void) static void TrainerCard_Back_PrintHallOfFameTime_Label(void) { - if (ewram0.var_8 == FALSE) - { - return; - } - - MenuPrint(gOtherText_FirstHOF, 3, 5); + if (ewram0.var_8 != 0) + MenuPrint(gOtherText_FirstHOF, 3, 5); } static void TrainerCard_Back_PrintHallOfFameTime(void) { u8 *str; - if (ewram0.var_8 == FALSE) + if (ewram0.var_8 != 0) { - return; + str = gStringVar1; + str = ConvertIntToDecimalStringN(str, ewram0.var_64.firstHallOfFameA, STR_CONV_MODE_RIGHT_ALIGN, 3); + str = StringCopy(str, gUnknown_083B5EF4); + str = ConvertIntToDecimalStringN(str, ewram0.var_64.firstHallOfFameB, STR_CONV_MODE_LEADING_ZEROS, 2); + str = StringCopy(str, gUnknown_083B5EF4); + str = ConvertIntToDecimalStringN(str, ewram0.var_64.firstHallOfFameC, STR_CONV_MODE_LEADING_ZEROS, 2); + MenuPrint_RightAligned(gStringVar1, 28, 5); } - - str = gStringVar1; - str = ConvertIntToDecimalStringN(str, ewram0.var_64.firstHallOfFameA, STR_CONV_MODE_RIGHT_ALIGN, 3); - str = StringCopy(str, gUnknown_083B5EF4); - str = ConvertIntToDecimalStringN(str, ewram0.var_64.firstHallOfFameB, STR_CONV_MODE_LEADING_ZEROS, 2); - str = StringCopy(str, gUnknown_083B5EF4); - str = ConvertIntToDecimalStringN(str, ewram0.var_64.firstHallOfFameC, STR_CONV_MODE_LEADING_ZEROS, 2); - - MenuPrint_RightAligned(gStringVar1, 28, 5); } static void TrainerCard_Back_PrintLinkBattlesLabel(void) { - if (ewram0.var_9 == FALSE) - { - return; - } - - MenuPrint(gOtherText_LinkCableBattles, 3, 7); + if (ewram0.var_9 != 0) + MenuPrint(gOtherText_LinkCableBattles, 3, 7); } static void TrainerCard_Back_PrintLinkBattles(void) { u8 buffer[16]; - if (ewram0.var_9 == FALSE) + if (ewram0.var_9 != 0) { - return; + ConvertIntToDecimalString(buffer, ewram0.var_64.linkBattleWins); + MenuPrint_RightAligned(buffer, 22, 7); + + ConvertIntToDecimalString(buffer, ewram0.var_64.linkBattleLosses); + MenuPrint_RightAligned(buffer, 28, 7); } - - ConvertIntToDecimalString(buffer, ewram0.var_64.linkBattleWins); - MenuPrint_RightAligned(buffer, 22, 7); - - ConvertIntToDecimalString(buffer, ewram0.var_64.linkBattleLosses); - MenuPrint_RightAligned(buffer, 28, 7); } static void TrainerCard_Back_PrintBattleTower_Label(void) { - if (ewram0.var_a == FALSE) - { - return; - } - - MenuPrint(gOtherText_BattleTowerWinRecord, 3, 15); + if (ewram0.var_a != 0) + MenuPrint(gOtherText_BattleTowerWinRecord, 3, 15); } static void TrainerCard_Back_PrintBattleTower(void) { u8 buffer[16]; - if (ewram0.var_a == FALSE) + if (ewram0.var_a != 0) { - return; + sub_8072C44(buffer, ewram0.var_64.battleTowerWins, 24, 1); + MenuPrint_PixelCoords(buffer, 112, 120, 0); + + sub_8072C44(buffer, ewram0.var_64.battleTowerLosses, 24, 1); + MenuPrint_PixelCoords(buffer, 149, 120, 0); } - - sub_8072C44(buffer, ewram0.var_64.battleTowerWins, 24, 1); - MenuPrint_PixelCoords(buffer, 112, 120, 0); - - sub_8072C44(buffer, ewram0.var_64.battleTowerLosses, 24, 1); - MenuPrint_PixelCoords(buffer, 149, 120, 0); } static void TrainerCard_Back_PrintLinkContests_Label(void) { - if (ewram0.var_b == FALSE) - { - return; - } - - MenuPrint(gOtherText_ContestRecord, 3, 13); + if (ewram0.var_b != 0) + MenuPrint(gOtherText_ContestRecord, 3, 13); } static void TrainerCard_Back_PrintLinkContests(void) { u8 buffer[8]; - if (ewram0.var_b == FALSE) + if (ewram0.var_b != 0) { - return; + ConvertIntToDecimalStringN(buffer, ewram0.var_64.contestsWithFriends, STR_CONV_MODE_RIGHT_ALIGN, 3); + MenuPrint_RightAligned(buffer, 28, 13); } - - ConvertIntToDecimalStringN(buffer, ewram0.var_64.contestsWithFriends, STR_CONV_MODE_RIGHT_ALIGN, 3); - MenuPrint_RightAligned(buffer, 28, 13); } static void TrainerCard_Back_PrintLinkPokeblocks_Label(void) { - if (ewram0.var_c == FALSE) - { - return; - } - - MenuPrint(gOtherText_MixingRecord, 3, 11); + if (ewram0.var_c != 0) + MenuPrint(gOtherText_MixingRecord, 3, 11); } static void TrainerCard_Back_PrintLinkPokeblocks(void) { u8 buffer[8]; - if (ewram0.var_c == FALSE) + if (ewram0.var_c != 0) { - return; + ConvertIntToDecimalStringN(buffer, ewram0.var_64.pokeblocksWithFriends, STR_CONV_MODE_RIGHT_ALIGN, 5); + MenuPrint_RightAligned(buffer, 28, 11); } - - ConvertIntToDecimalStringN(buffer, ewram0.var_64.pokeblocksWithFriends, STR_CONV_MODE_RIGHT_ALIGN, 5); - MenuPrint_RightAligned(buffer, 28, 11); } static void TrainerCard_Back_PrintPokemonTrades_Label(void) { - if (ewram0.var_d == FALSE) - { - return; - } - - MenuPrint(gOtherText_TradeRecord, 3, 9); + if (ewram0.var_d != 0) + MenuPrint(gOtherText_TradeRecord, 3, 9); } static void TrainerCard_Back_PrintPokemonTrades(void) { u8 buffer[8]; - if (ewram0.var_d == FALSE) + if (ewram0.var_d != 0) { - return; + ConvertIntToDecimalStringN(buffer, ewram0.var_64.pokemonTrades, STR_CONV_MODE_RIGHT_ALIGN, 5); + MenuPrint_RightAligned(buffer, 28, 9); } - - ConvertIntToDecimalStringN(buffer, ewram0.var_64.pokemonTrades, STR_CONV_MODE_RIGHT_ALIGN, 5); - MenuPrint_RightAligned(buffer, 28, 9); } void unref_sub_8094588(u16 left, u16 top) @@ -1831,9 +1564,6 @@ void unref_sub_8094588(u16 left, u16 top) const u8 *text = gOtherText_Boy; if (gSaveBlock2.playerGender == FEMALE) - { text = gOtherText_Girl; - } - - MenuPrint(text, (u8)left, (u8)top); + MenuPrint(text, left, top); } diff --git a/src/trig.c b/src/engine/trig.c similarity index 100% rename from src/trig.c rename to src/engine/trig.c diff --git a/src/util.c b/src/engine/util.c similarity index 66% rename from src/util.c rename to src/engine/util.c index c83fe8c8a..582b9f806 100644 --- a/src/util.c +++ b/src/engine/util.c @@ -1,27 +1,140 @@ #include "global.h" #include "util.h" -extern const struct SpriteTemplate gInvisibleSpriteTemplate; -extern const u8 gSpriteDimensions[3][4][2]; -extern const u16 gCrc16Table[]; +const u32 gBitTable[] = +{ + 1 << 0, + 1 << 1, + 1 << 2, + 1 << 3, + 1 << 4, + 1 << 5, + 1 << 6, + 1 << 7, + 1 << 8, + 1 << 9, + 1 << 10, + 1 << 11, + 1 << 12, + 1 << 13, + 1 << 14, + 1 << 15, + 1 << 16, + 1 << 17, + 1 << 18, + 1 << 19, + 1 << 20, + 1 << 21, + 1 << 22, + 1 << 23, + 1 << 24, + 1 << 25, + 1 << 26, + 1 << 27, + 1 << 28, + 1 << 29, + 1 << 30, + 1 << 31, +}; -u8 CreateInvisibleSpriteWithCallback(void (*callback)(struct Sprite *)) { +static const struct SpriteTemplate gInvisibleSpriteTemplate = +{ + .tileTag = 0, + .paletteTag = 0, + .oam = &gDummyOamData, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy, +}; + +static const u8 gSpriteDimensions[3][4][2] = +{ + // square + { + {1, 1}, + {2, 2}, + {4, 4}, + {8, 8}, + }, + + // horizontal rectangle + { + {2, 1}, + {4, 1}, + {4, 2}, + {8, 4}, + }, + + // vertical rectangle + { + {1, 2}, + {1, 4}, + {2, 4}, + {4, 8}, + }, +}; + +static const u16 gCrc16Table[] = +{ + 0x0000, 0x1189, 0x2312, 0x329B, 0x4624, 0x57AD, 0x6536, 0x74BF, + 0x8C48, 0x9DC1, 0xAF5A, 0xBED3, 0xCA6C, 0xDBE5, 0xE97E, 0xF8F7, + 0x1081, 0x0108, 0x3393, 0x221A, 0x56A5, 0x472C, 0x75B7, 0x643E, + 0x9CC9, 0x8D40, 0xBFDB, 0xAE52, 0xDAED, 0xCB64, 0xF9FF, 0xE876, + 0x2102, 0x308B, 0x0210, 0x1399, 0x6726, 0x76AF, 0x4434, 0x55BD, + 0xAD4A, 0xBCC3, 0x8E58, 0x9FD1, 0xEB6E, 0xFAE7, 0xC87C, 0xD9F5, + 0x3183, 0x200A, 0x1291, 0x0318, 0x77A7, 0x662E, 0x54B5, 0x453C, + 0xBDCB, 0xAC42, 0x9ED9, 0x8F50, 0xFBEF, 0xEA66, 0xD8FD, 0xC974, + 0x4204, 0x538D, 0x6116, 0x709F, 0x0420, 0x15A9, 0x2732, 0x36BB, + 0xCE4C, 0xDFC5, 0xED5E, 0xFCD7, 0x8868, 0x99E1, 0xAB7A, 0xBAF3, + 0x5285, 0x430C, 0x7197, 0x601E, 0x14A1, 0x0528, 0x37B3, 0x263A, + 0xDECD, 0xCF44, 0xFDDF, 0xEC56, 0x98E9, 0x8960, 0xBBFB, 0xAA72, + 0x6306, 0x728F, 0x4014, 0x519D, 0x2522, 0x34AB, 0x0630, 0x17B9, + 0xEF4E, 0xFEC7, 0xCC5C, 0xDDD5, 0xA96A, 0xB8E3, 0x8A78, 0x9BF1, + 0x7387, 0x620E, 0x5095, 0x411C, 0x35A3, 0x242A, 0x16B1, 0x0738, + 0xFFCF, 0xEE46, 0xDCDD, 0xCD54, 0xB9EB, 0xA862, 0x9AF9, 0x8B70, + 0x8408, 0x9581, 0xA71A, 0xB693, 0xC22C, 0xD3A5, 0xE13E, 0xF0B7, + 0x0840, 0x19C9, 0x2B52, 0x3ADB, 0x4E64, 0x5FED, 0x6D76, 0x7CFF, + 0x9489, 0x8500, 0xB79B, 0xA612, 0xD2AD, 0xC324, 0xF1BF, 0xE036, + 0x18C1, 0x0948, 0x3BD3, 0x2A5A, 0x5EE5, 0x4F6C, 0x7DF7, 0x6C7E, + 0xA50A, 0xB483, 0x8618, 0x9791, 0xE32E, 0xF2A7, 0xC03C, 0xD1B5, + 0x2942, 0x38CB, 0x0A50, 0x1BD9, 0x6F66, 0x7EEF, 0x4C74, 0x5DFD, + 0xB58B, 0xA402, 0x9699, 0x8710, 0xF3AF, 0xE226, 0xD0BD, 0xC134, + 0x39C3, 0x284A, 0x1AD1, 0x0B58, 0x7FE7, 0x6E6E, 0x5CF5, 0x4D7C, + 0xC60C, 0xD785, 0xE51E, 0xF497, 0x8028, 0x91A1, 0xA33A, 0xB2B3, + 0x4A44, 0x5BCD, 0x6956, 0x78DF, 0x0C60, 0x1DE9, 0x2F72, 0x3EFB, + 0xD68D, 0xC704, 0xF59F, 0xE416, 0x90A9, 0x8120, 0xB3BB, 0xA232, + 0x5AC5, 0x4B4C, 0x79D7, 0x685E, 0x1CE1, 0x0D68, 0x3FF3, 0x2E7A, + 0xE70E, 0xF687, 0xC41C, 0xD595, 0xA12A, 0xB0A3, 0x8238, 0x93B1, + 0x6B46, 0x7ACF, 0x4854, 0x59DD, 0x2D62, 0x3CEB, 0x0E70, 0x1FF9, + 0xF78F, 0xE606, 0xD49D, 0xC514, 0xB1AB, 0xA022, 0x92B9, 0x8330, + 0x7BC7, 0x6A4E, 0x58D5, 0x495C, 0x3DE3, 0x2C6A, 0x1EF1, 0x0F78, +}; + +const u8 gMiscBlank_Gfx[] = INCBIN_U8("graphics/interface/blank.4bpp"); + + +u8 CreateInvisibleSpriteWithCallback(void (*callback)(struct Sprite *)) +{ u8 sprite = CreateSprite(&gInvisibleSpriteTemplate, 248, 168, 14); gSprites[sprite].invisible = TRUE; gSprites[sprite].callback = callback; return sprite; } -void StoreWordInTwoHalfwords(u16 *h, u32 w) { +void StoreWordInTwoHalfwords(u16 *h, u32 w) +{ h[0] = (u16)(w); h[1] = (u16)(w >> 16); } -void LoadWordFromTwoHalfwords(u16 *h, u32 *w) { +void LoadWordFromTwoHalfwords(u16 *h, u32 *w) +{ *w = h[0] | (s16)h[1] << 16; } -void SetBgAffineStruct(struct BgAffineSrcData *src, u32 texX, u32 texY, s16 scrX, s16 scrY, s16 sx, s16 sy, u16 alpha) { +void SetBgAffineStruct(struct BgAffineSrcData *src, u32 texX, u32 texY, s16 scrX, s16 scrY, s16 sx, s16 sy, u16 alpha) +{ src->texX = texX; src->texY = texY; src->scrX = scrX; @@ -31,15 +144,11 @@ void SetBgAffineStruct(struct BgAffineSrcData *src, u32 texX, u32 texY, s16 scrX src->alpha = alpha; } -void DoBgAffineSet(struct BgAffineDstData *dest, u32 texX, u32 texY, s16 scrX, s16 scrY, s16 sx, s16 sy, u16 alpha) { +void DoBgAffineSet(struct BgAffineDstData *dest, u32 texX, u32 texY, s16 scrX, s16 scrY, s16 sx, s16 sy, u16 alpha) +{ struct BgAffineSrcData src; - SetBgAffineStruct( - &src, - texX, texY, - scrX, scrY, - sx, sy, - alpha - ); + + SetBgAffineStruct(&src, texX, texY, scrX, scrY, sx, sy, alpha); BgAffineSet(&src, dest, 1); } @@ -47,24 +156,34 @@ void DoBgAffineSet(struct BgAffineDstData *dest, u32 texX, u32 texY, s16 scrX, s // Functionally equivalent. // Only the two yflip loops don't match. -void CopySpriteTiles(u8 shape, u8 size, u8 *tiles, u16 *tilemap, u8 *output) { +void CopySpriteTiles(u8 shape, u8 size, u8 *tiles, u16 *tilemap, u8 *output) +{ u8 x, y; s8 i, j; u8 xflip[32]; u8 h = gSpriteDimensions[shape][size][1]; u8 w = gSpriteDimensions[shape][size][0]; - for (y = 0; y < h; y++) { + + for (y = 0; y < h; y++) + { int filler = 32 - w; - for (x = 0; x < w; x++) { + + for (x = 0; x < w; x++) + { int tile = (*tilemap & 0x3ff) * 32; int attr = *tilemap & 0xc00; - if (attr == 0) { + + if (attr == 0) + { void *src = tiles + tile; void *dest = output; int length = 32; DmaCopy32(3, src, dest, length); - } else if (attr == 0x800) { // yflip - for (i = 0; i < 8; i++) { + } + else if (attr == 0x800) // yflip + { + for (i = 0; i < 8; i++) + { void *src = tiles; void *dest = output; int length = 4; @@ -73,22 +192,30 @@ void CopySpriteTiles(u8 shape, u8 size, u8 *tiles, u16 *tilemap, u8 *output) { dest += i * 4; DmaCopy32(3, src, dest, length); } - } else { // xflip - for (i = 0; i < 8; i++) { - for (j = 0; j < 4; j++) { + } + else // xflip + { + for (i = 0; i < 8; i++) + { + for (j = 0; j < 4; j++) + { u8 i2 = i * 4; xflip[i2 + (3-j)] = (tiles[tile + i2 + j] & 0xf) << 4; xflip[i2 + (3-j)] |= tiles[tile + i2 + j] >> 4; } } - if (*tilemap & 0x800) { // yflip - for (i = 0; i < 8; i++) { + if (*tilemap & 0x800) // yflip + { + for (i = 0; i < 8; i++) + { void *src = xflip + (7-i) * 4; void *dest = output + i*4; int length = 4; DmaCopy32(3, src, dest, length); } - } else { + } + else + { void *src = xflip; void *dest = output; int length = 32; @@ -104,7 +231,8 @@ void CopySpriteTiles(u8 shape, u8 size, u8 *tiles, u16 *tilemap, u8 *output) { #else -__attribute__((naked)) void CopySpriteTiles(u8 shape, u8 size, u8 *tiles, u16 *tilemap, u8 *output) { +__attribute__((naked)) void CopySpriteTiles(u8 shape, u8 size, u8 *tiles, u16 *tilemap, u8 *output) +{ asm("\n" " .syntax unified\n" " push {r4-r7,lr}\n" @@ -348,39 +476,47 @@ __attribute__((naked)) void CopySpriteTiles(u8 shape, u8 size, u8 *tiles, u16 *t #endif -int CountTrailingZeroBits(u32 value) { +int CountTrailingZeroBits(u32 value) +{ u8 i; - for (i = 0; i < 32; i++) { - if ((value & 1) == 0) { + + for (i = 0; i < 32; i++) + { + if ((value & 1) == 0) value >>= 1; - } else { + else return i; - } } return 0; } -u16 CalcCRC16(u8 *data, int length) { +u16 CalcCRC16(u8 *data, int length) +{ u16 i, j; u16 crc = 0x1121; - for (i = 0; i < length; i++) { + + for (i = 0; i < length; i++) + { crc ^= data[i]; - for (j = 0; j < 8; j++) { - if (crc & 1) { + for (j = 0; j < 8; j++) + { + if (crc & 1) crc = (crc >> 1) ^ 0x8408; - } else { + else crc >>= 1; - } } } return ~crc; } -u16 CalcCRC16WithTable(u8 *data, int length) { +u16 CalcCRC16WithTable(u8 *data, int length) +{ u16 i; u16 crc = 0x1121; u8 byte; - for (i = 0; i < length; i++) { + + for (i = 0; i < length; i++) + { byte = crc >> 8; crc ^= data[i]; crc = byte ^ gCrc16Table[(u8)crc]; diff --git a/src/field/bard_music.c b/src/field/bard_music.c new file mode 100644 index 000000000..daf003233 --- /dev/null +++ b/src/field/bard_music.c @@ -0,0 +1,69 @@ +#include "global.h" +#include "bard_music.h" +#include "easy_chat.h" + +struct BardSound +{ + /*0x00*/ u8 var00; + /*0x01*/ s8 var01; + /*0x02*/ u16 var02; + /*0x04*/ u16 volume; + /*0x06*/ u16 var06; +}; + +extern const struct BardSound (*const gBardMusicTable[])[][6]; +extern s16 *gUnknown_08417068[]; +extern u32 gUnknown_084170F4[]; + +static s16 CalcWordPitch(u32 arg0, u32 songPos) +{ + return gUnknown_08417068[arg0][songPos]; +} + +#if ENGLISH +const struct BardSound *GetWordSounds(u16 group, u16 word) +{ + const struct BardSound (*sounds)[][6] = gBardMusicTable[group]; + + return (*sounds)[word]; +} +#elif GERMAN +const struct BardSound *GetWordSounds(u16 group, u16 word) +{ + const struct BardSound (*sounds)[][6] = gBardMusicTable[group]; + u32 index = de_sub_80EB748(group, word); + + return (*sounds)[index]; +} +#endif + +s32 GetWordPhonemes(struct BardSong *song, const struct BardSound *src, u16 arg2) +{ + s32 i; + s32 j; + s32 thirty; + + for (i = 0; i < 6; i++) + { + song->phonemes[i].sound = src[i].var00; + if (src[i].var00 != 0xFF) + { + s32 length = src[i].var01 + gUnknown_084170F4[src[i].var00]; + + song->phonemes[i].length = length; + song->phonemes[i].volume = src[i].volume; + song->var04 += length; + } + } + + for (j = 0, thirty = 30; j < i; j++) + song->phonemes[j].pitch = CalcWordPitch(thirty + arg2, j); + + song->currWord++; + song->currPhoneme = 0; + song->phonemeTimer = 0; + song->state = 0; + song->voiceInflection = 0; + + //warning: no return statement in function returning non-void +} diff --git a/src/berry.c b/src/field/berry.c similarity index 99% rename from src/berry.c rename to src/field/berry.c index fa15672e7..d82eab2a6 100644 --- a/src/berry.c +++ b/src/field/berry.c @@ -974,7 +974,7 @@ const struct Berry gBerries[] = const struct BerryTree gBlankBerryTree = {0}; -extern u8 BerryTreeScript; +extern u8 S_BerryTree[]; extern u16 gScriptLastTalked; extern u16 gSpecialVar_0x8004; extern u16 gSpecialVar_0x8005; @@ -1078,7 +1078,7 @@ bool32 FieldObjectInteractionWaterBerryTree(void) bool8 IsPlayerFacingPlantedBerryTree(void) { - if (GetFieldObjectScriptPointerForComparison() == &BerryTreeScript + if (GetFieldObjectScriptPointerForComparison() == S_BerryTree && GetStageByBerryTreeId(FieldObjectGetBerryTreeId(gSelectedMapObject)) == 0) return TRUE; else @@ -1087,7 +1087,7 @@ bool8 IsPlayerFacingPlantedBerryTree(void) bool8 TryToWaterBerryTree(void) { - if (GetFieldObjectScriptPointerForComparison() != &BerryTreeScript) + if (GetFieldObjectScriptPointerForComparison() != S_BerryTree) return FALSE; else return FieldObjectInteractionWaterBerryTree(); diff --git a/src/berry_tag_screen.c b/src/field/berry_tag_screen.c similarity index 64% rename from src/berry_tag_screen.c rename to src/field/berry_tag_screen.c index 0e81e4fec..1413a02ca 100644 --- a/src/berry_tag_screen.c +++ b/src/field/berry_tag_screen.c @@ -10,7 +10,7 @@ #include "menu.h" #include "menu_helpers.h" #include "palette.h" -#include "rom4.h" +#include "overworld.h" #include "songs.h" #include "sound.h" #include "sprite.h" @@ -28,26 +28,29 @@ struct Struct2000000 /*0x1FFFF*/ u8 var_1FFFF; }; -struct BerryTagStatus -{ - s16 circles[5]; -}; - extern struct Struct2000000 unk_2000000; -extern u8 gUnknown_0203932C; -extern struct BerryTagStatus gUnknown_0203932E; extern u16 gUnknown_030041B4; +static EWRAM_DATA u8 gUnknown_0203932C = 0; +static EWRAM_DATA s16 gUnknown_0203932E[5] = {0}; + extern const struct CompressedSpriteSheet gUnknown_083C1F74; extern const struct CompressedSpritePalette gUnknown_083C1F7C; -extern u8 *gUnknown_0841192C[]; - extern u8 gBerryCheck_Gfx[]; extern u8 gBerryCheck_Pal[]; extern u8 gUnknown_08E788E4[]; extern u8 gUnknown_08E78A84[]; +static const u8 *const gUnknown_0841192C[] = +{ + ContestStatsText_VerySoft, + ContestStatsText_Soft, + ContestStatsText_Hard, + ContestStatsText_VeryHard, + ContestStatsText_SuperHard, +}; + static void sub_8146014(void); static void sub_814602C(void); static bool8 sub_8146058(void); @@ -58,9 +61,9 @@ static void sub_8146440(u8 taskId); static void sub_8146480(u8 taskid); static void sub_81464E4(void); static void sub_8146600(u8 berry); -// static void sub_81466A0(void); +static void sub_81466A0(void); static void sub_81466E8(u8 taskId, s8 direction); -// static void sub_8146798(u8 berry); +static void sub_8146798(u8 berry); static void sub_8146810(s8 berry); static void sub_81468BC(void); @@ -131,7 +134,7 @@ static bool8 sub_8146058(void) break; case 8: berry = gScriptItemId + OFFSET_7B; - gUnknown_0203932C = sub_80A7D8C(berry, 56, 64); + gUnknown_0203932C = CreateBerrySprite(berry, 56, 64); gMain.state += 1; break; case 9: @@ -329,134 +332,65 @@ static void sub_8146600(u8 berry) berryInfo = GetBerryInfo(berry + 1); for (i = 0; i < 5; i++) - gUnknown_0203932E.circles[i] = (u16)gUnknown_0203932E.circles[i] | 0xFFFF; + gUnknown_0203932E[i] = (u16)gUnknown_0203932E[i] | 0xFFFF; // argument is the center of the circle if (berryInfo->spicy) - gUnknown_0203932E.circles[0] = sub_80A7E5C(48); + gUnknown_0203932E[0] = sub_80A7E5C(48); if (berryInfo->dry) - gUnknown_0203932E.circles[1] = sub_80A7E5C(88); + gUnknown_0203932E[1] = sub_80A7E5C(88); if (berryInfo->sweet) - gUnknown_0203932E.circles[2] = sub_80A7E5C(128); + gUnknown_0203932E[2] = sub_80A7E5C(128); if (berryInfo->bitter) - gUnknown_0203932E.circles[3] = sub_80A7E5C(168); + gUnknown_0203932E[3] = sub_80A7E5C(168); if (berryInfo->sour) - gUnknown_0203932E.circles[4] = sub_80A7E5C(208); + gUnknown_0203932E[4] = sub_80A7E5C(208); } -void sub_81466A0(void) +static void sub_81466A0(void) { u16 i; for (i = 0; i < 5; i++) { - if (gUnknown_0203932E.circles[i] != -1) + if (gUnknown_0203932E[i] != -1) { - DestroySprite(&gSprites[gUnknown_0203932E.circles[i]]); - gUnknown_0203932E.circles[i] = -1; + DestroySprite(&gSprites[gUnknown_0203932E[i]]); + gUnknown_0203932E[i] = -1; } } } -__attribute__((naked)) static void sub_81466E8(u8 taskId, s8 direction) { - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r8\n\ - push {r7}\n\ - lsls r0, 24\n\ - lsrs r7, r0, 24\n\ - lsls r1, 24\n\ - lsrs r2, r1, 24\n\ - lsls r0, r7, 2\n\ - adds r0, r7\n\ - lsls r0, 3\n\ - ldr r1, _08146748 @ =gTasks + 0x8\n\ - adds r6, r0, r1\n\ - ldr r4, _0814674C @ =gUnknown_03005D10\n\ - movs r0, 0xC\n\ - adds r0, r4\n\ - mov r8, r0\n\ - ldrb r1, [r0, 0x1]\n\ - ldrb r0, [r4, 0xC]\n\ - adds r1, r0\n\ - cmp r1, 0\n\ - bne _08146718\n\ - lsls r0, r2, 24\n\ - cmp r0, 0\n\ - blt _0814678C\n\ -_08146718:\n\ - adds r0, r1, 0x1\n\ - lsls r5, r2, 24\n\ - mov r1, r8\n\ - ldrb r1, [r1, 0x2]\n\ - cmp r0, r1\n\ - bne _08146728\n\ - cmp r5, 0\n\ - bgt _0814678C\n\ -_08146728:\n\ - movs r0, 0x5\n\ - bl PlaySE\n\ - mov r2, r8\n\ - ldrb r3, [r2, 0x1]\n\ - ldrb r4, [r4, 0xC]\n\ - mov r12, r4\n\ - adds r0, r3, r4\n\ - asrs r2, r5, 24\n\ - adds r1, r0, r2\n\ - cmp r1, 0\n\ - bge _08146750\n\ - negs r0, r0\n\ - strh r0, [r6, 0x2]\n\ - b _08146766\n\ - .align 2, 0\n\ -_08146748: .4byte gTasks + 0x8\n\ -_0814674C: .4byte gUnknown_03005D10\n\ -_08146750:\n\ - mov r4, r8\n\ - ldrb r0, [r4, 0x2]\n\ - cmp r1, r0\n\ - blt _08146764\n\ - subs r0, r3\n\ - mov r1, r12\n\ - subs r0, r1\n\ - subs r0, 0x1\n\ - strh r0, [r6, 0x2]\n\ - b _08146766\n\ -_08146764:\n\ - strh r2, [r6, 0x2]\n\ -_08146766:\n\ - ldr r0, _08146780 @ =gTasks\n\ - lsls r1, r7, 2\n\ - adds r1, r7\n\ - lsls r1, 3\n\ - adds r1, r0\n\ - ldr r0, _08146784 @ =sub_8146798\n\ - str r0, [r1]\n\ - cmp r5, 0\n\ - bge _08146788\n\ - movs r2, 0x10\n\ - negs r2, r2\n\ - adds r0, r2, 0\n\ - b _0814678A\n\ - .align 2, 0\n\ -_08146780: .4byte gTasks\n\ -_08146784: .4byte sub_8146798\n\ -_08146788:\n\ - movs r0, 0x10\n\ -_0814678A:\n\ - strh r0, [r6]\n\ -_0814678C:\n\ - pop {r3}\n\ - mov r8, r3\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .syntax divided\n"); + u8 berryPocket = 3; + s16 *data = gTasks[taskId].data; + + if (gBagPocketScrollStates[berryPocket].scrollTop + gBagPocketScrollStates[berryPocket].cursorPos == 0 + && direction < 0) + return; + if (gBagPocketScrollStates[berryPocket].scrollTop + gBagPocketScrollStates[berryPocket].cursorPos + 1 == gBagPocketScrollStates[berryPocket].numSlots + && direction > 0) + return; + + PlaySE(SE_SELECT); + if (gBagPocketScrollStates[berryPocket].scrollTop + gBagPocketScrollStates[berryPocket].cursorPos + direction < 0) + data[1] = -(gBagPocketScrollStates[berryPocket].scrollTop + gBagPocketScrollStates[berryPocket].cursorPos); + else if (gBagPocketScrollStates[berryPocket].scrollTop + gBagPocketScrollStates[berryPocket].cursorPos + direction >= gBagPocketScrollStates[berryPocket].numSlots) + data[1] = gBagPocketScrollStates[berryPocket].numSlots - gBagPocketScrollStates[berryPocket].scrollTop - gBagPocketScrollStates[berryPocket].cursorPos - 1; + else + data[1] = direction; + + gTasks[taskId].func = sub_8146798; + + if (direction < 0) + data[0] = -16; + else + data[0] = 16; + } -void sub_8146798(u8 taskId) +static void sub_8146798(u8 taskId) { s16 *taskData = gTasks[taskId].data; @@ -475,94 +409,38 @@ void sub_8146798(u8 taskId) } } -__attribute__((naked)) static void sub_8146810(s8 berry) { - asm(".syntax unified\n\ - push {r4-r6,lr}\n\ - lsls r0, 24\n\ - lsrs r3, r0, 24\n\ - adds r4, r3, 0\n\ - lsls r0, r3, 24\n\ - asrs r1, r0, 24\n\ - cmp r1, 0\n\ - ble _08146848\n\ - ldr r0, _08146840 @ =gUnknown_03005D10\n\ - adds r4, r0, 0\n\ - adds r4, 0xC\n\ - ldrb r2, [r0, 0xC]\n\ - adds r1, r2, r1\n\ - adds r6, r0, 0\n\ - cmp r1, 0x7\n\ - ble _08146844\n\ - adds r0, r3, 0\n\ - adds r0, 0xF9\n\ - adds r0, r2, r0\n\ - ldrb r1, [r4, 0x1]\n\ - adds r0, r1\n\ - strb r0, [r4, 0x1]\n\ - movs r0, 0x7\n\ - b _0814686E\n\ - .align 2, 0\n\ -_08146840: .4byte gUnknown_03005D10\n\ -_08146844:\n\ - adds r0, r2, r3\n\ - b _0814686E\n\ -_08146848:\n\ - ldr r0, _08146868 @ =gUnknown_03005D10\n\ - adds r5, r0, 0\n\ - adds r5, 0xC\n\ - ldrb r2, [r0, 0xC]\n\ - adds r1, r2, r1\n\ - adds r6, r0, 0\n\ - cmp r1, 0\n\ - bge _0814686C\n\ - adds r0, r2, r3\n\ - ldrb r1, [r5, 0x1]\n\ - adds r0, r1\n\ - movs r1, 0\n\ - strb r0, [r5, 0x1]\n\ - strb r1, [r6, 0xC]\n\ - b _08146870\n\ - .align 2, 0\n\ -_08146868: .4byte gUnknown_03005D10\n\ -_0814686C:\n\ - adds r0, r2, r4\n\ -_0814686E:\n\ - strb r0, [r6, 0xC]\n\ -_08146870:\n\ - ldr r2, _081468AC @ =gScriptItemId\n\ - movs r0, 0x3\n\ - lsls r0, 2\n\ - adds r0, r6\n\ - ldrb r1, [r0, 0x1]\n\ - ldrb r0, [r0]\n\ - adds r1, r0\n\ - ldr r0, _081468B0 @ =gUnknown_03005D24\n\ - ldr r0, [r0]\n\ - lsls r1, 2\n\ - adds r1, r0\n\ - ldrh r0, [r1]\n\ - strh r0, [r2]\n\ - ldr r0, _081468B4 @ =gUnknown_0203932C\n\ - ldrb r1, [r0]\n\ - lsls r0, r1, 4\n\ - adds r0, r1\n\ - lsls r0, 2\n\ - ldr r1, _081468B8 @ =gSprites\n\ - adds r0, r1\n\ - bl DestroySprite\n\ - bl sub_81466A0\n\ - bl sub_80A7DD4\n\ - pop {r4-r6}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_081468AC: .4byte gScriptItemId\n\ -_081468B0: .4byte gUnknown_03005D24\n\ -_081468B4: .4byte gUnknown_0203932C\n\ -_081468B8: .4byte gSprites\n\ - .syntax divided\n"); + u8 berryPocket = 3; + + if (berry > 0) + { + if (gBagPocketScrollStates[berryPocket].cursorPos + berry > 7) + { + gBagPocketScrollStates[berryPocket].scrollTop += gBagPocketScrollStates[berryPocket].cursorPos - 7 + berry; + gBagPocketScrollStates[berryPocket].cursorPos = 7; + } + else + { + gBagPocketScrollStates[berryPocket].cursorPos += berry; + } + } + else + { + if (gBagPocketScrollStates[berryPocket].cursorPos + berry < 0) + { + gBagPocketScrollStates[berryPocket].scrollTop += gBagPocketScrollStates[berryPocket].cursorPos + berry; + gBagPocketScrollStates[berryPocket].cursorPos = 0; + } + else + { + gBagPocketScrollStates[berryPocket].cursorPos += berry; + } + } + gScriptItemId = gCurrentBagPocketItemSlots[gBagPocketScrollStates[berryPocket].scrollTop + gBagPocketScrollStates[berryPocket].cursorPos].itemId; + DestroySprite(&gSprites[gUnknown_0203932C]); + sub_81466A0(); + sub_80A7DD4(); } static void sub_81468BC(void) @@ -571,7 +449,7 @@ static void sub_81468BC(void) sub_81464E4(); // center of berry sprite - gUnknown_0203932C = sub_80A7D8C(gScriptItemId + OFFSET_7B, 56, 64); + gUnknown_0203932C = CreateBerrySprite(gScriptItemId + OFFSET_7B, 56, 64); sub_8146600(gScriptItemId + OFFSET_7B); } diff --git a/src/bike.c b/src/field/bike.c similarity index 98% rename from src/bike.c rename to src/field/bike.c index f37eb2144..8df901b40 100644 --- a/src/bike.c +++ b/src/field/bike.c @@ -6,17 +6,13 @@ #include "flags.h" #include "global.fieldmap.h" #include "metatile_behavior.h" -#include "rom4.h" +#include "overworld.h" #include "songs.h" #include "sound.h" -extern u8 sub_80608A4(u8); - extern u8 gUnknown_02039250; extern u8 gUnknown_02039251; extern u8 gUnknown_0202E854; -extern u8 gUnknown_0202E86C[]; -extern u8 gUnknown_0202E874[]; static void MovePlayerOnMachBike(u8, u16, u16); static u8 GetMachBikeTransition(u8 *); @@ -758,12 +754,12 @@ static bool8 sub_80E5BC8(const u8 *a, const u8 *b) for (i = 0; a[i] != 0; i++) { - if (gUnknown_0202E86C[i] > a[i]) + if (gPlayerAvatar.unk14[i] > a[i]) return FALSE; } for (i = 0; b[i] != 0; i++) { - if (gUnknown_0202E874[i] > b[i]) + if (gPlayerAvatar.unk1C[i] > b[i]) return FALSE; } return TRUE; @@ -939,14 +935,14 @@ void GetOnOffBike(u8 var) if (gPlayerAvatar.flags & (PLAYER_AVATAR_FLAG_MACH_BIKE | PLAYER_AVATAR_FLAG_ACRO_BIKE)) { SetPlayerAvatarTransitionFlags(PLAYER_AVATAR_FLAG_ON_FOOT); - sav1_reset_battle_music_maybe(); - sub_8053E90(); + Overworld_ClearSavedMusic(); + Overworld_PlaySpecialMapMusic(); } else { SetPlayerAvatarTransitionFlags(var); - sav1_set_battle_music_maybe(BGM_CYCLING); - sub_8053FB0(BGM_CYCLING); + Overworld_SetSavedMusic(BGM_CYCLING); + Overworld_ChangeMusicTo(BGM_CYCLING); } } diff --git a/src/birch_pc.c b/src/field/birch_pc.c similarity index 86% rename from src/birch_pc.c rename to src/field/birch_pc.c index 5fb6427c3..9872dd54d 100644 --- a/src/birch_pc.c +++ b/src/field/birch_pc.c @@ -91,15 +91,15 @@ const u8 *GetPokedexRatingText(u16 count) return gBirchDexRatingText_LessThan200; if (count == 200) { - if (GetNationalPokedexFlag(SpeciesToNationalPokedexNum(SPECIES_JIRACHI), 1) - || GetNationalPokedexFlag(SpeciesToNationalPokedexNum(SPECIES_DEOXYS), 1)) // Jirachi or Deoxys is not counted towards the dex completion. If either of these flags are enabled, it means the actual count is less than 200. + if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(SPECIES_JIRACHI), 1) + || GetSetPokedexFlag(SpeciesToNationalPokedexNum(SPECIES_DEOXYS), 1)) // Jirachi or Deoxys is not counted towards the dex completion. If either of these flags are enabled, it means the actual count is less than 200. return gBirchDexRatingText_LessThan200; return gBirchDexRatingText_DexCompleted; } if (count == 201) { - if (GetNationalPokedexFlag(SpeciesToNationalPokedexNum(SPECIES_JIRACHI), 1) - && GetNationalPokedexFlag(SpeciesToNationalPokedexNum(SPECIES_DEOXYS), 1)) // If both of these flags are enabled, it means the actual count is less than 200. + if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(SPECIES_JIRACHI), 1) + && GetSetPokedexFlag(SpeciesToNationalPokedexNum(SPECIES_DEOXYS), 1)) // If both of these flags are enabled, it means the actual count is less than 200. return gBirchDexRatingText_LessThan200; return gBirchDexRatingText_DexCompleted; } diff --git a/src/braille_puzzles.c b/src/field/braille_puzzles.c similarity index 83% rename from src/braille_puzzles.c rename to src/field/braille_puzzles.c index 4de945b9c..b11b1ff3a 100644 --- a/src/braille_puzzles.c +++ b/src/field/braille_puzzles.c @@ -6,6 +6,7 @@ #include "fieldmap.h" #include "flags.h" #include "main.h" +#include "map_constants.h" #include "map_obj_lock.h" #include "menu.h" #include "rom6.h" @@ -19,13 +20,13 @@ extern u8 gPlayerPartyCount; extern u8 gLastFieldPokeMenuOpened; -extern u32 gUnknown_0202FF84[]; - -extern u8 gIslandCave_EventScript_OpenRegiiceChamber[]; // regiice event script +extern u8 S_OpenRegiceChamber[]; // regiice event script bool8 ShouldDoBrailleDigEffect(void) { - if (!FlagGet(SYS_BRAILLE_DIG) && (gSaveBlock1.location.mapGroup == 0x18 && gSaveBlock1.location.mapNum == 0x47)) + if (!FlagGet(SYS_BRAILLE_DIG) + && (gSaveBlock1.location.mapGroup == MAP_GROUP_SEALED_CHAMBER_OUTER_ROOM + && gSaveBlock1.location.mapNum == MAP_ID_SEALED_CHAMBER_OUTER_ROOM)) { if (gSaveBlock1.pos.x == 10 && gSaveBlock1.pos.y == 3) return TRUE; @@ -54,10 +55,11 @@ void DoBrailleDigEffect(void) bool8 CheckRelicanthWailord(void) { + // First comes Relicanth. if (GetMonData(&gPlayerParty, MON_DATA_SPECIES2, 0) == SPECIES_RELICANTH) { CalculatePlayerPartyCount(); - + // Last comes Wailord if (GetMonData(&gPlayerParty[gPlayerPartyCount - 1], MON_DATA_SPECIES2, 0) == SPECIES_WAILORD) return TRUE; } @@ -66,7 +68,7 @@ bool8 CheckRelicanthWailord(void) bool8 ShouldDoBrailleStrengthEffect(void) { - if (!FlagGet(SYS_BRAILLE_STRENGTH) && (gSaveBlock1.location.mapGroup == 0x18 && gSaveBlock1.location.mapNum == 0x6)) + if (!FlagGet(SYS_BRAILLE_STRENGTH) && (gSaveBlock1.location.mapGroup == MAP_GROUP_DESERT_RUINS && gSaveBlock1.location.mapNum == MAP_ID_DESERT_RUINS)) { if (gSaveBlock1.pos.x == 10 && gSaveBlock1.pos.y == 23) return TRUE; @@ -96,7 +98,7 @@ void DoBrailleStrengthEffect(void) bool8 ShouldDoBrailleFlyEffect(void) { - if (!FlagGet(SYS_BRAILLE_FLY) && (gSaveBlock1.location.mapGroup == 0x18 && gSaveBlock1.location.mapNum == 0x44)) + if (!FlagGet(SYS_BRAILLE_FLY) && (gSaveBlock1.location.mapGroup == MAP_GROUP_ANCIENT_TOMB && gSaveBlock1.location.mapNum == MAP_ID_ANCIENT_TOMB)) { if (gSaveBlock1.pos.x == 8 && gSaveBlock1.pos.y == 25) return TRUE; @@ -107,8 +109,8 @@ bool8 ShouldDoBrailleFlyEffect(void) void DoBrailleFlyEffect(void) { - gUnknown_0202FF84[0] = gLastFieldPokeMenuOpened; - FieldEffectStart(0x3C); + gFieldEffectArguments[0] = gLastFieldPokeMenuOpened; + FieldEffectStart(FLDEFF_USE_FLY_ANCIENT_TOMB); } bool8 FldEff_UseFlyAncientTomb(void) @@ -122,7 +124,7 @@ bool8 FldEff_UseFlyAncientTomb(void) void UseFlyAncientTomb_Callback(void) { - FieldEffectActiveListRemove(0x3C); + FieldEffectActiveListRemove(FLDEFF_USE_FLY_ANCIENT_TOMB); UseFlyAncientTomb_Finish(); } @@ -160,7 +162,7 @@ void Task_BrailleWait(u8 taskId) if (BrailleWait_CheckButtonPress() != FALSE) { MenuZeroFillScreen(); - PlaySE(5); + PlaySE(SE_SELECT); data[0] = 2; } else @@ -193,7 +195,7 @@ void Task_BrailleWait(u8 taskId) break; case 4: sub_8064E2C(); - ScriptContext1_SetupScript(gIslandCave_EventScript_OpenRegiiceChamber); + ScriptContext1_SetupScript(S_OpenRegiceChamber); DestroyTask(taskId); break; } @@ -201,14 +203,14 @@ void Task_BrailleWait(u8 taskId) bool32 BrailleWait_CheckButtonPress(void) { - u16 var = 0xFF; + u16 keyMask = A_BUTTON | B_BUTTON | START_BUTTON | SELECT_BUTTON | DPAD_ANY; - if (gSaveBlock2.optionsButtonMode == 1) - var |= 0x300; - if (gSaveBlock2.optionsButtonMode == 2) - var |= 0x200; + if (gSaveBlock2.optionsButtonMode == OPTIONS_BUTTON_MODE_LR) + keyMask |= L_BUTTON | R_BUTTON; + if (gSaveBlock2.optionsButtonMode == OPTIONS_BUTTON_MODE_L_EQUALS_A) + keyMask |= L_BUTTON; - if ((var & gMain.newKeys) != FALSE) + if (gMain.newKeys & keyMask) return TRUE; else return FALSE; diff --git a/src/choose_party.c b/src/field/choose_party.c similarity index 71% rename from src/choose_party.c rename to src/field/choose_party.c index 63e9c8477..f35dcdf56 100644 --- a/src/choose_party.c +++ b/src/field/choose_party.c @@ -6,9 +6,10 @@ #include "name_string_util.h" #include "palette.h" #include "party_menu.h" +#include "pokemon_menu.h" #include "pokemon.h" #include "pokemon_summary_screen.h" -#include "rom4.h" +#include "overworld.h" #include "script.h" #include "songs.h" #include "sound.h" @@ -17,21 +18,6 @@ #include "task.h" #include "text.h" -struct UnknownPokemonStruct2 -{ - /*0x00*/ u16 species; - /*0x02*/ u16 heldItem; - /*0x04*/ u8 nickname[11]; - /*0x0F*/ u8 level; - /*0x10*/ u16 hp; - /*0x12*/ u16 maxhp; - /*0x14*/ u32 status; - /*0x18*/ u32 personality; - /*0x1C*/ u8 gender; - /*0x1D*/ u8 language; -}; - -extern u8 gSelectedOrderFromParty[]; extern u8 gPlayerPartyCount; extern u8 gLastFieldPokeMenuOpened; extern u8 gUnknown_020384F0; @@ -40,51 +26,15 @@ extern u8 gUnknown_0202E8F6; extern struct Pokemon gUnknown_030042FC[]; extern const u16 gBattleTowerBanlist[]; -extern void OpenPartyMenu(); -extern void TryCreatePartyMenuMonIcon(u8, u8, struct Pokemon *); -extern void LoadHeldItemIconGraphics(void); -extern void CreateHeldItemIcons_806DC34(); +EWRAM_DATA u8 gSelectedOrderFromParty[3] = {0}; + extern u8 sub_806BD58(u8, u8); extern void PartyMenuPrintMonsLevelOrStatus(void); -extern void PrintPartyMenuMonNicknames(void); extern void sub_806BC3C(u8, u8); -extern u8 sub_806B58C(u8); -extern void sub_806D538(); -extern u16 sub_806BE38(); -extern u8 sub_806CA38(); -extern void sub_808B5B4(); -extern TaskFunc PartyMenuGetPopupMenuFunc(u8, const struct PartyPopupMenu *, const struct PartyMenuItem *, u8); -extern u8 sub_806B124(); -extern void sub_806C994(); -extern void sub_806C658(); -extern void sub_806AEDC(void); -extern void sub_806AF4C(); extern void ShowPokemonSummaryScreen(struct Pokemon *, u8, u8, void (*)(void), int); -extern void sub_806C890(); -extern void sub_806D5A4(); -extern void sub_806B908(void); -extern void CreateMonIcon_806D99C(int, u8, int, struct UnknownPokemonStruct2 *); -extern void sub_806D50C(int, u8); -extern void CreatePartyMenuMonIcon(); -extern void CreateHeldItemIcon_806DCD4(int, u8, int); extern u8 GetMonStatusAndPokerus(); extern void PartyMenuPrintHP(); -extern void PartyMenuPutStatusTilemap(u8, int, u8); -extern void PartyMenuPrintLevel(); -extern void PartyMenuPutNicknameTilemap(); -extern void PrintPartyMenuMonNickname(); -extern void PartyMenuDrawHPBar(); extern bool8 sub_80F9344(void); -extern void sub_806D4AC(); -extern void sub_806D3B4(); -extern void PartyMenuDoPrintLevel(u8, u8, u8); -extern void PartyMenuDoDrawHPBar(u8, u8, u16, u16); -extern void PartyMenuDoPutNicknameTilemap(u16, u8, u8, u8, const u8 *); -extern void box_print(u8, int, const u8 *); -extern void sub_806BCE8(void); -extern void sub_806E750(u8, const struct PartyPopupMenu *, const struct PartyMenuItem *, int); -extern u16 sub_806BD80(); -extern void sub_806BF74(); static void ClearPartySelection(void); static bool8 IsMonAllowedInBattleTower(struct Pokemon *); @@ -108,14 +58,14 @@ void sub_8121E10(void) { ClearPartySelection(); ewram1B000.unk263 = 0; - OpenPartyMenu(4, 0); + OpenPartyMenu(PARTY_MENU_TYPE_BATTLE_TOWER, 0); } void sub_8121E34(void) { ClearPartySelection(); ewram1B000.unk263 = 1; - OpenPartyMenu(4, 0); + OpenPartyMenu(PARTY_MENU_TYPE_BATTLE_TOWER, 0); } static void ClearPartySelection(void) @@ -126,50 +76,50 @@ static void ClearPartySelection(void) gSelectedOrderFromParty[i] = 0; } -bool8 sub_8121E78(void) +bool8 SetupBattleTowerPartyMenu(void) { u8 i; - switch (ewram1B000_alt.unk264) + switch (ewram1B000_alt.setupState) { case 0: - if (ewram1B000_alt.unk266 < gPlayerPartyCount) + if (ewram1B000_alt.monIndex < gPlayerPartyCount) { - TryCreatePartyMenuMonIcon(ewram1B000_alt.unk260, ewram1B000_alt.unk266, &gPlayerParty[ewram1B000_alt.unk266]); - ewram1B000_alt.unk266++; + TryCreatePartyMenuMonIcon(ewram1B000_alt.menuHandlerTaskId, ewram1B000_alt.monIndex, &gPlayerParty[ewram1B000_alt.monIndex]); + ewram1B000_alt.monIndex++; } else { - ewram1B000_alt.unk266 = 0; - ewram1B000_alt.unk264++; + ewram1B000_alt.monIndex = 0; + ewram1B000_alt.setupState++; } break; case 1: LoadHeldItemIconGraphics(); - ewram1B000_alt.unk264++; + ewram1B000_alt.setupState++; break; case 2: - CreateHeldItemIcons_806DC34(ewram1B000_alt.unk260); - ewram1B000_alt.unk264++; + CreateHeldItemIcons_806DC34(ewram1B000_alt.menuHandlerTaskId); + ewram1B000_alt.setupState++; break; case 3: - if (sub_806BD58(ewram1B000_alt.unk260, ewram1B000_alt.unk266) == 1) + if (sub_806BD58(ewram1B000_alt.menuHandlerTaskId, ewram1B000_alt.monIndex) == 1) { - ewram1B000_alt.unk266 = 0; - ewram1B000_alt.unk264++; + ewram1B000_alt.monIndex = 0; + ewram1B000_alt.setupState++; } else { - ewram1B000_alt.unk266++; + ewram1B000_alt.monIndex++; } break; case 4: PartyMenuPrintMonsLevelOrStatus(); - ewram1B000_alt.unk264++; + ewram1B000_alt.setupState++; break; case 5: PrintPartyMenuMonNicknames(); - ewram1B000_alt.unk264++; + ewram1B000_alt.setupState++; break; case 6: for (i = 0; i < gPlayerPartyCount; i++) @@ -192,29 +142,28 @@ bool8 sub_8121E78(void) sub_806BC3C(i, 0x7E); } } - ewram1B000_alt.unk264++; + ewram1B000_alt.setupState++; break; case 7: - if (sub_806B58C(ewram1B000_alt.unk266) == 1) + if (DrawPartyMonBackground(ewram1B000_alt.monIndex) == 1) { - ewram1B000_alt.unk266 = 0; - ewram1B000_alt.unk264 = 0; + ewram1B000_alt.monIndex = 0; + ewram1B000_alt.setupState = 0; return TRUE; } else { - ewram1B000_alt.unk266++; + ewram1B000_alt.monIndex++; } break; } return FALSE; } -#ifdef NONMATCHING static bool8 IsMonAllowedInBattleTower(struct Pokemon *pkmn) { - u16 r3; - s32 i; + u16 species; + s32 i = 0; if (GetMonData(pkmn, MON_DATA_IS_EGG)) return FALSE; @@ -231,97 +180,16 @@ static bool8 IsMonAllowedInBattleTower(struct Pokemon *pkmn) && GetMonData(pkmn, MON_DATA_LEVEL) > 50) return FALSE; - r3 = GetMonData(pkmn, MON_DATA_SPECIES); - // Can't stop the compiler from optimizing out the first index - for (i = 0; gBattleTowerBanlist[i] != 0xFFFF; i++) + // Check if the pkmn is in the ban list + species = GetMonData(pkmn, MON_DATA_SPECIES); + while (gBattleTowerBanlist[i] != 0xFFFF) { - if (gBattleTowerBanlist[i] == r3) + if (gBattleTowerBanlist[i] == species) return FALSE; + i++; } return TRUE; } -#else -__attribute__((naked)) -static bool8 IsMonAllowedInBattleTower(struct Pokemon *pkmn) -{ - asm_unified( - "push {r4,lr}\n\ - adds r4, r0, 0\n\ - movs r1, 0x2D\n\ - bl GetMonData\n\ - cmp r0, 0\n\ - bne _0812207C\n\ - ldr r0, _08122058 @ =0x0201b000\n\ - ldr r1, _0812205C @ =0x00000263\n\ - adds r0, r1\n\ - ldrb r0, [r0]\n\ - cmp r0, 0\n\ - bne _08122060\n\ - adds r0, r4, 0\n\ - movs r1, 0x39\n\ - bl GetMonData\n\ - cmp r0, 0\n\ - beq _0812207C\n\ - b _081220B6\n\ - .align 2, 0\n\ -_08122058: .4byte 0x0201b000\n\ -_0812205C: .4byte 0x00000263\n\ -_08122060:\n\ - ldr r0, _08122080 @ =gSaveBlock2\n\ - ldr r1, _08122084 @ =0x00000554\n\ - adds r0, r1\n\ - ldrb r1, [r0]\n\ - movs r0, 0x1\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - bne _08122088\n\ - adds r0, r4, 0\n\ - movs r1, 0x38\n\ - bl GetMonData\n\ - cmp r0, 0x32\n\ - bls _08122088\n\ -_0812207C:\n\ - movs r0, 0\n\ - b _081220B8\n\ - .align 2, 0\n\ -_08122080: .4byte gSaveBlock2\n\ -_08122084: .4byte 0x00000554\n\ -_08122088:\n\ - adds r0, r4, 0\n\ - movs r1, 0xB\n\ - bl GetMonData\n\ - lsls r0, 16\n\ - lsrs r3, r0, 16\n\ - ldr r1, _081220C0 @ =gBattleTowerBanlist\n\ - movs r0, 0\n\ - lsls r0, 1\n\ - adds r2, r0, r1\n\ - ldrh r0, [r2]\n\ - ldr r1, _081220C4 @ =0x0000ffff\n\ - cmp r0, r1\n\ - beq _081220B6\n\ - adds r4, r1, 0\n\ - adds r1, r2, 0\n\ -_081220A8:\n\ - ldrh r0, [r1]\n\ - cmp r0, r3\n\ - beq _0812207C\n\ - adds r1, 0x2\n\ - ldrh r0, [r1]\n\ - cmp r0, r4\n\ - bne _081220A8\n\ -_081220B6:\n\ - movs r0, 0x1\n\ -_081220B8:\n\ - pop {r4}\n\ - pop {r1}\n\ - bx r1\n\ - .align 2, 0\n\ -_081220C0: .4byte gBattleTowerBanlist\n\ -_081220C4: .4byte 0x0000ffff\n" - ); -} -#endif static u8 sub_81220C8(void) { @@ -357,7 +225,7 @@ static void BattleTowerEntryMenuCallback_Enter(u8); static void BattleTowerEntryMenuCallback_NoEntry(u8); static void BattleTowerEntryMenuCallback_Exit(u8); -static const struct PartyMenuItem sBattleTowerEntryMenuItems[] = +static const struct MenuAction2 sBattleTowerEntryMenuItems[] = { {OtherText_Summary, BattleTowerEntryMenuCallback_Summary}, {OtherText_Enter2, BattleTowerEntryMenuCallback_Enter}, @@ -391,34 +259,34 @@ static bool8 IsPartyMemberAlreadySelected(u8 partyMember) static void sub_81221F8(u8 taskId) { - sub_806D538(5, 1); + PrintPartyMenuPromptText(5, 1); if (IsMonAllowedInBattleTower(&gPlayerParty[gLastFieldPokeMenuOpened]) == TRUE) { if (IsPartyMemberAlreadySelected(gLastFieldPokeMenuOpened + 1) == TRUE) { gTasks[taskId].data[4] = 1; - sub_806E750(1, sBattleTowerEntryMenu, sBattleTowerEntryMenuItems, 0); + ShowPartyPopupMenu(1, sBattleTowerEntryMenu, sBattleTowerEntryMenuItems, 0); } else { gTasks[taskId].data[4] = 0; - sub_806E750(0, sBattleTowerEntryMenu, sBattleTowerEntryMenuItems, 0); + ShowPartyPopupMenu(0, sBattleTowerEntryMenu, sBattleTowerEntryMenuItems, 0); } } else { gTasks[taskId].data[4] = 2; - sub_806E750(2, sBattleTowerEntryMenu, sBattleTowerEntryMenuItems, 0); + ShowPartyPopupMenu(2, sBattleTowerEntryMenu, sBattleTowerEntryMenuItems, 0); } } -void sub_81222B0(u8 taskId) +void HandleBattleTowerPartyMenu(u8 taskId) { if (!gPaletteFade.active) { - switch (sub_806BE38(taskId)) + switch (HandleBattleTowerPartyMenuInput(taskId)) { - case 1: + case A_BUTTON: PlaySE(SE_SELECT); gLastFieldPokeMenuOpened = sub_806CA38(taskId); if (gLastFieldPokeMenuOpened != 6) @@ -433,7 +301,7 @@ void sub_81222B0(u8 taskId) } sub_808B5B4(taskId); break; - case 2: + case B_BUTTON: PlaySE(SE_SELECT); ClearPartySelection(); BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); @@ -510,7 +378,7 @@ static void sub_81224A8(u8 taskId) if (val != 0xFF) { - sub_806D538(val, 0); + PrintPartyMenuPromptText(val, 0); gTasks[taskId].func = sub_8122480; } else @@ -523,7 +391,7 @@ static void sub_81224A8(u8 taskId) else { PlaySE(SE_HAZURE); - sub_806D538(14, 0); + PrintPartyMenuPromptText(14, 0); gTasks[taskId].func = sub_8122480; } } @@ -534,14 +402,14 @@ static void sub_8122530(void) { while (1) { - if (sub_806B124() == 1) + if (InitPartyMenu() == TRUE) { - sub_806C994(ewram1B000.unk260, gUnknown_020384F0); - sub_806C658(ewram1B000.unk260, 0); + sub_806C994(ewram1B000.menuHandlerTaskId, gUnknown_020384F0); + ChangeBattleTowerPartyMenuSelection(ewram1B000.menuHandlerTaskId, 0); GetMonNickname(&gPlayerParty[gUnknown_020384F0], gStringVar1); gLastFieldPokeMenuOpened = gUnknown_020384F0; - sub_81221F8(ewram1B000.unk260); - SetMainCallback2(sub_806AEDC); + sub_81221F8(ewram1B000.menuHandlerTaskId); + SetMainCallback2(CB2_PartyMenuMain); break; } if (sub_80F9344() == 1) @@ -552,7 +420,7 @@ static void sub_8122530(void) static void sub_81225A4(void) { gPaletteFade.bufferTransferDisabled = TRUE; - sub_806AF4C(4, 0xFF, sub_812238C, 5); + SetPartyMenuSettings(PARTY_MENU_TYPE_BATTLE_TOWER, 0xFF, sub_812238C, 5); SetMainCallback2(sub_8122530); } @@ -587,7 +455,7 @@ static void BattleTowerEntryMenuCallback_Enter(u8 taskId) gSelectedOrderFromParty[i] = gLastFieldPokeMenuOpened + 1; sub_806BC3C(gLastFieldPokeMenuOpened, i * 14 + 0x1C); if (i == 2) - sub_806C890(taskId); + SelectBattleTowerOKButton(taskId); BattleTowerEntryMenuCallback_Exit(taskId); return; } @@ -649,8 +517,8 @@ static void sub_81227FC(u8 taskId) { MenuZeroFillWindowRect(20, 10, 29, 19); HandleDestroyMenuCursors(); - sub_806D538(0, 0); - gTasks[taskId].func = sub_81222B0; + PrintPartyMenuPromptText(0, 0); + gTasks[taskId].func = HandleBattleTowerPartyMenu; } static void BattleTowerEntryMenuCallback_Exit(u8 taskId) @@ -659,25 +527,25 @@ static void BattleTowerEntryMenuCallback_Exit(u8 taskId) sub_81227FC(taskId); } -bool8 sub_8122854(void) +bool8 SetupLinkMultiBattlePartyMenu(void) { - switch (ewram1B000_alt.unk264) + switch (ewram1B000_alt.setupState) { case 0: - sub_81228E8(ewram1B000_alt.unk260); - ewram1B000_alt.unk264++; + sub_81228E8(ewram1B000_alt.menuHandlerTaskId); + ewram1B000_alt.setupState++; break; case 1: LoadHeldItemIconGraphics(); - ewram1B000_alt.unk264++; + ewram1B000_alt.setupState++; break; case 2: - sub_8122950(ewram1B000_alt.unk260); - ewram1B000_alt.unk264++; + sub_8122950(ewram1B000_alt.menuHandlerTaskId); + ewram1B000_alt.setupState++; break; case 3: sub_81229B8(); - ewram1B000_alt.unk264++; + ewram1B000_alt.setupState++; break; case 4: sub_806B908(); @@ -696,7 +564,7 @@ static void sub_81228E8(u8 a) CreatePartyMenuMonIcon(a, i, 3, &gPlayerParty[i]); if (gUnknown_02023A00[i].species != 0) { - CreateMonIcon_806D99C(a, i + 3, 3, &gUnknown_02023A00[i]); + CreateMonIcon_LinkMultiBattle(a, i + 3, 3, &gUnknown_02023A00[i]); sub_806D50C(a, i + 3); } } @@ -735,14 +603,14 @@ static void sub_81229B8(void) PartyMenuPutStatusTilemap(i, 3, status - 1); else PartyMenuPrintLevel(i, 3, &gPlayerParty[i]); - PartyMenuPutNicknameTilemap(i, 3, &gPlayerParty[i]); + PartyMenuPrintGenderIcon(i, 3, &gPlayerParty[i]); PrintPartyMenuMonNickname(i, 3, &gPlayerParty[i]); PartyMenuDrawHPBar(i, 3, &gPlayerParty[i]); } } } -void sub_8122A48(u8 taskId) +void HandleLinkMultiBattlePartyMenu(u8 taskId) { if (!gPaletteFade.active) { @@ -785,11 +653,11 @@ static void sub_8122B10(u8 taskId) PartyMenuPutStatusTilemap(i + 3, 3, r2 - 1); else PartyMenuDoPrintLevel(i + 3, 3, gUnknown_02023A00[i].level); - PartyMenuDoPutNicknameTilemap(gUnknown_02023A00[i].species, gUnknown_02023A00[i].gender, 3, i + 3, gUnknown_02023A00[i].nickname); + PartyMenuDoPrintGenderIcon(gUnknown_02023A00[i].species, gUnknown_02023A00[i].gender, 3, i + 3, gUnknown_02023A00[i].nickname); StringCopy(gStringVar1, gUnknown_02023A00[i].nickname); StringGetEnd10(gStringVar1); SanitizeNameString(gStringVar1); - box_print(i + 3, 3, gStringVar1); + PartyMenuDoPrintMonNickname(i + 3, 3, gStringVar1); PartyMenuDoDrawHPBar(i + 3, 3, gUnknown_02023A00[i].hp, gUnknown_02023A00[i].maxhp); } } @@ -807,64 +675,64 @@ static void sub_8122C18(u8 taskId) } } -// Exactly the same as sub_8121E78 except for case 6 +// Exactly the same as SetupBattleTowerPartyMenu except for case 6 bool8 unref_sub_8122C60(void) { - switch (ewram1B000_alt.unk264) + switch (ewram1B000_alt.setupState) { case 0: - if (ewram1B000_alt.unk266 < gPlayerPartyCount) + if (ewram1B000_alt.monIndex < gPlayerPartyCount) { - TryCreatePartyMenuMonIcon(ewram1B000_alt.unk260, ewram1B000_alt.unk266, &gPlayerParty[ewram1B000_alt.unk266]); - ewram1B000_alt.unk266++; + TryCreatePartyMenuMonIcon(ewram1B000_alt.menuHandlerTaskId, ewram1B000_alt.monIndex, &gPlayerParty[ewram1B000_alt.monIndex]); + ewram1B000_alt.monIndex++; } else { - ewram1B000_alt.unk266 = 0; - ewram1B000_alt.unk264++; + ewram1B000_alt.monIndex = 0; + ewram1B000_alt.setupState++; } break; case 1: LoadHeldItemIconGraphics(); - ewram1B000_alt.unk264++; + ewram1B000_alt.setupState++; break; case 2: - CreateHeldItemIcons_806DC34(ewram1B000_alt.unk260); - ewram1B000_alt.unk264++; + CreateHeldItemIcons_806DC34(ewram1B000_alt.menuHandlerTaskId); + ewram1B000_alt.setupState++; break; case 3: - if (sub_806BD58(ewram1B000_alt.unk260, ewram1B000_alt.unk266) == 1) + if (sub_806BD58(ewram1B000_alt.menuHandlerTaskId, ewram1B000_alt.monIndex) == 1) { - ewram1B000_alt.unk266 = 0; - ewram1B000_alt.unk264++; + ewram1B000_alt.monIndex = 0; + ewram1B000_alt.setupState++; } else { - ewram1B000_alt.unk266++; + ewram1B000_alt.monIndex++; } break; case 4: PartyMenuPrintMonsLevelOrStatus(); - ewram1B000_alt.unk264++; + ewram1B000_alt.setupState++; break; case 5: PrintPartyMenuMonNicknames(); - ewram1B000_alt.unk264++; + ewram1B000_alt.setupState++; break; case 6: sub_806BCE8(); - ewram1B000_alt.unk264++; + ewram1B000_alt.setupState++; break; case 7: - if (sub_806B58C(ewram1B000_alt.unk266) == 1) + if (DrawPartyMonBackground(ewram1B000_alt.monIndex) == 1) { - ewram1B000_alt.unk266 = 0; - ewram1B000_alt.unk264 = 0; + ewram1B000_alt.monIndex = 0; + ewram1B000_alt.setupState = 0; return TRUE; } else { - ewram1B000_alt.unk266++; + ewram1B000_alt.monIndex++; } break; } @@ -879,7 +747,7 @@ static void DaycareStorageMenuCallback_Store(u8); static void DaycareStorageMenuCallback_Summary(u8); static void DaycareStorageMenuCallback_Exit(u8); -static const struct PartyMenuItem sDaycareStorageMenuItems[] = +static const struct MenuAction2 sDaycareStorageMenuItems[] = { {OtherText_Store, DaycareStorageMenuCallback_Store}, {OtherText_Summary, DaycareStorageMenuCallback_Summary}, @@ -900,29 +768,29 @@ static void sub_8122D94(u8 taskId) if (!GetMonData(&gPlayerParty[gLastFieldPokeMenuOpened], MON_DATA_IS_EGG)) { gTasks[taskId].data[4] = 0; - sub_806E750(0, sDaycareStorageMenus, sDaycareStorageMenuItems, 0); + ShowPartyPopupMenu(0, sDaycareStorageMenus, sDaycareStorageMenuItems, 0); } else { gTasks[taskId].data[4] = 1; - sub_806E750(1, sDaycareStorageMenus, sDaycareStorageMenuItems, 0); + ShowPartyPopupMenu(1, sDaycareStorageMenus, sDaycareStorageMenuItems, 0); } } -void sub_8122E0C(u8 taskId) +void HandleDaycarePartyMenu(u8 taskId) { if (!gPaletteFade.active) { - switch (sub_806BD80(taskId)) + switch (HandleDefaultPartyMenuInput(taskId)) { - case 1: + case A_BUTTON: PlaySE(SE_SELECT); gLastFieldPokeMenuOpened = sub_806CA38(taskId); GetMonNickname(&gPlayerParty[gLastFieldPokeMenuOpened], gStringVar1); sub_8122D94(taskId); gTasks[taskId].func = Task_DaycareStorageMenu8122EAC; break; - case 2: + case B_BUTTON: PlaySE(SE_SELECT); gLastFieldPokeMenuOpened = 0xFF; gSpecialVar_0x8004 = 0xFF; @@ -985,14 +853,14 @@ static void sub_8122F90(void) { while (1) { - if (sub_806B124() == 1) + if (InitPartyMenu() == TRUE) { - sub_806C994(ewram1B000.unk260, gUnknown_020384F0); - sub_806BF74(ewram1B000.unk260, 0); + sub_806C994(ewram1B000.menuHandlerTaskId, gUnknown_020384F0); + ChangePartyMenuSelection(ewram1B000.menuHandlerTaskId, 0); GetMonNickname(&gPlayerParty[gUnknown_020384F0], gStringVar1); gLastFieldPokeMenuOpened = gUnknown_020384F0; - sub_8122D94(ewram1B000.unk260); - SetMainCallback2(sub_806AEDC); + sub_8122D94(ewram1B000.menuHandlerTaskId); + SetMainCallback2(CB2_PartyMenuMain); break; } if (sub_80F9344() == 1) @@ -1003,7 +871,7 @@ static void sub_8122F90(void) static void sub_8123004(void) { gPaletteFade.bufferTransferDisabled = TRUE; - sub_806AF4C(6, 0xFF, Task_DaycareStorageMenu8122EAC, 5); + SetPartyMenuSettings(PARTY_MENU_TYPE_DAYCARE, 0xFF, Task_DaycareStorageMenu8122EAC, 5); SetMainCallback2(sub_8122F90); } @@ -1030,8 +898,8 @@ static void DaycareStorageMenuCallback_Exit(u8 taskId) PlaySE(SE_SELECT); MenuZeroFillWindowRect(20, 10, 29, 19); HandleDestroyMenuCursors(); - sub_806D538(15, 0); - gTasks[taskId].func = sub_8122E0C; + PrintPartyMenuPromptText(15, 0); + gTasks[taskId].func = HandleDaycarePartyMenu; } void sub_8123138(u8 taskId) diff --git a/src/coins.c b/src/field/coins.c similarity index 67% rename from src/coins.c rename to src/field/coins.c index 3c6356612..91a4b508d 100644 --- a/src/coins.c +++ b/src/field/coins.c @@ -6,47 +6,47 @@ #define MAX_COINS 9999 -void UpdateCoinsWindow(s32 a, u8 b, u8 c) +void UpdateCoinsWindow(s32 coins, u8 x, u8 y) { - PrintCoins(a, 4, b + 2, c + 1); + PrintCoins(coins, 4, x + 2, y + 1); } -void ShowCoinsWindow(u32 a, u8 b, u8 c) +void ShowCoinsWindow(u32 coins, u8 x, u8 y) { - MenuDrawTextWindow(b, c, b + 9, c + 3); - UpdateCoinsWindow(a, b, c); + MenuDrawTextWindow(x, y, x + 9, y + 3); + UpdateCoinsWindow(coins, x, y); } -void HideCoinsWindow(u8 a, u8 b) +void HideCoinsWindow(u8 x, u8 y) { - MenuZeroFillWindowRect(a, b, a + 9, b + 3); + MenuZeroFillWindowRect(x, y, x + 9, y + 3); } -void PrintCoins(s32 a, u8 b, u8 c, u8 d) +void PrintCoins(s32 coins, u8 b, u8 x, u8 y) { u8 string[16]; u8 *ptr; u8 r1; u8 foo; - ConvertIntToDecimalString(string, a); + ConvertIntToDecimalString(string, coins); r1 = (b * 6 + 0x21 - 8 * (b + 2)); - c = c - r1 / 8; + x = x - r1 / 8; foo = r1 % 8; ptr = gStringVar1; if (foo) { - ptr[0] = 0xFC; + ptr[0] = EXT_CTRL_CODE_BEGIN; ptr[1] = 0x11; ptr[2] = 8 - (foo); ptr += 3; } - ptr[0] = 0xFC; + ptr[0] = EXT_CTRL_CODE_BEGIN; ptr[1] = 0x11; ptr[2] = (b - StringLength(string)) * 6; ptr += 3; StringCopy(ptr, string); - MenuPrint(gOtherText_Coins2, c, d); + MenuPrint(gOtherText_Coins2, x, y); } u16 GetCoins(void) diff --git a/src/coord_event_weather.c b/src/field/coord_event_weather.c similarity index 100% rename from src/coord_event_weather.c rename to src/field/coord_event_weather.c diff --git a/src/field/daycare.c b/src/field/daycare.c new file mode 100644 index 000000000..60cc61e40 --- /dev/null +++ b/src/field/daycare.c @@ -0,0 +1,1690 @@ +#include "global.h" +#include "daycare.h" +#include "pokemon.h" +#include "event_data.h" +#include "species.h" +#include "items.h" +#include "text.h" +#include "string_util.h" +#include "mail_data.h" +#include "name_string_util.h" +#include "pokemon_storage_system.h" +#include "rng.h" +#include "moves.h" +#include "trade.h" +#include "strings2.h" +#include "data/pokemon/egg_moves.h" +#include "party_menu.h" +#include "field_effect.h" +#include "main.h" +#include "menu.h" +#include "sound.h" +#include "songs.h" +#include "script.h" +#include "overworld.h" + +IWRAM_DATA u16 gUnknown_03000470[52]; +IWRAM_DATA u16 gUnknown_030004D8[4]; +IWRAM_DATA u16 gUnknown_030004E0[4]; +IWRAM_DATA u16 gUnknown_030004E8[12]; +IWRAM_DATA u16 gUnknown_03000500[4]; + +static void sub_80417F4(struct DayCareMail *); +static void sub_80420FC(struct Pokemon *, u16, struct DayCareData *); +static u8 daycare_relationship_score(struct DayCareData *); + +const u8 *const gUnknown_08209AC4[] = { + DaycareText_GetAlongVeryWell, + DaycareText_GetAlong, + DaycareText_DontLikeOther, + DaycareText_PlayOther +}; + +const u8 gUnknown_08209AD4[] = _("タマゴ"); + +u8 *GetMonNick(struct Pokemon *mon, u8 *dest) +{ + s8 nickname[POKEMON_NAME_LENGTH * 2]; + + GetMonData(mon, MON_DATA_NICKNAME, nickname); + return StringCopy10(dest, nickname); +} + +u8 *GetBoxMonNick(struct BoxPokemon *mon, u8 *dest) +{ + s8 nickname[POKEMON_NAME_LENGTH * 2]; + + GetBoxMonData(mon, MON_DATA_NICKNAME, nickname); + return StringCopy10(dest, nickname); +} + +u8 Daycare_CountPokemon(struct DayCareData *daycare_data) +{ + u8 i, count; + count = 0; + + for(i = 0;i <= 1;i++) + if(GetBoxMonData(&daycare_data->mons[i], MON_DATA_SPECIES) != 0) + count++; + + return count; +} + +void sub_8041324(struct BoxPokemon * box_pokemon, struct RecordMixingDayCareMail * daycareMailEtc) +{ + u8 i; + u8 specCount; + specCount = 0; + for (i=0; i<2; i++) + { + if (GetBoxMonData(&box_pokemon[i], MON_DATA_SPECIES) != SPECIES_NONE) + { + specCount ++; + if (GetBoxMonData(&box_pokemon[i], MON_DATA_HELD_ITEM) == ITEM_NONE) + { + daycareMailEtc->unk74[i] = 0; + } else + { + daycareMailEtc->unk74[i] = 1; + } + } else + { + daycareMailEtc->unk74[i] = 1; + } + } + daycareMailEtc->unk70 = specCount; +} + +static s8 Daycare_FindEmptySpot(struct BoxPokemon * daycare_data) +{ + u8 i; + + for(i = 0;i <= 1;i++) + if(GetBoxMonData(daycare_data + i, MON_DATA_SPECIES) == 0) + return i; + + return -1; +} + +static void Daycare_SendPokemon(struct Pokemon * mon, struct DayCareData * daycare_data) +{ + s8 empty_slot; + u8 mail; + u8 *names; + + empty_slot = Daycare_FindEmptySpot(daycare_data->mons); + if(MonHasMail(mon)) { + StringCopy((names = daycare_data->misc.mail[empty_slot].names), gSaveBlock2.playerName); + PadNameString(names, 0xFC); + names += 8; + GetMonNick(mon, names); + mail = GetMonData(mon, MON_DATA_MAIL); + daycare_data->misc.mail[empty_slot].message = gSaveBlock1.mail[mail]; + TakeMailFromMon(mon); + } + daycare_data->mons[empty_slot] = mon->box; + BoxMonRestorePP(&daycare_data->mons[empty_slot]); + daycare_data->misc.countersEtc.steps[empty_slot] = 0; + ZeroMonData(mon); + party_compaction(); + CalculatePlayerPartyCount(); +} + +void Daycare_SendPokemon_Special() +{ + Daycare_SendPokemon(gPlayerParty + gLastFieldPokeMenuOpened, &gSaveBlock1.daycareData); +} + +static void sub_80414C0(struct DayCareData * daycare_data) +{ + if((GetBoxMonData(&daycare_data->mons[1], MON_DATA_SPECIES) != 0) && GetBoxMonData(&daycare_data->mons[0], MON_DATA_SPECIES) == 0) + { + daycare_data->mons[0] = daycare_data->mons[1]; + ZeroBoxMonData(&daycare_data->mons[1]); + daycare_data->misc.mail[0] = daycare_data->misc.mail[1]; + daycare_data->misc.countersEtc.steps[0] = daycare_data->misc.countersEtc.steps[1]; + daycare_data->misc.countersEtc.steps[1] = 0; + sub_80417F4(&daycare_data->misc.mail[1]); + } +} + +u8 TryIncrementMonLevel(struct Pokemon *); +extern u16 gMoveToLearn; + +static void DayCare_LevelUpMoves(struct Pokemon * mon) +{ + s32 i; + u8 r6; + u16 temp; + + for (i = 0; i < MAX_LEVEL; i++) + { + if (TryIncrementMonLevel(mon)) + { + r6 = 1; + while ((temp = MonTryLearningNewMove(mon, r6)) != 0) + { + r6 = 0; + if (temp == 0xffff) + DeleteFirstMoveAndGiveMoveToMon(mon, gMoveToLearn); + } + } + else + break; + } + + CalculateMonStats(mon); +} + +static u16 sub_8041570(struct DayCareData * daycare_data, u8 slot) +{ + u16 species; + u32 experience; + struct Pokemon pokemon; + + GetBoxMonNick(&daycare_data->mons[slot], gStringVar1); + species = GetBoxMonData(&daycare_data->mons[slot], MON_DATA_SPECIES); + sub_803B4B4(&daycare_data->mons[slot], &pokemon); + if (GetMonData(&pokemon, MON_DATA_LEVEL) != MAX_LEVEL) + { + experience = GetMonData(&pokemon, MON_DATA_EXP) + daycare_data->misc.countersEtc.steps[slot]; + SetMonData(&pokemon, MON_DATA_EXP, (u8 *)&experience); + DayCare_LevelUpMoves(&pokemon); + } + gPlayerParty[PARTY_SIZE - 1] = pokemon; + if (daycare_data->misc.mail[slot].message.itemId) + { + GiveMailToMon2(&gPlayerParty[PARTY_SIZE - 1], &daycare_data->misc.mail[slot].message); + sub_80417F4(&daycare_data->misc.mail[slot]); + } + party_compaction(); + ZeroBoxMonData(&daycare_data->mons[slot]); + daycare_data->misc.countersEtc.steps[slot] = 0; + sub_80414C0(daycare_data); + CalculatePlayerPartyCount(); + return species; +} + +u16 sub_8041648() +{ + return sub_8041570(&gSaveBlock1.daycareData, gSpecialVar_0x8004); +} + +u8 Daycare_GetLevelAfterSteps(struct BoxPokemon * mon, u32 steps){ + struct BoxPokemon temp = *mon; + u32 new_exp = GetBoxMonData(mon, MON_DATA_EXP) + steps; + SetBoxMonData(&temp, MON_DATA_EXP, (u8 *) &new_exp); + return GetLevelFromBoxMonExp(&temp); +} + +static u8 sub_80416A0(struct DayCareData *daycareData, u8 slot) +{ + u8 levelBefore; + u8 levelAfter; + + levelBefore = GetLevelFromBoxMonExp(&daycareData->mons[slot]); + levelAfter = Daycare_GetLevelAfterSteps(&daycareData->mons[slot], daycareData->misc.countersEtc.steps[slot]); + return levelAfter - levelBefore; +} + +static u8 sub_80416E8(struct DayCareData *dayCareData, u8 slot) +{ + u8 levelDelta = sub_80416A0(dayCareData, slot); + GetBoxMonNick(&dayCareData->mons[slot], gStringVar1); + ConvertIntToDecimalStringN(gStringVar2, levelDelta, STR_CONV_MODE_LEFT_ALIGN, 2); + return levelDelta; +} + +static u16 sub_8041728(struct DayCareData *dayCareData, u8 slot) +{ + u16 cost; + + u8 levelDelta = sub_80416A0(dayCareData, slot); + GetBoxMonNick(&dayCareData->mons[slot], gStringVar1); + cost = 100 + 100 * levelDelta; + ConvertIntToDecimalStringN(gStringVar2, cost, STR_CONV_MODE_LEFT_ALIGN, 5); + return cost; +} + +void sub_8041770(void) +{ + gSpecialVar_0x8005 = sub_8041728(&gSaveBlock1.daycareData, gSpecialVar_0x8004); +} + +void sub_8041790(u16 i) +{ + gSaveBlock1.daycareData.misc.countersEtc.steps[0] += i; + gSaveBlock1.daycareData.misc.countersEtc.steps[1] += i; +} + +u8 sub_80417B8(void) +{ + if (GetBoxMonData(&gSaveBlock1.daycareData.mons[gSpecialVar_0x8004], MON_DATA_SPECIES) != 0) + return sub_80416E8(&gSaveBlock1.daycareData, gSpecialVar_0x8004); + return 0; +} + +static void sub_80417F4(struct DayCareMail *mail) +{ + u8 zero; + u8 *names; + u8 *names2; + int i; + zero = 0; + for (i = 7, names = mail->names + 7; i >= 0; i --) + *names-- = zero; + names2 = mail->names + 8; + zero = 0; + names = mail->names + 18; + do *names-- = zero; while ((int)names >= (int)names2); + ClearMailStruct(&mail->message); +} + +void unref_sub_8041824(struct DayCareData *dayCareData) +{ + u8 slot; + for (slot = 0; slot < ARRAY_COUNT(dayCareData->mons); slot ++) + { + ZeroBoxMonData(&dayCareData->mons[slot]); + dayCareData->misc.countersEtc.steps[slot] = 0; + sub_80417F4(&dayCareData->misc.mail[slot]); + } + dayCareData->misc.countersEtc.personalityLo = 0; + dayCareData->misc.countersEtc.unk_11a = 0; +} + +u16 sub_8041870(u16 species) +{ + int i, j, k; + bool8 found; + for (i = 0; i < 5; i ++) + { + found = FALSE; + for (j = 1; j < NUM_SPECIES; j ++) + { + for (k = 0; k < 5; k ++) + { + if (gEvolutionTable[j].evolutions[k].targetSpecies == species) + { + species = j; + found = TRUE; + break; + } + } + if (found) + break; + } + if (j == 412) + break; + } + return species; +} + +static void sub_80418F0(struct DayCareData *dayCareData) +{ + dayCareData->misc.countersEtc.personalityLo = (Random() % 0xfffe) + 1; + FlagSet(0x86); +} + +static void sub_804191C(struct DayCareData *dayCareData) +{ + dayCareData->misc.countersEtc.personalityLo = Random() | 0x8000; + FlagSet(0x86); +} + +void sub_8041940(void) +{ + sub_80418F0(&gSaveBlock1.daycareData); +} + +void sub_8041950(void) +{ + sub_804191C(&gSaveBlock1.daycareData); +} + +static void sub_8041960(u8 *data, u8 idx) +{ + int i, j; + u8 temp[6]; + data[idx] = 0xff; + for (i = 0; i < 6; i ++) + temp[i] = data[i]; + j = 0; + for (i = 0; i < 6; i ++) + if (temp[i] != 0xff) + data[j++] = temp[i]; +} + +static void InheritIVs(struct Pokemon *egg, struct DayCareData *dayCareData) +{ + u8 i; + u8 selectedIvs[3]; + u8 allIvs[6]; + u8 whichParent[3]; + u8 iv; + for (i = 0; i < 6; i ++) + allIvs[i] = i; + for (i = 0; i < 3; i ++) + { + selectedIvs[i] = allIvs[Random() % (6 - i)]; + sub_8041960(allIvs, selectedIvs[i]); + } + for (i = 0; i < 3; i ++) + whichParent[i] = Random() % 2; + for (i = 0; i < 3; i ++) + { + switch (selectedIvs[i]) + { + case 0: + iv = GetBoxMonData(&dayCareData->mons[whichParent[i]], MON_DATA_HP_IV); + SetMonData(egg, MON_DATA_HP_IV, &iv); + break; + case 1: + iv = GetBoxMonData(&dayCareData->mons[whichParent[i]], MON_DATA_ATK_IV); + SetMonData(egg, MON_DATA_ATK_IV, &iv); + break; + case 2: + iv = GetBoxMonData(&dayCareData->mons[whichParent[i]], MON_DATA_DEF_IV); + SetMonData(egg, MON_DATA_DEF_IV, &iv); + break; + case 3: + iv = GetBoxMonData(&dayCareData->mons[whichParent[i]], MON_DATA_SPD_IV); + SetMonData(egg, MON_DATA_SPD_IV, &iv); + break; + case 4: + iv = GetBoxMonData(&dayCareData->mons[whichParent[i]], MON_DATA_SPATK_IV); + SetMonData(egg, MON_DATA_SPATK_IV, &iv); + break; + case 5: + iv = GetBoxMonData(&dayCareData->mons[whichParent[i]], MON_DATA_SPDEF_IV); + SetMonData(egg, MON_DATA_SPDEF_IV, &iv); + break; + } + } +} + +#ifdef NONMATCHING +static +#endif +u8 pokemon_get_eggmoves(struct Pokemon *pokemon, u16 *eggMoves) +{ + u16 eggMoveIdx; + u16 numMovesFound; + u16 species; + u16 i; + + numMovesFound = 0; + eggMoveIdx = 0; + species = GetMonData(pokemon, MON_DATA_SPECIES); + for (i = 0; i < ARRAY_COUNT(gEggMoves) - 1; i ++) + { + if (gEggMoves[i] == species + EGG_MOVES_SPECIES_OFFSET) + { + eggMoveIdx = i + 1; + break; + } + } + for (i = 0; i < 10; i ++) + { + if (gEggMoves[eggMoveIdx + i] > EGG_MOVES_SPECIES_OFFSET) + { + break; + } + eggMoves[i] = gEggMoves[eggMoveIdx + i]; + numMovesFound++; + } + return numMovesFound; +} + +#ifdef NONMATCHING + +void daycare_build_child_moveset(struct Pokemon *egg, struct BoxPokemon *dad, struct BoxPokemon *mom) +{ + u16 numSharedParentMoves; + u8 numLevelUpMoves; + u8 numEggMoves; + u16 i, j; + + numSharedParentMoves = 0; + for (i = 0; i < 4; i ++) + { + gUnknown_03000500[i] = 0; + gUnknown_030004D8[i] = 0; + gUnknown_030004E0[i] = 0; + } + for (i = 0; i < 10; i ++) + gUnknown_030004E8[i] = 0; + for (i = 0; i < 50; i ++) + gUnknown_03000470[i] = 0; + + numLevelUpMoves = GetLevelUpMovesBySpecies(GetMonData(egg, MON_DATA_SPECIES), gUnknown_03000470); + for (i = 0; i < 4; i ++) + { + gUnknown_030004D8[i] = GetBoxMonData(dad, MON_DATA_MOVE1 + i); + gUnknown_03000500[i] = GetBoxMonData(mom, MON_DATA_MOVE1 + i); + } + numEggMoves = pokemon_get_eggmoves(egg, gUnknown_030004E8); + + for (i = 0; i < 4; i ++) + { + if (gUnknown_030004D8[i] != MOVE_NONE) + { + for (j = 0; j < numEggMoves; j ++) + { + if (gUnknown_030004D8[i] == gUnknown_030004E8[j]) + { + if (GiveMoveToMon(egg, gUnknown_030004D8[i]) == 0xffff) + DeleteFirstMoveAndGiveMoveToMon(egg, gUnknown_030004D8[i]); + break; + } + } + } + else + break; + } + for (i = 0; i < 4; i ++) + { + if (gUnknown_030004D8[i] != MOVE_NONE) + { + for (j = 0; j < 50 + 8; j ++) + { + if (gUnknown_030004D8[i] == ItemIdToBattleMoveId(ITEM_TM01 + j) && CanMonLearnTMHM(egg, j)) + { + if (GiveMoveToMon(egg, gUnknown_030004D8[i]) == 0xffff) + DeleteFirstMoveAndGiveMoveToMon(egg, gUnknown_030004D8[i]); + } + } + } + } + for (i = 0; i < 4; i ++) + { + if (gUnknown_030004D8[i] == MOVE_NONE) + break; + for (j = 0; j < 4; j ++) + { + if (gUnknown_030004D8[i] == gUnknown_03000500[j] && gUnknown_030004D8[i] != MOVE_NONE) + gUnknown_030004E0[numSharedParentMoves++] = gUnknown_030004D8[i]; + } + } + for (i = 0; i < 4; i ++) + { + if (gUnknown_030004E0[i] == MOVE_NONE) + break; + for (j = 0; j < numLevelUpMoves; j ++) + { + if (gUnknown_03000470[j] != MOVE_NONE && gUnknown_030004E0[i] == gUnknown_03000470[j]) + { + if (GiveMoveToMon(egg, gUnknown_030004E0[i]) == 0xffff) + DeleteFirstMoveAndGiveMoveToMon(egg, gUnknown_030004E0[i]); + break; + } + } + } +} +#else +__attribute__((naked)) +void daycare_build_child_moveset(struct Pokemon *egg, struct BoxPokemon *dad, struct BoxPokemon *mom) +{ + asm_unified("\tpush {r4-r7,lr}\n" + "\tmov r7, r10\n" + "\tmov r6, r9\n" + "\tmov r5, r8\n" + "\tpush {r5-r7}\n" + "\tsub sp, 0xC\n" + "\tadds r7, r0, 0\n" + "\tmov r10, r1\n" + "\tmov r9, r2\n" + "\tmovs r0, 0\n" + "\tstr r0, [sp]\n" + "\tmovs r6, 0\n" + "\tldr r5, _08041CC8 @ =gUnknown_03000500\n" + "\tmovs r2, 0\n" + "\tldr r4, _08041CCC @ =gUnknown_030004D8\n" + "\tldr r3, _08041CD0 @ =gUnknown_030004E0\n" + "_08041BE4:\n" + "\tlsls r1, r6, 1\n" + "\tadds r0, r1, r5\n" + "\tstrh r2, [r0]\n" + "\tadds r0, r1, r4\n" + "\tstrh r2, [r0]\n" + "\tadds r1, r3\n" + "\tstrh r2, [r1]\n" + "\tadds r0, r6, 0x1\n" + "\tlsls r0, 16\n" + "\tlsrs r6, r0, 16\n" + "\tcmp r6, 0x3\n" + "\tbls _08041BE4\n" + "\tmovs r6, 0\n" + "\tldr r2, _08041CD4 @ =gUnknown_030004E8\n" + "\tmovs r1, 0\n" + "_08041C02:\n" + "\tlsls r0, r6, 1\n" + "\tadds r0, r2\n" + "\tstrh r1, [r0]\n" + "\tadds r0, r6, 0x1\n" + "\tlsls r0, 16\n" + "\tlsrs r6, r0, 16\n" + "\tcmp r6, 0x9\n" + "\tbls _08041C02\n" + "\tmovs r6, 0\n" + "\tldr r2, _08041CD8 @ =gUnknown_03000470\n" + "\tmovs r1, 0\n" + "_08041C18:\n" + "\tlsls r0, r6, 1\n" + "\tadds r0, r2\n" + "\tstrh r1, [r0]\n" + "\tadds r0, r6, 0x1\n" + "\tlsls r0, 16\n" + "\tlsrs r6, r0, 16\n" + "\tcmp r6, 0x31\n" + "\tbls _08041C18\n" + "\tadds r0, r7, 0\n" + "\tmovs r1, 0xB\n" + "\tbl GetMonData\n" + "\tlsls r0, 16\n" + "\tlsrs r0, 16\n" + "\tldr r1, _08041CD8 @ =gUnknown_03000470\n" + "\tbl GetLevelUpMovesBySpecies\n" + "\tlsls r0, 24\n" + "\tlsrs r0, 24\n" + "\tstr r0, [sp, 0x4]\n" + "\tmovs r6, 0\n" + "\tldr r1, _08041CCC @ =gUnknown_030004D8\n" + "\tmov r8, r1\n" + "_08041C46:\n" + "\tadds r5, r6, 0\n" + "\tadds r5, 0xD\n" + "\tmov r0, r10\n" + "\tadds r1, r5, 0\n" + "\tbl GetBoxMonData\n" + "\tlsls r4, r6, 1\n" + "\tmov r2, r8\n" + "\tadds r1, r4, r2\n" + "\tstrh r0, [r1]\n" + "\tmov r0, r9\n" + "\tadds r1, r5, 0\n" + "\tbl GetBoxMonData\n" + "\tldr r1, _08041CC8 @ =gUnknown_03000500\n" + "\tadds r4, r1\n" + "\tstrh r0, [r4]\n" + "\tadds r0, r6, 0x1\n" + "\tlsls r0, 16\n" + "\tlsrs r6, r0, 16\n" + "\tcmp r6, 0x3\n" + "\tbls _08041C46\n" + "\tldr r1, _08041CD4 @ =gUnknown_030004E8\n" + "\tadds r0, r7, 0\n" + "\tbl pokemon_get_eggmoves\n" + "\tlsls r0, 24\n" + "\tlsrs r0, 24\n" + "\tmov r8, r0\n" + "\tmovs r6, 0\n" + "_08041C82:\n" + "\tldr r0, _08041CCC @ =gUnknown_030004D8\n" + "\tlsls r1, r6, 1\n" + "\tadds r2, r1, r0\n" + "\tldrh r1, [r2]\n" + "\tmov r9, r0\n" + "\tcmp r1, 0\n" + "\tbeq _08041CF8\n" + "\tmovs r5, 0\n" + "\tcmp r5, r8\n" + "\tbcs _08041CEA\n" + "\tadds r4, r2, 0\n" + "\tldr r2, _08041CDC @ =0x0000ffff\n" + "_08041C9A:\n" + "\tldr r0, _08041CD4 @ =gUnknown_030004E8\n" + "\tlsls r1, r5, 1\n" + "\tadds r1, r0\n" + "\tldrh r0, [r4]\n" + "\tldrh r1, [r1]\n" + "\tcmp r0, r1\n" + "\tbne _08041CE0\n" + "\tadds r1, r0, 0\n" + "\tadds r0, r7, 0\n" + "\tstr r2, [sp, 0x8]\n" + "\tbl GiveMoveToMon\n" + "\tlsls r0, 16\n" + "\tlsrs r0, 16\n" + "\tldr r2, [sp, 0x8]\n" + "\tcmp r0, r2\n" + "\tbne _08041CEA\n" + "\tldrh r1, [r4]\n" + "\tadds r0, r7, 0\n" + "\tbl DeleteFirstMoveAndGiveMoveToMon\n" + "\tb _08041CEA\n" + "\t.align 2, 0\n" + "_08041CC8: .4byte gUnknown_03000500\n" + "_08041CCC: .4byte gUnknown_030004D8\n" + "_08041CD0: .4byte gUnknown_030004E0\n" + "_08041CD4: .4byte gUnknown_030004E8\n" + "_08041CD8: .4byte gUnknown_03000470\n" + "_08041CDC: .4byte 0x0000ffff\n" + "_08041CE0:\n" + "\tadds r0, r5, 0x1\n" + "\tlsls r0, 16\n" + "\tlsrs r5, r0, 16\n" + "\tcmp r5, r8\n" + "\tbcc _08041C9A\n" + "_08041CEA:\n" + "\tadds r0, r6, 0x1\n" + "\tlsls r0, 16\n" + "\tlsrs r6, r0, 16\n" + "\tldr r3, _08041E14 @ =gUnknown_030004D8\n" + "\tmov r9, r3\n" + "\tcmp r6, 0x3\n" + "\tbls _08041C82\n" + "_08041CF8:\n" + "\tmovs r6, 0\n" + "_08041CFA:\n" + "\tlsls r0, r6, 1\n" + "\tmov r2, r9\n" + "\tadds r1, r0, r2\n" + "\tldrh r1, [r1]\n" + "\tadds r2, r0, 0\n" + "\tadds r6, 0x1\n" + "\tmov r8, r6\n" + "\tcmp r1, 0\n" + "\tbeq _08041D5C\n" + "\tmovs r5, 0\n" + "\tldr r0, _08041E14 @ =gUnknown_030004D8\n" + "\tadds r4, r2, r0\n" + "\tldr r6, _08041E18 @ =0x0000ffff\n" + "\tmov r9, r0\n" + "_08041D16:\n" + "\tldr r3, _08041E1C @ =0x00000121\n" + "\tadds r0, r5, r3\n" + "\tlsls r0, 16\n" + "\tlsrs r0, 16\n" + "\tbl ItemIdToBattleMoveId\n" + "\tldrh r1, [r4]\n" + "\tlsls r0, 16\n" + "\tlsrs r0, 16\n" + "\tcmp r1, r0\n" + "\tbne _08041D52\n" + "\tlsls r1, r5, 24\n" + "\tlsrs r1, 24\n" + "\tadds r0, r7, 0\n" + "\tbl CanMonLearnTMHM\n" + "\tcmp r0, 0\n" + "\tbeq _08041D52\n" + "\tldrh r1, [r4]\n" + "\tadds r0, r7, 0\n" + "\tbl GiveMoveToMon\n" + "\tlsls r0, 16\n" + "\tlsrs r0, 16\n" + "\tcmp r0, r6\n" + "\tbne _08041D52\n" + "\tldrh r1, [r4]\n" + "\tadds r0, r7, 0\n" + "\tbl DeleteFirstMoveAndGiveMoveToMon\n" + "_08041D52:\n" + "\tadds r0, r5, 0x1\n" + "\tlsls r0, 16\n" + "\tlsrs r5, r0, 16\n" + "\tcmp r5, 0x39\n" + "\tbls _08041D16\n" + "_08041D5C:\n" + "\tmov r1, r8\n" + "\tlsls r0, r1, 16\n" + "\tlsrs r6, r0, 16\n" + "\tcmp r6, 0x3\n" + "\tbls _08041CFA\n" + "\tmovs r6, 0\n" + "\tmov r2, r9\n" + "\tldrh r0, [r2]\n" + "\tldr r3, _08041E20 @ =gUnknown_030004E0\n" + "\tmov r10, r3\n" + "\tcmp r0, 0\n" + "\tbeq _08041DC6\n" + "\tmov r4, r9\n" + "\tldr r0, _08041E24 @ =gUnknown_03000500\n" + "\tmov r9, r0\n" + "\tmov r12, r10\n" + "_08041D7C:\n" + "\tmovs r5, 0\n" + "\tlsls r2, r6, 1\n" + "\tadds r6, 0x1\n" + "\tmov r8, r6\n" + "\tadds r3, r2, r4\n" + "_08041D86:\n" + "\tlsls r0, r5, 1\n" + "\tadd r0, r9\n" + "\tldrh r2, [r3]\n" + "\tadds r1, r2, 0\n" + "\tldrh r0, [r0]\n" + "\tcmp r1, r0\n" + "\tbne _08041DA8\n" + "\tcmp r1, 0\n" + "\tbeq _08041DA8\n" + "\tldr r1, [sp]\n" + "\tadds r0, r1, 0x1\n" + "\tlsls r0, 16\n" + "\tlsrs r0, 16\n" + "\tstr r0, [sp]\n" + "\tlsls r1, 1\n" + "\tadd r1, r12\n" + "\tstrh r2, [r1]\n" + "_08041DA8:\n" + "\tadds r0, r5, 0x1\n" + "\tlsls r0, 16\n" + "\tlsrs r5, r0, 16\n" + "\tcmp r5, 0x3\n" + "\tbls _08041D86\n" + "\tmov r1, r8\n" + "\tlsls r0, r1, 16\n" + "\tlsrs r6, r0, 16\n" + "\tcmp r6, 0x3\n" + "\tbhi _08041DC6\n" + "\tlsls r0, r6, 1\n" + "\tadds r0, r4\n" + "\tldrh r0, [r0]\n" + "\tcmp r0, 0\n" + "\tbne _08041D7C\n" + "_08041DC6:\n" + "\tmovs r6, 0\n" + "\tmov r2, r10\n" + "\tldrh r0, [r2]\n" + "\tcmp r0, 0\n" + "\tbeq _08041E50\n" + "_08041DD0:\n" + "\tmovs r5, 0\n" + "\tadds r3, r6, 0x1\n" + "\tmov r8, r3\n" + "\tldr r0, [sp, 0x4]\n" + "\tcmp r5, r0\n" + "\tbcs _08041E38\n" + "\tldr r2, _08041E18 @ =0x0000ffff\n" + "_08041DDE:\n" + "\tldr r1, _08041E28 @ =gUnknown_03000470\n" + "\tlsls r0, r5, 1\n" + "\tadds r0, r1\n" + "\tldrh r1, [r0]\n" + "\tcmp r1, 0\n" + "\tbeq _08041E2C\n" + "\tlsls r0, r6, 1\n" + "\tmov r3, r10\n" + "\tadds r4, r0, r3\n" + "\tldrh r0, [r4]\n" + "\tcmp r0, r1\n" + "\tbne _08041E2C\n" + "\tadds r1, r0, 0\n" + "\tadds r0, r7, 0\n" + "\tstr r2, [sp, 0x8]\n" + "\tbl GiveMoveToMon\n" + "\tlsls r0, 16\n" + "\tlsrs r0, 16\n" + "\tldr r2, [sp, 0x8]\n" + "\tcmp r0, r2\n" + "\tbne _08041E38\n" + "\tldrh r1, [r4]\n" + "\tadds r0, r7, 0\n" + "\tbl DeleteFirstMoveAndGiveMoveToMon\n" + "\tb _08041E38\n" + "\t.align 2, 0\n" + "_08041E14: .4byte gUnknown_030004D8\n" + "_08041E18: .4byte 0x0000ffff\n" + "_08041E1C: .4byte 0x00000121\n" + "_08041E20: .4byte gUnknown_030004E0\n" + "_08041E24: .4byte gUnknown_03000500\n" + "_08041E28: .4byte gUnknown_03000470\n" + "_08041E2C:\n" + "\tadds r0, r5, 0x1\n" + "\tlsls r0, 16\n" + "\tlsrs r5, r0, 16\n" + "\tldr r0, [sp, 0x4]\n" + "\tcmp r5, r0\n" + "\tbcc _08041DDE\n" + "_08041E38:\n" + "\tmov r1, r8\n" + "\tlsls r0, r1, 16\n" + "\tlsrs r6, r0, 16\n" + "\tcmp r6, 0x3\n" + "\tbhi _08041E50\n" + "\tldr r0, _08041E60 @ =gUnknown_030004E0\n" + "\tlsls r1, r6, 1\n" + "\tadds r1, r0\n" + "\tldrh r1, [r1]\n" + "\tmov r10, r0\n" + "\tcmp r1, 0\n" + "\tbne _08041DD0\n" + "_08041E50:\n" + "\tadd sp, 0xC\n" + "\tpop {r3-r5}\n" + "\tmov r8, r3\n" + "\tmov r9, r4\n" + "\tmov r10, r5\n" + "\tpop {r4-r7}\n" + "\tpop {r0}\n" + "\tbx r0\n" + "\t.align 2, 0\n" + "_08041E60: .4byte gUnknown_030004E0"); +} +#endif + +static void RemoveEggFromDayCare(struct DayCareData *dayCareData) +{ + dayCareData->misc.countersEtc.personalityLo = 0; + dayCareData->misc.countersEtc.unk_11a = 0; +} + +void sub_8041E7C(void) +{ + RemoveEggFromDayCare(&gSaveBlock1.daycareData); +} + +static void incense_effects(u16 *species, struct DayCareData *dayCareData) +{ + u16 momItem, dadItem; + if (*species == SPECIES_WYNAUT || *species == SPECIES_AZURILL) + { + momItem = GetBoxMonData(&dayCareData->mons[0], MON_DATA_HELD_ITEM); + dadItem = GetBoxMonData(&dayCareData->mons[1], MON_DATA_HELD_ITEM); + if (*species == SPECIES_WYNAUT && momItem != ITEM_LAX_INCENSE && dadItem != ITEM_LAX_INCENSE) + { + *species = SPECIES_WOBBUFFET; + } + if (*species == SPECIES_AZURILL && momItem != ITEM_SEA_INCENSE && dadItem != ITEM_SEA_INCENSE) + { + *species = SPECIES_MARILL; + } + } +} + +static u16 sub_8041EEC(struct DayCareData *dayCareData, u8 *a1) // inherit_species_from_mom +{ + u16 i; + u16 species[2]; + u16 eggSpecies; + u8 buffer; + for (i=0; i<2; i++) + { + species[i] = GetBoxMonData(&dayCareData->mons[i], MON_DATA_SPECIES); + if (species[i] == SPECIES_DITTO) + { + a1[0] = i ^ 1; + a1[1] = i; + } + else if (GetBoxMonGender(&dayCareData->mons[i]) == MON_FEMALE) + { + a1[0] = i; + a1[1] = i ^ 1; + } + } + eggSpecies = sub_8041870(species[a1[0]]); + if (eggSpecies == SPECIES_NIDORAN_F && dayCareData->misc.countersEtc.personalityLo & 0x8000) + { + eggSpecies = SPECIES_NIDORAN_M; + } + if (eggSpecies == SPECIES_ILLUMISE && dayCareData->misc.countersEtc.personalityLo & 0x8000) + { + eggSpecies = SPECIES_VOLBEAT; + } + if (species[a1[1]] == SPECIES_DITTO && GetBoxMonGender(&dayCareData->mons[a1[0]]) != MON_FEMALE) + { + buffer = a1[1]; + a1[1] = a1[0]; + a1[0] = buffer; + } + return eggSpecies; +} + +static void sub_8041FC4(struct DayCareData *dayCareData) // give_egg +{ + struct Pokemon egg; + u16 species; + u8 parents[2]; + u8 isEgg; + species = sub_8041EEC(dayCareData, parents); + incense_effects(&species, dayCareData); + sub_80420FC(&egg, species, dayCareData); + InheritIVs(&egg, dayCareData); + daycare_build_child_moveset(&egg, &dayCareData->mons[parents[1]], &dayCareData->mons[parents[0]]); + isEgg = TRUE; + SetMonData(&egg, MON_DATA_IS_EGG, &isEgg); + gPlayerParty[5] = egg; + party_compaction(); + CalculatePlayerPartyCount(); + RemoveEggFromDayCare(dayCareData); +} + + +void sub_8042044(struct Pokemon *mon, u16 species, u8 overwriteMetLocation) // scr_create_egg +{ + u8 metLevel; + u16 ball; + u8 language; + u8 metLocation; + u8 isEgg; + CreateMon(mon, species, 5, 0x20, FALSE, 0, FALSE, 0); + metLevel = 0; + ball = ITEM_POKE_BALL; + language = LANGUAGE_JAPANESE; + SetMonData(mon, MON_DATA_POKEBALL, (u8 *)&ball); + SetMonData(mon, MON_DATA_NICKNAME, gUnknown_08209AD4); + SetMonData(mon, MON_DATA_FRIENDSHIP, &gBaseStats[species].eggCycles); + SetMonData(mon, MON_DATA_MET_LEVEL, &metLevel); + SetMonData(mon, MON_DATA_LANGUAGE, &language); + if (overwriteMetLocation) + { + metLocation = 0xfd; + SetMonData(mon, MON_DATA_MET_LOCATION, &metLocation); + } + isEgg = TRUE; + SetMonData(mon, MON_DATA_IS_EGG, &isEgg); +} + +static void sub_80420FC(struct Pokemon *mon, u16 species, struct DayCareData *dayCareData) +{ + u32 personality; + u16 ball; + u8 metLevel; + u8 language; + personality = dayCareData->misc.countersEtc.personalityLo | (Random() << 16); + CreateMon(mon, species, 5, 0x20, TRUE, personality, FALSE, 0); + metLevel = 0; + ball = ITEM_POKE_BALL; + language = LANGUAGE_JAPANESE; + SetMonData(mon, MON_DATA_POKEBALL, (u8 *)&ball); + SetMonData(mon, MON_DATA_NICKNAME, gUnknown_08209AD4); + SetMonData(mon, MON_DATA_FRIENDSHIP, &gBaseStats[species].eggCycles); + SetMonData(mon, MON_DATA_MET_LEVEL, &metLevel); + SetMonData(mon, MON_DATA_LANGUAGE, &language); +} + +void sp0B8_daycare(void) +{ + sub_8041FC4(&gSaveBlock1.daycareData); +} + +#ifdef NONMATCHING +static bool8 sub_80421B0(struct DayCareData *dayCareData) +{ + struct BoxPokemon *parent; + u32 i; + int v0; + int steps; + v0 = 0; + for (i=0, parent=&dayCareData->mons[0]; i<2; parent++, i++) + { + if (GetBoxMonData(parent, MON_DATA_SANITY_BIT2, v0)) + { + dayCareData->misc.countersEtc.steps[i]++; + v0++; + } + } + if (dayCareData->misc.countersEtc.personalityLo == 0 && v0 == 2 && dayCareData->misc.extra.misc[4] == 0xff && daycare_relationship_score(dayCareData) > (u32)((u32)(Random() * 100) / 0xffff)) + { + sub_8041940(); + } + if ((++dayCareData->misc.countersEtc.unk_11a) == 0xff) + { + for (i=0; imisc.countersEtc.personalityLo) | dayCareData->misc.countersEtc.personalityLo) >> 31; +} + +static void sub_80422C4(struct DayCareData *dayCareData) +{ + u8 language; + if (GetBoxMonData(&dayCareData->mons[0], MON_DATA_SPECIES) != 0) + { + GetBoxMonNick(&dayCareData->mons[0], gStringVar1); + language = GetBoxMonData(&dayCareData->mons[0], MON_DATA_LANGUAGE); + GetBoxMonData(&dayCareData->mons[0], MON_DATA_OT_NAME, gStringVar3); + ConvertInternationalString(gStringVar3, language); + } + if (GetBoxMonData(&dayCareData->mons[1], MON_DATA_SPECIES) != 0) + { + GetBoxMonNick(&dayCareData->mons[1], gStringVar2); + } +} + +u16 sub_8042328(void) +{ + GetBoxMonNick(&gPlayerParty[gLastFieldPokeMenuOpened].box, gStringVar1); + return GetBoxMonData(&gPlayerParty[gLastFieldPokeMenuOpened].box, MON_DATA_SPECIES); +} + +void sp0B5_daycare(void) +{ + sub_80422C4(&gSaveBlock1.daycareData); +} + +u8 sp0B6_daycare(void) +{ + u8 monCount; + if (sub_80422B4(&gSaveBlock1.daycareData)) + { + return 1; + } + monCount = Daycare_CountPokemon(&gSaveBlock1.daycareData); + if (monCount != 0) + { + return monCount + 1; + } + return 0; +} + +#ifdef NONMATCHING +static +#endif +bool8 sub_80423A8(u16 *a, u16 *b) +{ + int i, j; + u16 *v0, *v1, v2; + for (i=0, v0=a; i<2; v0++, i++) + { + for (j=0, v2=*v0, v1=b; j<2; v1++, j++) + { + if (v2 == *v1) + { + return TRUE; + } + } + } + return FALSE; +} + +#ifdef NONMATCHING +static u8 daycare_relationship_score(struct DayCareData *dayCareData) +{ + u16 species[2]; + u32 otIds[2]; + u32 genders[2]; + u16 eggGroups[2][2]; + int i; + u16 *spc; + u32 *ids; + u32 *gnd; + u16 *egg1; + u16 *egg2; + struct BoxPokemon *parent; + for (i=0, parent=&dayCareData->mons[0], spc=species, ids=otIds, gnd=genders, egg1=&eggGroups[0][0], egg2=&eggGroups[0][1]; i<2; spc++, egg1+=2, egg2+=2, parent++, i++) + { + *spc = GetBoxMonData(parent, MON_DATA_SPECIES); + *ids++ = GetBoxMonData(parent, MON_DATA_OT_ID); + *gnd++ = GetGenderFromSpeciesAndPersonality(*spc, GetBoxMonData(parent, MON_DATA_PERSONALITY)); + *egg1 = gBaseStats[*spc].eggGroup1; + *egg2 = gBaseStats[*spc].eggGroup2; + } + if (eggGroups[0][0] == 0xf) + { + return 0; + } + if (eggGroups[1][0] == 0xf) + { + return 0; + } + if (eggGroups[0][0] == 0xd && eggGroups[1][0] == 0xd) + { + return 0; + } + else if (eggGroups[0][0] == 0xd || eggGroups[1][0] == 0xd) + { + if (otIds[0] == otIds[1]) + { + return 20; + } + return 50; + } + if (genders[0] == genders[1] || genders[0] == MON_GENDERLESS || genders[1] == MON_GENDERLESS) + { + return 0; + } + if (!sub_80423A8(eggGroups[0], eggGroups[1])) + { + return 0; + } + if (species[0] == species[1]) + { + if (otIds[0] == otIds[1]) + { + return 50; + } + return 70; + } + else + { + if (otIds[0] != otIds[1]) + { + return 50; + } + return 20; + } +} +#else +__attribute__((naked)) +static u8 daycare_relationship_score(struct DayCareData *dayCareData) +{ + asm_unified("\tpush {r4-r7,lr}\n" + "\tmov r7, r10\n" + "\tmov r6, r9\n" + "\tmov r5, r8\n" + "\tpush {r5-r7}\n" + "\tsub sp, 0x2C\n" + "\tmovs r1, 0\n" + "\tmov r8, r1\n" + "\tmov r2, sp\n" + "\tadds r2, 0x8\n" + "\tstr r2, [sp, 0x1C]\n" + "\tadd r1, sp, 0xC\n" + "\tmov r10, r1\n" + "\tadds r2, 0xC\n" + "\tstr r2, [sp, 0x20]\n" + "\tmov r1, sp\n" + "\tadds r1, 0x2\n" + "\tldr r2, _08042488 @ =gBaseStats\n" + "\tmov r9, r2\n" + "\tldr r5, [sp, 0x1C]\n" + "\tadds r7, r1, 0\n" + "\tmov r6, sp\n" + "\tldr r1, [sp, 0x20]\n" + "\tstr r1, [sp, 0x24]\n" + "\tmov r2, r10\n" + "\tstr r2, [sp, 0x28]\n" + "\tadds r4, r0, 0\n" + "_0804240E:\n" + "\tadds r0, r4, 0\n" + "\tmovs r1, 0xB\n" + "\tbl GetBoxMonData\n" + "\tstrh r0, [r5]\n" + "\tadds r0, r4, 0\n" + "\tmovs r1, 0x1\n" + "\tbl GetBoxMonData\n" + "\tldr r1, [sp, 0x28]\n" + "\tstm r1!, {r0}\n" + "\tstr r1, [sp, 0x28]\n" + "\tadds r0, r4, 0\n" + "\tmovs r1, 0\n" + "\tbl GetBoxMonData\n" + "\tadds r1, r0, 0\n" + "\tldrh r0, [r5]\n" + "\tbl GetGenderFromSpeciesAndPersonality\n" + "\tlsls r0, 24\n" + "\tlsrs r0, 24\n" + "\tldr r2, [sp, 0x24]\n" + "\tstm r2!, {r0}\n" + "\tstr r2, [sp, 0x24]\n" + "\tldrh r1, [r5]\n" + "\tlsls r0, r1, 3\n" + "\tsubs r0, r1\n" + "\tlsls r0, 2\n" + "\tadd r0, r9\n" + "\tldrb r0, [r0, 0x14]\n" + "\tstrh r0, [r6]\n" + "\tldrh r1, [r5]\n" + "\tlsls r0, r1, 3\n" + "\tsubs r0, r1\n" + "\tlsls r0, 2\n" + "\tadd r0, r9\n" + "\tldrb r0, [r0, 0x15]\n" + "\tstrh r0, [r7]\n" + "\tadds r5, 0x2\n" + "\tadds r7, 0x4\n" + "\tadds r6, 0x4\n" + "\tadds r4, 0x50\n" + "\tmovs r0, 0x1\n" + "\tadd r8, r0\n" + "\tmov r1, r8\n" + "\tcmp r1, 0x1\n" + "\tbls _0804240E\n" + "\tmov r0, sp\n" + "\tldrh r1, [r0]\n" + "\tcmp r1, 0xF\n" + "\tbeq _08042484\n" + "\tldrh r0, [r0, 0x4]\n" + "\tcmp r0, 0xF\n" + "\tbeq _08042484\n" + "\tcmp r1, 0xD\n" + "\tbne _0804248C\n" + "\tcmp r0, 0xD\n" + "\tbne _08042490\n" + "_08042484:\n" + "\tmovs r0, 0\n" + "\tb _080424E4\n" + "\t.align 2, 0\n" + "_08042488: .4byte gBaseStats\n" + "_0804248C:\n" + "\tcmp r0, 0xD\n" + "\tbne _0804249C\n" + "_08042490:\n" + "\tldr r1, [sp, 0xC]\n" + "\tmov r2, r10\n" + "\tldr r0, [r2, 0x4]\n" + "\tcmp r1, r0\n" + "\tbeq _080424DE\n" + "\tb _080424E2\n" + "_0804249C:\n" + "\tldr r0, [sp, 0x14]\n" + "\tldr r2, [sp, 0x20]\n" + "\tldr r1, [r2, 0x4]\n" + "\tcmp r0, r1\n" + "\tbeq _08042484\n" + "\tcmp r0, 0xFF\n" + "\tbeq _08042484\n" + "\tcmp r1, 0xFF\n" + "\tbeq _08042484\n" + "\tadd r1, sp, 0x4\n" + "\tmov r0, sp\n" + "\tbl sub_80423A8\n" + "\tlsls r0, 24\n" + "\tcmp r0, 0\n" + "\tbeq _08042484\n" + "\tldr r0, [sp, 0x1C]\n" + "\tldrh r1, [r0, 0x2]\n" + "\tldrh r0, [r0]\n" + "\tcmp r0, r1\n" + "\tbne _080424D4\n" + "\tldr r1, [sp, 0xC]\n" + "\tmov r2, r10\n" + "\tldr r0, [r2, 0x4]\n" + "\tcmp r1, r0\n" + "\tbeq _080424E2\n" + "\tmovs r0, 0x46\n" + "\tb _080424E4\n" + "_080424D4:\n" + "\tldr r1, [sp, 0xC]\n" + "\tmov r2, r10\n" + "\tldr r0, [r2, 0x4]\n" + "\tcmp r1, r0\n" + "\tbne _080424E2\n" + "_080424DE:\n" + "\tmovs r0, 0x14\n" + "\tb _080424E4\n" + "_080424E2:\n" + "\tmovs r0, 0x32\n" + "_080424E4:\n" + "\tadd sp, 0x2C\n" + "\tpop {r3-r5}\n" + "\tmov r8, r3\n" + "\tmov r9, r4\n" + "\tmov r10, r5\n" + "\tpop {r4-r7}\n" + "\tpop {r1}\n" + "\tbx r1"); +} +#endif + +u8 daycare_relationship_score_from_savegame(void) +{ + return daycare_relationship_score(&gSaveBlock1.daycareData); +} + +void sp0B9_daycare_relationship_comment(void) +{ + u8 whichString; + u8 relationshipScore; + + relationshipScore = daycare_relationship_score_from_savegame(); + whichString = 0; + if (relationshipScore == 0) + whichString = 3; + if (relationshipScore == 20) + whichString = 2; + if (relationshipScore == 50) + whichString = 1; + if (relationshipScore == 70) + whichString = 0; + StringCopy(gStringVar4, gUnknown_08209AC4[whichString]); +} + +#ifdef NONMATCHING +bool8 NameHasGenderSymbol(const u8 *name, u8 genderRatio) +{ + u8 i; + u8 flags[2]; + + // This portion is nonmatching + flags[1] = 0; + flags[0] = 0; + for (i = 0; name[i] != EOS; i ++) + // End nonmatching portion + + { + if (name[i] == CHAR_MALE) flags[0] ++; + if (name[i] == CHAR_FEMALE) flags[1] ++; + } + if (genderRatio == MON_MALE && flags[0] && !flags[1]) return TRUE; + if (genderRatio == MON_FEMALE && flags[1] && !flags[0]) return TRUE; + return FALSE; +} +#else +__attribute__((naked)) +bool8 NameHasGenderSymbol(const u8 *name, u8 genderRatio) +{ + asm_unified("\n" + "\tpush {r4,r5,lr}\n" + "\tsub sp, 0x4\n" + "\tadds r4, r0, 0\n" + "\tlsls r1, 24\n" + "\tlsrs r5, r1, 24\n" + "\tmov r2, sp\n" + "\tmov r1, sp\n" + "\tmovs r0, 0\n" + "\tstrb r0, [r1, 0x1]\n" + "\tstrb r0, [r2]\n" + "\tmovs r3, 0\n" + "\tldrb r0, [r4]\n" + "\tcmp r0, 0xFF\n" + "\tbeq _0804258C\n" + "_08042564:\n" + "\tadds r1, r4, r3\n" + "\tldrb r0, [r1]\n" + "\tcmp r0, 0xB5\n" + "\tbne _08042572\n" + "\tldrb r0, [r2]\n" + "\tadds r0, 0x1\n" + "\tstrb r0, [r2]\n" + "_08042572:\n" + "\tldrb r0, [r1]\n" + "\tcmp r0, 0xB6\n" + "\tbne _0804257E\n" + "\tldrb r0, [r2, 0x1]\n" + "\tadds r0, 0x1\n" + "\tstrb r0, [r2, 0x1]\n" + "_0804257E:\n" + "\tadds r0, r3, 0x1\n" + "\tlsls r0, 24\n" + "\tlsrs r3, r0, 24\n" + "\tadds r0, r4, r3\n" + "\tldrb r0, [r0]\n" + "\tcmp r0, 0xFF\n" + "\tbne _08042564\n" + "_0804258C:\n" + "\tcmp r5, 0\n" + "\tbne _080425A0\n" + "\tmov r0, sp\n" + "\tldrb r0, [r0]\n" + "\tcmp r0, 0\n" + "\tbeq _080425A0\n" + "\tmov r0, sp\n" + "\tldrb r0, [r0, 0x1]\n" + "\tcmp r0, 0\n" + "\tbeq _080425B4\n" + "_080425A0:\n" + "\tcmp r5, 0xFE\n" + "\tbne _080425B8\n" + "\tmov r0, sp\n" + "\tldrb r0, [r0, 0x1]\n" + "\tcmp r0, 0\n" + "\tbeq _080425B8\n" + "\tmov r0, sp\n" + "\tldrb r0, [r0]\n" + "\tcmp r0, 0\n" + "\tbne _080425B8\n" + "_080425B4:\n" + "\tmovs r0, 0x1\n" + "\tb _080425BA\n" + "_080425B8:\n" + "\tmovs r0, 0\n" + "_080425BA:\n" + "\tadd sp, 0x4\n" + "\tpop {r4,r5}\n" + "\tpop {r1}\n" + "\tbx r1"); +} +#endif + +static u8 *AppendGenderSymbol(u8 *name, u8 gender) +{ + if (gender == MON_MALE) + { + if (!NameHasGenderSymbol(name, MON_MALE)) + return StringAppend(name, gOtherText_MaleSymbol3); + } + + else if (gender == MON_FEMALE) + { + if (!NameHasGenderSymbol(name, MON_FEMALE)) + return StringAppend(name, gOtherText_FemaleSymbol3); + } + return StringAppend(name, gOtherText_GenderlessSymbol); +} + +static u8 *MonAppendGenderSymbol(u8 *name, struct BoxPokemon *boxMon) +{ + return AppendGenderSymbol(name, GetBoxMonGender(boxMon)); +} + +static void DaycareLevelMenuGetText(struct DayCareData *dayCareData, u8 *dest) +{ + u8 buffers[2][20]; + u8 i; + *dest = EOS; + for (i = 0; i < 2; i ++) + { + GetBoxMonNick(&dayCareData->mons[i], buffers[i]); + MonAppendGenderSymbol(buffers[i], &dayCareData->mons[i]); + } + StringCopy(dest, buffers[0]); + StringAppend(dest, gOtherText_NewLine2); + StringAppend(dest, buffers[1]); + StringAppend(dest, gOtherText_NewLine2); + StringAppend(dest, gOtherText_CancelAndLv); +} + +static void DaycareLevelMenuGetLevelText(struct DayCareData *dayCareData, u8 *dest) +{ + u8 i; + u8 level; + *dest = EOS; + for (i = 0; i < 2; i ++) + { + level = Daycare_GetLevelAfterSteps(&dayCareData->mons[i], dayCareData->misc.countersEtc.steps[i]); + dest[0] = 0x34; + dest[1] = 0xFC; + dest[2] = 0x14; + dest[3] = 0x06; + dest = ConvertIntToDecimalStringN(dest + 4, level, STR_CONV_MODE_RIGHT_ALIGN, 3); + dest[0] = 0xFC; + dest[1] = 0x14; + dest[2] = 0x00; + dest = StringCopy(dest + 3, gOtherText_NewLine2); + } + *dest = EOS; +} + +static void DaycareLevelMenuProcessKeyInput(u8 taskId) +{ + if (gMain.newKeys & DPAD_UP) + { + if (gTasks[taskId].data[0] != 0) + { + gTasks[taskId].data[0] --; + MoveMenuCursor(-1); + PlaySE(SE_SELECT); + } + } + else if (gMain.newKeys & DPAD_DOWN) + { + if (gTasks[taskId].data[0] != 2) + { + gTasks[taskId].data[0] ++; + MoveMenuCursor(+1); + PlaySE(SE_SELECT); + } + } + else if (gMain.newKeys & A_BUTTON) + { + HandleDestroyMenuCursors(); + PlaySE(SE_SELECT); + gLastFieldPokeMenuOpened = gScriptResult = gTasks[taskId].data[0]; + DestroyTask(taskId); + MenuZeroFillWindowRect(15, 6, 29, 13); + EnableBothScriptContexts(); + } + else if (gMain.newKeys & B_BUTTON) + { + HandleDestroyMenuCursors(); + gLastFieldPokeMenuOpened = gScriptResult = 2; + DestroyTask(taskId); + MenuZeroFillWindowRect(15, 6, 29, 13); + EnableBothScriptContexts(); + } +} + +void ShowDaycareLevelMenu(void) +{ + u8 buffer[100]; + MenuDrawTextWindow(15, 6, 29, 13); + DaycareLevelMenuGetText(&gSaveBlock1.daycareData, buffer); + MenuPrint(buffer, 16, 7); + DaycareLevelMenuGetLevelText(&gSaveBlock1.daycareData, buffer); + MenuPrint_PixelCoords(buffer, 0xce, 0x38, TRUE); + InitMenu(0, 16, 7, 3, 0, 13); + CreateTask(DaycareLevelMenuProcessKeyInput, 3); +} + +void ChooseSendDaycareMon(void) +{ + OpenPartyMenu(PARTY_MENU_TYPE_DAYCARE, 0); + gMain.savedCallback = c2_exit_to_overworld_2_switch; +} diff --git a/src/decoration.c b/src/field/decoration.c similarity index 99% rename from src/decoration.c rename to src/field/decoration.c index e829cb072..e067191e9 100644 --- a/src/decoration.c +++ b/src/field/decoration.c @@ -1,7 +1,7 @@ #include "global.h" #include "main.h" #include "map_object_constants.h" -#include "rom4.h" +#include "overworld.h" #include "sound.h" #include "songs.h" #include "string_util.h" @@ -19,6 +19,27 @@ #include "field_weather.h" #include "decoration.h" +EWRAM_DATA u8 *gUnknown_020388D0 = NULL; +EWRAM_DATA u8 gUnknown_020388D4 = 0; +EWRAM_DATA u8 gUnknown_020388D5 = 0; +EWRAM_DATA u8 gUnknown_020388D6[16] = {0}; +EWRAM_DATA u8 gUnknown_020388E6[12] = {0}; +EWRAM_DATA u8 gUnknown_020388F2 = 0; +EWRAM_DATA u8 gUnknown_020388F3 = 0; +EWRAM_DATA u8 gUnknown_020388F4 = 0; +EWRAM_DATA u8 gUnknown_020388F5 = 0; +EWRAM_DATA u8 gUnknown_020388F6 = 0; +EWRAM_DATA u8 gUnknown_020388F7[8] = {0}; +EWRAM_DATA struct UnkStruct_02038900 gUnknown_02038900 = {0}; +EWRAM_DATA u16 gUnknown_020391A4 = 0; +EWRAM_DATA u16 gUnknown_020391A6 = 0; +EWRAM_DATA u8 gUnknown_020391A8 = 0; +EWRAM_DATA u8 gUnknown_020391A9 = 0; +EWRAM_DATA u8 gUnknown_020391AA = 0; +EWRAM_DATA struct OamData gUnknown_020391AC = {0}; +EWRAM_DATA struct UnkStruct_020391B4 gUnknown_020391B4[16] = {0}; +EWRAM_DATA u8 gUnknown_02039234 = 0; + #if ENGLISH const u8 DecorDesc_SMALL_DESK[] = _( "A small desk built\n" @@ -598,7 +619,7 @@ const u8 DecorDesc_REGISTEEL_DOLL[] = _( "Place it on a mat\n" "or a desk."); #elif GERMAN -#include "data/decoration/descriptions_de.h" +#include "../data/decoration/descriptions_de.h" #endif const u16 DecorGfx_SMALL_DESK[] = { @@ -1368,7 +1389,7 @@ const struct Decoration gDecorations[] = { {DECOR_REGISTEEL_DOLL, _("REGISTEEL DOLL"), DECORPERM_SOLID_MAT, DECORSHAPE_1x2, DECORCAT_DOLL, 10000, DecorDesc_REGISTEEL_DOLL, DecorGfx_REGISTEEL_DOLL} }; #elif GERMAN -#include "data/decoration/decorations.h" +#include "../data/decoration/decorations.h" #endif const u8 *const gUnknown_083EC5E4[] = { @@ -2178,7 +2199,7 @@ void sub_80FF0E0(u8 taskId) void sub_80FF114(u8 taskId) { DrawWholeMapView(); - warp1_set(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum, -1, gTasks[taskId].data[3], gTasks[taskId].data[4]); + Overworld_SetWarpDestination(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum, -1, gTasks[taskId].data[3], gTasks[taskId].data[4]); warp_in(); } void sub_80FF160(u8 taskId) @@ -2301,7 +2322,7 @@ void sub_80FF474(void) { if (FlagGet(i + 0xae) == 1) { - FlagReset(i + 0xae); + FlagClear(i + 0xae); for (j=0; jmapObjectCount; j++) { if (gMapHeader.events->mapObjects[j].flagId == i + 0xae) diff --git a/src/decoration_inventory.c b/src/field/decoration_inventory.c similarity index 98% rename from src/decoration_inventory.c rename to src/field/decoration_inventory.c index 35ba7e228..083cb260c 100644 --- a/src/decoration_inventory.c +++ b/src/field/decoration_inventory.c @@ -1,5 +1,5 @@ // -// Created by Scott Norton on 6/5/17. + // #include "global.h" diff --git a/src/dewford_trend.c b/src/field/dewford_trend.c similarity index 100% rename from src/dewford_trend.c rename to src/field/dewford_trend.c diff --git a/src/diploma.c b/src/field/diploma.c similarity index 98% rename from src/diploma.c rename to src/field/diploma.c index ba7de58aa..27601404c 100644 --- a/src/diploma.c +++ b/src/field/diploma.c @@ -4,7 +4,7 @@ #include "menu.h" #include "palette.h" #include "pokedex.h" -#include "rom4.h" +#include "overworld.h" #include "sprite.h" #include "string_util.h" #include "strings2.h" @@ -35,7 +35,7 @@ static void VBlankCB(void) TransferPlttBuffer(); } -void sub_8145D88(void) +void CB2_ShowDiploma(void) { u32 savedIme; diff --git a/src/easy_chat.c b/src/field/easy_chat.c similarity index 74% rename from src/easy_chat.c rename to src/field/easy_chat.c index cc2cd7030..6014b3d14 100644 --- a/src/easy_chat.c +++ b/src/field/easy_chat.c @@ -19,56 +19,55 @@ extern const u8 gEasyChatGroupSizes[]; extern u16 gSpecialVar_0x8004; -#ifdef NONMATCHING -u8 *sub_80EB3FC(u8 *dst, u16 word) { - int group, wordIndex; +IWRAM_DATA u8 gUnknown_03000740; + +// returns the end of the destination buffer text +u8 *EasyChat_GetWordText(u8 *dst, u16 word) +{ + u16 group; + u16 wordIndex; u8 *src; u16 i; - if (sub_80EB37C(word)) - { return StringCopy(dst, gOtherText_ThreeQuestions); - } - if (word != 0xFFFF) + if (word == 0xFFFF) { - group = word >> 9; - wordIndex = word & 0x1FF; + *dst = EOS; + return dst; + } + else + { + group = EC_GROUP(word); + wordIndex = EC_INDEX(word); switch (group) { case EC_GROUP_POKEMON: // 0 case EC_GROUP_POKEMON_2: // 21 dst = StringCopy(dst, gSpeciesNames[wordIndex]); break; - case EC_GROUP_MOVE_1: // 18 case EC_GROUP_MOVE_2: // 19 dst = StringCopy(dst, gMoveNames[wordIndex]); break; - default: src = gEasyChatGroupWords[group]; - - i = wordIndex - 1; - while (i != 0xFFFF) + for (i = wordIndex - 1; i != 0xFFFF; i--) { while (*src++ != EOS) - { - } - i--; + ; } dst = StringCopy(dst, src); break; } + *dst = EOS; + return dst; } - - dst[0] = EOS; - return dst; } -#endif -u8 *ConvertEasyChatWordsToString(u8 *dst, u16 *words, u16 arg2, u16 arg3) { +u8 *ConvertEasyChatWordsToString(u8 *dst, u16 *words, u16 arg2, u16 arg3) +{ u16 i; u16 n; @@ -80,7 +79,7 @@ u8 *ConvertEasyChatWordsToString(u8 *dst, u16 *words, u16 arg2, u16 arg3) { for (n = 0; n < i1; n++) { - dst = sub_80EB3FC(dst, words[0]); + dst = EasyChat_GetWordText(dst, words[0]); if (words[0] != 0xFFFF) { @@ -93,9 +92,9 @@ u8 *ConvertEasyChatWordsToString(u8 *dst, u16 *words, u16 arg2, u16 arg3) { word = words[0]; words++; - dst = sub_80EB3FC(dst, word); + dst = EasyChat_GetWordText(dst, word); - dst[0] = 0xFE; + dst[0] = CHAR_NEWLINE; dst++; } @@ -105,7 +104,8 @@ u8 *ConvertEasyChatWordsToString(u8 *dst, u16 *words, u16 arg2, u16 arg3) { return dst; } -u8 *sub_80EB544(u8 *dst, u16 *words, u16 arg2, u16 arg3) { +u8 *sub_80EB544(u8 *dst, u16 *words, u16 arg2, u16 arg3) +{ u16 i; u16 n; @@ -117,7 +117,7 @@ u8 *sub_80EB544(u8 *dst, u16 *words, u16 arg2, u16 arg3) { for (n = 0; n < i1; n++) { - dst = sub_80EB3FC(dst, words[0]); + dst = EasyChat_GetWordText(dst, words[0]); if (words[0] != 0xFFFF) { @@ -130,10 +130,10 @@ u8 *sub_80EB544(u8 *dst, u16 *words, u16 arg2, u16 arg3) { word = words[0]; words++; - dst = sub_80EB3FC(dst, word); + dst = EasyChat_GetWordText(dst, word); // Only difference with ConvertEasyChatWordsToString - dst[0] = (i == 0) ? 0xFE : 0xFA; + dst[0] = (i == 0) ? CHAR_NEWLINE : CHAR_PROMPT_SCROLL; dst++; } @@ -144,61 +144,56 @@ u8 *sub_80EB544(u8 *dst, u16 *words, u16 arg2, u16 arg3) { } -u16 unref_sub_80EB5E0(u16 arg0) { - u8 *chars; +u16 unref_sub_80EB5E0(u16 arg0) +{ + const u8 *chars; u16 i; - u16 strlen; + u16 length; int group, word; if (arg0 == 0xFFFF) - { return 0; - } - group = arg0 >> 9; - word = arg0 & 0x1FF; + group = EC_GROUP(arg0); + word = EC_INDEX(arg0); switch (group) { case EC_GROUP_POKEMON: // 0 case EC_GROUP_POKEMON_2: // 21 chars = (u8 *) gSpeciesNames[word]; break; - case EC_GROUP_MOVE_1: // 18 case EC_GROUP_MOVE_2: // 19 chars = gMoveNames[word]; break; - default: chars = gEasyChatGroupWords[group]; - - i = word - 1; - while (i != 0xFFFF) + for (i = word - 1; i != 0xFFFF; i--) { while (*chars++ != EOS) - { - } - i--; + ; } break; } - strlen = 0; + length = 0; while (*chars != EOS) { chars++; - strlen += 1; + length++; } - return strlen; + return length; } -static bool8 sub_80EB680(u16 *arg0, u16 arg1, u16 arg2, u16 arg3) { +static bool8 sub_80EB680(u16 *arg0, u16 arg1, u16 arg2, u16 arg3) +{ return FALSE; } -void unref_sub_80EB684(u8 arg0, u16 arg1) { +void unref_sub_80EB684(u8 arg0, u16 arg1) +{ u16 *ptr; u16 c; @@ -217,7 +212,6 @@ void unref_sub_80EB684(u8 arg0, u16 arg1) { c = 1; ptr = (u16*)((void *)&gSaveBlock1.tvShows[arg1] + 0x02); break; - default: return; } @@ -231,7 +225,8 @@ void unref_sub_80EB684(u8 arg0, u16 arg1) { } } -void sub_80EB6FC(u16 *arg0, u16 arg1) { +void sub_80EB6FC(u16 *arg0, u16 arg1) +{ u16 i; for (i = arg1 - 1; i != 0xFFFF; i--) @@ -242,35 +237,30 @@ void sub_80EB6FC(u16 *arg0, u16 arg1) { } -u16 sub_80EB72C(u16 group) { - u16 local1; +u16 sub_80EB72C(u16 group) +{ + u16 local1 = Random() % gEasyChatGroupSizes[group]; - local1 = Random() % gEasyChatGroupSizes[group]; - - if (group == EC_GROUP_POKEMON || - group == EC_GROUP_POKEMON_2 || - group == EC_GROUP_MOVE_1 || - group == EC_GROUP_MOVE_2) + if (group == EC_GROUP_POKEMON + || group == EC_GROUP_POKEMON_2 + || group == EC_GROUP_MOVE_1 + || group == EC_GROUP_MOVE_2) { local1 = ((u16 *) gEasyChatGroupWords[group])[local1]; } - return ((group & 0x7F) << 9) | (local1 & 0x1FF); } -u16 sub_80EB784(u16 group) { +u16 sub_80EB784(u16 group) +{ if (!sub_80EAD7C(group)) - { return -1; - } if (group != EC_GROUP_POKEMON) { if (group == EC_GROUP_TRENDY_SAYING) - { return sub_80EB960(); - } } else { @@ -280,11 +270,11 @@ u16 sub_80EB784(u16 group) { return sub_80EB72C(group); } -void sub_80EB7C4(void) { +void sub_80EB7C4(void) +{ u16 *words; u16 arg1, arg2; - switch (gSpecialVar_0x8004) { case 0: @@ -292,7 +282,6 @@ void sub_80EB7C4(void) { arg1 = 2; arg2 = 2; break; - case 1: words = gSaveBlock1.unk2B28; if (sub_80EB680(gSaveBlock1.unk2B28, 3, 2, 20)) @@ -306,19 +295,16 @@ void sub_80EB7C4(void) { arg2 = 2; } break; - case 2: words = gSaveBlock1.unk2B34; arg1 = 3; arg2 = 2; break; - case 3: words = gSaveBlock1.unk2B40; arg1 = 3; arg2 = 2; break; - default: return; } @@ -327,74 +313,65 @@ void sub_80EB7C4(void) { ShowFieldAutoScrollMessage(gStringVar4); } -void sub_80EB83C(void) { +void sub_80EB83C(void) +{ u16 group, local2; if (Random() & 1) - { group = EC_GROUP_HOBBIES; - } else - { group = EC_GROUP_LIFESTYLE; - } local2 = sub_80EB784(group); - sub_80EB3FC(gStringVar2, local2); + EasyChat_GetWordText(gStringVar2, local2); } -u8 sub_80EB868(u8 arg0) { +u8 sub_80EB868(u8 arg0) +{ int offset; int index; index = arg0 / 8; - offset = arg0 & 7; + offset = arg0 % 8; return (gSaveBlock1.unk2D8C[index] >> offset) & 1; } -void sub_80EB890(u8 arg0) { +void sub_80EB890(u8 arg0) +{ int offset; int index; - if (arg0 > 32) + if (arg0 < 33) { - return; + index = arg0 / 8; + offset = arg0 % 8; + gSaveBlock1.unk2D8C[index] |= 1 << offset; } - - index = arg0 / 8; - offset = arg0 & 7; - gSaveBlock1.unk2D8C[index] |= 1 << offset; } -u8 sub_80EB8C0(void) { - u8 i, retval; +u8 sub_80EB8C0(void) +{ + u8 i, count; - i = 0; - retval = 0; - for (; i < 33; i++) + for (i = 0, count = 0; i < 33; i++) { if (sub_80EB868(i)) - { - retval += 1; - } + count++; } - - return retval; + return count; } -u16 sub_80EB8EC(void) { +u16 sub_80EB8EC(void) +{ u16 i; u16 local1, local2; local1 = sub_80EB8C0(); if (local1 == 33) - { return -1; - } local2 = Random() % (33 - local1); - - for (i = 0; i <= 0x20; i++) + for (i = 0; i < 33; i++) { if (sub_80EB868(i) == 0) { @@ -403,35 +380,28 @@ u16 sub_80EB8EC(void) { sub_80EB890(i); return (i & 0x1FF) | 0x2800; } - local2--; } } - return -1; } -static u16 sub_80EB960(void) { +static u16 sub_80EB960(void) +{ u16 i; u16 local1; local1 = sub_80EB8C0(); if (local1 == 0) - { return -1; - } local1 = Random() % local1; - - for (i = 0; i <= 0x20; i++) + for (i = 0; i < 33; i++) { if (sub_80EB868(i)) { if (local1 == 0) - { return (i & 0x1FF) | 0x2800; - } - local1--; } } @@ -439,11 +409,13 @@ static u16 sub_80EB960(void) { return -1; } -u8 sub_80EB9C8(void) { +u8 sub_80EB9C8(void) +{ return IsNationalPokedexEnabled(); } -static u16 sub_80EB9D8(void) { +static u16 sub_80EB9D8(void) +{ u16 *speciesList; u16 local1; u16 i; @@ -451,32 +423,22 @@ static u16 sub_80EB9D8(void) { local1 = sub_80EAE88(0); if (local1 == 0) - { return -1; - } local1 = Random() % local1; speciesList = (u16 *) gEasyChatGroupWords[EC_GROUP_POKEMON]; - for (i = 0; i < gEasyChatGroupSizes[EC_GROUP_POKEMON]; i++) { const u16 dexNum = SpeciesToNationalPokedexNum(*speciesList); - - const u8 local2 = GetNationalPokedexFlag(dexNum, 0); + const u8 local2 = GetSetPokedexFlag(dexNum, 0); if (local2) { if (local1 == 0) - { return *speciesList & 0x1FF; - } - local1--; } - speciesList++; } - return -1; } - diff --git a/src/event_data.c b/src/field/event_data.c similarity index 76% rename from src/event_data.c rename to src/field/event_data.c index c6aecf13c..43d49c417 100644 --- a/src/event_data.c +++ b/src/field/event_data.c @@ -6,7 +6,23 @@ #define TEMP_UPPER_FLAGS_SIZE 0x8 #define TEMP_VARS_SIZE 0x20 -extern u8 gUnknown_0202E8E2[16]; +EWRAM_DATA u16 gSpecialVar_0x8000 = 0; +EWRAM_DATA u16 gSpecialVar_0x8001 = 0; +EWRAM_DATA u16 gSpecialVar_0x8002 = 0; +EWRAM_DATA u16 gSpecialVar_0x8003 = 0; +EWRAM_DATA u16 gSpecialVar_0x8004 = 0; +EWRAM_DATA u16 gSpecialVar_0x8005 = 0; +EWRAM_DATA u16 gSpecialVar_0x8006 = 0; +EWRAM_DATA u16 gSpecialVar_0x8007 = 0; +EWRAM_DATA u16 gSpecialVar_0x8008 = 0; +EWRAM_DATA u16 gSpecialVar_0x8009 = 0; +EWRAM_DATA u16 gSpecialVar_0x800A = 0; +EWRAM_DATA u16 gSpecialVar_0x800B = 0; +EWRAM_DATA u16 gScriptResult = 0; +EWRAM_DATA u16 gScriptLastTalked = 0; +EWRAM_DATA u16 gScriptFacing = 0; +EWRAM_DATA u8 gUnknown_0202E8E2[16] = {0}; + extern u16 *gSpecialVars[]; void InitEventData(void) @@ -20,10 +36,10 @@ void ClearTempFieldEventData(void) { memset(gSaveBlock1.flags, 0, TEMP_FLAGS_SIZE); memset(gSaveBlock1.vars, 0, TEMP_VARS_SIZE); - FlagReset(SYS_ENC_UP_ITEM); - FlagReset(SYS_ENC_DOWN_ITEM); - FlagReset(SYS_USE_STRENGTH); - FlagReset(SYS_CTRL_OBJ_DELETE); + FlagClear(SYS_ENC_UP_ITEM); + FlagClear(SYS_ENC_DOWN_ITEM); + FlagClear(SYS_USE_STRENGTH); + FlagClear(SYS_CTRL_OBJ_DELETE); } // probably had different flag splits at one point. @@ -37,7 +53,7 @@ void DisableNationalPokedex(void) u16 *nationalDexVar = GetVarPointer(VAR_NATIONAL_DEX); gSaveBlock2.pokedex.nationalMagic = 0; *nationalDexVar = 0; - FlagReset(SYS_NATIONAL_DEX); + FlagClear(SYS_NATIONAL_DEX); } void EnableNationalPokedex(void) @@ -61,7 +77,7 @@ bool32 IsNationalPokedexEnabled(void) void DisableMysteryGift(void) { - FlagReset(SYS_EXDATA_ENABLE); + FlagClear(SYS_EXDATA_ENABLE); } void EnableMysteryGift(void) @@ -77,7 +93,7 @@ bool32 IsMysteryGiftEnabled(void) void DisableResetRTC(void) { VarSet(VAR_RESET_RTC_ENABLE, 0); - FlagReset(SYS_RESET_RTC_ENABLE); + FlagClear(SYS_RESET_RTC_ENABLE); } void EnableResetRTC(void) @@ -98,10 +114,8 @@ u16 *GetVarPointer(u16 id) { if (id < 0x4000) return NULL; - - if ((s16)id >= 0) + if (id < 0x8000) return &gSaveBlock1.vars[id - 0x4000]; - return gSpecialVars[id - 0x8000]; } @@ -146,7 +160,7 @@ u8 FlagSet(u16 id) return 0; } -u8 FlagReset(u16 id) +u8 FlagClear(u16 id) { u8 *ptr = GetFlagPointer(id); if (ptr) diff --git a/src/field_camera.c b/src/field/field_camera.c similarity index 97% rename from src/field_camera.c rename to src/field/field_camera.c index 1aed1549b..db51cf054 100644 --- a/src/field_camera.c +++ b/src/field/field_camera.c @@ -7,8 +7,7 @@ #include "sprite.h" #include "text.h" -extern u8 gUnknown_0202E854; - +EWRAM_DATA u8 gUnknown_0202E854 = 0; struct UnknownStruct { @@ -19,15 +18,15 @@ struct UnknownStruct bool8 unk4; }; -extern struct UnknownStruct gUnknown_03000590; -extern u16 gUnknown_03000598; -extern s16 gUnknown_0300059A; -extern u8 gUnknown_0300059C; -extern void (*gUnknown_030005A0)(void); +static struct UnknownStruct gUnknown_03000590; +static u16 gUnknown_03000598; +static s16 gUnknown_0300059A; +static u8 gUnknown_0300059C; +static void (*gUnknown_030005A0)(void); -extern struct CameraSomething gUnknown_03004880; -extern u16 gUnknown_03004898; -extern u16 gUnknown_0300489C; +struct CameraSomething gUnknown_03004880; +u16 gUnknown_03004898; +u16 gUnknown_0300489C; static void RedrawMapSliceNorth(struct UnknownStruct *a, struct MapData *mapData); static void RedrawMapSliceSouth(struct UnknownStruct *a, struct MapData *mapData); diff --git a/src/field_control_avatar.c b/src/field/field_control_avatar.c similarity index 94% rename from src/field_control_avatar.c rename to src/field/field_control_avatar.c index 2d8140be5..ff8e8504c 100644 --- a/src/field_control_avatar.c +++ b/src/field/field_control_avatar.c @@ -13,7 +13,7 @@ #include "flags.h" #include "item_menu.h" #include "metatile_behavior.h" -#include "rom4.h" +#include "overworld.h" #include "safari_zone.h" #include "script.h" #include "secret_base.h" @@ -35,8 +35,11 @@ extern u16 gScriptFacing; extern struct LinkPlayerMapObject gLinkPlayerMapObjects[]; extern u16 gSpecialVar_0x8004; extern u16 gSpecialVar_0x8005; -extern u8 gUnknown_0202E8C0; -extern u16 gUnknown_0202E8C2; + +static EWRAM_DATA u8 gUnknown_0202E8C0 = 0; +static EWRAM_DATA u16 gUnknown_0202E8C2 = 0; + +u8 gSelectedMapObject; //scripts extern u8 gUnknown_081A2C51[]; @@ -54,7 +57,7 @@ extern u8 gUnknown_081A4363[]; extern u8 gUnknown_081C346A[]; extern u8 gUnknown_081616E1[]; extern u8 Event_WorldMap[]; -extern u8 Event_RunningShoesManual[]; +extern u8 S_RunningShoesManual[]; extern u8 PictureBookShelfScript[]; extern u8 BookshelfScript[]; extern u8 PokemonCenterBookshelfScript[]; @@ -67,13 +70,13 @@ extern u8 gUnknown_0815F43A[]; extern u8 gUnknown_0815F523[]; extern u8 gUnknown_0815F528[]; extern u8 UseSurfScript[]; -extern u8 UseWaterfallScript[]; -extern u8 CannotUseWaterfallScript[]; +extern u8 S_UseWaterfall[]; +extern u8 S_CannotUseWaterfall[]; extern u8 UseDiveScript[]; -extern u8 UnderwaterUseDiveScript[]; -extern u8 GraniteCave_B1F_EventScript_1C6BC5[]; +extern u8 S_UseDiveUnderwater[]; +extern u8 S_FallDownHole[]; extern u8 gUnknown_081A14B8[]; -extern u8 Event_EggHatch[]; +extern u8 S_EggHatch[]; extern u8 gUnknown_0815FD0D[]; extern u8 gUnknown_081C6BDE[]; @@ -206,7 +209,7 @@ int sub_8068024(struct FieldInput *input) sub_8071310(); return TRUE; } - if (input->pressedSelectButton && sub_80A6D1C() == 1) + if (input->pressedSelectButton && sub_80A6D1C() == TRUE) return TRUE; return FALSE; } @@ -388,7 +391,7 @@ static u8 *sub_8068500(struct MapPosition *position, u8 b, u8 c) if (MetatileBehavior_IsRegionMap(b) == TRUE) return Event_WorldMap; if (sub_805791C(b) == TRUE) - return Event_RunningShoesManual; + return S_RunningShoesManual; if (MetatileBehavior_IsPictureBookShelf(b) == TRUE) return PictureBookShelfScript; if (MetatileBehavior_IsBookShelf(b) == TRUE) @@ -425,9 +428,9 @@ static u8 *TryGetFieldMoveScript(struct MapPosition *unused1, u8 b, u8 unused2) if (MetatileBehavior_IsWaterfall(b) == TRUE) { if (FlagGet(BADGE08_GET) == TRUE && IsPlayerSurfingNorth() == TRUE) - return UseWaterfallScript; + return S_UseWaterfall; else - return CannotUseWaterfallScript; + return S_CannotUseWaterfall; } return NULL; } @@ -444,9 +447,9 @@ static bool32 sub_8068770(void) static bool32 sub_80687A4(void) { - if (FlagGet(BADGE07_GET) && gMapHeader.mapType == 5 && sub_8068F18() == 1) + if (FlagGet(BADGE07_GET) && gMapHeader.mapType == MAP_TYPE_UNDERWATER && sub_8068F18() == 1) { - ScriptContext1_SetupScript(UnderwaterUseDiveScript); + ScriptContext1_SetupScript(S_UseDiveUnderwater); return TRUE; } return FALSE; @@ -482,7 +485,7 @@ bool8 sub_8068870(u16 a) { if (MetatileBehavior_IsCrackedFloorHole(a)) { - ScriptContext1_SetupScript(GraniteCave_B1F_EventScript_1C6BC5); + ScriptContext1_SetupScript(S_FallDownHole); return TRUE; } return FALSE; @@ -500,7 +503,7 @@ bool8 sub_8068894(void) if (sub_80422A0()) { IncrementGameStat(13); - ScriptContext1_SetupScript(Event_EggHatch); + ScriptContext1_SetupScript(S_EggHatch); return TRUE; } if (SafariZoneTakeStep() == TRUE) @@ -546,14 +549,14 @@ static bool8 overworld_poison_step(void) { u16 *ptr; - if (gMapHeader.mapType != 9) + if (gMapHeader.mapType != MAP_TYPE_SECRET_BASE) { ptr = GetVarPointer(VAR_POISON_STEP_COUNTER); (*ptr)++; (*ptr) %= 4; if (*ptr == 0) { - switch (overworld_poison()) + switch (DoPoisonFieldEffect()) { case 0: return FALSE; @@ -695,7 +698,7 @@ static void sub_8068C30(struct MapHeader *unused, s8 b, struct MapPosition *posi warp1_set_2(warpEvent->unk7, warpEvent->mapNum, warpEvent->mapGroup); sub_80535C4(position->x, position->y); - mapHeader = get_mapheader_by_bank_and_number(warpEvent->unk7, warpEvent->mapNum); + mapHeader = Overworld_GetMapHeaderByGroupAndId(warpEvent->unk7, warpEvent->mapNum); if (mapHeader->events->warps[warpEvent->mapGroup].mapNum == 0x7F) saved_warp2_set(mapHeader->events->warps[b].mapGroup, gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum, b); } @@ -727,7 +730,7 @@ static bool8 map_warp_consider_2_to_inside(struct MapPosition *position, u16 b, return FALSE; } -static s8 map_warp_check(struct MapHeader *mapHeader, u16 b, u16 c, u8 d) +static s8 map_warp_check(struct MapHeader *mapHeader, u16 x, u16 y, u8 warpId) { s32 i; struct WarpEvent *warpEvent = mapHeader->events->warps; @@ -735,9 +738,9 @@ static s8 map_warp_check(struct MapHeader *mapHeader, u16 b, u16 c, u8 d) for (i = 0; i < warpCount; i++, warpEvent++) { - if ((u16)warpEvent->x == b && (u16)warpEvent->y == c) + if ((u16)warpEvent->x == x && (u16)warpEvent->y == y) { - if ((u8)warpEvent->warpId == d || (u8)warpEvent->warpId == 0) + if ((u8)warpEvent->warpId == warpId || (u8)warpEvent->warpId == 0) return i; } } @@ -764,7 +767,7 @@ static u8 *trigger_activate(struct CoordEvent *coordEvent) return NULL; } -static u8 *mapheader_trigger_activate_at(struct MapHeader *mapHeader, u16 b, u16 c, u8 d) +static u8 *mapheader_trigger_activate_at(struct MapHeader *mapHeader, u16 x, u16 y, u8 d) { s32 i; struct CoordEvent *coordEvents = mapHeader->events->coordEvents; @@ -773,7 +776,7 @@ static u8 *mapheader_trigger_activate_at(struct MapHeader *mapHeader, u16 b, u16 for (i = 0; i < coordEventCount; i++) { - if ((u16)coordEvents[i].x == b && (u16)coordEvents[i].y == c) + if ((u16)coordEvents[i].x == x && (u16)coordEvents[i].y == y) { if (coordEvents[i].unk4 == d || coordEvents[i].unk4 == 0) { @@ -810,7 +813,7 @@ static struct BgEvent *FindInvisibleMapObjectByPosition(struct MapHeader *mapHea int dive_warp(struct MapPosition *position, u16 b) { - if (gMapHeader.mapType == 5 && sub_805750C(b) == 0) + if (gMapHeader.mapType == MAP_TYPE_UNDERWATER && sub_805750C(b) == 0) { if (sub_80538B0(position->x - 7, position->y - 7)) { @@ -840,7 +843,7 @@ u8 sub_8068F18(void) PlayerGetDestCoords(&x, &y); r5 = MapGridGetMetatileBehaviorAt(x, y); - if (gMapHeader.mapType == 5 && sub_805750C(r5) == 0) + if (gMapHeader.mapType == MAP_TYPE_UNDERWATER && sub_805750C(r5) == 0) { if (sub_80538B0(x - 7, y - 7) == TRUE) return 1; @@ -863,7 +866,7 @@ u8 *GetFieldObjectScriptPointerForComparison(void) return sub_8068364(&position, MapGridGetMetatileBehaviorAt(position.x, position.y), r4); } -int sub_8068FEC(void) +int SetCableClubWarp(void) { struct MapPosition position; diff --git a/src/field_door.c b/src/field/field_door.c similarity index 98% rename from src/field_door.c rename to src/field/field_door.c index 791ed4c94..ab46f0696 100644 --- a/src/field_door.c +++ b/src/field/field_door.c @@ -3,6 +3,7 @@ #include "field_camera.h" #include "fieldmap.h" #include "metatile_behavior.h" +#include "songs.h" #include "task.h" extern struct DoorAnimFrame gDoorOpenAnimFrames[]; @@ -212,10 +213,10 @@ bool8 FieldIsDoorAnimationRunning(void) return FuncIsActiveTask(Task_AnimateDoor); } -u32 sub_8058790(u32 x, u32 y) +u32 GetDoorSoundEffect(u32 x, u32 y) { if (cur_mapdata_get_door_x2_at(gDoorAnimGraphicsTable, x, y) == 0) - return 8; + return SE_DOOR; else - return 18; + return SE_JIDO_DOA; } diff --git a/src/field_effect.c b/src/field/field_effect.c similarity index 96% rename from src/field_effect.c rename to src/field/field_effect.c index 889664dfa..afe020ac7 100644 --- a/src/field_effect.c +++ b/src/field/field_effect.c @@ -9,7 +9,7 @@ #include "menu.h" #include "palette.h" #include "text.h" -#include "rom4.h" +#include "overworld.h" #include "task.h" #include "sound.h" #include "songs.h" @@ -28,6 +28,8 @@ #define subsprite_table(ptr) {.subsprites = ptr, .subspriteCount = (sizeof ptr) / (sizeof(struct Subsprite))} +EWRAM_DATA u32 gFieldEffectArguments[8] = {0}; + const u32 gSpriteImage_839DC14[] = INCBIN_U32("graphics/birch_speech/birch.4bpp"); const u16 gBirchPalette[16] = INCBIN_U16("graphics/birch_speech/birch.gbapal"); const u32 gSpriteImage_839E434[] = INCBIN_U32("graphics/misc/pokeball_glow.4bpp"); @@ -616,13 +618,13 @@ bool8 FieldEffectActiveListContains(u8 id) return FALSE; } -u8 CreateTrainerSprite_BirchSpeech(u8 gender, s16 x, s16 y, u8 subpriority, u8 *buffer) +u8 CreateTrainerSprite(u8 trainerSpriteID, s16 x, s16 y, u8 subpriority, u8 *buffer) { struct SpriteTemplate spriteTemplate; - LoadCompressedObjectPaletteOverrideBuffer(&gTrainerFrontPicPaletteTable[gender], buffer); - LoadCompressedObjectPicOverrideBuffer(&gTrainerFrontPicTable[gender], buffer); - spriteTemplate.tileTag = gTrainerFrontPicTable[gender].tag; - spriteTemplate.paletteTag = gTrainerFrontPicPaletteTable[gender].tag; + LoadCompressedObjectPaletteOverrideBuffer(&gTrainerFrontPicPaletteTable[trainerSpriteID], buffer); + LoadCompressedObjectPicOverrideBuffer(&gTrainerFrontPicTable[trainerSpriteID], buffer); + spriteTemplate.tileTag = gTrainerFrontPicTable[trainerSpriteID].tag; + spriteTemplate.paletteTag = gTrainerFrontPicPaletteTable[trainerSpriteID].tag; spriteTemplate.oam = &gOamData_839F0F4; spriteTemplate.anims = gDummySpriteAnimTable; spriteTemplate.images = NULL; @@ -658,7 +660,7 @@ u8 CreateMonSprite_FieldMove(u16 species, u32 d, u32 g, s16 x, s16 y, u8 subprio const struct CompressedSpritePalette *spritePalette; HandleLoadSpecialPokePic(&gMonFrontPicTable[species], gMonFrontPicCoords[species].coords, gMonFrontPicCoords[species].y_offset, (u32)gUnknown_081FAF4C[3] /* this is actually u8* or something, pointing to ewram */, gUnknown_081FAF4C[3], species, g); - spritePalette = sub_80409C8(species, d, g); + spritePalette = GetMonSpritePalStructFromOtIdPersonality(species, d, g); LoadCompressedObjectPalette(spritePalette); GetMonSpriteTemplate_803C56C(species, 3); gUnknown_02024E8C.paletteTag = spritePalette->tag; @@ -1201,17 +1203,17 @@ void task00_8084310(u8 taskId) { return; } - gUnknown_0202FF84[0] = gLastFieldPokeMenuOpened; - if ((int)gUnknown_0202FF84[0] > 5) + gFieldEffectArguments[0] = gLastFieldPokeMenuOpened; + if ((int)gFieldEffectArguments[0] > 5) { - gUnknown_0202FF84[0] = 0; + gFieldEffectArguments[0] = 0; } FieldEffectStart(FLDEFF_USE_FLY); task->data[0]++; } if (!FieldEffectActiveListContains(FLDEFF_USE_FLY)) { - flag_var_implications_of_teleport_(); + Overworld_ResetStateAfterFly(); warp_in(); SetMainCallback2(CB2_LoadMap); gFieldCallback = mapldr_08084390; @@ -1221,7 +1223,7 @@ void task00_8084310(u8 taskId) void mapldr_08084390(void) { - sub_8053E90(); + Overworld_PlaySpecialMapMusic(); pal_fill_black(); CreateTask(c3_080843F8, 0); gMapObjects[gPlayerAvatar.mapObjectId].mapobj_bit_13 = 1; @@ -1262,7 +1264,7 @@ extern void CameraObjectReset1(void); void sub_8086748(void) { - sub_8053E90(); + Overworld_PlaySpecialMapMusic(); pal_fill_for_map_transition(); ScriptContext2_Enable(); FreezeMapObjects(); @@ -1531,7 +1533,7 @@ void sub_8086C40(void) void sub_8086C94(void) { - sub_8053E90(); + Overworld_PlaySpecialMapMusic(); pal_fill_for_map_transition(); ScriptContext2_Enable(); CreateTask(sub_8086CBC, 0); @@ -1663,7 +1665,7 @@ bool8 FldEff_UseWaterfall(void) { u8 taskId; taskId = CreateTask(sub_8086F64, 0xff); - gTasks[taskId].data[1] = gUnknown_0202FF84[0]; + gTasks[taskId].data[1] = gFieldEffectArguments[0]; sub_8086F64(taskId); return FALSE; } @@ -1687,7 +1689,7 @@ bool8 waterfall_1_do_anim_probably(struct Task *task, struct MapObject *mapObjec if (!FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(mapObject)) { FieldObjectClearAnimIfSpecialAnimFinished(mapObject); - gUnknown_0202FF84[0] = task->data[1]; + gFieldEffectArguments[0] = task->data[1]; FieldEffectStart(FLDEFF_FIELD_MOVE_SHOW_MON_INIT); task->data[0]++; } @@ -1736,8 +1738,8 @@ bool8 FldEff_UseDive(void) { u8 taskId; taskId = CreateTask(Task_Dive, 0xff); - gTasks[taskId].data[15] = gUnknown_0202FF84[0]; - gTasks[taskId].data[14] = gUnknown_0202FF84[1]; + gTasks[taskId].data[15] = gFieldEffectArguments[0]; + gTasks[taskId].data[14] = gFieldEffectArguments[1]; Task_Dive(taskId); return FALSE; } @@ -1757,7 +1759,7 @@ bool8 sub_8087124(struct Task *task) bool8 dive_2_unknown(struct Task *task) { ScriptContext2_Enable(); - gUnknown_0202FF84[0] = task->data[15]; + gFieldEffectArguments[0] = task->data[15]; FieldEffectStart(FLDEFF_FIELD_MOVE_SHOW_MON_INIT); task->data[0]++; return FALSE; @@ -1818,10 +1820,10 @@ bool8 sub_8087298(struct Task *task, struct MapObject *mapObject, struct Sprite { sprite->pos2.y = 0; task->data[3] = 1; - gUnknown_0202FF84[0] = mapObject->coords2.x; - gUnknown_0202FF84[1] = mapObject->coords2.y; - gUnknown_0202FF84[2] = sprite->subpriority - 1; - gUnknown_0202FF84[3] = sprite->oam.priority; + gFieldEffectArguments[0] = mapObject->coords2.x; + gFieldEffectArguments[1] = mapObject->coords2.y; + gFieldEffectArguments[2] = sprite->subpriority - 1; + gFieldEffectArguments[3] = sprite->oam.priority; FieldEffectStart(FLDEFF_LAVARIDGE_GYM_WARP); PlaySE(SE_W153); task->data[0]++; @@ -1892,11 +1894,10 @@ bool8 sub_80873F4(struct Task *task, struct MapObject *mapObject, struct Sprite } void sub_8087470(u8); -extern u8 sub_80608A4(u8); void mapldr_080851BC(void) { - sub_8053E90(); + Overworld_PlaySpecialMapMusic(); pal_fill_for_map_transition(); ScriptContext2_Enable(); gFieldCallback = NULL; @@ -1922,10 +1923,10 @@ bool8 sub_80874FC(struct Task *task, struct MapObject *mapObject, struct Sprite { if (sub_807D770()) { - gUnknown_0202FF84[0] = mapObject->coords2.x; - gUnknown_0202FF84[1] = mapObject->coords2.y; - gUnknown_0202FF84[2] = sprite->subpriority - 1; - gUnknown_0202FF84[3] = sprite->oam.priority; + gFieldEffectArguments[0] = mapObject->coords2.x; + gFieldEffectArguments[1] = mapObject->coords2.y; + gFieldEffectArguments[2] = sprite->subpriority - 1; + gFieldEffectArguments[3] = sprite->oam.priority; task->data[1] = FieldEffectStart(FLDEFF_POP_OUT_OF_ASH); task->data[0]++; } @@ -1964,9 +1965,9 @@ extern const struct SpriteTemplate *const gFieldEffectObjectTemplatePointers[36] u8 FldEff_LavaridgeGymWarp(void) { u8 spriteId; - sub_8060470((s16 *)&gUnknown_0202FF84[0], (s16 *)&gUnknown_0202FF84[1], 8, 8); - spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[33], gUnknown_0202FF84[0], gUnknown_0202FF84[1], gUnknown_0202FF84[2]); - gSprites[spriteId].oam.priority = gUnknown_0202FF84[3]; + sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[33], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); + gSprites[spriteId].oam.priority = gFieldEffectArguments[3]; gSprites[spriteId].coordOffsetEnabled = 1; return spriteId; } @@ -2007,10 +2008,10 @@ bool8 sub_80876F8(struct Task *task, struct MapObject *mapObject, struct Sprite { if (task->data[1] > 3) { - gUnknown_0202FF84[0] = mapObject->coords2.x; - gUnknown_0202FF84[1] = mapObject->coords2.y; - gUnknown_0202FF84[2] = sprite->subpriority - 1; - gUnknown_0202FF84[3] = sprite->oam.priority; + gFieldEffectArguments[0] = mapObject->coords2.x; + gFieldEffectArguments[1] = mapObject->coords2.y; + gFieldEffectArguments[2] = sprite->subpriority - 1; + gFieldEffectArguments[3] = sprite->oam.priority; task->data[1] = FieldEffectStart(FLDEFF_POP_OUT_OF_ASH); task->data[0]++; } else @@ -2062,9 +2063,9 @@ bool8 sub_80877D4(struct Task *task, struct MapObject *mapObject, struct Sprite u8 FldEff_PopOutOfAsh(void) { u8 spriteId; - sub_8060470((s16 *)&gUnknown_0202FF84[0], (s16 *)&gUnknown_0202FF84[1], 8, 8); - spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[32], gUnknown_0202FF84[0], gUnknown_0202FF84[1], gUnknown_0202FF84[2]); - gSprites[spriteId].oam.priority = gUnknown_0202FF84[3]; + sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[32], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); + gSprites[spriteId].oam.priority = gFieldEffectArguments[3]; gSprites[spriteId].coordOffsetEnabled = 1; return spriteId; } @@ -2133,7 +2134,7 @@ void sub_8087A74(u8); void mapldr_080859D4(void) { - sub_8053E90(); + Overworld_PlaySpecialMapMusic(); pal_fill_for_map_transition(); ScriptContext2_Enable(); FreezeMapObjects(); @@ -2265,7 +2266,7 @@ void sub_8087D78(struct Task *task) { if (!gPaletteFade.active && sub_8054034() == TRUE) { - sub_8053570(); + Overworld_SetWarpDestToLastHealLoc(); warp_in(); SetMainCallback2(CB2_LoadMap); gFieldCallback = mapldr_08085D88; @@ -2277,7 +2278,7 @@ void sub_8087E1C(u8); void mapldr_08085D88(void) { - sub_8053E90(); + Overworld_PlaySpecialMapMusic(); pal_fill_for_map_transition(); ScriptContext2_Enable(); FreezeMapObjects(); @@ -2383,26 +2384,26 @@ void sub_8088890(struct Sprite *); bool8 FldEff_FieldMoveShowMon(void) { u8 taskId; - if (is_light_level_1_2_3_5_or_6(sav1_map_get_light_level()) == TRUE) + if (is_map_type_1_2_3_5_or_6(Overworld_GetMapTypeOfSaveblockLocation()) == TRUE) { taskId = CreateTask(sub_8088120, 0xff); } else { taskId = CreateTask(sub_808847C, 0xff); } - gTasks[taskId].data[15] = sub_8088830(gUnknown_0202FF84[0], gUnknown_0202FF84[1], gUnknown_0202FF84[2]); + gTasks[taskId].data[15] = sub_8088830(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); return FALSE; } bool8 FldEff_FieldMoveShowMonInit(void) { struct Pokemon *pokemon; - u32 flag = gUnknown_0202FF84[0] & 0x80000000; - pokemon = &gPlayerParty[(u8)gUnknown_0202FF84[0]]; - gUnknown_0202FF84[0] = GetMonData(pokemon, MON_DATA_SPECIES); - gUnknown_0202FF84[1] = GetMonData(pokemon, MON_DATA_OT_ID); - gUnknown_0202FF84[2] = GetMonData(pokemon, MON_DATA_PERSONALITY); - gUnknown_0202FF84[0] |= flag; + u32 flag = gFieldEffectArguments[0] & 0x80000000; + pokemon = &gPlayerParty[(u8)gFieldEffectArguments[0]]; + gFieldEffectArguments[0] = GetMonData(pokemon, MON_DATA_SPECIES); + gFieldEffectArguments[1] = GetMonData(pokemon, MON_DATA_OT_ID); + gFieldEffectArguments[2] = GetMonData(pokemon, MON_DATA_PERSONALITY); + gFieldEffectArguments[0] |= flag; FieldEffectStart(FLDEFF_FIELD_MOVE_SHOW_MON); FieldEffectActiveListRemove(FLDEFF_FIELD_MOVE_SHOW_MON_INIT); return FALSE; @@ -2877,9 +2878,9 @@ u8 FldEff_UseSurf(void) { u8 taskId; taskId = CreateTask(sub_8088954, 0xff); - gTasks[taskId].data[15] = gUnknown_0202FF84[0]; - sav1_reset_battle_music_maybe(); - sub_8053FB0(0x016d); + gTasks[taskId].data[15] = gFieldEffectArguments[0]; + Overworld_ClearSavedMusic(); + Overworld_ChangeMusicTo(0x016d); return FALSE; } @@ -2917,7 +2918,7 @@ void sub_8088A30(struct Task *task) mapObject = &gMapObjects[gPlayerAvatar.mapObjectId]; if (FieldObjectCheckIfSpecialAnimFinishedOrInactive(mapObject)) { - gUnknown_0202FF84[0] = task->data[15] | 0x80000000; + gFieldEffectArguments[0] = task->data[15] | 0x80000000; FieldEffectStart(FLDEFF_FIELD_MOVE_SHOW_MON_INIT); task->data[0]++; } @@ -2932,9 +2933,9 @@ void sub_8088A78(struct Task *task) sub_805B980(mapObject, GetPlayerAvatarGraphicsIdByStateId(3)); FieldObjectClearAnimIfSpecialAnimFinished(mapObject); FieldObjectSetSpecialAnim(mapObject, sub_80608D0(mapObject->placeholder18)); - gUnknown_0202FF84[0] = task->data[1]; - gUnknown_0202FF84[1] = task->data[2]; - gUnknown_0202FF84[2] = gPlayerAvatar.mapObjectId; + gFieldEffectArguments[0] = task->data[1]; + gFieldEffectArguments[1] = task->data[2]; + gFieldEffectArguments[2] = gPlayerAvatar.mapObjectId; mapObject->mapobj_unk_1A = FieldEffectStart(FLDEFF_SURF_BLOB); task->data[0]++; } @@ -2968,7 +2969,7 @@ u8 FldEff_NPCFlyOut(void) sprite->oam.paletteNum = 0; sprite->oam.priority = 1; sprite->callback = sub_8088BC4; - sprite->data1 = gUnknown_0202FF84[0]; + sprite->data1 = gFieldEffectArguments[0]; PlaySE(SE_W019); return spriteId; } @@ -3007,7 +3008,7 @@ u8 FldEff_UseFly(void) { u8 taskId; taskId = CreateTask(sub_8088C70, 0xfe); - gTasks[taskId].data[1] = gUnknown_0202FF84[0]; + gTasks[taskId].data[1] = gFieldEffectArguments[0]; return 0; } @@ -3038,7 +3039,7 @@ void sub_8088CF8(struct Task *task) if (FieldObjectClearAnimIfSpecialAnimFinished(mapObject)) { task->data[0]++; - gUnknown_0202FF84[0] = task->data[1]; + gFieldEffectArguments[0] = task->data[1]; FieldEffectStart(FLDEFF_FIELD_MOVE_SHOW_MON_INIT); } } diff --git a/src/field/field_effect_helpers.c b/src/field/field_effect_helpers.c new file mode 100644 index 000000000..2ad8bdce3 --- /dev/null +++ b/src/field/field_effect_helpers.c @@ -0,0 +1,1632 @@ +#include "global.h" +#include "sprite.h" +#include "fieldmap.h" +#include "metatile_behavior.h" +#include "songs.h" +#include "sound.h" +#include "field_map_obj.h" +#include "field_camera.h" +#include "field_map_obj_helpers.h" +#include "field_weather.h" +#include "field_effect.h" +#include "field_ground_effect.h" +#include "field_effect_helpers.h" + +static void sub_81269E0(struct Sprite *); +static void npc_pal_op(struct MapObject *mapObject, struct Sprite *sprite); +static void npc_pal_op_A(struct MapObject *, u8); +static void npc_pal_op_B(struct MapObject *, u8); +static void sub_81275A0(struct Sprite *); +static void sub_81275C4(struct Sprite *); +static void sub_8127DA0(struct Sprite *); +static void sub_8127DD0(struct Sprite *); +static void sub_8127E30(struct Sprite *); +static void sub_812882C(struct Sprite *, u8, u8); +static void sub_81278D8(struct Sprite *); +static void sub_8127FD4(struct MapObject *, struct Sprite *); +static void sub_812800C(struct MapObject *, struct Sprite *); +static void sub_81280A0(struct MapObject *, struct Sprite *, struct Sprite *); +static void sub_8128174(struct Sprite *); +static u32 ShowDisguiseFieldEffect(u8, u8, u8); + +const u8 UnusedEggString_8401E28[] = _("タマゴ"); + +const u16 gUnknown_08401E2C[] = { + 0x0c, + 0x1c, + 0x2c +}; + +const u8 gUnknown_08401E32[] = { + 0, + 1, + 2, + 3 +}; + +const u16 gUnknown_08401E36[] = { + 4, + 4, + 4, + 16 +}; + +void (*const gUnknown_08401E40[])(struct Sprite *) = { + sub_81275A0, + sub_81275C4 +}; + +void (*const gUnknown_08401E48[])(struct Sprite *) = { + sub_8127DA0, + sub_8127DD0, + sub_8127E30 +}; + +const u8 gUnknown_08401E54[] = { + 0, + 0, + 1, + 2, + 3 +}; + +const u16 gUnknown_08401E5A[] = { + 3, + 7 +}; + +void SetUpReflection(struct MapObject *mapObject, struct Sprite *sprite, bool8 flag) +{ + struct Sprite *newSprite; + + newSprite = &gSprites[obj_unfreeze(sprite, sprite->pos1.x, sprite->pos1.y, 0x98)]; + newSprite->callback = sub_81269E0; + newSprite->oam.priority = 3; + newSprite->oam.paletteNum = gUnknown_0830FD14[newSprite->oam.paletteNum]; + newSprite->usingSheet = TRUE; + newSprite->anims = gDummySpriteAnimTable; + StartSpriteAnim(newSprite, 0); + newSprite->affineAnims = gDummySpriteAffineAnimTable; + newSprite->affineAnimBeginning = TRUE; + newSprite->subspriteMode = 0; + newSprite->data0 = sprite->data0; + newSprite->data1 = mapObject->localId; + newSprite->data7 = flag; + npc_pal_op(mapObject, newSprite); + if (!flag) + { + newSprite->oam.affineMode = 1; + } +} + +static s16 sub_81268D0(struct MapObject *mapObject) +{ + return GetFieldObjectGraphicsInfo(mapObject->graphicsId)->height - 2; +} + +static void npc_pal_op(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 whichElement; + u16 unk_8041e2c[ARRAY_COUNT(gUnknown_08401E2C)]; + + memcpy(unk_8041e2c, gUnknown_08401E2C, sizeof gUnknown_08401E2C); + sprite->data2 = 0; + if (!GetFieldObjectGraphicsInfo(mapObject->graphicsId)->disableReflectionPaletteLoad && ((whichElement = sub_8057450(mapObject->mapobj_unk_1F)) || (whichElement = sub_8057450(mapObject->mapobj_unk_1E)))) + { + sprite->data2 = unk_8041e2c[whichElement - 1]; + npc_pal_op_A(mapObject, sprite->oam.paletteNum); + } + else + { + npc_pal_op_B(mapObject, sprite->oam.paletteNum); + } +} + +static void npc_pal_op_B(struct MapObject *mapObject, u8 paletteNum) +{ + const struct MapObjectGraphicsInfo *graphicsInfo; + + graphicsInfo = GetFieldObjectGraphicsInfo(mapObject->graphicsId); + if (graphicsInfo->paletteTag2 != 0x11ff) + { + if (graphicsInfo->paletteSlot == 0) + { + npc_load_two_palettes__no_record(graphicsInfo->paletteTag1, paletteNum); + } + else if (graphicsInfo->paletteSlot == 10) + { + npc_load_two_palettes__and_record(graphicsInfo->paletteTag1, paletteNum); + } + else + { + pal_patch_for_npc(npc_paltag_by_palslot(paletteNum), paletteNum); + } + sub_807D78C(paletteNum); + } +} + +static void npc_pal_op_A(struct MapObject *mapObject, u8 paletteNum) +{ + const struct MapObjectGraphicsInfo *graphicsInfo; + + graphicsInfo = GetFieldObjectGraphicsInfo(mapObject->graphicsId); + if (graphicsInfo->paletteTag2 != 0x11ff) + { + pal_patch_for_npc(graphicsInfo->paletteTag2, paletteNum); + sub_807D78C(paletteNum); + } +} + +static void sub_81269E0(struct Sprite *sprite) +{ + struct MapObject *mapObject; + struct Sprite *oldSprite; + + mapObject = &gMapObjects[sprite->data0]; + oldSprite = &gSprites[mapObject->spriteId]; + if (!mapObject->active || !mapObject->mapobj_bit_17 || mapObject->localId != sprite->data1) + { + sprite->inUse = FALSE; + } + else + { + sprite->oam.paletteNum = gUnknown_0830FD14[oldSprite->oam.paletteNum]; + sprite->oam.shape = oldSprite->oam.shape; + sprite->oam.size = oldSprite->oam.size; + sprite->oam.matrixNum = oldSprite->oam.matrixNum | 0x10; + sprite->oam.tileNum = oldSprite->oam.tileNum; + sprite->subspriteTables = oldSprite->subspriteTables; + sprite->subspriteTableNum = oldSprite->subspriteTableNum; + sprite->invisible = oldSprite->invisible; + sprite->pos1.x = oldSprite->pos1.x; + sprite->pos1.y = oldSprite->pos1.y + sub_81268D0(mapObject) + sprite->data2; + sprite->centerToCornerVecX = oldSprite->centerToCornerVecX; + sprite->centerToCornerVecY = oldSprite->centerToCornerVecY; + sprite->pos2.x = oldSprite->pos2.x; + sprite->pos2.y = -oldSprite->pos2.y; + sprite->coordOffsetEnabled = oldSprite->coordOffsetEnabled; + if (sprite->data7 == FALSE) + { + sprite->oam.matrixNum = 0; + if (oldSprite->oam.matrixNum & 0x8) + { + sprite->oam.matrixNum = 1; + } + } + } +} + +u8 sub_8126B54(void) +{ + u8 spriteId; + struct Sprite *sprite; + + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[8] /*gFieldEffectSpriteTemplate_Arrow*/, 0, 0, 0x52); + if (spriteId != MAX_SPRITES) + { + sprite = &gSprites[spriteId]; + sprite->oam.priority = 1; + sprite->coordOffsetEnabled = TRUE; + sprite->invisible = TRUE; + } + return spriteId; +} + +void objid_set_invisible(u8 spriteId) +{ + gSprites[spriteId].invisible = TRUE; +} + +void sub_8126BC4(u8 spriteId, u8 animNum, s16 x, s16 y) +{ + s16 x2; + s16 y2; + struct Sprite *sprite; + + sprite = &gSprites[spriteId]; + if (sprite->invisible || sprite->data0 != x || sprite->data1 != y) + { + sub_80603CC(x, y, &x2, &y2); + sprite = &gSprites[spriteId]; + sprite->pos1.x = x2 + 8; + sprite->pos1.y = y2 + 8; + sprite->invisible = FALSE; + sprite->data0 = x; + sprite->data1 = y; + StartSpriteAnim(sprite, animNum - 1); + } +} + +u32 FldEff_Shadow(void) +{ + u8 mapObjectId; + const struct MapObjectGraphicsInfo *graphicsInfo; + u8 spriteId; + + mapObjectId = GetFieldObjectIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); + graphicsInfo = GetFieldObjectGraphicsInfo(gMapObjects[mapObjectId].graphicsId); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[gUnknown_08401E32[graphicsInfo->shadowSize]], 0, 0, 0x94); + if (spriteId != MAX_SPRITES) + { + gSprites[spriteId].coordOffsetEnabled = TRUE; + gSprites[spriteId].data0 = gFieldEffectArguments[0]; + gSprites[spriteId].data1 = gFieldEffectArguments[1]; + gSprites[spriteId].data2 = gFieldEffectArguments[2]; + gSprites[spriteId].data3 = (graphicsInfo->height >> 1) - gUnknown_08401E36[graphicsInfo->shadowSize]; + } + return 0; +} + +void oamc_shadow(struct Sprite *sprite) +{ + u8 mapObjectId; + struct MapObject *mapObject; + struct Sprite *linkedSprite; + + if (TryGetFieldObjectIdByLocalIdAndMap(sprite->data0, sprite->data1, sprite->data2, &mapObjectId)) + { + FieldEffectStop(sprite, FLDEFF_SHADOW); + } + else + { + mapObject = &gMapObjects[mapObjectId]; + linkedSprite = &gSprites[mapObject->spriteId]; + sprite->oam.priority = linkedSprite->oam.priority; + sprite->pos1.x = linkedSprite->pos1.x; + sprite->pos1.y = linkedSprite->pos1.y + sprite->data3; + if (!mapObject->active || !mapObject->mapobj_bit_22 || MetatileBehavior_IsPokeGrass(mapObject->mapobj_unk_1E) || MetatileBehavior_IsSurfableWaterOrUnderwater(mapObject->mapobj_unk_1E) || MetatileBehavior_IsSurfableWaterOrUnderwater(mapObject->mapobj_unk_1F) || MetatileBehavior_IsReflective(mapObject->mapobj_unk_1E) || MetatileBehavior_IsReflective(mapObject->mapobj_unk_1F)) + { + FieldEffectStop(sprite, FLDEFF_SHADOW); + } + } +} + +u32 FldEff_TallGrass(void) +{ + s16 x; + s16 y; + u8 spriteId; + struct Sprite *sprite; + + x = gFieldEffectArguments[0]; + y = gFieldEffectArguments[1]; + sub_8060470(&x, &y, 8, 8); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[4], x, y, 0); + if (spriteId != MAX_SPRITES) + { + sprite = &gSprites[spriteId]; + sprite->coordOffsetEnabled = TRUE; + sprite->oam.priority = gFieldEffectArguments[3]; + sprite->data0 = gFieldEffectArguments[2]; + sprite->data1 = gFieldEffectArguments[0]; + sprite->data2 = gFieldEffectArguments[1]; + sprite->data3 = gFieldEffectArguments[4]; + sprite->data4 = gFieldEffectArguments[5]; + sprite->data5 = gFieldEffectArguments[6]; + if (gFieldEffectArguments[7]) + { + SeekSpriteAnim(sprite, 4); + } + } + return 0; +} + +void unc_grass_normal(struct Sprite *sprite) +{ + u8 mapNum; + u8 mapGroup; + u8 metatileBehavior; + u8 localId; + u8 mapObjectId; + struct MapObject *mapObject; + + mapNum = sprite->data5 >> 8; + mapGroup = sprite->data5; + if (gCamera.field_0 && (gSaveBlock1.location.mapNum != mapNum || gSaveBlock1.location.mapGroup != mapGroup)) + { + sprite->data1 -= gCamera.x; + sprite->data2 -= gCamera.y; + sprite->data5 = ((u8)gSaveBlock1.location.mapNum << 8) | (u8)gSaveBlock1.location.mapGroup; + } + localId = sprite->data3 >> 8; + mapNum = sprite->data3; + mapGroup = sprite->data4; + metatileBehavior = MapGridGetMetatileBehaviorAt(sprite->data1, sprite->data2); + if (TryGetFieldObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &mapObjectId) || !MetatileBehavior_IsTallGrass(metatileBehavior) || (sprite->data7 && sprite->animEnded)) + { + FieldEffectStop(sprite, FLDEFF_TALL_GRASS); + } + else + { + mapObject = &gMapObjects[mapObjectId]; + if ((mapObject->coords2.x != sprite->data1 || mapObject->coords2.y != sprite->data2) && (mapObject->coords3.x != sprite->data1 || mapObject->coords3.y != sprite->data2)) + { + sprite->data7 = TRUE; + } + metatileBehavior = 0; + if (sprite->animCmdIndex == 0) + { + metatileBehavior = 4; + } + sub_806487C(sprite, 0); + sub_812882C(sprite, sprite->data0, metatileBehavior); + } +} + +u32 FldEff_JumpTallGrass(void) +{ + u8 spriteId; + struct Sprite *sprite; + + sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 12); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[10], gFieldEffectArguments[0], gFieldEffectArguments[1], 0); + if (spriteId != MAX_SPRITES) + { + sprite = &gSprites[spriteId]; + sprite->coordOffsetEnabled = TRUE; + sprite->oam.priority = gFieldEffectArguments[3]; + sprite->data0 = gFieldEffectArguments[2]; + sprite->data1 = 12; + } + return 0; +} + +u8 sub_8126FF0(u8 localId, u8 mapNum, u8 mapGroup, s16 x, s16 y) +{ + struct Sprite *sprite; + u8 i; + + for (i = 0; i < MAX_SPRITES; i ++) + { + if (gSprites[i].inUse) + { + sprite = &gSprites[i]; + if (sprite->callback == unc_grass_normal && (x == sprite->data1 && y == sprite->data2) && (localId == (u8)(sprite->data3 >> 8) && mapNum == (sprite->data3 & 0xFF) && mapGroup == sprite->data4)) + { + return i; + } + } + } + return MAX_SPRITES; +} + +u32 FldEff_LongGrass(void) +{ + s16 x; + s16 y; + u8 spriteId; + struct Sprite *sprite; + + x = gFieldEffectArguments[0]; + y = gFieldEffectArguments[1]; + sub_8060470(&x, &y, 8, 8); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[15], x, y, 0); + if (spriteId != MAX_SPRITES) + { + sprite = &gSprites[spriteId]; + sprite->coordOffsetEnabled = TRUE; + sprite->oam.priority = ZCoordToPriority(gFieldEffectArguments[2]); + sprite->data0 = gFieldEffectArguments[2]; + sprite->data1 = gFieldEffectArguments[0]; + sprite->data2 = gFieldEffectArguments[1]; + sprite->data3 = gFieldEffectArguments[4]; + sprite->data4 = gFieldEffectArguments[5]; + sprite->data5 = gFieldEffectArguments[6]; + if (gFieldEffectArguments[7]) + { + SeekSpriteAnim(sprite, 6); + } + } + return 0; +} + +void unc_grass_tall(struct Sprite *sprite) +{ + u8 mapNum; + u8 mapGroup; + u8 metatileBehavior; + u8 localId; + u8 mapObjectId; + struct MapObject *mapObject; + + mapNum = sprite->data5 >> 8; + mapGroup = sprite->data5; + if (gCamera.field_0 && (gSaveBlock1.location.mapNum != mapNum || gSaveBlock1.location.mapGroup != mapGroup)) + { + sprite->data1 -= gCamera.x; + sprite->data2 -= gCamera.y; + sprite->data5 = ((u8)gSaveBlock1.location.mapNum << 8) | (u8)gSaveBlock1.location.mapGroup; + } + localId = sprite->data3 >> 8; + mapNum = sprite->data3; + mapGroup = sprite->data4; + metatileBehavior = MapGridGetMetatileBehaviorAt(sprite->data1, sprite->data2); + if (TryGetFieldObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &mapObjectId) || !MetatileBehavior_IsLongGrass(metatileBehavior) || (sprite->data7 && sprite->animEnded)) + { + FieldEffectStop(sprite, FLDEFF_LONG_GRASS); + } + else + { + mapObject = &gMapObjects[mapObjectId]; + if ((mapObject->coords2.x != sprite->data1 || mapObject->coords2.y != sprite->data2) && (mapObject->coords3.x != sprite->data1 || mapObject->coords3.y != sprite->data2)) + { + sprite->data7 = TRUE; + } + sub_806487C(sprite, 0); + sub_812882C(sprite, sprite->data0, 0); + } +} + +u32 FldEff_JumpLongGrass(void) +{ + u8 spriteId; + struct Sprite *sprite; + + sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[16], gFieldEffectArguments[0], gFieldEffectArguments[1], 0); + if (spriteId != MAX_SPRITES) + { + sprite = &gSprites[spriteId]; + sprite->coordOffsetEnabled = TRUE; + sprite->oam.priority = gFieldEffectArguments[3]; + sprite->data0 = gFieldEffectArguments[2]; + sprite->data1 = 18; + } + return 0; +} + +u32 FldEff_ShortGrass(void) +{ + u8 mapObjectId; + struct MapObject *mapObject; + u8 spriteId; + struct Sprite *sprite; + + mapObjectId = GetFieldObjectIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); + mapObject = &gMapObjects[mapObjectId]; + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[30], 0, 0, 0); + if (spriteId != MAX_SPRITES) + { + sprite = &(gSprites[spriteId]); + sprite->coordOffsetEnabled = TRUE; + sprite->oam.priority = gSprites[mapObject->spriteId].oam.priority; + sprite->data0 = gFieldEffectArguments[0]; + sprite->data1 = gFieldEffectArguments[1]; + sprite->data2 = gFieldEffectArguments[2]; + sprite->data3 = gSprites[mapObject->spriteId].pos1.x; + sprite->data4 = gSprites[mapObject->spriteId].pos1.y; + } + return 0; +} + +void sub_8127334(struct Sprite *sprite) +{ + u8 mapObjectId; + s16 x; + s16 y; + const struct MapObjectGraphicsInfo *graphicsInfo; + struct Sprite *linkedSprite; + + if (TryGetFieldObjectIdByLocalIdAndMap(sprite->data0, sprite->data1, sprite->data2, &mapObjectId) || !gMapObjects[mapObjectId].mapobj_bit_18) + { + FieldEffectStop(sprite, FLDEFF_SHORT_GRASS); + } + else + { + graphicsInfo = GetFieldObjectGraphicsInfo(gMapObjects[mapObjectId].graphicsId); + linkedSprite = &gSprites[gMapObjects[mapObjectId].spriteId]; + y = linkedSprite->pos1.y; + x = linkedSprite->pos1.x; + if (x != sprite->data3 || y != sprite->data4) + { + sprite->data3 = x; + sprite->data4 = y; + if (sprite->animEnded) + { + StartSpriteAnim(sprite, 0); + } + } + sprite->pos1.x = x; + sprite->pos1.y = y; + sprite->pos2.y = (graphicsInfo->height >> 1) - 8; + sprite->subpriority = linkedSprite->subpriority - 1; + sprite->oam.priority = linkedSprite->oam.priority; + sub_806487C(sprite, linkedSprite->invisible); + } +} + +u32 FldEff_SandFootprints(void) +{ + u8 spriteId; + struct Sprite *sprite; + + sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[11], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); + if (spriteId != MAX_SPRITES) + { + sprite = &gSprites[spriteId]; + sprite->coordOffsetEnabled = TRUE; + sprite->oam.priority = gFieldEffectArguments[3]; + sprite->data7 = FLDEFF_SAND_FOOTPRINTS; + StartSpriteAnim(sprite, gFieldEffectArguments[4]); + } + return 0; +} + +u32 FldEff_DeepSandFootprints(void) +{ + u8 spriteId; + struct Sprite *sprite; + + sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[23], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); + if (spriteId != MAX_SPRITES) + { + sprite = &gSprites[spriteId]; + sprite->coordOffsetEnabled = TRUE; + sprite->oam.priority = gFieldEffectArguments[3]; + sprite->data7 = FLDEFF_DEEP_SAND_FOOTPRINTS; + StartSpriteAnim(sprite, gFieldEffectArguments[4]); + } + return spriteId; +} + +u32 FldEff_BikeTireTracks(void) +{ + u8 spriteId; + struct Sprite *sprite; + + sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[27], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); + if (spriteId != MAX_SPRITES) + { + sprite = &gSprites[spriteId]; + sprite->coordOffsetEnabled = TRUE; + sprite->oam.priority = gFieldEffectArguments[3]; + sprite->data7 = FLDEFF_BIKE_TIRE_TRACKS; + StartSpriteAnim(sprite, gFieldEffectArguments[4]); + } + return spriteId; +} + +void sub_8127584(struct Sprite *sprite) +{ + gUnknown_08401E40[sprite->data0](sprite); +} + +static void sub_81275A0(struct Sprite *sprite) +{ + if (++sprite->data1 > 40) + { + sprite->data0 = 1; + } + sub_806487C(sprite, FALSE); +} + +static void sub_81275C4(struct Sprite *sprite) +{ + sprite->invisible ^= 1; + sprite->data1 ++; + sub_806487C(sprite, sprite->invisible); + if (sprite->data1 > 56) + { + FieldEffectStop(sprite, sprite->data7); + } +} + +u32 FldEff_Splash(void) +{ + u8 mapObjectId; + struct MapObject *mapObject; + u8 spriteId; + struct Sprite *sprite; + const struct MapObjectGraphicsInfo *graphicsInfo; + struct Sprite *linkedSprite; + + mapObjectId = GetFieldObjectIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); + mapObject = &gMapObjects[mapObjectId]; + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[13], 0, 0, 0); + if (spriteId != MAX_SPRITES) + { + graphicsInfo = GetFieldObjectGraphicsInfo(mapObject->graphicsId); + sprite = &gSprites[spriteId]; + sprite->coordOffsetEnabled = TRUE; + linkedSprite = &gSprites[mapObject->spriteId]; + sprite->oam.priority = linkedSprite->oam.priority; + sprite->data0 = gFieldEffectArguments[0]; + sprite->data1 = gFieldEffectArguments[1]; + sprite->data2 = gFieldEffectArguments[2]; + sprite->pos2.y = (graphicsInfo->height >> 1) - 4; + PlaySE(SE_MIZU); + } + return 0; +} + +void sub_81276B4(struct Sprite *sprite) +{ + u8 mapObjectId; + + if (sprite->animEnded || TryGetFieldObjectIdByLocalIdAndMap(sprite->data0, sprite->data1, sprite->data2, &mapObjectId)) + { + FieldEffectStop(sprite, FLDEFF_SPLASH); + } + else + { + sprite->pos1.x = gSprites[gMapObjects[mapObjectId].spriteId].pos1.x; + sprite->pos1.y = gSprites[gMapObjects[mapObjectId].spriteId].pos1.y; + sub_806487C(sprite, FALSE); + } +} + +u32 FldEff_JumpSmallSplash(void) +{ + u8 spriteId; + struct Sprite *sprite; + + sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 12); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[14], gFieldEffectArguments[0], gFieldEffectArguments[1], 0); + if (spriteId != MAX_SPRITES) + { + sprite = &gSprites[spriteId]; + sprite->coordOffsetEnabled = TRUE; + sprite->oam.priority = gFieldEffectArguments[3]; + sprite->data0 = gFieldEffectArguments[2]; + sprite->data1 = FLDEFF_JUMP_SMALL_SPLASH; + } + return 0; +} + +u32 FldEff_JumpBigSplash(void) +{ + u8 spriteId; + struct Sprite *sprite; + + sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[12], gFieldEffectArguments[0], gFieldEffectArguments[1], 0); + if (spriteId != MAX_SPRITES) + { + sprite = &gSprites[spriteId]; + sprite->coordOffsetEnabled = TRUE; + sprite->oam.priority = gFieldEffectArguments[3]; + sprite->data0 = gFieldEffectArguments[2]; + sprite->data1 = FLDEFF_JUMP_BIG_SPLASH; + } + return 0; +} + +u32 FldEff_FeetInFlowingWater(void) +{ + u8 mapObjectId; + struct MapObject *mapObject; + u8 spriteId; + struct Sprite *sprite; + const struct MapObjectGraphicsInfo *graphicsInfo; + + mapObjectId = GetFieldObjectIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); + mapObject = &gMapObjects[mapObjectId]; + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[13], 0, 0, 0); + if (spriteId != MAX_SPRITES) + { + graphicsInfo = GetFieldObjectGraphicsInfo(mapObject->graphicsId); + sprite = &gSprites[spriteId]; + sprite->callback = sub_81278D8; + sprite->coordOffsetEnabled = TRUE; + sprite->oam.priority = gSprites[mapObject->spriteId].oam.priority; + sprite->data0 = gFieldEffectArguments[0]; + sprite->data1 = gFieldEffectArguments[1]; + sprite->data2 = gFieldEffectArguments[2]; + sprite->data3 = -1; + sprite->data4 = -1; + sprite->pos2.y = (graphicsInfo->height >> 1) - 4; + StartSpriteAnim(sprite, 1); + } + return 0; +} + +static void sub_81278D8(struct Sprite *sprite) +{ + u8 mapObjectId; + struct Sprite *linkedSprite; + struct MapObject *mapObject; + + if (TryGetFieldObjectIdByLocalIdAndMap(sprite->data0, sprite->data1, sprite->data2, &mapObjectId) || !gMapObjects[mapObjectId].mapobj_bit_19) + { + FieldEffectStop(sprite, FLDEFF_FEET_IN_FLOWING_WATER); + } + else + { + mapObject = &gMapObjects[mapObjectId]; + linkedSprite = &gSprites[mapObject->spriteId]; + sprite->pos1.x = linkedSprite->pos1.x; + sprite->pos1.y = linkedSprite->pos1.y; + sprite->subpriority = linkedSprite->subpriority; + sub_806487C(sprite, FALSE); + if (mapObject->coords2.x != sprite->data3 || mapObject->coords2.y != sprite->data4) + { + sprite->data3 = mapObject->coords2.x; + sprite->data4 = mapObject->coords2.y; + if (!sprite->invisible) + { + PlaySE(SE_MIZU); + } + } + } +} + +u32 FldEff_Ripple(void) +{ + u8 spriteId; + struct Sprite *sprite; + + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[5], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); + if (spriteId != MAX_SPRITES) + { + sprite = &gSprites[spriteId]; + sprite->coordOffsetEnabled = TRUE; + sprite->oam.priority = gFieldEffectArguments[3]; + sprite->data0 = FLDEFF_RIPPLE; + } + return 0; +} + +u32 FldEff_HotSpringsWater(void) +{ + u8 mapObjectId; + struct MapObject *mapObject; + u8 spriteId; + struct Sprite *sprite; + + mapObjectId = GetFieldObjectIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); + mapObject = &gMapObjects[mapObjectId]; + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[31], 0, 0, 0); + if (spriteId != MAX_SPRITES) + { + sprite = &gSprites[spriteId]; + sprite->coordOffsetEnabled = TRUE; + sprite->oam.priority = gSprites[mapObject->spriteId].oam.priority; + sprite->data0 = gFieldEffectArguments[0]; + sprite->data1 = gFieldEffectArguments[1]; + sprite->data2 = gFieldEffectArguments[2]; + sprite->data3 = gSprites[mapObject->spriteId].pos1.x; + sprite->data4 = gSprites[mapObject->spriteId].pos1.y; + } + return 0; +} + +void sub_8127A7C(struct Sprite *sprite) +{ + u8 mapObjectId; + const struct MapObjectGraphicsInfo *graphicsInfo; + struct Sprite *linkedSprite; + + if (TryGetFieldObjectIdByLocalIdAndMap(sprite->data0, sprite->data1, sprite->data2, &mapObjectId) || !gMapObjects[mapObjectId].mapobj_bit_21) + { + FieldEffectStop(sprite, FLDEFF_HOT_SPRINGS_WATER); + } + else + { + graphicsInfo = GetFieldObjectGraphicsInfo(gMapObjects[mapObjectId].graphicsId); + linkedSprite = &gSprites[gMapObjects[mapObjectId].spriteId]; + sprite->pos1.x = linkedSprite->pos1.x; + sprite->pos1.y = (graphicsInfo->height >> 1) + linkedSprite->pos1.y - 8; + sprite->subpriority = linkedSprite->subpriority - 1; + sub_806487C(sprite, FALSE); + } +} + +u32 FldEff_Unknown19(void) +{ + u8 spriteId; + struct Sprite *sprite; + + sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[17], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); + if (spriteId != MAX_SPRITES) + { + sprite = &gSprites[spriteId]; + sprite->coordOffsetEnabled = TRUE; + sprite->oam.priority = gFieldEffectArguments[3]; + sprite->data0 = FLDEFF_UNKNOWN_19; + } + return 0; +} + +u32 FldEff_Unknown20(void) +{ + u8 spriteId; + struct Sprite *sprite; + + sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[18], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); + if (spriteId != MAX_SPRITES) + { + sprite = &gSprites[spriteId]; + sprite->coordOffsetEnabled = TRUE; + sprite->oam.priority = gFieldEffectArguments[3]; + sprite->data0 = FLDEFF_UNKNOWN_20; + } + return 0; +} + +u32 FldEff_Unknown21(void) +{ + u8 spriteId; + struct Sprite *sprite; + + sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[19], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); + if (spriteId != MAX_SPRITES) + { + sprite = &gSprites[spriteId]; + sprite->coordOffsetEnabled = TRUE; + sprite->oam.priority = gFieldEffectArguments[3]; + sprite->data0 = FLDEFF_UNKNOWN_21; + } + return 0; +} + +u32 FldEff_Unknown22(void) +{ + u8 spriteId; + struct Sprite *sprite; + + sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[20], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); + if (spriteId != MAX_SPRITES) + { + sprite = &gSprites[spriteId]; + sprite->coordOffsetEnabled = TRUE; + sprite->oam.priority = gFieldEffectArguments[3]; + sprite->data0 = FLDEFF_UNKNOWN_22; + } + return 0; +} + +void ash(s16 x, s16 y, u16 c, s16 d) +{ + gFieldEffectArguments[0] = x; + gFieldEffectArguments[1] = y; + gFieldEffectArguments[2] = 0x52; + gFieldEffectArguments[3] = 1; + gFieldEffectArguments[4] = c; + gFieldEffectArguments[5] = d; + FieldEffectStart(FLDEFF_ASH); +} + +u32 FldEff_Ash(void) +{ + s16 x; + s16 y; + u8 spriteId; + struct Sprite *sprite; + + x = gFieldEffectArguments[0]; + y = gFieldEffectArguments[1]; + sub_8060470(&x, &y, 8, 8); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[6], x, y, gFieldEffectArguments[2]); + if (spriteId != MAX_SPRITES) + { + sprite = &gSprites[spriteId]; + sprite->coordOffsetEnabled = TRUE; + sprite->oam.priority = gFieldEffectArguments[3]; + sprite->data1 = gFieldEffectArguments[0]; + sprite->data2 = gFieldEffectArguments[1]; + sprite->data3 = gFieldEffectArguments[4]; + sprite->data4 = gFieldEffectArguments[5]; + } + return 0; +} + +void sub_8127D84(struct Sprite *sprite) +{ + gUnknown_08401E48[sprite->data0](sprite); +} + +static void sub_8127DA0(struct Sprite *sprite) +{ + sprite->invisible = TRUE; + sprite->animPaused = TRUE; + if (--sprite->data4 == 0) + { + sprite->data0 = 1; + } +} + +static void sub_8127DD0(struct Sprite *sprite) +{ + sprite->invisible = FALSE; + sprite->animPaused = FALSE; + MapGridSetMetatileIdAt(sprite->data1, sprite->data2, sprite->data3); + CurrentMapDrawMetatileAt(sprite->data1, sprite->data2); + gMapObjects[gPlayerAvatar.mapObjectId].mapobj_bit_2 = TRUE; + sprite->data0 = 2; +} + +static void sub_8127E30(struct Sprite *sprite) +{ + sub_806487C(sprite, FALSE); + if (sprite->animEnded) + { + FieldEffectStop(sprite, FLDEFF_ASH); + } +} + +u32 FldEff_SurfBlob(void) +{ + u8 spriteId; + struct Sprite *sprite; + + sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[7], gFieldEffectArguments[0], gFieldEffectArguments[1], 0x96); + if (spriteId !=MAX_SPRITES) + { + sprite = &gSprites[spriteId]; + sprite->coordOffsetEnabled = TRUE; + sprite->oam.paletteNum = 0; + sprite->data2 = gFieldEffectArguments[2]; + sprite->data3 = -1; + sprite->data6 = -1; + sprite->data7 = -1; + } + FieldEffectActiveListRemove(FLDEFF_SURF_BLOB); + return spriteId; +} + +void sub_8127ED0(u8 spriteId, u8 value) +{ + gSprites[spriteId].data0 = (gSprites[spriteId].data0 & ~0xF) | (value & 0xF); +} + +void sub_8127EFC(u8 spriteId, u8 value) +{ + gSprites[spriteId].data0 = (gSprites[spriteId].data0 & ~0xF0) | ((value & 0xF) << 4); +} + +void sub_8127F28(u8 spriteId, u8 value, s16 data1) +{ + gSprites[spriteId].data0 = (gSprites[spriteId].data0 & ~0xF00) | ((value & 0xF) << 8); + gSprites[spriteId].data1 = data1; +} + +static u8 sub_8127F5C(struct Sprite *sprite) +{ + return sprite->data0 & 0xF; +} + +static u8 sub_8127F64(struct Sprite *sprite) +{ + return (sprite->data0 & 0xF0) >> 4; +} + +static u8 sub_8127F70(struct Sprite *sprite) +{ + return (sprite->data0 & 0xF00) >> 8; +} + +void sub_8127F7C(struct Sprite *sprite) +{ + struct MapObject *mapObject; + struct Sprite *linkedSprite; + + mapObject = &gMapObjects[sprite->data2]; + linkedSprite = &gSprites[mapObject->spriteId]; + sub_8127FD4(mapObject, sprite); + sub_812800C(mapObject, sprite); + sub_81280A0(mapObject, linkedSprite, sprite); + sprite->oam.priority = linkedSprite->oam.priority; +} + +static void sub_8127FD4(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 unk_8041E54[ARRAY_COUNT(gUnknown_08401E54)]; + + memcpy(unk_8041E54, gUnknown_08401E54, sizeof gUnknown_08401E54); + if (sub_8127F64(sprite) == 0) + { + StartSpriteAnimIfDifferent(sprite, unk_8041E54[mapObject->placeholder18]); + } +} + +#ifdef NONMATCHING +static void sub_812800C(struct MapObject *mapObject, struct Sprite *sprite) +{ + s16 x; + s16 y; + u8 i; + + x = mapObject->coords2.x; + y = mapObject->coords2.y; + if (sprite->pos2.y == 0 && (x != sprite->data6 || y != sprite->data7)) + { + sprite->data5 = sprite->pos2.y; + for (sprite->data6 = x, sprite->data7 = y, i = DIR_SOUTH; i <= DIR_EAST; i ++, x = sprite->data6, y = sprite->data7) + { + MoveCoords(i, &x, &y); + if (MapGridGetZCoordAt(x, y) == 3) + { + sprite->data5 ++; + break; + } + } + } +} +#else +__attribute__((naked)) static void sub_812800C(struct MapObject *mapObject, struct Sprite *sprite) +{ + asm_unified("\tpush {r4-r7,lr}\n" + "\tmov r7, r8\n" + "\tpush {r7}\n" + "\tsub sp, 0x4\n" + "\tadds r4, r1, 0\n" + "\tldrh r2, [r0, 0x10]\n" + "\tmov r1, sp\n" + "\tstrh r2, [r1]\n" + "\tldrh r1, [r0, 0x12]\n" + "\tmov r0, sp\n" + "\tadds r0, 0x2\n" + "\tstrh r1, [r0]\n" + "\tmovs r2, 0x26\n" + "\tldrsh r3, [r4, r2]\n" + "\tmov r8, r0\n" + "\tcmp r3, 0\n" + "\tbne _08128094\n" + "\tmov r0, sp\n" + "\tmovs r5, 0\n" + "\tldrsh r2, [r0, r5]\n" + "\tmovs r5, 0x3A\n" + "\tldrsh r0, [r4, r5]\n" + "\tcmp r2, r0\n" + "\tbne _08128048\n" + "\tlsls r0, r1, 16\n" + "\tasrs r0, 16\n" + "\tmovs r5, 0x3C\n" + "\tldrsh r1, [r4, r5]\n" + "\tcmp r0, r1\n" + "\tbeq _08128094\n" + "_08128048:\n" + "\tstrh r3, [r4, 0x38]\n" + "\tstrh r2, [r4, 0x3A]\n" + "\tmov r1, r8\n" + "\tmovs r2, 0\n" + "\tldrsh r0, [r1, r2]\n" + "\tstrh r0, [r4, 0x3C]\n" + "\tmovs r5, 0x1\n" + "\tmov r7, r8\n" + "\tmov r6, sp\n" + "_0812805A:\n" + "\tadds r0, r5, 0\n" + "\tmov r1, sp\n" + "\tadds r2, r7, 0\n" + "\tbl MoveCoords\n" + "\tmovs r1, 0\n" + "\tldrsh r0, [r6, r1]\n" + "\tmovs r2, 0\n" + "\tldrsh r1, [r7, r2]\n" + "\tbl MapGridGetZCoordAt\n" + "\tlsls r0, 24\n" + "\tlsrs r0, 24\n" + "\tcmp r0, 0x3\n" + "\tbne _08128080\n" + "\tldrh r0, [r4, 0x38]\n" + "\tadds r0, 0x1\n" + "\tstrh r0, [r4, 0x38]\n" + "\tb _08128094\n" + "_08128080:\n" + "\tadds r0, r5, 0x1\n" + "\tlsls r0, 24\n" + "\tlsrs r5, r0, 24\n" + "\tldrh r0, [r4, 0x3A]\n" + "\tstrh r0, [r6]\n" + "\tldrh r0, [r4, 0x3C]\n" + "\tmov r1, r8\n" + "\tstrh r0, [r1]\n" + "\tcmp r5, 0x4\n" + "\tbls _0812805A\n" + "_08128094:\n" + "\tadd sp, 0x4\n" + "\tpop {r3}\n" + "\tmov r8, r3\n" + "\tpop {r4-r7}\n" + "\tpop {r0}\n" + "\tbx r0"); +} +#endif + +static void sub_81280A0(struct MapObject *mapObject, struct Sprite *linkedSprite, struct Sprite *sprite) +{ + u16 unk_8401E5A[ARRAY_COUNT(gUnknown_08401E5A)]; + u8 v0; + + memcpy(unk_8401E5A, gUnknown_08401E5A, sizeof gUnknown_08401E5A); + v0 = sub_8127F5C(sprite); + if (v0 != 0) + { + if (((u16)(++ sprite->data4) & unk_8401E5A[sprite->data5]) == 0) + { + sprite->pos2.y += sprite->data3; + } + if ((sprite->data4 & 0x0F) == 0) + { + sprite->data3 = -sprite->data3; + } + if (v0 != 2) + { + if (sub_8127F70(sprite) == 0) + { + linkedSprite->pos2.y = sprite->pos2.y; + } + else + { + linkedSprite->pos2.y = sprite->data1 + sprite->pos2.y; + } + sprite->pos1.x = linkedSprite->pos1.x; + sprite->pos1.y = linkedSprite->pos1.y + 8; + } + } +} + +u8 sub_8128124(u8 oldSpriteId) +{ + u8 spriteId; + struct Sprite *sprite; + + spriteId = CreateSpriteAtEnd(&gDummySpriteTemplate, 0, 0, -1); + sprite = &gSprites[spriteId]; + sprite->callback = sub_8128174; + sprite->invisible = TRUE; + sprite->data0 = oldSpriteId; + sprite->data1 = 1; + return spriteId; +} + +static void sub_8128174(struct Sprite *sprite) +{ + struct Sprite *oldSprite; + + oldSprite = &gSprites[sprite->data0]; + if (((sprite->data2++) & 0x03) == 0) + { + oldSprite->pos2.y += sprite->data1; + } + if ((sprite->data2 & 0x0F) == 0) + { + sprite->data1 = -sprite->data1; + } +} + +u32 FldEff_Dust(void) +{ + u8 spriteId; + struct Sprite *sprite; + + sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 12); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[9], gFieldEffectArguments[0], gFieldEffectArguments[1], 0); + if (spriteId != MAX_SPRITES) + { + sprite = &gSprites[spriteId]; + sprite->coordOffsetEnabled = TRUE; + sprite->oam.priority = gFieldEffectArguments[3]; + sprite->data0 = gFieldEffectArguments[2]; + sprite->data1 = 10; + } + return 0; +} + +u32 FldEff_SandPile(void) +{ + u8 mapObjectId; + struct MapObject *mapObject; + u8 spriteId; + struct Sprite *sprite; + const struct MapObjectGraphicsInfo *graphicsInfo; + + mapObjectId = GetFieldObjectIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); + mapObject = &gMapObjects[mapObjectId]; + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[29], 0, 0, 0); + if (spriteId != MAX_SPRITES) + { + graphicsInfo = GetFieldObjectGraphicsInfo(mapObject->graphicsId); + sprite = &gSprites[spriteId]; + sprite->coordOffsetEnabled = TRUE; + sprite->oam.priority = gSprites[mapObject->spriteId].oam.priority; + sprite->data0 = gFieldEffectArguments[0]; + sprite->data1 = gFieldEffectArguments[1]; + sprite->data2 = gFieldEffectArguments[2]; + sprite->data3 = gSprites[mapObject->spriteId].pos1.x; + sprite->data4 = gSprites[mapObject->spriteId].pos1.y; + sprite->pos2.y = (graphicsInfo->height >> 1) - 2; + SeekSpriteAnim(sprite, 2); + } + return 0; +} + +void sub_81282E0(struct Sprite *sprite) +{ + u8 mapObjectId; + s16 x; + s16 y; + + if (TryGetFieldObjectIdByLocalIdAndMap(sprite->data0, sprite->data1, sprite->data2, &mapObjectId) || !gMapObjects[mapObjectId].mapobj_bit_20) + { + FieldEffectStop(sprite, FLDEFF_SAND_PILE); + } + else + { + y = gSprites[gMapObjects[mapObjectId].spriteId].pos1.y; + x = gSprites[gMapObjects[mapObjectId].spriteId].pos1.x; + if (x != sprite->data3 || y != sprite->data4) + { + sprite->data3 = x; + sprite->data4 = y; + if (sprite->animEnded) + { + StartSpriteAnim(sprite, 0); + } + } + sprite->pos1.x = x; + sprite->pos1.y = y; + sprite->subpriority = gSprites[gMapObjects[mapObjectId].spriteId].subpriority; + sub_806487C(sprite, FALSE); + } +} + +u32 FldEff_Bubbles(void) +{ + u8 spriteId; + struct Sprite *sprite; + + sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 0); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[34], gFieldEffectArguments[0], gFieldEffectArguments[1], 0x52); + if (spriteId != MAX_SPRITES) + { + sprite = &gSprites[spriteId]; + sprite->coordOffsetEnabled = TRUE; + sprite->oam.priority = 1; + } + return 0; +} + +void sub_8128410(struct Sprite *sprite) +{ + sprite->data0 += 0x80; + sprite->data0 &= 0x100; + sprite->pos1.y -= sprite->data0 >> 8; + sub_806487C(sprite, FALSE); + if (sprite->invisible || sprite->animEnded) + { + FieldEffectStop(sprite, FLDEFF_BUBBLES); + } +} + +u32 FldEff_BerryTreeGrowthSparkle(void) +{ + u8 spriteId; + struct Sprite *sprite; + + sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 4); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[22], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); + if (spriteId != MAX_SPRITES) + { + sprite = &gSprites[spriteId]; + sprite->coordOffsetEnabled = TRUE; + sprite->oam.priority = gFieldEffectArguments[3]; + sprite->oam.paletteNum = 5; + sprite->data0 = FLDEFF_BERRY_TREE_GROWTH_SPARKLE; + } + return 0; +} + +u32 FldEff_TreeDisguise(void) +{ + return ShowDisguiseFieldEffect(FLDEFF_TREE_DISGUISE, 0x18, 0x04); +} + + +u32 FldEff_MountainDisguise(void) +{ + return ShowDisguiseFieldEffect(FLDEFF_MOUNTAIN_DISGUISE, 0x19, 0x03); +} + + +u32 FldEff_SandDisguise(void) +{ + return ShowDisguiseFieldEffect(FLDEFF_SAND_DISGUISE, 0x1C, 0x02); +} + +static u32 ShowDisguiseFieldEffect(u8 fldEff, u8 templateIdx, u8 paletteNum) +{ + u8 spriteId; + struct Sprite *sprite; + + if (TryGetFieldObjectIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2], &spriteId)) + { + FieldEffectActiveListRemove(fldEff); + return MAX_SPRITES; + } + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[templateIdx], 0, 0, 0); + if (spriteId != MAX_SPRITES) + { + sprite = &gSprites[spriteId]; + sprite->coordOffsetEnabled ++; + sprite->oam.paletteNum = paletteNum; + sprite->data1 = fldEff; + sprite->data2 = gFieldEffectArguments[0]; + sprite->data3 = gFieldEffectArguments[1]; + sprite->data4 = gFieldEffectArguments[2]; + } + return spriteId; +} + +void sub_81285AC(struct Sprite *sprite) +{ + u8 mapObjectId; + const struct MapObjectGraphicsInfo *graphicsInfo; + struct Sprite *linkedSprite; + + if (TryGetFieldObjectIdByLocalIdAndMap(sprite->data2, sprite->data3, sprite->data4, &mapObjectId)) + { + FieldEffectStop(sprite, sprite->data1); + } + // else { + graphicsInfo = GetFieldObjectGraphicsInfo(gMapObjects[mapObjectId].graphicsId); + linkedSprite = &gSprites[gMapObjects[mapObjectId].spriteId]; + sprite->invisible = linkedSprite->invisible; + sprite->pos1.x = linkedSprite->pos1.x; + sprite->pos1.y = (graphicsInfo->height >> 1) + linkedSprite->pos1.y - 16; + sprite->subpriority = linkedSprite->subpriority - 1; + if (sprite->data0 == 1) + { + sprite->data0 ++; + StartSpriteAnim(sprite, 1); + } + if (sprite->data0 == 2 && sprite->animEnded) + { + sprite->data7 = 1; + } + if (sprite->data0 == 3) + { + FieldEffectStop(sprite, sprite->data1); + } + // } +} + +void sub_812869C(struct MapObject *mapObject) +{ + if (mapObject->mapobj_unk_21 == 1) + { + gSprites[mapObject->mapobj_unk_1A].data0 ++; + } +} + +bool8 sub_81286C4(struct MapObject *mapObject) +{ + struct Sprite *sprite; + + if (mapObject->mapobj_unk_21 == 2) + { + return TRUE; + } + if (mapObject->mapobj_unk_21 == 0) + { + return TRUE; + } + sprite = &gSprites[mapObject->mapobj_unk_1A]; + if (sprite->data7) + { + mapObject->mapobj_unk_21 = 2; + sprite->data0 ++; + return TRUE; + } + return FALSE; +} + +u32 FldEff_Sparkle(void) +{ + u8 spriteId; + + gFieldEffectArguments[0] += 7; + gFieldEffectArguments[1] += 7; + sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[35], gFieldEffectArguments[0], gFieldEffectArguments[1], 0x52); + if (spriteId != MAX_SPRITES) + { + gSprites[spriteId].oam.priority = gFieldEffectArguments[2]; + gSprites[spriteId].coordOffsetEnabled = TRUE; + } + return 0; +} + +void sub_8128774(struct Sprite *sprite) +{ + if (sprite->data0 == 0) + { + if (sprite->animEnded) + { + sprite->invisible = TRUE; + sprite->data0 ++; + } + if (sprite->data0 == 0) + { + return; + } + } + if (++ sprite->data1 >= 35) + { + FieldEffectStop(sprite, FLDEFF_SPARKLE); + } +} + +void sub_81287C4(struct Sprite *sprite) +{ + if (sprite->animEnded) + { + FieldEffectStop(sprite, sprite->data1); + } + else + { + sub_806487C(sprite, FALSE); + SetObjectSubpriorityByZCoord(sprite->data0, sprite, 0); + } +} + +void sub_8128800(struct Sprite *sprite) +{ + if (sprite->animEnded) + { + FieldEffectStop(sprite, sprite->data0); + } + else + { + sub_806487C(sprite, FALSE); + } +} + +#ifdef NONMATCHING +static void sub_812882C(struct Sprite *sprite /*r6*/, u8 z, u8 offset) +{ + u8 i; + s16 xlo; + s16 xhi; + s16 lx; + s16 lyhi; + s16 ly; + s16 ylo; + s16 yhi; + struct MapObject *mapObject; // r4 + const struct MapObjectGraphicsInfo *graphicsInfo; // destroyed + struct Sprite *linkedSprite; // r5 + + SetObjectSubpriorityByZCoord(z, sprite, offset); + for (i = 0; i < 16; i ++) + { + mapObject = &gMapObjects[i]; + if (mapObject->active) + { + graphicsInfo = GetFieldObjectGraphicsInfo(mapObject->graphicsId); + linkedSprite = &gSprites[mapObject->spriteId]; + xhi = sprite->pos1.x + sprite->centerToCornerVecX; + xlo = sprite->pos1.x - sprite->centerToCornerVecX; + lx = linkedSprite->pos1.x; + if (xhi < lx && xlo > lx) + { + lyhi = linkedSprite->pos1.y + linkedSprite->centerToCornerVecY; + ly = linkedSprite->pos1.y; + ylo = sprite->pos1.y - sprite->centerToCornerVecY; + yhi = ylo + linkedSprite->centerToCornerVecY; + if ((lyhi < yhi || lyhi < ylo) && ly > yhi) + { + if (sprite->subpriority <= linkedSprite->subpriority) + { + sprite->subpriority = linkedSprite->subpriority + 2; + break; + } + } + } + } + } +} +#else +__attribute__((naked)) static void sub_812882C(struct Sprite *sprite /*r6*/, u8 z, u8 offset) +{ + asm_unified("\tpush {r4-r7,lr}\n" + "\tadds r6, r0, 0\n" + "\tadds r0, r1, 0\n" + "\tlsls r0, 24\n" + "\tlsrs r0, 24\n" + "\tlsls r2, 24\n" + "\tlsrs r2, 24\n" + "\tadds r1, r6, 0\n" + "\tbl SetObjectSubpriorityByZCoord\n" + "\tmovs r7, 0\n" + "_08128842:\n" + "\tlsls r0, r7, 3\n" + "\tadds r0, r7\n" + "\tlsls r0, 2\n" + "\tldr r1, _081288DC @ =gMapObjects\n" + "\tadds r4, r0, r1\n" + "\tldrb r0, [r4]\n" + "\tlsls r0, 31\n" + "\tcmp r0, 0\n" + "\tbeq _081288E4\n" + "\tldrb r0, [r4, 0x5]\n" + "\tbl GetFieldObjectGraphicsInfo\n" + "\tldrb r1, [r4, 0x4]\n" + "\tlsls r0, r1, 4\n" + "\tadds r0, r1\n" + "\tlsls r0, 2\n" + "\tldr r1, _081288E0 @ =gSprites\n" + "\tadds r5, r0, r1\n" + "\tadds r0, r6, 0\n" + "\tadds r0, 0x28\n" + "\tmovs r2, 0\n" + "\tldrsb r2, [r0, r2]\n" + "\tldrh r0, [r6, 0x20]\n" + "\tadds r1, r0, r2\n" + "\tsubs r0, r2\n" + "\tlsls r0, 16\n" + "\tlsrs r4, r0, 16\n" + "\tlsls r1, 16\n" + "\tasrs r1, 16\n" + "\tmovs r0, 0x20\n" + "\tldrsh r2, [r5, r0]\n" + "\tcmp r1, r2\n" + "\tbge _081288E4\n" + "\tlsls r0, r4, 16\n" + "\tasrs r0, 16\n" + "\tcmp r0, r2\n" + "\tble _081288E4\n" + "\tadds r0, r5, 0\n" + "\tadds r0, 0x29\n" + "\tmovs r3, 0\n" + "\tldrsb r3, [r0, r3]\n" + "\tldrh r2, [r5, 0x22]\n" + "\tadds r2, r3\n" + "\tldrh r4, [r5, 0x22]\n" + "\tadds r0, r6, 0\n" + "\tadds r0, 0x29\n" + "\tmovs r1, 0\n" + "\tldrsb r1, [r0, r1]\n" + "\tldrh r0, [r6, 0x22]\n" + "\tsubs r0, r1\n" + "\tlsls r0, 16\n" + "\tasrs r0, 16\n" + "\tadds r3, r0, r3\n" + "\tlsls r2, 16\n" + "\tasrs r2, 16\n" + "\tlsls r3, 16\n" + "\tasrs r3, 16\n" + "\tcmp r2, r3\n" + "\tblt _081288BC\n" + "\tcmp r2, r0\n" + "\tbge _081288E4\n" + "_081288BC:\n" + "\tlsls r0, r4, 16\n" + "\tasrs r0, 16\n" + "\tcmp r0, r3\n" + "\tble _081288E4\n" + "\tadds r2, r6, 0\n" + "\tadds r2, 0x43\n" + "\tadds r0, r5, 0\n" + "\tadds r0, 0x43\n" + "\tldrb r1, [r0]\n" + "\tldrb r0, [r2]\n" + "\tcmp r0, r1\n" + "\tbhi _081288E4\n" + "\tadds r0, r1, 0x2\n" + "\tstrb r0, [r2]\n" + "\tb _081288EE\n" + "\t.align 2, 0\n" + "_081288DC: .4byte gMapObjects\n" + "_081288E0: .4byte gSprites\n" + "_081288E4:\n" + "\tadds r0, r7, 0x1\n" + "\tlsls r0, 24\n" + "\tlsrs r7, r0, 24\n" + "\tcmp r7, 0xF\n" + "\tbls _08128842\n" + "_081288EE:\n" + "\tpop {r4-r7}\n" + "\tpop {r0}\n" + "\tbx r0"); +} +#endif diff --git a/src/field/field_fadetransition.c b/src/field/field_fadetransition.c new file mode 100644 index 000000000..82776d18c --- /dev/null +++ b/src/field/field_fadetransition.c @@ -0,0 +1,626 @@ +#include "global.h" +#include "cable_club.h" +#include "fieldmap.h" +#include "field_door.h" +#include "field_effect.h" +#include "field_fadetransition.h" +#include "field_map_obj.h" +#include "field_map_obj_helpers.h" +#include "field_player_avatar.h" +#include "field_special_scene.h" +#include "field_weather.h" +#include "fldeff_flash.h" +#include "link.h" +#include "main.h" +#include "map_obj_lock.h" +#include "metatile_behavior.h" +#include "palette.h" +#include "overworld.h" +#include "script.h" +#include "songs.h" +#include "sound.h" +#include "start_menu.h" +#include "task.h" + +void sub_8080B9C(u8); +void task_map_chg_seq_0807E20C(u8); +void task_map_chg_seq_0807E2CC(u8); +void task0A_fade_n_map_maybe(u8); +void sub_808115C(u8); + +void palette_bg_fill_white(void) +{ + CpuFastFill16(RGB_WHITE, gPlttBufferFaded, PLTT_SIZE); +} + +void palette_bg_fill_black(void) +{ + CpuFastFill16(RGB_BLACK, gPlttBufferFaded, PLTT_SIZE); +} + +void pal_fill_for_map_transition(void) +{ + u8 map_light = get_map_type_from_warp0(); + switch (fade_type_for_given_maplight_pair(map_light, Overworld_GetMapTypeOfSaveblockLocation())) + { + case 0: + fade_screen(0, 0); + palette_bg_fill_black(); + break; + case 1: + fade_screen(2, 0); + palette_bg_fill_white(); + } +} + +void pal_fill_black(void) +{ + fade_screen(0, 0); + palette_bg_fill_black(); +} + +void fade_8080918(void) +{ + u8 light_level = Overworld_GetMapTypeOfSaveblockLocation(); + switch (sub_810CDB8(light_level, warp1_get_mapheader()->mapType)) + { + case 0: + fade_screen(1, 0); + break; + case 1: + fade_screen(3, 0); + } +} + +void sub_8080958(u8 arg) +{ + sub_8059B88(!arg); +} + +void task0A_asap_script_env_2_enable_and_set_ctx_running(u8 taskID) +{ + if (sub_8080E70() == TRUE) + { + DestroyTask(taskID); + EnableBothScriptContexts(); + } +} + +void sub_8080990(void) +{ + ScriptContext2_Enable(); + Overworld_PlaySpecialMapMusic(); + pal_fill_black(); + CreateTask(task0A_asap_script_env_2_enable_and_set_ctx_running, 10); +} + +void sub_80809B0(void) +{ + ScriptContext2_Enable(); + pal_fill_black(); + CreateTask(task0A_asap_script_env_2_enable_and_set_ctx_running, 10); +} + +void task_mpl_807DD60(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + + switch (task->data[0]) + { + case 0: + task->data[1] = sub_8083664(); + task->data[0]++; + break; + case 1: + if (gTasks[task->data[1]].isActive != TRUE) + { + pal_fill_for_map_transition(); + task->data[0]++; + } + break; + case 2: + if (sub_8080E70() == TRUE) + { + ScriptContext2_Disable(); + DestroyTask(taskId); + } + } +} + +void sub_8080A3C(void) +{ + ScriptContext2_Enable(); + Overworld_PlaySpecialMapMusic(); + palette_bg_fill_black(); + CreateTask(task_mpl_807DD60, 10); +} + +void sub_8080A5C(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + + switch (task->data[0]) + { + case 0: + sub_80084A4(); + task->data[0]++; + break; + case 1: + if (sub_8007ECC()) + { + pal_fill_for_map_transition(); + task->data[0]++; + } + break; + case 2: + if (sub_8080E70() == TRUE) + { + sub_8007B14(); + ScriptContext2_Disable(); + DestroyTask(taskId); + } + } +} + +void sub_8080AC4(void) +{ + ScriptContext2_Enable(); + Overworld_PlaySpecialMapMusic(); + palette_bg_fill_black(); + CreateTask(sub_8080A5C, 10); +} + +void sub_8080AE4(void) +{ + s16 x, y; + u8 behavior; + TaskFunc func; + PlayerGetDestCoords(&x, &y); + behavior = MapGridGetMetatileBehaviorAt(x, y); + if (MetatileBehavior_IsDoor(behavior) == TRUE) + func = sub_8080B9C; + else if (MetatileBehavior_IsNonAnimDoor(behavior) == TRUE) + func = task_map_chg_seq_0807E20C; + else + func = task_map_chg_seq_0807E2CC; + CreateTask(func, 10); +} + +void mapldr_default(void) +{ + Overworld_PlaySpecialMapMusic(); + pal_fill_for_map_transition(); + sub_8080AE4(); + ScriptContext2_Enable(); +} + +void sub_8080B60(void) +{ + Overworld_PlaySpecialMapMusic(); + pal_fill_black(); + sub_8080AE4(); + ScriptContext2_Enable(); +} + +void sub_8080B78(void) +{ + Overworld_PlaySpecialMapMusic(); + pal_fill_for_map_transition(); + PlaySE(SE_TK_WARPOUT); + CreateTask(task_map_chg_seq_0807E2CC, 10); + ScriptContext2_Enable(); +} + +void sub_8080B9C(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + s16 *x = &task->data[2]; + s16 *y = &task->data[3]; + + switch (task->data[0]) + { + case 0: + sub_8080958(0); + FreezeMapObjects(); + PlayerGetDestCoords(x, y); + FieldSetDoorOpened(*x, *y); + task->data[0] = 1; + break; + case 1: + if (sub_8080E70()) + { + u8 mapObjId; + sub_8080958(1); + mapObjId = GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0); + FieldObjectSetSpecialAnim(&gMapObjects[mapObjId], 8); + task->data[0] = 2; + } + break; + case 2: + if (walkrun_is_standing_still()) + { + u8 mapObjId; + task->data[1] = FieldAnimateDoorClose(*x, *y); + mapObjId = GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0); + FieldObjectClearAnimIfSpecialAnimFinished(&gMapObjects[mapObjId]); + task->data[0] = 3; + } + break; + case 3: + if (task->data[1] < 0 || gTasks[task->data[1]].isActive != TRUE) + { + UnfreezeMapObjects(); + task->data[0] = 4; + } + break; + case 4: + ScriptContext2_Disable(); + DestroyTask(taskId); + break; + } +} + +void task_map_chg_seq_0807E20C(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + s16 *x = &task->data[2]; + s16 *y = &task->data[3]; + + switch (task->data[0]) + { + case 0: + sub_8080958(0); + FreezeMapObjects(); + PlayerGetDestCoords(x, y); + task->data[0] = 1; + break; + case 1: + if (sub_8080E70()) + { + u8 mapObjId; + sub_8080958(1); + mapObjId = GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0); + FieldObjectSetSpecialAnim(&gMapObjects[mapObjId], GetGoSpeed0AnimId(player_get_direction_lower_nybble())); + task->data[0] = 2; + } + break; + case 2: + if (walkrun_is_standing_still()) + { + UnfreezeMapObjects(); + task->data[0] = 3; + } + break; + case 3: + ScriptContext2_Disable(); + DestroyTask(taskId); + break; + } +} + +void task_map_chg_seq_0807E2CC(u8 taskId) +{ + switch (gTasks[taskId].data[0]) + { + case 0: + FreezeMapObjects(); + ScriptContext2_Enable(); + gTasks[taskId].data[0]++; + break; + case 1: + if (sub_8080E70()) + { + UnfreezeMapObjects(); + ScriptContext2_Disable(); + DestroyTask(taskId); + } + break; + } +} + +void sub_8080DC4(u8 taskId) +{ + if (sub_8080E70() == TRUE) + { + DestroyTask(taskId); + CreateTask(sub_80712B4, 80); + } +} + +void atk17_seteffectuser(void) +{ + pal_fill_black(); + CreateStartMenuTask(sub_8080DC4); + ScriptContext2_Enable(); +} + +void task_mpl_807E3C8(u8 taskId) +{ + if (sub_8080E70() == 1) + { + ScriptContext2_Disable(); + DestroyTask(taskId); + sub_8064E2C(); + } +} + +void sub_8080E28(void) +{ + ScriptContext2_Enable(); + pal_fill_black(); + CreateTask(task_mpl_807E3C8, 10); +} + +void sub_8080E44(void) +{ + ScriptContext2_Enable(); + Overworld_PlaySpecialMapMusic(); + pal_fill_black(); + CreateTask(task_mpl_807E3C8, 10); +} + +bool32 sub_8080E64(void) +{ + return gPaletteFade.active; +} + +bool32 sub_8080E70(void) +{ + if (sub_807D770() == TRUE) + return TRUE; + else + return FALSE; +} + +void sub_8080E88(void) +{ + ScriptContext2_Enable(); + sub_8053FF8(); + fade_8080918(); + PlayRainSoundEffect(); + PlaySE(SE_KAIDAN); + gFieldCallback = mapldr_default; + CreateTask(task0A_fade_n_map_maybe, 10); +} + +void sp13E_warp_to_last_warp(void) +{ + ScriptContext2_Enable(); + sub_8053FF8(); + fade_8080918(); + PlayRainSoundEffect(); + gFieldCallback = mapldr_default; + CreateTask(task0A_fade_n_map_maybe, 10); +} + +void sub_8080EF0(void) +{ + ScriptContext2_Enable(); + gFieldCallback = mapldr_default; + CreateTask(sub_808115C, 10); +} + +void sp13F_fall_to_last_warp(void) +{ + sp13E_warp_to_last_warp(); + gFieldCallback = sub_8086748; +} + +void sub_8080F2C(u8 metatileBehavior) +{ + ScriptContext2_Enable(); + sub_8086A2C(metatileBehavior, 10); +} + +void sub_8080F48(void) +{ + ScriptContext2_Enable(); + sub_80871B8(10); +} + +void sub_8080F58(void) +{ + ScriptContext2_Enable(); + sub_8087654(10); +} + +void sub_8080F68(void) +{ + ScriptContext2_Enable(); + sub_8053FF8(); + fade_8080918(); + PlaySE(SE_TK_WARPIN); + CreateTask(task0A_fade_n_map_maybe, 10); + gFieldCallback = sub_8080B78; +} + +void sub_8080F9C(void) +{ + ScriptContext2_Enable(); + fade_8080918(); + CreateTask(task0A_fade_n_map_maybe, 10); + gFieldCallback = sub_80C791C; +} + +void sub_8080FC4(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + + switch (task->data[0]) + { + case 0: + ScriptContext2_Enable(); + task->data[0]++; + break; + case 1: + if (!sub_8080E64() && sub_8054034()) + { + task->data[0]++; + } + break; + case 2: + warp_in(); + SetMainCallback2(sub_8054588); + DestroyTask(taskId); + break; + } +} + +void DoCableClubWarp(void) +{ + ScriptContext2_Enable(); + sub_8053FF8(); + fade_8080918(); + PlaySE(SE_KAIDAN); + CreateTask(sub_8080FC4, 10); +} + +void sub_8081050(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + + switch (data[0]) + { + case 0: + ClearLinkCallback_2(); + fade_screen(1, 0); + sub_8053FF8(); + PlaySE(SE_KAIDAN); + data[0]++; + break; + case 1: + if (!sub_8080E64() && sub_8054034()) + { + sub_800832C(); + data[0]++; + } + break; + case 2: + if (!gReceivedRemoteLinkPlayers) + { + warp_in(); + SetMainCallback2(CB2_LoadMap); + DestroyTask(taskId); + } + break; + } +} + +void sub_80810DC(void) +{ + CreateTask(sub_8081050, 10); +} + +void task0A_fade_n_map_maybe(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + + switch (task->data[0]) + { + case 0: + FreezeMapObjects(); + ScriptContext2_Enable(); + task->data[0]++; + break; + case 1: + if (!sub_8080E64() && sub_8054034()) + { + task->data[0]++; + } + break; + case 2: + warp_in(); + SetMainCallback2(CB2_LoadMap); + DestroyTask(taskId); + break; + } +} + +void sub_808115C(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + s16 *x = &task->data[2]; + s16 *y = &task->data[3]; + + switch (task->data[0]) + { + case 0: + FreezeMapObjects(); + PlayerGetDestCoords(x, y); + PlaySE(GetDoorSoundEffect(*x, *y - 1)); + task->data[1] = FieldAnimateDoorOpen(*x, *y - 1); + task->data[0] = 1; + break; + case 1: + if (task->data[1] < 0 || gTasks[task->data[1]].isActive != TRUE) + { + u8 mapObjId; + mapObjId = GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0); + FieldObjectClearAnimIfSpecialAnimActive(&gMapObjects[mapObjId]); + mapObjId = GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0); + FieldObjectSetSpecialAnim(&gMapObjects[mapObjId], 9); + task->data[0] = 2; + } + break; + case 2: + if (walkrun_is_standing_still()) + { + u8 mapObjId; + task->data[1] = FieldAnimateDoorClose(*x, *y - 1); + mapObjId = GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0); + FieldObjectClearAnimIfSpecialAnimFinished(&gMapObjects[mapObjId]); + sub_8080958(0); + task->data[0] = 3; + } + break; + case 3: + if (task->data[1] < 0 || gTasks[task->data[1]].isActive != TRUE) + { + task->data[0] = 4; + } + break; + case 4: + sub_8053FF8(); + fade_8080918(); + PlayRainSoundEffect(); + task->data[0] = 0; + task->func = task0A_fade_n_map_maybe; + break; + } +} + +void sub_80812C8(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + + switch (task->data[0]) + { + case 0: + FreezeMapObjects(); + ScriptContext2_Enable(); + task->data[0]++; + break; + case 1: + if (!sub_8080E64() && sub_8054034()) + { + task->data[0]++; + } + break; + case 2: + warp_in(); + SetMainCallback2(sub_8054534); + DestroyTask(taskId); + break; + } +} + +void sub_8081334(void) +{ + ScriptContext2_Enable(); + sub_8053FF8(); + fade_8080918(); + PlayRainSoundEffect(); + PlaySE(SE_KAIDAN); + gFieldCallback = sub_8080B60; + CreateTask(sub_80812C8, 10); +} diff --git a/src/field/field_ground_effect.c b/src/field/field_ground_effect.c new file mode 100644 index 000000000..5af8ea3e3 --- /dev/null +++ b/src/field/field_ground_effect.c @@ -0,0 +1,796 @@ +#include "global.h" +#include "field_ground_effect.h" +#include "field_effect.h" +#include "field_effect_helpers.h" +#include "field_map_obj_helpers.h" +#include "fieldmap.h" +#include "metatile_behavior.h" + +static void nullsub(struct MapObject *mapObj, struct Sprite *sprite, u8); +static void DoTracksGroundEffect_Footprints(struct MapObject *mapObj, struct Sprite *sprite, u8); +static void DoTracksGroundEffect_BikeTireTracks( + struct MapObject *mapObj, struct Sprite *sprite, u8); +void GroundEffect_SpawnOnTallGrass(struct MapObject *mapObj, struct Sprite *sprite); +void sub_8063E94(struct MapObject *mapObj, struct Sprite *sprite); +void sub_8063EE0(struct MapObject *mapObj, struct Sprite *sprite); +void sub_8063F2C(struct MapObject *mapObj, struct Sprite *sprite); +void GroundEffect_WaterReflection(struct MapObject *mapObj, struct Sprite *sprite); +void GroundEffect_IceReflection(struct MapObject *mapObj, struct Sprite *sprite); +void GroundEffect_FlowingWater(struct MapObject *mapObj, struct Sprite *sprite); +void sub_8063FA0(struct MapObject *mapObj, struct Sprite *sprite); +void sub_8063FCC(struct MapObject *mapObj, struct Sprite *sprite); +void GroundEffect_Ripple(struct MapObject *mapObj, struct Sprite *sprite); +void GroundEffect_StepOnPuddle(struct MapObject *mapObj, struct Sprite *sprite); +void GroundEffect_SandPile(struct MapObject *mapObj, struct Sprite *sprite); +void GroundEffect_JumpOnTallGrass(struct MapObject *mapObj, struct Sprite *sprite); +void GroundEffect_JumpOnLongGrass(struct MapObject *mapObj, struct Sprite *sprite); +void GroundEffect_JumpOnShallowWater(struct MapObject *mapObj, struct Sprite *sprite); +void GroundEffect_JumpOnWater(struct MapObject *mapObj, struct Sprite *sprite); +void GroundEffect_JumpLandingDust(struct MapObject *mapObj, struct Sprite *sprite); +void GroundEffect_ShortGrass(struct MapObject *mapObj, struct Sprite *sprite); +void GroundEffect_HotSprings(struct MapObject *mapObj, struct Sprite *sprite); +void GroundEffect_Seaweed(struct MapObject *mapObj, struct Sprite *sprite); +u8 GetReflectionTypeByMetatileBehavior(u32 behavior); + +static void GetAllGroundEffectFlags_OnSpawn(struct MapObject *mapObj, u32 *flags) +{ + FieldObjectUpdateMetatileBehaviors(mapObj); + GetGroundEffectFlags_Reflection(mapObj, flags); + GetGroundEffectFlags_TallGrassOnSpawn(mapObj, flags); + GetGroundEffectFlags_LongGrassOnSpawn(mapObj, flags); + GetGroundEffectFlags_SandPile(mapObj, flags); + GetGroundEffectFlags_ShallowFlowingWater(mapObj, flags); + GetGroundEffectFlags_ShortGrass(mapObj, flags); + GetGroundEffectFlags_HotSprings(mapObj, flags); +} + +static void GetAllGroundEffectFlags_OnBeginStep(struct MapObject *mapObj, u32 *flags) +{ + FieldObjectUpdateMetatileBehaviors(mapObj); + GetGroundEffectFlags_Reflection(mapObj, flags); + GetGroundEffectFlags_TallGrassOnBeginStep(mapObj, flags); + GetGroundEffectFlags_LongGrassOnBeginStep(mapObj, flags); + GetGroundEffectFlags_Tracks(mapObj, flags); + GetGroundEffectFlags_SandPile(mapObj, flags); + GetGroundEffectFlags_ShallowFlowingWater(mapObj, flags); + GetGroundEffectFlags_Puddle(mapObj, flags); + GetGroundEffectFlags_ShortGrass(mapObj, flags); + GetGroundEffectFlags_HotSprings(mapObj, flags); +} + +static void GetAllGroundEffectFlags_OnFinishStep(struct MapObject *mapObj, u32 *flags) +{ + FieldObjectUpdateMetatileBehaviors(mapObj); + GetGroundEffectFlags_ShallowFlowingWater(mapObj, flags); + GetGroundEffectFlags_SandPile(mapObj, flags); + GetGroundEffectFlags_Puddle(mapObj, flags); + GetGroundEffectFlags_Ripple(mapObj, flags); + GetGroundEffectFlags_ShortGrass(mapObj, flags); + GetGroundEffectFlags_HotSprings(mapObj, flags); + GetGroundEffectFlags_Seaweed(mapObj, flags); + GetGroundEffectFlags_JumpLanding(mapObj, flags); +} + +void FieldObjectUpdateMetatileBehaviors(struct MapObject *mapObj) +{ + mapObj->mapobj_unk_1F = MapGridGetMetatileBehaviorAt(mapObj->coords3.x, mapObj->coords3.y); + mapObj->mapobj_unk_1E = MapGridGetMetatileBehaviorAt(mapObj->coords2.x, mapObj->coords2.y); +} + +void GetGroundEffectFlags_Reflection(struct MapObject *mapObj, u32 *flags) +{ + u32 reflectionFlags[2] = { 0x00000020, 0x00000010 }; + u8 type = FieldObjectCheckForReflectiveSurface(mapObj); + + if (type) + { + if (!mapObj->mapobj_bit_17) + { + mapObj->mapobj_bit_17 = 0; + mapObj->mapobj_bit_17 = 1; + *flags |= reflectionFlags[type - 1]; + } + } + else + { + mapObj->mapobj_bit_17 = 0; + } +} + +void GetGroundEffectFlags_TallGrassOnSpawn(struct MapObject *mapObj, u32 *flags) +{ + if (MetatileBehavior_IsTallGrass(mapObj->mapobj_unk_1E)) + *flags |= 0x1; +} + +void GetGroundEffectFlags_TallGrassOnBeginStep(struct MapObject *mapObj, u32 *flags) +{ + if (MetatileBehavior_IsTallGrass(mapObj->mapobj_unk_1E)) + *flags |= 0x2; +} + +void GetGroundEffectFlags_LongGrassOnSpawn(struct MapObject *mapObj, u32 *flags) +{ + if (MetatileBehavior_IsLongGrass(mapObj->mapobj_unk_1E)) + *flags |= 0x4; +} + +void GetGroundEffectFlags_LongGrassOnBeginStep(struct MapObject *mapObj, u32 *flags) +{ + if (MetatileBehavior_IsLongGrass(mapObj->mapobj_unk_1E)) + *flags |= 0x8; +} + +void GetGroundEffectFlags_Tracks(struct MapObject *mapObj, u32 *flags) +{ + if (MetatileBehavior_IsDeepSand(mapObj->mapobj_unk_1F)) + { + *flags |= 0x100; + } + else if (MetatileBehavior_IsSandOrDeepSand(mapObj->mapobj_unk_1F) + || MetatileBehavior_IsUnusedFootprintMetatile(mapObj->mapobj_unk_1F)) + { + *flags |= 0x80; + } +} + +void GetGroundEffectFlags_SandPile(struct MapObject *mapObj, u32 *flags) +{ + if (MetatileBehavior_IsDeepSand(mapObj->mapobj_unk_1E) + && MetatileBehavior_IsDeepSand(mapObj->mapobj_unk_1F)) + { + if (!mapObj->mapobj_bit_20) + { + mapObj->mapobj_bit_20 = 0; + mapObj->mapobj_bit_20 = 1; + *flags |= 0x800; + } + } + else + { + mapObj->mapobj_bit_20 = 0; + } +} + +void GetGroundEffectFlags_ShallowFlowingWater(struct MapObject *mapObj, u32 *flags) +{ + if ((MetatileBehavior_IsShallowFlowingWater(mapObj->mapobj_unk_1E) + && MetatileBehavior_IsShallowFlowingWater(mapObj->mapobj_unk_1F)) + || (MetatileBehavior_IsPacifidlogLog(mapObj->mapobj_unk_1E) + && MetatileBehavior_IsPacifidlogLog(mapObj->mapobj_unk_1F))) + { + if (!mapObj->mapobj_bit_19) + { + mapObj->mapobj_bit_19 = 0; + mapObj->mapobj_bit_19 = 1; + *flags |= 0x40; + } + } + else + { + mapObj->mapobj_bit_19 = 0; + } +} + +void GetGroundEffectFlags_Puddle(struct MapObject *mapObj, u32 *flags) +{ + if (MetatileBehavior_IsPuddle(mapObj->mapobj_unk_1E) + && MetatileBehavior_IsPuddle(mapObj->mapobj_unk_1F)) + { + *flags |= 0x400; + } +} + +void GetGroundEffectFlags_Ripple(struct MapObject *mapObj, u32 *flags) +{ + if (MetatileBehavior_HasRipples(mapObj->mapobj_unk_1E)) + *flags |= 0x200; +} + +void GetGroundEffectFlags_ShortGrass(struct MapObject *mapObj, u32 *flags) +{ + if (MetatileBehavior_IsShortGrass(mapObj->mapobj_unk_1E) + && MetatileBehavior_IsShortGrass(mapObj->mapobj_unk_1F)) + { + if (!mapObj->mapobj_bit_18) + { + mapObj->mapobj_bit_18 = 0; + mapObj->mapobj_bit_18 = 1; + *flags |= 0x20000; + } + } + else + { + mapObj->mapobj_bit_18 = 0; + } +} + +void GetGroundEffectFlags_HotSprings(struct MapObject *mapObj, u32 *flags) +{ + if (MetatileBehavior_IsHotSprings(mapObj->mapobj_unk_1E) + && MetatileBehavior_IsHotSprings(mapObj->mapobj_unk_1F)) + { + if (!mapObj->mapobj_bit_21) + { + mapObj->mapobj_bit_21 = 0; + mapObj->mapobj_bit_21 = 1; + *flags |= 0x40000; + } + } + else + { + mapObj->mapobj_bit_21 = 0; + } +} + +void GetGroundEffectFlags_Seaweed(struct MapObject *mapObj, u32 *flags) +{ + if (MetatileBehavior_IsSeaweed(mapObj->mapobj_unk_1E)) + *flags |= 0x80000; +} + +void GetGroundEffectFlags_JumpLanding(struct MapObject *mapObj, u32 *flags) +{ + typedef bool8 (*MetatileFunc)(u8); + + static const MetatileFunc metatileFuncs[] = { + MetatileBehavior_IsTallGrass, + MetatileBehavior_IsLongGrass, + MetatileBehavior_IsPuddle, + MetatileBehavior_IsSurfableWaterOrUnderwater, + MetatileBehavior_IsShallowFlowingWater, + MetatileBehavior_IsATile, + }; + + static const u32 jumpLandingFlags[] = { + 0x00001000, // Landing in tall grass + 0x00002000, // Landing in long grass + 0x00004000, // Landing on puddle + 0x00008000, // Landing on surfable water or underwater + 0x00004000, // Landing on shallow flowing water + 0x00010000, // Landing on any other type of ground + }; + + if (mapObj->mapobj_bit_5 && !mapObj->mapobj_bit_25) + { + u8 i; + + for (i = 0; i < 6; i++) + { + if (metatileFuncs[i](mapObj->mapobj_unk_1E)) + { + *flags |= jumpLandingFlags[i]; + return; + } + } + } +} + +u8 FieldObjectCheckForReflectiveSurface(struct MapObject *mapObj) +{ + const struct MapObjectGraphicsInfo *info = GetFieldObjectGraphicsInfo(mapObj->graphicsId); + + // ceil div by tile width? + s16 width = (info->width + 8) >> 4; + s16 height = (info->height + 8) >> 4; + s16 i; + s16 j; + u8 result; + u8 b; + s16 one; + +#define RETURN_REFLECTION_TYPE_AT(x, y) \ + b = MapGridGetMetatileBehaviorAt(x, y); \ + result = GetReflectionTypeByMetatileBehavior(b); \ + if (result != 0) \ + return result; + + for (i = 0, one = 1; i < height; i++) + { + RETURN_REFLECTION_TYPE_AT(mapObj->coords2.x, mapObj->coords2.y + one + i) + RETURN_REFLECTION_TYPE_AT(mapObj->coords3.x, mapObj->coords3.y + one + i) + for (j = 1; j < width; j++) + { + RETURN_REFLECTION_TYPE_AT(mapObj->coords2.x + j, mapObj->coords2.y + one + i) + RETURN_REFLECTION_TYPE_AT(mapObj->coords2.x - j, mapObj->coords2.y + one + i) + RETURN_REFLECTION_TYPE_AT(mapObj->coords3.x + j, mapObj->coords3.y + one + i) + RETURN_REFLECTION_TYPE_AT(mapObj->coords3.x - j, mapObj->coords3.y + one + i) + } + } + return 0; + +#undef RETURN_REFLECTION_TYPE_AT +} + +u8 GetReflectionTypeByMetatileBehavior(u32 behavior) +{ + if (MetatileBehavior_IsIce(behavior)) + return 1; + else if (MetatileBehavior_IsReflective(behavior)) + return 2; + else + return 0; +} + +u8 GetLedgeJumpDirection(s16 x, s16 y, u8 z) +{ + static bool8 (*const unknown_08376040[])(u8) = { + MetatileBehavior_IsJumpSouth, + MetatileBehavior_IsJumpNorth, + MetatileBehavior_IsJumpWest, + MetatileBehavior_IsJumpEast, + }; + + u8 b; + u8 index = z; + + if (index == 0) + return 0; + else if (index > 4) + index -= 4; + + index--; + b = MapGridGetMetatileBehaviorAt(x, y); + + if (unknown_08376040[index](b) == 1) + return index + 1; + + return 0; +} + +void FieldObjectSetSpriteOamTableForLongGrass(struct MapObject *mapObj, struct Sprite *sprite) +{ + if (mapObj->mapobj_bit_4) + return; + + if (!MetatileBehavior_IsLongGrass(mapObj->mapobj_unk_1E)) + return; + + if (!MetatileBehavior_IsLongGrass(mapObj->mapobj_unk_1F)) + return; + + sprite->subspriteTableNum = 4; + + if (ZCoordToPriority(mapObj->elevation) == 1) + sprite->subspriteTableNum = 5; +} + +bool8 IsZCoordMismatchAt(u8 z, s16 x, s16 y) +{ + u8 mapZ; + + if (z == 0) + return FALSE; + + mapZ = MapGridGetZCoordAt(x, y); + + if (mapZ == 0 || mapZ == 0xF) + return FALSE; + + if (mapZ != z) + return TRUE; + + return FALSE; +} + +static const u8 sUnknown_08376050[] = { + 0x73, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x00, 0x00, 0x73 +}; + +// Each byte corresponds to a sprite priority for a field object. +// This is directly the inverse of gFieldObjectPriorities_08376070. +static const u8 sFieldObjectPriorities_08376060[] = { + 2, 2, 2, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 0, 0, 2 +}; + +// Each byte corresponds to a sprite priority for a field object. +// This is the inverse of gFieldObjectPriorities_08376060. +// 1 = Above player sprite +// 2 = Below player sprite +static const u8 sFieldObjectPriorities_08376070[] = { + 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 0, 0, 1, +}; + +void FieldObjectUpdateZCoordAndPriority(struct MapObject *mapObj, struct Sprite *sprite) +{ + if (mapObj->mapobj_bit_26) + return; + + FieldObjectUpdateZCoord(mapObj); + + sprite->subspriteTableNum = sFieldObjectPriorities_08376070[mapObj->elevation]; + sprite->oam.priority = sFieldObjectPriorities_08376060[mapObj->elevation]; +} + +void InitObjectPriorityByZCoord(struct Sprite *sprite, u8 z) +{ + sprite->subspriteTableNum = sFieldObjectPriorities_08376070[z]; + sprite->oam.priority = sFieldObjectPriorities_08376060[z]; +} + +u8 ZCoordToPriority(u8 z) +{ + return sFieldObjectPriorities_08376060[z]; +} + +void FieldObjectUpdateZCoord(struct MapObject *mapObj) +{ + u8 z = MapGridGetZCoordAt(mapObj->coords2.x, mapObj->coords2.y); + u8 z2 = MapGridGetZCoordAt(mapObj->coords3.x, mapObj->coords3.y); + + if (z == 0xF || z2 == 0xF) + return; + + mapObj->mapobj_unk_0B_0 = z; + + if (z != 0 && z != 0xF) + mapObj->elevation = z; +} + +void SetObjectSubpriorityByZCoord(u8 a, struct Sprite *sprite, u8 b) +{ + s32 tmp = sprite->centerToCornerVecY; + u32 tmpa = *(u16 *)&sprite->pos1.y; + u32 tmpb = *(u16 *)&gSpriteCoordOffsetY; + s32 tmp2 = (tmpa - tmp) + tmpb; + u16 tmp3 = (0x10 - ((((u32)tmp2 + 8) & 0xFF) >> 4)) * 2; + sprite->subpriority = tmp3 + sUnknown_08376050[a] + b; +} + +void FieldObjectUpdateSubpriority(struct MapObject *mapObj, struct Sprite *sprite) +{ + if (mapObj->mapobj_bit_26) + return; + + SetObjectSubpriorityByZCoord(mapObj->elevation, sprite, 1); +} + +bool8 AreZCoordsCompatible(u8 a, u8 b) +{ + if (a == 0 || b == 0) + return TRUE; + + if (a != b) + return FALSE; + + return TRUE; +} + +void GroundEffect_SpawnOnTallGrass(struct MapObject *mapObj, struct Sprite *sprite) +{ + u8 *ptr; + + gFieldEffectArguments[0] = mapObj->coords2.x; + gFieldEffectArguments[1] = mapObj->coords2.y; + gFieldEffectArguments[2] = mapObj->elevation; + gFieldEffectArguments[3] = 2; + gFieldEffectArguments[4] = (mapObj->localId << 8) | mapObj->mapNum; + gFieldEffectArguments[5] = mapObj->mapGroup; + + ptr = (u8 *)&gSaveBlock1; + gFieldEffectArguments[6] = ((u8)gSaveBlock1.location.mapNum << 8) + | (u8)gSaveBlock1.location.mapGroup; + + gFieldEffectArguments[7] = 1; + FieldEffectStart(FLDEFF_TALL_GRASS); +} + +void sub_8063E94(struct MapObject *mapObj, struct Sprite *sprite) +{ + u8 *ptr; + + gFieldEffectArguments[0] = mapObj->coords2.x; + gFieldEffectArguments[1] = mapObj->coords2.y; + gFieldEffectArguments[2] = mapObj->elevation; + gFieldEffectArguments[3] = 2; + gFieldEffectArguments[4] = (mapObj->localId << 8) | mapObj->mapNum; + gFieldEffectArguments[5] = mapObj->mapGroup; + + ptr = (u8 *)&gSaveBlock1; + gFieldEffectArguments[6] = ((u8)gSaveBlock1.location.mapNum << 8) + | (u8)gSaveBlock1.location.mapGroup; + + gFieldEffectArguments[7] = 0; + FieldEffectStart(FLDEFF_TALL_GRASS); +} + +void sub_8063EE0(struct MapObject *mapObj, struct Sprite *sprite) +{ + u8 *ptr; + + gFieldEffectArguments[0] = mapObj->coords2.x; + gFieldEffectArguments[1] = mapObj->coords2.y; + gFieldEffectArguments[2] = mapObj->elevation; + gFieldEffectArguments[3] = 2; + gFieldEffectArguments[4] = (mapObj->localId << 8) | mapObj->mapNum; + gFieldEffectArguments[5] = mapObj->mapGroup; + + ptr = (u8 *)&gSaveBlock1; + gFieldEffectArguments[6] = ((u8)gSaveBlock1.location.mapNum << 8) + | (u8)gSaveBlock1.location.mapGroup; + + gFieldEffectArguments[7] = 1; + FieldEffectStart(FLDEFF_LONG_GRASS); +} + +void sub_8063F2C(struct MapObject *mapObj, struct Sprite *sprite) +{ + u8 *ptr; + + gFieldEffectArguments[0] = mapObj->coords2.x; + gFieldEffectArguments[1] = mapObj->coords2.y; + gFieldEffectArguments[2] = mapObj->elevation; + gFieldEffectArguments[3] = 2; + gFieldEffectArguments[4] = (mapObj->localId << 8) | mapObj->mapNum; + gFieldEffectArguments[5] = mapObj->mapGroup; + + ptr = (u8 *)&gSaveBlock1; + gFieldEffectArguments[6] = ((u8)gSaveBlock1.location.mapNum << 8) + | (u8)gSaveBlock1.location.mapGroup; + + gFieldEffectArguments[7] = 0; + FieldEffectStart(FLDEFF_LONG_GRASS); +} + +void GroundEffect_WaterReflection(struct MapObject *mapObj, struct Sprite *sprite) +{ + SetUpReflection(mapObj, sprite, 0); +} + +void GroundEffect_IceReflection(struct MapObject *mapObj, struct Sprite *sprite) +{ + SetUpReflection(mapObj, sprite, 1); +} + +void GroundEffect_FlowingWater(struct MapObject *mapObj, struct Sprite *sprite) +{ + oe_exec_and_other_stuff(FLDEFF_FEET_IN_FLOWING_WATER, mapObj); +} + +static void (*const gUnknown_08376080[])(struct MapObject *mapObj, struct Sprite *sprite, u8 a) = { + nullsub, DoTracksGroundEffect_Footprints, DoTracksGroundEffect_BikeTireTracks, +}; + +void sub_8063FA0(struct MapObject *mapObj, struct Sprite *sprite) +{ + const struct MapObjectGraphicsInfo *info = GetFieldObjectGraphicsInfo(mapObj->graphicsId); + gUnknown_08376080[info->tracks](mapObj, sprite, 0); +} + +void sub_8063FCC(struct MapObject *mapObj, struct Sprite *sprite) +{ + const struct MapObjectGraphicsInfo *info = GetFieldObjectGraphicsInfo(mapObj->graphicsId); + gUnknown_08376080[info->tracks](mapObj, sprite, 1); +} + +static void nullsub(struct MapObject *mapObj, struct Sprite *sprite, u8 a) +{ +} + +static void DoTracksGroundEffect_Footprints(struct MapObject *mapObj, struct Sprite *sprite, u8 a) +{ + // First half-word is a Field Effect script id. (gFieldEffectScriptPointers) + u16 sandFootprints_FieldEffectData[2] = { + FLDEFF_SAND_FOOTPRINTS, + FLDEFF_DEEP_SAND_FOOTPRINTS + }; + + gFieldEffectArguments[0] = mapObj->coords3.x; + gFieldEffectArguments[1] = mapObj->coords3.y; + gFieldEffectArguments[2] = 149; + gFieldEffectArguments[3] = 2; + gFieldEffectArguments[4] = mapObj->mapobj_unk_18; + FieldEffectStart(sandFootprints_FieldEffectData[a]); +} + +static void DoTracksGroundEffect_BikeTireTracks( + struct MapObject *mapObj, struct Sprite *sprite, u8 a) +{ + // Specifies which bike track shape to show next. + // For example, when the bike turns from up to right, it will show + // a track that curves to the right. + // Each 4-byte row corresponds to the initial direction of the bike, and + // each byte in that row is for the next direction of the bike in the order + // of down, up, left, right. + static const u8 bikeTireTracks_Transitions[4][4] = { + 1, 2, 7, 8, + 1, 2, 6, 5, + 5, 8, 3, 4, + 6, 7, 3, 4, + }; + + if (mapObj->coords2.x != mapObj->coords3.x || mapObj->coords2.y != mapObj->coords3.y) + { + gFieldEffectArguments[0] = mapObj->coords3.x; + gFieldEffectArguments[1] = mapObj->coords3.y; + gFieldEffectArguments[2] = 149; + gFieldEffectArguments[3] = 2; + gFieldEffectArguments[4] = + bikeTireTracks_Transitions[mapObj->mapobj_unk_20][mapObj->mapobj_unk_18 - 5]; + FieldEffectStart(FLDEFF_BIKE_TIRE_TRACKS); + } +} + +void GroundEffect_Ripple(struct MapObject *mapObj, struct Sprite *sprite) +{ + DoRippleFieldEffect(mapObj, sprite); +} + +void GroundEffect_StepOnPuddle(struct MapObject *mapObj, struct Sprite *sprite) +{ + oe_exec_and_other_stuff(FLDEFF_SPLASH, mapObj); +} + +void GroundEffect_SandPile(struct MapObject *mapObj, struct Sprite *sprite) +{ + oe_exec_and_other_stuff(FLDEFF_SAND_PILE, mapObj); +} + +void GroundEffect_JumpOnTallGrass(struct MapObject *mapObj, struct Sprite *sprite) +{ + u8 spriteId; + + gFieldEffectArguments[0] = mapObj->coords2.x; + gFieldEffectArguments[1] = mapObj->coords2.y; + gFieldEffectArguments[2] = mapObj->elevation; + gFieldEffectArguments[3] = 2; + FieldEffectStart(FLDEFF_JUMP_TALL_GRASS); + + spriteId = sub_8126FF0( + mapObj->localId, mapObj->mapNum, mapObj->mapGroup, mapObj->coords2.x, mapObj->coords2.y); + + if (spriteId == MAX_SPRITES) + GroundEffect_SpawnOnTallGrass(mapObj, sprite); +} + +void GroundEffect_JumpOnLongGrass(struct MapObject *mapObj, struct Sprite *sprite) +{ + gFieldEffectArguments[0] = mapObj->coords2.x; + gFieldEffectArguments[1] = mapObj->coords2.y; + gFieldEffectArguments[2] = mapObj->elevation; + gFieldEffectArguments[3] = 2; + FieldEffectStart(FLDEFF_JUMP_LONG_GRASS); +} + +void GroundEffect_JumpOnShallowWater(struct MapObject *mapObj, struct Sprite *sprite) +{ + gFieldEffectArguments[0] = mapObj->coords2.x; + gFieldEffectArguments[1] = mapObj->coords2.y; + gFieldEffectArguments[2] = mapObj->elevation; + gFieldEffectArguments[3] = sprite->oam.priority; + FieldEffectStart(FLDEFF_JUMP_SMALL_SPLASH); +} + +void GroundEffect_JumpOnWater(struct MapObject *mapObj, struct Sprite *sprite) +{ + gFieldEffectArguments[0] = mapObj->coords2.x; + gFieldEffectArguments[1] = mapObj->coords2.y; + gFieldEffectArguments[2] = mapObj->elevation; + gFieldEffectArguments[3] = sprite->oam.priority; + FieldEffectStart(FLDEFF_JUMP_BIG_SPLASH); +} + +void GroundEffect_JumpLandingDust(struct MapObject *mapObj, struct Sprite *sprite) +{ + gFieldEffectArguments[0] = mapObj->coords2.x; + gFieldEffectArguments[1] = mapObj->coords2.y; + gFieldEffectArguments[2] = mapObj->elevation; + gFieldEffectArguments[3] = sprite->oam.priority; + FieldEffectStart(FLDEFF_DUST); +} + +void GroundEffect_ShortGrass(struct MapObject *mapObj, struct Sprite *sprite) +{ + oe_exec_and_other_stuff(FLDEFF_SHORT_GRASS, mapObj); +} + +void GroundEffect_HotSprings(struct MapObject *mapObj, struct Sprite *sprite) +{ + oe_exec_and_other_stuff(FLDEFF_HOT_SPRINGS_WATER, mapObj); +} + +void GroundEffect_Seaweed(struct MapObject *mapObj, struct Sprite *sprite) +{ + gFieldEffectArguments[0] = mapObj->coords2.x; + gFieldEffectArguments[1] = mapObj->coords2.y; + FieldEffectStart(FLDEFF_BUBBLES); +} + +static void (*const gUnknown_083760A0[])(struct MapObject *mapObj, struct Sprite *sprite) = { + GroundEffect_SpawnOnTallGrass, + sub_8063E94, + sub_8063EE0, + sub_8063F2C, + GroundEffect_WaterReflection, + GroundEffect_IceReflection, + GroundEffect_FlowingWater, + sub_8063FA0, + sub_8063FCC, + GroundEffect_Ripple, + GroundEffect_StepOnPuddle, + GroundEffect_SandPile, + GroundEffect_JumpOnTallGrass, + GroundEffect_JumpOnLongGrass, + GroundEffect_JumpOnShallowWater, + GroundEffect_JumpOnWater, + GroundEffect_JumpLandingDust, + GroundEffect_ShortGrass, + GroundEffect_HotSprings, + GroundEffect_Seaweed +}; + +void sub_8064218(struct MapObject *mapObj, struct Sprite *sprite, u32 flags) +{ + u8 i; + for (i = 0; i < ARRAY_COUNT(gUnknown_083760A0); i++, flags >>= 1) + if (flags & 1) + gUnknown_083760A0[i](mapObj, sprite); +} + +void filters_out_some_ground_effects(struct MapObject *mapObj, u32 *flags) +{ + if (mapObj->mapobj_bit_4) + { + mapObj->mapobj_bit_18 = 0; + mapObj->mapobj_bit_20 = 0; + mapObj->mapobj_bit_19 = 0; + mapObj->mapobj_bit_21 = 0; + *flags &= 0xFFF9F7BD; + } +} + +void FilterOutStepOnPuddleGroundEffectIfJumping(struct MapObject *mapObj, u32 *flags) +{ + if (mapObj->mapobj_bit_5) + *flags &= 0xFFFFFBFF; +} + +void DoGroundEffects_OnSpawn(struct MapObject *mapObj, struct Sprite *sprite) +{ + u32 flags; + + if (mapObj->mapobj_bit_2) + { + flags = 0; + FieldObjectUpdateZCoordAndPriority(mapObj, sprite); + GetAllGroundEffectFlags_OnSpawn(mapObj, &flags); + FieldObjectSetSpriteOamTableForLongGrass(mapObj, sprite); + sub_8064218(mapObj, sprite, flags); + mapObj->mapobj_bit_2 = 0; + mapObj->mapobj_bit_4 = 0; + } +} + +void DoGroundEffects_OnBeginStep(struct MapObject *mapObj, struct Sprite *sprite) +{ + u32 flags; + + if (mapObj->mapobj_bit_2) + { + flags = 0; + FieldObjectUpdateZCoordAndPriority(mapObj, sprite); + GetAllGroundEffectFlags_OnBeginStep(mapObj, &flags); + FieldObjectSetSpriteOamTableForLongGrass(mapObj, sprite); + filters_out_some_ground_effects(mapObj, &flags); + sub_8064218(mapObj, sprite, flags); + mapObj->mapobj_bit_2 = 0; + mapObj->mapobj_bit_4 = 0; + } +} + +void DoGroundEffects_OnFinishStep(struct MapObject *mapObj, struct Sprite *sprite) +{ + u32 flags; + + if (mapObj->mapobj_bit_3) + { + flags = 0; + FieldObjectUpdateZCoordAndPriority(mapObj, sprite); + GetAllGroundEffectFlags_OnFinishStep(mapObj, &flags); + FieldObjectSetSpriteOamTableForLongGrass(mapObj, sprite); + FilterOutStepOnPuddleGroundEffectIfJumping(mapObj, &flags); + sub_8064218(mapObj, sprite, flags); + mapObj->mapobj_bit_3 = 0; + mapObj->mapobj_bit_5 = 0; + } +} diff --git a/src/field_map_obj.c b/src/field/field_map_obj.c similarity index 96% rename from src/field_map_obj.c rename to src/field/field_map_obj.c index d94c97ff3..0cba448a9 100644 --- a/src/field_map_obj.c +++ b/src/field/field_map_obj.c @@ -11,7 +11,7 @@ #include "fieldmap.h" #include "palette.h" #include "rng.h" -#include "rom4.h" +#include "overworld.h" #include "sprite.h" #include "metatile_behavior.h" #include "map_constants.h" @@ -1901,9 +1901,12 @@ extern void CameraObjectReset1(void); extern struct LinkPlayerMapObject gLinkPlayerMapObjects[]; extern u8 gReservedSpritePaletteCount; -extern struct Camera gUnknown_0202E844; -extern u8 gUnknown_030005A4; -extern u16 gUnknown_030005A6; +extern struct Camera gCamera; + +static u8 gUnknown_030005A4; +static u16 gUnknown_030005A6; + +struct MapObject gMapObjects[16]; void npc_clear_ids_and_state(struct MapObject *mapObj) { @@ -2459,24 +2462,24 @@ extern void sub_8064970(struct Sprite *); extern void sub_8060470(s16 *, s16 *, s16, s16); extern void InitObjectPriorityByZCoord(); -u8 sub_805B410(u8 a, u8 b, s16 c, s16 d, u8 e, u8 f) +u8 sub_805B410(u8 graphicsId, u8 b, s16 x, s16 y, u8 elevation, u8 direction) { const struct MapObjectGraphicsInfo *gfxInfo; struct SpriteTemplate spriteTemplate; const struct SubspriteTable *subspriteTables; u8 spriteId; - gfxInfo = GetFieldObjectGraphicsInfo(a); - MakeObjectTemplateFromFieldObjectGraphicsInfo(a, sub_8064970, &spriteTemplate, &subspriteTables); + gfxInfo = GetFieldObjectGraphicsInfo(graphicsId); + MakeObjectTemplateFromFieldObjectGraphicsInfo(graphicsId, sub_8064970, &spriteTemplate, &subspriteTables); #ifdef NONMATCHING spriteTemplate.paletteTag = 0xFFFF; #else *(u16 *)&spriteTemplate.paletteTag = 0xFFFF; #endif - c += 7; - d += 7; - sub_8060470(&c, &d, 8, 16); - spriteId = CreateSpriteAtEnd(&spriteTemplate, c, d, 0); + x += 7; + y += 7; + sub_8060470(&x, &y, 8, 16); + spriteId = CreateSpriteAtEnd(&spriteTemplate, x, y, 0); if (spriteId != 64) { struct Sprite *sprite = &gSprites[spriteId]; @@ -2487,7 +2490,7 @@ u8 sub_805B410(u8 a, u8 b, s16 c, s16 d, u8 e, u8 f) sprite->oam.paletteNum = gfxInfo->paletteSlot; sprite->coordOffsetEnabled = TRUE; sprite->data0 = b; - sprite->data1 = e; + sprite->data1 = elevation; if (gfxInfo->paletteSlot == 10) npc_load_two_palettes__and_record(gfxInfo->paletteTag1, gfxInfo->paletteSlot); if (subspriteTables != NULL) @@ -2495,9 +2498,9 @@ u8 sub_805B410(u8 a, u8 b, s16 c, s16 d, u8 e, u8 f) SetSubspriteTables(sprite, subspriteTables); sprite->subspriteMode = 2; } - InitObjectPriorityByZCoord(sprite, e); - SetObjectSubpriorityByZCoord(e, sprite, 1); - StartSpriteAnim(sprite, FieldObjectDirectionToImageAnimId(f)); + InitObjectPriorityByZCoord(sprite, elevation); + SetObjectSubpriorityByZCoord(elevation, sprite, 1); + StartSpriteAnim(sprite, FieldObjectDirectionToImageAnimId(direction)); } return spriteId; } @@ -2983,24 +2986,21 @@ void UpdateFieldObjectCoordsForCameraUpdate(void) s16 deltaX; s16 deltaY; -#ifndef NONMATCHING - asm(""::"r"(i)); //makes the compiler store i in r3 -#endif - - if (gUnknown_0202E844.field_0) + if (gCamera.field_0) { - for (i = 0, deltaX = gUnknown_0202E844.x, deltaY = gUnknown_0202E844.y; i < 16; i++) + deltaX = gCamera.x; + deltaY = gCamera.y; + for (i = 0; i < 16; i++) { - struct MapObject *mapObject = &gMapObjects[i]; - if (mapObject->active) + if (gMapObjects[i].active) { - mapObject->coords1.x -= deltaX; - mapObject->coords1.y -= deltaY; - mapObject->coords2.x -= deltaX; - mapObject->coords2.y -= deltaY; - mapObject->coords3.x -= deltaX; - mapObject->coords3.y -= deltaY; + gMapObjects[i].coords1.x -= deltaX; + gMapObjects[i].coords1.y -= deltaY; + gMapObjects[i].coords2.x -= deltaX; + gMapObjects[i].coords2.y -= deltaY; + gMapObjects[i].coords3.x -= deltaX; + gMapObjects[i].coords3.y -= deltaY; } } } @@ -3241,7 +3241,7 @@ struct MapObjectTemplate *GetFieldObjectTemplateByLocalIdAndMap(u8 localId, u8 m return FindFieldObjectTemplateInArrayByLocalId(localId, gSaveBlock1.mapObjectTemplates, gMapHeader.events->mapObjectCount); else { - struct MapHeader *mapHeader = get_mapheader_by_bank_and_number(mapGroup, mapNum); + struct MapHeader *mapHeader = Overworld_GetMapHeaderByGroupAndId(mapGroup, mapNum); return FindFieldObjectTemplateInArrayByLocalId(localId, mapHeader->events->mapObjects, mapHeader->events->mapObjectCount); } @@ -3881,8 +3881,6 @@ u8 sub_805D314(struct MapObject *mapObject, struct Sprite *sprite) return gUnknown_083752D0[sprite->data1](mapObject, sprite); } -extern u32 gUnknown_0202FF84[]; - u8 do_berry_tree_growth_sparkle_1(struct MapObject *mapObject, struct Sprite *sprite) { u8 berryTreeStage; @@ -3894,11 +3892,11 @@ u8 do_berry_tree_growth_sparkle_1(struct MapObject *mapObject, struct Sprite *sp { if (!(sprite->data7 & 4) && sprite->animNum == 4) { - gUnknown_0202FF84[0] = mapObject->coords2.x; - gUnknown_0202FF84[1] = mapObject->coords2.y; - gUnknown_0202FF84[2] = sprite->subpriority - 1; - gUnknown_0202FF84[3] = sprite->oam.priority; - FieldEffectStart(0x17); + gFieldEffectArguments[0] = mapObject->coords2.x; + gFieldEffectArguments[1] = mapObject->coords2.y; + gFieldEffectArguments[2] = sprite->subpriority - 1; + gFieldEffectArguments[3] = sprite->oam.priority; + FieldEffectStart(FLDEFF_BERRY_TREE_GROWTH_SPARKLE); sprite->animNum = 0; } return 0; @@ -3933,11 +3931,11 @@ u8 do_berry_tree_growth_sparkle_2(struct MapObject *mapObject, struct Sprite *sp sprite->data1 = 3; sprite->data2 = 0; sprite->data7 |= 2; - gUnknown_0202FF84[0] = mapObject->coords2.x; - gUnknown_0202FF84[1] = mapObject->coords2.y; - gUnknown_0202FF84[2] = sprite->subpriority - 1; - gUnknown_0202FF84[3] = sprite->oam.priority; - FieldEffectStart(0x17); + gFieldEffectArguments[0] = mapObject->coords2.x; + gFieldEffectArguments[1] = mapObject->coords2.y; + gFieldEffectArguments[2] = sprite->subpriority - 1; + gFieldEffectArguments[3] = sprite->oam.priority; + FieldEffectStart(FLDEFF_BERRY_TREE_GROWTH_SPARKLE); return 1; } @@ -5029,32 +5027,30 @@ u8 sub_805F3C4(struct MapObject *mapObject, struct Sprite *sprite) return 0; } -#ifdef NONMATCHING - -u8 sub_805F3EC(struct MapObject *mapObject, struct Sprite *sprite, u8 a2, u8 *a3(u8)) +bool8 sub_805F3EC(struct MapObject *mapObject, struct Sprite *sprite, u8 a2, bool8 a3(u8)) { return 0; } -u8 sub_805F3F0(struct MapObject *mapObject, struct Sprite *sprite, u8 a2, u8 *a3(u8)) +bool8 sub_805F3F0(struct MapObject *mapObject, struct Sprite *sprite, u8 a2, bool8 a3(u8)) { - int direction; - direction = state_to_direction(gUnknown_0836DC09[mapObject->animPattern], mapObject->mapobj_unk_21, a2); - FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(direction)); + FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(state_to_direction(gUnknown_0836DC09[mapObject->animPattern], mapObject->mapobj_unk_21, a2))); mapObject->mapobj_bit_1 = 1; sprite->data1 = 2; return 1; } -u8 sub_805F438(struct MapObject *mapObject, struct Sprite *sprite, u8 a2, u8 *a3(u8)) +bool8 sub_805F438(struct MapObject *mapObject, struct Sprite *sprite, u8 a2, bool8 a3(u8)) { + u32 direction; s16 x; s16 y; - int direction; - direction = state_to_direction(gUnknown_0836DC09[mapObject->animPattern], mapObject->mapobj_unk_21, a2); + + direction = a2; + direction = state_to_direction(gUnknown_0836DC09[mapObject->animPattern], mapObject->mapobj_unk_21, direction); FieldObjectMoveDestCoords(mapObject, direction, &x, &y); FieldObjectSetRegularAnim(mapObject, sprite, GetGoSpeed0AnimId(direction)); - if (!npc_block_way(mapObject, x, y, direction) || (a3 != NULL && !a3(MapGridGetMetatileBehaviorAt(x, y)))) + if (npc_block_way(mapObject, x, y, direction) || (a3 != NULL && !a3(MapGridGetMetatileBehaviorAt(x, y)))) { FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(direction)); } @@ -5062,9 +5058,115 @@ u8 sub_805F438(struct MapObject *mapObject, struct Sprite *sprite, u8 a2, u8 *a3 sprite->data1 = 2; return 1; } -#endif -asm(".section .text_fmocb2_c\n"); +bool8 sub_805F4F0(struct MapObject *mapObject, struct Sprite *sprite, u8 playerDirection, bool8 tileCB(u8)) +{ + u32 direction; + s16 x; + s16 y; + + direction = playerDirection; + direction = state_to_direction(gUnknown_0836DC09[mapObject->animPattern], mapObject->mapobj_unk_21, direction); + FieldObjectMoveDestCoords(mapObject, direction, &x, &y); + FieldObjectSetRegularAnim(mapObject, sprite, sub_8060744(direction)); + if (npc_block_way(mapObject, x, y, direction) || (tileCB != NULL && !tileCB(MapGridGetMetatileBehaviorAt(x, y)))) + { + FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(direction)); + } + mapObject->mapobj_bit_1 = TRUE; + sprite->data1 = 2; + return TRUE; +} + +bool8 sub_805F5A8(struct MapObject *mapObject, struct Sprite *sprite, u8 playerDirection, bool8 tileCB(u8)) +{ + u32 direction; + s16 x; + s16 y; + + direction = playerDirection; + direction = state_to_direction(gUnknown_0836DC09[mapObject->animPattern], mapObject->mapobj_unk_21, direction); + FieldObjectMoveDestCoords(mapObject, direction, &x, &y); + FieldObjectSetRegularAnim(mapObject, sprite, sub_806079C(direction)); + if (npc_block_way(mapObject, x, y, direction) || (tileCB != NULL && !tileCB(MapGridGetMetatileBehaviorAt(x, y)))) + { + FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(direction)); + } + mapObject->mapobj_bit_1 = TRUE; + sprite->data1 = 2; + return TRUE; +} + +bool8 sub_805F660(struct MapObject *mapObject, struct Sprite *sprite, u8 playerDirection, bool8 tileCB(u8)) +{ + u32 direction; + s16 x; + s16 y; + + direction = playerDirection; + direction = state_to_direction(gUnknown_0836DC09[mapObject->animPattern], mapObject->mapobj_unk_21, direction); + FieldObjectMoveDestCoords(mapObject, direction, &x, &y); + FieldObjectSetRegularAnim(mapObject, sprite, sub_80607C8(direction)); + if (npc_block_way(mapObject, x, y, direction) || (tileCB != NULL && !tileCB(MapGridGetMetatileBehaviorAt(x, y)))) + { + FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(direction)); + } + mapObject->mapobj_bit_1 = TRUE; + sprite->data1 = 2; + return TRUE; +} + +bool8 cph_IM_DIFFERENT(struct MapObject *mapObject, struct Sprite *sprite, u8 playerDirection, bool8 tileCB(u8)) +{ + u32 direction; + + direction = playerDirection; + direction = state_to_direction(gUnknown_0836DC09[mapObject->animPattern], mapObject->mapobj_unk_21, direction); + FieldObjectSetRegularAnim(mapObject, sprite, sub_806084C(direction)); + mapObject->mapobj_bit_1 = TRUE; + sprite->data1 = 2; + return TRUE; +} + +bool8 sub_805F760(struct MapObject *mapObject, struct Sprite *sprite, u8 playerDirection, bool8 tileCB(u8)) +{ + u32 direction; + s16 x; + s16 y; + + direction = playerDirection; + direction = state_to_direction(gUnknown_0836DC09[mapObject->animPattern], mapObject->mapobj_unk_21, direction); + FieldObjectMoveDestCoords(mapObject, direction, &x, &y); + FieldObjectSetRegularAnim(mapObject, sprite, sub_80608A4(direction)); + if (npc_block_way(mapObject, x, y, direction) || (tileCB != NULL && !tileCB(MapGridGetMetatileBehaviorAt(x, y)))) + { + FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(direction)); + } + mapObject->mapobj_bit_1 = TRUE; + sprite->data1 = 2; + return TRUE; +} + +bool8 oac_hopping(struct MapObject *mapObject, struct Sprite *sprite, u8 playerDirection, bool8 tileCB(u8)) +{ + u32 direction; + s16 x; + s16 y; + + direction = playerDirection; + direction = state_to_direction(gUnknown_0836DC09[mapObject->animPattern], mapObject->mapobj_unk_21, direction); + x = mapObject->coords2.x; + y = mapObject->coords2.y; + sub_8060320(direction, &x, &y, 2, 2); + FieldObjectSetRegularAnim(mapObject, sprite, GetJumpLedgeAnimId(direction)); + if (npc_block_way(mapObject, x, y, direction) || (tileCB != NULL && !tileCB(MapGridGetMetatileBehaviorAt(x, y)))) + { + FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(direction)); + } + mapObject->mapobj_bit_1 = TRUE; + sprite->data1 = 2; + return TRUE; +} fieldmap_object_cb(sub_805F8E0, sub_805F904, gUnknown_083755C0); @@ -5085,8 +5187,8 @@ void FieldObjectCB_TreeDisguise(struct Sprite *sprite) mapObject = &gMapObjects[sprite->data0]; if (mapObject->mapobj_unk_21 == 0 || (mapObject->mapobj_unk_21 == 1 && sprite->data7 == 0)) { - FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gUnknown_0202FF84[0], (u8 *)&gUnknown_0202FF84[1], (u8 *)&gUnknown_0202FF84[2]); - mapObject->mapobj_unk_1A = FieldEffectStart(0x1c); + FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gFieldEffectArguments[0], (u8 *)&gFieldEffectArguments[1], (u8 *)&gFieldEffectArguments[2]); + mapObject->mapobj_unk_1A = FieldEffectStart(FLDEFF_TREE_DISGUISE); mapObject->mapobj_unk_21 = 1; sprite->data7 ++; } @@ -5105,8 +5207,8 @@ void FieldObjectCB_MountainDisguise(struct Sprite *sprite) mapObject = &gMapObjects[sprite->data0]; if (mapObject->mapobj_unk_21 == 0 || (mapObject->mapobj_unk_21 == 1 && sprite->data7 == 0)) { - FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gUnknown_0202FF84[0], (u8 *)&gUnknown_0202FF84[1], (u8 *)&gUnknown_0202FF84[2]); - mapObject->mapobj_unk_1A = FieldEffectStart(0x1d); + FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gFieldEffectArguments[0], (u8 *)&gFieldEffectArguments[1], (u8 *)&gFieldEffectArguments[2]); + mapObject->mapobj_unk_1A = FieldEffectStart(FLDEFF_MOUNTAIN_DISGUISE); mapObject->mapobj_unk_21 = 1; sprite->data7 ++; } @@ -5363,53 +5465,38 @@ u8 sub_805FF20(struct MapObject *mapObject, u8 direction) } bool8 IsCoordOutsideFieldObjectMovementRect(struct MapObject2 *mapObject, s16 x, s16 y); -bool8 CheckForCollisionBetweenFieldObjects(struct MapObject *mapObject, s16 x, s16 y); +static bool8 DoesObjectCollideWithObjectAt(struct MapObject *mapObject, s16 x, s16 y); bool8 IsMetatileDirectionallyImpassable(struct MapObject *mapObject, s16 x, s16 y, u8 direction); -u8 npc_block_way(struct MapObject *mapObject, s16 x, s16 y, u8 direction) +u8 npc_block_way(struct MapObject *mapObject, s16 x, s16 y, u32 dirn) { + u8 direction; + direction = dirn; if (IsCoordOutsideFieldObjectMovementRect((struct MapObject2 *)mapObject, x, y)) - { return 1; - } - if (MapGridIsImpassableAt(x, y) || GetMapBorderIdAt(x, y) == -1 || IsMetatileDirectionallyImpassable(mapObject, x, y, direction)) - { + else if (MapGridIsImpassableAt(x, y) || GetMapBorderIdAt(x, y) == -1 || IsMetatileDirectionallyImpassable(mapObject, x, y, direction)) return 2; - } else if (mapObject->mapobj_bit_15 && !CanCameraMoveInDirection(direction)) - { + else if (mapObject->mapobj_bit_15 && !CanCameraMoveInDirection(direction)) return 2; - } - if (IsZCoordMismatchAt(mapObject->mapobj_unk_0B_0, x, y)) - { + else if (IsZCoordMismatchAt(mapObject->mapobj_unk_0B_0, x, y)) return 3; - } - if (CheckForCollisionBetweenFieldObjects(mapObject, x, y)) - { + else if (DoesObjectCollideWithObjectAt(mapObject, x, y)) return 4; - } return 0; } u8 sub_8060024(struct MapObject *mapObject, s16 x, s16 y, u8 direction) { - u8 flags; - flags = 0; + u8 flags = 0; + if (IsCoordOutsideFieldObjectMovementRect((struct MapObject2 *)mapObject, x, y)) - { flags |= 1; - } if (MapGridIsImpassableAt(x, y) || GetMapBorderIdAt(x, y) == -1 || IsMetatileDirectionallyImpassable(mapObject, x, y, direction) || (mapObject->mapobj_bit_15 && !CanCameraMoveInDirection(direction))) - { flags |= 2; - } if (IsZCoordMismatchAt(mapObject->mapobj_unk_0B_0, x, y)) - { flags |= 4; - } - if (CheckForCollisionBetweenFieldObjects(mapObject, x, y)) - { + if (DoesObjectCollideWithObjectAt(mapObject, x, y)) flags |= 8; - } return flags; } @@ -5417,25 +5504,22 @@ bool8 IsCoordOutsideFieldObjectMovementRect(struct MapObject2 *mapObject, s16 x, { s16 minv; s16 maxv; + if (mapObject->mapobj_unk_19 != 0) { minv = mapObject->coords1.x - (mapObject->mapobj_unk_19); maxv = mapObject->coords1.x + (mapObject->mapobj_unk_19); if (minv > x || maxv < x) - { - return 1; - } + return TRUE; } if (mapObject->mapobj_unk_19b != 0) { minv = mapObject->coords1.y - (mapObject->mapobj_unk_19b); maxv = mapObject->coords1.y + (mapObject->mapobj_unk_19b); if (minv > y || maxv < y) - { - return 1; - } + return TRUE; } - return 0; + return FALSE; } bool8 IsMetatileDirectionallyImpassable(struct MapObject *mapObject, s16 x, s16 y, u8 direction) @@ -5447,23 +5531,19 @@ bool8 IsMetatileDirectionallyImpassable(struct MapObject *mapObject, s16 x, s16 return 0; } -bool8 CheckForCollisionBetweenFieldObjects(struct MapObject *mapObject, s16 x, s16 y) +static bool8 DoesObjectCollideWithObjectAt(struct MapObject *mapObject, s16 x, s16 y) { - struct MapObject *mapObject2; u8 i; - for (i=0; i<16; i++) + + for (i = 0; i < 16; i++) { - mapObject2 = &gMapObjects[i]; + struct MapObject *mapObject2 = &gMapObjects[i]; + if (mapObject2->active && mapObject2 != mapObject) { - if ((mapObject2->coords2.x != x || mapObject2->coords2.y != y) && (mapObject2->coords3.x != x || mapObject2->coords3.y != y)) - { - continue; - } - if (AreZCoordsCompatible(mapObject->mapobj_unk_0B_0, mapObject2->mapobj_unk_0B_0)) - { - return 1; - } + if (((mapObject2->coords2.x == x && mapObject2->coords2.y == y) || (mapObject2->coords3.x == x && mapObject2->coords3.y == y)) + && AreZCoordsCompatible(mapObject->mapobj_unk_0B_0, mapObject2->mapobj_unk_0B_0)) + return TRUE; } } return 0; @@ -5503,23 +5583,26 @@ void unref_sub_80602F8(u8 direction, s16 *x, s16 *y) *y += gDirectionToVector[direction].y << 4; } -void sub_8060320(u8 direction, s16 *x, s16 *y, s16 deltaX, s16 deltaY) +void sub_8060320(u32 dirn, s16 *x, s16 *y, s16 deltaX, s16 deltaY) { + u8 direction = dirn; + s16 dx2 = deltaX; + s16 dy2 = deltaY; if (gDirectionToVector[direction].x > 0) { - *x += deltaX; + *x += dx2; } if (gDirectionToVector[direction].x < 0) { - *x -= deltaX; + *x -= dx2; } if (gDirectionToVector[direction].y > 0) { - *y += deltaY; + *y += dy2; } if (gDirectionToVector[direction].y < 0) { - *y -= deltaY; + *y -= dy2; } } @@ -5586,11 +5669,12 @@ void GetFieldObjectMovingCameraOffset(s16 *x, s16 *y) } } -void FieldObjectMoveDestCoords(struct MapObject *mapObject, u8 direction, s16 *x, s16 *y) +void FieldObjectMoveDestCoords(struct MapObject *mapObject, u32 direction, s16 *x, s16 *y) { + u8 newDirn = direction; *x = mapObject->coords2.x; *y = mapObject->coords2.y; - MoveCoords(direction, x, y); + MoveCoords(newDirn, x, y); } bool8 FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(struct MapObject *mapObject) @@ -5704,193 +5788,34 @@ void meta_step(struct MapObject *mapObject, struct Sprite *sprite, u8 (*callback FieldObjectUpdateSubpriority(mapObject, sprite); } - -u8 GetFaceDirectionAnimId(u8 index) -{ - u8 directions[5]; - memcpy(directions, gUnknown_083756C8, 5); - if (index >= 5) - { - index = 0; - } - return directions[index]; +#define dirn_to_anim(name, table)\ +u8 name(u32 idx)\ +{\ + u8 direction;\ + u8 animIds[sizeof(table)];\ + direction = idx;\ + memcpy(animIds, (table), sizeof(table));\ + if (direction > DIR_EAST) direction = 0;\ + return animIds[direction];\ } -u8 GetSimpleGoAnimId(u8 index) -{ - u8 directions[5]; - memcpy(directions, gUnknown_083756CD, 5); - if (index >= 5) - { - index = 0; - } - return directions[index]; -} - -u8 GetGoSpeed0AnimId(u8 index) -{ - u8 directions[5]; - memcpy(directions, gUnknown_083756D2, 5); - if (index >= 5) - { - index = 0; - } - return directions[index]; -} - -u8 sub_8060744(u8 index) -{ - u8 directions[5]; - memcpy(directions, gUnknown_083756D7, 5); - if (index >= 5) - { - index = 0; - } - return directions[index]; -} - -u8 d2s_08064034(u8 index) -{ - u8 directions[5]; - memcpy(directions, gUnknown_083756DC, 5); - if (index >= 5) - { - index = 0; - } - return directions[index]; -} - -u8 sub_806079C(u8 index) -{ - u8 directions[5]; - memcpy(directions, gUnknown_083756E1, 5); - if (index >= 5) - { - index = 0; - } - return directions[index]; -} - -u8 sub_80607C8(u8 index) -{ - u8 directions[5]; - memcpy(directions, gUnknown_083756E6, 5); - if (index >= 5) - { - index = 0; - } - return directions[index]; -} - -u8 sub_80607F4(u8 index) -{ - u8 directions[5]; - memcpy(directions, gUnknown_083756EB, 5); - if (index >= 5) - { - index = 0; - } - return directions[index]; -} - -u8 GetJumpLedgeAnimId(u8 index) -{ - u8 directions[5]; - memcpy(directions, gUnknown_083756F0, 5); - if (index >= 5) - { - index = 0; - } - return directions[index]; -} - -u8 sub_806084C(u8 index) -{ - u8 directions[5]; - memcpy(directions, gUnknown_083756F5, 5); - if (index >= 5) - { - index = 0; - } - return directions[index]; -} - -u8 sub_8060878(u8 index) -{ - u8 directions[5]; - memcpy(directions, gUnknown_083756FA, 5); - if (index >= 5) - { - index = 0; - } - return directions[index]; -} - -u8 sub_80608A4(u8 index) -{ - u8 directions[5]; - memcpy(directions, gUnknown_083756FF, 5); - if (index >= 5) - { - index = 0; - } - return directions[index]; -} - -u8 sub_80608D0(u8 index) -{ - u8 directions[5]; - memcpy(directions, gUnknown_08375704, 5); - if (index >= 5) - { - index = 0; - } - return directions[index]; -} - -u8 GetStepInPlaceDelay32AnimId(u8 index) -{ - u8 directions[5]; - memcpy(directions, gUnknown_08375709, 5); - if (index >= 5) - { - index = 0; - } - return directions[index]; -} - -u8 GetStepInPlaceDelay16AnimId(u8 index) -{ - u8 directions[5]; - memcpy(directions, gUnknown_0837570E, 5); - if (index >= 5) - { - index = 0; - } - return directions[index]; -} - -u8 GetStepInPlaceDelay8AnimId(u8 index) -{ - u8 directions[5]; - memcpy(directions, gUnknown_08375713, 5); - if (index >= 5) - { - index = 0; - } - return directions[index]; -} - -u8 GetStepInPlaceDelay4AnimId(u8 index) -{ - u8 directions[5]; - memcpy(directions, gUnknown_08375718, 5); - if (index >= 5) - { - index = 0; - } - return directions[index]; -} +dirn_to_anim(GetFaceDirectionAnimId, gUnknown_083756C8) +dirn_to_anim(GetSimpleGoAnimId, gUnknown_083756CD) +dirn_to_anim(GetGoSpeed0AnimId, gUnknown_083756D2) +dirn_to_anim(sub_8060744, gUnknown_083756D7) +dirn_to_anim(d2s_08064034, gUnknown_083756DC) +dirn_to_anim(sub_806079C, gUnknown_083756E1) +dirn_to_anim(sub_80607C8, gUnknown_083756E6) +dirn_to_anim(sub_80607F4, gUnknown_083756EB) +dirn_to_anim(GetJumpLedgeAnimId, gUnknown_083756F0) +dirn_to_anim(sub_806084C, gUnknown_083756F5) +dirn_to_anim(sub_8060878, gUnknown_083756FA) +dirn_to_anim(sub_80608A4, gUnknown_083756FF) +dirn_to_anim(sub_80608D0, gUnknown_08375704) +dirn_to_anim(GetStepInPlaceDelay32AnimId, gUnknown_08375709) +dirn_to_anim(GetStepInPlaceDelay16AnimId, gUnknown_0837570E) +dirn_to_anim(GetStepInPlaceDelay8AnimId, gUnknown_08375713) +dirn_to_anim(GetStepInPlaceDelay4AnimId, gUnknown_08375718) u8 FieldObjectFaceOppositeDirection(struct MapObject *mapObject, u8 direction) { @@ -6018,65 +5943,23 @@ u8 GetOppositeDirection(u8 direction) return directions[direction - 1]; } -int zffu_offset_calc(u8 a0, u8 a1) +u32 zffu_offset_calc(u8 a0, u8 a1) { return gUnknown_08375757[a0 - 1][a1 - 1]; } -#ifdef NONMATCHING -int state_to_direction(u8 a0, u8 a1, u8 a2) +u32 state_to_direction(u8 a0, u32 a1, u32 a2) { - int zffuOffset; - asm_comment("For some reason, r2 is being backed up to r3 and restored ahead of the zffu call."); - if (a1 == 0 || a2 == 0 || a1 > 4 || a2 > 4) + u32 zffuOffset; + u8 a1_2 = a1; + u8 a2_2 = a2; + if (a1_2 == 0 || a2_2 == 0 || a1_2 > DIR_EAST || a2_2 > DIR_EAST) { return 0; } - zffuOffset = zffu_offset_calc(a1, a2); + zffuOffset = zffu_offset_calc(a1_2, a2); return gUnknown_08375767[a0 - 1][zffuOffset - 1]; } -#else -__attribute__((naked)) -int state_to_direction(u8 a0, u8 a1, u8 a2) -{ - asm(".syntax unified\n\ - push {r4,lr}\n\ - lsls r0, 24\n\ - lsrs r4, r0, 24\n\ - lsls r1, 24\n\ - lsrs r1, 24\n\ - adds r0, r1, 0\n\ - lsls r2, 24\n\ - lsrs r2, 24\n\ - cmp r1, 0\n\ - beq _08060BFC\n\ - cmp r2, 0\n\ - beq _08060BFC\n\ - cmp r1, 0x4\n\ - bhi _08060BFC\n\ - cmp r2, 0x4\n\ - bls _08060C00\n\ -_08060BFC:\n\ - movs r0, 0\n\ - b _08060C12\n\ -_08060C00:\n\ - adds r1, r2, 0\n\ - bl zffu_offset_calc\n\ - ldr r2, _08060C18 @ =gUnknown_08375767\n\ - lsls r1, r4, 2\n\ - subs r1, 0x5\n\ - adds r0, r1\n\ - adds r0, r2\n\ - ldrb r0, [r0]\n\ -_08060C12:\n\ - pop {r4}\n\ - pop {r1}\n\ - bx r1\n\ - .align 2, 0\n\ -_08060C18: .4byte gUnknown_08375767\n\ -.syntax divided\n"); -} -#endif void FieldObjectExecSpecialAnim(struct MapObject *mapObject, struct Sprite *sprite) { @@ -7489,24 +7372,24 @@ bool8 sub_8062644(struct MapObject *mapObject, struct Sprite *sprite) bool8 do_exclamation_mark_bubble_1(struct MapObject *mapObject, struct Sprite *sprite) { - FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gUnknown_0202FF84[0], (u8 *)&gUnknown_0202FF84[1], (u8 *)&gUnknown_0202FF84[2]); - FieldEffectStart(0x0); + FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gFieldEffectArguments[0], (u8 *)&gFieldEffectArguments[1], (u8 *)&gFieldEffectArguments[2]); + FieldEffectStart(FLDEFF_EXCLAMATION_MARK_ICON_1); sprite->data2 = 1; return TRUE; } bool8 do_exclamation_mark_bubble_2(struct MapObject *mapObject, struct Sprite *sprite) { - FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gUnknown_0202FF84[0], (u8 *)&gUnknown_0202FF84[1], (u8 *)&gUnknown_0202FF84[2]); - FieldEffectStart(0x21); + FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gFieldEffectArguments[0], (u8 *)&gFieldEffectArguments[1], (u8 *)&gFieldEffectArguments[2]); + FieldEffectStart(FLDEFF_EXCLAMATION_MARK_ICON_2); sprite->data2 = 1; return TRUE; } bool8 do_heart_bubble(struct MapObject *mapObject, struct Sprite *sprite) { - FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gUnknown_0202FF84[0], (u8 *)&gUnknown_0202FF84[1], (u8 *)&gUnknown_0202FF84[2]); - FieldEffectStart(0x2e); + FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gFieldEffectArguments[0], (u8 *)&gFieldEffectArguments[1], (u8 *)&gFieldEffectArguments[2]); + FieldEffectStart(FLDEFF_HEART_ICON); sprite->data2 = 1; return TRUE; } @@ -8302,12 +8185,12 @@ void sub_80634A0(struct MapObject *mapObject, struct Sprite *sprite) } void sub_80634E8(struct MapObject *, struct Sprite *); -void npc_update_obj_anim_flag(struct MapObject *, struct Sprite *); +static void UpdateMapObjSpriteVisibility(struct MapObject *, struct Sprite *); void sub_80634D0(struct MapObject *mapObject, struct Sprite *sprite) { sub_80634E8(mapObject, sprite); - npc_update_obj_anim_flag(mapObject, sprite); + UpdateMapObjSpriteVisibility(mapObject, sprite); } #ifdef NONMATCHING @@ -8463,7 +8346,7 @@ _080635C0:\n\ } #endif -void npc_update_obj_anim_flag(struct MapObject *mapObject, struct Sprite *sprite) +void UpdateMapObjSpriteVisibility(struct MapObject *mapObject, struct Sprite *sprite) { sprite->invisible = 0; if (mapObject->mapobj_bit_13 || mapObject->mapobj_bit_14) diff --git a/src/field_map_obj_helpers.c b/src/field/field_map_obj_helpers.c similarity index 93% rename from src/field_map_obj_helpers.c rename to src/field/field_map_obj_helpers.c index 17584c96a..b453d3794 100644 --- a/src/field_map_obj_helpers.c +++ b/src/field/field_map_obj_helpers.c @@ -7,8 +7,6 @@ typedef void (*SpriteStepFunc)(struct Sprite *sprite, u8 dir); -extern u32 gUnknown_0202FF84[]; - extern s16 gUnknown_08376194[]; extern SpriteStepFunc *gUnknown_08376180[]; extern s8 *gUnknown_083761D0[]; @@ -34,7 +32,7 @@ bool8 FreezeMapObject(struct MapObject *mapObject) } } -void FreezeMapObjects() +void FreezeMapObjects(void) { u8 i; for (i = 0; i < 16; i++) @@ -296,7 +294,7 @@ void sub_8064990(u8 a1, u8 dir) u32 oe_exec_and_other_stuff(u8 fieldEffectId, struct MapObject *mapObject) { - FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gUnknown_0202FF84[0], (u8 *)&gUnknown_0202FF84[1], (u8 *)&gUnknown_0202FF84[2]); + FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gFieldEffectArguments[0], (u8 *)&gFieldEffectArguments[1], (u8 *)&gFieldEffectArguments[2]); return FieldEffectStart(fieldEffectId); } @@ -305,16 +303,16 @@ void DoShadowFieldEffect(struct MapObject *mapObject) if (!mapObject->mapobj_bit_22) { mapObject->mapobj_bit_22 = 1; - oe_exec_and_other_stuff(3, mapObject); + oe_exec_and_other_stuff(FLDEFF_SHADOW, mapObject); } } void DoRippleFieldEffect(struct MapObject *mapObject, struct Sprite *sprite) { const struct MapObjectGraphicsInfo *gfxInfo = GetFieldObjectGraphicsInfo(mapObject->graphicsId); - gUnknown_0202FF84[0] = sprite->pos1.x; - gUnknown_0202FF84[1] = sprite->pos1.y + (gfxInfo->height >> 1) - 2; - gUnknown_0202FF84[2] = 151; - gUnknown_0202FF84[3] = 3; - FieldEffectStart(5); + gFieldEffectArguments[0] = sprite->pos1.x; + gFieldEffectArguments[1] = sprite->pos1.y + (gfxInfo->height >> 1) - 2; + gFieldEffectArguments[2] = 151; + gFieldEffectArguments[3] = 3; + FieldEffectStart(FLDEFF_RIPPLE); } diff --git a/src/field_message_box.c b/src/field/field_message_box.c similarity index 98% rename from src/field_message_box.c rename to src/field/field_message_box.c index 2cd2e66ab..35aac7ac9 100644 --- a/src/field_message_box.c +++ b/src/field/field_message_box.c @@ -6,7 +6,7 @@ #include "text.h" #include "text_window.h" -extern struct Window gFieldMessageBoxWindow; +static EWRAM_DATA struct Window gFieldMessageBoxWindow = {0}; static u8 sMessageBoxMode; diff --git a/src/field_player_avatar.c b/src/field/field_player_avatar.c similarity index 88% rename from src/field_player_avatar.c rename to src/field/field_player_avatar.c index 3cdb45584..6c1c9123a 100644 --- a/src/field_player_avatar.c +++ b/src/field/field_player_avatar.c @@ -14,7 +14,7 @@ #include "metatile_behavior.h" #include "party_menu.h" #include "rng.h" -#include "rom4.h" +#include "overworld.h" #include "rotating_gate.h" #include "script.h" #include "songs.h" @@ -24,7 +24,7 @@ #include "tv.h" #include "wild_encounter.h" -extern u32 gUnknown_0202FF84[]; +EWRAM_DATA struct PlayerAvatar gPlayerAvatar = {0}; //Functions static bool8 sub_8058854(struct MapObject *, u8); @@ -666,10 +666,10 @@ void PlayerAvatarTransition_Surfing(struct MapObject *a) sub_805B980(a, GetPlayerAvatarGraphicsIdByStateId(3)); FieldObjectTurn(a, a->placeholder18); SetPlayerAvatarStateMask(8); - gUnknown_0202FF84[0] = a->coords2.x; - gUnknown_0202FF84[1] = a->coords2.y; - gUnknown_0202FF84[2] = gPlayerAvatar.mapObjectId; - unk = FieldEffectStart(8); + gFieldEffectArguments[0] = a->coords2.x; + gFieldEffectArguments[1] = a->coords2.y; + gFieldEffectArguments[2] = gPlayerAvatar.mapObjectId; + unk = FieldEffectStart(FLDEFF_SURF_BLOB); a->mapobj_unk_1A = unk; sub_8127ED0(unk, 1); } @@ -1224,13 +1224,13 @@ u8 sub_8059EA4(struct Task *task, struct MapObject *b, struct MapObject *c) { FieldObjectClearAnimIfSpecialAnimFinished(b); FieldObjectClearAnimIfSpecialAnimFinished(c); - FieldObjectSetSpecialAnim(b, GetStepInPlaceDelay16AnimId(task->data[2])); - FieldObjectSetSpecialAnim(c, GetSimpleGoAnimId(task->data[2])); - gUnknown_0202FF84[0] = c->coords2.x; - gUnknown_0202FF84[1] = c->coords2.y; - gUnknown_0202FF84[2] = c->elevation; - gUnknown_0202FF84[3] = gSprites[c->spriteId].oam.priority; - FieldEffectStart(10); + FieldObjectSetSpecialAnim(b, GetStepInPlaceDelay16AnimId((u8)task->data[2])); + FieldObjectSetSpecialAnim(c, GetSimpleGoAnimId((u8)task->data[2])); + gFieldEffectArguments[0] = c->coords2.x; + gFieldEffectArguments[1] = c->coords2.y; + gFieldEffectArguments[2] = c->elevation; + gFieldEffectArguments[3] = gSprites[c->spriteId].oam.priority; + FieldEffectStart(FLDEFF_DUST); PlaySE(SE_W070); task->data[0]++; } @@ -1365,8 +1365,8 @@ void sub_805A20C(u8 a) u8 taskId; ScriptContext2_Enable(); - sav1_reset_battle_music_maybe(); - sub_8053F84(); + Overworld_ClearSavedMusic(); + Overworld_ChangeMusicToDefault(); gPlayerAvatar.flags &= ~PLAYER_AVATAR_FLAG_SURFING; gPlayerAvatar.flags |= PLAYER_AVATAR_FLAG_ON_FOOT; gPlayerAvatar.unk6 = 1; @@ -1385,7 +1385,7 @@ static void taskFF_0805D1D4(u8 taskId) return; } sub_8127ED0(playerMapObj->mapobj_unk_1A, 2); - FieldObjectSetSpecialAnim(playerMapObj, sub_80608D0(gTasks[taskId].data[0])); + FieldObjectSetSpecialAnim(playerMapObj, sub_80608D0((u8)gTasks[taskId].data[0])); gTasks[taskId].func = sub_805A2D0; } @@ -1406,7 +1406,7 @@ static void sub_805A2D0(u8 taskId) /* Fishing */ -static u8 (*const gUnknown_0830FCB4[])(struct Task *) = +static u8 (*const sFishingStateFuncs[])(struct Task *) = { Fishing1, Fishing2, @@ -1429,17 +1429,33 @@ static u8 (*const gUnknown_0830FCB4[])(struct Task *) = static void Task_Fishing(u8 taskId); static void sub_805A954(void); -void StartFishing(u8 a) +#define tStep data[0] +#define tFrameCounter data[1] +#define tNumDots data[2] +#define tDotsRequired data[3] +#define tRoundsPlayed data[12] +#define tMinRoundsRequired data[13] +#define tPlayerGfxId data[14] +#define tFishingRod data[15] + +#define FISHING_START_ROUND 3 +#define FISHING_GOT_BITE 6 +#define FISHING_ON_HOOK 9 +#define FISHING_NO_BITE 11 +#define FISHING_GOT_AWAY 12 +#define FISHING_SHOW_RESULT 13 + +void StartFishing(u8 rod) { u8 taskId = CreateTask(Task_Fishing, 0xFF); - gTasks[taskId].data[15] = a; + gTasks[taskId].tFishingRod = rod; Task_Fishing(taskId); } static void Task_Fishing(u8 taskId) { - while (gUnknown_0830FCB4[gTasks[taskId].data[0]](&gTasks[taskId])) + while (sFishingStateFuncs[gTasks[taskId].tStep](&gTasks[taskId])) ; } @@ -1447,7 +1463,7 @@ u8 Fishing1(struct Task *task) { ScriptContext2_Enable(); gPlayerAvatar.unk6 = 1; - task->data[0]++; + task->tStep++; return 0; } @@ -1457,23 +1473,25 @@ u8 Fishing2(struct Task *task) const s16 arr1[] = {1, 1, 1}; const s16 arr2[] = {1, 3, 6}; - task->data[12] = 0; - task->data[13] = arr1[task->data[15]] + (Random() % arr2[task->data[15]]); - task->data[14] = gMapObjects[gPlayerAvatar.mapObjectId].graphicsId; + task->tRoundsPlayed = 0; + task->tMinRoundsRequired = arr1[task->tFishingRod] + (Random() % arr2[task->tFishingRod]); + task->tPlayerGfxId = gMapObjects[gPlayerAvatar.mapObjectId].graphicsId; playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId]; FieldObjectClearAnimIfSpecialAnimActive(playerMapObj); playerMapObj->mapobj_bit_11 = 1; sub_8059C3C(playerMapObj->mapobj_unk_18); - task->data[0]++; + task->tStep++; return 0; } u8 Fishing3(struct Task *task) { sub_805A954(); - task->data[1]++; - if (task->data[1] > 0x3B) - task->data[0]++; + + // Wait one second before starting dot game + task->tFrameCounter++; + if (task->tFrameCounter >= 60) + task->tStep++; return 0; } @@ -1482,87 +1500,92 @@ u8 Fishing4(struct Task *task) u32 randVal; MenuDisplayMessageBox(); - task->data[0]++; - task->data[1] = 0; - task->data[2] = 0; + task->tStep++; + task->tFrameCounter = 0; + task->tNumDots = 0; randVal = Random(); randVal %= 10; - task->data[3] = randVal + 1; - if (task->data[12] == 0) - task->data[3] = randVal + 4; - if (task->data[3] > 9) - task->data[3] = 10; + task->tDotsRequired = randVal + 1; + if (task->tRoundsPlayed == 0) + task->tDotsRequired = randVal + 4; + if (task->tDotsRequired >= 10) + task->tDotsRequired = 10; return 1; } +// Play a round of the dot game u8 Fishing5(struct Task *task) { const u8 dot[] = _("·"); sub_805A954(); - task->data[1]++; + task->tFrameCounter++; if (gMain.newKeys & A_BUTTON) { - task->data[0] = 11; - if (task->data[12] != 0) - task->data[0] = 12; + task->tStep = FISHING_NO_BITE; + if (task->tRoundsPlayed != 0) + task->tStep = FISHING_GOT_AWAY; return 1; } else { - if (task->data[1] > 0x13) + if (task->tFrameCounter >= 20) { - task->data[1] = 0; - if (task->data[2] >= task->data[3]) + task->tFrameCounter = 0; + if (task->tNumDots >= task->tDotsRequired) { - task->data[0]++; - if (task->data[12] != 0) - task->data[0]++; - task->data[12]++; + task->tStep++; + if (task->tRoundsPlayed != 0) + task->tStep++; + task->tRoundsPlayed++; } else { - MenuPrint(dot, task->data[2] + 4, 15); - task->data[2]++; + MenuPrint(dot, task->tNumDots + 4, 15); + task->tNumDots++; } } return 0; } } +// Determine if fish bites u8 Fishing6(struct Task *task) { sub_805A954(); - task->data[0]++; - if (!GetFishingWildMonListHeader() || (Random() & 1)) - task->data[0] = 11; + task->tStep++; + if (!DoesCurrentMapHaveFishingMons() || (Random() & 1)) + task->tStep = FISHING_NO_BITE; else StartSpriteAnim(&gSprites[gPlayerAvatar.spriteId], sub_805FE08(player_get_direction_lower_nybble())); return 1; } +// Oh! A Bite! u8 Fishing7(struct Task *task) { sub_805A954(); MenuPrint(gOtherText_OhABite, 4, 17); - task->data[0]++; - task->data[1] = 0; + task->tStep++; + task->tFrameCounter = 0; return 0; } +// We have a bite. Now, wait for the player to press A, or the timer to expire. u8 Fishing8(struct Task *task) { - const s16 arr[3] = {36, 33, 30}; + const s16 reelTimeouts[3] = {36, 33, 30}; sub_805A954(); - task->data[1]++; - if (task->data[1] >= arr[task->data[15]]) - task->data[0] = 12; + task->tFrameCounter++; + if (task->tFrameCounter >= reelTimeouts[task->tFishingRod]) + task->tStep = FISHING_GOT_AWAY; else if (gMain.newKeys & A_BUTTON) - task->data[0]++; + task->tStep++; return 0; } +// Determine if we're going to play the dot game again u8 Fishing9(struct Task *task) { const s16 arr[][2] = @@ -1573,17 +1596,18 @@ u8 Fishing9(struct Task *task) }; sub_805A954(); - task->data[0]++; - if (task->data[12] < task->data[13]) + task->tStep++; + if (task->tRoundsPlayed < task->tMinRoundsRequired) { - task->data[0] = 3; + task->tStep = FISHING_START_ROUND; } - else if (task->data[12] < 2) + else if (task->tRoundsPlayed < 2) { - s16 randVal = Random() % 100; + // probability of having to play another round + s16 probability = Random() % 100; - if (arr[task->data[15]][task->data[12]] > randVal) - task->data[0] = 3; + if (arr[task->tFishingRod][task->tRoundsPlayed] > probability) + task->tStep = FISHING_START_ROUND; } return 0; } @@ -1591,72 +1615,73 @@ u8 Fishing9(struct Task *task) u8 Fishing10(struct Task *task) { sub_805A954(); - sub_8072044(gOtherText_PokeOnHook); + MenuPrintMessageDefaultCoords(gOtherText_PokeOnHook); MenuDisplayMessageBox(); - task->data[0]++; - task->data[1] = 0; + task->tStep++; + task->tFrameCounter = 0; return 0; } u8 Fishing11(struct Task *task) { - if (task->data[1] == 0) - { + if (task->tFrameCounter == 0) sub_805A954(); - if (task->data[1] == 0) - { - if (MenuUpdateWindowText()) - { - struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId]; - sub_805B980(playerMapObj, task->data[14]); - FieldObjectTurn(playerMapObj, playerMapObj->placeholder18); - if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_SURFING) - sub_8127F28(gMapObjects[gPlayerAvatar.mapObjectId].mapobj_unk_1A, 0, 0); - gSprites[gPlayerAvatar.spriteId].pos2.x = 0; - gSprites[gPlayerAvatar.spriteId].pos2.y = 0; - MenuZeroFillScreen(); - task->data[1]++; - return 0; - } - else - { - if (task->data[1] == 0) - return 0; - } + if (task->tFrameCounter == 0) + { + if (MenuUpdateWindowText()) + { + struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId]; + + sub_805B980(playerMapObj, task->tPlayerGfxId); + FieldObjectTurn(playerMapObj, playerMapObj->placeholder18); + if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_SURFING) + sub_8127F28(gMapObjects[gPlayerAvatar.mapObjectId].mapobj_unk_1A, 0, 0); + gSprites[gPlayerAvatar.spriteId].pos2.x = 0; + gSprites[gPlayerAvatar.spriteId].pos2.y = 0; + MenuZeroFillScreen(); + task->tFrameCounter++; + return 0; } } - gPlayerAvatar.unk6 = 0; - ScriptContext2_Disable(); - FishingWildEncounter(task->data[15]); - sub_80BE97C(1); - DestroyTask(FindTaskIdByFunc(Task_Fishing)); + + if (task->tFrameCounter != 0) + { + gPlayerAvatar.unk6 = 0; + ScriptContext2_Disable(); + FishingWildEncounter(task->tFishingRod); + sub_80BE97C(1); + DestroyTask(FindTaskIdByFunc(Task_Fishing)); + } return 0; } +// Not even a nibble u8 Fishing12(struct Task *task) { sub_805A954(); StartSpriteAnim(&gSprites[gPlayerAvatar.spriteId], sub_805FDF8(player_get_direction_lower_nybble())); - sub_8072044(gOtherText_NotEvenANibble); - task->data[0] = 13; + MenuPrintMessageDefaultCoords(gOtherText_NotEvenANibble); + task->tStep = FISHING_SHOW_RESULT; return 1; } +// It got away u8 Fishing13(struct Task *task) { sub_805A954(); StartSpriteAnim(&gSprites[gPlayerAvatar.spriteId], sub_805FDF8(player_get_direction_lower_nybble())); - sub_8072044(gOtherText_ItGotAway); - task->data[0]++; + MenuPrintMessageDefaultCoords(gOtherText_ItGotAway); + task->tStep++; return 1; } +// Display the message u8 Fishing14(struct Task *task) { sub_805A954(); MenuDisplayMessageBox(); - task->data[0]++; + task->tStep++; return 0; } @@ -1667,13 +1692,13 @@ u8 Fishing15(struct Task *task) { struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId]; - sub_805B980(playerMapObj, task->data[14]); + sub_805B980(playerMapObj, task->tPlayerGfxId); FieldObjectTurn(playerMapObj, playerMapObj->placeholder18); if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_SURFING) sub_8127F28(gMapObjects[gPlayerAvatar.mapObjectId].mapobj_unk_1A, 0, 0); gSprites[gPlayerAvatar.spriteId].pos2.x = 0; gSprites[gPlayerAvatar.spriteId].pos2.y = 0; - task->data[0]++; + task->tStep++; } return 0; } @@ -1692,6 +1717,10 @@ u8 Fishing16(struct Task *task) return 0; } +#undef tStep +#undef tFrameCounter +#undef tFishingRod + static void sub_805A954(void) { struct Sprite *playerSprite = &gSprites[gPlayerAvatar.spriteId]; diff --git a/src/field_poison.c b/src/field/field_poison.c similarity index 99% rename from src/field_poison.c rename to src/field/field_poison.c index 8c9e029e1..1244b9c62 100644 --- a/src/field_poison.c +++ b/src/field/field_poison.c @@ -108,7 +108,7 @@ void ExecuteWhiteOut(void) ScriptContext1_Stop(); } -s32 overworld_poison(void) +s32 DoPoisonFieldEffect(void) { struct Pokemon *pkmn = &gPlayerParty[0]; u32 numPoisoned = 0; diff --git a/src/field_region_map.c b/src/field/field_region_map.c similarity index 88% rename from src/field_region_map.c rename to src/field/field_region_map.c index 58b0e37bc..7cb22e5df 100644 --- a/src/field_region_map.c +++ b/src/field/field_region_map.c @@ -19,11 +19,13 @@ struct UnkStruct { MainCallback callback; u8 filler[4]; + // This should be RegionMap, but I can't do that because it overlaps unk888. struct RegionMapStruct unk8; u16 unk888; }; -extern struct UnkStruct unk_2000000; +extern u8 ewram[]; +#define unk_2000000 (*(struct UnkStruct *)(ewram)) void FieldInitRegionMap(MainCallback callback) { @@ -46,9 +48,10 @@ void CB2_FieldInitRegionMap(void) REG_BG3VOFS = 0; ResetSpriteData(); FreeAllSpritePalettes(); - sub_80FA8EC((u32)&unk_2000000.unk8, 0); - sub_80FBCF0(0, 0); - sub_80FBB3C(1, 1); + // TODO: remove this cast + InitRegionMap((void *)&unk_2000000.unk8, 0); + CreateRegionMapPlayerIcon(0, 0); + CreateRegionMapCursor(1, 1); SetUpWindowConfig(&gWindowConfig_81E709C); InitMenuWindow(&gWindowConfig_81E709C); MenuZeroFillScreen(); @@ -107,7 +110,7 @@ void sub_813EFDC(void) case 4: if (!gPaletteFade.active) { - sub_80FAB10(); + FreeRegionMapIconResources(); SetMainCallback2(unk_2000000.callback); } break; diff --git a/src/field/field_screen_effect.c b/src/field/field_screen_effect.c new file mode 100644 index 000000000..0c76d254d --- /dev/null +++ b/src/field/field_screen_effect.c @@ -0,0 +1,341 @@ +#include "global.h" +#include "event_data.h" +#include "field_camera.h" +#include "menu.h" +#include "palette.h" +#include "overworld.h" +#include "script.h" +#include "task.h" +#include "text.h" +#include "unknown_task.h" + +struct UnknownStruct1 +{ + u8 filler0[0x14]; + u8 unk14; + u8 filler15[0xB]; +}; +extern struct UnknownStruct1 gUnknown_03004DC0; + +extern u16 gUnknown_03004DE0[][0x3C0]; + +const static u16 gUnknown_0839ACDC[] = { 0xC8, 0x48, 0x38, 0x28, 0x18, 0x0 }; + +const s32 gMaxFlashLevel = 4; + +const static struct UnknownTaskStruct gUnknown_0839ACEC = +{ + (void *)REG_ADDR_WIN0H, + ((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1, + 1 +}; + +static void sub_808136C(u16 *dest, u32 a2, s32 a3, s32 a4) +{ + if (a2 <= 0xA0) + { + if (a3 < 0) + a3 = 0; + if (a3 > 255) + a3 = 255; + if (a4 < 0) + a4 = 0; + if (a4 > 255) + a4 = 255; + dest[a2] = (a3 << 8) | a4; + } +} + +static void sub_8081398(u16 *dest, s32 a2, s32 a3, s32 a4) +{ + s32 v1 = a4; + s32 v2 = a4; + s32 v3 = 0; + while (v1 >= v3) + { + sub_808136C(dest, a3 - v3, a2 - v1, a2 + v1); + sub_808136C(dest, a3 + v3, a2 - v1, a2 + v1); + sub_808136C(dest, a3 - v1, a2 - v3, a2 + v3); + sub_808136C(dest, a3 + v1, a2 - v3, a2 + v3); + v2 -= (v3 * 2) - 1; + v3++; + if (v2 < 0) + { + v2 += 2 * (v1 - 1); + v1--; + } + } +} + +static void sub_8081424(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + + switch (data[0]) + { + case 0: + sub_8081398(&gUnknown_03004DE0[gUnknown_03004DC0.unk14][0], data[1], data[2], data[3]); + data[0] = 1; + break; + case 1: + sub_8081398(&gUnknown_03004DE0[gUnknown_03004DC0.unk14][0], data[1], data[2], data[3]); + data[0] = 0; + data[3] += data[5]; + if (data[3] > data[4]) + { + if (data[6] == 1) + { + remove_some_task(); + data[0] = 2; + } + else + { + DestroyTask(taskId); + } + } + break; + case 2: + dp12_8087EA4(); + DestroyTask(taskId); + break; + } +} + +static void sub_80814E8(u8 taskId) +{ + if (!FuncIsActiveTask(sub_8081424)) + { + EnableBothScriptContexts(); + DestroyTask(taskId); + } +} + +static void sub_8081510(void) +{ + if (!FuncIsActiveTask(sub_80814E8)) + CreateTask(sub_80814E8, 80); +} + +static u8 sub_8081534(s32 a1, s32 a2, s32 a3, s32 a4, s32 a5, u8 a6) +{ + u8 taskId = CreateTask(sub_8081424, 80); + s16 *data = gTasks[taskId].data; + + data[3] = a3; + data[4] = a4; + data[1] = a1; + data[2] = a2; + data[6] = a5; + + if (a3 < a4) + data[5] = a6; + else + data[5] = -a6; + + return taskId; +} + +void sub_8081594(u8 a1) +{ + u8 flashLevel = Overworld_GetFlashLevel(); + u8 value = 0; + if (!a1) + value = 1; + sub_8081534(120, 80, gUnknown_0839ACDC[flashLevel], gUnknown_0839ACDC[a1], value, 1); + sub_8081510(); + ScriptContext2_Enable(); +} + +void sub_80815E0(u8 a1) +{ + if (a1) + { + sub_8081398(&gUnknown_03004DE0[0][0], 120, 80, gUnknown_0839ACDC[a1]); + CpuFastSet(&gUnknown_03004DE0[0], &gUnknown_03004DE0[1], 480); + } +} + +static void sub_808161C(u8 a1) +{ + int i; + u16 color[1]; + + if (!a1) + color[0] = 0x1F; + else + color[0] = 0x7C00; + + for (i = 0; i < 16; i++) + { + LoadPalette(color, 0xF0 + i, 2); + } +} + +static bool8 sub_8081658(u16 a1) +{ + u8 lo = REG_BLDALPHA & 0xFF; + u8 hi = REG_BLDALPHA >> 8; + + if (a1) + { + if (lo) + { + lo--; + } + } + else + { + if (hi < 0x10) + { + hi++; + } + } + + REG_BLDALPHA = (hi << 8) | lo; + + if (lo == 0 && hi == 0x10) + { + return TRUE; + } + + return FALSE; +} + +static void sub_80816A8(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + + switch (data[0]) + { + case 0: + data[6] = REG_DISPCNT; + data[7] = REG_BLDCNT; + data[8] = REG_BLDALPHA; + data[9] = REG_WININ; + data[10] = REG_WINOUT; + REG_DISPCNT &= 0xBFFF; + REG_BLDCNT |= gUnknown_081E29E8[0]; + REG_BLDALPHA = 1804; + REG_WININ = 63; + REG_WINOUT = 30; + sub_8081398(&gUnknown_03004DE0[0][0], data[2], data[3], 1); + CpuFastSet(&gUnknown_03004DE0[0], &gUnknown_03004DE0[1], 480); + //sub_80895F8(gUnknown_0839ACEC[0], gUnknown_0839ACEC[1], gUnknown_0839ACEC[2]); + sub_80895F8(gUnknown_0839ACEC); + data[0] = 1; + break; + case 1: + MenuFillWindowRectWithBlankTile(0, 0, 29, 19); + sub_808161C(data[1]); + sub_8081534(data[2], data[3], 1, 160, 1, 2); + data[0] = 2; + break; + case 2: + if (!FuncIsActiveTask(sub_8081424)) + { + EnableBothScriptContexts(); + data[0] = 3; + } + break; + case 3: + InstallCameraPanAheadCallback(); + SetCameraPanningCallback(NULL); + data[5] = 0; + data[4] = 4; + data[0] = 4; + break; + case 4: + data[4]--; + if (!data[4]) + { + s32 panning; + data[4] = 4; + data[5] ^= 1; + if (data[5]) + panning = 4; + else + panning = -4; + SetCameraPanning(0, panning); + } + break; + case 6: + InstallCameraPanAheadCallback(); + data[4] = 8; + data[0] = 7; + break; + case 7: + data[4]--; + if (!data[4]) + { + data[4] = 8; + data[5] ^= 1; + if (sub_8081658(data[5]) == TRUE) + data[0] = 5; + } + break; + case 5: + MenuZeroFillWindowRect(0, 0, 29, 19); + LoadFontDefaultPalette(&gWindowConfig_81E6CE4); + REG_WIN0H = 255; + REG_DISPCNT = data[6]; + REG_BLDCNT = data[7]; + REG_BLDALPHA = data[8]; + REG_WININ = data[9]; + REG_WINOUT = data[10]; + EnableBothScriptContexts(); + DestroyTask(taskId); + break; + } +} + +void sub_80818A4(void) +{ + u8 taskId = CreateTask(sub_80816A8, 80); + s16 *data = gTasks[taskId].data; + + if (gScriptResult == 0) + { + data[1] = 0; + data[2] = 104; + } + else if (gScriptResult == 1) + { + data[1] = 1; + data[2] = 104; + } + else if (gScriptResult == 2) + { + data[1] = 0; + data[2] = 120; + } + else + { + data[1] = 1; + data[2] = 120; + } + + data[3] = 80; +} + +void sub_80818FC(void) +{ + u8 taskId = FindTaskIdByFunc(sub_80816A8); + gTasks[taskId].data[0] = 6; +} + +static void task50_0807F0C8(u8); + +void sub_8081924(void) +{ + Overworld_FadeOutMapMusic(); + CreateTask(task50_0807F0C8, 80); +} + +static void task50_0807F0C8(u8 taskId) +{ + if (sub_8054034() == TRUE) + { + DestroyTask(taskId); + EnableBothScriptContexts(); + } +} diff --git a/src/field_special_scene.c b/src/field/field_special_scene.c similarity index 94% rename from src/field_special_scene.c rename to src/field/field_special_scene.c index 82a7a13e3..d4b59c8a2 100644 --- a/src/field_special_scene.c +++ b/src/field/field_special_scene.c @@ -8,7 +8,7 @@ #include "fieldmap.h" #include "main.h" #include "palette.h" -#include "rom4.h" +#include "overworld.h" #include "script.h" #include "script_movement.h" #include "songs.h" @@ -250,7 +250,7 @@ bool8 sub_80C7754(void) } else { - warp1_set(mapGroup, mapNum, -1, x, y); + Overworld_SetWarpDestination(mapGroup, mapNum, -1, x, y); return TRUE; } } @@ -273,7 +273,7 @@ void Task_HandlePorthole(u8 taskId) case IDLE_CHECK: // idle and move. if (gMain.newKeys & A_BUTTON) data[1] = 1; - if (!sub_80A212C(0xFF, location->mapNum, location->mapGroup)) + if (!ScriptMovement_IsObjectMovementFinished(0xFF, location->mapNum, location->mapGroup)) return; if (CountSSTidalStep(1) == TRUE) { @@ -294,18 +294,18 @@ void Task_HandlePorthole(u8 taskId) // run this once. if (*var == 2) // which direction? { - exec_movement(0xFF, location->mapNum, location->mapGroup, gUnknown_083D295F); + ScriptMovement_StartObjectMovementScript(0xFF, location->mapNum, location->mapGroup, gUnknown_083D295F); data[0] = IDLE_CHECK; // run case 1. } else { - exec_movement(0xFF, location->mapNum, location->mapGroup, gUnknown_083D2961); + ScriptMovement_StartObjectMovementScript(0xFF, location->mapNum, location->mapGroup, gUnknown_083D2961); data[0] = IDLE_CHECK; // run case 1. } break; case EXIT_PORTHOLE: // exit porthole. - FlagReset(0x4001); - FlagReset(0x4000); + FlagClear(0x4001); + FlagClear(0x4000); copy_saved_warp2_bank_and_enter_x_to_warp1(0); sp13E_warp_to_last_warp(); DestroyTask(taskId); diff --git a/src/field_specials.c b/src/field/field_specials.c similarity index 97% rename from src/field_specials.c rename to src/field/field_specials.c index 2b505bbfe..36362d098 100644 --- a/src/field_specials.c +++ b/src/field/field_specials.c @@ -12,7 +12,7 @@ #include "field_player_avatar.h" #include "main.h" #include "map_constants.h" -#include "rom4.h" +#include "overworld.h" #include "script.h" #include "songs.h" #include "string_util.h" @@ -41,46 +41,64 @@ #elif GERMAN #define CHAR_DECIMAL_SEPARATOR CHAR_COMMA #endif + +extern struct WarpData gUnknown_020297F0; +extern u8 gBattleOutcome; +extern u16 gSpecialVar_0x8004; +extern u16 gSpecialVar_0x8005; +extern u16 gScriptResult; + +EWRAM_DATA u8 gUnknown_02039250 = 0; +EWRAM_DATA u8 gUnknown_02039251 = 0; +EWRAM_DATA u32 gUnknown_02039254 = 0; +EWRAM_DATA u8 gUnknown_02039258 = 0; +EWRAM_DATA u8 gUnknown_02039259 = 0; +EWRAM_DATA u8 gUnknown_0203925A = 0; +EWRAM_DATA u8 gUnknown_0203925B = 0; +EWRAM_DATA u8 gUnknown_0203925C = 0; + static void RecordCyclingRoadResults(u32, u8); -void sub_810D6A4(void) { - SetMainCallback2(sub_8145D88); +static struct ElevatorMenu gUnknown_03000760[20]; + +void ScrSpecial_ShowDiploma(void) +{ + SetMainCallback2(CB2_ShowDiploma); ScriptContext2_Enable(); } -void sub_810D6B8(void) { +void ScrSpecial_ViewWallClock(void) +{ gMain.savedCallback = c2_exit_to_overworld_2_switch; SetMainCallback2(CB2_ViewWallClock); ScriptContext2_Enable(); } -void ResetCyclingRoadChallengeData(void) { +void ResetCyclingRoadChallengeData(void) +{ gUnknown_02039250 = 0; gUnknown_02039251 = 0; gUnknown_02039254 = 0; } -void BeginCyclingRoadChallenge(void) { +void ScrSpecial_BeginCyclingRoadChallenge(void) +{ gUnknown_02039250 = 1; gUnknown_02039251 = 0; gUnknown_02039254 = gMain.vblankCounter1; } -u16 GetPlayerAvatarBike(void) { +u16 GetPlayerAvatarBike(void) +{ if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_ACRO_BIKE)) - { return 1; - } - if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_MACH_BIKE)) - { return 2; - } - return 0; } -void DetermineCyclingRoadResults(u32 arg0, u8 arg1) { +static void DetermineCyclingRoadResults(u32 arg0, u8 arg1) +{ u8 result; if (arg1 <= 99) @@ -195,7 +213,7 @@ void UpdateCyclingRoadState(void) { if (VarGet(0x40a9) == 2 || VarGet(0x40a9) == 3) { VarSet(0x40a9, 0); - sav1_set_battle_music_maybe(SE_STOP); + Overworld_SetSavedMusic(SE_STOP); } } @@ -207,7 +225,7 @@ void SetSSTidalFlag(void) void ResetSSTidalFlag(void) { - FlagReset(SYS_CRUISE_MODE); + FlagClear(SYS_CRUISE_MODE); } bool32 CountSSTidalStep(u16 delta) @@ -682,11 +700,11 @@ void CableCarWarp(void) { if (gSpecialVar_0x8004 != 0) { - warp1_set(MAP_GROUP_ROUTE112_CABLE_CAR_STATION, MAP_ID_ROUTE112_CABLE_CAR_STATION, -1, 6, 4); + Overworld_SetWarpDestination(MAP_GROUP_ROUTE112_CABLE_CAR_STATION, MAP_ID_ROUTE112_CABLE_CAR_STATION, -1, 6, 4); } else { - warp1_set(MAP_GROUP_MT_CHIMNEY_CABLE_CAR_STATION, MAP_ID_MT_CHIMNEY_CABLE_CAR_STATION, -1, 6, 4); + Overworld_SetWarpDestination(MAP_GROUP_MT_CHIMNEY_CABLE_CAR_STATION, MAP_ID_MT_CHIMNEY_CABLE_CAR_STATION, -1, 6, 4); } } @@ -1435,7 +1453,7 @@ void ResetTrickHouseEndRoomFlag(void) u16 *specVar = &gSpecialVar_0x8004; u16 flag = 0x259; *specVar = flag; - FlagReset(flag); + FlagClear(flag); } bool8 CheckLeadMonCool(void) @@ -1761,7 +1779,7 @@ u8 GetPokeblockNameByMonNature(void) void GetSecretBaseNearbyMapName(void) { - sub_80FBFB4(gStringVar1, VarGet(VAR_SECRET_BASE_MAP), 0); + GetMapSectionName(gStringVar1, VarGet(VAR_SECRET_BASE_MAP), 0); } u16 sub_810F404(void) @@ -1850,7 +1868,7 @@ void GivLeadMonEffortRibbon(void) SetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_EFFORT_RIBBON, &ribbonSet); } -bool8 GetLeadMonEVCount(void) +bool8 ScrSpecial_AreLeadMonEVsMaxedOut(void) { if (GetMonEVCount(&gPlayerParty[GetLeadMonIndex()]) >= 510) { @@ -1901,7 +1919,7 @@ bool8 IsStarterInParty(void) u8 i; u16 starter = GetStarterPokemon(VarGet(VAR_FIRST_POKE)); u8 partyCount = CalculatePlayerPartyCount(); - for (i=0; imapGroup, connection->mapNum); + return Overworld_GetMapHeaderByGroupAndId(connection->mapGroup, connection->mapNum); } void not_trainer_hill_battle_pyramid(void) @@ -711,7 +713,7 @@ bool8 CameraMove(int x, int y) unsigned int direction; struct MapConnection *connection; int old_x, old_y; - gUnknown_0202E844.field_0 = FALSE; + gCamera.field_0 = FALSE; direction = GetPostCameraMoveMapBorderId(x, y); if (direction + 1 <= 1) { @@ -726,14 +728,14 @@ bool8 CameraMove(int x, int y) connection = sub_8056A64(direction, gSaveBlock1.pos.x, gSaveBlock1.pos.y); sub_8056918(connection, direction, x, y); sub_80538F0(connection->mapGroup, connection->mapNum); - gUnknown_0202E844.field_0 = TRUE; - gUnknown_0202E844.x = old_x - gSaveBlock1.pos.x; - gUnknown_0202E844.y = old_y - gSaveBlock1.pos.y; + gCamera.field_0 = TRUE; + gCamera.x = old_x - gSaveBlock1.pos.x; + gCamera.y = old_y - gSaveBlock1.pos.y; gSaveBlock1.pos.x += x; gSaveBlock1.pos.y += y; sub_80566F0(direction); } - return gUnknown_0202E844.field_0; + return gCamera.field_0; } struct MapConnection *sub_8056A64(u8 direction, int x, int y) diff --git a/src/fldeff_cut.c b/src/field/fldeff_cut.c similarity index 91% rename from src/fldeff_cut.c rename to src/field/fldeff_cut.c index e837dbd45..00643a979 100644 --- a/src/fldeff_cut.c +++ b/src/field/fldeff_cut.c @@ -8,7 +8,7 @@ #include "metatile_behavior.h" #include "metatile_behaviors.h" #include "pokemon_menu.h" -#include "rom4.h" +#include "overworld.h" #include "rom6.h" #include "script.h" #include "songs.h" @@ -27,9 +27,8 @@ extern struct SpriteTemplate gSpriteTemplate_CutGrass; extern struct MapPosition gUnknown_0203923C; extern u8 gLastFieldPokeMenuOpened; -extern u32 gUnknown_0202FF84[]; -extern u8 UseCutScript; +extern u8 S_UseCut[]; bool8 SetUpFieldMove_Cut(void) { @@ -39,7 +38,7 @@ bool8 SetUpFieldMove_Cut(void) if(npc_before_player_of_type(0x52) == TRUE) // is in front of tree? { - gFieldCallback = sub_808AB90; + gFieldCallback = FieldCallback_Teleport; gUnknown_03005CE4 = sub_80A2634; return TRUE; } @@ -58,7 +57,7 @@ bool8 SetUpFieldMove_Cut(void) if(MetatileBehavior_IsPokeGrass(tileBehavior) == TRUE || MetatileBehavior_IsAshGrass(tileBehavior) == TRUE) { - gFieldCallback = sub_808AB90; + gFieldCallback = FieldCallback_Teleport; gUnknown_03005CE4 = sub_80A25E8; return TRUE; } @@ -71,8 +70,8 @@ bool8 SetUpFieldMove_Cut(void) void sub_80A25E8(void) { - FieldEffectStart(1); - gUnknown_0202FF84[0] = gLastFieldPokeMenuOpened; + FieldEffectStart(FLDEFF_USE_CUT_ON_GRASS); + gFieldEffectArguments[0] = gLastFieldPokeMenuOpened; } bool8 FldEff_UseCutOnGrass(void) @@ -87,8 +86,8 @@ bool8 FldEff_UseCutOnGrass(void) void sub_80A2634(void) { - gUnknown_0202FF84[0] = gLastFieldPokeMenuOpened; - ScriptContext1_SetupScript(&UseCutScript); + gFieldEffectArguments[0] = gLastFieldPokeMenuOpened; + ScriptContext1_SetupScript(S_UseCut); } bool8 FldEff_UseCutOnTree(void) @@ -103,8 +102,8 @@ bool8 FldEff_UseCutOnTree(void) void sub_80A2684(void) { - FieldEffectActiveListRemove(1); - FieldEffectStart(0x3A); + FieldEffectActiveListRemove(FLDEFF_USE_CUT_ON_GRASS); + FieldEffectStart(FLDEFF_CUT_GRASS); } bool8 FldEff_CutGrass(void) @@ -273,19 +272,16 @@ void sub_80A2AB8(void) { u8 i; - for(i = 1; i < 8; i++) - { + for (i = 1; i < 8; i++) DestroySprite(&gSprites[gCutGrassSpriteArray[i]]); - } - - FieldEffectStop(&gSprites[gCutGrassSpriteArray[0]], 0x3A); + FieldEffectStop(&gSprites[gCutGrassSpriteArray[0]], FLDEFF_CUT_GRASS); sub_8064E2C(); ScriptContext2_Disable(); } void sub_80A2B00(void) { - PlaySE(0x80); - FieldEffectActiveListRemove(2); + PlaySE(SE_W015); + FieldEffectActiveListRemove(FLDEFF_USE_CUT_ON_TREE); EnableBothScriptContexts(); } diff --git a/src/field/fldeff_flash.c b/src/field/fldeff_flash.c new file mode 100644 index 000000000..1ee8a8f05 --- /dev/null +++ b/src/field/fldeff_flash.c @@ -0,0 +1,306 @@ +#include "global.h" +#include "event_data.h" +#include "field_effect.h" +#include "main.h" +#include "palette.h" +#include "pokemon_menu.h" +#include "overworld.h" +#include "rom6.h" +#include "script.h" +#include "songs.h" +#include "sound.h" +#include "sprite.h" +#include "task.h" + +struct FlashStruct +{ + u8 unk0; + u8 unk1; + u8 unk2; + u8 unk3; + void (*func)(void); +}; + +extern struct FlashStruct gUnknown_083F7FC4[]; +extern u16 gCaveTransitionPalette_White[]; +extern u16 gCaveTransitionPalette_Black[]; +extern u16 gUnknown_083F808C[]; +extern u16 gUnknown_083F809C[]; +extern u16 gCaveTransitionTilemap[]; +extern u8 gCaveTransitionTiles[]; + +extern u8 gLastFieldPokeMenuOpened; +extern void (*gUnknown_03005CE4)(void); + +extern u8 gUnknown_081B694A[]; + +void sub_810CBFC(void); +void sub_810CC34(void); +bool8 sub_810CD5C(void); +void sub_810CE5C(u8); +void sub_810CE78(u8); +void sub_810CF18(u8); +void sub_810CF5C(u8); +void sub_810CFC4(u8); +void sub_810D00C(u8); +void sub_810D028(u8); +void sub_810D0C4(u8); +void sub_810D128(u8); + +bool8 SetUpFieldMove_Flash(void) +{ + if (gMapHeader.cave == TRUE && !FlagGet(SYS_USE_FLASH)) + { + gFieldCallback = FieldCallback_Teleport; + gUnknown_03005CE4 = sub_810CBFC; + return TRUE; + } + + return FALSE; +} + +void sub_810CBFC(void) +{ + u8 taskId = oei_task_add(); + gFieldEffectArguments[0] = gLastFieldPokeMenuOpened; + gTasks[taskId].data[8] = (uintptr_t)sub_810CC34 >> 16; + gTasks[taskId].data[9] = (uintptr_t)sub_810CC34; +} + +void sub_810CC34(void) +{ + PlaySE(SE_W115); + FlagSet(SYS_USE_FLASH); + ScriptContext1_SetupScript(gUnknown_081B694A); +} + +void sub_810CC54(void) +{ + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +static void VBlankCB(void) +{ + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); +} + +void sub_810CC80(void) +{ + u16 ime; + + SetVBlankCallback(NULL); + REG_DISPCNT = 0; + REG_BG2CNT = 0; + REG_BG1CNT = 0; + REG_BG0CNT = 0; + REG_BG2HOFS = 0; + REG_BG2VOFS = 0; + REG_BG1HOFS = 0; + REG_BG1VOFS = 0; + REG_BG0HOFS = 0; + REG_BG0VOFS = 0; + DmaFill16(3, 0, (void *)VRAM, VRAM_SIZE); + DmaFill32(3, 0, (void *)OAM, OAM_SIZE); + DmaFill16(3, 0, (void *)(PLTT + 2), PLTT_SIZE - 2); + ResetPaletteFade(); + ResetTasks(); + ResetSpriteData(); + ime = REG_IME; + REG_IME = 0; + REG_IE |= INTR_FLAG_VBLANK; + REG_IME = ime; + SetVBlankCallback(VBlankCB); + SetMainCallback2(sub_810CC54); + if (!sub_810CD5C()) + SetMainCallback2(gMain.savedCallback); +} + +bool8 sub_810CD5C(void) +{ + u8 i; + u8 v0 = get_map_type_from_warp0(); + u8 v1 = Overworld_GetMapTypeOfSaveblockLocation(); + + for (i = 0; gUnknown_083F7FC4[i].unk0; i++) + { + if (gUnknown_083F7FC4[i].unk0 == v0 && gUnknown_083F7FC4[i].unk1 == v1) + { + gUnknown_083F7FC4[i].func(); + return TRUE; + } + } + + return FALSE; +} + +u8 sub_810CDB8(u8 a1, u8 a2) +{ + u8 i; + u8 v0 = a1; + u8 v1 = a2; + + for (i = 0; gUnknown_083F7FC4[i].unk0; i++) + { + if (gUnknown_083F7FC4[i].unk0 == v0 && gUnknown_083F7FC4[i].unk1 == v1) + { + return gUnknown_083F7FC4[i].unk2; + } + } + + return FALSE; +} + +u8 fade_type_for_given_maplight_pair(u8 a1, u8 a2) +{ + u8 i; + u8 v0 = a1; + u8 v1 = a2; + + for (i = 0; gUnknown_083F7FC4[i].unk0; i++) + { + if (gUnknown_083F7FC4[i].unk0 == v0 && gUnknown_083F7FC4[i].unk1 == v1) + { + return gUnknown_083F7FC4[i].unk3; + } + } + + return FALSE; +} + +void sub_810CE48(void) +{ + CreateTask(sub_810CE5C, 0); +} + +void sub_810CE5C(u8 taskId) +{ + gTasks[taskId].func = sub_810CE78; +} + +void sub_810CE78(u8 taskId) +{ + REG_DISPCNT = 0; + LZ77UnCompVram(gCaveTransitionTiles, (void *)0x600C000); + LZ77UnCompVram(gCaveTransitionTilemap, (void *)0x600F800); + LoadPalette(gCaveTransitionPalette_White, 0xE0, 0x20); + LoadPalette(gUnknown_083F809C, 0xE0, 0x10); + REG_BLDCNT = 15937; + REG_BLDALPHA = 0; + REG_BLDY = 0; + REG_BG0CNT = 7948; + REG_DISPCNT = 4416; + gTasks[taskId].func = sub_810CF18; + gTasks[taskId].data[0] = 16; + gTasks[taskId].data[1] = 0; +} + +void sub_810CF18(u8 taskId) +{ + u16 count = gTasks[taskId].data[1]; + u16 blend = count + 0x1000; + REG_BLDALPHA = blend; + if (count <= 0x10) + { + gTasks[taskId].data[1]++; + } + else + { + gTasks[taskId].data[2] = 0; + gTasks[taskId].func = sub_810CF5C; + } +} + +void sub_810CF5C(u8 taskId) +{ + u16 count; + + REG_BLDALPHA = 4112; + + count = gTasks[taskId].data[2]; + + if (count < 8) + { + gTasks[taskId].data[2]++; + LoadPalette(&gUnknown_083F809C[count], 0xE0, 16 - 2 * count); + } + else + { + LoadPalette(gCaveTransitionPalette_White, 0, 0x20); + gTasks[taskId].func = sub_810CFC4; + gTasks[taskId].data[2] = 8; + } +} + +void sub_810CFC4(u8 taskId) +{ + if (gTasks[taskId].data[2]) + gTasks[taskId].data[2]--; + else + SetMainCallback2(gMain.savedCallback); +} + +void sub_810CFF8(void) +{ + CreateTask(sub_810D00C, 0); +} + +void sub_810D00C(u8 taskId) +{ + gTasks[taskId].func = sub_810D028; +} + +void sub_810D028(u8 taskId) +{ + REG_DISPCNT = 0; + LZ77UnCompVram(gCaveTransitionTiles, (void *)0x600C000); + LZ77UnCompVram(gCaveTransitionTilemap, (void *)0x600F800); + REG_BLDCNT = 0; + REG_BLDALPHA = 0; + REG_BLDY = 0; + REG_BG0CNT = 7948; + REG_DISPCNT = 4416; + LoadPalette(gCaveTransitionPalette_White, 0xE0, 0x20); + LoadPalette(gCaveTransitionPalette_Black, 0, 0x20); + gTasks[taskId].func = sub_810D0C4; + gTasks[taskId].data[0] = 16; + gTasks[taskId].data[1] = 0; + gTasks[taskId].data[2] = 0; +} + +void sub_810D0C4(u8 taskId) +{ + u16 count = gTasks[taskId].data[2]; + if (count < 16) + { + gTasks[taskId].data[2]++; + gTasks[taskId].data[2]++; + LoadPalette(&gUnknown_083F808C[15 - count], 0xE0, 2 * (count + 1)); + } + else + { + REG_BLDALPHA = 4112; + REG_BLDCNT = 15937; + gTasks[taskId].func = sub_810D128; + } +} + +void sub_810D128(u8 taskId) +{ + u16 count = 16 - gTasks[taskId].data[1]; + u16 blend = count + 0x1000; + REG_BLDALPHA = blend; + if (count) + { + gTasks[taskId].data[1]++; + } + else + { + LoadPalette(gCaveTransitionPalette_Black, 0, 0x20); + SetMainCallback2(gMain.savedCallback); + } +} diff --git a/src/fldeff_softboiled.c b/src/field/fldeff_softboiled.c similarity index 95% rename from src/fldeff_softboiled.c rename to src/field/fldeff_softboiled.c index cb26d9966..22f9c13f5 100644 --- a/src/fldeff_softboiled.c +++ b/src/field/fldeff_softboiled.c @@ -75,7 +75,7 @@ bool8 SetUpFieldMove_SoftBoiled(void) { void sub_8133D28(u8 taskid) { EWRAM_1000.unkC = sub_8133D50; EWRAM_1B000_2.unk272 = 3; - sub_808A004(taskid); + DoPokemonMenu_Switch(taskid); } static void sub_8133D50(u8 taskId) { @@ -132,8 +132,8 @@ static void sub_8133E74(u8 taskId) { } MenuZeroFillWindowRect(WINDOW_LEFT, 14, WINDOW_RIGHT, 19); - sub_806D538(3, 0); - gTasks[taskId].func = sub_806CB74; + PrintPartyMenuPromptText(3, 0); + gTasks[taskId].func = HandlePartyMenuSwitchPokemonInput; } static void sub_8133EB8(u8 taskId) { @@ -148,6 +148,6 @@ static void sub_8133EF8(void) { EWRAM_1B000_2.unk261 = 2; DestroySprite(&gSprites[EWRAM_1000.unk1]); MenuZeroFillWindowRect(WINDOW_LEFT, 14, WINDOW_RIGHT, 19); - sub_806D538(0, 0); + PrintPartyMenuPromptText(0, 0); SwitchTaskToFollowupFunc(EWRAM_1000.unk0); } diff --git a/src/fldeff_strength.c b/src/field/fldeff_strength.c similarity index 76% rename from src/fldeff_strength.c rename to src/field/fldeff_strength.c index 1edae09d4..d9603d094 100644 --- a/src/fldeff_strength.c +++ b/src/field/fldeff_strength.c @@ -13,21 +13,19 @@ static void sub_811AA18(void); static void sub_811AA38(void); static void sub_811AA9C(void); -extern u32 gUnknown_0202FF84[]; - extern u8 gLastFieldPokeMenuOpened; extern u16 gScriptResult; extern void (*gFieldCallback)(void); extern void (*gUnknown_03005CE4)(void); -extern u8 UseStrengthScript[]; +extern u8 S_UseStrength[]; bool8 SetUpFieldMove_Strength(void) { if (ShouldDoBrailleStrengthEffect()) { gScriptResult = gLastFieldPokeMenuOpened; - gFieldCallback = sub_808AB90; + gFieldCallback = FieldCallback_Teleport; gUnknown_03005CE4 = sub_811AA38; } else @@ -35,7 +33,7 @@ bool8 SetUpFieldMove_Strength(void) if (npc_before_player_of_type(87) != TRUE) return 0; gScriptResult = gLastFieldPokeMenuOpened; - gFieldCallback = sub_808AB90; + gFieldCallback = FieldCallback_Teleport; gUnknown_03005CE4 = sub_811AA18; } @@ -44,14 +42,14 @@ bool8 SetUpFieldMove_Strength(void) static void sub_811AA18(void) { - gUnknown_0202FF84[0] = gLastFieldPokeMenuOpened; - ScriptContext1_SetupScript(UseStrengthScript); + gFieldEffectArguments[0] = gLastFieldPokeMenuOpened; + ScriptContext1_SetupScript(S_UseStrength); } static void sub_811AA38(void) { - gUnknown_0202FF84[0] = gLastFieldPokeMenuOpened; - FieldEffectStart(40); + gFieldEffectArguments[0] = gLastFieldPokeMenuOpened; + FieldEffectStart(FLDEFF_USE_STRENGTH); } bool8 FldEff_UseStrength(void) @@ -60,7 +58,7 @@ bool8 FldEff_UseStrength(void) gTasks[taskId].data[8] = (u32)sub_811AA9C >> 16; gTasks[taskId].data[9] = (u32)sub_811AA9C; - GetMonNickname(&gPlayerParty[gUnknown_0202FF84[0]], gStringVar1); + GetMonNickname(&gPlayerParty[gFieldEffectArguments[0]], gStringVar1); return FALSE; } diff --git a/src/fldeff_sweetscent.c b/src/field/fldeff_sweetscent.c similarity index 90% rename from src/fldeff_sweetscent.c rename to src/field/fldeff_sweetscent.c index 6e782f4ac..b9dbf619d 100644 --- a/src/fldeff_sweetscent.c +++ b/src/field/fldeff_sweetscent.c @@ -15,8 +15,6 @@ static void sub_812C01C(void); static void sub_812C084(u8); static void sub_812C118(u8); -extern u32 gUnknown_0202FF84[]; - extern u8 gLastFieldPokeMenuOpened; extern void (*gFieldCallback)(void); extern void (*gUnknown_03005CE4)(void); @@ -25,15 +23,15 @@ extern u8 SweetScentNothingHereScript[]; bool8 SetUpFieldMove_SweetScent(void) { - gFieldCallback = sub_808AB90; + gFieldCallback = FieldCallback_Teleport; gUnknown_03005CE4 = sub_812BFD4; return TRUE; } static void sub_812BFD4(void) { - FieldEffectStart(51); - gUnknown_0202FF84[0] = gLastFieldPokeMenuOpened; + FieldEffectStart(FLDEFF_SWEET_SCENT); + gFieldEffectArguments[0] = gLastFieldPokeMenuOpened; } bool8 FldEff_SweetScent() @@ -53,7 +51,7 @@ static void sub_812C01C(void) BeginNormalPaletteFade(~(1 << (gSprites[GetPlayerAvatarObjectId()].oam.paletteNum + 16)), 4, 0, 8, 0x1F); taskId = CreateTask(sub_812C084, 0); gTasks[taskId].data[0] = 0; - FieldEffectActiveListRemove(51); + FieldEffectActiveListRemove(FLDEFF_SWEET_SCENT); } static void sub_812C084(u8 taskId) diff --git a/src/fldeff_teleport.c b/src/field/fldeff_teleport.c similarity index 68% rename from src/fldeff_teleport.c rename to src/field/fldeff_teleport.c index df12d3072..af48fb414 100644 --- a/src/fldeff_teleport.c +++ b/src/field/fldeff_teleport.c @@ -3,21 +3,19 @@ #include "field_effect.h" #include "field_player_avatar.h" #include "pokemon_menu.h" -#include "rom4.h" +#include "overworld.h" #include "rom6.h" #include "task.h" -extern u32 gUnknown_0202FF84[]; - extern void (*gFieldCallback)(void); extern u8 gLastFieldPokeMenuOpened; extern void (*gUnknown_03005CE4)(void); bool8 SetUpFieldMove_Teleport(void) { - if (is_light_level_1_2_3_or_6(gMapHeader.mapType) == TRUE) + if (Overworld_MapTypeAllowsTeleportAndFly(gMapHeader.mapType) == TRUE) { - gFieldCallback = sub_808AB90; + gFieldCallback = FieldCallback_Teleport; gUnknown_03005CE4 = hm_teleport_run_dp02scr; return TRUE; } @@ -27,9 +25,9 @@ bool8 SetUpFieldMove_Teleport(void) void hm_teleport_run_dp02scr(void) { - new_game(); - FieldEffectStart(63); - gUnknown_0202FF84[0] = gLastFieldPokeMenuOpened; + Overworld_ResetStateAfterTeleport(); + FieldEffectStart(FLDEFF_USE_TELEPORT); + gFieldEffectArguments[0] = gLastFieldPokeMenuOpened; } bool8 FldEff_UseTeleport(void) @@ -43,6 +41,6 @@ bool8 FldEff_UseTeleport(void) void sub_814A404(void) { - FieldEffectActiveListRemove(63); + FieldEffectActiveListRemove(FLDEFF_USE_TELEPORT); sub_8087BA8(); } diff --git a/src/heal_location.c b/src/field/heal_location.c similarity index 100% rename from src/heal_location.c rename to src/field/heal_location.c diff --git a/src/hof_pc.c b/src/field/hof_pc.c similarity index 86% rename from src/hof_pc.c rename to src/field/hof_pc.c index 4646d171c..267ed4274 100644 --- a/src/hof_pc.c +++ b/src/field/hof_pc.c @@ -2,7 +2,7 @@ #include "hall_of_fame.h" #include "main.h" #include "palette.h" -#include "rom4.h" +#include "overworld.h" #include "script.h" #include "script_menu.h" #include "task.h" @@ -28,10 +28,10 @@ void ReturnFromHallOfFamePC(void) static void ReshowPCMenuAfterHallOfFamePC(void) { ScriptContext2_Enable(); - sub_8053E90(); + Overworld_PlaySpecialMapMusic(); BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, 0); - TryCreatePCMenu(); - sub_80B5838(); + ScrSpecial_CreatePCMenu(); + ScriptMenu_DisplayPCStartupPrompt(); CreateTask(Task_WaitForPaletteFade, 10); } diff --git a/src/item.c b/src/field/item.c similarity index 75% rename from src/item.c rename to src/field/item.c index 2eb013490..fd49f5c39 100644 --- a/src/item.c +++ b/src/field/item.c @@ -1,21 +1,25 @@ #include "global.h" +#include "hold_effects.h" #include "item.h" #include "items.h" +#include "item_use.h" #include "berry.h" #include "string_util.h" #include "strings.h" extern u8 gUnknown_02038560; -extern struct Item gItems[]; -struct BagPocket +// These constants are used in gItems +enum { - struct ItemSlot *itemSlots; - u8 capacity; + POCKET_NONE, + POCKET_ITEMS, + POCKET_POKE_BALLS, + POCKET_TM_HM, + POCKET_BERRIES, + POCKET_KEY_ITEMS, }; -extern struct BagPocket gBagPockets[5]; - enum { ITEMS_POCKET, @@ -25,6 +29,14 @@ enum KEYITEMS_POCKET }; +#if ENGLISH +#include "../data/item_descriptions_en.h" +#include "../data/items_en.h" +#elif GERMAN +#include "../data/item_descriptions_de.h" +#include "../data/items_de.h" +#endif + static void CompactPCItems(void); void CopyItemName(u16 itemId, u8 *string) @@ -137,6 +149,9 @@ bool8 CheckBagHasSpace(u16 itemId, u16 count) return TRUE; } +// This function matches if gBagPockets is declared non-const, +// but it should be fixed anyway. +#ifdef NONMATCHING bool8 AddBagItem(u16 itemId, u16 count) { u8 i; @@ -201,6 +216,158 @@ bool8 AddBagItem(u16 itemId, u16 count) memcpy(gBagPockets[pocket].itemSlots, newItems, gBagPockets[pocket].capacity * sizeof(struct ItemSlot)); return TRUE; } +#else +__attribute__((naked)) +bool8 AddBagItem(u16 itemId, u16 count) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r9\n\ + mov r6, r8\n\ + push {r6,r7}\n\ + sub sp, 0x100\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + mov r8, r0\n\ + lsls r1, 16\n\ + lsrs r4, r1, 16\n\ + bl ItemId_GetPocket\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + beq _080A9510\n\ + mov r0, r8\n\ + bl ItemId_GetPocket\n\ + subs r0, 0x1\n\ + lsls r0, 24\n\ + lsrs r6, r0, 24\n\ + ldr r1, _080A94F8 @ =gBagPockets\n\ + lsls r0, r6, 3\n\ + adds r5, r0, r1\n\ + ldr r1, [r5]\n\ + ldrb r2, [r5, 0x4]\n\ + lsls r2, 2\n\ + mov r0, sp\n\ + bl memcpy\n\ + ldr r7, _080A94FC @ =0x000003e7\n\ + cmp r6, 0x3\n\ + beq _080A9468\n\ + movs r7, 0x63\n\ +_080A9468:\n\ + movs r1, 0\n\ + ldrb r0, [r5, 0x4]\n\ + cmp r1, r0\n\ + bcs _080A94B2\n\ + subs r0, r6, 0x2\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + mov r12, r0\n\ +_080A9478:\n\ + lsls r0, r1, 2\n\ + mov r2, sp\n\ + adds r3, r2, r0\n\ + ldrh r0, [r3]\n\ + cmp r0, r8\n\ + bne _080A94A6\n\ + ldrh r2, [r3, 0x2]\n\ + adds r0, r2, r4\n\ + cmp r0, r7\n\ + ble _080A9500\n\ + mov r0, r12\n\ + cmp r0, 0x1\n\ + bls _080A9510\n\ + subs r0, r7, r2\n\ + subs r0, r4, r0\n\ + lsls r0, 16\n\ + lsrs r4, r0, 16\n\ + strh r7, [r3, 0x2]\n\ + ldr r2, _080A94F8 @ =gBagPockets\n\ + mov r9, r2\n\ + lsls r3, r6, 3\n\ + cmp r4, 0\n\ + beq _080A9516\n\ +_080A94A6:\n\ + adds r0, r1, 0x1\n\ + lsls r0, 24\n\ + lsrs r1, r0, 24\n\ + ldrb r0, [r5, 0x4]\n\ + cmp r1, r0\n\ + bcc _080A9478\n\ +_080A94B2:\n\ + ldr r2, _080A94F8 @ =gBagPockets\n\ + mov r9, r2\n\ + lsls r3, r6, 3\n\ + cmp r4, 0\n\ + beq _080A9516\n\ + movs r1, 0\n\ + adds r0, r3, r2\n\ + ldrb r0, [r0, 0x4]\n\ + cmp r1, r0\n\ + bcs _080A94F2\n\ + mov r6, r9\n\ + adds r5, r3, r6\n\ +_080A94CA:\n\ + lsls r0, r1, 2\n\ + mov r6, sp\n\ + adds r2, r6, r0\n\ + ldrh r0, [r2]\n\ + cmp r0, 0\n\ + bne _080A94E6\n\ + mov r0, r8\n\ + strh r0, [r2]\n\ + cmp r4, r7\n\ + bls _080A9514\n\ + subs r0, r4, r7\n\ + lsls r0, 16\n\ + lsrs r4, r0, 16\n\ + strh r7, [r2, 0x2]\n\ +_080A94E6:\n\ + adds r0, r1, 0x1\n\ + lsls r0, 24\n\ + lsrs r1, r0, 24\n\ + ldrb r2, [r5, 0x4]\n\ + cmp r1, r2\n\ + bcc _080A94CA\n\ +_080A94F2:\n\ + cmp r4, 0\n\ + beq _080A9516\n\ + b _080A9510\n\ + .align 2, 0\n\ +_080A94F8: .4byte gBagPockets\n\ +_080A94FC: .4byte 0x000003e7\n\ +_080A9500:\n\ + strh r0, [r3, 0x2]\n\ + ldr r0, _080A950C @ =gBagPockets\n\ + lsls r1, r6, 3\n\ + adds r1, r0\n\ + b _080A951A\n\ + .align 2, 0\n\ +_080A950C: .4byte gBagPockets\n\ +_080A9510:\n\ + movs r0, 0\n\ + b _080A9528\n\ +_080A9514:\n\ + strh r4, [r2, 0x2]\n\ +_080A9516:\n\ + mov r6, r9\n\ + adds r1, r3, r6\n\ +_080A951A:\n\ + ldr r0, [r1]\n\ + ldrb r2, [r1, 0x4]\n\ + lsls r2, 2\n\ + mov r1, sp\n\ + bl memcpy\n\ + movs r0, 0x1\n\ +_080A9528:\n\ + add sp, 0x100\n\ + pop {r3,r4}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + pop {r4-r7}\n\ + pop {r1}\n\ + bx r1\n\ + .syntax divided\n"); +} +#endif bool8 RemoveBagItem(u16 itemId, u16 count) { @@ -410,7 +577,7 @@ static u16 SanitizeItemId(u16 itemId) return itemId; } -struct Item *ItemId_GetItem(u16 itemId) +const struct Item *ItemId_GetItem(u16 itemId) { return &gItems[SanitizeItemId(itemId)]; } @@ -435,15 +602,15 @@ u8 ItemId_GetHoldEffectParam(u16 itemId) return gItems[SanitizeItemId(itemId)].holdEffectParam; } -u8 *ItemId_GetDescription(u16 itemId) +const u8 *ItemId_GetDescription(u16 itemId) { return gItems[SanitizeItemId(itemId)].description; } -bool8 ItemId_CopyDescription(u8 *a, u32 itemId, u32 c) +bool32 ItemId_CopyDescription(u8 *a, u32 itemId, u32 c) { u32 r5 = c + 1; - u8 *description = gItems[SanitizeItemId(itemId)].description; + const u8 *description = gItems[SanitizeItemId(itemId)].description; u8 *str = a; for (;;) diff --git a/src/field/item_menu.c b/src/field/item_menu.c new file mode 100644 index 000000000..c508bcacf --- /dev/null +++ b/src/field/item_menu.c @@ -0,0 +1,4575 @@ +#include "global.h" +#include "berry.h" +#include "berry_tag_screen.h" +#include "data2.h" +#include "decompress.h" +#include "field_effect.h" +#include "field_map_obj_helpers.h" +#include "field_player_avatar.h" +#include "graphics.h" +#include "item.h" +#include "items.h" +#include "item_menu.h" +#include "item_use.h" +#include "link.h" +#include "mail_data.h" +#include "main.h" +#include "map_name_popup.h" +#include "menu.h" +#include "menu_cursor.h" +#include "menu_helpers.h" +#include "money.h" +#include "palette.h" +#include "party_menu.h" +#include "player_pc.h" +#include "pokemon_menu.h" +#include "overworld.h" +#include "script.h" +#include "songs.h" +#include "sound.h" +#include "sprite.h" +#include "strings.h" +#include "strings2.h" +#include "string_util.h" +#include "task.h" +#include "text.h" +#include "unknown_task.h" + +// External stuff +extern u8 ewram[]; +extern void gpu_pal_allocator_reset__manage_upper_four(void); +extern void sub_80F9020(void); +extern void sub_80F9988(); +extern void sub_809D104(u16 *, u16, u16, const u8 *, u16, u16, u16, u16); +extern void PauseVerticalScrollIndicator(); +extern u8 sub_80F9284(void); +extern void sub_808B5B4(); +extern u8 sub_80F92F4(); +extern void sub_80C9C7C(u8); +extern void pal_fill_black(void); +extern bool8 sub_807D770(void); +extern u8 sub_80F931C(); +extern void sub_808A3F8(u8); +extern void sub_80B3050(void); +extern void sub_80546B8(u8); +extern void sub_804E990(u8); +extern void sub_802E424(u8); +extern void sub_8064E2C(void); + +struct UnknownStruct2 +{ + u8 unk0; + u8 textLine; + u8 unk2; +}; + +struct UnknownStruct3 +{ + u8 unk0; + u8 unk1; + u8 unk2; +}; + +struct UnknownStruct4 +{ + u8 unk0; + u8 unk1; + u16 unk2; + const u8 *unk4; + TaskFunc unk8; +}; + +struct UnknownStruct5 +{ + u8 unk0; + u8 unk1; + u8 unk2; + u8 unk3; +}; + +struct UnknownStruct6 +{ + u8 unk0; +}; + +enum +{ + BAG_POCKET_ITEMS, // 0 + BAG_POCKET_POKE_BALLS, // 1 + BAG_POCKET_TMs_HMs, // 2 + BAG_POCKET_BERRIES, // 3 + BAG_POCKET_KEY_ITEMS, // 4 +}; + +enum +{ + RETURN_TO_FIELD_0, + RETURN_TO_BATTLE, + RETURN_TO_PKMN_LIST, + RETURN_TO_SHOP, + RETURN_TO_FIELD_4, + RETURN_TO_FIELD_5, + RETURN_TO_PC, + RETURN_TO_WALLY_BATTLE, +}; + +enum +{ + ITEM_ACTION_USE_0, // 0 + ITEM_ACTION_TOSS, // 1 + ITEM_ACTION_CANCEL_2, // 2 + ITEM_ACTION_REGISTER, // 3 + ITEM_ACTION_USE_4, // 4 + ITEM_ACTION_CANCEL_5, // 5 + ITEM_ACTION_GIVE, // 6 + ITEM_ACTION_CHECK_TAG, // 7 + ITEM_ACTION_NONE, // 8 + ITEM_ACTION_CONFIRM, // 9 +}; + +// ewram +EWRAM_DATA static struct UnknownStruct2 gUnknown_0203853C = {0}; +EWRAM_DATA static struct UnknownStruct3 gUnknown_02038540 = {0}; +EWRAM_DATA static struct UnknownStruct4 gUnknown_02038544 = {0}; +EWRAM_DATA static struct UnknownStruct5 gUnknown_02038550 = {0}; +EWRAM_DATA static struct UnknownStruct6 gUnknown_02038554 = {0}; // There are 3 bytes of padding after this, so I assume it's a struct +EWRAM_DATA static u8 gUnknown_02038558 = 0; +EWRAM_DATA static s8 sCurrentBagPocket = 0; +EWRAM_DATA static u8 gUnknown_0203855A = 0; +EWRAM_DATA static s8 gUnknown_0203855B = 0; +EWRAM_DATA static s8 gUnknown_0203855C = 0; +EWRAM_DATA u16 gScriptItemId = 0; +EWRAM_DATA u8 gUnknown_02038560 = 0; +EWRAM_DATA u8 gUnknown_02038561 = 0; +EWRAM_DATA static u8 gUnknown_02038562 = 0; +EWRAM_DATA static u8 gUnknown_02038563 = 0; +EWRAM_DATA static u8 gUnknown_02038564 = 0; +EWRAM_DATA static u8 sPokeballSpriteId ALIGNED(4) = 0; // HACK: why is there a space before this variable? + +// bss +static u8 sPopupMenuSelection; +static u8 sReturnLocation; +static const u8 *sPopupMenuActionList; + +// common +void (*gFieldItemUseCallback)(u8) = NULL; +extern u16 gUnknown_030041B4; +extern struct PocketScrollState gBagPocketScrollStates[]; +extern struct ItemSlot *gCurrentBagPocketItemSlots; // selected pocket item slots +extern const u8 Event_NoRegisteredItem[]; + +#define ewramBerryPic (ewram + 0) +#define ewramBerryPicTemp (ewram + 0x1000) +#define ewramSavedItemsPocket ((struct ItemSlot *)(ewram + 0x1E000)) // saved items pocket (for Wally battle) +#define ewramSavedPokeballsPocket ((struct ItemSlot *)(ewram + 0x1F000)) // saved Pokeballs pocket (for Wally battle) +#define ewramBagSetupStep (ewram[0x1FFFF]) + +extern const struct CompressedSpriteSheet sMaleBagSpriteSheet; +extern const struct CompressedSpriteSheet sFemaleBagSpriteSheet; +extern const struct CompressedSpritePalette sBagSpritePalette; + +const struct BagPocket gBagPockets[NUM_BAG_POCKETS] = +{ + {gSaveBlock1.bagPocket_Items, 20}, + {gSaveBlock1.bagPocket_PokeBalls, 16}, + {gSaveBlock1.bagPocket_TMHM, 64}, + {gSaveBlock1.bagPocket_Berries, 46}, + {gSaveBlock1.bagPocket_KeyItems, 20}, +}; + +static void HandlePopupMenuAction_UseOnField(u8); +static void HandlePopupMenuAction_Toss(u8); +static void sub_80A5F80(u8); +static void HandlePopupMenuAction_Register(u8); +static void HandlePopupMenuAction_UseInBattle(u8); +static void sub_80A7124(u8); +static void HandlePopupMenuAction_Give(u8); +static void HandlePopupMenuAction_CheckTag(u8); +static void HandlePopupMenuAction_Confirm(u8); + +static const struct MenuAction2 sItemPopupMenuActions[] = +{ + {OtherText_Use, HandlePopupMenuAction_UseOnField}, + {OtherText_Toss, HandlePopupMenuAction_Toss}, + {gOtherText_CancelNoTerminator, sub_80A5F80}, + {OtherText_Register, HandlePopupMenuAction_Register}, + {OtherText_Use, HandlePopupMenuAction_UseInBattle}, + {gOtherText_CancelNoTerminator, sub_80A7124}, + {OtherText_Give2, HandlePopupMenuAction_Give}, + {OtherText_CheckTag, HandlePopupMenuAction_CheckTag}, + {gOtherText_CancelWithTerminator, NULL}, + {OtherText_Confirm, HandlePopupMenuAction_Confirm}, +}; + +static const u8 sItemPopupMenuChoicesTable[][6] = +{ + [BAG_POCKET_ITEMS] = + { + ITEM_ACTION_USE_0, + ITEM_ACTION_TOSS, + ITEM_ACTION_GIVE, + ITEM_ACTION_CANCEL_2, + }, + + [BAG_POCKET_POKE_BALLS] = + { + ITEM_ACTION_GIVE, + ITEM_ACTION_TOSS, + ITEM_ACTION_NONE, + ITEM_ACTION_CANCEL_2, + }, + + [BAG_POCKET_TMs_HMs] = + { + ITEM_ACTION_USE_0, + ITEM_ACTION_NONE, + ITEM_ACTION_GIVE, + ITEM_ACTION_CANCEL_2, + }, + + [BAG_POCKET_BERRIES] = + { + ITEM_ACTION_CHECK_TAG, + ITEM_ACTION_USE_0, + ITEM_ACTION_TOSS, + ITEM_ACTION_NONE, + ITEM_ACTION_GIVE, + ITEM_ACTION_CANCEL_2 + }, + + [BAG_POCKET_KEY_ITEMS] = + { + ITEM_ACTION_USE_0, + ITEM_ACTION_NONE, + ITEM_ACTION_REGISTER, + ITEM_ACTION_CANCEL_2, + }, +}; + +const u8 gUnknown_083C16AE[][2] = +{ + {6, 2}, + {6, 2}, + {6, 2}, + {6, 2}, + {2, 0}, +}; + +const u8 gUnknown_083C16B8[] = {7, 9, 8, 2}; + +static void OnItemSelect_Field05(u8); +static void OnBagClose_Field0(u8); +static void OnBagClose_PkmnList(u8); +static void OnItemSelect_PkmnList(u8); +static void OnBagClose_Shop(u8); +static void OnItemSelect_Shop(u8); +static void OnBagClose_Field4(u8); +static void OnItemSelect_Field4(u8); +static void OnBagClose_Field5(u8); +static void OnBagClose_PC(u8); +static void OnItemSelect_PC(u8); +static void OnItemSelect_Battle(u8); +static void OnBagClose_Battle(u8); + +static const struct {TaskFunc onItemSelect; TaskFunc onBagClose;} gUnknown_083C16BC[] = +{ + [RETURN_TO_FIELD_0] = {OnItemSelect_Field05, OnBagClose_Field0}, + [RETURN_TO_BATTLE] = {OnItemSelect_Battle, OnBagClose_Battle}, + [RETURN_TO_PKMN_LIST] = {OnItemSelect_PkmnList, OnBagClose_PkmnList}, + [RETURN_TO_SHOP] = {OnItemSelect_Shop, OnBagClose_Shop}, + [RETURN_TO_FIELD_4] = {OnItemSelect_Field4, OnBagClose_Field4}, + [RETURN_TO_FIELD_5] = {OnItemSelect_Field05, OnBagClose_Field5}, + [RETURN_TO_PC] = {OnItemSelect_PC, OnBagClose_PC}, +}; + +static void sub_80A5E60(u8); +static void sub_80A5E90(u8); + +static const struct YesNoFuncTable gUnknown_083C16F4 = {sub_80A5E60, sub_80A5E90}; + +static void sub_80A65AC(u8); +static void sub_80A6618(u8); + +const struct YesNoFuncTable gUnknown_083C16FC = {sub_80A65AC, sub_80A6618}; + +void sub_80A34E8(void); +static bool8 LoadBagGraphicsMultistep(void); +static void sub_80A362C(void); +static void sub_80A3740(void); +static void sub_80A396C(u16 *, u8, u8, u8); +static void sub_80A39B8(u16 *, u8); +static void sub_80A39E4(u16 *, u8, u8, s8); +static void DrawPocketIndicatorDots(u16 *, u8); +static void SortItemSlots(struct BagPocket); +static void UpdateAllBagPockets(void); +static void sub_80A3D24(u8); +static void sub_80A3D40(void); +static void RemoveSelectIconFromRegisteredItem(void); +static void sub_80A48E8(u16, int, int); +static void ItemListMenu_InitDescription(s16); +static void ItemListMenu_ChangeDescription(s16, int); +static void sub_80A4F68(u8); +static void sub_80A50C8(u8); +static void sub_80A5AE4(u8); +static void sub_80A5BF8(u8); +static void Task_CallItemUseOnFieldCallback(u8); +static void sub_80A6444(u8); +static void sub_80A648C(u8); +static void Task_BuyHowManyDialogueHandleInput(u8); +static void BuyMenuPrintItemQuantityAndPrice(u8); +static void BuyMenuDisplayMessage(u16, u16); +static void sub_80A683C(void); +static void sub_80A6870(u16, u8); +static void sub_80A699C(void); +static void sub_80A7230(u8); +static void ItemListMenu_InitMenu(void); +static void sub_80A73C0(void); +static void sub_80A73F0(void); +static void sub_80A73FC(void); +static void sub_80A740C(void); +static void sub_80A7420(void); +static void sub_80A751C(void); +static void sub_80A7528(u8); +static void sub_80A7590(void); +static void sub_80A75E4(void); +static void sub_80A7630(void); +static void sub_80A763C(void); +static void sub_80A76A0(void); +static void sub_80A770C(void); +static void DisplayCannotUseItemMessage(int, const u8 *, TaskFunc, int); +static void sub_80A7768(void); +static void sub_80A7828(void); +static void sub_80A7834(int, int); +static bool32 sub_80A78A0(void); +static void sub_80A78B8(void); +static bool32 sub_80A78C4(void); +static void sub_80A78E8(void); +static int sub_80A78F4(void); +static void sub_80A7918(void); +static int sub_80A7924(void); +static int sub_80A7958(void); +static void sub_80A7970(void); +static void sub_80A797C(void); +static int sub_80A7988(void); +static void sub_80A79B4(struct Sprite *); +static void sub_80A79EC(struct Sprite *); +static void sub_80A7A94(struct Sprite *); +static void sub_80A7AE4(struct Sprite *); +static void CreateBagSprite(void); +static void sub_80A7B6C(struct Sprite *); +static void CreateBagPokeballSprite(u8); +static void sub_80A7C64(void); + +static void sub_80A3118(void) +{ + AnimateSprites(); + BuildOamBuffer(); + RunTasks(); + sub_80A740C(); + UpdatePaletteFade(); +} + +static void sub_80A3134(void) +{ + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); + + { + const void *src = gBGTilemapBuffers[1]; + void *dst = (void *)(VRAM + 0x2000); + + DmaCopy16(3, src, dst, 0x800); + } + + { + const void *src = gBGTilemapBuffers[2]; + void *dst = (void *)(VRAM + 0x6000); + + DmaCopy16(3, src, dst, 0x800); + } +} + +static bool8 SetupBagMultistep(void) +{ + u32 index; + u16 savedIme; + + switch (gMain.state) + { + case 0: + sub_80F9438(); + sub_80A34E8(); + gMain.state++; + break; + case 1: + remove_some_task(); + gMain.state++; + break; + case 2: + gpu_pal_allocator_reset__manage_upper_four(); + gMain.state++; + break; + case 3: + sub_80F9020(); + ewramBagSetupStep = 0; + gMain.state++; + break; + case 4: + ResetPaletteFade(); + gPaletteFade.bufferTransferDisabled = TRUE; + gMain.state++; + break; + case 5: + ResetSpriteData(); + gMain.state++; + break; + case 6: + if (LoadBagGraphicsMultistep() == FALSE) + break; + gMain.state++; + break; + case 7: + SetUpWindowConfig(&gWindowConfig_81E6DFC); + gMain.state++; + break; + case 8: + MultistepInitMenuWindowBegin(&gWindowConfig_81E6DFC); + gMain.state++; + break; + case 9: + if (!MultistepInitMenuWindowContinue()) + break; + gMain.state++; + break; + case 10: + sub_80F944C(); + LoadScrollIndicatorPalette(); + CreateVerticalScrollIndicators(0, 172, 12); + CreateVerticalScrollIndicators(1, 172, 148); + CreateVerticalScrollIndicators(2, 28, 88); + CreateVerticalScrollIndicators(3, 100, 88); + sub_80F9988(0, 2); + sub_80F9988(1, 2); + sub_80F9988(2, 2); + sub_80F9988(3, 2); + if (sReturnLocation == RETURN_TO_FIELD_4 || sReturnLocation == RETURN_TO_FIELD_5) + { + sub_80F979C(2, 1); + sub_80F979C(3, 1); + } + gMain.state++; + break; + case 11: + gUnknown_0203855A = 16; + sub_80A39B8(gBGTilemapBuffers[2], sCurrentBagPocket + 1); + DrawPocketIndicatorDots(gBGTilemapBuffers[2], sCurrentBagPocket); + UpdateAllBagPockets(); + SortItemSlots(gBagPockets[2]); + SortItemSlots(gBagPockets[3]); + sub_80A3D40(); + gCurrentBagPocketItemSlots = gBagPockets[sCurrentBagPocket].itemSlots; + sub_80A362C(); + gMain.state++; + break; + case 12: + sub_80A48E8(0xFFFF, 0, 7); + index = gBagPocketScrollStates[sCurrentBagPocket].scrollTop + gBagPocketScrollStates[sCurrentBagPocket].cursorPos; + ItemListMenu_InitDescription(gCurrentBagPocketItemSlots[index].itemId); + ItemListMenu_InitMenu(); + gUnknown_0203855B = sCurrentBagPocket + 1; + gUnknown_0203855C = 0; + gMain.state++; + break; + case 13: + CreateBagSprite(); + CreateBagPokeballSprite(0); + sub_80A3740(); + gMain.state++; + break; + case 14: + savedIme = REG_IME; + REG_IME = 0; + REG_IE |= INTR_FLAG_VBLANK; + REG_IME = savedIme; + REG_DISPSTAT |= DISPSTAT_VBLANK_INTR; + BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0); + gPaletteFade.bufferTransferDisabled = FALSE; + gMain.state++; + break; + case 15: + if (sub_8055870() == TRUE) + break; + gMain.state++; + break; + case 16: + SetVBlankCallback(sub_80A3134); + SetMainCallback2(sub_80A3118); + sub_80A751C(); + sub_80A7630(); + sub_80A770C(); + sub_80A7828(); + sub_80A78B8(); + return TRUE; + } + return FALSE; +} + +static bool8 sub_80A34B4(void) +{ + while (1) + { + if (SetupBagMultistep() == TRUE) + { + sPopupMenuSelection = 0; + ResetTasks(); + return TRUE; + } + if (sub_80F9344() == TRUE) + break; + } + return FALSE; +} + + +void sub_80A34E8(void) +{ + sub_80F9368(); + REG_BG2CNT = BGCNT_PRIORITY(2) | BGCNT_CHARBASE(1) | BGCNT_SCREENBASE(12) | BGCNT_16COLOR | BGCNT_TXT256x256; + REG_BG1CNT = BGCNT_PRIORITY(1) | BGCNT_CHARBASE(1) | BGCNT_SCREENBASE(4) | BGCNT_16COLOR | BGCNT_TXT256x256; + REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_BG1_ON | DISPCNT_BG2_ON | DISPCNT_OBJ_ON; + REG_BLDCNT = 0; +} + +static bool8 LoadBagGraphicsMultistep(void) +{ + switch (ewramBagSetupStep) + { + case 0: + LZDecompressVram(gBagScreen_Gfx, (void *)(VRAM + 0x4000)); + ewramBagSetupStep++; + break; + case 1: + CpuCopy16(gUnknown_08E77004, gBGTilemapBuffers[2], 0x800); + ewramBagSetupStep++; + break; + case 2: + if (gSaveBlock2.playerGender == MALE || sReturnLocation == RETURN_TO_WALLY_BATTLE) + LoadCompressedPalette(gBagScreenMale_Pal, 0, 64); + else + LoadCompressedPalette(gBagScreenFemale_Pal, 0, 64); + ewramBagSetupStep++; + break; + case 3: + if (gSaveBlock2.playerGender == MALE || sReturnLocation == RETURN_TO_WALLY_BATTLE) + LoadCompressedObjectPic(&sMaleBagSpriteSheet); + else + LoadCompressedObjectPic(&sFemaleBagSpriteSheet); + ewramBagSetupStep++; + break; + case 4: + LoadCompressedObjectPalette(&sBagSpritePalette); + ewramBagSetupStep = 0; + return TRUE; + } + return FALSE; +} + +static void sub_80A362C(void) +{ + u8 i; + + for (i = 0; i < 5; i++) + { + u8 r3; + + if (sReturnLocation == RETURN_TO_FIELD_5) + r3 = gBagPocketScrollStates[i].numSlots - 1; + else + r3 = gBagPocketScrollStates[i].numSlots; + + if (gBagPocketScrollStates[i].scrollTop != 0) + { + if (gBagPocketScrollStates[i].scrollTop + gBagPocketScrollStates[i].cursorMax > r3) + gBagPocketScrollStates[i].scrollTop = r3 - gBagPocketScrollStates[i].cursorMax; + } + else + { + if (gBagPocketScrollStates[i].cursorPos > r3) + gBagPocketScrollStates[i].cursorPos = r3; + } + } +} + +void ResetBagScrollPositions(void) +{ + u16 i; + + for (i = 0; i < NUM_BAG_POCKETS; i++) + { + gBagPocketScrollStates[i].cursorPos = 0; + gBagPocketScrollStates[i].scrollTop = 0; + gBagPocketScrollStates[i].numSlots = 0; + gBagPocketScrollStates[i].cursorMax = 0; + } + sCurrentBagPocket = 0; +} + +static void sub_80A36B8(u16 *a, u8 b, u8 c, u8 d, u8 e) +{ + u16 i; + u16 j; + + for (i = c; i <= c + e; i++) + { + for (j = b; j <= b + d; j++) + { + u32 index = j + i * 32; + + a[index] = 0; + } + } +} + +void ClearBag(void) +{ + u16 i; + + for (i = 0; i < NUM_BAG_POCKETS; i++) + ClearItemSlots(gBagPockets[i].itemSlots, gBagPockets[i].capacity); + ResetBagScrollPositions(); +} + +static void sub_80A3740(void) +{ + const u16 colors[2] = {RGB(14, 15, 16), RGB_WHITE}; + + LoadPalette(&colors[1], 0xD1, sizeof(colors[1])); + LoadPalette(&colors[0], 0xD8, sizeof(colors[0])); +} + +static void sub_80A3770(void) +{ + if (sReturnLocation == RETURN_TO_FIELD_0) + { + sPopupMenuActionList = sItemPopupMenuChoicesTable[sCurrentBagPocket]; + if (sCurrentBagPocket != BAG_POCKET_BERRIES) + gUnknown_02038564 = 4; + else + gUnknown_02038564 = 6; + } +} + +static void sub_80A37C0(u8 taskId) +{ + gTasks[taskId].func = sub_80A50C8; + StartVerticalScrollIndicators(0); + StartVerticalScrollIndicators(1); + StartVerticalScrollIndicators(2); + StartVerticalScrollIndicators(3); +} + +static void sub_80A37F8(u8 taskId) +{ + u8 r5 = gUnknown_0203855A; + + if (r5 < 16) + { + gUnknown_0203855A++; + sub_80A396C(gBGTilemapBuffers[2], r5, gUnknown_0203855A, 0x4F); + sub_80A39E4(gBGTilemapBuffers[2], sCurrentBagPocket + 1, gUnknown_0203855A / 2, gTasks[taskId].data[5]); + gUnknown_02038558 = 1; + sub_80A48E8(taskId, r5 / 2, gUnknown_0203855A / 2 - 1); + gUnknown_02038558 = 0; + return; + } + + if (gLinkOpen == TRUE) + { + u32 index = gBagPocketScrollStates[sCurrentBagPocket].scrollTop + gBagPocketScrollStates[sCurrentBagPocket].cursorPos; + + ItemListMenu_ChangeDescription(gCurrentBagPocketItemSlots[index].itemId, gUnknown_02038562); + gUnknown_02038562++; + } + else + { + while (gUnknown_02038562 < 3) + { + u32 index = gBagPocketScrollStates[sCurrentBagPocket].scrollTop + gBagPocketScrollStates[sCurrentBagPocket].cursorPos; + + ItemListMenu_ChangeDescription(gCurrentBagPocketItemSlots[index].itemId, gUnknown_02038562); + gUnknown_02038562++; + } + } + if (gUnknown_02038562 == 3) + { + gUnknown_0203855A = 16; + gUnknown_0203855B = sCurrentBagPocket + 1; + sub_80A37C0(FindTaskIdByFunc(sub_80A4F68)); + DestroyTask(taskId); + ItemListMenu_InitMenu(); + sub_80F979C(2, 0); + sub_80F979C(3, 0); + } +} + +static void sub_80A3954(u16 *a) +{ + CpuCopy16(gUnknown_08E77004, a, 0x800); +} + +static void sub_80A396C(u16 *a, u8 b, u8 c, u8 d) +{ + u16 *dst = a + 14 + (b + 2) * 32; + u16 i; + + while (c > b++) + { + for (i = 0; i < 15; i++) + dst[i] = d; + dst += 32; + } +} + +static void sub_80A39B8(u16 *a, u8 b) +{ + u8 var = b * 2; + + sub_809D104(a, 4, 10, gUnknown_08E96EC8, 0, var, 8, 2); +} + +static void sub_80A39E4(u16 *a, u8 b, u8 c, s8 d) +{ + u16 r2 = b * 2; + u16 r7; + + if (d == -1) + { + r7 = (b + 1) * 2; + if (b == 5) + r7 = 2; + + sub_809D104(a, 4, 10, gUnknown_08E96EC8, 8 - c, r2, c, 2); + sub_809D104(a, c + 4, 10, gUnknown_08E96EC8, 0, r7, 8 - c, 2); + } + else if (d == 1) + { + r7 = (b - 1) * 2; + if (b == 1) + r7 = 10; + + sub_809D104(a, 4, 10, gUnknown_08E96EC8, c, r7, 8 - c, 2); + sub_809D104(a, 12 - c, 10, gUnknown_08E96EC8, 0, r2, c, 2); + } +} + +// Draws dots under the bag sprite, showing which pocket is selected +static void DrawPocketIndicatorDots(u16 *tileMapBuffer, u8 selectedPocket) +{ + u8 i; + + for (i = 0; i < NUM_BAG_POCKETS; i++) + { + if (i == selectedPocket) + tileMapBuffer[0x125 + i] = 0x107D; + else + tileMapBuffer[0x125 + i] = 0x107C; + } +} + +static void ChangePocket(u16 *tileMapBuffer, s8 delta) +{ + u8 taskId; + + sCurrentBagPocket += delta; + // Wrap around + if (sCurrentBagPocket >= NUM_BAG_POCKETS) + sCurrentBagPocket = 0; + if (sCurrentBagPocket < 0) + sCurrentBagPocket = NUM_BAG_POCKETS - 1; + + sub_80A76A0(); + sub_80A7590(); + gCurrentBagPocketItemSlots = gBagPockets[sCurrentBagPocket].itemSlots; + sub_80A3D24(sCurrentBagPocket); + gUnknown_0203855A = 0; + sub_80A3954(tileMapBuffer); + sub_80A396C(tileMapBuffer, 0, 16, 3); + sub_80A39B8(tileMapBuffer, 0); + gUnknown_0203855B = 6; + gUnknown_02038562 = 0; + taskId = FindTaskIdByFunc(sub_80A37F8); + if (taskId == 0xFF) + taskId = CreateTask(sub_80A37F8, 8); + gTasks[taskId].data[5] = delta; +} + +static void SwapItemSlots(struct ItemSlot *a, struct ItemSlot *b) +{ + struct ItemSlot temp = *a; + + *a = *b; + *b = temp; +} + +static void RemoveEmptyItemSlots(struct BagPocket pocket) +{ + u16 i; + u16 j; + + for (i = 0; i < pocket.capacity - 1; i++) + { + for (j = i + 1; j < pocket.capacity; j++) + { + if (pocket.itemSlots[i].quantity == 0) + SwapItemSlots(&pocket.itemSlots[i], &pocket.itemSlots[j]); + } + } +} + +static void SortItemSlots(struct BagPocket pocket) +{ + u16 i; + u16 j; + + for (i = 0; i < pocket.capacity; i++) + { + for (j = i + 1; j < pocket.capacity; j++) + { + if (pocket.itemSlots[i].quantity != 0 && pocket.itemSlots[j].quantity != 0 + && pocket.itemSlots[i].itemId > pocket.itemSlots[j].itemId) + SwapItemSlots(&pocket.itemSlots[i], &pocket.itemSlots[j]); + } + } +} + +static void UpdateBagPocket(u8 pocketNum) +{ + u16 i; + + gBagPocketScrollStates[pocketNum].numSlots = 0; + for (i = 0; i < gBagPockets[pocketNum].capacity; i++) + { + if (gBagPockets[pocketNum].itemSlots[i].quantity != 0) + gBagPocketScrollStates[pocketNum].numSlots++; + } + RemoveEmptyItemSlots(gBagPockets[pocketNum]); +} + +static void UpdateAllBagPockets(void) +{ + u8 i; + + for (i = 0; i < NUM_BAG_POCKETS; i++) + UpdateBagPocket(i); +} + +static void sub_80A3D24(u8 pocketNum) +{ + if (gBagPocketScrollStates[pocketNum].numSlots >= 7) + gBagPocketScrollStates[pocketNum].cursorMax = 7; + else + gBagPocketScrollStates[pocketNum].cursorMax = gBagPocketScrollStates[pocketNum].numSlots; +} + +static void sub_80A3D40(void) +{ + u8 i; + + for (i = 0; i < NUM_BAG_POCKETS; i++) + sub_80A3D24(i); +} + +static void sub_80A3D5C(u8 taskId) +{ + u32 index = gBagPocketScrollStates[sCurrentBagPocket].scrollTop + gBagPocketScrollStates[sCurrentBagPocket].cursorPos; + + gCurrentBagPocketItemSlots[index].quantity -= gTasks[taskId].data[1]; + if (gCurrentBagPocketItemSlots[index].quantity == 0) // item slot will be removed if the quantity is zero + { + // Un-register the item if registered + if (gSaveBlock1.registeredItem == gCurrentBagPocketItemSlots[index].itemId) + { + RemoveSelectIconFromRegisteredItem(); + gSaveBlock1.registeredItem = ITEM_NONE; + } + + gCurrentBagPocketItemSlots[index].itemId = ITEM_NONE; + if (gBagPocketScrollStates[sCurrentBagPocket].scrollTop + 7 == gBagPocketScrollStates[sCurrentBagPocket].numSlots + && gBagPocketScrollStates[sCurrentBagPocket].scrollTop != 0) + gBagPocketScrollStates[sCurrentBagPocket].scrollTop--; + UpdateBagPocket(sCurrentBagPocket); + } + sub_80A3D24(sCurrentBagPocket); +} + +void sub_80A3E0C(void) +{ + u32 index = gBagPocketScrollStates[sCurrentBagPocket].scrollTop + gBagPocketScrollStates[sCurrentBagPocket].cursorPos; + + if (gCurrentBagPocketItemSlots[index].quantity == 0) + { + gCurrentBagPocketItemSlots[index].itemId = 0; + if (gBagPocketScrollStates[sCurrentBagPocket].scrollTop + 7 == gBagPocketScrollStates[sCurrentBagPocket].numSlots + && gBagPocketScrollStates[sCurrentBagPocket].scrollTop != 0) + gBagPocketScrollStates[sCurrentBagPocket].scrollTop--; + UpdateBagPocket(sCurrentBagPocket); + } + sub_80A3D24(sCurrentBagPocket); +} + +static void nullsub_16(void) +{ +} + +static void sub_80A3E70(u8 a, u8 b) +{ + struct ItemSlot temp = gCurrentBagPocketItemSlots[a]; + + gCurrentBagPocketItemSlots[a] = gCurrentBagPocketItemSlots[b]; + gCurrentBagPocketItemSlots[b] = temp; +} + +static void sub_80A3E90(u8 taskId) +{ + PlaySE(SE_SELECT); + nullsub_16(); + sub_80A3E70( + gTasks[taskId].data[10] - 1, + gBagPocketScrollStates[sCurrentBagPocket].cursorPos + gBagPocketScrollStates[sCurrentBagPocket].scrollTop); + gTasks[taskId].data[10] = 0; + sub_80A763C(); + sub_80A7528(0); + ItemListMenu_InitMenu(); +} + +static void sub_80A3EF4(u8 taskId) +{ + u8 r2; + + PlaySE(SE_SELECT); + nullsub_16(); + r2 = gTasks[taskId].data[10] - gBagPocketScrollStates[sCurrentBagPocket].scrollTop - 1; + gTasks[taskId].data[10] = 0; + if (r2 < 8) + sub_80A48E8(taskId, r2, r2); + sub_80A7528(0); +} + +static void sub_80A3F50(u8 taskId) +{ + gTasks[taskId].data[10] = gBagPocketScrollStates[sCurrentBagPocket].scrollTop + gBagPocketScrollStates[sCurrentBagPocket].cursorPos + 1; + sub_80A48E8(taskId, gBagPocketScrollStates[sCurrentBagPocket].cursorPos, gBagPocketScrollStates[sCurrentBagPocket].cursorPos); + sub_80A7528(1); +} + +void sub_80A3FA0(u16 *a, u8 b, u8 c, u8 d, u8 e, u16 f) +{ + s16 i; + s16 j; + + for (i = c; i < c + e; i++) + { + for (j = b; j < b + d; j++) + { + u32 index = j + i * 32; + + a[index] = f; + } + } +} + +static void sub_80A4008(u16 *a, u8 b, u8 c, u8 d, u8 e) +{ + sub_80A3FA0(a, b, c, d, e, 1); +} + +static void DrawSelectIcon(u32 itemPos) +{ + u16 *ptr1 = gBGTilemapBuffers[2] + 0x5A; + + ptr1 += itemPos * 64; + ptr1[0] = 0x5A; + ptr1[1] = 0x5B; + ptr1[2] = 0x5C; + ptr1[32] = 0x6A; + ptr1[33] = 0x6B; + ptr1[34] = 0x6C; +} + +static void MoveSelectIcon(u8 itemPos) +{ + u16 i; + u16 *ptr; + + ptr = gBGTilemapBuffers[2] + 0x5A; + for (i = 0; i < 16; i++) + { + ptr[0] = 0x4F; + ptr[1] = 0x4F; + ptr[2] = 0x4F; + ptr += 32; + } + + ptr = gBGTilemapBuffers[2] + 0x5A + itemPos * 64; + ptr[0] = 0x5A; + ptr[1] = 0x5B; + ptr[2] = 0x5C; + ptr[32] = 0x6A; + ptr[33] = 0x6B; + ptr[34] = 0x6C; +} + +static void EraseSelectIcon(u8 itemPos) +{ + u16 *ptr = gBGTilemapBuffers[2] + 0x5A; + + ptr += itemPos * 64; + ptr[0] = 0x4F; + ptr[1] = 0x4F; + ptr[2] = 0x4F; + ptr[32] = 0x4F; + ptr[33] = 0x4F; + ptr[34] = 0x4F; +} + +static void RemoveSelectIconFromRegisteredItem(void) +{ + u8 i; + + for (i = 0; i < 8; i++) + { + if (gBagPocketScrollStates[sCurrentBagPocket].scrollTop + i == gBagPocketScrollStates[sCurrentBagPocket].numSlots) + break; + if (gCurrentBagPocketItemSlots[gBagPocketScrollStates[sCurrentBagPocket].scrollTop + i].itemId == gSaveBlock1.registeredItem) + { + EraseSelectIcon(i); + break; + } + } +} + +static void AddSelectIconToRegisteredItem(void) +{ + RemoveSelectIconFromRegisteredItem(); + MoveSelectIcon(gBagPocketScrollStates[sCurrentBagPocket].cursorPos); +} + +void sub_80A4164(u8 *dest, u16 value, enum StringConvertMode mode, u8 digits) +{ + *dest++ = CHAR_MULT_SIGN; + dest[0] = EXT_CTRL_CODE_BEGIN; + dest[1] = 0x14; + dest[2] = 6; + dest += 3; + ConvertIntToDecimalStringN(dest, value, mode, digits); +} + +void sub_80A418C(u16 value, enum StringConvertMode mode, u8 c, u8 d, u8 digits) +{ + sub_80A4164(gStringVar1, value, mode, digits); + MenuPrint(gStringVar1, c, d); +} + +static void sub_80A41D4(u8 taskId) +{ + sub_80A763C(); +} + +static void sub_80A41E0(u8 *a, u16 b, const u8 *c, u16 d, u8 e) +{ + a[0] = EXT_CTRL_CODE_BEGIN; + a[1] = 0x13; + a[2] = 8; + a += 3; + a = ConvertIntToDecimalStringN(a, b, STR_CONV_MODE_LEADING_ZEROS, 2); + a[0] = EXT_CTRL_CODE_BEGIN; + a[1] = 0x13; + a[2] = 0x18; + a += 3; + a = sub_8072C74(a, c, 0x78 - (e + 1) * 6, 0); + *a++ = CHAR_MULT_SIGN; + sub_8072C14(a, d, 0x78, 1); +} + +static u8 *sub_80A425C(u8 taskId, u8 *text, u8 c) +{ + if (gTasks[taskId].data[10] - gBagPocketScrollStates[sCurrentBagPocket].scrollTop - 1 == c) + { + text[0] = EXT_CTRL_CODE_BEGIN; + text[1] = 1; + text[2] = 2; + text += 3; + } + return text; +} + +static bool8 sub_80A42B0(u8 itemPos, int b) +{ + u8 r5; + u16 *ptr; + struct UnknownStruct3 *r8 = &gUnknown_02038540; + + if (gBagPocketScrollStates[sCurrentBagPocket].scrollTop + itemPos > gBagPocketScrollStates[sCurrentBagPocket].numSlots) + return TRUE; + if (gBagPocketScrollStates[sCurrentBagPocket].scrollTop + itemPos == gBagPocketScrollStates[sCurrentBagPocket].numSlots) + { + if (sReturnLocation == RETURN_TO_FIELD_5) + return TRUE; + r5 = itemPos * 2 + 2; + sub_8072C74(gStringVar1, gOtherText_CloseBag, 0x78, 0); + MenuPrint(gStringVar1, 14, r5); + ptr = gBGTilemapBuffers[2] + 14 + r5 * 32; + ptr[0] = 0x4F; + ptr[1] = 0x4F; + ptr[32] = 0x4F; + ptr[33] = 0x4F; + if (itemPos == 7) + return TRUE; + if ((b == 1 && r8->unk2 != 0) || b == 2) + MenuFillWindowRectWithBlankTile(14, r5 + 2, 29, 13); + else + MenuFillWindowRectWithBlankTile(14, r5 + 2, 29, 17); + return TRUE; + } + return FALSE; +} + +static void sub_80A4380(u16 a, int b, int c, int d) +{ + u8 i; + + for (i = b; i <= c; i++) + { + u8 r4; + u8 r5; + u8 *text; + + if (sub_80A42B0(i, d) == TRUE) + break; + r4 = gBagPocketScrollStates[sCurrentBagPocket].scrollTop + i; + r5 = i * 2 + 2; + text = gStringVar1; + text = sub_80A425C(a, text, i); + text = sub_8072C74(text, ItemId_GetItem(gCurrentBagPocketItemSlots[r4].itemId)->name, 0x66, 0); + *text++ = CHAR_MULT_SIGN; + sub_8072C14(text, gCurrentBagPocketItemSlots[r4].quantity, 0x78, 1); + MenuPrint(gStringVar1, 14, r5); + } +} + +static void sub_80A444C(u16 a, int b, int c, int d) +{ + u8 i; + + for (i = b; i <= c; i++) + { + u8 r4; + u8 r5; + u8 *text; + + if (sub_80A42B0(i, d) == TRUE) + break; + r4 = gBagPocketScrollStates[sCurrentBagPocket].scrollTop + i; + r5 = i * 2 + 2; + text = gStringVar1; + text = sub_80A425C(a, text, i); +#if ENGLISH + sub_8072C74(text, ItemId_GetItem(gCurrentBagPocketItemSlots[r4].itemId)->name, 0x60, 0); +#else + sub_8072C74(text, ItemId_GetItem(gCurrentBagPocketItemSlots[r4].itemId)->name, 0x63, 0); +#endif + MenuPrint(gStringVar1, 14, r5); + if (gUnknown_02038558 != 0) + { + if (gCurrentBagPocketItemSlots[r4].itemId == gSaveBlock1.registeredItem) + DrawSelectIcon(i); + } + else + { + if (gCurrentBagPocketItemSlots[r4].itemId == gSaveBlock1.registeredItem) + MoveSelectIcon(i); + else + EraseSelectIcon(i); + } + } +} + +// more gBGTilemapBuffers shenanigans +#ifdef NONMATCHING +static void sub_80A4548(u16 a, int b, int c, int d) +{ + u8 i; + + for (i = b; i <= c; i++) + { + u8 r4; + u8 sp10; + u32 r5; + u8 *text; + + if (sub_80A42B0(i, d) == TRUE) + break; + r4 = gBagPocketScrollStates[sCurrentBagPocket].scrollTop + i; + sp10 = i * 2 + 2; + r5 = sp10 * 32 + 14; + text = gStringVar1; + text = sub_80A425C(a, text, i); + if (gCurrentBagPocketItemSlots[r4].itemId < 0x153) + { + const u8 *r2; + + gBGTilemapBuffers[2][r5 + 0] = 0x59; + gBGTilemapBuffers[2][r5 + 1] = 0x4F; + gBGTilemapBuffers[2][r5 + 32] = 0x69; + gBGTilemapBuffers[2][r5 + 33] = 0x4F; + r2 = gMoveNames[ItemIdToBattleMoveId(gCurrentBagPocketItemSlots[r4].itemId)]; + sub_80A41E0(text, gCurrentBagPocketItemSlots[r4].itemId - 288, r2, gCurrentBagPocketItemSlots[r4].quantity, 2); + } + else + { + const u8 *moveName; + + gBGTilemapBuffers[2][r5 + 0] = 0x105D; + gBGTilemapBuffers[2][r5 + 1] = 0x105E; + gBGTilemapBuffers[2][r5 + 32] = 0x106D; + gBGTilemapBuffers[2][r5 + 33] = 0x106E; + text[0] = EXT_CTRL_CODE_BEGIN; + text[1] = 0x13; + text[2] = 0x11; + text += 3; + text = ConvertIntToDecimalString(text, gCurrentBagPocketItemSlots[r4].itemId); + text[0] = EXT_CTRL_CODE_BEGIN; + text[1] = 0x13; + text[2] = 0x18; + text += 3; + moveName = gMoveNames[ItemIdToBattleMoveId(gCurrentBagPocketItemSlots[r4].itemId)]; + sub_8072C74(text, moveName, 0x78, 0); + } + MenuPrint(gStringVar1, 14, sp10); + } +} +#else +__attribute__((naked)) +static void sub_80A4548(u16 a, int b, int c, int d) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + sub sp, 0x14\n\ + str r2, [sp, 0x8]\n\ + str r3, [sp, 0xC]\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + str r0, [sp, 0x4]\n\ + lsls r1, 24\n\ + lsrs r1, 24\n\ + mov r8, r1\n\ + ldr r0, _080A456C @ =gBGTilemapBuffers + 0x1000\n\ + mov r9, r0\n\ + b _080A46C2\n\ + .align 2, 0\n\ +_080A456C: .4byte gBGTilemapBuffers + 0x1000\n\ +_080A4570:\n\ + ldr r1, _080A461C @ =gBagPocketScrollStates\n\ + ldr r0, _080A4620 @ =sCurrentBagPocket\n\ + ldrb r0, [r0]\n\ + lsls r0, 24\n\ + asrs r0, 24\n\ + lsls r0, 2\n\ + adds r0, r1\n\ + ldrb r4, [r0, 0x1]\n\ + add r4, r8\n\ + lsls r4, 24\n\ + lsrs r4, 24\n\ + mov r1, r8\n\ + lsls r0, r1, 25\n\ + movs r3, 0x80\n\ + lsls r3, 18\n\ + adds r0, r3\n\ + lsrs r0, 24\n\ + str r0, [sp, 0x10]\n\ + lsls r0, 5\n\ + adds r0, 0xE\n\ + adds r5, r0, 0\n\ + ldr r6, _080A4624 @ =gStringVar1\n\ + ldr r1, [sp, 0x4]\n\ + lsls r0, r1, 24\n\ + lsrs r0, 24\n\ + adds r1, r6, 0\n\ + mov r2, r8\n\ + bl sub_80A425C\n\ + adds r6, r0, 0\n\ + ldr r3, _080A4628 @ =gCurrentBagPocketItemSlots\n\ + mov r10, r3\n\ + ldr r0, [r3]\n\ + lsls r7, r4, 2\n\ + adds r3, r7, r0\n\ + ldrh r1, [r3]\n\ + movs r0, 0xA9\n\ + lsls r0, 1\n\ + cmp r1, r0\n\ + bhi _080A4634\n\ + lsls r0, r5, 1\n\ + add r0, r9\n\ + movs r1, 0x59\n\ + strh r1, [r0]\n\ + adds r0, r5, 0x1\n\ + lsls r0, 1\n\ + add r0, r9\n\ + movs r2, 0x4F\n\ + strh r2, [r0]\n\ + adds r0, r5, 0\n\ + adds r0, 0x20\n\ + lsls r0, 1\n\ + add r0, r9\n\ + movs r1, 0x69\n\ + strh r1, [r0]\n\ + adds r0, r5, 0\n\ + adds r0, 0x21\n\ + lsls r0, 1\n\ + add r0, r9\n\ + strh r2, [r0]\n\ + ldrh r0, [r3]\n\ + bl ItemIdToBattleMoveId\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + movs r1, 0xD\n\ + adds r2, r0, 0\n\ + muls r2, r1\n\ + ldr r0, _080A462C @ =gMoveNames\n\ + adds r2, r0\n\ + mov r1, r10\n\ + ldr r0, [r1]\n\ + adds r0, r7, r0\n\ + ldr r3, _080A4630 @ =0xfffffee0\n\ + adds r1, r3, 0\n\ + ldrh r3, [r0]\n\ + adds r1, r3\n\ + lsls r1, 16\n\ + lsrs r1, 16\n\ + ldrh r3, [r0, 0x2]\n\ + movs r0, 0x2\n\ + str r0, [sp]\n\ + adds r0, r6, 0\n\ + bl sub_80A41E0\n\ + b _080A46AE\n\ + .align 2, 0\n\ +_080A461C: .4byte gBagPocketScrollStates\n\ +_080A4620: .4byte sCurrentBagPocket\n\ +_080A4624: .4byte gStringVar1\n\ +_080A4628: .4byte gCurrentBagPocketItemSlots\n\ +_080A462C: .4byte gMoveNames\n\ +_080A4630: .4byte 0xfffffee0\n\ +_080A4634:\n\ + lsls r0, r5, 1\n\ + add r0, r9\n\ + ldr r1, _080A46EC @ =0x0000105d\n\ + strh r1, [r0]\n\ + adds r0, r5, 0x1\n\ + lsls r0, 1\n\ + add r0, r9\n\ + adds r1, 0x1\n\ + strh r1, [r0]\n\ + adds r0, r5, 0\n\ + adds r0, 0x20\n\ + lsls r0, 1\n\ + add r0, r9\n\ + adds r1, 0xF\n\ + strh r1, [r0]\n\ + adds r0, r5, 0\n\ + adds r0, 0x21\n\ + lsls r0, 1\n\ + add r0, r9\n\ + adds r1, 0x1\n\ + strh r1, [r0]\n\ + movs r0, 0xFC\n\ + strb r0, [r6]\n\ + movs r4, 0x13\n\ + strb r4, [r6, 0x1]\n\ + movs r0, 0x11\n\ + strb r0, [r6, 0x2]\n\ + adds r6, 0x3\n\ + mov r1, r10\n\ + ldr r0, [r1]\n\ + adds r0, r7, r0\n\ + ldrh r1, [r0]\n\ + ldr r3, _080A46F0 @ =0xfffffeae\n\ + adds r1, r3\n\ + adds r0, r6, 0\n\ + bl ConvertIntToDecimalString\n\ + adds r6, r0, 0\n\ + movs r0, 0xFC\n\ + strb r0, [r6]\n\ + strb r4, [r6, 0x1]\n\ + movs r0, 0x18\n\ + strb r0, [r6, 0x2]\n\ + adds r6, 0x3\n\ + mov r1, r10\n\ + ldr r0, [r1]\n\ + adds r0, r7, r0\n\ + ldrh r0, [r0]\n\ + bl ItemIdToBattleMoveId\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + movs r1, 0xD\n\ + muls r1, r0\n\ + ldr r0, _080A46F4 @ =gMoveNames\n\ + adds r1, r0\n\ + adds r0, r6, 0\n\ + movs r2, 0x78\n\ + movs r3, 0\n\ + bl sub_8072C74\n\ +_080A46AE:\n\ + ldr r0, _080A46F8 @ =gStringVar1\n\ + movs r1, 0xE\n\ + ldr r2, [sp, 0x10]\n\ + bl MenuPrint\n\ + mov r0, r8\n\ + adds r0, 0x1\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + mov r8, r0\n\ +_080A46C2:\n\ + ldr r3, [sp, 0x8]\n\ + cmp r8, r3\n\ + bgt _080A46DA\n\ + mov r0, r8\n\ + ldr r1, [sp, 0xC]\n\ + bl sub_80A42B0\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + cmp r0, 0x1\n\ + beq _080A46DA\n\ + b _080A4570\n\ +_080A46DA:\n\ + add sp, 0x14\n\ + pop {r3-r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_080A46EC: .4byte 0x0000105d\n\ +_080A46F0: .4byte 0xfffffeae\n\ +_080A46F4: .4byte gMoveNames\n\ +_080A46F8: .4byte gStringVar1\n\ + .syntax divided\n"); +} +#endif + +static void sub_80A46FC(u16 a, int b, int c, int d) +{ + u8 i; + + for (i = b; i <= c; i++) + { + u8 r4; + u8 r5; + u8 *text; + register int var asm("r0"); + + if (sub_80A42B0(i, d) == TRUE) + break; + r4 = gBagPocketScrollStates[sCurrentBagPocket].scrollTop + i; + r5 = i * 2 + 2; + + var = 14 + r5 * 32; + gBGTilemapBuffers[2][var] = 0x59; + var += 32; + gBGTilemapBuffers[2][var] = 0x69; + + text = gStringVar1; + text = sub_80A425C(a, text, i); + CopyItemName(gCurrentBagPocketItemSlots[r4].itemId, gStringVar2); + sub_80A41E0(text, gCurrentBagPocketItemSlots[r4].itemId - 0x84, gStringVar2, gCurrentBagPocketItemSlots[r4].quantity, 3); + MenuPrint(gStringVar1, 14, r5); + } +} + +static void sub_80A47E8(u16 a, int b, int c, int d) +{ + switch (sCurrentBagPocket) + { + case BAG_POCKET_ITEMS: + case BAG_POCKET_POKE_BALLS: + sub_80A4380(a, b, c, d); + break; + case BAG_POCKET_KEY_ITEMS: + sub_80A444C(a, b, c, d); + break; + case BAG_POCKET_TMs_HMs: + sub_80A4548(a, b, c, d); + break; + case BAG_POCKET_BERRIES: + sub_80A46FC(a, b, c, d); + break; + } + if (gBagPocketScrollStates[sCurrentBagPocket].scrollTop != 0) + sub_80F979C(0, 0); + else + sub_80F979C(0, 1); + if ((sReturnLocation != RETURN_TO_FIELD_5 && gBagPocketScrollStates[sCurrentBagPocket].scrollTop + 8 < gBagPocketScrollStates[sCurrentBagPocket].numSlots + 1) + || (sReturnLocation == RETURN_TO_FIELD_5 && gBagPocketScrollStates[sCurrentBagPocket].scrollTop + 8 < gBagPocketScrollStates[sCurrentBagPocket].numSlots)) + sub_80F979C(1, 0); + else + sub_80F979C(1, 1); +} + +static void sub_80A48E8(u16 taskId, int b, int c) +{ + sub_80A47E8(taskId, b, c, 0); +} + +static void sub_80A48F8(u16 taskId) +{ + sub_80A47E8(taskId, 0, 5, 2); +} + +static void ItemListMenu_InitDescription(s16 itemId) +{ + u8 r5; + + if (gBagPocketScrollStates[sCurrentBagPocket].scrollTop + gBagPocketScrollStates[sCurrentBagPocket].cursorPos == gBagPocketScrollStates[sCurrentBagPocket].numSlots) + { + r5 = sub_8072A18(gOtherText_ReturnTo, 4, 0x68, 0x68, 1); + r5 += sub_8072A18(gUnknown_0840E740[sReturnLocation], 4, 0x78, 0x68, 1); + } + else + { + r5 = sub_8072A18(ItemId_GetDescription(itemId), 4, 0x68, 0x68, 1); + } + + if (r5 < 3) + MenuZeroFillWindowRect(0, 13 + r5 * 2, 13, 20); +} + +static void ItemListMenu_ChangeDescription(s16 itemId, int b) +{ + u8 description[100]; + + if (gBagPocketScrollStates[sCurrentBagPocket].scrollTop + gBagPocketScrollStates[sCurrentBagPocket].cursorPos == gBagPocketScrollStates[sCurrentBagPocket].numSlots) + { + if (b == 0) + { + MenuZeroFillWindowRect(0, 13, 13, 20); + MenuPrint_PixelCoords(gOtherText_ReturnTo, 4, 0x68, 0); + } + else if (b == 1) + { + MenuPrint_PixelCoords(gUnknown_0840E740[sReturnLocation], 4, 0x78, 0); + } + } + else + { + if (b == 0) + MenuZeroFillWindowRect(0, 13, 13, 20); + if (ItemId_CopyDescription(description, itemId, b)) + MenuPrint_PixelCoords(description, 4, 104 + b * 16, 0); + } +} + +static bool32 CopyTextLine(u8 *destination, const u8 *source, u32 c) +{ + u32 r4 = c + 1; + const u8 *src = source; + u8 *dst = destination; + + while (1) + { + if (*src == CHAR_NEWLINE || *src == EOS) + { + r4--; + if (r4 == 0) + { + *dst = EOS; + return TRUE; + } + if (*src == EOS) + return FALSE; + // got a new line - reset dst pointer + dst = destination; + src++; + } + else + { + *dst++ = *src++; + } + } +} + +static void sub_80A4A98(const u8 *text, u32 line) +{ + u8 buffer[100]; + + if (line == 0) + MenuZeroFillWindowRect(0, 13, 13, 20); + if (CopyTextLine(buffer, text, line)) + MenuPrint_PixelCoords(buffer, 4, 104 + line * 16, 0); +} + +static void sub_80A4ADC(u8 taskId) +{ + if (gTasks[taskId].data[10] == 0) + sub_80A7528(0); + PlaySE(SE_SELECT); + gUnknown_0203855C = 1; +} + +static void sub_80A4B14(s8 a, u8 b) +{ + gBagPocketScrollStates[sCurrentBagPocket].scrollTop += a; + MoveMenuCursor(0); + sub_80A73C0(); + sub_80A763C(); + sub_80A4ADC(b); +} + +static void sub_80A4B58(s8 delta, u8 b) +{ + gBagPocketScrollStates[sCurrentBagPocket].cursorPos = MoveMenuCursor(delta); + sub_80A73C0(); + sub_80A4ADC(b); +} + +static const u8 *sub_80A4B90(u16 itemId) +{ + if (TestPlayerAvatarFlags(6)) + { + if (itemId == ITEM_MACH_BIKE || itemId == ITEM_ACRO_BIKE) + return gOtherText_Walk; + } + if (ItemIsMail(itemId) == TRUE) + return gOtherText_Check; + return sItemPopupMenuActions[sPopupMenuActionList[0]].text; +} + +static void sub_80A4BF0(u16 *a) +{ + u8 i; + + if (gUnknown_02038564 == 4) + { + MenuDrawTextWindow(0, 7, 13, 12); + sub_80A4008(a, 1, 8, 12, 4); + if (sub_80F9344() == TRUE && sReturnLocation == RETURN_TO_FIELD_5) + { + sub_80A7834(1, 0); + } + else + { + for (i = 0; i < gUnknown_02038564; i++) + { + const u8 *text; + + if (i == 0) + text = sub_80A4B90(gScriptItemId); + else + text = sItemPopupMenuActions[sPopupMenuActionList[i]].text; + MenuPrint(text, 1 + (i / 2) * 6, 8 + (i % 2) * 2); + } + } + if (sReturnLocation == RETURN_TO_FIELD_5) + InitMenu(0, 1, 8, gUnknown_02038564, sPopupMenuSelection, 1); + else + InitMenu(0, 1, 8, gUnknown_02038564, 0, 1); + sub_8072DCC(0x2F); + } + else + { + MenuDrawTextWindow(0, 5, 13, 12); + sub_80A4008(a, 1, 6, 12, 6); + for (i = 0; i < gUnknown_02038564; i++) + MenuPrint(sItemPopupMenuActions[sPopupMenuActionList[i]].text, 1 + (i / 3) * 6, 6 + (i % 3) * 2); + InitMenu(0, 1, 6, gUnknown_02038564, 0, 1); + sub_8072DCC(0x2F); + } + sub_80A7528(2); +} + +static void sub_80A4DA4(u16 *a) +{ + sub_80A73FC(); + sub_80A36B8(a, 0, 6, 13, 6); + MenuZeroFillWindowRect(0, 5, 13, 12); + sub_80A7590(); +} + +static void sub_80A4DD8(u8 taskId, u8 b, u8 c, u8 d, u8 e, u8 digits) +{ + gTasks[taskId].data[1] = 1; + gTasks[taskId].data[2] = b + 2; + gTasks[taskId].data[3] = c + 1; + MenuDrawTextWindow(b, c, b + d, c + e); + sub_80A4008(gBGTilemapBuffers[1], b + 1, c + 1, d - 1, e - 1); + sub_80A418C(1, 1, b + 2, c + 1, digits); +} + +static void sub_80A4E8C(s8 delta, u8 b) +{ + PlaySE(SE_SELECT); + sub_80F979C(0, 1); + sub_80F979C(1, 1); + sub_80F979C(2, 1); + sub_80F979C(3, 1); + PauseVerticalScrollIndicator(0); + PauseVerticalScrollIndicator(1); + PauseVerticalScrollIndicator(2); + PauseVerticalScrollIndicator(3); + ChangePocket(gBGTilemapBuffers[2], delta); + DrawPocketIndicatorDots(gBGTilemapBuffers[2], sCurrentBagPocket); + sub_80A3770(); + sub_80A7C64(); + CreateBagPokeballSprite(b); +} + +static bool8 sub_80A4F0C(void) +{ + if (sReturnLocation == RETURN_TO_FIELD_5 || sReturnLocation == RETURN_TO_FIELD_4) + return FALSE; + if (gMain.newKeys == DPAD_RIGHT || sub_80F9284() == 2) + { + sub_80A4E8C(1, 2); + return TRUE; + } + if (gMain.newKeys == DPAD_LEFT || sub_80F9284() == 1) + { + sub_80A4E8C(-1, 1); + return TRUE; + } + return FALSE; +} + +static void sub_80A4F68(u8 taskId) +{ + sub_80A4F0C(); +} + +static bool8 sub_80A4F74(u8 a) +{ + bool8 retVal = FALSE; + + if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_UP) + { + if (gBagPocketScrollStates[sCurrentBagPocket].cursorPos != 0) + sub_80A4B58(-1, a); + else if (gBagPocketScrollStates[sCurrentBagPocket].scrollTop != 0) + sub_80A4B14(-1, a); + if (gLinkOpen == TRUE && gMain.keyRepeatCounter == 5) + gMain.keyRepeatCounter = 11; + retVal = TRUE; + } + else if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_DOWN) + { + if (sReturnLocation != RETURN_TO_FIELD_5) + { + if (gBagPocketScrollStates[sCurrentBagPocket].cursorPos == gBagPocketScrollStates[sCurrentBagPocket].cursorMax) + { + if (gBagPocketScrollStates[sCurrentBagPocket].scrollTop + gBagPocketScrollStates[sCurrentBagPocket].cursorPos != gBagPocketScrollStates[sCurrentBagPocket].numSlots) + sub_80A4B14(1, a); + } + else + { + sub_80A4B58(1, a); + } + } + else + { + if (gBagPocketScrollStates[sCurrentBagPocket].scrollTop + gBagPocketScrollStates[sCurrentBagPocket].cursorPos != gBagPocketScrollStates[sCurrentBagPocket].numSlots - 1) + { + if (gBagPocketScrollStates[sCurrentBagPocket].cursorPos != gBagPocketScrollStates[sCurrentBagPocket].cursorMax) + sub_80A4B58(1, a); + else + sub_80A4B14(1, a); + } + } + retVal = TRUE; + if (gLinkOpen == TRUE && gMain.keyRepeatCounter == 5) + gMain.keyRepeatCounter = 11; + } + else + { + if (gTasks[a].data[10] == 0 && sub_80A4F0C() == TRUE) + { + sub_80A73F0(); + gTasks[a].func = sub_80A4F68; + retVal = TRUE; + } + else + { + sub_80A73C0(); + } + } + return retVal; +} + +static void sub_80A50C8(u8 taskId) +{ + s16 *r5 = gTasks[taskId].data; + + if (!gPaletteFade.active) + { + if (sub_80A4F74(taskId) == TRUE) + { + sub_808B5B4(taskId); + return; + } + + if ((gMain.newKeys & SELECT_BUTTON) + && !(sCurrentBagPocket == BAG_POCKET_BERRIES || sCurrentBagPocket == BAG_POCKET_TMs_HMs) + && (sReturnLocation == RETURN_TO_FIELD_0 || sReturnLocation == RETURN_TO_BATTLE)) + { + if (r5[10] == 0) + { + if (gBagPocketScrollStates[sCurrentBagPocket].scrollTop + gBagPocketScrollStates[sCurrentBagPocket].cursorPos != gBagPocketScrollStates[sCurrentBagPocket].numSlots) + { + PlaySE(SE_SELECT); + sub_80A3F50(taskId); + } + sub_808B5B4(taskId); + } + else + { + if (gBagPocketScrollStates[sCurrentBagPocket].scrollTop + gBagPocketScrollStates[sCurrentBagPocket].cursorPos != gBagPocketScrollStates[sCurrentBagPocket].numSlots) + { + PlaySE(SE_SELECT); + sub_80A3E90(taskId); + } + else + { + sub_80A3EF4(taskId); + } + sub_808B5B4(taskId); + } + return; + } + + if (gMain.newKeys & A_BUTTON) + { + if (gBagPocketScrollStates[sCurrentBagPocket].scrollTop + gBagPocketScrollStates[sCurrentBagPocket].cursorPos == gBagPocketScrollStates[sCurrentBagPocket].numSlots) + { + if (r5[10] == 0) + { + gScriptItemId = 0; + gUnknown_083C16BC[sReturnLocation].onBagClose(taskId); + } + else + { + sub_80A3EF4(taskId); + } + sub_808B5B4(taskId); + } + else + { + if (r5[10] == 0) + { + PlaySE(SE_SELECT); + gUnknown_02038560 = gBagPocketScrollStates[sCurrentBagPocket].scrollTop + gBagPocketScrollStates[sCurrentBagPocket].cursorPos; + gScriptItemId = gCurrentBagPocketItemSlots[gUnknown_02038560].itemId; + gUnknown_083C16BC[sReturnLocation].onItemSelect(taskId); + sub_80F98A4(0); + sub_80F98A4(1); + sub_80F98A4(2); + sub_80F98A4(3); + sub_80A797C(); + } + else + { + sub_80A3E90(taskId); + } + sub_808B5B4(taskId); + } + return; + } + + if (gMain.newKeys & B_BUTTON) + { + if (r5[10] == 0) + { + if (sReturnLocation != RETURN_TO_FIELD_5) + { + gScriptItemId = 0; + gUnknown_083C16BC[sReturnLocation].onBagClose(taskId); + } + } + else + { + sub_80A3EF4(taskId); + } + sub_808B5B4(taskId); + return; + } + } +} + +bool8 sub_80A52C4(u8 taskId, u16 b) +{ + s16 *taskData = gTasks[taskId].data; + + if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_UP) + { + if (taskData[1] != b) + taskData[1]++; + else + taskData[1] = 1; + return TRUE; + } + + if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_DOWN) + { + if (taskData[1] != 1) + taskData[1]--; + else + taskData[1] = b; + return TRUE; + } + + if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_RIGHT) + { + if (taskData[1] + 10 < b) + taskData[1] += 10; + else + taskData[1] = b; + return TRUE; + } + + if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_LEFT) + { + if (taskData[1] > 10) + taskData[1] -= 10; + else + taskData[1] = 1; + return TRUE; + } + + return FALSE; +} + +static bool8 sub_80A5350(u8 taskId) +{ + s16 *taskData = gTasks[taskId].data; + + if (sub_80A52C4(taskId, gCurrentBagPocketItemSlots[gUnknown_02038560].quantity) == TRUE) + { + // if (sCurrentBagPocket == BAG_POCKET_BERRIES) Can't get it to match this way + if (sCurrentBagPocket + 1 == BAG_POCKET_BERRIES + 1) + sub_80A418C(taskData[1], 1, taskData[2], taskData[3], 3); + else + sub_80A418C(taskData[1], 1, taskData[2], taskData[3], 2); + return TRUE; + } + return FALSE; +} + +static void sub_80A53CC(void) +{ + if (sub_80A34B4() == TRUE) + { + sub_80A3770(); + gUnknown_02038563 = CreateTask(sub_80A50C8, 0); + } +} + +void sub_80A53F8(void) +{ + sReturnLocation = RETURN_TO_FIELD_0; + SetMainCallback2(sub_80A53CC); +} + +#ifdef NONMATCHING +static void sub_80A5414(u8 taskId) +{ + TaskFunc r5 = NULL; + + if (sub_80A78A0() != 0) + { + if ((gMain.newAndRepeatedKeys & DPAD_ANY) == 0x40) + { + if ((sPopupMenuSelection & 1) && sPopupMenuActionList[sPopupMenuSelection - 1] == 8) + { + PlaySE(SE_SELECT); + sPopupMenuSelection = MoveMenuCursor3(-1); + } + } + //_080A546C + else if ((gMain.newAndRepeatedKeys & DPAD_ANY) == 0x80) + { + if (!(sPopupMenuSelection & 1) && sPopupMenuActionList[sPopupMenuSelection + 1] != 8) + { + PlaySE(SE_SELECT); + sPopupMenuSelection = MoveMenuCursor3(1); + } + } + //_080A549C + else if ((gMain.newAndRepeatedKeys & DPAD_ANY) == 0x20) + { + if (sPopupMenuSelection > 1 && sPopupMenuActionList[sPopupMenuSelection - 2] != 8) + { + PlaySE(SE_SELECT); + sPopupMenuSelection = MoveMenuCursor3(-2); + } + } + //_080A54CC + else if ((gMain.newAndRepeatedKeys & DPAD_ANY) == 0x10) + { + if (sPopupMenuSelection <= 1 && sPopupMenuActionList[sPopupMenuSelection + 2] != 8) + { + PlaySE(SE_SELECT); + sPopupMenuSelection = MoveMenuCursor3(2); + } + } + //_080A5500 + else if (!(gMain.newKeys & A_BUTTON)) + { + if (gMain.newKeys & B_BUTTON) + { + gTasks[taskId].data[10] = 0; + sub_80A48E8(taskId, gBagPocketScrollStates[sCurrentBagPocket].cursorPos, gBagPocketScrollStates[sCurrentBagPocket].cursorPos); + sub_80A4DA4(gBGTilemapBuffers[1]); + r5 = sItemPopupMenuActions[sPopupMenuActionList[3]].func; + r5(taskId); + } + } + else + { + //_080A5590 + gTasks[taskId].data[10] = 0; + sub_80A4DA4(gBGTilemapBuffers[1]); + r5 = sItemPopupMenuActions[sPopupMenuActionList[sPopupMenuSelection]].func; + r5(taskId); + } + } + //_080A5552 + if (r5 == NULL) + { + if (sReturnLocation == RETURN_TO_FIELD_5) + { + if (sPopupMenuSelection == 0) + { + sub_8072DDC(12); + return; + } + //_080A55D4 + //else + //{ + if (sPopupMenuSelection == 0 || sPopupMenuSelection == 1) + sub_8072DCC(0x2F); + else + sub_8072DCC(0x30); + //} + } + //_080A55E0 + else + { + if (sPopupMenuSelection == 0 || sPopupMenuSelection == 1) + sub_8072DCC(0x2F); + else + sub_8072DCC(0x30); + } + } +} +#else +__attribute__((naked)) +static void sub_80A5414(u8 taskId) +{ + asm(".syntax unified\n\ + push {r4,r5,lr}\n\ + lsls r0, 24\n\ + lsrs r4, r0, 24\n\ + movs r5, 0\n\ + bl sub_80A78A0\n\ + cmp r0, 0\n\ + bne _080A5426\n\ + b _080A5552\n\ +_080A5426:\n\ + ldr r2, _080A5460 @ =gMain\n\ + ldrh r0, [r2, 0x30]\n\ + movs r1, 0xF0\n\ + ands r1, r0\n\ + cmp r1, 0x40\n\ + bne _080A546C\n\ + ldr r4, _080A5464 @ =sPopupMenuSelection\n\ + ldrb r1, [r4]\n\ + movs r0, 0x1\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _080A5440\n\ + b _080A5552\n\ +_080A5440:\n\ + ldrb r1, [r4]\n\ + ldr r0, _080A5468 @ =sPopupMenuActionList\n\ + ldr r0, [r0]\n\ + adds r1, r0\n\ + subs r1, 0x1\n\ + ldrb r0, [r1]\n\ + cmp r0, 0x8\n\ + bne _080A5452\n\ + b _080A5552\n\ +_080A5452:\n\ + movs r0, 0x5\n\ + bl PlaySE\n\ + movs r0, 0x1\n\ + negs r0, r0\n\ + b _080A54EE\n\ + .align 2, 0\n\ +_080A5460: .4byte gMain\n\ +_080A5464: .4byte sPopupMenuSelection\n\ +_080A5468: .4byte sPopupMenuActionList\n\ +_080A546C:\n\ + cmp r1, 0x80\n\ + bne _080A549C\n\ + ldr r4, _080A5494 @ =sPopupMenuSelection\n\ + ldrb r1, [r4]\n\ + movs r0, 0x1\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _080A5552\n\ + ldrb r1, [r4]\n\ + ldr r0, _080A5498 @ =sPopupMenuActionList\n\ + ldr r0, [r0]\n\ + adds r1, r0\n\ + ldrb r0, [r1, 0x1]\n\ + cmp r0, 0x8\n\ + beq _080A5552\n\ + movs r0, 0x5\n\ + bl PlaySE\n\ + movs r0, 0x1\n\ + b _080A54EE\n\ + .align 2, 0\n\ +_080A5494: .4byte sPopupMenuSelection\n\ +_080A5498: .4byte sPopupMenuActionList\n\ +_080A549C:\n\ + cmp r1, 0x20\n\ + bne _080A54CC\n\ + ldr r4, _080A54C4 @ =sPopupMenuSelection\n\ + ldrb r0, [r4]\n\ + cmp r0, 0x1\n\ + bls _080A5552\n\ + adds r1, r0, 0\n\ + ldr r0, _080A54C8 @ =sPopupMenuActionList\n\ + ldr r0, [r0]\n\ + adds r1, r0\n\ + subs r1, 0x2\n\ + ldrb r0, [r1]\n\ + cmp r0, 0x8\n\ + beq _080A5552\n\ + movs r0, 0x5\n\ + bl PlaySE\n\ + movs r0, 0x2\n\ + negs r0, r0\n\ + b _080A54EE\n\ + .align 2, 0\n\ +_080A54C4: .4byte sPopupMenuSelection\n\ +_080A54C8: .4byte sPopupMenuActionList\n\ +_080A54CC:\n\ + cmp r1, 0x10\n\ + bne _080A5500\n\ + ldr r4, _080A54F8 @ =sPopupMenuSelection\n\ + ldrb r0, [r4]\n\ + cmp r0, 0x1\n\ + bhi _080A5552\n\ + adds r1, r0, 0\n\ + ldr r0, _080A54FC @ =sPopupMenuActionList\n\ + ldr r0, [r0]\n\ + adds r1, r0\n\ + ldrb r0, [r1, 0x2]\n\ + cmp r0, 0x8\n\ + beq _080A5552\n\ + movs r0, 0x5\n\ + bl PlaySE\n\ + movs r0, 0x2\n\ +_080A54EE:\n\ + bl MoveMenuCursor3\n\ + strb r0, [r4]\n\ + b _080A5552\n\ + .align 2, 0\n\ +_080A54F8: .4byte sPopupMenuSelection\n\ +_080A54FC: .4byte sPopupMenuActionList\n\ +_080A5500:\n\ + ldrh r1, [r2, 0x2E]\n\ + movs r0, 0x1\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _080A5590\n\ + movs r0, 0x2\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _080A5552\n\ + ldr r1, _080A5570 @ =gTasks\n\ + lsls r0, r4, 2\n\ + adds r0, r4\n\ + lsls r0, 3\n\ + adds r0, r1\n\ + strh r5, [r0, 0x1C]\n\ + ldr r1, _080A5574 @ =gBagPocketScrollStates\n\ + ldr r0, _080A5578 @ =sCurrentBagPocket\n\ + ldrb r0, [r0]\n\ + lsls r0, 24\n\ + asrs r0, 24\n\ + lsls r0, 2\n\ + adds r0, r1\n\ + ldrb r2, [r0]\n\ + adds r0, r4, 0\n\ + adds r1, r2, 0\n\ + bl sub_80A48E8\n\ + ldr r0, _080A557C @ =gBGTilemapBuffers + 0x800\n\ + bl sub_80A4DA4\n\ + ldr r1, _080A5580 @ =sItemPopupMenuActions\n\ + ldr r0, _080A5584 @ =sPopupMenuActionList\n\ + ldr r0, [r0]\n\ + ldrb r0, [r0, 0x3]\n\ + lsls r0, 3\n\ + adds r1, 0x4\n\ + adds r0, r1\n\ + ldr r5, [r0]\n\ + adds r0, r4, 0\n\ + bl _call_via_r5\n\ +_080A5552:\n\ + cmp r5, 0\n\ + bne _080A55FA\n\ + ldr r0, _080A5588 @ =sReturnLocation\n\ + ldrb r0, [r0]\n\ + cmp r0, 0x5\n\ + bne _080A55E0\n\ + ldr r0, _080A558C @ =sPopupMenuSelection\n\ + ldrb r0, [r0]\n\ + cmp r0, 0\n\ + bne _080A55D4\n\ + movs r0, 0xC\n\ + bl sub_8072DDC\n\ + b _080A55FA\n\ + .align 2, 0\n\ +_080A5570: .4byte gTasks\n\ +_080A5574: .4byte gBagPocketScrollStates\n\ +_080A5578: .4byte sCurrentBagPocket\n\ +_080A557C: .4byte gBGTilemapBuffers + 0x800\n\ +_080A5580: .4byte sItemPopupMenuActions\n\ +_080A5584: .4byte sPopupMenuActionList\n\ +_080A5588: .4byte sReturnLocation\n\ +_080A558C: .4byte sPopupMenuSelection\n\ +_080A5590:\n\ + ldr r1, _080A55C0 @ =gTasks\n\ + lsls r0, r4, 2\n\ + adds r0, r4\n\ + lsls r0, 3\n\ + adds r0, r1\n\ + strh r5, [r0, 0x1C]\n\ + ldr r0, _080A55C4 @ =gBGTilemapBuffers + 0x800\n\ + bl sub_80A4DA4\n\ + ldr r1, _080A55C8 @ =sItemPopupMenuActions\n\ + ldr r0, _080A55CC @ =sPopupMenuSelection\n\ + ldrb r2, [r0]\n\ + ldr r0, _080A55D0 @ =sPopupMenuActionList\n\ + ldr r0, [r0]\n\ + adds r0, r2\n\ + ldrb r0, [r0]\n\ + lsls r0, 3\n\ + adds r1, 0x4\n\ + adds r0, r1\n\ + ldr r5, [r0]\n\ + adds r0, r4, 0\n\ + bl _call_via_r5\n\ + b _080A5552\n\ + .align 2, 0\n\ +_080A55C0: .4byte gTasks\n\ +_080A55C4: .4byte gBGTilemapBuffers + 0x800\n\ +_080A55C8: .4byte sItemPopupMenuActions\n\ +_080A55CC: .4byte sPopupMenuSelection\n\ +_080A55D0: .4byte sPopupMenuActionList\n\ +_080A55D4:\n\ + cmp r0, 0x1\n\ + bls _080A55E8\n\ + movs r0, 0x30\n\ + bl sub_8072DCC\n\ + b _080A55FA\n\ +_080A55E0:\n\ + ldr r0, _080A55F0 @ =sPopupMenuSelection\n\ + ldrb r0, [r0]\n\ + cmp r0, 0x1\n\ + bhi _080A55F4\n\ +_080A55E8:\n\ + movs r0, 0x2F\n\ + bl sub_8072DCC\n\ + b _080A55FA\n\ + .align 2, 0\n\ +_080A55F0: .4byte sPopupMenuSelection\n\ +_080A55F4:\n\ + movs r0, 0x30\n\ + bl sub_8072DCC\n\ +_080A55FA:\n\ + pop {r4,r5}\n\ + pop {r0}\n\ + bx r0\n\ + .syntax divided\n"); +} +#endif + +__attribute__((naked)) +static void sub_80A5600(u8 taskId) +{ + asm(".syntax unified\n\ + push {r4,r5,lr}\n\ + lsls r0, 24\n\ + lsrs r4, r0, 24\n\ + movs r5, 0\n\ + ldr r2, _080A563C @ =gMain\n\ + ldrh r0, [r2, 0x30]\n\ + movs r1, 0xF0\n\ + ands r1, r0\n\ + cmp r1, 0x40\n\ + bne _080A5648\n\ + ldr r4, _080A5640 @ =sPopupMenuSelection\n\ + ldrb r0, [r4]\n\ + cmp r0, 0\n\ + bne _080A561E\n\ + b _080A5736\n\ +_080A561E:\n\ + adds r1, r0, 0\n\ + ldr r0, _080A5644 @ =sPopupMenuActionList\n\ + ldr r0, [r0]\n\ + adds r1, r0\n\ + subs r1, 0x1\n\ + ldrb r0, [r1]\n\ + cmp r0, 0x8\n\ + bne _080A5630\n\ + b _080A5736\n\ +_080A5630:\n\ + movs r0, 0x5\n\ + bl PlaySE\n\ + movs r0, 0x1\n\ + negs r0, r0\n\ + b _080A56D2\n\ + .align 2, 0\n\ +_080A563C: .4byte gMain\n\ +_080A5640: .4byte sPopupMenuSelection\n\ +_080A5644: .4byte sPopupMenuActionList\n\ +_080A5648:\n\ + cmp r1, 0x80\n\ + bne _080A5680\n\ + ldr r4, _080A5674 @ =sPopupMenuSelection\n\ + ldrb r1, [r4]\n\ + ldr r0, _080A5678 @ =gUnknown_02038564\n\ + ldrb r0, [r0]\n\ + subs r0, 0x1\n\ + cmp r1, r0\n\ + beq _080A5736\n\ + cmp r1, 0x2\n\ + beq _080A5736\n\ + ldr r0, _080A567C @ =sPopupMenuActionList\n\ + ldr r0, [r0]\n\ + adds r0, r1, r0\n\ + ldrb r0, [r0, 0x1]\n\ + cmp r0, 0x8\n\ + beq _080A5736\n\ + movs r0, 0x5\n\ + bl PlaySE\n\ + movs r0, 0x1\n\ + b _080A56D2\n\ + .align 2, 0\n\ +_080A5674: .4byte sPopupMenuSelection\n\ +_080A5678: .4byte gUnknown_02038564\n\ +_080A567C: .4byte sPopupMenuActionList\n\ +_080A5680:\n\ + cmp r1, 0x20\n\ + bne _080A56B0\n\ + ldr r4, _080A56A8 @ =sPopupMenuSelection\n\ + ldrb r0, [r4]\n\ + cmp r0, 0x2\n\ + bls _080A5736\n\ + adds r1, r0, 0\n\ + ldr r0, _080A56AC @ =sPopupMenuActionList\n\ + ldr r0, [r0]\n\ + adds r1, r0\n\ + subs r1, 0x3\n\ + ldrb r0, [r1]\n\ + cmp r0, 0x8\n\ + beq _080A5736\n\ + movs r0, 0x5\n\ + bl PlaySE\n\ + movs r0, 0x3\n\ + negs r0, r0\n\ + b _080A56D2\n\ + .align 2, 0\n\ +_080A56A8: .4byte sPopupMenuSelection\n\ +_080A56AC: .4byte sPopupMenuActionList\n\ +_080A56B0:\n\ + cmp r1, 0x10\n\ + bne _080A56E4\n\ + ldr r4, _080A56DC @ =sPopupMenuSelection\n\ + ldrb r0, [r4]\n\ + cmp r0, 0x2\n\ + bhi _080A5736\n\ + adds r1, r0, 0\n\ + ldr r0, _080A56E0 @ =sPopupMenuActionList\n\ + ldr r0, [r0]\n\ + adds r1, r0\n\ + ldrb r0, [r1, 0x3]\n\ + cmp r0, 0x8\n\ + beq _080A5736\n\ + movs r0, 0x5\n\ + bl PlaySE\n\ + movs r0, 0x3\n\ +_080A56D2:\n\ + bl MoveMenuCursor3\n\ + strb r0, [r4]\n\ + b _080A5736\n\ + .align 2, 0\n\ +_080A56DC: .4byte sPopupMenuSelection\n\ +_080A56E0: .4byte sPopupMenuActionList\n\ +_080A56E4:\n\ + ldrh r1, [r2, 0x2E]\n\ + movs r0, 0x1\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _080A5768\n\ + movs r0, 0x2\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _080A5736\n\ + ldr r1, _080A574C @ =gTasks\n\ + lsls r0, r4, 2\n\ + adds r0, r4\n\ + lsls r0, 3\n\ + adds r0, r1\n\ + strh r5, [r0, 0x1C]\n\ + ldr r1, _080A5750 @ =gBagPocketScrollStates\n\ + ldr r0, _080A5754 @ =sCurrentBagPocket\n\ + ldrb r0, [r0]\n\ + lsls r0, 24\n\ + asrs r0, 24\n\ + lsls r0, 2\n\ + adds r0, r1\n\ + ldrb r2, [r0]\n\ + adds r0, r4, 0\n\ + adds r1, r2, 0\n\ + bl sub_80A48E8\n\ + ldr r0, _080A5758 @ =gBGTilemapBuffers + 0x800\n\ + bl sub_80A4DA4\n\ + ldr r1, _080A575C @ =sItemPopupMenuActions\n\ + ldr r0, _080A5760 @ =sPopupMenuActionList\n\ + ldr r0, [r0]\n\ + ldrb r0, [r0, 0x5]\n\ + lsls r0, 3\n\ + adds r1, 0x4\n\ + adds r0, r1\n\ + ldr r5, [r0]\n\ + adds r0, r4, 0\n\ + bl _call_via_r5\n\ +_080A5736:\n\ + cmp r5, 0\n\ + bne _080A57BE\n\ + ldr r0, _080A5764 @ =sPopupMenuSelection\n\ + ldrb r0, [r0]\n\ + cmp r0, 0\n\ + bne _080A57AC\n\ + movs r0, 0xC\n\ + bl sub_8072DDC\n\ + b _080A57BE\n\ + .align 2, 0\n\ +_080A574C: .4byte gTasks\n\ +_080A5750: .4byte gBagPocketScrollStates\n\ +_080A5754: .4byte sCurrentBagPocket\n\ +_080A5758: .4byte gBGTilemapBuffers + 0x800\n\ +_080A575C: .4byte sItemPopupMenuActions\n\ +_080A5760: .4byte sPopupMenuActionList\n\ +_080A5764: .4byte sPopupMenuSelection\n\ +_080A5768:\n\ + ldr r1, _080A5798 @ =gTasks\n\ + lsls r0, r4, 2\n\ + adds r0, r4\n\ + lsls r0, 3\n\ + adds r0, r1\n\ + strh r5, [r0, 0x1C]\n\ + ldr r0, _080A579C @ =gBGTilemapBuffers + 0x800\n\ + bl sub_80A4DA4\n\ + ldr r1, _080A57A0 @ =sItemPopupMenuActions\n\ + ldr r0, _080A57A4 @ =sPopupMenuSelection\n\ + ldrb r2, [r0]\n\ + ldr r0, _080A57A8 @ =sPopupMenuActionList\n\ + ldr r0, [r0]\n\ + adds r0, r2\n\ + ldrb r0, [r0]\n\ + lsls r0, 3\n\ + adds r1, 0x4\n\ + adds r0, r1\n\ + ldr r5, [r0]\n\ + adds r0, r4, 0\n\ + bl _call_via_r5\n\ + b _080A5736\n\ + .align 2, 0\n\ +_080A5798: .4byte gTasks\n\ +_080A579C: .4byte gBGTilemapBuffers + 0x800\n\ +_080A57A0: .4byte sItemPopupMenuActions\n\ +_080A57A4: .4byte sPopupMenuSelection\n\ +_080A57A8: .4byte sPopupMenuActionList\n\ +_080A57AC:\n\ + cmp r0, 0x2\n\ + bhi _080A57B8\n\ + movs r0, 0x2F\n\ + bl sub_8072DCC\n\ + b _080A57BE\n\ +_080A57B8:\n\ + movs r0, 0x30\n\ + bl sub_8072DCC\n\ +_080A57BE:\n\ + pop {r4,r5}\n\ + pop {r0}\n\ + bx r0\n\ + .syntax divided\n"); +} + +static void sub_80A57C4(void) +{ + u8 r5; + + sPopupMenuActionList = gUnknown_083C16AE[sCurrentBagPocket]; + if (sCurrentBagPocket == BAG_POCKET_KEY_ITEMS) + { + gUnknown_02038564 = 1; + r5 = 9; + } + else if (sub_80F92F4(gScriptItemId) == 0) + { + sPopupMenuActionList = gUnknown_083C16AE[4]; + gUnknown_02038564 = 1; + r5 = 9; + } + else + { + gUnknown_02038564 = 2; + r5 = 7; + } + sub_80A4008(gBGTilemapBuffers[1], 7, r5 + 1, 6, gUnknown_02038564 * 2); + MenuDrawTextWindow(6, r5, 13, gUnknown_02038564 * 2 + 1 + r5); + sub_80A7834(0, r5); + InitMenu(0, 7, r5 + 1, gUnknown_02038564, 0, 6); +} + +static void sub_80A5888(u8 taskId) +{ + if (sub_80A78A0() != 0) + { + if (gMain.newAndRepeatedKeys & DPAD_UP) + { + if (sPopupMenuSelection != 0) + { + PlaySE(SE_SELECT); + sPopupMenuSelection = MoveMenuCursor(-1); + } + } + else if (gMain.newAndRepeatedKeys & DPAD_DOWN) + { + if (sPopupMenuSelection != gUnknown_02038564 - 1) + { + PlaySE(SE_SELECT); + sPopupMenuSelection = MoveMenuCursor(1); + } + } + else if (gMain.newKeys & A_BUTTON) + { + gTasks[taskId].data[10] = 0; + sub_80A48E8(taskId, gBagPocketScrollStates[sCurrentBagPocket].cursorPos, gBagPocketScrollStates[sCurrentBagPocket].cursorPos); + sub_80A4DA4(gBGTilemapBuffers[1]); + sItemPopupMenuActions[sPopupMenuActionList[sPopupMenuSelection]].func(taskId); + } + else if (gMain.newKeys & B_BUTTON) + { + gTasks[taskId].data[10] = 0; + sub_80A4DA4(gBGTilemapBuffers[1]); + sItemPopupMenuActions[2].func(taskId); + } + } +} + +static void OnBagClose_Field0(u8 taskId) +{ + gTasks[taskId].data[8] = (u32)sub_805469C >> 16; + gTasks[taskId].data[9] = (u32)sub_805469C; + gLastFieldPokeMenuOpened = 0; + sub_80A5AE4(taskId); +} + +static void OnItemSelect_Field05(u8 taskId) +{ + sPopupMenuSelection = 0; + if (sReturnLocation == RETURN_TO_FIELD_5) + sPopupMenuSelection = 1; + gTasks[taskId].data[10] = gBagPocketScrollStates[sCurrentBagPocket].scrollTop + gBagPocketScrollStates[sCurrentBagPocket].cursorPos + 1; + sub_80A48E8(taskId, gBagPocketScrollStates[sCurrentBagPocket].cursorPos, gBagPocketScrollStates[sCurrentBagPocket].cursorPos); + sub_80A73FC(); + if (sub_80F9344() == TRUE && sReturnLocation != RETURN_TO_FIELD_5) + { + sub_80A57C4(); + gTasks[taskId].func = sub_80A5888; + } + else + { + sub_80A4BF0(gBGTilemapBuffers[1]); + if (sCurrentBagPocket != BAG_POCKET_BERRIES || sReturnLocation == RETURN_TO_FIELD_5) + gTasks[taskId].func = sub_80A5414; + else + gTasks[taskId].func = sub_80A5600; + } +} + +static void sub_80A5AAC(u8 taskId) +{ + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); + gTasks[taskId].func = HandleItemMenuPaletteFade; +} + +static void sub_80A5AE4(u8 taskId) +{ + PlaySE(SE_SELECT); + sub_80A5AAC(taskId); +} + +void HandleItemMenuPaletteFade(u8 taskId) +{ + s16 *taskData = gTasks[taskId].data; + + if (!gPaletteFade.active) + { + MainCallback cb = (MainCallback)((u16)taskData[8] << 16 | (u16)taskData[9]); + + SetMainCallback2(cb); + gpu_pal_allocator_reset__manage_upper_four(); + DestroyTask(taskId); + } +} + +void sub_80A5B40(void) +{ + while (1) + { + if (SetupBagMultistep() == TRUE) + { + ResetTasks(); + gUnknown_02038563 = CreateTask(sub_80A50C8, 0); + break; + } + if (sub_80F9344() == TRUE) + break; + } +} + +static void HandlePopupMenuAction_UseOnField(u8 taskId) +{ + if (ItemId_GetFieldFunc(gScriptItemId) != NULL) + { + PlaySE(SE_SELECT); + if (CalculatePlayerPartyCount() == 0 && ItemId_GetType(gScriptItemId) == 1) + { + sub_80A5BF8(taskId); + } + else + { + gTasks[taskId].data[2] = 0; + if (sCurrentBagPocket != BAG_POCKET_BERRIES) + ItemId_GetFieldFunc(gScriptItemId)(taskId); + else + sub_80C9C7C(taskId); + } + } +} + +static void sub_80A5BF8(u8 taskId) +{ + sub_80A73FC(); + sub_80A7590(); + DisplayCannotUseItemMessage(taskId, gOtherText_NoPokemon, CleanUpItemMenuMessage, 1); +} + +static void sub_80A5C24(u8 taskId) +{ + sub_80A7528(0); + sub_80A41D4(taskId); + ItemListMenu_InitMenu(); + sub_80A37C0(taskId); +} + +void CleanUpItemMenuMessage(u8 taskId) +{ + sub_80A36B8(gBGTilemapBuffers[1], 0, 0, 31, 31); + MenuZeroFillWindowRect(7, 7, 13, 12); + MenuZeroFillWindowRect(0, 14, 29, 19); + gTasks[taskId].func = sub_80A5C24; +} + +void CleanUpOverworldMessage(u8 taskId) +{ + MenuZeroFillWindowRect(0, 13, 29, 19); + DestroyTask(taskId); + sub_8064E2C(); + ScriptContext2_Disable(); +} + +void ExecuteItemUseFromBlackPalette(void) +{ + pal_fill_black(); + CreateTask(Task_CallItemUseOnFieldCallback, 8); +} + +static void Task_CallItemUseOnFieldCallback(u8 taskId) +{ + if (sub_807D770() == TRUE) + gFieldItemUseCallback(taskId); +} + +void sub_80A5D04(void) +{ + while (1) + { + if (SetupBagMultistep() == TRUE) + { + gUnknown_02038563 = CreateTask(sub_80A50C8, 0); + break; + } + if (sub_80F9344() == TRUE) + break; + } +} + +static void sub_80A5D38(u8 taskId) +{ + gTasks[taskId].data[1] = 0; + sub_80A4DA4(gBGTilemapBuffers[1]); + sub_80A7528(0); + sub_80A41D4(taskId); + ItemListMenu_InitMenu(); + sub_80A37C0(taskId); +} + +static void sub_80A5D78(void) +{ + sub_80A4008(gBGTilemapBuffers[1], 8, 8, 5, 4); + DisplayYesNoMenu(7, 7, 1); +} + +static void sub_80A5DA0(u16 itemId, u16 quantity) +{ + CopyItemName(itemId, gStringVar1); + if (quantity >= 100) + ConvertIntToDecimalStringN(gStringVar2, quantity, STR_CONV_MODE_LEFT_ALIGN, 3); + else + ConvertIntToDecimalStringN(gStringVar2, quantity, STR_CONV_MODE_LEFT_ALIGN, 2); + sub_80A4DA4(gBGTilemapBuffers[1]); + sub_80A7528(5); + sub_80A5D78(); +} + +static void sub_80A5DF8(void) +{ + sub_80A4DA4(gBGTilemapBuffers[1]); + MenuZeroFillWindowRect(7, 6, 11, 13); + sub_80A7528(4); +} + +static void sub_80A5E1C(u8 taskId) +{ + if ((gMain.newKeys & A_BUTTON) || (gMain.newKeys & B_BUTTON)) + { + gTasks[taskId].data[10] = 0; + sub_80A41D4(taskId); + sub_80A5D38(taskId); + } +} + +static void sub_80A5E60(u8 taskId) +{ + sub_80A5DF8(); + sub_80A3D5C(taskId); + gTasks[taskId].func = sub_80A5E1C; +} + +static void sub_80A5E90(u8 taskId) +{ + sub_80A5D38(taskId); +} + +static void sub_80A5EA0(u8 taskId) +{ + if (sub_80A5350(taskId) == TRUE) + return; + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + sub_80A5DA0(gScriptItemId, gTasks[taskId].data[1]); + DoYesNoFuncWithChoice(taskId, &gUnknown_083C16F4); + } + else if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + sub_80A5D38(taskId); + } +} + +static void HandlePopupMenuAction_Toss(u8 taskId) +{ + PlaySE(SE_SELECT); + gTasks[taskId].func = sub_80A5EA0; + sub_80A7528(3); + // if (sCurrentBagPocket == BAG_POCKET_BERRIES) Can't get it to match this way + if (sCurrentBagPocket + 1 == BAG_POCKET_BERRIES + 1) + sub_80A4DD8(taskId, 6, 9, 7, 3, 3); + else + sub_80A4DD8(taskId, 7, 9, 6, 3, 2); +} + +static void sub_80A5F80(u8 taskId) +{ + PlaySE(SE_SELECT); + sub_80A7528(0); + sub_80A41D4(taskId); + ItemListMenu_InitMenu(); + sub_80A37C0(taskId); +} + +static void HandlePopupMenuAction_Register(u8 taskId) +{ + PlaySE(SE_SELECT); + if (gSaveBlock1.registeredItem == gScriptItemId) + { + // Un-register the registered item + RemoveSelectIconFromRegisteredItem(); + gSaveBlock1.registeredItem = 0; + } + else + { + AddSelectIconToRegisteredItem(); + gSaveBlock1.registeredItem = gScriptItemId; + } + sub_80A7528(0); + sub_80A41D4(taskId); + ItemListMenu_InitMenu(); + sub_80A37C0(taskId); +} + +static void sub_80A6000(u8 taskId) +{ + sub_80A7528(0); + sub_80A41D4(taskId); + ItemListMenu_InitMenu(); + sub_80A37C0(taskId); +} + +static void sub_80A6024(u8 taskId) +{ + if (gMain.newKeys & A_BUTTON) + { + sub_80A36B8(gBGTilemapBuffers[1], 0, 0, 31, 31); + MenuZeroFillWindowRect(0, 14, 29, 19); + gTasks[taskId].func = sub_80A6000; + } +} + +static void DisplayCannotBeHeldMessage(u8 taskId) +{ + sub_80A73FC(); + CopyItemName(gScriptItemId, gStringVar1); + StringExpandPlaceholders(gStringVar4, gOtherText_CantBeHeld); + sub_80A7590(); + DisplayCannotUseItemMessage(taskId, gStringVar4, sub_80A6024, 1); +} + +static void HandlePopupMenuAction_Give(u8 taskId) +{ + PlaySE(SE_SELECT); + if (sub_80F931C(gScriptItemId) == 0) + { + sub_80A73FC(); + sub_80A7590(); + DisplayCannotUseItemMessage(taskId, gOtherText_CantWriteMail, sub_80A6024, 1); + } + else if (ItemId_GetImportance(gScriptItemId) == 0) + { + if (CalculatePlayerPartyCount() == 0) + { + sub_80A5BF8(taskId); + } + else + { + gTasks[taskId].data[8] = (u32)sub_808B020 >> 16; + gTasks[taskId].data[9] = (u32)sub_808B020; + gTasks[taskId].func = HandleItemMenuPaletteFade; + gUnknown_02038561 = 1; + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); + } + } + else + { + DisplayCannotBeHeldMessage(taskId); + } +} + +static void HandlePopupMenuAction_CheckTag(u8 taskId) +{ + sub_80A5AE4(taskId); + gTasks[taskId].data[8] = (u32)BerryTagScreen_814625C >> 16; + gTasks[taskId].data[9] = (u32)BerryTagScreen_814625C; +} + +static void sub_80A61A8(void) +{ + if (sub_80A34B4() == TRUE) + gUnknown_02038563 = CreateTask(sub_80A50C8, 0); +} + +void sub_80A61D0(void) +{ + sReturnLocation = RETURN_TO_PKMN_LIST; + SetMainCallback2(sub_80A61A8); +} + +static void OnBagClose_PkmnList(u8 taskId) +{ + gTasks[taskId].data[8] = (u32)sub_808A3F8 >> 16; + gTasks[taskId].data[9] = (u32)sub_808A3F8; + sub_80A5AE4(taskId); +} + +static void OnItemSelect_PkmnList(u8 taskId) +{ + u8 r6 = sCurrentBagPocket + 1; + + if (sub_80F931C(gScriptItemId) == 0) + { + sub_80A73FC(); + sub_80A7590(); + DisplayCannotUseItemMessage(taskId, gOtherText_CantWriteMail, sub_80A6024, 1); + } + else if (sub_80F92F4(gScriptItemId) == 0) + { + sub_80A73FC(); + CopyItemName(gScriptItemId, gStringVar1); + StringExpandPlaceholders(gStringVar4, gOtherText_CantBeHeldHere); + sub_80A7590(); + DisplayCannotUseItemMessage(taskId, gStringVar4, sub_80A6024, 1); + } + else if (r6 != 5 && ItemId_GetImportance(gScriptItemId) == 0) + { + gTasks[taskId].data[8] = (u32)sub_808A3F8 >> 16; + gTasks[taskId].data[9] = (u32)sub_808A3F8; + sub_80A5AAC(taskId); + } + else + { + DisplayCannotBeHeldMessage(taskId); + } +} + +static void sub_80A62D8(void) +{ + if (sub_80A34B4() == TRUE) + gUnknown_02038563 = CreateTask(sub_80A50C8, 0); +} + +void sub_80A6300(void) +{ + sReturnLocation = RETURN_TO_SHOP; + SetMainCallback2(sub_80A62D8); +} + +static void OnBagClose_Shop(u8 taskId) +{ + gFieldCallback = sub_80B3050; + gTasks[taskId].data[8] = (u32)c2_exit_to_overworld_2_switch >> 16; + gTasks[taskId].data[9] = (u32)c2_exit_to_overworld_2_switch; + sub_80A5AE4(taskId); +} + +static void OnItemSelect_Shop(u8 taskId) +{ + sub_80A7590(); + gTasks[taskId].data[10] = gBagPocketScrollStates[sCurrentBagPocket].scrollTop + gBagPocketScrollStates[sCurrentBagPocket].cursorPos + 1; + sub_80A48E8(taskId, gBagPocketScrollStates[sCurrentBagPocket].cursorPos, gBagPocketScrollStates[sCurrentBagPocket].cursorPos); + sub_80A73FC(); + CopyItemName(gScriptItemId, gStringVar2); + if (ItemId_GetPrice(gScriptItemId) == 0) + { + StringExpandPlaceholders(gStringVar4, gOtherText_CantBuyThat); + DisplayCannotUseItemMessage(taskId, gStringVar4, sub_80A6444, 1); + } + else + { + StringExpandPlaceholders(gStringVar4, gOtherText_HowManyToSell); + DisplayCannotUseItemMessage(taskId, gStringVar4, sub_80A648C, 1); + } +} + +static void sub_80A640C(u8 taskId) +{ + gTasks[taskId].data[10] = 0; + sub_80A7528(0); + sub_80A41D4(taskId); + ItemListMenu_InitMenu(); + sub_80A37C0(taskId); +} + +static void sub_80A6444(u8 taskId) +{ + sub_80A36B8(gBGTilemapBuffers[1], 0, 0, 31, 31); + MenuZeroFillWindowRect(0, 14, 29, 19); + gTasks[taskId].func = sub_80A640C; +} + +static void sub_80A648C(u8 taskId) +{ + gTasks[taskId].func = Task_BuyHowManyDialogueHandleInput; + sub_80A4008(gBGTilemapBuffers[1], 1, 11, 12, 2); + MenuDrawTextWindow(0, 10, 13, 13); + gTasks[taskId].data[1] = 1; + gTasks[taskId].data[2] = 1; + gTasks[taskId].data[3] = 11; + // if (sCurrentBagPocket == BAG_POCKET_BERRIES) Can't get it to match this way + if (sCurrentBagPocket + 1 == BAG_POCKET_BERRIES + 1) + sub_80A418C(1, 1, 1, 11, 3); + else + sub_80A418C(1, 1, 1, 11, 2); + BuyMenuDisplayMessage(gScriptItemId, 1); + sub_80A683C(); +} + +static void sub_80A6520(u8 taskId) +{ + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + BuyMenuPrintItemQuantityAndPrice(taskId); + } +} + +static void sub_80A6548(u8 taskId) +{ + sub_80A48F8(taskId); + gTasks[taskId].func = sub_80A6520; +} + +static void sub_80A6574(u8 taskId) +{ + PlaySE(SE_REGI); + sub_80A6870(gScriptItemId, gTasks[taskId].data[1]); + gTasks[taskId].func = sub_80A6548; +} + +static void sub_80A65AC(u8 taskId) +{ + MenuZeroFillWindowRect(7, 6, 13, 12); + sub_80A36B8(gBGTilemapBuffers[1], 7, 6, 6, 6); + CopyItemName(gScriptItemId, gStringVar2); + StringExpandPlaceholders(gStringVar4, gOtherText_SoldItem); + DisplayCannotUseItemMessage(taskId, gStringVar4, sub_80A6574, 1); + sub_80A3D5C(taskId); +} + +static void sub_80A6618(u8 taskId) +{ + MenuZeroFillWindowRect(7, 6, 13, 12); + sub_80A36B8(gBGTilemapBuffers[1], 7, 6, 6, 6); + BuyMenuPrintItemQuantityAndPrice(taskId); +} + +static void sub_80A6650(u8 taskId) +{ + sub_80A5D78(); + DoYesNoFuncWithChoice(taskId, &gUnknown_083C16FC); +} + +static void Task_BuyHowManyDialogueHandleInput(u8 taskId) +{ + if (sub_80A5350(taskId) == TRUE) + { + MenuZeroFillWindowRect(6, 11, 12, 11); + BuyMenuDisplayMessage(gScriptItemId, gTasks[taskId].data[1]); + } + else if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + MenuZeroFillWindowRect(0, 10, 13, 13); + sub_80A36B8(gBGTilemapBuffers[1], 0, 10, 13, 3); + ConvertIntToDecimalStringN(gStringVar1, ItemId_GetPrice(gScriptItemId) / 2 * gTasks[taskId].data[1], STR_CONV_MODE_LEFT_ALIGN, 6); + StringExpandPlaceholders(gStringVar4, gOtherText_CanPay); + DisplayCannotUseItemMessage(taskId, gStringVar4, sub_80A6650, 1); + } + else if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + BuyMenuPrintItemQuantityAndPrice(taskId); + } +} + +static void sub_80A6760(u8 taskId) +{ + gTasks[taskId].data[10] = 0; + sub_80A7528(0); + sub_80A41D4(taskId); + ItemListMenu_InitMenu(); + sub_80A37C0(taskId); +} + +static void BuyMenuPrintItemQuantityAndPrice(u8 taskId) +{ + sub_80A36B8(gBGTilemapBuffers[1], 0, 0, 31, 31); + CloseMoneyWindow(0, 0); + MenuZeroFillWindowRect(0, 4, 13, 13); + MenuZeroFillWindowRect(0, 14, 29, 19); + gTasks[taskId].func = sub_80A6760; +} + +static void BuyMenuDisplayMessage(u16 itemId, u16 quantity) +{ + PrintMoneyAmount(ItemId_GetPrice(itemId) / 2 * quantity, 6, 6, 11); + ConvertIntToDecimalStringN(gStringVar1, ItemId_GetPrice(itemId) / 2 * quantity, STR_CONV_MODE_LEFT_ALIGN, 6); +} + +static void sub_80A683C(void) +{ + OpenMoneyWindow(gSaveBlock1.money, 0, 0); + sub_80A4008(gBGTilemapBuffers[1], 1, 1, 12, 2); +} + +static void sub_80A6870(u16 itemId, u8 quantity) +{ + AddMoney(&gSaveBlock1.money, ItemId_GetPrice(itemId) / 2 * quantity); + UpdateMoneyWindow(gSaveBlock1.money, 0, 0); +} + +static void sub_80A68A4(void) +{ + if (sub_80A34B4() == TRUE) + gUnknown_02038563 = CreateTask(sub_80A50C8, 0); +} + +void sub_80A68CC(void) +{ + sCurrentBagPocket = BAG_POCKET_BERRIES; + sReturnLocation = RETURN_TO_FIELD_4; + SetMainCallback2(sub_80A68A4); +} + +static void OnBagClose_Field4(u8 taskId) +{ + gTasks[taskId].data[8] = (u32)sub_80546B8 >> 16; + gTasks[taskId].data[9] = (u32)sub_80546B8; + sub_80A5AE4(taskId); +} + +static void OnItemSelect_Field4(u8 taskId) +{ + gTasks[taskId].data[8] = (u32)sub_80546B8 >> 16; + gTasks[taskId].data[9] = (u32)sub_80546B8; + sub_80A5AAC(taskId); +} + +static void sub_80A6940(void) +{ + while (1) + { + if (SetupBagMultistep() == TRUE) + { + gUnknown_02038563 = CreateTask(sub_80A50C8, 0); + sub_80A699C(); + break; + } + if (sub_80F9344() == TRUE) + break; + } +} + +void sub_80A6978(void) +{ + sCurrentBagPocket = BAG_POCKET_BERRIES; + sReturnLocation = RETURN_TO_FIELD_5; + SetMainCallback2(sub_80A6940); +} + +static void sub_80A699C(void) +{ + sPopupMenuActionList = gUnknown_083C16B8; + gUnknown_02038564 = 4; +} + +static void OnBagClose_Field5(u8 taskId) +{ + gTasks[taskId].data[8] = (u32)sub_804E990 >> 16; + gTasks[taskId].data[9] = (u32)sub_804E990; + sub_80A5AE4(taskId); +} + +static void HandlePopupMenuAction_Confirm(u8 taskId) +{ + gTasks[taskId].data[8] = (u32)sub_804E990 >> 16; + gTasks[taskId].data[9] = (u32)sub_804E990; + sub_80A5AAC(taskId); +} + +static void sub_80A6A08(void) +{ + if (sub_80A34B4() == TRUE) + gUnknown_02038563 = CreateTask(sub_80A50C8, 0); +} + +void sub_80A6A30(void) +{ + sReturnLocation = RETURN_TO_PC; + SetMainCallback2(sub_80A6A08); +} + +static void OnBagClose_PC(u8 taskId) +{ + gFieldCallback = ItemStorage_ReturnToMenuAfterDeposit; + gTasks[taskId].data[8] = (u32)c2_exit_to_overworld_2_switch >> 16; + gTasks[taskId].data[9] = (u32)c2_exit_to_overworld_2_switch; + sub_80A5AE4(taskId); +} + +static void sub_80A6A84(u8 taskId) +{ + s16 *taskData = gTasks[taskId].data; + + sub_80A4DA4(gBGTilemapBuffers[1]); + CopyItemName(gScriptItemId, gStringVar1); + ConvertIntToDecimalStringN(gStringVar2, taskData[1], STR_CONV_MODE_LEFT_ALIGN, 3); + MenuZeroFillWindowRect(7, 6, 11, 13); + sub_80A7528(7); + sub_80A3D5C(taskId); + gTasks[taskId].func = sub_80A5E1C; +} + +static void sub_80A6B00(u8 taskId) +{ + if ((gMain.newKeys & A_BUTTON) || (gMain.newKeys & B_BUTTON)) + { + gTasks[taskId].data[10] = 0; + sub_80A48E8(taskId, gBagPocketScrollStates[sCurrentBagPocket].cursorPos, gBagPocketScrollStates[sCurrentBagPocket].cursorPos); + PlaySE(SE_SELECT); + sub_80A5D38(taskId); + } +} + +static void sub_80A6B64(u8 taskId) +{ + s16 *taskData = gTasks[taskId].data; + + if (ItemId_GetImportance(gScriptItemId) == 2) + { + gTasks[taskId].func = sub_80A6B00; + sub_80A7528(9); + } + else + { + if (AddPCItem(gScriptItemId, taskData[1]) == TRUE) + { + sub_80A6A84(taskId); + } + else + { + gTasks[taskId].func = sub_80A6B00; + sub_80A7528(8); + } + } +} + +static void sub_80A6BE0(u8 taskId) +{ + if (sub_80A5350(taskId) == TRUE) + return; + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + sub_80A4DA4(gBGTilemapBuffers[1]); + sub_80A6B64(taskId); + } + else if (gMain.newKeys & B_BUTTON) + { + gTasks[taskId].data[10] = 0; + sub_80A48E8(taskId, gBagPocketScrollStates[sCurrentBagPocket].cursorPos, gBagPocketScrollStates[sCurrentBagPocket].cursorPos); + PlaySE(SE_SELECT); + sub_80A5D38(taskId); + } +} + +static void OnItemSelect_PC(u8 taskId) +{ + gTasks[taskId].data[10] = gBagPocketScrollStates[sCurrentBagPocket].scrollTop + gBagPocketScrollStates[sCurrentBagPocket].cursorPos + 1; + sub_80A48E8(taskId, gBagPocketScrollStates[sCurrentBagPocket].cursorPos, gBagPocketScrollStates[sCurrentBagPocket].cursorPos); + sub_80A73FC(); + PlaySE(SE_SELECT); + sub_80A7590(); + if (sCurrentBagPocket != BAG_POCKET_KEY_ITEMS) + { + gTasks[taskId].func = sub_80A6BE0; + sub_80A7528(6); + // if (sCurrentBagPocket == BAG_POCKET_BERRIES) Can't get it to match this way + if (sCurrentBagPocket + 1 == BAG_POCKET_BERRIES + 1) + sub_80A4DD8(taskId, 6, 9, 7, 3, 3); + else + sub_80A4DD8(taskId, 7, 9, 6, 3, 2); + } + else + { + gTasks[taskId].data[1] = 1; + sub_80A6B64(taskId); + } +} + +bool32 sub_80A6D1C(void) +{ + HideMapNamePopup(); + if (gSaveBlock1.registeredItem != 0) + { + if (CheckBagHasItem(gSaveBlock1.registeredItem, 1) == TRUE) + { + u8 taskId; + + ScriptContext2_Enable(); + FreezeMapObjects(); + sub_80594C0(); + sub_80597F4(); + gScriptItemId = gSaveBlock1.registeredItem; + taskId = CreateTask(ItemId_GetFieldFunc(gSaveBlock1.registeredItem), 8); + gTasks[taskId].data[2] = 1; + return TRUE; + } + gSaveBlock1.registeredItem = 0; + } + ScriptContext1_SetupScript(Event_NoRegisteredItem); + return TRUE; +} + +static void sub_80A6D98(void) +{ + while (1) + { + if (SetupBagMultistep() == TRUE) + { + gUnknown_02038563 = CreateTask(sub_80A50C8, 0); + break; + } + if (sub_80F9344() == TRUE) + break; + } +} + +void sub_80A6DCC(void) +{ + sPopupMenuSelection = 0; + sReturnLocation = RETURN_TO_BATTLE; + SetMainCallback2(sub_80A6D98); +} + +static void sub_80A6DF0(u16 *a) +{ + u8 r6 = (gUnknown_02038564 - 1) * 2; + + MenuDrawTextWindow(7, 9 - r6, 13, 12); + sub_80A4008(a, 8, 10 - r6, 5, r6 + 2); + if (gUnknown_02038564 == 1) + { + MenuPrint(sItemPopupMenuActions[sPopupMenuActionList[0]].text, 8, 10); + } + else + { + MenuPrint(sItemPopupMenuActions[sPopupMenuActionList[0]].text, 8, 8); + MenuPrint(sItemPopupMenuActions[sPopupMenuActionList[1]].text, 8, 10); + } + InitMenu(0, 8, 10 - r6, gUnknown_02038564, 0, 5); + sub_80A7528(2); +} + +static void sub_80A6EB8(u8 taskId) +{ + if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_UP) + { + if (sPopupMenuSelection == 1) + { + PlaySE(SE_SELECT); + sPopupMenuSelection = MoveMenuCursor(-1); + } + } + else if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_DOWN) + { + if (sPopupMenuSelection + 1 < gUnknown_02038564) + { + PlaySE(SE_SELECT); + sPopupMenuSelection = MoveMenuCursor(1); + } + } + else if (gMain.newKeys & A_BUTTON) + { + gTasks[taskId].data[10] = 0; + sub_80A48E8(taskId, gBagPocketScrollStates[sCurrentBagPocket].cursorPos, gBagPocketScrollStates[sCurrentBagPocket].cursorPos); + sub_80A4DA4(gBGTilemapBuffers[1]); + sItemPopupMenuActions[sPopupMenuActionList[sPopupMenuSelection]].func(taskId); + } + else if (gMain.newKeys & B_BUTTON) + { + gTasks[taskId].data[10] = 0; + sub_80A48E8(taskId, gBagPocketScrollStates[sCurrentBagPocket].cursorPos, gBagPocketScrollStates[sCurrentBagPocket].cursorPos); + sub_80A4DA4(gBGTilemapBuffers[1]); + sItemPopupMenuActions[5].func(taskId); + } +} + +static const u8 gUnknown_083C1708[] = {4, 5}; +static const u8 gUnknown_083C170A[] = {5, 0}; + +static void sub_80A6FDC(void) +{ + if (ItemId_GetBattleUsage(gScriptItemId) != 0) + { + sPopupMenuActionList = gUnknown_083C1708; + gUnknown_02038564 = 2; + } + else + { + sPopupMenuActionList = gUnknown_083C170A; + gUnknown_02038564 = 1; + } +} + +static void OnItemSelect_Battle(u8 taskId) +{ + sPopupMenuSelection = 0; + sub_80A6FDC(); + gTasks[taskId].data[10] = gBagPocketScrollStates[sCurrentBagPocket].scrollTop + gBagPocketScrollStates[sCurrentBagPocket].cursorPos + 1; + sub_80A48E8(taskId, gBagPocketScrollStates[sCurrentBagPocket].cursorPos, gBagPocketScrollStates[sCurrentBagPocket].cursorPos); + sub_80A73FC(); + sub_80A6DF0(gBGTilemapBuffers[1]); + gTasks[taskId].func = sub_80A6EB8; +} + +void sub_80A7094(u8 taskId) +{ + gTasks[taskId].data[8] = (u32)sub_802E424 >> 16; + gTasks[taskId].data[9] = (u32)sub_802E424; + gTasks[taskId].func = HandleItemMenuPaletteFade; + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); +} + +static void OnBagClose_Battle(u8 taskId) +{ + PlaySE(SE_SELECT); + sub_80A7094(taskId); +} + +static void HandlePopupMenuAction_UseInBattle(u8 taskId) +{ + if (ItemId_GetBattleFunc(gScriptItemId) != NULL) + { + PlaySE(SE_SELECT); + ItemId_GetBattleFunc(gScriptItemId)(taskId); + } +} + +static void sub_80A7124(u8 taskId) +{ + PlaySE(SE_SELECT); + sub_80A7528(0); + sub_80A41D4(taskId); + ItemListMenu_InitMenu(); + sub_80A37C0(taskId); +} + +static void sub_80A7150(void) +{ + while (1) + { + if (SetupBagMultistep() == TRUE) + { + gUnknown_02038563 = CreateTask(sub_80A7230, 0); + gTasks[gUnknown_02038563].data[15] = 0; + break; + } + if (sub_80F9344() == TRUE) + break; + } +} + +void PrepareBagForWallyTutorial(void) +{ + u8 i; + + sPopupMenuSelection = 0; + sCurrentBagPocket = BAG_POCKET_ITEMS; + for (i = 0; i < 5; i++) + { + gBagPocketScrollStates[i].cursorPos = 0; + gBagPocketScrollStates[i].scrollTop = 0; + } + + // Save player's items + memcpy(ewramSavedItemsPocket, gSaveBlock1.bagPocket_Items, sizeof(gSaveBlock1.bagPocket_Items)); + memcpy(ewramSavedPokeballsPocket, gSaveBlock1.bagPocket_PokeBalls, sizeof(gSaveBlock1.bagPocket_PokeBalls)); + + // Add Wally's items to the bag + ClearItemSlots(gSaveBlock1.bagPocket_Items, ARRAY_COUNT(gSaveBlock1.bagPocket_Items)); + ClearItemSlots(gSaveBlock1.bagPocket_PokeBalls, ARRAY_COUNT(gSaveBlock1.bagPocket_PokeBalls)); + AddBagItem(ITEM_POTION, 1); + AddBagItem(ITEM_POKE_BALL, 1); + + sReturnLocation = RETURN_TO_WALLY_BATTLE; + SetMainCallback2(sub_80A7150); +} + +static void sub_80A7230(u8 taskId) +{ + s16 *taskData = gTasks[taskId].data; + + switch (taskData[15]) + { + case 102: + PlaySE(SE_SELECT); + sub_80A4E8C(1, 2); + break; + case 204: + PlaySE(SE_SELECT); + sub_80F98A4(2); + sub_80F98A4(3); + gScriptItemId = ITEM_POKE_BALL; + sPopupMenuActionList = gUnknown_083C1708; + gUnknown_02038564 = 2; + gTasks[taskId].data[10] = gBagPocketScrollStates[sCurrentBagPocket].scrollTop + gBagPocketScrollStates[sCurrentBagPocket].cursorPos + 1; + sub_80A48E8(taskId, gBagPocketScrollStates[sCurrentBagPocket].cursorPos, gBagPocketScrollStates[sCurrentBagPocket].cursorPos); + sub_80A73FC(); + sub_80A6DF0(gBGTilemapBuffers[1]); + break; + case 306: + PlaySE(SE_SELECT); + sub_80A4DA4(gBGTilemapBuffers[1]); + + // Restore player's items + memcpy(gSaveBlock1.bagPocket_Items, ewramSavedItemsPocket, sizeof(gSaveBlock1.bagPocket_Items)); + memcpy(gSaveBlock1.bagPocket_PokeBalls, ewramSavedPokeballsPocket, sizeof(gSaveBlock1.bagPocket_PokeBalls)); + + taskData[8] = (u32)sub_802E424 >> 16; + taskData[9] = (u32)sub_802E424; + gTasks[taskId].func = HandleItemMenuPaletteFade; + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); + return; + } + taskData[15]++; +} + +static void ItemListMenu_InitMenu(void) +{ + InitMenu(0, 14, 2, gBagPocketScrollStates[sCurrentBagPocket].cursorMax + 1, gBagPocketScrollStates[sCurrentBagPocket].cursorPos, 0); + CreateBlendedOutlineCursor(16, 0xFFFF, 12, 0x2D9F, 15); + sub_80A73C0(); +} + +static void sub_80A73C0(void) +{ + sub_814AD7C(0x70, gBagPocketScrollStates[sCurrentBagPocket].cursorPos * 16 + 16); +} + +static void sub_80A73F0(void) +{ + sub_814ADC8(); +} + +static void sub_80A73FC(void) +{ + HandleDestroyMenuCursors(); + sub_814AD44(); +} + +static void sub_80A740C(void) +{ + sub_80A75E4(); + sub_80A7768(); + sub_80A7420(); +} + +static void sub_80A7420(void) +{ + struct UnknownStruct2 *unkStruct = &gUnknown_0203853C; + int index; + + switch (unkStruct->unk0) + { + case 3: + unkStruct->unk0 = 2; + break; + case 2: + switch (unkStruct->unk2) + { + case 0: + index = gBagPocketScrollStates[sCurrentBagPocket].scrollTop + gBagPocketScrollStates[sCurrentBagPocket].cursorPos; + ItemListMenu_ChangeDescription(gCurrentBagPocketItemSlots[index].itemId, unkStruct->textLine); + break; + case 1: + sub_80A4A98(gOtherText_SwitchWhichItem, unkStruct->textLine); + break; + case 2: + sub_80A4A98(gOtherText_WhatWillYouDo2, unkStruct->textLine); + break; + case 3: + sub_80A4A98(gOtherText_HowManyToToss, unkStruct->textLine); + break; + case 4: + sub_80A4A98(gOtherText_ThrewAwayItem, unkStruct->textLine); + break; + case 5: + sub_80A4A98(gOtherText_OkayToThrowAwayPrompt, unkStruct->textLine); + break; + case 6: + sub_80A4A98(gOtherText_HowManyToDeposit, unkStruct->textLine); + break; + case 7: + sub_80A4A98(gOtherText_DepositedItems, unkStruct->textLine); + break; + case 8: + sub_80A4A98(gOtherText_NoRoomForItems, unkStruct->textLine); + break; + case 9: + sub_80A4A98(gOtherText_CantStoreSomeoneItem, unkStruct->textLine); + break; + } + unkStruct->textLine++; + if (unkStruct->textLine == 3) + { + unkStruct->unk0 = 0; + sub_80A7918(); + } + break; + } +} + +static void sub_80A751C(void) +{ + gUnknown_0203853C.unk0 = 0; +} + +static void sub_80A7528(u8 a) +{ + gUnknown_0203853C.textLine = 0; + gUnknown_0203853C.unk2 = a; + switch (sub_80A78F4()) + { + case 0: + gUnknown_0203853C.unk0 = 2; + while (gUnknown_0203853C.unk0 != 0) + sub_80A7420(); + break; + case 1: + gUnknown_0203853C.unk0 = 3; + break; + case 2: + gUnknown_0203853C.unk0 = 1; + break; + } +} + +static void sub_80A756C(void) +{ + if (gUnknown_0203853C.unk0 == 2 || gUnknown_0203853C.unk0 == 3) + sub_80A7918(); + gUnknown_0203853C.unk0 = 0; +} + +static void sub_80A7590(void) +{ + MenuZeroFillWindowRect(0, 13, 13, 20); + sub_80A756C(); +} + +static void sub_80A75A8(void) +{ + if (gUnknown_0203853C.unk0 == 2 || gUnknown_0203853C.unk0 == 3) + gUnknown_0203853C.unk0 = 1; +} + +static void sub_80A75C4(void) +{ + switch (gUnknown_0203853C.unk0) + { + case 1: + gUnknown_0203853C.unk0 = 3; + break; + case 0: + sub_80A7918(); + break; + } +} + +static void sub_80A75E4(void) +{ + if (gUnknown_02038540.unk0 == 1 && sub_80A7988() == 0) + { + int r1; + + sub_80A47E8(gUnknown_02038563, gUnknown_02038540.unk1, gUnknown_02038540.unk1, 1); + gUnknown_02038540.unk1++; + if (gUnknown_02038540.unk2 != 0) + r1 = 5; + else + r1 = 7; + if (r1 < gUnknown_02038540.unk1) + { + gUnknown_02038540.unk0 = 0; + sub_80A78E8(); + } + } +} + +static void sub_80A7630(void) +{ + gUnknown_02038540.unk0 = 0; +} + +static void sub_80A763C(void) +{ + struct UnknownStruct3 *r4 = &gUnknown_02038540; + + switch (sub_80A78C4()) + { + case FALSE: + sub_80A48E8(gUnknown_02038563, 0, 7); + break; + case TRUE: + r4->unk0 = 1; + r4->unk1 = 0; + r4->unk2 = 0; + break; + } +} + +static void sub_80A7678(void) +{ + if (gUnknown_02038540.unk0 == 1) + sub_80A78E8(); + gUnknown_02038540.unk0 = 0; +} + +static void sub_80A7694(void) +{ + gUnknown_02038540.unk2 = 1; +} + +static void sub_80A76A0(void) +{ + MenuZeroFillWindowRect(14, 2, 29, 18); + sub_80A7678(); +} + +static bool32 sub_80A76B8(void) +{ + struct UnknownStruct3 *s = &gUnknown_02038540; + + return (s->unk0 == 0); +} + +static bool32 sub_80A76D0(void) +{ + struct UnknownStruct3 *s = &gUnknown_02038540; + + return (s->unk1 > 5); +} + +static void sub_80A76E8(void) +{ + if (gUnknown_02038544.unk0 == 1) + { + DisplayItemMessageOnField( + gUnknown_02038544.unk1, + gUnknown_02038544.unk4, + gUnknown_02038544.unk8, + gUnknown_02038544.unk2); + gUnknown_02038544.unk0 = 0; + } +} + +static void sub_80A770C(void) +{ + gUnknown_02038544.unk0 = 0; +} + +static void DisplayCannotUseItemMessage(int a, const u8 *b, TaskFunc func, int d) +{ + struct UnknownStruct4 *r4 = &gUnknown_02038544; + + switch (sub_80A7924()) + { + case 0: + DisplayItemMessageOnField(a, b, func, d); + break; + case 2: + r4->unk0 = 1; + r4->unk1 = a; + r4->unk4 = b; + r4->unk8 = func; + r4->unk2 = d; + break; + } +} + +static void sub_80A7768(void) +{ + struct UnknownStruct5 *r4 = &gUnknown_02038550; + + if (r4->unk0 == 2) + { + if (r4->unk1 != 0) + { + if (r4->unk2 != 1) + { + const u8 *text = sItemPopupMenuActions[sPopupMenuActionList[r4->unk1 - 1]].text; + int var = r4->unk1 - 1; + + MenuPrint(text, 7, var * 2 + 1 + r4->unk3); + } + else + { + const u8 *text; + int var; + + if (r4->unk1 == 1) + text = sub_80A4B90(gScriptItemId); + else + text = sItemPopupMenuActions[sPopupMenuActionList[r4->unk1 - 1]].text; + var = r4->unk1 - 1; + MenuPrint(text, (var >> 1) * 6 + 1, (var & 1) * 2 + 8); + } + if (r4->unk1 == gUnknown_02038564) + { + r4->unk0 = 0; + sub_80A7970(); + } + } + r4->unk1++; + } +} + +static void sub_80A7828(void) +{ + gUnknown_02038550.unk0 = 0; +} + +static void sub_80A7834(int a, int b) +{ + struct UnknownStruct5 *r4 = &gUnknown_02038550; + + switch (sub_80A7958()) + { + case 1: + r4->unk0 = 2; + r4->unk1 = 0; + r4->unk2 = a; + r4->unk3 = b; + break; + case 2: + r4->unk0 = 1; + r4->unk1 = 0; + r4->unk2 = a; + r4->unk3 = b; + break; + } +} + +static void sub_80A7868(void) +{ + if (gUnknown_02038550.unk0 == 2) + gUnknown_02038550.unk0 = 1; +} + +static void sub_80A7880(void) +{ + switch (gUnknown_02038550.unk0) + { + case 1: + gUnknown_02038550.unk0 = 2; + break; + case 0: + sub_80A7970(); + break; + } +} + +static bool32 sub_80A78A0(void) +{ + struct UnknownStruct5 *r0 = &gUnknown_02038550; + + return (r0->unk0 == 0); +} + +static void sub_80A78B8(void) +{ + gUnknown_02038554.unk0 = 0; +} + +static bool32 sub_80A78C4(void) +{ + bool32 retVal; + + if (gLinkOpen == TRUE) + { + sub_80A7868(); + sub_80A75A8(); + retVal = TRUE; + } + else + { + retVal = FALSE; + } + return retVal; +} + +static void sub_80A78E8(void) +{ + sub_80A7880(); +} + +static int sub_80A78F4(void) +{ + int retVal; + + if (gLinkOpen == TRUE) + { + if (sub_80A76B8() != 0) + retVal = 1; + else + retVal = 2; + } + else + { + retVal = 0; + } + return retVal; +} + +static void sub_80A7918(void) +{ + sub_80A76E8(); +} + +static int sub_80A7924(void) +{ + if (gLinkOpen == TRUE && sub_80A76B8() == 0) + { + if (sub_80A76D0() != 0) + { + sub_80A7678(); + return 0; + } + } + else + { + return 0; + } + sub_80A7694(); + return 2; +} + +static int sub_80A7958(void) +{ + if (sub_80A76B8() == 0) + return 2; + sub_80A75A8(); + return 1; +} + +static void sub_80A7970(void) +{ + sub_80A75C4(); +} + +static void sub_80A797C(void) +{ + gUnknown_02038554.unk0 = 1; +} + +static int sub_80A7988(void) +{ + int val = gUnknown_02038554.unk0; + + gUnknown_02038554.unk0 = 0; + return val; +} + +static const u16 gPalette_83C170C[] = INCBIN_U16("graphics/unknown/83C170C.gbapal"); +static const u8 gSpriteImage_83C172C[] = INCBIN_U8("graphics/unknown_sprites/83C172C.4bpp"); + +const u8 gSpriteImage_UnusedCherry[] = INCBIN_U8("graphics/unused/cherry.4bpp"); +const u16 gSpritePalette_UnusedCherry[] = INCBIN_U16("graphics/unused/cherry.gbapal"); + +//------------------------------------------------------------------------------ +// Bag Sprite +//------------------------------------------------------------------------------ + +static const struct OamData sBagSpriteOamData = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 3, + .tileNum = 0, + .priority = 2, + .paletteNum = 7, + .affineParam = 0, +}; + +static const union AnimCmd sBagSpriteAnimSeq0[] = +{ + ANIMCMD_FRAME(0, 4), + ANIMCMD_END, +}; + +static const union AnimCmd sBagSpriteAnimSeq1[] = +{ + ANIMCMD_FRAME(64, 4), + ANIMCMD_END, +}; + +static const union AnimCmd sBagSpriteAnimSeq5[] = +{ + ANIMCMD_FRAME(128, 4), + ANIMCMD_END, +}; + +static const union AnimCmd sBagSpriteAnimSeq2[] = +{ + ANIMCMD_FRAME(192, 4), + ANIMCMD_END, +}; + +static const union AnimCmd sBagSpriteAnimSeq3[] = +{ + ANIMCMD_FRAME(256, 4), + ANIMCMD_END, +}; + +static const union AnimCmd sBagSpriteAnimSeq4[] = +{ + ANIMCMD_FRAME(320, 4), + ANIMCMD_END, +}; + +static const union AnimCmd *const sBagSpriteAnimTable[] = +{ + sBagSpriteAnimSeq0, + sBagSpriteAnimSeq1, + sBagSpriteAnimSeq2, + sBagSpriteAnimSeq3, + sBagSpriteAnimSeq4, + sBagSpriteAnimSeq5, +}; + +static const union AffineAnimCmd sBagSpriteAffineAnimSeq[] = +{ + AFFINEANIMCMD_FRAME(0, 0, -2, 2), + AFFINEANIMCMD_FRAME(0, 0, 2, 4), + AFFINEANIMCMD_FRAME(0, 0, -2, 4), + AFFINEANIMCMD_FRAME(0, 0, 2, 2), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd *const sBagSpriteAffineAnimTable[] = +{ + sBagSpriteAffineAnimSeq, +}; + +static const struct CompressedSpriteSheet sMaleBagSpriteSheet = {gBagMaleTiles, 0x3000, 30000}; +static const struct CompressedSpriteSheet sFemaleBagSpriteSheet = {gBagFemaleTiles, 0x3000, 30000}; +static const struct CompressedSpritePalette sBagSpritePalette = {gBagPalette, 30000}; + +static void sub_80A7998(struct Sprite *sprite) +{ + sprite->animNum = 0; + sprite->data0 = 0; + sprite->data1 = 0; + sprite->data2 = 0; + sprite->data3 = 0; + sprite->data4 = 0; + sprite->callback = sub_80A79B4; +} + +static void sub_80A79B4(struct Sprite *sprite) +{ + if (gUnknown_0203855B != -1) + sub_80A79EC(sprite); + if (gUnknown_0203855C != 0) + sub_80A7A94(sprite); +} + +static void sub_80A79EC(struct Sprite *sprite) +{ + switch (sprite->data3) + { + case 0: + if (gUnknown_0203855B != 6) + { + sprite->animBeginning = TRUE; + sprite->animNum = gUnknown_0203855B; + gUnknown_0203855B = -1; + } + else + { + sprite->animBeginning = TRUE; + sprite->animNum = 0; + sprite->pos1.y -= 4; + sprite->data0 = 4; + sprite->data3 = 1; + sub_80A7AE4(sprite); + } + break; + case 1: + if (sprite->data0 != 0) + { + if (sprite->data1 != 0) + { + sprite->pos1.y++; + sprite->data0--; + } + sprite->data1 = (sprite->data1 + 1) & 1; + } + else + { + gUnknown_0203855B = -1; + sprite->data1 = 0; + sprite->data3 = 0; + } + break; + } +} + +static void sub_80A7A94(struct Sprite *sprite) +{ + switch (sprite->data4) + { + case 0: + sprite->oam.affineMode = 1; + sprite->affineAnims = sBagSpriteAffineAnimTable; + InitSpriteAffineAnim(sprite); + sprite->data4 = 1; + break; + case 1: + sprite->data2++; + if (sprite->data2 == 12) + sub_80A7AE4(sprite); + break; + } +} + +static void sub_80A7AE4(struct Sprite *sprite) +{ + gUnknown_0203855C = 0; + sprite->oam.affineMode = 0; + sprite->data2 = 0; + sprite->data4 = 0; + FreeOamMatrix(sprite->oam.matrixNum); +} + +static const struct SpriteTemplate sBagSpriteTemplate = +{ + .tileTag = 30000, + .paletteTag = 30000, + .oam = &sBagSpriteOamData, + .anims = sBagSpriteAnimTable, + .images = NULL, + .affineAnims = sBagSpriteAffineAnimTable, + .callback = sub_80A7998, +}; + +static void CreateBagSprite(void) +{ + CreateSprite(&sBagSpriteTemplate, 58, 40, 0); +} + +//------------------------------------------------------------------------------ +// Pokeball Sprite +//------------------------------------------------------------------------------ + +static const struct OamData gOamData_83C1CF8 = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 4, + .size = 1, + .tileNum = 0, + .priority = 2, + .paletteNum = 8, + .affineParam = 0, +}; + +static const union AffineAnimCmd gSpriteAffineAnim_83C1D00[] = +{ + AFFINEANIMCMD_FRAME(0, 0, 8, 32), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd gSpriteAffineAnim_83C1D10[] = +{ + AFFINEANIMCMD_FRAME(0, 0, -8, 32), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd *const gSpriteAffineAnimTable_83C1D20[] = +{ + gSpriteAffineAnim_83C1D00, + gSpriteAffineAnim_83C1D10, +}; + +static const struct SpriteFrameImage gSpriteImageTable_83C1D28[] = +{ + {gSpriteImage_83C172C, sizeof(gSpriteImage_83C172C)}, +}; + +static const struct SpritePalette sPokeballSpritePalette = {gPalette_83C170C, 8}; + +static void sub_80A7B28(struct Sprite *sprite) +{ + sprite->data3 = 0; + sprite->data0 = 0; + sub_80A7B6C(sprite); + sprite->callback = sub_80A7B6C; +} + +static void sub_80A7B48(struct Sprite *sprite) +{ + sprite->centerToCornerVecX = sprite->data5 - ((sprite->data0 + 1) & 1); + sprite->centerToCornerVecY = sprite->data6 - ((sprite->data0 + 1) & 1); +} + +static void sub_80A7B6C(struct Sprite *sprite) +{ + if (sprite->data7 != 0) + { + switch (sprite->data3) + { + case 0: + sprite->oam.affineMode = 1; + if (sprite->data7 == 1) + sprite->affineAnims = gSpriteAffineAnimTable_83C1D20; + else + sprite->affineAnims = gSpriteAffineAnimTable_83C1D20 + 1; + InitSpriteAffineAnim(sprite); + sprite->data3 = 1; + sprite->data5 = sprite->centerToCornerVecX; + sprite->data6 = sprite->centerToCornerVecY; + sub_80A7B48(sprite); + break; + case 1: + sprite->data0++; + sub_80A7B48(sprite); + if (sprite->data0 == 32) + { + sprite->data0 = 0; + sprite->data3 = 0; + sprite->centerToCornerVecX = sprite->data5; + sprite->centerToCornerVecY = sprite->data6; + FreeOamMatrix(sprite->oam.matrixNum); + sprite->oam.affineMode = 0; + sprite->callback = SpriteCallbackDummy; + } + break; + } + } +} + +static const struct SpriteTemplate sPokeballSpriteTemplate = +{ + .tileTag = 0xFFFF, + .paletteTag = 8, + .oam = &gOamData_83C1CF8, + .anims = sBagSpriteAnimTable, + .images = gSpriteImageTable_83C1D28, + .affineAnims = gSpriteAffineAnimTable_83C1D20, + .callback = sub_80A7B28, +}; + +static void CreateBagPokeballSprite(u8 a) +{ + LoadSpritePalette(&sPokeballSpritePalette); + sPokeballSpriteId = CreateSprite(&sPokeballSpriteTemplate, 16, 88, 0); + gSprites[sPokeballSpriteId].data7 = a; +} + +static void sub_80A7C64(void) +{ + FreeSpritePaletteByTag(8); + FreeOamMatrix(gSprites[sPokeballSpriteId].oam.matrixNum); + DestroySprite(&gSprites[sPokeballSpriteId]); +} + +static const struct OamData sBerrySpriteOamData = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 3, + .tileNum = 0, + .priority = 1, + .paletteNum = 7, + .affineParam = 0, +}; + +static const struct OamData gOamData_83C1D58 = +{ + .y = 0, + .affineMode = 3, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 3, + .tileNum = 0, + .priority = 0, + .paletteNum = 7, + .affineParam = 0, +}; + +static const union AnimCmd sBerrySpriteAnimSeq[] = +{ + ANIMCMD_FRAME(0, 0), + ANIMCMD_END, +}; + +static const union AnimCmd *const sBerrySpriteAnimTable[] = +{ + sBerrySpriteAnimSeq, +}; + +static const struct SpriteFrameImage sBerrySpriteImageTable[] = +{ + {ewramBerryPic, 0x800}, +}; + +static void SpriteCB_BerrySprite(struct Sprite *); +static const struct SpriteTemplate sBerrySpriteTemplate = +{ + .tileTag = 0xFFFF, + .paletteTag = 30020, + .oam = &sBerrySpriteOamData, + .anims = sBerrySpriteAnimTable, + .images = sBerrySpriteImageTable, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCB_BerrySprite, +}; + +static const union AffineAnimCmd gSpriteAffineAnim_83C1D8C[] = +{ + AFFINEANIMCMD_FRAME(-1, -1, -3, 96), + AFFINEANIMCMD_FRAME(0, 0, 0, 16), + AFFINEANIMCMD_FRAME(-2, -2, -1, 64), + AFFINEANIMCMD_FRAME(-8, 0, 0, 16), + AFFINEANIMCMD_FRAME(0, -8, 0, 16), + AFFINEANIMCMD_FRAME(256, 256, 0, 0), + AFFINEANIMCMD_JUMP(0), +}; + +static const union AffineAnimCmd gSpriteAffineAnim_83C1DC4[] = +{ + AFFINEANIMCMD_FRAME(-1, -1, 3, 96), + AFFINEANIMCMD_FRAME(0, 0, 0, 16), + AFFINEANIMCMD_FRAME(-2, -2, 1, 64), + AFFINEANIMCMD_FRAME(-8, 0, 0, 16), + AFFINEANIMCMD_FRAME(0, -8, 0, 16), + AFFINEANIMCMD_FRAME(256, 256, 0, 0), + AFFINEANIMCMD_JUMP(0), +}; + +static const union AffineAnimCmd *const gSpriteAffineAnimTable_83C1DFC[] = +{ + gSpriteAffineAnim_83C1D8C, + gSpriteAffineAnim_83C1DC4, +}; + +static const struct SpriteTemplate gSpriteTemplate_83C1E04 = +{ + .tileTag = 0xFFFF, + .paletteTag = 30020, + .oam = &gOamData_83C1D58, + .anims = sBerrySpriteAnimTable, + .images = sBerrySpriteImageTable, + .affineAnims = gSpriteAffineAnimTable_83C1DFC, + .callback = SpriteCallbackDummy, +}; + +static const struct {const u8 *lzPic; const u8 *lzPalette;} sBerryGraphicsTable[] = +{ + {gBerryPic_Cheri, gBerryPalette_Cheri}, + {gBerryPic_Chesto, gBerryPalette_Chesto}, + {gBerryPic_Pecha, gBerryPalette_Pecha}, + {gBerryPic_Rawst, gBerryPalette_Rawst}, + {gBerryPic_Aspear, gBerryPalette_Aspear}, + {gBerryPic_Leppa, gBerryPalette_Leppa}, + {gBerryPic_Oran, gBerryPalette_Oran}, + {gBerryPic_Persim, gBerryPalette_Persim}, + {gBerryPic_Lum, gBerryPalette_Lum}, + {gBerryPic_Sitrus, gBerryPalette_Sitrus}, + {gBerryPic_Figy, gBerryPalette_Figy}, + {gBerryPic_Wiki, gBerryPalette_Wiki}, + {gBerryPic_Mago, gBerryPalette_Mago}, + {gBerryPic_Aguav, gBerryPalette_Aguav}, + {gBerryPic_Iapapa, gBerryPalette_Iapapa}, + {gBerryPic_Razz, gBerryPalette_Razz}, + {gBerryPic_Bluk, gBerryPalette_Bluk}, + {gBerryPic_Nanab, gBerryPalette_Nanab}, + {gBerryPic_Wepear, gBerryPalette_Wepear}, + {gBerryPic_Pinap, gBerryPalette_Pinap}, + {gBerryPic_Pomeg, gBerryPalette_Pomeg}, + {gBerryPic_Kelpsy, gBerryPalette_Kelpsy}, + {gBerryPic_Qualot, gBerryPalette_Qualot}, + {gBerryPic_Hondew, gBerryPalette_Hondew}, + {gBerryPic_Grepa, gBerryPalette_Grepa}, + {gBerryPic_Tamato, gBerryPalette_Tamato}, + {gBerryPic_Cornn, gBerryPalette_Cornn}, + {gBerryPic_Magost, gBerryPalette_Magost}, + {gBerryPic_Rabuta, gBerryPalette_Rabuta}, + {gBerryPic_Nomel, gBerryPalette_Nomel}, + {gBerryPic_Spelon, gBerryPalette_Spelon}, + {gBerryPic_Pamtre, gBerryPalette_Pamtre}, + {gBerryPic_Watmel, gBerryPalette_Watmel}, + {gBerryPic_Durin, gBerryPalette_Durin}, + {gBerryPic_Belue, gBerryPalette_Belue}, + {gBerryPic_Liechi, gBerryPalette_Liechi}, + {gBerryPic_Ganlon, gBerryPalette_Ganlon}, + {gBerryPic_Salac, gBerryPalette_Salac}, + {gBerryPic_Petaya, gBerryPalette_Petaya}, + {gBerryPic_Apicot, gBerryPalette_Apicot}, + {gBerryPic_Lansat, gBerryPalette_Lansat}, + {gBerryPic_Starf, gBerryPalette_Starf}, + {gBerryPic_Enigma, gBerryPalette_Enigma}, +}; + +static void DrawBerryPic(const u8 *src, u8 *dst) +{ + u8 i; + u8 j; + + memset(dst, 0, 0x800); + dst += 0x100; + for (i = 0; i < 6; i++) + { + dst += 32; + for (j = 0; j < 6; j++) + { + memcpy(dst, src, 32); + dst += 32; + src += 32; + } + if (i != 5) + dst += 32; + } +} + +static void LoadBerryPic(u8 berryId) +{ + struct SpritePalette spritePal; + + if (berryId == 0x2A && IsEnigmaBerryValid() == TRUE) + { + DrawBerryPic(gSaveBlock1.enigmaBerry.pic, ewramBerryPic); + spritePal.data = gSaveBlock1.enigmaBerry.palette; + spritePal.tag = 0x7544; + LoadSpritePalette(&spritePal); + } + else + { + spritePal.data = (u16 *)sBerryGraphicsTable[berryId].lzPalette; + spritePal.tag = 0x7544; + LoadCompressedObjectPalette((struct CompressedSpritePalette *)&spritePal); + LZDecompressWram(sBerryGraphicsTable[berryId].lzPic, ewramBerryPicTemp); + DrawBerryPic(ewramBerryPicTemp, ewramBerryPic); + } +} + +u8 CreateBerrySprite(u8 berryId, s16 x, s16 y) +{ + LoadBerryPic(berryId); + return CreateSprite(&sBerrySpriteTemplate, x, y, 0); +} + +static void SpriteCB_BerrySprite(struct Sprite *sprite) +{ + sprite->pos2.y = -gUnknown_030041B4; +} + +void sub_80A7DD4(void) +{ + FreeSpritePaletteByTag(0x7544); + FreeSpritePaletteByTag(8); +} + +u8 sub_80A7DEC(u8 berryId, u8 x, u8 y, bool8 animate) +{ + u8 spriteId; + + FreeSpritePaletteByTag(0x7544); + LoadBerryPic(berryId); + spriteId = CreateSprite(&gSpriteTemplate_83C1E04, x, y, 0); + if (animate == TRUE) + StartSpriteAffineAnim(&gSprites[spriteId], 1); + return spriteId; +} + +const struct CompressedSpriteSheet gUnknown_083C1F74 = {gBerryCheckCircle_Gfx, 2048, 0x2710}; + +const struct CompressedSpritePalette gUnknown_083C1F7C = {gBerryCheck_Pal, 0x2710}; + +static const struct OamData gOamData_83C1F84 = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 2, + .tileNum = 0, + .priority = 1, + .paletteNum = 0, + .affineParam = 0, +}; + +static const union AnimCmd gSpriteAnim_83C1F8C[] = +{ + ANIMCMD_FRAME(0, 0), + ANIMCMD_END, +}; + +static const union AnimCmd *const gSpriteAnimTable_83C1F94[] = +{ + gSpriteAnim_83C1F8C, +}; + +static const struct SpriteTemplate gSpriteTemplate_83C1F98 = +{ + .tileTag = 10000, + .paletteTag = 10000, + .oam = &gOamData_83C1F84, + .anims = gSpriteAnimTable_83C1F94, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCB_BerrySprite, +}; + +u8 sub_80A7E5C(s16 x) +{ + return CreateSprite(&gSpriteTemplate_83C1F98, x, 99, 0); +} diff --git a/src/item_use.c b/src/field/item_use.c similarity index 87% rename from src/item_use.c rename to src/field/item_use.c index b906f91ad..68da27fdb 100644 --- a/src/item_use.c +++ b/src/field/item_use.c @@ -26,7 +26,7 @@ #include "pokeblock.h" #include "pokemon_item_effect.h" #include "pokemon_menu.h" -#include "rom4.h" +#include "overworld.h" #include "rom_8094928.h" #include "script.h" #include "songs.h" @@ -36,10 +36,10 @@ #include "task.h" #include "vars.h" -extern void (* gUnknown_03005D00)(u8); -extern void (* gFieldCallback)(void); -extern void (* gUnknown_0300485C)(void); -extern void (* gUnknown_03004AE4)(u8, u16, TaskFunc); +extern void (*gFieldItemUseCallback)(u8); +extern void (*gFieldCallback)(void); +extern void (*gUnknown_0300485C)(void); +extern void (*gUnknown_03004AE4)(u8, u16, TaskFunc); extern u8 gUnknown_02038561; extern u8 gLastFieldPokeMenuOpened; @@ -55,7 +55,7 @@ extern u16 gBattleTypeFlags; static const u8 gSSTidalBetaString[] = _("この チケットで ふねに のりほうだい\nはやく のってみたいな"); static const u8 gSSTidalBetaString2[] = _("この チケットで ふねに のりほうだい\nはやく のってみたいな"); -static const struct TextStruct gUnknown_083D61DC[2] = +static const u8 *const gUnknown_083D61DC[2] = { gSSTidalBetaString, gSSTidalBetaString2, @@ -106,11 +106,13 @@ void SetUpItemUseOnFieldCallback(u8 taskId) { if (gTasks[taskId].data[2] != 1) { - gFieldCallback = (void *)ExecuteItemUseFromBlackPalette; + gFieldCallback = ExecuteItemUseFromBlackPalette; ItemMenu_ConfirmNormalFade(taskId); } else - gUnknown_03005D00(taskId); + { + gFieldItemUseCallback(taskId); + } } void HandleDeniedItemUseMessage(u8 var1, u8 playerMenuStatus, const u8 *text) @@ -185,9 +187,9 @@ void ItemUseOutOfBattle_Bike(u8 taskId) } else { - if (IsBikingAllowedByMap() == TRUE && IsBikingDisallowedByPlayer() == FALSE) + if (Overworld_IsBikingAllowed() == TRUE && IsBikingDisallowedByPlayer() == FALSE) { - gUnknown_03005D00 = (void *)ItemUseOnFieldCB_Bike; + gFieldItemUseCallback = (void *)ItemUseOnFieldCB_Bike; SetUpItemUseOnFieldCallback(taskId); } else @@ -241,7 +243,7 @@ void ItemUseOutOfBattle_Rod(u8 taskId) { if (CanFish() == TRUE) { - gUnknown_03005D00 = (void *)ItemUseOnFieldCB_Rod; + gFieldItemUseCallback = (void *)ItemUseOnFieldCB_Rod; SetUpItemUseOnFieldCallback(taskId); } else @@ -257,7 +259,7 @@ void ItemUseOnFieldCB_Rod(u8 taskId) void ItemUseOutOfBattle_Itemfinder(u8 var) { IncrementGameStat(0x27); - gUnknown_03005D00 = (void *)ItemUseOnFieldCB_Itemfinder; + gFieldItemUseCallback = (void *)ItemUseOnFieldCB_Itemfinder; SetUpItemUseOnFieldCallback(var); } @@ -342,7 +344,7 @@ bool8 ItemfinderCheckForHiddenItems(struct MapEvents *events, u8 taskId) sub_80C9720(taskId); // hidden item detected? - if(gTasks[taskId].data[2] == TRUE) + if (gTasks[taskId].data[2] == TRUE) return TRUE; else return FALSE; @@ -354,11 +356,11 @@ bool8 HiddenItemAtPos(struct MapEvents *events, s16 x, s16 y) struct BgEvent *bgEvent = events->bgEvents; int i; - for(i = 0; i < bgEventCount; i++) + for (i = 0; i < bgEventCount; i++) { - if(bgEvent[i].kind == 7 && x == (u16)bgEvent[i].x && y == (u16)bgEvent[i].y) // hidden item and coordinates matches x and y passed? + if (bgEvent[i].kind == 7 && x == (u16)bgEvent[i].x && y == (u16)bgEvent[i].y) // hidden item and coordinates matches x and y passed? { - if(!FlagGet(bgEvent[i].bgUnion.hiddenItem.hiddenItemId + 600)) + if (!FlagGet(bgEvent[i].bgUnion.hiddenItem.hiddenItemId + 600)) return TRUE; else return FALSE; @@ -376,7 +378,7 @@ bool8 sub_80C9688(struct MapConnection *connection, int x, int y) mapHeader = mapconnection_get_mapheader(connection); - switch(connection->direction) + switch (connection->direction) { // same weird temp variable behavior seen in HiddenItemAtPos case 2: @@ -592,7 +594,7 @@ void sub_80C9838(u8 taskId, s16 x, s16 y) s16 *data = gTasks[taskId].data; s16 var1, var2, var3, var4; - if(data[2] == FALSE) + if (data[2] == FALSE) { data[0] = x; data[1] = y; @@ -602,34 +604,34 @@ void sub_80C9838(u8 taskId, s16 x, s16 y) { // data[0] and data[1] contain the player's coordinates. // x and y contain the item's coordinates. - if(data[0] < 0) + if (data[0] < 0) var1 = data[0] * -1; // item is to the left else var1 = data[0]; // item is to the right - if(data[1] < 0) + if (data[1] < 0) var2 = data[1] * -1; // item is to the north else var2 = data[1]; // item is to the south - if(x < 0) + if (x < 0) var3 = x * -1; else var3 = x; - if(y < 0) + if (y < 0) var4 = y * -1; else var4 = y; - if(var1 + var2 > var3 + var4) + if (var1 + var2 > var3 + var4) { data[0] = x; data[1] = y; } else { - if(var1 + var2 == var3 + var4 && (var2 > var4 || (var2 == var4 && data[1] < y))) + if (var1 + var2 == var3 + var4 && (var2 > var4 || (var2 == var4 && data[1] < y))) { data[0] = x; data[1] = y; @@ -642,40 +644,40 @@ u8 GetPlayerDirectionTowardsHiddenItem(s16 itemX, s16 itemY) { s16 abX, abY; - if(itemX == 0 && itemY == 0) + if (itemX == 0 && itemY == 0) return DIR_NONE; // player is standing on the item. // get absolute X distance. - if(itemX < 0) + if (itemX < 0) abX = itemX * -1; else abX = itemX; // get absolute Y distance. - if(itemY < 0) + if (itemY < 0) abY = itemY * -1; else abY = itemY; - if(abX > abY) + if (abX > abY) { - if(itemX < 0) + if (itemX < 0) return DIR_EAST; else return DIR_NORTH; } else { - if(abX < abY) + if (abX < abY) { - if(itemY < 0) + if (itemY < 0) return DIR_SOUTH; else return DIR_WEST; } - if(abX == abY) + if (abX == abY) { - if(itemY < 0) + if (itemY < 0) return DIR_SOUTH; else return DIR_WEST; @@ -694,7 +696,7 @@ void SetPlayerDirectionTowardsItem(u8 direction) void DisplayItemRespondingMessageAndExitItemfinder(u8 taskId) { - if(FieldObjectCheckIfSpecialAnimFinishedOrInactive(&gMapObjects[GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0)]) == TRUE) + if (FieldObjectCheckIfSpecialAnimFinishedOrInactive(&gMapObjects[GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0)]) == TRUE) DisplayItemMessageOnField(taskId, gOtherText_ItemfinderResponding, ExitItemfinder, 0); } @@ -702,7 +704,7 @@ void RotatePlayerAndExitItemfinder(u8 taskId) { s16 *data = gTasks[taskId].data; - if(FieldObjectCheckIfSpecialAnimFinishedOrInactive(&gMapObjects[GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0)]) == TRUE + if (FieldObjectCheckIfSpecialAnimFinishedOrInactive(&gMapObjects[GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0)]) == TRUE || data[2] == FALSE) { SetPlayerDirectionTowardsItem(gItemFinderDirections[data[5]]); @@ -710,18 +712,18 @@ void RotatePlayerAndExitItemfinder(u8 taskId) data[5] = (data[5] + 1) & 3; data[3]++; - if(data[3] == 4) + if (data[3] == 4) DisplayItemMessageOnField(taskId, gOtherText_ItemfinderItemUnderfoot, ExitItemfinder, 0); } } void ItemUseOutOfBattle_PokeblockCase(u8 taskId) { - if(sub_80F9344() == TRUE) + if (sub_80F9344() == TRUE) { DisplayDadsAdviceCannotUseItemMessage(taskId, gTasks[taskId].data[2]); } - else if(gTasks[taskId].data[2] != TRUE) + else if (gTasks[taskId].data[2] != TRUE) { sub_810BA7C(0); ItemMenu_ConfirmNormalFade(taskId); @@ -739,7 +741,7 @@ void ItemUseOutOfBattle_CoinCase(u8 taskId) ConvertIntToDecimalStringN(gStringVar1, GetCoins(), 0, 4); StringExpandPlaceholders(gStringVar4, gOtherText_Coins3); - if(!gTasks[taskId].data[2]) + if (!gTasks[taskId].data[2]) { MenuZeroFillWindowRect(0, 0xD, 0xD, 0x14); DisplayItemMessageOnField(taskId, gStringVar4, CleanUpItemMenuMessage, 1); @@ -752,35 +754,35 @@ void ItemUseOutOfBattle_CoinCase(u8 taskId) void sub_80C9BB8(u8 var) { - if(gMain.newKeys & A_BUTTON) + if (gMain.newKeys & A_BUTTON) CleanUpItemMenuMessage(var); } void sub_80C9BD8(u8 var) { - if(gMain.newKeys & A_BUTTON) + if (gMain.newKeys & A_BUTTON) CleanUpOverworldMessage(var); } // unused void ItemUseOutOfBattle_SSTicket(u8 taskId) { - if(gTasks[taskId].data[2] == 0) + if (gTasks[taskId].data[2] == 0) { MenuZeroFillWindowRect(0, 0xD, 0xD, 0x14); - DisplayItemMessageOnField(taskId, (u8 *)gUnknown_083D61DC[ItemId_GetSecondaryId(gScriptItemId)].text, sub_80C9BB8, 1); + DisplayItemMessageOnField(taskId, gUnknown_083D61DC[ItemId_GetSecondaryId(gScriptItemId)], sub_80C9BB8, 1); } else { - DisplayItemMessageOnField(taskId, (u8 *)gUnknown_083D61DC[ItemId_GetSecondaryId(gScriptItemId)].text, sub_80C9BD8, 0); + DisplayItemMessageOnField(taskId, gUnknown_083D61DC[ItemId_GetSecondaryId(gScriptItemId)], sub_80C9BD8, 0); } } void sub_80C9C7C(u8 taskId) { - if(IsPlayerFacingPlantedBerryTree() == TRUE) + if (IsPlayerFacingPlantedBerryTree() == TRUE) { - gUnknown_03005D00 = sub_80C9D00; + gFieldItemUseCallback = sub_80C9D00; gFieldCallback = ExecuteItemUseFromBlackPalette; gTasks[taskId].data[8] = (u32)c2_exit_to_overworld_2_switch >> 16; gTasks[taskId].data[9] = (u32)c2_exit_to_overworld_2_switch; @@ -803,9 +805,9 @@ void sub_80C9D00(u8 taskId) void ItemUseOutOfBattle_WailmerPail(u8 taskId) { - if(TryToWaterBerryTree() == TRUE) + if (TryToWaterBerryTree() == TRUE) { - gUnknown_03005D00 = sub_80C9D74; + gFieldItemUseCallback = sub_80C9D74; SetUpItemUseOnFieldCallback(taskId); } else @@ -839,9 +841,9 @@ void ItemUseOutOfBattle_SacredAsh(u8 taskId) gLastFieldPokeMenuOpened = 0; - for(i = 0; i < 6; i++) + for (i = 0; i < 6; i++) { - if(GetMonData(&gPlayerParty[i], MON_DATA_SPECIES) != 0 && GetMonData(&gPlayerParty[i], MON_DATA_HP) == 0) + if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES) != 0 && GetMonData(&gPlayerParty[i], MON_DATA_HP) == 0) { gLastFieldPokeMenuOpened = i; break; @@ -874,7 +876,7 @@ void ItemUseOutOfBattle_TMHM(u8 taskId) { MenuZeroFillWindowRect(0, 0xD, 0xD, 0x14); - if(gScriptItemId >= ITEM_HM01) + if (gScriptItemId >= ITEM_HM01) DisplayItemMessageOnField(taskId, gOtherText_BootedHM, sub_80C9EE4, 1); // HM else DisplayItemMessageOnField(taskId, gOtherText_BootedTM, sub_80C9EE4, 1); // TM @@ -882,13 +884,13 @@ void ItemUseOutOfBattle_TMHM(u8 taskId) void sub_80C9EE4(u8 taskId) { - PlaySE(2); + PlaySE(SE_PC_LOGON); gTasks[taskId].func = sub_80C9F10; } void sub_80C9F10(u8 taskId) { - if(gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON) + if (gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON) { StringCopy(gStringVar1, gMoveNames[ItemIdToBattleMoveId(gScriptItemId)]); StringExpandPlaceholders(gStringVar4, gOtherText_ContainsMove); @@ -909,7 +911,7 @@ void sub_80C9FC0(u8 var) sub_80C9D98(var); } -void sub_80C9FDC(void) +static void PrepareItemUseMessage(void) { RemoveBagItem(gScriptItemId, 1); sub_80A3E0C(); @@ -919,10 +921,10 @@ void sub_80C9FDC(void) void ItemUseOutOfBattle_Repel(u8 var) { - if(VarGet(VAR_REPEL_STEP_COUNT) == FALSE) + if (VarGet(VAR_REPEL_STEP_COUNT) == FALSE) { VarSet(VAR_REPEL_STEP_COUNT, ItemId_GetHoldEffectParam(gScriptItemId)); - sub_80C9FDC(); + PrepareItemUseMessage(); DisplayItemMessageOnField(var, gStringVar4, CleanUpItemMenuMessage, 1); } else @@ -941,26 +943,26 @@ void sub_80CA098(u8 taskId) { if(++gTasks[taskId].data[15] > 7) { - PlaySE(0x75); + PlaySE(SE_BIDORO); DisplayItemMessageOnField(taskId, gStringVar4, CleanUpItemMenuMessage, 1); } } void ItemUseOutOfBattle_BlackWhiteFlute(u8 taskId) { - if(gScriptItemId == 43) + if (gScriptItemId == ITEM_WHITE_FLUTE) { FlagSet(SYS_ENC_UP_ITEM); - FlagReset(SYS_ENC_DOWN_ITEM); + FlagClear(SYS_ENC_DOWN_ITEM); sub_80CA07C(); StringExpandPlaceholders(gStringVar4, gOtherText_UsedFlute); gTasks[taskId].func = sub_80CA098; gTasks[taskId].data[15] = 0; } - else if(gScriptItemId == 42) + else if (gScriptItemId == ITEM_BLACK_FLUTE) { FlagSet(SYS_ENC_DOWN_ITEM); - FlagReset(SYS_ENC_UP_ITEM); + FlagClear(SYS_ENC_UP_ITEM); sub_80CA07C(); StringExpandPlaceholders(gStringVar4, gOtherText_UsedRepel); gTasks[taskId].func = sub_80CA098; @@ -975,17 +977,17 @@ void task08_080A1C44(u8 taskId) DestroyTask(taskId); } -void sub_80CA18C(u8 taskId) +void EscapeRopeCallback(u8 taskId) { - sub_8053014(); - sub_80C9FDC(); + Overworld_ResetStateAfterDigEscRope(); + PrepareItemUseMessage(); gTasks[taskId].data[0] = 0; DisplayItemMessageOnField(taskId, gStringVar4, task08_080A1C44, 0); } -bool8 sub_80CA1C8(void) +bool8 CanUseEscapeRopeOnCurrMap(void) { - if(gMapHeader.mapType == MAP_TYPE_UNDERGROUND) + if (gMapHeader.mapType == MAP_TYPE_UNDERGROUND) return TRUE; else return FALSE; @@ -993,9 +995,9 @@ bool8 sub_80CA1C8(void) void ItemUseOutOfBattle_EscapeRope(u8 taskId) { - if(sub_80CA1C8() == TRUE) // is map type an area you can use escape rope? + if (CanUseEscapeRopeOnCurrMap() == TRUE) { - gUnknown_03005D00 = sub_80CA18C; + gFieldItemUseCallback = EscapeRopeCallback; SetUpItemUseOnFieldCallback(taskId); } else @@ -1012,7 +1014,7 @@ void ItemUseOutOfBattle_EvolutionStone(u8 var) void ItemUseInBattle_PokeBall(u8 var) { - if(PlayerPartyAndPokemonStorageFull() == FALSE) // have room for mon? + if (PlayerPartyAndPokemonStorageFull() == FALSE) // have room for mon? { RemoveBagItem(gScriptItemId, 1); sub_80A7094(var); @@ -1026,7 +1028,7 @@ void ItemUseInBattle_PokeBall(u8 var) void sub_80CA294(u8 var) { - if(gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON) + if (gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON) sub_80A7094(var); } @@ -1034,7 +1036,7 @@ void sub_80CA2BC(u8 taskId) { if(++gTasks[taskId].data[15] > 7) { - PlaySE(1); + PlaySE(SE_KAIFUKU); RemoveBagItem(gScriptItemId, 1); DisplayItemMessageOnField(taskId, sub_803F378(gScriptItemId), sub_80CA294, 1); } @@ -1046,7 +1048,7 @@ void ItemUseInBattle_StatIncrease(u8 taskId) MenuZeroFillWindowRect(0, 0xD, 0xD, 0x14); - if(ExecuteTableBasedItemEffect_(&gPlayerParty[partyId], gScriptItemId, partyId, 0) != FALSE) + if (ExecuteTableBasedItemEffect_(&gPlayerParty[partyId], gScriptItemId, partyId, 0) != FALSE) { DisplayItemMessageOnField(taskId, gOtherText_WontHaveAnyEffect, CleanUpItemMenuMessage, 1); } @@ -1059,7 +1061,7 @@ void ItemUseInBattle_StatIncrease(u8 taskId) void sub_80CA394(u8 taskId) { - if(!gPaletteFade.active) + if (!gPaletteFade.active) { sub_8094E4C(); gpu_pal_allocator_reset__manage_upper_four(); @@ -1095,7 +1097,7 @@ void unref_sub_80CA448(u8 var) { MenuZeroFillWindowRect(0, 0xD, 0xD, 0x14); - if(ExecuteTableBasedItemEffect__(0, gScriptItemId, 0) == FALSE) + if (ExecuteTableBasedItemEffect__(0, gScriptItemId, 0) == FALSE) { RemoveBagItem(gScriptItemId, 1); GetMonNickname(&gPlayerParty[0], gStringVar1); @@ -1114,7 +1116,7 @@ void ItemUseInBattle_Escape(u8 taskId) if((gBattleTypeFlags & BATTLE_TYPE_TRAINER) == FALSE) { - sub_80C9FDC(); + PrepareItemUseMessage(); DisplayItemMessageOnField(taskId, gStringVar4, sub_80A7094, 1); } else @@ -1125,7 +1127,7 @@ void ItemUseInBattle_Escape(u8 taskId) void ItemUseOutOfBattle_EnigmaBerry(u8 taskId) { - switch(GetItemEffectType(gScriptItemId) - 1) + switch (GetItemEffectType(gScriptItemId) - 1) { case 1: case 2: @@ -1168,7 +1170,7 @@ void ItemUseOutOfBattle_EnigmaBerry(u8 taskId) void ItemUseInBattle_EnigmaBerry(u8 taskId) { - switch(GetItemEffectType(gScriptItemId)) + switch (GetItemEffectType(gScriptItemId)) { case 0: ItemUseInBattle_StatIncrease(taskId); diff --git a/src/landmark.c b/src/field/landmark.c similarity index 100% rename from src/landmark.c rename to src/field/landmark.c diff --git a/src/lottery_corner.c b/src/field/lottery_corner.c similarity index 100% rename from src/lottery_corner.c rename to src/field/lottery_corner.c diff --git a/src/map_name_popup.c b/src/field/map_name_popup.c similarity index 97% rename from src/map_name_popup.c rename to src/field/map_name_popup.c index 303cc3d07..01105d0db 100644 --- a/src/map_name_popup.c +++ b/src/field/map_name_popup.c @@ -101,7 +101,7 @@ void DrawMapNamePopup(void) u8 name[20]; MenuLoadTextWindowGraphics_OverrideFrameType(0); - sub_80FBFB4(name, gMapHeader.name, 0); + GetMapSectionName(name, gMapHeader.regionMapSectionId, 0); MenuDrawTextWindow(0, 0, 13, 3); sub_8072BD8(name, 1, 1, 0x60); } diff --git a/src/map_obj_lock.c b/src/field/map_obj_lock.c similarity index 98% rename from src/map_obj_lock.c rename to src/field/map_obj_lock.c index bd40bcacc..2856320b8 100644 --- a/src/map_obj_lock.c +++ b/src/field/map_obj_lock.c @@ -75,7 +75,7 @@ bool8 sub_8064DB4(void) } } -void sub_8064DD8(void) +void LockSelectedMapObject(void) { u8 taskId; FreezeMapObjectsExceptOne(gSelectedMapObject); diff --git a/src/field/mauville_man.c b/src/field/mauville_man.c new file mode 100644 index 000000000..33bc39648 --- /dev/null +++ b/src/field/mauville_man.c @@ -0,0 +1,1311 @@ +#include "global.h" +#include "bard_music.h" +#include "mauville_man.h" +#include "easy_chat.h" +#include "event_data.h" +#include "field_message_box.h" +#include "m4a.h" +#include "menu.h" +#include "overworld.h" +#include "rng.h" +#include "script.h" +#include "songs.h" +#include "sound.h" +#include "string_util.h" +#include "strings.h" +#include "task.h" +#include "trader.h" + +#define MACRO1(a) (((a) % 4) + (((a) / 8) & 1)) + +extern struct MusicPlayerInfo gMPlay_SE2; + +extern u16 gScriptResult; +extern u16 gSpecialVar_0x8004; + +extern const u8 gTextStoryteller_Story1Title[]; +extern const u8 gTextStoryteller_Story1Action[]; +extern const u8 gTextStoryteller_Story1Text[]; +extern const u8 gTextStoryteller_Story2Title[]; +extern const u8 gTextStoryteller_Story2Action[]; +extern const u8 gTextStoryteller_Story2Text[]; +extern const u8 gTextStoryteller_Story3Title[]; +extern const u8 gTextStoryteller_Story3Action[]; +extern const u8 gTextStoryteller_Story3Text[]; +extern const u8 gTextStoryteller_Story4Title[]; +extern const u8 gTextStoryteller_Story4Action[]; +extern const u8 gTextStoryteller_Story4Text[]; +extern const u8 gTextStoryteller_Story5Title[]; +extern const u8 gTextStoryteller_Story5Action[]; +extern const u8 gTextStoryteller_Story5Text[]; +extern const u8 gTextStoryteller_Story6Title[]; +extern const u8 gTextStoryteller_Story6Action[]; +extern const u8 gTextStoryteller_Story6Text[]; +extern const u8 gTextStoryteller_Story7Title[]; +extern const u8 gTextStoryteller_Story7Action[]; +extern const u8 gTextStoryteller_Story7Text[]; +extern const u8 gTextStoryteller_Story8Title[]; +extern const u8 gTextStoryteller_Story8Action[]; +extern const u8 gTextStoryteller_Story8Text[]; +extern const u8 gTextStoryteller_Story9Title[]; +extern const u8 gTextStoryteller_Story9Action[]; +extern const u8 gTextStoryteller_Story9Text[]; +extern const u8 gTextStoryteller_Story10Title[]; +extern const u8 gTextStoryteller_Story10Action[]; +extern const u8 gTextStoryteller_Story10Text[]; +extern const u8 gTextStoryteller_Story11Title[]; +extern const u8 gTextStoryteller_Story11Action[]; +extern const u8 gTextStoryteller_Story11Text[]; +extern const u8 gTextStoryteller_Story12Title[]; +extern const u8 gTextStoryteller_Story12Action[]; +extern const u8 gTextStoryteller_Story12Text[]; +extern const u8 gTextStoryteller_Story13Title[]; +extern const u8 gTextStoryteller_Story13Action[]; +extern const u8 gTextStoryteller_Story13Text[]; +extern const u8 gTextStoryteller_Story14Title[]; +extern const u8 gTextStoryteller_Story14Action[]; +extern const u8 gTextStoryteller_Story14Text[]; +extern const u8 gTextStoryteller_Story15Title[]; +extern const u8 gTextStoryteller_Story15Action[]; +extern const u8 gTextStoryteller_Story15Text[]; +extern const u8 gTextStoryteller_Story16Title[]; +extern const u8 gTextStoryteller_Story16Action[]; +extern const u8 gTextStoryteller_Story16Text[]; +extern const u8 gTextStoryteller_Story17Title[]; +extern const u8 gTextStoryteller_Story17Action[]; +extern const u8 gTextStoryteller_Story17Text[]; +extern const u8 gTextStoryteller_Story18Title[]; +extern const u8 gTextStoryteller_Story18Action[]; +extern const u8 gTextStoryteller_Story18Text[]; +extern const u8 gTextStoryteller_Story19Title[]; +extern const u8 gTextStoryteller_Story19Action[]; +extern const u8 gTextStoryteller_Story19Text[]; +extern const u8 gTextStoryteller_Story20Title[]; +extern const u8 gTextStoryteller_Story20Action[]; +extern const u8 gTextStoryteller_Story20Text[]; +extern const u8 gTextStoryteller_Story21Title[]; +extern const u8 gTextStoryteller_Story21Action[]; +extern const u8 gTextStoryteller_Story21Text[]; +extern const u8 gTextStoryteller_Story22Title[]; +extern const u8 gTextStoryteller_Story22Action[]; +extern const u8 gTextStoryteller_Story22Text[]; +extern const u8 gTextStoryteller_Story23Title[]; +extern const u8 gTextStoryteller_Story23Action[]; +extern const u8 gTextStoryteller_Story23Text[]; +extern const u8 gTextStoryteller_Story24Title[]; +extern const u8 gTextStoryteller_Story24Action[]; +extern const u8 gTextStoryteller_Story24Text[]; +extern const u8 gTextStoryteller_Story25Title[]; +extern const u8 gTextStoryteller_Story25Action[]; +extern const u8 gTextStoryteller_Story25Text[]; +extern const u8 gTextStoryteller_Story26Title[]; +extern const u8 gTextStoryteller_Story26Action[]; +extern const u8 gTextStoryteller_Story26Text[]; +extern const u8 gTextStoryteller_Story27Title[]; +extern const u8 gTextStoryteller_Story27Action[]; +extern const u8 gTextStoryteller_Story27Text[]; +extern const u8 gTextStoryteller_Story28Title[]; +extern const u8 gTextStoryteller_Story28Action[]; +extern const u8 gTextStoryteller_Story28Text[]; +extern const u8 gTextStoryteller_Story29Title[]; +extern const u8 gTextStoryteller_Story29Action[]; +extern const u8 gTextStoryteller_Story29Text[]; +extern const u8 gTextStoryteller_Story30Title[]; +extern const u8 gTextStoryteller_Story30Action[]; +extern const u8 gTextStoryteller_Story30Text[]; +extern const u8 gTextStoryteller_Story31Title[]; +extern const u8 gTextStoryteller_Story31Action[]; +extern const u8 gTextStoryteller_Story31Text[]; +extern const u8 gTextStoryteller_Story32Title[]; +extern const u8 gTextStoryteller_Story32Action[]; +extern const u8 gTextStoryteller_Story32Text[]; +extern const u8 gTextStoryteller_Story33Title[]; +extern const u8 gTextStoryteller_Story33Action[]; +extern const u8 gTextStoryteller_Story33Text[]; +extern const u8 gTextStoryteller_Story34Title[]; +extern const u8 gTextStoryteller_Story34Action[]; +extern const u8 gTextStoryteller_Story34Text[]; +extern const u8 gTextStoryteller_Story35Title[]; +extern const u8 gTextStoryteller_Story35Action[]; +extern const u8 gTextStoryteller_Story35Text[]; +extern const u8 gTextStoryteller_Story36Title[]; +extern const u8 gTextStoryteller_Story36Action[]; +extern const u8 gTextStoryteller_Story36Text[]; + +extern struct BardSong gUnknown_03005DA0; + +EWRAM_DATA static u16 gUnknown_020388BC = 0; // set but not used? + +static const u16 sDefaultBardSongLyrics[] = +{ +#ifdef ENGLISH + EC_WORD_SISTER, + EC_WORD_EATS, + EC_WORD_SWEETS, + EC_WORD_VORACIOUS, + EC_WORD_AND, + EC_WORD_DROOLING, +#else + EC_WORD_SISTER, + EC_WORD_MUST_BE, + EC_WORD_SWEETS, + EC_WORD_VORACIOUS, + EC_WORD_DROOLING, + EC_WORD_THICK, +#endif +}; + +static const u8 *const sGiddyAdjectives[] = +{ + OtherText_SoPretty, + OtherText_SoDarling, + OtherText_SoRelaxed, + OtherText_SoSunny, + OtherText_SoDesirable, + OtherText_SoExciting, + OtherText_SoAmusing, + OtherText_SoMagical, +}; + +static const u8 *const sGiddyQuestions[] = +{ + OtherText_WantVacationNicePlace, + OtherText_BoughtCrayonsIsNice, + OtherText_IfWeCouldFloat, + OtherText_SandWashesAwayMakeSad, + OtherText_WhatsBottomSeaLike, + OtherText_SeeSettingSun, + OtherText_LyingInGreenGrass, + OtherText_SecretBasesWonderful, +}; + +static void sub_80F7DC0(void); +static void Task_BardSong(u8); +static void StartBardSong(u8); +static void StorytellerSetup(void); +static void sub_80F8428(void); + +static void SetupBard(void) +{ + u16 i; + struct MauvilleManBard *bard = &gSaveBlock1.mauvilleMan.bard; + + bard->id = MAUVILLE_MAN_BARD; + bard->hasChangedSong = FALSE; + for (i = 0; i < 6; i++) + bard->songLyrics[i] = sDefaultBardSongLyrics[i]; +} + +static void SetupHipster(void) +{ + struct MauvilleManHipster *hipster = &gSaveBlock1.mauvilleMan.hipster; + + hipster->id = MAUVILLE_MAN_HIPSTER; + hipster->alreadySpoken = FALSE; +} + +static void SetupStoryteller(void) +{ + StorytellerSetup(); +} + +static void SetupGiddy(void) +{ + struct MauvilleManGiddy *giddy = &gSaveBlock1.mauvilleMan.giddy; + + giddy->id = MAUVILLE_MAN_GIDDY; + giddy->taleCounter = 0; +} + +static void SetupTrader(void) +{ + TraderSetup(); +} + +void SetupMauvilleOldMan(void) +{ + u16 trainerId = (gSaveBlock2.playerTrainerId[1] << 8) | gSaveBlock2.playerTrainerId[0]; + + // Determine man based on the last digit of the player's trainer ID. + switch ((trainerId % 10) / 2) + { + case MAUVILLE_MAN_BARD: + SetupBard(); + break; + case MAUVILLE_MAN_HIPSTER: + SetupHipster(); + break; + case MAUVILLE_MAN_TRADER: + SetupTrader(); + break; + case MAUVILLE_MAN_STORYTELLER: + SetupStoryteller(); + break; + case MAUVILLE_MAN_GIDDY: + SetupGiddy(); + break; + } + sub_80F83D0(); +} + +static u8 GetCurrentMauvilleOldMan(void) +{ + struct MauvilleManCommon *common = &gSaveBlock1.mauvilleMan.common; + + return common->id; +} + +void ScrSpecial_GetCurrentMauvilleMan(void) +{ + gScriptResult = GetCurrentMauvilleOldMan(); +} + +void ScrSpecial_HasBardSongBeenChanged(void) +{ + u16 *scriptResult = &gScriptResult; // why?? + struct MauvilleManBard *bard = &gSaveBlock1.mauvilleMan.bard; + + *scriptResult = bard->hasChangedSong; +} + +void ScrSpecial_SaveBardSongLyrics(void) +{ + u16 i; + struct MauvilleManBard *bard = &gSaveBlock1.mauvilleMan.bard; + + StringCopy(bard->playerName, gSaveBlock2.playerName); + + for (i = 0; i < 4; i++) + bard->playerTrainerId[i] = gSaveBlock2.playerTrainerId[i]; + + for (i = 0; i < 6; i++) + bard->songLyrics[i] = bard->temporaryLyrics[i]; + + bard->hasChangedSong = TRUE; +} + +// Copies lyrics into gStringVar4 +void PrepareSongText(void) +{ + struct MauvilleManBard *bard = &gSaveBlock1.mauvilleMan.bard; + u16 specialVar = gSpecialVar_0x8004; // It's a bit odd to use this temp variable, but it seems needed to match. + u16 *lyrics; + u16 lineNum; + u8 *wordEnd; + u8 *str; + + lyrics = bard->temporaryLyrics; + if (specialVar == 0) + lyrics = bard->songLyrics; + wordEnd = gStringVar4; + str = wordEnd; + // Put three words on each line + for (lineNum = 0; lineNum < 2; lineNum++) + { + wordEnd = EasyChat_GetWordText(wordEnd, *(lyrics++)); + while (wordEnd != str) + { + if (*str == CHAR_SPACE) + *str = CHAR_SONG_WORD_SEPARATOR; + str++; + } + + str++; + *(wordEnd++) = CHAR_SPACE; + + wordEnd = EasyChat_GetWordText(wordEnd, *(lyrics++)); + while (wordEnd != str) + { + if (*str == CHAR_SPACE) + *str = CHAR_SONG_WORD_SEPARATOR; + str++; + } + + str++; + *(wordEnd++) = CHAR_NEWLINE; + + wordEnd = EasyChat_GetWordText(wordEnd, *(lyrics++)); + while (wordEnd != str) + { + if (*str == CHAR_SPACE) + *str = CHAR_SONG_WORD_SEPARATOR; + str++; + } + + if (lineNum == 0) + { + *(wordEnd++) = EXT_CTRL_CODE_BEGIN; + *(wordEnd++) = 15; + } + } +} + +void ScrSpecial_PlayBardSong(void) +{ + StartBardSong(gSpecialVar_0x8004); + MenuDisplayMessageBox(); + ScriptContext1_Stop(); +} + +void ScrSpecial_GetHipsterSpokenFlag(void) +{ + u16 *scriptResult = &gScriptResult; // again?? + struct MauvilleManHipster *hipster = &gSaveBlock1.mauvilleMan.hipster; + + *scriptResult = hipster->alreadySpoken; +} + +void ScrSpecial_SetHipsterSpokenFlag(void) +{ + struct MauvilleManHipster *hipster = &gSaveBlock1.mauvilleMan.hipster; + + hipster->alreadySpoken = TRUE; +} + +void ScrSpecial_HipsterTeachWord(void) +{ + u16 var = sub_80EB8EC(); + + if (var == 0xFFFF) + { + gScriptResult = FALSE; + } + else + { + EasyChat_GetWordText(gStringVar1, var); + gScriptResult = TRUE; + } +} + +void ScrSpecial_GiddyShouldTellAnotherTale(void) +{ + struct MauvilleManGiddy *giddy = &gSaveBlock1.mauvilleMan.giddy; + + if (giddy->taleCounter == 10) + { + gScriptResult = FALSE; + giddy->taleCounter = 0; + } + else + { + gScriptResult = TRUE; + } +} + +void ScrSpecial_GenerateGiddyLine(void) +{ + struct MauvilleManGiddy *giddy = &gSaveBlock1.mauvilleMan.giddy; + + if (giddy->taleCounter == 0) + sub_80F7DC0(); + + if (giddy->randomWords[giddy->taleCounter] != 0xFFFF) // is not the last element of the array? + { + u8 *stringPtr; + u32 adjective = Random(); + + adjective %= 8; + stringPtr = EasyChat_GetWordText(gStringVar4, giddy->randomWords[giddy->taleCounter]); + stringPtr = StringCopy(stringPtr, gOtherText_Is); + stringPtr = StringCopy(stringPtr, sGiddyAdjectives[adjective]); + StringCopy(stringPtr, gOtherText_DontYouAgree); + } + else + { + StringCopy(gStringVar4, sGiddyQuestions[giddy->questionList[giddy->questionNum++]]); + } + + if (!(Random() % 10)) + giddy->taleCounter = 10; + else + giddy->taleCounter++; + + gScriptResult = TRUE; +} + +#ifdef NONMATCHING +static void sub_80F7DC0(void) +{ + u16 arr[][2] = + { + { 0x0, 0}, + { 0xC, 0}, + { 0xD, 0}, + {0x12, 0}, + {0x13, 0}, + {0x15, 0}, + }; + u16 i; + u16 r10; + u16 r7; + + for (i = 0; i < 8; i++) + { + struct MauvilleManGiddy *giddy = &gSaveBlock1.mauvilleMan.giddy; + + //gSaveBlock1.mauvilleMan.giddy.questionList[i] = i; + giddy->questionList[i] = i; + } + + // Scramble questions + for (i = 0; i < 8; i++) + { + struct MauvilleManGiddy *giddy = &gSaveBlock1.mauvilleMan.giddy; + + /* + u16 r1 = Random() % (i + 1); + u8 r7 = gSaveBlock1.mauvilleMan.giddy.questionList[i]; + gSaveBlock1.mauvilleMan.giddy.questionList[i] = gSaveBlock1.mauvilleMan.giddy.questionList[r1]; + gSaveBlock1.mauvilleMan.giddy.questionList[r1] = r7; + */ + u16 r1 = Random() % (i + 1); + u8 r7 = giddy->questionList[i]; + giddy->questionList[i] = giddy->questionList[r1]; + giddy->questionList[r1] = r7; + } + + r10 = 0; + for (i = 0; i < 6; i++) + { + arr[i][1] = sub_80EAE88(arr[i][0]); + r10 += arr[i][1]; + } + + { + struct MauvilleManGiddy *giddy = &gSaveBlock1.mauvilleMan.giddy; + giddy->questionNum = 0; + } + //gSaveBlock1.mauvilleMan.giddy.questionNum = 0; + + r7 = 0; + for (i = 0; i < 10; i++) + { + struct MauvilleManGiddy *giddy = &gSaveBlock1.mauvilleMan.giddy; + + u16 var = Random() % 10; + if (var < 3 && r7 < 8) + { + //gSaveBlock1.mauvilleMan.giddy.randomWords[i] = 0xFFFF; + giddy->randomWords[i] = 0xFFFF; + r7++; + } + //_080F7E90 + else + { + s16 r2 = Random() % r10; + + u16 r1 = 0; + + while (i < 6) // comparing the wrong variable + { + r2 = arr[r1][1] - r2; + if (r2 <= 0) + break; + r1++; + } + + if (r1 == 6) + r1 = 0; + //gSaveBlock1.mauvilleMan.giddy.randomWords[i] = sub_80EB784(arr[r1][0]); + giddy->randomWords[i] = sub_80EB784(arr[r1][0]); + } + } +} +#else + +static const u16 gUnknown_083E53C8[][2] = +{ + { 0x0, 0}, + { 0xC, 0}, + { 0xD, 0}, + {0x12, 0}, + {0x13, 0}, + {0x15, 0}, +}; + +__attribute__((naked)) +static void sub_80F7DC0(void) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + sub sp, 0x18\n\ + ldr r1, _080F7E84 @ =gUnknown_083E53C8\n\ + mov r0, sp\n\ + movs r2, 0x18\n\ + bl memcpy\n\ + movs r5, 0\n\ + movs r0, 0x2\n\ + add r0, sp\n\ + mov r8, r0\n\ + ldr r1, _080F7E88 @ =gSaveBlock1 + 0x2D94\n\ + adds r1, 0x18\n\ + adds r3, r1, 0\n\ +_080F7DE4:\n\ + adds r0, r3, r5\n\ + strb r5, [r0]\n\ + adds r0, r5, 0x1\n\ + lsls r0, 16\n\ + lsrs r5, r0, 16\n\ + cmp r5, 0x7\n\ + bls _080F7DE4\n\ + movs r5, 0\n\ + ldr r2, _080F7E88 @ =gSaveBlock1 + 0x2D94\n\ + adds r2, 0x4\n\ + mov r9, r2\n\ + adds r6, r1, 0\n\ +_080F7DFC:\n\ + bl Random\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + adds r4, r5, 0x1\n\ + adds r1, r4, 0\n\ + bl __modsi3\n\ + lsls r0, 16\n\ + lsrs r1, r0, 16\n\ + adds r2, r6, r5\n\ + ldrb r7, [r2]\n\ + adds r1, r6, r1\n\ + ldrb r0, [r1]\n\ + strb r0, [r2]\n\ + strb r7, [r1]\n\ + lsls r4, 16\n\ + lsrs r5, r4, 16\n\ + cmp r5, 0x7\n\ + bls _080F7DFC\n\ + movs r3, 0\n\ + mov r10, r3\n\ + movs r5, 0\n\ +_080F7E2A:\n\ + lsls r4, r5, 2\n\ + mov r1, sp\n\ + adds r0, r1, r4\n\ + ldrb r0, [r0]\n\ + bl sub_80EAE88\n\ + add r4, r8\n\ + strh r0, [r4]\n\ + add r0, r10\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + mov r10, r0\n\ + adds r0, r5, 0x1\n\ + lsls r0, 16\n\ + lsrs r5, r0, 16\n\ + cmp r5, 0x5\n\ + bls _080F7E2A\n\ + movs r0, 0\n\ + ldr r2, _080F7E88 @ =gSaveBlock1 + 0x2D94\n\ + strb r0, [r2, 0x2]\n\ + movs r7, 0\n\ + movs r5, 0\n\ +_080F7E56:\n\ + bl Random\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + movs r1, 0xA\n\ + bl __umodsi3\n\ + lsls r0, 16\n\ + lsrs r1, r0, 16\n\ + cmp r1, 0x2\n\ + bhi _080F7E90\n\ + cmp r7, 0x7\n\ + bhi _080F7E90\n\ + lsls r0, r5, 1\n\ + add r0, r9\n\ + ldr r1, _080F7E8C @ =0x0000ffff\n\ + strh r1, [r0]\n\ + adds r0, r7, 0x1\n\ + lsls r0, 16\n\ + lsrs r7, r0, 16\n\ + adds r4, r5, 0x1\n\ + b _080F7EE2\n\ + .align 2, 0\n\ +_080F7E84: .4byte gUnknown_083E53C8\n\ +_080F7E88: .4byte gSaveBlock1 + 0x2D94\n\ +_080F7E8C: .4byte 0x0000ffff\n\ +_080F7E90:\n\ + bl Random\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + mov r1, r10\n\ + bl __umodsi3\n\ + lsls r0, 16\n\ + lsrs r2, r0, 16\n\ + movs r1, 0\n\ + adds r4, r5, 0x1\n\ + lsls r6, r5, 1\n\ + cmp r5, 0x5\n\ + bhi _080F7ECC\n\ + mov r3, r8\n\ + ldrh r0, [r3]\n\ + b _080F7EC2\n\ +_080F7EB2:\n\ + adds r0, r1, 0x1\n\ + lsls r0, 16\n\ + lsrs r1, r0, 16\n\ + cmp r5, 0x5\n\ + bhi _080F7ECC\n\ + lsls r0, r1, 2\n\ + adds r0, r3, r0\n\ + ldrh r0, [r0]\n\ +_080F7EC2:\n\ + subs r0, r2, r0\n\ + lsls r0, 16\n\ + lsrs r2, r0, 16\n\ + cmp r0, 0\n\ + bgt _080F7EB2\n\ +_080F7ECC:\n\ + cmp r1, 0x6\n\ + bne _080F7ED2\n\ + movs r1, 0\n\ +_080F7ED2:\n\ + lsls r0, r1, 2\n\ + add r0, sp\n\ + ldrh r0, [r0]\n\ + bl sub_80EB784\n\ + mov r2, r9\n\ + adds r1, r2, r6\n\ + strh r0, [r1]\n\ +_080F7EE2:\n\ + lsls r0, r4, 16\n\ + lsrs r5, r0, 16\n\ + cmp r5, 0x9\n\ + bls _080F7E56\n\ + add sp, 0x18\n\ + pop {r3-r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .syntax divided\n"); +} +#endif + +static void sub_80F7EFC(void) +{ + struct MauvilleManBard *bard = &gSaveBlock1.mauvilleMan.bard; + + bard->hasChangedSong = FALSE; +} + +static void sub_80F7F0C(void) +{ + struct MauvilleManHipster *hipster = &gSaveBlock1.mauvilleMan.hipster; + + hipster->alreadySpoken = FALSE; +} + +static void sub_80F7F18(void) +{ + sub_8109A20(); +} + +static void sub_80F7F24(void) +{ + sub_80F8428(); +} + +void sub_80F7F30(void) +{ + switch (GetCurrentMauvilleOldMan()) + { + case MAUVILLE_MAN_BARD: + sub_80F7EFC(); + break; + case MAUVILLE_MAN_HIPSTER: + sub_80F7F0C(); + break; + case MAUVILLE_MAN_STORYTELLER: + sub_80F7F24(); + break; + case MAUVILLE_MAN_TRADER: + sub_80F7F18(); + break; + case MAUVILLE_MAN_GIDDY: + break; + } + sub_80F83D0(); +} + +#define tState data[0] +#define tCharIndex data[3] +#define tCurrWord data[4] +#define tUseTemporaryLyrics data[5] + +static void StartBardSong(bool8 useTemporaryLyrics) +{ + u8 taskId = CreateTask(Task_BardSong, 0x50); + + gTasks[taskId].tUseTemporaryLyrics = useTemporaryLyrics; +} + +static void BardSing(struct Task *task, struct BardSong *song) +{ + switch (task->tState) + { + case 0: // Initialize song + { + struct MauvilleManBard *bard = &gSaveBlock1.mauvilleMan.bard; + u16 *lyrics; + s32 i; + + // Copy lyrics + if (gSpecialVar_0x8004 == 0) + lyrics = bard->songLyrics; + else + lyrics = bard->temporaryLyrics; + for (i = 0; i < 6; i++) + song->lyrics[i] = lyrics[i]; + + // Clear phonemes + for (i = 0; i < 6; i++) + { + song->phonemes[i].sound = 0xFFFF; + song->phonemes[i].length = 0; + song->phonemes[i].pitch = 0; + song->phonemes[i].volume = 0; + } + song->currWord = 0; + song->currPhoneme = 0; + song->var04 = 0; + } + break; + case 1: // Wait for BGM to end + break; + case 2: // Initialize word + { + u16 word = song->lyrics[song->currWord]; + const struct BardSound *sounds = GetWordSounds(EC_GROUP(word), EC_INDEX(word)); + + song->var04 = 0; + GetWordPhonemes(song, sounds, MACRO1(word)); + } + break; + case 3: + case 4: + { + struct BardPhoneme *phoneme = &song->phonemes[song->currPhoneme]; + + switch (song->state) + { + case 0: + if (song->phonemeTimer == 0) // Timer has expired. Move to next phoneme + { + if (song->currPhoneme == 6 || phoneme->sound == 0xFF) + { + song->state = 0xFE; + break; + } + song->phonemeTimer = phoneme->length; + if (phoneme->sound <= 50) + { + u16 num = phoneme->sound / 3; + + m4aSongNumStart(249 + num * 3); + } + song->state = 1; + } + else + { + if (song->voiceInflection > 10) + song->volume -= 2; + if (song->voiceInflection & 1) + song->pitch += 64; + else + song->pitch -= 64; + m4aMPlayVolumeControl(&gMPlay_SE2, 0xFFFF, song->volume); + m4aMPlayPitchControl(&gMPlay_SE2, 0xFFFF, song->pitch); + song->voiceInflection++; + } + song->phonemeTimer--; + break; + case 1: + song->currPhoneme++; + song->state = 0; + if (phoneme->sound <= 50) + { + song->volume = 0x100 + phoneme->volume * 16; + m4aMPlayVolumeControl(&gMPlay_SE2, 0xFFFF, song->volume); + song->pitch = 0x200 + phoneme->pitch; + m4aMPlayPitchControl(&gMPlay_SE2, 0xFFFF, song->pitch); + } + break; + case 0xFE: + m4aMPlayStop(&gMPlay_SE2); + song->state = 0xFF; + break; + } + } + break; + case 5: + break; + } +} + +static void Task_BardSong(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; // r5 + + BardSing(task, &gUnknown_03005DA0); + switch (task->tState) + { + case 0: // Initialize song + PrepareSongText(); + InitWindowFromConfig(gMenuWindowPtr, &gWindowConfig_81E6CE4); + sub_8002EB0(gMenuWindowPtr, gStringVar4, 2, 4, 15); + task->data[1] = 0; + task->data[2] = 0; + task->tCharIndex = 0; + task->tCurrWord = 0; + FadeOutBGMTemporarily(4); + task->tState = 1; + break; + case 1: // Wait for BGM to end + if (IsBGMPausedOrStopped()) + task->tState = 2; + break; + case 2: // Initialize word + { + struct MauvilleManBard *bard = &gSaveBlock1.mauvilleMan.bard; + u8 *str = gStringVar4 + task->tCharIndex; + u16 wordLen = 0; + // Can't get it to match without hacking + u32 temp; + register s16 zero asm("r1"); + + while (*str != CHAR_SPACE + && *str != CHAR_NEWLINE + && *str != EXT_CTRL_CODE_BEGIN + && *str != EOS) + { + str++; + wordLen++; + } + if (!task->tUseTemporaryLyrics) + gUnknown_020388BC = MACRO1(bard->songLyrics[task->tCurrWord]); + else + gUnknown_020388BC = MACRO1(bard->temporaryLyrics[task->tCurrWord]); + temp = gUnknown_03005DA0.var04 / wordLen; + zero = 0; + gUnknown_03005DA0.var04 = temp; + if (gUnknown_03005DA0.var04 <= 0) + gUnknown_03005DA0.var04 = 1; + task->tCurrWord++; + if (task->data[2] == 0) + task->tState = 3; + else + task->tState = 5; + task->data[1] = zero; + } + break; + case 5: + if (task->data[2] == 0) + task->tState = 3; + else + task->data[2]--; + break; + case 3: + if (gStringVar4[task->tCharIndex] == EOS) + { + FadeInNewBGM(BGM_POKECEN, 6); + m4aMPlayFadeOutTemporarily(&gMPlay_SE2, 2); + EnableBothScriptContexts(); + DestroyTask(taskId); + } + else if (gStringVar4[task->tCharIndex] == CHAR_SPACE) + { + sub_8003418(gMenuWindowPtr); + task->tCharIndex++; + task->tState = 2; + task->data[2] = 0; + } + else if (gStringVar4[task->tCharIndex] == CHAR_NEWLINE) + { + task->tCharIndex++; + task->tState = 2; + task->data[2] = 0; + } + else if (gStringVar4[task->tCharIndex] == EXT_CTRL_CODE_BEGIN) + { + task->tCharIndex += 2; // skip over control codes + task->tState = 2; + task->data[2] = 8; + } + else if (gStringVar4[task->tCharIndex] == CHAR_SONG_WORD_SEPARATOR) + { + gStringVar4[task->tCharIndex] = CHAR_SPACE; // restore it back to a space + sub_8003418(gMenuWindowPtr); + task->tCharIndex++; + task->data[2] = 0; + } + else + { + switch (task->data[1]) + { + case 0: + sub_8003418(gMenuWindowPtr); + task->data[1]++; + break; + case 1: + task->data[1]++; + break; + case 2: + task->tCharIndex++; + task->data[1] = 0; + task->data[2] = gUnknown_03005DA0.var04; + task->tState = 4; + break; + } + } + break; + case 4: + task->data[2]--; + if (task->data[2] == 0) + task->tState = 3; + break; + } +} + +void sub_80F83D0(void) +{ + VarSet(0x4010, 0x45 + GetCurrentMauvilleOldMan()); +} + +struct Story +{ + u8 stat; + u8 minVal; + const u8 *title; + const u8 *action; + const u8 *fullText; +}; + +static const struct Story sStorytellerStories[] = +{ + {0x32, 1, gTextStoryteller_Story1Title, gTextStoryteller_Story1Action, gTextStoryteller_Story1Text}, + {0x02, 1, gTextStoryteller_Story2Title, gTextStoryteller_Story2Action, gTextStoryteller_Story2Text}, + {0x03, 1, gTextStoryteller_Story3Title, gTextStoryteller_Story3Action, gTextStoryteller_Story3Text}, + {0x04, 1, gTextStoryteller_Story4Title, gTextStoryteller_Story4Action, gTextStoryteller_Story4Text}, + {0x06, 1, gTextStoryteller_Story5Title, gTextStoryteller_Story5Action, gTextStoryteller_Story5Text}, + {0x09, 1, gTextStoryteller_Story6Title, gTextStoryteller_Story6Action, gTextStoryteller_Story6Text}, + {0x0B, 1, gTextStoryteller_Story7Title, gTextStoryteller_Story7Action, gTextStoryteller_Story7Text}, + {0x0C, 1, gTextStoryteller_Story8Title, gTextStoryteller_Story8Action, gTextStoryteller_Story8Text}, + {0x0D, 1, gTextStoryteller_Story9Title, gTextStoryteller_Story9Action, gTextStoryteller_Story9Text}, + {0x0E, 1, gTextStoryteller_Story10Title, gTextStoryteller_Story10Action, gTextStoryteller_Story10Text}, + {0x0F, 1, gTextStoryteller_Story11Title, gTextStoryteller_Story11Action, gTextStoryteller_Story11Text}, + {0x10, 1, gTextStoryteller_Story12Title, gTextStoryteller_Story12Action, gTextStoryteller_Story12Text}, + {0x11, 1, gTextStoryteller_Story13Title, gTextStoryteller_Story13Action, gTextStoryteller_Story13Text}, + {0x12, 1, gTextStoryteller_Story14Title, gTextStoryteller_Story14Action, gTextStoryteller_Story14Text}, + {0x13, 1, gTextStoryteller_Story15Title, gTextStoryteller_Story15Action, gTextStoryteller_Story15Text}, + {0x14, 1, gTextStoryteller_Story16Title, gTextStoryteller_Story16Action, gTextStoryteller_Story16Text}, + {0x1A, 1, gTextStoryteller_Story17Title, gTextStoryteller_Story17Action, gTextStoryteller_Story17Text}, + {0x1B, 1, gTextStoryteller_Story18Title, gTextStoryteller_Story18Action, gTextStoryteller_Story18Text}, + {0x1C, 1, gTextStoryteller_Story19Title, gTextStoryteller_Story19Action, gTextStoryteller_Story19Text}, + {0x1D, 2, gTextStoryteller_Story20Title, gTextStoryteller_Story20Action, gTextStoryteller_Story20Text}, + {0x1E, 1, gTextStoryteller_Story21Title, gTextStoryteller_Story21Action, gTextStoryteller_Story21Text}, + {0x21, 1, gTextStoryteller_Story22Title, gTextStoryteller_Story22Action, gTextStoryteller_Story22Text}, + {0x24, 1, gTextStoryteller_Story23Title, gTextStoryteller_Story23Action, gTextStoryteller_Story23Text}, + {0x25, 1, gTextStoryteller_Story24Title, gTextStoryteller_Story24Action, gTextStoryteller_Story24Text}, + {0x26, 1, gTextStoryteller_Story25Title, gTextStoryteller_Story25Action, gTextStoryteller_Story25Text}, + {0x27, 1, gTextStoryteller_Story26Title, gTextStoryteller_Story26Action, gTextStoryteller_Story26Text}, + {0x28, 1, gTextStoryteller_Story27Title, gTextStoryteller_Story27Action, gTextStoryteller_Story27Text}, + {0x29, 1, gTextStoryteller_Story28Title, gTextStoryteller_Story28Action, gTextStoryteller_Story28Text}, + {0x2A, 1, gTextStoryteller_Story29Title, gTextStoryteller_Story29Action, gTextStoryteller_Story29Text}, + {0x2B, 1, gTextStoryteller_Story30Title, gTextStoryteller_Story30Action, gTextStoryteller_Story30Text}, + {0x2C, 1, gTextStoryteller_Story31Title, gTextStoryteller_Story31Action, gTextStoryteller_Story31Text}, + {0x2D, 1, gTextStoryteller_Story32Title, gTextStoryteller_Story32Action, gTextStoryteller_Story32Text}, + {0x2E, 1, gTextStoryteller_Story33Title, gTextStoryteller_Story33Action, gTextStoryteller_Story33Text}, + {0x2F, 1, gTextStoryteller_Story34Title, gTextStoryteller_Story34Action, gTextStoryteller_Story34Text}, + {0x30, 1, gTextStoryteller_Story35Title, gTextStoryteller_Story35Action, gTextStoryteller_Story35Text}, + {0x31, 1, gTextStoryteller_Story36Title, gTextStoryteller_Story36Action, gTextStoryteller_Story36Text}, +}; + +static void StorytellerSetup(void) +{ + struct MauvilleManStoryteller *storyteller = &gSaveBlock1.mauvilleMan.storyteller; + s32 i; + + storyteller->id = MAUVILLE_MAN_STORYTELLER; + storyteller->alreadyRecorded = FALSE; + for (i = 0; i < 4; i++) + { + storyteller->gameStatIDs[i] = 0; + storyteller->trainerNames[0][i] = EOS; // Maybe they meant storyteller->trainerNames[i][0] instead? + } +} + +static void sub_80F8428(void) +{ + struct MauvilleManStoryteller *storyteller = &gSaveBlock1.mauvilleMan.storyteller; + + storyteller->id = MAUVILLE_MAN_STORYTELLER; + storyteller->alreadyRecorded = FALSE; +} + +static u32 StorytellerGetGameStat(u8 stat) +{ + if (stat == NUM_GAME_STATS) + stat = 0; + return GetGameStat(stat); +} + +static const struct Story *GetStoryByStat(u32 stat) +{ + s32 i; + + for (i = 0; i < 36; i++) + { + if (sStorytellerStories[i].stat == stat) + return &sStorytellerStories[i]; + } + return &sStorytellerStories[35]; +} + +static const u8 *GetStoryTitleByStat(u32 stat) +{ + return GetStoryByStat(stat)->title; +} + +static const u8 *GetStoryTextByStat(u32 stat) +{ + return GetStoryByStat(stat)->fullText; +} + +static const u8 *GetStoryActionByStat(u32 stat) +{ + return GetStoryByStat(stat)->action; +} + +static u8 GetFreeStorySlot(void) +{ + u8 i; + + for (i = 0; i < 4; i++) + { + struct MauvilleManStoryteller *storyteller = &gSaveBlock1.mauvilleMan.storyteller; + + if (storyteller->gameStatIDs[i] == 0) + break; + } + return i; +} + +static u32 StorytellerGetRecordedTrainerStat(u32 trainer) +{ + u8 *ptr = gSaveBlock1.mauvilleMan.storyteller.statValues[trainer]; + + return ptr[0] | (ptr[1] << 8) | (ptr[2] << 16) | (ptr[3] << 24); +} + +static void StorytellerSetRecordedTrainerStat(u32 trainer, u32 val) +{ + u8 *ptr = gSaveBlock1.mauvilleMan.storyteller.statValues[trainer]; + + ptr[0] = val; + ptr[1] = val >> 8; + ptr[2] = val >> 16; + ptr[3] = val >> 24; +} + +static bool32 HasTrainerStatIncreased(u32 trainer) +{ + struct MauvilleManStoryteller *storyteller = &gSaveBlock1.mauvilleMan.storyteller; + + if (StorytellerGetGameStat(storyteller->gameStatIDs[trainer]) > StorytellerGetRecordedTrainerStat(trainer)) + return TRUE; + else + return FALSE; +} + +static void GetStoryByStattellerPlayerName(u32 player, void *dst) +{ + u8 *name = gSaveBlock1.mauvilleMan.storyteller.trainerNames[player]; + + memset(dst, EOS, 8); + memcpy(dst, name, 7); +} + +static void StorytellerSetPlayerName(u32 player, const u8 *src) +{ + u8 *name = gSaveBlock1.mauvilleMan.storyteller.trainerNames[player]; + u8 len = StringLength(src); + + memset(name, EOS, 7); + StringCopyN(name, src, len); +} + +static void StorytellerRecordNewStat(u32 player, u32 stat) +{ + struct MauvilleManStoryteller *storyteller = &gSaveBlock1.mauvilleMan.storyteller; + + storyteller->gameStatIDs[player] = stat; + StorytellerSetPlayerName(player, gSaveBlock2.playerName); + StorytellerSetRecordedTrainerStat(player, StorytellerGetGameStat(stat)); + ConvertIntToDecimalStringN(gStringVar1, StorytellerGetGameStat(stat), 0, 10); + StringCopy(gStringVar2, GetStoryActionByStat(stat)); +} + +static void ScrambleStatList(u8 *arr, s32 count) +{ + s32 i; + + for (i = 0; i < count; i++) + arr[i] = i; + for (i = 0; i < count; i++) + { + u32 a = Random() % count; + u32 b = Random() % count; + u8 temp = arr[a]; + arr[a] = arr[b]; + arr[b] = temp; + } +} + +// What purpose does this struct even serve? Only the length field is used. +static const struct {u32 length; struct MauvilleManStoryteller *unused1; u32 unused2;} sStorytellerStuff = +{ + 36, + &gSaveBlock1.mauvilleMan.storyteller, // unused + 12, // unused +}; + +static bool8 StorytellerInitializeRandomStat(void) +{ + u8 arr[sStorytellerStuff.length]; + s32 i; + s32 j; + + ScrambleStatList(arr, 36); + for (i = 0; i < 36; i++) + { + u8 stat = sStorytellerStories[arr[i]].stat; + u8 minVal = sStorytellerStories[arr[i]].minVal; + struct MauvilleManStoryteller *storyteller = &gSaveBlock1.mauvilleMan.storyteller; + + for (j = 0; j < 4; j++) + { + if (gSaveBlock1.mauvilleMan.storyteller.gameStatIDs[j] == stat) + break; + } + if (j == 4 && StorytellerGetGameStat(stat) >= minVal) + { + storyteller->alreadyRecorded = TRUE; + StorytellerRecordNewStat(GetFreeStorySlot(), stat); + return TRUE; + } + } + return FALSE; +} + +static void StorytellerDisplayStory(u32 player) +{ + struct MauvilleManStoryteller *storyteller = &gSaveBlock1.mauvilleMan.storyteller; + u8 stat = storyteller->gameStatIDs[player]; + + ConvertIntToDecimalStringN(gStringVar1, StorytellerGetRecordedTrainerStat(player), 0, 10); + StringCopy(gStringVar2, GetStoryActionByStat(stat)); + GetStoryByStattellerPlayerName(player, gStringVar3); + ShowFieldMessage(GetStoryTextByStat(stat)); +} + +static void PrintStoryList(void) +{ + s32 i; + + MenuDrawTextWindow(0, 0, 25, 4 + GetFreeStorySlot() * 2); + for (i = 0; i < 4; i++) + { + struct MauvilleManStoryteller *storyteller = &gSaveBlock1.mauvilleMan.storyteller; + u8 stat = storyteller->gameStatIDs[i]; + + if (stat == 0) + break; + MenuPrint(GetStoryTitleByStat(stat), 1, 2 + i * 2); + } + MenuPrint(gPCText_Cancel, 1, 2 + i * 2); +} + +static u8 gUnknown_03000748; + +static void Task_StoryListMenu(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + s32 selection; + + switch (task->data[0]) + { + case 0: + PrintStoryList(); + InitMenu(0, 1, 2, GetFreeStorySlot() + 1, 0, 24); + task->data[0]++; + break; + case 1: + selection = ProcessMenuInput(); + if (selection == -2) + break; + if (selection == -1 || selection == GetFreeStorySlot()) + { + gScriptResult = 0; + } + else + { + gScriptResult = 1; + gUnknown_03000748 = selection; + } + HandleDestroyMenuCursors(); + MenuZeroFillWindowRect(0, 0, 25, 12); + DestroyTask(taskId); + EnableBothScriptContexts(); + break; + } +} + +// Sets gScriptResult to TRUE if player selected a story +void ScrSpecial_StorytellerStoryListMenu(void) +{ + CreateTask(Task_StoryListMenu, 0x50); +} + +void ScrSpecial_StorytellerDisplayStory(void) +{ + StorytellerDisplayStory(gUnknown_03000748); +} + +u8 ScrSpecial_StorytellerGetFreeStorySlot(void) +{ + return GetFreeStorySlot(); +} + +// Returns TRUE if stat has increased +bool8 ScrSpecial_StorytellerUpdateStat(void) +{ + struct MauvilleManStoryteller *storyteller = &gSaveBlock1.mauvilleMan.storyteller; + u8 r4 = storyteller->gameStatIDs[gUnknown_03000748]; + + if (HasTrainerStatIncreased(gUnknown_03000748) == TRUE) + { + StorytellerRecordNewStat(gUnknown_03000748, r4); + return TRUE; + } + return FALSE; +} + +bool8 ScrSpecial_HasStorytellerAlreadyRecorded(void) +{ + struct MauvilleManStoryteller *storyteller = &gSaveBlock1.mauvilleMan.storyteller; + + if (storyteller->alreadyRecorded == FALSE) + return FALSE; + else + return TRUE; +} + +bool8 ScrSpecial_StorytellerInitializeRandomStat(void) +{ + return StorytellerInitializeRandomStat(); +} diff --git a/src/field/menu_helpers.c b/src/field/menu_helpers.c new file mode 100644 index 000000000..14e823355 --- /dev/null +++ b/src/field/menu_helpers.c @@ -0,0 +1,572 @@ +#include "global.h" +#include "item_menu.h" +#include "items.h" +#include "link.h" +#include "mail_data.h" +#include "main.h" +#include "map_constants.h" +#include "menu.h" +#include "menu_helpers.h" +#include "overworld.h" +#include "songs.h" +#include "sound.h" +#include "sprite.h" +#include "task.h" +#include "text.h" + +#define SCROLL_INDICATOR_PAL_TAG 6 + +static void sub_80F9834(struct Sprite *sprite); + +static EWRAM_DATA u8 gUnknown_020388C0[4] = {0}; +static EWRAM_DATA struct YesNoFuncTable gUnknown_020388C4 = {0}; + +static TaskFunc gUnknown_0300074C; + +static const u8 gSpriteImage_83E5808[] = INCBIN_U8("graphics/unknown_sprites/83E59A0/0.4bpp"); + +static const u8 gSpriteImage_83E5848[] = INCBIN_U8("graphics/unknown_sprites/83E59A0/1.4bpp"); + +static const u8 gSpriteImage_83E5888[] = INCBIN_U8("graphics/unknown_sprites/83E59B0/0.4bpp"); + +static const u8 gSpriteImage_83E58C8[] = INCBIN_U8("graphics/unknown_sprites/83E59B0/1.4bpp"); + +static const u8 gSpriteImage_83E5908[] = INCBIN_U8("graphics/unknown_sprites/83E59C0/0.4bpp"); + +static const u8 gSpriteImage_83E5928[] = INCBIN_U8("graphics/unknown_sprites/83E59C0/1.4bpp"); + +static const u16 Palette_3E5948[] = INCBIN_U16("graphics/interface/83E5948.gbapal"); + +static const struct SpritePalette gUnknown_083E5968 = { Palette_3E5948, SCROLL_INDICATOR_PAL_TAG }; + +static const struct OamData gOamData_83E5970 = +{ + .tileNum = 1 +}; + +static const struct OamData gOamData_83E5978 = +{ + .shape = ST_OAM_H_RECTANGLE, + .tileNum = 1 +}; + +static const struct OamData gOamData_83E5980 = +{ + .shape = ST_OAM_V_RECTANGLE, + .tileNum = 1 +}; + +static const union AnimCmd gSpriteAnim_83E5988[] = +{ + ANIMCMD_FRAME(0, 0), + ANIMCMD_END, +}; + +static const union AnimCmd gSpriteAnim_83E5990[] = +{ + ANIMCMD_FRAME(1, 0), + ANIMCMD_END, +}; + +static const union AnimCmd *const gSpriteAnimTable_83E5998[] = +{ + gSpriteAnim_83E5988, + gSpriteAnim_83E5990, +}; + +static const struct SpriteFrameImage gSpriteImageTable_83E59A0[] = +{ + { gSpriteImage_83E5808, 0x40 }, + { gSpriteImage_83E5848, 0x40 }, +}; + +static const struct SpriteFrameImage gSpriteImageTable_83E59B0[] = +{ + { gSpriteImage_83E5888, 0x40 }, + { gSpriteImage_83E58C8, 0x40 }, +}; + +static const struct SpriteFrameImage gSpriteImageTable_83E59C0[] = +{ + { gSpriteImage_83E5908, 0x20 }, + { gSpriteImage_83E5928, 0x20 }, +}; + +static const struct SpriteTemplate gSpriteTemplate_83E59D0 = +{ + .tileTag = 0xFFFF, + .paletteTag = SCROLL_INDICATOR_PAL_TAG, + .oam = &gOamData_83E5978, + .anims = gSpriteAnimTable_83E5998, + .images = gSpriteImageTable_83E59A0, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80F9834, +}; + +static const struct SpriteTemplate gSpriteTemplate_83E59E8 = +{ + .tileTag = 0xFFFF, + .paletteTag = SCROLL_INDICATOR_PAL_TAG, + .oam = &gOamData_83E5980, + .anims = gSpriteAnimTable_83E5998, + .images = gSpriteImageTable_83E59B0, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80F9834, +}; + +static const struct SpriteTemplate gSpriteTemplate_83E5A00 = +{ + .tileTag = 0xFFFF, + .paletteTag = SCROLL_INDICATOR_PAL_TAG, + .oam = &gOamData_83E5970, + .anims = gSpriteAnimTable_83E5998, + .images = gSpriteImageTable_83E59C0, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy, +}; + +void sub_80F9020(void) +{ + memset(&gBGTilemapBuffers[1], 0, 0x800); + memset(&gBGTilemapBuffers[2], 0, 0x800); + memset(&gBGTilemapBuffers[3], 0, 0x800); +} + +// display message box, fill box with tile if tile is not zero, print string +static void PrintMessage(const u8 *str, u16 tile) +{ + MenuDisplayMessageBox(); + if (tile) + { + sub_80A3FA0(&gBGTilemapBuffers[1][0], 2, 15, 26, 4, tile); + } + MenuPrintMessageDefaultCoords(str); +} + +static void sub_80F9090(u8 taskId) +{ + if (MenuUpdateWindowText() == TRUE) + { + gUnknown_0300074C(taskId); + } +} + +void DisplayItemMessageOnField(u8 taskId, const u8 *str, TaskFunc callback, u16 tile) +{ + PrintMessage(str, tile); + gUnknown_0300074C = callback; + gTasks[taskId].func = sub_80F9090; +} + +static void Task_CallYesOrNoCallback(u8 taskId) +{ + switch (ProcessMenuInputNoWrap_()) + { + case 0: + PlaySE(SE_SELECT); + gUnknown_020388C4.yesFunc(taskId); + break; + case 1: + case -1: + PlaySE(SE_SELECT); + gUnknown_020388C4.noFunc(taskId); + } +} + +void DoYesNoFuncWithChoice(u8 taskId, const struct YesNoFuncTable *funcTable) +{ + gUnknown_020388C4 = *funcTable; + gTasks[taskId].func = Task_CallYesOrNoCallback; +} + +static void PrintStringWithPalette(const u8 *str, u8 paletteNum, u8 left, u8 top) +{ + u8 paletteStr[] = _("{PALETTE 0}"); + + if (paletteNum != 0xFF) + { + paletteStr[2] = paletteNum; + StringCopy(gStringVar4, paletteStr); + StringAppend(gStringVar4, str); + paletteStr[2] = gMenuWindowPtr->paletteNum; + StringAppend(gStringVar4, paletteStr); + } + else + { + StringCopy(gStringVar4, str); + } + + MenuPrint(gStringVar4, left, top); +} + +// unused +void PrintNumberWithPalette(s32 value, u8 paletteNum, u8 n, u8 mode, u8 left, u8 top) +{ + ConvertIntToDecimalStringN(gStringVar1, value, mode, n); + if (paletteNum != 0xFF) + { + PrintStringWithPalette(gStringVar1, paletteNum, left, top); + } + else + { + MenuPrint(gStringVar1, left, top); + } +} + +// unused +void PrintTriangleCursorWithPalette(u8 left, u8 top, u8 paletteNum) +{ + u8 cursorStr[] = _("▶"); + PrintStringWithPalette(cursorStr, paletteNum, left, top); +} + +u8 sub_80F9284(void) +{ + if (gSaveBlock2.optionsButtonMode == OPTIONS_BUTTON_MODE_LR) + { + if (gMain.newKeys & L_BUTTON) + { + return 1; + } + if (gMain.newKeys & R_BUTTON) + { + return 2; + } + } + + return 0; +} + +u8 sub_80F92BC(void) +{ + if (gSaveBlock2.optionsButtonMode == OPTIONS_BUTTON_MODE_LR) + { + if (gMain.newAndRepeatedKeys & L_BUTTON) + { + return 1; + } + if (gMain.newAndRepeatedKeys & R_BUTTON) + { + return 2; + } + } + + return 0; +} + +bool8 sub_80F92F4(u16 itemId) +{ + if (itemId != ITEM_ENIGMA_BERRY) + { + return TRUE; + } + + if (!(gSaveBlock1.location.mapGroup == MAP_GROUP_TRADE_CENTER && gSaveBlock1.location.mapNum == MAP_ID_TRADE_CENTER)) + { + return TRUE; + } + + return FALSE; +} + +bool8 sub_80F931C(u16 itemId) +{ + if (is_c1_link_related_active() != TRUE) + { + return TRUE; + } + + if (ItemIsMail(itemId) != TRUE) + { + return TRUE; + } + + return FALSE; +} + +bool8 sub_80F9344(void) +{ + if (is_c1_link_related_active() == TRUE || gReceivedRemoteLinkPlayers == 1) + { + return TRUE; + } + + return FALSE; +} + +void sub_80F9368(void) +{ + u8 *addr; + u32 size; + + REG_DISPCNT = 0; + REG_BG3CNT = 0; + REG_BG2CNT = 0; + REG_BG1CNT = 0; + REG_BG0CNT = 0; + REG_BG3HOFS = 0; + REG_BG3VOFS = 0; + REG_BG2HOFS = 0; + REG_BG2VOFS = 0; + REG_BG1HOFS = 0; + REG_BG1VOFS = 0; + REG_BG0HOFS = 0; + REG_BG0VOFS = 0; + + addr = (u8 *)VRAM; + size = 0x18000; + while (1) + { + DmaFill16(3, 0, addr, 0x1000); + addr += 0x1000; + size -= 0x1000; + if (size <= 0x1000) + { + DmaFill16(3, 0, addr, size); + break; + } + } + + DmaClear32(3, OAM, OAM_SIZE); + DmaClear16(3, PLTT, PLTT_SIZE); +} + +void sub_80F9438(void) +{ + SetVBlankCallback(NULL); + SetHBlankCallback(NULL); +} + +void sub_80F944C(void) +{ + u8 i; + + for (i = 0; i < 4; i++) + { + gUnknown_020388C0[i] = 0xFF; + } + + FreeSpritePaletteByTag(SCROLL_INDICATOR_PAL_TAG); + LoadSpritePalette(&gUnknown_083E5968); +} + +void sub_80F9480(u8 *data, u8 n) +{ + u8 i; + + for (i = 0; i < n; i++) + { + data[i] = 0xFF; + } +} + +void sub_80F94A4(u8 animNum, u8 *spriteId, s16 x, s16 y) +{ + if (animNum <= 5) + { + if (*spriteId == 0xFF) + { + *spriteId = CreateSprite(&gSpriteTemplate_83E5A00, x, y, 0); + } + animNum -= 4; + StartSpriteAnim(&gSprites[*spriteId], animNum); + } +} + +void sub_80F94F8(u8 *spriteId) +{ + if (*spriteId != 0xFF) + { + DestroySprite(&gSprites[*spriteId]); + *spriteId = 0xFF; + } +} + +void sub_80F9520(u8 *data, u8 n) +{ + u8 i; + + for (i = 0; i < 8; i++) + { + sub_80F94F8(&data[i]); + } +} + +void CreateVerticalScrollIndicators(u8 id, u16 x, u16 y) +{ + if (id >= 4) + { + return; + } + + switch (id) + { + case 0: + if (gUnknown_020388C0[0] == 0xFF) + { + gUnknown_020388C0[0] = CreateSprite(&gSpriteTemplate_83E59D0, x, y, 0); + gSprites[gUnknown_020388C0[0]].data2 = -1; + if (gUnknown_020388C0[1] != 0xFF) + { + gSprites[gUnknown_020388C0[0]].pos2.y = gSprites[gUnknown_020388C0[1]].pos2.y * -1; + gSprites[gUnknown_020388C0[0]].data3 = gSprites[gUnknown_020388C0[1]].data3; + } + else + { + gSprites[gUnknown_020388C0[0]].data3 = 0; + } + } + break; + + case 1: + if (gUnknown_020388C0[1] == 0xFF) + { + gUnknown_020388C0[1] = CreateSprite(&gSpriteTemplate_83E59D0, x, y, 0); + gSprites[gUnknown_020388C0[1]].data2 = 1; + if (gUnknown_020388C0[0] != 0xFF) + { + gSprites[gUnknown_020388C0[1]].pos2.y = gSprites[gUnknown_020388C0[0]].pos2.y * -1; + gSprites[gUnknown_020388C0[1]].data3 = gSprites[gUnknown_020388C0[0]].data3; + } + else + { + gSprites[gUnknown_020388C0[1]].data3 = 0; + } + } + break; + + case 2: + if (gUnknown_020388C0[2] == 0xFF) + { + gUnknown_020388C0[2] = CreateSprite(&gSpriteTemplate_83E59E8, x, y, 0); + gSprites[gUnknown_020388C0[2]].data0 = -1; + if (gUnknown_020388C0[3] != 0xFF) + { + gSprites[gUnknown_020388C0[2]].pos2.x = gSprites[gUnknown_020388C0[3]].pos2.x * -1; + gSprites[gUnknown_020388C0[2]].data1 = gSprites[gUnknown_020388C0[3]].data1; + } + else + { + gSprites[gUnknown_020388C0[2]].data1 = 0; + } + } + break; + + case 3: + if (gUnknown_020388C0[3] == 0xFF) + { + gUnknown_020388C0[3] = CreateSprite(&gSpriteTemplate_83E59E8, x, y, 0); + gSprites[gUnknown_020388C0[3]].data0 = 1; + if (gUnknown_020388C0[2] != 0xFF) + { + gSprites[gUnknown_020388C0[3]].pos2.x = gSprites[gUnknown_020388C0[2]].pos2.x * -1; + gSprites[gUnknown_020388C0[3]].data1 = gSprites[gUnknown_020388C0[2]].data1; + } + else + { + gSprites[gUnknown_020388C0[3]].data1 = 0; + } + } + break; + } + + StartSpriteAnim(&gSprites[gUnknown_020388C0[id]], id & 1); +} + +void sub_80F979C(u8 id, bool8 invisible) +{ + if (id < 4 && gUnknown_020388C0[id] != 0xFF) + { + gSprites[gUnknown_020388C0[id]].invisible = invisible; + } +} + +void DestroyVerticalScrollIndicator(u8 id) +{ + if (id < 4 && gUnknown_020388C0[id] != 0xFF) + { + DestroySprite(&gSprites[gUnknown_020388C0[id]]); + gUnknown_020388C0[id] = 0xFF; + } +} + +void LoadScrollIndicatorPalette(void) +{ + LoadSpritePalette(&gUnknown_083E5968); +} + +void BuyMenuFreeMemory(void) +{ + FreeSpritePaletteByTag(SCROLL_INDICATOR_PAL_TAG); +} + +static void sub_80F9834(struct Sprite *sprite) +{ + if (sprite->data1 == 0) + { + sprite->pos2.x += sprite->data0; + } + if (sprite->data3 == 0) + { + sprite->pos2.y += sprite->data2; + } + sprite->data1++; + sprite->data3++; + if (sprite->data1 > 2) + { + sprite->data1 = 0; + } + if (sprite->data3 > 2) + { + sprite->data3 = 0; + } + if (sprite->pos2.x == 8 || sprite->pos2.x == -8) + { + sprite->pos2.x = 0; + } + if (sprite->pos2.y == 8 || sprite->pos2.y == -8) + { + sprite->pos2.y = 0; + } +} + +void sub_80F98A4(u8 id) +{ + if (gUnknown_020388C0[id] != 0xFF && id < 4) + { + gSprites[gUnknown_020388C0[id]].callback = SpriteCallbackDummy; + } +} + +void StartVerticalScrollIndicators(u8 id) +{ + if (gUnknown_020388C0[id] != 0xFF && id < 4) + { + gSprites[gUnknown_020388C0[id]].callback = sub_80F9834; + } +} + +static void sub_80F9914(u8 id) +{ + if (gUnknown_020388C0[id] != 0xFF && id < 4) + { + gSprites[gUnknown_020388C0[id]].pos2.x = 0; + gSprites[gUnknown_020388C0[id]].pos2.y = 0; + gSprites[gUnknown_020388C0[id]].data1 = 0; + gSprites[gUnknown_020388C0[id]].data3 = 0; + } +} + +void PauseVerticalScrollIndicator(u8 id) +{ + sub_80F98A4(id); + sub_80F9914(id); +} + +void sub_80F9988(u8 id, u8 priority) +{ + if (gUnknown_020388C0[id] != 0xFF && id < 4) + { + gSprites[gUnknown_020388C0[id]].oam.priority = priority; + } +} diff --git a/src/metatile_behavior.c b/src/field/metatile_behavior.c similarity index 100% rename from src/metatile_behavior.c rename to src/field/metatile_behavior.c diff --git a/src/money.c b/src/field/money.c similarity index 84% rename from src/money.c rename to src/field/money.c index ab4508a39..5d0f0ae8d 100644 --- a/src/money.c +++ b/src/field/money.c @@ -8,7 +8,8 @@ #define SPRITE_TAG_MONEY (0x2722) extern u16 gSpecialVar_0x8005; -extern u8 gUnknown_02038734; + +static EWRAM_DATA u8 gUnknown_02038734 = 0; extern const struct CompressedSpriteSheet gUnknown_083CF584; extern const struct CompressedSpritePalette gUnknown_083CF58C; @@ -24,7 +25,7 @@ bool8 IsEnoughMoney(u32 budget, u32 cost) return FALSE; } -void sub_80B79B8(u32 *arg0, u32 arg1) +void AddMoney(u32 *arg0, u32 arg1) { if (*arg0 > *arg0 + arg1) { @@ -39,7 +40,7 @@ void sub_80B79B8(u32 *arg0, u32 arg1) } } -void sub_80B79E0(u32 *arg0, u32 arg1) +void RemoveMoney(u32 *arg0, u32 arg1) { if (*arg0 < arg1) { @@ -51,39 +52,25 @@ void sub_80B79E0(u32 *arg0, u32 arg1) } } -void sub_80B79F8(u8 *buffer, u32 arg1, u8 arg2) +void GetMoneyAmountText(u8 *buffer, u32 amount, u8 arg2) { u8 width; u8 i; - if (arg1 > 999999) - { + if (amount > 999999) width = 7; - } - else if (arg1 > 99999) - { + else if (amount > 99999) width = 6; - } - else if (arg1 > 10000) - { + else if (amount > 10000) width = 5; - } - else if (arg1 > 999) - { + else if (amount > 999) width = 4; - } - else if (arg1 > 99) - { + else if (amount > 99) width = 3; - } - else if (arg1 > 9) - { + else if (amount > 9) width = 2; - } else - { width = 1; - } buffer[0] = EXT_CTRL_CODE_BEGIN; buffer[1] = 0x14; @@ -99,7 +86,7 @@ void sub_80B79F8(u8 *buffer, u32 arg1, u8 arg2) buffer[0] = CHAR_CURRENCY; buffer += 1; - buffer = ConvertIntToDecimalString(buffer, arg1); + buffer = ConvertIntToDecimalString(buffer, amount); buffer[0] = EXT_CTRL_CODE_BEGIN; buffer[1] = 0x14; @@ -107,16 +94,18 @@ void sub_80B79F8(u8 *buffer, u32 arg1, u8 arg2) buffer[3] = EOS; } -void sub_80B7A94(u32 arg0, u8 size, u8 x, u8 y) +void PrintMoneyAmount(u32 amount, u8 size, u8 x, u8 y) { u8 buffer[16]; u8 stringWidth; - sub_80B79F8(buffer, arg0, size); + GetMoneyAmountText(buffer, amount, size); stringWidth = sub_8072CA4(buffer); if (stringWidth >= (size + 1) * 8) + { MenuPrint(buffer, x, y); + } else { int xPlusOne = x + 1; @@ -147,7 +136,7 @@ void sub_80B7AEC(u32 arg0, u8 left, u8 top) } __attribute__((naked)) -void sub_80B7B34(void) +void sub_80B7B34(u8 var1, u8 var2, int var3) { asm(".syntax unified\n\ push {r4-r7,lr}\n\ @@ -240,15 +229,15 @@ _080B7BE8: .4byte 0x0600f840\n\ .syntax divided\n"); } -void sub_80B7BEC(u32 arg0, u8 x, u8 y) +void UpdateMoneyWindow(u32 amount, u8 x, u8 y) { - sub_80B7A94(arg0, 6, x + 6, y + 1); + PrintMoneyAmount(amount, 6, x + 6, y + 1); } -void sub_80B7C14(u32 arg0, u8 x, u8 y) +void OpenMoneyWindow(u32 amount, u8 x, u8 y) { MenuDrawTextWindow(x, y, x + 13, y + 3); - sub_80B7BEC(arg0, x, y); + UpdateMoneyWindow(amount, x, y); LoadCompressedObjectPic(&gUnknown_083CF584); LoadCompressedObjectPalette(&gUnknown_083CF58C); @@ -256,7 +245,7 @@ void sub_80B7C14(u32 arg0, u8 x, u8 y) gUnknown_02038734 = CreateSprite(&gSpriteTemplate_83CF56C, x * 8 + 19, y * 8 + 11, 0); } -void RemoveMoneyLabelObject(u8 x, u8 y) +void CloseMoneyWindow(u8 x, u8 y) { DestroySpriteAndFreeResources(&gSprites[gUnknown_02038734]); FreeSpritePaletteByTag(SPRITE_TAG_MONEY); @@ -270,5 +259,5 @@ bool8 sub_80B7CE8(void) void sub_80B7D0C(void) { - sub_80B79E0(&gSaveBlock1.money, gSpecialVar_0x8005); + RemoveMoney(&gSaveBlock1.money, gSpecialVar_0x8005); } diff --git a/src/rom4.c b/src/field/overworld.c similarity index 75% rename from src/rom4.c rename to src/field/overworld.c index bfc8e0e44..d6f255409 100644 --- a/src/rom4.c +++ b/src/field/overworld.c @@ -1,5 +1,5 @@ #include "global.h" -#include "rom4.h" +#include "overworld.h" #include "battle_setup.h" #include "berry.h" #include "cable_club.h" @@ -25,6 +25,7 @@ #include "link.h" #include "load_save.h" #include "main.h" +#include "map_constants.h" #include "map_name_popup.h" #include "menu.h" #include "metatile_behavior.h" @@ -40,6 +41,7 @@ #include "secret_base.h" #include "songs.h" #include "sound.h" +#include "species.h" #include "start_menu.h" #include "task.h" #include "tileset_anim.h" @@ -60,28 +62,10 @@ struct UnkTVStruct u32 tv_field_4; }; -extern struct WarpData gUnknown_020297F0; -extern struct WarpData gUnknown_020297F8; -extern struct WarpData gUnknown_02029800; -extern struct WarpData gUnknown_02029808; -extern struct UnkPlayerStruct gUnknown_02029810; -extern u16 gUnknown_02029814; -extern bool8 gUnknown_02029816; -extern struct LinkPlayerMapObject gLinkPlayerMapObjects[4]; - -extern u8 gUnknown_03000580[]; -extern u16 (*gUnknown_03000584)(u32); -extern u8 gUnknown_03000588; - -extern u16 word_3004858; -extern void (*gFieldCallback)(void); -extern u8 gUnknown_03004860; -extern u8 gFieldLinkPlayerCount; - extern u16 gUnknown_03004898; extern u16 gUnknown_0300489C; -extern u8 EventScript_LeagueWhiteOut[]; +extern u8 S_WhiteOut[]; extern u8 gUnknown_0819FC9F[]; extern u8 SingleBattleColosseum_EventScript_1A436F[]; extern u8 SingleBattleColosseum_EventScript_1A4379[]; @@ -102,71 +86,165 @@ extern u8 TradeRoom_PromptToCancelLink[]; extern u8 TradeRoom_TerminateLink[]; extern u8 gUnknown_081A4508[]; -extern u8 (*gUnknown_082166A0[])(struct LinkPlayerMapObject *, struct MapObject *, u8); -extern u8 (*gUnknown_082166AC[])(struct LinkPlayerMapObject *, struct MapObject *, u8); -extern void (*gUnknown_082166D8[])(struct LinkPlayerMapObject *, struct MapObject *); - extern struct MapData * const gMapAttributes[]; extern struct MapHeader * const * const gMapGroups[]; -extern const struct WarpData gDummyWarpData; -extern s32 gUnknown_0839ACE8; -extern u32 gUnknown_08216694[]; +extern s32 gMaxFlashLevel; -void DoWhiteOut(void) +EWRAM_DATA struct WarpData gUnknown_020297F0 = {0}; +EWRAM_DATA struct WarpData gWarpDestination = {0}; // new warp position +EWRAM_DATA struct WarpData gUnknown_02029800 = {0}; +EWRAM_DATA struct WarpData gUnknown_02029808 = {0}; +EWRAM_DATA struct UnkPlayerStruct gUnknown_02029810 = {0}; +EWRAM_DATA static u16 sAmbientCrySpecies = 0; +EWRAM_DATA static bool8 sIsAmbientCryWaterMon = FALSE; +EWRAM_DATA struct LinkPlayerMapObject gLinkPlayerMapObjects[4] = {0}; + +static u8 gUnknown_03000580[4]; +static u16 (*gUnknown_03000584)(u32); +static u8 gUnknown_03000588; + +u16 word_3004858; +void (*gFieldCallback)(void); +u8 gUnknown_03004860; +u8 gFieldLinkPlayerCount; + +static const struct WarpData sDummyWarpData = { - ScriptContext2_RunNewScript(EventScript_LeagueWhiteOut); + .mapGroup = -1, + .mapNum = -1, + .warpId = -1, + .x = -1, + .y = -1, +}; + +static const u8 sUnusedData[] = +{ + 0xB0, 0x04, 0x00, 0x00, + 0x10, 0x0E, 0x00, 0x00, + 0xB0, 0x04, 0x00, 0x00, + 0x60, 0x09, 0x00, 0x00, + 0x32, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x00, 0x00, + 0xD4, 0xFF, 0xFF, 0xFF, + 0x2C, 0x00, 0x00, 0x00, +}; + +const struct UCoords32 gUnknown_0821664C[] = +{ + { 0, 0}, + { 0, 1}, + { 0, -1}, + {-1, 0}, + { 1, 0}, + {-1, 1}, + { 1, 1}, + {-1, -1}, + { 1, -1}, +}; + +const struct UnknownTaskStruct gUnknown_08216694 = +{ + (void *)REG_ADDR_WIN0H, + ((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1, + 1, + 0, +}; + +static u8 sub_8055C68(struct LinkPlayerMapObject *, struct MapObject *, u8); +static u8 sub_8055C88(struct LinkPlayerMapObject *, struct MapObject *, u8); +static u8 sub_8055C8C(struct LinkPlayerMapObject *, struct MapObject *, u8); + +static u8 (*const gUnknown_082166A0[])(struct LinkPlayerMapObject *, struct MapObject *, u8) = +{ + sub_8055C68, + sub_8055C88, + sub_8055C8C, +}; + +static u8 sub_8055CAC(struct LinkPlayerMapObject *, struct MapObject *, u8); +static u8 sub_8055CB0(struct LinkPlayerMapObject *, struct MapObject *, u8); +static u8 sub_8055D18(struct LinkPlayerMapObject *, struct MapObject *, u8); + +static u8 (*const gUnknown_082166AC[])(struct LinkPlayerMapObject *, struct MapObject *, u8) = +{ + sub_8055CAC, + sub_8055CB0, + sub_8055CB0, + sub_8055CB0, + sub_8055CB0, + sub_8055CAC, + sub_8055CAC, + sub_8055D18, + sub_8055D18, + sub_8055D18, + sub_8055D18, +}; + +static void sub_8055D30(struct LinkPlayerMapObject *, struct MapObject *); +static void sub_8055D38(struct LinkPlayerMapObject *, struct MapObject *); + +static void (*const gUnknown_082166D8[])(struct LinkPlayerMapObject *, struct MapObject *) = +{ + sub_8055D30, + sub_8055D38, +}; + + +static void DoWhiteOut(void) +{ + ScriptContext2_RunNewScript(S_WhiteOut); gSaveBlock1.money /= 2; - HealPlayerParty(); - sub_8053050(); - sub_8053570(); + ScrSpecial_HealPlayerParty(); + Overworld_ResetStateAfterWhiteOut(); + Overworld_SetWarpDestToLastHealLoc(); warp_in(); } -void flag_var_implications_of_teleport_(void) +void Overworld_ResetStateAfterFly(void) { player_avatar_init_params_reset(); - FlagReset(SYS_CYCLING_ROAD); - FlagReset(SYS_CRUISE_MODE); - FlagReset(SYS_SAFARI_MODE); - FlagReset(SYS_USE_STRENGTH); - FlagReset(SYS_USE_FLASH); + FlagClear(SYS_CYCLING_ROAD); + FlagClear(SYS_CRUISE_MODE); + FlagClear(SYS_SAFARI_MODE); + FlagClear(SYS_USE_STRENGTH); + FlagClear(SYS_USE_FLASH); } -void new_game(void) +void Overworld_ResetStateAfterTeleport(void) { player_avatar_init_params_reset(); - FlagReset(SYS_CYCLING_ROAD); - FlagReset(SYS_CRUISE_MODE); - FlagReset(SYS_SAFARI_MODE); - FlagReset(SYS_USE_STRENGTH); - FlagReset(SYS_USE_FLASH); + FlagClear(SYS_CYCLING_ROAD); + FlagClear(SYS_CRUISE_MODE); + FlagClear(SYS_SAFARI_MODE); + FlagClear(SYS_USE_STRENGTH); + FlagClear(SYS_USE_FLASH); ScriptContext2_RunNewScript(gUnknown_0819FC9F); } -void sub_8053014(void) +void Overworld_ResetStateAfterDigEscRope(void) { player_avatar_init_params_reset(); - FlagReset(SYS_CYCLING_ROAD); - FlagReset(SYS_CRUISE_MODE); - FlagReset(SYS_SAFARI_MODE); - FlagReset(SYS_USE_STRENGTH); - FlagReset(SYS_USE_FLASH); + FlagClear(SYS_CYCLING_ROAD); + FlagClear(SYS_CRUISE_MODE); + FlagClear(SYS_SAFARI_MODE); + FlagClear(SYS_USE_STRENGTH); + FlagClear(SYS_USE_FLASH); } -void sub_8053050(void) +void Overworld_ResetStateAfterWhiteOut(void) { player_avatar_init_params_reset(); - FlagReset(SYS_CYCLING_ROAD); - FlagReset(SYS_CRUISE_MODE); - FlagReset(SYS_SAFARI_MODE); - FlagReset(SYS_USE_STRENGTH); - FlagReset(SYS_USE_FLASH); + FlagClear(SYS_CYCLING_ROAD); + FlagClear(SYS_CRUISE_MODE); + FlagClear(SYS_SAFARI_MODE); + FlagClear(SYS_USE_STRENGTH); + FlagClear(SYS_USE_FLASH); } void sub_805308C(void) { - FlagReset(SYS_SAFARI_MODE); - sub_8054164(); + FlagClear(SYS_SAFARI_MODE); + ChooseAmbientCrySpecies(); ResetCyclingRoadChallengeData(); UpdateLocationHistoryForRoamer(); RoamerMoveToOtherLocationSet(); @@ -205,23 +283,27 @@ void SetGameStat(u8 index, u32 value) gSaveBlock1.gameStats[index] = value; } -void sub_8053154(void) +void LoadMapObjTemplatesFromHeader(void) { + // Clear map object templates CpuFill32(0, gSaveBlock1.mapObjectTemplates, sizeof(gSaveBlock1.mapObjectTemplates)); + + // Copy map header events to save block CpuCopy32(gMapHeader.events->mapObjects, gSaveBlock1.mapObjectTemplates, gMapHeader.events->mapObjectCount * sizeof(struct MapObjectTemplate)); } -void sub_8053198(void) +static void LoadSaveblockMapObjScripts(void) { struct MapObjectTemplate *mapObjectTemplates = gSaveBlock1.mapObjectTemplates; s32 i; + for (i = 0; i < 64; i++) mapObjectTemplates[i].script = gMapHeader.events->mapObjects[i].script; } -void update_saveblock1_field_object_coords(u8 localId, s16 x, s16 y) +void Overworld_SetMapObjTemplateCoords(u8 localId, s16 x, s16 y) { s32 i; for (i = 0; i < 64; i++) @@ -231,28 +313,27 @@ void update_saveblock1_field_object_coords(u8 localId, s16 x, s16 y) { mapObjectTemplate->x = x; mapObjectTemplate->y = y; - break; + return; } } } -void update_saveblock1_field_object_movement_behavior(u8 localId, u8 movementType) +void Overworld_SetMapObjTemplateMovementType(u8 localId, u8 movementType) { - s32 i = 0; - struct MapObjectTemplate *mapObjectTemplate = gSaveBlock1.mapObjectTemplates; - do + s32 i; + + for (i = 0; i < 64; i++) { + struct MapObjectTemplate *mapObjectTemplate = &gSaveBlock1.mapObjectTemplates[i]; if (mapObjectTemplate->localId == localId) { mapObjectTemplate->movementType = movementType; - break; + return; } - mapObjectTemplate++; - i++; - } while (i < 64); + } } -void mapdata_load_assets_to_gpu_and_full_redraw(void) +static void mapdata_load_assets_to_gpu_and_full_redraw(void) { move_tilemap_camera_to_upper_left_corner(); copy_map_tileset1_tileset2_to_vram(gMapHeader.mapData); @@ -261,7 +342,7 @@ void mapdata_load_assets_to_gpu_and_full_redraw(void) cur_mapheader_run_tileset_funcs_after_some_cpuset(); } -struct MapData *get_mapdata_header(void) +static struct MapData *get_mapdata_header(void) { u16 mapDataId = gSaveBlock1.mapDataId; if (mapDataId) @@ -269,15 +350,15 @@ struct MapData *get_mapdata_header(void) return NULL; } -void warp_shift(void) +static void ApplyCurrentWarp(void) { gUnknown_020297F0 = gSaveBlock1.location; - gSaveBlock1.location = gUnknown_020297F8; - gUnknown_02029800 = gDummyWarpData; - gUnknown_02029808 = gDummyWarpData; + gSaveBlock1.location = gWarpDestination; + gUnknown_02029800 = sDummyWarpData; + gUnknown_02029808 = sDummyWarpData; } -void warp_set(struct WarpData *warp, s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y) +static void SetWarpData(struct WarpData *warp, s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y) { warp->mapGroup = mapGroup; warp->mapNum = mapNum; @@ -286,7 +367,7 @@ void warp_set(struct WarpData *warp, s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 warp->y = y; } -bool32 warp_data_is_not_neg_1(struct WarpData *warp) +static bool32 warp_data_is_not_neg_1(struct WarpData *warp) { if (warp->mapGroup != -1) return FALSE; @@ -301,31 +382,27 @@ bool32 warp_data_is_not_neg_1(struct WarpData *warp) return TRUE; } -struct MapHeader * const get_mapheader_by_bank_and_number(u16 mapGroup, u16 mapNum) +struct MapHeader *const Overworld_GetMapHeaderByGroupAndId(u16 mapGroup, u16 mapNum) { return gMapGroups[mapGroup][mapNum]; } -struct MapHeader * const warp1_get_mapheader(void) +struct MapHeader *const warp1_get_mapheader(void) { - return get_mapheader_by_bank_and_number(gUnknown_020297F8.mapGroup, gUnknown_020297F8.mapNum); + return Overworld_GetMapHeaderByGroupAndId(gWarpDestination.mapGroup, gWarpDestination.mapNum); } -void set_current_map_header_from_sav1_save_old_name(void) +static void set_current_map_header_from_sav1_save_old_name(void) { - struct MapHeader *dest = &gMapHeader; - struct MapHeader *src = get_mapheader_by_bank_and_number(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum); - *dest = *src; - gSaveBlock1.mapDataId = dest->mapDataId; - dest->mapData = get_mapdata_header(); + gMapHeader = *Overworld_GetMapHeaderByGroupAndId(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum); + gSaveBlock1.mapDataId = gMapHeader.mapDataId; + gMapHeader.mapData = get_mapdata_header(); } -void sub_805338C(void) +static void LoadSaveblockMapHeader(void) { - struct MapHeader *dest = &gMapHeader; - struct MapHeader *src = get_mapheader_by_bank_and_number(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum); - *dest = *src; - dest->mapData = get_mapdata_header(); + gMapHeader = *Overworld_GetMapHeaderByGroupAndId(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum); + gMapHeader.mapData = get_mapdata_header(); } void sub_80533CC(void) @@ -349,115 +426,117 @@ void sub_80533CC(void) void warp_in(void) { - warp_shift(); + ApplyCurrentWarp(); set_current_map_header_from_sav1_save_old_name(); sub_80533CC(); } -void warp1_set(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y) +void Overworld_SetWarpDestination(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y) { - warp_set(&gUnknown_020297F8, mapGroup, mapNum, warpId, x, y); + SetWarpData(&gWarpDestination, mapGroup, mapNum, warpId, x, y); } void warp1_set_2(s8 mapGroup, s8 mapNum, s8 warpId) { - warp1_set(mapGroup, mapNum, warpId, -1, -1); + Overworld_SetWarpDestination(mapGroup, mapNum, warpId, -1, -1); } void saved_warp2_set(int unused, s8 mapGroup, s8 mapNum, s8 warpId) { - warp_set(&gSaveBlock1.warp2, mapGroup, mapNum, warpId, gSaveBlock1.pos.x, gSaveBlock1.pos.y); + SetWarpData(&gSaveBlock1.warp2, mapGroup, mapNum, warpId, gSaveBlock1.pos.x, gSaveBlock1.pos.y); } void saved_warp2_set_2(int unused, s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y) { - warp_set(&gSaveBlock1.warp2, mapGroup, mapNum, warpId, x, y); + SetWarpData(&gSaveBlock1.warp2, mapGroup, mapNum, warpId, x, y); } void copy_saved_warp2_bank_and_enter_x_to_warp1(u8 unused) { - gUnknown_020297F8 = gSaveBlock1.warp2; + gWarpDestination = gSaveBlock1.warp2; } void sub_8053538(u8 a1) { const struct HealLocation *warp = GetHealLocation(a1); + if (warp) - warp1_set(warp->group, warp->map, -1, warp->x, warp->y); + Overworld_SetWarpDestination(warp->group, warp->map, -1, warp->x, warp->y); } -void sub_8053570(void) +void Overworld_SetWarpDestToLastHealLoc(void) { - gUnknown_020297F8 = gSaveBlock1.warp3; + gWarpDestination = gSaveBlock1.lastHealLocation; } -void sub_8053588(u8 a1) +void Overworld_SetHealLocationWarp(u8 healLocationId) { - const struct HealLocation *warp = GetHealLocation(a1); - if (warp) - warp_set(&gSaveBlock1.warp3, warp->group, warp->map, -1, warp->x, warp->y); + const struct HealLocation *healLocation = GetHealLocation(healLocationId); + + if (healLocation != NULL) + SetWarpData(&gSaveBlock1.lastHealLocation, healLocation->group, healLocation->map, -1, healLocation->x, healLocation->y); } void sub_80535C4(s16 a1, s16 a2) { - u8 v4 = sav1_map_get_light_level(); - u8 v5 = get_map_light_level_by_bank_and_number(gUnknown_020297F8.mapGroup, gUnknown_020297F8.mapNum); - if (is_light_level_1_2_3_5_or_6(v4) && is_light_level_1_2_3_5_or_6(v5) != TRUE) + u8 currMapType = Overworld_GetMapTypeOfSaveblockLocation(); + u8 destMapType = GetMapTypeByGroupAndId(gWarpDestination.mapGroup, gWarpDestination.mapNum); + if (is_map_type_1_2_3_5_or_6(currMapType) && is_map_type_1_2_3_5_or_6(destMapType) != TRUE) sub_805363C(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum, -1, a1 - 7, a2 - 6); } void sub_805363C(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y) { - warp_set(&gSaveBlock1.warp4, mapGroup, mapNum, warpId, x, y); + SetWarpData(&gSaveBlock1.warp4, mapGroup, mapNum, warpId, x, y); } void sub_8053678(void) { - gUnknown_020297F8 = gSaveBlock1.warp4; + gWarpDestination = gSaveBlock1.warp4; } void sub_8053690(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y) { - warp_set(&gUnknown_02029800, mapGroup, mapNum, warpId, x, y); + SetWarpData(&gUnknown_02029800, mapGroup, mapNum, warpId, x, y); } -void warp1_set_to_warp2(void) +static void warp1_set_to_warp2(void) { - gUnknown_020297F8 = gUnknown_02029800; + gWarpDestination = gUnknown_02029800; } void sub_80536E4(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y) { - warp_set(&gUnknown_02029808, mapGroup, mapNum, warpId, x, y); + SetWarpData(&gUnknown_02029808, mapGroup, mapNum, warpId, x, y); } void sub_8053720(s16 x, s16 y) { if (warp_data_is_not_neg_1(&gUnknown_02029808) == TRUE) { - gUnknown_020297F8 = gUnknown_020297F0; + gWarpDestination = gUnknown_020297F0; } else { - warp1_set(gUnknown_02029808.mapGroup, gUnknown_02029808.mapNum, -1, x, y); + Overworld_SetWarpDestination(gUnknown_02029808.mapGroup, gUnknown_02029808.mapNum, -1, x, y); } } void sub_8053778(void) { - gUnknown_020297F8 = gSaveBlock1.warp1; + gWarpDestination = gSaveBlock1.warp1; } void unref_sub_8053790(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y) { - warp_set(&gSaveBlock1.warp1, mapGroup, mapNum, warpId, x, y); + SetWarpData(&gSaveBlock1.warp1, mapGroup, mapNum, warpId, x, y); } void sub_80537CC(u8 a1) { const struct HealLocation *warp = GetHealLocation(a1); if (warp) - warp_set(&gSaveBlock1.warp1, warp->group, warp->map, -1, warp->x, warp->y); + SetWarpData(&gSaveBlock1.warp1, warp->group, warp->map, -1, warp->x, warp->y); } void gpu_sync_bg_hide() @@ -465,7 +544,7 @@ void gpu_sync_bg_hide() gSaveBlock1.warp1 = gSaveBlock1.warp2; } -struct MapConnection *sub_8053818(u8 dir) +struct MapConnection *GetMapConnection(u8 dir) { s32 i; s32 count = gMapHeader.connections->count; @@ -483,10 +562,11 @@ struct MapConnection *sub_8053818(u8 dir) bool8 sub_8053850(u8 dir, u16 x, u16 y) { - struct MapConnection *connection = sub_8053818(dir); - if (connection) + struct MapConnection *connection = GetMapConnection(dir); + + if (connection != NULL) { - warp1_set(connection->mapGroup, connection->mapNum, -1, x, y); + Overworld_SetWarpDestination(connection->mapGroup, connection->mapNum, -1, x, y); } else { @@ -512,20 +592,20 @@ void sub_80538F0(u8 mapGroup, u8 mapNum) { s32 i; - warp1_set(mapGroup, mapNum, -1, -1, -1); + Overworld_SetWarpDestination(mapGroup, mapNum, -1, -1, -1); sub_8053F0C(); - warp_shift(); + ApplyCurrentWarp(); set_current_map_header_from_sav1_save_old_name(); - sub_8053154(); + LoadMapObjTemplatesFromHeader(); ClearTempFieldEventData(); ResetCyclingRoadChallengeData(); prev_quest_postbuffer_cursor_backup_reset(); sub_8082BD0(mapGroup, mapNum); DoTimeBasedEvents(); sub_80806E4(); - sub_8054164(); - sub_8053C98(); - sav1_reset_battle_music_maybe(); + ChooseAmbientCrySpecies(); + SetDefaultFlashLevel(); + Overworld_ClearSavedMusic(); mapheader_run_script_with_tag_x3(); not_trainer_hill_battle_pyramid(); sub_8056D38(gMapHeader.mapData); @@ -549,9 +629,9 @@ void sub_8053994(u32 a1) bool8 v3; set_current_map_header_from_sav1_save_old_name(); - sub_8053154(); - v2 = is_light_level_1_2_3_5_or_6(gMapHeader.mapType); - v3 = is_light_level_8_or_9(gMapHeader.mapType); + LoadMapObjTemplatesFromHeader(); + v2 = is_map_type_1_2_3_5_or_6(gMapHeader.mapType); + v3 = Overworld_MapTypeIsIndoors(gMapHeader.mapType); ClearTempFieldEventData(); ResetCyclingRoadChallengeData(); prev_quest_postbuffer_cursor_backup_reset(); @@ -559,11 +639,11 @@ void sub_8053994(u32 a1) if (a1 != 1) DoTimeBasedEvents(); sub_80806E4(); - sub_8054164(); + ChooseAmbientCrySpecies(); if (v2) - FlagReset(SYS_USE_FLASH); - sub_8053C98(); - sav1_reset_battle_music_maybe(); + FlagClear(SYS_USE_FLASH); + SetDefaultFlashLevel(); + Overworld_ClearSavedMusic(); mapheader_run_script_with_tag_x3(); UpdateLocationHistoryForRoamer(); RoamerMoveToOtherLocationSet(); @@ -600,11 +680,11 @@ void walkrun_find_lowest_active_bit_in_bitfield(void) struct UnkPlayerStruct *sub_8053AA8(void) { struct UnkPlayerStruct playerStruct; - u8 light = sav1_map_get_light_level(); + u8 mapType = Overworld_GetMapTypeOfSaveblockLocation(); u16 v2 = cur_mapdata_block_role_at_screen_center_acc_to_sav1(); - u8 v4 = sub_8053B00(&gUnknown_02029810, v2, light); + u8 v4 = sub_8053B00(&gUnknown_02029810, v2, mapType); playerStruct.player_field_0 = v4; - playerStruct.player_field_1 = sub_8053B60(&gUnknown_02029810, v4, v2, light); + playerStruct.player_field_1 = sub_8053B60(&gUnknown_02029810, v4, v2, mapType); gUnknown_02029810 = playerStruct; return &gUnknown_02029810; } @@ -617,7 +697,7 @@ u8 sub_8053B00(struct UnkPlayerStruct *playerStruct, u16 a2, u8 a3) return 16; if (MetatileBehavior_IsSurfableWaterOrUnderwater(a2) == 1) return 8; - if (IsBikingAllowedByMap() != TRUE) + if (Overworld_IsBikingAllowed() != TRUE) return 1; if (playerStruct->player_field_0 == 2) return 2; @@ -655,10 +735,12 @@ u16 cur_mapdata_block_role_at_screen_center_acc_to_sav1(void) return MapGridGetMetatileBehaviorAt(gSaveBlock1.pos.x + 7, gSaveBlock1.pos.y + 7); } -bool32 IsBikingAllowedByMap(void) +bool32 Overworld_IsBikingAllowed(void) { // is player in cycling road entrance? - if (gSaveBlock1.location.mapGroup == 29 && (gSaveBlock1.location.mapNum == 11 || gSaveBlock1.location.mapNum == 12)) + if (gSaveBlock1.location.mapGroup == MAP_GROUP_ROUTE110_SEASIDE_CYCLING_ROAD_SOUTH_ENTRANCE + && (gSaveBlock1.location.mapNum == MAP_ID_ROUTE110_SEASIDE_CYCLING_ROAD_SOUTH_ENTRANCE + || gSaveBlock1.location.mapNum == MAP_ID_ROUTE110_SEASIDE_CYCLING_ROAD_NORTH_ENTRANCE)) return TRUE; // is player indoor, in a secret base, or underwater? @@ -669,37 +751,37 @@ bool32 IsBikingAllowedByMap(void) if (gMapHeader.mapType == MAP_TYPE_UNDERWATER) return FALSE; - // is player in SeafloorCavern_Room9? - if (gSaveBlock1.location.mapGroup == 24 && gSaveBlock1.location.mapNum == 36) + // Thou shalt not bike on the sacred resting grounds of Kyogre/Groudon. + if (gSaveBlock1.location.mapGroup == MAP_GROUP_SEAFLOOR_CAVERN_ROOM9 + && gSaveBlock1.location.mapNum == MAP_ID_SEAFLOOR_CAVERN_ROOM9) return FALSE; - - // is player in CaveOfOrigin_B4F? - if (gSaveBlock1.location.mapGroup == 24 && gSaveBlock1.location.mapNum == 42) + if (gSaveBlock1.location.mapGroup == MAP_GROUP_CAVE_OF_ORIGIN_B4F + && gSaveBlock1.location.mapNum == MAP_ID_CAVE_OF_ORIGIN_B4F) return FALSE; return TRUE; } -void sub_8053C98(void) +void SetDefaultFlashLevel(void) { if (!gMapHeader.cave) - gSaveBlock1.flashUsed = 0; + gSaveBlock1.flashLevel = 0; else if (FlagGet(SYS_USE_FLASH)) - gSaveBlock1.flashUsed = 1; + gSaveBlock1.flashLevel = 1; else - gSaveBlock1.flashUsed = gUnknown_0839ACE8; + gSaveBlock1.flashLevel = gMaxFlashLevel; } -void sub_8053CE4(s32 a1) +void Overworld_SetFlashLevel(s32 flashLevel) { - if (a1 < 0 || a1 > gUnknown_0839ACE8) - a1 = 0; - gSaveBlock1.flashUsed = a1; + if (flashLevel < 0 || flashLevel > gMaxFlashLevel) + flashLevel = 0; + gSaveBlock1.flashLevel = flashLevel; } -u8 sav1_get_flash_used_on_map(void) +u8 Overworld_GetFlashLevel(void) { - return gSaveBlock1.flashUsed; + return gSaveBlock1.flashLevel; } void sub_8053D14(u16 mapDataId) @@ -708,60 +790,63 @@ void sub_8053D14(u16 mapDataId) gMapHeader.mapData = get_mapdata_header(); } -bool16 sub_8053D30(struct WarpData *warp) +static bool16 ShouldLegendaryMusicPlayAtLocation(struct WarpData *warp) { if (!FlagGet(SYS_WEATHER_CTRL)) return FALSE; - if (warp->mapGroup != 0) - return FALSE; - switch (warp->mapNum) + if (warp->mapGroup == 0) { - case 5: - case 6: - case 7: - case 8: - return TRUE; - case 39: - case 40: - case 41: - case 42: - case 43: - return TRUE; + switch (warp->mapNum) + { + case MAP_ID_LILYCOVE_CITY: + case MAP_ID_MOSSDEEP_CITY: + case MAP_ID_SOOTOPOLIS_CITY: + case MAP_ID_EVER_GRANDE_CITY: + return TRUE; + case MAP_ID_ROUTE124: + case MAP_ID_ROUTE125: + case MAP_ID_ROUTE126: + case MAP_ID_ROUTE127: + case MAP_ID_ROUTE128: + return TRUE; + } } return FALSE; } -bool16 sub_8053D6C(struct WarpData *warp) +static bool16 IsInfiltratedWeatherInstitute(struct WarpData *warp) { - if (VarGet(0x40B3)) + if (VarGet(VAR_WEATHER_INSTITUTE_CLEARED)) return FALSE; - if (warp->mapGroup != 32) + if (warp->mapGroup != MAP_GROUP_ROUTE119_WEATHER_INSTITUTE_1F) return FALSE; - if (warp->mapNum == 0 || warp->mapNum == 1) + if (warp->mapNum == MAP_ID_ROUTE119_WEATHER_INSTITUTE_1F + || warp->mapNum == MAP_ID_ROUTE119_WEATHER_INSTITUTE_2F) return TRUE; return FALSE; } -u16 sub_8053D9C(struct WarpData *warp) +static u16 GetLocationMusic(struct WarpData *warp) { - if (sub_8053D30(warp) == TRUE) + if (ShouldLegendaryMusicPlayAtLocation(warp) == TRUE) return LEGENDARY_MUSIC; - else if (sub_8053D6C(warp) == TRUE) + else if (IsInfiltratedWeatherInstitute(warp) == TRUE) return BGM_TOZAN; else - return get_mapheader_by_bank_and_number(warp->mapGroup, warp->mapNum)->music; + return Overworld_GetMapHeaderByGroupAndId(warp->mapGroup, warp->mapNum)->music; } -u16 sav1_map_get_music(void) +u16 GetCurrLocationDefaultMusic(void) { u16 music; - if (gSaveBlock1.location.mapGroup == 0 - && gSaveBlock1.location.mapNum == 26 + // Play the desert music only when the sandstorm is active on Route 111. + if (gSaveBlock1.location.mapGroup == MAP_GROUP_ROUTE111 + && gSaveBlock1.location.mapNum == MAP_ID_ROUTE111 && GetSav1Weather() == 8) return BGM_ASHROAD; - music = sub_8053D9C(&gSaveBlock1.location); + music = GetLocationMusic(&gSaveBlock1.location); if (music != 0x7FFF) { return music; @@ -775,36 +860,37 @@ u16 sav1_map_get_music(void) } } -u16 warp1_target_get_music(void) +u16 GetWarpDestinationMusic(void) { - u16 music = sub_8053D9C(&gUnknown_020297F8); + u16 music = GetLocationMusic(&gWarpDestination); if (music != 0x7FFF) { return music; } else { - if (gSaveBlock1.location.mapGroup == 0 && gSaveBlock1.location.mapNum == 2) + if (gSaveBlock1.location.mapGroup == MAP_GROUP_MAUVILLE_CITY + && gSaveBlock1.location.mapNum == MAP_ID_MAUVILLE_CITY) return BGM_DOORO_X1; else return BGM_GRANROAD; } } -void call_map_music_set_to_zero(void) +void Overworld_ResetMapMusic(void) { ResetMapMusic(); } -void sub_8053E90(void) +void Overworld_PlaySpecialMapMusic(void) { - u16 music = sav1_map_get_music(); + u16 music = GetCurrLocationDefaultMusic(); if (music != LEGENDARY_MUSIC) { - if (gSaveBlock1.battleMusic) - music = gSaveBlock1.battleMusic; - else if (sav1_map_get_light_level() == 5) + if (gSaveBlock1.savedMusic) + music = gSaveBlock1.savedMusic; + else if (Overworld_GetMapTypeOfSaveblockLocation() == MAP_TYPE_UNDERWATER) music = BGM_DEEPDEEP; else if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING)) music = BGM_NAMINORI; @@ -814,21 +900,21 @@ void sub_8053E90(void) PlayNewMapMusic(music); } -void sav1_set_battle_music_maybe(u16 songNum) +void Overworld_SetSavedMusic(u16 songNum) { - gSaveBlock1.battleMusic = songNum; + gSaveBlock1.savedMusic = songNum; } -void sav1_reset_battle_music_maybe(void) +void Overworld_ClearSavedMusic(void) { - gSaveBlock1.battleMusic = 0; + gSaveBlock1.savedMusic = 0; } void sub_8053F0C(void) { if (FlagGet(SPECIAL_FLAG_1) != TRUE) { - u16 newMusic = warp1_target_get_music(); + u16 newMusic = GetWarpDestinationMusic(); u16 currentMusic = GetCurrentMapMusic(); if (newMusic != LEGENDARY_MUSIC) { @@ -847,24 +933,24 @@ void sub_8053F0C(void) } } -void sub_8053F84(void) +void Overworld_ChangeMusicToDefault(void) { u16 currentMusic = GetCurrentMapMusic(); - if (currentMusic != sav1_map_get_music()) - FadeOutAndPlayNewMapMusic(sav1_map_get_music(), 8); + if (currentMusic != GetCurrLocationDefaultMusic()) + FadeOutAndPlayNewMapMusic(GetCurrLocationDefaultMusic(), 8); } -void sub_8053FB0(u16 music) +void Overworld_ChangeMusicTo(u16 newMusic) { u16 currentMusic = GetCurrentMapMusic(); - if (currentMusic != music && currentMusic != LEGENDARY_MUSIC) - FadeOutAndPlayNewMapMusic(music, 8); + if (currentMusic != newMusic && currentMusic != LEGENDARY_MUSIC) + FadeOutAndPlayNewMapMusic(newMusic, 8); } -u8 is_warp1_light_level_8_or_9(void) +u8 GetMapMusicFadeoutSpeed(void) { struct MapHeader *mapHeader = warp1_get_mapheader(); - if (is_light_level_8_or_9(mapHeader->mapType) == TRUE) + if (Overworld_MapTypeIsIndoors(mapHeader->mapType) == TRUE) return 2; else return 4; @@ -872,10 +958,10 @@ u8 is_warp1_light_level_8_or_9(void) void sub_8053FF8(void) { - u16 music = warp1_target_get_music(); + u16 music = GetWarpDestinationMusic(); if (FlagGet(SPECIAL_FLAG_1) != TRUE && music != GetCurrentMapMusic()) { - u8 speed = is_warp1_light_level_8_or_9(); + u8 speed = GetMapMusicFadeoutSpeed(); FadeOutMapMusic(speed); } } @@ -885,48 +971,50 @@ bool8 sub_8054034(void) return IsNotWaitingForBGMStop(); } -void sub_8054044(void) +void Overworld_FadeOutMapMusic(void) { FadeOutMapMusic(4); } -void sub_8054050(void) +static void PlayAmbientCry(void) { s16 x, y; - PlayerGetDestCoords((u16 *)&x, (u16 *)&y); - if (gUnknown_02029816 != TRUE - || MetatileBehavior_IsSurfableWaterOrUnderwater(MapGridGetMetatileBehaviorAt(x, y))) - { - s8 pan = (Random() % 88) + 212; - s8 volume = (Random() % 30) + 50; - PlayCry2(gUnknown_02029814, pan, volume, 1); - } + s8 pan; + s8 volume; + + PlayerGetDestCoords(&x, &y); + if (sIsAmbientCryWaterMon == TRUE + && !MetatileBehavior_IsSurfableWaterOrUnderwater(MapGridGetMetatileBehaviorAt(x, y))) + return; + pan = (Random() % 88) + 212; + volume = (Random() % 30) + 50; + PlayCry2(sAmbientCrySpecies, pan, volume, 1); } -void sub_80540D0(s16 *a1, u16 *a2) +void UpdateAmbientCry(s16 *state, u16 *delayCounter) { - switch (*a1) + switch (*state) { case 0: - if (!gUnknown_02029814) - *a1 = 4; + if (sAmbientCrySpecies == SPECIES_NONE) + *state = 4; else - *a1 = 1; + *state = 1; break; case 1: - *a2 = (Random() % 2400) + 1200; - *a1 = 3; + *delayCounter = (Random() % 2400) + 1200; + *state = 3; break; case 2: - *a2 = (Random() % 1200) + 1200; - *a1 = 3; + *delayCounter = (Random() % 1200) + 1200; + *state = 3; break; case 3: - (*a2)--; - if (*a2 == 0) + (*delayCounter)--; + if (*delayCounter == 0) { - sub_8054050(); - *a1 = 2; + PlayAmbientCry(); + *state = 2; } break; case 4: @@ -934,58 +1022,70 @@ void sub_80540D0(s16 *a1, u16 *a2) } } -void sub_8054164(void) +void ChooseAmbientCrySpecies(void) { - if ((gSaveBlock1.location.mapGroup == 0 && gSaveBlock1.location.mapNum == 45) && !IsMirageIslandPresent()) + if ((gSaveBlock1.location.mapGroup == MAP_GROUP_ROUTE130 + && gSaveBlock1.location.mapNum == MAP_ID_ROUTE130) + && !IsMirageIslandPresent()) { - gUnknown_02029816 = TRUE; - gUnknown_02029814 = GetMirageIslandMon(); + // Only play water pokemon cries on this route + // when Mirage Island is not present + sIsAmbientCryWaterMon = TRUE; + sAmbientCrySpecies = GetLocalWaterMon(); } else { - gUnknown_02029814 = GetLocalWildMon(&gUnknown_02029816); + sAmbientCrySpecies = GetLocalWildMon(&sIsAmbientCryWaterMon); } } -u8 get_map_light_level_by_bank_and_number(s8 mapGroup, s8 mapNum) +u8 GetMapTypeByGroupAndId(s8 mapGroup, s8 mapNum) { - return get_mapheader_by_bank_and_number(mapGroup, mapNum)->mapType; + return Overworld_GetMapHeaderByGroupAndId(mapGroup, mapNum)->mapType; } -u8 get_map_light_level_from_warp(struct WarpData *warp) +u8 GetMapTypeByWarpData(struct WarpData *warp) { - return get_map_light_level_by_bank_and_number(warp->mapGroup, warp->mapNum); + return GetMapTypeByGroupAndId(warp->mapGroup, warp->mapNum); } -u8 sav1_map_get_light_level(void) +u8 Overworld_GetMapTypeOfSaveblockLocation(void) { - return get_map_light_level_from_warp(&gSaveBlock1.location); + return GetMapTypeByWarpData(&gSaveBlock1.location); } -u8 get_map_light_from_warp0(void) +u8 get_map_type_from_warp0(void) { - return get_map_light_level_from_warp(&gUnknown_020297F0); + return GetMapTypeByWarpData(&gUnknown_020297F0); } -bool8 is_light_level_1_2_3_5_or_6(u8 a1) +bool8 is_map_type_1_2_3_5_or_6(u8 mapType) { - if (a1 == 3 || a1 == 1 || a1 == 5 || a1 == 2 || a1 == 6) + if (mapType == MAP_TYPE_ROUTE + || mapType == MAP_TYPE_TOWN + || mapType == MAP_TYPE_UNDERWATER + || mapType == MAP_TYPE_CITY + || mapType == MAP_TYPE_6) return TRUE; else return FALSE; } -bool8 is_light_level_1_2_3_or_6(u8 a1) +bool8 Overworld_MapTypeAllowsTeleportAndFly(u8 mapType) { - if (a1 == 3 || a1 == 1 || a1 == 6 || a1 == 2) + if (mapType == MAP_TYPE_ROUTE + || mapType == MAP_TYPE_TOWN + || mapType == MAP_TYPE_6 + || mapType == MAP_TYPE_CITY) return TRUE; else return FALSE; } -bool8 is_light_level_8_or_9(u8 a1) +bool8 Overworld_MapTypeIsIndoors(u8 mapType) { - if (a1 == 8 || a1 == 9) + if (mapType == MAP_TYPE_INDOOR + || mapType == MAP_TYPE_SECRET_BASE) return TRUE; else return FALSE; @@ -993,17 +1093,17 @@ bool8 is_light_level_8_or_9(u8 a1) u8 unref_sub_8054260(void) { - return get_mapheader_by_bank_and_number(gSaveBlock1.warp2.mapGroup, gSaveBlock1.warp2.mapNum)->name; + return Overworld_GetMapHeaderByGroupAndId(gSaveBlock1.warp2.mapGroup, gSaveBlock1.warp2.mapNum)->regionMapSectionId; } u8 sav1_map_get_name(void) { - return get_mapheader_by_bank_and_number(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum)->name; + return Overworld_GetMapHeaderByGroupAndId(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum)->regionMapSectionId; } u8 sav1_map_get_battletype(void) { - return get_mapheader_by_bank_and_number(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum)->battleType; + return Overworld_GetMapHeaderByGroupAndId(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum)->battleType; } void ResetSafariZoneFlag_(void) @@ -1046,7 +1146,7 @@ void c1_overworld(void) c1_overworld_normal(gMain.newKeys, gMain.heldKeys); } -void c2_overworld_basic(void) +void OverworldBasic(void) { ScriptContext2_RunScript(); RunTasks(); @@ -1058,9 +1158,10 @@ void c2_overworld_basic(void) sub_8072EDC(); } -void sub_8054398(void) +// This CB2 is used when starting +void CB2_OverworldBasic(void) { - c2_overworld_basic(); + OverworldBasic(); } void c2_overworld(void) @@ -1068,7 +1169,7 @@ void c2_overworld(void) int fading = (gPaletteFade.active != 0); if (fading) SetVBlankCallback(NULL); - c2_overworld_basic(); + OverworldBasic(); if (fading) SetFieldVBlankCallback(); } @@ -1085,7 +1186,7 @@ void sub_80543DC(u16 (*a1)(u32)) void sub_80543E8(void) { - if (gFieldCallback) + if (gFieldCallback != NULL) gFieldCallback(); else mapldr_default(); @@ -1265,8 +1366,8 @@ void CB2_ContinueSavedGame(void) FieldClearVBlankHBlankCallbacks(); StopMapMusic(); ResetSafariZoneFlag_(); - sub_805338C(); - sub_8053198(); + LoadSaveblockMapHeader(); + LoadSaveblockMapObjScripts(); UnfreezeMapObjects(); DoTimeBasedEvents(); sub_805308C(); @@ -1317,11 +1418,11 @@ void VBlankCB_Field(void) void sub_8054814(void) { - u8 val = sav1_get_flash_used_on_map(); + u8 val = Overworld_GetFlashLevel(); if (val) { sub_80815E0(val); - sub_80895F8(gUnknown_08216694[0], gUnknown_08216694[1], gUnknown_08216694[2]); + sub_80895F8(gUnknown_08216694); } } @@ -1886,27 +1987,27 @@ void sub_8055280(u16 a1) u16 sub_80552B0(u32 a1) { - if (gMain.heldKeys & 0x40) + if (gMain.heldKeys & DPAD_UP) { return 19; } - else if (gMain.heldKeys & 0x80) + else if (gMain.heldKeys & DPAD_DOWN) { return 18; } - else if (gMain.heldKeys & 0x20) + else if (gMain.heldKeys & DPAD_LEFT) { return 20; } - else if (gMain.heldKeys & 0x10) + else if (gMain.heldKeys & DPAD_RIGHT) { return 21; } - else if (gMain.newKeys & 8) + else if (gMain.newKeys & START_BUTTON) { return 24; } - else if (gMain.newKeys & 1) + else if (gMain.newKeys & A_BUTTON) { return 25; } @@ -2434,27 +2535,27 @@ void sub_8055BFC(u8 linkPlayerId, u8 a2) } } -u8 sub_8055C68(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj, u8 a3) +static u8 sub_8055C68(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj, u8 a3) { return gUnknown_082166AC[a3](linkPlayerMapObj, mapObj, a3); } -u8 sub_8055C88(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj, u8 a3) +static u8 sub_8055C88(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj, u8 a3) { return 1; } -u8 sub_8055C8C(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj, u8 a3) +static u8 sub_8055C8C(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj, u8 a3) { return gUnknown_082166AC[a3](linkPlayerMapObj, mapObj, a3); } -u8 sub_8055CAC(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj, u8 a3) +static u8 sub_8055CAC(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj, u8 a3) { return 0; } -u8 sub_8055CB0(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj, u8 a3) +static u8 sub_8055CB0(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj, u8 a3) { s16 x, y; @@ -2474,18 +2575,18 @@ u8 sub_8055CB0(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *m } } -u8 sub_8055D18(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj, u8 a3) +static u8 sub_8055D18(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj, u8 a3) { mapObj->mapobj_unk_19 = npc_something3(a3, mapObj->mapobj_unk_19); return 0; } -void sub_8055D30(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj) +static void sub_8055D30(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj) { linkPlayerMapObj->mode = 0; } -void sub_8055D38(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj) +static void sub_8055D38(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj) { mapObj->mapobj_unk_21--; linkPlayerMapObj->mode = 1; diff --git a/src/field/party_menu.c b/src/field/party_menu.c new file mode 100644 index 000000000..86ad9ecc9 --- /dev/null +++ b/src/field/party_menu.c @@ -0,0 +1,5651 @@ +#include "global.h" +#include "party_menu.h" +#include "battle.h" +#include "battle_interface.h" +#include "battle_party_menu.h" +#include "choose_party.h" +#include "data2.h" +#include "decompress.h" +#include "event_data.h" +#include "evolution_scene.h" +#include "item.h" +#include "item_use.h" +#include "item_menu.h" +#include "items.h" +#include "mail_data.h" +#include "main.h" +#include "menu.h" +#include "menu_helpers.h" +#include "moves.h" +#include "palette.h" +#include "pokemon.h" +#include "pokemon_icon.h" +#include "pokemon_item_effect.h" +#include "pokemon_menu.h" +#include "pokemon_summary_screen.h" +#include "rom_8077ABC.h" +#include "rom_8094928.h" +#include "script_pokemon_80F9.h" +#include "songs.h" +#include "sound.h" +#include "species.h" +#include "sprite.h" +#include "string_util.h" +#include "strings.h" +#include "task.h" +#include "unknown_task.h" +#include "util.h" + +struct Coords8 +{ + u8 x; + u8 y; +}; + +struct PartyMenuWindowCoords +{ + u8 left; + u8 top; + u8 right; + u8 bottom; +}; + +struct PartyMonTextSettingsStruct +{ + u8 xOffset; + u8 yOffset; + const u16 *oamSettings; +}; + +struct PartyMenuHandlersStruct +{ + /*0x0*/TaskFunc menuHandler; + /*0x4*/bool8 (*menuSetup)(void); + /*0x8*/u8 initialPromptTextId; // element in PartyMenuPromptTexts +}; + +static void nullsub_12(u8 monIndex, struct Pokemon *pokemon); +static void TryPrintPartyMenuMonNickname(u8 monIndex, struct Pokemon *pokemon); +static void PartyMenuTryPrintHP(u8 monIndex, struct Pokemon *pokemon); +static void sub_806D05C(u8 taskId); +static void sub_806D15C(u8 taskId); +static void sub_806D198(u8 taskId); +static void sub_806E884(u8 taskId); +static void sub_8070D90(u8 taskId); +static void sub_806D5B8(u8 taskId); +static void sub_806D014(u8 taskId); +static void sub_806D118(u8 taskId); +static void CB2_InitPartyMenu(void); +static void ReDrawPartyMonBackgrounds(void); +static void sub_806BA94(s16 a, u16 b, u8 c, u8 d); +static void sub_806B9A4(s16 a, u16 b, u8 c); +static void sub_806CA18(u8 taskId, u8 b); +static void ChangeDoubleBattlePartyMenuSelection(u8 spriteId, u8 menuIndex, s8 directionPressed); +static void ChangeDefaultPartyMenuSelection(u8 spriteId, u8 menuIndex, s8 directionPressed); +static void ChangeLinkDoubleBattlePartyMenuSelection(u8 spriteId, u8 menuIndex, s8 directionPressed); +static void UpdateMonIconFrame_806DA0C(struct Sprite *sprite); +static void UpdateMonIconFrame_806DA38(struct Sprite *sprite); +static void UpdateMonIconFrame_806DA44(u8 taskId, u8 monIndex, u8 c); +static u8 sub_806CA00(u8 taskId); +static void SpriteCB_sub_806D37C(struct Sprite *sprite); +static u8 GetMonIconSpriteId(u8 taskId, u8 monIndex); +static void SpriteCB_UpdateHeldItemIconPosition(struct Sprite *sprite); +static void ItemUseMoveMenu_HandleMoveSelection(u8 taskId); +static void ItemUseMoveMenu_HandleCancel(u8 taskId); +static bool8 SetupDefaultPartyMenu(void); +static void sub_806B4A8(void); +static void VBlankCB_PartyMenu(void); +static bool8 LoadPartyMenuGraphics(u8 a); +static void sub_806BF24(const u8 *a, u8 monIndex, u8 c, u8 d); +static void sub_806BB9C(u8 a); +static void sub_806BBEC(u8 a); + +const u16 TMHMMoves[] = { + MOVE_FOCUS_PUNCH, + MOVE_DRAGON_CLAW, + MOVE_WATER_PULSE, + MOVE_CALM_MIND, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_BULK_UP, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_GIGA_DRAIN, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_SOLAR_BEAM, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SLUDGE_BOMB, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_OVERHEAT, + MOVE_CUT, + MOVE_FLY, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, +}; + +//FIXME +//const u8 *unrefTileBuffer = gTileBuffer; +asm(".4byte gTileBuffer\n"); + +static const u8 MenuGfx_HoldIcons[] = INCBIN_U8("graphics/interface/hold_icons.4bpp"); +static const u16 MenuPal_HoldIcons[] = INCBIN_U16("graphics/interface/hold_icons.gbapal"); + +static const struct SpriteSheet HeldItemsSpriteSheet = { + MenuGfx_HoldIcons, + sizeof MenuGfx_HoldIcons, + 0xd750 +}; + +static const struct SpritePalette HeldItemsPalette = { + MenuPal_HoldIcons, + 0xd750 +}; + +static const struct OamData gOamData_83765EC = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 0, + .tileNum = 0, + .priority = 1, + .paletteNum = 0, + .affineParam = 0, +}; + +static const union AnimCmd gSpriteAnim_83765F4[] = { + ANIMCMD_FRAME(0, 1), + ANIMCMD_END +}; + +static const union AnimCmd gSpriteAnim_83765FC[] = { + ANIMCMD_FRAME(1, 1), + ANIMCMD_END +}; + +static const union AnimCmd *const gSpriteAnimTable_8376604[] = { + gSpriteAnim_83765F4, + gSpriteAnim_83765FC, +}; + +static const struct SpriteTemplate gSpriteTemplate_837660C = { + 55120, + 55120, + &gOamData_83765EC, + gSpriteAnimTable_8376604, + NULL, + gDummySpriteAffineAnimTable, + SpriteCB_UpdateHeldItemIconPosition +}; + +// Texts that can be displayed in the bottom of the party menu. +static const u8 *const PartyMenuPromptTexts[] = { + OtherText_ChoosePoke, + OtherText_MovePokeTo, + OtherText_TeachWhat, + OtherText_UseWhat, + OtherText_GiveWhat, + OtherText_DoWhat, + OtherText_NothingToCut, + OtherText_CantSurf, + OtherText_AlreadySurfing, + OtherText_CantUseThatHere, + OtherText_RestoreWhatMove, + OtherText_BoostPP, + gOtherText_CancelWithTerminator, + OtherText_DoWhatWithItem, + OtherText_NoPokeForBattle, + OtherText_ChoosePoke2, + OtherText_NotEnoughHP, + OtherText_ThreePokeNeeded, + OtherText_PokeCantBeSame, + OtherText_NoIdenticalHoldItems, + OtherText_TeachWhichPoke, +}; + +static const struct Coords8 gUnknown_08376678[8][6] = { + {{16, 40}, {104, 18}, {104, 42}, {104, 66}, {104, 90}, {104, 114}}, // PARTY_MENU_TYPE_STANDARD + {{16, 24}, { 16, 80}, {104, 18}, {104, 50}, {104, 82}, {104, 114}}, // PARTY_MENU_TYPE_BATTLE + {{16, 24}, { 16, 80}, {104, 26}, {104, 50}, {104, 82}, {104, 106}}, // PARTY_MENU_TYPE_CONTEST + {{16, 24}, {104, 26}, {104, 50}, { 16, 80}, {104, 82}, {104, 106}}, // PARTY_MENU_TYPE_IN_GAME_TRADE + {{ 5, 4}, { 16, 1}, { 16, 4}, { 16, 7}, { 16, 10}, { 16, 13}}, // PARTY_MENU_TYPE_BATTLE_TOWER + {{ 5, 2}, { 5, 9}, { 16, 1}, { 16, 5}, { 16, 9}, { 16, 13}}, // PARTY_MENU_TYPE_LINK_MULTI_BATTLE + {{ 5, 2}, { 5, 9}, { 16, 2}, { 16, 5}, { 16, 9}, { 16, 12}}, // PARTY_MENU_TYPE_DAYCARE + {{ 5, 2}, { 16, 2}, { 16, 5}, { 5, 9}, { 16, 9}, { 16, 12}}, // PARTY_MENU_TYPE_MOVE_TUTOR +}; + +static const struct Coords8 gUnknown_08376738[12][6] = { + {{6, 5}, {17, 2}, {17, 5}, {17, 8}, {17, 11}, {17, 14}}, + {{6, 3}, { 6, 10}, {17, 2}, {17, 6}, {17, 10}, {17, 14}}, + {{6, 3}, { 6, 10}, {17, 3}, {17, 6}, {17, 10}, {17, 13}}, + {{6, 3}, {17, 3}, {17, 6}, { 6, 10}, {17, 10}, {17, 13}}, + {{3, 7}, {22, 2}, {22, 5}, {22, 8}, {22, 11}, {22, 14}}, + {{3, 5}, { 3, 12}, {22, 2}, {22, 6}, {22, 10}, {22, 14}}, + {{3, 5}, { 3, 12}, {22, 3}, {22, 6}, {22, 10}, {22, 13}}, + {{3, 5}, {22, 3}, {22, 6}, { 3, 12}, {22, 10}, {22, 13}}, + {{7, 7}, {26, 2}, {26, 5}, {26, 8}, {26, 11}, {26, 14}}, + {{7, 5}, { 7, 12}, {26, 2}, {26, 6}, {26, 10}, {26, 14}}, + {{7, 5}, { 7, 12}, {26, 3}, {26, 6}, {26, 10}, {26, 13}}, + {{7, 5}, {26, 3}, {26, 6}, { 7, 12}, {26, 10}, {26, 13}}, +}; + +static u16 *const gUnknown_08376858[4][6] = { + {(u16*)(BG_VRAM + 0xF1C8), (u16*)(BG_VRAM + 0xF0AE), (u16*)(BG_VRAM + 0xF16E), (u16*)(BG_VRAM + 0xF22E), (u16*)(BG_VRAM + 0xF2EE), (u16*)(BG_VRAM + 0xF3AE)}, // PARTY_MENU_STANDARD + {(u16*)(BG_VRAM + 0xF148), (u16*)(BG_VRAM + 0xF308), (u16*)(BG_VRAM + 0xF0AE), (u16*)(BG_VRAM + 0xF1AE), (u16*)(BG_VRAM + 0xF2AE), (u16*)(BG_VRAM + 0xF3AE)}, // PARTY_MENU_LAYOUT_DOUBLE_BATTLE + {(u16*)(BG_VRAM + 0xF148), (u16*)(BG_VRAM + 0xF308), (u16*)(BG_VRAM + 0xF0EE), (u16*)(BG_VRAM + 0xF1AE), (u16*)(BG_VRAM + 0xF2AE), (u16*)(BG_VRAM + 0xF36E)}, // PARTY_MENU_LAYOUT_LINK_DOUBLE_BATTLE + {(u16*)(BG_VRAM + 0xF148), (u16*)(BG_VRAM + 0xF0EE), (u16*)(BG_VRAM + 0xF1AE), (u16*)(BG_VRAM + 0xF308), (u16*)(BG_VRAM + 0xF2AE), (u16*)(BG_VRAM + 0xF36E)}, // PARTY_MENU_LAYOUT_MULTI_BATTLE +}; + +static const struct Coords8 gUnknown_083768B8[3][8] = { + {{8, 44}, {92, 22}, {92, 46}, {92, 70}, {92, 94}, {92, 118}, {196, 136}, {196, 152}}, // PARTY_MENU_LAYOUT_STANDARD + {{8, 28}, { 8, 84}, {92, 22}, {92, 54}, {92, 86}, {92, 118}, {196, 136}, {196, 152}}, // PARTY_MENU_LAYOUT_DOUBLE_BATTLE + {{8, 28}, { 8, 84}, {92, 30}, {92, 54}, {92, 86}, {92, 110}, {196, 136}, {196, 152}}, // PARTY_MENU_LAYOUT_LINK_DOUBLE_BATTLE +}; + +static u16 *const gUnknown_08376918[2][PARTY_SIZE] = { + {(u16*)(BG_VRAM + 0xF1C6), (u16*)(BG_VRAM + 0xF06C), (u16*)(BG_VRAM + 0xF12C), (u16*)(BG_VRAM + 0xF1EC), (u16*)(BG_VRAM + 0xF2AC), (u16*)(BG_VRAM + 0xF36C)}, + {(u16*)(BG_VRAM + 0xF148), (u16*)(BG_VRAM + 0xF308), (u16*)(BG_VRAM + 0xF0AE), (u16*)(BG_VRAM + 0xF1AE), (u16*)(BG_VRAM + 0xF2AE), (u16*)(BG_VRAM + 0xF3AE)}, +}; + +static const struct PartyMenuWindowCoords gUnknown_08376948[2][6] = { + {{2, 4, 10, 9}, {16, 1, 29, 3}, {16, 4, 29, 6}, {16, 7, 29, 9}, {16, 10, 29, 12}, {16, 13, 29, 15}}, + {{2, 2, 10, 7}, { 2, 9, 10, 14}, {16, 1, 29, 3}, {16, 5, 29, 7}, {16, 9, 29, 11}, {16, 13, 29, 15}}, +}; + +static const struct PartyMenuWindowCoords gUnknown_08376978[2][6] = { + {{2, 7, 10, 9}, {21, 1, 29, 3}, {21, 4, 29, 6}, {21, 7, 29, 9}, {21, 10, 29, 12}, {21, 13, 29, 15}}, + {{2, 2, 10, 7}, { 2, 9, 10, 14}, {16, 1, 29, 3}, {16, 5, 29, 7}, {16, 9, 29, 11}, {16, 13, 29, 15}}, +}; + +// This is actually a 2x6x2 array, but the code reads it as a flat array. +static const u8 gUnknown_083769A8[] = { + 0, 3, 11, 1, 11, 4, 11, 7, 11, 10, 11, 13, + 0, 1, 0, 8, 11, 1, 11, 5, 11, 9, 11, 13, // Double battle +}; + +// This is actually a 2x6x2 array, but the code reads it as a flat array. +//FIXME: sub_806B908() accesses this data via gUnknown_083769A8 (directly above this). This means these +// two arrays might be a struct, rather than separate arrays. +static const u8 gUnknown_083769C0[] = { + 0, 1, 0, 8, 11, 2, 11, 5, 11, 9, 11, 12, + 0, 1, 0, 8, 11, 2, 11, 5, 11, 9, 11, 12, // Double battle +}; + +static const u8 gUnknown_083769D8[] = { + 0x24,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x27, + 0x34,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x37, + 0x34,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x37, + 0x34,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x37, + 0x44,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x47, + 0x44,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x47, + 0x54,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x57, +}; + +static const u8 gUnknown_08376A25[] = { + 0x50,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x53, + 0x60,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x63, + 0x70,0x71,0x71,0x71,0x71,0x71,0x71,0x71,0x71,0x71,0x71,0x71,0x71,0x71,0x71,0x71,0x71,0x71,0x73, +}; + +static const u8 gUnknown_08376A5E[] = { + 0x20,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x23, + 0x30,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x33, + 0x40,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x43, +}; + +static const u8 gUnusedData_08376A97[] = { + 0x0C,0x0D,0x0E,0x0F,0x00,0x01,0x02,0x03,0x04,0x05,0x0F, + 0x10,0x11,0x12,0x13,0x14,0x15,0x0F,0x06,0x05,0x01,0x07, + 0x08,0x09,0x0F,0x16,0x15,0x11,0x17,0x18,0x19,0x0F,0x09, + 0x0A,0x0B,0x05,0x0C,0x0F,0x0F,0x19,0x1A,0x1B,0x15,0x1C, + 0x0F,0x0F,0x0D,0x0B,0x05,0x0C,0x0F,0x0F,0x0F,0x1D,0x1B, + 0x15,0x1C,0x0F,0x0F,0x0F,0x06,0x05,0x0B,0x05,0x0C,0x0F, + 0x0F,0x16,0x15,0x1B,0x15,0x1C,0x0F,0x0F,0x0F,0x0F,0x20, + 0x0C,0x09,0x0F,0x0F,0x0F,0x1F,0x30,0x1C,0x19,0x0F,0x0F, + 0x0F,0x25,0x0F,0x22,0x24,0x0F,0x0F,0x0F,0x35,0x41,0x32, + 0x34,0x0F,0x0F,0x0F,0x26,0x0F,0x23,0x0E,0x0F,0x0F,0x0F, + 0x36,0x43,0x33,0x1E,0x0F,0x0F,0x27,0x28,0x29,0x03,0x2A, + 0x0F,0x0F,0x37,0x38,0x39,0x13,0x3A,0x0F,0x0F,0x27,0x28, + 0x29,0x03,0x04,0x05,0x0F,0x37,0x38,0x39,0x13,0x14,0x15, + 0x0F,0x2B,0x2C,0x02,0x28,0x29,0x2D,0x21,0x3B,0x3C,0x12, + 0x38,0x39,0x3D,0x31,0x2B,0x2C,0x02,0x28,0x29,0x08,0x09, + 0x3B,0x3C,0x12,0x38,0x39,0x18,0x19,0x2E,0x2F,0x2B,0x2C, + 0x02,0x27,0x2D,0x3E,0x3F,0x3B,0x3C,0x12,0x45,0x3D, +}; + +static const TaskFunc gUnknown_08376B54[] = { + ItemUseMoveMenu_HandleMoveSelection, + ItemUseMoveMenu_HandleCancel, +}; + +#define PartyMonOAMSettings(x, y, palette, shape, size, priority, tileOffset) \ + ((shape) << 14) | (y), \ + ((size) << 14) | (x), \ + ((palette) << 12) | ((priority) << 10) | (tileOffset) + +static const u16 PartyMonOAMSettings_LeftColumn[] = { + PartyMonOAMSettings(24, 0, 15, ST_OAM_H_RECTANGLE, 1, 1, 0), + PartyMonOAMSettings(56, 0, 15, ST_OAM_H_RECTANGLE, 1, 1, 4), + PartyMonOAMSettings(24, 8, 15, ST_OAM_H_RECTANGLE, 1, 1, 8), + PartyMonOAMSettings(56, 8, 15, ST_OAM_H_RECTANGLE, 1, 1, 12), + PartyMonOAMSettings(32, 16, 15, ST_OAM_H_RECTANGLE, 1, 1, 16), + PartyMonOAMSettings(37, 32, 15, ST_OAM_H_RECTANGLE, 1, 1, 24), + PartyMonOAMSettings(69, 32, 15, ST_OAM_H_RECTANGLE, 1, 1, 28), + 0xFFFF, +}; + +static const u16 PartyMonOAMSettings_RightColumn[] = { + PartyMonOAMSettings( 24, 0, 15, ST_OAM_H_RECTANGLE, 1, 1, 0), + PartyMonOAMSettings( 56, 0, 15, ST_OAM_H_RECTANGLE, 1, 1, 4), + PartyMonOAMSettings( 24, 8, 15, ST_OAM_H_RECTANGLE, 1, 1, 8), + PartyMonOAMSettings( 56, 8, 15, ST_OAM_H_RECTANGLE, 1, 1, 12), + PartyMonOAMSettings( 32, 16, 15, ST_OAM_H_RECTANGLE, 1, 1, 16), + PartyMonOAMSettings(101, 16, 15, ST_OAM_H_RECTANGLE, 1, 1, 24), + PartyMonOAMSettings(133, 16, 15, ST_OAM_H_RECTANGLE, 1, 1, 28), + 0xFFFF, +}; + +// Controls where and how the mons' text appears in the party menu screen (nickname, HP, and level). +static struct PartyMonTextSettingsStruct const PartyMonTextSettings[4][6] = { + { // PARTY_MENU_LAYOUT_STANDARD + { 1, 4, PartyMonOAMSettings_LeftColumn}, + {12, 1, PartyMonOAMSettings_RightColumn}, + {12, 4, PartyMonOAMSettings_RightColumn}, + {12, 7, PartyMonOAMSettings_RightColumn}, + {12, 10, PartyMonOAMSettings_RightColumn}, + {12, 13, PartyMonOAMSettings_RightColumn}, + }, + { // PARTY_MENU_LAYOUT_DOUBLE_BATTLE + { 1, 2, PartyMonOAMSettings_LeftColumn}, + { 1, 9, PartyMonOAMSettings_LeftColumn}, + {12, 1, PartyMonOAMSettings_RightColumn}, + {12, 5, PartyMonOAMSettings_RightColumn}, + {12, 9, PartyMonOAMSettings_RightColumn}, + {12, 13, PartyMonOAMSettings_RightColumn}, + }, + { // PARTY_MENU_LAYOUT_LINK_DOUBLE_BATTLE + { 1, 2, PartyMonOAMSettings_LeftColumn}, + { 1, 9, PartyMonOAMSettings_LeftColumn}, + {12, 2, PartyMonOAMSettings_RightColumn}, + {12, 5, PartyMonOAMSettings_RightColumn}, + {12, 9, PartyMonOAMSettings_RightColumn}, + {12, 12, PartyMonOAMSettings_RightColumn}, + }, + { // PARTY_MENU_LAYOUT_MULTI_BATTLE + { 1, 2, PartyMonOAMSettings_LeftColumn}, + {12, 2, PartyMonOAMSettings_RightColumn}, + {12, 5, PartyMonOAMSettings_RightColumn}, + { 1, 9, PartyMonOAMSettings_LeftColumn}, + {12, 9, PartyMonOAMSettings_RightColumn}, + {12, 12, PartyMonOAMSettings_RightColumn}, + }, +}; + +static const struct PartyMenuHandlersStruct PartyMenuHandlers[] = { + {HandleDefaultPartyMenu, SetupDefaultPartyMenu, 0}, // PARTY_MENU_TYPE_STANDARD + {HandleBattlePartyMenu, SetUpBattlePartyMenu, 0}, // PARTY_MENU_TYPE_BATTLE + {HandleSelectPartyMenu, SetupContestPartyMenu, 0}, // PARTY_MENU_TYPE_CONTEST + {HandleSelectPartyMenu, SetupDefaultPartyMenu, 0}, // PARTY_MENU_TYPE_IN_GAME_TRADE + {HandleBattleTowerPartyMenu, SetupBattleTowerPartyMenu, 0}, // PARTY_MENU_TYPE_BATTLE_TOWER + {HandleLinkMultiBattlePartyMenu, SetupLinkMultiBattlePartyMenu, 0xFF}, // PARTY_MENU_TYPE_LINK_MULTI_BATTLE + {HandleDaycarePartyMenu, SetupDefaultPartyMenu, 0x0F}, // PARTY_MENU_TYPE_DAYCARE + {HandleMoveTutorPartyMenu, SetupMoveTutorPartyMenu, 0}, // PARTY_MENU_TYPE_MOVE_TUTOR +}; + +static const u16 gUnknown_08376CD4[] = { + 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F, + 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F, +}; + +static const u16 gUnknown_08376CEC[] = { + 0x2A, 0x0B, 0x0C, 0x0D, 0x0E, 0x2F, + 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, +}; + +static const u8 *const StatNames[] = { + gOtherText_HP, + gOtherText_Attack, + gOtherText_Defense, + gOtherText_SpAtk, + gOtherText_SpDef, + gOtherText_Speed, +}; + +static const u8 StatDataTypes[] = { + MON_DATA_MAX_HP, + MON_DATA_ATK, + MON_DATA_DEF, + MON_DATA_SPATK, + MON_DATA_SPDEF, + MON_DATA_SPD, +}; + +struct Unk201C000 +{ + /*0x00*/ struct Pokemon *pokemon; + /*0x04*/ u8 unk4; + /*0x05*/ u8 unk5; + /*0x06*/ u16 unk6; + /*0x08*/ u16 unk8; + /*0x0A*/ u8 pad_0A[2]; + /*0x0C*/ s32 unkC; + /*0x10*/ TaskFunc unk10; + /*0x14*/ TaskFunc unk14; +}; + +struct Unk201FE00 +{ + u8 unkE00; // not sure if this is an array or struct, or how big it is + u8 unkE01; + u8 unkE02; +}; + +#define ewram1C000 (*(struct Unk201C000 *)(ewram + 0x1C000)) +#define ewram1FE00 (*(struct Unk201FE00 *)(ewram + 0x1FE00)) + +extern u16 gBattleTypeFlags; +extern u8 gTileBuffer[]; +extern u8 gUnknown_0202E8F4; +extern u8 gUnknown_0202E8F6; +extern u16 gUnknown_0202E8F8; +extern u8 gPartyMenuType; +extern u8 gLastFieldPokeMenuOpened; +extern u8 gPlayerPartyCount; +extern s32 gBattleMoveDamage; +extern u16 gMoveToLearn; + +extern u16 gUnknown_08E9A300[]; +extern struct Coords8 const gUnknown_08376738[12][6]; +extern const u8 gUnknown_083769C0[]; +extern u8 gUnknown_02039460[]; +extern struct Window gUnknown_03004210; + +extern const u8 gPartyMenuMisc_Gfx[]; +extern const u8 gPartyMenuMisc_Tilemap[]; +extern const u8 gPartyMenuMisc_Pal[]; +extern const u8 gFontDefaultPalette[]; +extern const u8 gPartyMenuHpBar_Gfx[]; +extern const u8 gPartyMenuOrderText_Gfx[]; +extern const u8 gStatusGfx_Icons[]; +extern const u8 gStatusPal_Icons[]; + +#if ENGLISH +#define WINDOW_LEFT (3) +#define WINDOW_RIGHT (26) +#elif GERMAN +#define WINDOW_LEFT (0) +#define WINDOW_RIGHT (29) +#endif + + +#ifdef NONMATCHING +// Main handler for the party menu. +void CB2_PartyMenuMain(void) +{ + const struct PartyMonTextSettingsStruct *textSettings; + s32 i; + + AnimateSprites(); + BuildOamBuffer(); + + textSettings = PartyMonTextSettings[gPartyMenuType]; + for (i = 0; i < PARTY_SIZE; i++) + { + // Draw mon name, level, and hp sprites + DrawPartyMenuMonText( + textSettings[i].xOffset * 8, + textSettings[i].yOffset * 8, + textSettings[i].oamSettings, + 0, + (i << 5) | 0x200); + } + + RunTasks(); + UpdatePaletteFade(); +} +#else +__attribute__((naked)) +void CB2_PartyMenuMain(void) +{ + asm(".syntax unified\n\ + push {r4-r6,lr}\n\ + sub sp, 0x4\n\ + bl AnimateSprites\n\ + bl BuildOamBuffer\n\ + ldr r0, _0806AF2C @ =gPartyMenuType\n\ + ldrb r1, [r0]\n\ + lsls r0, r1, 1\n\ + adds r0, r1\n\ + lsls r0, 4\n\ + ldr r1, _0806AF30 @ =PartyMonTextSettings\n\ + adds r5, r0, r1\n\ + movs r6, 0\n\ +_0806AEF8:\n\ + ldrb r0, [r5]\n\ + lsls r0, 3\n\ + ldrb r1, [r5, 0x1]\n\ + lsls r1, 3\n\ + ldr r2, [r5, 0x4]\n\ + lsls r3, r6, 5\n\ + movs r4, 0x80\n\ + lsls r4, 2\n\ + orrs r3, r4\n\ + str r3, [sp]\n\ + movs r3, 0\n\ + bl DrawPartyMenuMonText\n\ + adds r5, 0x8\n\ + adds r6, 0x1\n\ + cmp r6, 0x5\n\ + ble _0806AEF8\n\ + bl RunTasks\n\ + bl UpdatePaletteFade\n\ + add sp, 0x4\n\ + pop {r4-r6}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_0806AF2C: .4byte gPartyMenuType\n\ +_0806AF30: .4byte PartyMonTextSettings\n\ + .syntax divided\n"); +} +#endif // NONMATCHING + +void VBlankCB_PartyMenu(void) +{ + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); + ReDrawPartyMonBackgrounds(); +} + +void SetPartyMenuSettings(u8 menuType, u8 battleTypeFlags, TaskFunc menuHandlerFunc, u8 textId) +{ + if (battleTypeFlags != 0xFF) + { + gBattleTypeFlags = battleTypeFlags; + } + + ewram1B000.menuType = menuType; + ewram1B000.menuHandler = menuHandlerFunc; + ewram1B000.promptTextId = textId; +} + +void DoOpenPartyMenu(u8 menuType, u8 battleFlags, TaskFunc menuHandlerFunc, u8 textId) +{ + SetPartyMenuSettings(menuType, battleFlags, menuHandlerFunc, textId); + SetMainCallback2(CB2_InitPartyMenu); +} + +void OpenPartyMenu(u8 menuType, u8 battleFlags) +{ + DoOpenPartyMenu(menuType, battleFlags, PartyMenuHandlers[menuType].menuHandler, PartyMenuHandlers[menuType].initialPromptTextId); +} + +// This is a Task which is repeatedly called until it eventually returns TRUE when finished. +bool8 SetupDefaultPartyMenu(void) +{ + switch (ewram1B000_alt.setupState) + { + case 0: + if (ewram1B000_alt.monIndex < gPlayerPartyCount) { + TryCreatePartyMenuMonIcon(ewram1B000_alt.menuHandlerTaskId, ewram1B000_alt.monIndex, &gPlayerParty[ewram1B000_alt.monIndex]); + ewram1B000_alt.monIndex++; + } else { + ewram1B000_alt.monIndex = 0; + ewram1B000_alt.setupState++; + } + + break; + case 1: + LoadHeldItemIconGraphics(); + ewram1B000_alt.setupState++; + break; + case 2: + CreateHeldItemIcons_806DC34(ewram1B000_alt.menuHandlerTaskId); + ewram1B000_alt.setupState++; + break; + case 3: + if (sub_806BD58(ewram1B000_alt.menuHandlerTaskId, ewram1B000_alt.monIndex) != 1) + { + ewram1B000_alt.monIndex++; + } + else + { + ewram1B000_alt.monIndex = 0; + ewram1B000_alt.setupState++; + } + + break; + case 4: + PartyMenuPrintMonsLevelOrStatus(); + ewram1B000_alt.setupState++; + break; + case 5: + PrintPartyMenuMonNicknames(); + ewram1B000_alt.setupState++; + break; + case 6: + PartyMenuTryPrintMonsHP(); + ewram1B000_alt.setupState++; + break; + case 7: + nullsub_13(); + ewram1B000_alt.setupState++; + break; + case 8: + PartyMenuDrawHPBars(); + ewram1B000_alt.setupState++; + break; + case 9: + if (DrawPartyMonBackground(ewram1B000_alt.monIndex) == 1) + { + ewram1B000_alt.monIndex = 0; + ewram1B000_alt.setupState = 0; + return TRUE; + } + else + { + ewram1B000_alt.monIndex++; + break; + } + } + + return FALSE; +} + +bool8 InitPartyMenu(void) +{ + u8 *addr; + u32 size; + + switch (gMain.state) + { + case 0: + SetVBlankCallback(NULL); + addr = (u8 *)VRAM; + size = VRAM_SIZE; + while (1) + { + DmaFill16(3, 0, addr, 0x1000); + addr += 0x1000; + size -= 0x1000; + if (size <= 0x1000) + { + DmaFill16(3, 0, addr, size); + break; + } + } + + DmaClear32(3, OAM, OAM_SIZE); + DmaClear16(3, PLTT, PLTT_SIZE); + + gPaletteFade.bufferTransferDisabled = 1; + gMain.state++; + break; + case 1: + remove_some_task(); + gMain.state++; + break; + case 2: + sub_806B4A8(); + ewram1B000_alt.setupState = 0; + ewram1B000_alt.monIndex = 0; + ewram1B000_alt.unk268 = 0; + gMain.state++; + break; + case 3: + ResetSpriteData(); + gMain.state++; + break; + case 4: + if (ewram1B000.menuType != PARTY_MENU_TYPE_BATTLE && ewram1B000.menuType != PARTY_MENU_TYPE_LINK_MULTI_BATTLE) + { + ResetTasks(); + } + + gMain.state++; + break; + case 5: + FreeAllSpritePalettes(); + gMain.state++; + break; + case 6: + ewram1B000.menuHandlerTaskId = CreateTask(ewram1B000.menuHandler, 0); + gMain.state++; + break; + case 7: + SetUpWindowConfig(&gWindowConfig_81E6C90); + gMain.state++; + break; + case 8: + InitWindowFromConfig(&gUnknown_03004210, &gWindowConfig_81E6C90); + MultistepInitWindowTileData(&gUnknown_03004210, 1); + gMain.state++; + break; + case 9: + if (MultistepLoadFont()) + { + ewram1B000_alt.setupState = 1; + gMain.state++; + } + break; + case 10: + if (LoadPartyMenuGraphics(ewram1B000_alt.setupState) == TRUE) + { + ewram1B000_alt.setupState = 0; + gMain.state++; + } + else + { + ewram1B000_alt.setupState++; + } + break; + case 11: + sub_809D51C(); + gMain.state++; + break; + case 12: + if (PartyMenuHandlers[ewram1B000.menuType].menuSetup() == TRUE) + { + gMain.state++; + } + break; + case 13: + MultistepInitMenuWindowBegin(&gWindowConfig_81E6CC8); + gMain.state++; + break; + case 14: + if (MultistepInitMenuWindowContinue()) + { + gMain.state++; + } + break; + case 15: + PrintPartyMenuPromptText(ewram1B000.promptTextId, 0); + gMain.state++; + break; + case 16: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0); + gPaletteFade.bufferTransferDisabled = 0; + gMain.state++; + break; + case 17: + SetVBlankCallback(VBlankCB_PartyMenu); + return TRUE; + } + + return FALSE; +} + +void CB2_InitPartyMenu(void) +{ + while (InitPartyMenu() != TRUE) + { + if (sub_80F9344() == TRUE) + { + return; + } + } + + if (ewram1B000.menuType != PARTY_MENU_TYPE_LINK_MULTI_BATTLE) + { + ChangePartyMenuSelection(ewram1B000.menuHandlerTaskId, 0); + } + + SetMainCallback2(CB2_PartyMenuMain); +} + +void sub_806B4A8(void) +{ + SetHBlankCallback(NULL); + REG_DISPCNT = 8000; + REG_BG0CNT = 0x1E05; + REG_BG1CNT = 0x703; + REG_BG2CNT = 0xF08; + REG_BG3CNT = 0x602; + REG_BLDCNT = 0; + REG_BG0HOFS = 0; + REG_BG0VOFS = 0; + REG_BG1HOFS = 0; + REG_BG1VOFS = 0; + REG_BG2HOFS = 0; + REG_BG2VOFS = 0; + REG_BG3HOFS = 0; + REG_BG3VOFS = 0; + REG_BG3VOFS = -1; +} + +bool8 IsLinkDoubleBattle() +{ + if ((gBattleTypeFlags & BATTLE_TYPE_LINK_DOUBLE) == BATTLE_TYPE_LINK_DOUBLE) + return TRUE; + else + return FALSE; +} + +// Draws the blue rectangular regions surrounding each of the party mons. +void ReDrawPartyMonBackgrounds(void) +{ + if (ewram1B000.unk261) + { + const void *src = gBGTilemapBuffers[2]; + void *dest = (void *)(BG_VRAM + 0x3000); + DmaCopy16(3, src, dest, 0x800); + + if (ewram1B000.unk261 == 2) + { + ewram1B000.unk261 = 0; + } + } +} + +bool8 DrawPartyMonBackground(u8 monIndex) +{ + const u8 *arr; + + if (!IsDoubleBattle()) + gPartyMenuType = PARTY_MENU_LAYOUT_STANDARD; + else if (IsLinkDoubleBattle() == TRUE) + gPartyMenuType = PARTY_MENU_LAYOUT_LINK_DOUBLE_BATTLE; + else + gPartyMenuType = PARTY_MENU_LAYOUT_DOUBLE_BATTLE; + + arr = &gUnknown_083769A8[gPartyMenuType * 12]; + + switch (monIndex) + { + case 0: + memset(&gBGTilemapBuffers[2], 0, 0x800); + break; + case 1: + sub_806B9A4(arr[0], arr[1], 3); + sub_806BF24(&arr[0], 0, 3, 0); + break; + case 2: + if (!IsDoubleBattle()) { + if (gPlayerPartyCount > 1) { + sub_806BA94(arr[2], arr[3], 0, 3); + sub_806BF24(&arr[2], 1, 3, 0); + } else { + sub_806BA94(arr[2], arr[3], 1, 3); + } + } else if (IsLinkDoubleBattle() == TRUE) { + sub_806B9A4(arr[2], arr[3], 4); + sub_806BF24(&arr[2], 1, 4, 0); + } else { + sub_806B9A4(arr[2], arr[3], 3); + sub_806BF24(&arr[2], 1, 3, 0); + } + + break; + case 3: + if (!IsDoubleBattle()) { + if (gPlayerPartyCount > 2) { + sub_806BA94(arr[4], arr[5], 0, 3); + sub_806BF24(&arr[4], 2, 3, 0); + } else { + sub_806BA94(arr[4], arr[5], 1, 3); + } + } else if (IsLinkDoubleBattle() == TRUE) { + if (GetMonData(&gPlayerParty[2], MON_DATA_SPECIES)) { + sub_806BA94(arr[4], arr[5], 0, 3); + sub_806BF24(&arr[4], 2, 3, 0); + } else { + sub_806BA94(arr[4], arr[5], 1, 3); + } + } else if (gPlayerPartyCount > 2) { + sub_806BA94(arr[4], arr[5], 0, 3); + sub_806BF24(&arr[4], 2, 3, 0); + } else { + sub_806BA94(arr[4], arr[5], 1, 3); + } + + break; + case 4: + if (!IsDoubleBattle()) { + if (gPlayerPartyCount > 3) { + sub_806BA94(arr[6], arr[7], 0, 3); + sub_806BF24(&arr[6], 3, 3, 0); + } else { + sub_806BA94(arr[6], arr[7], 1, 3); + } + } else if (IsLinkDoubleBattle() == TRUE) { + if (GetMonData(&gPlayerParty[3], MON_DATA_SPECIES)) { + sub_806BA94(arr[6], arr[7], 0, 3); + sub_806BF24(&arr[6], 3, 3, 0); + } else { + sub_806BA94(arr[6], arr[7], 1, 3); + } + } else if (gPlayerPartyCount > 3) { + sub_806BA94(arr[6], arr[7], 0, 3); + sub_806BF24(&arr[6], 3, 3, 0); + } else { + sub_806BA94(arr[6], arr[7], 1, 3); + } + + break; + case 5: + if (!IsDoubleBattle()) { + if (gPlayerPartyCount > 4) { + sub_806BA94(arr[8], arr[9], 0, 3); + sub_806BF24(&arr[8], 4, 3, 0); + } else { + sub_806BA94(arr[8], arr[9], 1, 3); + } + } else if (IsLinkDoubleBattle() == TRUE) { + if (GetMonData(&gPlayerParty[4], MON_DATA_SPECIES)) { + sub_806BA94(arr[8], arr[9], 0, 4); + sub_806BF24(&arr[8], 4, 4, 0); + } else { + sub_806BA94(arr[8], arr[9], 1, 4); + } + } else if (gPlayerPartyCount > 4) { + sub_806BA94(arr[8], arr[9], 0, 3); + sub_806BF24(&arr[8], 4, 3, 0); + } else { + sub_806BA94(arr[8], arr[9], 1, 3); + } + + break; + case 6: + if (!IsDoubleBattle()) { + if (gPlayerPartyCount > 5) { + sub_806BA94(arr[10], arr[11], 0, 3); + sub_806BF24(&arr[10], 5, 3, 0); + } else { + sub_806BA94(arr[10], arr[11], 1, 3); + } + } else if (IsLinkDoubleBattle() == TRUE) { + if (GetMonData(&gPlayerParty[5], MON_DATA_SPECIES)) { + sub_806BA94(arr[10], arr[11], 0, 4); + sub_806BF24(&arr[10], 5, 4, 0); + } else { + sub_806BA94(arr[10], arr[11], 1, 4); + } + } else if (gPlayerPartyCount > 5) { + sub_806BA94(arr[10], arr[11], 0, 3); + sub_806BF24(&arr[10], 5, 3, 0); + } else { + sub_806BA94(arr[10], arr[11], 1, 3); + } + + break; + case 7: + if (ewram1B000.menuType == PARTY_MENU_TYPE_BATTLE_TOWER) { + sub_806BB9C(1); + } + + sub_806BBEC(1); + break; + case 8: + ewram1B000.unk261 = 2; + return TRUE; + } + + return FALSE; +} + +#ifdef NONMATCHING +void sub_806B908(void) +{ + memset(&gBGTilemapBuffers[2], 0, 0x800); + gPartyMenuType = PARTY_MENU_LAYOUT_MULTI_BATTLE; + sub_806B9A4(gUnknown_083769C0[12], gUnknown_083769C0[13], 3); + + if (GetMonData(&gPlayerParty[1], MON_DATA_SPECIES)) + sub_806BA94(gUnknown_083769C0[16], gUnknown_083769C0[17], 0, 3); + else + sub_806BA94(gUnknown_083769C0[16], gUnknown_083769C0[17], 1, 3); + + if (GetMonData(&gPlayerParty[2], MON_DATA_SPECIES)) + sub_806BA94(gUnknown_083769C0[18], gUnknown_083769C0[19], 0, 3); + else + sub_806BA94(gUnknown_083769C0[18], gUnknown_083769C0[19], 1, 3); + + ewram1B000.unk261 = 2; +} +#else +__attribute__((naked)) +void sub_806B908(void) +{ + asm(".syntax unified\n\ + push {r4,r5,lr}\n\ + ldr r0, _0806B948 @ =gBGTilemapBuffers + 0x1000\n\ + movs r2, 0x80\n\ + lsls r2, 4\n\ + movs r1, 0\n\ + bl memset\n\ + ldr r1, _0806B94C @ =gPartyMenuType\n\ + movs r0, 0x3\n\ + strb r0, [r1]\n\ + ldr r0, _0806B950 @ =gUnknown_083769A8\n\ + adds r4, r0, 0\n\ + adds r4, 0x24\n\ + ldr r5, _0806B954 @ =gPlayerParty + 1 * 0x64\n\ + ldrb r0, [r4]\n\ + ldrb r1, [r4, 0x1]\n\ + movs r2, 0x3\n\ + bl sub_806B9A4\n\ + adds r0, r5, 0\n\ + movs r1, 0xB\n\ + bl GetMonData\n\ + cmp r0, 0\n\ + beq _0806B958\n\ + ldrb r0, [r4, 0x4]\n\ + ldrb r1, [r4, 0x5]\n\ + movs r2, 0\n\ + movs r3, 0x3\n\ + bl sub_806BA94\n\ + b _0806B964\n\ + .align 2, 0\n\ +_0806B948: .4byte gBGTilemapBuffers + 0x1000\n\ +_0806B94C: .4byte gPartyMenuType\n\ +_0806B950: .4byte gUnknown_083769A8\n\ +_0806B954: .4byte gPlayerParty + 1 * 0x64\n\ +_0806B958:\n\ + ldrb r0, [r4, 0x4]\n\ + ldrb r1, [r4, 0x5]\n\ + movs r2, 0x1\n\ + movs r3, 0x3\n\ + bl sub_806BA94\n\ +_0806B964:\n\ + adds r0, r5, 0\n\ + adds r0, 0x64\n\ + movs r1, 0xB\n\ + bl GetMonData\n\ + cmp r0, 0\n\ + beq _0806B980\n\ + ldrb r0, [r4, 0x6]\n\ + ldrb r1, [r4, 0x7]\n\ + movs r2, 0\n\ + movs r3, 0x3\n\ + bl sub_806BA94\n\ + b _0806B98C\n\ +_0806B980:\n\ + ldrb r0, [r4, 0x6]\n\ + ldrb r1, [r4, 0x7]\n\ + movs r2, 0x1\n\ + movs r3, 0x3\n\ + bl sub_806BA94\n\ +_0806B98C:\n\ + ldr r0, _0806B99C @ =0x0201b000\n\ + ldr r1, _0806B9A0 @ =0x00000261\n\ + adds r0, r1\n\ + movs r1, 0x2\n\ + strb r1, [r0]\n\ + pop {r4,r5}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_0806B99C: .4byte 0x0201b000\n\ +_0806B9A0: .4byte 0x00000261\n\ + .syntax divided\n"); +} +#endif // NONMATCHING + +void sub_806B9A4(s16 a, u16 b, u8 c) +{ + u8 i; + u16 var1 = b * 32; + + for (i = 0; i <= 6; i++) + { + u8 j = 0; + + if (a <= 0x1F) + { + for (; j <= 10 && a + j <= 0x1F; j++) + { + if (a + j >= 0) + { + gBGTilemapBuffers[2][var1 + (i * 32) + (a + j)] = (c << 12) | gUnknown_083769D8[i * 11 + j]; + } + } + } + } +} + +void sub_806BA34(s16 a, u16 b) +{ + u8 i; + u16 var1 = b * 32; + + for (i = 0; i <= 6; i++) + { + u8 j = 0; + + if (a <= 0x1F) + { + for (; j <= 10 && a + j <= 0x1F; j++) + { + if (a + j >= 0) + { + gBGTilemapBuffers[2][var1 + (i * 32) + (a + j)] = 0; + } + } + } + } +} + +void sub_806BA94(s16 a, u16 b, u8 c, u8 d) +{ + u8 i; + const u8 *arr; + u16 var1; + + arr = gUnknown_08376A5E; + if (c == 0) + { + arr = gUnknown_08376A25; + } + + var1 = b * 32; + + + for (i = 0; i < 3; i++) + { + u8 j = 0; + + if (a <= 0x1F) + { + while (j <= 0x12 && a + j <= 0x1F) + { + if (a + j >= 0) + { + gBGTilemapBuffers[2][var1 + (i * 32) + (a + j)] = (d << 12) | arr[i * 19 + j]; + } + + j++; + } + } + } +} + +void sub_806BB3C(s16 a, u16 b) +{ + u8 i; + u16 var1 = (b * 32); + + for (i = 0; i < 3; i++) + { + u8 j = 0; + + if (a <= 0x1F) + { + for (; j <= 0x12 && a + j <= 0x1F; j++) + { + if (a + j >= 0) + { + gBGTilemapBuffers[2][var1 + (i * 32) + (a + j)] = 0; + } + } + } + } +} + +void sub_806BB9C(u8 a) +{ + u8 i; + u16 *vramPtr; + const u16 arr[12]; + + memcpy(&arr, gUnknown_08376CD4, sizeof gUnknown_08376CD4); + + vramPtr = (u16 *)(BG_VRAM + 0x3C30); + for (i = 0; i < PARTY_SIZE; i++) + { + vramPtr[i] = arr[i] + (a << 12); + vramPtr[i + 0x20] = arr[i + PARTY_SIZE] + (a << 12); + } +} + +void sub_806BBEC(u8 a) +{ + u8 i; + u16 *vramPtr; + const u16 arr[12]; + + memcpy(&arr, gUnknown_08376CEC, sizeof gUnknown_08376CEC); + + vramPtr = (u16 *)(BG_VRAM + 0x3CB0); + for (i = 0; i < PARTY_SIZE; i++) + { + vramPtr[i] = arr[i] + (a << 12); + vramPtr[i + 0x20] = arr[i + PARTY_SIZE] + (a << 12); + } +} + +#ifdef NONMATCHING +// The original THUMB is preserving r8 for seemingly no reason. Unsure how to match. +void sub_806BC3C(u8 monIndex, u8 b) +{ + u16 *vramPtr = gUnknown_08376918[IsDoubleBattle()][monIndex]; + u8 i; + u16 var1; + + for (i = 0, var1 = (b / 7) * 32; i <= PARTY_SIZE; i++) + { + u32 offset = i + var1; + vramPtr[i] = gUnknown_08E9A300[offset] + 0x10C; + vramPtr[i + 0x20] = gUnknown_08E9A300[offset + 0x20] + 0x10C; + } +} +#else +__attribute__((naked)) +void sub_806BC3C(u8 monIndex, u8 b) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r8\n\ + push {r7}\n\ + adds r4, r0, 0\n\ + adds r5, r1, 0\n\ + lsls r4, 24\n\ + lsrs r4, 24\n\ + lsls r5, 24\n\ + lsrs r5, 24\n\ + ldr r6, _0806BCB0 @ =gUnknown_08376918\n\ + bl IsDoubleBattle\n\ + lsls r4, 2\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + lsls r1, r0, 1\n\ + adds r1, r0\n\ + lsls r1, 3\n\ + adds r4, r1\n\ + adds r4, r6\n\ + ldr r7, [r4]\n\ + movs r6, 0\n\ + adds r0, r5, 0\n\ + movs r1, 0x7\n\ + bl __udivsi3\n\ + lsls r0, 24\n\ + lsrs r4, r0, 19\n\ + ldr r5, _0806BCB4 @ =gUnknown_08E9A300\n\ + movs r0, 0x86\n\ + lsls r0, 1\n\ + adds r3, r0, 0\n\ +_0806BC7C:\n\ + adds r1, r6, r4\n\ + lsls r2, r6, 1\n\ + adds r2, r7\n\ + lsls r0, r1, 1\n\ + adds r0, r5\n\ + ldrh r0, [r0]\n\ + adds r0, r3, r0\n\ + strh r0, [r2]\n\ + adds r2, 0x40\n\ + adds r1, 0x20\n\ + lsls r1, 1\n\ + adds r1, r5\n\ + ldrh r1, [r1]\n\ + adds r0, r3, r1\n\ + strh r0, [r2]\n\ + adds r0, r6, 0x1\n\ + lsls r0, 24\n\ + lsrs r6, r0, 24\n\ + cmp r6, 0x6\n\ + bls _0806BC7C\n\ + pop {r3}\n\ + mov r8, r3\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_0806BCB0: .4byte gUnknown_08376918\n\ +_0806BCB4: .4byte gUnknown_08E9A300\n\ + .syntax divided\n"); +} +#endif // NONMATCHING + +void unref_sub_806BCB8(u8 a) +{ + u8 i; + + for (i = 0; i < gPlayerPartyCount; i++) + { + sub_806BC3C(i, a); + } +} + +// This is ultimately unreferenced, since it's caller is unreferenced. +void sub_806BCE8() +{ + u8 i; + + for (i = 0; i < gPlayerPartyCount; i++) + { + if (!GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG)) + { + u8 gender = GetMonGender(&gPlayerParty[i]); + switch (gender) + { + case MON_MALE: + sub_806BC3C(i, 0x54); + break; + case MON_FEMALE: + sub_806BC3C(i, 0x62); + break; + default: + sub_806BC3C(i, 0x46); + break; + } + } + else + { + sub_806BC3C(i, 0x46); + } + } +} + +u8 sub_806BD58(u8 taskId, u8 b) +{ + u8 spriteId = CreateInvisibleSpriteWithCallback(SpriteCallbackDummy); + sub_806CA18(taskId, spriteId); + return 1; +} + +#ifdef NONMATCHING +u16 HandleDefaultPartyMenuInput(u8 taskId) +{ + s8 menuDirectionPressed = 0x0; + + switch (gMain.newAndRepeatedKeys) + { + case DPAD_UP: + menuDirectionPressed = -1; + break; + case DPAD_DOWN: + menuDirectionPressed = 1; + break; + case DPAD_LEFT: + menuDirectionPressed = -2; + break; + case DPAD_RIGHT: + menuDirectionPressed = 2; + break; + } + + if (menuDirectionPressed == 0) + { + u8 var1 = sub_80F92BC(); + switch (var1) + { + case 1: + menuDirectionPressed = -1; + break; + case 2: + menuDirectionPressed = 1; + break; + } + + if (menuDirectionPressed == 0) + { + if ((gMain.newKeys & A_BUTTON) && gSprites[sub_806CA00(taskId)].data0 == 7) + { + // Selected "CANCEL" + return B_BUTTON; + } + else + { + return gMain.newKeys & (A_BUTTON | B_BUTTON); + } + } + } + + ChangePartyMenuSelection(taskId, menuDirectionPressed); + return gMain.newAndRepeatedKeys; +} +#else +__attribute__((naked)) +u16 HandleDefaultPartyMenuInput(u8 taskId) +{ + asm(".syntax unified\n\ + push {r4,r5,lr}\n\ + lsls r0, 24\n\ + lsrs r5, r0, 24\n\ + movs r4, 0\n\ + ldr r0, _0806BD9C @ =gMain\n\ + ldrh r0, [r0, 0x30]\n\ + cmp r0, 0x20\n\ + beq _0806BDB2\n\ + cmp r0, 0x20\n\ + bgt _0806BDA0\n\ + cmp r0, 0x10\n\ + beq _0806BDB6\n\ + b _0806BDB8\n\ + .align 2, 0\n\ +_0806BD9C: .4byte gMain\n\ +_0806BDA0:\n\ + cmp r0, 0x40\n\ + beq _0806BDAA\n\ + cmp r0, 0x80\n\ + beq _0806BDAE\n\ + b _0806BDB8\n\ +_0806BDAA:\n\ + movs r4, 0xFF\n\ + b _0806BDB8\n\ +_0806BDAE:\n\ + movs r4, 0x1\n\ + b _0806BDB8\n\ +_0806BDB2:\n\ + movs r4, 0xFE\n\ + b _0806BDB8\n\ +_0806BDB6:\n\ + movs r4, 0x2\n\ +_0806BDB8:\n\ + lsls r0, r4, 24\n\ + cmp r0, 0\n\ + bne _0806BDDC\n\ + bl sub_80F92BC\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + cmp r0, 0x1\n\ + beq _0806BDD0\n\ + cmp r0, 0x2\n\ + beq _0806BDD4\n\ + b _0806BDD6\n\ +_0806BDD0:\n\ + movs r4, 0xFF\n\ + b _0806BDD6\n\ +_0806BDD4:\n\ + movs r4, 0x1\n\ +_0806BDD6:\n\ + lsls r0, r4, 24\n\ + cmp r0, 0\n\ + beq _0806BDF0\n\ +_0806BDDC:\n\ + asrs r1, r0, 24\n\ + adds r0, r5, 0\n\ + bl ChangePartyMenuSelection\n\ + ldr r0, _0806BDEC @ =gMain\n\ + ldrh r0, [r0, 0x30]\n\ + b _0806BE2C\n\ + .align 2, 0\n\ +_0806BDEC: .4byte gMain\n\ +_0806BDF0:\n\ + ldr r0, _0806BE1C @ =gMain\n\ + ldrh r1, [r0, 0x2E]\n\ + movs r0, 0x1\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _0806BE24\n\ + ldr r4, _0806BE20 @ =gSprites\n\ + adds r0, r5, 0\n\ + bl sub_806CA00\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + lsls r1, r0, 4\n\ + adds r1, r0\n\ + lsls r1, 2\n\ + adds r1, r4\n\ + movs r2, 0x2E\n\ + ldrsh r0, [r1, r2]\n\ + cmp r0, 0x7\n\ + bne _0806BE24\n\ + movs r0, 0x2\n\ + b _0806BE2C\n\ + .align 2, 0\n\ +_0806BE1C: .4byte gMain\n\ +_0806BE20: .4byte gSprites\n\ +_0806BE24:\n\ + ldr r0, _0806BE34 @ =gMain\n\ + ldrh r1, [r0, 0x2E]\n\ + movs r0, 0x3\n\ + ands r0, r1\n\ +_0806BE2C:\n\ + pop {r4,r5}\n\ + pop {r1}\n\ + bx r1\n\ + .align 2, 0\n\ +_0806BE34: .4byte gMain\n\ + .syntax divided\n"); +} +#endif // NONMATCHING + +u16 HandleBattleTowerPartyMenuInput(u8 taskId) +{ + u8 menuDirectionPressed = 0x0; + + switch (gMain.newAndRepeatedKeys) + { + case DPAD_UP: + menuDirectionPressed = 0xFF; + break; + case DPAD_DOWN: + menuDirectionPressed = 0x1; + break; + case DPAD_LEFT: + menuDirectionPressed = 0xFE; + break; + case DPAD_RIGHT: + menuDirectionPressed = 0x2; + break; + } + + if (menuDirectionPressed == 0) + { + u8 var1 = sub_80F92BC(); + switch (var1) + { + case 1: + menuDirectionPressed = 0xFF; + break; + case 2: + menuDirectionPressed = 0x1; + break; + } + } + + if (gMain.newKeys & START_BUTTON) + { + SelectBattleTowerOKButton(taskId); + return START_BUTTON; + } + else + { + s8 signedMenuDirection = menuDirectionPressed; + if (signedMenuDirection) + { + ChangeBattleTowerPartyMenuSelection(taskId, signedMenuDirection); + return gMain.newAndRepeatedKeys; + } + else + { + if (gMain.newKeys & A_BUTTON) + { + if (gSprites[sub_806CA00(taskId)].data0 == 7) + { + return B_BUTTON; + } + } + } + } + + return gMain.newKeys & (A_BUTTON | B_BUTTON); +} + +void task_pc_turn_off(const u8 *a, u8 b) +{ + if (a[0]) + sub_806BA94(a[0], a[1], 0, b); + else + sub_806B9A4(a[0], a[1], b); +} + +void sub_806BF24(const u8 *a, u8 monIndex, u8 c, u8 d) +{ + if (GetMonData(&gPlayerParty[monIndex], MON_DATA_SPECIES) && GetMonData(&gPlayerParty[monIndex], MON_DATA_HP) == 0) + c = PARTY_SIZE - 1; + + if (d == 1) + c += 4; + + task_pc_turn_off(a, c); +} + +void ChangePartyMenuSelection(u8 taskId, s8 directionPressed) +{ + bool8 isLinkDoubleBattle; + u8 spriteId = sub_806CA00(taskId); + u8 menuIndex = gSprites[spriteId].data0; + + UpdateMonIconFrame_806DA44(taskId, menuIndex, 0); + + isLinkDoubleBattle = IsLinkDoubleBattle(); + if (isLinkDoubleBattle == 1) + { + if (menuIndex == 0 || menuIndex == 2 || menuIndex == 3) + sub_806BF24(&gUnknown_083769C0[menuIndex * 2], menuIndex, 3, 0); + if (menuIndex == 1 || menuIndex == 4 || menuIndex == 5) + sub_806BF24(&gUnknown_083769C0[menuIndex * 2], menuIndex, 4, 0); + if (menuIndex == 7) + sub_806BBEC(1); + + ChangeLinkDoubleBattlePartyMenuSelection(spriteId, menuIndex, directionPressed); + + if (gSprites[spriteId].data0 == 0 || gSprites[spriteId].data0 == 2 || gSprites[spriteId].data0 == 3) + sub_806BF24(&gUnknown_083769C0[gSprites[spriteId].data0 * 2], gSprites[spriteId].data0, 3, 1); + if (gSprites[spriteId].data0 == 1 || gSprites[spriteId].data0 == 4 || gSprites[spriteId].data0 == 5) + sub_806BF24(&gUnknown_083769C0[gSprites[spriteId].data0 * 2], gSprites[spriteId].data0, 4, 1); + if (gSprites[spriteId].data0 == 7) + sub_806BBEC(2); + + ewram1B000.unk261 = 2; + + gSprites[spriteId].pos1.x = gUnknown_083768B8[PARTY_MENU_LAYOUT_LINK_DOUBLE_BATTLE][gSprites[spriteId].data0].x; + gSprites[spriteId].pos1.y = gUnknown_083768B8[PARTY_MENU_LAYOUT_LINK_DOUBLE_BATTLE][gSprites[spriteId].data0].y; + } + else + { + u8 isDoubleBattle = IsDoubleBattle(); + + if (menuIndex < PARTY_SIZE) + { + sub_806BF24(&gUnknown_083769A8[isDoubleBattle * 12 + menuIndex * 2], menuIndex, 3, 0); + } + else + { + sub_806BBEC(1); + } + + if (!isDoubleBattle) + { + ChangeDefaultPartyMenuSelection(spriteId, menuIndex, directionPressed); + } + else + { + ChangeDoubleBattlePartyMenuSelection(spriteId, menuIndex, directionPressed); + } + + if (gSprites[spriteId].data0 < PARTY_SIZE) + { + sub_806BF24(&gUnknown_083769A8[isDoubleBattle * 12 + gSprites[spriteId].data0 * 2], gSprites[spriteId].data0, 3, 1); + } + else + { + sub_806BBEC(2); + } + + ewram1B000.unk261 = 2; + + gSprites[spriteId].pos1.x = gUnknown_083768B8[isDoubleBattle][gSprites[spriteId].data0].x; + gSprites[spriteId].pos1.y = gUnknown_083768B8[isDoubleBattle][gSprites[spriteId].data0].y; + } + + UpdateMonIconFrame_806DA44(taskId, gSprites[spriteId].data0, 1); + + if (menuIndex != gSprites[spriteId].data0) + { + PlaySE(5); + } +} + +void ChangeDefaultPartyMenuSelection(u8 spriteId, u8 menuIndex, s8 directionPressed) +{ + u8 nextIndex; + s8 menuMovement = directionPressed + 2; + + switch (menuMovement) + { + case 2: // no movement + gSprites[spriteId].data1 = 0; + break; + case 1: // moving up + if (menuIndex == 0) { + gSprites[spriteId].data0 = 7; + } else if (menuIndex == 7) { + gSprites[spriteId].data0 = gPlayerPartyCount - 1; + } else { + s8 diff = directionPressed; + gSprites[spriteId].data0 += diff; + } + + gSprites[spriteId].data1 = 0; + break; + case 3: // moving down + if (menuIndex == gPlayerPartyCount - 1) { + gSprites[spriteId].data0 = 7; + } else if (menuIndex == 7) { + gSprites[spriteId].data0 = 0; + } else { + s8 diff = directionPressed; + gSprites[spriteId].data0 += diff; + } + + gSprites[spriteId].data1 = 0; + break; + case 4: // moving right + if (gPlayerPartyCount > 1 && menuIndex == 0) + { + if (gSprites[spriteId].data1 == 0) + gSprites[spriteId].data1 = 1; + + gSprites[spriteId].data0 = gSprites[spriteId].data1; + } + break; + case 0: // moving left + // Only move the selection to the left side if one of the mons in the right-hand column are currently selected + nextIndex = menuIndex - 1; + if (nextIndex <= 4) { + gSprites[spriteId].data0 = 0; + gSprites[spriteId].data1 = menuIndex; + } + break; + } +} + +void ChangeDoubleBattlePartyMenuSelection(u8 spriteId, u8 menuIndex, s8 directionPressed) +{ + u8 var1; + s8 menuMovement = directionPressed + 2; + + switch(menuMovement) + { + case 2: // no movement + gSprites[spriteId].data1 = 0; + break; + case 3: // moving down + if (menuIndex == 7) { + gSprites[spriteId].data0 = 0; + } else if (menuIndex == gPlayerPartyCount - 1) { + gSprites[spriteId].data0 = 7; + } else { + s8 diff = directionPressed; + gSprites[spriteId].data0 += diff; + } + + gSprites[spriteId].data1 = 0; + break; + case 1: // moving up + if (menuIndex == 0) { + gSprites[spriteId].data0 = 7; + } else if (menuIndex == 7) { + gSprites[spriteId].data0 = gPlayerPartyCount - 1; + } else { + s8 diff = directionPressed; + gSprites[spriteId].data0 += diff; + } + + gSprites[spriteId].data1 = 0; + break; + case 4: // moving right + if (menuIndex == 0) { + if (gPlayerPartyCount > 2) { + u16 var1 = gSprites[spriteId].data1 - 2; + if (var1 > 1) + gSprites[spriteId].data0 = 2; + else + gSprites[spriteId].data0 = gSprites[spriteId].data1; + } + } + else if (menuIndex == 1) { + if (gPlayerPartyCount > 4) { + u16 var1 = gSprites[spriteId].data1 - 4; + if (var1 <= 1) + gSprites[spriteId].data0 = gSprites[spriteId].data1; + else + gSprites[spriteId].data0 = 4; + } + } + break; + case 0: // moving left + var1 = menuIndex - 2; + if (var1 <= 1) { + gSprites[spriteId].data0 = 0; + gSprites[spriteId].data1 = menuIndex; + } else { + u8 var2 = menuIndex - 4; + if (var2 <= 1) { + gSprites[spriteId].data0 = 1; + gSprites[spriteId].data1 = menuIndex; + } + } + break; + } +} + +#ifdef NONMATCHING +void ChangeLinkDoubleBattlePartyMenuSelection(u8 spriteId, u8 menuIndex, s8 directionPressed) +{ + s8 menuMovement; + u16 var1; + u8 var2; + + menuMovement = directionPressed + 2; + switch (menuMovement) + { + case 2: // no movement + gSprites[spriteId].data1 = 0; + break; + case 3: // moving down + if (menuIndex == 7) { + gSprites[spriteId].data0 = 0; + } else { + while (menuIndex != PARTY_SIZE - 1) { + menuIndex++; + if (GetMonData(&gPlayerParty[menuIndex], MON_DATA_SPECIES)) + { + gSprites[spriteId].data0 = menuIndex; + gSprites[spriteId].data1 = 0; + return; + } + } + + gSprites[spriteId].data0 = 7; + } + + gSprites[spriteId].data1 = 0; + break; + case 1: // moving up + while (menuIndex != 0) { + menuIndex--; + if (menuIndex != PARTY_SIZE && GetMonData(gPlayerParty[menuIndex], MON_DATA_SPECIES)) + { + gSprites[spriteId].data0 = menuIndex; + gSprites[spriteId].data1 = 0; + return; + } + } + + gSprites[spriteId].data0 = 7; + gSprites[spriteId].data1 = 0; + break; + case 4: // moving right + if (menuIndex == 0) { + var1 = gSprites[spriteId].data1 - 2; + if (var1 > 1) { + if (GetMonData(&gPlayerParty[2], MON_DATA_SPECIES)) { + gSprites[spriteId].data0 = 2; + } else if (GetMonData(&gPlayerParty[3], MON_DATA_SPECIES)) { + gSprites[spriteId].data0 = 3; + } + } else { + gSprites[spriteId].data0 = 1; + } + } else if (menuIndex == 1) { + var1 = gSprites[spriteId].data1 - 4; + if (var1 <= 1) { + gSprites[spriteId].data0 = gSprites[spriteId].data1; + } else { + if (GetMonData(&gPlayerParty[4], MON_DATA_SPECIES)) { + gSprites[spriteId].data0 = 4; + } else if (GetMonData(&gPlayerParty[5], MON_DATA_SPECIES)) { + gSprites[spriteId].data0 = 5; + } + } + } + break; + case 0: // moving left + var2 = menuIndex - 2; + if (var2 <= 1) { + gSprites[spriteId].data0 = 0; + gSprites[spriteId].data1 = menuIndex; + } else { + var2 = menuIndex - 4; + if (var2 <= 1) { + gSprites[spriteId].data0 = 1; + gSprites[spriteId].data1 = menuIndex; + } + } + + break; + } +} + +#else +__attribute__((naked)) +void ChangeLinkDoubleBattlePartyMenuSelection(u8 spriteId, u8 menuIndex, s8 directionPressed) +{ + asm(".syntax unified\n\ + push {r4-r6,lr}\n\ + lsls r0, 24\n\ + lsrs r5, r0, 24\n\ + lsls r1, 24\n\ + lsrs r4, r1, 24\n\ + lsls r2, 24\n\ + movs r0, 0x80\n\ + lsls r0, 18\n\ + adds r2, r0\n\ + asrs r0, r2, 24\n\ + cmp r0, 0x4\n\ + bls _0806C4AA\n\ + b _0806C64E\n\ +_0806C4AA:\n\ + lsls r0, 2\n\ + ldr r1, _0806C4B4 @ =_0806C4B8\n\ + adds r0, r1\n\ + ldr r0, [r0]\n\ + mov pc, r0\n\ + .align 2, 0\n\ +_0806C4B4: .4byte _0806C4B8\n\ + .align 2, 0\n\ +_0806C4B8:\n\ + .4byte _0806C618\n\ + .4byte _0806C524\n\ + .4byte _0806C4CC\n\ + .4byte _0806C4E0\n\ + .4byte _0806C57C\n\ +_0806C4CC:\n\ + ldr r0, _0806C4DC @ =gSprites\n\ + lsls r1, r5, 4\n\ + adds r1, r5\n\ + lsls r1, 2\n\ + adds r1, r0\n\ + movs r0, 0\n\ + strh r0, [r1, 0x30]\n\ + b _0806C64E\n\ + .align 2, 0\n\ +_0806C4DC: .4byte gSprites\n\ +_0806C4E0:\n\ + cmp r4, 0x7\n\ + bne _0806C4FC\n\ + ldr r2, _0806C4F8 @ =gSprites\n\ + lsls r3, r5, 4\n\ + adds r0, r3, r5\n\ + lsls r0, 2\n\ + adds r0, r2\n\ + movs r1, 0\n\ + strh r1, [r0, 0x2E]\n\ + adds r1, r2, 0\n\ + adds r6, r3, 0\n\ + b _0806C566\n\ + .align 2, 0\n\ +_0806C4F8: .4byte gSprites\n\ +_0806C4FC:\n\ + lsls r6, r5, 4\n\ + b _0806C518\n\ +_0806C500:\n\ + adds r0, r4, 0x1\n\ + lsls r0, 24\n\ + lsrs r4, r0, 24\n\ + movs r0, 0x64\n\ + muls r0, r4\n\ + ldr r1, _0806C520 @ =gPlayerParty\n\ + adds r0, r1\n\ + movs r1, 0xB\n\ + bl GetMonData\n\ + cmp r0, 0\n\ + bne _0806C528\n\ +_0806C518:\n\ + cmp r4, 0x5\n\ + bne _0806C500\n\ + b _0806C558\n\ + .align 2, 0\n\ +_0806C520: .4byte gPlayerParty\n\ +_0806C524:\n\ + lsls r6, r5, 4\n\ + b _0806C554\n\ +_0806C528:\n\ + ldr r1, _0806C534 @ =gSprites\n\ + adds r0, r6, r5\n\ + lsls r0, 2\n\ + adds r0, r1\n\ + strh r4, [r0, 0x2E]\n\ + b _0806C566\n\ + .align 2, 0\n\ +_0806C534: .4byte gSprites\n\ +_0806C538:\n\ + subs r0, r4, 0x1\n\ + lsls r0, 24\n\ + lsrs r4, r0, 24\n\ + cmp r4, 0x6\n\ + beq _0806C554\n\ + movs r0, 0x64\n\ + muls r0, r4\n\ + ldr r1, _0806C574 @ =gPlayerParty\n\ + adds r0, r1\n\ + movs r1, 0xB\n\ + bl GetMonData\n\ + cmp r0, 0\n\ + bne _0806C528\n\ +_0806C554:\n\ + cmp r4, 0\n\ + bne _0806C538\n\ +_0806C558:\n\ + ldr r0, _0806C578 @ =gSprites\n\ + adds r1, r6, r5\n\ + lsls r1, 2\n\ + adds r1, r0\n\ + movs r2, 0x7\n\ + strh r2, [r1, 0x2E]\n\ + adds r1, r0, 0\n\ +_0806C566:\n\ + adds r0, r6, r5\n\ + lsls r0, 2\n\ + adds r0, r1\n\ + movs r1, 0\n\ + strh r1, [r0, 0x30]\n\ + b _0806C64E\n\ + .align 2, 0\n\ +_0806C574: .4byte gPlayerParty\n\ +_0806C578: .4byte gSprites\n\ +_0806C57C:\n\ + cmp r4, 0\n\ + bne _0806C5C8\n\ + ldr r0, _0806C5AC @ =gSprites\n\ + lsls r1, r5, 4\n\ + adds r1, r5\n\ + lsls r1, 2\n\ + adds r4, r1, r0\n\ + ldrh r1, [r4, 0x30]\n\ + subs r0, r1, 0x2\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + cmp r0, 0x1\n\ + bls _0806C5E2\n\ + ldr r5, _0806C5B0 @ =gPlayerParty + 2 * 0x64\n\ + adds r0, r5, 0\n\ + movs r1, 0xB\n\ + bl GetMonData\n\ + cmp r0, 0\n\ + beq _0806C5B4\n\ + movs r0, 0x2\n\ + strh r0, [r4, 0x2E]\n\ + b _0806C64E\n\ + .align 2, 0\n\ +_0806C5AC: .4byte gSprites\n\ +_0806C5B0: .4byte gPlayerParty + 2 * 0x64\n\ +_0806C5B4:\n\ + adds r0, r5, 0\n\ + adds r0, 0x64\n\ + movs r1, 0xB\n\ + bl GetMonData\n\ + cmp r0, 0\n\ + beq _0806C64E\n\ + movs r0, 0x3\n\ + strh r0, [r4, 0x2E]\n\ + b _0806C64E\n\ +_0806C5C8:\n\ + cmp r4, 0x1\n\ + bne _0806C64E\n\ + ldr r0, _0806C5E8 @ =gSprites\n\ + lsls r1, r5, 4\n\ + adds r1, r5\n\ + lsls r1, 2\n\ + adds r4, r1, r0\n\ + ldrh r1, [r4, 0x30]\n\ + subs r0, r1, 0x4\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + cmp r0, 0x1\n\ + bhi _0806C5EC\n\ +_0806C5E2:\n\ + strh r1, [r4, 0x2E]\n\ + b _0806C64E\n\ + .align 2, 0\n\ +_0806C5E8: .4byte gSprites\n\ +_0806C5EC:\n\ + ldr r5, _0806C600 @ =gPlayerParty + 4 * 0x64\n\ + adds r0, r5, 0\n\ + movs r1, 0xB\n\ + bl GetMonData\n\ + cmp r0, 0\n\ + beq _0806C604\n\ + movs r0, 0x4\n\ + strh r0, [r4, 0x2E]\n\ + b _0806C64E\n\ + .align 2, 0\n\ +_0806C600: .4byte gPlayerParty + 4 * 0x64\n\ +_0806C604:\n\ + adds r0, r5, 0\n\ + adds r0, 0x64\n\ + movs r1, 0xB\n\ + bl GetMonData\n\ + cmp r0, 0\n\ + beq _0806C64E\n\ + movs r0, 0x5\n\ + strh r0, [r4, 0x2E]\n\ + b _0806C64E\n\ +_0806C618:\n\ + subs r0, r4, 0x2\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + cmp r0, 0x1\n\ + bhi _0806C634\n\ + ldr r0, _0806C630 @ =gSprites\n\ + lsls r1, r5, 4\n\ + adds r1, r5\n\ + lsls r1, 2\n\ + adds r1, r0\n\ + movs r0, 0\n\ + b _0806C64A\n\ + .align 2, 0\n\ +_0806C630: .4byte gSprites\n\ +_0806C634:\n\ + subs r0, r4, 0x4\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + cmp r0, 0x1\n\ + bhi _0806C64E\n\ + ldr r0, _0806C654 @ =gSprites\n\ + lsls r1, r5, 4\n\ + adds r1, r5\n\ + lsls r1, 2\n\ + adds r1, r0\n\ + movs r0, 0x1\n\ +_0806C64A:\n\ + strh r0, [r1, 0x2E]\n\ + strh r4, [r1, 0x30]\n\ +_0806C64E:\n\ + pop {r4-r6}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_0806C654: .4byte gSprites\n\ + .syntax divided\n"); +} +#endif // NONMATCHING + +void ChangeBattleTowerPartyMenuSelection(u8 taskId, s8 directionPressed) +{ + u16 newMenuIndex; + u8 newMenuIndex2; + u8 newMenuIndex3; + s8 menuMovement; + u8 spriteId = sub_806CA00(taskId); + u8 menuIndex = gSprites[spriteId].data0; + + UpdateMonIconFrame_806DA44(taskId, menuIndex, 0); + + if (menuIndex < PARTY_SIZE) + { + sub_806BF24(&gUnknown_083769A8[menuIndex * 2], menuIndex, 3, 0); + } + else if (menuIndex == PARTY_SIZE) + { + sub_806BB9C(1); + } + else + { + sub_806BBEC(1); + } + + menuMovement = directionPressed + 2; + + switch (menuMovement) + { + case 2: // no movement + gSprites[spriteId].data1 = 0; + break; + case 1: // moving up + if (menuIndex == 0) { + gSprites[spriteId].data0 = 7; + } else if (menuIndex == PARTY_SIZE) { + gSprites[spriteId].data0 = gPlayerPartyCount - 1; + } else { + gSprites[spriteId].data0 += directionPressed; + } + + gSprites[spriteId].data1 = 0; + break; + case 3: // moving down + if (menuIndex == gPlayerPartyCount - 1) { + gSprites[spriteId].data0 = 6; + } else if (menuIndex == 7) { + gSprites[spriteId].data0 = 0; + } else { + gSprites[spriteId].data0 += directionPressed; + } + + gSprites[spriteId].data1 = 0; + break; + case 4: // moving right + if (gPlayerPartyCount > 1 && menuIndex == 0) + { + if (gSprites[spriteId].data1 == 0) { + gSprites[spriteId].data1 = 1; + } + + gSprites[spriteId].data0 = gSprites[spriteId].data1; + } + break; + case 0: // moving left + newMenuIndex3 = menuIndex - 1; + if (newMenuIndex3 <= 4) + { + gSprites[spriteId].data0 = 0; + gSprites[spriteId].data1 = menuIndex; + } + break; + } + + gSprites[spriteId].pos1.x = gUnknown_083768B8[PARTY_MENU_LAYOUT_STANDARD][gSprites[spriteId].data0].x; + gSprites[spriteId].pos1.y = gUnknown_083768B8[PARTY_MENU_LAYOUT_STANDARD][gSprites[spriteId].data0].y; + + + newMenuIndex = gSprites[spriteId].data0; + if (gSprites[spriteId].data0 < PARTY_SIZE) + { + sub_806BF24(&gUnknown_083769A8[gSprites[spriteId].data0 * 2], newMenuIndex, 3, 1); + } + else if (gSprites[spriteId].data0 == PARTY_SIZE) + { + sub_806BB9C(2); + } + else + { + sub_806BBEC(2); + } + + ewram1B000.unk261 = 2; + + newMenuIndex2 = gSprites[spriteId].data0; + UpdateMonIconFrame_806DA44(taskId, newMenuIndex2, 1); + + if (menuIndex != gSprites[spriteId].data0) + { + PlaySE(5); + } +} + +// Selects the "OK" button in the Battle Tower party menu. +void SelectBattleTowerOKButton(u8 taskId) +{ + u8 spriteId = sub_806CA00(taskId); + + u8 menuIndex = gSprites[spriteId].data0; + if (menuIndex != 6) + { + UpdateMonIconFrame_806DA44(taskId, menuIndex, 0); + + if (menuIndex < PARTY_SIZE) + { + sub_806BF24(&gUnknown_083769A8[menuIndex * 2], menuIndex, 3, 0); + } + else + { + sub_806BBEC(1); + } + + gSprites[spriteId].data1 = 0; + gSprites[spriteId].data0 = 6; + gSprites[spriteId].pos1.x = gUnknown_083768B8[PARTY_MENU_LAYOUT_STANDARD][6].x; + gSprites[spriteId].pos1.y = gUnknown_083768B8[PARTY_MENU_LAYOUT_STANDARD][6].y; + + sub_806BB9C(2); + + ewram1B000.unk261 = 2; + PlaySE(5); + } +} + +void sub_806C92C(u8 spriteId) +{ + u8 menuIndex1 = gSprites[spriteId].data0; + u8 menuIndex2 = gSprites[spriteId].data1; + + if (!IsDoubleBattle()) + { + if (menuIndex1 < 1) { + if (menuIndex2 < 1) { + menuIndex2 = 1; + } + } else { + if (menuIndex2 >= 1) { + menuIndex2 = 0; + } + } + } else { + if (menuIndex1 < 2) { + if (menuIndex2 < 2) { + menuIndex2 = 2; + } + } else { + if (menuIndex2 >= 2) { + menuIndex2 = 0; + } + } + } + + gSprites[spriteId].data1 = menuIndex2; +} + +void sub_806C994(u8 taskId, u8 b) +{ + u8 spriteId = sub_806CA00(taskId); + + gSprites[spriteId].data0 = b; + sub_806C92C(spriteId); +} + +void sub_806C9C4(u8 taskId, u8 spriteId) +{ + u8 spriteId2 = sub_806CA00(taskId); + + gSprites[spriteId].pos1.x = gSprites[spriteId2].pos1.x; + gSprites[spriteId].pos1.y = gSprites[spriteId2].pos1.y; + gSprites[spriteId].data0 = gSprites[spriteId2].data0; +} + +u8 sub_806CA00(u8 taskId) +{ + return gTasks[taskId].data[3] >> 8; +} + +void sub_806CA18(u8 taskId, u8 b) +{ + u8 var1 = gTasks[taskId].data[3]; + gTasks[taskId].data[3] = var1 | (b << 8); +} + +u8 sub_806CA38(u8 taskId) +{ + u8 spriteId = sub_806CA00(taskId); + return gSprites[spriteId].data0; +} + +void SetupDefaultPartyMenuSwitchPokemon(u8 taskId) +{ + gTasks[taskId].func = TaskDummy; + ewram01000.unk0 = taskId; + + CreateTask(HandlePartyMenuSwitchPokemonInput, 0); + ewram01000.unk1 = CreateInvisibleSpriteWithCallback(SpriteCallbackDummy); + + sub_806C9C4(taskId, ewram01000.unk1); + ewram01000.unk2 = sub_806CA00(taskId); + + PrintPartyMenuPromptText(ewram1B000_alt.unk272, 0); + + sub_806BF24(&gUnknown_083769A8[gSprites[ewram01000.unk1].data0 * 2], gSprites[ewram01000.unk1].data0, 6, 0); + ewram1B000.unk261 = 2; +} + +// Handles changing the the current mon selection when choosing mons to swap places. +void ChangePartyMenuSwitchPokemonSelection(u8 taskId, s16 menuDirectionPressed) +{ + struct Sprite *sprite1 = &gSprites[ewram01000.unk1]; + struct Sprite *sprite2 = &gSprites[ewram01000.unk2]; + + ChangePartyMenuSelection(taskId, menuDirectionPressed); + + if (sprite1->data0 != sprite2->data0) + { + sub_806BF24(&gUnknown_083769A8[sprite1->data0 * 2], sprite1->data0, 6, 1); + } + else + { + sub_806BF24(&gUnknown_083769A8[sprite1->data0 * 2], sprite1->data0, 6, 0); + } +} + +void HandlePartyMenuSwitchPokemonInput(u8 taskId) +{ + switch (gMain.newAndRepeatedKeys) + { + case DPAD_UP: + ChangePartyMenuSwitchPokemonSelection(ewram01000.unk0, -1); + break; + case DPAD_DOWN: + ChangePartyMenuSwitchPokemonSelection(ewram01000.unk0, 1); + break; + case DPAD_LEFT: + ChangePartyMenuSwitchPokemonSelection(ewram01000.unk0, -2); + break; + case DPAD_RIGHT: + ChangePartyMenuSwitchPokemonSelection(ewram01000.unk0, 2); + break; + } + + if (gMain.newKeys & A_BUTTON) + { + PlaySE(5); + gTasks[taskId].func = ewram01000.unkC; + gTasks[taskId].func(taskId); + } + else if (gMain.newKeys == B_BUTTON) + { + PlaySE(5); + sub_806CD44(taskId); + } +} + +void sub_806CC2C(u8 taskId) +{ + DestroySprite(&gSprites[ewram01000.unk1]); + PrintPartyMenuPromptText(0, 0); + + ewram1B000.unk261 = 2; + SwitchTaskToFollowupFunc(ewram01000.unk0); + DestroyTask(taskId); +} + +void sub_806CC74(u8 taskId) +{ + sub_806BF24(&gUnknown_083769A8[gSprites[ewram01000.unk2].data0 * 2], gSprites[ewram01000.unk2].data0, 3, 1); + sub_806BF24(&gUnknown_083769A8[gSprites[ewram01000.unk1].data0 * 2], gSprites[ewram01000.unk1].data0, 3, 0); + sub_806CC2C(taskId); +} + +void sub_806CCE4() +{ + u8 monIndex1 = gSprites[ewram01000.unk1].data0; + u8 monIndex2 = gSprites[ewram01000.unk2].data0; + + if (monIndex1 <= 5) + { + sub_806BF24(&gUnknown_083769A8[monIndex1 * 2], monIndex1, 3, 0); + } + + if (monIndex2 <= 5) + { + sub_806BF24(&gUnknown_083769A8[monIndex2 * 2], monIndex2, 3, 1); + } +} + +void sub_806CD44(u8 taskId) +{ + sub_806CCE4(); + sub_806CC2C(taskId); +} + +void sub_806CD5C(u8 taskId) +{ + u8 monIndex1 = gSprites[ewram01000.unk1].data0; + u8 monIndex2 = gSprites[ewram01000.unk2].data0; + + if (monIndex1 == monIndex2 || monIndex1 == 7 || monIndex2 == 7) + { + sub_806CD44(taskId); + } + else + { + u8 var1; + + sub_806D5B8(monIndex1); + sub_806D5B8(monIndex2); + + if (monIndex1 > monIndex2) + { + ewram01000.unk5 = monIndex2; + ewram01000.unk6 = monIndex1; + } + else + { + ewram01000.unk5 = monIndex1; + ewram01000.unk6 = monIndex2; + } + + ewram01000.unk3 = GetMonIconSpriteId(ewram01000.unk0, ewram01000.unk5); + ewram01000.unk4 = GetMonIconSpriteId(ewram01000.unk0, ewram01000.unk6); + + var1 = ewram01000.unk5; + if (!var1) + { + gSprites[ewram01000.unk3].data0 = -8; + gSprites[ewram01000.unk3].data2 = -0xA8; + ewram01000.unk8 = var1; + ewram01000.unkA = 11; + + gTasks[taskId].func = sub_806D014; + ewram1B000.unk261 = 1; + } + else + { + gSprites[ewram01000.unk3].data0 = 8; + gSprites[ewram01000.unk3].data2 = 0xA8; + ewram01000.unk8 = 11; + ewram01000.unkA = 11; + + gTasks[taskId].func = sub_806D118; + ewram1B000.unk261 = 1; + } + + gSprites[ewram01000.unk3].callback = SpriteCB_sub_806D37C; + + gSprites[ewram01000.unk4].data0 = 8; + gSprites[ewram01000.unk4].data2 = 0xA8; + gSprites[ewram01000.unk4].callback = SpriteCB_sub_806D37C; + + gSprites[ewram01000.unk3].callback(&gSprites[ewram01000.unk3]); + gSprites[ewram01000.unk4].callback(&gSprites[ewram01000.unk4]); + } +} + +void SwapValues_s16(s16 *a, s16 *b) +{ + s16 temp = *a; + *a = *b; + *b = temp; +} + +#ifdef NONMATCHING +void sub_806CF04(void) +{ + SwapValues_s16(&gSprites[ewram01000.unk3].pos1.x, &gSprites[ewram01000.unk4].pos1.x); + SwapValues_s16(&gSprites[ewram01000.unk3].pos1.y, &gSprites[ewram01000.unk4].pos1.y); + SwapValues_s16(&gSprites[ewram01000.unk3].pos2.x, &gSprites[ewram01000.unk4].pos2.x); + SwapValues_s16(&gSprites[ewram01000.unk3].data0, &gSprites[ewram01000.unk4].data0); + + gSprites[ewram01000.unk3].callback = SpriteCB_sub_806D37C; + gSprites[ewram01000.unk4].callback = SpriteCB_sub_806D37C; +} +#else +__attribute__((naked)) +void sub_806CF04(void) +{ + asm(".syntax unified\n\ + push {r4,r5,lr}\n\ + ldr r4, _0806CF94 @ =0x02001000\n\ + ldrb r1, [r4, 0x3]\n\ + lsls r0, r1, 4\n\ + adds r0, r1\n\ + lsls r0, 2\n\ + ldr r5, _0806CF98 @ =gSprites + 0x20\n\ + adds r0, r5\n\ + ldrb r2, [r4, 0x4]\n\ + lsls r1, r2, 4\n\ + adds r1, r2\n\ + lsls r1, 2\n\ + adds r1, r5\n\ + bl SwapValues_s16\n\ + ldrb r1, [r4, 0x3]\n\ + lsls r0, r1, 4\n\ + adds r0, r1\n\ + lsls r0, 2\n\ + adds r3, r5, 0x2\n\ + adds r0, r3\n\ + ldrb r2, [r4, 0x4]\n\ + lsls r1, r2, 4\n\ + adds r1, r2\n\ + lsls r1, 2\n\ + adds r1, r3\n\ + bl SwapValues_s16\n\ + ldrb r1, [r4, 0x3]\n\ + lsls r0, r1, 4\n\ + adds r0, r1\n\ + lsls r0, 2\n\ + adds r3, r5, 0x4\n\ + adds r0, r3\n\ + ldrb r2, [r4, 0x4]\n\ + lsls r1, r2, 4\n\ + adds r1, r2\n\ + lsls r1, 2\n\ + adds r1, r3\n\ + bl SwapValues_s16\n\ + ldrb r1, [r4, 0x3]\n\ + lsls r0, r1, 4\n\ + adds r0, r1\n\ + lsls r0, 2\n\ + adds r3, r5, 0\n\ + adds r3, 0xE\n\ + adds r0, r3\n\ + ldrb r2, [r4, 0x4]\n\ + lsls r1, r2, 4\n\ + adds r1, r2\n\ + lsls r1, 2\n\ + adds r1, r3\n\ + bl SwapValues_s16\n\ + ldrb r1, [r4, 0x3]\n\ + lsls r0, r1, 4\n\ + adds r0, r1\n\ + lsls r0, 2\n\ + subs r5, 0x4\n\ + adds r0, r5\n\ + ldr r2, _0806CF9C @ =SpriteCB_sub_806D37C\n\ + str r2, [r0]\n\ + ldrb r1, [r4, 0x4]\n\ + lsls r0, r1, 4\n\ + adds r0, r1\n\ + lsls r0, 2\n\ + adds r0, r5\n\ + str r2, [r0]\n\ + pop {r4,r5}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_0806CF94: .4byte 0x02001000\n\ +_0806CF98: .4byte gSprites + 0x20\n\ +_0806CF9C: .4byte SpriteCB_sub_806D37C\n\ + .syntax divided\n"); +} +#endif // NONMATCHING + +void sub_806CFA0(u8 taskId, u8 b) +{ + u8 var1 = ((ewram01000.unk6 - 1) * 3) + 1; + + sub_806BA34(ewram01000.unk8, 3); + sub_806BB3C(ewram01000.unkA, var1); + + if (!b) + { + ewram01000.unk8--; + ewram01000.unkA++; + } + else + { + ewram01000.unk8++; + ewram01000.unkA--; + } + + sub_806B9A4(ewram01000.unk8, 3, 10); + sub_806BA94(ewram01000.unkA, var1, 0, 10); +} + +void sub_806D014(u8 taskId) +{ + sub_806CFA0(taskId, 0); + + if (ewram01000.unk8 < -13 && ewram01000.unkA > 32) + { + sub_806CF04(); + gTasks[taskId].func = sub_806D05C; + } +} + +void sub_806D05C(u8 taskId) +{ + sub_806CFA0(taskId, 1); + + if (ewram01000.unk8 == 0 && ewram01000.unkA == 11) + { + gTasks[taskId].func = sub_806D198; + } +} + +void sub_806D098(u8 a, u8 b) +{ + u8 var1 = ((ewram01000.unk5 - 1) * 3) + 1; + u8 var2 = ((ewram01000.unk6 - 1) * 3) + 1; + + sub_806BB3C(ewram01000.unk8, var1); + sub_806BB3C(ewram01000.unkA, var2); + + if (!b) + { + ewram01000.unk8++; + ewram01000.unkA++; + } + else + { + ewram01000.unk8--; + ewram01000.unkA--; + } + + sub_806BA94(ewram01000.unk8, var1, 0, 10); + sub_806BA94(ewram01000.unkA, var2, 0, 10); +} + +void sub_806D118(u8 taskId) +{ + sub_806D098(taskId, 0); + + if (ewram01000.unk8 > 32 && ewram01000.unkA > 32) + { + sub_806CF04(); + gTasks[taskId].func = sub_806D15C; + } +} + +void sub_806D15C(u8 taskId) +{ + sub_806D098(taskId, 1); + + if (ewram01000.unk8 == 11 && ewram01000.unkA == 11) + { + gTasks[taskId].func = sub_806D198; + } +} + +void sub_806D198(u8 taskId) +{ + u8 spriteId; + + SetMonIconSpriteId(ewram01000.unk0, ewram01000.unk5, ewram01000.unk4); + SetMonIconSpriteId(ewram01000.unk0, ewram01000.unk6, ewram01000.unk3); + + gSprites[ewram01000.unk3].pos1.x = gUnknown_08376678[IsDoubleBattle()][ewram01000.unk6].x; + gSprites[ewram01000.unk3].pos1.y = gUnknown_08376678[IsDoubleBattle()][ewram01000.unk6].y; + gSprites[ewram01000.unk3].pos2.x = 0; + gSprites[ewram01000.unk3].pos2.y = 0; + gSprites[ewram01000.unk3].callback = UpdateMonIconFrame_806DA38; + + gSprites[ewram01000.unk4].pos1.x = gUnknown_08376678[IsDoubleBattle()][ewram01000.unk5].x; + gSprites[ewram01000.unk4].pos1.y = gUnknown_08376678[IsDoubleBattle()][ewram01000.unk5].y; + gSprites[ewram01000.unk4].pos2.x = 0; + gSprites[ewram01000.unk4].pos2.y = 0; + gSprites[ewram01000.unk4].callback = UpdateMonIconFrame_806DA38; + + spriteId = GetMonIconSpriteId(ewram01000.unk0, gSprites[ewram01000.unk2].data0); + gSprites[spriteId].callback = UpdateMonIconFrame_806DA0C; + + SwapPokemon(&gPlayerParty[ewram01000.unk5], &gPlayerParty[ewram01000.unk6]); + + PartyMenuPrintMonLevelOrStatus(ewram01000.unk5, &gPlayerParty[ewram01000.unk5]); + TryPrintPartyMenuMonNickname(ewram01000.unk5, &gPlayerParty[ewram01000.unk5]); + PartyMenuTryPrintHP(ewram01000.unk5, &gPlayerParty[ewram01000.unk5]); + nullsub_12(ewram01000.unk5, &gPlayerParty[ewram01000.unk5]); + + PartyMenuPrintMonLevelOrStatus(ewram01000.unk6, &gPlayerParty[ewram01000.unk6]); + TryPrintPartyMenuMonNickname(ewram01000.unk6, &gPlayerParty[ewram01000.unk6]); + PartyMenuTryPrintHP(ewram01000.unk6, &gPlayerParty[ewram01000.unk6]); + nullsub_12(ewram01000.unk6, &gPlayerParty[ewram01000.unk6]); + + PartyMenuDrawHPBars(); + sub_806CC74(taskId); +} + +void SpriteCB_sub_806D37C(struct Sprite *sprite) +{ + UpdateMonIconFrame(sprite); + + if (sprite->pos2.x == sprite->data2) + { + sprite->data0 *= -1; + sprite->data2 = 0; + sprite->callback = UpdateMonIconFrame_806DA38; + } + else + { + sprite->pos2.x += sprite->data0; + } +} + +void sub_806D3B4(u8 taskId, u16 species1, u16 species2) +{ + const u8 *var1 = gUnknown_083769C0; + + sub_806BA34(var1[2] + gTasks[taskId].data[0], var1[3]); + sub_806BB3C(var1[8] + gTasks[taskId].data[0], var1[9]); + sub_806BB3C(var1[10] + gTasks[taskId].data[0], var1[11]); + + gTasks[taskId].data[0]--; + + sub_806B9A4(var1[2] + gTasks[taskId].data[0], var1[3], 4); + + if (species1) + { + sub_806BA94(var1[8] + gTasks[taskId].data[0], var1[9], 0, 4); + } + else + { + sub_806BA94(var1[8] + gTasks[taskId].data[0], var1[9], 1, 4); + } + + if (species2) + { + sub_806BA94(var1[10] + gTasks[taskId].data[0], var1[11], 0, 4); + } + else + { + sub_806BA94(var1[10] + gTasks[taskId].data[0], var1[11], 1, 4); + } +} + +void sub_806D4AC(u8 taskId, u16 species, u8 c) +{ + if (species) + { + u8 monIndex = c + 3; + u8 spriteId = GetMonIconSpriteId(taskId, monIndex); + + gSprites[spriteId].data0 = -8; + gSprites[spriteId].data2 = gTasks[taskId].data[0] * -8; + gSprites[spriteId].callback = SpriteCB_sub_806D37C; + } +} + +void sub_806D50C(u8 taskId, u8 monIndex) +{ + gSprites[GetMonIconSpriteId(taskId, monIndex)].pos1.x += 0xF0; +} + +void PrintPartyMenuPromptText(u8 textId, u8 b) +{ + if (textId != 0xFF) + { + switch (b) + { + case 0: + MenuDrawTextWindow(0, 16, 23, 19); + break; + case 1: + MenuDrawTextWindow(0, 16, 19, 19); + break; + case 2: + MenuDrawTextWindow(0, 16, 22, 19); + break; + case 3: + MenuDrawTextWindow(0, 16, 18, 19); + break; + } + + MenuPrint(PartyMenuPromptTexts[textId], 1, 17); + } +} + +void sub_806D5A4(void) +{ + MenuZeroFillWindowRect(0, 16, 29, 19); +} + +void sub_806D5B8(u8 monIndex) +{ + u32 var1; + u8 left = gUnknown_08376948[IsDoubleBattle()][monIndex].left; + u8 top = gUnknown_08376948[IsDoubleBattle()][monIndex].top; + u8 right = gUnknown_08376948[IsDoubleBattle()][monIndex].right; + u8 bottom = gUnknown_08376948[IsDoubleBattle()][monIndex].bottom; + + ZeroFillWindowRect(&gUnknown_03004210, left, top, right, bottom); + + var1 = 0; + CpuFastSet(&var1, (void *)(OBJ_VRAM1 + monIndex * 0x400), 0x1000100); +} + +void sub_806D668(u8 monIndex) +{ + u32 var1; + u8 left = gUnknown_08376978[IsDoubleBattle()][monIndex].left; + u8 top = gUnknown_08376978[IsDoubleBattle()][monIndex].top; + u8 right = gUnknown_08376978[IsDoubleBattle()][monIndex].right; + u8 bottom = gUnknown_08376978[IsDoubleBattle()][monIndex].bottom; + + ZeroFillWindowRect(&gUnknown_03004210, left, top, right, bottom); + + var1 = 0; + CpuFastSet(&var1, (void *)(OBJ_VRAM1 + 0x300 + monIndex * 0x400), 0x1000040); +} + +bool8 LoadPartyMenuGraphics(u8 a) +{ + u16 palette = 0x7FFF; + bool8 retVal = FALSE; + + if (a < 2) + { + LZDecompressVram(gPartyMenuMisc_Gfx, (void *)BG_VRAM); + } + + if (a == 2 || a == 0) + { + LZDecompressVram(gPartyMenuMisc_Tilemap, (void *)(BG_VRAM + 0x3800)); + } + + if (a == 3 || a == 0) + { + LoadCompressedPalette(gPartyMenuMisc_Pal, 0, 0x160); + } + + if (a == 4 || a == 0) + { + LoadPalette(&palette, 0, 2); + LoadPalette(gFontDefaultPalette, 0xF0, 0x20); + } + + if (a == 5 || a == 0) + { + LZDecompressVram(gPartyMenuHpBar_Gfx, (void *)(BG_VRAM + 0x6000)); + } + + if (a == 6 || a == 0) + { + LZDecompressVram(gPartyMenuOrderText_Gfx, (void *)(BG_VRAM + 0x6180)); + } + + if (a == 7 || a == 0) + { + LZDecompressVram(gStatusGfx_Icons, (void *)(BG_VRAM + 0x7180)); + } + + if (a == 8 || a == 0) + { + LoadCompressedPalette(gStatusPal_Icons, 0xB0, 0x20); + retVal = TRUE; + } + + return retVal; +} + +void SetMonIconAnimByHP(u8 spriteId, u16 currentHP, u16 maxHP) +{ + u8 hpBarLevel = GetHPBarLevel(currentHP, maxHP); + u8 animNum = 0; + + if (currentHP != maxHP) + { + if (hpBarLevel == 3) + { + animNum = 1; + } + else if (hpBarLevel == 2) + { + animNum = 2; + } + else if (hpBarLevel == 1) + { + animNum = 3; + } + else + { + animNum = 4; + } + } + + sub_809D824(&gSprites[spriteId], animNum); +} + +void SetMonIconAnim(u8 spriteId, struct Pokemon *pokemon) +{ + u16 currentHP = GetMonData(pokemon, MON_DATA_HP); + u16 maxHP = GetMonData(pokemon, MON_DATA_MAX_HP); + + SetMonIconAnimByHP(spriteId, currentHP, maxHP); +} + +void CreatePartyMenuMonIcon(u8 taskId, u8 monIndex, u8 menuType, struct Pokemon *pokemon) +{ + u8 x = gUnknown_08376678[menuType][monIndex].x; + u8 y = gUnknown_08376678[menuType][monIndex].y; + + u16 species2 = GetMonData(pokemon, MON_DATA_SPECIES2); + u32 personality = GetMonData(pokemon, MON_DATA_PERSONALITY); + + u8 spriteId = CreateMonIcon(species2, sub_809D62C, x, y, 5, personality); + SetMonIconSpriteId(taskId, monIndex, spriteId); + SetMonIconAnim(spriteId, pokemon); +} + +void TryCreatePartyMenuMonIcon(u8 taskId, u8 monIndex, struct Pokemon *pokemon) +{ + if (GetMonData(pokemon, MON_DATA_SPECIES)) + { + bool8 isLinkDoubleBattle = IsLinkDoubleBattle(); + if (isLinkDoubleBattle == TRUE) + { + CreatePartyMenuMonIcon(taskId, monIndex, PARTY_MENU_LAYOUT_LINK_DOUBLE_BATTLE, pokemon); + } + else + { + CreatePartyMenuMonIcon(taskId, monIndex, IsDoubleBattle(), pokemon); + } + } +} + +void unref_sub_806D964(u8 taskId) +{ + u8 i; + for (i = 0; i < gPlayerPartyCount; i++) + { + TryCreatePartyMenuMonIcon(taskId, i, &gPlayerParty[i]); + } +} + +void CreateMonIcon_LinkMultiBattle(u8 taskId, u8 monIndex, u8 menuType, struct UnknownPokemonStruct2 *pokemon) +{ + u8 x = gUnknown_08376678[menuType][monIndex].x; + u8 y = gUnknown_08376678[menuType][monIndex].y; + + u8 spriteId = CreateMonIcon(pokemon->species, sub_809D62C, x, y, 5, pokemon->personality); + SetMonIconSpriteId(taskId, monIndex, spriteId); + SetMonIconAnimByHP(spriteId, pokemon->hp, pokemon->maxhp); +} + +void UpdateMonIconFrame_806DA0C(struct Sprite *sprite) +{ + u8 var1; + + var1 = UpdateMonIconFrame(sprite); + if (var1) + { + if (var1 & 1) + { + sprite->pos2.y = -3; + } + else + { + sprite->pos2.y = 1; + } + } +} + +void UpdateMonIconFrame_806DA38(struct Sprite *sprite) +{ + UpdateMonIconFrame(sprite); +} + +void UpdateMonIconFrame_806DA44(u8 taskId, u8 monIndex, u8 c) +{ + u8 spriteId; + + if (monIndex < PARTY_SIZE) + { + spriteId = GetMonIconSpriteId(taskId, monIndex); + gSprites[spriteId].pos2.y = 0; + gSprites[spriteId].data0 = 0; + + if (!c) + { + gSprites[spriteId].callback = UpdateMonIconFrame_806DA38; + } + else + { + gSprites[spriteId].callback = UpdateMonIconFrame_806DA0C; + } + } +} + +void LoadHeldItemIconGraphics(void) +{ + LoadSpriteSheet(&HeldItemsSpriteSheet); + LoadSpritePalette(&HeldItemsPalette); +} + +void SpriteCB_HeldItemIcon(struct Sprite *sprite) +{ + + u8 data7 = sprite->data7; + if (gSprites[data7].invisible) + { + sprite->invisible = 1; + } + else + { + sprite->invisible = 0; + sprite->pos1.x = gSprites[data7].pos1.x + gSprites[data7].pos2.x; + sprite->pos1.y = gSprites[data7].pos1.y + gSprites[data7].pos2.y; + } +} + +void CreateHeldItemIcon(u8 a, u8 b) +{ + u8 subPriority; + u8 spriteId; + + subPriority = gSprites[a].subpriority; + spriteId = CreateSprite(&gSpriteTemplate_837660C, 0xFA, 0xAA, subPriority - 1); + + gSprites[spriteId].pos2.x = 4; + gSprites[spriteId].pos2.y = 10; + gSprites[spriteId].callback = SpriteCB_HeldItemIcon; + gSprites[spriteId].data7 = a; + + StartSpriteAnim(&gSprites[spriteId], b); + gSprites[spriteId].callback(&gSprites[spriteId]); +} + +void CreateHeldItemIcons(u8 *a, u8 *b, u8 c) +{ + u16 i; + u16 heldItem; + + switch (c) + { + case 0: + i = 0; + while (i < a[0]) + { + heldItem = GetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM); + if (heldItem) + { + CreateHeldItemIcon(b[i], ItemIsMail(heldItem)); + } + + i++; + } + break; + case 1: + i = 0; + while (i < a[1]) + { + heldItem = GetMonData(&gEnemyParty[i], MON_DATA_HELD_ITEM); + if (heldItem) + { + CreateHeldItemIcon(b[i + 6], ItemIsMail(heldItem)); + } + + i++; + } + break; + } +} + +void CreateHeldItemIcons_806DC34(u8 taskId) +{ + u8 i; + u8 monIconSpriteId; + u8 heldItemSpriteId; + + for (i = 0; i < PARTY_SIZE; i++) + { + if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES)) + { + monIconSpriteId = GetMonIconSpriteId(taskId, i); + heldItemSpriteId = CreateSprite(&gSpriteTemplate_837660C, 0xFA, 0xAA, 4); + + gSprites[heldItemSpriteId].pos2.x = 4; + gSprites[heldItemSpriteId].pos2.y = 10; + gSprites[heldItemSpriteId].data7 = monIconSpriteId; + gSprites[monIconSpriteId].data7 = heldItemSpriteId; + + SetHeldItemIconVisibility(taskId, i); + gSprites[heldItemSpriteId].callback(&gSprites[heldItemSpriteId]); + } + } +} + +#ifdef NONMATCHING +void CreateHeldItemIcon_806DCD4(u8 taskId, u8 monIndex, u16 item) +{ + u8 monIconSpriteId; + u8 heldItemSpriteId; + + monIconSpriteId = GetMonIconSpriteId(taskId, monIndex); + heldItemSpriteId = CreateSprite(gSpriteTemplate_837660C, 0xFA, 0xAA, 4); + + gSprites[heldItemSpriteId].pos2.x = 4; + gSprites[heldItemSpriteId].pos2.y = 10; + gSprites[heldItemSpriteId].data7 = monIconSpriteId; + gSprites[monIconSpriteId].data7 = heldItemSpriteId; + + if (!item) + { + gSprites[heldItemSpriteId].invisible = 1; + } + else + { + if (ItemIsMail(item)) + { + StartSpriteAnim(&gSprites[heldItemSpriteId], 1); + } + else + { + StartSpriteAnim(&gSprites[heldItemSpriteId], 0); + } + + gSprites[heldItemSpriteId].invisible = 0; + } + + gSprites[heldItemSpriteId].callback(&gSprites[heldItemSpriteId]); +} +#else +__attribute__((naked)) +void CreateHeldItemIcon_806DCD4(u8 taskId, u8 monIndex, u16 item) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + lsls r1, 24\n\ + lsrs r1, 24\n\ + lsls r2, 16\n\ + lsrs r7, r2, 16\n\ + bl GetMonIconSpriteId\n\ + adds r4, r0, 0\n\ + lsls r4, 24\n\ + lsrs r4, 24\n\ + ldr r0, _0806DD2C @ =gSpriteTemplate_837660C\n\ + movs r1, 0xFA\n\ + movs r2, 0xAA\n\ + movs r3, 0x4\n\ + bl CreateSprite\n\ + lsls r0, 24\n\ + lsrs r6, r0, 24\n\ + ldr r1, _0806DD30 @ =gSprites\n\ + lsls r0, r6, 4\n\ + adds r0, r6\n\ + lsls r0, 2\n\ + adds r5, r0, r1\n\ + movs r0, 0x4\n\ + strh r0, [r5, 0x24]\n\ + movs r0, 0xA\n\ + strh r0, [r5, 0x26]\n\ + strh r4, [r5, 0x3C]\n\ + lsls r0, r4, 4\n\ + adds r0, r4\n\ + lsls r0, 2\n\ + adds r0, r1\n\ + strh r6, [r0, 0x3C]\n\ + cmp r7, 0\n\ + bne _0806DD34\n\ + adds r0, r5, 0\n\ + adds r0, 0x3E\n\ + ldrb r1, [r0]\n\ + movs r2, 0x4\n\ + orrs r1, r2\n\ + strb r1, [r0]\n\ + b _0806DD5C\n\ + .align 2, 0\n\ +_0806DD2C: .4byte gSpriteTemplate_837660C\n\ +_0806DD30: .4byte gSprites\n\ +_0806DD34:\n\ + adds r0, r7, 0\n\ + bl ItemIsMail\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + beq _0806DD46\n\ + adds r0, r5, 0\n\ + movs r1, 0x1\n\ + b _0806DD4A\n\ +_0806DD46:\n\ + adds r0, r5, 0\n\ + movs r1, 0\n\ +_0806DD4A:\n\ + bl StartSpriteAnim\n\ + adds r2, r5, 0\n\ + adds r2, 0x3E\n\ + ldrb r1, [r2]\n\ + movs r0, 0x5\n\ + negs r0, r0\n\ + ands r0, r1\n\ + strb r0, [r2]\n\ +_0806DD5C:\n\ + ldr r2, _0806DD78 @ =gSprites\n\ + lsls r0, r6, 4\n\ + adds r0, r6\n\ + lsls r0, 2\n\ + adds r1, r2, 0\n\ + adds r1, 0x1C\n\ + adds r1, r0, r1\n\ + adds r0, r2\n\ + ldr r1, [r1]\n\ + bl _call_via_r1\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_0806DD78: .4byte gSprites\n\ + .syntax divided\n"); +} +#endif // NONMATCHING + +void SpriteCB_UpdateHeldItemIconPosition(struct Sprite *sprite) +{ + u8 spriteId = sprite->data7; + + sprite->pos1.x = gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x; + sprite->pos1.y = gSprites[spriteId].pos1.y; +} + +u8 GetMonIconSpriteId(u8 taskId, u8 monIndex) +{ + switch (monIndex) + { + case 1: + return gTasks[taskId].data[0]; + break; + case 2: + return gTasks[taskId].data[1] >> 8; + break; + case 3: + return gTasks[taskId].data[1]; + break; + case 4: + return gTasks[taskId].data[2] >> 8; + break; + case 5: + return gTasks[taskId].data[2]; + break; + case 0: + default: + return gTasks[taskId].data[0] >> 8; + break; + } +} + +void SetMonIconSpriteId(u8 taskId, u8 monIndex, u8 spriteId) +{ + switch (monIndex) + { + case 0: + gTasks[taskId].data[0] = (u8)gTasks[taskId].data[0] | (spriteId << 8); + break; + case 1: + gTasks[taskId].data[0] = (gTasks[taskId].data[0] & -0x100) | spriteId; + break; + case 2: + gTasks[taskId].data[1] = (u8)gTasks[taskId].data[1] | (spriteId << 8); + break; + case 3: + gTasks[taskId].data[1] = (gTasks[taskId].data[1] & -0x100) | spriteId; + break; + case 4: + gTasks[taskId].data[2] = (u8)gTasks[taskId].data[2] | (spriteId << 8); + break; + case 5: + gTasks[taskId].data[2] = (gTasks[taskId].data[2] & -0x100) | spriteId; + break; + } +} + +u16 GetMonHeldItemIconSpriteId(u8 taskId, u8 monIndex) +{ + u8 spriteId = GetMonIconSpriteId(taskId, monIndex); + u8 retVal = gSprites[spriteId].data7; + return retVal; +} + +#ifdef NONMATCHING +void SetHeldItemIconVisibility(u8 taskId, u8 monIndex) +{ + u8 spriteId; + u16 heldItem; + + spriteId = GetMonHeldItemIconSpriteId(taskId, monIndex); + if (!GetMonData(&gPlayerParty[monIndex], MON_DATA_HELD_ITEM)) + { + gSprites[spriteId].invisible = 1; + } + else + { + struct Sprite *sprite; + + heldItem = GetMonData(&gPlayerParty[monIndex], MON_DATA_HELD_ITEM); + sprite = &gSprites[spriteId]; + if (ItemIsMail(heldItem)) + { + StartSpriteAnim(sprite, 1); + } + else + { + StartSpriteAnim(sprite, 0); + } + + sprite->invisible = 0; + } +} +#else +__attribute__((naked)) +void SetHeldItemIconVisibility(u8 a, u8 monIndex) +{ + asm(".syntax unified\n\ + push {r4-r6,lr}\n\ + adds r4, r1, 0\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + lsls r4, 24\n\ + lsrs r4, 24\n\ + adds r1, r4, 0\n\ + bl GetMonHeldItemIconSpriteId\n\ + lsls r0, 24\n\ + lsrs r5, r0, 24\n\ + adds r6, r5, 0\n\ + movs r0, 0x64\n\ + adds r1, r4, 0\n\ + muls r1, r0\n\ + ldr r0, _0806DFA4 @ =gPlayerParty\n\ + adds r4, r1, r0\n\ + adds r0, r4, 0\n\ + movs r1, 0xC\n\ + bl GetMonData\n\ + cmp r0, 0\n\ + bne _0806DFAC\n\ + ldr r1, _0806DFA8 @ =gSprites\n\ + lsls r0, r5, 4\n\ + adds r0, r5\n\ + lsls r0, 2\n\ + adds r0, r1\n\ + adds r0, 0x3E\n\ + ldrb r1, [r0]\n\ + movs r2, 0x4\n\ + orrs r1, r2\n\ + strb r1, [r0]\n\ + b _0806DFF6\n\ + .align 2, 0\n\ +_0806DFA4: .4byte gPlayerParty\n\ +_0806DFA8: .4byte gSprites\n\ +_0806DFAC:\n\ + adds r0, r4, 0\n\ + movs r1, 0xC\n\ + bl GetMonData\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + bl ItemIsMail\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + beq _0806DFD8\n\ + lsls r4, r5, 4\n\ + adds r4, r5\n\ + lsls r4, 2\n\ + ldr r0, _0806DFD4 @ =gSprites\n\ + adds r4, r0\n\ + adds r0, r4, 0\n\ + movs r1, 0x1\n\ + b _0806DFE6\n\ + .align 2, 0\n\ +_0806DFD4: .4byte gSprites\n\ +_0806DFD8:\n\ + lsls r4, r6, 4\n\ + adds r4, r6\n\ + lsls r4, 2\n\ + ldr r0, _0806DFFC @ =gSprites\n\ + adds r4, r0\n\ + adds r0, r4, 0\n\ + movs r1, 0\n\ +_0806DFE6:\n\ + bl StartSpriteAnim\n\ + adds r4, 0x3E\n\ + ldrb r1, [r4]\n\ + movs r0, 0x5\n\ + negs r0, r0\n\ + ands r0, r1\n\ + strb r0, [r4]\n\ +_0806DFF6:\n\ + pop {r4-r6}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_0806DFFC: .4byte gSprites\n\ + .syntax divided\n"); +} +#endif // NONMATCHING + +void PartyMenuDoPrintMonNickname(u8 monIndex, int b, const u8 *nameBuffer) +{ + u32 var1 = 0; + CpuFastSet(&var1, gTileBuffer, 0x1000100); + sub_8004E3C((struct WindowConfig *)&gWindowConfig_81E6CAC, gTileBuffer, nameBuffer); + CpuFastSet(gTileBuffer, (void *)(OBJ_VRAM1 + (monIndex * 0x400)), 128); +} + +void PrintPartyMenuMonNickname(u8 monIndex, u8 b, struct Pokemon *pokemon) +{ + u8 nameBuffer[12]; + GetMonNickname(pokemon, nameBuffer); + PartyMenuDoPrintMonNickname(monIndex, b, nameBuffer); +} + +void TryPrintPartyMenuMonNickname(u8 monIndex, struct Pokemon *pokemon) +{ + if (GetMonData(pokemon, MON_DATA_SPECIES)) + { + bool8 isLinkDoubleBattle = IsLinkDoubleBattle(); + if (isLinkDoubleBattle == TRUE) + { + PrintPartyMenuMonNickname(monIndex, PARTY_MENU_LAYOUT_LINK_DOUBLE_BATTLE, pokemon); + } + else + { + PrintPartyMenuMonNickname(monIndex, IsDoubleBattle(), pokemon); + } + } +} + +void PrintPartyMenuMonNicknames(void) +{ + u8 i; + + for (i = 0; i < PARTY_SIZE; i++) + { + TryPrintPartyMenuMonNickname(i, &gPlayerParty[i]); + } +} + +u8 *GetMonNickname(struct Pokemon *pokemon, u8 *stringBuffer) +{ + GetMonData(pokemon, MON_DATA_NICKNAME, stringBuffer); + return StringGetEnd10(stringBuffer); +} + +void PartyMenuPutStatusTilemap(u8 monIndex, u8 menuLayout, u8 status) +{ + u8 i; + u8 x = gUnknown_08376738[menuLayout][monIndex].x - 1; + u8 y = gUnknown_08376738[menuLayout][monIndex].y + 1; + u16 *vramPtr = (u16*)(VRAM + 0xF000) + (x + y * 32); + u8 var1 = status * 4; + + for (i = 0; i < 4; i++) + { + vramPtr[i] = (0x18C + var1 + i) | -0x5000; + } +} + +static void PartyMenuClearLevelStatusTilemap(u8 monIndex) +{ + bool8 isLinkDoubleBattle; + u8 menuLayout; + u8 x; + u8 y; + u16 *vramPtr; + u8 i; + + isLinkDoubleBattle = IsLinkDoubleBattle(); + if (isLinkDoubleBattle == TRUE) + { + menuLayout = PARTY_MENU_LAYOUT_LINK_DOUBLE_BATTLE; + } + else + { + menuLayout = IsDoubleBattle(); + } + + x = gUnknown_08376738[menuLayout][monIndex].x - 1; + y = gUnknown_08376738[menuLayout][monIndex].y + 1; + + vramPtr = (u16*)(VRAM + 0xF000) + (x + y * 32); + for (i = 0; i < 4; i++) + { + vramPtr[i] = 0; + } +} + +static void PartyMenuWriteTilemap(u8 a, u8 x, u8 y) +{ + u16 *vramPtr = (u16*)(VRAM + 0xF000) + (x + y * 32); + *vramPtr = a + 0x10C; +} + +void PartyMenuDoPrintLevel(u8 monIndex, u8 menuLayout, u8 level) +{ + u8 *stringVar; + u32 var1; + u8 x = gUnknown_08376738[menuLayout][monIndex].x; + u8 y = gUnknown_08376738[menuLayout][monIndex].y; + + PartyMenuWriteTilemap(0x40, x - 1, y + 1); + + stringVar = gStringVar1; + stringVar[0] = 0xFC; + stringVar[1] = 0x12; + stringVar[2] = 0x8; + + ConvertIntToDecimalString(&stringVar[3], level); + + var1 = 0; + CpuFastSet(&var1, gUnknown_02039460, 0x1000020); + sub_8004E3C((struct WindowConfig *)&gWindowConfig_81E6CAC, gUnknown_02039460 - 0x100 /*gTileBuffer*/, gStringVar1); + CpuFastSet(gUnknown_02039460, (void *)(OBJ_VRAM1 + 0x200 + (monIndex * 0x400)), 32); +} + +void PartyMenuPrintLevel(u8 monIndex, u8 menuLayout, struct Pokemon *pokemon) +{ + u16 level = GetMonData(pokemon, MON_DATA_LEVEL); + PartyMenuDoPrintLevel(monIndex, menuLayout, level); +} + +void PartyMenuPrintMonLevelOrStatus(u8 monIndex, struct Pokemon *pokemon) +{ + if (GetMonData(pokemon, MON_DATA_SPECIES) && !GetMonData(pokemon, MON_DATA_IS_EGG)) + { + u8 statusAndPkrs; + bool8 isLinkDoubleBattle; + u8 menuLayout; + + statusAndPkrs = GetMonStatusAndPokerus(pokemon); + + isLinkDoubleBattle = IsLinkDoubleBattle(); + if (isLinkDoubleBattle == TRUE) + { + menuLayout = PARTY_MENU_LAYOUT_LINK_DOUBLE_BATTLE; + } + else + { + menuLayout = IsDoubleBattle(); + } + + if (statusAndPkrs != 0 && statusAndPkrs != 6) + { + PartyMenuPutStatusTilemap(monIndex, menuLayout, statusAndPkrs - 1); + } + else + { + PartyMenuPrintLevel(monIndex, menuLayout, pokemon); + } + + PartyMenuPrintGenderIcon(monIndex, menuLayout, pokemon); + } +} + +void PartyMenuPrintMonsLevelOrStatus(void) +{ + u8 i; + + for (i = 0; i < PARTY_SIZE; i++) + { + PartyMenuPrintMonLevelOrStatus(i, &gPlayerParty[i]); + } +} + +void PartyMenuDoPrintGenderIcon(u16 species, u8 gender, u8 menuLayout, u8 monIndex, u8 *nickname) +{ + if (!ShouldHideGenderIcon(species, nickname)) + { + u8 x = gUnknown_08376738[menuLayout][monIndex].x + 3; + u8 y = gUnknown_08376738[menuLayout][monIndex].y + 1; + + switch (gender) + { + case MON_MALE: + PartyMenuWriteTilemap(0x42, x, y); + break; + case MON_FEMALE: + PartyMenuWriteTilemap(0x44, x, y); + break; + } + } +} + +void PartyMenuPrintGenderIcon(u8 monIndex, u8 menuLayout, struct Pokemon *pokemon) +{ + u16 species2; + u8 gender; + + GetMonNickname(pokemon, gStringVar1); + species2 = GetMonData(pokemon, MON_DATA_SPECIES2); + gender = GetMonGender(pokemon); + PartyMenuDoPrintGenderIcon(species2, gender, menuLayout, monIndex, gStringVar1); +} + +void PartyMenuDoPrintHP(u8 monIndex, u8 b, u16 currentHP, u16 maxHP) +{ + u32 *var; + register u8 *stringVar1 asm("r2") = gStringVar1; + register u8 *textPtr asm("r2") = sub_8072C14(stringVar1, currentHP, 15, 1); + textPtr[0] = CHAR_SLASH; + + sub_8072C14(++textPtr, maxHP, 35, 1); + var = 0; + + CpuFastSet(&var, gUnknown_02039460, 0x1000040); + sub_8004E3C((struct WindowConfig *)&gWindowConfig_81E6CAC, gUnknown_02039460 - 0x100 /*gTileBuffer*/, gStringVar1); + CpuFastSet(gUnknown_02039460, (void *)(OBJ_VRAM1 + 0x300 + (monIndex * 0x400)), 64); +} + +void PartyMenuPrintHP(u8 monIndex, u8 b, struct Pokemon *pokemon) +{ + u16 currentHP; + u16 maxHP; + + currentHP = GetMonData(pokemon, MON_DATA_HP); + maxHP = GetMonData(pokemon, MON_DATA_MAX_HP); + + PartyMenuDoPrintHP(monIndex, b, currentHP, maxHP); +} + +void PartyMenuTryPrintHP(u8 monIndex, struct Pokemon *pokemon) +{ + if (GetMonData(pokemon, MON_DATA_SPECIES) && !GetMonData(pokemon, MON_DATA_IS_EGG)) + { + bool8 isLinkDoubleBattle = IsLinkDoubleBattle(); + if (isLinkDoubleBattle == TRUE) + { + PartyMenuPrintHP(monIndex, PARTY_MENU_LAYOUT_LINK_DOUBLE_BATTLE, pokemon); + } + else + { + PartyMenuPrintHP(monIndex, IsDoubleBattle(), pokemon); + } + } +} + +void PartyMenuTryPrintMonsHP(void) +{ + u8 i; + + for (i = 0; i < PARTY_SIZE; i++) + { + PartyMenuTryPrintHP(i, &gPlayerParty[i]); + } +} + +void unref_sub_806E564(void) { } +void unref_sub_806E568(void) { } +void nullsub_12(u8 monIndex, struct Pokemon *pokemon) { } +void nullsub_13(void) { } + +void PartyMenuDoDrawHPBar(u8 monIndex, u8 menuLayout, u16 currentHP, u16 maxHP) +{ + u8 hpBarLevel; + u16 *vramPtr; + int var = -32768; + struct BattleInterfaceStruct1 battleInterface; + battleInterface.unk0 = maxHP; + battleInterface.unk4 = currentHP; + battleInterface.unk8 = 0; + + hpBarLevel = GetHPBarLevel(currentHP, maxHP); + if (hpBarLevel > 2) + { + battleInterface.unkC_0 = 4; + } + if (hpBarLevel == 2) + { + battleInterface.unkC_0 = 5; + } + if (hpBarLevel < 2) + { + battleInterface.unkC_0 = 6; + } + + battleInterface.unk10 = 0x100; + + vramPtr = gUnknown_08376858[menuLayout][monIndex]; + sub_80460C8(&battleInterface, &var, vramPtr, 0); + + vramPtr -= 2; + + vramPtr[0] = 0x3109; + vramPtr[1] = 0x310A; + vramPtr[8] = 0x310B; +} + +void PartyMenuDrawHPBar(u8 monIndex, u8 menuLayout, struct Pokemon *pokemon) +{ + u16 currentHP = GetMonData(pokemon, MON_DATA_HP); + u16 maxHP = GetMonData(pokemon, MON_DATA_MAX_HP); + + PartyMenuDoDrawHPBar(monIndex, menuLayout, currentHP, maxHP); +} + +void PartyMenuTryDrawHPBar(u8 monIndex, struct Pokemon *pokemon) +{ + if (GetMonData(pokemon, MON_DATA_SPECIES) && !GetMonData(pokemon, MON_DATA_IS_EGG)) + { + bool8 isDoubleBattle = IsLinkDoubleBattle(); + if (isDoubleBattle == TRUE) + { + PartyMenuDrawHPBar(monIndex, PARTY_MENU_LAYOUT_LINK_DOUBLE_BATTLE, pokemon); + } + else + { + PartyMenuDrawHPBar(monIndex, IsDoubleBattle(), pokemon); + } + } +} + +void PartyMenuDrawHPBars(void) +{ + u8 i; + + for (i = 0; i < PARTY_SIZE; i++) + { + PartyMenuTryDrawHPBar(i, &gPlayerParty[i]); + } +} + +void SwapPokemon(struct Pokemon *a, struct Pokemon *b) +{ + struct Pokemon temp = *a; + *a = *b; + *b = temp; +} + +void SetPartyPopupMenuOffsets(u8 menuIndex, u8 *left, u8 *top, const struct PartyPopupMenu *menu) +{ + u8 bottomOffset = (2 * menu[menuIndex].numChoices) + 2; + u8 rightOffset = menu[menuIndex].width + 1; + + *left = 30 - rightOffset; + *top = 20 - bottomOffset; +} + +void ShowPartyPopupMenu(u8 menuIndex, const struct PartyPopupMenu *menu, const struct MenuAction2 *menuActions, u8 cursorPos) +{ + u8 left; + u8 top; + + SetPartyPopupMenuOffsets(menuIndex, &left, &top, menu); + sub_8089C50(left, top, menu[menuIndex].width, menu[menuIndex].numChoices, menuActions, menu[menuIndex].items); + + InitMenu(0, left + 1, top + 1, menu[menuIndex].numChoices, cursorPos, menu[menuIndex].width - 1); +} + +void ClosePartyPopupMenu(u8 index, const struct PartyPopupMenu *menu) +{ + u8 left; + u8 top; + + SetPartyPopupMenuOffsets(index, &left, &top, menu); + + MenuZeroFillWindowRect(left, top, left + menu[index].width, menu[index].numChoices * 2 + top + 1); + HandleDestroyMenuCursors(); +} + +TaskFunc PartyMenuGetPopupMenuFunc(u8 menuIndex, const struct PartyPopupMenu *menus, const struct MenuAction2 *menuActions, u8 itemIndex) +{ + u8 action = menus[menuIndex].items[itemIndex]; + return menuActions[action].func; +} + +u8 sub_806E834(const u8 *message, u8 arg1) +{ + u8 taskId; + + gUnknown_0202E8F6 = 1; + + MenuDrawTextWindow(WINDOW_LEFT, 14, WINDOW_RIGHT, 19); + MenuPrintMessage(message, WINDOW_LEFT + 1, 15); + + taskId = CreateTask(sub_806E884, 1); + gTasks[taskId].data[0] = arg1; + + return taskId; +} + +static void sub_806E884(u8 taskId) +{ + if (MenuUpdateWindowText()) + { + gUnknown_0202E8F6 = 0; + if (gTasks[taskId].data[0] == 0) + MenuZeroFillWindowRect(WINDOW_LEFT, 14, WINDOW_RIGHT, 19); + DestroyTask(taskId); + } +} + +void sub_806E8D0(u8 taskId, u16 b, TaskFunc c) +{ + ewram1C000.unk10 = c; + ewram1C000.unk4 = taskId; + ewram1C000.unk5 = sub_806CA38(taskId); + ewram1C000.unk6 = b; + ewram1C000.pokemon = &gPlayerParty[ewram1C000.unk5]; +} + +bool8 PartyMenuUpdateMonHeldItem(struct Pokemon *pkmn, u16 item) +{ + u8 itemData[2]; + + if (ItemIsMail(item) == TRUE) + { + if (GiveMailToMon(pkmn, item) == 0xFF) + return TRUE; + gUnknown_0202E8F4 = 2; + } + else + { + gUnknown_0202E8F4 = 1; + } + + itemData[0] = item; + itemData[1] = item >> 8; + SetMonData(pkmn, MON_DATA_HELD_ITEM, itemData); + return FALSE; +} + +void PartyMenuTryGiveMonHeldItem(u8 taskId, u16 newItem, TaskFunc c) +{ + u16 currentItem; + + gTasks[taskId].func = TaskDummy; + sub_806E8D0(taskId, newItem, c); + currentItem = GetMonData(ewram1C000.pokemon, MON_DATA_HELD_ITEM); + gUnknown_0202E8F4 = 0; + gUnknown_0202E8F8 = 0; + if (currentItem != 0) + { + if (ItemIsMail(currentItem) == TRUE) + { + sub_806E834(gOtherText_MailMustBeRemoved, 1); + CreateTask(party_menu_link_mon_held_item_object, 5); + } + else + { + GetMonNickname(ewram1C000.pokemon, gStringVar1); + CopyItemName(currentItem, gStringVar2); + StringExpandPlaceholders(gStringVar4, gOtherText_AlreadyHolding); + sub_806E834(gStringVar4, 1); + CreateTask(Task_ConfirmGiveHeldItem, 5); + if (ItemIsMail(newItem) == TRUE) + gUnknown_0202E8F8 = currentItem; + } + } + else + { + PartyMenuUpdateMonHeldItem(ewram1C000.pokemon, newItem); + RemoveBagItem(newItem, 1); + if (ItemIsMail(newItem)) + { + gTasks[taskId].func = c; + } + else + { + DisplayGiveHeldItemMessage(ewram1C000.unk5, newItem, 1); + CreateTask(party_menu_link_mon_held_item_object, 5); + } + } +} + +void party_menu_link_mon_held_item_object(u8 taskId) +{ + if (gUnknown_0202E8F6 == 0) + { + SetHeldItemIconVisibility(ewram1C000.unk4, ewram1C000.unk5); + gTasks[ewram1C000.unk4].func = ewram1C000.unk10; + DestroyTask(taskId); + } +} + +void PartyMenuTryGiveMonHeldItem_806EACC(u8 taskId) +{ + s8 selection = ProcessMenuInputNoWrap_(); + + if (selection == 0) + { + u16 currentItem; + + MenuZeroFillWindowRect(23, 8, 29, 13); + currentItem = GetMonData(ewram1C000.pokemon, MON_DATA_HELD_ITEM); + RemoveBagItem(ewram1C000.unk6, 1); + if (AddBagItem(currentItem, 1) == TRUE) + { + PartyMenuUpdateMonHeldItem(ewram1C000.pokemon, ewram1C000.unk6); + if (ItemIsMail(ewram1C000.unk6)) + { + DisplayTakeHeldItemMessage(ewram1C000.unk5, currentItem, 1); + } + else + { + CopyItemName(ewram1C000.unk6, gStringVar1); + StringExpandPlaceholders(gStringVar4, gOtherText_TakenAndReplaced); + sub_806E834(gStringVar4, 1); + } + } + else + { + sub_806E834(gOtherText_BagFullCannotRemoveItem, 0); + AddBagItem(ewram1C000.unk6, 1); + } + } + else + { + if (selection != 1 && selection != -1) + return; + if (selection == -1) + PlaySE(SE_SELECT); + MenuZeroFillWindowRect(23, 8, 29, 13); + } + gTasks[taskId].func = party_menu_link_mon_held_item_object; +} + +void Task_ConfirmGiveHeldItem(u8 taskId) +{ + if (gUnknown_0202E8F6 == 0) + { + DisplayYesNoMenu(23, 8, 1); + gTasks[taskId].func = PartyMenuTryGiveMonHeldItem_806EACC; + } +} + +void DisplayGiveHeldItemMessage(u8 a, u16 b, u8 c) +{ + GetMonNickname(&gPlayerParty[a], gStringVar1); + CopyItemName(b, gStringVar2); + StringExpandPlaceholders(gStringVar4, gOtherText_WasGivenToHold); + sub_806E834(gStringVar4, c); +} + +void PartyMenuTryGiveMonMail(u8 taskId, TaskFunc func) +{ + u32 var1; + u16 currentItem; + struct MailStruct *mail; + + gTasks[taskId].func = TaskDummy; + sub_806E8D0(taskId, 0, func); + currentItem = GetMonData(ewram1C000.pokemon, MON_DATA_HELD_ITEM); + gUnknown_0202E8F4 = 0; + var1 = ewram1FE00.unkE00 + 6; + mail = &gSaveBlock1.mail[var1 + ewram1FE00.unkE02]; + + if (currentItem != 0) + { + sub_806E834(gOtherText_PokeHoldingItemCantMail, 1); + CreateTask(party_menu_link_mon_held_item_object, 5); + } + else + { + GiveMailToMon2(ewram1C000.pokemon, mail); + ClearMailStruct(mail); + sub_806E834(gOtherText_MailTransferredMailbox, 1); + CreateTask(party_menu_link_mon_held_item_object, 5); + } +} + +void PartyMenuTryGiveMonHeldItem_806ECE8(u8 taskId, TaskFunc func) +{ + u16 currentItem; + + gTasks[taskId].func = TaskDummy; + sub_806E8D0(taskId, 0, func); + currentItem = GetMonData(ewram1C000.pokemon, MON_DATA_HELD_ITEM); + if (currentItem == 0) + { + StringExpandPlaceholders(gStringVar4, gOtherText_NotHoldingAnything); + sub_806E834(gStringVar4, 0); + CreateTask(party_menu_link_mon_held_item_object, 5); + } + else + { + u8 itemData[2]; + + itemData[0] = 0; + itemData[1] = 0; + if (AddBagItem(currentItem, 1) == TRUE) + { + if (ItemIsMail(currentItem) == TRUE) + TakeMailFromMon(ewram1C000.pokemon); + DisplayTakeHeldItemMessage(ewram1C000.unk5, currentItem, 0); + SetMonData(ewram1C000.pokemon, MON_DATA_HELD_ITEM, itemData); + } + else + { + sub_806E834(gOtherText_BagFullCannotRemoveItem, 0); + } + CreateTask(party_menu_link_mon_held_item_object, 5); + } +} + +void DisplayTakeHeldItemMessage(u8 a, u16 b, u8 c) +{ + GetMonNickname(&gPlayerParty[a], gStringVar1); + CopyItemName(b, gStringVar2); + StringExpandPlaceholders(gStringVar4, gOtherText_ReceivedTheThingFrom); + sub_806E834(gStringVar4, c); +} + +void DoTakeMail(u8 taskId, TaskFunc func) +{ + gTasks[taskId].func = TaskDummy; + sub_806E8D0(taskId, 0, func); + ewram1C000.unk6 = GetMonData(ewram1C000.pokemon, MON_DATA_HELD_ITEM); + sub_806E834(gOtherText_SendRemovedMailPrompt, 1); + CreateTask(Task_ConfirmTakeHeldMail, 5); +} + +void Task_LoseMailMessage(u8 taskId) +{ + s8 selection = ProcessMenuInputNoWrap_(); + + if (selection == 0) + { + if (AddBagItem(ewram1C000.unk6, 1) == TRUE) + { + TakeMailFromMon(ewram1C000.pokemon); + sub_806E834(gOtherText_MailTaken, 0); + } + else + { + sub_806E834(gOtherText_BagFullCannotRemoveItem, 0); + } + MenuZeroFillWindowRect(23, 8, 29, 13); + gTasks[taskId].func = party_menu_link_mon_held_item_object; + } + else + { + if (selection != 1 && selection != -1) + return; + if (selection == -1) + PlaySE(SE_SELECT); + MenuZeroFillWindowRect(23, 8, 29, 13); + MenuZeroFillWindowRect(0, 14, 29, 19); + gTasks[taskId].func = party_menu_link_mon_held_item_object; + } +} + +void Task_ConfirmLoseMailMessage(u8 taskId) +{ + if (gUnknown_0202E8F6 == 0) + { + DisplayYesNoMenu(23, 8, 1); + gTasks[taskId].func = Task_LoseMailMessage; + } +} + +void Task_TakeHeldMail(u8 taskId) +{ + s8 selection = ProcessMenuInputNoWrap_(); + + if (selection == 0) + { + MenuZeroFillWindowRect(23, 8, 29, 13); + if (TakeMailFromMon2(ewram1C000.pokemon) != 0xFF) + sub_806E834(gOtherText_MailWasSent, 0); + else + sub_806E834(gOtherText_MailboxIsFull, 0); + gTasks[taskId].func = party_menu_link_mon_held_item_object; + } + else + { + if (selection != 1 && selection != -1) + return; + if (selection == -1) + PlaySE(SE_SELECT); + MenuZeroFillWindowRect(23, 8, 29, 13); + sub_806E834(gOtherText_MailRemovedMessageLost, 1); + gTasks[taskId].func = Task_ConfirmLoseMailMessage; + } +} + +void Task_ConfirmTakeHeldMail(u8 taskId) +{ + if (gUnknown_0202E8F6 == 0) + { + DisplayYesNoMenu(23, 8, 1); + gTasks[taskId].func = Task_TakeHeldMail; + } +} + +u16 ItemIdToBattleMoveId(u16 item) +{ + u16 machineNumber = item - ITEM_TM01; + return TMHMMoves[machineNumber]; +} + +bool8 pokemon_has_move(struct Pokemon *pkmn, u16 move) +{ + u8 i; + + for (i = 0; i < 4; i++) + { + if (GetMonData(pkmn, MON_DATA_MOVE1 + i) == move) + return TRUE; + } + return FALSE; +} + +void TeachMonTMMove(u8 taskId, u16 move, TaskFunc func) +{ + PlaySE(SE_SELECT); + gTasks[taskId].func = TaskDummy; + sub_806E8D0(taskId, move, func); + CreateTask(Task_TeamMonTMMove, 5); +} + +void Task_TeamMonTMMove(u8 taskId) +{ + GetMonNickname(ewram1C000.pokemon, gStringVar1); + ewram1C000.unk8 = ItemIdToBattleMoveId(ewram1C000.unk6); + StringCopy(gStringVar2, gMoveNames[ewram1C000.unk8]); + ewram1B000.unk282 = 0; + if (pokemon_has_move(ewram1C000.pokemon, ewram1C000.unk8)) + { + StringExpandPlaceholders(gStringVar4, gOtherText_AlreadyKnows); + sub_806E834(gStringVar4, 1); + gTasks[taskId].func = party_menu_link_mon_held_item_object; + } + else + { + if (!CanMonLearnTMHM(ewram1C000.pokemon, ewram1C000.unk6 - 33)) + { + StringExpandPlaceholders(gStringVar4, gOtherText_NotCompatible); + sub_806E834(gStringVar4, 1); + gTasks[taskId].func = party_menu_link_mon_held_item_object; + } + else + { + if (GiveMoveToMon(ewram1C000.pokemon, ewram1C000.unk8) != 0xFFFF) + { + Task_TeamMonTMMove2(taskId); + } + else + { + StringExpandPlaceholders(gStringVar4, gOtherText_WantsToLearn); + sub_806E834(gStringVar4, 1); + gTasks[taskId].func = sub_806F358; + } + } + } +} + +void Task_TeamMonTMMove2(u8 taskId) +{ + StringCopy(gStringVar2, gMoveNames[ewram1C000.unk8]); + StringExpandPlaceholders(gStringVar4, gOtherText_LearnedMove); + sub_806E834(gStringVar4, 1); + AdjustFriendship(ewram1C000.pokemon, 4); + if (ewram1B000.unk282 == 0 && ewram1C000.unk6 <= 0x152) + RemoveBagItem(ewram1C000.unk6, 1); + gTasks[taskId].func = Task_TeamMonTMMove3; +} + +void Task_TeamMonTMMove3(u8 taskId) +{ + if (gUnknown_0202E8F6 == 0) + { + PlayFanfare(BGM_FANFA1); + gTasks[taskId].func = Task_TeamMonTMMove4; + } +} + +void Task_TeamMonTMMove4(u8 taskId) +{ + if (IsFanfareTaskInactive()) + { + if ((gMain.newKeys & A_BUTTON) || (gMain.newKeys & B_BUTTON)) + { + SetHeldItemIconVisibility(ewram1C000.unk4, ewram1C000.unk5); + if (ewram1B000.unk282 == 1) + { + TeachMonMoveInPartyMenu(taskId); + } + else + { + gTasks[ewram1C000.unk4].func = ewram1C000.unk10; + DestroyTask(taskId); + } + } + } +} + +void sub_806F2FC(u8 taskId) +{ + if (gUnknown_0202E8F6 == 0) + { + SetHeldItemIconVisibility(ewram1C000.unk4, ewram1C000.unk5); + if (ewram1B000.unk282 == 1) + { + TeachMonMoveInPartyMenu(taskId); + } + else + { + gTasks[ewram1C000.unk4].func = ewram1C000.unk10; + DestroyTask(taskId); + } + } +} + +void sub_806F358(u8 taskId) +{ + if (gUnknown_0202E8F6 == 0) + { + DisplayYesNoMenu(23, 8, 1); + gTasks[taskId].func = sub_806F390; + } +} + +void sub_806F390(u8 taskId) +{ + s8 selection = ProcessMenuInputNoWrap_(); + + if (selection == 0) + { + MenuZeroFillWindowRect(23, 8, 29, 13); + sub_806E834(gOtherText_WhichMoveToForget2, 1); + gTasks[taskId].func = sub_806F44C; + } + else + { + if (selection != 1 && selection != -1) + return; + if (selection == -1) + PlaySE(SE_SELECT); + StopTryingToTeachMove_806F614(taskId); + } +} + +void sub_806F3FC(u8 taskId) +{ + if (!gPaletteFade.active) + { + sub_809D9F0(gPlayerParty, ewram1C000.unk5, gPlayerPartyCount - 1, sub_808B564, ewram1C000.unk8); + DestroyTask(taskId); + } +} + +void sub_806F44C(u8 taskId) +{ + if (gUnknown_0202E8F6 == 0) + { + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); + gTasks[taskId].func = sub_806F3FC; + } +} + +void TaughtMove(u8 taskId) +{ + if (!gPaletteFade.active) + { + u8 moveIndex; + u16 r4; + + gTasks[taskId].func = TaskDummy; + sub_806E8D0(taskId, gScriptItemId, sub_808B508); + moveIndex = sub_809FA30(); + r4 = GetMonData(ewram1C000.pokemon, MON_DATA_MOVE1 + moveIndex); + GetMonNickname(ewram1C000.pokemon, gStringVar1); + StringCopy(gStringVar2, gMoveNames[r4]); + StringExpandPlaceholders(gStringVar4, gOtherText_ForgetMove123_2); + sub_806E834(gStringVar4, 1); + CreateTask(TMMoveUpdateMoveSlot, 5); + } +} + +void TMMoveUpdateMoveSlot(u8 taskId) +{ + if (gUnknown_0202E8F6 == 0) + { + RemoveMonPPBonus(ewram1C000.pokemon, sub_809FA30()); + SetMonMoveSlot(ewram1C000.pokemon, ewram1C000.unk8, sub_809FA30()); + Task_TeamMonTMMove2(taskId); + } +} + +void StopTryingToTeachMove_806F588(u8 taskId) +{ + if (!gPaletteFade.active) + { + gTasks[taskId].func = TaskDummy; + sub_806E8D0(taskId, gScriptItemId, sub_808B508); + StringCopy(gStringVar2, gMoveNames[ewram1C000.unk8]); + StringExpandPlaceholders(gStringVar4, gOtherText_StopTryingTo); + sub_806E834(gStringVar4, 1); + CreateTask(StopTryingToTeachMove_806F67C, 5); + } +} + +void StopTryingToTeachMove_806F614(u8 taskId) +{ + MenuZeroFillWindowRect(23, 8, 29, 13); + StringCopy(gStringVar2, gMoveNames[ewram1C000.unk8]); + StringExpandPlaceholders(gStringVar4, gOtherText_StopTryingTo); + sub_806E834(gStringVar4, 1); + gTasks[taskId].func = StopTryingToTeachMove_806F67C; +} + +void StopTryingToTeachMove_806F67C(u8 taskId) +{ + if (gUnknown_0202E8F6 == 0) + { + DisplayYesNoMenu(23, 8, 1); + gTasks[taskId].func = StopTryingToTeachMove_806F6B4; + } +} + +void StopTryingToTeachMove_806F6B4(u8 taskId) +{ + s8 selection = ProcessMenuInputNoWrap_(); + + if (selection == 0) + { + MenuZeroFillWindowRect(23, 8, 29, 13); + GetMonNickname(ewram1C000.pokemon, gStringVar1); + StringCopy(gStringVar2, gMoveNames[ewram1C000.unk8]); + StringExpandPlaceholders(gStringVar4, gOtherText_DidNotLearnMove2); + sub_806E834(gStringVar4, 1); + gTasks[taskId].func = sub_806F2FC; + } + else + { + if (selection != 1 && selection != -1) + return; + if (selection == -1) + PlaySE(SE_SELECT); + MenuZeroFillWindowRect(23, 8, 29, 13); + GetMonNickname(ewram1C000.pokemon, gStringVar1); + StringCopy(gStringVar2, gMoveNames[ewram1C000.unk8]); + StringExpandPlaceholders(gStringVar4, gOtherText_WantsToLearn); + sub_806E834(gStringVar4, 1); + gTasks[taskId].func = sub_806F358; + } +} + +bool8 IsHMMove(u16 move) +{ + u8 i; + + for (i = 0; i < NUM_HIDDEN_MACHINES; i++) + { + if (TMHMMoves[NUM_TECHNICAL_MACHINES + i] == move) + return TRUE; + } + + return FALSE; +} + +s16 sub_806F7E8(u8 taskId, struct BattleInterfaceStruct1 *b, s8 c) +{ + s16 *taskData; + u8 hpBarLevel; + void *vramPtr; + + taskData = gTasks[taskId].data; + + b->unk0 = taskData[10]; + b->unk4 = taskData[11]; + b->unk8 = taskData[12] * c; + b->unk10 = 0x100; + hpBarLevel = GetHPBarLevel(ewram1B000.unk282, b->unk0); + if (hpBarLevel > 2) + b->unkC_0 = 4; + if (hpBarLevel == 2) + b->unkC_0 = 5; + if (hpBarLevel < 2) + b->unkC_0 = 6; + vramPtr = gUnknown_08376858[IsDoubleBattle()][ewram1C000.unk5]; + return sub_80460C8(b, &ewram1C000.unkC, vramPtr, 0); +} + +void sub_806F8AC(u8 taskId) +{ + struct BattleInterfaceStruct1 sp0; + u16 sp14; + + ewram1B000.unk282 = sub_806F7E8(taskId, &sp0, -1); + if (ewram1B000.unk282 == -1) + { + ewram1C000.unkC = 0; + if (-sp0.unk8 + sp0.unk4 > sp0.unk0) + sp14 = sp0.unk0 - sp0.unk4; + else + sp14 = -sp0.unk8; + gBattleMoveDamage = -sp14; + GetMonNickname(ewram1C000.pokemon, gStringVar1); + ConvertIntToDecimalStringN(gStringVar2, sp14, 0, 3); + if (gTasks[taskId].data[14] == 0) + StringExpandPlaceholders(gStringVar4, gOtherText_HPRestoredBy); + else + StringExpandPlaceholders(gStringVar4, gOtherText_RegainedHealth); + SetMonIconAnim(GetMonIconSpriteId(ewram1C000.unk4, ewram1C000.unk5), ewram1C000.pokemon); + task_pc_turn_off(&gUnknown_083769A8[IsDoubleBattle() * 12 + ewram1C000.unk5 * 2], 7); + ewram1B000.unk261 = 2; + sub_806E834(gStringVar4, 1); + sp14 += sp0.unk4; + SetMonData(ewram1C000.pokemon, MON_DATA_HP, (u8 *)&sp14); + RemoveBagItem(ewram1C000.unk6, 1); + sub_8032638(); + gTasks[taskId].func = sub_806FB44; + } + else + { + PartyMenuDoPrintHP(ewram1C000.unk5, IsDoubleBattle(), ewram1B000.unk282, sp0.unk0); + } +} + +void sub_806FA18(u8 taskId) +{ + struct BattleInterfaceStruct1 sp0; + + ewram1B000.unk282 = sub_806F7E8(taskId, &sp0, 1); + if (ewram1B000.unk282 == -1) + { + PlaySE(SE_KAIFUKU); + ewram1C000.unkC = 0; + gTasks[taskId].data[11] -= gTasks[taskId].data[12]; + SetMonData(ewram1C000.pokemon, MON_DATA_HP, (u8 *)&gTasks[taskId].data[11]); + SetMonIconAnim(GetMonIconSpriteId(ewram1C000.unk4, ewram01000.unk1), ewram1C000.pokemon); + ewram1C000.unk5 = gSprites[ewram01000.unk2].data0; + ewram1C000.pokemon = &gPlayerParty[ewram1C000.unk5]; + gTasks[taskId].data[10] = GetMonData(ewram1C000.pokemon, MON_DATA_MAX_HP); + gTasks[taskId].data[11] = GetMonData(ewram1C000.pokemon, MON_DATA_HP); + ewram1C000.unkC = -32768; + ewram1C000.unk14 = ewram1C000.unk10; + gTasks[taskId].func = sub_806F8AC; + ewram1B000.unk282 = gTasks[taskId].data[11]; + } + else + { + PartyMenuDoPrintHP(ewram1C000.unk5, IsDoubleBattle(), ewram1B000.unk282, sp0.unk0); + } +} + +void sub_806FB0C(u8 taskId) +{ + if (gUnknown_0202E8F6 == 0) + { + gTasks[ewram1C000.unk4].func = ewram1C000.unk10; + DestroyTask(taskId); + } +} + +void sub_806FB44(u8 taskId) +{ + if (gUnknown_0202E8F6 == 0) + { + gTasks[ewram1C000.unk4].func = ewram1C000.unk14; + DestroyTask(taskId); + } +} + +bool8 IsHPRecoveryItem(u16 item) +{ + const u8 *itemEffect; + + if (item == ITEM_ENIGMA_BERRY) + itemEffect = gSaveBlock1.enigmaBerry.itemEffect; + else + itemEffect = gItemEffectTable[item - ITEM_POTION]; + + if (itemEffect[4] & 4) + return TRUE; + else + return FALSE; +} + +void PartyMenuUpdateLevelOrStatus(struct Pokemon *pkmn, u8 monIndex) +{ + PartyMenuClearLevelStatusTilemap(monIndex); + PartyMenuPrintMonLevelOrStatus(monIndex, pkmn); +} + +void GetMedicineItemEffectMessage(u16 item) +{ + switch (GetItemEffectType(item)) + { + case 3: + StringExpandPlaceholders(gStringVar4, gOtherText_CuredPoisoning); + break; + case 4: + StringExpandPlaceholders(gStringVar4, gOtherText_WokeUp); + break; + case 5: + StringExpandPlaceholders(gStringVar4, gOtherText_BurnHealed); + break; + case 6: + StringExpandPlaceholders(gStringVar4, gOtherText_ThawedOut); + break; + case 7: + StringExpandPlaceholders(gStringVar4, gOtherText_CuredParalysis); + break; + case 8: + StringExpandPlaceholders(gStringVar4, gOtherText_SnapConfusion); + break; + case 9: + StringExpandPlaceholders(gStringVar4, gOtherText_GotOverLove); + break; + case 11: + StringExpandPlaceholders(gStringVar4, gOtherText_BecameHealthy); + break; + case 13: + StringCopy(gStringVar2, gOtherText_Hp2); + StringExpandPlaceholders(gStringVar4, gOtherText_WasRaised); + break; + case 12: + StringCopy(gStringVar2, gOtherText_Attack); + StringExpandPlaceholders(gStringVar4, gOtherText_WasRaised); + break; + case 17: + StringCopy(gStringVar2, gOtherText_Defense); + StringExpandPlaceholders(gStringVar4, gOtherText_WasRaised); + break; + case 16: + StringCopy(gStringVar2, gOtherText_Speed); + StringExpandPlaceholders(gStringVar4, gOtherText_WasRaised); + break; + case 14: + StringCopy(gStringVar2, gOtherText_SpAtk2); + StringExpandPlaceholders(gStringVar4, gOtherText_WasRaised); + break; + case 15: + StringCopy(gStringVar2, gOtherText_SpDef2); + StringExpandPlaceholders(gStringVar4, gOtherText_WasRaised); + break; + case 19: + case 20: + StringExpandPlaceholders(gStringVar4, gOtherText_PPIncreased); + break; + case 21: + StringExpandPlaceholders(gStringVar4, gOtherText_PPRestored); + break; + default: + StringExpandPlaceholders(gStringVar4, gOtherText_WontHaveAnyEffect); + break; + } +} + +bool8 IsMedicineIneffective(struct Pokemon *pkmn, u16 item) +{ + if (GetItemEffectType(item) == 13 + && GetMonData(pkmn, MON_DATA_SPECIES) == SPECIES_SHEDINJA) + return TRUE; + else + return FALSE; +} + +bool8 ExecuteTableBasedItemEffect__(u8 a, u16 b, u8 c) +{ + if (gMain.inBattle) + return ExecuteTableBasedItemEffect_(&gPlayerParty[a], b, sub_8094C20(a), c); + else + return ExecuteTableBasedItemEffect_(&gPlayerParty[a], b, a, c); +} + +void UseMedicine(u8 taskId, u16 item, TaskFunc func) +{ + u8 r7; + bool8 r9 = FALSE; + bool8 r0; + + gTasks[taskId].func = TaskDummy; + r7 = CreateTask(TaskDummy, 5); + sub_806E8D0(taskId, item, func); + if (!IsMedicineIneffective(ewram1C000.pokemon, item)) + { + r9 = IsHPRecoveryItem(item); + if (r9 == TRUE) + { + gTasks[r7].data[10] = GetMonData(ewram1C000.pokemon, MON_DATA_MAX_HP); + gTasks[r7].data[11] = GetMonData(ewram1C000.pokemon, MON_DATA_HP); + if (gTasks[r7].data[10] == gTasks[r7].data[11]) + { + r9 = FALSE; + gTasks[r7].data[10] = 0; + gTasks[r7].data[11] = 0; + } + } + r0 = ExecuteTableBasedItemEffect__(ewram1C000.unk5, item, 0); + } + else + { + r0 = TRUE; + } + + if (r0) + { + gUnknown_0202E8F4 = 0; + PlaySE(SE_SELECT); + sub_806E834(gOtherText_WontHaveAnyEffect, 1); + gTasks[r7].func = sub_806FB0C; + } + else + { + u8 statusAndPkrs; + + gUnknown_0202E8F4 = 1; + if (!IsBlueYellowRedFlute(item)) + PlaySE(SE_KAIFUKU); + else + PlaySE(SE_BIDORO); + statusAndPkrs = GetMonStatusAndPokerus(ewram1C000.pokemon); + if (statusAndPkrs == 6 || statusAndPkrs == 0) + PartyMenuUpdateLevelOrStatus(ewram1C000.pokemon, ewram1C000.unk5); + if (r9 == TRUE) + { + gTasks[r7].data[12] = GetMonData(ewram1C000.pokemon, MON_DATA_HP) - gTasks[r7].data[11]; + ewram1C000.unkC = -32768; + if (gTasks[r7].data[11] == 0) + gTasks[r7].data[14] = 1; + else + gTasks[r7].data[14] = 0; + ewram1C000.unk14 = ewram1C000.unk10; + gTasks[r7].func = sub_806F8AC; + ewram1B000.unk282 = gTasks[r7].data[11]; + } + else + { + GetMonNickname(ewram1C000.pokemon, gStringVar1); + if (!IsBlueYellowRedFlute(item)) + RemoveBagItem(item, 1); + GetMedicineItemEffectMessage(item); + TryPrintPartyMenuMonNickname(ewram1C000.unk5, ewram1C000.pokemon); + sub_806E834(gStringVar4, 1); + gTasks[r7].func = sub_806FB0C; + } + } +} + +bool8 IsBlueYellowRedFlute(u16 item) +{ + if (item == 0x27 + || item == 0x29 + || item == 0x28) + return TRUE; + else + return FALSE; +} + +void sub_8070048(u8 taskId, u16 item, TaskFunc func) +{ + ewram1C000.unk10 = func; + ewram1C000.unk4 = taskId; + ewram1C000.unk6 = item; + ewram1C000.unk5 = 0; + ewram1C000.unk14 = sub_80701DC; + ewram1B000.unk27E = 0; + ewram1B000.unk280 = 0; + sub_8070088(taskId); +} + +void sub_8070088(u8 taskId) +{ + u8 taskId2; + + gTasks[taskId].func = TaskDummy; + if (GetMonData(&gPlayerParty[ewram1C000.unk5], MON_DATA_SPECIES) == 0) + { + gTasks[taskId].func = sub_80701DC; + } + else + { + s16 *taskData; + + taskId2 = CreateTask(TaskDummy, 5); + taskData = gTasks[taskId2].data; + ewram1C000.pokemon = &gPlayerParty[ewram1C000.unk5]; + taskData[10] = GetMonData(ewram1C000.pokemon, MON_DATA_MAX_HP); + taskData[11] = GetMonData(ewram1C000.pokemon, MON_DATA_HP); + if (ExecuteTableBasedItemEffect__(ewram1C000.unk5, ewram1C000.unk6, 0)) + { + DestroyTask(taskId2); + gTasks[taskId].func = sub_80701DC; + } + else + { + gUnknown_0202E8F4 = 1; + MenuZeroFillWindowRect(WINDOW_LEFT, 14, WINDOW_RIGHT, 19); + PlaySE(SE_KAIFUKU); + PartyMenuUpdateLevelOrStatus(ewram1C000.pokemon, ewram1C000.unk5); + task_pc_turn_off(&gUnknown_083769A8[IsDoubleBattle() * 12 + ewram1C000.unk5 * 2], 9); + ewram1B000.unk261 = 2; + taskData[12] = GetMonData(ewram1C000.pokemon, MON_DATA_HP) - taskData[11]; + taskData[14] = 1; + ewram1B000.unk27E = 1; + ewram1B000.unk280 = 1; + ewram1B000.unk282 = taskData[11]; + ewram1C000.unkC = -32768; + gTasks[taskId2].func = sub_806F8AC; + } + } +} + +void sub_80701DC(u8 taskId) +{ + if (ewram1B000.unk27E == 1) + { + AddBagItem(ewram1C000.unk6, 1); + if (GetMonData(&gPlayerParty[ewram1C000.unk5], MON_DATA_SPECIES) != 0) + { + task_pc_turn_off(&gUnknown_083769A8[IsDoubleBattle() * 12 + ewram1C000.unk5 * 2], 3); + ewram1B000.unk261 = 2; + } + ewram1B000.unk27E = 0; + } + ewram1C000.unk5++; + if (ewram1C000.unk5 == 6) + { + gUnknown_0202E8F4 = 0; + if (ewram1B000.unk280 == 0) + { + gTasks[taskId].func = TaskDummy; + sub_806E834(gOtherText_WontHaveAnyEffect, 1); + CreateTask(sub_806FB0C, 8); + } + else + { + RemoveBagItem(ewram1C000.unk6, 1); + gTasks[taskId].func = ewram1C000.unk10; + } + gLastFieldPokeMenuOpened = 0; + } + else + { + sub_8070088(taskId); + } +} + +void CreateItemUseMoveMenu(u8 partyMonIndex) +{ + u8 r6; + u8 i; + + r6 = 0; + MenuDrawTextWindow(19, 10, 29, 19); + for (i = 0; i < 4; i++) + { + u16 move = GetMonData(&gPlayerParty[partyMonIndex], MON_DATA_MOVE1 + i); + + MenuPrint(gMoveNames[move], 20, i * 2 + 11); + if (move != 0) + r6++; + } + InitMenu(0, 20, 11, r6, 0, 9); +} + +void Task_HandleItemUseMoveMenuInput(u8 taskId) +{ + if (gMain.newKeys & DPAD_UP) + { + PlaySE(SE_SELECT); + MoveMenuCursor(-1); + } + else if (gMain.newKeys & DPAD_DOWN) + { + PlaySE(SE_SELECT); + MoveMenuCursor(1); + } + else if (gMain.newKeys & A_BUTTON) + { + gUnknown_08376B54[0](taskId); + } + else if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + gUnknown_08376B54[1](taskId); + } +} + +void DoPPRecoveryItemEffect(u8 taskId, u16 item, TaskFunc c) +{ + const u8 *itemEffect; + u8 taskId2; + + if (item == ITEM_ENIGMA_BERRY) + itemEffect = gSaveBlock1.enigmaBerry.itemEffect; + else + itemEffect = gItemEffectTable[item - ITEM_POTION]; + gTasks[taskId].func = TaskDummy; + taskId2 = CreateTask(TaskDummy, 5); + sub_806E8D0(taskId, item, c); + if (!(itemEffect[4] & 0x10)) + { + gTasks[taskId2].data[11] = 0; + DoRecoverPP(taskId2); + } + else + { + PlaySE(SE_SELECT); + PrintPartyMenuPromptText(10, 3); + CreateItemUseMoveMenu(ewram1C000.unk5); + gTasks[taskId2].func = Task_HandleItemUseMoveMenuInput; + gMain.newKeys = 0; + } +} + +void ItemUseMoveMenu_HandleMoveSelection(u8 taskId) +{ + HandleDestroyMenuCursors(); + MenuZeroFillWindowRect(19, 10, 29, 19); + sub_806D5A4(); + gTasks[taskId].data[11] = GetMenuCursorPos(); + DoRecoverPP(taskId); +} + +void ItemUseMoveMenu_HandleCancel(u8 taskId) +{ + HandleDestroyMenuCursors(); + MenuZeroFillWindowRect(19, 10, 29, 19); + if (gMain.inBattle) + gTasks[ewram1C000.unk4].func = HandleBattlePartyMenu; + else + gTasks[ewram1C000.unk4].func = sub_808B0C0; + PrintPartyMenuPromptText(3, 0); + DestroyTask(taskId); +} + +void DoRecoverPP(u8 taskId) +{ + u16 r5 = 0; + + if (ExecuteTableBasedItemEffect__(ewram1C000.unk5, ewram1C000.unk6, gTasks[taskId].data[11])) + { + gUnknown_0202E8F4 = r5; + PlaySE(SE_SELECT); + sub_806E834(gOtherText_WontHaveAnyEffect, 1); + } + else + { + gUnknown_0202E8F4 = 1; + PlaySE(SE_KAIFUKU); + RemoveBagItem(ewram1C000.unk6, 1); + r5 = GetMonData(ewram1C000.pokemon, MON_DATA_MOVE1 + gTasks[taskId].data[11]); + StringCopy(gStringVar1, gMoveNames[r5]); + GetMedicineItemEffectMessage(ewram1C000.unk6); + sub_806E834(gStringVar4, 1); + } + gTasks[taskId].func = sub_806FB0C; +} + +void DoPPUpItemEffect(u8 taskId, u16 b, TaskFunc c) +{ + gTasks[taskId].func = TaskDummy; + sub_806E8D0(taskId, b, c); + PlaySE(SE_SELECT); + PrintPartyMenuPromptText(11, 3); + CreateItemUseMoveMenu(ewram1C000.unk5); + CreateTask(Task_HandleItemUseMoveMenuInput, 5); + gMain.newKeys = 0; +} + +void DoRareCandyItemEffect(u8 taskId, u16 b, TaskFunc c) +{ + u8 i; + bool8 r0; + + gTasks[taskId].func = TaskDummy; + sub_806E8D0(taskId, b, c); + + if (GetMonData(ewram1C000.pokemon, MON_DATA_LEVEL) != 100) + { + for (i = 0; i < 6; i++) + ewram1B000.statGrowths[i] = GetMonData(ewram1C000.pokemon, StatDataTypes[i]); + r0 = ExecuteTableBasedItemEffect__(ewram1C000.unk5, b, 0); + } + else + r0 = TRUE; + + if (r0) + { + gUnknown_0202E8F4 = 0; + PlaySE(SE_SELECT); + sub_806E834(gOtherText_WontHaveAnyEffect, 1); + CreateTask(sub_806FB0C, 5); + } + else + { + u8 level; + + gUnknown_0202E8F4 = 1; + PlayFanfareByFanfareNum(0); + RedrawPokemonInfoInMenu(ewram1C000.unk5, ewram1C000.pokemon); + RemoveBagItem(b, 1); + GetMonNickname(ewram1C000.pokemon, gStringVar1); + level = GetMonData(ewram1C000.pokemon, MON_DATA_LEVEL); + ConvertIntToDecimalStringN(gStringVar2, level, 0, 3); + StringExpandPlaceholders(gStringVar4, gOtherText_ElevatedTo); + sub_806E834(gStringVar4, 1); + CreateTask(Task_RareCandy1, 5); + } +} + +void Task_RareCandy1(u8 taskId) +{ + if (WaitFanfare(0) && gUnknown_0202E8F6 == 0) + { + if ((gMain.newKeys & A_BUTTON) || (gMain.newKeys & B_BUTTON)) + { + PlaySE(SE_SELECT); + PrintStatGrowthsInLevelUpWindow(taskId); + gTasks[taskId].func = Task_RareCandy2; + } + } +} + +void Task_RareCandy2(u8 taskId) +{ + if ((gMain.newKeys & A_BUTTON) || (gMain.newKeys & B_BUTTON)) + { + PlaySE(SE_SELECT); + PrintNewStatsInLevelUpWindow(taskId); + gTasks[taskId].func = Task_RareCandy3; + } +} + +#if ENGLISH +void PrintStatGrowthsInLevelUpWindow(u8 taskId) +{ + u8 i; + + MenuDrawTextWindow(11, 0, 29, 7); + + for (i = 0; i < NUM_STATS; i++) + { + u8 x; + u8 y; + u32 stat; + + stat = GetMonData(ewram1C000.pokemon, StatDataTypes[i]); + + ewram1B000.statGrowths[i + NUM_STATS] = stat; + ewram1B000.statGrowths[i] = stat - ewram1B000.statGrowths[i]; + + x = (i / 3) * 9 + 11; + y = ((i % 3) << 1) + 1; + + MenuPrint_PixelCoords(StatNames[i], (x + 1) * 8, y * 8, 1); + + if (i == 2) + MenuPrint_PixelCoords(gOtherText_TallPlusAndRightArrow, (x + 6) * 8 + 6, y * 8, 0); + else + MenuPrint_PixelCoords(gOtherText_TallPlusAndRightArrow, (x + 6) * 8 + 6, y * 8, 1); + + gStringVar1[0] = EXT_CTRL_CODE_BEGIN; + gStringVar1[1] = 0x14; + gStringVar1[2] = 0x06; + + ConvertIntToDecimalStringN(gStringVar1 + 3, ewram1B000.statGrowths[i], 1, 2); + + MenuPrint_PixelCoords(gStringVar1, (x + 6) * 8 + 12, y * 8, 0); + } +} +#elif GERMAN +__attribute__((naked)) +void PrintStatGrowthsInLevelUpWindow(u8 taskId) { + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + movs r0, 0xB\n\ + movs r1, 0\n\ + movs r2, 0x1D\n\ + movs r3, 0x7\n\ + bl MenuDrawTextWindow\n\ + movs r7, 0\n\ + ldr r0, _0807092C @ =gStringVar1\n\ + mov r10, r0\n\ + movs r1, 0xFC\n\ + mov r9, r1\n\ + movs r2, 0x13\n\ + mov r8, r2\n\ +_0807086C:\n\ + ldr r1, _08070930 @ =0x0201c000\n\ + ldr r0, [r1]\n\ + ldr r1, _08070934 @ =StatDataTypes\n\ + adds r1, r7, r1\n\ + ldrb r1, [r1]\n\ + bl GetMonData\n\ + adds r1, r7, 0x6\n\ + lsls r1, 1\n\ + ldr r2, _08070938 @ =0x0201b264\n\ + adds r1, r2, r1\n\ + strh r0, [r1]\n\ + lsls r6, r7, 1\n\ + adds r6, r2, r6\n\ + ldrh r1, [r6]\n\ + subs r0, r1\n\ + strh r0, [r6]\n\ + adds r0, r7, 0\n\ + movs r1, 0x3\n\ + bl __udivsi3\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + lsls r4, r0, 3\n\ + adds r4, r0\n\ + adds r4, 0xB\n\ + lsls r4, 24\n\ + lsrs r4, 24\n\ + adds r0, r7, 0\n\ + movs r1, 0x3\n\ + bl __umodsi3\n\ + adds r5, r0, 0\n\ + lsls r5, 1\n\ + adds r5, 0x1\n\ + lsls r5, 24\n\ + lsrs r5, 24\n\ + ldr r1, _0807093C @ =StatNames\n\ + lsls r0, r7, 2\n\ + adds r0, r1\n\ + ldr r1, [r0]\n\ + mov r0, r10\n\ + bl StringCopy\n\ + adds r2, r0, 0\n\ + mov r0, r9\n\ + strb r0, [r2]\n\ + adds r2, 0x1\n\ + mov r1, r8\n\ + strb r1, [r2]\n\ + adds r2, 0x1\n\ + movs r0, 0x2E\n\ + strb r0, [r2]\n\ + adds r2, 0x1\n\ + adds r0, r2, 0\n\ + ldr r1, _08070940 @ =gOtherText_TallPlusAndRightArrow\n\ + bl StringCopy\n\ + adds r2, r0, 0\n\ + mov r0, r9\n\ + strb r0, [r2]\n\ + adds r2, 0x1\n\ + mov r1, r8\n\ + strb r1, [r2]\n\ + adds r2, 0x1\n\ + movs r0, 0x34\n\ + strb r0, [r2]\n\ + adds r2, 0x1\n\ + movs r0, 0\n\ + ldrsh r1, [r6, r0]\n\ + adds r0, r2, 0\n\ + movs r2, 0x1\n\ + movs r3, 0x2\n\ + bl ConvertIntToDecimalStringN\n\ + adds r4, 0x1\n\ + lsls r4, 24\n\ + lsrs r4, 24\n\ + mov r0, r10\n\ + adds r1, r4, 0\n\ + adds r2, r5, 0\n\ + bl MenuPrint\n\ + adds r0, r7, 0x1\n\ + lsls r0, 24\n\ + lsrs r7, r0, 24\n\ + cmp r7, 0x5\n\ + bls _0807086C\n\ + pop {r3-r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_0807092C: .4byte gStringVar1\n\ +_08070930: .4byte 0x0201c000\n\ +_08070934: .4byte StatDataTypes\n\ +_08070938: .4byte 0x0201b264\n\ +_0807093C: .4byte StatNames\n\ +_08070940: .4byte gOtherText_TallPlusAndRightArrow\n\ + .syntax divided\n"); +} +#endif + +void PrintNewStatsInLevelUpWindow(u8 taskId) +{ + u8 i; + + for (i = 0; i < NUM_STATS; i++) + { + u8 x; + u8 y; + u32 stat; + u32 newStatIndex; + + stat = GetMonData(ewram1C000.pokemon, StatDataTypes[i]); + newStatIndex = i + 6; + ewram1B000.statGrowths[newStatIndex] = stat; + + x = ((i / 3) * 9) + 11; + y = ((i % 3) << 1) + 1; + + gStringVar1[0] = EXT_CTRL_CODE_BEGIN; + gStringVar1[1] = 0x14; + gStringVar1[2] = 0x06; + + ConvertIntToDecimalStringN(gStringVar1 + 3, ewram1B000.statGrowths[newStatIndex], 1, 3); + MenuPrint_PixelCoords(gStringVar1, (x + 6) * 8 + 6, y * 8, 0); + } +} + +void RedrawPokemonInfoInMenu(u8 monIndex, struct Pokemon *pokemon) +{ + u8 statusAndPkrs; + bool8 isDoubleBattle; + u16 currentHP; + u16 maxHP; + u8 icon; + + statusAndPkrs = GetMonStatusAndPokerus(pokemon); + if (statusAndPkrs == 0 || statusAndPkrs == 6) + { + PartyMenuUpdateLevelOrStatus(pokemon, monIndex); + } + + isDoubleBattle = IsDoubleBattle(); + + currentHP = GetMonData(pokemon, MON_DATA_HP); + maxHP = GetMonData(pokemon, MON_DATA_MAX_HP); + + PartyMenuDoPrintHP(monIndex, isDoubleBattle, currentHP, maxHP); + PartyMenuTryDrawHPBar(monIndex, pokemon); + + icon = GetMonIconSpriteId(ewram1C000.unk4, monIndex); + SetMonIconAnim(icon, pokemon); + + task_pc_turn_off(&gUnknown_083769A8[IsDoubleBattle() * 12 + monIndex * 2], 7); + ewram1B000.unk261 = 2; +} + +void Task_RareCandy3(u8 taskId) +{ + if (WaitFanfare(0)) + { + if ((gMain.newKeys & A_BUTTON) || (gMain.newKeys & B_BUTTON)) + { + u16 learnedMove; + u16 evolutionSpecies; + + MenuZeroFillWindowRect(11, 0, 29, 7); + + learnedMove = MonTryLearningNewMove(ewram1C000.pokemon, TRUE); + ewram1B000.unk282 = 1; + + switch (learnedMove) + { + case 0: + // No move is learned. + evolutionSpecies = GetEvolutionTargetSpecies(ewram1C000.pokemon, 0, 0); + if (evolutionSpecies != 0) + { + gCB2_AfterEvolution = sub_80A53F8; + BeginEvolutionScene(ewram1C000.pokemon, evolutionSpecies, TRUE, ewram1C000.unk5); + DestroyTask(taskId); + } + else + { + sub_8070D90(taskId); + } + break; + case 0xFFFF: + // Mon already knows 4 moves. + GetMonNickname(ewram1C000.pokemon, gStringVar1); + StringCopy(gStringVar2, gMoveNames[gMoveToLearn]); + + StringExpandPlaceholders(gStringVar4, gOtherText_WantsToLearn); + sub_806E834(gStringVar4, 1); + + ewram1C000.unk8 = gMoveToLearn; + gTasks[taskId].func = sub_806F358; + break; + case 0xFFFE: + // Move was already known by the mon. + gTasks[taskId].func = TeachMonMoveInPartyMenu; + break; + default: + // Mon automatically learned a move because it knew less than four moves. + GetMonNickname(ewram1C000.pokemon, gStringVar1); + StringCopy(gStringVar2, gMoveNames[learnedMove]); + + StringExpandPlaceholders(gStringVar4, gOtherText_LearnedMove); + sub_806E834(gStringVar4, 1); + + gTasks[taskId].func = Task_TeamMonTMMove3; + break; + } + } + } +} + +void TeachMonMoveInPartyMenu(u8 taskId) +{ + u16 learnedMove; + u16 evolutionSpecies; + + learnedMove = MonTryLearningNewMove(ewram1C000.pokemon, FALSE); + switch (learnedMove) + { + case 0: + // No move is learned. + evolutionSpecies = GetEvolutionTargetSpecies(ewram1C000.pokemon, 0, 0); + if (evolutionSpecies != 0) + { + gCB2_AfterEvolution = sub_80A53F8; + BeginEvolutionScene(ewram1C000.pokemon, evolutionSpecies, TRUE, ewram1C000.unk5); + DestroyTask(taskId); + } + else + { + sub_8070D90(taskId); + } + break; + case 0xFFFF: + // Mon already knows 4 moves. + GetMonNickname(ewram1C000.pokemon, gStringVar1); + StringCopy(gStringVar2, gMoveNames[gMoveToLearn]); + + StringExpandPlaceholders(gStringVar4, gOtherText_WantsToLearn); + sub_806E834(gStringVar4, 1); + + ewram1C000.unk8 = gMoveToLearn; + gTasks[taskId].func = sub_806F358; + break; + case 0xFFFE: + // Move was already known by the mon. Go on the the next move to be learned. + TeachMonMoveInPartyMenu(taskId); + break; + default: + // Mon automatically learned a move because it knew less than four moves. + GetMonNickname(ewram1C000.pokemon, gStringVar1); + StringCopy(gStringVar2, gMoveNames[learnedMove]); + + StringExpandPlaceholders(gStringVar4, gOtherText_LearnedMove); + sub_806E834(gStringVar4, 1); + + gTasks[taskId].func = Task_TeamMonTMMove3; + break; + } +} + +static void sub_8070D90(u8 taskId) +{ + gTasks[ewram1C000.unk4].func = ewram1C000.unk10; + DestroyTask(taskId); +} + +void DoEvolutionStoneItemEffect(u8 taskId, u16 evolutionStoneItem, TaskFunc c) +{ + PlaySE(SE_SELECT); + + gTasks[taskId].func = TaskDummy; + sub_806E8D0(taskId, evolutionStoneItem, c); + + gCB2_AfterEvolution = sub_80A53F8; + + if (ExecuteTableBasedItemEffect__(ewram1C000.unk5, evolutionStoneItem, 0)) + { + gUnknown_0202E8F4 = 0; + sub_806E834(gOtherText_WontHaveAnyEffect, 1); + + CreateTask(sub_806FB0C, 5); + } + else + { + RemoveBagItem(evolutionStoneItem, 1); + } +} + +#ifdef NONMATCHING +u8 GetItemEffectType(u16 item) +{ + const u8 *itemEffect; + register u8 itemEffect0 asm("r1"); + u8 mask; + + // Read the item's effect properties. + if (item == ITEM_ENIGMA_BERRY) + { + itemEffect = gSaveBlock1.enigmaBerry.itemEffect; + } + else + { + itemEffect = gItemEffectTable[item - ITEM_POTION]; + } + + itemEffect0 = itemEffect[0]; + mask = 0x3F; + + if ((itemEffect0 & mask) || itemEffect[1] || itemEffect[2] || (itemEffect[3] & 0x80)) + { + return 0; + } + else if (itemEffect0 & 0x40) + { + return 10; + } + else if (itemEffect[3] & 0x40) + { + return 1; + } + else if ((itemEffect[3] & mask) || (itemEffect0 >> 7)) + { + if ((itemEffect[3] & mask) == 0x20) + { + return 4; + } + else if ((itemEffect[3] & mask) == 0x10) + { + return 3; + } + else if ((itemEffect[3] & mask) == 0x8) + { + return 5; + } + else if ((itemEffect[3] & mask) == 0x4) + { + return 6; + } + else if ((itemEffect[3] & mask) == 0x2) + { + return 7; + } + else if ((itemEffect[3] & mask) == 0x1) + { + return 8; + } + else if ((itemEffect0 >> 7) != 0 && (itemEffect[3] & mask) == 0) + { + return 9; + } + else + { + return 11; + } + } + else if (itemEffect[4] & 0x44) + { + return 2; + } + else if (itemEffect[4] & 0x2) + { + return 12; + } + else if (itemEffect[4] & 0x1) + { + return 13; + } + else if (itemEffect[5] & 0x8) + { + return 14; + } + else if (itemEffect[5] & 0x4) + { + return 15; + } + else if (itemEffect[5] & 0x2) + { + return 16; + } + else if (itemEffect[5] & 0x1) + { + return 17; + } + else if (itemEffect[4] & 0x80) + { + return 18; + } + else if (itemEffect[4] & 0x20) + { + return 19; + } + else if (itemEffect[5] & 0x10) + { + return 20; + } + else if (itemEffect[4] & 0x18) + { + return 21; + } + else + { + return 22; + } +} +#else +__attribute__((naked)) +u8 GetItemEffectType(u16 item) +{ + asm(".syntax unified\n\ + push {r4,r5,lr}\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + cmp r0, 0xAF\n\ + bne _08070E5C\n\ + ldr r4, _08070E58 @ =gSaveBlock1 + 0x3676\n\ + b _08070E66\n\ + .align 2, 0\n\ +_08070E58: .4byte gSaveBlock1 + 0x3676\n\ +_08070E5C:\n\ + ldr r1, _08070E8C @ =gItemEffectTable\n\ + subs r0, 0xD\n\ + lsls r0, 2\n\ + adds r0, r1\n\ + ldr r4, [r0]\n\ +_08070E66:\n\ + ldrb r1, [r4]\n\ + movs r5, 0x3F\n\ + adds r0, r5, 0\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _08070E88\n\ + ldrb r0, [r4, 0x1]\n\ + cmp r0, 0\n\ + bne _08070E88\n\ + ldrb r0, [r4, 0x2]\n\ + cmp r0, 0\n\ + bne _08070E88\n\ + ldrb r3, [r4, 0x3]\n\ + movs r0, 0x80\n\ + ands r0, r3\n\ + cmp r0, 0\n\ + beq _08070E90\n\ +_08070E88:\n\ + movs r0, 0\n\ + b _08070F8A\n\ + .align 2, 0\n\ +_08070E8C: .4byte gItemEffectTable\n\ +_08070E90:\n\ + movs r2, 0x40\n\ + adds r0, r2, 0\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _08070E9E\n\ + movs r0, 0xA\n\ + b _08070F8A\n\ +_08070E9E:\n\ + adds r0, r2, 0\n\ + ands r0, r3\n\ + cmp r0, 0\n\ + beq _08070EAA\n\ + movs r0, 0x1\n\ + b _08070F8A\n\ +_08070EAA:\n\ + adds r2, r5, 0\n\ + ands r2, r3\n\ + cmp r2, 0\n\ + bne _08070EB8\n\ + lsrs r0, r1, 7\n\ + cmp r0, 0\n\ + beq _08070EFA\n\ +_08070EB8:\n\ + cmp r2, 0x20\n\ + bne _08070EC0\n\ + movs r0, 0x4\n\ + b _08070F8A\n\ +_08070EC0:\n\ + cmp r2, 0x10\n\ + bne _08070EC8\n\ + movs r0, 0x3\n\ + b _08070F8A\n\ +_08070EC8:\n\ + cmp r2, 0x8\n\ + bne _08070ED0\n\ + movs r0, 0x5\n\ + b _08070F8A\n\ +_08070ED0:\n\ + cmp r2, 0x4\n\ + bne _08070ED8\n\ + movs r0, 0x6\n\ + b _08070F8A\n\ +_08070ED8:\n\ + cmp r2, 0x2\n\ + bne _08070EE0\n\ + movs r0, 0x7\n\ + b _08070F8A\n\ +_08070EE0:\n\ + cmp r2, 0x1\n\ + bne _08070EE8\n\ + movs r0, 0x8\n\ + b _08070F8A\n\ +_08070EE8:\n\ + lsrs r0, r1, 7\n\ + cmp r0, 0\n\ + beq _08070EF6\n\ + cmp r2, 0\n\ + bne _08070EF6\n\ + movs r0, 0x9\n\ + b _08070F8A\n\ +_08070EF6:\n\ + movs r0, 0xB\n\ + b _08070F8A\n\ +_08070EFA:\n\ + ldrb r1, [r4, 0x4]\n\ + movs r0, 0x44\n\ + ands r0, r1\n\ + adds r2, r1, 0\n\ + cmp r0, 0\n\ + beq _08070F0A\n\ + movs r0, 0x2\n\ + b _08070F8A\n\ +_08070F0A:\n\ + movs r5, 0x2\n\ + adds r0, r5, 0\n\ + ands r0, r2\n\ + cmp r0, 0\n\ + beq _08070F18\n\ + movs r0, 0xC\n\ + b _08070F8A\n\ +_08070F18:\n\ + movs r3, 0x1\n\ + adds r0, r3, 0\n\ + ands r0, r2\n\ + cmp r0, 0\n\ + beq _08070F26\n\ + movs r0, 0xD\n\ + b _08070F8A\n\ +_08070F26:\n\ + ldrb r1, [r4, 0x5]\n\ + movs r0, 0x8\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _08070F34\n\ + movs r0, 0xE\n\ + b _08070F8A\n\ +_08070F34:\n\ + movs r0, 0x4\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _08070F40\n\ + movs r0, 0xF\n\ + b _08070F8A\n\ +_08070F40:\n\ + adds r0, r5, 0\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _08070F4C\n\ + movs r0, 0x10\n\ + b _08070F8A\n\ +_08070F4C:\n\ + adds r0, r3, 0\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _08070F58\n\ + movs r0, 0x11\n\ + b _08070F8A\n\ +_08070F58:\n\ + movs r0, 0x80\n\ + ands r0, r2\n\ + cmp r0, 0\n\ + beq _08070F64\n\ + movs r0, 0x12\n\ + b _08070F8A\n\ +_08070F64:\n\ + movs r0, 0x20\n\ + ands r0, r2\n\ + cmp r0, 0\n\ + beq _08070F70\n\ + movs r0, 0x13\n\ + b _08070F8A\n\ +_08070F70:\n\ + movs r0, 0x10\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _08070F7C\n\ + movs r0, 0x14\n\ + b _08070F8A\n\ +_08070F7C:\n\ + movs r0, 0x18\n\ + ands r0, r2\n\ + cmp r0, 0\n\ + bne _08070F88\n\ + movs r0, 0x16\n\ + b _08070F8A\n\ +_08070F88:\n\ + movs r0, 0x15\n\ +_08070F8A:\n\ + pop {r4,r5}\n\ + pop {r1}\n\ + bx r1\n\ + .syntax divided\n"); +} +#endif // NONMATCHING + +void unref_sub_8070F90(void) +{ + FlagSet(SYS_POKEDEX_GET); + FlagSet(SYS_POKEMON_GET); + FlagSet(SYS_POKENAV_GET); +} diff --git a/src/player_pc.c b/src/field/player_pc.c similarity index 96% rename from src/player_pc.c rename to src/field/player_pc.c index 38e01b92e..83e6dd221 100644 --- a/src/player_pc.c +++ b/src/field/player_pc.c @@ -18,7 +18,7 @@ #include "songs.h" #include "name_string_util.h" #include "mail.h" -#include "rom4.h" +#include "overworld.h" #include "player_pc.h" extern void DisplayItemMessageOnField(u8, const u8*, TaskFunc, u16); @@ -30,13 +30,11 @@ extern void LoadScrollIndicatorPalette(void); extern void ClearMailStruct(struct MailStruct *); extern u8 sub_807D770(void); extern void sub_808B020(void); -extern void sub_80A4164(u8 *, u16, enum StringConvertMode, u8); -extern void sub_80A418C(u16, enum StringConvertMode, int, int, int); -extern void sub_80A6A30(void); extern void sub_80F944C(void); -extern u8 *gPcItemMenuOptionOrder; -extern u8 gPcItemMenuOptionsNum; +static EWRAM_DATA u8 *gPcItemMenuOptionOrder = NULL; + +static u8 gPcItemMenuOptionsNum; extern u8 gUnknown_02038561; @@ -100,7 +98,7 @@ static void Mailbox_MoveToBag(u8); static void Mailbox_Give(u8); static void Mailbox_Cancel(u8); -static const struct TextStruct gPCText_OptionDescList[] = +static const u8 *const gPCText_OptionDescList[] = { PCText_TakeOutItems, PCText_StoreItems, @@ -108,7 +106,7 @@ static const struct TextStruct gPCText_OptionDescList[] = gMenuText_GoBackToPrev }; -static const struct MenuAction2 gPCText_PlayerPCOptionsText[] = +static const struct MenuAction2 sPlayerPCMenuActions[] = { { SecretBaseText_ItemStorage, PlayerPC_ItemStorage }, { gPCText_Mailbox, PlayerPC_Mailbox }, @@ -228,7 +226,7 @@ void PlayerPC(void) static void InitPlayerPCMenu(u8 taskId) { MenuDrawTextWindow(0, 0, 10, gPcItemMenuOptionsNum * 2 + 1); - PrintMenuItemsReordered(1, 1, gPcItemMenuOptionsNum, (struct MenuAction *)gPCText_PlayerPCOptionsText, gPcItemMenuOptionOrder); + PrintMenuItemsReordered(1, 1, gPcItemMenuOptionsNum, sPlayerPCMenuActions, gPcItemMenuOptionOrder); InitMenu(0, 1, 1, gPcItemMenuOptionsNum, 0, 9); TASK.FUNC = PlayerPCProcessMenuInput; } @@ -249,13 +247,13 @@ static void PlayerPCProcessMenuInput(u8 taskId) { HandleDestroyMenuCursors(); PlaySE(SE_SELECT); - gPCText_PlayerPCOptionsText[gPcItemMenuOptionOrder[GetMenuCursorPos()]].func(taskId); + sPlayerPCMenuActions[gPcItemMenuOptionOrder[GetMenuCursorPos()]].func(taskId); } else if (gMain.newKeys & B_BUTTON) { HandleDestroyMenuCursors(); PlaySE(SE_SELECT); - gPCText_PlayerPCOptionsText[gPcItemMenuOptionsNum[gPcItemMenuOptionOrder - 1]].func(taskId); // run EXIT. + sPlayerPCMenuActions[gPcItemMenuOptionsNum[gPcItemMenuOptionOrder - 1]].func(taskId); // run EXIT. } } @@ -319,7 +317,7 @@ static void InitItemStorageMenu(u8 var) MenuDrawTextWindow(0, 0, 11, 9); PrintMenuItems(1, 1, 4, (struct MenuAction *)gPCText_ItemPCOptionsText); InitMenu(0, 1, 1, 4, var, 10); - ItemStorageMenuPrint(gPCText_OptionDescList[var].text); + ItemStorageMenuPrint(gPCText_OptionDescList[var]); } static void ItemStorageMenuPrint(const u8 *textPtr) @@ -334,13 +332,13 @@ static void ItemStorageMenuProcessInput(u8 var) { PlaySE(SE_SELECT); MoveMenuCursor(-1); - ItemStorageMenuPrint(gPCText_OptionDescList[GetMenuCursorPos()].text); + ItemStorageMenuPrint(gPCText_OptionDescList[GetMenuCursorPos()]); } else if (gMain.newAndRepeatedKeys & DPAD_DOWN) { PlaySE(SE_SELECT); MoveMenuCursor(1); - ItemStorageMenuPrint(gPCText_OptionDescList[GetMenuCursorPos()].text); + ItemStorageMenuPrint(gPCText_OptionDescList[GetMenuCursorPos()]); } else if (gMain.newKeys & A_BUTTON) { @@ -935,36 +933,36 @@ weirdCase: static void ItemStorage_PrintItemPcResponse(u16 itemId) { - u8 *string; + const u8 *string; switch(itemId) { case ITEMPC_GO_BACK_TO_PREV: - string = (u8 *)gMenuText_GoBackToPrev; + string = gMenuText_GoBackToPrev; break; case ITEMPC_HOW_MANY_TO_WITHDRAW: - string = (u8 *)gOtherText_HowManyToWithdraw; + string = gOtherText_HowManyToWithdraw; break; case ITEMPC_WITHDREW_THING: - string = (u8 *)gOtherText_WithdrewThing; + string = gOtherText_WithdrewThing; break; case ITEMPC_HOW_MANY_TO_TOSS: - string = (u8 *)gOtherText_HowManyToToss; + string = gOtherText_HowManyToToss; break; case ITEMPC_THREW_AWAY_ITEM: - string = (u8 *)gOtherText_ThrewAwayItem; + string = gOtherText_ThrewAwayItem; break; case ITEMPC_NO_MORE_ROOM: - string = (u8 *)gOtherText_NoMoreRoom; + string = gOtherText_NoMoreRoom; break; case ITEMPC_TOO_IMPORTANT: - string = (u8 *)gOtherText_TooImportant; + string = gOtherText_TooImportant; break; case ITEMPC_OKAY_TO_THROW_AWAY: - string = (u8 *)gOtherText_OkayToThrowAwayPrompt; + string = gOtherText_OkayToThrowAwayPrompt; break; case ITEMPC_SWITCH_WHICH_ITEM: - string = (u8 *)gOtherText_SwitchWhichItem; + string = gOtherText_SwitchWhichItem; break; default: string = ItemId_GetDescription(itemId); diff --git a/src/pokeblock.c b/src/field/pokeblock.c similarity index 84% rename from src/pokeblock.c rename to src/field/pokeblock.c index b7fa5daa8..34f4ffa35 100644 --- a/src/pokeblock.c +++ b/src/field/pokeblock.c @@ -1,9 +1,9 @@ // -// Created by scott on 6/27/2017. + // #include "global.h" -#include "rom4.h" +#include "overworld.h" #include "sprite.h" #include "script.h" #include "strings.h" @@ -25,9 +25,24 @@ #include "sound.h" #include "songs.h" #include "safari_zone.h" -#include "use_pokeblock.h" +#include "event_data.h" #include "pokeblock.h" +struct UnkPokeblockStruct +{ + u8 unk0; + u8 unk1; + u8 unk2; + u8 unk3; +}; + +extern u8 ewram[]; + + +static EWRAM_DATA u8 gUnknown_02039244 = 0; +static EWRAM_DATA struct UnkPokeblockStruct gUnknown_02039248 = {0}; +static EWRAM_DATA u8 gUnknown_0203924C = 0; + // function declarations // gUnknown_083F7EF4 @@ -76,6 +91,8 @@ static void sub_810C5EC(u8); // sub_810C610 static void sub_810C704(u8); +static const u8 *gUnknown_03000758; + // rodata #define GFX_TAG_POKEBLOCK_CASE 14800 @@ -313,7 +330,7 @@ static bool8 sub_810B6C0(void) case 15: sub_810BB0C(); sub_810BB30(); - sub_810BC84(gUnknown_02039248[1]); + sub_810BC84(gUnknown_02039248.unk1); gMain.state++; break; case 16: @@ -361,7 +378,7 @@ static bool8 sub_810B998(void) ewram[0x1ffff]++; break; case 1: - sub_800D238(gMenuPokeblock_Tilemap, gBGTilemapBuffers[2]); + LZDecompressWram(gMenuPokeblock_Tilemap, gBGTilemapBuffers[2]); ewram[0x1ffff]++; break; case 2: @@ -453,7 +470,7 @@ static void sub_810BB88(u8 a0) for (i=a0; i<=a0+8; i++) { y = (i - a0) << 1; - if (i == gUnknown_02039248[2]) + if (i == gUnknown_02039248.unk2) { buf = sub_8072C74(gStringVar1, gContestStatsText_StowCase, 0x78, 0); MenuPrint(gStringVar1, 15, y + 1); @@ -500,23 +517,23 @@ static void sub_810BC98(void) static void sub_810BD08(void) { u8 i; - gUnknown_02039248[2] = 0; + gUnknown_02039248.unk2 = 0; for (i=0; i<40; i++) { if (gSaveBlock1.pokeblocks[i].color != 0) - gUnknown_02039248[2]++; + gUnknown_02039248.unk2++; } - if (gUnknown_02039248[2] < 8) + if (gUnknown_02039248.unk2 < 8) { - gUnknown_02039248[3] = gUnknown_02039248[2]; + gUnknown_02039248.unk3 = gUnknown_02039248.unk2; } else { - gUnknown_02039248[3] = 8; + gUnknown_02039248.unk3 = 8; } - if (gUnknown_02039248[1] + 8 > gUnknown_02039248[2] && gUnknown_02039248[1] != 0) + if (gUnknown_02039248.unk1 + 8 > gUnknown_02039248.unk2 && gUnknown_02039248.unk1 != 0) { - gUnknown_02039248[1]--; + gUnknown_02039248.unk1--; } } @@ -526,8 +543,8 @@ static void sub_810BD64(u16 a0, u16 a1) int y; for (i=0; i<14; i++) { - gBGTilemapBuffers[2][(2 * gUnknown_02039248[0] + 1) * 32 + (y = i + 15)] = a0; - gBGTilemapBuffers[2][(2 * gUnknown_02039248[0] + 2) * 32 + y] = a0; + gBGTilemapBuffers[2][(2 * gUnknown_02039248.unk0 + 1) * 32 + (y = i + 15)] = a0; + gBGTilemapBuffers[2][(2 * gUnknown_02039248.unk0 + 2) * 32 + y] = a0; } } @@ -543,7 +560,7 @@ static void sub_810BDAC(bool8 flag) { sub_810BD64(0x2005, 0x2014); } - if (gUnknown_02039248[1]) + if (gUnknown_02039248.unk1) { sub_80F979C(0, 0); } @@ -551,7 +568,7 @@ static void sub_810BDAC(bool8 flag) { sub_80F979C(0, 1); } - if (gUnknown_02039248[2] > gUnknown_02039248[3] && gUnknown_02039248[1] + gUnknown_02039248[3] != gUnknown_02039248[2]) + if (gUnknown_02039248.unk2 > gUnknown_02039248.unk3 && gUnknown_02039248.unk1 + gUnknown_02039248.unk3 != gUnknown_02039248.unk2) { sub_80F979C(1, 0); } @@ -562,9 +579,9 @@ static void sub_810BDAC(bool8 flag) for (i=0; i<5; i++) { v0 = ((i % 3) << 6) + 0x1a1 + (i / 3) * 6; - if (gUnknown_02039248[0] + gUnknown_02039248[1] != gUnknown_02039248[2]) + if (gUnknown_02039248.unk0 + gUnknown_02039248.unk1 != gUnknown_02039248.unk2) { - if (sub_810CA9C(&gSaveBlock1.pokeblocks[gUnknown_02039248[0] + gUnknown_02039248[1]], i + 1) > 0) + if (GetPokeblockData(&gSaveBlock1.pokeblocks[gUnknown_02039248.unk0 + gUnknown_02039248.unk1], i + 1) > 0) { gBGTilemapBuffers[2][v0] = (i << 12) + 23; gBGTilemapBuffers[2][v0 + 32] = (i << 12) + 24; @@ -582,9 +599,9 @@ static void sub_810BDAC(bool8 flag) } } BasicInitMenuWindow(&gWindowConfig_81E6E34); - if (gUnknown_02039248[0] + gUnknown_02039248[1] != gUnknown_02039248[2]) + if (gUnknown_02039248.unk0 + gUnknown_02039248.unk1 != gUnknown_02039248.unk2) { - sub_8072C14(gStringVar1, sub_810C9E8(&gSaveBlock1.pokeblocks[gUnknown_02039248[0] + gUnknown_02039248[1]]), 16, 1); + sub_8072C14(gStringVar1, sub_810C9E8(&gSaveBlock1.pokeblocks[gUnknown_02039248.unk0 + gUnknown_02039248.unk1]), 16, 1); MenuPrint(gStringVar1, 11, 17); } else @@ -606,48 +623,48 @@ static void sub_810BF7C(u8 taskId) { if (gMain.newAndRepeatedKeys & DPAD_UP) { - if (gUnknown_02039248[0] != 0) + if (gUnknown_02039248.unk0 != 0) { sub_810BD64(5, 20); - gUnknown_02039248[0]--; + gUnknown_02039248.unk0--; sub_810BF38(FALSE); } - else if (gUnknown_02039248[1] != 0) + else if (gUnknown_02039248.unk1 != 0) { - gUnknown_02039248[1]--; - sub_810BB88(gUnknown_02039248[1]); + gUnknown_02039248.unk1--; + sub_810BB88(gUnknown_02039248.unk1); sub_810BF38(FALSE); } } else if (gMain.newAndRepeatedKeys & DPAD_DOWN) { - if (gUnknown_02039248[0] != gUnknown_02039248[3]) + if (gUnknown_02039248.unk0 != gUnknown_02039248.unk3) { sub_810BD64(5, 20); - gUnknown_02039248[0]++; + gUnknown_02039248.unk0++; sub_810BF38(FALSE); } - else if (gUnknown_02039248[1] + gUnknown_02039248[0] != gUnknown_02039248[2]) + else if (gUnknown_02039248.unk1 + gUnknown_02039248.unk0 != gUnknown_02039248.unk2) { - gUnknown_02039248[1]++; - sub_810BB88(gUnknown_02039248[1]); + gUnknown_02039248.unk1++; + sub_810BB88(gUnknown_02039248.unk1); sub_810BF38(FALSE); } } else if (gMain.newKeys & SELECT_BUTTON) { - if (gUnknown_02039248[1] + gUnknown_02039248[0] != gUnknown_02039248[2]) + if (gUnknown_02039248.unk1 + gUnknown_02039248.unk0 != gUnknown_02039248.unk2) { PlaySE(SE_SELECT); sub_810BDAC(TRUE); - gTasks[taskId].data[0] = gUnknown_02039248[1] + gUnknown_02039248[0]; + gTasks[taskId].data[0] = gUnknown_02039248.unk1 + gUnknown_02039248.unk0; gTasks[taskId].func = sub_810C0C8; } } else if (gMain.newKeys & A_BUTTON) { PlaySE(SE_SELECT); - if (gUnknown_02039248[1] + gUnknown_02039248[0] == gUnknown_02039248[2]) + if (gUnknown_02039248.unk1 + gUnknown_02039248.unk0 == gUnknown_02039248.unk2) { gScriptResult = 0xffff; sub_810C31C(taskId); @@ -670,36 +687,36 @@ static void sub_810C0C8(u8 taskId) { if (gMain.newAndRepeatedKeys & DPAD_UP) { - if (gUnknown_02039248[0] != 0) + if (gUnknown_02039248.unk0 != 0) { sub_810BD64(5, 20); - gUnknown_02039248[0]--; + gUnknown_02039248.unk0--; sub_810BF38(TRUE); sub_810C1C8(taskId, 1); } - else if (gUnknown_02039248[1] != 0) + else if (gUnknown_02039248.unk1 != 0) { sub_810C1C8(taskId, 0); - gUnknown_02039248[1]--; - sub_810BB88(gUnknown_02039248[1]); + gUnknown_02039248.unk1--; + sub_810BB88(gUnknown_02039248.unk1); sub_810BF38(TRUE); sub_810C1C8(taskId, 1); } } else if (gMain.newAndRepeatedKeys & DPAD_DOWN) { - if (gUnknown_02039248[0] != gUnknown_02039248[3]) + if (gUnknown_02039248.unk0 != gUnknown_02039248.unk3) { sub_810BD64(5, 20); - gUnknown_02039248[0]++; + gUnknown_02039248.unk0++; sub_810BF38(TRUE); sub_810C1C8(taskId, 1); } - else if (gUnknown_02039248[1] + gUnknown_02039248[0] != gUnknown_02039248[2]) + else if (gUnknown_02039248.unk1 + gUnknown_02039248.unk0 != gUnknown_02039248.unk2) { sub_810C1C8(taskId, 0); - gUnknown_02039248[1]++; - sub_810BB88(gUnknown_02039248[1]); + gUnknown_02039248.unk1++; + sub_810BB88(gUnknown_02039248.unk1); sub_810BF38(TRUE); sub_810C1C8(taskId, 1); } @@ -730,8 +747,8 @@ static void sub_810C1C8(u8 taskId, u8 flag) { v0 = 0x0005; } - y = gTasks[taskId].data[0] - gUnknown_02039248[1]; - if ((u16)y <= 8 && y != gUnknown_02039248[0]) + y = gTasks[taskId].data[0] - gUnknown_02039248.unk1; + if ((u16)y <= 8 && y != gUnknown_02039248.unk0) { for (i=0; i<14; i++) { @@ -744,8 +761,8 @@ static void sub_810C1C8(u8 taskId, u8 flag) static void sub_810C23C(u8 taskId) { struct Pokeblock buf; - u8 selidx = gUnknown_02039248[1] + gUnknown_02039248[0]; - if (selidx == gUnknown_02039248[2]) + u8 selidx = gUnknown_02039248.unk1 + gUnknown_02039248.unk0; + if (selidx == gUnknown_02039248.unk2) { sub_810BDAC(FALSE); } @@ -754,7 +771,7 @@ static void sub_810C23C(u8 taskId) buf = gSaveBlock1.pokeblocks[selidx]; gSaveBlock1.pokeblocks[selidx] = gSaveBlock1.pokeblocks[gTasks[taskId].data[0]]; gSaveBlock1.pokeblocks[gTasks[taskId].data[0]] = buf; - sub_810BB88(gUnknown_02039248[1]); + sub_810BB88(gUnknown_02039248.unk1); sub_810BDAC(FALSE); } } @@ -799,9 +816,9 @@ static void sub_810C368(u8 taskId) sub_80F98A4(1); BasicInitMenuWindow(&gWindowConfig_81E6E50); MenuDrawTextWindow(7, v0 + 4, 13, 11); - PrintMenuItemsReordered(8, v0 + 5, gUnknown_0203924C, (const struct MenuAction *)gUnknown_083F7EF4, gUnknown_03000758); + PrintMenuItemsReordered(8, v0 + 5, gUnknown_0203924C, gUnknown_083F7EF4, gUnknown_03000758); InitMenu(0, 8, v0 + 5, gUnknown_0203924C, 0, 5); - gScriptItemId = gUnknown_02039248[0] + gUnknown_02039248[1]; + gScriptItemId = gUnknown_02039248.unk0 + gUnknown_02039248.unk1; gTasks[taskId].func = sub_810C40C; } @@ -856,7 +873,7 @@ static void sub_810C540(u8 taskId) BasicInitMenuWindow(&gWindowConfig_81E6E50); HandleDestroyMenuCursors(); MenuZeroFillWindowRect(7, 4, 13, 11); - StringCopy(gStringVar1, gPokeblockNames[gSaveBlock1.pokeblocks[gUnknown_02039248[0] + gUnknown_02039248[1]].color]); + StringCopy(gStringVar1, gPokeblockNames[gSaveBlock1.pokeblocks[gUnknown_02039248.unk0 + gUnknown_02039248.unk1].color]); StringExpandPlaceholders(gStringVar4, gContestStatsText_ThrowAwayPrompt); DisplayItemMessageOnField(taskId, gStringVar4, sub_810C5EC, 0); } @@ -876,7 +893,7 @@ static void sub_810C5EC(u8 taskId) static void sub_810C610(u8 taskId) { MenuZeroFillWindowRect(7, 6, 13, 11); - sub_810CA6C((gUnknown_02039248[0] + gUnknown_02039248[1])); + PokeblockClearIfExists((gUnknown_02039248.unk0 + gUnknown_02039248.unk1)); StringExpandPlaceholders(gStringVar4, gContestStatsText_WasThrownAway); DisplayItemMessageOnField(taskId, gStringVar4, sub_810C704, 0); sub_810BC98(); @@ -887,7 +904,7 @@ static void sub_810C668(u8 taskId) { StartVerticalScrollIndicators(0); StartVerticalScrollIndicators(1); - if (gUnknown_02039248[2] > gUnknown_02039248[3] && gUnknown_02039248[1] + gUnknown_02039248[3] != gUnknown_02039248[2]) + if (gUnknown_02039248.unk2 > gUnknown_02039248.unk3 && gUnknown_02039248.unk1 + gUnknown_02039248.unk3 != gUnknown_02039248.unk2) { sub_80F979C(1, 0); } @@ -908,7 +925,7 @@ static void sub_810C6DC(u8 taskId) static void sub_810C704(u8 taskId) { BasicInitMenuWindow(&gWindowConfig_81E6E34); - sub_810BC84(gUnknown_02039248[1]); + sub_810BC84(gUnknown_02039248.unk1); sub_80F979C(1, 1); gTasks[taskId].func = sub_810C6DC; } @@ -924,9 +941,9 @@ static void sub_810C748(u8 taskId) static void sub_810C788(u8 taskId) { - s16 v0 = sub_810CAE4(GetNature(&gEnemyParty[0]), &gSaveBlock1.pokeblocks[gScriptItemId]); + s16 v0 = PokeblockGetGain(GetNature(&gEnemyParty[0]), &gSaveBlock1.pokeblocks[gScriptItemId]); StringCopy(gBattleTextBuff1, gPokeblockNames[gSaveBlock1.pokeblocks[gScriptItemId].color]); - sub_810CA6C(gScriptItemId); + PokeblockClearIfExists(gScriptItemId); gScriptItemId = gSaveBlock1.pokeblocks[gScriptItemId].color << 8; if (v0 == 0) { @@ -949,7 +966,7 @@ static void sub_810C854(u8 taskId) SafariZoneActivatePokeblockFeeder(gScriptItemId); StringCopy(gStringVar1, gPokeblockNames[gSaveBlock1.pokeblocks[gScriptItemId].color]); gScriptResult = gScriptItemId; - sub_810CA6C(gScriptItemId); + PokeblockClearIfExists(gScriptItemId); BeginNormalPaletteFade(-1, 0, 0, 16, 0); gTasks[taskId].func = sub_810C2C8; } @@ -1006,10 +1023,10 @@ u8 sub_810C9B0(struct Pokeblock *pokeblock) { u8 contestStat; u8 maxRating; - u8 rating = sub_810CA9C(pokeblock, 1); + u8 rating = GetPokeblockData(pokeblock, 1); for (contestStat=1; contestStat<5; contestStat++) { - maxRating = sub_810CA9C(pokeblock, contestStat + 1); + maxRating = GetPokeblockData(pokeblock, contestStat + 1); if (rating < maxRating) { rating = maxRating; @@ -1020,7 +1037,7 @@ u8 sub_810C9B0(struct Pokeblock *pokeblock) u8 sub_810C9E8(struct Pokeblock *pokeblock) { - u8 feel = sub_810CA9C(pokeblock, 6); + u8 feel = GetPokeblockData(pokeblock, 6); if (feel > 99) feel = 99; return feel; @@ -1050,7 +1067,7 @@ bool8 sub_810CA34(struct Pokeblock *pokeblock) return TRUE; } -bool8 sub_810CA6C(u8 pokeblockIdx) +bool8 PokeblockClearIfExists(u8 pokeblockIdx) { if (gSaveBlock1.pokeblocks[pokeblockIdx].color == 0) { @@ -1060,33 +1077,33 @@ bool8 sub_810CA6C(u8 pokeblockIdx) return TRUE; } -s16 sub_810CA9C(const struct Pokeblock *pokeblock, u8 field) +s16 GetPokeblockData(const struct Pokeblock *pokeblock, u8 field) { - if (field == 0) + if (field == PBLOCK_COLOR) return pokeblock->color; - if (field == 1) + if (field == PBLOCK_SPICY) return pokeblock->spicy; - if (field == 2) + if (field == PBLOCK_DRY) return pokeblock->dry; - if (field == 3) + if (field == PBLOCK_SWEET) return pokeblock->sweet; - if (field == 4) + if (field == PBLOCK_BITTER) return pokeblock->bitter; - if (field == 5) + if (field == PBLOCK_SOUR) return pokeblock->sour; - if (field == 6) + if (field == PBLOCK_FEEL) return pokeblock->feel; return 0; } -s16 sub_810CAE4(u8 nature, const struct Pokeblock *pokeblock) +s16 PokeblockGetGain(u8 nature, const struct Pokeblock *pokeblock) { u8 flavor; s16 curGain; s16 totalGain = 0; for (flavor=0; flavor<5; flavor++) { - curGain = sub_810CA9C(pokeblock, flavor + 1); + curGain = GetPokeblockData(pokeblock, flavor + 1); if (curGain > 0) { totalGain += curGain * gPokeblockFlavorCompatibilityTable[5 * nature + flavor]; @@ -1095,9 +1112,9 @@ s16 sub_810CAE4(u8 nature, const struct Pokeblock *pokeblock) return totalGain; } -void sub_810CB44(struct Pokeblock *pokeblock, u8 *dest) +void PokeblockCopyName(struct Pokeblock *pokeblock, u8 *dest) { - u8 color = sub_810CA9C(pokeblock, 0); + u8 color = GetPokeblockData(pokeblock, PBLOCK_COLOR); StringCopy(dest, gPokeblockNames[color]); } @@ -1106,7 +1123,7 @@ bool8 sub_810CB68(u8 nature, u8 *dest) u8 flavor; for (flavor=0; flavor<5; flavor++) { - if (sub_810CAE4(nature, &gUnknown_083F7F9C[flavor]) > 0) + if (PokeblockGetGain(nature, &gUnknown_083F7F9C[flavor]) > 0) { StringCopy(dest, gPokeblockNames[flavor + 1]); return TRUE; diff --git a/src/pokenav.c b/src/field/pokenav.c similarity index 95% rename from src/pokenav.c rename to src/field/pokenav.c index 84ed7b14b..21d7bb4e3 100644 --- a/src/pokenav.c +++ b/src/field/pokenav.c @@ -38,3 +38,5 @@ void sub_80F700C(u8 *arg0, u16 arg1) { ptr[2] = 0x80; ptr[3] = 0xFF; } + +IWRAM_DATA MainCallback gUnknown_03000744; diff --git a/src/field/region_map.c b/src/field/region_map.c new file mode 100644 index 000000000..bfd2729c2 --- /dev/null +++ b/src/field/region_map.c @@ -0,0 +1,1847 @@ +#include "global.h" +#include "event_data.h" +#include "field_effect.h" +#include "field_specials.h" +#include "m4a.h" +#include "main.h" +#include "map_constants.h" +#include "menu.h" +#include "palette.h" +#include "pokemon_menu.h" +#include "region_map.h" +#include "overworld.h" +#include "secret_base.h" +#include "songs.h" +#include "sprite.h" +#include "strings.h" +#include "string_util.h" +#include "text.h" +#include "trig.h" + +// Map Section IDs +#define MAPSEC_LITTLEROOT_TOWN 0 +#define MAPSEC_OLDALE_TOWN 1 +#define MAPSEC_DEWFORD_TOWN 2 +#define MAPSEC_LAVARIDGE_TOWN 3 +#define MAPSEC_FALLARBOR_TOWN 4 +#define MAPSEC_VERDANTURF_TOWN 5 +#define MAPSEC_PACIFIDLOG_TOWN 6 +#define MAPSEC_PETALBURG_CITY 7 +#define MAPSEC_SLATEPORT_CITY 8 +#define MAPSEC_MAUVILLE_CITY 9 +#define MAPSEC_RUSTBORO_CITY 10 +#define MAPSEC_FORTREE_CITY 11 +#define MAPSEC_LILYCOVE_CITY 12 +#define MAPSEC_MOSSDEEP_CITY 13 +#define MAPSEC_SOOTOPOLIS_CITY 14 +#define MAPSEC_EVER_GRANDE_CITY 15 +#define MAPSEC_ROUTE_101 0x10 +#define MAPSEC_ROUTE_102 0x11 +#define MAPSEC_ROUTE_103 0x12 +#define MAPSEC_ROUTE_104 0x13 +#define MAPSEC_ROUTE_105 0x14 +#define MAPSEC_ROUTE_106 0x15 +#define MAPSEC_ROUTE_107 0x16 +#define MAPSEC_ROUTE_108 0x17 +#define MAPSEC_ROUTE_109 0x18 +#define MAPSEC_ROUTE_110 0x19 +#define MAPSEC_ROUTE_111 0x1A +#define MAPSEC_ROUTE_112 0x1B +#define MAPSEC_ROUTE_113 0x1C +#define MAPSEC_ROUTE_114 0x1D +#define MAPSEC_ROUTE_115 0x1E +#define MAPSEC_ROUTE_116 0x1F +#define MAPSEC_ROUTE_117 0x20 +#define MAPSEC_ROUTE_118 0x21 +#define MAPSEC_ROUTE_119 0x22 +#define MAPSEC_ROUTE_120 0x23 +#define MAPSEC_ROUTE_121 0x24 +#define MAPSEC_ROUTE_122 0x25 +#define MAPSEC_ROUTE_123 0x26 +#define MAPSEC_ROUTE_124 0x27 +#define MAPSEC_ROUTE_125 0x28 +#define MAPSEC_ROUTE_126 0x29 +#define MAPSEC_ROUTE_127 0x2A +#define MAPSEC_ROUTE_128 0x2B +#define MAPSEC_ROUTE_129 0x2C +#define MAPSEC_ROUTE_130 0x2D +#define MAPSEC_ROUTE_131 0x2E +#define MAPSEC_ROUTE_132 0x2F +#define MAPSEC_ROUTE_133 0x30 +#define MAPSEC_ROUTE_134 0x31 +#define MAPSEC_UNDERWATER1 0x32 +#define MAPSEC_UNDERWATER2 0x33 +#define MAPSEC_UNDERWATER3 0x34 +#define MAPSEC_UNDERWATER4 0x35 +#define MAPSEC_UNDERWATER5 0x36 +#define MAPSEC_GRANITE_CAVE 0x37 +#define MAPSEC_MT_CHIMNEY 0x38 +#define MAPSEC_SAFARI_ZONE 0x39 +#define MAPSEC_BATTLE_TOWER 0x3A +#define MAPSEC_PETALBURG_WOODS 0x3B +#define MAPSEC_RUSTURF_TUNNEL 0x3C +#define MAPSEC_ABANDONED_SHIP 0x3D +#define MAPSEC_NEW_MAUVILLE 0x3E +#define MAPSEC_METEOR_FALLS_1 0x3F +#define MAPSEC_METEOR_FALLS_2 0x40 +#define MAPSEC_MT_PYRE 0x41 +#define MAPSEC_EVIL_TEAM_HIDEOUT 0x42 +#define MAPSEC_SHOAL_CAVE 0x43 +#define MAPSEC_SEAFLOOR_CAVERN 0x44 +#define MAPSEC_UNDERWATER6 0x45 +#define MAPSEC_VICTORY_ROAD 0x46 +#define MAPSEC_MIRAGE_ISLAND 0x47 +#define MAPSEC_CAVE_OF_ORIGIN 0x48 +#define MAPSEC_SOUTHERN_ISLAND 0x49 +#define MAPSEC_FIERY_PATH_1 0x4A +#define MAPSEC_FIERY_PATH_2 0x4B +#define MAPSEC_JAGGED_PASS_1 0x4C +#define MAPSEC_JAGGED_PASS_2 0x4D +#define MAPSEC_SEALED_CHAMBER 0x4E +#define MAPSEC_UNDERWATER7 0x4F +#define MAPSEC_SCORCHED_SLAB 0x50 +#define MAPSEC_ISLAND_CAVE 0x51 +#define MAPSEC_DESERT_RUINS 0x52 +#define MAPSEC_ANCIENT_TOMB 0x53 +#define MAPSEC_INSIDE_OF_TRUCK 0x54 +#define MAPSEC_SKY_PILLAR 0x55 +#define MAPSEC_SECRET_BASE 0x56 +#define MAPSEC_UNK_0x57 0x57 +#define MAPSEC_NONE 0x58 + +#define MAP_WIDTH 28 +#define MAP_HEIGHT 15 +#define MAPCURSOR_X_MIN 1 +#define MAPCURSOR_Y_MIN 2 +#define MAPCURSOR_X_MAX (MAPCURSOR_X_MIN + MAP_WIDTH - 1) +#define MAPCURSOR_Y_MAX (MAPCURSOR_Y_MIN + MAP_HEIGHT - 1) + +// Input events +enum +{ + INPUT_EVENT_NONE, + INPUT_EVENT_DPAD, + INPUT_EVENT_2, + INPUT_EVENT_3, + INPUT_EVENT_A_BUTTON, + INPUT_EVENT_B_BUTTON, +}; + +static EWRAM_DATA struct RegionMap *gRegionMap = NULL; + +static const u16 sRegionMapCursor_Pal[] = INCBIN_U16("graphics/pokenav/cursor.gbapal"); +static const u8 sRegionMapCursorSmall_ImageLZ[] = INCBIN_U8("graphics/pokenav/cursor_small.4bpp.lz"); +static const u8 sRegionMapCursorLarge_ImageLZ[] = INCBIN_U8("graphics/pokenav/cursor_large.4bpp.lz"); +static const u16 sRegionMapBrendanIcon_Pal[] = INCBIN_U16("graphics/pokenav/brendan_icon.gbapal"); +static const u8 sRegionMapBrendanIcon_Image[] = INCBIN_U8("graphics/pokenav/brendan_icon.4bpp"); +static const u16 sRegionMapMayIcon_Pal[] = INCBIN_U16("graphics/pokenav/may_icon.gbapal"); +static const u8 sRegionMapMayIcon_Image[] = INCBIN_U8("graphics/pokenav/may_icon.4bpp"); +static const u16 sRegionMapBkgnd_Pal[] = INCBIN_U16("graphics/pokenav/region_map.gbapal"); +static const u8 sRegionMapBkgnd_ImageLZ[] = INCBIN_U8("graphics/pokenav/region_map.8bpp.lz"); +static const u8 sRegionMapBkgnd_TilemapLZ[] = INCBIN_U8("graphics/pokenav/region_map_map.bin.lz"); + +#include "../data/region_map_layout.h" + +#if ENGLISH +#include "../data/region_map_names_en.h" +#elif GERMAN +#include "../data/region_map_names_de.h" +#endif + +struct RegionMapLocation +{ + u8 x, y; + u8 width, height; + const u8 *regionMapSectionId; +}; + +const struct RegionMapLocation gRegionMapLocations[] = +{ + { 4, 11, 1, 1, gMapName_LittlerootTown}, + { 4, 9, 1, 1, gMapName_OldaleTown}, + { 2, 14, 1, 1, gMapName_DewfordTown}, + { 5, 3, 1, 1, gMapName_LavaridgeTown}, + { 3, 0, 1, 1, gMapName_FallarborTown}, + { 4, 6, 1, 1, gMapName_VerdanturfTown}, + {17, 10, 1, 1, gMapName_PacifidlogTown}, + { 1, 9, 1, 1, gMapName_PetalburgCity}, + { 8, 10, 1, 2, gMapName_SlateportCity}, + { 8, 6, 2, 1, gMapName_MauvilleCity}, + { 0, 5, 1, 2, gMapName_RustboroCity}, + {12, 0, 1, 1, gMapName_FortreeCity}, + {18, 3, 2, 1, gMapName_LilycoveCity}, + {24, 5, 2, 1, gMapName_MossdeepCity}, + {21, 7, 1, 1, gMapName_SootopolisCity}, + {27, 8, 1, 2, gMapName_EverGrandeCity}, + { 4, 10, 1, 1, gMapName_Route101}, + { 2, 9, 2, 1, gMapName_Route102}, + { 4, 8, 4, 1, gMapName_Route103}, + { 0, 7, 1, 3, gMapName_Route104}, + { 0, 10, 1, 3, gMapName_Route105}, + { 0, 13, 2, 1, gMapName_Route106}, + { 3, 14, 3, 1, gMapName_Route107}, + { 6, 14, 2, 1, gMapName_Route108}, + { 8, 12, 1, 3, gMapName_Route109}, + { 8, 7, 1, 3, gMapName_Route110}, + { 8, 0, 1, 6, gMapName_Route111}, + { 6, 3, 2, 1, gMapName_Route112}, + { 4, 0, 4, 1, gMapName_Route113}, + { 1, 0, 2, 3, gMapName_Route114}, + { 0, 2, 1, 3, gMapName_Route115}, + { 1, 5, 4, 1, gMapName_Route116}, + { 5, 6, 3, 1, gMapName_Route117}, + {10, 6, 2, 1, gMapName_Route118}, + {11, 0, 1, 6, gMapName_Route119}, + {13, 0, 1, 4, gMapName_Route120}, + {14, 3, 4, 1, gMapName_Route121}, + {16, 4, 1, 2, gMapName_Route122}, + {12, 6, 5, 1, gMapName_Route123}, + {20, 3, 4, 3, gMapName_Route124}, + {24, 3, 2, 2, gMapName_Route125}, + {20, 6, 3, 3, gMapName_Route126}, + {23, 6, 3, 3, gMapName_Route127}, + {23, 9, 4, 1, gMapName_Route128}, + {24, 10, 2, 1, gMapName_Route129}, + {21, 10, 3, 1, gMapName_Route130}, + {18, 10, 3, 1, gMapName_Route131}, + {15, 10, 2, 1, gMapName_Route132}, + {12, 10, 3, 1, gMapName_Route133}, + { 9, 10, 3, 1, gMapName_Route134}, + {20, 3, 4, 3, gMapName_Underwater}, + {20, 6, 3, 3, gMapName_Underwater}, + {23, 6, 3, 3, gMapName_Underwater}, + {23, 9, 4, 1, gMapName_Underwater}, + {21, 7, 1, 1, gMapName_Underwater}, + { 1, 13, 1, 1, gMapName_GraniteCave}, + { 6, 2, 1, 1, gMapName_MtChimney}, + {16, 2, 1, 1, gMapName_SafariZone}, + {22, 12, 1, 1, gMapName_BattleTower}, + { 0, 8, 1, 1, gMapName_PetalburgWoods}, + { 2, 5, 1, 1, gMapName_RusturfTunnel}, + { 6, 14, 1, 1, gMapName_AbandonedShip}, + { 8, 7, 1, 1, gMapName_NewMauville}, + { 0, 3, 1, 1, gMapName_MeteorFalls}, + { 1, 2, 1, 1, gMapName_MeteorFalls}, + {16, 4, 1, 1, gMapName_MtPyre}, + {19, 3, 1, 1, gMapName_EvilTeamHideout}, + {24, 4, 1, 1, gMapName_ShoalCave}, + {24, 9, 1, 1, gMapName_SeafloorCavern}, + {24, 9, 1, 1, gMapName_Underwater}, + {27, 9, 1, 1, gMapName_VictoryRoad}, + {17, 10, 1, 1, gMapName_MirageIsland}, + {21, 7, 1, 1, gMapName_CaveOfOrigin}, + {12, 14, 1, 1, gMapName_SouthernIsland}, + { 6, 3, 1, 1, gMapName_FieryPath}, + { 7, 3, 1, 1, gMapName_FieryPath}, + { 6, 3, 1, 1, gMapName_JaggedPass}, + { 7, 2, 1, 1, gMapName_JaggedPass}, + {11, 10, 1, 1, gMapName_SealedChamber}, + {11, 10, 1, 1, gMapName_Underwater}, + {13, 0, 1, 1, gMapName_ScorchedSlab}, + {0, 10, 1, 1, gMapName_IslandCave}, + { 8, 3, 1, 1, gMapName_DesertRuins}, + {13, 2, 1, 1, gMapName_AncientTomb}, + { 0, 0, 1, 1, gMapName_InsideOfTruck}, + {19, 10, 1, 1, gMapName_SkyPillar}, + { 0, 0, 1, 1, gMapName_SecretBase}, + { 0, 0, 1, 1, gMapName_None}, +}; + +static const u16 gUnknown_083E7684[][2] = +{ + {MAPSEC_UNDERWATER1, MAPSEC_ROUTE_124}, + {MAPSEC_UNDERWATER2, MAPSEC_ROUTE_126}, + {MAPSEC_UNDERWATER3, MAPSEC_ROUTE_127}, + {MAPSEC_UNDERWATER4, MAPSEC_ROUTE_128}, + {MAPSEC_UNDERWATER5, MAPSEC_SOOTOPOLIS_CITY}, + {MAPSEC_UNDERWATER6, MAPSEC_ROUTE_128}, + {MAPSEC_EVIL_TEAM_HIDEOUT, MAPSEC_LILYCOVE_CITY}, + {MAPSEC_UNDERWATER7, MAPSEC_ROUTE_134}, + {MAPSEC_PETALBURG_WOODS, MAPSEC_ROUTE_104}, + {MAPSEC_JAGGED_PASS_1, MAPSEC_ROUTE_112}, + {MAPSEC_MT_PYRE, MAPSEC_ROUTE_122}, + {MAPSEC_SKY_PILLAR, MAPSEC_ROUTE_131}, + {MAPSEC_NONE, MAPSEC_NONE}, +}; + +static u8 sub_80FAB78(void); +static u8 _swiopen(void); +static u8 sub_80FAD04(void); +static u8 sub_80FADE4(void); +static void CalcZoomScrollParams(s16, s16, s16, s16, u16, u16, u8); +static void sub_80FB238(s16, s16); +void UpdateRegionMapVideoRegs(void); +static u16 GetRegionMapSectionAt(u16, u16); +static void InitializeCursorPosition(void); +static void sub_80FB600(void); +static u16 sub_80FB758(u16); +static u16 sub_80FB9C0(u16); +static void sub_80FBA18(void); +static bool8 sub_80FBAA0(u16); +void CreateRegionMapCursor(u16, u16); +static void sub_80FBCA0(void); +static void sub_80FBDF8(void); +static void sub_80FBE24(void); +static void SpriteCB_PlayerIconZoomedOut(struct Sprite *); +static void UpdateIconBlink(struct Sprite *); +static void SpriteCB_PlayerIconZoomedIn(struct Sprite *); +const u8 *GetMapSectionName(u8 *, u16, u16); +static void VBlankCB_FlyRegionMap(void); +static void CB2_FlyRegionMap(void); +static void sub_80FC244(void (*func)(void)); +static void PrintFlyTargetName(void); +static void CreateFlyTargetGraphics(void); +static void CreateCityTownFlyTargetIcons(void); +static void CreateSpecialAreaFlyTargetIcons(void); +static void SpriteCB_FlyTargetIcons(struct Sprite *); +static void sub_80FC5B4(void); +static void sub_80FC600(void); +static void sub_80FC69C(void); + +void InitRegionMap(struct RegionMap *regionMap, bool8 zoomed) +{ + sub_80FA904(regionMap, zoomed); + while (sub_80FA940()) + ; +} + +void sub_80FA904(struct RegionMap *regionMap, bool8 zoomed) +{ + gRegionMap = regionMap; + gRegionMap->initStep = 0; + gRegionMap->zoomed = zoomed; + gRegionMap->inputCallback = (zoomed == 0) ? sub_80FAB78 : sub_80FAD04; +} + +bool8 sub_80FA940(void) +{ + switch (gRegionMap->initStep) + { + case 0: + LZ77UnCompVram(sRegionMapBkgnd_ImageLZ, (void *)(VRAM + 0x8000)); + break; + case 1: + LZ77UnCompVram(sRegionMapBkgnd_TilemapLZ, (void *)(VRAM + 0xE000)); + break; + case 2: + LoadPalette(sRegionMapBkgnd_Pal, 0x70, 0x60); // Why isn't this the right size? + break; + case 3: + LZ77UnCompWram(sRegionMapCursorSmall_ImageLZ, gRegionMap->cursorSmallImage); + break; + case 4: + LZ77UnCompWram(sRegionMapCursorLarge_ImageLZ, gRegionMap->cursorLargeImage); + break; + case 5: + InitializeCursorPosition(); + gRegionMap->unk74 = gRegionMap->cursorPosX; + gRegionMap->unk76 = gRegionMap->cursorPosY; + gRegionMap->unk16 = sub_80FB758(gRegionMap->mapSecId); + gRegionMap->mapSecId = sub_80FB9C0(gRegionMap->mapSecId); + GetMapSectionName(gRegionMap->mapSecName, gRegionMap->mapSecId, 16); + break; + case 6: + if (gRegionMap->zoomed == FALSE) + { + CalcZoomScrollParams(0, 0, 0, 0, 0x100, 0x100, 0); + } + else + { + gRegionMap->scrollX = gRegionMap->cursorPosX * 8 - 52; + gRegionMap->scrollY = gRegionMap->cursorPosY * 8 - 68; + gRegionMap->unk64 = gRegionMap->cursorPosX; + gRegionMap->unk66 = gRegionMap->cursorPosY; + CalcZoomScrollParams(gRegionMap->scrollX, gRegionMap->scrollY, 0x38, 0x48, 0x80, 0x80, 0); + } + break; + case 7: + sub_80FBA18(); + UpdateRegionMapVideoRegs(); + gRegionMap->cursorSprite = NULL; + gRegionMap->playerIconSprite = NULL; + gRegionMap->unk7A = 0; + gRegionMap->blinkPlayerIcon = FALSE; + REG_BG2CNT = 0xBC8A; + gRegionMap->initStep++; + default: + return FALSE; + } + gRegionMap->initStep++; + return TRUE; +} + +void FreeRegionMapIconResources(void) +{ + if (gRegionMap->cursorSprite != NULL) + { + DestroySprite(gRegionMap->cursorSprite); + FreeSpriteTilesByTag(gRegionMap->cursorTileTag); + FreeSpritePaletteByTag(gRegionMap->cursorPaletteTag); + } + if (gRegionMap->playerIconSprite != NULL) + { + DestroySprite(gRegionMap->playerIconSprite); + FreeSpriteTilesByTag(gRegionMap->playerIconTileTag); + FreeSpritePaletteByTag(gRegionMap->playerIconPaletteTag); + } +} + +u8 sub_80FAB60(void) +{ + return gRegionMap->inputCallback(); +} + +static u8 sub_80FAB78(void) +{ + u8 event = INPUT_EVENT_NONE; + + gRegionMap->cursorDeltaX = 0; + gRegionMap->cursorDeltaY = 0; + if ((gMain.heldKeys & DPAD_UP) && gRegionMap->cursorPosY > MAPCURSOR_Y_MIN) + { + gRegionMap->cursorDeltaY = -1; + event = INPUT_EVENT_DPAD; + } + if ((gMain.heldKeys & DPAD_DOWN) && gRegionMap->cursorPosY < MAPCURSOR_Y_MAX) + { + gRegionMap->cursorDeltaY = 1; + event = INPUT_EVENT_DPAD; + } + if ((gMain.heldKeys & DPAD_LEFT) && gRegionMap->cursorPosX > MAPCURSOR_X_MIN) + { + gRegionMap->cursorDeltaX = -1; + event = INPUT_EVENT_DPAD; + } + if ((gMain.heldKeys & DPAD_RIGHT) && gRegionMap->cursorPosX < MAPCURSOR_X_MAX) + { + gRegionMap->cursorDeltaX = 1; + event = INPUT_EVENT_DPAD; + } + + if (gMain.newKeys & A_BUTTON) + event = INPUT_EVENT_A_BUTTON; + else if (gMain.newKeys & B_BUTTON) + event = INPUT_EVENT_B_BUTTON; + + if (event == INPUT_EVENT_DPAD) + { + gRegionMap->unk7A = 4; + gRegionMap->inputCallback = _swiopen; + } + return event; +} + +static u8 _swiopen(void) +{ + u16 mapSecId; + + if (gRegionMap->unk7A != 0) + return INPUT_EVENT_2; + + if (gRegionMap->cursorDeltaX > 0) + gRegionMap->cursorPosX++; + + if (gRegionMap->cursorDeltaX < 0) + gRegionMap->cursorPosX--; + + if (gRegionMap->cursorDeltaY > 0) + gRegionMap->cursorPosY++; + + if (gRegionMap->cursorDeltaY < 0) + gRegionMap->cursorPosY--; + + mapSecId = GetRegionMapSectionAt(gRegionMap->cursorPosX, gRegionMap->cursorPosY); + gRegionMap->unk16 = sub_80FB758(mapSecId); + if (mapSecId != gRegionMap->mapSecId) + { + gRegionMap->mapSecId = mapSecId; + GetMapSectionName(gRegionMap->mapSecName, gRegionMap->mapSecId, 16); + } + sub_80FBA18(); + gRegionMap->inputCallback = sub_80FAB78; + return INPUT_EVENT_3; +} + +static u8 sub_80FAD04(void) +{ + u8 event = INPUT_EVENT_NONE; + + gRegionMap->unk6A = 0; + gRegionMap->unk68 = 0; + if ((gMain.heldKeys & DPAD_UP) && gRegionMap->scrollY > -52) + { + gRegionMap->unk68 = -1; + event = INPUT_EVENT_DPAD; + } + if ((gMain.heldKeys & DPAD_DOWN) && gRegionMap->scrollY < 60) + { + gRegionMap->unk68 = 1; + event = INPUT_EVENT_DPAD; + } + if ((gMain.heldKeys & DPAD_LEFT) && gRegionMap->scrollX > -44) + { + gRegionMap->unk6A = -1; + event = INPUT_EVENT_DPAD; + } + if ((gMain.heldKeys & DPAD_RIGHT) && gRegionMap->scrollX < 172) + { + gRegionMap->unk6A = 1; + event = INPUT_EVENT_DPAD; + } + + if (gMain.newKeys & A_BUTTON) + event = INPUT_EVENT_A_BUTTON; + if (gMain.newKeys & B_BUTTON) + event = INPUT_EVENT_B_BUTTON; + + if (event == INPUT_EVENT_DPAD) + { + gRegionMap->inputCallback = sub_80FADE4; + gRegionMap->unk6C = 0; + } + return event; +} + +static u8 sub_80FADE4(void) +{ + gRegionMap->scrollY += gRegionMap->unk68; + gRegionMap->scrollX += gRegionMap->unk6A; + sub_80FB238(gRegionMap->scrollX, gRegionMap->scrollY); + gRegionMap->unk6C++; + if (gRegionMap->unk6C == 8) + { + u16 r3 = (gRegionMap->scrollX + 44) / 8 + 1; + u16 r1 = (gRegionMap->scrollY + 52) / 8 + 2; + + if (r3 != gRegionMap->unk64 || r1 != gRegionMap->unk66) + { + u16 mapSecId; + + gRegionMap->unk64 = r3; + gRegionMap->unk66 = r1; + mapSecId = GetRegionMapSectionAt(r3, r1); + gRegionMap->unk16 = sub_80FB758(mapSecId); + if (mapSecId != gRegionMap->mapSecId) + { + gRegionMap->mapSecId = mapSecId; + GetMapSectionName(gRegionMap->mapSecName, gRegionMap->mapSecId, 16); + } + sub_80FBA18(); + } + gRegionMap->unk6C = 0; + gRegionMap->inputCallback = sub_80FAD04; + return INPUT_EVENT_3; + } + return INPUT_EVENT_2; +} + +void sub_80FAEC4(void) +{ + if (gRegionMap->zoomed == FALSE) + { + gRegionMap->scrollY = 0; + gRegionMap->scrollX = 0; + gRegionMap->unk40 = 0; + gRegionMap->unk3C = 0; + gRegionMap->unk60 = gRegionMap->cursorPosX * 8 - 52; + gRegionMap->unk62 = gRegionMap->cursorPosY * 8 - 68; + gRegionMap->unk44 = (gRegionMap->unk60 << 8) / 16; + gRegionMap->unk48 = (gRegionMap->unk62 << 8) / 16; + gRegionMap->unk64 = gRegionMap->cursorPosX; + gRegionMap->unk66 = gRegionMap->cursorPosY; + gRegionMap->unk4C = (256 << 8); + gRegionMap->unk50 = -0x800; + } + else + { + gRegionMap->unk3C = gRegionMap->scrollX * 256; + gRegionMap->unk40 = gRegionMap->scrollY * 256; + gRegionMap->unk60 = 0; + gRegionMap->unk62 = 0; + gRegionMap->unk44 = -(gRegionMap->unk3C / 16); + gRegionMap->unk48 = -(gRegionMap->unk40 / 16); + gRegionMap->cursorPosX = gRegionMap->unk64; + gRegionMap->cursorPosY = gRegionMap->unk66; + gRegionMap->unk4C = (128 << 8); + gRegionMap->unk50 = 0x800; + } + gRegionMap->unk6E = 0; + sub_80FBCA0(); + sub_80FBDF8(); +} + +u8 sub_80FAFC0(void) +{ + u8 r4; + + if (gRegionMap->unk6E >= 16) + return 0; + gRegionMap->unk6E++; + if (gRegionMap->unk6E == 16) + { + gRegionMap->unk44 = 0; + gRegionMap->unk48 = 0; + gRegionMap->scrollX = gRegionMap->unk60; + gRegionMap->scrollY = gRegionMap->unk62; + gRegionMap->unk4C = (gRegionMap->zoomed == FALSE) ? (128 << 8) : (256 << 8); + gRegionMap->zoomed = !gRegionMap->zoomed; + gRegionMap->inputCallback = (gRegionMap->zoomed == FALSE) ? sub_80FAB78 : sub_80FAD04; + CreateRegionMapCursor(gRegionMap->cursorTileTag, gRegionMap->cursorPaletteTag); + sub_80FBE24(); + r4 = 0; + } + else + { + gRegionMap->unk3C += gRegionMap->unk44; + gRegionMap->unk40 += gRegionMap->unk48; + gRegionMap->scrollX = gRegionMap->unk3C >> 8; + gRegionMap->scrollY = gRegionMap->unk40 >> 8; + gRegionMap->unk4C += gRegionMap->unk50; + if ((gRegionMap->unk44 < 0 && gRegionMap->scrollX < gRegionMap->unk60) + || (gRegionMap->unk44 > 0 && gRegionMap->scrollX > gRegionMap->unk60)) + { + gRegionMap->scrollX = gRegionMap->unk60; + gRegionMap->unk44 = 0; + } + if ((gRegionMap->unk48 < 0 && gRegionMap->scrollY < gRegionMap->unk62) + || (gRegionMap->unk48 > 0 && gRegionMap->scrollY > gRegionMap->unk62)) + { + gRegionMap->scrollY = gRegionMap->unk62; + gRegionMap->unk48 = 0; + } + if (gRegionMap->zoomed == FALSE) + { + if (gRegionMap->unk4C < (128 << 8)) + { + gRegionMap->unk4C = (128 << 8); + gRegionMap->unk50 = 0; + } + } + else + { + if (gRegionMap->unk4C > (256 << 8)) + { + gRegionMap->unk4C = (256 << 8); + gRegionMap->unk50 = 0; + } + } + r4 = 1; + } + CalcZoomScrollParams(gRegionMap->scrollX, gRegionMap->scrollY, 0x38, 0x48, gRegionMap->unk4C >> 8, gRegionMap->unk4C >> 8, 0); + return r4; +} + +static void CalcZoomScrollParams(s16 a, s16 b, s16 c, s16 d, u16 e, u16 f, u8 rotation) +{ + s32 var1; + s32 var2; + s32 var3; + s32 var4; + + gRegionMap->unk2C = e * gSineTable[rotation + 64] >> 8; + gRegionMap->unk30 = e * -gSineTable[rotation] >> 8; + gRegionMap->unk34 = f * gSineTable[rotation] >> 8; + gRegionMap->unk38 = f * gSineTable[rotation + 64] >> 8; + + var1 = (a << 8) + (c << 8); + var2 = d * gRegionMap->unk34 + gRegionMap->unk2C * c; + gRegionMap->bg2x = var1 - var2; + + var3 = (b << 8) + (d << 8); + var4 = gRegionMap->unk38 * d + gRegionMap->unk30 * c; + gRegionMap->bg2y = var3 - var4; + + gRegionMap->needUpdateVideoRegs = TRUE; +} + +static void sub_80FB238(s16 x, s16 y) +{ + gRegionMap->bg2x = (0x1C << 8) + (x << 8); + gRegionMap->bg2y = (0x24 << 8) + (y << 8); + gRegionMap->needUpdateVideoRegs = TRUE; +} + +void UpdateRegionMapVideoRegs(void) +{ + if (gRegionMap->needUpdateVideoRegs) + { + REG_BG2PA = gRegionMap->unk2C; + REG_BG2PB = gRegionMap->unk34; + REG_BG2PC = gRegionMap->unk30; + REG_BG2PD = gRegionMap->unk38; + REG_BG2X = gRegionMap->bg2x; + REG_BG2Y = gRegionMap->bg2y; + gRegionMap->needUpdateVideoRegs = FALSE; + } +} + +void sub_80FB2A4(s16 a, s16 b) +{ + CalcZoomScrollParams(a, b, 0x38, 0x48, 0x100, 0x100, 0); + UpdateRegionMapVideoRegs(); + if (gRegionMap->playerIconSprite != NULL) + { + gRegionMap->playerIconSprite->pos2.x = -a; + gRegionMap->playerIconSprite->pos2.y = -b; + } +} + +static u16 GetRegionMapSectionAt(u16 x, u16 y) +{ + if (y < MAPCURSOR_Y_MIN || y > MAPCURSOR_Y_MAX || x < MAPCURSOR_X_MIN || x > MAPCURSOR_X_MAX) + return MAPSEC_NONE; + y -= MAPCURSOR_Y_MIN; + x -= MAPCURSOR_X_MIN; + return sRegionMapLayout[x + y * 28]; +} + +static void InitializeCursorPosition(void) +{ + struct MapHeader *mapHeader; + u16 mapWidth; + u16 mapHeight; + u16 x; + u16 y; + u16 r1; + u16 r9; + + if (gSaveBlock1.location.mapGroup == 25 + && (gSaveBlock1.location.mapNum == MAP_ID_SS_TIDAL_CORRIDOR + || gSaveBlock1.location.mapNum == MAP_ID_SS_TIDAL_LOWER_DECK + || gSaveBlock1.location.mapNum == MAP_ID_SS_TIDAL_ROOMS)) + { + sub_80FB600(); + return; + } + + switch (GetMapTypeByGroupAndId(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum) - 1) + { + default: + case 0: + case 1: + case 2: + case 4: + case 5: + gRegionMap->mapSecId = gMapHeader.regionMapSectionId; + gRegionMap->playerIsInCave = FALSE; + mapWidth = gMapHeader.mapData->width; + mapHeight = gMapHeader.mapData->height; + x = gSaveBlock1.pos.x; + y = gSaveBlock1.pos.y; + if (gRegionMap->mapSecId == MAPSEC_UNDERWATER6) + gRegionMap->playerIsInCave = TRUE; + break; + case 3: + case 6: + mapHeader = Overworld_GetMapHeaderByGroupAndId(gSaveBlock1.warp4.mapGroup, gSaveBlock1.warp4.mapNum); + gRegionMap->mapSecId = mapHeader->regionMapSectionId; + gRegionMap->playerIsInCave = TRUE; + mapWidth = mapHeader->mapData->width; + mapHeight = mapHeader->mapData->height; + x = gSaveBlock1.warp4.x; + y = gSaveBlock1.warp4.y; + break; + case 8: + mapHeader = Overworld_GetMapHeaderByGroupAndId(gSaveBlock1.warp2.mapGroup, gSaveBlock1.warp2.mapNum); + gRegionMap->mapSecId = mapHeader->regionMapSectionId; + gRegionMap->playerIsInCave = TRUE; + mapWidth = mapHeader->mapData->width; + mapHeight = mapHeader->mapData->height; + x = gSaveBlock1.warp2.x; + y = gSaveBlock1.warp2.y; + break; + case 7: + { + struct WarpData *r4; + + gRegionMap->mapSecId = gMapHeader.regionMapSectionId; + if (gRegionMap->mapSecId != MAPSEC_UNK_0x57) + { + r4 = &gSaveBlock1.warp4; + mapHeader = Overworld_GetMapHeaderByGroupAndId(r4->mapGroup, r4->mapNum); + } + else + { + r4 = &gSaveBlock1.warp2; + mapHeader = Overworld_GetMapHeaderByGroupAndId(r4->mapGroup, r4->mapNum); + gRegionMap->mapSecId = mapHeader->regionMapSectionId; + } + gRegionMap->playerIsInCave = FALSE; + mapWidth = mapHeader->mapData->width; + mapHeight = mapHeader->mapData->height; + x = r4->x; + y = r4->y; + } + break; + } + + r9 = x; + + r1 = mapWidth / gRegionMapLocations[gRegionMap->mapSecId].width; + if (r1 == 0) + r1 = 1; + x /= r1; + if (x >= gRegionMapLocations[gRegionMap->mapSecId].width) + x = gRegionMapLocations[gRegionMap->mapSecId].width - 1; + + r1 = mapHeight / gRegionMapLocations[gRegionMap->mapSecId].height; + if (r1 == 0) + r1 = 1; + y /= r1; + if (y >= gRegionMapLocations[gRegionMap->mapSecId].height) + y = gRegionMapLocations[gRegionMap->mapSecId].height - 1; + + switch (gRegionMap->mapSecId) + { + case MAPSEC_ROUTE_114: + if (y != 0) + x = 0; + break; + case MAPSEC_ROUTE_126: + case MAPSEC_UNDERWATER2: + x = 0; + if (gSaveBlock1.pos.x > 32) + x = 1; + if (gSaveBlock1.pos.x > 0x33) + x++; + y = 0; + if (gSaveBlock1.pos.y > 0x25) + y = 1; + if (gSaveBlock1.pos.y > 0x38) + y++; + break; + case MAPSEC_ROUTE_121: + x = 0; + if (r9 > 14) + x = 1; + if (r9 > 0x1C) + x++; + if (r9 > 0x36) + x++; + break; + } + gRegionMap->cursorPosX = gRegionMapLocations[gRegionMap->mapSecId].x + x + MAPCURSOR_X_MIN; + gRegionMap->cursorPosY = gRegionMapLocations[gRegionMap->mapSecId].y + y + MAPCURSOR_Y_MIN; +} + +static void sub_80FB600(void) +{ + u16 y = 0; + u16 x = 0; + u8 mapGroup; + u8 mapNum; + s16 sp2; + s16 sp4; + + switch (GetSSTidalLocation(&mapGroup, &mapNum, &sp2, &sp4)) + { + case 1: + gRegionMap->mapSecId = MAPSEC_SLATEPORT_CITY; + break; + case 2: + gRegionMap->mapSecId = MAPSEC_LILYCOVE_CITY; + break; + case 3: + gRegionMap->mapSecId = MAPSEC_ROUTE_124; + break; + case 4: + gRegionMap->mapSecId = MAPSEC_ROUTE_131; + break; + default: + case 0: + { + struct MapHeader *mapHeader = Overworld_GetMapHeaderByGroupAndId(mapGroup, mapNum); + u16 r1; + + gRegionMap->mapSecId = mapHeader->regionMapSectionId; + r1 = mapHeader->mapData->width / gRegionMapLocations[gRegionMap->mapSecId].width; + if (r1 == 0) + r1 = 1; + x = sp2 / r1; + if (x >= gRegionMapLocations[gRegionMap->mapSecId].width) + x = gRegionMapLocations[gRegionMap->mapSecId].width - 1; + + r1 = mapHeader->mapData->height / gRegionMapLocations[gRegionMap->mapSecId].height; + if (r1 == 0) + r1 = 1; + y = sp4 / r1; + if (y >= gRegionMapLocations[gRegionMap->mapSecId].height) + y = gRegionMapLocations[gRegionMap->mapSecId].height - 1; + } + break; + } + gRegionMap->playerIsInCave = FALSE; + gRegionMap->cursorPosX = gRegionMapLocations[gRegionMap->mapSecId].x + x + MAPCURSOR_X_MIN; + gRegionMap->cursorPosY = gRegionMapLocations[gRegionMap->mapSecId].y + y + MAPCURSOR_Y_MIN; +} + +static u16 sub_80FB758(u16 mapSecId) +{ + switch (mapSecId) + { + case MAPSEC_NONE: + return 0; + case MAPSEC_LITTLEROOT_TOWN: + return FlagGet(FLAG_VISITED_LITTLEROOT_TOWN) ? 2 : 3; + case MAPSEC_OLDALE_TOWN: + return FlagGet(FLAG_VISITED_OLDALE_TOWN) ? 2 : 3; + case MAPSEC_DEWFORD_TOWN: + return FlagGet(FLAG_VISITED_DEWFORD_TOWN) ? 2 : 3; + case MAPSEC_LAVARIDGE_TOWN: + return FlagGet(FLAG_VISITED_LAVARIDGE_TOWN) ? 2 : 3; + case MAPSEC_FALLARBOR_TOWN: + return FlagGet(FLAG_VISITED_FALLARBOR_TOWN) ? 2 : 3; + case MAPSEC_VERDANTURF_TOWN: + return FlagGet(FLAG_VISITED_VERDANTURF_TOWN) ? 2 : 3; + case MAPSEC_PACIFIDLOG_TOWN: + return FlagGet(FLAG_VISITED_PACIFIDLOG_TOWN) ? 2 : 3; + case MAPSEC_PETALBURG_CITY: + return FlagGet(FLAG_VISITED_PETALBURG_CITY) ? 2 : 3; + case MAPSEC_SLATEPORT_CITY: + return FlagGet(FLAG_VISITED_SLATEPORT_CITY) ? 2 : 3; + case MAPSEC_MAUVILLE_CITY: + return FlagGet(FLAG_VISITED_MAUVILLE_CITY) ? 2 : 3; + case MAPSEC_RUSTBORO_CITY: + return FlagGet(FLAG_VISITED_RUSTBORO_CITY) ? 2 : 3; + case MAPSEC_FORTREE_CITY: + return FlagGet(FLAG_VISITED_FORTREE_CITY) ? 2 : 3; + case MAPSEC_LILYCOVE_CITY: + return FlagGet(FLAG_VISITED_LILYCOVE_CITY) ? 2 : 3; + case MAPSEC_MOSSDEEP_CITY: + return FlagGet(FLAG_VISITED_MOSSDEEP_CITY) ? 2 : 3; + case MAPSEC_SOOTOPOLIS_CITY: + return FlagGet(FLAG_VISITED_SOOTOPOLIS_CITY) ? 2 : 3; + case MAPSEC_EVER_GRANDE_CITY: + return FlagGet(FLAG_VISITED_EVER_GRANDE_CITY) ? 2 : 3; + + case MAPSEC_BATTLE_TOWER: + return FlagGet(FLAG_UNLOCK_BATTLE_TOWER) ? 4 : 0; + case MAPSEC_SOUTHERN_ISLAND: + return FlagGet(FLAG_UNLOCK_SOUTHERN_ISLAND) ? 1 : 0; + default: + return 1; + } +} + +u16 GetRegionMapSectionAt_(u16 x, u16 y) +{ + return GetRegionMapSectionAt(x, y); +} + +static u16 sub_80FB9C0(u16 mapSecId) +{ + u16 i; + + for (i = 0; gUnknown_083E7684[i][0] != MAPSEC_NONE; i++) + { + if (gUnknown_083E7684[i][0] == mapSecId) + return gUnknown_083E7684[i][1]; + } + return mapSecId; +} + +u16 sub_80FBA04(u16 mapSecId) +{ + return sub_80FB9C0(mapSecId); +} + +static void sub_80FBA18(void) +{ + u16 x; + u16 y; + u16 i; + + if (gRegionMap->mapSecId == MAPSEC_NONE) + { + gRegionMap->everGrandeCityArea = 0; + return; + } + + if (gRegionMap->zoomed == FALSE) + { + x = gRegionMap->cursorPosX; + y = gRegionMap->cursorPosY; + } + else + { + x = gRegionMap->unk64; + y = gRegionMap->unk66; + } + + i = 0; + while (1) + { + if (x <= 1) + { + if (sub_80FBAA0(y)) + { + y--; + x = 0x1D; + } + else + { + break; + } + } + else + { + x--; + if (GetRegionMapSectionAt(x, y) == gRegionMap->mapSecId) + i++; + } + } + + gRegionMap->everGrandeCityArea = i; +} + +static bool8 sub_80FBAA0(u16 a) +{ + u16 x; + u16 y; + + y = a - 1; + if (y == 0xFFFF) + return FALSE; + + for (x = MAPCURSOR_X_MIN; x <= MAPCURSOR_X_MAX; x++) + { + if (GetRegionMapSectionAt(x, y) == gRegionMap->mapSecId) + return TRUE; + } + return FALSE; +} + +static const struct OamData sCursorOamData = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 1, + .tileNum = 0, + .priority = 1, + .paletteNum = 0, + .affineParam = 0, +}; + +static const union AnimCmd sCursorAnimSeq0[] = +{ + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(4, 20), + ANIMCMD_JUMP(0), +}; + +static const union AnimCmd sCursorAnimSeq1[] = +{ + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(16, 10), + ANIMCMD_FRAME(32, 10), + ANIMCMD_FRAME(16, 10), + ANIMCMD_JUMP(0), +}; + +static const union AnimCmd *const sCursorAnimTable[] = +{ + sCursorAnimSeq0, + sCursorAnimSeq1, +}; + +static void SpriteCB_Cursor(struct Sprite *sprite) +{ + if (gRegionMap->unk7A != 0) + { + sprite->pos1.x += gRegionMap->cursorDeltaX * 2; + sprite->pos1.y += gRegionMap->cursorDeltaY * 2; + gRegionMap->unk7A--; + } +} + +static void nullsub_66(struct Sprite *sprite) +{ +} + +void CreateRegionMapCursor(u16 tileTag, u16 paletteTag) +{ + u8 spriteId; + struct SpriteSheet spriteSheet; + struct SpritePalette spritePalette = + { + .data = sRegionMapCursor_Pal, + }; + struct SpriteTemplate spriteTemplate = + { + .oam = &sCursorOamData, + .anims = sCursorAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCB_Cursor, + }; + + spriteSheet.tag = tileTag; + spriteTemplate.tileTag = tileTag; + gRegionMap->cursorTileTag = tileTag; + + spritePalette.tag = paletteTag; + spriteTemplate.paletteTag = paletteTag; + gRegionMap->cursorPaletteTag = paletteTag; + + if (gRegionMap->zoomed == FALSE) + { + spriteSheet.data = gRegionMap->cursorSmallImage; + spriteSheet.size = 0x100; + spriteTemplate.callback = SpriteCB_Cursor; + } + else + { + spriteSheet.data = gRegionMap->cursorLargeImage; + spriteSheet.size = 0x600; + spriteTemplate.callback = nullsub_66; + } + LoadSpriteSheet(&spriteSheet); + LoadSpritePalette(&spritePalette); + spriteId = CreateSprite(&spriteTemplate, 0x38, 0x48, 0); + if (spriteId != 64) + { + gRegionMap->cursorSprite = &gSprites[spriteId]; + if (gRegionMap->zoomed == TRUE) + { + gRegionMap->cursorSprite->oam.size = 2; + gRegionMap->cursorSprite->pos1.x -= 8; + gRegionMap->cursorSprite->pos1.y -= 8; + StartSpriteAnim(gRegionMap->cursorSprite, 1); + } + else + { + gRegionMap->cursorSprite->oam.size = 1; + gRegionMap->cursorSprite->pos1.x = gRegionMap->cursorPosX * 8 + 4; + gRegionMap->cursorSprite->pos1.y = gRegionMap->cursorPosY * 8 + 4; + } + gRegionMap->cursorSprite->data1 = 2; + gRegionMap->cursorSprite->data2 = IndexOfSpritePaletteTag(paletteTag) * 16 + 0x0101; + gRegionMap->cursorSprite->data3 = 1; + } +} + +static void sub_80FBCA0(void) +{ + if (gRegionMap->cursorSprite != NULL) + { + DestroySprite(gRegionMap->cursorSprite); + FreeSpriteTilesByTag(gRegionMap->cursorTileTag); + FreeSpritePaletteByTag(gRegionMap->cursorPaletteTag); + } +} + +void unref_sub_80FBCD0(void) +{ + gRegionMap->cursorSprite->data3 = 1; +} + +void unref_sub_80FBCE0(void) +{ + gRegionMap->cursorSprite->data3 = 0; +} + +static const struct OamData sPlayerIconOamData = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 1, + .tileNum = 0, + .priority = 2, + .paletteNum = 0, + .affineParam = 0, +}; + +static const union AnimCmd sPlayerIconAnimSeq0[] = +{ + ANIMCMD_FRAME(0, 5), + ANIMCMD_END, +}; + +static const union AnimCmd *const sPlayerIconAnimTable[] = +{ + sPlayerIconAnimSeq0, +}; + +void CreateRegionMapPlayerIcon(u16 tileTag, u16 paletteTag) +{ + u8 spriteId; + struct SpriteSheet playerIconSpriteSheet = + { + .data = sRegionMapBrendanIcon_Image, + .size = 128, + .tag = tileTag, + }; + struct SpritePalette playerIconSpritePalette = + { + .data = sRegionMapBrendanIcon_Pal, + .tag = paletteTag, + }; + struct SpriteTemplate playerIconSpriteTemplate = + { + .tileTag = tileTag, + .paletteTag = paletteTag, + .oam = &sPlayerIconOamData, + .anims = sPlayerIconAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy, + }; + + if (gSaveBlock2.playerGender == FEMALE) + { + playerIconSpriteSheet.data = sRegionMapMayIcon_Image; + playerIconSpritePalette.data = sRegionMapMayIcon_Pal; + } + LoadSpriteSheet(&playerIconSpriteSheet); + LoadSpritePalette(&playerIconSpritePalette); + spriteId = CreateSprite(&playerIconSpriteTemplate, 0, 0, 1); + gRegionMap->playerIconSprite = &gSprites[spriteId]; + if (gRegionMap->zoomed == FALSE) + { + gRegionMap->playerIconSprite->pos1.x = gRegionMap->unk74 * 8 + 4; + gRegionMap->playerIconSprite->pos1.y = gRegionMap->unk76 * 8 + 4; + gRegionMap->playerIconSprite->callback = SpriteCB_PlayerIconZoomedOut; + } + else + { + gRegionMap->playerIconSprite->pos1.x = gRegionMap->unk74 * 16 - 48; + gRegionMap->playerIconSprite->pos1.y = gRegionMap->unk76 * 16 - 66; + gRegionMap->playerIconSprite->callback = SpriteCB_PlayerIconZoomedIn; + } +} + +static void sub_80FBDF8(void) +{ + if (gRegionMap->playerIconSprite != NULL) + { + gRegionMap->playerIconSprite->invisible = TRUE; + gRegionMap->playerIconSprite->callback = SpriteCallbackDummy; + } +} + +static void sub_80FBE24(void) +{ + if (gRegionMap->playerIconSprite != NULL) + { + if (gRegionMap->zoomed == TRUE) + { + gRegionMap->playerIconSprite->pos1.x = gRegionMap->unk74 * 16 - 48; + gRegionMap->playerIconSprite->pos1.y = gRegionMap->unk76 * 16 - 66; + gRegionMap->playerIconSprite->callback = SpriteCB_PlayerIconZoomedIn; + gRegionMap->playerIconSprite->invisible = FALSE; + } + else + { + gRegionMap->playerIconSprite->pos1.x = gRegionMap->unk74 * 8 + 4; + gRegionMap->playerIconSprite->pos1.y = gRegionMap->unk76 * 8 + 4; + gRegionMap->playerIconSprite->pos2.x = 0; + gRegionMap->playerIconSprite->pos2.y = 0; + gRegionMap->playerIconSprite->callback = SpriteCB_PlayerIconZoomedOut; + gRegionMap->playerIconSprite->invisible = FALSE; + } + } +} + +static void SpriteCB_PlayerIconZoomedIn(struct Sprite *sprite) +{ + sprite->pos2.x = -(gRegionMap->scrollX * 2); + sprite->pos2.y = -(gRegionMap->scrollY * 2); + sprite->data0 = sprite->pos1.y + sprite->pos2.y + sprite->centerToCornerVecY; + sprite->data1 = sprite->pos1.x + sprite->pos2.x + sprite->centerToCornerVecX; + + // Determine if sprite is on screen + if (sprite->data0 < -8 || sprite->data0 > 0xA8 || sprite->data1 < -8 || sprite->data1 > 0xF8) + sprite->data2 = FALSE; + else + sprite->data2 = TRUE; + + if (sprite->data2 == TRUE) + UpdateIconBlink(sprite); + else + sprite->invisible = TRUE; +} + +static void SpriteCB_PlayerIconZoomedOut(struct Sprite *sprite) +{ + UpdateIconBlink(sprite); +} + +static void UpdateIconBlink(struct Sprite *sprite) +{ + if (gRegionMap->blinkPlayerIcon) + { + // Toggle visibility every 16 frames + sprite->data7++; + if (sprite->data7 > 16) + { + sprite->data7 = 0; + sprite->invisible = !sprite->invisible; + } + } + else + { + sprite->invisible = FALSE; + } +} + +void sub_80FBF94(void) +{ + if (gRegionMap->playerIsInCave) + gRegionMap->blinkPlayerIcon = TRUE; +} + +const u8 *GetMapSectionName(u8 *dest, u16 mapSecId, u16 length) +{ + if (mapSecId == MAPSEC_SECRET_BASE) + return GetSecretBaseMapName(dest); + if (mapSecId < MAPSEC_NONE) + return StringCopy(dest, gRegionMapLocations[mapSecId].regionMapSectionId); + if (length == 0) + length = 18; + return StringFill(dest, CHAR_SPACE, length); +} + +const u8 *CopyMapName(u8 *dest, u16 mapSecId) +{ + switch (mapSecId) + { + case MAPSEC_UNK_0x57: + return StringCopy(dest, gOtherText_Ferry); + case MAPSEC_SECRET_BASE: + return StringCopy(dest, gOtherText_SecretBase); + default: + return GetMapSectionName(dest, mapSecId, 0); + } +} + +const u8 *CopyLocationName(u8 *dest, u16 mapSecId) +{ + if (mapSecId == MAPSEC_EVIL_TEAM_HIDEOUT) + return StringCopy(dest, gOtherText_Hideout); + else + return CopyMapName(dest, mapSecId); +} + +static void GetRegionMapLocationPosition(u16 mapSecId, u16 *x, u16 *y, u16 *width, u16 *height) +{ + *x = gRegionMapLocations[mapSecId].x; + *y = gRegionMapLocations[mapSecId].y; + *width = gRegionMapLocations[mapSecId].width; + *height = gRegionMapLocations[mapSecId].height; +} + +struct UnknownStruct3 +{ + void (*unk0)(void); + u16 unk4; + u16 unk6; + struct RegionMap regionMap; +}; + +extern u8 ewram[]; +#define ewram0 (*(struct UnknownStruct3 *)(ewram + 0)) +#define ewram888 (ewram + 0x888) +#define ewramA6E (ewram[0xA6E]) +#define ewramBlankMapName (ewram + 0xA48) + +static const u16 sFlyRegionMapFrame_Pal[] = INCBIN_U16("graphics/pokenav/map_frame.gbapal"); +static const u8 sFlyRegionMapFrame_ImageLZ[] = INCBIN_U8("graphics/pokenav/map_frame.4bpp.lz"); +static const u8 sFlyRegionMapFrame_TilemapLZ[] = INCBIN_U8("graphics/pokenav/map_frame.bin.lz"); +static const u16 sFlyTargetIcons_Pal[] = INCBIN_U16("graphics/pokenav/fly_target_icons.gbapal"); +static const u8 sFlyTargetIcons_ImageLZ[] = INCBIN_U8("graphics/pokenav/fly_target_icons.4bpp.lz"); + +static const u8 sUnknown_083E7920[][3] = +{ + {0, 9, 1}, + {0, 10, 14}, + {0, 11, 15}, + {0, 12, 16}, + {0, 13, 17}, + {0, 14, 18}, + {0, 15, 19}, + {0, 0, 3}, + {0, 1, 4}, + {0, 2, 5}, + {0, 3, 6}, + {0, 4, 7}, + {0, 5, 8}, + {0, 6, 9}, + {0, 7, 10}, + {0, 8, 11}, + {0, 16, 0}, + {0, 17, 0}, + {0, 18, 0}, + {0, 19, 0}, + {0, 20, 0}, + {0, 21, 0}, + {0, 22, 0}, + {0, 23, 0}, + {0, 24, 0}, + {0, 25, 0}, + {0, 26, 0}, + {0, 27, 0}, + {0, 28, 0}, + {0, 29, 0}, + {0, 30, 0}, + {0, 31, 0}, + {0, 32, 0}, + {0, 33, 0}, + {0, 34, 0}, + {0, 35, 0}, + {0, 36, 0}, + {0, 37, 0}, + {0, 38, 0}, + {0, 39, 0}, + {0, 40, 0}, + {0, 41, 0}, + {0, 42, 0}, + {0, 43, 0}, + {0, 44, 0}, + {0, 45, 0}, + {0, 46, 0}, + {0, 47, 0}, + {0, 48, 0}, + {0, 49, 0}, +}; + +struct UnknownStruct4 +{ + const u8 *const *unk0; + u16 mapSecId; + u16 flag; +}; + +static const u8 *const sEverGrandeCityAreaNames[] = {OtherText_PokeLeague, OtherText_PokeCenter}; + +static const struct UnknownStruct4 sUnknown_083E79C0[1] = +{ + {sEverGrandeCityAreaNames, MAPSEC_EVER_GRANDE_CITY, SYS_POKEMON_LEAGUE_FLY}, +}; + +// XXX: what is this? +static u8 *const ewram_ = ewram; + +static const struct SpritePalette sFlyTargetIconSpritePalette = {sFlyTargetIcons_Pal, 2}; + +// Fly targets that are not cities or towns +static const u16 sSpecialFlyAreas[][2] = +{ + // flag, mapSecId + {0x848, MAPSEC_BATTLE_TOWER}, + {0xFFFF, MAPSEC_NONE}, +}; + +static const struct OamData sFlyTargetOamData = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 0, + .tileNum = 0, + .priority = 2, + .paletteNum = 0, + .affineParam = 0, +}; + +static const union AnimCmd sFlyTargetAnimSeq0[] = +{ + ANIMCMD_FRAME(0, 5), + ANIMCMD_END, +}; + +static const union AnimCmd sFlyTargetAnimSeq1[] = +{ + ANIMCMD_FRAME(1, 5), + ANIMCMD_END, +}; + +static const union AnimCmd sFlyTargetAnimSeq2[] = +{ + ANIMCMD_FRAME(3, 5), + ANIMCMD_END, +}; + +static const union AnimCmd sFlyTargetAnimSeq3[] = +{ + ANIMCMD_FRAME(5, 5), + ANIMCMD_END, +}; + +static const union AnimCmd sFlyTargetAnimSeq4[] = +{ + ANIMCMD_FRAME(6, 5), + ANIMCMD_END, +}; + +static const union AnimCmd sFlyTargetAnimSeq5[] = +{ + ANIMCMD_FRAME(8, 5), + ANIMCMD_END, +}; + +static const union AnimCmd sFlyTargetAnimSeq6[] = +{ + ANIMCMD_FRAME(10, 5), + ANIMCMD_END, +}; + +static const union AnimCmd *const sFlyTargetAnimTable[] = +{ + sFlyTargetAnimSeq0, + sFlyTargetAnimSeq1, + sFlyTargetAnimSeq2, + sFlyTargetAnimSeq3, + sFlyTargetAnimSeq4, + sFlyTargetAnimSeq5, + sFlyTargetAnimSeq6, +}; + +static const struct SpriteTemplate gFlyTargetSpriteTemplate = +{ + .tileTag = 2, + .paletteTag = 2, + .oam = &sFlyTargetOamData, + .anims = sFlyTargetAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy, +}; + +void CB2_InitFlyRegionMap(void) +{ + switch (gMain.state) + { + case 0: + SetVBlankCallback(NULL); + REG_DISPCNT = 0; + REG_BG0HOFS = 0; + REG_BG0VOFS = 0; + REG_BG1HOFS = 0; + REG_BG1VOFS = 0; + REG_BG2VOFS = 0; + REG_BG2HOFS = 0; + REG_BG3HOFS = 0; + REG_BG3VOFS = 0; + ResetPaletteFade(); + ResetSpriteData(); + FreeSpriteTileRanges(); + FreeAllSpritePalettes(); + break; + case 1: + SetUpWindowConfig(&gWindowConfig_81E7224); + break; + case 2: + InitMenuWindow(&gWindowConfig_81E7224); + MenuZeroFillScreen(); + break; + case 3: + InitRegionMap(&ewram0.regionMap, 0); + CreateRegionMapCursor(0, 0); + CreateRegionMapPlayerIcon(1, 1); + ewram0.unk6 = ewram0.regionMap.mapSecId; + StringFill(ewramBlankMapName, CHAR_SPACE, 12); + PrintFlyTargetName(); + break; + case 4: + LZ77UnCompVram(sFlyRegionMapFrame_ImageLZ, (void *)(VRAM + 0xC000)); + break; + case 5: + LZ77UnCompVram(sFlyRegionMapFrame_TilemapLZ, (void *)(VRAM + 0xF000)); + break; + case 6: + LoadPalette(sFlyRegionMapFrame_Pal, 16, 32); + MenuPrint_PixelCoords(gOtherText_FlyToWhere, 1, 0x90, 1); + break; + case 7: + CreateFlyTargetGraphics(); + break; + case 8: + BlendPalettes(0xFFFFFFFF, 16, 0); + SetVBlankCallback(VBlankCB_FlyRegionMap); + break; + case 9: + REG_BLDCNT = 0; + REG_BG1CNT = 0x1E0D; + REG_DISPCNT = 0x1741; + sub_80FC244(sub_80FC5B4); + SetMainCallback2(CB2_FlyRegionMap); + break; + default: + return; + } + gMain.state++; +} + +static void VBlankCB_FlyRegionMap(void) +{ + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); +} + +static void CB2_FlyRegionMap(void) +{ + ewram0.unk0(); + AnimateSprites(); + BuildOamBuffer(); +} + +static void sub_80FC244(void (*func)(void)) +{ + ewram0.unk0 = func; + ewram0.unk4 = 0; +} + +static void PrintFlyTargetName(void) +{ + if (ewram0.regionMap.unk16 == 2 || ewram0.regionMap.unk16 == 4) + { + u16 i = 0; + int zero; + + for (i = 0; i < ARRAY_COUNT(sUnknown_083E79C0); i++) + { + const struct UnknownStruct4 *r4 = &sUnknown_083E79C0[i]; + + if (ewram0.regionMap.mapSecId == r4->mapSecId) + { + if (FlagGet(r4->flag)) + { + MenuDrawTextWindow(16, 14, 29, 19); + MenuPrint(ewram0.regionMap.mapSecName, 17, 15); + MenuPrint_RightAligned(r4->unk0[ewram0.regionMap.everGrandeCityArea], 29, 17); + return; + } + break; + } + } + // This check is always true, but somehow the compiler still performed it. + asm("mov %0, #0\n":"=r"(zero)); // zero = 0 + if (zero == 0) + { + MenuDrawTextWindow(16, 16, 29, 19); + MenuPrint(ewram0.regionMap.mapSecName, 17, 17); + MenuZeroFillWindowRect(16, 14, 29, 15); + } + } + else + { + MenuDrawTextWindow(16, 16, 29, 19); + MenuPrint(ewramBlankMapName, 17, 17); + MenuZeroFillWindowRect(16, 14, 29, 15); + } +} + +static void CreateFlyTargetGraphics(void) +{ + struct SpriteSheet spriteSheet; + + LZ77UnCompWram(sFlyTargetIcons_ImageLZ, ewram888); + spriteSheet.data = ewram888; + spriteSheet.size = 0x1C0; + spriteSheet.tag = 2; + LoadSpriteSheet(&spriteSheet); + LoadSpritePalette(&sFlyTargetIconSpritePalette); + CreateCityTownFlyTargetIcons(); + CreateSpecialAreaFlyTargetIcons(); +} + +// Draws a light overlay on cities and towns that the player can fly to +static void CreateCityTownFlyTargetIcons(void) +{ + u16 canFlyFlag = 0x80F; + u16 i; + + for (i = 0; i < 16; i++) + { + u16 x; + u16 y; + u16 width; + u16 height; + u16 r7; + u8 spriteId; + + GetRegionMapLocationPosition(i, &x, &y, &width, &height); + x = (x + 1) * 8 + 4; + y = (y + 2) * 8 + 4; + if (width == 2) + r7 = 1; + else if (height == 2) + r7 = 2; + else + r7 = 0; + spriteId = CreateSprite(&gFlyTargetSpriteTemplate, x, y, 10); + if (spriteId != 64) + { + gSprites[spriteId].oam.shape = r7; + if (FlagGet(canFlyFlag)) + gSprites[spriteId].callback = SpriteCB_FlyTargetIcons; + else + r7 += 3; + StartSpriteAnim(&gSprites[spriteId], r7); + gSprites[spriteId].data0 = i; + } + canFlyFlag++; + } +} + +// Draws a red box on other fly targets +// The Battle Tower is the only one of these +static void CreateSpecialAreaFlyTargetIcons(void) +{ + u16 i; + + for (i = 0; sSpecialFlyAreas[i][1] != MAPSEC_NONE; i++) + { + u16 x; + u16 y; + u16 width; + u16 height; + + if (FlagGet(sSpecialFlyAreas[i][0])) + { + u16 mapSecId = sSpecialFlyAreas[i][1]; + u8 spriteId; + + GetRegionMapLocationPosition(mapSecId, &x, &y, &width, &height); + x = (x + 1) * 8; + y = (y + 2) * 8; + spriteId = CreateSprite(&gFlyTargetSpriteTemplate, x, y, 10); + if (spriteId != 64) + { + gSprites[spriteId].oam.size = 1; + gSprites[spriteId].callback = SpriteCB_FlyTargetIcons; + StartSpriteAnim(&gSprites[spriteId], 6); + gSprites[spriteId].data0 = mapSecId; + } + } + } +} + +static void SpriteCB_FlyTargetIcons(struct Sprite *sprite) +{ + // Blink if our mapSecId is the one selected on the map + if (ewram0.regionMap.mapSecId == sprite->data0) + { + // Toggle visibility every 16 frames + sprite->data1++; + if (sprite->data1 > 16) + { + sprite->data1 = 0; + sprite->invisible = !sprite->invisible; + } + } + else + { + sprite->data1 = 16; + sprite->invisible = FALSE; + } +} + +static void sub_80FC5B4(void) +{ + switch (ewram0.unk4) + { + case 0: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0); + ewram0.unk4++; + break; + case 1: + if (UpdatePaletteFade() != 0) + break; + sub_80FC244(sub_80FC600); + break; + } +} + +static void sub_80FC600(void) +{ + if (ewram0.unk4 == 0) + { + switch (sub_80FAB60()) + { + case INPUT_EVENT_NONE: + case INPUT_EVENT_DPAD: + case INPUT_EVENT_2: + break; + case INPUT_EVENT_3: + PrintFlyTargetName(); + break; + case INPUT_EVENT_A_BUTTON: + if (ewram0.regionMap.unk16 == 2 || ewram0.regionMap.unk16 == 4) + { + m4aSongNumStart(SE_SELECT); + ewramA6E = 1; + sub_80FC244(sub_80FC69C); + } + break; + case INPUT_EVENT_B_BUTTON: + m4aSongNumStart(SE_SELECT); + ewramA6E = 0; + sub_80FC244(sub_80FC69C); + break; + } + } +} + +static void sub_80FC69C(void) +{ + switch (ewram0.unk4) + { + case 0: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); + ewram0.unk4++; + break; + case 1: + if (UpdatePaletteFade() != 0) + break; + FreeRegionMapIconResources(); + if (ewramA6E != 0) + { + switch (ewram0.regionMap.mapSecId) + { + case MAPSEC_SOUTHERN_ISLAND: + sub_8053538(22); + break; + case MAPSEC_BATTLE_TOWER: + sub_8053538(21); + break; + case MAPSEC_LITTLEROOT_TOWN: + sub_8053538((gSaveBlock2.playerGender == MALE) ? 12 : 13); + break; + case MAPSEC_EVER_GRANDE_CITY: + sub_8053538((FlagGet(0x854) && ewram0.regionMap.everGrandeCityArea == 0) ? 20 : 11); + break; + default: + if (sUnknown_083E7920[ewram0.regionMap.mapSecId][2] != 0) + sub_8053538(sUnknown_083E7920[ewram0.regionMap.mapSecId][2]); + else + warp1_set_2(sUnknown_083E7920[ewram0.regionMap.mapSecId][0], sUnknown_083E7920[ewram0.regionMap.mapSecId][1], -1); + break; + } + sub_80865BC(); + } + else + { + SetMainCallback2(sub_808AD58); + } + break; + } +} diff --git a/src/roamer.c b/src/field/roamer.c similarity index 100% rename from src/roamer.c rename to src/field/roamer.c diff --git a/src/rotating_gate.c b/src/field/rotating_gate.c similarity index 62% rename from src/rotating_gate.c rename to src/field/rotating_gate.c index d12a21240..e8ab7e1bf 100644 --- a/src/rotating_gate.c +++ b/src/field/rotating_gate.c @@ -12,11 +12,11 @@ #define ROTATING_GATE_PUZZLE_MAX 14 #define GATE_ARM_MAX_LENGTH 2 -#define GATE_ROTATION(rotationDirection, arm, longArm) \ +#define GATE_ROT(rotationDirection, arm, longArm) \ ((rotationDirection & 15) << 4) | ((arm & 7) << 1) | (longArm & 1) -#define GATE_ROTATION_CLOCKWISE(arm, longArm) GATE_ROTATION(ROTATE_CLOCKWISE, arm, longArm) -#define GATE_ROTATION_ANTICLOCKWISE(arm, longArm) GATE_ROTATION(ROTATE_ANTICLOCKWISE, arm, longArm) -#define GATE_ROTATION_NONE 255 +#define GATE_ROT_CW(arm, longArm) GATE_ROT(ROTATE_CLOCKWISE, arm, longArm) +#define GATE_ROT_ACW(arm, longArm) GATE_ROT(ROTATE_ANTICLOCKWISE, arm, longArm) +#define GATE_ROT_NONE 255 static void SpriteCallback_RotatingGate(struct Sprite *sprite); static u8 RotatingGate_CreateGate(u8 gateId, s16 deltaX, s16 deltaY); @@ -181,7 +181,8 @@ enum struct RotatingGatePuzzle { - struct Coords16 pos; + s16 x; + s16 y; u8 shape; u8 orientation; }; @@ -193,32 +194,34 @@ struct Coords8 }; // Fortree -static const struct RotatingGatePuzzle sRotatingGate_FortreePuzzleConfig[] = { - { { 12, 5 }, GATE_SHAPE_L4, GATE_ORIENTATION_0 }, - { { 14, 7 }, GATE_SHAPE_L4, GATE_ORIENTATION_270 }, - { { 16, 4 }, GATE_SHAPE_T2, GATE_ORIENTATION_90 }, - { { 15, 14 }, GATE_SHAPE_L2, GATE_ORIENTATION_0 }, - { { 18, 13 }, GATE_SHAPE_T1, GATE_ORIENTATION_180 }, - { { 8, 20 }, GATE_SHAPE_T1, GATE_ORIENTATION_180 }, - { { 16, 20 }, GATE_SHAPE_T4, GATE_ORIENTATION_90 }, +static const struct RotatingGatePuzzle sRotatingGate_FortreePuzzleConfig[] = +{ + {12, 5, GATE_SHAPE_L4, GATE_ORIENTATION_0}, + {14, 7, GATE_SHAPE_L4, GATE_ORIENTATION_270}, + {16, 4, GATE_SHAPE_T2, GATE_ORIENTATION_90}, + {15, 14, GATE_SHAPE_L2, GATE_ORIENTATION_0}, + {18, 13, GATE_SHAPE_T1, GATE_ORIENTATION_180}, + { 8, 20, GATE_SHAPE_T1, GATE_ORIENTATION_180}, + {16, 20, GATE_SHAPE_T4, GATE_ORIENTATION_90}, }; // Trickhouse -static const struct RotatingGatePuzzle sRotatingGate_TrickHousePuzzleConfig[] = { - { { 13, 3 }, GATE_SHAPE_T1, GATE_ORIENTATION_270 }, - { { 12, 6 }, GATE_SHAPE_T1, GATE_ORIENTATION_180 }, - { { 3, 6 }, GATE_SHAPE_T1, GATE_ORIENTATION_180 }, - { { 3, 9 }, GATE_SHAPE_T2, GATE_ORIENTATION_270 }, - { { 8, 8 }, GATE_SHAPE_L1, GATE_ORIENTATION_90 }, - { { 2, 12 }, GATE_SHAPE_T3, GATE_ORIENTATION_180 }, - { { 9, 13 }, GATE_SHAPE_L2, GATE_ORIENTATION_0 }, - { { 3, 14 }, GATE_SHAPE_L3, GATE_ORIENTATION_90 }, - { { 9, 15 }, GATE_SHAPE_L4, GATE_ORIENTATION_180 }, - { { 3, 18 }, GATE_SHAPE_T2, GATE_ORIENTATION_180 }, - { { 2, 19 }, GATE_SHAPE_T1, GATE_ORIENTATION_0 }, - { { 5, 21 }, GATE_SHAPE_L1, GATE_ORIENTATION_0 }, - { { 9, 19 }, GATE_SHAPE_L4, GATE_ORIENTATION_270 }, - { { 12, 20 }, GATE_SHAPE_T1, GATE_ORIENTATION_90 }, +static const struct RotatingGatePuzzle sRotatingGate_TrickHousePuzzleConfig[] = +{ + {13, 3, GATE_SHAPE_T1, GATE_ORIENTATION_270}, + {12, 6, GATE_SHAPE_T1, GATE_ORIENTATION_180}, + { 3, 6, GATE_SHAPE_T1, GATE_ORIENTATION_180}, + { 3, 9, GATE_SHAPE_T2, GATE_ORIENTATION_270}, + { 8, 8, GATE_SHAPE_L1, GATE_ORIENTATION_90}, + { 2, 12, GATE_SHAPE_T3, GATE_ORIENTATION_180}, + { 9, 13, GATE_SHAPE_L2, GATE_ORIENTATION_0}, + { 3, 14, GATE_SHAPE_L3, GATE_ORIENTATION_90}, + { 9, 15, GATE_SHAPE_L4, GATE_ORIENTATION_180}, + { 3, 18, GATE_SHAPE_T2, GATE_ORIENTATION_180}, + { 2, 19, GATE_SHAPE_T1, GATE_ORIENTATION_0}, + { 5, 21, GATE_SHAPE_L1, GATE_ORIENTATION_0}, + { 9, 19, GATE_SHAPE_L4, GATE_ORIENTATION_270}, + {12, 20, GATE_SHAPE_T1, GATE_ORIENTATION_90}, }; static const u8 sRotatingGateTiles_1[] = INCBIN_U8("graphics/rotating_gates/1.4bpp"); @@ -230,7 +233,8 @@ static const u8 sRotatingGateTiles_7[] = INCBIN_U8("graphics/rotating_gates/7.4b static const u8 sRotatingGateTiles_0[] = INCBIN_U8("graphics/rotating_gates/0.4bpp"); static const u8 sRotatingGateTiles_4[] = INCBIN_U8("graphics/rotating_gates/4.4bpp"); -static const struct OamData sOamData_RotatingGateLarge = { +static const struct OamData sOamData_RotatingGateLarge = +{ .y = 0, .affineMode = ST_OAM_AFFINE_NORMAL, .objMode = 0, @@ -246,7 +250,8 @@ static const struct OamData sOamData_RotatingGateLarge = { .affineParam = 0, }; -static const struct OamData sOamData_RotatingGateRegular = { +static const struct OamData sOamData_RotatingGateRegular = +{ .y = 0, .affineMode = ST_OAM_AFFINE_NORMAL, .objMode = 0, @@ -262,145 +267,178 @@ static const struct OamData sOamData_RotatingGateRegular = { .affineParam = 0, }; -static const struct SpriteSheet sRotatingGatesGraphicsTable[] = { - { sRotatingGateTiles_0, 0x200, ROTATING_GATE_TILE_TAG + GATE_SHAPE_L1 }, - { sRotatingGateTiles_1, 0x800, ROTATING_GATE_TILE_TAG + GATE_SHAPE_L2 }, - { sRotatingGateTiles_2, 0x800, ROTATING_GATE_TILE_TAG + GATE_SHAPE_L3 }, - { sRotatingGateTiles_3, 0x800, ROTATING_GATE_TILE_TAG + GATE_SHAPE_L4 }, - { sRotatingGateTiles_4, 0x200, ROTATING_GATE_TILE_TAG + GATE_SHAPE_T1 }, - { sRotatingGateTiles_5, 0x800, ROTATING_GATE_TILE_TAG + GATE_SHAPE_T2 }, - { sRotatingGateTiles_6, 0x800, ROTATING_GATE_TILE_TAG + GATE_SHAPE_T3 }, - { sRotatingGateTiles_7, 0x800, ROTATING_GATE_TILE_TAG + GATE_SHAPE_T4 }, - { NULL }, +static const struct SpriteSheet sRotatingGatesGraphicsTable[] = +{ + {sRotatingGateTiles_0, 0x200, ROTATING_GATE_TILE_TAG + GATE_SHAPE_L1}, + {sRotatingGateTiles_1, 0x800, ROTATING_GATE_TILE_TAG + GATE_SHAPE_L2}, + {sRotatingGateTiles_2, 0x800, ROTATING_GATE_TILE_TAG + GATE_SHAPE_L3}, + {sRotatingGateTiles_3, 0x800, ROTATING_GATE_TILE_TAG + GATE_SHAPE_L4}, + {sRotatingGateTiles_4, 0x200, ROTATING_GATE_TILE_TAG + GATE_SHAPE_T1}, + {sRotatingGateTiles_5, 0x800, ROTATING_GATE_TILE_TAG + GATE_SHAPE_T2}, + {sRotatingGateTiles_6, 0x800, ROTATING_GATE_TILE_TAG + GATE_SHAPE_T3}, + {sRotatingGateTiles_7, 0x800, ROTATING_GATE_TILE_TAG + GATE_SHAPE_T4}, + {NULL}, }; -static const union AnimCmd sSpriteAnim_RotatingGateLarge[] = { +static const union AnimCmd sSpriteAnim_RotatingGateLarge[] = +{ + ANIMCMD_FRAME(0, 0), + ANIMCMD_END, +}; + +static const union AnimCmd sSpriteAnim_RotatingGateRegular[] = +{ ANIMCMD_FRAME(0, 0), ANIMCMD_END, }; -static const union AnimCmd sSpriteAnim_RotatingGateRegular[] = { - ANIMCMD_FRAME(0, 0), ANIMCMD_END, -}; - -static const union AnimCmd *const sSpriteAnimTable_RotatingGateLarge[] = { +static const union AnimCmd *const sSpriteAnimTable_RotatingGateLarge[] = +{ sSpriteAnim_RotatingGateLarge, }; -static const union AnimCmd *const sSpriteAnimTable_RotatingGateRegular[] = { +static const union AnimCmd *const sSpriteAnimTable_RotatingGateRegular[] = +{ sSpriteAnim_RotatingGateRegular, }; -static const union AffineAnimCmd sSpriteAffineAnim_Rotated0[] = { - AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0), AFFINEANIMCMD_JUMP(0), +static const union AffineAnimCmd sSpriteAffineAnim_Rotated0[] = +{ + AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0), + AFFINEANIMCMD_JUMP(0), }; -static const union AffineAnimCmd sSpriteAffineAnim_Rotated90[] = { - AFFINEANIMCMD_FRAME(0x100, 0x100, -64, 0), AFFINEANIMCMD_JUMP(0), +static const union AffineAnimCmd sSpriteAffineAnim_Rotated90[] = +{ + AFFINEANIMCMD_FRAME(0x100, 0x100, -64, 0), + AFFINEANIMCMD_JUMP(0), }; -static const union AffineAnimCmd sSpriteAffineAnim_Rotated180[] = { - AFFINEANIMCMD_FRAME(0x100, 0x100, -128, 0), AFFINEANIMCMD_JUMP(0), +static const union AffineAnimCmd sSpriteAffineAnim_Rotated180[] = +{ + AFFINEANIMCMD_FRAME(0x100, 0x100, -128, 0), + AFFINEANIMCMD_JUMP(0), }; -static const union AffineAnimCmd sSpriteAffineAnim_Rotated270[] = { - AFFINEANIMCMD_FRAME(0x100, 0x100, 64, 0), AFFINEANIMCMD_JUMP(0), +static const union AffineAnimCmd sSpriteAffineAnim_Rotated270[] = +{ + AFFINEANIMCMD_FRAME(0x100, 0x100, 64, 0), + AFFINEANIMCMD_JUMP(0), }; -static const union AffineAnimCmd sSpriteAffineAnim_RotatingClockwise0to90[] = { +static const union AffineAnimCmd sSpriteAffineAnim_RotatingClockwise0to90[] = +{ AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0), AFFINEANIMCMD_FRAME(0x0, 0x0, -4, 16), AFFINEANIMCMD_END, }; -static const union AffineAnimCmd sSpriteAffineAnim_RotatingClockwise90to180[] = { +static const union AffineAnimCmd sSpriteAffineAnim_RotatingClockwise90to180[] = +{ AFFINEANIMCMD_FRAME(0x100, 0x100, -64, 0), AFFINEANIMCMD_FRAME(0x0, 0x0, -4, 16), AFFINEANIMCMD_END, }; -static const union AffineAnimCmd sSpriteAffineAnim_RotatingClockwise180to270[] = { +static const union AffineAnimCmd sSpriteAffineAnim_RotatingClockwise180to270[] = +{ AFFINEANIMCMD_FRAME(0x100, 0x100, -128, 0), AFFINEANIMCMD_FRAME(0x0, 0x0, -4, 16), AFFINEANIMCMD_END, }; -static const union AffineAnimCmd sSpriteAffineAnim_RotatingClockwise270to360[] = { +static const union AffineAnimCmd sSpriteAffineAnim_RotatingClockwise270to360[] = +{ AFFINEANIMCMD_FRAME(0x100, 0x100, 64, 0), AFFINEANIMCMD_FRAME(0x0, 0x0, -4, 16), AFFINEANIMCMD_END, }; -static const union AffineAnimCmd sSpriteAffineAnim_RotatingAnticlockwise360to270[] = { +static const union AffineAnimCmd sSpriteAffineAnim_RotatingAnticlockwise360to270[] = +{ AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0), AFFINEANIMCMD_FRAME(0x0, 0x0, 4, 16), AFFINEANIMCMD_END, }; -static const union AffineAnimCmd sSpriteAffineAnim_RotatingAnticlockwise270to180[] = { +static const union AffineAnimCmd sSpriteAffineAnim_RotatingAnticlockwise270to180[] = +{ AFFINEANIMCMD_FRAME(0x100, 0x100, 64, 0), AFFINEANIMCMD_FRAME(0x0, 0x0, 4, 16), AFFINEANIMCMD_END, }; -static const union AffineAnimCmd sSpriteAffineAnim_RotatingAnticlockwise180to90[] = { +static const union AffineAnimCmd sSpriteAffineAnim_RotatingAnticlockwise180to90[] = +{ AFFINEANIMCMD_FRAME(0x100, 0x100, -128, 0), AFFINEANIMCMD_FRAME(0x0, 0x0, 4, 16), AFFINEANIMCMD_END, }; -static const union AffineAnimCmd sSpriteAffineAnim_RotatingAnticlockwise90to0[] = { +static const union AffineAnimCmd sSpriteAffineAnim_RotatingAnticlockwise90to0[] = +{ AFFINEANIMCMD_FRAME(0x100, 0x100, -64, 0), AFFINEANIMCMD_FRAME(0x0, 0x0, 4, 16), AFFINEANIMCMD_END, }; -static const union AffineAnimCmd sSpriteAffineAnim_RotatingClockwise0to90Faster[] = { +static const union AffineAnimCmd sSpriteAffineAnim_RotatingClockwise0to90Faster[] = +{ AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0), AFFINEANIMCMD_FRAME(0x0, 0x0, -8, 8), AFFINEANIMCMD_END, }; -static const union AffineAnimCmd sSpriteAffineAnim_RotatingClockwise90to180Faster[] = { +static const union AffineAnimCmd sSpriteAffineAnim_RotatingClockwise90to180Faster[] = +{ AFFINEANIMCMD_FRAME(0x100, 0x100, -64, 0), AFFINEANIMCMD_FRAME(0x0, 0x0, -8, 8), AFFINEANIMCMD_END, }; -static const union AffineAnimCmd sSpriteAffineAnim_RotatingClockwise180to270Faster[] = { +static const union AffineAnimCmd sSpriteAffineAnim_RotatingClockwise180to270Faster[] = +{ AFFINEANIMCMD_FRAME(0x100, 0x100, -128, 0), AFFINEANIMCMD_FRAME(0x0, 0x0, -8, 8), AFFINEANIMCMD_END, }; -static const union AffineAnimCmd sSpriteAffineAnim_RotatingClockwise270to360Faster[] = { +static const union AffineAnimCmd sSpriteAffineAnim_RotatingClockwise270to360Faster[] = +{ AFFINEANIMCMD_FRAME(0x100, 0x100, 64, 0), AFFINEANIMCMD_FRAME(0x0, 0x0, -8, 8), AFFINEANIMCMD_END, }; -static const union AffineAnimCmd sSpriteAffineAnim_RotatingAnticlockwise360to270Faster[] = { - AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0), AFFINEANIMCMD_FRAME(0x0, 0x0, 8, 8), AFFINEANIMCMD_END, +static const union AffineAnimCmd sSpriteAffineAnim_RotatingAnticlockwise360to270Faster[] = +{ + AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0), + AFFINEANIMCMD_FRAME(0x0, 0x0, 8, 8), + AFFINEANIMCMD_END, }; -static const union AffineAnimCmd sSpriteAffineAnim_RotatingAnticlockwise270to180Faster[] = { +static const union AffineAnimCmd sSpriteAffineAnim_RotatingAnticlockwise270to180Faster[] = +{ AFFINEANIMCMD_FRAME(0x100, 0x100, 64, 0), AFFINEANIMCMD_FRAME(0x0, 0x0, 8, 8), AFFINEANIMCMD_END, }; -static const union AffineAnimCmd sSpriteAffineAnim_RotatingAnticlockwise180to90Faster[] = { +static const union AffineAnimCmd sSpriteAffineAnim_RotatingAnticlockwise180to90Faster[] = +{ AFFINEANIMCMD_FRAME(0x100, 0x100, -128, 0), AFFINEANIMCMD_FRAME(0x0, 0x0, 8, 8), AFFINEANIMCMD_END, }; -static const union AffineAnimCmd sSpriteAffineAnim_RotatingAnticlockwise90to0Faster[] = { +static const union AffineAnimCmd sSpriteAffineAnim_RotatingAnticlockwise90to0Faster[] = +{ AFFINEANIMCMD_FRAME(0x100, 0x100, -64, 0), AFFINEANIMCMD_FRAME(0x0, 0x0, 8, 8), AFFINEANIMCMD_END, }; -static const union AffineAnimCmd *const sSpriteAffineAnimTable_RotatingGate[] = { +static const union AffineAnimCmd *const sSpriteAffineAnimTable_RotatingGate[] = +{ sSpriteAffineAnim_Rotated0, sSpriteAffineAnim_Rotated90, sSpriteAffineAnim_Rotated180, @@ -423,7 +461,8 @@ static const union AffineAnimCmd *const sSpriteAffineAnimTable_RotatingGate[] = sSpriteAffineAnim_RotatingClockwise270to360Faster, }; -static const struct SpriteTemplate sSpriteTemplate_RotatingGateLarge = { +static const struct SpriteTemplate sSpriteTemplate_RotatingGateLarge = +{ .tileTag = ROTATING_GATE_TILE_TAG, .paletteTag = 0xFFFF, .oam = &sOamData_RotatingGateLarge, @@ -433,7 +472,8 @@ static const struct SpriteTemplate sSpriteTemplate_RotatingGateLarge = { .callback = SpriteCallback_RotatingGate, }; -static const struct SpriteTemplate sSpriteTemplate_RotatingGateRegular = { +static const struct SpriteTemplate sSpriteTemplate_RotatingGateRegular = +{ .tileTag = ROTATING_GATE_TILE_TAG, .paletteTag = 0xFFFF, .oam = &sOamData_RotatingGateRegular, @@ -449,62 +489,36 @@ static const struct SpriteTemplate sSpriteTemplate_RotatingGateRegular = { // given direction. This information is compared against the gate // "arm" layout to see if there is an arm at the position in order to // produce the final rotation. -static const u8 sRotatingGate_RotationInfoNorth[4][4] = { - { GATE_ROTATION_NONE, GATE_ROTATION_NONE, GATE_ROTATION_NONE, GATE_ROTATION_NONE }, - { GATE_ROTATION_CLOCKWISE(GATE_ARM_WEST, 1), - GATE_ROTATION_CLOCKWISE(GATE_ARM_WEST, 0), - GATE_ROTATION_ANTICLOCKWISE(GATE_ARM_EAST, 0), - GATE_ROTATION_ANTICLOCKWISE(GATE_ARM_EAST, 1) }, - { GATE_ROTATION_NONE, GATE_ROTATION_NONE, GATE_ROTATION_NONE, GATE_ROTATION_NONE }, - { GATE_ROTATION_NONE, GATE_ROTATION_NONE, GATE_ROTATION_NONE, GATE_ROTATION_NONE }, +static const u8 sRotatingGate_RotationInfoNorth[4 * 4] = +{ + GATE_ROT_NONE, GATE_ROT_NONE, GATE_ROT_NONE, GATE_ROT_NONE, + GATE_ROT_CW(GATE_ARM_WEST, 1), GATE_ROT_CW(GATE_ARM_WEST, 0), GATE_ROT_ACW(GATE_ARM_EAST, 0), GATE_ROT_ACW(GATE_ARM_EAST, 1), + GATE_ROT_NONE, GATE_ROT_NONE, GATE_ROT_NONE, GATE_ROT_NONE, + GATE_ROT_NONE, GATE_ROT_NONE, GATE_ROT_NONE, GATE_ROT_NONE, }; -static const u8 sRotatingGate_RotationInfoSouth[4][4] = { - { GATE_ROTATION_NONE, GATE_ROTATION_NONE, GATE_ROTATION_NONE, GATE_ROTATION_NONE }, - { GATE_ROTATION_NONE, GATE_ROTATION_NONE, GATE_ROTATION_NONE, GATE_ROTATION_NONE }, - { GATE_ROTATION_ANTICLOCKWISE(GATE_ARM_WEST, 1), - GATE_ROTATION_ANTICLOCKWISE(GATE_ARM_WEST, 0), - GATE_ROTATION_CLOCKWISE(GATE_ARM_EAST, 0), - GATE_ROTATION_CLOCKWISE(GATE_ARM_EAST, 1) }, - { GATE_ROTATION_NONE, GATE_ROTATION_NONE, GATE_ROTATION_NONE, GATE_ROTATION_NONE }, +static const u8 sRotatingGate_RotationInfoSouth[4 * 4] = +{ + GATE_ROT_NONE, GATE_ROT_NONE, GATE_ROT_NONE, GATE_ROT_NONE, + GATE_ROT_NONE, GATE_ROT_NONE, GATE_ROT_NONE, GATE_ROT_NONE, + GATE_ROT_ACW(GATE_ARM_WEST, 1), GATE_ROT_ACW(GATE_ARM_WEST, 0), GATE_ROT_CW(GATE_ARM_EAST, 0), GATE_ROT_CW(GATE_ARM_EAST, 1), + GATE_ROT_NONE, GATE_ROT_NONE, GATE_ROT_NONE, GATE_ROT_NONE, }; -static const u8 sRotatingGate_RotationInfoWest[4][4] = { - { GATE_ROTATION_NONE, - GATE_ROTATION_ANTICLOCKWISE(GATE_ARM_NORTH, 1), - GATE_ROTATION_NONE, - GATE_ROTATION_NONE }, - { GATE_ROTATION_NONE, - GATE_ROTATION_ANTICLOCKWISE(GATE_ARM_NORTH, 0), - GATE_ROTATION_NONE, - GATE_ROTATION_NONE }, - { GATE_ROTATION_NONE, - GATE_ROTATION_CLOCKWISE(GATE_ARM_SOUTH, 0), - GATE_ROTATION_NONE, - GATE_ROTATION_NONE }, - { GATE_ROTATION_NONE, - GATE_ROTATION_CLOCKWISE(GATE_ARM_SOUTH, 1), - GATE_ROTATION_NONE, - GATE_ROTATION_NONE }, +static const u8 sRotatingGate_RotationInfoWest[4 * 4] = +{ + GATE_ROT_NONE, GATE_ROT_ACW(GATE_ARM_NORTH, 1), GATE_ROT_NONE, GATE_ROT_NONE, + GATE_ROT_NONE, GATE_ROT_ACW(GATE_ARM_NORTH, 0), GATE_ROT_NONE, GATE_ROT_NONE, + GATE_ROT_NONE, GATE_ROT_CW(GATE_ARM_SOUTH, 0), GATE_ROT_NONE, GATE_ROT_NONE, + GATE_ROT_NONE, GATE_ROT_CW(GATE_ARM_SOUTH, 1), GATE_ROT_NONE, GATE_ROT_NONE, }; -static const u8 sRotatingGate_RotationInfoEast[4][4] = { - { GATE_ROTATION_NONE, - GATE_ROTATION_NONE, - GATE_ROTATION_CLOCKWISE(GATE_ARM_NORTH, 1), - GATE_ROTATION_NONE }, - { GATE_ROTATION_NONE, - GATE_ROTATION_NONE, - GATE_ROTATION_CLOCKWISE(GATE_ARM_NORTH, 0), - GATE_ROTATION_NONE }, - { GATE_ROTATION_NONE, - GATE_ROTATION_NONE, - GATE_ROTATION_ANTICLOCKWISE(GATE_ARM_SOUTH, 0), - GATE_ROTATION_NONE }, - { GATE_ROTATION_NONE, - GATE_ROTATION_NONE, - GATE_ROTATION_ANTICLOCKWISE(GATE_ARM_SOUTH, 1), - GATE_ROTATION_NONE }, +static const u8 sRotatingGate_RotationInfoEast[4 * 4] = +{ + GATE_ROT_NONE, GATE_ROT_NONE, GATE_ROT_CW(GATE_ARM_NORTH, 1), GATE_ROT_NONE, + GATE_ROT_NONE, GATE_ROT_NONE, GATE_ROT_CW(GATE_ARM_NORTH, 0), GATE_ROT_NONE, + GATE_ROT_NONE, GATE_ROT_NONE, GATE_ROT_ACW(GATE_ARM_SOUTH, 0), GATE_ROT_NONE, + GATE_ROT_NONE, GATE_ROT_NONE, GATE_ROT_ACW(GATE_ARM_SOUTH, 1), GATE_ROT_NONE, }; // These tables describe the relative coordinate positions the arms @@ -519,55 +533,92 @@ static const struct Coords8 sRotatingGate_ArmPositionsAntiClockwiseRotation[] = // Describes where the gates "arms" are in the order north, east, south, west. // These are adjusted using the current orientation to perform collision checking -static const u8 sRotatingGate_ArmLayout[][GATE_ARM_WEST + 1][GATE_ARM_MAX_LENGTH] = { +static const u8 sRotatingGate_ArmLayout[][4 * 2] = +{ // L-shape gates { - { 1, 0 }, { 1, 0 }, { 0, 0 }, { 0, 0 }, + 1, 0, + 1, 0, + 0, 0, + 0, 0, }, { - { 1, 1 }, { 1, 0 }, { 0, 0 }, { 0, 0 }, + 1, 1, + 1, 0, + 0, 0, + 0, 0, }, { - { 1, 0 }, { 1, 1 }, { 0, 0 }, { 0, 0 }, + 1, 0, + 1, 1, + 0, 0, + 0, 0, }, { - { 1, 1 }, { 1, 1 }, { 0, 0 }, { 0, 0 }, + 1, 1, + 1, 1, + 0, 0, + 0, 0, }, // T-shape gates { - { 1, 0 }, { 1, 0 }, { 1, 0 }, { 0, 0 }, + 1, 0, + 1, 0, + 1, 0, + 0, 0, }, { - { 1, 1 }, { 1, 0 }, { 1, 0 }, { 0, 0 }, + 1, 1, + 1, 0, + 1, 0, + 0, 0, }, { - { 1, 0 }, { 1, 1 }, { 1, 0 }, { 0, 0 }, + 1, 0, + 1, 1, + 1, 0, + 0, 0, }, { - { 1, 0 }, { 1, 0 }, { 1, 1 }, { 0, 0 }, + 1, 0, + 1, 0, + 1, 1, + 0, 0, }, // Unused T-shape gates // These have 2-3 long arms and cannot actually be used anywhere // since configuration for them is missing from the other tables. { - { 1, 1 }, { 1, 1 }, { 1, 0 }, { 0, 0 }, + 1, 1, + 1, 1, + 1, 0, + 0, 0, }, { - { 1, 1 }, { 1, 0 }, { 1, 1 }, { 0, 0 }, + 1, 1, + 1, 0, + 1, 1, + 0, 0, }, { - { 1, 0 }, { 1, 1 }, { 1, 1 }, { 0, 0 }, + 1, 0, + 1, 1, + 1, 1, + 0, 0, }, { - { 1, 1 }, { 1, 1 }, { 1, 1 }, { 0, 0 }, + 1, 1, + 1, 1, + 1, 1, + 0, 0, }, }; -extern u8 gRotatingGate_GateSpriteIds[ROTATING_GATE_PUZZLE_MAX]; -extern const struct RotatingGatePuzzle *gRotatingGate_PuzzleConfig; -extern u8 gRotatingGate_PuzzleCount; +static EWRAM_DATA u8 gRotatingGate_GateSpriteIds[ROTATING_GATE_PUZZLE_MAX] = {0}; +static EWRAM_DATA const struct RotatingGatePuzzle *gRotatingGate_PuzzleConfig = NULL; +static EWRAM_DATA u8 gRotatingGate_PuzzleCount = 0; static int GetCurrentMapRotatingGatePuzzleType(void) { @@ -675,8 +726,8 @@ static void RotatingGate_CreateGatesWithinViewport(s16 deltaX, s16 deltaY) for (i = 0; i < gRotatingGate_PuzzleCount; i++) { - x3 = gRotatingGate_PuzzleConfig[i].pos.x + 7; - y3 = gRotatingGate_PuzzleConfig[i].pos.y + 7; + x3 = gRotatingGate_PuzzleConfig[i].x + 7; + y3 = gRotatingGate_PuzzleConfig[i].y + 7; if (y <= y3 && y2 >= y3 && x <= x3 && x2 >= x3 && gRotatingGate_GateSpriteIds[i] == MAX_SPRITES) @@ -697,24 +748,18 @@ static u8 RotatingGate_CreateGate(u8 gateId, s16 deltaX, s16 deltaY) gate = &gRotatingGate_PuzzleConfig[gateId]; if (gate->shape == GATE_SHAPE_L1 || gate->shape == GATE_SHAPE_T1) - { template = sSpriteTemplate_RotatingGateRegular; - } else - { template = sSpriteTemplate_RotatingGateLarge; - } template.tileTag = gate->shape + ROTATING_GATE_TILE_TAG; spriteId = CreateSprite(&template, 0, 0, 0x94); if (spriteId == MAX_SPRITES) - { return MAX_SPRITES; - } - x = gate->pos.x + 7; - y = gate->pos.y + 7; + x = gate->x + 7; + y = gate->y + 7; sprite = &gSprites[spriteId]; sprite->data0 = gateId; @@ -769,7 +814,7 @@ static void RotatingGate_HideGatesOutsideViewport(struct Sprite *sprite) u16 y; s16 y2; - sprite->invisible = 0; + sprite->invisible = FALSE; x = sprite->pos1.x + sprite->pos2.x + sprite->centerToCornerVecX + gSpriteCoordOffsetX; y = sprite->pos1.y + sprite->pos2.y + sprite->centerToCornerVecY + gSpriteCoordOffsetY; @@ -778,12 +823,12 @@ static void RotatingGate_HideGatesOutsideViewport(struct Sprite *sprite) if ((s16)x > DISPLAY_WIDTH + 0x10 - 1 || x2 < -0x10) { - sprite->invisible = 1; + sprite->invisible = TRUE; } if ((s16)y > DISPLAY_HEIGHT + 0x10 - 1 || y2 < -0x10) { - sprite->invisible = 1; + sprite->invisible = TRUE; } } @@ -811,8 +856,8 @@ static void RotatingGate_DestroyGatesOutsideViewport(void) for (i = 0; i < gRotatingGate_PuzzleCount; i++) { - xGate = gRotatingGate_PuzzleConfig[i].pos.x + 7; - yGate = gRotatingGate_PuzzleConfig[i].pos.y + 7; + xGate = gRotatingGate_PuzzleConfig[i].x + 7; + yGate = gRotatingGate_PuzzleConfig[i].y + 7; if (gRotatingGate_GateSpriteIds[i] == MAX_SPRITES) continue; @@ -851,8 +896,8 @@ static int RotatingGate_CanRotate(u8 gateId, int rotationDirection) orientation = RotatingGate_GetGateOrientation(gateId); shape = gRotatingGate_PuzzleConfig[gateId].shape; - x = gRotatingGate_PuzzleConfig[gateId].pos.x + 7; - y = gRotatingGate_PuzzleConfig[gateId].pos.y + 7; + x = gRotatingGate_PuzzleConfig[gateId].x + 7; + y = gRotatingGate_PuzzleConfig[gateId].y + 7; // Loop through the gate's "arms" clockwise (north, south, east, west) for (i = GATE_ARM_NORTH; i <= GATE_ARM_WEST; i++) @@ -878,118 +923,119 @@ static int RotatingGate_CanRotate(u8 gateId, int rotationDirection) return 1; } #else -__attribute__((naked)) static int RotatingGate_CanRotate(u8 a, int puzzleType) +__attribute__((naked)) +static int RotatingGate_CanRotate(u8 a, int puzzleType) { asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r10\n\ - mov r6, r9\n\ - mov r5, r8\n\ - push {r5-r7}\n\ - sub sp, 0xC\n\ - lsls r0, 24\n\ - lsrs r4, r0, 24\n\ - cmp r1, 0x1\n\ - bne _080C7EAC\n\ - ldr r0, _080C7EA8 @ =sRotatingGate_ArmPositionsAntiClockwiseRotation\n\ - mov r10, r0\n\ - b _080C7EB8\n\ - .align 2, 0\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + sub sp, 0xC\n\ + lsls r0, 24\n\ + lsrs r4, r0, 24\n\ + cmp r1, 0x1\n\ + bne _080C7EAC\n\ + ldr r0, _080C7EA8 @ =sRotatingGate_ArmPositionsAntiClockwiseRotation\n\ + mov r10, r0\n\ + b _080C7EB8\n\ + .align 2, 0\n\ _080C7EA8: .4byte sRotatingGate_ArmPositionsAntiClockwiseRotation\n\ _080C7EAC:\n\ - cmp r1, 0x2\n\ - beq _080C7EB4\n\ + cmp r1, 0x2\n\ + beq _080C7EB4\n\ _080C7EB0:\n\ - movs r0, 0\n\ - b _080C7F48\n\ + movs r0, 0\n\ + b _080C7F48\n\ _080C7EB4:\n\ - ldr r1, _080C7F58 @ =sRotatingGate_ArmPositionsClockwiseRotation\n\ - mov r10, r1\n\ + ldr r1, _080C7F58 @ =sRotatingGate_ArmPositionsClockwiseRotation\n\ + mov r10, r1\n\ _080C7EB8:\n\ - adds r0, r4, 0\n\ - bl RotatingGate_GetGateOrientation\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - str r0, [sp]\n\ - ldr r0, _080C7F5C @ =gRotatingGate_PuzzleConfig\n\ - ldr r1, [r0]\n\ - lsls r0, r4, 3\n\ - adds r0, r1\n\ - ldrb r2, [r0, 0x4]\n\ - ldrh r1, [r0]\n\ - adds r1, 0x7\n\ - ldrh r0, [r0, 0x2]\n\ - adds r0, 0x7\n\ - movs r3, 0\n\ - lsls r2, 3\n\ - str r2, [sp, 0x4]\n\ - lsls r1, 16\n\ - asrs r1, 16\n\ - mov r9, r1\n\ - lsls r0, 16\n\ - asrs r0, 16\n\ - mov r8, r0\n\ + adds r0, r4, 0\n\ + bl RotatingGate_GetGateOrientation\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + str r0, [sp]\n\ + ldr r0, _080C7F5C @ =gRotatingGate_PuzzleConfig\n\ + ldr r1, [r0]\n\ + lsls r0, r4, 3\n\ + adds r0, r1\n\ + ldrb r2, [r0, 0x4]\n\ + ldrh r1, [r0]\n\ + adds r1, 0x7\n\ + ldrh r0, [r0, 0x2]\n\ + adds r0, 0x7\n\ + movs r3, 0\n\ + lsls r2, 3\n\ + str r2, [sp, 0x4]\n\ + lsls r1, 16\n\ + asrs r1, 16\n\ + mov r9, r1\n\ + lsls r0, 16\n\ + asrs r0, 16\n\ + mov r8, r0\n\ _080C7EE8:\n\ - movs r6, 0\n\ - ldr r2, [sp]\n\ - adds r7, r2, r3\n\ - lsls r0, r3, 1\n\ - adds r5, r7, 0\n\ - ldr r1, [sp, 0x4]\n\ - adds r0, r1\n\ - ldr r2, _080C7F60 @ =sRotatingGate_ArmLayout\n\ - adds r4, r0, r2\n\ + movs r6, 0\n\ + ldr r2, [sp]\n\ + adds r7, r2, r3\n\ + lsls r0, r3, 1\n\ + adds r5, r7, 0\n\ + ldr r1, [sp, 0x4]\n\ + adds r0, r1\n\ + ldr r2, _080C7F60 @ =sRotatingGate_ArmLayout\n\ + adds r4, r0, r2\n\ _080C7EFA:\n\ - adds r0, r5, 0\n\ - cmp r5, 0\n\ - bge _080C7F02\n\ - adds r0, r7, 0x3\n\ + adds r0, r5, 0\n\ + cmp r5, 0\n\ + bge _080C7F02\n\ + adds r0, r7, 0x3\n\ _080C7F02:\n\ - asrs r0, 2\n\ - lsls r0, 2\n\ - subs r0, r5, r0\n\ - lsls r0, 1\n\ - adds r0, r6\n\ - lsls r0, 24\n\ - lsrs r1, r0, 24\n\ - ldrb r0, [r4]\n\ - cmp r0, 0\n\ - beq _080C7F38\n\ - lsls r1, 2\n\ - add r1, r10\n\ - movs r0, 0\n\ - ldrsb r0, [r1, r0]\n\ - add r0, r9\n\ - ldrb r1, [r1, 0x1]\n\ - lsls r1, 24\n\ - asrs r1, 24\n\ - add r1, r8\n\ - str r3, [sp, 0x8]\n\ - bl MapGridIsImpassableAt\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - ldr r3, [sp, 0x8]\n\ - cmp r0, 0x1\n\ - beq _080C7EB0\n\ + asrs r0, 2\n\ + lsls r0, 2\n\ + subs r0, r5, r0\n\ + lsls r0, 1\n\ + adds r0, r6\n\ + lsls r0, 24\n\ + lsrs r1, r0, 24\n\ + ldrb r0, [r4]\n\ + cmp r0, 0\n\ + beq _080C7F38\n\ + lsls r1, 2\n\ + add r1, r10\n\ + movs r0, 0\n\ + ldrsb r0, [r1, r0]\n\ + add r0, r9\n\ + ldrb r1, [r1, 0x1]\n\ + lsls r1, 24\n\ + asrs r1, 24\n\ + add r1, r8\n\ + str r3, [sp, 0x8]\n\ + bl MapGridIsImpassableAt\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + ldr r3, [sp, 0x8]\n\ + cmp r0, 0x1\n\ + beq _080C7EB0\n\ _080C7F38:\n\ - adds r4, 0x1\n\ - adds r6, 0x1\n\ - cmp r6, 0x1\n\ - ble _080C7EFA\n\ - adds r3, 0x1\n\ - cmp r3, 0x3\n\ - ble _080C7EE8\n\ - movs r0, 0x1\n\ + adds r4, 0x1\n\ + adds r6, 0x1\n\ + cmp r6, 0x1\n\ + ble _080C7EFA\n\ + adds r3, 0x1\n\ + cmp r3, 0x3\n\ + ble _080C7EE8\n\ + movs r0, 0x1\n\ _080C7F48:\n\ - add sp, 0xC\n\ - pop {r3-r5}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - mov r10, r5\n\ - pop {r4-r7}\n\ - pop {r1}\n\ - bx r1\n\ - .align 2, 0\n\ + add sp, 0xC\n\ + pop {r3-r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r7}\n\ + pop {r1}\n\ + bx r1\n\ + .align 2, 0\n\ _080C7F58: .4byte sRotatingGate_ArmPositionsClockwiseRotation\n\ _080C7F5C: .4byte gRotatingGate_PuzzleConfig\n\ _080C7F60: .4byte sRotatingGate_ArmLayout\n\ @@ -997,7 +1043,6 @@ _080C7F60: .4byte sRotatingGate_ArmLayout\n\ } #endif -#ifdef NONMATCHING static int RotatingGate_HasArm(u8 gateId, u8 armInfo) { int isLongArm; @@ -1010,56 +1055,8 @@ static int RotatingGate_HasArm(u8 gateId, u8 armInfo) armOrientation = (arm - RotatingGate_GetGateOrientation(gateId) + 4) % 4; shape = gRotatingGate_PuzzleConfig[gateId].shape; - return sRotatingGate_ArmLayout[shape][armOrientation][isLongArm]; + return sRotatingGate_ArmLayout[shape][armOrientation * 2 + isLongArm]; } -#else -__attribute__((naked)) static int RotatingGate_HasArm(u8 a, u8 b) -{ - asm(".syntax unified\n\ - push {r4-r6,lr}\n\ - adds r4, r1, 0\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - adds r6, r0, 0\n\ - lsls r4, 24\n\ - lsrs r5, r4, 24\n\ - lsrs r4, 25\n\ - movs r0, 0x1\n\ - ands r5, r0\n\ - adds r0, r6, 0\n\ - bl RotatingGate_GetGateOrientation\n\ - subs r4, r0\n\ - adds r1, r4, 0x4\n\ - adds r0, r1, 0\n\ - cmp r1, 0\n\ - bge _080C7F8A\n\ - adds r0, r4, 0x7\n\ -_080C7F8A:\n\ - asrs r0, 2\n\ - lsls r0, 2\n\ - subs r0, r1, r0\n\ - ldr r1, _080C7FB0 @ =gRotatingGate_PuzzleConfig\n\ - ldr r2, [r1]\n\ - lsls r1, r6, 3\n\ - adds r1, r2\n\ - ldrb r1, [r1, 0x4]\n\ - ldr r2, _080C7FB4 @ =sRotatingGate_ArmLayout\n\ - lsls r0, 24\n\ - asrs r0, 23\n\ - adds r0, r5\n\ - lsls r1, 3\n\ - adds r0, r1\n\ - adds r0, r2\n\ - ldrb r0, [r0]\n\ - pop {r4-r6}\n\ - pop {r1}\n\ - bx r1\n\ - .align 2, 0\n\ -_080C7FB0: .4byte gRotatingGate_PuzzleConfig\n\ -_080C7FB4: .4byte sRotatingGate_ArmLayout\n\ -.syntax divided\n"); -} -#endif static void RotatingGate_TriggerRotationAnimation(u8 gateId, int rotationDirection) { @@ -1073,79 +1070,23 @@ static void RotatingGate_TriggerRotationAnimation(u8 gateId, int rotationDirecti } } -#ifdef NONMATCHING static u8 RotatingGate_GetRotationInfo(u8 direction, s16 x, s16 y) { - register const u8(*ptr)[][4] asm("r3"); + register const u8 *ptr; if (direction == DIR_NORTH) - ptr = &sRotatingGate_RotationInfoNorth; + ptr = sRotatingGate_RotationInfoNorth; else if (direction == DIR_SOUTH) - ptr = &sRotatingGate_RotationInfoSouth; + ptr = sRotatingGate_RotationInfoSouth; else if (direction == DIR_WEST) - ptr = &sRotatingGate_RotationInfoWest; + ptr = sRotatingGate_RotationInfoWest; else if (direction == DIR_EAST) - ptr = &sRotatingGate_RotationInfoEast; + ptr = sRotatingGate_RotationInfoEast; else - return GATE_ROTATION_NONE; + return GATE_ROT_NONE; - return (*ptr)[y][x]; + return ptr[y * 4 + x]; } -#else -__attribute__((naked)) static u8 RotatingGate_GetRotationInfo(u8 a, s16 b, s16 c) -{ - asm(".syntax unified\n\ - push {lr}\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - adds r3, r0, 0\n\ - lsls r1, 16\n\ - lsrs r1, 16\n\ - lsls r2, 16\n\ - lsrs r2, 16\n\ - cmp r0, 0x2\n\ - bne _080C8008\n\ - ldr r3, _080C8004 @ =sRotatingGate_RotationInfoNorth\n\ - b _080C802A\n\ - .align 2, 0\n\ -_080C8004: .4byte sRotatingGate_RotationInfoNorth\n\ -_080C8008:\n\ - cmp r0, 0x1\n\ - bne _080C8014\n\ - ldr r3, _080C8010 @ =sRotatingGate_RotationInfoSouth\n\ - b _080C802A\n\ - .align 2, 0\n\ -_080C8010: .4byte sRotatingGate_RotationInfoSouth\n\ -_080C8014:\n\ - cmp r0, 0x3\n\ - bne _080C8020\n\ - ldr r3, _080C801C @ =sRotatingGate_RotationInfoWest\n\ - b _080C802A\n\ - .align 2, 0\n\ -_080C801C: .4byte sRotatingGate_RotationInfoWest\n\ -_080C8020:\n\ - cmp r3, 0x4\n\ - beq _080C8028\n\ - movs r0, 0xFF\n\ - b _080C8038\n\ -_080C8028:\n\ - ldr r3, _080C803C @ =sRotatingGate_RotationInfoEast\n\ -_080C802A:\n\ - lsls r0, r2, 16\n\ - lsls r1, 16\n\ - asrs r1, 16\n\ - asrs r0, 14\n\ - adds r0, r1\n\ - adds r0, r3, r0\n\ - ldrb r0, [r0]\n\ -_080C8038:\n\ - pop {r1}\n\ - bx r1\n\ - .align 2, 0\n\ -_080C803C: .4byte sRotatingGate_RotationInfoEast\n\ -.syntax divided\n"); -} -#endif void RotatingGate_InitPuzzle(void) { @@ -1178,36 +1119,24 @@ void RotatingGate_InitPuzzleAndGraphics(void) bool8 CheckForRotatingGatePuzzleCollision(u8 direction, s16 x, s16 y) { int i; - s16 gateX; - s16 gateY; - register u32 rotationInfo asm("r0"); - int rotationDirection; - int armInfo; - s16 centerX; - s16 centerY; if (!GetCurrentMapRotatingGatePuzzleType()) - { - return 0; - } - + return FALSE; for (i = 0; i < gRotatingGate_PuzzleCount; i++) { - gateX = gRotatingGate_PuzzleConfig[i].pos.x + 7; - gateY = gRotatingGate_PuzzleConfig[i].pos.y + 7; + s16 gateX = gRotatingGate_PuzzleConfig[i].x + 7; + s16 gateY = gRotatingGate_PuzzleConfig[i].y + 7; if (gateX - 2 <= x && x <= gateX + 1 && gateY - 2 <= y && y <= gateY + 1) { - centerX = x - gateX + 2; - centerY = y - gateY + 2; - rotationInfo = RotatingGate_GetRotationInfo(direction, centerX, centerY); + s16 centerX = x - gateX + 2; + s16 centerY = y - gateY + 2; + u8 rotationInfo = RotatingGate_GetRotationInfo(direction, centerX, centerY); - if (rotationInfo != GATE_ROTATION_NONE) + if (rotationInfo != GATE_ROT_NONE) { - rotationDirection = rotationInfo >> 4; - armInfo = rotationInfo & 0xF; - - asm("" ::"r"(armInfo)); + u8 rotationDirection = ((rotationInfo & 0xF0) >> 4); + u8 armInfo = rotationInfo & 0xF; if (RotatingGate_HasArm(i, armInfo)) { @@ -1215,14 +1144,12 @@ bool8 CheckForRotatingGatePuzzleCollision(u8 direction, s16 x, s16 y) { RotatingGate_TriggerRotationAnimation(i, rotationDirection); RotatingGate_RotateInDirection(i, rotationDirection); - return 0; + return FALSE; } - - return 1; + return TRUE; } } } } - - return 0; + return FALSE; } diff --git a/src/safari_zone.c b/src/field/safari_zone.c similarity index 99% rename from src/safari_zone.c rename to src/field/safari_zone.c index a47c8e951..14fd1ddc4 100644 --- a/src/safari_zone.c +++ b/src/field/safari_zone.c @@ -4,7 +4,7 @@ #include "field_fadetransition.h" #include "field_player_avatar.h" #include "main.h" -#include "rom4.h" +#include "overworld.h" #include "script.h" #include "string_util.h" #include "text.h" @@ -51,7 +51,7 @@ void SetSafariZoneFlag(void) void ResetSafariZoneFlag(void) { - FlagReset(SYS_SAFARI_MODE); + FlagClear(SYS_SAFARI_MODE); } void EnterSafariMode(void) diff --git a/src/scrcmd.c b/src/field/scrcmd.c similarity index 58% rename from src/scrcmd.c rename to src/field/scrcmd.c index a394f2a55..28584d4d0 100644 --- a/src/scrcmd.c +++ b/src/field/scrcmd.c @@ -31,7 +31,7 @@ #include "party_menu.h" #include "pokemon.h" #include "rng.h" -#include "rom4.h" +#include "overworld.h" #include "rtc.h" #include "script.h" #include "script_menu.h" @@ -48,12 +48,14 @@ typedef u16 (*SpecialFunc)(void); typedef void (*NativeFunc)(void); extern u32 gUnknown_0202E8AC; -extern u32 gUnknown_0202E8B0; -extern u16 gUnknown_0202E8B4; -extern u16 gUnknown_0202E8B6; -extern u16 gUnknown_0202E8B8; -extern u16 gUnknown_0202E8BA; -extern u16 gUnknown_0202E8BC; + +static EWRAM_DATA u32 gUnknown_0202E8B0 = 0; +static EWRAM_DATA u16 sPauseCounter = 0; +static EWRAM_DATA u16 sMovingNpcId = 0; +static EWRAM_DATA u16 sMovingNpcMapBank = 0; +static EWRAM_DATA u16 sMovingNpcMapId = 0; +static EWRAM_DATA u16 sFieldEffectScriptId = 0; + extern u16 gSpecialVar_0x8000; extern u16 gSpecialVar_0x8001; extern u16 gSpecialVar_0x8002; @@ -61,8 +63,6 @@ extern u16 gSpecialVar_0x8004; extern u16 gScriptResult; -extern u32 gUnknown_0202FF84[]; - extern u16 gScriptContestCategory; extern SpecialFunc gSpecials[]; @@ -91,12 +91,12 @@ static u8 * const sScriptStringVars[] = gStringVar3, }; -bool8 ScrCmd_snop(struct ScriptContext *ctx) +bool8 ScrCmd_nop(struct ScriptContext *ctx) { return FALSE; } -bool8 ScrCmd_snop1(struct ScriptContext *ctx) +bool8 ScrCmd_nop1(struct ScriptContext *ctx) { return FALSE; } @@ -107,30 +107,34 @@ bool8 ScrCmd_end(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_jumpasm(struct ScriptContext *ctx) +bool8 ScrCmd_gotonative(struct ScriptContext *ctx) { - u32 addr = ScriptReadWord(ctx); - SetupNativeScript(ctx, (void *)addr); + bool8 (*addr)(void) = (bool8 (*)(void))ScriptReadWord(ctx); + + SetupNativeScript(ctx, addr); return TRUE; } bool8 ScrCmd_special(struct ScriptContext *ctx) { u16 index = ScriptReadHalfword(ctx); + gSpecials[index](); return FALSE; } -bool8 ScrCmd_specialval(struct ScriptContext *ctx) +bool8 ScrCmd_specialvar(struct ScriptContext *ctx) { u16 *var = GetVarPointer(ScriptReadHalfword(ctx)); + *var = gSpecials[ScriptReadHalfword(ctx)](); return FALSE; } -bool8 ScrCmd_callasm(struct ScriptContext *ctx) +bool8 ScrCmd_callnative(struct ScriptContext *ctx) { NativeFunc func = (NativeFunc)ScriptReadWord(ctx); + func(); return FALSE; } @@ -141,9 +145,10 @@ bool8 ScrCmd_waitstate(struct ScriptContext *ctx) return TRUE; } -bool8 ScrCmd_jump(struct ScriptContext *ctx) +bool8 ScrCmd_goto(struct ScriptContext *ctx) { u8 *ptr = (u8 *)ScriptReadWord(ctx); + ScriptJump(ctx, ptr); return FALSE; } @@ -156,25 +161,27 @@ bool8 ScrCmd_return(struct ScriptContext *ctx) bool8 ScrCmd_call(struct ScriptContext *ctx) { - u8 *ptr = (u8 *)ScriptReadWord(ctx); + ScriptCall(ctx, ptr); return FALSE; } -bool8 ScrCmd_jumpif(struct ScriptContext *ctx) +bool8 ScrCmd_goto_if(struct ScriptContext *ctx) { u8 condition = ScriptReadByte(ctx); u8 *ptr = (u8 *)ScriptReadWord(ctx); + if (sScriptConditionTable[condition][ctx->comparisonResult] == 1) ScriptJump(ctx, ptr); return FALSE; } -bool8 ScrCmd_callif(struct ScriptContext *ctx) +bool8 ScrCmd_call_if(struct ScriptContext *ctx) { u8 condition = ScriptReadByte(ctx); u8 *ptr = (u8 *)ScriptReadWord(ctx); + if (sScriptConditionTable[condition][ctx->comparisonResult] == 1) ScriptCall(ctx, ptr); return FALSE; @@ -184,13 +191,15 @@ bool8 ScrCmd_setvaddress(struct ScriptContext *ctx) { u32 addr1 = (u32)ctx->scriptPtr - 1; u32 addr2 = ScriptReadWord(ctx); + gUnknown_0202E8B0 = addr2 - addr1; return FALSE; } -bool8 ScrCmd_vjump(struct ScriptContext *ctx) +bool8 ScrCmd_vgoto(struct ScriptContext *ctx) { u32 addr = ScriptReadWord(ctx); + ScriptJump(ctx, (u8 *)(addr - gUnknown_0202E8B0)); return FALSE; } @@ -198,32 +207,36 @@ bool8 ScrCmd_vjump(struct ScriptContext *ctx) bool8 ScrCmd_vcall(struct ScriptContext *ctx) { u32 addr = ScriptReadWord(ctx); + ScriptCall(ctx, (u8 *)(addr - gUnknown_0202E8B0)); return FALSE; } -bool8 ScrCmd_if5(struct ScriptContext *ctx) +bool8 ScrCmd_vgoto_if(struct ScriptContext *ctx) { u8 condition = ScriptReadByte(ctx); u8 *ptr = (u8 *)(ScriptReadWord(ctx) - gUnknown_0202E8B0); + if (sScriptConditionTable[condition][ctx->comparisonResult] == 1) ScriptJump(ctx, ptr); return FALSE; } -bool8 ScrCmd_if6(struct ScriptContext *ctx) +bool8 ScrCmd_vcall_if(struct ScriptContext *ctx) { u8 condition = ScriptReadByte(ctx); u8 *ptr = (u8 *)(ScriptReadWord(ctx) - gUnknown_0202E8B0); + if (sScriptConditionTable[condition][ctx->comparisonResult] == 1) ScriptCall(ctx, ptr); return FALSE; } -bool8 ScrCmd_jumpstd(struct ScriptContext *ctx) +bool8 ScrCmd_gotostd(struct ScriptContext *ctx) { u8 index = ScriptReadByte(ctx); u8 **ptr = &gStdScripts[index]; + if (ptr < gStdScripts_End) ScriptJump(ctx, *ptr); return FALSE; @@ -233,15 +246,17 @@ bool8 ScrCmd_callstd(struct ScriptContext *ctx) { u8 index = ScriptReadByte(ctx); u8 **ptr = &gStdScripts[index]; + if (ptr < gStdScripts_End) ScriptCall(ctx, *ptr); return FALSE; } -bool8 ScrCmd_jumpstdif(struct ScriptContext *ctx) +bool8 ScrCmd_gotostd_if(struct ScriptContext *ctx) { u8 condition = ScriptReadByte(ctx); u8 index = ScriptReadByte(ctx); + if (sScriptConditionTable[condition][ctx->comparisonResult] == 1) { u8 **ptr = &gStdScripts[index]; @@ -251,10 +266,11 @@ bool8 ScrCmd_jumpstdif(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_callstdif(struct ScriptContext *ctx) +bool8 ScrCmd_callstd_if(struct ScriptContext *ctx) { u8 condition = ScriptReadByte(ctx); u8 index = ScriptReadByte(ctx); + if (sScriptConditionTable[condition][ctx->comparisonResult] == 1) { u8 **ptr = &gStdScripts[index]; @@ -264,50 +280,55 @@ bool8 ScrCmd_callstdif(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_jumpram(struct ScriptContext *ctx) +bool8 ScrCmd_gotoram(struct ScriptContext *ctx) { ScriptJump(ctx, (u8 *)gUnknown_0202E8AC); return FALSE; } -bool8 ScrCmd_die(struct ScriptContext *ctx) +bool8 ScrCmd_killscript(struct ScriptContext *ctx) { ClearRamScript(); StopScript(ctx); return TRUE; } -bool8 ScrCmd_setbyte(struct ScriptContext *ctx) +bool8 ScrCmd_setmysteryeventstatus(struct ScriptContext *ctx) { u8 value = ScriptReadByte(ctx); - sub_8126160(value); + + SetMysteryEventScriptStatus(value); return FALSE; } -bool8 ScrCmd_loadptr(struct ScriptContext *ctx) +bool8 ScrCmd_loadword(struct ScriptContext *ctx) { u8 index = ScriptReadByte(ctx); + ctx->data[index] = ScriptReadWord(ctx); return FALSE; } -bool8 ScrCmd_loadbytefrompointer(struct ScriptContext *ctx) +bool8 ScrCmd_loadbytefromaddr(struct ScriptContext *ctx) { u8 index = ScriptReadByte(ctx); + ctx->data[index] = *(u8 *)ScriptReadWord(ctx); return FALSE; } -bool8 ScrCmd_writebytetooffset(struct ScriptContext *ctx) +bool8 ScrCmd_writebytetoaddr(struct ScriptContext *ctx) { u8 value = ScriptReadByte(ctx); + *(u8 *)ScriptReadWord(ctx) = value; return FALSE; } -bool8 ScrCmd_setbufferbyte(struct ScriptContext *ctx) +bool8 ScrCmd_loadbyte(struct ScriptContext *ctx) { u8 index = ScriptReadByte(ctx); + ctx->data[index] = ScriptReadByte(ctx); return FALSE; } @@ -315,14 +336,16 @@ bool8 ScrCmd_setbufferbyte(struct ScriptContext *ctx) bool8 ScrCmd_setptrbyte(struct ScriptContext *ctx) { u8 index = ScriptReadByte(ctx); + *(u8 *)ScriptReadWord(ctx) = ctx->data[index]; return FALSE; } -bool8 ScrCmd_copybuffers(struct ScriptContext *ctx) +bool8 ScrCmd_copylocal(struct ScriptContext *ctx) { u8 destIndex = ScriptReadByte(ctx); u8 srcIndex = ScriptReadByte(ctx); + ctx->data[destIndex] = ctx->data[srcIndex]; return FALSE; } @@ -359,73 +382,81 @@ u8 compare_012(u16 a1, u16 a2) { if (a1 < a2) return 0; - if (a1 == a2) return 1; - return 2; } -bool8 ScrCmd_comparebuffers(struct ScriptContext *ctx) +// comparelocaltolocal +bool8 ScrCmd_compare_local_to_local(struct ScriptContext *ctx) { u8 value1 = ctx->data[ScriptReadByte(ctx)]; u8 value2 = ctx->data[ScriptReadByte(ctx)]; + ctx->comparisonResult = compare_012(value1, value2); return FALSE; } -bool8 ScrCmd_comparebuffertobyte(struct ScriptContext *ctx) +// comparelocaltoimm +bool8 ScrCmd_compare_local_to_value(struct ScriptContext *ctx) { u8 value1 = ctx->data[ScriptReadByte(ctx)]; u8 value2 = ScriptReadByte(ctx); + ctx->comparisonResult = compare_012(value1, value2); return FALSE; } -bool8 ScrCmd_comparebuffertoptrbyte(struct ScriptContext *ctx) +bool8 ScrCmd_compare_local_to_addr(struct ScriptContext *ctx) { u8 value1 = ctx->data[ScriptReadByte(ctx)]; u8 value2 = *(u8 *)ScriptReadWord(ctx); + ctx->comparisonResult = compare_012(value1, value2); return FALSE; } -bool8 ScrCmd_compareptrbytetobuffer(struct ScriptContext *ctx) +bool8 ScrCmd_compare_addr_to_local(struct ScriptContext *ctx) { u8 value1 = *(u8 *)ScriptReadWord(ctx); u8 value2 = ctx->data[ScriptReadByte(ctx)]; + ctx->comparisonResult = compare_012(value1, value2); return FALSE; } -bool8 ScrCmd_compareptrbytetobyte(struct ScriptContext *ctx) +bool8 ScrCmd_compare_addr_to_value(struct ScriptContext *ctx) { u8 value1 = *(u8 *)ScriptReadWord(ctx); u8 value2 = ScriptReadByte(ctx); + ctx->comparisonResult = compare_012(value1, value2); return FALSE; } -bool8 ScrCmd_compareptrbytes(struct ScriptContext *ctx) +bool8 ScrCmd_compare_addr_to_addr(struct ScriptContext *ctx) { u8 value1 = *(u8 *)ScriptReadWord(ctx); u8 value2 = *(u8 *)ScriptReadWord(ctx); + ctx->comparisonResult = compare_012(value1, value2); return FALSE; } -bool8 ScrCmd_compare(struct ScriptContext *ctx) +bool8 ScrCmd_compare_var_to_value(struct ScriptContext *ctx) { u16 value1 = *GetVarPointer(ScriptReadHalfword(ctx)); u16 value2 = ScriptReadHalfword(ctx); + ctx->comparisonResult = compare_012(value1, value2); return FALSE; } -bool8 ScrCmd_comparevars(struct ScriptContext *ctx) +bool8 ScrCmd_compare_var_to_var(struct ScriptContext *ctx) { u16 *ptr1 = GetVarPointer(ScriptReadHalfword(ctx)); u16 *ptr2 = GetVarPointer(ScriptReadHalfword(ctx)); + ctx->comparisonResult = compare_012(*ptr1, *ptr2); return FALSE; } @@ -447,6 +478,7 @@ bool8 ScrCmd_subvar(struct ScriptContext *ctx) bool8 ScrCmd_random(struct ScriptContext *ctx) { u16 max = VarGet(ScriptReadHalfword(ctx)); + gScriptResult = Random() % max; return FALSE; } @@ -455,6 +487,7 @@ bool8 ScrCmd_additem(struct ScriptContext *ctx) { u16 itemId = VarGet(ScriptReadHalfword(ctx)); u32 quantity = VarGet(ScriptReadHalfword(ctx)); + gScriptResult = AddBagItem(itemId, (u8)quantity); return FALSE; } @@ -463,6 +496,7 @@ bool8 ScrCmd_removeitem(struct ScriptContext *ctx) { u16 itemId = VarGet(ScriptReadHalfword(ctx)); u32 quantity = VarGet(ScriptReadHalfword(ctx)); + gScriptResult = RemoveBagItem(itemId, (u8)quantity); return FALSE; } @@ -471,6 +505,7 @@ bool8 ScrCmd_checkitemspace(struct ScriptContext *ctx) { u16 itemId = VarGet(ScriptReadHalfword(ctx)); u32 quantity = VarGet(ScriptReadHalfword(ctx)); + gScriptResult = CheckBagHasSpace(itemId, (u8)quantity); return FALSE; } @@ -479,6 +514,7 @@ bool8 ScrCmd_checkitem(struct ScriptContext *ctx) { u16 itemId = VarGet(ScriptReadHalfword(ctx)); u32 quantity = VarGet(ScriptReadHalfword(ctx)); + gScriptResult = CheckBagHasItem(itemId, (u8)quantity); return FALSE; } @@ -486,6 +522,7 @@ bool8 ScrCmd_checkitem(struct ScriptContext *ctx) bool8 ScrCmd_checkitemtype(struct ScriptContext *ctx) { u16 itemId = VarGet(ScriptReadHalfword(ctx)); + gScriptResult = GetPocketByItemId(itemId); return FALSE; } @@ -494,6 +531,7 @@ bool8 ScrCmd_addpcitem(struct ScriptContext *ctx) { u16 itemId = VarGet(ScriptReadHalfword(ctx)); u16 quantity = VarGet(ScriptReadHalfword(ctx)); + gScriptResult = AddPCItem(itemId, quantity); return FALSE; } @@ -502,6 +540,7 @@ bool8 ScrCmd_checkpcitem(struct ScriptContext *ctx) { u16 itemId = VarGet(ScriptReadHalfword(ctx)); u16 quantity = VarGet(ScriptReadHalfword(ctx)); + gScriptResult = CheckPCHasItem(itemId, quantity); return FALSE; } @@ -509,6 +548,7 @@ bool8 ScrCmd_checkpcitem(struct ScriptContext *ctx) bool8 ScrCmd_adddecor(struct ScriptContext *ctx) { u32 decorId = VarGet(ScriptReadHalfword(ctx)); + gScriptResult = IsThereStorageSpaceForDecoration(decorId); return FALSE; } @@ -516,6 +556,7 @@ bool8 ScrCmd_adddecor(struct ScriptContext *ctx) bool8 ScrCmd_removedecor(struct ScriptContext *ctx) { u32 decorId = VarGet(ScriptReadHalfword(ctx)); + gScriptResult = sub_81340A8(decorId); return FALSE; } @@ -523,13 +564,15 @@ bool8 ScrCmd_removedecor(struct ScriptContext *ctx) bool8 ScrCmd_checkdecor(struct ScriptContext *ctx) { u32 decorId = VarGet(ScriptReadHalfword(ctx)); + gScriptResult = sub_8134074(decorId); return FALSE; } -bool8 ScrCmd_testdecor(struct ScriptContext *ctx) +bool8 ScrCmd_hasdecor(struct ScriptContext *ctx) { u32 decorId = VarGet(ScriptReadHalfword(ctx)); + gScriptResult = sub_8133FE4(decorId); return FALSE; } @@ -542,7 +585,7 @@ bool8 ScrCmd_setflag(struct ScriptContext *ctx) bool8 ScrCmd_clearflag(struct ScriptContext *ctx) { - FlagReset(ScriptReadHalfword(ctx)); + FlagClear(ScriptReadHalfword(ctx)); return FALSE; } @@ -552,23 +595,24 @@ bool8 ScrCmd_checkflag(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_inccounter(struct ScriptContext *ctx) +bool8 ScrCmd_incrementgamestat(struct ScriptContext *ctx) { IncrementGameStat(ScriptReadByte(ctx)); return FALSE; } -bool8 ScrCmd_lighten(struct ScriptContext *ctx) +bool8 ScrCmd_animdarklevel(struct ScriptContext *ctx) { sub_8081594(ScriptReadByte(ctx)); ScriptContext1_Stop(); return TRUE; } -bool8 ScrCmd_darken(struct ScriptContext *ctx) +bool8 ScrCmd_setdarklevel(struct ScriptContext *ctx) { - u16 value = VarGet(ScriptReadHalfword(ctx)); - sub_8053CE4(value); + u16 flashLevel = VarGet(ScriptReadHalfword(ctx)); + + Overworld_SetFlashLevel(flashLevel); return FALSE; } @@ -591,6 +635,7 @@ bool8 ScrCmd_fadescreendelay(struct ScriptContext *ctx) { u8 duration = ScriptReadByte(ctx); u8 delay = ScriptReadByte(ctx); + fade_screen(duration, delay); SetupNativeScript(ctx, IsPaletteNotActive); return TRUE; @@ -598,36 +643,37 @@ bool8 ScrCmd_fadescreendelay(struct ScriptContext *ctx) bool8 s28_pause_asm() { - gUnknown_0202E8B4--; + sPauseCounter--; - if (gUnknown_0202E8B4 == 0) + if (sPauseCounter == 0) return TRUE; else return FALSE; } -bool8 ScrCmd_pause(struct ScriptContext *ctx) +bool8 ScrCmd_delay(struct ScriptContext *ctx) { - gUnknown_0202E8B4 = ScriptReadHalfword(ctx); + sPauseCounter = ScriptReadHalfword(ctx); SetupNativeScript(ctx, s28_pause_asm); return TRUE; } -bool8 ScrCmd_compareflags(struct ScriptContext *ctx) +bool8 ScrCmd_initclock(struct ScriptContext *ctx) { u8 hour = VarGet(ScriptReadHalfword(ctx)); u8 minute = VarGet(ScriptReadHalfword(ctx)); + RtcInitLocalTimeOffset(hour, minute); return FALSE; } -bool8 ScrCmd_checkdailyflags(struct ScriptContext *ctx) +bool8 ScrCmd_dodailyevents(struct ScriptContext *ctx) { DoTimeBasedEvents(); return FALSE; } -bool8 ScrCmd_resetvars(struct ScriptContext *ctx) +bool8 ScrCmd_gettime(struct ScriptContext *ctx) { RtcCalcLocalTime(); gSpecialVar_0x8000 = gLocalTime.hours; @@ -638,8 +684,9 @@ bool8 ScrCmd_resetvars(struct ScriptContext *ctx) bool8 ScrCmd_setweather(struct ScriptContext *ctx) { - u16 value = VarGet(ScriptReadHalfword(ctx)); - SetSav1Weather(value); + u16 weather = VarGet(ScriptReadHalfword(ctx)); + + SetSav1Weather(weather); return FALSE; } @@ -661,47 +708,51 @@ bool8 ScrCmd_tileeffect(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_setmapfooter(struct ScriptContext *ctx) +bool8 ScrCmd_setmaplayoutindex(struct ScriptContext *ctx) { u16 value = VarGet(ScriptReadHalfword(ctx)); + sub_8053D14(value); return FALSE; } bool8 ScrCmd_warp(struct ScriptContext *ctx) { - u8 v1 = ScriptReadByte(ctx); - u8 v2 = ScriptReadByte(ctx); - u8 v3 = ScriptReadByte(ctx); - u16 v4 = VarGet(ScriptReadHalfword(ctx)); - s8 v5 = VarGet(ScriptReadHalfword(ctx)); - warp1_set(v1, v2, v3, v4, v5); + u8 mapGroup = ScriptReadByte(ctx); + u8 mapNum = ScriptReadByte(ctx); + u8 warpId = ScriptReadByte(ctx); + u16 x = VarGet(ScriptReadHalfword(ctx)); + u16 y = VarGet(ScriptReadHalfword(ctx)); + + Overworld_SetWarpDestination(mapGroup, mapNum, warpId, x, y); sub_8080E88(); player_avatar_init_params_reset(); return TRUE; } -bool8 ScrCmd_warpmuted(struct ScriptContext *ctx) +bool8 ScrCmd_warpsilent(struct ScriptContext *ctx) { - u8 v1 = ScriptReadByte(ctx); - u8 v2 = ScriptReadByte(ctx); - u8 v3 = ScriptReadByte(ctx); - u16 v4 = VarGet(ScriptReadHalfword(ctx)); - s8 v5 = VarGet(ScriptReadHalfword(ctx)); - warp1_set(v1, v2, v3, v4, v5); + u8 mapGroup = ScriptReadByte(ctx); + u8 mapNum = ScriptReadByte(ctx); + u8 warpId = ScriptReadByte(ctx); + u16 x = VarGet(ScriptReadHalfword(ctx)); + u16 y = VarGet(ScriptReadHalfword(ctx)); + + Overworld_SetWarpDestination(mapGroup, mapNum, warpId, x, y); sp13E_warp_to_last_warp(); player_avatar_init_params_reset(); return TRUE; } -bool8 ScrCmd_warpwalk(struct ScriptContext *ctx) +bool8 ScrCmd_warpdoor(struct ScriptContext *ctx) { - u8 v1 = ScriptReadByte(ctx); - u8 v2 = ScriptReadByte(ctx); - u8 v3 = ScriptReadByte(ctx); - u16 v4 = VarGet(ScriptReadHalfword(ctx)); - s8 v5 = VarGet(ScriptReadHalfword(ctx)); - warp1_set(v1, v2, v3, v4, v5); + u8 mapGroup = ScriptReadByte(ctx); + u8 mapNum = ScriptReadByte(ctx); + u8 warpId = ScriptReadByte(ctx); + u16 x = VarGet(ScriptReadHalfword(ctx)); + u16 y = VarGet(ScriptReadHalfword(ctx)); + + Overworld_SetWarpDestination(mapGroup, mapNum, warpId, x, y); sub_8080EF0(); player_avatar_init_params_reset(); return TRUE; @@ -709,18 +760,16 @@ bool8 ScrCmd_warpwalk(struct ScriptContext *ctx) bool8 ScrCmd_warphole(struct ScriptContext *ctx) { - u8 v1 = ScriptReadByte(ctx); - u8 v2 = ScriptReadByte(ctx); + u8 mapGroup = ScriptReadByte(ctx); + u8 mapNum = ScriptReadByte(ctx); u16 x; u16 y; PlayerGetDestCoords(&x, &y); - - if (v1 == 0xFF && v2 == 0xFF) + if (mapGroup == 0xFF && mapNum == 0xFF) sub_8053720(x - 7, y - 7); else - warp1_set(v1, v2, -1, x - 7, y - 7); - + Overworld_SetWarpDestination(mapGroup, mapNum, -1, x - 7, y - 7); sp13F_fall_to_last_warp(); player_avatar_init_params_reset(); return TRUE; @@ -728,78 +777,85 @@ bool8 ScrCmd_warphole(struct ScriptContext *ctx) bool8 ScrCmd_warpteleport(struct ScriptContext *ctx) { - u8 v1 = ScriptReadByte(ctx); - u8 v2 = ScriptReadByte(ctx); - u8 v3 = ScriptReadByte(ctx); - u16 v4 = VarGet(ScriptReadHalfword(ctx)); - s8 v5 = VarGet(ScriptReadHalfword(ctx)); - warp1_set(v1, v2, v3, v4, v5); + u8 mapGroup = ScriptReadByte(ctx); + u8 mapNum = ScriptReadByte(ctx); + u8 warpId = ScriptReadByte(ctx); + u16 x = VarGet(ScriptReadHalfword(ctx)); + u16 y = VarGet(ScriptReadHalfword(ctx)); + + Overworld_SetWarpDestination(mapGroup, mapNum, warpId, x, y); sub_8080F68(); player_avatar_init_params_reset(); return TRUE; } -bool8 ScrCmd_warp3(struct ScriptContext *ctx) +bool8 ScrCmd_setwarp(struct ScriptContext *ctx) { - u8 v1 = ScriptReadByte(ctx); - u8 v2 = ScriptReadByte(ctx); - u8 v3 = ScriptReadByte(ctx); - u16 v4 = VarGet(ScriptReadHalfword(ctx)); - s8 v5 = VarGet(ScriptReadHalfword(ctx)); - warp1_set(v1, v2, v3, v4, v5); + u8 mapGroup = ScriptReadByte(ctx); + u8 mapNum = ScriptReadByte(ctx); + u8 warpId = ScriptReadByte(ctx); + u16 x = VarGet(ScriptReadHalfword(ctx)); + u16 y = VarGet(ScriptReadHalfword(ctx)); + + Overworld_SetWarpDestination(mapGroup, mapNum, warpId, x, y); return FALSE; } -bool8 ScrCmd_warpplace(struct ScriptContext *ctx) +bool8 ScrCmd_setdynamicwarp(struct ScriptContext *ctx) { - u8 v1 = ScriptReadByte(ctx); - u8 v2 = ScriptReadByte(ctx); - u8 v3 = ScriptReadByte(ctx); - u16 v4 = VarGet(ScriptReadHalfword(ctx)); - s8 v5 = VarGet(ScriptReadHalfword(ctx)); - saved_warp2_set_2(0, v1, v2, v3, v4, v5); + u8 mapGroup = ScriptReadByte(ctx); + u8 mapNum = ScriptReadByte(ctx); + u8 warpId = ScriptReadByte(ctx); + u16 x = VarGet(ScriptReadHalfword(ctx)); + u16 y = VarGet(ScriptReadHalfword(ctx)); + + saved_warp2_set_2(0, mapGroup, mapNum, warpId, x, y); return FALSE; } -bool8 ScrCmd_warp4(struct ScriptContext *ctx) +bool8 ScrCmd_setdivewarp(struct ScriptContext *ctx) { - u8 v1 = ScriptReadByte(ctx); - u8 v2 = ScriptReadByte(ctx); - u8 v3 = ScriptReadByte(ctx); - u16 v4 = VarGet(ScriptReadHalfword(ctx)); - s8 v5 = VarGet(ScriptReadHalfword(ctx)); - sub_8053690(v1, v2, v3, v4, v5); + u8 mapGroup = ScriptReadByte(ctx); + u8 mapNum = ScriptReadByte(ctx); + u8 warpId = ScriptReadByte(ctx); + u16 x = VarGet(ScriptReadHalfword(ctx)); + u16 y = VarGet(ScriptReadHalfword(ctx)); + + sub_8053690(mapGroup, mapNum, warpId, x, y); return FALSE; } -bool8 ScrCmd_warp5(struct ScriptContext *ctx) +bool8 ScrCmd_setholewarp(struct ScriptContext *ctx) { - u8 v1 = ScriptReadByte(ctx); - u8 v2 = ScriptReadByte(ctx); - u8 v3 = ScriptReadByte(ctx); - u16 v4 = VarGet(ScriptReadHalfword(ctx)); - s8 v5 = VarGet(ScriptReadHalfword(ctx)); - sub_80536E4(v1, v2, v3, v4, v5); + u8 mapGroup = ScriptReadByte(ctx); + u8 mapNum = ScriptReadByte(ctx); + u8 warpId = ScriptReadByte(ctx); + u16 x = VarGet(ScriptReadHalfword(ctx)); + u16 y = VarGet(ScriptReadHalfword(ctx)); + + sub_80536E4(mapGroup, mapNum, warpId, x, y); return FALSE; } -bool8 ScrCmd_warp6(struct ScriptContext *ctx) +bool8 ScrCmd_setescapewarp(struct ScriptContext *ctx) { - u8 v1 = ScriptReadByte(ctx); - u8 v2 = ScriptReadByte(ctx); - u8 v3 = ScriptReadByte(ctx); - u16 v4 = VarGet(ScriptReadHalfword(ctx)); - s8 v5 = VarGet(ScriptReadHalfword(ctx)); - sub_805363C(v1, v2, v3, v4, v5); + u8 mapGroup = ScriptReadByte(ctx); + u8 mapNum = ScriptReadByte(ctx); + u8 warpId = ScriptReadByte(ctx); + u16 x = VarGet(ScriptReadHalfword(ctx)); + u16 y = VarGet(ScriptReadHalfword(ctx)); + + sub_805363C(mapGroup, mapNum, warpId, x, y); return FALSE; } bool8 ScrCmd_getplayerxy(struct ScriptContext *ctx) { - u16 *ptr1 = GetVarPointer(ScriptReadHalfword(ctx)); - u16 *ptr2 = GetVarPointer(ScriptReadHalfword(ctx)); - *ptr1 = gSaveBlock1.pos.x; - *ptr2 = gSaveBlock1.pos.y; + u16 *pX = GetVarPointer(ScriptReadHalfword(ctx)); + u16 *pY = GetVarPointer(ScriptReadHalfword(ctx)); + + *pX = gSaveBlock1.pos.x; + *pY = gSaveBlock1.pos.y; return FALSE; } @@ -809,13 +865,13 @@ bool8 ScrCmd_countpokemon(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_playsfx(struct ScriptContext *ctx) +bool8 ScrCmd_playse(struct ScriptContext *ctx) { PlaySE(ScriptReadHalfword(ctx)); return FALSE; } -bool8 s30_music_check_asm() +static bool8 WaitForSoundEffectFinish() { if (!IsSEPlaying()) return TRUE; @@ -823,222 +879,238 @@ bool8 s30_music_check_asm() return FALSE; } -bool8 ScrCmd_checksound(struct ScriptContext *ctx) +bool8 ScrCmd_waitse(struct ScriptContext *ctx) { - SetupNativeScript(ctx, s30_music_check_asm); + SetupNativeScript(ctx, WaitForSoundEffectFinish); return TRUE; } -bool8 ScrCmd_fanfare(struct ScriptContext *ctx) +bool8 ScrCmd_playfanfare(struct ScriptContext *ctx) { PlayFanfare(ScriptReadHalfword(ctx)); return FALSE; } -bool8 s32_fanfare_wait_asm() +static bool8 WaitForFanfareFinish() { return IsFanfareTaskInactive(); } bool8 ScrCmd_waitfanfare(struct ScriptContext *ctx) { - SetupNativeScript(ctx, s32_fanfare_wait_asm); + SetupNativeScript(ctx, WaitForFanfareFinish); return TRUE; } -bool8 ScrCmd_playmusic(struct ScriptContext *ctx) +bool8 ScrCmd_playbgm(struct ScriptContext *ctx) { u16 songId = ScriptReadHalfword(ctx); bool8 val = ScriptReadByte(ctx); + if (val == TRUE) - sav1_set_battle_music_maybe(songId); + Overworld_SetSavedMusic(songId); PlayNewMapMusic(songId); return FALSE; } -bool8 ScrCmd_playmusicbattle(struct ScriptContext *ctx) +bool8 ScrCmd_savebgm(struct ScriptContext *ctx) { - sav1_set_battle_music_maybe(ScriptReadHalfword(ctx)); + Overworld_SetSavedMusic(ScriptReadHalfword(ctx)); return FALSE; } -bool8 ScrCmd_fadedefault(struct ScriptContext *ctx) +bool8 ScrCmd_fadedefaultbgm(struct ScriptContext *ctx) { - sub_8053F84(); + Overworld_ChangeMusicToDefault(); return FALSE; } -bool8 ScrCmd_fademusic(struct ScriptContext *ctx) +bool8 ScrCmd_fadenewbgm(struct ScriptContext *ctx) { - sub_8053FB0(ScriptReadHalfword(ctx)); + Overworld_ChangeMusicTo(ScriptReadHalfword(ctx)); return FALSE; } -bool8 ScrCmd_fadeout(struct ScriptContext *ctx) +bool8 ScrCmd_fadeoutbgm(struct ScriptContext *ctx) { - u8 val = ScriptReadByte(ctx); - if (val) - FadeOutBGMTemporarily(4 * val); + u8 speed = ScriptReadByte(ctx); + + if (speed != 0) + FadeOutBGMTemporarily(4 * speed); else FadeOutBGMTemporarily(4); SetupNativeScript(ctx, IsBGMPausedOrStopped); return TRUE; } -bool8 ScrCmd_fadein(struct ScriptContext *ctx) +bool8 ScrCmd_fadeinbgm(struct ScriptContext *ctx) { - u8 val = ScriptReadByte(ctx); - if (val) - FadeInBGM(4 * val); + u8 speed = ScriptReadByte(ctx); + + if (speed != 0) + FadeInBGM(4 * speed); else FadeInBGM(4); return FALSE; } -bool8 ScrCmd_move(struct ScriptContext *ctx) +bool8 ScrCmd_applymovement(struct ScriptContext *ctx) { - u16 v1 = VarGet(ScriptReadHalfword(ctx)); - void *v2 = (void *)ScriptReadWord(ctx); - exec_movement(v1, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup, v2); - gUnknown_0202E8B6 = v1; + u16 localId = VarGet(ScriptReadHalfword(ctx)); + void *movementScript = (void *)ScriptReadWord(ctx); + + ScriptMovement_StartObjectMovementScript(localId, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup, movementScript); + sMovingNpcId = localId; return FALSE; } -bool8 ScrCmd_movecoords(struct ScriptContext *ctx) +bool8 ScrCmd_applymovement_at(struct ScriptContext *ctx) { - u16 v1 = VarGet(ScriptReadHalfword(ctx)); - void *v2 = (void *)ScriptReadWord(ctx); - u8 v3 = ScriptReadByte(ctx); - u8 v4 = ScriptReadByte(ctx); - exec_movement(v1, v4, v3, v2); - gUnknown_0202E8B6 = v1; + u16 localId = VarGet(ScriptReadHalfword(ctx)); + void *movementScript = (void *)ScriptReadWord(ctx); + u8 mapGroup = ScriptReadByte(ctx); + u8 mapNum = ScriptReadByte(ctx); + + ScriptMovement_StartObjectMovementScript(localId, mapNum, mapGroup, movementScript); + sMovingNpcId = localId; return FALSE; } -bool8 s51a_0806B288(void) +static bool8 WaitForMovementFinish(void) { - return sub_80A212C(gUnknown_0202E8B6, gUnknown_0202E8BA, gUnknown_0202E8B8); + return ScriptMovement_IsObjectMovementFinished(sMovingNpcId, sMovingNpcMapId, sMovingNpcMapBank); } -bool8 ScrCmd_waitmove(struct ScriptContext *ctx) +bool8 ScrCmd_waitmovement(struct ScriptContext *ctx) { - u16 v1 = VarGet(ScriptReadHalfword(ctx)); - if (v1) - gUnknown_0202E8B6 = v1; - gUnknown_0202E8B8 = gSaveBlock1.location.mapGroup; - gUnknown_0202E8BA = gSaveBlock1.location.mapNum; - SetupNativeScript(ctx, s51a_0806B288); + u16 localId = VarGet(ScriptReadHalfword(ctx)); + + if (localId != 0) + sMovingNpcId = localId; + sMovingNpcMapBank = gSaveBlock1.location.mapGroup; + sMovingNpcMapId = gSaveBlock1.location.mapNum; + SetupNativeScript(ctx, WaitForMovementFinish); return TRUE; } -bool8 ScrCmd_waitmovexy(struct ScriptContext *ctx) +bool8 ScrCmd_waitmovement_at(struct ScriptContext *ctx) { - u16 v1 = VarGet(ScriptReadHalfword(ctx)); - u8 v2; - u8 v3; + u16 localId = VarGet(ScriptReadHalfword(ctx)); + u8 mapBank; + u8 mapId; - if (v1) - gUnknown_0202E8B6 = v1; - - v2 = ScriptReadByte(ctx); - v3 = ScriptReadByte(ctx); - gUnknown_0202E8B8 = v2; - gUnknown_0202E8BA = v3; - SetupNativeScript(ctx, s51a_0806B288); + if (localId != 0) + sMovingNpcId = localId; + mapBank = ScriptReadByte(ctx); + mapId = ScriptReadByte(ctx); + sMovingNpcMapBank = mapBank; + sMovingNpcMapId = mapId; + SetupNativeScript(ctx, WaitForMovementFinish); return TRUE; } -bool8 ScrCmd_disappear(struct ScriptContext *ctx) +bool8 ScrCmd_removeobject(struct ScriptContext *ctx) { - u16 objectId = VarGet(ScriptReadHalfword(ctx)); - RemoveFieldObjectByLocalIdAndMap(objectId, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup); + u16 localId = VarGet(ScriptReadHalfword(ctx)); + + RemoveFieldObjectByLocalIdAndMap(localId, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup); return FALSE; } -bool8 ScrCmd_disappearxy(struct ScriptContext *ctx) +bool8 ScrCmd_removeobject_at(struct ScriptContext *ctx) { u16 objectId = VarGet(ScriptReadHalfword(ctx)); u8 mapGroup = ScriptReadByte(ctx); u8 mapNum = ScriptReadByte(ctx); + RemoveFieldObjectByLocalIdAndMap(objectId, mapNum, mapGroup); return FALSE; } -bool8 ScrCmd_reappear(struct ScriptContext *ctx) +bool8 ScrCmd_addobject(struct ScriptContext *ctx) { u16 objectId = VarGet(ScriptReadHalfword(ctx)); + show_sprite(objectId, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup); return FALSE; } -bool8 ScrCmd_reappearxy(struct ScriptContext *ctx) +bool8 ScrCmd_addobject_at(struct ScriptContext *ctx) { u16 objectId = VarGet(ScriptReadHalfword(ctx)); u8 mapGroup = ScriptReadByte(ctx); u8 mapNum = ScriptReadByte(ctx); + show_sprite(objectId, mapNum, mapGroup); return FALSE; } -bool8 ScrCmd_movesprite(struct ScriptContext *ctx) +bool8 ScrCmd_setobjectxy(struct ScriptContext *ctx) { - u16 v1 = VarGet(ScriptReadHalfword(ctx)); - u16 v2 = VarGet(ScriptReadHalfword(ctx)); - u32 v3 = VarGet(ScriptReadHalfword(ctx)); - sub_805C0F8(v1, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup, v2, v3); + u16 localId = VarGet(ScriptReadHalfword(ctx)); + u16 x = VarGet(ScriptReadHalfword(ctx)); + u16 y = VarGet(ScriptReadHalfword(ctx)); + + sub_805C0F8(localId, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup, x, y); return FALSE; } -bool8 ScrCmd_movespriteperm(struct ScriptContext *ctx) +bool8 ScrCmd_setobjectxyperm(struct ScriptContext *ctx) { - u16 v1 = VarGet(ScriptReadHalfword(ctx)); - u16 v2 = VarGet(ScriptReadHalfword(ctx)); - u32 v3 = VarGet(ScriptReadHalfword(ctx)); - update_saveblock1_field_object_coords(v1, v2, v3); + u16 localId = VarGet(ScriptReadHalfword(ctx)); + u16 x = VarGet(ScriptReadHalfword(ctx)); + u16 y = VarGet(ScriptReadHalfword(ctx)); + + Overworld_SetMapObjTemplateCoords(localId, x, y); return FALSE; } -bool8 ScrCmd_moveoffscreen(struct ScriptContext *ctx) +bool8 ScrCmd_moveobjectoffscreen(struct ScriptContext *ctx) { - u16 v1 = VarGet(ScriptReadHalfword(ctx)); - sub_805C78C(v1, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup); + u16 localId = VarGet(ScriptReadHalfword(ctx)); + + sub_805C78C(localId, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup); return FALSE; } -bool8 ScrCmd_spritevisible(struct ScriptContext *ctx) +bool8 ScrCmd_showobject(struct ScriptContext *ctx) { - u16 v1 = VarGet(ScriptReadHalfword(ctx)); - u8 v2 = ScriptReadByte(ctx); - u8 v3 = ScriptReadByte(ctx); - npc_by_local_id_and_map_set_field_1_bit_x20(v1, v3, v2, 0); + u16 localId = VarGet(ScriptReadHalfword(ctx)); + u8 mapGroup = ScriptReadByte(ctx); + u8 mapNum = ScriptReadByte(ctx); + + npc_by_local_id_and_map_set_field_1_bit_x20(localId, mapNum, mapGroup, 0); return FALSE; } -bool8 ScrCmd_spriteinvisible(struct ScriptContext *ctx) +bool8 ScrCmd_hideobject(struct ScriptContext *ctx) { - u16 v1 = VarGet(ScriptReadHalfword(ctx)); - u8 v2 = ScriptReadByte(ctx); - u8 v3 = ScriptReadByte(ctx); - npc_by_local_id_and_map_set_field_1_bit_x20(v1, v3, v2, 1); + u16 localId = VarGet(ScriptReadHalfword(ctx)); + u8 mapGroup = ScriptReadByte(ctx); + u8 mapNum = ScriptReadByte(ctx); + + npc_by_local_id_and_map_set_field_1_bit_x20(localId, mapNum, mapGroup, 1); return FALSE; } -bool8 ScrCmd_spritelevelup(struct ScriptContext *ctx) +bool8 ScrCmd_setobjectpriority(struct ScriptContext *ctx) { - u16 v1 = VarGet(ScriptReadHalfword(ctx)); - u8 v2 = ScriptReadByte(ctx); - u8 v3 = ScriptReadByte(ctx); - u8 v4 = ScriptReadByte(ctx); - sub_805BCF0(v1, v3, v2, v4 + 83); + u16 localId = VarGet(ScriptReadHalfword(ctx)); + u8 mapGroup = ScriptReadByte(ctx); + u8 mapNum = ScriptReadByte(ctx); + u8 priority = ScriptReadByte(ctx); + + sub_805BCF0(localId, mapNum, mapGroup, priority + 83); return FALSE; } -bool8 ScrCmd_restorespritelevel(struct ScriptContext *ctx) +bool8 ScrCmd_resetobjectpriority(struct ScriptContext *ctx) { - u16 v1 = VarGet(ScriptReadHalfword(ctx)); - u8 v2 = ScriptReadByte(ctx); - u8 v3 = ScriptReadByte(ctx); - sub_805BD48(v1, v3, v2); + u16 localId = VarGet(ScriptReadHalfword(ctx)); + u8 mapGroup = ScriptReadByte(ctx); + u8 mapNum = ScriptReadByte(ctx); + + sub_805BD48(localId, mapNum, mapGroup); return FALSE; } @@ -1052,39 +1124,43 @@ bool8 ScrCmd_faceplayer(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_spriteface(struct ScriptContext *ctx) +bool8 ScrCmd_turnobject(struct ScriptContext *ctx) { - u16 v1 = VarGet(ScriptReadHalfword(ctx)); - u8 v2 = ScriptReadByte(ctx); - FieldObjectTurnByLocalIdAndMap(v1, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup, v2); + u16 localId = VarGet(ScriptReadHalfword(ctx)); + u8 direction = ScriptReadByte(ctx); + + FieldObjectTurnByLocalIdAndMap(localId, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup, direction); return FALSE; } -bool8 ScrCmd_spritebehave(struct ScriptContext *ctx) +bool8 ScrCmd_setobjectmovementtype(struct ScriptContext *ctx) { - u16 v1 = VarGet(ScriptReadHalfword(ctx)); - u8 v2 = ScriptReadByte(ctx); - update_saveblock1_field_object_movement_behavior(v1, v2); + u16 localId = VarGet(ScriptReadHalfword(ctx)); + u8 movementType = ScriptReadByte(ctx); + + Overworld_SetMapObjTemplateMovementType(localId, movementType); return FALSE; } -bool8 ScrCmd_createvsprite(struct ScriptContext *ctx) +bool8 ScrCmd_createvobject(struct ScriptContext *ctx) +{ + u8 graphicsId = ScriptReadByte(ctx); + u8 v2 = ScriptReadByte(ctx); + u16 x = VarGet(ScriptReadHalfword(ctx)); + u32 y = VarGet(ScriptReadHalfword(ctx)); + u8 elevation = ScriptReadByte(ctx); + u8 direction = ScriptReadByte(ctx); + + sub_805B410(graphicsId, v2, x, y, elevation, direction); + return FALSE; +} + +bool8 ScrCmd_turnvobject(struct ScriptContext *ctx) { u8 v1 = ScriptReadByte(ctx); - u8 v2 = ScriptReadByte(ctx); - u16 v3 = VarGet(ScriptReadHalfword(ctx)); - u32 v4 = VarGet(ScriptReadHalfword(ctx)); - u8 v5 = ScriptReadByte(ctx); - u8 v6 = ScriptReadByte(ctx); - sub_805B410(v1, v2, v3, v4, v5, v6); - return FALSE; -} + u8 direction = ScriptReadByte(ctx); -bool8 ScrCmd_vspriteface(struct ScriptContext *ctx) -{ - u8 v1 = ScriptReadByte(ctx); - u8 v2 = ScriptReadByte(ctx); - sub_8064990(v1, v2); + sub_8064990(v1, direction); return FALSE; } @@ -1112,7 +1188,7 @@ bool8 ScrCmd_lock(struct ScriptContext *ctx) { if (gMapObjects[gSelectedMapObject].active) { - sub_8064DD8(); + LockSelectedMapObject(); SetupNativeScript(ctx, sub_8064DB4); } else @@ -1120,7 +1196,6 @@ bool8 ScrCmd_lock(struct ScriptContext *ctx) ScriptFreezeMapObjects(); SetupNativeScript(ctx, sub_8064CFC); } - return TRUE; } } @@ -1154,34 +1229,36 @@ bool8 ScrCmd_release(struct ScriptContext *ctx) bool8 ScrCmd_message(struct ScriptContext *ctx) { u8 *msg = (u8 *)ScriptReadWord(ctx); - if (!msg) + + if (msg == NULL) msg = (u8 *)ctx->data[0]; ShowFieldMessage(msg); return FALSE; } -bool8 ScrCmd_message2(struct ScriptContext *ctx) +bool8 ScrCmd_messageautoscroll(struct ScriptContext *ctx) { u8 *msg = (u8 *)ScriptReadWord(ctx); - if (!msg) + + if (msg == NULL) msg = (u8 *)ctx->data[0]; ShowFieldAutoScrollMessage(msg); return FALSE; } -bool8 ScrCmd_waittext(struct ScriptContext *ctx) +bool8 ScrCmd_waitmessage(struct ScriptContext *ctx) { SetupNativeScript(ctx, IsFieldMessageBoxHidden); return TRUE; } -bool8 ScrCmd_closebutton(struct ScriptContext *ctx) +bool8 ScrCmd_closemessage(struct ScriptContext *ctx) { HideFieldMessageBox(); return FALSE; } -bool8 WaitForAorBPress(void) +static bool8 WaitForAorBPress(void) { if (gMain.newKeys & A_BUTTON) return TRUE; @@ -1198,9 +1275,10 @@ bool8 ScrCmd_waitbutton(struct ScriptContext *ctx) bool8 ScrCmd_yesnobox(struct ScriptContext *ctx) { - u8 v1 = ScriptReadByte(ctx); - u8 v2 = ScriptReadByte(ctx); - if (yes_no_box(v1, v2) == 1) + u8 left = ScriptReadByte(ctx); + u8 top = ScriptReadByte(ctx); + + if (ScriptMenu_YesNo(left, top) == TRUE) { ScriptContext1_Stop(); return TRUE; @@ -1213,11 +1291,12 @@ bool8 ScrCmd_yesnobox(struct ScriptContext *ctx) bool8 ScrCmd_multichoice(struct ScriptContext *ctx) { - u8 v1 = ScriptReadByte(ctx); - u8 v2 = ScriptReadByte(ctx); - u8 v3 = ScriptReadByte(ctx); - u8 v4 = ScriptReadByte(ctx); - if (sub_80B5054(v1, v2, v3, v4) == 1) + u8 left = ScriptReadByte(ctx); + u8 top = ScriptReadByte(ctx); + u8 multichoiceId = ScriptReadByte(ctx); + u8 ignoreBPress = ScriptReadByte(ctx); + + if (ScriptMenu_Multichoice(left, top, multichoiceId, ignoreBPress) == TRUE) { ScriptContext1_Stop(); return TRUE; @@ -1228,14 +1307,15 @@ bool8 ScrCmd_multichoice(struct ScriptContext *ctx) } } -bool8 ScrCmd_multichoicedef(struct ScriptContext *ctx) +bool8 ScrCmd_multichoicedefault(struct ScriptContext *ctx) { - u8 v1 = ScriptReadByte(ctx); - u8 v2 = ScriptReadByte(ctx); - u8 v3 = ScriptReadByte(ctx); - u8 v4 = ScriptReadByte(ctx); - u8 v5 = ScriptReadByte(ctx); - if (sub_80B50B0(v1, v2, v3, v5, v4) == 1) + u8 left = ScriptReadByte(ctx); + u8 top = ScriptReadByte(ctx); + u8 multichoiceId = ScriptReadByte(ctx); + u8 defaultChoice = ScriptReadByte(ctx); + u8 ignoreBPress = ScriptReadByte(ctx); + + if (ScriptMenu_MultichoiceWithDefault(left, top, multichoiceId, ignoreBPress, defaultChoice) == TRUE) { ScriptContext1_Stop(); return TRUE; @@ -1246,24 +1326,26 @@ bool8 ScrCmd_multichoicedef(struct ScriptContext *ctx) } } -bool8 ScrCmd_showbox(struct ScriptContext *ctx) +bool8 ScrCmd_drawbox(struct ScriptContext *ctx) { - u8 v1 = ScriptReadByte(ctx); - u8 v2 = ScriptReadByte(ctx); - u8 v3 = ScriptReadByte(ctx); - u8 v4 = ScriptReadByte(ctx); - MenuDrawTextWindow(v1, v2, v3, v4); + u8 left = ScriptReadByte(ctx); + u8 top = ScriptReadByte(ctx); + u8 right = ScriptReadByte(ctx); + u8 bottom = ScriptReadByte(ctx); + + MenuDrawTextWindow(left, top, right, bottom); return FALSE; } -bool8 ScrCmd_multichoicerow(struct ScriptContext *ctx) +bool8 ScrCmd_multichoicegrid(struct ScriptContext *ctx) { - u8 v1 = ScriptReadByte(ctx); - u8 v2 = ScriptReadByte(ctx); - u8 v3 = ScriptReadByte(ctx); - u8 v4 = ScriptReadByte(ctx); - u8 v5 = ScriptReadByte(ctx); - if (sub_80B5578(v1, v2, v3, v5, v4) == 1) + u8 left = ScriptReadByte(ctx); + u8 top = ScriptReadByte(ctx); + u8 multichoiceId = ScriptReadByte(ctx); + u8 numColumns = ScriptReadByte(ctx); + u8 ignoreBPress = ScriptReadByte(ctx); + + if (ScriptMenu_MultichoiceGrid(left, top, multichoiceId, ignoreBPress, numColumns) == TRUE) { ScriptContext1_Stop(); return TRUE; @@ -1274,23 +1356,26 @@ bool8 ScrCmd_multichoicerow(struct ScriptContext *ctx) } } -bool8 ScrCmd_hidebox(struct ScriptContext *ctx) +bool8 ScrCmd_erasebox(struct ScriptContext *ctx) { - u8 v1 = ScriptReadByte(ctx); - u8 v2 = ScriptReadByte(ctx); - u8 v3 = ScriptReadByte(ctx); - u8 v4 = ScriptReadByte(ctx); - MenuZeroFillWindowRect(v1, v2, v3, v4); + u8 left = ScriptReadByte(ctx); + u8 top = ScriptReadByte(ctx); + u8 right = ScriptReadByte(ctx); + u8 bottom = ScriptReadByte(ctx); + + MenuZeroFillWindowRect(left, top, right, bottom); return FALSE; } -bool8 ScrCmd_clearbox(struct ScriptContext *ctx) +// unused +bool8 ScrCmd_drawboxtext(struct ScriptContext *ctx) { - u8 v1 = ScriptReadByte(ctx); - u8 v2 = ScriptReadByte(ctx); - u8 v3 = ScriptReadByte(ctx); - u8 v4 = ScriptReadByte(ctx); - if (Multichoice(v1, v2, v3, v4) == 1) + u8 left = ScriptReadByte(ctx); + u8 top = ScriptReadByte(ctx); + u8 multichoiceId = ScriptReadByte(ctx); + u8 ignoreBPress = ScriptReadByte(ctx); + + if (Multichoice(left, top, multichoiceId, ignoreBPress) == TRUE) { ScriptContext1_Stop(); return TRUE; @@ -1301,28 +1386,30 @@ bool8 ScrCmd_clearbox(struct ScriptContext *ctx) } } -bool8 ScrCmd_showpokepic(struct ScriptContext *ctx) +bool8 ScrCmd_drawpokepic(struct ScriptContext *ctx) { - u16 v1 = VarGet(ScriptReadHalfword(ctx)); - u8 v2 = ScriptReadByte(ctx); - u8 v3 = ScriptReadByte(ctx); - sub_80B58C4(v1, v2, v3); + u16 species = VarGet(ScriptReadHalfword(ctx)); + u8 x = ScriptReadByte(ctx); + u8 y = ScriptReadByte(ctx); + + ScriptMenu_ShowPokemonPic(species, x, y); return FALSE; } -bool8 ScrCmd_hidepokepic(struct ScriptContext *ctx) +bool8 ScrCmd_erasepokepic(struct ScriptContext *ctx) { - void *func = picbox_close(); - if (!func) - return FALSE; + bool8 (*func)(void) = ScriptMenu_GetPicboxWaitFunc(); + if (func == NULL) + return FALSE; SetupNativeScript(ctx, func); return TRUE; } -bool8 ScrCmd_showcontestwinner(struct ScriptContext *ctx) +bool8 ScrCmd_drawcontestwinner(struct ScriptContext *ctx) { u8 v1 = ScriptReadByte(ctx); + if (v1) sub_8106630(v1); ShowContestWinner(); @@ -1330,9 +1417,10 @@ bool8 ScrCmd_showcontestwinner(struct ScriptContext *ctx) return TRUE; } -bool8 ScrCmd_braillemsg(struct ScriptContext *ctx) +bool8 ScrCmd_braillemessage(struct ScriptContext *ctx) { u8 *ptr = (u8 *)ScriptReadWord(ctx); + u8 v2 = ptr[0]; u8 v3 = ptr[1]; u8 v4 = ptr[2]; @@ -1345,24 +1433,27 @@ bool8 ScrCmd_braillemsg(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_vtext(struct ScriptContext *ctx) +bool8 ScrCmd_vmessage(struct ScriptContext *ctx) { u32 v1 = ScriptReadWord(ctx); + ShowFieldMessage((u8 *)(v1 - gUnknown_0202E8B0)); return FALSE; } -bool8 ScrCmd_bufferpoke(struct ScriptContext *ctx) +bool8 ScrCmd_getspeciesname(struct ScriptContext *ctx) { u8 stringVarIndex = ScriptReadByte(ctx); u16 species = VarGet(ScriptReadHalfword(ctx)); + StringCopy(sScriptStringVars[stringVarIndex], gSpeciesNames[species]); return FALSE; } -bool8 ScrCmd_bufferfirstpoke(struct ScriptContext *ctx) +bool8 ScrCmd_getfirstpartypokename(struct ScriptContext *ctx) { u8 stringVarIndex = ScriptReadByte(ctx); + u8 *dest = sScriptStringVars[stringVarIndex]; u8 partyIndex = GetLeadMonIndex(); u32 species = GetMonData(&gPlayerParty[partyIndex], MON_DATA_SPECIES, NULL); @@ -1370,113 +1461,126 @@ bool8 ScrCmd_bufferfirstpoke(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_bufferpartypoke(struct ScriptContext *ctx) +bool8 ScrCmd_getpartypokename(struct ScriptContext *ctx) { u8 stringVarIndex = ScriptReadByte(ctx); u16 partyIndex = VarGet(ScriptReadHalfword(ctx)); + GetMonData(&gPlayerParty[partyIndex], MON_DATA_NICKNAME, sScriptStringVars[stringVarIndex]); StringGetEnd10(sScriptStringVars[stringVarIndex]); return FALSE; } -bool8 ScrCmd_bufferitem(struct ScriptContext *ctx) +bool8 ScrCmd_getitemname(struct ScriptContext *ctx) { u8 stringVarIndex = ScriptReadByte(ctx); u16 itemId = VarGet(ScriptReadHalfword(ctx)); + CopyItemName(itemId, sScriptStringVars[stringVarIndex]); return FALSE; } -bool8 ScrCmd_bufferdecor(struct ScriptContext *ctx) +bool8 ScrCmd_getdecorname(struct ScriptContext *ctx) { u8 stringVarIndex = ScriptReadByte(ctx); u16 decorId = VarGet(ScriptReadHalfword(ctx)); + StringCopy(sScriptStringVars[stringVarIndex], gDecorations[decorId].name); return FALSE; } -bool8 ScrCmd_bufferattack(struct ScriptContext *ctx) +bool8 ScrCmd_getmovename(struct ScriptContext *ctx) { u8 stringVarIndex = ScriptReadByte(ctx); u16 moveId = VarGet(ScriptReadHalfword(ctx)); + StringCopy(sScriptStringVars[stringVarIndex], gMoveNames[moveId]); return FALSE; } -bool8 ScrCmd_buffernum(struct ScriptContext *ctx) +bool8 ScrCmd_getnumberstring(struct ScriptContext *ctx) { u8 stringVarIndex = ScriptReadByte(ctx); u16 v1 = VarGet(ScriptReadHalfword(ctx)); u8 v2 = sub_80BF0B8(v1); + ConvertIntToDecimalStringN(sScriptStringVars[stringVarIndex], v1, 0, v2); return FALSE; } -bool8 ScrCmd_bufferstd(struct ScriptContext *ctx) +bool8 ScrCmd_getstdstring(struct ScriptContext *ctx) { u8 stringVarIndex = ScriptReadByte(ctx); u16 index = VarGet(ScriptReadHalfword(ctx)); - StringCopy(sScriptStringVars[stringVarIndex], gUnknown_083CE048[index].text); + + StringCopy(sScriptStringVars[stringVarIndex], gUnknown_083CE048[index]); return FALSE; } -bool8 ScrCmd_buffertext(struct ScriptContext *ctx) +bool8 ScrCmd_getstring(struct ScriptContext *ctx) { u8 stringVarIndex = ScriptReadByte(ctx); u8 *text = (u8 *)ScriptReadWord(ctx); + StringCopy(sScriptStringVars[stringVarIndex], text); return FALSE; } -bool8 ScrCmd_vloadptr(struct ScriptContext *ctx) +bool8 ScrCmd_vloadword(struct ScriptContext *ctx) { u8 *ptr = (u8 *)(ScriptReadWord(ctx) - gUnknown_0202E8B0); + StringExpandPlaceholders(gStringVar4, ptr); return FALSE; } -bool8 ScrCmd_vbuffer(struct ScriptContext *ctx) +bool8 ScrCmd_vgetstring(struct ScriptContext *ctx) { u8 stringVarIndex = ScriptReadByte(ctx); u32 addr = ScriptReadWord(ctx); + u8 *src = (u8 *)(addr - gUnknown_0202E8B0); u8 *dest = sScriptStringVars[stringVarIndex]; StringCopy(dest, src); return FALSE; } -bool8 ScrCmd_givepokemon(struct ScriptContext *ctx) +bool8 ScrCmd_givepoke(struct ScriptContext *ctx) { - u16 v3 = VarGet(ScriptReadHalfword(ctx)); - u8 v5 = ScriptReadByte(ctx); - u16 v7 = VarGet(ScriptReadHalfword(ctx)); - u32 v8 = ScriptReadWord(ctx); - u32 v9 = ScriptReadWord(ctx); - u8 v10 = ScriptReadByte(ctx); - gScriptResult = ScriptGiveMon(v3, v5, v7, v8, v9, v10); + u16 species = VarGet(ScriptReadHalfword(ctx)); + u8 level = ScriptReadByte(ctx); + u16 item = VarGet(ScriptReadHalfword(ctx)); + u32 unkParam1 = ScriptReadWord(ctx); + u32 unkParam2 = ScriptReadWord(ctx); + u8 unkParam3 = ScriptReadByte(ctx); + + gScriptResult = ScriptGiveMon(species, level, item, unkParam1, unkParam2, unkParam3); return FALSE; } bool8 ScrCmd_giveegg(struct ScriptContext *ctx) { - u16 value = VarGet(ScriptReadHalfword(ctx)); - gScriptResult = ScriptGiveEgg(value); + u16 species = VarGet(ScriptReadHalfword(ctx)); + + gScriptResult = ScriptGiveEgg(species); return FALSE; } bool8 ScrCmd_setpokemove(struct ScriptContext *ctx) { - u8 v2 = ScriptReadByte(ctx); - u8 v3 = ScriptReadByte(ctx); - u16 v4 = ScriptReadHalfword(ctx); - ScriptSetMonMoveSlot(v2, v4, v3); + u8 partyIndex = ScriptReadByte(ctx); + u8 slot = ScriptReadByte(ctx); + u16 move = ScriptReadHalfword(ctx); + + ScriptSetMonMoveSlot(partyIndex, move, slot); return FALSE; } -bool8 ScrCmd_checkattack(struct ScriptContext *ctx) +bool8 ScrCmd_checkpokemove(struct ScriptContext *ctx) { u8 i; u16 moveId = ScriptReadHalfword(ctx); + gScriptResult = 6; for (i = 0; i < 6; i++) { @@ -1498,17 +1602,19 @@ bool8 ScrCmd_givemoney(struct ScriptContext *ctx) { u32 amount = ScriptReadWord(ctx); u8 ignore = ScriptReadByte(ctx); + if (!ignore) - sub_80B79B8(&gSaveBlock1.money, amount); + AddMoney(&gSaveBlock1.money, amount); return FALSE; } -bool8 ScrCmd_paymoney(struct ScriptContext *ctx) +bool8 ScrCmd_takemoney(struct ScriptContext *ctx) { u32 amount = ScriptReadWord(ctx); u8 ignore = ScriptReadByte(ctx); + if (!ignore) - sub_80B79E0(&gSaveBlock1.money, amount); + RemoveMoney(&gSaveBlock1.money, amount); return FALSE; } @@ -1516,120 +1622,131 @@ bool8 ScrCmd_checkmoney(struct ScriptContext *ctx) { u32 amount = ScriptReadWord(ctx); u8 ignore = ScriptReadByte(ctx); + if (!ignore) gScriptResult = IsEnoughMoney(gSaveBlock1.money, amount); return FALSE; } -bool8 ScrCmd_showmoney(struct ScriptContext *ctx) +bool8 ScrCmd_showmoneybox(struct ScriptContext *ctx) { - u8 v2 = ScriptReadByte(ctx); - u8 v3 = ScriptReadByte(ctx); + u8 x = ScriptReadByte(ctx); + u8 y = ScriptReadByte(ctx); u8 ignore = ScriptReadByte(ctx); + if (!ignore) - sub_80B7C14(gSaveBlock1.money, v2, v3); + OpenMoneyWindow(gSaveBlock1.money, x, y); return FALSE; } -bool8 ScrCmd_hidemoney(struct ScriptContext *ctx) +bool8 ScrCmd_hidemoneybox(struct ScriptContext *ctx) { - u8 v2 = ScriptReadByte(ctx); - u8 v3 = ScriptReadByte(ctx); - RemoveMoneyLabelObject(v2, v3); + u8 x = ScriptReadByte(ctx); + u8 y = ScriptReadByte(ctx); + + CloseMoneyWindow(x, y); return FALSE; } -bool8 ScrCmd_updatemoney(struct ScriptContext *ctx) +bool8 ScrCmd_updatemoneybox(struct ScriptContext *ctx) { - u8 v2 = ScriptReadByte(ctx); - u8 v3 = ScriptReadByte(ctx); + u8 x = ScriptReadByte(ctx); + u8 y = ScriptReadByte(ctx); u8 ignore = ScriptReadByte(ctx); + if (!ignore) - sub_80B7BEC(gSaveBlock1.money, v2, v3); + UpdateMoneyWindow(gSaveBlock1.money, x, y); return FALSE; } -bool8 ScrCmd_showcoins(struct ScriptContext *ctx) +bool8 ScrCmd_showcoinsbox(struct ScriptContext *ctx) { - u8 v2 = ScriptReadByte(ctx); - u8 v3 = ScriptReadByte(ctx); - ShowCoinsWindow(gSaveBlock1.coins, v2, v3); + u8 x = ScriptReadByte(ctx); + u8 y = ScriptReadByte(ctx); + + ShowCoinsWindow(gSaveBlock1.coins, x, y); return FALSE; } -bool8 ScrCmd_hidecoins(struct ScriptContext *ctx) +bool8 ScrCmd_hidecoinsbox(struct ScriptContext *ctx) { - u8 v2 = ScriptReadByte(ctx); - u8 v3 = ScriptReadByte(ctx); - HideCoinsWindow(v2, v3); + u8 x = ScriptReadByte(ctx); + u8 y = ScriptReadByte(ctx); + + HideCoinsWindow(x, y); return FALSE; } -bool8 ScrCmd_updatecoins(struct ScriptContext *ctx) +bool8 ScrCmd_updatecoinsbox(struct ScriptContext *ctx) { - u8 v2 = ScriptReadByte(ctx); - u8 v3 = ScriptReadByte(ctx); - UpdateCoinsWindow(gSaveBlock1.coins, v2, v3); + u8 x = ScriptReadByte(ctx); + u8 y = ScriptReadByte(ctx); + + UpdateCoinsWindow(gSaveBlock1.coins, x, y); return FALSE; } bool8 ScrCmd_trainerbattle(struct ScriptContext *ctx) { - ctx->scriptPtr = TrainerBattleConfigure(ctx->scriptPtr); + ctx->scriptPtr = BattleSetup_ConfigureTrainerBattle(ctx->scriptPtr); return FALSE; } -bool8 ScrCmd_reptrainerbattle(struct ScriptContext *ctx) +bool8 ScrCmd_battlebegin(struct ScriptContext *ctx) { - sub_80825E4(); + BattleSetup_StartTrainerBattle(); return TRUE; } -bool8 ScrCmd_endtrainerbattle(struct ScriptContext *ctx) +bool8 ScrCmd_ontrainerbattleend(struct ScriptContext *ctx) { - ctx->scriptPtr = sub_80826E8(); + ctx->scriptPtr = BattleSetup_GetScriptAddrAfterBattle(); return FALSE; } -bool8 ScrCmd_endtrainerbattle2(struct ScriptContext *ctx) +bool8 ScrCmd_ontrainerbattleendgoto(struct ScriptContext *ctx) { - ctx->scriptPtr = sub_8082700(); + ctx->scriptPtr = BattleSetup_GetTrainerPostBattleScript(); return FALSE; } bool8 ScrCmd_checktrainerflag(struct ScriptContext *ctx) { u16 index = VarGet(ScriptReadHalfword(ctx)); - ctx->comparisonResult = trainer_flag_check(index); - return FALSE; -} -bool8 ScrCmd_cleartrainerflag(struct ScriptContext *ctx) -{ - u16 index = VarGet(ScriptReadHalfword(ctx)); - trainer_flag_set(index); + ctx->comparisonResult = HasTrainerAlreadyBeenFought(index); return FALSE; } bool8 ScrCmd_settrainerflag(struct ScriptContext *ctx) { u16 index = VarGet(ScriptReadHalfword(ctx)); + + trainer_flag_set(index); + return FALSE; +} + +bool8 ScrCmd_cleartrainerflag(struct ScriptContext *ctx) +{ + u16 index = VarGet(ScriptReadHalfword(ctx)); + trainer_flag_clear(index); return FALSE; } bool8 ScrCmd_setwildbattle(struct ScriptContext *ctx) { - u16 v2 = ScriptReadHalfword(ctx); - u8 v4 = ScriptReadByte(ctx); - u16 v5 = ScriptReadHalfword(ctx); - ScriptWildBattle(v2, v4, v5); + u16 species = ScriptReadHalfword(ctx); + u8 level = ScriptReadByte(ctx); + u16 item = ScriptReadHalfword(ctx); + + CreateScriptedWildMon(species, level, item); return FALSE; } bool8 ScrCmd_dowildbattle(struct ScriptContext *ctx) { - StartBattle_ScriptedWild(); + BattleSetup_StartScriptedWildBattle(); ScriptContext1_Stop(); return TRUE; } @@ -1637,6 +1754,7 @@ bool8 ScrCmd_dowildbattle(struct ScriptContext *ctx) bool8 ScrCmd_pokemart(struct ScriptContext *ctx) { void *ptr = (void *)ScriptReadWord(ctx); + CreatePokemartMenu(ptr); ScriptContext1_Stop(); return TRUE; @@ -1645,6 +1763,7 @@ bool8 ScrCmd_pokemart(struct ScriptContext *ctx) bool8 ScrCmd_pokemartdecor(struct ScriptContext *ctx) { void *ptr = (void *)ScriptReadWord(ctx); + CreateDecorationShop1Menu(ptr); ScriptContext1_Stop(); return TRUE; @@ -1653,34 +1772,38 @@ bool8 ScrCmd_pokemartdecor(struct ScriptContext *ctx) bool8 ScrCmd_pokemartbp(struct ScriptContext *ctx) { void *ptr = (void *)ScriptReadWord(ctx); + CreateDecorationShop2Menu(ptr); ScriptContext1_Stop(); return TRUE; } -bool8 ScrCmd_pokecasino(struct ScriptContext *ctx) +bool8 ScrCmd_playslotmachine(struct ScriptContext *ctx) { u8 v2 = VarGet(ScriptReadHalfword(ctx)); + PlaySlotMachine(v2, c2_exit_to_overworld_1_continue_scripts_restart_music); ScriptContext1_Stop(); return TRUE; } -bool8 ScrCmd_event_8a(struct ScriptContext *ctx) +bool8 ScrCmd_plantberrytree(struct ScriptContext *ctx) { - u8 v2 = ScriptReadByte(ctx); - u8 v3 = ScriptReadByte(ctx); - u8 v4 = ScriptReadByte(ctx); - if (!v3) - PlantBerryTree(v2, 0, v4, FALSE); + u8 treeId = ScriptReadByte(ctx); + u8 berry = ScriptReadByte(ctx); + u8 growthStage = ScriptReadByte(ctx); + + if (berry == 0) + PlantBerryTree(treeId, 0, growthStage, FALSE); else - PlantBerryTree(v2, v3, v4, FALSE); + PlantBerryTree(treeId, berry, growthStage, FALSE); return FALSE; } -bool8 ScrCmd_event_96(struct ScriptContext *ctx) +bool8 ScrCmd_getpricereduction(struct ScriptContext *ctx) { u16 value = VarGet(ScriptReadHalfword(ctx)); + gScriptResult = GetPriceReduction(value); return FALSE; } @@ -1713,54 +1836,58 @@ bool8 ScrCmd_contestlinktransfer(struct ScriptContext *ctx) return TRUE; } -bool8 ScrCmd_doanimation(struct ScriptContext *ctx) +bool8 ScrCmd_dofieldeffect(struct ScriptContext *ctx) { u16 effectId = VarGet(ScriptReadHalfword(ctx)); - gUnknown_0202E8BC = effectId; - FieldEffectStart(gUnknown_0202E8BC); + + sFieldEffectScriptId = effectId; + FieldEffectStart(sFieldEffectScriptId); return FALSE; } -bool8 ScrCmd_setanimation(struct ScriptContext *ctx) +bool8 ScrCmd_setfieldeffect(struct ScriptContext *ctx) { - u8 v2 = ScriptReadByte(ctx); - gUnknown_0202FF84[v2] = (s16)VarGet(ScriptReadHalfword(ctx)); + u8 argNum = ScriptReadByte(ctx); + + gFieldEffectArguments[argNum] = (s16)VarGet(ScriptReadHalfword(ctx)); return FALSE; } static bool8 sub_8067B48() { - if (!FieldEffectActiveListContains(gUnknown_0202E8BC)) + if (!FieldEffectActiveListContains(sFieldEffectScriptId)) return TRUE; else return FALSE; } -bool8 ScrCmd_checkanimation(struct ScriptContext *ctx) +bool8 ScrCmd_waitfieldeffect(struct ScriptContext *ctx) { - gUnknown_0202E8BC = VarGet(ScriptReadHalfword(ctx)); + sFieldEffectScriptId = VarGet(ScriptReadHalfword(ctx)); SetupNativeScript(ctx, sub_8067B48); return TRUE; } bool8 ScrCmd_sethealplace(struct ScriptContext *ctx) { - u16 v2 = VarGet(ScriptReadHalfword(ctx)); - sub_8053588(v2); + u16 healLocationId = VarGet(ScriptReadHalfword(ctx)); + + Overworld_SetHealLocationWarp(healLocationId); return FALSE; } -bool8 ScrCmd_checkgender(struct ScriptContext *ctx) +bool8 ScrCmd_checkplayergender(struct ScriptContext *ctx) { gScriptResult = gSaveBlock2.playerGender; return FALSE; } -bool8 ScrCmd_pokecry(struct ScriptContext *ctx) +bool8 ScrCmd_playpokecry(struct ScriptContext *ctx) { - u16 v3 = VarGet(ScriptReadHalfword(ctx)); - u16 v5 = VarGet(ScriptReadHalfword(ctx)); - PlayCry5(v3, v5); + u16 species = VarGet(ScriptReadHalfword(ctx)); + u16 mode = VarGet(ScriptReadHalfword(ctx)); + + PlayCry5(species, mode); return FALSE; } @@ -1772,34 +1899,37 @@ bool8 ScrCmd_waitpokecry(struct ScriptContext *ctx) bool8 ScrCmd_setmaptile(struct ScriptContext *ctx) { - u16 v3 = VarGet(ScriptReadHalfword(ctx)); - u16 v5 = VarGet(ScriptReadHalfword(ctx)); - u16 v7 = VarGet(ScriptReadHalfword(ctx)); + u16 x = VarGet(ScriptReadHalfword(ctx)); + u16 y = VarGet(ScriptReadHalfword(ctx)); + u16 tileId = VarGet(ScriptReadHalfword(ctx)); u16 v8 = VarGet(ScriptReadHalfword(ctx)); - v3 += 7; - v5 += 7; + + x += 7; + y += 7; if (!v8) - MapGridSetMetatileIdAt(v3, v5, v7); + MapGridSetMetatileIdAt(x, y, tileId); else - MapGridSetMetatileIdAt(v3, v5, v7 | 0xC00); + MapGridSetMetatileIdAt(x, y, tileId | 0xC00); return FALSE; } -bool8 ScrCmd_setdooropened(struct ScriptContext *ctx) +bool8 ScrCmd_opendoor(struct ScriptContext *ctx) { u16 x = VarGet(ScriptReadHalfword(ctx)); u16 y = VarGet(ScriptReadHalfword(ctx)); + x += 7; y += 7; - PlaySE(sub_8058790(x, y)); + PlaySE(GetDoorSoundEffect(x, y)); FieldAnimateDoorOpen(x, y); return FALSE; } -bool8 ScrCmd_setdoorclosed(struct ScriptContext *ctx) +bool8 ScrCmd_closedoor(struct ScriptContext *ctx) { u16 x = VarGet(ScriptReadHalfword(ctx)); u16 y = VarGet(ScriptReadHalfword(ctx)); + x += 7; y += 7; FieldAnimateDoorClose(x, y); @@ -1814,43 +1944,46 @@ static bool8 IsDoorAnimationStopped() return FALSE; } -bool8 ScrCmd_doorchange(struct ScriptContext *ctx) +bool8 ScrCmd_waitdooranim(struct ScriptContext *ctx) { SetupNativeScript(ctx, IsDoorAnimationStopped); return TRUE; } -bool8 ScrCmd_setdooropened2(struct ScriptContext *ctx) +bool8 ScrCmd_setdooropen(struct ScriptContext *ctx) { u16 x = VarGet(ScriptReadHalfword(ctx)); u16 y = VarGet(ScriptReadHalfword(ctx)); + x += 7; y += 7; FieldSetDoorOpened(x, y); return FALSE; } -bool8 ScrCmd_setdoorclosed2(struct ScriptContext *ctx) +bool8 ScrCmd_setdoorclosed(struct ScriptContext *ctx) { u16 x = VarGet(ScriptReadHalfword(ctx)); u16 y = VarGet(ScriptReadHalfword(ctx)); + x += 7; y += 7; FieldSetDoorClosed(x, y); return FALSE; } -bool8 ScrCmd_event_b1(struct ScriptContext *ctx) +bool8 ScrCmd_addelevmenuitem(struct ScriptContext *ctx) { u8 v3 = ScriptReadByte(ctx); u16 v5 = VarGet(ScriptReadHalfword(ctx)); u16 v7 = VarGet(ScriptReadHalfword(ctx)); u16 v9 = VarGet(ScriptReadHalfword(ctx)); + ScriptAddElevatorMenuItem(v3, v5, v7, v9); return FALSE; } -bool8 ScrCmd_event_b2(struct ScriptContext *ctx) +bool8 ScrCmd_showelevmenu(struct ScriptContext *ctx) { ScriptShowElevatorMenu(); ScriptContext1_Stop(); @@ -1867,21 +2000,21 @@ bool8 ScrCmd_checkcoins(struct ScriptContext *ctx) bool8 ScrCmd_givecoins(struct ScriptContext *ctx) { u16 coins = VarGet(ScriptReadHalfword(ctx)); + if (GiveCoins(coins) == TRUE) gScriptResult = 0; else gScriptResult = 1; - return FALSE; } -bool8 ScrCmd_removecoins(struct ScriptContext *ctx) +bool8 ScrCmd_takecoins(struct ScriptContext *ctx) { u16 coins = VarGet(ScriptReadHalfword(ctx)); + if (TakeCoins(coins) == TRUE) gScriptResult = 0; else gScriptResult = 1; - return FALSE; } diff --git a/src/field/script_menu.c b/src/field/script_menu.c new file mode 100644 index 000000000..e25e74d8c --- /dev/null +++ b/src/field/script_menu.c @@ -0,0 +1,1178 @@ +#include "global.h" +#include "script.h" +#include "script_menu.h" +#include "event_data.h" +#include "field_effect.h" +#include "menu.h" +#include "palette.h" +#include "script.h" +#include "songs.h" +#include "sound.h" +#include "sprite.h" +#include "strings.h" +#include "task.h" + +// multichoice lists +const struct MenuAction MultichoiceList_00[] = +{ + {OtherText_Petalburg, NULL}, + {OtherText_Slateport, NULL}, + {gOtherText_CancelNoTerminator, NULL}, +}; + +const struct MenuAction MultichoiceList_02[] = +{ + {OtherText_Enter, NULL}, + {OtherText_Info3, NULL}, + {gOtherText_CancelNoTerminator, NULL}, +}; + +const struct MenuAction MultichoiceList_03[] = +{ + {OtherText_WhatsAContest, NULL}, + {OtherText_TypesOfContest, NULL}, + {OtherText_Ranks, NULL}, + {gOtherText_CancelNoTerminator, NULL}, +}; + +const struct MenuAction MultichoiceList_04[] = +{ + {OtherText_CoolContest, NULL}, + {OtherText_BeautyContest, NULL}, + {OtherText_CuteContest, NULL}, + {OtherText_SmartContest, NULL}, + {OtherText_ToughContest, NULL}, + {gOtherText_CancelNoTerminator, NULL}, +}; + +const struct MenuAction MultichoiceList_06[] = +{ + {OtherText_Decoration, NULL}, + {OtherText_PackUp, NULL}, + {OtherText_Registry, NULL}, + {gOtherText_CancelNoTerminator, NULL}, +}; + +const struct MenuAction MultichoiceList_05[] = +{ + {OtherText_Decoration, NULL}, + {OtherText_PackUp, NULL}, + {gOtherText_CancelNoTerminator, NULL}, +}; + +const struct MenuAction MultichoiceList_07[] = +{ + {OtherText_Register, NULL}, + {OtherText_Registry, NULL}, + {OtherText_Information, NULL}, + {gOtherText_CancelNoTerminator, NULL}, +}; + +const struct MenuAction MultichoiceList_12[] = +{ + {OtherText_Mach, NULL}, + {OtherText_Acro, NULL}, +}; + +const struct MenuAction MultichoiceList_13[] = +{ + {OtherText_Poison, NULL}, + {OtherText_Paralysis, NULL}, + {OtherText_Sleep, NULL}, + {OtherText_Burn, NULL}, + {OtherText_Frozen, NULL}, + {gOtherText_CancelNoTerminator, NULL}, +}; + +const struct MenuAction MultichoiceList_14[] = +{ + {OtherText_Dewford, NULL}, + {gOtherText_CancelNoTerminator, NULL}, +}; + +const struct MenuAction MultichoiceList_16[] = +{ + {OtherText_SawIt, NULL}, + {OtherText_NotYet, NULL}, +}; + +const struct MenuAction MultichoiceList_17[] = +{ + {OtherText_Yes, NULL}, + {OtherText_No, NULL}, + {OtherText_Info3, NULL}, +}; + +const struct MenuAction MultichoiceList_18[] = +{ + {OtherText_SingleBattle, NULL}, + {OtherText_DoubleBattle, NULL}, + {OtherText_MultiBattle, NULL}, + {gOtherText_CancelNoTerminator, NULL}, +}; + +const struct MenuAction MultichoiceList_19[] = +{ + {OtherText_Littleroot, NULL}, + {OtherText_Slateport, NULL}, + {OtherText_Lilycove, NULL}, +}; + +const struct MenuAction MultichoiceList_20[] = +{ + {OtherText_Yes, NULL}, + {OtherText_No, NULL}, + {OtherText_Info3, NULL}, +}; + +const struct MenuAction MultichoiceList_23[] = +{ + {OtherText_MakeAChallenge, NULL}, + {OtherText_ObtainInformation, NULL}, + {gOtherText_CancelNoTerminator, NULL}, +}; + +const struct MenuAction MultichoiceList_24[] = +{ + {OtherText_Lv50_2, NULL}, + {OtherText_Lv100_2, NULL}, + {gOtherText_CancelNoTerminator, NULL}, +}; + +const struct MenuAction MultichoiceList_25[] = +{ + {OtherText_Zigzagoon, NULL}, + {OtherText_Nincada, NULL}, + {OtherText_Poochyena, NULL}, +}; + +const struct MenuAction MultichoiceList_26[] = +{ + {OtherText_Nincada2, NULL}, + {OtherText_Lotad, NULL}, + {OtherText_Roselia, NULL}, +}; + +const struct MenuAction MultichoiceList_27[] = +{ + {OtherText_Shroomish, NULL}, + {OtherText_Nincada3, NULL}, + {OtherText_Surskit, NULL}, +}; + +const struct MenuAction MultichoiceList_28[] = +{ + {OtherText_Treecko, NULL}, + {OtherText_Torchic, NULL}, + {OtherText_Mudkip, NULL}, +}; + +const struct MenuAction MultichoiceList_29[] = +{ + {OtherText_Seedot, NULL}, + {OtherText_Shroomish2, NULL}, + {OtherText_Spinda, NULL}, +}; + +const struct MenuAction MultichoiceList_30[] = +{ + {OtherText_Shroomish3, NULL}, + {OtherText_Zigzagoon2, NULL}, + {OtherText_Wurmple, NULL}, +}; + +const struct MenuAction MultichoiceList_31[] = +{ + {OtherText_PokeBall, NULL}, + {OtherText_SuperPotion, NULL}, + {OtherText_SamePrice, NULL}, +}; + +const struct MenuAction MultichoiceList_32[] = +{ + {OtherText_Yen135, NULL}, + {OtherText_Yen155, NULL}, + {OtherText_Yen175, NULL}, +}; + +const struct MenuAction MultichoiceList_33[] = +{ + {OtherText_CostMore, NULL}, + {OtherText_CostLess, NULL}, + {OtherText_SamePrice2, NULL}, +}; + +const struct MenuAction MultichoiceList_34[] = +{ + {OtherText_MaleSymbol, NULL}, + {OtherText_FemaleSymbol, NULL}, + {OtherText_Neither, NULL}, +}; + +const struct MenuAction MultichoiceList_35[] = +{ + {OtherText_Males, NULL}, + {OtherText_Females, NULL}, + {OtherText_SameNumber, NULL}, +}; + +const struct MenuAction MultichoiceList_36[] = +{ + {OtherText_Male, NULL}, + {OtherText_Female, NULL}, + {OtherText_ItDepends, NULL}, +}; + +const struct MenuAction MultichoiceList_37[] = +{ + {OtherText_Six2, NULL}, + {OtherText_Eight2, NULL}, + {OtherText_Ten, NULL}, +}; + +const struct MenuAction MultichoiceList_38[] = +{ + {OtherText_One, NULL}, + {OtherText_Two, NULL}, + {OtherText_Three, NULL}, +}; + +const struct MenuAction MultichoiceList_39[] = +{ + {OtherText_Six, NULL}, + {OtherText_Seven, NULL}, + {OtherText_Eight, NULL}, +}; + +const struct MenuAction MultichoiceList_42[] = +{ + {OtherText_FreshWater, NULL}, + {OtherText_SodaPop, NULL}, + {OtherText_Lemonade, NULL}, + {gOtherText_CancelNoTerminator, NULL}, +}; + +const struct MenuAction MultichoiceList_43[] = +{ + {OtherText_HowToRide, NULL}, + {OtherText_HowToTurn, NULL}, + {OtherText_SandySlopes, NULL}, + {gOtherText_CancelNoTerminator, NULL}, +}; + +const struct MenuAction MultichoiceList_44[] = +{ + {OtherText_Wheelies, NULL}, + {OtherText_BunnyHops, NULL}, + {OtherText_Jumping, NULL}, + {gOtherText_CancelNoTerminator, NULL}, +}; + +const struct MenuAction MultichoiceList_45[] = +{ + {OtherText_Satisfied, NULL}, + {OtherText_Dissatisfied, NULL}, +}; + +const struct MenuAction MultichoiceList_46[] = +{ + {OtherText_Deepseatooth, NULL}, + {OtherText_Deepseascale, NULL}, + {gOtherText_CancelNoTerminator, NULL}, +}; + +const struct MenuAction MultichoiceList_47[] = +{ + {OtherText_BlueFlute2, NULL}, + {OtherText_YellowFlute2, NULL}, + {OtherText_RedFlute2, NULL}, + {OtherText_WhiteFlute2, NULL}, + {OtherText_BlackFlute2, NULL}, + {OtherText_GlassChair, NULL}, + {OtherText_GlassDesk, NULL}, + {gOtherText_CancelNoTerminator, NULL}, +}; + +const struct MenuAction MultichoiceList_48[] = +{ + {OtherText_TreeckoDoll, NULL}, + {OtherText_TorchicDoll, NULL}, + {OtherText_MudkipDoll, NULL}, + {gOtherText_CancelNoTerminator, NULL}, +}; + +const struct MenuAction MultichoiceList_55[] = +{ + {OtherText_TM32, NULL}, + {OtherText_TM29, NULL}, + {OtherText_TM35, NULL}, + {OtherText_TM24, NULL}, + {OtherText_TM13, NULL}, + {gOtherText_CancelNoTerminator, NULL}, +}; + +const struct MenuAction MultichoiceList_49[] = +{ + {OtherText_50Coins, NULL}, + {OtherText_500Coins, NULL}, + {gOtherText_CancelNoTerminator, NULL}, +}; + +const struct MenuAction MultichoiceList_50[] = +{ + {OtherText_Excellent, NULL}, + {OtherText_NotSoHot, NULL}, +}; + +const struct MenuAction MultichoiceList_52[] = +{ + {OtherText_Lilycove, NULL}, + {OtherText_BattleTower, NULL}, + {gOtherText_CancelNoTerminator, NULL}, +}; + +const struct MenuAction MultichoiceList_53[] = +{ + {OtherText_Slateport, NULL}, + {OtherText_Lilycove, NULL}, + {gOtherText_CancelNoTerminator, NULL}, +}; + +const struct MenuAction MultichoiceList_54[] = +{ + {OtherText_Right, NULL}, + {OtherText_Left, NULL}, +}; + +const struct MenuAction MultichoiceList_56[] = +{ + {OtherText_Slateport, NULL}, + {OtherText_BattleTower, NULL}, + {gOtherText_CancelNoTerminator, NULL}, +}; + +const struct MenuAction MultichoiceList_57[] = +{ + {OtherText_1F_2, NULL}, + {OtherText_2F_2, NULL}, + {OtherText_3F_2, NULL}, + {OtherText_4F_2, NULL}, + {OtherText_5F_2, NULL}, +}; + +const struct MenuAction MultichoiceList_58[] = +{ + {OtherText_RedShard, NULL}, + {gOtherText_CancelNoTerminator, NULL}, +}; + +const struct MenuAction MultichoiceList_59[] = +{ + {OtherText_YellowShard, NULL}, + {gOtherText_CancelNoTerminator, NULL}, +}; + +const struct MenuAction MultichoiceList_60[] = +{ + {OtherText_RedShard, NULL}, + {OtherText_YellowShard, NULL}, + {gOtherText_CancelNoTerminator, NULL}, +}; + +const struct MenuAction MultichoiceList_61[] = +{ + {OtherText_BlueShard, NULL}, + {gOtherText_CancelNoTerminator, NULL}, +}; + +const struct MenuAction MultichoiceList_62[] = +{ + {OtherText_RedShard, NULL}, + {OtherText_BlueShard, NULL}, + {gOtherText_CancelNoTerminator, NULL}, +}; + +const struct MenuAction MultichoiceList_63[] = +{ + {OtherText_YellowShard, NULL}, + {OtherText_BlueShard, NULL}, + {gOtherText_CancelNoTerminator, NULL}, +}; + +const struct MenuAction MultichoiceList_64[] = +{ + {OtherText_RedShard, NULL}, + {OtherText_YellowShard, NULL}, + {OtherText_BlueShard, NULL}, + {gOtherText_CancelNoTerminator, NULL}, +}; + +const struct MenuAction MultichoiceList_65[] = +{ + {OtherText_GreenShard, NULL}, + {gOtherText_CancelNoTerminator, NULL}, +}; + +const struct MenuAction MultichoiceList_66[] = +{ + {OtherText_RedShard, NULL}, + {OtherText_GreenShard, NULL}, + {gOtherText_CancelNoTerminator, NULL}, +}; + +const struct MenuAction MultichoiceList_67[] = +{ + {OtherText_YellowShard, NULL}, + {OtherText_GreenShard, NULL}, + {gOtherText_CancelNoTerminator, NULL}, +}; + +const struct MenuAction MultichoiceList_68[] = +{ + {OtherText_RedShard, NULL}, + {OtherText_YellowShard, NULL}, + {OtherText_GreenShard, NULL}, + {gOtherText_CancelNoTerminator, NULL}, +}; + +const struct MenuAction MultichoiceList_69[] = +{ + {OtherText_BlueShard, NULL}, + {OtherText_GreenShard, NULL}, + {gOtherText_CancelNoTerminator, NULL}, +}; + +const struct MenuAction MultichoiceList_70[] = +{ + {OtherText_RedShard, NULL}, + {OtherText_BlueShard, NULL}, + {OtherText_GreenShard, NULL}, + {gOtherText_CancelNoTerminator, NULL}, +}; + +const struct MenuAction MultichoiceList_71[] = +{ + {OtherText_YellowShard, NULL}, + {OtherText_BlueShard, NULL}, + {OtherText_GreenShard, NULL}, + {gOtherText_CancelNoTerminator, NULL}, +}; + +const struct MenuAction MultichoiceList_72[] = +{ + {OtherText_RedShard, NULL}, + {OtherText_YellowShard, NULL}, + {OtherText_BlueShard, NULL}, + {OtherText_GreenShard, NULL}, + {gOtherText_CancelNoTerminator, NULL}, +}; + +const struct MenuAction MultichoiceList_01[] = +{ + {gOtherText_CancelNoTerminator, NULL}, +}; + +struct MultichoiceListStruct +{ + const struct MenuAction *list; + u8 count; +}; + +const struct MultichoiceListStruct gMultichoiceLists[] = +{ + {MultichoiceList_00, ARRAY_COUNT(MultichoiceList_00)}, + {MultichoiceList_01, ARRAY_COUNT(MultichoiceList_01)}, + {MultichoiceList_02, ARRAY_COUNT(MultichoiceList_02)}, + {MultichoiceList_03, ARRAY_COUNT(MultichoiceList_03)}, + {MultichoiceList_04, ARRAY_COUNT(MultichoiceList_04)}, + {MultichoiceList_05, ARRAY_COUNT(MultichoiceList_05)}, + {MultichoiceList_06, ARRAY_COUNT(MultichoiceList_06)}, + {MultichoiceList_07, ARRAY_COUNT(MultichoiceList_07)}, + {MultichoiceList_01, ARRAY_COUNT(MultichoiceList_01)}, + {MultichoiceList_01, ARRAY_COUNT(MultichoiceList_01)}, + {MultichoiceList_01, ARRAY_COUNT(MultichoiceList_01)}, + {MultichoiceList_01, ARRAY_COUNT(MultichoiceList_01)}, + {MultichoiceList_12, ARRAY_COUNT(MultichoiceList_12)}, + {MultichoiceList_13, ARRAY_COUNT(MultichoiceList_13)}, + {MultichoiceList_14, ARRAY_COUNT(MultichoiceList_14)}, + {MultichoiceList_01, ARRAY_COUNT(MultichoiceList_01)}, + {MultichoiceList_16, ARRAY_COUNT(MultichoiceList_16)}, + {MultichoiceList_17, ARRAY_COUNT(MultichoiceList_17)}, + {MultichoiceList_18, ARRAY_COUNT(MultichoiceList_18)}, + {MultichoiceList_19, ARRAY_COUNT(MultichoiceList_19)}, + {MultichoiceList_20, ARRAY_COUNT(MultichoiceList_20)}, + {MultichoiceList_01, ARRAY_COUNT(MultichoiceList_01)}, + {MultichoiceList_01, ARRAY_COUNT(MultichoiceList_01)}, + {MultichoiceList_23, ARRAY_COUNT(MultichoiceList_23)}, + {MultichoiceList_24, ARRAY_COUNT(MultichoiceList_24)}, + {MultichoiceList_25, ARRAY_COUNT(MultichoiceList_25)}, + {MultichoiceList_26, ARRAY_COUNT(MultichoiceList_26)}, + {MultichoiceList_27, ARRAY_COUNT(MultichoiceList_27)}, + {MultichoiceList_28, ARRAY_COUNT(MultichoiceList_28)}, + {MultichoiceList_29, ARRAY_COUNT(MultichoiceList_29)}, + {MultichoiceList_30, ARRAY_COUNT(MultichoiceList_30)}, + {MultichoiceList_31, ARRAY_COUNT(MultichoiceList_31)}, + {MultichoiceList_32, ARRAY_COUNT(MultichoiceList_32)}, + {MultichoiceList_33, ARRAY_COUNT(MultichoiceList_33)}, + {MultichoiceList_34, ARRAY_COUNT(MultichoiceList_34)}, + {MultichoiceList_35, ARRAY_COUNT(MultichoiceList_35)}, + {MultichoiceList_36, ARRAY_COUNT(MultichoiceList_36)}, + {MultichoiceList_37, ARRAY_COUNT(MultichoiceList_37)}, + {MultichoiceList_38, ARRAY_COUNT(MultichoiceList_38)}, + {MultichoiceList_39, ARRAY_COUNT(MultichoiceList_39)}, + {MultichoiceList_01, ARRAY_COUNT(MultichoiceList_01)}, + {MultichoiceList_01, ARRAY_COUNT(MultichoiceList_01)}, + {MultichoiceList_42, ARRAY_COUNT(MultichoiceList_42)}, + {MultichoiceList_43, ARRAY_COUNT(MultichoiceList_43)}, + {MultichoiceList_44, ARRAY_COUNT(MultichoiceList_44)}, + {MultichoiceList_45, ARRAY_COUNT(MultichoiceList_45)}, + {MultichoiceList_46, ARRAY_COUNT(MultichoiceList_46)}, + {MultichoiceList_47, ARRAY_COUNT(MultichoiceList_47)}, + {MultichoiceList_48, ARRAY_COUNT(MultichoiceList_48)}, + {MultichoiceList_49, ARRAY_COUNT(MultichoiceList_49)}, + {MultichoiceList_50, ARRAY_COUNT(MultichoiceList_50)}, + {MultichoiceList_01, ARRAY_COUNT(MultichoiceList_01)}, + {MultichoiceList_52, ARRAY_COUNT(MultichoiceList_52)}, + {MultichoiceList_53, ARRAY_COUNT(MultichoiceList_53)}, + {MultichoiceList_54, ARRAY_COUNT(MultichoiceList_54)}, + {MultichoiceList_55, ARRAY_COUNT(MultichoiceList_55)}, + {MultichoiceList_56, ARRAY_COUNT(MultichoiceList_56)}, + {MultichoiceList_57, ARRAY_COUNT(MultichoiceList_57)}, + {MultichoiceList_58, ARRAY_COUNT(MultichoiceList_58)}, + {MultichoiceList_59, ARRAY_COUNT(MultichoiceList_59)}, + {MultichoiceList_60, ARRAY_COUNT(MultichoiceList_60)}, + {MultichoiceList_61, ARRAY_COUNT(MultichoiceList_61)}, + {MultichoiceList_62, ARRAY_COUNT(MultichoiceList_62)}, + {MultichoiceList_63, ARRAY_COUNT(MultichoiceList_63)}, + {MultichoiceList_64, ARRAY_COUNT(MultichoiceList_64)}, + {MultichoiceList_65, ARRAY_COUNT(MultichoiceList_65)}, + {MultichoiceList_66, ARRAY_COUNT(MultichoiceList_66)}, + {MultichoiceList_67, ARRAY_COUNT(MultichoiceList_67)}, + {MultichoiceList_68, ARRAY_COUNT(MultichoiceList_68)}, + {MultichoiceList_69, ARRAY_COUNT(MultichoiceList_69)}, + {MultichoiceList_70, ARRAY_COUNT(MultichoiceList_70)}, + {MultichoiceList_71, ARRAY_COUNT(MultichoiceList_71)}, + {MultichoiceList_72, ARRAY_COUNT(MultichoiceList_72)}, +}; + +const u8 *const gUnknown_083CE048[] = +{ + OtherText_Cool2, + OtherText_Beauty3, + OtherText_Cute2, + OtherText_Smart2, + OtherText_Tough2, + OtherText_Normal, + OtherText_Super, + OtherText_Hyper, + OtherText_Master, + OtherText_Cool3, + OtherText_Beauty4, + OtherText_Cute3, + OtherText_Smart3, + OtherText_Tough3, + OtherText_Items, + OtherText_KeyItems, + OtherText_Balls, + OtherText_TMsHMs, + OtherText_Berries, +}; + +extern u8 gPCText_WhichPCShouldBeAccessed[]; + +extern u16 gScriptResult; + +static void Task_HandleMultichoiceInput(u8); +static void Task_HandleYesNoInput(u8); +static void Task_HandleMultichoiceGridInput(u8); +static u16 GetStringWidthInTilesForScriptMenu(const u8 *str); +static void DrawMultichoiceMenu(u8, u8, u8, const struct MenuAction *list, u8, u8); +static void StartScriptMenuTask(u8, u8, u8, u8, u8, u8); +static void sub_80B53B4(u8, u8, u8, const struct MenuAction *list, u8); +static bool8 IsPicboxClosed(void); + +bool8 ScriptMenu_Multichoice(u8 left, u8 top, u8 multichoiceId, u8 ignoreBPress) +{ + if (FuncIsActiveTask(Task_HandleMultichoiceInput) == TRUE) + { + return FALSE; + } + else + { + gScriptResult = 0xFF; + DrawMultichoiceMenu(left, top, gMultichoiceLists[multichoiceId].count, gMultichoiceLists[multichoiceId].list, ignoreBPress, 0); + return TRUE; + } +} + +bool8 ScriptMenu_MultichoiceWithDefault(u8 left, u8 top, u8 multichoiceId, u8 ignoreBPress, u8 defaultChoice) +{ + if (FuncIsActiveTask(Task_HandleMultichoiceInput) == TRUE) + { + return FALSE; + } + else + { + gScriptResult = 0xFF; + DrawMultichoiceMenu(left, top, gMultichoiceLists[multichoiceId].count, gMultichoiceLists[multichoiceId].list, ignoreBPress, defaultChoice); + return TRUE; + } +} + +static u16 GetStringWidthInTilesForScriptMenu(const u8 *str) +{ + // each tile on screen is 8x8, so it needs the number of tiles and not pixels, hence the division by 8. + return (GetStringWidthGivenWindowConfig((struct WindowConfig *)&gWindowConfig_81E6CE4, str) + 7) / 8; +} + +static void DrawMultichoiceMenu(u8 left, u8 top, u8 count, const struct MenuAction *list, u8 ignoreBPress, u8 cursorPos) +{ + u16 width = GetStringWidthInTilesForScriptMenu(list[0].text); + u16 newWidth; + u8 i; + u8 right; + u8 bottom; + + for (i = 1; i < count; i++) + { + newWidth = GetStringWidthInTilesForScriptMenu(list[i].text); + if (width < newWidth) + width = newWidth; + } + + right = width; + right = (right + left) + 1; + + if (right > 29) + { + left = left + (29 - right); + right = 29; + } + + bottom = top + (2 * count + 1); + + MenuDrawTextWindow(left, top, right, bottom); + PrintMenuItems(left + 1, top + 1, count, list); + InitMenu(0, left + 1, top + 1, count, cursorPos, right - left - 1); + StartScriptMenuTask(left, top, right, bottom, ignoreBPress, count); +} + +#define tLeft data[0] +#define tTop data[1] +#define tRight data[2] +#define tBottom data[3] +#define tIgnoreBPress data[4] +#define tDoWrap data[5] + +static void StartScriptMenuTask(u8 left, u8 top, u8 right, u8 bottom, u8 ignoreBPress, u8 count) +{ + u8 taskId = CreateTask(Task_HandleMultichoiceInput, 80); + + gTasks[taskId].tLeft = left; + gTasks[taskId].tTop = top; + gTasks[taskId].tRight = right; + gTasks[taskId].tBottom = bottom; + gTasks[taskId].tIgnoreBPress = ignoreBPress; + + if (count > 3) + gTasks[taskId].tDoWrap = TRUE; + else + gTasks[taskId].tDoWrap = FALSE; +} + +static void Task_HandleMultichoiceInput(u8 taskId) +{ + s8 selection; + + if (!gPaletteFade.active) + { + if (!gTasks[taskId].tDoWrap) + selection = ProcessMenuInputNoWrap(); + else + selection = ProcessMenuInput(); + + if (selection != -2) + { + if (selection == -1) + { + if (gTasks[taskId].tIgnoreBPress) + return; + PlaySE(SE_SELECT); + gScriptResult = 127; + } + else + { + gScriptResult = selection; + } + HandleDestroyMenuCursors(); + MenuZeroFillWindowRect(gTasks[taskId].tLeft, gTasks[taskId].tTop, gTasks[taskId].tRight, gTasks[taskId].tBottom); + DestroyTask(taskId); + EnableBothScriptContexts(); + } + } +} + +bool8 Multichoice(u8 left, u8 top, u8 multichoiceId, u8 ignoreBPress) +{ + if (FuncIsActiveTask(Task_HandleMultichoiceInput) == TRUE) + { + return FALSE; + } + else + { + gScriptResult = 0xFF; + sub_80B53B4(left, top, gMultichoiceLists[multichoiceId].count, gMultichoiceLists[multichoiceId].list, ignoreBPress); + return TRUE; + } +} + +static void sub_80B53B4(u8 left, u8 top, u8 count, const struct MenuAction *list, u8 ignoreBPress) +{ + u16 width = GetStringWidthInTilesForScriptMenu(list[0].text); + u16 newWidth; + u8 i; + u8 right; + u8 bottom; + + for (i = 1; i < count; i++) + { + newWidth = GetStringWidthInTilesForScriptMenu(list[i].text); + if (width < newWidth) + width = newWidth; + } + + right = width; + right = (right + left) + 2; + bottom = top + (2 * count + 1); + + PrintMenuItems(left, top, count, list); + InitMenu(0, left, top, count, 0, right - left - 1); + StartScriptMenuTask(left, top, right, bottom, ignoreBPress, count); +} + +bool8 ScriptMenu_YesNo(u8 left, u8 top) +{ + u8 taskId; + + if (FuncIsActiveTask(Task_HandleYesNoInput) == TRUE) + { + return FALSE; + } + else + { + gScriptResult = 0xFF; + DisplayYesNoMenu(left, top, 1); + taskId = CreateTask(Task_HandleYesNoInput, 0x50); + gTasks[taskId].tLeft = left; + gTasks[taskId].tTop = top; + return TRUE; + } +} + +// unused +bool8 IsScriptActive(void) +{ + if (gScriptResult == 0xFF) + return FALSE; + else + return TRUE; +} + +static void Task_HandleYesNoInput(u8 taskId) +{ + u8 left, top; + + if (gTasks[taskId].tRight < 5) + { + gTasks[taskId].tRight++; + return; + } + + switch (ProcessMenuInputNoWrap()) + { + case -2: + return; + case -1: + case 1: + PlaySE(SE_SELECT); + gScriptResult = 0; + break; + case 0: + gScriptResult = 1; + break; + } + + left = gTasks[taskId].tLeft; + top = gTasks[taskId].tTop; + + MenuZeroFillWindowRect(left, top, left + 6, top + 5); + DestroyTask(taskId); + EnableBothScriptContexts(); +} + +bool8 ScriptMenu_MultichoiceGrid(u8 left, u8 top, u8 multichoiceId, u8 ignoreBPress, u8 columnCount) +{ + u8 bottom = 0; + + if (FuncIsActiveTask(Task_HandleMultichoiceGridInput) == TRUE) + { + return FALSE; + } + else + { + u8 taskId; + u8 width; + + gScriptResult = 0xFF; + + sub_807274C(left, top, gMultichoiceLists[multichoiceId].count, 0, gMultichoiceLists[multichoiceId].list, columnCount, 0); + + taskId = CreateTask(Task_HandleMultichoiceGridInput, 80); + + if (!((gMultichoiceLists[multichoiceId].count >> 1) < columnCount || (gMultichoiceLists[multichoiceId].count & 1)) + || columnCount == 1 || gMultichoiceLists[multichoiceId].count == columnCount) + { + bottom = (2 * (gMultichoiceLists[multichoiceId].count / columnCount)) + 1 + top; + } + else + { + bottom = (2 * (gMultichoiceLists[multichoiceId].count / columnCount)) + 3 + top; + } + + width = sub_807288C(columnCount); + gTasks[taskId].tLeft = left; + gTasks[taskId].tTop = top; + gTasks[taskId].tRight = width + left + 2; + gTasks[taskId].tBottom = bottom; + gTasks[taskId].tIgnoreBPress = ignoreBPress; + return TRUE; + } +} + +static void Task_HandleMultichoiceGridInput(u8 taskId) +{ + s8 selection = sub_80727CC(); + + if (selection != -2) + { + if (selection == -1) + { + if (gTasks[taskId].tIgnoreBPress) + return; + PlaySE(SE_SELECT); + gScriptResult = 127; + } + else + { + gScriptResult = selection; + } + HandleDestroyMenuCursors(); + MenuZeroFillWindowRect(gTasks[taskId].tLeft, gTasks[taskId].tTop, gTasks[taskId].tRight, gTasks[taskId].tBottom); + DestroyTask(taskId); + EnableBothScriptContexts(); + } +} + +#undef tLeft +#undef tTop +#undef tRight +#undef tBottom +#undef tIgnoreBPress +#undef tDoWrap + +bool8 ScrSpecial_CreatePCMenu(void) +{ + if (FuncIsActiveTask(Task_HandleMultichoiceInput) == TRUE) + { + return FALSE; + } + else + { + gScriptResult = 0xFF; + ScriptMenu_CreatePCMenu(); + return TRUE; + } +} + +#if ENGLISH +void ScriptMenu_CreatePCMenu(void) +{ + u16 playersPCWidth = GetStringWidthInTilesForScriptMenu(gPCText_PlayersPC); + u8 width; + u8 numChoices; + + if (playersPCWidth > GetStringWidthInTilesForScriptMenu(gPCText_SomeonesPC)) + width = playersPCWidth; + else + width = 8; + + if (FlagGet(SYS_GAME_CLEAR)) // player has cleared game? + { + numChoices = 4; + MenuDrawTextWindow(0, 0, width + 2, 9); + MenuPrint(gPCText_HallOfFame, 1, 5); + MenuPrint(gPCText_LogOff, 1, 7); + } + else + { + numChoices = 3; + MenuDrawTextWindow(0, 0, width + 2, 7); + MenuPrint(gPCText_LogOff, 1, 5); + } + + if (FlagGet(SYS_PC_LANETTE)) // player met lanette? + MenuPrint(gPCText_LanettesPC, 1, 1); + else + MenuPrint(gPCText_SomeonesPC, 1, 1); + + MenuPrint(gPCText_PlayersPC, 1, 3); + InitMenu(0, 1, 1, numChoices, 0, width + 1); + StartScriptMenuTask(0, 0, width + 2, 2 * numChoices + 1, 0, numChoices); +} +#elif GERMAN +__attribute__((naked)) +void ScriptMenu_CreatePCMenu(void) { + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + sub sp, 0x18\n\ + ldr r0, _080B5748 @ =0x0000084b\n\ + bl FlagGet\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + beq _080B5750\n\ + ldr r0, _080B574C @ =gPCText_LanettesPC\n\ + b _080B5752\n\ + .align 2, 0\n\ +_080B5748: .4byte 0x0000084b\n\ +_080B574C: .4byte gPCText_LanettesPC\n\ +_080B5750:\n\ + ldr r0, _080B57E8 @ =gPCText_SomeonesPC\n\ +_080B5752:\n\ + bl GetStringWidthInTilesForScriptMenu\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + str r0, [sp, 0x8]\n\ + movs r4, 0x1\n\ + ldr r0, _080B57EC @ =gPCText_PlayersPC\n\ + bl GetStringWidthInTilesForScriptMenu\n\ + lsls r1, r4, 2\n\ + add r1, sp\n\ + adds r1, 0x8\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + str r0, [r1]\n\ + ldr r0, _080B57F0 @ =gPCText_LogOff\n\ + bl GetStringWidthInTilesForScriptMenu\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + str r0, [sp, 0x10]\n\ + movs r4, 0x3\n\ + ldr r0, _080B57F4 @ =0x00000804\n\ + bl FlagGet\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + beq _080B5798\n\ + ldr r0, _080B57F8 @ =gPCText_HallOfFame\n\ + bl GetStringWidthInTilesForScriptMenu\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + str r0, [sp, 0x14]\n\ + movs r4, 0x4\n\ +_080B5798:\n\ + movs r5, 0\n\ + cmp r5, r4\n\ + bge _080B57B4\n\ + add r2, sp, 0x8\n\ + adds r1, r4, 0\n\ +_080B57A2:\n\ + ldr r0, [r2]\n\ + cmp r5, r0\n\ + bge _080B57AC\n\ + lsls r0, 24\n\ + lsrs r5, r0, 24\n\ +_080B57AC:\n\ + adds r2, 0x4\n\ + subs r1, 0x1\n\ + cmp r1, 0\n\ + bne _080B57A2\n\ +_080B57B4:\n\ + ldr r0, _080B57F4 @ =0x00000804\n\ + bl FlagGet\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + beq _080B57FC\n\ + movs r7, 0x4\n\ + adds r4, r5, 0x2\n\ + lsls r2, r4, 24\n\ + lsrs r2, 24\n\ + movs r0, 0\n\ + movs r1, 0\n\ + movs r3, 0x9\n\ + bl MenuDrawTextWindow\n\ + ldr r0, _080B57F8 @ =gPCText_HallOfFame\n\ + movs r1, 0x1\n\ + movs r2, 0x5\n\ + bl MenuPrint\n\ + ldr r0, _080B57F0 @ =gPCText_LogOff\n\ + movs r1, 0x1\n\ + movs r2, 0x7\n\ + bl MenuPrint\n\ + b _080B5818\n\ + .align 2, 0\n\ +_080B57E8: .4byte gPCText_SomeonesPC\n\ +_080B57EC: .4byte gPCText_PlayersPC\n\ +_080B57F0: .4byte gPCText_LogOff\n\ +_080B57F4: .4byte 0x00000804\n\ +_080B57F8: .4byte gPCText_HallOfFame\n\ +_080B57FC:\n\ + movs r7, 0x3\n\ + adds r4, r5, 0x2\n\ + lsls r2, r4, 24\n\ + lsrs r2, 24\n\ + movs r0, 0\n\ + movs r1, 0\n\ + movs r3, 0x7\n\ + bl MenuDrawTextWindow\n\ + ldr r0, _080B5834 @ =gPCText_LogOff\n\ + movs r1, 0x1\n\ + movs r2, 0x5\n\ + bl MenuPrint\n\ +_080B5818:\n\ + adds r6, r4, 0\n\ + ldr r0, _080B5838 @ =0x0000084b\n\ + bl FlagGet\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + beq _080B5840\n\ + ldr r0, _080B583C @ =gPCText_LanettesPC\n\ + movs r1, 0x1\n\ + movs r2, 0x1\n\ + bl MenuPrint\n\ + b _080B584A\n\ + .align 2, 0\n\ +_080B5834: .4byte gPCText_LogOff\n\ +_080B5838: .4byte 0x0000084b\n\ +_080B583C: .4byte gPCText_LanettesPC\n\ +_080B5840:\n\ + ldr r0, _080B5888 @ =gPCText_SomeonesPC\n\ + movs r1, 0x1\n\ + movs r2, 0x1\n\ + bl MenuPrint\n\ +_080B584A:\n\ + ldr r0, _080B588C @ =gPCText_PlayersPC\n\ + movs r1, 0x1\n\ + movs r2, 0x3\n\ + bl MenuPrint\n\ + movs r4, 0\n\ + str r4, [sp]\n\ + adds r0, r5, 0x1\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + str r0, [sp, 0x4]\n\ + movs r0, 0\n\ + movs r1, 0x1\n\ + movs r2, 0x1\n\ + adds r3, r7, 0\n\ + bl InitMenu\n\ + lsls r2, r6, 24\n\ + lsrs r2, 24\n\ + lsls r3, r7, 1\n\ + adds r3, 0x1\n\ + str r4, [sp]\n\ + str r7, [sp, 0x4]\n\ + movs r0, 0\n\ + movs r1, 0\n\ + bl StartScriptMenuTask\n\ + add sp, 0x18\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_080B5888: .4byte gPCText_SomeonesPC\n\ +_080B588C: .4byte gPCText_PlayersPC\n\ + .syntax divided\n"); +} +#endif + +void ScriptMenu_DisplayPCStartupPrompt(void) +{ + MenuDisplayMessageBox(); + MenuPrint(gPCText_WhichPCShouldBeAccessed, 2, 15); +} + +#define tState data[0] +#define tMonSpecies data[1] +#define tMonSpriteId data[2] +#define tWindowX data[3] +#define tWindowY data[4] + +static void Task_PokemonPicWindow(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + + switch (task->tState) + { + case 0: + task->tState++; + break; + case 1: + break; + case 2: + FreeResourcesAndDestroySprite(&gSprites[task->tMonSpriteId]); + task->tState++; + break; + case 3: + MenuZeroFillWindowRect(task->tWindowX, task->tWindowY, task->tWindowX + 9, task->tWindowY + 10); + DestroyTask(taskId); + break; + } +} + +bool8 ScriptMenu_ShowPokemonPic(u16 species, u8 x, u8 y) +{ + u8 taskId; + u8 spriteId; + + if (FindTaskIdByFunc(Task_PokemonPicWindow) != 0xFF) + { + return FALSE; + } + else + { + MenuDrawTextWindow(x, y, x + 9, y + 10); + taskId = CreateTask(Task_PokemonPicWindow, 0x50); + gTasks[taskId].tState = 0; + gTasks[taskId].tMonSpecies = species; + spriteId = CreateMonSprite_PicBox(species, x * 8 + 40, y * 8 + 40, 0); + gTasks[taskId].tMonSpriteId = spriteId; + gTasks[taskId].tWindowX = x; + gTasks[taskId].tWindowY = y; + gSprites[spriteId].callback = SpriteCallbackDummy; + gSprites[spriteId].oam.priority = 0; + return TRUE; + } +} + +bool8 (*ScriptMenu_GetPicboxWaitFunc(void))(void) +{ + u8 taskId = FindTaskIdByFunc(Task_PokemonPicWindow); + + if (taskId == 0xFF) + return NULL; + gTasks[taskId].tState++; + return IsPicboxClosed; +} + +static bool8 IsPicboxClosed(void) +{ + if (FindTaskIdByFunc(Task_PokemonPicWindow) == 0xFF) + return TRUE; + else + return FALSE; +} + +#undef tState +#undef tMonSpecies +#undef tMonSpriteId +#undef tWindowX +#undef tWindowY diff --git a/src/script_movement.c b/src/field/script_movement.c similarity index 66% rename from src/script_movement.c rename to src/field/script_movement.c index 31143ed6f..30e10b451 100644 --- a/src/script_movement.c +++ b/src/field/script_movement.c @@ -5,7 +5,7 @@ #include "task.h" #include "util.h" -extern u8 *gUnknown_020384F8[]; +static EWRAM_DATA u8 *gUnknown_020384F8[16] = {0}; static void sub_80A2198(u8); static u8 sub_80A21E0(void); @@ -13,33 +13,33 @@ static bool8 sub_80A21F4(u8, u8, u8 *); static u8 sub_80A2260(u8, u8); static bool8 sub_80A2370(u8, u8); static void sub_80A23C8(u8, u8, u8, u8 *); -static void sub_80A2408(u8); +static void UnfreezeObjects(u8); static void Task_80A244C(u8); static void sub_80A2490(u8, u8, u8, u8 *); -bool8 exec_movement(u8 a, u8 b, u8 c, u8 *d) +bool8 ScriptMovement_StartObjectMovementScript(u8 localId, u8 mapNum, u8 mapGroup, u8 *movementScript) { u8 mapObjId; - if (TryGetFieldObjectIdByLocalIdAndMap(a, b, c, &mapObjId)) + if (TryGetFieldObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &mapObjId)) return TRUE; if (!FuncIsActiveTask(Task_80A244C)) sub_80A2198(50); - return sub_80A21F4(sub_80A21E0(), mapObjId, d); + return sub_80A21F4(sub_80A21E0(), mapObjId, movementScript); } -bool8 sub_80A212C(u8 a, u8 b, u8 c) +bool8 ScriptMovement_IsObjectMovementFinished(u8 localId, u8 mapNum, u8 mapBank) { u8 mapObjId; u8 r4; u8 r1; - if (TryGetFieldObjectIdByLocalIdAndMap(a, b, c, &mapObjId)) - return 1; + if (TryGetFieldObjectIdByLocalIdAndMap(localId, mapNum, mapBank, &mapObjId)) + return TRUE; r4 = sub_80A21E0(); r1 = sub_80A2260(r4, mapObjId); if (r1 == 16) - return 1; + return TRUE; return sub_80A2370(r4, r1); } @@ -50,7 +50,7 @@ void sub_80A2178(void) taskId = sub_80A21E0(); if (taskId != 0xFF) { - sub_80A2408(taskId); + UnfreezeObjects(taskId); DestroyTask(taskId); } } @@ -70,27 +70,31 @@ static u8 sub_80A21E0(void) return FindTaskIdByFunc(Task_80A244C); } -static bool8 sub_80A21F4(u8 taskId, u8 b, u8 *c) +static bool8 sub_80A21F4(u8 taskId, u8 mapObjId, u8 *movementScript) { u8 r4; - r4 = sub_80A2260(taskId, b); + r4 = sub_80A2260(taskId, mapObjId); if (r4 != 16) { if (sub_80A2370(taskId, r4) == 0) + { return TRUE; + } else { - sub_80A23C8(taskId, r4, b, c); + sub_80A23C8(taskId, r4, mapObjId, movementScript); return FALSE; } } r4 = sub_80A2260(taskId, 0xFF); if (r4 == 16) + { return TRUE; + } else { - sub_80A23C8(taskId, r4, b, c); + sub_80A23C8(taskId, r4, mapObjId, movementScript); return FALSE; } } @@ -156,9 +160,9 @@ static bool8 sub_80A2370(u8 taskId, u8 b) return FALSE; } -static void npc_obj_offscreen_culling_and_flag_update(u8 a, u8 *b) +static void npc_obj_offscreen_culling_and_flag_update(u8 a, u8 *movementScript) { - gUnknown_020384F8[a] = b; + gUnknown_020384F8[a] = movementScript; } static u8 *sub_80A23B8(u8 a) @@ -166,23 +170,23 @@ static u8 *sub_80A23B8(u8 a) return gUnknown_020384F8[a]; } -static void sub_80A23C8(u8 taskId, u8 b, u8 c, u8 *d) +static void sub_80A23C8(u8 taskId, u8 b, u8 mapObjId, u8 *movementScript) { sub_80A2318(taskId, b); - npc_obj_offscreen_culling_and_flag_update(b, d); - sub_80A22D0(taskId, b, c); + npc_obj_offscreen_culling_and_flag_update(b, movementScript); + sub_80A22D0(taskId, b, mapObjId); } -static void sub_80A2408(u8 a) +static void UnfreezeObjects(u8 taskId) { - u8 *ptr; + u8 *pMapObjId; u8 i; - ptr = (u8 *)&gTasks[a].data[1]; - for (i = 0; i < 16; i++, ptr++) + pMapObjId = (u8 *)&gTasks[taskId].data[1]; + for (i = 0; i < 16; i++, pMapObjId++) { - if (*ptr != 0xFF) - UnfreezeMapObject(&gMapObjects[*ptr]); + if (*pMapObjId != 0xFF) + UnfreezeMapObject(&gMapObjects[*pMapObjId]); } } @@ -199,23 +203,23 @@ static void Task_80A244C(u8 taskId) } } -static void sub_80A2490(u8 taskId, u8 b, u8 c, u8 *d) +static void sub_80A2490(u8 taskId, u8 b, u8 mapObjId, u8 *d) { u8 var; - if (FieldObjectIsSpecialAnimActive(&gMapObjects[c]) - && !FieldObjectClearAnimIfSpecialAnimFinished(&gMapObjects[c])) + if (FieldObjectIsSpecialAnimActive(&gMapObjects[mapObjId]) + && !FieldObjectClearAnimIfSpecialAnimFinished(&gMapObjects[mapObjId])) return; var = *d; if (var == 0xFE) { sub_80A2348(taskId, b); - FreezeMapObject(&gMapObjects[c]); + FreezeMapObject(&gMapObjects[mapObjId]); } else { - if (!FieldObjectSetSpecialAnim(&gMapObjects[c], var)) + if (!FieldObjectSetSpecialAnim(&gMapObjects[mapObjId], var)) { d++; npc_obj_offscreen_culling_and_flag_update(b, d); diff --git a/src/secret_base.c b/src/field/secret_base.c similarity index 98% rename from src/secret_base.c rename to src/field/secret_base.c index 20bf02ded..949fae704 100644 --- a/src/secret_base.c +++ b/src/field/secret_base.c @@ -20,7 +20,7 @@ #include "metatile_behavior.h" #include "palette.h" #include "pokemon.h" -#include "rom4.h" +#include "overworld.h" #include "script.h" #include "string_util.h" #include "strings.h" @@ -308,7 +308,7 @@ void sub_80BB8CC(void) memset(gSaveBlock1.secretBases[0].sbr_field_2, 0xFF, 7); StringCopyN(gSaveBlock1.secretBases[0].sbr_field_2, gSaveBlock2.playerName, nameLength); gSaveBlock1.secretBases[0].gender = gSaveBlock2.playerGender; - VarSet(VAR_SECRET_BASE_MAP, gMapHeader.name); + VarSet(VAR_SECRET_BASE_MAP, gMapHeader.regionMapSectionId); } void sub_80BB970(struct MapEvents *events) @@ -373,7 +373,7 @@ void sub_80BBAF0(void) bool8 sub_80BBB24(void) { - if (gMapHeader.mapType == 9 && VarGet(VAR_0x4097) == 0) + if (gMapHeader.mapType == MAP_TYPE_SECRET_BASE && VarGet(VAR_0x4097) == 0) return FALSE; return TRUE; } @@ -404,7 +404,7 @@ void sub_80BBBEC(u8 taskid) s8 idx; if (!gPaletteFade.active) { idx = 4 * (gUnknown_020387DC / 10); - warp1_set(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum, -1, gUnknown_083D1374[idx + 2], gUnknown_083D1374[idx + 3]); + Overworld_SetWarpDestination(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum, -1, gUnknown_083D1374[idx + 2], gUnknown_083D1374[idx + 3]); warp_in(); gFieldCallback = sub_80BBB90; SetMainCallback2(CB2_LoadMap); @@ -484,7 +484,7 @@ void sub_80BBDD0(void) gScriptResult = gMapHeader.events->mapObjects[objid].graphicsId + VAR_0x3F20; VarSet(gScriptResult, gDecorations[roomdecor[decidx]].tiles[0]); gScriptResult = gMapHeader.events->mapObjects[objid].localId; - FlagReset(gSpecialVar_0x8004 + 0xAE); + FlagClear(gSpecialVar_0x8004 + 0xAE); show_sprite(gScriptResult, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup); sub_805C0F8(gScriptResult, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup, gSpecialVar_0x8006, gSpecialVar_0x8007); sub_805C78C(gScriptResult, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup); @@ -668,7 +668,7 @@ _080BBEDA:\n\ adds r0, 0xAE\n\ lsls r0, 16\n\ lsrs r0, 16\n\ - bl FlagReset\n\ + bl FlagClear\n\ ldr r3, _080BBF9C @ =gScriptResult\n\ ldrb r0, [r3]\n\ mov r4, r10\n\ @@ -733,18 +733,18 @@ void sub_80BBFA4(void) VarSet(VAR_0x401F, gUnknown_083D13EC[sub_80BCCA4(curBase)]); } -void sub_80BBFD8(s16 *position, struct MapEvents *events) +void sub_80BBFD8(struct MapPosition *position, struct MapEvents *events) { s16 bgevtidx; for (bgevtidx=0; bgevtidxbgEventCount; bgevtidx++) { - if (events->bgEvents[bgevtidx].kind == 8 && position[0] == events->bgEvents[bgevtidx].x + 7 && position[1] == events->bgEvents[bgevtidx].y + 7) { + if (events->bgEvents[bgevtidx].kind == 8 && position->x == events->bgEvents[bgevtidx].x + 7 && position->y == events->bgEvents[bgevtidx].y + 7) { gUnknown_020387DC = events->bgEvents[bgevtidx].bgUnion.secretBaseId; break; } } } -void sub_80BC038(s16 *position, struct MapEvents *events) +void sub_80BC038(struct MapPosition *position, struct MapEvents *events) { sub_80BBFD8(position, events); sub_80BB5E4(); diff --git a/src/field/shop.c b/src/field/shop.c new file mode 100644 index 000000000..375205935 --- /dev/null +++ b/src/field/shop.c @@ -0,0 +1,1351 @@ +#include "global.h" +#include "shop.h" +#include "decompress.h" +#include "field_fadetransition.h" +#include "field_weather.h" +#include "item_menu.h" +#include "main.h" +#include "menu.h" +#include "menu_helpers.h" +#include "money.h" +#include "palette.h" +#include "script.h" +#include "sound.h" +#include "sprite.h" +#include "strings.h" +#include "task.h" +#include "tv.h" +#include "unknown_task.h" +#include "field_map_obj.h" +#include "field_player_avatar.h" +#include "fieldmap.h" +#include "item.h" +#include "decoration.h" +#include "items.h" +#include "songs.h" +#include "overworld.h" +#include "decoration_inventory.h" +#include "field_camera.h" + +#define ewram18000 ((u16 *)(ewram + 0x18000)) +#define ewram18300 ((u16 *)(ewram + 0x18300)) + +extern bool8 sub_80A52C4(u8, u8); + +extern u8 ewram[]; +extern u8 gBuyMenuFrame_Gfx[]; +extern u16 gBuyMenuFrame_Tilemap[]; +extern u16 gMenuMoneyPal[16]; + +void sub_80B39D0(int var1, int var2, bool32 hasControlCode); +void sub_80B3A70(void); +void sub_80B4378(u8); +void sub_80B43F0(u8); +void Task_ExitBuyMenu(u8); +void sub_80B4470(u8); +void sub_80B2EFC(u8 taskId); +void sub_80B2F30(u8 taskId); +void HandleShopMenuQuit(u8 taskId); +void sub_80B3BF4(u8 taskId); +void sub_80B3D7C(u8 taskId); + +// iwram +static struct MartInfo gMartInfo; + +// ewram +EWRAM_DATA u32 gMartTotalCost = 0; +EWRAM_DATA s16 gUnknown_020386A4[16][4] = {0}; // game freak barely uses 2d arrays wtf? +EWRAM_DATA struct ItemSlot gUnknown_02038724[3] = {0}; // tv.c uses this, so it cant be static +EWRAM_DATA u8 gUnknown_02038730 = 0; +EWRAM_DATA u8 gUnknown_02038731 = 0; + +// rodata +static const struct MenuAction2 sBuySellQuitMenuActions[] = +{ + { MartText_Buy, sub_80B2EFC }, + { MartText_Sell, sub_80B2F30 }, + { MartText_Quit2, HandleShopMenuQuit }, +}; + +static const u8 gUnknown_083CC6E8[] = {0, 1, 2}; // BUY SELL EXIT +static const u8 gUnknown_083CC6EB[] = {0, 2}; // BUY EXIT + +static const u16 gUnusedMartArray[] = {0x2, 0x3, 0x4, 0xD, 0x121, 0xE, 0xE, 0xE, 0xE, 0xE, 0xE, 0x0, 0x0}; + +static const struct YesNoFuncTable gUnknown_083CC708[] = +{ + sub_80B3BF4, + sub_80B3D7C +}; + +u8 CreateShopMenu(u8 martType) +{ + ScriptContext2_Enable(); + gMartInfo.martType = martType; + gMartInfo.cursor = 0; + + if (martType == MART_TYPE_0) + { + gMartInfo.numChoices = 2; + MenuDrawTextWindow(0, 0, 10, 7); + PrintMenuItemsReordered(1, 1, 3, sBuySellQuitMenuActions, gUnknown_083CC6E8); + } + else + { + gMartInfo.numChoices = 1; + MenuDrawTextWindow(0, 0, 10, 5); + PrintMenuItemsReordered(1, 1, 2, sBuySellQuitMenuActions, gUnknown_083CC6EB); + } + InitMenu(0, 1, 1, gMartInfo.numChoices + 1, 0, 9); // add 1 for cancel + + return CreateTask(sub_80B2E38, 8); +} + +void SetShopMenuCallback(void *callbackPtr) +{ + gMartInfo.callback = callbackPtr; +} + +void SetShopItemsForSale(u16 *items) +{ + u16 i = 0; + + gMartInfo.itemList = items; + gMartInfo.itemCount = 0; + + while (gMartInfo.itemList[i]) + { + gMartInfo.itemCount++; + i++; + } +} + +void sub_80B2E38(u8 var) +{ + const u8 local = var; + + if (gMain.newAndRepeatedKeys & DPAD_UP) + { + if (gMartInfo.cursor) // can move cursor up? + { + PlaySE(SE_SELECT); + gMartInfo.cursor = MoveMenuCursor(-1); + } + } + else if (gMain.newAndRepeatedKeys & DPAD_DOWN) + { + if (gMartInfo.cursor != gMartInfo.numChoices) // can move cursor down? + { + PlaySE(SE_SELECT); + gMartInfo.cursor = MoveMenuCursor(1); + } + } + else if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + if (gMartInfo.martType == MART_TYPE_0) + { + sBuySellQuitMenuActions[gUnknown_083CC6E8[gMartInfo.cursor]].func(local); + } + else + { + sBuySellQuitMenuActions[gUnknown_083CC6EB[gMartInfo.cursor]].func(local); + } + } + else if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + HandleShopMenuQuit(local); + } +} + +void sub_80B2EFC(u8 taskId) +{ + gTasks[taskId].data[8] = (u32)BuyMenuDrawGraphics >> 16; + gTasks[taskId].data[9] = (u32)BuyMenuDrawGraphics; + gTasks[taskId].func = sub_80B2FA0; + fade_screen(1, 0); +} + +void sub_80B2F30(u8 taskId) +{ + gTasks[taskId].data[8] = (u32)sub_80A6300 >> 16; + gTasks[taskId].data[9] = (u32)sub_80A6300; + gTasks[taskId].func = sub_80B2FA0; + fade_screen(1, 0); +} + +void HandleShopMenuQuit(u8 taskId) +{ + HandleDestroyMenuCursors(); + MenuZeroFillWindowRect(0, 0, 11, 8); + sub_80BE3BC(); + ScriptContext2_Disable(); + DestroyTask(taskId); + + if (gMartInfo.callback) + gMartInfo.callback(); // run the callback if it exists. +} + +void sub_80B2FA0(u8 taskId) +{ + if (!gPaletteFade.active) + { + SetMainCallback2((void *)((u16)gTasks[taskId].data[8] << 16 | (u16)gTasks[taskId].data[9])); + DestroyTask(taskId); + } +} + +void ReturnToShopMenuAfterExitingSellMenu(u8 taskId) +{ + CreateShopMenu(gMartInfo.martType); + DestroyTask(taskId); +} + +void Task_ExitSellMenu(u8 taskId) +{ + if (sub_807D770() == 1) + { + if (gMartInfo.martType == MART_TYPE_2) + DisplayItemMessageOnField(taskId, gOtherText_CanIHelpYou, ReturnToShopMenuAfterExitingSellMenu, 0); + else + DisplayItemMessageOnField(taskId, gOtherText_AnythingElse, ReturnToShopMenuAfterExitingSellMenu, 0); + } +} + +void sub_80B3050(void) +{ + pal_fill_black(); + CreateTask(Task_ExitSellMenu, 0x8); +} + +void sub_80B3068(u8 taskId) +{ + Task_ExitSellMenu(taskId); +} + +void unref_sub_80B3078(u8 taskId) +{ + gTasks[taskId].func = Task_ExitSellMenu; +} + +void sub_80B3094(void) +{ + AnimateSprites(); + BuildOamBuffer(); + RunTasks(); + UpdatePaletteFade(); +} + +void sub_80B30AC(void) +{ + void *addr; + void *addr2; + void *addr3; + u16 *tempArr; + u16 *tempArr2; + u16 *tempArr3; + + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); + + // temp vars needed to match for some dumb reason + tempArr = gBGTilemapBuffers[1]; + addr = (void *)(VRAM + 0xE800); + DmaCopy16(3, tempArr, addr, 0x800); + tempArr2 = gBGTilemapBuffers[2]; + addr2 = (void *)(VRAM + 0xE000); + DmaCopy16(3, tempArr2, addr2, 0x800); + tempArr3 = gBGTilemapBuffers[3]; + addr3 = (void *)(VRAM + 0xF000); + DmaCopy16(3, tempArr3, addr3, 0x800); +} + +// this function is fugly. pls fix +void BuyMenuDrawGraphics(void) +{ + void *addr; + register u16 zero2 asm("r5"); + + sub_80F9438(); + remove_some_task(); + REG_BG1HOFS = (zero2 = 0); + REG_BG1VOFS = zero2; + REG_BG2HOFS = zero2; + REG_BG2VOFS = zero2; + REG_BG3HOFS = zero2; + REG_BG3VOFS = zero2; + gPaletteFade.bufferTransferDisabled = 1; + addr = (void*)OAM; + { + register const u32 zero asm("r6") = 0; + DmaFill32(3, zero, addr, OAM_SIZE); + LZDecompressVram(gBuyMenuFrame_Gfx, (void*)(VRAM + 0x7C00)); + LZDecompressWram(gBuyMenuFrame_Tilemap, (void *)0x02018000); + LoadCompressedPalette(gMenuMoneyPal, 0xC0, sizeof(gMenuMoneyPal)); + FreeAllSpritePalettes(); + ResetPaletteFade(); + ResetSpriteData(); + ResetTasks(); + SetUpWindowConfig(&gWindowConfig_81E6DFC); + InitMenuWindow(&gWindowConfig_81E6DFC); + BuyMenuDrawMapGraphics(); + gMartInfo.cursor = zero; + gMartInfo.choicesAbove = zero2; + MenuZeroFillWindowRect(0, 0, 0x20, 0x20); + OpenMoneyWindow(gSaveBlock1.money, 0, 0); + sub_80B3764(0, 7); + sub_80B37EC(); + sub_80B3270(); + CreateTask(sub_80B40E8, 0x8); + sub_80B3240(); + asm("":::"r4"); // what?? + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, zero); + gPaletteFade.bufferTransferDisabled = 0; + SetVBlankCallback(sub_80B30AC); + SetMainCallback2(sub_80B3094); + } +} + +void sub_80B3240(void) +{ + u16 tempArr[2] = {0x41EE, 0x7FFF}; + + LoadPalette(&tempArr[1], 0xD1, 2); + LoadPalette(&tempArr[0], 0xD8, 2); +} + +void sub_80B3270(void) +{ + sub_80F944C(); + + if (gMartInfo.itemCount > 7) + { + CreateVerticalScrollIndicators(0, 172, 12); + CreateVerticalScrollIndicators(1, 172, 148); + sub_80F979C(0, 1); + } +} + +void sub_80B32A4(void) +{ + if (gMartInfo.choicesAbove == 0) + sub_80F979C(0, 1); + else + sub_80F979C(0, 0); + + if (gMartInfo.choicesAbove + 7 >= gMartInfo.itemCount) + sub_80F979C(1, 1); + else + sub_80F979C(1, 0); +} + +void sub_80B32EC(u16 *array, s16 offset1, s16 offset2) +{ + array[offset1 + offset2] = 0xC3E1; + array[offset1 + offset2 + 1] = 0xC3E1; +} + +void BuyMenuDrawMapMetatileLayer(u16 *array, s16 offset1, s16 offset2, u16 *array2) +{ + array[offset1 + offset2] = array2[0]; + array[offset1 + offset2 + 1] = array2[1]; + array[offset1 + offset2 + 32] = array2[2]; + array[offset1 + offset2 + 33] = array2[3]; +} + +void BuyMenuDrawMapMetatile(int var1, int var2, u16 *var3, s32 var4) +{ + u8 tempVar4 = var4; + s16 offset1 = var1 * 2; + s16 offset2 = (var2 * 0x40) + 0x40; + + switch (tempVar4) + { + case 0: // _080B335C + BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[2], offset1, offset2, var3); + BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[1], offset1, offset2, var3 + 4); + break; + case 1: // _080B3364 + BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[3], offset1, offset2, var3); + BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[2], offset1, offset2, var3 + 4); + break; + case 2: // _080B3398 + BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[3], offset1, offset2, var3); + BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[1], offset1, offset2, var3 + 4); + break; + } +} + +void sub_80B33D0(s16 var1, int var2, u16 *var3) +{ + s16 offset1 = var1 * 2; + s16 offset2 = (var2 * 0x40) + 0x40; + + BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[3], offset1, offset2, var3); + BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[2], offset1, offset2, var3 + 4); +} + +void sub_80B3420(void) +{ + s16 facingX; + s16 facingY; + s16 x; + s16 y; + + GetXYCoordsOneStepInFrontOfPlayer(&facingX, &facingY); + facingX -= 3; + facingY -= 3; + + for (y = 0; y < 6; y++) + { + for (x = 0; x < 7; x++) + { + u16 metatileId = MapGridGetMetatileIdAt(facingX + x, facingY + y); + + if (y != 5 && x != 6) + { + s32 r3 = MapGridGetMetatileLayerTypeAt(facingX + x, facingY + y); + + if (metatileId < 512) + BuyMenuDrawMapMetatile(x, y, (u16 *)gMapHeader.mapData->primaryTileset->metatiles + metatileId * 8, r3); + else + BuyMenuDrawMapMetatile(x, y, (u16 *)gMapHeader.mapData->secondaryTileset->metatiles + (metatileId - 512) * 8, r3); + } + else + { + if (metatileId < 512) + sub_80B33D0(x, y, (u16 *)gMapHeader.mapData->primaryTileset->metatiles + metatileId * 8); + else + sub_80B33D0(x, y, (u16 *)gMapHeader.mapData->secondaryTileset->metatiles + (metatileId - 512) * 8); + } + + if (y == 0 && x != 0 && x != 6) + sub_80B32EC(gBGTilemapBuffers[1], x * 2, 64); + } + } +} + +void BuyMenuDrawMapGraphics(void) +{ + sub_80F9020(); + sub_80B356C(); + sub_80B368C(); + sub_80B3420(); +} + +void sub_80B356C(void) +{ + s16 facingX; + s16 facingY; + u8 playerHeight; + u8 y; + u8 x; + u8 r8 = 0; + + GetXYCoordsOneStepInFrontOfPlayer(&facingX, &facingY); + playerHeight = PlayerGetZCoord(); + for (y = 0; y < 16; y++) + gUnknown_020386A4[y][MAP_OBJ_ID] = 16; + for (y = 0; y < 5; y++) + { + for (x = 0; x < 7; x++) + { + u8 mapObjId = GetFieldObjectIdByXYZ(facingX - 3 + x, facingY - 2 + y, playerHeight); + + if (mapObjId != 16) + { + gUnknown_020386A4[r8][MAP_OBJ_ID] = mapObjId; + gUnknown_020386A4[r8][X_COORD] = x; + gUnknown_020386A4[r8][Y_COORD] = y; + if (gMapObjects[mapObjId].mapobj_unk_18 == 1) + gUnknown_020386A4[r8][ANIM_NUM] = 0; + if (gMapObjects[mapObjId].mapobj_unk_18 == 2) + gUnknown_020386A4[r8][ANIM_NUM] = 1; + if (gMapObjects[mapObjId].mapobj_unk_18 == 3) + gUnknown_020386A4[r8][ANIM_NUM] = 2; + if (gMapObjects[mapObjId].mapobj_unk_18 == 4) + gUnknown_020386A4[r8][ANIM_NUM] = 3; + r8++; + } + } + } +} + +void sub_80B368C(void) +{ + u8 i; + + for (i = 0; i < 16; i++) // max objects? + { + if (gUnknown_020386A4[i][MAP_OBJ_ID] == 16) + continue; + + StartSpriteAnim(&gSprites[AddPseudoFieldObject( + gMapObjects[gUnknown_020386A4[i][MAP_OBJ_ID]].graphicsId, + SpriteCallbackDummy, + (u16)gUnknown_020386A4[i][X_COORD] * 16 + 8, + (u16)gUnknown_020386A4[i][Y_COORD] * 16 + 32, + 2)], + gUnknown_020386A4[i][ANIM_NUM]); + } +} + +void sub_80B3720(void) +{ + s16 i; + + for (i = 0; i < 0x400; i++) + { + if (ewram18000[i] != 0) + gBGTilemapBuffers[1][i] = ewram18000[i] + 0xC3E0; + } +} + +void sub_80B3764(int var1, int var2) +{ + sub_80B3720(); + sub_80B39D0(var1, var2, 0); + InitMenu(0, 0xE, 0x2, 0x8, gMartInfo.cursor, 0xF); +} + +void sub_80B379C(void) +{ + u16 i, j; + + for (i = 0; i < 8; i++) + for (j = 0; j < 14; j++) + gBGTilemapBuffers[1][32 * (i + 12) + j] = ewram18300[32 * i + j] + 0xC3E0; +} + +void sub_80B37EC(void) +{ + sub_80B3A70(); +} + +void sub_80B37F8(u8 taskId) +{ + u16 itemListIndex = gMartInfo.choicesAbove + gMartInfo.cursor; + u16 itemId = gMartInfo.itemList[itemListIndex]; + u32 price = (ItemId_GetPrice(itemId) >> GetPriceReduction(1)); + + PrintMoneyAmount(gTasks[taskId].data[1] * price, 6, 6, 11); + gStringVar1[0] = EXT_CTRL_CODE_BEGIN; + gStringVar1[1] = 0x14; + gStringVar1[2] = 0x6; + ConvertIntToDecimalStringN(&gStringVar1[3], gTasks[taskId].data[1], 1, 2); + MenuPrint(gOtherText_xString1, 1, 11); + sub_80A3FA0(gBGTilemapBuffers[1], 1, 11, 12, 2, 0xC3E1); +} + +void sub_80B389C(u16 itemId, u8 var2, bool32 hasControlCode) +{ + u8 *stringPtr = gStringVar1; + + if (hasControlCode != FALSE) + { + stringPtr[0] = EXT_CTRL_CODE_BEGIN; + stringPtr[1] = 0x1; + stringPtr[2] = 0x2; + stringPtr += 3; + } + + CopyItemName(itemId, stringPtr); + + sub_8072A18(&gStringVar1[0], 0x70, var2 << 3, 0x58, 0x1); + stringPtr = gStringVar1; + + if (hasControlCode != FALSE) + stringPtr = &gStringVar1[3]; + + GetMoneyAmountText(stringPtr, (ItemId_GetPrice(itemId) >> GetPriceReduction(1)), 0x4); + MenuPrint_PixelCoords(&gStringVar1[0], 0xCA, var2 << 3, 1); +} + +void sub_80B3930(u16 itemId, u8 var2, bool32 hasControlCode) +{ + u8 *stringPtr = gStringVar1; + + if (hasControlCode != FALSE) + { + stringPtr[0] = EXT_CTRL_CODE_BEGIN; + stringPtr[1] = 0x1; + stringPtr[2] = 0x2; + stringPtr += 3; + } + + StringCopy(stringPtr, gDecorations[itemId].name); + sub_8072A18(&gStringVar1[0], 0x70, var2 << 3, 0x58, 0x1); + stringPtr = gStringVar1; + + if (hasControlCode != FALSE) + stringPtr = &gStringVar1[3]; + + if (gDecorations[itemId].price == 10000) + { + sub_80B7B34(0x19, var2, hasControlCode); // huh??? + } + else + { + GetMoneyAmountText(stringPtr, gDecorations[itemId].price, 0x4); + MenuPrint_PixelCoords(&gStringVar1[0], 0xCA, var2 << 3, 0x1); + } +} + +void sub_80B39D0(int var1, int var2, bool32 hasControlCode) +{ + u8 i; + + for (i = var1; i <= var2 && gMartInfo.choicesAbove + i < gMartInfo.itemCount; i++) + { + if (gMartInfo.martType == MART_TYPE_0) + sub_80B389C(gMartInfo.itemList[gMartInfo.choicesAbove + i], (i << 1) + 2, hasControlCode); + else + sub_80B3930(gMartInfo.itemList[gMartInfo.choicesAbove + i], (i << 1) + 2, hasControlCode); + } + + if (i != 8 && gMartInfo.choicesAbove + i == gMartInfo.itemCount) + { + MenuFillWindowRectWithBlankTile(0xE, (i << 1) + 2, 0x1C, (i << 1) + 3); + MenuPrint(gOtherText_CancelNoTerminator, 0xE, (i << 1) + 2); + } +} + +void sub_80B3A70(void) +{ + if (gMartInfo.choicesAbove + gMartInfo.cursor != gMartInfo.itemCount) + { + if (gMartInfo.martType == MART_TYPE_0) + { + sub_8072AB0(ItemId_GetDescription(gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor]), + 0x4, 0x68, 0x68, 0x30, 0); + } + else + sub_8072AB0(gDecorations[gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor]].description, + 0x4, 0x68, 0x68, 0x30, 0); + } + else + { + sub_8072AB0(gOtherText_QuitShopping, 0x4, 0x68, 0x68, 0x30, 0); + } +} + +void sub_80B3AEC(u8 taskId) +{ + if (gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON) + { + sub_80B39D0(gMartInfo.cursor, gMartInfo.cursor, 0); // huh??? + PlaySE(SE_SELECT); + + if (gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor] == ITEM_POKE_BALL && gTasks[taskId].data[1] >= 10 && AddBagItem(ITEM_PREMIER_BALL, 1) == TRUE) + DisplayItemMessageOnField(taskId, gOtherText_FreePremierBall, sub_80B4378, 0xC3E1); + else + sub_80B4378(taskId); + } +} + +void sub_80B3B80(u8 taskId) +{ + IncrementGameStat(0x26); + RemoveMoney(&gSaveBlock1.money, gMartTotalCost); + PlaySE(SE_REGI); + UpdateMoneyWindow(gSaveBlock1.money, 0, 0); + gTasks[taskId].func = sub_80B3AEC; +} + +void sub_80B3BD0(u8 taskId) +{ + sub_80B39D0(gMartInfo.cursor, gMartInfo.cursor, 0); // same thing as above? + sub_80B4378(taskId); +} + +void sub_80B3BF4(u8 taskId) +{ + MenuZeroFillWindowRect(0x7, 0x8, 0xD, 0xD); + sub_80A3FA0(gBGTilemapBuffers[1], 8, 9, 4, 4, 0); + sub_80B379C(); + sub_80B3420(); + + if (IsEnoughMoney(gSaveBlock1.money, gMartTotalCost)) + { + if (gMartInfo.martType == MART_TYPE_0) + { + if (AddBagItem(gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor], gTasks[taskId].data[1])) + { + DisplayItemMessageOnField(taskId, gOtherText_HereYouGo, sub_80B3B80, 0xC3E1); + sub_80B4470(taskId); + } + else + DisplayItemMessageOnField(taskId, gOtherText_NoRoomFor, sub_80B3BD0, 0xC3E1); + } + else // a normal mart is only type 0, so types 1 and 2 are decoration marts. + { + if (IsThereStorageSpaceForDecoration(gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor])) + { + if (gMartInfo.martType == MART_TYPE_1) + DisplayItemMessageOnField(taskId, gOtherText_HereYouGo2, sub_80B3B80, 0xC3E1); + else + DisplayItemMessageOnField(taskId, gOtherText_HereYouGo3, sub_80B3B80, 0xC3E1); + } + else + { + StringExpandPlaceholders(gStringVar4, gOtherText_SpaceForIsFull); + DisplayItemMessageOnField(taskId, gStringVar4, sub_80B3BD0, 0xC3E1); + } + } + } + else + DisplayItemMessageOnField(taskId, gOtherText_NotEnoughMoney, sub_80B3BD0, 0xC3E1); +} + +void sub_80B3D38(u8 taskId) +{ + DisplayYesNoMenu(7, 8, 1); + sub_80A3FA0(gBGTilemapBuffers[1], 8, 9, 4, 4, 0xC3E1); + DoYesNoFuncWithChoice(taskId, gUnknown_083CC708); +} + +void sub_80B3D7C(u8 taskId) +{ + sub_80B39D0(gMartInfo.cursor, gMartInfo.cursor, 0); + MenuZeroFillWindowRect(0x7, 0x8, 0xD, 0xD); + sub_80A3FA0(gBGTilemapBuffers[1], 0x8, 0x9, 0x4, 0x4, 0); + sub_80B4378(taskId); +} + +void sub_80B3DC8(u8 taskId) +{ + if (sub_80A52C4(taskId, gMartInfo.curItemCount) == TRUE) + sub_80B37F8(taskId); + + if (gMain.newKeys & A_BUTTON) + { + gMartTotalCost = (ItemId_GetPrice(gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor]) >> GetPriceReduction(1)) * gTasks[taskId].data[1]; // set total cost of your purchase. + MenuZeroFillWindowRect(0, 0xA, 0xD, 0xD); + sub_80A3FA0(gBGTilemapBuffers[1], 0x1, 0xB, 0xC, 0x2, 0); + sub_80B379C(); + sub_80B3420(); + CopyItemName(gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor], gStringVar1); + ConvertIntToDecimalStringN(gStringVar2, gTasks[taskId].data[1], 0, 0x2); + ConvertIntToDecimalStringN(gStringVar3, gMartTotalCost, 0, 0x8); + StringExpandPlaceholders(gStringVar4, gOtherText_ThatWillBe); + DisplayItemMessageOnField(taskId, gStringVar4, sub_80B3D38, 0xC3E1); + } + else if (gMain.newKeys & B_BUTTON) + { + sub_80B39D0(gMartInfo.cursor, gMartInfo.cursor, 0); + sub_80B4378(taskId); + } +} + +void sub_80B3EFC(u8 taskId) +{ + u16 var; + + gTasks[taskId].data[1] = 1; + MenuDrawTextWindow(0, 0xA, 0xD, 0xD); + sub_80B37F8(taskId); + + var = gSaveBlock1.money / (ItemId_GetPrice(gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor]) >> GetPriceReduction(1)); + if (var > 99) + gMartInfo.curItemCount = 99; + else + gMartInfo.curItemCount = var; + + gTasks[taskId].func = sub_80B3DC8; +} + +#ifdef NONMATCHING +void sub_80B3F88(void) +{ + u16 *r1; + u16 *r2; + register u8 *r10 asm("r10"); + s32 i; + s32 j; + struct Window *r8 = &gMenuWindow; + + r1 = r8->tilemap; + r1 += 0x1EF; + r2 = r1; + r2 += 64; + r10 = r8->tileData; + + for (i = 0; i < 14; i++) + { + for (j = 0; j < 15; j++) + { + if ((r1[j] & 0x3FF) <= r8->tileDataStartOffset + 1) + r2[j] = r8->tileDataStartOffset + 1; + else + r2[j] = r1[j] + 0x3C; + } + + r1 -= 32; + r2 -= 32; + } + + { + u8 *r1 = r10 + 0x3A20; + u8 *r2 = r1 + 0x780; + for (i = 0; i < 14; i++) + { + DmaCopy16(3, r1, r2, 0x1E0); + r2 -= 0x3C0; + r1 -= 0x3C0; + } + } +} +#else +__attribute__((naked)) +void sub_80B3F88(void) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + sub sp, 0x4\n\ + ldr r0, _080B4020 @ =gMenuWindow\n\ + mov r8, r0\n\ + ldr r1, [r0, 0x28]\n\ + ldr r3, _080B4024 @ =0x000003de\n\ + adds r1, r3\n\ + adds r2, r1, 0\n\ + adds r2, 0x80\n\ + ldr r7, [r0, 0x24]\n\ + mov r10, r7\n\ + ldr r0, _080B4028 @ =0x000003ff\n\ + mov r9, r0\n\ + movs r6, 0xD\n\ +_080B3FAC:\n\ + adds r3, r2, 0\n\ + subs r3, 0x40\n\ + str r3, [sp]\n\ + movs r7, 0x40\n\ + negs r7, r7\n\ + adds r7, r1\n\ + mov r12, r7\n\ + adds r3, r2, 0\n\ + adds r4, r1, 0\n\ + movs r5, 0xE\n\ +_080B3FC0:\n\ + ldrh r2, [r4]\n\ + mov r1, r9\n\ + ands r1, r2\n\ + mov r7, r8\n\ + ldrh r0, [r7, 0x1A]\n\ + adds r0, 0x1\n\ + cmp r1, r0\n\ + ble _080B3FD4\n\ + adds r0, r2, 0\n\ + adds r0, 0x3C\n\ +_080B3FD4:\n\ + strh r0, [r3]\n\ + adds r3, 0x2\n\ + adds r4, 0x2\n\ + subs r5, 0x1\n\ + cmp r5, 0\n\ + bge _080B3FC0\n\ + ldr r2, [sp]\n\ + mov r1, r12\n\ + subs r6, 0x1\n\ + cmp r6, 0\n\ + bge _080B3FAC\n\ + ldr r1, _080B402C @ =0x00003a20\n\ + add r1, r10\n\ + movs r0, 0xF0\n\ + lsls r0, 3\n\ + adds r2, r1, r0\n\ + ldr r3, _080B4030 @ =0x040000d4\n\ + ldr r5, _080B4034 @ =0x800000f0\n\ + ldr r4, _080B4038 @ =0xfffffc40\n\ + movs r6, 0xD\n\ +_080B3FFC:\n\ + str r1, [r3]\n\ + str r2, [r3, 0x4]\n\ + str r5, [r3, 0x8]\n\ + ldr r0, [r3, 0x8]\n\ + adds r2, r4\n\ + adds r1, r4\n\ + subs r6, 0x1\n\ + cmp r6, 0\n\ + bge _080B3FFC\n\ + add sp, 0x4\n\ + pop {r3-r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_080B4020: .4byte gMenuWindow\n\ +_080B4024: .4byte 0x000003de\n\ +_080B4028: .4byte 0x000003ff\n\ +_080B402C: .4byte 0x00003a20\n\ +_080B4030: .4byte 0x040000d4\n\ +_080B4034: .4byte 0x800000f0\n\ +_080B4038: .4byte 0xfffffc40\n\ + .syntax divided"); +} +#endif + +#ifdef NONMATCHING +void sub_80B403C(void) +{ + u16 *r1; + u16 *r2; + u8 *r10; + s32 i; + s32 j; + struct Window *r8 = &gMenuWindow; + + r1 = r8->tilemap; + r1 += 0x4F; + r2 = r1; + r2 += 64; + r10 = r8->tileData; + + for (i = 0; i < 14; i++) + { + for (j = 0; j < 15; j++) + { + if ((r1[j] & 0x3FF) <= r8->tileDataStartOffset + 1) + r2[j] = r8->tileDataStartOffset + 1; + else + r2[j] = r1[j] + 0x3C; + } + + r1 += 32; + r2 += 32; + } + + { + register u8 *r1 asm("r1") = r10 + 0x960; + register u8 *r2 asm("r2") = r1; + + r1 += 0x780; + for (i = 0; i < 14; i++) + { + DmaCopy16(3, r1, r2, 0x1E0); + r1 += 0x3C0; + r2 += 0x3C0; + } + } +} +#else +__attribute__((naked)) +void sub_80B403C(void) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + sub sp, 0x4\n\ + ldr r0, _080B40D8 @ =gMenuWindow\n\ + mov r8, r0\n\ + ldr r2, [r0, 0x28]\n\ + adds r1, r2, 0\n\ + adds r1, 0x9E\n\ + adds r2, r1, 0\n\ + adds r1, 0x80\n\ + ldr r3, [r0, 0x24]\n\ + mov r10, r3\n\ + ldr r7, _080B40DC @ =0x000003ff\n\ + mov r9, r7\n\ + movs r6, 0xD\n\ +_080B4060:\n\ + adds r0, r2, 0\n\ + adds r0, 0x40\n\ + str r0, [sp]\n\ + movs r3, 0x40\n\ + adds r3, r1\n\ + mov r12, r3\n\ + adds r3, r2, 0\n\ + adds r4, r1, 0\n\ + movs r5, 0xE\n\ +_080B4072:\n\ + ldrh r2, [r4]\n\ + mov r1, r9\n\ + ands r1, r2\n\ + mov r7, r8\n\ + ldrh r0, [r7, 0x1A]\n\ + adds r0, 0x1\n\ + cmp r1, r0\n\ + ble _080B4086\n\ + adds r0, r2, 0\n\ + subs r0, 0x3C\n\ +_080B4086:\n\ + strh r0, [r3]\n\ + adds r3, 0x2\n\ + adds r4, 0x2\n\ + subs r5, 0x1\n\ + cmp r5, 0\n\ + bge _080B4072\n\ + ldr r2, [sp]\n\ + mov r1, r12\n\ + subs r6, 0x1\n\ + cmp r6, 0\n\ + bge _080B4060\n\ + movs r1, 0x96\n\ + lsls r1, 4\n\ + add r1, r10\n\ + adds r2, r1, 0\n\ + movs r0, 0xF0\n\ + lsls r0, 3\n\ + adds r1, r0\n\ + ldr r3, _080B40E0 @ =0x040000d4\n\ + ldr r5, _080B40E4 @ =0x800000f0\n\ + movs r4, 0xF0\n\ + lsls r4, 2\n\ + movs r6, 0xD\n\ +_080B40B4:\n\ + str r1, [r3]\n\ + str r2, [r3, 0x4]\n\ + str r5, [r3, 0x8]\n\ + ldr r0, [r3, 0x8]\n\ + adds r2, r4\n\ + adds r1, r4\n\ + subs r6, 0x1\n\ + cmp r6, 0\n\ + bge _080B40B4\n\ + add sp, 0x4\n\ + pop {r3-r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_080B40D8: .4byte gMenuWindow\n\ +_080B40DC: .4byte 0x000003ff\n\ +_080B40E0: .4byte 0x040000d4\n\ +_080B40E4: .4byte 0x800000f0\n\ + .syntax divided"); +} +#endif + +void sub_80B40E8(u8 taskId) // Mart_DoCursorAction +{ + if (!gPaletteFade.active) + { + if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_UP) // only up can be pressed + { + if (gMartInfo.cursor == 0) + { + if (gMartInfo.choicesAbove == 0) // if there are no choices above, dont bother + return; + + PlaySE(SE_SELECT); + gMartInfo.choicesAbove--; // since cursor is at the top and there are choices above the top, scroll the menu up by updating choicesAbove. + sub_80B3F88(); + sub_80B39D0(0, 0, 0); + sub_80B3A70(); + sub_80B32A4(); + } + else // if the cursor is not 0, choicesAbove cannot be updated yet since the cursor is at the top of the menu, so update cursor. + { + PlaySE(SE_SELECT); + gMartInfo.cursor = MoveMenuCursor(-1); // move cursor up + sub_80B3A70(); + } + } + else if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_DOWN) // only down can be pressed + { + if (gMartInfo.cursor == 7) // are you at the bottom of the menu? + { + if (gMartInfo.choicesAbove + gMartInfo.cursor == gMartInfo.itemCount) // are you at cancel? + return; + + PlaySE(SE_SELECT); + gMartInfo.choicesAbove++; + sub_80B403C(); + sub_80B39D0(7, 7, 0); + sub_80B3A70(); + sub_80B32A4(); + } + else if (gMartInfo.cursor != gMartInfo.itemCount) + { + PlaySE(SE_SELECT); + gMartInfo.cursor = MoveMenuCursor(1); + sub_80B3A70(); + } + } + else if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + + if (gMartInfo.choicesAbove + gMartInfo.cursor != gMartInfo.itemCount) // did you not hit CANCEL? + { + PauseVerticalScrollIndicator(0); + PauseVerticalScrollIndicator(1); + sub_80F979C(1, 1); + sub_80B39D0(gMartInfo.cursor, gMartInfo.cursor, 1); + HandleDestroyMenuCursors(); + MenuZeroFillWindowRect(0, 0xC, 0xD, 0x13); + + if (gMartInfo.martType == MART_TYPE_0) + { + gMartTotalCost = (ItemId_GetPrice(gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor]) >> GetPriceReduction(1)); // set 1x price + if (!IsEnoughMoney(gSaveBlock1.money, gMartTotalCost)) + { + DisplayItemMessageOnField(taskId, gOtherText_NotEnoughMoney, sub_80B3BD0, 0xC3E1); // tail merge + } + else // _080B42BA + { + CopyItemName(gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor], gStringVar1); + StringExpandPlaceholders(gStringVar4, gOtherText_HowManyYouWant); + DisplayItemMessageOnField(taskId, gStringVar4, sub_80B3EFC, 0xC3E1); + } + } + else // _080B428C + { + gMartTotalCost = gDecorations[gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor]].price; + + if (!IsEnoughMoney(gSaveBlock1.money, gMartTotalCost)) + { + DisplayItemMessageOnField(taskId, gOtherText_NotEnoughMoney, sub_80B3BD0, 0xC3E1); // tail merge + } + else + { + StringCopy(gStringVar1, gDecorations[gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor]].name); + ConvertIntToDecimalStringN(gStringVar2, gMartTotalCost, 0, 0x8); + + if (gMartInfo.martType == MART_TYPE_1) + { + StringExpandPlaceholders(gStringVar4, gOtherText_ThatWillBe2); + } + else + { + StringExpandPlaceholders(gStringVar4, gOtherText_ThatWillBe3); + } + DisplayItemMessageOnField(taskId, gStringVar4, sub_80B3D38, 0xC3E1); + } + } + } + else + sub_80B43F0(taskId); + } + else if (gMain.newKeys & B_BUTTON) // go back to buy/sell/exit menu + { + PlaySE(SE_SELECT); + sub_80B43F0(taskId); + } + } +} + +void sub_80B4378(u8 taskId) +{ + MenuZeroFillWindowRect(0, 0xE, 0x1D, 0x13); + MenuZeroFillWindowRect(0, 0xA, 0xD, 0xD); + sub_80A3FA0(gBGTilemapBuffers[1], 0x1, 0xB, 0xC, 0x2, 0); + sub_80B3420(); + sub_80B3764(6, 7); + sub_80B37EC(); + StartVerticalScrollIndicators(0); + StartVerticalScrollIndicators(1); + sub_80B32A4(); + gTasks[taskId].func = sub_80B40E8; +} + +void sub_80B43F0(u8 taskId) +{ + gFieldCallback = sub_80B3050; + BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); + gTasks[taskId].func = Task_ExitBuyMenu; +} + +void Task_ExitBuyMenu(u8 taskId) +{ + if (!gPaletteFade.active) + { + CloseMoneyWindow(0, 0); + BuyMenuFreeMemory(); + SetMainCallback2(c2_exit_to_overworld_2_switch); + DestroyTask(taskId); + } +} + +void sub_80B4470(u8 taskId) +{ + u16 i; + + for (i = 0; i < 3; i++) + { + if (gUnknown_02038724[i].itemId == gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor] + && gUnknown_02038724[i].quantity != 0) + { + if (gUnknown_02038724[i].quantity + gTasks[taskId].data[1] > 255) + gUnknown_02038724[i].quantity = 255; + else + gUnknown_02038724[i].quantity += gTasks[taskId].data[1]; + return; + } + } + + if (gUnknown_02038730 < 3) + { + gUnknown_02038724[gUnknown_02038730].itemId = gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor]; + gUnknown_02038724[gUnknown_02038730].quantity = gTasks[taskId].data[1]; + gUnknown_02038730++; + } +} + +void ClearItemPurchases(void) +{ + gUnknown_02038730 = 0; + ClearItemSlots(gUnknown_02038724, 3); +} + +void CreatePokemartMenu(u16 *itemList) +{ + CreateShopMenu(MART_TYPE_0); + SetShopItemsForSale(itemList); + ClearItemPurchases(); + SetShopMenuCallback(EnableBothScriptContexts); +} + +void CreateDecorationShop1Menu(u16 *itemList) +{ + CreateShopMenu(MART_TYPE_1); + SetShopItemsForSale(itemList); + SetShopMenuCallback(EnableBothScriptContexts); +} + +void CreateDecorationShop2Menu(u16 *itemList) +{ + CreateShopMenu(MART_TYPE_2); + SetShopItemsForSale(itemList); + SetShopMenuCallback(EnableBothScriptContexts); +} + +void sub_80B45B4(u8 taskId, const s16 *list, u16 c) +{ + s16 r5 = gTasks[taskId].data[4] - 1; + s16 r3 = gTasks[taskId].data[5] - 1; + s16 r4 = gTasks[taskId].data[1]; + s16 y; + s16 x; + + if (gTasks[taskId].data[2] == 0) + { + for (y = 0; y < 3; y++) + { + for (x = 0; x < 3; x++) + { + s16 metatileId = MapGridGetMetatileIdAt(r5 + x, r3 + y); + + if (list[r4] == metatileId) + { + if (r4 != 2) + MapGridSetMetatileIdAt(r5 + x, r3 + y, c | list[r4 + 1]); + else + MapGridSetMetatileIdAt(r5 + x, r3 + y, c | list[0]); + } + } + } + } + else + { + for (y = 0; y < 3; y++) + { + for (x = 0; x < 3; x++) + { + s16 metatileId = MapGridGetMetatileIdAt(r5 + x, r3 + y); + + if (list[2 - r4] == metatileId) + { + if (r4 != 2) + MapGridSetMetatileIdAt(r5 + x, r3 + y, c | list[1 - r4]); + else + MapGridSetMetatileIdAt(r5 + x, r3 + y, c | list[2]); + } + } + } + } +} + +static const u16 gUnknown_083CC714[] = {0x284, 0x282, 0x280}; +static const u16 gUnknown_083CC71A[] = {0x285, 0x283, 0x281}; +static const u16 gUnknown_083CC720[] = {0x28C, 0x28A, 0x288}; +static const u16 gUnknown_083CC726[] = {0x28D, 0x28B, 0x289}; +static const u16 gUnknown_083CC72C[] = {0x2A0, 0x2A2, 0x2A4}; +static const u16 gUnknown_083CC732[] = {0x2A1, 0x2A3, 0x2A5}; +static const u16 gUnknown_083CC738[] = {0x2A8, 0x2AA, 0x2AC}; + +void sub_80B4710(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + + data[3] = 1; + + switch (data[0]) + { + case 0: + sub_80B45B4(taskId, gUnknown_083CC714, 0); + break; + case 1: + sub_80B45B4(taskId, gUnknown_083CC71A, 0); + break; + case 2: + sub_80B45B4(taskId, gUnknown_083CC720, 0xC00); + break; + case 3: + sub_80B45B4(taskId, gUnknown_083CC726, 0); + break; + case 4: + sub_80B45B4(taskId, gUnknown_083CC72C, 0xC00); + break; + case 5: + sub_80B45B4(taskId, gUnknown_083CC732, 0); + break; + case 6: + sub_80B45B4(taskId, gUnknown_083CC738, 0); + break; + } + + data[0] = (data[0] + 1) & 7; + if (!data[0]) + { + DrawWholeMapView(); + data[1] = (data[1] + 1) % 3; + data[3] = 0; + } +} + +u8 sub_80B47D8(u16 var) +{ + u8 taskId = CreateTask(sub_80B4710, 0); + s16 *data = gTasks[taskId].data; + + PlayerGetDestCoords(&data[4], &data[5]); + data[0] = 0; + data[1] = 0; + data[2] = var; + sub_80B4710(taskId); + return taskId; +} + +void sub_80B4824(u8 var) +{ + gUnknown_02038731 = sub_80B47D8(var); +} + +void sub_80B483C(void) +{ + DestroyTask(gUnknown_02038731); +} + +bool8 sub_80B4850(void) +{ + if (gTasks[gUnknown_02038731].data[3] == 0 && gTasks[gUnknown_02038731].data[1] == 2) + return FALSE; + else + return TRUE; +} diff --git a/src/slot_machine.c b/src/field/slot_machine.c similarity index 98% rename from src/slot_machine.c rename to src/field/slot_machine.c index c9a06a758..e8e4f271b 100644 --- a/src/slot_machine.c +++ b/src/field/slot_machine.c @@ -71,7 +71,7 @@ void sub_8106448(void) { u32 offsetRead, offsetWrite; u32 size; - sub_800D238(gSlotMachine_Gfx, (void *) 0x02010000); + LZDecompressWram(gSlotMachine_Gfx, (void *) 0x02010000); offsetRead = 0x02010000; offsetWrite = BG_VRAM; diff --git a/src/start_menu.c b/src/field/start_menu.c similarity index 99% rename from src/start_menu.c rename to src/field/start_menu.c index e05f3a999..6e44090df 100644 --- a/src/start_menu.c +++ b/src/field/start_menu.c @@ -15,7 +15,7 @@ #include "pokedex.h" #include "pokemon_menu.h" #include "pokenav.h" -#include "rom4.h" +#include "overworld.h" #include "safari_zone.h" #include "save.h" #include "save_menu_util.h" @@ -51,9 +51,11 @@ static bool8 savingComplete; extern bool8 gDifferentSaveFile; extern u16 gSaveFileStatus; extern u16 gScriptResult; -extern u8 (*gCallback_03004AE8)(void); + extern u8 gUnknown_03004860; +u8 (*gCallback_03004AE8)(void); + EWRAM_DATA static u8 sStartMenuCursorPos = 0; EWRAM_DATA static u8 sNumStartMenuActions = 0; EWRAM_DATA static u8 sCurrentStartMenuActions[10] = {0}; @@ -503,7 +505,7 @@ static u8 RunSaveDialogCallback(void) return saveDialogCallback(); } -void InitSaveDialog(void) +void ScrSpecial_DoSaveDialog(void) { sub_807160C(); CreateTask(Task_SaveDialog, 0x50); @@ -513,7 +515,7 @@ static void DisplaySaveMessageWithCallback(const u8 *ptr, u8 (*func)(void)) { StringExpandPlaceholders(gStringVar4, ptr); MenuDisplayMessageBox(); - sub_8072044(gStringVar4); + MenuPrintMessageDefaultCoords(gStringVar4); savingComplete = TRUE; saveDialogCallback = func; } diff --git a/src/starter_choose.c b/src/field/starter_choose.c similarity index 100% rename from src/starter_choose.c rename to src/field/starter_choose.c diff --git a/src/field/trader.c b/src/field/trader.c new file mode 100644 index 000000000..61f48fad8 --- /dev/null +++ b/src/field/trader.c @@ -0,0 +1,262 @@ +#include "global.h" +#include "decoration.h" +#include "decoration_inventory.h" +#include "event_data.h" +#include "main.h" +#include "mauville_man.h" +#include "menu.h" +#include "menu_helpers.h" +#include "script.h" +#include "songs.h" +#include "sound.h" +#include "string_util.h" +#include "strings.h" +#include "task.h" + +extern u16 gSpecialVar_0x8004; +extern u16 gSpecialVar_0x8005; +extern u16 gSpecialVar_0x8006; + +static const u8 * const gUnknown_083F62D8[] = +{ + SecretBaseText_Tristan, + SecretBaseText_Philip, + SecretBaseText_Dennis, + SecretBaseText_Roberto, +}; + +static const u8 gTraderDecorations[] = +{ + DECOR_DUSKULL_DOLL, + DECOR_BALL_CUSHION, + DECOR_TIRE, + DECOR_PRETTY_FLOWERS, +}; + +void sub_810993C(void) +{ + u8 i, j; + u8 buffer[12]; + struct MauvilleManTrader *trader = &gSaveBlock1.mauvilleMan.trader; + + for (i = 0; i < 3; i++) + { + for (j = i + 1; j < 4; j++) + { + if (trader->unk1[i] == 0) + { + u8 temp = trader->unk1[i]; + trader->unk1[i] = trader->unk1[j]; + trader->unk1[j] = temp; + StringCopy(buffer, trader->unk5[i]); + StringCopy(trader->unk5[i], trader->unk5[j]); + StringCopy(trader->unk5[j], buffer); + } + } + } +} + +void TraderSetup(void) +{ + u8 i; + struct MauvilleManTrader *trader = &gSaveBlock1.mauvilleMan.trader; + + trader->id = MAUVILLE_MAN_TRADER; + trader->alreadyTraded = FALSE; + + for (i = 0; i < 4; i++) + { + StringCopy(trader->unk5[i], gUnknown_083F62D8[i]); + trader->unk1[i] = gTraderDecorations[i]; + } + + sub_810993C(); +} + +void sub_8109A20(void) +{ + struct MauvilleManTrader *trader = &gSaveBlock1.mauvilleMan.trader; + trader->alreadyTraded = FALSE; +} + +void sub_8109A30(u8 value) +{ + VarSet(VAR_RECYCLE_GOODS, value); +} + +void CreateAvailableDecorationsMenu(u8 taskId) +{ + u8 i; + u8 numChoices = 1; + u8 numDecorations = 0; + struct MauvilleManTrader *trader = &gSaveBlock1.mauvilleMan.trader; + + for (i = 0; i < 4; i++) + { + if (trader->unk1[i]) + { + numChoices++; + } + } + + MenuDrawTextWindow(0, 1, 12, numChoices * 2 + 2); + + for (i = 0; i < 4; i++) + { + if (trader->unk1[i]) + { + if (trader->unk1[i] > DECOR_REGISTEEL_DOLL) + { + MenuPrint(gOtherText_FiveQuestionsAndSlash, 1, numDecorations * 2 + 2); + } + else + { + MenuPrint(gDecorations[trader->unk1[i]].name, 1, numDecorations * 2 + 2); + } + + numDecorations++; + } + } + + MenuPrint(gOtherText_CancelNoTerminator, 1, numDecorations * 2 + 2); + InitMenu(0, 1, 2, numChoices, 0, 11); + gTasks[taskId].data[1] = numDecorations; +} + +void sub_8109B34(u8 taskId, u8 decorationId) +{ + if (decorationId > DECOR_REGISTEEL_DOLL) + { + gSpecialVar_0x8004 = 0xFFFF; + } + else + { + gSpecialVar_0x8004 = decorationId; + } + + HandleDestroyMenuCursors(); + MenuZeroFillWindowRect(0, 1, 12, 12); + DestroyTask(taskId); + EnableBothScriptContexts(); +} + +void Task_HandleGetDecorationMenuInput(u8 taskId) +{ + struct MauvilleManTrader *trader = &gSaveBlock1.mauvilleMan.trader; + + if (gMain.newKeys & DPAD_UP) + { + PlaySE(SE_SELECT); + MoveMenuCursor(-1); + } + else if (gMain.newKeys & DPAD_DOWN) + { + PlaySE(SE_SELECT); + MoveMenuCursor(1); + } + else if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + gSpecialVar_0x8005 = GetMenuCursorPos(); + if (gTasks[taskId].data[1] == gSpecialVar_0x8005) + { + sub_8109B34(taskId, 0); + } + else + { + StringCopy(gStringVar1, trader->unk5[gSpecialVar_0x8005]); + sub_8109B34(taskId, trader->unk1[gSpecialVar_0x8005]); + } + } + else if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + sub_8109B34(taskId, 0); + } +} + +void ScrSpecial_GetTraderTradedFlag(void) +{ + struct MauvilleManTrader *trader = &gSaveBlock1.mauvilleMan.trader; + gScriptResult = trader->alreadyTraded; +} + +void ScrSpecial_DoesPlayerHaveNoDecorations(void) +{ + u8 i; + + for (i = 0; i < 8; i++) + { + if (sub_8134194(i)) + { + gScriptResult = FALSE; + return; + } + } + gScriptResult = TRUE; +} + +void ScrSpecial_IsDecorationFull(void) +{ + gScriptResult = FALSE; + if (gDecorations[gSpecialVar_0x8004].category != gDecorations[gSpecialVar_0x8006].category + && sub_8133F9C(gDecorations[gSpecialVar_0x8004].category) == -1) + { + sub_80FE7D4(gStringVar2, gDecorations[gSpecialVar_0x8004].category); + gScriptResult = TRUE; + } +} + +void ScrSpecial_TraderMenuGiveDecoration(void) +{ + CreateTask(sub_80FE7A8, 0); +} + +void sub_8109D04(u8 taskId) +{ + HandleDestroyMenuCursors(); + MenuZeroFillWindowRect(0, 0, 29, 19); + DestroyVerticalScrollIndicator(0); + DestroyVerticalScrollIndicator(1); + sub_80F9520(gUnknown_020388F7, 8); + BuyMenuFreeMemory(); + if (sub_80FEFA4() == TRUE) + { + gSpecialVar_0x8006 = gUnknown_020388D0[gUnknown_020388F5]; + StringCopy(gStringVar3, gDecorations[gSpecialVar_0x8004].name); + StringCopy(gStringVar2, gDecorations[gSpecialVar_0x8006].name); + } + else + { + gSpecialVar_0x8006 = 0xFFFF; + } + DestroyTask(taskId); + EnableBothScriptContexts(); +} + +void sub_8109DAC(u8 taskId) +{ + HandleDestroyMenuCursors(); + MenuZeroFillWindowRect(0, 0, 29, 19); + gSpecialVar_0x8006 = 0; + DestroyTask(taskId); + EnableBothScriptContexts(); +} + +void ScrSpecial_TraderDoDecorationTrade(void) +{ + struct MauvilleManTrader *trader = &gSaveBlock1.mauvilleMan.trader; + + sub_81340A8(gSpecialVar_0x8006); + IsThereStorageSpaceForDecoration(gSpecialVar_0x8004); + StringCopy(trader->unk5[gSpecialVar_0x8005], gSaveBlock2.playerName); + trader->unk1[gSpecialVar_0x8005] = gSpecialVar_0x8006; + sub_810993C(); + trader->alreadyTraded = TRUE; +} + +void ScrSpecial_TraderMenuGetDecoration(void) +{ + u8 taskId = CreateTask(Task_HandleGetDecorationMenuInput, 0); + CreateAvailableDecorationsMenu(taskId); +} diff --git a/src/field/trainer_see.c b/src/field/trainer_see.c new file mode 100644 index 000000000..5a8ebbafc --- /dev/null +++ b/src/field/trainer_see.c @@ -0,0 +1,519 @@ +#include "global.h" +#include "trainer_see.h" +#include "battle_setup.h" +#include "field_effect.h" +#include "field_map_obj.h" +#include "field_player_avatar.h" +#include "script.h" +#include "sprite.h" +#include "task.h" +#include "util.h" + +const u8 gSpriteImage_839B308[] = INCBIN_U8("graphics/unknown_sprites/839B4E0/0.4bpp"); +const u8 gSpriteImage_839B388[] = INCBIN_U8("graphics/unknown_sprites/839B4E0/1.4bpp"); +const u8 gSpriteImage_839B408[] = INCBIN_U8("graphics/unknown_sprites/839B408.4bpp"); + +u8 GetTrainerApproachDistanceSouth(struct MapObject *trainerObj, s16 range, s16 x, s16 y); +u8 GetTrainerApproachDistanceNorth(struct MapObject *trainerObj, s16 range, s16 x, s16 y); +u8 GetTrainerApproachDistanceWest(struct MapObject *trainerObj, s16 range, s16 x, s16 y); +u8 GetTrainerApproachDistanceEast(struct MapObject *trainerObj, s16 range, s16 x, s16 y); + +static u8 (*const sDirectionalApproachDistanceFuncs[])(struct MapObject *, s16, s16, s16) = +{ + GetTrainerApproachDistanceSouth, + GetTrainerApproachDistanceNorth, + GetTrainerApproachDistanceWest, + GetTrainerApproachDistanceEast, +}; + +extern struct SpriteTemplate gSpriteTemplate_839B510; +extern struct SpriteTemplate gSpriteTemplate_839B528; + +bool8 CheckTrainers(void) +{ + u8 mapObjId; + + for (mapObjId = 0; mapObjId < 16; mapObjId++) + { + if (gMapObjects[mapObjId].active + && (gMapObjects[mapObjId].trainerType == 1 || gMapObjects[mapObjId].trainerType == 3) + && CheckTrainer(mapObjId)) + return TRUE; + } + return FALSE; +} + +bool8 CheckTrainer(u8 mapObjId) +{ + u8 *scriptPtr = GetFieldObjectScriptPointerByFieldObjectId(mapObjId); + + if (GetTrainerFlagFromScriptPointer(scriptPtr)) + { + return FALSE; + } + else + { + struct MapObject *trainerObj = &gMapObjects[mapObjId]; + bool8 canApproach = TrainerCanApproachPlayer(trainerObj); + + if (canApproach) + { + TrainerWantsBattle(mapObjId, scriptPtr); + sub_80842C8(trainerObj, (canApproach - 1)); + return TRUE; + } + else + { + return FALSE; + } + } +} + +bool8 TrainerCanApproachPlayer(struct MapObject *trainerObj) +{ + s16 x, y; + u8 i; + u8 approachDistance; + + PlayerGetDestCoords(&x, &y); + if (trainerObj->trainerType == 1) // can only see in one direction + { + approachDistance = sDirectionalApproachDistanceFuncs[trainerObj->mapobj_unk_18 - 1](trainerObj, trainerObj->trainerRange_berryTreeId, x, y); + return CheckPathBetweenTrainerAndPlayer((struct MapObject2 *)trainerObj, approachDistance, trainerObj->mapobj_unk_18); + } + else // can see in all directions + { + for (i = 0; i < 4; i++) + { + approachDistance = sDirectionalApproachDistanceFuncs[i](trainerObj, trainerObj->trainerRange_berryTreeId, x, y); + if (CheckPathBetweenTrainerAndPlayer((struct MapObject2 *)trainerObj, approachDistance, i + 1)) // directions are 1-4 instead of 0-3. south north west east + return approachDistance; + } + } + return FALSE; +} + +// Returns how far south the player is from trainer. 0 if out of trainer's sight. +u8 GetTrainerApproachDistanceSouth(struct MapObject *trainerObj, s16 range, s16 x, s16 y) +{ + if (trainerObj->coords2.x == x + && y > trainerObj->coords2.y + && y <= trainerObj->coords2.y + range) + return (y - trainerObj->coords2.y); + else + return 0; +} + +// Returns how far north the player is from trainer. 0 if out of trainer's sight. +u8 GetTrainerApproachDistanceNorth(struct MapObject *trainerObj, s16 range, s16 x, s16 y) +{ + if (trainerObj->coords2.x == x + && y < trainerObj->coords2.y + && y >= trainerObj->coords2.y - range) + return (trainerObj->coords2.y - y); + else + return 0; +} + +// Returns how far west the player is from trainer. 0 if out of trainer's sight. +u8 GetTrainerApproachDistanceWest(struct MapObject *trainerObj, s16 range, s16 x, s16 y) +{ + if (trainerObj->coords2.y == y + && x < trainerObj->coords2.x + && x >= trainerObj->coords2.x - range) + return (trainerObj->coords2.x - x); + else + return 0; +} + +// Returns how far east the player is from trainer. 0 if out of trainer's sight. +u8 GetTrainerApproachDistanceEast(struct MapObject *trainerObj, s16 range, s16 x, s16 y) +{ + if (trainerObj->coords2.y == y + && x > trainerObj->coords2.x + && x <= trainerObj->coords2.x + range) + return (x - trainerObj->coords2.x); + else + return 0; +} + +#ifdef BUGFIX_TRAINERAPPROACH +#define COLLISION_MASK ~1 +#else +#define COLLISION_MASK 1 +#endif + +bool8 CheckPathBetweenTrainerAndPlayer(struct MapObject2 *trainerObj, u8 approachDistance, u8 direction) +{ + s16 x, y; + u8 unk19_temp; + u8 unk19b_temp; + u8 i; + u8 collision; + + if (approachDistance == 0) + return FALSE; + + x = trainerObj->coords2.x; + y = trainerObj->coords2.y; + + for (i = 0; i <= approachDistance - 1; i++, MoveCoords(direction, &x, &y)) + { + collision = sub_8060024((struct MapObject *)trainerObj, x, y, direction); + if (collision != 0 && (collision & COLLISION_MASK)) + return FALSE; + } + + // preserve mapobj_unk_19 before clearing. + unk19_temp = trainerObj->mapobj_unk_19; + unk19b_temp = trainerObj->mapobj_unk_19b; + trainerObj->mapobj_unk_19 = 0; + trainerObj->mapobj_unk_19b = 0; + + collision = npc_block_way((struct MapObject *)trainerObj, x, y, direction); + + trainerObj->mapobj_unk_19 = unk19_temp; + trainerObj->mapobj_unk_19b = unk19b_temp; + if (collision == 4) + return approachDistance; + + return FALSE; +} + +#define tTrainerObjHi data[1] +#define tTrainerObjLo data[2] + +void sub_80842C8(struct MapObject *trainerObj, u8 b) +{ + u8 taskId = CreateTask(RunTrainerSeeFuncList, 0x50); + struct Task *task = &gTasks[taskId]; + + task->tTrainerObjHi = (u32)(trainerObj) >> 16; + task->tTrainerObjLo = (u32)(trainerObj); + task->data[3] = b; +} + +void sub_80842FC(TaskFunc followupFunc) +{ + TaskFunc taskFunc = RunTrainerSeeFuncList; + u8 taskId = FindTaskIdByFunc(taskFunc); + + SetTaskFuncWithFollowupFunc(taskId, taskFunc, followupFunc); + gTasks[taskId].data[0] = 1; + taskFunc(taskId); +} + +static bool8 sub_8084394(u8 taskId, struct Task *task, struct MapObject *trainerObj); +static bool8 sub_8084398(u8 taskId, struct Task *task, struct MapObject *trainerObj); +static bool8 sub_80843DC(u8 taskId, struct Task *task, struct MapObject *trainerObj); +static bool8 sub_808441C(u8 taskId, struct Task *task, struct MapObject *trainerObj); +static bool8 sub_8084478(u8 taskId, struct Task *task, struct MapObject *trainerObj); +static bool8 sub_8084534(u8 taskId, struct Task *task, struct MapObject *trainerObj); +static bool8 sub_8084578(u8 taskId, struct Task *task, struct MapObject *trainerObj); +static bool8 sub_80845AC(u8 taskId, struct Task *task, struct MapObject *trainerObj); +static bool8 sub_80845C8(u8 taskId, struct Task *task, struct MapObject *trainerObj); +static bool8 sub_80845FC(u8 taskId, struct Task *task, struct MapObject *trainerObj); +static bool8 sub_8084654(u8 taskId, struct Task *task, struct MapObject *trainerObj); +static bool8 sub_80846C8(u8 taskId, struct Task *task, struct MapObject *trainerObj); + +static bool8 (*const gTrainerSeeFuncList[])(u8 taskId, struct Task *task, struct MapObject *trainerObj) = +{ + sub_8084394, + sub_8084398, + sub_80843DC, + sub_808441C, + sub_8084478, + sub_8084534, + sub_8084578, + sub_80845AC, + sub_80845C8, + sub_80845FC, + sub_8084654, + sub_80846C8, +}; + +void RunTrainerSeeFuncList(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + struct MapObject *trainerObj = (struct MapObject *)((task->tTrainerObjHi << 16) | (task->tTrainerObjLo)); + + if (!trainerObj->active) + { + SwitchTaskToFollowupFunc(taskId); + } + else + { + while (gTrainerSeeFuncList[task->data[0]](taskId, task, trainerObj)) + ; + } +} + +static bool8 sub_8084394(u8 taskId, struct Task *task, struct MapObject *trainerObj) // cant be void because it is called with RunTrainerSeeFuncList with arguments. +{ + return FALSE; +} + +static bool8 sub_8084398(u8 taskId, struct Task *task, struct MapObject *trainerObj) +{ + u8 direction; + + FieldObjectGetLocalIdAndMap(trainerObj, (u8 *)&gFieldEffectArguments[0], (u8 *)&gFieldEffectArguments[1], (u8 *)&gFieldEffectArguments[2]); + FieldEffectStart(FLDEFF_EXCLAMATION_MARK_ICON_1); + direction = GetFaceDirectionAnimId(trainerObj->mapobj_unk_18); + FieldObjectSetSpecialAnim(trainerObj, direction); + task->data[0]++; + return TRUE; +} + +static bool8 sub_80843DC(u8 taskId, struct Task *task, struct MapObject *trainerObj) +{ + if (FieldEffectActiveListContains(0)) + { + return FALSE; + } + else + { + task->data[0]++; + if (trainerObj->animPattern == 57 || trainerObj->animPattern == 58) + task->data[0] = 6; + if (trainerObj->animPattern == 63) + task->data[0] = 8; + return TRUE; + } +} + +static bool8 sub_808441C(u8 taskId, struct Task *task, struct MapObject *trainerObj) +{ + if (!(FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(trainerObj)) || FieldObjectClearAnimIfSpecialAnimFinished(trainerObj)) + { + if (task->data[3]) + { + FieldObjectSetSpecialAnim(trainerObj, GetGoSpeed0AnimId(trainerObj->mapobj_unk_18)); + task->data[3]--; + } + else + { + FieldObjectSetSpecialAnim(trainerObj, 0x3E); + task->data[0]++; + } + } + return FALSE; +} + +static bool8 sub_8084478(u8 taskId, struct Task *task, struct MapObject *trainerObj) +{ + struct MapObject *playerObj; + + if (FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(trainerObj) && !FieldObjectClearAnimIfSpecialAnimFinished(trainerObj)) + return FALSE; + + npc_set_running_behaviour_etc(trainerObj, npc_running_behaviour_by_direction(trainerObj->mapobj_unk_18)); + sub_805C774(trainerObj, npc_running_behaviour_by_direction(trainerObj->mapobj_unk_18)); + sub_805C754(trainerObj); + + playerObj = &gMapObjects[gPlayerAvatar.mapObjectId]; + if (FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(playerObj) && !FieldObjectClearAnimIfSpecialAnimFinished(playerObj)) + return FALSE; + + sub_80597E8(); + FieldObjectSetSpecialAnim(&gMapObjects[gPlayerAvatar.mapObjectId], GetFaceDirectionAnimId(GetOppositeDirection(trainerObj->mapobj_unk_18))); + task->data[0]++; + return FALSE; +} + +static bool8 sub_8084534(u8 taskId, struct Task *task, struct MapObject *trainerObj) // technically only 1 parameter, but needs all 3 for TrainerSeeFuncList call. +{ + struct MapObject *playerObj = &gMapObjects[gPlayerAvatar.mapObjectId]; + + if (!FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(playerObj) + || FieldObjectClearAnimIfSpecialAnimFinished(playerObj)) + SwitchTaskToFollowupFunc(taskId); + return FALSE; +} + +static bool8 sub_8084578(u8 taskId, struct Task *task, struct MapObject *trainerObj) +{ + if (!FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(trainerObj) + || FieldObjectClearAnimIfSpecialAnimFinished(trainerObj)) + { + FieldObjectSetSpecialAnim(trainerObj, 0x59); + task->data[0]++; + } + return FALSE; +} + +static bool8 sub_80845AC(u8 taskId, struct Task *task, struct MapObject *trainerObj) +{ + if (FieldObjectClearAnimIfSpecialAnimFinished(trainerObj)) + task->data[0] = 3; + + return FALSE; +} + +static bool8 sub_80845C8(u8 taskId, struct Task *task, struct MapObject *trainerObj) +{ + if (!FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(trainerObj) + || FieldObjectClearAnimIfSpecialAnimFinished(trainerObj)) + { + FieldObjectSetSpecialAnim(trainerObj, 0x3E); + task->data[0]++; + } + return FALSE; +} + +static bool8 sub_80845FC(u8 taskId, struct Task *task, struct MapObject *trainerObj) +{ + if (FieldObjectCheckIfSpecialAnimFinishedOrInactive(trainerObj)) + { + gFieldEffectArguments[0] = trainerObj->coords2.x; + gFieldEffectArguments[1] = trainerObj->coords2.y; + gFieldEffectArguments[2] = gSprites[trainerObj->spriteId].subpriority - 1; + gFieldEffectArguments[3] = 2; + task->data[4] = FieldEffectStart(FLDEFF_POP_OUT_OF_ASH); + task->data[0]++; + } + return FALSE; +} + +static bool8 sub_8084654(u8 taskId, struct Task *task, struct MapObject *trainerObj) +{ + struct Sprite *sprite; + + if (gSprites[task->data[4]].animCmdIndex == 2) + { + trainerObj->mapobj_bit_26 = 0; + trainerObj->mapobj_bit_2 = 1; + + sprite = &gSprites[trainerObj->spriteId]; + sprite->oam.priority = 2; + FieldObjectClearAnimIfSpecialAnimFinished(trainerObj); + FieldObjectSetSpecialAnim(trainerObj, sub_806084C(trainerObj->mapobj_unk_18)); + task->data[0]++; + } + return FALSE; +} + +static bool8 sub_80846C8(u8 taskId, struct Task *task, struct MapObject *trainerObj) +{ + if (!FieldEffectActiveListContains(49)) + task->data[0] = 3; + + return FALSE; +} + +static bool8 (*const gTrainerSeeFuncList2[])(u8, struct Task *, struct MapObject *) = +{ + sub_80845C8, + sub_80845FC, + sub_8084654, + sub_80846C8, +}; + +void sub_80846E4(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + struct MapObject *mapObj; + + // another mapObj loaded into by loadword? + LoadWordFromTwoHalfwords(&task->data[1], (u32 *)&mapObj); + if (!task->data[7]) + { + FieldObjectClearAnim(mapObj); + task->data[7]++; + } + gTrainerSeeFuncList2[task->data[0]](taskId, task, mapObj); + if (task->data[0] == 3 && !FieldEffectActiveListContains(49)) + { + npc_set_running_behaviour_etc(mapObj, npc_running_behaviour_by_direction(mapObj->mapobj_unk_18)); + sub_805C774(mapObj, npc_running_behaviour_by_direction(mapObj->mapobj_unk_18)); + DestroyTask(taskId); + } + else + mapObj->mapobj_bit_7 = 0; +} + +void sub_8084794(struct MapObject *var) +{ + StoreWordInTwoHalfwords(&gTasks[CreateTask(sub_80846E4, 0)].data[1], (u32)var); +} + +static void Task_DestroyTrainerApproachTask(u8); + +void ScrSpecial_EndTrainerApproach(void) +{ + sub_80842FC(Task_DestroyTrainerApproachTask); +} + +static void Task_DestroyTrainerApproachTask(u8 taskId) +{ + DestroyTask(taskId); + EnableBothScriptContexts(); +} + +u8 FldEff_ExclamationMarkIcon1(void) +{ + u8 spriteId = CreateSpriteAtEnd(&gSpriteTemplate_839B510, 0, 0, 0x53); + + if (spriteId != 64) + sub_8084894(&gSprites[spriteId], 0, 0); + + return 0; +} + +u8 FldEff_ExclamationMarkIcon2(void) +{ + u8 spriteId = CreateSpriteAtEnd(&gSpriteTemplate_839B510, 0, 0, 0x52); + + if (spriteId != 64) + sub_8084894(&gSprites[spriteId], 33, 1); + + return 0; +} + +u8 FldEff_HeartIcon(void) +{ + u8 spriteId = CreateSpriteAtEnd(&gSpriteTemplate_839B528, 0, 0, 0x52); + + if (spriteId != 64) + sub_8084894(&gSprites[spriteId], 46, 0); + + return 0; +} + +void sub_8084894(struct Sprite *sprite, u16 a2, u8 a3) +{ + sprite->oam.priority = 1; + sprite->coordOffsetEnabled = 1; + + sprite->data0 = gFieldEffectArguments[0]; + sprite->data1 = gFieldEffectArguments[1]; + sprite->data2 = gFieldEffectArguments[2]; + sprite->data3 = -5; + sprite->data7 = a2; + + StartSpriteAnim(sprite, a3); +} + +void objc_exclamation_mark_probably(struct Sprite *sprite) +{ + u8 mapObjId; + + if (TryGetFieldObjectIdByLocalIdAndMap(sprite->data0, sprite->data1, sprite->data2, &mapObjId) + || sprite->animEnded) + { + FieldEffectStop(sprite, (u8)sprite->data7); + } + else + { + struct Sprite *mapObjSprite = &gSprites[gMapObjects[mapObjId].spriteId]; + sprite->data4 += sprite->data3; + sprite->pos1.x = mapObjSprite->pos1.x; + sprite->pos1.y = mapObjSprite->pos1.y - 16; + sprite->pos2.x = mapObjSprite->pos2.x; + sprite->pos2.y = mapObjSprite->pos2.y + sprite->data4; + if (sprite->data4) + sprite->data3++; + else + sprite->data3 = 0; + } +} diff --git a/src/field/tv.c b/src/field/tv.c new file mode 100644 index 000000000..e9b5e850d --- /dev/null +++ b/src/field/tv.c @@ -0,0 +1,3259 @@ +#include "global.h" +#include "tv.h" +#include "battle_tower.h" +#include "contest_painting.h" +#include "data2.h" +#include "easy_chat.h" +#include "event_data.h" +#include "fieldmap.h" +#include "field_message_box.h" +#include "field_camera.h" +#include "flags.h" +#include "rng.h" +#include "string_util.h" +#include "text.h" +#include "species.h" +#include "pokedex.h" +#include "naming_screen.h" +#include "overworld.h" +#include "map_constants.h" +#include "strings.h" +#include "battle.h" +#include "link.h" +#include "easy_chat.h" +#include "field_map_obj.h" +#include "field_specials.h" +#include "item.h" +#include "items.h" +#include "link.h" +#include "map_constants.h" +#include "naming_screen.h" +#include "pokedex.h" +#include "region_map.h" +#include "rng.h" +#include "overworld.h" +#include "rtc.h" +#include "script_menu.h" +#include "species.h" +#include "string_util.h" +#include "strings.h" +#include "text.h" + +struct UnkTvStruct +{ + s8 var0; +}; + +extern u8 gUnknown_0300430A[11]; + +struct OutbreakPokemon +{ + /*0x00*/ u16 species; + /*0x02*/ u16 moves[4]; + /*0x0A*/ u8 level; + /*0x0B*/ u8 location; +}; + +struct TVSaleItem { + u16 item_id; + u16 item_amount; +}; + +extern u8 gUnknown_02038694; + +extern struct TVSaleItem gUnknown_02038724[3]; + +struct UnkTvStruct gUnknown_03005D38; + +extern u8 *gTVBravoTrainerTextGroup[]; +extern u8 *gTVBravoTrainerBattleTowerTextGroup[]; +extern u8 *gTVSmartShopperTextGroup[]; +extern u8 *gTVNameRaterTextGroup[]; +extern u8 *gTVPokemonTodayTextGroup[]; +extern u8 *gTVPokemonTodayFailedCaptureTextGroup[]; +extern u8 *gTVFanClubTextGroup[]; +extern u8 *gTVRecentHappeningsTextGroup[]; +extern u8 *gTVFanClubOpinionsTextGroup[]; +extern u8 *gTVPokemonOutbreakTextGroup[]; +extern u8 *gTVGabbyAndTyTextGroup[]; +extern u8 *gTVFishingGuruAdviceTextGroup[]; +extern u8 *gTVWorldOfMastersTextGroup[]; +extern struct OutbreakPokemon gPokeOutbreakSpeciesList[5]; + + + +extern const u8 *gTVNewsTextGroup1[]; +extern const u8 *gTVNewsTextGroup2[]; +extern const u8 *gTVNewsTextGroup3[]; + +extern u16 gScriptLastTalked; + +extern u8 gScriptContestCategory; +extern u8 gScriptContestRank; +extern u8 gUnknown_03004316[11]; +extern u8 gBattleOutcome; + +extern u16 gLastUsedItem; + +extern u8 ewram[]; +#define gUnknown_02007000 (*(ewramStruct_02007000 *)(ewram + 0x7000)) + +static EWRAM_DATA u16 gUnknown_020387E0 = 0; +static EWRAM_DATA u16 gUnknown_020387E2 = 0; +static EWRAM_DATA u8 gUnknown_020387E4 = 0; +static EWRAM_DATA ALIGNED(4) u8 gUnknown_020387E8 = 0; // why is this aligned to a 4-byte boundary? + +static u8 gUnknown_03000720; +static u8 gUnknown_03000721; +static s8 gUnknown_03000722; + +void ClearTVShowData(void) +{ + u8 showidx; + u8 extradataidx; + for (showidx=0; showidx<25; showidx++) { + gSaveBlock1.tvShows[showidx].common.var00 = 0; + gSaveBlock1.tvShows[showidx].common.var01 = 0; + for (extradataidx=0; extradataidx<34; extradataidx++) { + gSaveBlock1.tvShows[showidx].common.pad02[extradataidx] = 0; + } + } + sub_80BEBF4(); +} + +bool8 sub_80BF1B4(u8); +void sub_80BF20C(void); +extern u16 sub_8135D3C(u8); +extern u8 gScriptContestCategory; +extern u8 gScriptContestRank; +extern u8 gUnknown_03004316[11]; +extern u8 gBattleOutcome; + +void sub_80BF334(void); +void sub_80BF3A4(void); +void sub_80BF3DC(void); +void sub_80BF46C(void); +void sub_80BF478(void); +void sub_80BF484(void); +void sub_80BF4BC(void); + +void sub_80BE028(void); +void sub_80BE074(void); +void sub_80BE778(void); +void sub_80BEB20(void); + +u8 sub_80BFB54(u8); + +s8 sub_80BF74C(TVShow tvShow[]); + +void sub_80BF55C(TVShow tvShow[], u8 showidx); +void sub_80BEA88(void); + +void sub_80BE138(TVShow *show); +void sub_80BE160(TVShow *show); +extern u16 gLastUsedItem; + +void sub_80BE5FC(void); +void sub_80BE65C(void); +void sub_80BE6A0(void); +void nullsub_21(void); +void sub_80BE188(void); +void sub_80BE320(void); + +u8 special_0x44(void) +{ + u8 i; + u8 j; + +#ifndef NONMATCHING + asm("":::"r5"); +#endif + + for (i = 5; i < 24; i++) + { + if (gSaveBlock1.tvShows[i].common.var00 == 0) + break; + } + i = Random() % i; + j = i; + do + { + if (sub_80BFB54(gSaveBlock1.tvShows[i].common.var00) != 4) + { + if (gSaveBlock1.tvShows[i].common.var01 == 1) + return i; + } + else + { + struct TVShowMassOutbreak *massOutbreak = &gSaveBlock1.tvShows[i].massOutbreak; + + if (massOutbreak->var16 == 0 && massOutbreak->var01 == 1) + return i; + } + + if (i == 0) + i = 23; + else + i--; + } while (i != j); + return 0xFF; +} + +u8 sub_80BDA30(void); + +u8 sub_80BD8B8(void) +{ + u8 retval = special_0x44(); + + if (retval == 0xff) + return 0xff; + if (gSaveBlock1.outbreakPokemonSpecies != 0 && gSaveBlock1.tvShows[retval].common.var00 == TVSHOW_MASS_OUTBREAK) + return sub_80BDA30(); + return retval; +} + +u8 CheckForBigMovieOrEmergencyNewsOnTV(void); +void SetTVMetatilesOnMap(int, int, u16); +bool8 sub_80BECA0(void); +bool8 IsTVShowInSearchOfTrainersAiring(void); + +void UpdateTVScreensOnMap(int width, int height) +{ + FlagSet(SYS_TV_WATCH); + switch (CheckForBigMovieOrEmergencyNewsOnTV()) + { + case 1: + SetTVMetatilesOnMap(width, height, 0x3); + break; + case 2: + break; + default: + if (gSaveBlock1.location.mapGroup == MAP_GROUP_LILYCOVE_CITY_COVE_LILY_MOTEL_1F + && gSaveBlock1.location.mapNum == MAP_ID_LILYCOVE_CITY_COVE_LILY_MOTEL_1F) + { + SetTVMetatilesOnMap(width, height, 0x3); + } + else if (FlagGet(SYS_TV_START) && (sub_80BD8B8() != 0xff || sub_80BECA0() != 0xff || IsTVShowInSearchOfTrainersAiring())) + { + FlagClear(SYS_TV_WATCH); + SetTVMetatilesOnMap(width, height, 0x3); + } + break; + } +} + +void SetTVMetatilesOnMap(int width, int height, u16 tileId) +{ + int x; + int y; + + for (y=0; ycommon.var00 == TVSHOW_MASS_OUTBREAK && gSaveBlock1.outbreakPokemonSpecies) + return sub_80BDA30(); + return gSpecialVar_0x8004; +} + +void ResetGabbyAndTy(void) +{ + gSaveBlock1.gabbyAndTyData.mon1 = 0; + gSaveBlock1.gabbyAndTyData.mon2 = 0; + gSaveBlock1.gabbyAndTyData.lastMove = 0; + gSaveBlock1.gabbyAndTyData.quote = 0xffff; + gSaveBlock1.gabbyAndTyData.valA_0 = 0; + gSaveBlock1.gabbyAndTyData.valA_1 = 0; + gSaveBlock1.gabbyAndTyData.valA_2 = 0; + gSaveBlock1.gabbyAndTyData.valA_3 = 0; + gSaveBlock1.gabbyAndTyData.valA_4 = 0; + gSaveBlock1.gabbyAndTyData.valA_5 = 0; + gSaveBlock1.gabbyAndTyData.valB_0 = 0; + gSaveBlock1.gabbyAndTyData.valB_1 = 0; + gSaveBlock1.gabbyAndTyData.valB_2 = 0; + gSaveBlock1.gabbyAndTyData.valB_3 = 0; + gSaveBlock1.gabbyAndTyData.valB_4 = 0; + gSaveBlock1.gabbyAndTyData.valB_5 = 0; + gSaveBlock1.gabbyAndTyData.mapnum = 0; + gSaveBlock1.gabbyAndTyData.battleNum = 0; +} + +void TakeTVShowInSearchOfTrainersOffTheAir(void); + +void GabbyAndTyBeforeInterview(void) +{ + u8 i; + + gSaveBlock1.gabbyAndTyData.mon1 = gBattleResults.poke1Species; + gSaveBlock1.gabbyAndTyData.mon2 = gBattleResults.opponentSpecies; + gSaveBlock1.gabbyAndTyData.lastMove = gBattleResults.lastUsedMove; + if (gSaveBlock1.gabbyAndTyData.battleNum != 0xff) + gSaveBlock1.gabbyAndTyData.battleNum ++; + gSaveBlock1.gabbyAndTyData.valA_0 = gBattleResults.unk5_0; + + if (gBattleResults.playerFaintCounter) + gSaveBlock1.gabbyAndTyData.valA_1 = 1; + else + gSaveBlock1.gabbyAndTyData.valA_1 = 0; + + if (gBattleResults.unk3) + gSaveBlock1.gabbyAndTyData.valA_2 = 1; + else + gSaveBlock1.gabbyAndTyData.valA_2 = 0; + + if (!gBattleResults.unk5_1) + { + for (i=0; i<11; i++) + { + if (gBattleResults.unk36[i] != 0) + { + gSaveBlock1.gabbyAndTyData.valA_3 = 1; + break; + } + } + } + else + { + gSaveBlock1.gabbyAndTyData.valA_3 = 1; + } + + TakeTVShowInSearchOfTrainersOffTheAir(); + if (gSaveBlock1.gabbyAndTyData.lastMove == 0) + FlagSet(1); +} + +void sub_80BDC14(void) +{ + gSaveBlock1.gabbyAndTyData.valB_0 = gSaveBlock1.gabbyAndTyData.valA_0; + gSaveBlock1.gabbyAndTyData.valB_1 = gSaveBlock1.gabbyAndTyData.valA_1; + gSaveBlock1.gabbyAndTyData.valB_2 = gSaveBlock1.gabbyAndTyData.valA_2; + gSaveBlock1.gabbyAndTyData.valB_3 = gSaveBlock1.gabbyAndTyData.valA_3; + gSaveBlock1.gabbyAndTyData.valA_4 = 1; + gSaveBlock1.gabbyAndTyData.mapnum = gMapHeader.regionMapSectionId; + IncrementGameStat(GAME_STAT_GOT_INTERVIEWED); +} + +void TakeTVShowInSearchOfTrainersOffTheAir(void) +{ + gSaveBlock1.gabbyAndTyData.valA_4 = 0; +} + +u8 GabbyAndTyGetBattleNum(void) +{ + if (gSaveBlock1.gabbyAndTyData.battleNum >= 6) + return (gSaveBlock1.gabbyAndTyData.battleNum % 3) + 6; + else + return gSaveBlock1.gabbyAndTyData.battleNum; +} + +bool8 IsTVShowInSearchOfTrainersAiring(void) +{ + return gSaveBlock1.gabbyAndTyData.valA_4; +} + +bool8 GabbyAndTyGetLastQuote(void) +{ + if (gSaveBlock1.gabbyAndTyData.quote == 0xffff) + return FALSE; + + EasyChat_GetWordText(gStringVar1, gSaveBlock1.gabbyAndTyData.quote); + gSaveBlock1.gabbyAndTyData.quote |= 0xffff; + return TRUE; +} + +u8 sub_80BDD18(void) +{ + if (!gSaveBlock1.gabbyAndTyData.valB_0) + return 1; + if (gSaveBlock1.gabbyAndTyData.valB_3) + return 2; + if (gSaveBlock1.gabbyAndTyData.valB_2) + return 3; + if (gSaveBlock1.gabbyAndTyData.valB_1) + return 4; + return 0; +} + +void GabbyAndTySetScriptVarsToFieldObjectLocalIds(void) +{ + switch (GabbyAndTyGetBattleNum()) + { + case 1: + gSpecialVar_0x8004 = 0xE; + gSpecialVar_0x8005 = 0xD; + break; + case 2: + gSpecialVar_0x8004 = 0x5; + gSpecialVar_0x8005 = 0x6; + break; + case 3: + gSpecialVar_0x8004 = 0x12; + gSpecialVar_0x8005 = 0x11; + break; + case 4: + gSpecialVar_0x8004 = 0x15; + gSpecialVar_0x8005 = 0x16; + break; + case 5: + gSpecialVar_0x8004 = 0x8; + gSpecialVar_0x8005 = 0x9; + break; + case 6: + gSpecialVar_0x8004 = 0x13; + gSpecialVar_0x8005 = 0x14; + break; + case 7: + gSpecialVar_0x8004 = 0x17; + gSpecialVar_0x8005 = 0x18; + break; + case 8: + gSpecialVar_0x8004 = 0xA; + gSpecialVar_0x8005 = 0xB; + break; + } +} + +void sub_80BDE48(void) +{ + switch (gSpecialVar_0x8005) + { + case TVSHOW_FAN_CLUB_LETTER: + sub_80BE5FC(); + break; + case TVSHOW_RECENT_HAPPENINGS: + sub_80BE65C(); + break; + case TVSHOW_PKMN_FAN_CLUB_OPINIONS: + sub_80BE6A0(); + break; + case TVSHOW_UNKN_SHOWTYPE_04: + nullsub_21(); + break; + case TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE: + sub_80BE188(); + break; + case TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE: + sub_80BE320(); + break; + } +} + +u8 sub_80BDEAC(u8 *a0) +{ + u8 lang = GAME_LANGUAGE; + + if (a0[0] == EXT_CTRL_CODE_BEGIN && a0[1] == 0x15) + lang = LANGUAGE_JAPANESE; + return lang; +} + +void sub_80BDEC8(void) +{ + u8 i; + u16 total; + u16 item; + + total = 0; + sub_80BEB20(); + sub_80BE778(); + + if (gBattleResults.caughtPoke == 0) + { + sub_80BE074(); + } + else + { + sub_80BE028(); + if (sub_80BF77C(0xffff) == 0 && StringCompareWithoutExtCtrlCodes(gSpeciesNames[gBattleResults.caughtPoke], gBattleResults.caughtNick) != 0) + { + gUnknown_03005D38.var0 = sub_80BF74C(gSaveBlock1.tvShows); + if (gUnknown_03005D38.var0 != -1 && sub_80BF1B4(TVSHOW_POKEMON_TODAY_CAUGHT) != 1) + { + for (i = 0; i < 11; i++) + total += gBattleResults.unk36[i]; + if (total != 0 || gBattleResults.unk5_1 != 0) + { + struct TVShowPokemonToday *pokemonToday; + + total = 0; + pokemonToday = &gSaveBlock1.tvShows[gUnknown_03005D38.var0].pokemonToday; + pokemonToday->var00 = TVSHOW_POKEMON_TODAY_CAUGHT; + pokemonToday->var01 = total; + if (gBattleResults.unk5_1 != 0) + { + total = 1; + item = ITEM_MASTER_BALL; + } + else + { + for (i = 0; i < 11; i++) + total += gBattleResults.unk36[i]; + if (total > 0xff) + total = 0xff; + item = gLastUsedItem; + } + pokemonToday->var12 = total; + pokemonToday->ball = item; + StringCopy(pokemonToday->playerName, gSaveBlock2.playerName); + StringCopy(pokemonToday->nickname, gBattleResults.caughtNick); + pokemonToday->species = gBattleResults.caughtPoke; + sub_80BE138((TVShow *)pokemonToday); + pokemonToday->language = GAME_LANGUAGE; + pokemonToday->language2 = sub_80BDEAC(pokemonToday->nickname); + StripExtCtrlCodes(pokemonToday->nickname); + } + } + } + } +} + +void sub_80BE028(void) +{ + struct TVShowWorldOfMasters *worldOfMasters = &gSaveBlock1.tvShows[24].worldOfMasters; + + if (worldOfMasters->var00 != TVSHOW_WORLD_OF_MASTERS) + { + sub_80BF55C(gSaveBlock1.tvShows, 24); + worldOfMasters->var06 = GetGameStat(GAME_STAT_STEPS); + worldOfMasters->var00 = TVSHOW_WORLD_OF_MASTERS; + } + worldOfMasters->var02++; + worldOfMasters->var04 = gBattleResults.caughtPoke; + worldOfMasters->var08 = gBattleResults.poke1Species; + worldOfMasters->var0a = gMapHeader.regionMapSectionId; +} + +void sub_80BE074(void) +{ + u8 i; + u16 total; + u8 zero = 0; + + if (sub_80BF77C(0xffff) == 0) + { + for (i = 0, total = 0; i < ARRAY_COUNT(gUnknown_03004316); i++) + total += gUnknown_03004316[i]; + if (total > 0xff) + total = 0xff; + if (total > 2 && gBattleOutcome == 1) + { + gUnknown_03005D38.var0 = sub_80BF74C(gSaveBlock1.tvShows); + if (gUnknown_03005D38.var0 != -1 && sub_80BF1B4(TVSHOW_POKEMON_TODAY_FAILED) != 1) + { + struct TVShowPokemonTodayFailed *pokemonTodayFailed = &gSaveBlock1.tvShows[gUnknown_03005D38.var0].pokemonTodayFailed; + + zero = 0; + pokemonTodayFailed->var00 = TVSHOW_POKEMON_TODAY_FAILED; + pokemonTodayFailed->var01 = zero; + pokemonTodayFailed->species = gBattleResults.poke1Species; + pokemonTodayFailed->species2 = gBattleResults.lastOpponentSpecies; + pokemonTodayFailed->var10 = total; + pokemonTodayFailed->var11 = gBattleOutcome; + pokemonTodayFailed->var12 = gMapHeader.regionMapSectionId; + StringCopy(pokemonTodayFailed->playerName, gSaveBlock2.playerName); + sub_80BE138((TVShow *)pokemonTodayFailed); + pokemonTodayFailed->language = GAME_LANGUAGE; + } + } + } +} + + +void sub_80BE138(TVShow *show) +{ + u32 playerId = GetPlayerTrainerId(); + + show->common.srcTrainerId2Lo = playerId & 0xFF; + show->common.srcTrainerId2Hi = playerId >> 8; + show->common.srcTrainerIdLo = playerId & 0xFF; + show->common.srcTrainerIdHi = playerId >> 8; + show->common.trainerIdLo = playerId & 0xFF; + show->common.trainerIdHi = playerId >> 8; +} + +void sub_80BE160(TVShow *show) +{ + u32 playerId = GetPlayerTrainerId(); + + show->common.srcTrainerIdLo = playerId & 0xFF; + show->common.srcTrainerIdHi = playerId >> 8; + show->common.trainerIdLo = playerId & 0xFF; + show->common.trainerIdHi = playerId >> 8; +} + +void sub_80BE188(void) +{ + struct TVShowBravoTrainerPokemonProfiles *bravoTrainerSrc = &gSaveBlock1.tvShows[24].bravoTrainer; + + if (bravoTrainerSrc->var00 == TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE) + { + struct TVShowBravoTrainerPokemonProfiles *bravoTrainerNew = &gSaveBlock1.tvShows[gUnknown_03005D38.var0].bravoTrainer; + + bravoTrainerNew->var00 = TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE; + bravoTrainerNew->var01 = 1; + bravoTrainerNew->species = bravoTrainerSrc->species; + StringCopy(bravoTrainerNew->playerName, gSaveBlock2.playerName); + StringCopy(bravoTrainerNew->pokemonNickname, bravoTrainerSrc->pokemonNickname); + bravoTrainerNew->contestCategory = bravoTrainerSrc->contestCategory; + bravoTrainerNew->contestRank = bravoTrainerSrc->contestRank; + bravoTrainerNew->var14 = bravoTrainerSrc->var14; + bravoTrainerNew->contestResult = bravoTrainerSrc->contestResult; + bravoTrainerNew->contestCategory = bravoTrainerSrc->contestCategory; + sub_80BE160((TVShow *)bravoTrainerNew); + bravoTrainerNew->language = GAME_LANGUAGE; + bravoTrainerNew->var1f = sub_80BDEAC(bravoTrainerNew->pokemonNickname); + StripExtCtrlCodes(bravoTrainerNew->pokemonNickname); + } +} + +void sub_80BE23C(u16 a0) +{ + struct TVShowBravoTrainerPokemonProfiles *bravoTrainer = &gSaveBlock1.tvShows[24].bravoTrainer; + + sub_80BF484(); + gUnknown_03005D38.var0 = sub_80BF720(gSaveBlock1.tvShows); + if (gUnknown_03005D38.var0 != -1) + { + sub_80BF55C(gSaveBlock1.tvShows, 24); + bravoTrainer->var14 = a0; + bravoTrainer->var00 = TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE; + } +} + +void sub_80BE284(u8 a0) +{ + struct TVShowBravoTrainerPokemonProfiles *bravoTrainer = &gSaveBlock1.tvShows[24].bravoTrainer; + + gUnknown_03005D38.var0 = sub_80BF720(gSaveBlock1.tvShows); + if (gUnknown_03005D38.var0 != -1) + { + bravoTrainer->contestResult = a0; + bravoTrainer->contestCategory = gScriptContestCategory; + bravoTrainer->contestRank = gScriptContestRank; + bravoTrainer->species = GetMonData(&gPlayerParty[gUnknown_02038694], MON_DATA_SPECIES, NULL); + GetMonData(&gPlayerParty[gUnknown_02038694], MON_DATA_NICKNAME, bravoTrainer->pokemonNickname); + } +} + +void sub_80BE320(void) +{ + struct TVShowBravoTrainerBattleTowerSpotlight *bravoTrainerTower = &gSaveBlock1.tvShows[gUnknown_03005D38.var0].bravoTrainerTower; + + bravoTrainerTower->var00 = TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE; + bravoTrainerTower->var01 = 1; + StringCopy(bravoTrainerTower->trainerName, gSaveBlock2.playerName); + StringCopy(bravoTrainerTower->pokemonName, gSaveBlock2.filler_A8.filler_3DC); + bravoTrainerTower->species = gSaveBlock2.filler_A8.var_480; + bravoTrainerTower->defeatedSpecies = gSaveBlock2.filler_A8.var_482; + bravoTrainerTower->var16 = sub_8135D3C(gSaveBlock2.filler_A8.var_4D0); + bravoTrainerTower->var1c = gSaveBlock2.filler_A8.var_4AD; + if (gSaveBlock2.filler_A8.var_4D0 == 0) + bravoTrainerTower->btLevel = 50; + else + bravoTrainerTower->btLevel = 100; + bravoTrainerTower->var1b = gSpecialVar_0x8004; + sub_80BE160((TVShow *)bravoTrainerTower); + bravoTrainerTower->language = GAME_LANGUAGE; +} + +void sub_80BE3BC(void) +{ + u8 rval; + u8 i; + + rval = sub_80BF77C(0x5555); + if (rval == 0) + { + gUnknown_03005D38.var0 = sub_80BF74C(gSaveBlock1.tvShows); + if (gUnknown_03005D38.var0 != -1 && sub_80BF1B4(TVSHOW_SMART_SHOPPER) != 1) + { + sub_80BF20C(); + if (gUnknown_02038724[0].item_amount >= 20) + { + struct TVShowSmartShopper *smartShopper = &gSaveBlock1.tvShows[gUnknown_03005D38.var0].smartshopperShow; + + smartShopper->var00 = TVSHOW_SMART_SHOPPER; + smartShopper->var01 = rval; + smartShopper->shopLocation = gMapHeader.regionMapSectionId; + for (i=0; i<3; i++) + { + smartShopper->itemIds[i] = gUnknown_02038724[i].item_id; + smartShopper->itemAmounts[i] = gUnknown_02038724[i].item_amount; + } + smartShopper->priceReduced = GetPriceReduction(1); + StringCopy(smartShopper->playerName, gSaveBlock2.playerName); + sub_80BE138((TVShow *)smartShopper); + smartShopper->language = GAME_LANGUAGE; + } + } + } +} + +void sub_80BE478(void) +{ + sub_80BF478(); + if (gScriptResult == 1) + return; + + GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_NICKNAME, gStringVar1); + if (StringLength(gSaveBlock2.playerName) > 1 && StringLength(gStringVar1) > 1) + { + struct TVShowNameRaterShow *nameRaterShow = &gSaveBlock1.tvShows[gUnknown_03005D38.var0].nameRaterShow; + + nameRaterShow->var00 = TVSHOW_NAME_RATER_SHOW; + nameRaterShow->var01 = 1; + nameRaterShow->species = GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_SPECIES, NULL); + nameRaterShow->random = Random() % 3; + nameRaterShow->random2 = Random() % 2; + nameRaterShow->var1C = sub_80BF674(nameRaterShow->species); + StringCopy(nameRaterShow->trainerName, gSaveBlock2.playerName); + GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_NICKNAME, nameRaterShow->pokemonName); + sub_80BE160((TVShow *)nameRaterShow); + nameRaterShow->language = GAME_LANGUAGE; + nameRaterShow->pokemonNameLanguage = sub_80BDEAC(nameRaterShow->pokemonName); + StripExtCtrlCodes(nameRaterShow->pokemonName); + } +} + +void StartMassOutbreak(void) +{ + struct TVShowMassOutbreak *massOutbreak = &gSaveBlock1.tvShows[gSpecialVar_0x8004].massOutbreak; + + gSaveBlock1.outbreakPokemonSpecies = massOutbreak->species; + gSaveBlock1.outbreakLocationMapNum = massOutbreak->locationMapNum; + gSaveBlock1.outbreakLocationMapGroup = massOutbreak->locationMapGroup; + gSaveBlock1.outbreakPokemonLevel = massOutbreak->level; + gSaveBlock1.outbreakUnk1 = massOutbreak->var02; + gSaveBlock1.outbreakUnk2 = massOutbreak->var0E; + gSaveBlock1.outbreakPokemonMoves[0] = massOutbreak->moves[0]; + gSaveBlock1.outbreakPokemonMoves[1] = massOutbreak->moves[1]; + gSaveBlock1.outbreakPokemonMoves[2] = massOutbreak->moves[2]; + gSaveBlock1.outbreakPokemonMoves[3] = massOutbreak->moves[3]; + gSaveBlock1.outbreakUnk4 = massOutbreak->var03; + gSaveBlock1.outbreakPokemonProbability = massOutbreak->probability; + gSaveBlock1.outbreakUnk5 = 2; +} + +void sub_80BE5FC(void) +{ + struct TVShowFanClubLetter *fanclubLetter = &gSaveBlock1.tvShows[gUnknown_03005D38.var0].fanclubLetter; + + fanclubLetter->var00 = TVSHOW_FAN_CLUB_LETTER; + fanclubLetter->var01 = 1; + StringCopy(fanclubLetter->playerName, gSaveBlock2.playerName); + fanclubLetter->species = GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_SPECIES, NULL); + sub_80BE160((TVShow *)fanclubLetter); + fanclubLetter->language = GAME_LANGUAGE; +} + +void sub_80BE65C(void) +{ + struct TVShowRecentHappenings *recentHappenings = &gSaveBlock1.tvShows[gUnknown_03005D38.var0].recentHappenings; + + recentHappenings->var00 = TVSHOW_RECENT_HAPPENINGS; + recentHappenings->var01 = 1; + StringCopy(recentHappenings->playerName, gSaveBlock2.playerName); + recentHappenings->var02 = 0; + sub_80BE160((TVShow *)recentHappenings); + recentHappenings->language = GAME_LANGUAGE; +} + +void sub_80BE6A0(void) +{ + u8 monIndex; + struct TVShowFanclubOpinions *fanclubOpinions = &gSaveBlock1.tvShows[gUnknown_03005D38.var0].fanclubOpinions; + + fanclubOpinions->var00 = TVSHOW_PKMN_FAN_CLUB_OPINIONS; + fanclubOpinions->var01 = 1; + monIndex = GetLeadMonIndex(); + fanclubOpinions->var04A = GetMonData(&gPlayerParty[monIndex], MON_DATA_FRIENDSHIP, NULL) / 16; + fanclubOpinions->var04B = gSpecialVar_0x8007; + StringCopy(fanclubOpinions->playerName, gSaveBlock2.playerName); + GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_NICKNAME, fanclubOpinions->var10); + fanclubOpinions->var02 = GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_SPECIES, NULL); + sub_80BE160((TVShow *)fanclubOpinions); + fanclubOpinions->language = GAME_LANGUAGE; + fanclubOpinions->var0E = sub_80BDEAC(fanclubOpinions->var10); + StripExtCtrlCodes(fanclubOpinions->var10); +} + +void nullsub_21(void) +{ +} + +void sub_80BE778(void) +{ + if (FlagGet(SYS_GAME_CLEAR)) + { + u8 i; + + for (i = 0; i < 24; i++) + { + if (gSaveBlock1.tvShows[i].massOutbreak.var00 == TVSHOW_MASS_OUTBREAK) + return; + } + if (sub_80BF77C(0x147)) + return; + + gUnknown_03005D38.var0 = sub_80BF720(gSaveBlock1.tvShows); + if (gUnknown_03005D38.var0 != -1) + { + u16 rand = Random(); + u16 val = rand % 5; + s32 val2 = gUnknown_03005D38.var0; + struct TVShowMassOutbreak *massOutbreak = &gSaveBlock1.tvShows[val2].massOutbreak; + + massOutbreak->var00 = TVSHOW_MASS_OUTBREAK; + massOutbreak->var01 = 1; + massOutbreak->level = gPokeOutbreakSpeciesList[val].level; + massOutbreak->var02 = 0; + massOutbreak->var03 = 0; + massOutbreak->species = gPokeOutbreakSpeciesList[val].species; + massOutbreak->var0E = 0; + massOutbreak->moves[0] = gPokeOutbreakSpeciesList[val].moves[0]; + massOutbreak->moves[1] = gPokeOutbreakSpeciesList[val].moves[1]; + massOutbreak->moves[2] = gPokeOutbreakSpeciesList[val].moves[2]; + massOutbreak->moves[3] = gPokeOutbreakSpeciesList[val].moves[3]; + massOutbreak->locationMapNum = gPokeOutbreakSpeciesList[val].location; + massOutbreak->locationMapGroup = 0; + massOutbreak->var12 = 0; + massOutbreak->probability = 0x32; + massOutbreak->var15 = 0; + massOutbreak->var16 = 0x01; + sub_80BE160((TVShow *)massOutbreak); + massOutbreak->language = GAME_LANGUAGE; + } + } +} + +void EndMassOutbreak(void) +{ + gSaveBlock1.outbreakPokemonSpecies = 0; + gSaveBlock1.outbreakLocationMapNum = 0; + gSaveBlock1.outbreakLocationMapGroup = 0; + gSaveBlock1.outbreakPokemonLevel = 0; + gSaveBlock1.outbreakUnk1 = 0; + gSaveBlock1.outbreakUnk2 = 0; + gSaveBlock1.outbreakPokemonMoves[0] = 0; + gSaveBlock1.outbreakPokemonMoves[1] = 0; + gSaveBlock1.outbreakPokemonMoves[2] = 0; + gSaveBlock1.outbreakPokemonMoves[3] = 0; + gSaveBlock1.outbreakUnk4 = 0; + gSaveBlock1.outbreakPokemonProbability = 0; + gSaveBlock1.outbreakUnk5 = 0; +} + +void UpdateTVShowsPerDay(u16 arg0) +{ + sub_80BE8EC(arg0); + UpdateMassOutbreakTimeLeft(arg0); + sub_80BEE84(arg0); + sub_80BEA5C(arg0); +} + +void sub_80BE8EC(u16 arg0) +{ + u8 showidx; + + if (gSaveBlock1.outbreakPokemonSpecies == 0) + { + for (showidx=0; showidx<24; showidx++) + { + if (gSaveBlock1.tvShows[showidx].massOutbreak.var00 == TVSHOW_MASS_OUTBREAK + && gSaveBlock1.tvShows[showidx].massOutbreak.var01 == 0x01) + { + struct TVShowMassOutbreak *massOutbreak = &gSaveBlock1.tvShows[showidx].massOutbreak; + + if (massOutbreak->var16 < arg0) + massOutbreak->var16 = 0; + else + massOutbreak->var16 -= arg0; + break; + } + } + } +} + +void UpdateMassOutbreakTimeLeft(u16 arg0) +{ + if (gSaveBlock1.outbreakUnk5 <= arg0) + EndMassOutbreak(); + else + gSaveBlock1.outbreakUnk5 -= arg0; +} + +void sub_80BE97C(bool8 flag) +{ + u8 var0, var1; + + if (flag) + { + var0 = gUnknown_020387E2 >> 8; + if (var0 > 4) + sub_80BE9D4(); + gUnknown_020387E2 &= 0xFF; + var1 = gUnknown_020387E2 & 0xFF; + if (var1 != 0xFF) + gUnknown_020387E2++; + } + else + { + var0 = gUnknown_020387E2 & 0xFF; + if (var0 > 4) + sub_80BE9D4(); + gUnknown_020387E2 &= 0xFF00; + var1 = gUnknown_020387E2 >> 8; + if (var1 != 0xFF) + gUnknown_020387E2 += 0x100; + } +} + +void sub_80BE9D4(void) +{ + gUnknown_03005D38.var0 = sub_80BF74C(gSaveBlock1.tvShows); + if (gUnknown_03005D38.var0 != -1 && sub_80BF1B4(TVSHOW_FISHING_ADVICE) != 1) + { + struct TVShowPokemonAngler *pokemonAngler = &gSaveBlock1.tvShows[gUnknown_03005D38.var0].pokemonAngler; + register u8 zero asm("r1") = 0; + + asm(""::"r"(zero)); + pokemonAngler->var00 = TVSHOW_FISHING_ADVICE; + pokemonAngler->var01 = zero; + pokemonAngler->var02 = gUnknown_020387E2 & 0xFF; + pokemonAngler->var03 = gUnknown_020387E2 >> 8; + pokemonAngler->var04 = gUnknown_020387E0; + StringCopy(pokemonAngler->playerName, gSaveBlock2.playerName); + sub_80BE138((TVShow *)pokemonAngler); + pokemonAngler->language = GAME_LANGUAGE; + } +} + +void sub_80BEA50(u16 var) +{ + gUnknown_020387E0 = var; +} + +void sub_80BEA88(void); + +void sub_80BEA5C(u16 arg0) +{ + struct TVShowWorldOfMasters *worldOfMasters = &gSaveBlock1.tvShows[24].worldOfMasters; + + if (worldOfMasters->var00 == TVSHOW_WORLD_OF_MASTERS) + { + if (worldOfMasters->var02 < 20) + sub_80BF55C(gSaveBlock1.tvShows, 0x18); + else + sub_80BEA88(); + } +} +void sub_80BEA88(void) +{ + struct TVShowWorldOfMasters *worldOfMastersSrc = &gSaveBlock1.tvShows[24].worldOfMasters; + + if (sub_80BF77C(0xFFFF) == 0) + { + gUnknown_03005D38.var0 = sub_80BF74C(gSaveBlock1.tvShows); + if (gUnknown_03005D38.var0 != -1 && sub_80BF1B4(TVSHOW_WORLD_OF_MASTERS) != 1) + { + struct TVShowWorldOfMasters *worldOfMastersDst = &gSaveBlock1.tvShows[gUnknown_03005D38.var0].worldOfMasters; + + worldOfMastersDst->var00 = TVSHOW_WORLD_OF_MASTERS; + worldOfMastersDst->var01 = 0; + worldOfMastersDst->var02 = worldOfMastersSrc->var02; + worldOfMastersDst->var06 = GetGameStat(GAME_STAT_STEPS) - worldOfMastersSrc->var06; + worldOfMastersDst->var04 = worldOfMastersSrc->var04; + worldOfMastersDst->var08 = worldOfMastersSrc->var08; + worldOfMastersDst->var0a = worldOfMastersSrc->var0a; + StringCopy(worldOfMastersDst->playerName, gSaveBlock2.playerName); + sub_80BE138((TVShow *)worldOfMastersDst); + worldOfMastersDst->language = GAME_LANGUAGE; + } + } +} + +void sub_80BEB20(void) +{ + u16 rval; + + if (FlagGet(SYS_GAME_CLEAR) != 0) + { + gUnknown_03005D38.var0 = sub_80BEBC8(gSaveBlock1.unknown_2ABC); + if (gUnknown_03005D38.var0 != -1 && sub_80BF77C(0x28f) != 1) + { + rval = (Random() % 3) + 1; + if (sub_80BEE48(rval) != 1) + { + gSaveBlock1.unknown_2ABC[gUnknown_03005D38.var0].val0 = rval; + gSaveBlock1.unknown_2ABC[gUnknown_03005D38.var0].val2 = 4; + gSaveBlock1.unknown_2ABC[gUnknown_03005D38.var0].val1 = 1; + } + } + } +} + +int sub_80BEBC8(struct UnknownSaveStruct2ABC *arg0) +{ + s8 i; + + for (i = 0; i < 16; i++) + { + if (arg0[i].val0 == 0) + return i; + } + return -1; +} + +void sub_80BEBF4(void) +{ + u8 i; + + for (i = 0; i < 16; i++) + sub_80BEC10(i); +} + +void sub_80BEC10(u8 arg0) +{ + gSaveBlock1.unknown_2ABC[arg0].val0 = 0; + gSaveBlock1.unknown_2ABC[arg0].val1 = 0; + gSaveBlock1.unknown_2ABC[arg0].val2 = 0; +} + +void sub_80BEC40(void) +{ + u8 i, j; + + for (i = 0; i < 15; i++) + { + if (gSaveBlock1.unknown_2ABC[i].val0 == 0) + { + for (j = i + 1; j < 16; j++) + { + if (gSaveBlock1.unknown_2ABC[j].val0 != 0) + { + gSaveBlock1.unknown_2ABC[i] = gSaveBlock1.unknown_2ABC[j]; + sub_80BEC10(j); + break; + } + } + } + } +} + +u8 sub_80BECA0(void) +{ + u8 i; + for (i = 0; i < 16; i++) + { + if (gSaveBlock1.unknown_2ABC[i].val0 != 0 + && gSaveBlock1.unknown_2ABC[i].val1 == 1 + && gSaveBlock1.unknown_2ABC[i].val2 < 3) + return i; + } + return 0xFF; +} + +void sub_80BECE8(void) +{ + u8 arg0; + arg0 = sub_80BECA0(); + if (arg0 == 0xff) + { + gScriptResult = 0; + return; + } + if (gSaveBlock1.unknown_2ABC[arg0].val2 == 0) + { + gSaveBlock1.unknown_2ABC[arg0].val1 = 2; + if (gLocalTime.hours < 20) + ShowFieldMessage(gTVNewsTextGroup2[gSaveBlock1.unknown_2ABC[arg0].val0]); + else + ShowFieldMessage(gTVNewsTextGroup3[gSaveBlock1.unknown_2ABC[arg0].val0]); + } + else + { + u16 value = gSaveBlock1.unknown_2ABC[arg0].val2; + + ConvertIntToDecimalStringN(gStringVar1, value, 0, 1); + gSaveBlock1.unknown_2ABC[arg0].val1 = 0; + ShowFieldMessage(gTVNewsTextGroup1[gSaveBlock1.unknown_2ABC[arg0].val0]); + } + gScriptResult = 1; +} + +bool8 GetPriceReduction(u8 arg0) +{ + u8 i; + + if (arg0 == 0) + return FALSE; + for (i=0; i<16; i++) + { + if (gSaveBlock1.unknown_2ABC[i].val0 == arg0) + { + if (gSaveBlock1.unknown_2ABC[i].val1 == 2 && IsPriceDiscounted(arg0) != 0) + return TRUE; + else + return FALSE; + } + } + return FALSE; +} + +bool8 IsPriceDiscounted(u8 arg0) +{ + switch (arg0) + { + case 1: + if (gSaveBlock1.location.mapGroup == MAP_GROUP_SLATEPORT_CITY + && gSaveBlock1.location.mapNum == MAP_ID_SLATEPORT_CITY + && gScriptLastTalked == 0x1a) + return TRUE; + else + return FALSE; + break; + case 3: + if (gSaveBlock1.location.mapGroup == MAP_GROUP_LILYCOVE_CITY_DEPARTMENT_STORE_ROOFTOP + && gSaveBlock1.location.mapNum == MAP_ID_LILYCOVE_CITY_DEPARTMENT_STORE_ROOFTOP) + return TRUE; + else + return FALSE; + break; + default: + return TRUE; + } +} + +bool8 sub_80BEE48(u8 arg0) +{ + u8 i; + + if (arg0 == 0) + return TRUE; + for (i=0; i<16; i++) + { + if (gSaveBlock1.unknown_2ABC[i].val0 == arg0) + return TRUE; + } + return FALSE; +} + +void sub_80BEE84(u16 var0) +{ + u8 i; + + for (i=0; i<16; i++) + { + if (gSaveBlock1.unknown_2ABC[i].val0) + { + if (gSaveBlock1.unknown_2ABC[i].val2 < var0) + { + sub_80BEC10(i); + } + else + { + if (!gSaveBlock1.unknown_2ABC[i].val1 && FlagGet(SYS_GAME_CLEAR) == 1) + gSaveBlock1.unknown_2ABC[i].val1 = 1; + gSaveBlock1.unknown_2ABC[i].val2 -= var0; + } + } + } + sub_80BEC40(); +} + +void sub_80BEF10(u8 strvaridx, u8 rank) +{ + switch (rank) + { + case NORMAL_RANK: + StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[NORMAL_RANK + 5]); + break; + case SUPER_RANK: + StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[SUPER_RANK + 5]); + break; + case HYPER_RANK: + StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[HYPER_RANK + 5]); + break; + case MASTER_RANK: + StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[MASTER_RANK + 5]); + break; + } +} + +void CopyContestCategoryToStringVar(u8 strvaridx, u8 category) +{ + switch (category) + { + case CONTEST_COOL: + StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[CONTEST_COOL]); + break; + case CONTEST_BEAUTY: + StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[CONTEST_BEAUTY]); + break; + case CONTEST_CUTE: + StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[CONTEST_CUTE]); + break; + case CONTEST_SMART: + StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[CONTEST_SMART]); + break; + case CONTEST_TOUGH: + StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[CONTEST_TOUGH]); + break; + } +} + +void SetContestCategoryStringVarForInterview(void) +{ + struct TVShowBravoTrainerPokemonProfiles *bravoTrainer = &gSaveBlock1.tvShows[gSpecialVar_0x8004].bravoTrainer; + + CopyContestCategoryToStringVar(1, bravoTrainer->contestCategory); +} + +void sub_80BF088(u8 arg0, s32 price) +{ + size_t log10val = sub_80BF0B8(price); + + ConvertIntToDecimalStringN(gUnknown_083D1464[arg0], price, 0, log10val); +} + +size_t sub_80BF0B8(int value) +{ + if (value / 10 == 0) + return 1; + else if (value / 100 == 0) + return 2; + else if (value / 1000 == 0) + return 3; + else if (value / 10000 == 0) + return 4; + else if (value / 100000 == 0) + return 5; + else if (value / 1000000 == 0) + return 6; + else if (value / 10000000 == 0) + return 7; + else if (value / 100000000 == 0) + return 8; + else + return 1; +} + +void sub_80BF154(u8 arg0, struct TVShowSmartShopper *arg1) +{ + u8 i; + s32 price; + price = 0; + + for (i = 0; i < 3; i++) + { + if (arg1->itemIds[i]) + price += ItemId_GetPrice(arg1->itemIds[i]) * arg1->itemAmounts[i]; + } + if (arg1->priceReduced == 1) + sub_80BF088(arg0, price >> 1); + else + sub_80BF088(arg0, price); +} + +bool8 sub_80BF1B4(u8 showIdx) +{ + u8 i; + //TVShow *tvShows; + TVShow *tvShows = gSaveBlock1.tvShows; + u32 trainerId = GetPlayerTrainerId(); + + for (i = 5; i < 24; i++) + { + if (tvShows[i].common.var00 == showIdx) + { + if ((trainerId & 0xFF) == tvShows[i].common.trainerIdLo && ((trainerId >> 8) & 0xFF) == tvShows[i].common.trainerIdHi) + return TRUE; + } + } + return FALSE; +} + +void sub_80BF20C(void) +{ + u8 i, j; + u16 tmpId, tmpAmount; + + for (i = 0; i < 2; i++) + { + for (j = i + 1; j < 3; j++) + { + if (gUnknown_02038724[i].item_amount < gUnknown_02038724[j].item_amount) + { + tmpId = gUnknown_02038724[i].item_id; + tmpAmount = gUnknown_02038724[i].item_amount; + gUnknown_02038724[i].item_id = gUnknown_02038724[j].item_id; + gUnknown_02038724[i].item_amount = gUnknown_02038724[j].item_amount; + gUnknown_02038724[j].item_id = tmpId; + gUnknown_02038724[j].item_amount = tmpAmount; + } + } + } +} + +void sub_80BF25C(u8 showType) +{ + u8 i; + + for (i = 0; i < 5; i++) + { + if (gSaveBlock1.tvShows[i].common.var00 == showType) + { + if(gSaveBlock1.tvShows[i].common.var01 == 1) + { + gScriptResult = 1; + } + else + { + sub_80BF55C(gSaveBlock1.tvShows, i); + sub_80BF588(gSaveBlock1.tvShows); + sub_80BF6D8(); + } + return; + } + } + sub_80BF6D8(); +} + +void sub_80BF2C4(void) +{ + gScriptResult = 0; + switch (gSpecialVar_0x8005) + { + case TVSHOW_FAN_CLUB_LETTER: + sub_80BF334(); + break; + case TVSHOW_RECENT_HAPPENINGS: + sub_80BF3A4(); + break; + case TVSHOW_PKMN_FAN_CLUB_OPINIONS: + sub_80BF3DC(); + break; + case TVSHOW_UNKN_SHOWTYPE_04: + sub_80BF46C(); + break; + case TVSHOW_NAME_RATER_SHOW: + sub_80BF478(); + break; + case TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE: + sub_80BF484(); + break; + case TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE: + sub_80BF4BC(); + break; + } +} + +void sub_80BF334(void) +{ + struct TVShowFanClubLetter *fanclubLetter; + + sub_80BF25C(TVSHOW_FAN_CLUB_LETTER); + if (gScriptResult == 0) + { + StringCopy(gStringVar1, gSpeciesNames[GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_SPECIES, 0)]); + fanclubLetter = &gSaveBlock1.tvShows[gUnknown_03005D38.var0].fanclubLetter; + sub_80EB6FC(fanclubLetter->pad04, 6); + } +} + +void sub_80BF3A4(void) +{ + struct TVShowRecentHappenings *recentHappenings; + + sub_80BF25C(TVSHOW_RECENT_HAPPENINGS); + if (gScriptResult == 0) + { + recentHappenings = &gSaveBlock1.tvShows[gUnknown_03005D38.var0].recentHappenings; + sub_80EB6FC(recentHappenings->var04, 6); + } +} + +void sub_80BF3DC(void) +{ + struct TVShowFanclubOpinions *fanclubOpinions; + + sub_80BF25C(TVSHOW_PKMN_FAN_CLUB_OPINIONS); + if (gScriptResult == 0) + { + StringCopy(gStringVar1, gSpeciesNames[GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_SPECIES, 0)]); + GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_NICKNAME, gStringVar2); + StringGetEnd10(gStringVar2); + fanclubOpinions = &gSaveBlock1.tvShows[gUnknown_03005D38.var0].fanclubOpinions; + sub_80EB6FC(fanclubOpinions->var1C, 2); + } +} + +void sub_80BF46C(void) +{ + gScriptResult = 1; +} + +void sub_80BF478(void) +{ + sub_80BF25C(TVSHOW_NAME_RATER_SHOW); +} + +void sub_80BF484(void) +{ + struct TVShowBravoTrainerPokemonProfiles *bravoTrainer; + + sub_80BF25C(TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE); + if (gScriptResult == 0) + { + bravoTrainer = &gSaveBlock1.tvShows[gUnknown_03005D38.var0].bravoTrainer; + sub_80EB6FC(bravoTrainer->var04, 2); + } +} + +void sub_80BF4BC(void) +{ + struct TVShowBravoTrainerBattleTowerSpotlight *bravoTrainerTower; + + sub_80BF25C(TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE); + if (gScriptResult == 0) + { + bravoTrainerTower = &gSaveBlock1.tvShows[gUnknown_03005D38.var0].bravoTrainerTower; + sub_80EB6FC(bravoTrainerTower->var18, 1); // wrong struct ident, fix later + } +} + +#if ENGLISH +u8 sub_80BF4F4(u8 arg0) +{ + u32 species; + + GetMonData(&gPlayerParty[arg0], MON_DATA_NICKNAME, &gStringVar1); + species = GetMonData(&gPlayerParty[arg0], MON_DATA_SPECIES, NULL); + if (StringCompareWithoutExtCtrlCodes(gSpeciesNames[species], gStringVar1) == FALSE) + return FALSE; + + return TRUE; +} +#elif GERMAN +u8 sub_80BF4F4(u8 arg0) +{ + u8 langData[4]; + u32 species; + u8 *tmp; + + GetMonData(&gPlayerParty[arg0], MON_DATA_NICKNAME, &gStringVar1); + + tmp = langData; + tmp[0] = GetMonData(&gPlayerParty[arg0], MON_DATA_LANGUAGE, &langData); + if (tmp[0] != GAME_LANGUAGE) + return TRUE; + + species = GetMonData(&gPlayerParty[arg0], MON_DATA_SPECIES, NULL); + if (StringCompareWithoutExtCtrlCodes(gSpeciesNames[species], gStringVar1)) + return TRUE; + + return FALSE; +} +#endif + +u8 sub_80BF544(void) +{ + return sub_80BF4F4(GetLeadMonIndex()); +} + +void sub_80BF55C(TVShow tvShow[], u8 showidx) +{ + u8 idx; + + tvShow[showidx].common.var00 = 0; + tvShow[showidx].common.var01 = 0; + for (idx = 0; idx < 34; idx++) + tvShow[showidx].common.pad02[idx] = 0; +} + +void sub_80BF588(TVShow tvShow[]) +{ + u8 showidx; + u8 showidx2; + + for (showidx = 0; showidx < 4; showidx++) + { + if (tvShow[showidx].common.var00 == 0) + { + for (showidx2 = showidx + 1; showidx2 < 5; showidx2++) + { + if (tvShow[showidx2].common.var00 != 0) + { + tvShow[showidx] = tvShow[showidx2]; + sub_80BF55C(tvShow, showidx2); + break; + } + } + } + } + for (showidx = 5; showidx < 24; showidx++) + { + if (tvShow[showidx].common.var00 == 0) + { + for (showidx2 = showidx + 1; showidx2 < 24; showidx2++) + { + if (tvShow[showidx2].common.var00 != 0) + { + tvShow[showidx] = tvShow[showidx2]; + sub_80BF55C(gSaveBlock1.tvShows, showidx2); + break; + } + } + } + } +} + +u16 sub_80BF638(u8 arg0, u16 arg1) +{ + u16 retval = sub_80BF674(arg1); + + StringCopy(gUnknown_083D1464[arg0], gSpeciesNames[retval]); + return retval; +} + +u16 sub_80BF674(u16 species) +{ + u16 rspecies; + u16 cspecies; + + rspecies = (Random() % (NUM_SPECIES - 1)) + 1; + cspecies = rspecies; + while (GetSetPokedexFlag(SpeciesToNationalPokedexNum(cspecies), 0) != 1 || cspecies == species) + { + if (cspecies == SPECIES_BULBASAUR) + cspecies = NUM_SPECIES - 1; + else + cspecies --; + if (cspecies == rspecies) + { + cspecies = species; + return cspecies; + } + } + return cspecies; +} + +void sub_80BF6D8(void) +{ + gUnknown_03005D38.var0 = sub_80BF720(gSaveBlock1.tvShows); + gSpecialVar_0x8006 = gUnknown_03005D38.var0; + if (gUnknown_03005D38.var0 == -1) + gScriptResult = 1; + else + gScriptResult = 0; +} + +s8 sub_80BF720(TVShow tvShow[]) +{ + u8 idx; + + for (idx = 0; idx < 5; idx++) + { + if (tvShow[idx].common.var00 == 0) + return idx; + } + return -1; +} + +s8 sub_80BF74C(TVShow tvShow[]) +{ + s8 idx; + + for (idx = 5; idx < 24; idx++) + { + if (tvShow[idx].common.var00 == 0) + return idx; + } + return -1; +} + +bool8 sub_80BF77C(u16 value) +{ + if (Random() <= value) + return FALSE; + return TRUE; +} + +void sub_80BF79C(TVShow *arg0) +{ + u8 i = Random() % 6; + + while (1) + { + if (i == 6) + i = 0; + if (arg0->recentHappenings.var04[i] != 0xFFFF) + break; + i++; + } + EasyChat_GetWordText(gStringVar3, arg0->recentHappenings.var04[i]); +} + +u8 sub_80BF7E8(struct TVShowNameRaterShow *arg0) +{ + u16 flagsum = 0; + u8 i = 0; + + if (arg0->pokemonName[0] != 0xFF) + { + while (i < 11 && arg0->pokemonName[i] != 0xFF) + { + flagsum += arg0->pokemonName[i]; + i++; + } + } + return flagsum & 0x7; +} + + +void sub_80BF820(u8 arg0, u8 arg1, u8 arg2, u16 arg3, u16 arg4, struct TVShowNameRaterShow *tvShow) +{ + u8 flags[3]; + u16 nameLength; + u8 i; + + for (i = 0; i < 3; i++) + flags[i] = EOS; + + if (arg3 == 0) + { + nameLength = StringLength(tvShow->trainerName); + if (arg2 == 0) + { + flags[0] = tvShow->trainerName[arg1]; + } + else if (arg2 == 1) + { + flags[0] = tvShow->trainerName[nameLength - arg1]; + } + else if (arg2 == 2) { + flags[0] = tvShow->trainerName[arg1]; + flags[1] = tvShow->trainerName[arg1 + 1]; + } + else + { + flags[0] = tvShow->trainerName[nameLength - (arg1 + 2)]; + flags[1] = tvShow->trainerName[nameLength - (arg1 + 1)]; + } + } + else if (arg3 == 1) + { + nameLength = StringLength(tvShow->pokemonName); + if (arg2 == 0) + { + flags[0] = tvShow->pokemonName[arg1]; + } + else if (arg2 == 1) + { + flags[0] = tvShow->pokemonName[nameLength - arg1]; + } + else if (arg2 == 2) + { + flags[0] = tvShow->pokemonName[arg1]; + flags[1] = tvShow->pokemonName[arg1 + 1]; + } + else + { + flags[0] = tvShow->pokemonName[nameLength - (arg1 + 2)]; + flags[1] = tvShow->pokemonName[nameLength - (arg1 + 1)]; + } + } + else + { + nameLength = StringLength(gSpeciesNames[arg4]); + if (arg2 == 0) + { + flags[0] = gSpeciesNames[arg4][arg1]; + } + else if (arg2 == 1) + { + flags[0] = gSpeciesNames[arg4][nameLength - arg1]; + } + else if (arg2 == 2) + { + flags[0] = gSpeciesNames[arg4][arg1]; + flags[1] = gSpeciesNames[arg4][arg1 + 1]; + } + else + { + flags[0] = gSpeciesNames[arg4][nameLength - (arg1 + 2)]; + flags[1] = gSpeciesNames[arg4][nameLength - (arg1 + 1)]; + } + } + StringCopy(gUnknown_083D1464[arg0], flags); +} + +bool8 sub_80BF974(void) +{ + u8 i; + + for (i = 0; i < 5; i++) + { + if (gSaveBlock1.tvShows[i].common.var00 == gSpecialVar_0x8004) + return TRUE; + } + return FALSE; +} + +bool8 sub_80BF9B4(void) +{ + GetMonData(&(gPlayerParty[gSpecialVar_0x8004]), MON_DATA_NICKNAME, &gStringVar1); + if (!StringCompareWithoutExtCtrlCodes(gStringVar3, gStringVar1)) + return FALSE; + sub_80BE478(); + return TRUE; +} + +void c2_080CC144(void); + +void sub_80BF9F8(void) +{ + u16 spec; + u16 gender; + u32 pval; + + GetMonData(&(gPlayerParty[gSpecialVar_0x8004]), MON_DATA_NICKNAME, &gStringVar3); + GetMonData(&(gPlayerParty[gSpecialVar_0x8004]), MON_DATA_NICKNAME, &gStringVar2); + spec = GetMonData(&(gPlayerParty[gSpecialVar_0x8004]), MON_DATA_SPECIES, 0); + gender = GetMonGender(&(gPlayerParty[gSpecialVar_0x8004])); + pval = GetMonData(&(gPlayerParty[gSpecialVar_0x8004]), MON_DATA_PERSONALITY, 0); + DoNamingScreen(3, gStringVar2, spec, gender, pval, c2_080CC144); +} + +void c2_080CC144(void) +{ + SetMonData(&(gPlayerParty[gSpecialVar_0x8004]), MON_DATA_NICKNAME, gStringVar2); + c2_exit_to_overworld_1_continue_scripts_restart_music(); +} + +void sub_80BFAE0(void) +{ + GetMonData(&(gPlayerParty[gSpecialVar_0x8004]), MON_DATA_NICKNAME, &gStringVar1); + StringGetEnd10(gStringVar1); +} + +void sub_80BFB10(void) +{ + if (GetPlayerTrainerId() == GetMonData(&(gPlayerParty[gSpecialVar_0x8004]), MON_DATA_OT_ID, 0)) + gScriptResult = 0; + else + gScriptResult = 1; +} + +u8 sub_80BFB54(u8 arg0) +{ + if (arg0 == 0) + return 0; + else if (arg0 > 0 && arg0 <= 20) + return 2; + else if (arg0 > 20 && arg0 <= 40) + return 3; + else if (arg0 > 40 && arg0 <= 60) + return 4; + else + return 0; +} + +u32 GetPlayerTrainerId(void) +{ + return (gSaveBlock2.playerTrainerId[3] << 24) | (gSaveBlock2.playerTrainerId[2] << 16) | (gSaveBlock2.playerTrainerId[1] << 8) | (gSaveBlock2.playerTrainerId[0]); +} + +u8 CheckForBigMovieOrEmergencyNewsOnTV(void) +{ + if (gSaveBlock1.location.mapGroup != MAP_GROUP_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F) + return 0; + if (gSaveBlock2.playerGender == MALE) + { + if (gSaveBlock1.location.mapNum != MAP_ID_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F) + return 0; + } + else + { + if (gSaveBlock1.location.mapNum != MAP_ID_LITTLEROOT_TOWN_MAYS_HOUSE_1F) + return 0; + } + if (FlagGet(SYS_TV_LATI) == 1) + return 1; + if (FlagGet(SYS_TV_HOME) == 1) + return 2; + return 1; +} + +void GetMomOrDadStringForTVMessage(void) +{ + if (gSaveBlock1.location.mapGroup == MAP_GROUP_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F) + { + if (gSaveBlock2.playerGender == MALE) + { + if (gSaveBlock1.location.mapNum == MAP_ID_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F) + { + StringCopy(gStringVar1, gOtherText_Mom); + VarSet(VAR_0x4003, 1); + } + } + else + { + if (gSaveBlock1.location.mapNum == MAP_ID_LITTLEROOT_TOWN_MAYS_HOUSE_1F) + { + StringCopy(gStringVar1, gOtherText_Mom); + VarSet(VAR_0x4003, 1); + } + } + } + if (VarGet(VAR_0x4003) == 1) + { + StringCopy(gStringVar1, gOtherText_Mom); + } + else if (VarGet(VAR_0x4003) == 2) + { + StringCopy(gStringVar1, gOtherText_Dad); + } + else if (VarGet(VAR_0x4003) > 2) + { + if (VarGet(VAR_0x4003) % 2 == 0) + StringCopy(gStringVar1, gOtherText_Mom); + else + StringCopy(gStringVar1, gOtherText_Dad); + } + else + { + if (Random() % 2 != 0) + { + StringCopy(gStringVar1, gOtherText_Mom); + VarSet(VAR_0x4003, 1); + } + else + { + StringCopy(gStringVar1, gOtherText_Dad); + VarSet(VAR_0x4003, 2); + } + } +} + +void sub_80BFD20(void) +{ + VarSet(VAR_0x40BC, 0); + RemoveFieldObjectByLocalIdAndMap(5, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup); +} + +typedef union ewramStruct_02007000 +{ + TVShow tvshows[4][25]; + struct UnknownSaveStruct2ABC unknown_2abc[4][16]; +} ewramStruct_02007000; + +void sub_80BFE24(TVShow arg0[25], TVShow arg1[25], TVShow arg2[25], TVShow arg3[25]); + +void sub_80C04A0(void); +void sub_80C01D4(void); +void sub_80C0408(void); + +void sub_80BFD44(u8 *arg0, u32 arg1, u8 arg2) +{ + u8 i; + ewramStruct_02007000 *ewramTVShows; + + for (i = 0; i < 4; i++) + memcpy(&gUnknown_02007000.tvshows[i], &arg0[i * arg1], 25 * sizeof(TVShow)); + ewramTVShows = &gUnknown_02007000; + switch (arg2) + { + case 0: + sub_80BFE24(gSaveBlock1.tvShows, ewramTVShows->tvshows[1], ewramTVShows->tvshows[2], ewramTVShows->tvshows[3]); + break; + case 1: + sub_80BFE24(ewramTVShows->tvshows[0], gSaveBlock1.tvShows, ewramTVShows->tvshows[2], ewramTVShows->tvshows[3]); + break; + case 2: + sub_80BFE24(ewramTVShows->tvshows[0], ewramTVShows->tvshows[1], gSaveBlock1.tvShows, ewramTVShows->tvshows[3]); + break; + case 3: + sub_80BFE24(ewramTVShows->tvshows[0], ewramTVShows->tvshows[1], ewramTVShows->tvshows[2], gSaveBlock1.tvShows); + break; + } + sub_80BF588(gSaveBlock1.tvShows); + sub_80C04A0(); + sub_80BF588(gSaveBlock1.tvShows); + sub_80C01D4(); + sub_80C0408(); +} + +s8 sub_80C019C(TVShow tvShows[]); +bool8 sub_80BFF68(TVShow * tv1[25], TVShow * tv2[25], u8 idx); +u8 sub_80C004C(TVShow *tv1, TVShow *tv2, u8 idx); +u8 sub_80C00B4(TVShow *tv1, TVShow *tv2, u8 idx); +u8 sub_80C0134(TVShow *tv1, TVShow *tv2, u8 idx); + +void sub_80BFE24(TVShow arg0[25], TVShow arg1[25], TVShow arg2[25], TVShow arg3[25]) +{ + u8 i, j; + TVShow **argslist[4]; + + argslist[0] = &arg0; + argslist[1] = &arg1; + argslist[2] = &arg2; + argslist[3] = &arg3; + gUnknown_03000720 = GetLinkPlayerCount(); + while (1) + { + for (i=0; icommon.trainerIdLo && ((linkTrainerId >> 8) & 0xFF) == tv2->common.trainerIdHi) + return FALSE; + tv2->common.trainerIdLo = tv2->common.srcTrainerIdLo; + tv2->common.trainerIdHi = tv2->common.srcTrainerIdHi; + tv2->common.srcTrainerIdLo = linkTrainerId & 0xFF; + tv2->common.srcTrainerIdHi = linkTrainerId >> 8; + *tv1 = *tv2; + tv1->common.var01 = 1; + return TRUE; +} + +u8 sub_80C00B4(TVShow *tv1, TVShow *tv2, u8 idx) +{ + u32 linkTrainerId = GetLinkPlayerTrainerId(idx); + if ((linkTrainerId & 0xFF) == tv2->common.srcTrainerIdLo && ((linkTrainerId >> 8) & 0xFF) == tv2->common.srcTrainerIdHi) + return FALSE; + if ((linkTrainerId & 0xFF) == tv2->common.trainerIdLo && ((linkTrainerId >> 8) & 0xFF) == tv2->common.trainerIdHi) + return FALSE; + tv2->common.srcTrainerIdLo = tv2->common.srcTrainerId2Lo; + tv2->common.srcTrainerIdHi = tv2->common.srcTrainerId2Hi; + tv2->common.srcTrainerId2Lo = linkTrainerId & 0xFF; + tv2->common.srcTrainerId2Hi = linkTrainerId >> 8; + *tv1 = *tv2; + tv1->common.var01 = 1; + return TRUE; +} + +u8 sub_80C0134(TVShow *tv1, TVShow *tv2, u8 idx) +{ + u32 linkTrainerId = GetLinkPlayerTrainerId(idx); + if ((linkTrainerId & 0xFF) == tv2->common.trainerIdLo && ((linkTrainerId >> 8) & 0xFF) == tv2->common.trainerIdHi) + return FALSE; + tv2->common.trainerIdLo = tv2->common.srcTrainerIdLo; + tv2->common.trainerIdHi = tv2->common.srcTrainerIdHi; + tv2->common.srcTrainerIdLo = linkTrainerId & 0xFF; + tv2->common.srcTrainerIdHi = linkTrainerId >> 8; + *tv1 = *tv2; + tv1->common.var01 = 1; + tv1->common.var16[0] = 1; + return TRUE; +} + +s8 sub_80C019C(TVShow tvShows[]) +{ + u8 i; + for (i = 0; i < 24; i++) + { + if (tvShows[i].common.var01 == 0 && (u8)(tvShows[i].common.var00 - 1) < 60) + return i; + } + return -1; +} + +#ifdef NONMATCHING +void sub_80C01D4(void) +{ + u16 i; + for (i=0; i<24; i++) + { + switch (gSaveBlock1.tvShows[i].common.var00) + { + case 0: + case TVSHOW_RECENT_HAPPENINGS: + case TVSHOW_SMART_SHOPPER: + case TVSHOW_MASS_OUTBREAK: + break; + case TVSHOW_FAN_CLUB_LETTER: + sub_80C03C8((&gSaveBlock1.tvShows[i])->fanclubLetter.species, i); + break; + case TVSHOW_PKMN_FAN_CLUB_OPINIONS: + sub_80C03C8((&gSaveBlock1.tvShows[i])->fanclubOpinions.var02, i); + break; + case TVSHOW_UNKN_SHOWTYPE_04: + sub_80C03C8((&gSaveBlock1.tvShows[i])->unkShow04.var06, i); + break; + case TVSHOW_NAME_RATER_SHOW: + sub_80C03C8((&gSaveBlock1.tvShows[i])->nameRaterShow.species, i); + sub_80C03C8((&gSaveBlock1.tvShows[i])->nameRaterShow.var1C, i); + break; + case TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE: + sub_80C03C8((&gSaveBlock1.tvShows[i])->bravoTrainer.species, i); + break; + case TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE: + sub_80C03C8((&gSaveBlock1.tvShows[i])->bravoTrainerTower.species, i); + sub_80C03C8((&gSaveBlock1.tvShows[i])->bravoTrainerTower.defeatedSpecies, i); + break; + case TVSHOW_POKEMON_TODAY_CAUGHT: + sub_80C03C8((&gSaveBlock1.tvShows[i])->pokemonToday.species, i); + break; + case TVSHOW_POKEMON_TODAY_FAILED: + sub_80C03C8((&gSaveBlock1.tvShows[i])->pokemonTodayFailed.species, i); + sub_80C03C8((&gSaveBlock1.tvShows[i])->pokemonTodayFailed.species2, i); + break; + case TVSHOW_FISHING_ADVICE: + sub_80C03C8((&gSaveBlock1.tvShows[i])->pokemonAngler.var04, i); + break; + case TVSHOW_WORLD_OF_MASTERS: + sub_80C03C8((&gSaveBlock1.tvShows[i])->worldOfMasters.var08, i); + sub_80C03C8((&gSaveBlock1.tvShows[i])->worldOfMasters.var04, i); + break; + default: + sub_80C03A8(i); + } + } +} +#else +__attribute__((naked)) +void sub_80C01D4(void) { + asm(".syntax unified\n\ + push {r4-r6,lr}\n\ + movs r6, 0\n\ +_080C01D8:\n\ + ldr r0, _080C01F8 @ =gSaveBlock1\n\ + lsls r2, r6, 3\n\ + adds r1, r2, r6\n\ + lsls r1, 2\n\ + adds r1, r0\n\ + ldr r0, _080C01FC @ =0x00002738\n\ + adds r1, r0\n\ + ldrb r0, [r1]\n\ + cmp r0, 0x29\n\ + bls _080C01EE\n\ + b _default\n\ +_080C01EE:\n\ + lsls r0, 2\n\ + ldr r1, _080C0200 @ =_080C0204\n\ + adds r0, r1\n\ + ldr r0, [r0]\n\ + mov pc, r0\n\ + .align 2, 0\n\ +_080C01F8: .4byte gSaveBlock1\n\ +_080C01FC: .4byte 0x00002738\n\ +_080C0200: .4byte _080C0204\n\ + .align 2, 0\n\ +_080C0204:\n\ + .4byte _break\n\ + .4byte _fanclubLetter @ TVSHOW_FAN_CLUB_LETTER\n\ + .4byte _break @ TVSHOW_RECENT_HAPPENINGS\n\ + .4byte _fanclubOpinions @ TVSHOW_PKMN_FAN_CLUB_OPINIONS\n\ + .4byte _showtype4 @ TVSHOW_UNKN_SHOWTYPE_04\n\ + .4byte _nameRater @ TVSHOW_NAME_RATER_SHOW\n\ + .4byte _bravoTrainerContest @ TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE\n\ + .4byte _bravoTrainerTower @ TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _pokemonTodayS @ TVSHOW_POKEMON_TODAY_CAUGHT\n\ + .4byte _break @ TVSHOW_SMART_SHOPPER\n\ + .4byte _pokemonTodayF @ TVSHOW_POKEMON_TODAY_FAILED\n\ + .4byte _fishing @ TVSHOW_FISHING_ADVICE\n\ + .4byte _worldOfMasters @ TVSHOW_WORLD_OF_MASTERS\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _break @ TVSHOW_MASS_OUTBREAK\n\ +_fanclubLetter:\n\ + adds r0, r2, r6\n\ + lsls r0, 2\n\ + ldr r1, _080C02B8 @ =gSaveBlock1 + 0x2738\n\ + adds r0, r1\n\ + ldrh r0, [r0, 0x2]\n\ + b _checkSpecies1 @ sub_80C03C8(r0, i)\n\ + .align 2, 0\n\ +_080C02B8: .4byte gSaveBlock1 + 0x2738\n\ +_fanclubOpinions:\n\ + adds r0, r2, r6\n\ + lsls r0, 2\n\ + ldr r1, _080C02C8 @ =gSaveBlock1 + 0x2738\n\ + adds r0, r1\n\ + ldrh r0, [r0, 0x2]\n\ + b _checkSpecies1 @ sub_80C03C8(r0, i)\n\ + .align 2, 0\n\ +_080C02C8: .4byte gSaveBlock1 + 0x2738\n\ +_showtype4:\n\ + adds r0, r2, r6\n\ + lsls r0, 2\n\ + ldr r1, _080C02D8 @ =gSaveBlock1 + 0x2738\n\ + adds r0, r1\n\ + ldrh r0, [r0, 0x6]\n\ + b _checkSpecies1 @ sub_80C03C8(r0, i)\n\ + .align 2, 0\n\ +_080C02D8: .4byte gSaveBlock1 + 0x2738\n\ +_nameRater:\n\ + adds r4, r2, r6\n\ + lsls r4, 2\n\ + ldr r0, _080C02F4 @ =gSaveBlock1 + 0x2738\n\ + adds r4, r0\n\ + ldrh r0, [r4, 0x2]\n\ + lsls r5, r6, 24\n\ + lsrs r5, 24\n\ + adds r1, r5, 0\n\ + bl sub_80C03C8\n\ + ldrh r0, [r4, 0x1C]\n\ + b _checkSpecies2 @ sub_80C03C8(r0, i)\n\ + .align 2, 0\n\ +_080C02F4: .4byte gSaveBlock1 + 0x2738\n\ +_bravoTrainerContest:\n\ + adds r0, r2, r6\n\ + lsls r0, 2\n\ + ldr r1, _080C0304 @ =gSaveBlock1 + 0x2738\n\ + adds r0, r1\n\ + ldrh r0, [r0, 0x2]\n\ + b _checkSpecies1 @ sub_80C03C8(r0, i)\n\ + .align 2, 0\n\ +_080C0304: .4byte gSaveBlock1 + 0x2738\n\ +_bravoTrainerTower:\n\ + adds r4, r2, r6\n\ + lsls r4, 2\n\ + ldr r0, _080C0320 @ =gSaveBlock1 + 0x2738\n\ + adds r4, r0\n\ + ldrh r0, [r4, 0xA]\n\ + lsls r5, r6, 24\n\ + lsrs r5, 24\n\ + adds r1, r5, 0\n\ + bl sub_80C03C8\n\ + ldrh r0, [r4, 0x14]\n\ + b _checkSpecies2 @ sub_80C03C8(r0, i)\n\ + .align 2, 0\n\ +_080C0320: .4byte gSaveBlock1 + 0x2738\n\ +_pokemonTodayS:\n\ + adds r0, r2, r6\n\ + lsls r0, 2\n\ + ldr r1, _080C0330 @ =gSaveBlock1 + 0x2738\n\ + adds r0, r1\n\ + ldrh r0, [r0, 0x10]\n\ + b _checkSpecies1 @ sub_80C03C8(r0, i)\n\ + .align 2, 0\n\ +_080C0330: .4byte gSaveBlock1 + 0x2738\n\ +_pokemonTodayF:\n\ + adds r4, r2, r6\n\ + lsls r4, 2\n\ + ldr r0, _080C034C @ =gSaveBlock1 + 0x2738\n\ + adds r4, r0\n\ + ldrh r0, [r4, 0xC]\n\ + lsls r5, r6, 24\n\ + lsrs r5, 24\n\ + adds r1, r5, 0\n\ + bl sub_80C03C8\n\ + ldrh r0, [r4, 0xE]\n\ + b _checkSpecies2 @ sub_80C03C8(r0, i)\n\ + .align 2, 0\n\ +_080C034C: .4byte gSaveBlock1 + 0x2738\n\ +_fishing:\n\ + adds r0, r2, r6\n\ + lsls r0, 2\n\ + ldr r1, _080C0364 @ =gSaveBlock1 + 0x2738\n\ + adds r0, r1\n\ + ldrh r0, [r0, 0x4]\n\ +_checkSpecies1:\n\ + lsls r1, r6, 24\n\ + lsrs r1, 24\n\ + bl sub_80C03C8\n\ + b _break\n\ + .align 2, 0\n\ +_080C0364: .4byte gSaveBlock1 + 0x2738\n\ +_worldOfMasters:\n\ + adds r4, r2, r6\n\ + lsls r4, 2\n\ + ldr r0, _080C0388 @ =gSaveBlock1 + 0x2738\n\ + adds r4, r0\n\ + ldrh r0, [r4, 0x8]\n\ + lsls r5, r6, 24\n\ + lsrs r5, 24\n\ + adds r1, r5, 0\n\ + bl sub_80C03C8\n\ + ldrh r0, [r4, 0x4]\n\ +_checkSpecies2:\n\ + adds r1, r5, 0\n\ + bl sub_80C03C8\n\ + b _break\n\ + .align 2, 0\n\ +_080C0388: .4byte gSaveBlock1 + 0x2738\n\ +_default:\n\ + lsls r0, r6, 24\n\ + lsrs r0, 24\n\ + bl sub_80C03A8\n\ +_break:\n\ + adds r0, r6, 0x1\n\ + lsls r0, 16\n\ + lsrs r6, r0, 16\n\ + cmp r6, 0x17\n\ + bhi _080C03A0\n\ + b _080C01D8\n\ +_080C03A0:\n\ + pop {r4-r6}\n\ + pop {r0}\n\ + bx r0\n\ +.syntax divided\n"); +} +#endif + +void sub_80C03A8(u8 showidx) +{ + gSaveBlock1.tvShows[showidx].common.var01 = 0; +} + +void sub_80C03C8(u16 species, u8 showidx) +{ + if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(species), 0) == 0) + gSaveBlock1.tvShows[showidx].common.var01 = 0; +} + +void sub_80C0408(void) +{ + u16 i; + + if (FlagGet(SYS_GAME_CLEAR) == TRUE) + return; + for (i = 0; i < 24; i++) + { + if (gSaveBlock1.tvShows[i].common.var00 == TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE) + gSaveBlock1.tvShows[i].common.var01 = 0; + else if (gSaveBlock1.tvShows[i].common.var00 == TVSHOW_MASS_OUTBREAK) + gSaveBlock1.tvShows[i].common.var01 = 0; + } +} + +void sub_80C045C(void) +{ + u8 i; + + for (i = 0; i < 5; i++) + { + if (sub_80BFB54(gSaveBlock1.tvShows[i].common.var00) == 2) + gSaveBlock1.tvShows[i].common.var01 = 0; + } +} + +void sub_80C04A0(void) +{ + s8 showIdx; + s8 count; + count = 0; + + for (showIdx = 5; showIdx < 24; showIdx++) + { + if (gSaveBlock1.tvShows[showIdx].common.var00 == 0) + count++; + } + for (showIdx = 0; showIdx < 5 - count; showIdx++) + sub_80BF55C(gSaveBlock1.tvShows, showIdx+5); +} + +void sub_80C05C4(struct UnknownSaveStruct2ABC[16], struct UnknownSaveStruct2ABC[16], struct UnknownSaveStruct2ABC[16], struct UnknownSaveStruct2ABC[16]); +void sub_80C0750(void); +void sub_80C0788(void); +s8 sub_80C0730(struct UnknownSaveStruct2ABC[16], u8); +void sub_80C06BC(struct UnknownSaveStruct2ABC *[16], struct UnknownSaveStruct2ABC *[16]); + +void sub_80C0514(void *a0, u32 a1, u8 a2) +{ + ewramStruct_02007000 *struct02007000; + u8 i; + + for (i = 0; i < 4; i++) + memcpy(gUnknown_02007000.unknown_2abc[i], a0 + i * a1, 64); + struct02007000 = &gUnknown_02007000; + switch (a2) + { + case 0: + sub_80C05C4(gSaveBlock1.unknown_2ABC, struct02007000->unknown_2abc[1], struct02007000->unknown_2abc[2], struct02007000->unknown_2abc[3]); + break; + case 1: + sub_80C05C4(struct02007000->unknown_2abc[0], gSaveBlock1.unknown_2ABC, struct02007000->unknown_2abc[2], struct02007000->unknown_2abc[3]); + break; + case 2: + sub_80C05C4(struct02007000->unknown_2abc[0], struct02007000->unknown_2abc[1], gSaveBlock1.unknown_2ABC, struct02007000->unknown_2abc[3]); + break; + case 3: + sub_80C05C4(struct02007000->unknown_2abc[0], struct02007000->unknown_2abc[1], struct02007000->unknown_2abc[2], gSaveBlock1.unknown_2ABC); + break; + } + sub_80C0750(); + sub_80C0788(); +} + +void sub_80C05C4(struct UnknownSaveStruct2ABC a0[16], struct UnknownSaveStruct2ABC a1[16], struct UnknownSaveStruct2ABC a2[16], struct UnknownSaveStruct2ABC a3[16]) +{ + u8 i; + u8 j; + u8 k; + struct UnknownSaveStruct2ABC ** arglist[4]; + + arglist[0] = &a0; + arglist[1] = &a1; + arglist[2] = &a2; + arglist[3] = &a3; + gUnknown_03000721 = GetLinkPlayerCount(); + for (i = 0; i < 16; i++) + { + for (j = 0; j < gUnknown_03000721; j++) + { + gUnknown_03000722 = sub_80C0730(*arglist[j], i); + if (gUnknown_03000722 != -1) + { + for (k = 0; k < gUnknown_03000721-1; k++) + { + gUnknown_03005D38.var0 = sub_80BEBC8(*arglist[(j + k + 1) % gUnknown_03000721]); + if (gUnknown_03005D38.var0 != -1) + sub_80C06BC(arglist[(j + k + 1) % gUnknown_03000721], arglist[j]); + } + } + } + } +} + +void sub_80C06BC(struct UnknownSaveStruct2ABC *arg0[16], struct UnknownSaveStruct2ABC *arg1[16]) +{ + struct UnknownSaveStruct2ABC *str0; + struct UnknownSaveStruct2ABC *str1; + + str0 = arg0[0]; + str1 = arg1[0]; + str1 += gUnknown_03000722; + sub_80C06E8(str0, str1, gUnknown_03005D38.var0); +} + +bool8 sub_80C06E8(struct UnknownSaveStruct2ABC *arg0, struct UnknownSaveStruct2ABC *arg1, s8 arg2) +{ + u8 i; + + if (arg1->val0 == 0) + return FALSE; + for (i = 0; i < 16; i++) + { + if (arg0[i].val0 == arg1->val0) + return FALSE; + } + arg0[arg2].val0 = arg1->val0; + arg0[arg2].val1 = 1; + arg0[arg2].val2 = arg1->val2; + return TRUE; +} + +s8 sub_80C0730(struct UnknownSaveStruct2ABC *arg0, u8 arg1) +{ + if (arg0[arg1].val0 == 0) + return -1; + return arg1; +} + +void sub_80C0750(void) +{ + u8 i; + + for (i = 0; i < 16; i++) + { + if (gSaveBlock1.unknown_2ABC[i].val0 > 3) + sub_80BEC10(i); + } + sub_80BEC40(); +} + +void sub_80C0788(void) +{ + u8 i; + + if (FlagGet(SYS_GAME_CLEAR) != 1) + { + for (i = 0; i < 16; i++) + gSaveBlock1.unknown_2ABC[i].val1 = 0; + } +} + +void DoTVShow(void) +{ + if (gSaveBlock1.tvShows[gSpecialVar_0x8004].common.var01 != 0) + { + switch (gSaveBlock1.tvShows[gSpecialVar_0x8004].common.var00) + { + case TVSHOW_FAN_CLUB_LETTER: + DoTVShowPokemonFanClubLetter(); + break; + case TVSHOW_RECENT_HAPPENINGS: + DoTVShowRecentHappenings(); + break; + case TVSHOW_PKMN_FAN_CLUB_OPINIONS: + DoTVShowPokemonFanClubOpinions(); + break; + case TVSHOW_UNKN_SHOWTYPE_04: + nullsub_22(); + break; + case TVSHOW_MASS_OUTBREAK: + DoTVShowPokemonNewsMassOutbreak(); + break; + case TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE: + DoTVShowBravoTrainerPokemonProfile(); + break; + case TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE: + DoTVShowBravoTrainerBattleTowerProfile(); + break; + case TVSHOW_POKEMON_TODAY_CAUGHT: + DoTVShowPokemonTodaySuccessfulCapture(); + break; + case TVSHOW_SMART_SHOPPER: + DoTVShowTodaysSmartShopper(); + break; + case TVSHOW_NAME_RATER_SHOW: + DoTVShowTheNameRaterShow(); + break; + case TVSHOW_POKEMON_TODAY_FAILED: + DoTVShowPokemonTodayFailedCapture(); + break; + case TVSHOW_FISHING_ADVICE: + DoTVShowPokemonAngler(); + break; + case TVSHOW_WORLD_OF_MASTERS: + DoTVShowTheWorldOfMasters(); + break; + } + } +} + +void TVShowConvertInternationalString(u8 *dest, u8 *src, u8 language) +{ + StringCopy(dest, src); + if (language < LANGUAGE_ENGLISH) + ConvertInternationalString(dest, LANGUAGE_JAPANESE); +} + +void DoTVShowBravoTrainerPokemonProfile(void) +{ + struct TVShowBravoTrainerPokemonProfiles *bravoTrainer = &gSaveBlock1.tvShows[gSpecialVar_0x8004].bravoTrainer; + u8 state; + + gScriptResult = 0; + state = gUnknown_020387E8; + switch(state) + { + case 0: + TVShowConvertInternationalString(gStringVar1, bravoTrainer->playerName, bravoTrainer->language); + CopyContestCategoryToStringVar(1, bravoTrainer->contestCategory); + sub_80BEF10(2, bravoTrainer->contestRank); + if (!StringCompareWithoutExtCtrlCodes(gSpeciesNames[bravoTrainer->species], bravoTrainer->pokemonNickname)) + gUnknown_020387E8 = 8; + else + gUnknown_020387E8 = 1; + break; + case 1: + StringCopy(gStringVar1, gSpeciesNames[bravoTrainer->species]); + TVShowConvertInternationalString(gStringVar2, bravoTrainer->pokemonNickname, bravoTrainer->var1f); + CopyContestCategoryToStringVar(2, bravoTrainer->contestCategory); + gUnknown_020387E8 = 2; + break; + case 2: + TVShowConvertInternationalString(gStringVar1, bravoTrainer->playerName, bravoTrainer->language); + if (bravoTrainer->contestResult == 0) // placed first + gUnknown_020387E8 = 3; + else + gUnknown_020387E8 = 4; + break; + case 3: + TVShowConvertInternationalString(gStringVar1, bravoTrainer->playerName, bravoTrainer->language); + EasyChat_GetWordText(gStringVar2, bravoTrainer->var04[0]); + sub_80BF088(2, bravoTrainer->contestResult + 1); + gUnknown_020387E8 = 5; + break; + case 4: + TVShowConvertInternationalString(gStringVar1, bravoTrainer->playerName, bravoTrainer->language); + EasyChat_GetWordText(gStringVar2, bravoTrainer->var04[0]); + sub_80BF088(2, bravoTrainer->contestResult + 1); + gUnknown_020387E8 = 5; + break; + case 5: + TVShowConvertInternationalString(gStringVar1, bravoTrainer->playerName, bravoTrainer->language); + CopyContestCategoryToStringVar(1, bravoTrainer->contestCategory); + EasyChat_GetWordText(gStringVar3, bravoTrainer->var04[1]); + if (bravoTrainer->var14) + gUnknown_020387E8 = 6; + else + gUnknown_020387E8 = 7; + break; + case 6: + StringCopy(gStringVar1, gSpeciesNames[bravoTrainer->species]); + StringCopy(gStringVar2, gMoveNames[bravoTrainer->var14]); + EasyChat_GetWordText(gStringVar3, bravoTrainer->var04[1]); + gUnknown_020387E8 = 7; + break; + case 7: + TVShowConvertInternationalString(gStringVar1, bravoTrainer->playerName, bravoTrainer->language); + StringCopy(gStringVar2, gSpeciesNames[bravoTrainer->species]); + TVShowDone(); + break; + case 8: + StringCopy(gStringVar1, gSpeciesNames[bravoTrainer->species]); + gUnknown_020387E8 = 2; + break; + } + ShowFieldMessage(gTVBravoTrainerTextGroup[state]); +} + +void DoTVShowBravoTrainerBattleTowerProfile(void) +{ + struct TVShowBravoTrainerBattleTowerSpotlight *bravoTrainerTower = &gSaveBlock1.tvShows[gSpecialVar_0x8004].bravoTrainerTower; + u8 state; + + gScriptResult = 0; + state = gUnknown_020387E8; + switch(state) + { + case 0: + TVShowConvertInternationalString(gStringVar1, bravoTrainerTower->trainerName, bravoTrainerTower->language); + StringCopy(gStringVar2, gSpeciesNames[bravoTrainerTower->species]); + if (bravoTrainerTower->var16 >= 7) + gUnknown_020387E8 = 1; + else + gUnknown_020387E8 = 2; + break; + case 1: + sub_80BF088(0, bravoTrainerTower->btLevel); + sub_80BF088(1, bravoTrainerTower->var16); + if (bravoTrainerTower->var1c == 1) + gUnknown_020387E8 = 3; + else + gUnknown_020387E8 = 4; + break; + case 2: + TVShowConvertInternationalString(gStringVar1, bravoTrainerTower->pokemonName, bravoTrainerTower->language); + sub_80BF088(1, bravoTrainerTower->var16 + 1); + if (bravoTrainerTower->var1b == 0) + gUnknown_020387E8 = 5; + else + gUnknown_020387E8 = 6; + break; + case 3: + TVShowConvertInternationalString(gStringVar1, bravoTrainerTower->pokemonName, bravoTrainerTower->language); + StringCopy(gStringVar2, gSpeciesNames[bravoTrainerTower->defeatedSpecies]); + if (bravoTrainerTower->var1b == 0) + gUnknown_020387E8 = 5; + else + gUnknown_020387E8 = 6; + break; + case 4: + TVShowConvertInternationalString(gStringVar1, bravoTrainerTower->pokemonName, bravoTrainerTower->language); + StringCopy(gStringVar2, gSpeciesNames[bravoTrainerTower->defeatedSpecies]); + if (bravoTrainerTower->var1b == 0) + gUnknown_020387E8 = 5; + else + gUnknown_020387E8 = 6; + break; + case 5: + TVShowConvertInternationalString(gStringVar1, bravoTrainerTower->pokemonName, bravoTrainerTower->language); + gUnknown_020387E8 = 11; + break; + case 6: + TVShowConvertInternationalString(gStringVar1, bravoTrainerTower->pokemonName, bravoTrainerTower->language); + gUnknown_020387E8 = 11; + break; + case 7: + gUnknown_020387E8 = 11; + break; + case 8: + case 9: + case 10: + TVShowConvertInternationalString(gStringVar1, bravoTrainerTower->trainerName, bravoTrainerTower->language); + gUnknown_020387E8 = 11; + break; + case 11: + EasyChat_GetWordText(gStringVar1, bravoTrainerTower->var18[0]); + if (bravoTrainerTower->var1b == 0) + gUnknown_020387E8 = 12; + else + gUnknown_020387E8 = 13; + break; + case 12: + case 13: + EasyChat_GetWordText(gStringVar1, bravoTrainerTower->var18[0]); + TVShowConvertInternationalString(gStringVar2, bravoTrainerTower->trainerName, bravoTrainerTower->language); + TVShowConvertInternationalString(gStringVar3, bravoTrainerTower->pokemonName, bravoTrainerTower->language); + gUnknown_020387E8 = 14; + break; + case 14: + TVShowConvertInternationalString(gStringVar1, bravoTrainerTower->trainerName, bravoTrainerTower->language); + StringCopy(gStringVar2, gSpeciesNames[bravoTrainerTower->species]); + TVShowDone(); + break; + } + ShowFieldMessage(gTVBravoTrainerBattleTowerTextGroup[state]); +} + +void DoTVShowTodaysSmartShopper(void) +{ + struct TVShowSmartShopper *smartShopper = &gSaveBlock1.tvShows[gSpecialVar_0x8004].smartshopperShow; + u8 state; + + gScriptResult = 0; + state = gUnknown_020387E8; + switch(state) + { + case 0: + TVShowConvertInternationalString(gStringVar1, smartShopper->playerName, smartShopper->language); + GetMapSectionName(gStringVar2, smartShopper->shopLocation, 0); + if (smartShopper->itemAmounts[0] >= 0xff) + gUnknown_020387E8 = 11; + else + gUnknown_020387E8 = 1; + break; + case 1: + TVShowConvertInternationalString(gStringVar1, smartShopper->playerName, smartShopper->language); + StringCopy(gStringVar2, ItemId_GetItem(smartShopper->itemIds[0])->name); + sub_80BF088(2, smartShopper->itemAmounts[0]); + gUnknown_020387E8 += (Random() % 4) + 1; + break; + case 2: + case 4: + case 5: + if (smartShopper->itemIds[1] != 0) + gUnknown_020387E8 = 6; + else + gUnknown_020387E8 = 10; + break; + case 3: + sub_80BF088(2, smartShopper->itemAmounts[0] + 1); + if (smartShopper->itemIds[1] != 0) + gUnknown_020387E8 = 6; + else + gUnknown_020387E8 = 10; + break; + case 6: + StringCopy(gStringVar2, ItemId_GetItem(smartShopper->itemIds[1])->name); + sub_80BF088(2, smartShopper->itemAmounts[1]); + if (smartShopper->itemIds[2] != 0) + gUnknown_020387E8 = 7; + else if (smartShopper->priceReduced == 1) + gUnknown_020387E8 = 8; + else + gUnknown_020387E8 = 9; + break; + case 7: + StringCopy(gStringVar2, ItemId_GetItem(smartShopper->itemIds[2])->name); + sub_80BF088(2, smartShopper->itemAmounts[2]); + if (smartShopper->priceReduced == 1) + gUnknown_020387E8 = 8; + else + gUnknown_020387E8 = 9; + break; + case 8: + if (smartShopper->itemAmounts[0] < 0xff) + gUnknown_020387E8 = 9; + else + gUnknown_020387E8 = 12; + break; + case 9: + sub_80BF154(1, smartShopper); + TVShowDone(); + break; + case 10: + if (smartShopper->priceReduced == 1) + gUnknown_020387E8 = 8; + else + gUnknown_020387E8 = 9; + break; + case 11: + TVShowConvertInternationalString(gStringVar1, smartShopper->playerName, smartShopper->language); + StringCopy(gStringVar2, ItemId_GetItem(smartShopper->itemIds[0])->name); + if (smartShopper->priceReduced == 1) + gUnknown_020387E8 = 8; + else + gUnknown_020387E8 = 12; + break; + case 12: + TVShowConvertInternationalString(gStringVar1, smartShopper->playerName, smartShopper->language); + TVShowDone(); + break; + } + ShowFieldMessage(gTVSmartShopperTextGroup[state]); +} + +void DoTVShowTheNameRaterShow(void) +{ + struct TVShowNameRaterShow *nameRaterShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004].nameRaterShow; + u8 state; + + gScriptResult = 0; + state = gUnknown_020387E8; + switch (state) + { + case 0: + TVShowConvertInternationalString(gStringVar1, nameRaterShow->trainerName, nameRaterShow->language); + StringCopy(gStringVar2, gSpeciesNames[nameRaterShow->species]); + TVShowConvertInternationalString(gStringVar3, nameRaterShow->pokemonName, nameRaterShow->pokemonNameLanguage); + gUnknown_020387E8 = sub_80BF7E8(nameRaterShow) + 1; + break; + case 1: + case 3: + case 4: + case 5: + case 6: + case 7: + case 8: + if (nameRaterShow->random == 0) + gUnknown_020387E8 = 9; + else if (nameRaterShow->random == 1) + gUnknown_020387E8 = 10; + else if (nameRaterShow->random == 2) + gUnknown_020387E8 = 11; + break; + case 2: + TVShowConvertInternationalString(gStringVar1, nameRaterShow->trainerName, nameRaterShow->language); + if (nameRaterShow->random == 0) + gUnknown_020387E8 = 9; + else if (nameRaterShow->random == 1) + gUnknown_020387E8 = 10; + else if (nameRaterShow->random == 2) + gUnknown_020387E8 = 11; + break; + case 9: + case 10: + case 11: + sub_80BF820(0, 1, 0, 1, 0, nameRaterShow); + TVShowConvertInternationalString(gStringVar3, gStringVar1, nameRaterShow->pokemonNameLanguage); + sub_80BF820(0, 0, 0, 1, 0, nameRaterShow); + TVShowConvertInternationalString(gStringVar2, gStringVar1, nameRaterShow->pokemonNameLanguage); + TVShowConvertInternationalString(gStringVar1, nameRaterShow->pokemonName, nameRaterShow->pokemonNameLanguage); + gUnknown_020387E8 = 12; + break; + case 13: + sub_80BF820(0, 0, 3, 1, 0, nameRaterShow); + TVShowConvertInternationalString(gStringVar3, gStringVar1, nameRaterShow->pokemonNameLanguage); + sub_80BF820(0, 0, 2, 0, 0, nameRaterShow); + TVShowConvertInternationalString(gStringVar2, gStringVar1, nameRaterShow->language); + TVShowConvertInternationalString(gStringVar1, nameRaterShow->trainerName, nameRaterShow->language); + gUnknown_020387E8 = 14; + break; + case 14: + sub_80BF820(0, 0, 3, 0, 0, nameRaterShow); + TVShowConvertInternationalString(gStringVar3, gStringVar1, nameRaterShow->language); + sub_80BF820(0, 0, 2, 1, 0, nameRaterShow); + TVShowConvertInternationalString(gStringVar2, gStringVar1, nameRaterShow->pokemonNameLanguage); + TVShowConvertInternationalString(gStringVar1, nameRaterShow->trainerName, nameRaterShow->language); + gUnknown_020387E8 = 18; + break; + case 15: + sub_80BF820(1, 0, 2, 1, 0, nameRaterShow); + TVShowConvertInternationalString(gStringVar1, gStringVar2, nameRaterShow->pokemonNameLanguage); + StringCopy(gStringVar2, gSpeciesNames[nameRaterShow->species]); + sub_80BF820(2, 0, 3, 2, nameRaterShow->species, nameRaterShow); + gUnknown_020387E8 = 16; + break; + case 16: + sub_80BF820(0, 0, 3, 1, 0, nameRaterShow); + TVShowConvertInternationalString(gStringVar3, gStringVar1, nameRaterShow->pokemonNameLanguage); + sub_80BF820(0, 0, 2, 2, nameRaterShow->species, nameRaterShow); + gUnknown_020387E8 = 17; + break; + case 17: + sub_80BF820(1, 0, 2, 1, 0, nameRaterShow); + TVShowConvertInternationalString(gStringVar1, gStringVar2, nameRaterShow->pokemonNameLanguage); + sub_80BF820(2, 0, 3, 2, nameRaterShow->var1C, nameRaterShow); + StringCopy(gStringVar2, gSpeciesNames[nameRaterShow->var1C]); + gUnknown_020387E8 = 18; + break; + case 12: + state = 18; + gUnknown_020387E8 = 18; + case 18: + TVShowConvertInternationalString(gStringVar1, nameRaterShow->pokemonName, nameRaterShow->pokemonNameLanguage); + TVShowConvertInternationalString(gStringVar2, nameRaterShow->trainerName, nameRaterShow->language); + TVShowDone(); + break; + } + ShowFieldMessage(gTVNameRaterTextGroup[state]); +} + +void DoTVShowPokemonTodaySuccessfulCapture(void) +{ + struct TVShowPokemonToday *pokemonToday = &gSaveBlock1.tvShows[gSpecialVar_0x8004].pokemonToday; + u8 state; + + gScriptResult = 0; + state = gUnknown_020387E8; + switch (state) + { + case 0: + TVShowConvertInternationalString(gStringVar1, pokemonToday->playerName, pokemonToday->language); + StringCopy(gStringVar2, gSpeciesNames[pokemonToday->species]); + TVShowConvertInternationalString(gStringVar3, pokemonToday->nickname, pokemonToday->language2); + if (pokemonToday->ball == ITEM_MASTER_BALL) + gUnknown_020387E8 = 5; + else + gUnknown_020387E8 = 1; + break; + case 1: + gUnknown_020387E8 = 2; + break; + case 2: + StringCopy(gStringVar2, ItemId_GetItem(pokemonToday->ball)->name); + sub_80BF088(2, pokemonToday->var12); + if (pokemonToday->var12 < 4) + gUnknown_020387E8 = 3; + else + gUnknown_020387E8 = 4; + break; + case 3: + TVShowConvertInternationalString(gStringVar1, pokemonToday->playerName, pokemonToday->language); + StringCopy(gStringVar2, gSpeciesNames[pokemonToday->species]); + TVShowConvertInternationalString(gStringVar3, pokemonToday->nickname, pokemonToday->language2); + gUnknown_020387E8 = 6; + break; + case 4: + gUnknown_020387E8 = 6; + break; + case 5: + TVShowConvertInternationalString(gStringVar1, pokemonToday->playerName, pokemonToday->language); + StringCopy(gStringVar2, gSpeciesNames[pokemonToday->species]); + gUnknown_020387E8 = 6; + break; + case 6: + TVShowConvertInternationalString(gStringVar1, pokemonToday->playerName, pokemonToday->language); + StringCopy(gStringVar2, gSpeciesNames[pokemonToday->species]); + TVShowConvertInternationalString(gStringVar3, pokemonToday->nickname, pokemonToday->language2); + gUnknown_020387E8 += (Random() % 4) + 1; + break; + case 7: + case 8: + StringCopy(gStringVar1, gSpeciesNames[pokemonToday->species]); + TVShowConvertInternationalString(gStringVar2, pokemonToday->nickname, pokemonToday->language2); + sub_80BF638(2, pokemonToday->species); + gUnknown_020387E8 = 11; + break; + case 9: + case 10: + StringCopy(gStringVar1, gSpeciesNames[pokemonToday->species]); + TVShowConvertInternationalString(gStringVar2, pokemonToday->nickname, pokemonToday->language2); + gUnknown_020387E8 = 11; + break; + case 11: + TVShowDone(); + break; + } + ShowFieldMessage(gTVPokemonTodayTextGroup[state]); +} + +void DoTVShowPokemonTodayFailedCapture(void) +{ + struct TVShowPokemonTodayFailed *pokemonTodayFailed = &gSaveBlock1.tvShows[gSpecialVar_0x8004].pokemonTodayFailed; + u8 state; + + gScriptResult = 0; + state = gUnknown_020387E8; + switch (state) + { + case 0: + TVShowConvertInternationalString(gStringVar1, pokemonTodayFailed->playerName, pokemonTodayFailed->language); + StringCopy(gStringVar2, gSpeciesNames[pokemonTodayFailed->species]); + gUnknown_020387E8 = 1; + break; + case 1: + TVShowConvertInternationalString(gStringVar1, pokemonTodayFailed->playerName, pokemonTodayFailed->language); + GetMapSectionName(gStringVar2, pokemonTodayFailed->var12, 0); + StringCopy(gStringVar3, gSpeciesNames[pokemonTodayFailed->species2]); + if (pokemonTodayFailed->var11 == 1) + gUnknown_020387E8 = 3; + else + gUnknown_020387E8 = 2; + break; + case 2: + case 3: + TVShowConvertInternationalString(gStringVar1, pokemonTodayFailed->playerName, pokemonTodayFailed->language); + sub_80BF088(1, pokemonTodayFailed->var10); + if ((Random() % 3) == 0) + gUnknown_020387E8 = 5; + else + gUnknown_020387E8 = 4; + break; + case 4: + case 5: + TVShowConvertInternationalString(gStringVar1, pokemonTodayFailed->playerName, pokemonTodayFailed->language); + gUnknown_020387E8 = 6; + break; + case 6: + TVShowDone(); + break; + } + ShowFieldMessage(gTVPokemonTodayFailedCaptureTextGroup[state]); +} + +void DoTVShowPokemonFanClubLetter(void) +{ + struct TVShowFanClubLetter *fanclubLetter = &gSaveBlock1.tvShows[gSpecialVar_0x8004].fanclubLetter; + u8 state; + u16 rval; + + gScriptResult = 0; + state = gUnknown_020387E8; + switch (state) + { + case 0: + TVShowConvertInternationalString(gStringVar1, fanclubLetter->playerName, fanclubLetter->language); + StringCopy(gStringVar2, gSpeciesNames[fanclubLetter->species]); + gUnknown_020387E8 = 50; + break; + case 1: + rval = (Random() % 4) + 1; + if (rval == 1) + gUnknown_020387E8 = 2; + else + gUnknown_020387E8 = rval + 2; + break; + case 2: + gUnknown_020387E8 = 51; + break; + case 3: + gUnknown_020387E8 += (Random() % 3) + 1; + break; + case 4: + case 5: + case 6: + sub_80BF79C((TVShow *)fanclubLetter); + gUnknown_020387E8 = 7; + break; + case 7: + rval = (Random() % 0x1f) + 0x46; + sub_80BF088(2, rval); + TVShowDone(); + break; + case 50: + ConvertEasyChatWordsToString(gStringVar4, fanclubLetter->pad04, 2, 2); + ShowFieldMessage(gStringVar4); + gUnknown_020387E8 = 1; + return; + case 51: + ConvertEasyChatWordsToString(gStringVar4, fanclubLetter->pad04, 2, 2); + ShowFieldMessage(gStringVar4); + gUnknown_020387E8 = 3; + return; + } + ShowFieldMessage(gTVFanClubTextGroup[state]); +} + +void DoTVShowRecentHappenings(void) +{ + struct TVShowRecentHappenings *recentHappenings = &gSaveBlock1.tvShows[gSpecialVar_0x8004].recentHappenings; + u8 state; + + gScriptResult = 0; + state = gUnknown_020387E8; + switch (state) + { + case 0: + TVShowConvertInternationalString(gStringVar1, recentHappenings->playerName, recentHappenings->language); + sub_80BF79C((TVShow *)recentHappenings); + gUnknown_020387E8 = 50; + break; + case 1: + gUnknown_020387E8 += 1 + (Random() % 3); + break; + case 2: + case 3: + case 4: + gUnknown_020387E8 = 5; + break; + case 5: + TVShowDone(); + break; + case 50: + ConvertEasyChatWordsToString(gStringVar4, recentHappenings->var04, 2, 2); + ShowFieldMessage(gStringVar4); + gUnknown_020387E8 = 1; + return; + } + ShowFieldMessage(gTVRecentHappeningsTextGroup[state]); +} + +void DoTVShowPokemonFanClubOpinions(void) +{ + struct TVShowFanclubOpinions *fanclubOpinions = &gSaveBlock1.tvShows[gSpecialVar_0x8004].fanclubOpinions; + u8 state; + + gScriptResult = 0; + state = gUnknown_020387E8; + switch (state) + { + case 0: + TVShowConvertInternationalString(gStringVar1, fanclubOpinions->playerName, fanclubOpinions->language); + StringCopy(gStringVar2, gSpeciesNames[fanclubOpinions->var02]); + TVShowConvertInternationalString(gStringVar3, fanclubOpinions->var10, fanclubOpinions->var0E); + gUnknown_020387E8 = fanclubOpinions->var04B + 1; + break; + case 1: + case 2: + case 3: + TVShowConvertInternationalString(gStringVar1, fanclubOpinions->playerName, fanclubOpinions->language); + StringCopy(gStringVar2, gSpeciesNames[fanclubOpinions->var02]); + EasyChat_GetWordText(gStringVar3, fanclubOpinions->var1C[0]); + gUnknown_020387E8 = 4; + break; + case 4: + TVShowConvertInternationalString(gStringVar1, fanclubOpinions->playerName, fanclubOpinions->language); + EasyChat_GetWordText(gStringVar3, fanclubOpinions->var1C[1]); + TVShowDone(); + break; + } + ShowFieldMessage(gTVFanClubOpinionsTextGroup[state]); +} + +void nullsub_22(void) +{ +} + +void DoTVShowPokemonNewsMassOutbreak(void) +{ + struct TVShowMassOutbreak *massOutbreak = &gSaveBlock1.tvShows[gSpecialVar_0x8004].massOutbreak; + + GetMapSectionName(gStringVar1, massOutbreak->locationMapNum, 0); + StringCopy(gStringVar2, gSpeciesNames[massOutbreak->species]); + TVShowDone(); + StartMassOutbreak(); + ShowFieldMessage(gTVPokemonOutbreakTextGroup[gUnknown_020387E8]); +} + +void DoTVShowInSearchOfTrainers(void) +{ + u8 state; + + gScriptResult = 0; + state = gUnknown_020387E8; + switch (state) + { + case 0: + GetMapSectionName(gStringVar1, gSaveBlock1.gabbyAndTyData.mapnum, 0); + if (gSaveBlock1.gabbyAndTyData.battleNum > 1) + gUnknown_020387E8 = 1; + else + gUnknown_020387E8 = 2; + break; + case 1: + gUnknown_020387E8 = 2; + break; + case 2: + if (gSaveBlock1.gabbyAndTyData.valA_0 == 0) + gUnknown_020387E8 = 4; + else if (gSaveBlock1.gabbyAndTyData.valA_3 != 0) + gUnknown_020387E8 = 5; + else if (gSaveBlock1.gabbyAndTyData.valA_2 != 0) + gUnknown_020387E8 = 6; + else if (gSaveBlock1.gabbyAndTyData.valA_1 != 0) + gUnknown_020387E8 = 7; + else + gUnknown_020387E8 = 3; + break; + case 3: + StringCopy(gStringVar1, gSpeciesNames[gSaveBlock1.gabbyAndTyData.mon1]); + StringCopy(gStringVar2, gMoveNames[gSaveBlock1.gabbyAndTyData.lastMove]); + StringCopy(gStringVar3, gSpeciesNames[gSaveBlock1.gabbyAndTyData.mon2]); + gUnknown_020387E8 = 8; + break; + case 4: + case 5: + case 6: + case 7: + gUnknown_020387E8 = 8; + break; + case 8: + EasyChat_GetWordText(gStringVar1, gSaveBlock1.gabbyAndTyData.quote); + StringCopy(gStringVar2, gSpeciesNames[gSaveBlock1.gabbyAndTyData.mon1]); + StringCopy(gStringVar3, gSpeciesNames[gSaveBlock1.gabbyAndTyData.mon2]); + gScriptResult = 1; + gUnknown_020387E8 = 0;; + TakeTVShowInSearchOfTrainersOffTheAir(); + break; + } + ShowFieldMessage(gTVGabbyAndTyTextGroup[state]); +} + +void DoTVShowPokemonAngler(void) +{ + struct TVShowPokemonAngler *pokemonAngler = &gSaveBlock1.tvShows[gSpecialVar_0x8004].pokemonAngler; + u8 state; + + gScriptResult = 0; + if (pokemonAngler->var02 < pokemonAngler->var03) + gUnknown_020387E8 = 0; + else + gUnknown_020387E8 = 1; + state = gUnknown_020387E8; + switch (state) + { + case 0: + TVShowConvertInternationalString(gStringVar1, pokemonAngler->playerName, pokemonAngler->language); + StringCopy(gStringVar2, gSpeciesNames[pokemonAngler->var04]); + sub_80BF088(2, pokemonAngler->var03); + TVShowDone(); + break; + case 1: + TVShowConvertInternationalString(gStringVar1, pokemonAngler->playerName, pokemonAngler->language); + StringCopy(gStringVar2, gSpeciesNames[pokemonAngler->var04]); + sub_80BF088(2, pokemonAngler->var02); + TVShowDone(); + break; + } + ShowFieldMessage(gTVFishingGuruAdviceTextGroup[state]); +} + +void DoTVShowTheWorldOfMasters(void) +{ + struct TVShowWorldOfMasters *worldOfMasters = &gSaveBlock1.tvShows[gSpecialVar_0x8004].worldOfMasters; + u8 state; + + gScriptResult = 0; + state = gUnknown_020387E8; + switch (state) + { + case 0: + TVShowConvertInternationalString(gStringVar1, worldOfMasters->playerName, + worldOfMasters->language); + sub_80BF088(1, worldOfMasters->var06); + sub_80BF088(2, worldOfMasters->var02); + gUnknown_020387E8 = 1; + break; + case 1: + StringCopy(gStringVar1, gSpeciesNames[worldOfMasters->var08]); + gUnknown_020387E8 = 2; + break; + case 2: + TVShowConvertInternationalString(gStringVar1, worldOfMasters->playerName, + worldOfMasters->language); + GetMapSectionName(gStringVar2, worldOfMasters->var0a, 0); + StringCopy(gStringVar3, gSpeciesNames[worldOfMasters->var04]); + TVShowDone(); + break; + } + ShowFieldMessage(gTVWorldOfMastersTextGroup[state]); +} + +void TVShowDone(void) +{ + gScriptResult = 1; + gUnknown_020387E8 = 0; + gSaveBlock1.tvShows[gSpecialVar_0x8004].common.var01 = 0; +} + +void sub_80C2014(void) +{ + gUnknown_020387E8 = 0; +} diff --git a/src/use_pokeblock.c b/src/field/use_pokeblock.c similarity index 76% rename from src/use_pokeblock.c rename to src/field/use_pokeblock.c index ce83bc1c2..e946a9cfc 100644 --- a/src/use_pokeblock.c +++ b/src/field/use_pokeblock.c @@ -1,10 +1,11 @@ // -// Created by Scott Norton on 5/31/17. + +// Modified by Dizzy Egg on 8/15/17. // #include "global.h" #include "main.h" -#include "rom4.h" +#include "overworld.h" #include "string_util.h" #include "strings.h" #include "sprite.h" @@ -16,8 +17,6 @@ #include "sound.h" #include "songs.h" #include "pokeblock.h" -#include "pokeblock_feed.h" -#include "use_pokeblock.h" #define GFX_TAG_CONDITIONUPDOWN 0 @@ -29,7 +28,7 @@ const u16 ConditionUpDownPalette[] = INCBIN_U16("graphics/misc/condition_up_down const u32 ConditionUpDownTiles[] = INCBIN_U32("graphics/misc/condition_up_down.4bpp"); #endif -const u32 gUnknown_08406118[] = { +static const u32 sContestStatsMonData[] = { MON_DATA_COOL, MON_DATA_TOUGH, MON_DATA_SMART, @@ -37,11 +36,11 @@ const u32 gUnknown_08406118[] = { MON_DATA_BEAUTY }; -const u8 gUnknown_0840612C[] = { +static const u8 gUnknown_0840612C[] = { 0, 4, 3, 2, 1 }; -const u8 *const gUnknown_08406134[] = { +static const u8 *const sContextStatNames[] = { OtherText_Coolness, OtherText_Toughness, OtherText_Smartness, @@ -49,18 +48,18 @@ const u8 *const gUnknown_08406134[] = { OtherText_Beauty }; -const struct SpriteSheet gSpriteSheet_ConditionUpDown = { +static const struct SpriteSheet gSpriteSheet_ConditionUpDown = { (u8 *)ConditionUpDownTiles, sizeof ConditionUpDownTiles, GFX_TAG_CONDITIONUPDOWN }; -const struct SpritePalette gSpritePalette_ConditionUpDown = { +static const struct SpritePalette gSpritePalette_ConditionUpDown = { ConditionUpDownPalette, GFX_TAG_CONDITIONUPDOWN }; -const s16 gUnknown_08406158[][2] = { +static const s16 gUnknown_08406158[][2] = { {0x9c, 0x1e}, {0x75, 0x35}, {0x75, 0x70}, @@ -68,28 +67,28 @@ const s16 gUnknown_08406158[][2] = { {0xc5, 0x35} }; -const struct OamData gOamData_840616C = { +static const struct OamData gOamData_840616C = { .shape = 1, .size = 2, .priority = 1 }; -const union AnimCmd gSpriteAnim_8406174[] = { +static const union AnimCmd gSpriteAnim_8406174[] = { ANIMCMD_FRAME(0, 5), ANIMCMD_END }; -const union AnimCmd gSpriteAnim_840617C[] = { +static const union AnimCmd gSpriteAnim_840617C[] = { ANIMCMD_FRAME(8, 5), ANIMCMD_END }; -const union AnimCmd *const gSpriteAnimTable_8406184[] = { +static const union AnimCmd *const gSpriteAnimTable_8406184[] = { gSpriteAnim_8406174, gSpriteAnim_840617C }; -const struct SpriteTemplate gSpriteTemplate_840618C = { +static const struct SpriteTemplate gSpriteTemplate_840618C = { GFX_TAG_CONDITIONUPDOWN, GFX_TAG_CONDITIONUPDOWN, &gOamData_840616C, @@ -99,46 +98,44 @@ const struct SpriteTemplate gSpriteTemplate_840618C = { SpriteCallbackDummy }; -asm(".text\n" - ".include \"constants/gba_constants.inc\""); - -extern struct UnkPokenavStruct_Sub1 *gUnknown_02039304; -extern MainCallback gUnknown_02039308; -extern struct Pokeblock *gUnknown_0203930C; -extern u8 gUnknown_02039310; +static EWRAM_DATA struct UnkPokenavStruct_Sub1 *gUnknown_02039304 = NULL; +static EWRAM_DATA MainCallback gUnknown_02039308 = NULL; +static EWRAM_DATA struct Pokeblock *gUnknown_0203930C = NULL; +EWRAM_DATA u8 gPokeblockMonID = 0; +EWRAM_DATA s16 gPokeblockGain = 0; extern u16 gKeyRepeatStartDelay; extern u16 gScriptItemId; // FIXME: remove after merge of #349 Pokeblock -void launch_c3_walk_stairs_and_run_once(void (*const)(void)); -void sub_81361E4(void); -void sub_813622C(void); -void sub_8136244(void); -void sub_8136264(void); -void sub_8136294(void); -void sub_81365A0(void); -void sub_81365C8(void); -void sub_8136638(void); -void sub_81368A4(void); +static void launch_c3_walk_stairs_and_run_once(void (*const)(void)); +static void sub_81361E4(void); +static void sub_813622C(void); +static void sub_8136244(void); +static void sub_8136264(void); +static void sub_8136294(void); +static void sub_81365A0(void); +static void sub_81365C8(void); +static void sub_8136638(void); +static void sub_81368A4(void); void sub_8089668(void); -void sub_8136B44(void); -u8 sub_81370E4(u8); -void sub_8136BB8(void); -s8 sub_8136C40(void); -bool8 sub_8137058(void); -void sub_8136D60(void); -void sub_8136808(void); -void sub_8136D8C(void); -u8 sub_81370A4(u8); -void sub_81369CC(void); -void sub_8136EF0(void); -void sub_8137138(void); -void sub_8136C6C(void); -bool8 sub_8136D00(void); -void sub_8136DC0(u8 *, u8, s16); -void sub_8136DA0(const u8 *); -void sub_8136F74(struct Pokeblock *, struct Pokemon *); -void sub_81371DC(struct Sprite *); +static void sub_8136B44(void); +static u8 sub_81370E4(u8); +static void sub_8136BB8(void); +static s8 sub_8136C40(void); +static bool8 sub_8137058(void); +static void sub_8136D60(void); +static void sub_8136808(void); +static void sub_8136D8C(void); +static u8 sub_81370A4(u8); +static void sub_81369CC(void); +static void sub_8136EF0(void); +static void sub_8137138(void); +static void sub_8136C6C(void); +static bool8 sub_8136D00(void); +static void Pokeblock_BufferEnhancedStatText(u8 *, u8, s16); +static void Pokeblock_MenuWindowTextPrint(const u8 *); +static void sub_8136F74(struct Pokeblock *, struct Pokemon *); +static void sub_81371DC(struct Sprite *); void sub_8136130(struct Pokeblock *pokeblock, MainCallback callback) { @@ -150,18 +147,18 @@ void sub_8136130(struct Pokeblock *pokeblock, MainCallback callback) SetMainCallback2(sub_8136244); } -void sub_8136174(void) +static void sub_8136174(void) { gUnknown_02039304->pokeblock = gUnknown_0203930C; gUnknown_02039304->callback = gUnknown_02039308; - gUnknown_02039310 = sub_81370E4(gUnknown_02039310); - gUnknown_02039304->unk56 = gUnknown_02039310 < 4 ? 0 : 1; + gPokeblockMonID = sub_81370E4(gPokeblockMonID); + gUnknown_02039304->unk56 = gPokeblockMonID < 4 ? 0 : 1; gUnknown_083DFEC4->unkD162[0] = 2; launch_c3_walk_stairs_and_run_once(sub_8136294); SetMainCallback2(sub_81361E4); } -void sub_81361E4(void) +static void sub_81361E4(void) { gUnknown_02039304->unk0(); AnimateSprites(); @@ -175,7 +172,7 @@ void sub_81361E4(void) } } -void sub_813622C(void) +static void sub_813622C(void) { sub_81368A4(); AnimateSprites(); @@ -183,7 +180,7 @@ void sub_813622C(void) UpdatePaletteFade(); } -void sub_8136244(void) +static void sub_8136244(void) { gUnknown_02039304->unk0(); AnimateSprites(); @@ -191,7 +188,7 @@ void sub_8136244(void) UpdatePaletteFade(); } -void sub_8136264(void) +static void sub_8136264(void) { LoadOam(); ProcessSpriteCopyRequests(); @@ -200,13 +197,13 @@ void sub_8136264(void) sub_8089668(); } -void launch_c3_walk_stairs_and_run_once(void (*const func)(void)) +static void launch_c3_walk_stairs_and_run_once(void (*const func)(void)) { gUnknown_02039304->unk0 = func; gUnknown_02039304->unk50 = 0; } -void sub_8136294(void) +static void sub_8136294(void) { bool32 c1LinkRelatedActive; switch (gUnknown_02039304->unk50) @@ -345,7 +342,7 @@ void sub_8136294(void) } } -void sub_81365A0(void) +static void sub_81365A0(void) { while (!gUnknown_02039304->unk55) { @@ -353,7 +350,7 @@ void sub_81365A0(void) } } -void sub_81365C8(void) +static void sub_81365C8(void) { switch (gUnknown_02039304->unk50) { @@ -373,7 +370,7 @@ void sub_81365C8(void) } } -void sub_8136638(void) +static void sub_8136638(void) { switch (gUnknown_02039304->unk50) { @@ -463,12 +460,12 @@ void sub_8136638(void) } } -void sub_8136808(void) +static void sub_8136808(void) { switch (gUnknown_02039304->unk50) { case 0: - gUnknown_02039310 = sub_81370A4(gUnknown_083DFEC4->unk87DC); + gPokeblockMonID = sub_81370A4(gUnknown_083DFEC4->unk87DC); gUnknown_02039308 = gUnknown_02039304->callback; gUnknown_0203930C = gUnknown_02039304->pokeblock; BeginNormalPaletteFade(-1, 0, 0, 16, 0); @@ -478,18 +475,18 @@ void sub_8136808(void) if (!gPaletteFade.active) { gMain.savedCallback = sub_8136174; - SetMainCallback2(sub_8147ADC); + SetMainCallback2(CB2_PreparePokeblockFeedScene); } break; } } -void sub_81368A4(void) +static void sub_81368A4(void) { switch (gUnknown_02039304->unk50) { case 0: - if (gUnknown_083DFEC4->unk87DC != gUnknown_02039310) + if (gUnknown_083DFEC4->unk87DC != gPokeblockMonID) { sub_80F5060(gUnknown_02039304->unk56); gUnknown_02039304->unk50++; @@ -537,7 +534,7 @@ void sub_81368A4(void) } } -void sub_81369CC(void) +static void sub_81369CC(void) { switch (gUnknown_02039304->unk50) { @@ -577,14 +574,14 @@ void sub_81369CC(void) case 5: if (gMain.newKeys & (A_BUTTON | B_BUTTON) && !sub_8136D00()) { - sub_810CA6C((u8)gScriptItemId); + PokeblockClearIfExists((u8)gScriptItemId); launch_c3_walk_stairs_and_run_once(sub_8136B44); } break; } } -void sub_8136B44(void) +static void sub_8136B44(void) { switch (gUnknown_02039304->unk50) { @@ -608,7 +605,7 @@ void sub_8136B44(void) } } -void sub_8136BB8(void) +static void sub_8136BB8(void) { GetMonData(&gPlayerParty[sub_81370A4(gUnknown_083DFEC4->unk87DC)], MON_DATA_NICKNAME, gUnknown_02039304->stringBuffer); StringGetEnd10(gUnknown_02039304->stringBuffer); @@ -620,7 +617,7 @@ void sub_8136BB8(void) MoveMenuCursor(0); } -s8 sub_8136C40(void) +static s8 sub_8136C40(void) { s8 retval = ProcessMenuInputNoWrap(); if ((u8)(retval + 1) < 3) @@ -631,124 +628,68 @@ s8 sub_8136C40(void) return retval; } -void sub_8136C6C(void) +static void sub_8136C6C(void) { BasicInitMenuWindow(&gWindowConfig_81E709C); MenuDrawTextWindow(0, 16, 29, 19); for (gUnknown_02039304->unk53 = 0; gUnknown_02039304->unk53 < 5 && gUnknown_02039304->unk61[gUnknown_02039304->unk53] == 0; gUnknown_02039304->unk53++); if (gUnknown_02039304->unk53 < 5) { - sub_8136DC0(gUnknown_02039304->stringBuffer, gUnknown_02039304->unk53, gUnknown_02039304->unk61[gUnknown_02039304->unk53]); + Pokeblock_BufferEnhancedStatText(gUnknown_02039304->stringBuffer, gUnknown_02039304->unk53, gUnknown_02039304->unk61[gUnknown_02039304->unk53]); } else { - sub_8136DC0(gUnknown_02039304->stringBuffer, gUnknown_02039304->unk53, 0); + Pokeblock_BufferEnhancedStatText(gUnknown_02039304->stringBuffer, gUnknown_02039304->unk53, 0); } - sub_8136DA0(gUnknown_02039304->stringBuffer); + Pokeblock_MenuWindowTextPrint(gUnknown_02039304->stringBuffer); } -#ifdef NONMATCHING -bool8 sub_8136D00(void) +static bool8 sub_8136D00(void) { while (1) { - if (++gUnknown_02039304->unk53 >= 5) + gUnknown_02039304->unk53++; + if (gUnknown_02039304->unk53 < 5) { - break; + if (gUnknown_02039304->unk61[gUnknown_02039304->unk53] != 0) + break; } - if (gUnknown_02039304->unk61[gUnknown_02039304->unk53] != 0) + else { - sub_8136DC0(gUnknown_02039304->stringBuffer, gUnknown_02039304->unk53, gUnknown_02039304->unk61[gUnknown_02039304->unk53]); - sub_8136DA0(gUnknown_02039304->stringBuffer); - return TRUE; + gUnknown_02039304->unk53 = 5; + return FALSE; } } - gUnknown_02039304->unk53 = 5; - return FALSE; + Pokeblock_BufferEnhancedStatText(gUnknown_02039304->stringBuffer, gUnknown_02039304->unk53, gUnknown_02039304->unk61[gUnknown_02039304->unk53]); + Pokeblock_MenuWindowTextPrint(gUnknown_02039304->stringBuffer); + return TRUE; } -#else -__attribute__((naked)) -bool8 sub_8136D00(void) -{ - asm_unified("\tpush {r4,r5,lr}\n" - "\tldr r4, _08136D30 @ =gUnknown_02039304\n" - "\tadds r3, r4, 0\n" - "\tmovs r5, 0x5\n" - "_08136D08:\n" - "\tldr r0, [r3]\n" - "\tadds r0, 0x53\n" - "\tldrb r1, [r0]\n" - "\tadds r1, 0x1\n" - "\tstrb r1, [r0]\n" - "\tldr r2, [r3]\n" - "\tadds r1, r2, 0\n" - "\tadds r1, 0x53\n" - "\tldrb r0, [r1]\n" - "\tcmp r0, 0x4\n" - "\tbhi _08136D34\n" - "\tadds r0, r2, 0\n" - "\tadds r0, 0x61\n" - "\tldrb r1, [r1]\n" - "\tadds r0, r1\n" - "\tldrb r0, [r0]\n" - "\tcmp r0, 0\n" - "\tbne _08136D3A\n" - "\tb _08136D08\n" - "\t.align 2, 0\n" - "_08136D30: .4byte gUnknown_02039304\n" - "_08136D34:\n" - "\tstrb r5, [r1]\n" - "\tmovs r0, 0\n" - "\tb _08136D5A\n" - "_08136D3A:\n" - "\tldr r2, [r4]\n" - "\tadds r0, r2, 0\n" - "\tadds r0, 0x10\n" - "\tadds r1, r2, 0\n" - "\tadds r1, 0x53\n" - "\tldrb r1, [r1]\n" - "\tadds r2, 0x61\n" - "\tadds r2, r1\n" - "\tldrb r2, [r2]\n" - "\tbl sub_8136DC0\n" - "\tldr r0, [r4]\n" - "\tadds r0, 0x10\n" - "\tbl sub_8136DA0\n" - "\tmovs r0, 0x1\n" - "_08136D5A:\n" - "\tpop {r4,r5}\n" - "\tpop {r1}\n" - "\tbx r1"); -} -#endif -void sub_8136D60(void) +static void sub_8136D60(void) { BasicInitMenuWindow(&gWindowConfig_81E709C); MenuDrawTextWindow(0, 16, 29, 19); MenuPrint(gOtherText_WontEat, 1, 17); } -void sub_8136D8C(void) +static void sub_8136D8C(void) { MenuZeroFillScreen(); BasicInitMenuWindow(&gWindowConfig_81E7080); } -void sub_8136DA0(const u8 *message) +static void Pokeblock_MenuWindowTextPrint(const u8 *message) { MenuDrawTextWindow(0, 16, 29, 19); MenuPrint(message, 1, 17); } #ifdef NONMATCHING -void sub_8136DC0(u8 *dest, u8 a1, s16 a2) +static void Pokeblock_BufferEnhancedStatText(u8 *dest, u8 statID, s16 a2) { - u16 v0 = a2; if (a2 != 0) { - if ((v0 = max(a2, 0)) == 0); - StringCopy(dest, gUnknown_08406134[a1]); + StringCopy(dest, sContextStatNames[statID]); StringAppend(dest, gOtherText_WasEnhanced); } else @@ -758,7 +699,7 @@ void sub_8136DC0(u8 *dest, u8 a1, s16 a2) } #else __attribute__((naked)) -void sub_8136DC0(u8 *dest, u8 a1, s16 a2) +static void Pokeblock_BufferEnhancedStatText(u8 *dest, u8 a1, s16 a2) { asm_unified("\tpush {r4,lr}\n" "\tadds r4, r0, 0\n" @@ -774,7 +715,7 @@ void sub_8136DC0(u8 *dest, u8 a1, s16 a2) "\tmovs r0, 0\n" "_08136DD8:\n" "\tlsls r0, 16\n" - "\tldr r1, _08136DF4 @ =gUnknown_08406134\n" + "\tldr r1, _08136DF4 @ =sContextStatNames\n" "\tlsls r0, r3, 2\n" "\tadds r0, r1\n" "\tldr r1, [r0]\n" @@ -785,7 +726,7 @@ void sub_8136DC0(u8 *dest, u8 a1, s16 a2) "\tbl StringAppend\n" "\tb _08136E04\n" "\t.align 2, 0\n" - "_08136DF4: .4byte gUnknown_08406134\n" + "_08136DF4: .4byte sContextStatNames\n" "_08136DF8: .4byte gOtherText_WasEnhanced\n" "_08136DFC:\n" "\tldr r1, _08136E0C @ =gOtherText_NothingChanged\n" @@ -800,16 +741,16 @@ void sub_8136DC0(u8 *dest, u8 a1, s16 a2) } #endif -void sub_8136E10(struct Pokemon *pokemon, u8 *data) +static void Pokeblock_GetMonContestStats(struct Pokemon *pokemon, u8 *data) { u16 i; for (i=0; i<5; i++) { - data[i] = GetMonData(pokemon, gUnknown_08406118[i]); + data[i] = GetMonData(pokemon, sContestStatsMonData[i]); } } -void sub_8136E40(struct Pokeblock *pokeblock, struct Pokemon *pokemon) +static void sub_8136E40(struct Pokeblock *pokeblock, struct Pokemon *pokemon) { u16 i; s16 cstat; @@ -819,14 +760,14 @@ void sub_8136E40(struct Pokeblock *pokeblock, struct Pokemon *pokemon) sub_8136F74(pokeblock, pokemon); for (i=0; i<5; i++) { - data = GetMonData(pokemon, gUnknown_08406118[i]); + data = GetMonData(pokemon, sContestStatsMonData[i]); cstat = data + gUnknown_02039304->unk66[i]; if (cstat < 0) cstat = 0; if (cstat > 255) cstat = 255; data = cstat; - SetMonData(pokemon, gUnknown_08406118[i], &data); + SetMonData(pokemon, sContestStatsMonData[i], &data); } cstat = (u8)GetMonData(pokemon, MON_DATA_SHEEN); cstat = cstat + pokeblock->feel; @@ -837,21 +778,21 @@ void sub_8136E40(struct Pokeblock *pokeblock, struct Pokemon *pokemon) } } -void sub_8136EF0(void) +static void sub_8136EF0(void) { u16 i; struct Pokemon *pokemon = gPlayerParty; pokemon += gUnknown_083DFEC4->unk893c[gUnknown_083DFEC4->unk87DC].partyIdx; - sub_8136E10(pokemon, gUnknown_02039304->unk57); + Pokeblock_GetMonContestStats(pokemon, gUnknown_02039304->unk57); sub_8136E40(gUnknown_02039304->pokeblock, pokemon); - sub_8136E10(pokemon, gUnknown_02039304->unk5c); + Pokeblock_GetMonContestStats(pokemon, gUnknown_02039304->unk5c); for (i=0; i<5; i++) { gUnknown_02039304->unk61[i] = gUnknown_02039304->unk5c[i] - gUnknown_02039304->unk57[i]; } } -void sub_8136F74(struct Pokeblock *pokeblock, struct Pokemon *pokemon) +static void sub_8136F74(struct Pokeblock *pokeblock, struct Pokemon *pokemon) { s8 direction; s8 i; @@ -863,9 +804,9 @@ void sub_8136F74(struct Pokeblock *pokeblock, struct Pokemon *pokemon) gUnknown_02039304->unk66[2] = pokeblock->bitter; gUnknown_02039304->unk66[3] = pokeblock->sweet; gUnknown_02039304->unk66[4] = pokeblock->dry; - if (gUnknown_02039312 > 0) + if (gPokeblockGain > 0) direction = 1; - else if (gUnknown_02039312 < 0) + else if (gPokeblockGain < 0) direction = -1; else return; @@ -883,7 +824,7 @@ void sub_8136F74(struct Pokeblock *pokeblock, struct Pokemon *pokemon) } } -bool8 sub_8137058(void) +static bool8 sub_8137058(void) { struct Pokemon *pokemon = gPlayerParty; pokemon += gUnknown_083DFEC4->unk893c[gUnknown_083DFEC4->unk87DC].partyIdx; @@ -892,7 +833,7 @@ bool8 sub_8137058(void) return FALSE; } -u8 sub_81370A4(u8 a0) +static u8 sub_81370A4(u8 a0) { u8 i; for (i=0; idata0 <= 5) sprite->pos2.y -= 2; diff --git a/src/wallclock.c b/src/field/wallclock.c similarity index 100% rename from src/wallclock.c rename to src/field/wallclock.c diff --git a/src/wild_encounter.c b/src/field/wild_encounter.c similarity index 98% rename from src/wild_encounter.c rename to src/field/wild_encounter.c index 96f47c067..390898917 100644 --- a/src/wild_encounter.c +++ b/src/field/wild_encounter.c @@ -5,11 +5,12 @@ #include "event_data.h" #include "field_player_avatar.h" #include "fieldmap.h" +#include "map_constants.h" #include "metatile_behavior.h" #include "pokeblock.h" #include "rng.h" #include "roamer.h" -#include "rom4.h" +#include "overworld.h" #include "safari_zone.h" #include "script.h" #include "species.h" @@ -2901,7 +2902,7 @@ const struct WildPokemonInfo Underwater2_WaterMonsInfo = {4, Underwater2_WaterMo extern u16 gRoute119WaterTileData[]; extern u16 gScriptResult; extern struct WildPokemon gWildFeebasRoute119Data; -extern u8 Event_RepelWoreOff[]; +extern u8 S_RepelWoreOff[]; EWRAM_DATA static u8 sWildEncountersDisabled = 0; EWRAM_DATA static u32 sFeebasRngValue = 0; @@ -2911,7 +2912,7 @@ EWRAM_DATA static u32 sFeebasRngValue = 0; static u16 FeebasRandom(void); static void FeebasSeedRng(u16 seed); -static bool8 RepelCheck(u8 level); +static bool8 IsWildLevelAllowedByRepel(u8 level); static void ApplyFluteEncounterRateMod(u32 *encRate); static void ApplyCleanseTagEncounterRateMod(u32 *encRate); @@ -2952,7 +2953,8 @@ static bool8 CheckFeebas(void) u8 route119section = 0; u16 waterTileNum; - if (gSaveBlock1.location.mapGroup == 0 && gSaveBlock1.location.mapNum == 0x22) + if (gSaveBlock1.location.mapGroup == MAP_GROUP_ROUTE119 + && gSaveBlock1.location.mapNum == MAP_ID_ROUTE119) { GetXYCoordsOneStepInFrontOfPlayer(&x, &y); x -= 7; @@ -3161,7 +3163,7 @@ static u8 PickWildMonNature(void) } for (i = 0; i < 25; i++) { - if (sub_810CAE4(natures[i], safariPokeblock) > 0) + if (PokeblockGetGain(natures[i], safariPokeblock) > 0) return natures[i]; } } @@ -3193,7 +3195,7 @@ static bool8 GenerateWildMon(struct WildPokemonInfo *wildMonInfo, u8 area, bool8 break; } level = ChooseWildMonLevel(&wildMonInfo->wildPokemon[wildMonIndex]); - if (checkRepel == TRUE && RepelCheck(level) == FALSE) + if (checkRepel == TRUE && IsWildLevelAllowedByRepel(level) == FALSE) return FALSE; else { @@ -3215,7 +3217,7 @@ static bool8 SetUpMassOutbreakEncounter(bool8 checkRepel) { u16 i; - if (checkRepel == TRUE && RepelCheck(gSaveBlock1.outbreakPokemonLevel) == 0) + if (checkRepel == TRUE && IsWildLevelAllowedByRepel(gSaveBlock1.outbreakPokemonLevel) == FALSE) return FALSE; else { @@ -3302,9 +3304,9 @@ bool8 StandardWildEncounter(u16 a, u16 b) if (TryStartRoamerEncounter() == TRUE) { roamer = &gSaveBlock1.roamer; - if (RepelCheck(roamer->level)) + if (IsWildLevelAllowedByRepel(roamer->level)) { - StartBattle_Roamer(); + BattleSetup_StartRoamerBattle(); return 1; } } @@ -3312,7 +3314,7 @@ bool8 StandardWildEncounter(u16 a, u16 b) { if (DoMassOutbreakEncounterTest() == TRUE && SetUpMassOutbreakEncounter(1) == TRUE) { - CheckForSafariZoneAndProceed(); + BattleSetup_StartWildBattle(); return 1; } if (GenerateWildMon(gWildMonHeaders[headerNum].landMonsInfo, 0, TRUE) == TRUE) @@ -3336,9 +3338,9 @@ bool8 StandardWildEncounter(u16 a, u16 b) if (TryStartRoamerEncounter() == TRUE) { roamer = &gSaveBlock1.roamer; - if (RepelCheck(roamer->level)) + if (IsWildLevelAllowedByRepel(roamer->level)) { - StartBattle_Roamer(); + BattleSetup_StartRoamerBattle(); return 1; } } @@ -3349,7 +3351,7 @@ bool8 StandardWildEncounter(u16 a, u16 b) { label: //_0808527A - CheckForSafariZoneAndProceed(); + BattleSetup_StartWildBattle(); return 1; } } @@ -3361,7 +3363,7 @@ bool8 StandardWildEncounter(u16 a, u16 b) return 0; } -void RockSmashWildEncounter(void) +void ScrSpecial_RockSmashWildEncounter(void) { u16 headerNum = GetCurrentMapWildMonHeader(); @@ -3377,7 +3379,7 @@ void RockSmashWildEncounter(void) else if (DoWildEncounterTest(wildPokemonInfo->encounterRate, 1) == TRUE && GenerateWildMon(wildPokemonInfo, 2, TRUE) == TRUE) { - CheckForSafariZoneAndProceed(); + BattleSetup_StartWildBattle(); gScriptResult = 1; return; } @@ -3403,14 +3405,14 @@ bool8 SweetScentWildEncounter(void) return FALSE; if (TryStartRoamerEncounter() == TRUE) { - StartBattle_Roamer(); + BattleSetup_StartRoamerBattle(); return TRUE; } if (DoMassOutbreakEncounterTest() == TRUE) - SetUpMassOutbreakEncounter(0); + SetUpMassOutbreakEncounter(FALSE); else GenerateWildMon(wildPokemonInfo, 0, FALSE); - CheckForSafariZoneAndProceed(); + BattleSetup_StartWildBattle(); return TRUE; } else if (MetatileBehavior_IsWaterWildEncounter(MapGridGetMetatileBehaviorAt(x, y)) == 1) @@ -3420,18 +3422,18 @@ bool8 SweetScentWildEncounter(void) return FALSE; if (TryStartRoamerEncounter() == TRUE) { - StartBattle_Roamer(); + BattleSetup_StartRoamerBattle(); return TRUE; } GenerateWildMon(wildPokemonInfo, 1, FALSE); - CheckForSafariZoneAndProceed(); + BattleSetup_StartWildBattle(); return TRUE; } } return FALSE; } -bool8 GetFishingWildMonListHeader(void) +bool8 DoesCurrentMapHaveFishingMons(void) { u16 headerNum = GetCurrentMapWildMonHeader(); @@ -3460,7 +3462,7 @@ void FishingWildEncounter(u8 rod) } IncrementGameStat(12); sub_80BEA50(species); - CheckForSafariZoneAndProceed(); + BattleSetup_StartWildBattle(); } u16 GetLocalWildMon(bool8 *isWaterMon) @@ -3497,7 +3499,7 @@ u16 GetLocalWildMon(bool8 *isWaterMon) } } -u16 GetMirageIslandMon(void) +u16 GetLocalWaterMon(void) { u16 headerNum = GetCurrentMapWildMonHeader(); @@ -3521,20 +3523,21 @@ bool8 UpdateRepelCounter(void) VarSet(VAR_REPEL_STEP_COUNT, steps); if (steps == 0) { - ScriptContext1_SetupScript(Event_RepelWoreOff); + ScriptContext1_SetupScript(S_RepelWoreOff); return TRUE; } } return FALSE; } -//Returns FALSE if Repel prevents wild Pokemon at the specified level from appearing -static bool8 RepelCheck(u8 level) +static bool8 IsWildLevelAllowedByRepel(u8 wildLevel) { u8 i; if (!VarGet(VAR_REPEL_STEP_COUNT)) + { return TRUE; + } else { for (i = 0; i < 6; i++) @@ -3542,7 +3545,9 @@ static bool8 RepelCheck(u8 level) // UB: Too few arguments for function 'GetMonData' if (GetMonData(&gPlayerParty[i], MON_DATA_HP) && !GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG)) { - if (level < (u8)GetMonData(&gPlayerParty[i], MON_DATA_LEVEL)) + u8 ourLevel = GetMonData(&gPlayerParty[i], MON_DATA_LEVEL); + + if (wildLevel < ourLevel) return FALSE; else return TRUE; diff --git a/src/field_fadetransition.c b/src/field_fadetransition.c deleted file mode 100644 index 364d55e51..000000000 --- a/src/field_fadetransition.c +++ /dev/null @@ -1,87 +0,0 @@ -#include "global.h" -#include "gba/syscall.h" -#include "field_fadetransition.h" -#include "field_player_avatar.h" -#include "field_weather.h" -#include "fldeff_flash.h" -#include "global.fieldmap.h" -#include "rom4.h" -#include "script.h" -#include "task.h" - -extern u16 gPlttBufferFaded[]; - -void palette_bg_fill_white(void) -{ - u32 source_color = 0x7fff7fff; - CpuFastSet(&source_color, gPlttBufferFaded, 0x100 | (1 << 24)); -} - -void palette_bg_fill_black(void) -{ - u32 source_color = 0; - CpuFastSet(&source_color, gPlttBufferFaded, 0x100 | (1 << 24)); -} - -void pal_fill_for_map_transition(void) -{ - u8 map_light = get_map_light_from_warp0(); - switch (fade_type_for_given_maplight_pair(map_light, sav1_map_get_light_level())) - { - case 0: - fade_screen(0, 0); - palette_bg_fill_black(); - break; - case 1: - fade_screen(2, 0); - palette_bg_fill_white(); - } -} - -void pal_fill_black(void) -{ - fade_screen(0, 0); - palette_bg_fill_black(); -} - -void fade_8080918(void) -{ - u8 light_level = sav1_map_get_light_level(); - switch (sub_810CDB8(light_level, warp1_get_mapheader()->mapType)) - { - case 0: - fade_screen(1, 0); - break; - case 1: - fade_screen(3, 0); - } -} - -void sub_8080958(u8 arg) -{ - sub_8059B88(!arg); -} - -void task0A_asap_script_env_2_enable_and_set_ctx_running(u8 taskID) -{ - if (sub_8080E70() == 1) - { - DestroyTask(taskID); - EnableBothScriptContexts(); - } -} - -void sub_8080990(void) -{ - ScriptContext2_Enable(); - sub_8053E90(); - pal_fill_black(); - CreateTask(&task0A_asap_script_env_2_enable_and_set_ctx_running, 0x0a); -} - -void sub_80809B0(void) -{ - ScriptContext2_Enable(); - pal_fill_black(); - CreateTask(&task0A_asap_script_env_2_enable_and_set_ctx_running, 0x0a); -} diff --git a/src/field_ground_effect.c b/src/field_ground_effect.c deleted file mode 100644 index 42862d0ff..000000000 --- a/src/field_ground_effect.c +++ /dev/null @@ -1,240 +0,0 @@ -#include "global.h" -#include "field_ground_effect.h" -#include "fieldmap.h" -#include "metatile_behavior.h" - -extern u32 gUnknown_08376008[]; - -void GetAllGroundEffectFlags_OnSpawn(struct MapObject *mapObj, u32 *flags) -{ - FieldObjectUpdateMetatileBehaviors(mapObj); - GetGroundEffectFlags_Reflection(mapObj, flags); - GetGroundEffectFlags_TallGrassOnSpawn(mapObj, flags); - GetGroundEffectFlags_LongGrassOnSpawn(mapObj, flags); - GetGroundEffectFlags_SandPile(mapObj, flags); - GetGroundEffectFlags_ShallowFlowingWater(mapObj, flags); - GetGroundEffectFlags_ShortGrass(mapObj, flags); - GetGroundEffectFlags_HotSprings(mapObj, flags); -} - -void GetAllGroundEffectFlags_OnBeginStep(struct MapObject *mapObj, u32 *flags) -{ - FieldObjectUpdateMetatileBehaviors(mapObj); - GetGroundEffectFlags_Reflection(mapObj, flags); - GetGroundEffectFlags_TallGrassOnBeginStep(mapObj, flags); - GetGroundEffectFlags_LongGrassOnBeginStep(mapObj, flags); - GetGroundEffectFlags_Tracks(mapObj, flags); - GetGroundEffectFlags_SandPile(mapObj, flags); - GetGroundEffectFlags_ShallowFlowingWater(mapObj, flags); - GetGroundEffectFlags_Puddle(mapObj, flags); - GetGroundEffectFlags_ShortGrass(mapObj, flags); - GetGroundEffectFlags_HotSprings(mapObj, flags); -} - -void GetAllGroundEffectFlags_OnFinishStep(struct MapObject *mapObj, u32 *flags) -{ - FieldObjectUpdateMetatileBehaviors(mapObj); - GetGroundEffectFlags_ShallowFlowingWater(mapObj, flags); - GetGroundEffectFlags_SandPile(mapObj, flags); - GetGroundEffectFlags_Puddle(mapObj, flags); - GetGroundEffectFlags_Ripple(mapObj, flags); - GetGroundEffectFlags_ShortGrass(mapObj, flags); - GetGroundEffectFlags_HotSprings(mapObj, flags); - GetGroundEffectFlags_Seaweed(mapObj, flags); - GetGroundEffectFlags_JumpLanding(mapObj, flags); -} - -void FieldObjectUpdateMetatileBehaviors(struct MapObject *mapObj) -{ - mapObj->mapobj_unk_1F = MapGridGetMetatileBehaviorAt(mapObj->coords3.x, mapObj->coords3.y); - mapObj->mapobj_unk_1E = MapGridGetMetatileBehaviorAt(mapObj->coords2.x, mapObj->coords2.y); -} - -void GetGroundEffectFlags_Reflection(struct MapObject *mapObj, u32 *flags) -{ - u32 reflectionFlags[2] = { 0x00000020, 0x00000010 }; - u8 type = FieldObjectCheckForReflectiveSurface(mapObj); - - if (type) - { - if (!mapObj->mapobj_bit_17) - { - mapObj->mapobj_bit_17 = 0; - mapObj->mapobj_bit_17 = 1; - *flags |= reflectionFlags[type - 1]; - } - } - else - { - mapObj->mapobj_bit_17 = 0; - } -} - -void GetGroundEffectFlags_TallGrassOnSpawn(struct MapObject *mapObj, u32 *flags) -{ - if (MetatileBehavior_IsTallGrass(mapObj->mapobj_unk_1E)) - *flags |= 0x1; -} - -void GetGroundEffectFlags_TallGrassOnBeginStep(struct MapObject *mapObj, u32 *flags) -{ - if (MetatileBehavior_IsTallGrass(mapObj->mapobj_unk_1E)) - *flags |= 0x2; -} - -void GetGroundEffectFlags_LongGrassOnSpawn(struct MapObject *mapObj, u32 *flags) -{ - if (MetatileBehavior_IsLongGrass(mapObj->mapobj_unk_1E)) - *flags |= 0x4; -} - -void GetGroundEffectFlags_LongGrassOnBeginStep(struct MapObject *mapObj, u32 *flags) -{ - if (MetatileBehavior_IsLongGrass(mapObj->mapobj_unk_1E)) - *flags |= 0x8; -} - -void GetGroundEffectFlags_Tracks(struct MapObject *mapObj, u32 *flags) -{ - if (MetatileBehavior_IsDeepSand(mapObj->mapobj_unk_1F)) - { - *flags |= 0x100; - } - else if (MetatileBehavior_IsSandOrDeepSand(mapObj->mapobj_unk_1F) - || MetatileBehavior_IsUnusedFootprintMetatile(mapObj->mapobj_unk_1F)) - { - *flags |= 0x80; - } -} - -void GetGroundEffectFlags_SandPile(struct MapObject *mapObj, u32 *flags) -{ - if (MetatileBehavior_IsDeepSand(mapObj->mapobj_unk_1E) - && MetatileBehavior_IsDeepSand(mapObj->mapobj_unk_1F)) - { - if (!mapObj->mapobj_bit_20) - { - mapObj->mapobj_bit_20 = 0; - mapObj->mapobj_bit_20 = 1; - *flags |= 0x800; - } - } - else - { - mapObj->mapobj_bit_20 = 0; - } -} - -void GetGroundEffectFlags_ShallowFlowingWater(struct MapObject *mapObj, u32 *flags) -{ - if ((MetatileBehavior_IsShallowFlowingWater(mapObj->mapobj_unk_1E) && MetatileBehavior_IsShallowFlowingWater(mapObj->mapobj_unk_1F)) - || (MetatileBehavior_IsPacifidlogLog(mapObj->mapobj_unk_1E) && MetatileBehavior_IsPacifidlogLog(mapObj->mapobj_unk_1F))) - { - if (!mapObj->mapobj_bit_19) - { - mapObj->mapobj_bit_19 = 0; - mapObj->mapobj_bit_19 = 1; - *flags |= 0x40; - } - } - else - { - mapObj->mapobj_bit_19 = 0; - } -} - -void GetGroundEffectFlags_Puddle(struct MapObject *mapObj, u32 *flags) -{ - if (MetatileBehavior_IsPuddle(mapObj->mapobj_unk_1E) - && MetatileBehavior_IsPuddle(mapObj->mapobj_unk_1F)) - { - *flags |= 0x400; - } -} - -void GetGroundEffectFlags_Ripple(struct MapObject *mapObj, u32 *flags) -{ - if (MetatileBehavior_HasRipples(mapObj->mapobj_unk_1E)) - *flags |= 0x200; -} - -void GetGroundEffectFlags_ShortGrass(struct MapObject *mapObj, u32 *flags) -{ - if (MetatileBehavior_IsShortGrass(mapObj->mapobj_unk_1E) - && MetatileBehavior_IsShortGrass(mapObj->mapobj_unk_1F)) - { - if (!mapObj->mapobj_bit_18) - { - mapObj->mapobj_bit_18 = 0; - mapObj->mapobj_bit_18 = 1; - *flags |= 0x20000; - } - } - else - { - mapObj->mapobj_bit_18 = 0; - } -} - -void GetGroundEffectFlags_HotSprings(struct MapObject *mapObj, u32 *flags) -{ - if (MetatileBehavior_IsHotSprings(mapObj->mapobj_unk_1E) - && MetatileBehavior_IsHotSprings(mapObj->mapobj_unk_1F)) - { - if (!mapObj->mapobj_bit_21) - { - mapObj->mapobj_bit_21 = 0; - mapObj->mapobj_bit_21 = 1; - *flags |= 0x40000; - } - } - else - { - mapObj->mapobj_bit_21 = 0; - } -} - -void GetGroundEffectFlags_Seaweed(struct MapObject *mapObj, u32 *flags) -{ - if (MetatileBehavior_IsSeaweed(mapObj->mapobj_unk_1E)) - *flags |= 0x80000; -} - -void GetGroundEffectFlags_JumpLanding(struct MapObject *mapObj, u32 *flags) -{ - typedef bool8 (*MetatileFunc)(u8); - - static const MetatileFunc metatileFuncs[] = - { - MetatileBehavior_IsTallGrass, - MetatileBehavior_IsLongGrass, - MetatileBehavior_IsPuddle, - MetatileBehavior_IsSurfableWaterOrUnderwater, - MetatileBehavior_IsShallowFlowingWater, - MetatileBehavior_IsATile, - }; - - static const u32 jumpLandingFlags[] = - { - 0x00001000, // Landing in tall grass - 0x00002000, // Landing in long grass - 0x00004000, // Landing on puddle - 0x00008000, // Landing on surfable water or underwater - 0x00004000, // Landing on shallow flowing water - 0x00010000, // Landing on any other type of ground - }; - - if (mapObj->mapobj_bit_5 && !mapObj->mapobj_bit_25) - { - u8 i; - - for (i = 0; i < 6; i++) - { - if (metatileFuncs[i](mapObj->mapobj_unk_1E)) - { - *flags |= jumpLandingFlags[i]; - return; - } - } - } -} diff --git a/src/agb_flash.c b/src/libs/agb_flash.c similarity index 100% rename from src/agb_flash.c rename to src/libs/agb_flash.c diff --git a/src/agb_flash_1m.c b/src/libs/agb_flash_1m.c similarity index 100% rename from src/agb_flash_1m.c rename to src/libs/agb_flash_1m.c diff --git a/src/agb_flash_le.c b/src/libs/agb_flash_le.c similarity index 100% rename from src/agb_flash_le.c rename to src/libs/agb_flash_le.c diff --git a/src/agb_flash_mx.c b/src/libs/agb_flash_mx.c similarity index 98% rename from src/agb_flash_mx.c rename to src/libs/agb_flash_mx.c index 01f848901..67348901f 100644 --- a/src/agb_flash_mx.c +++ b/src/libs/agb_flash_mx.c @@ -26,7 +26,11 @@ const struct FlashSetupInfo MX29L010 = 0 // appears to be unused }, { 3, 1 }, // wait state setup data +#if defined(GERMAN) && defined(SAPPHIRE) + { { 0xBF, 0xD4 } } // ID +#else { { 0xC2, 0x09 } } // ID +#endif } }; diff --git a/src/libc.c b/src/libs/libc.c similarity index 100% rename from src/libc.c rename to src/libs/libc.c diff --git a/src/m4a_2.c b/src/libs/m4a_2.c similarity index 100% rename from src/m4a_2.c rename to src/libs/m4a_2.c diff --git a/src/m4a_4.c b/src/libs/m4a_4.c similarity index 99% rename from src/m4a_4.c rename to src/libs/m4a_4.c index 99195ec00..2e1d140b4 100644 --- a/src/m4a_4.c +++ b/src/libs/m4a_4.c @@ -45,7 +45,7 @@ void m4aMPlayVolumeControl(struct MusicPlayerInfo *mplayInfo, u16 trackBits, u16 mplayInfo->ident = ID_NUMBER; } -void m4aMPlayPitchControl(struct MusicPlayerInfo *mplayInfo, u16 trackBits, u16 pitch) +void m4aMPlayPitchControl(struct MusicPlayerInfo *mplayInfo, u16 trackBits, s16 pitch) { s32 i; u32 bit; diff --git a/src/m4a_tables.c b/src/libs/m4a_tables.c similarity index 100% rename from src/m4a_tables.c rename to src/libs/m4a_tables.c diff --git a/src/siirtc.c b/src/libs/siirtc.c similarity index 100% rename from src/siirtc.c rename to src/libs/siirtc.c diff --git a/src/mauville_old_man.c b/src/mauville_old_man.c deleted file mode 100644 index 93684fc60..000000000 --- a/src/mauville_old_man.c +++ /dev/null @@ -1,247 +0,0 @@ -#include "global.h" -#include "mauville_old_man.h" -#include "easy_chat.h" -#include "menu.h" -#include "rng.h" -#include "script.h" -#include "string_util.h" -#include "strings.h" -#include "trader.h" - -extern u16 gScriptResult; -extern u16 gSpecialVar_0x8004; - -extern u32 gUnknown_083E5388[]; -extern u32 gUnknown_083E53A8[]; - -extern u16 gUnknown_083E537C[]; - -void sub_80F7A34(void) -{ - u16 i; - OldMan *oldMan = &gSaveBlock1.oldMan; - - oldMan->oldMan1.unk_2D94 = 0; - oldMan->oldMan1.unk_2DBD = 0; - - for(i = 0; i < 6; i++) - oldMan->oldMan1.mauvilleOldMan_ecArray[i] = gUnknown_083E537C[i]; -} - -void sub_80F7A6C(void) -{ - struct UnkMauvilleOldManStruct *bard = &gSaveBlock1.oldMan.oldMan1; - - bard->unk_2D94 = 1; - bard->unk_2D95 = 0; -} - -void sub_80F7A7C(void) -{ - sub_80F83F8(); -} - -void sub_80F7A88(void) -{ - OldMan *oldMan = &gSaveBlock1.oldMan; - - oldMan->oldMan1.unk_2D94 = 4; - oldMan->oldMan1.unk_2D95 = 0; -} - -void sub_80F7A98(void) -{ - sub_81099CC(); -} - -void SetMauvilleOldMan(void) -{ - u32 var = ((u16)((gSaveBlock2.playerTrainerId[1] << 8 | gSaveBlock2.playerTrainerId[0])) % 10) / 2; - - switch(var) - { - case 0: - sub_80F7A34(); - break; - case 1: - sub_80F7A6C(); - break; - case 2: - sub_80F7A98(); - break; - case 3: - sub_80F7A7C(); - break; - case 4: - sub_80F7A88(); - break; - } - sub_80F83D0(); -} - -u8 GetCurrentMauvilleOldMan(void) -{ - OldMan *oldMan = &gSaveBlock1.oldMan; - - return oldMan->oldMan1.unk_2D94; -} - -void sub_80F7B14(void) -{ - gScriptResult = GetCurrentMauvilleOldMan(); -} - -void sub_80F7B2C(void) -{ - u16 *scriptPtr = &gScriptResult; // why?? - OldMan *oldMan = &gSaveBlock1.oldMan; - - *scriptPtr = oldMan->oldMan1.unk_2DBD; -} - -void sub_80F7B40(void) -{ - u16 i; - OldMan *oldMan = &gSaveBlock1.oldMan; - //struct UnkMauvilleOldManStruct *oldManStruct = &gSaveBlock1.oldManStruct; - - StringCopy(oldMan->oldMan1.playerName, gSaveBlock2.playerName); - - for(i = 0; i < 4; i++) - oldMan->oldMan1.playerTrainerId[i] = gSaveBlock2.playerTrainerId[i]; - - for(i = 0; i < 6; i++) - oldMan->oldMan1.mauvilleOldMan_ecArray[i] = oldMan->oldMan1.mauvilleOldMan_ecArray2[i]; - - oldMan->oldMan1.unk_2DBD = 1; -} - -void sub_80F7BA0(void) -{ - struct UnkMauvilleOldManStruct *oldMan = &gSaveBlock1.oldMan.oldMan1; - u16 specialVar = gSpecialVar_0x8004; // It's a bit odd to use this temp variable, but it seems needed to match. - u16 *r5; - u16 i; - u8 *ptr; - u8 *r4; - - r5 = oldMan->mauvilleOldMan_ecArray2; - if (specialVar == 0) - r5 = oldMan->mauvilleOldMan_ecArray; - ptr = gStringVar4; - r4 = ptr; - for (i = 0; i < 2; i++) - { - ptr = sub_80EB3FC(ptr, *(r5++)); - while (ptr != r4) - { - if (*r4 == 0) - *r4 = 0x37; - r4++; - } - r4++; - *(ptr++) = 0; - ptr = sub_80EB3FC(ptr, *(r5++)); - while (ptr != r4) - { - if (*r4 == 0) - *r4 = 0x37; - r4++; - } - r4++; - *(ptr++) = 0xFE; - ptr = sub_80EB3FC(ptr, *(r5++)); - while (ptr != r4) - { - if (*r4 == 0) - *r4 = 0x37; - r4++; - } - //_080F7C2A - if (i == 0) - { - *(ptr++) = EXT_CTRL_CODE_BEGIN; - *(ptr++) = 0xF; - } - } -} - -void sub_80F7C54(void) -{ - sub_80F7F80(gSpecialVar_0x8004); - MenuDisplayMessageBox(); - ScriptContext1_Stop(); -} - -void sub_80F7C70(void) -{ - u16 *scriptPtr = &gScriptResult; // again?? - OldMan *oldMan = &gSaveBlock1.oldMan; - - *scriptPtr = oldMan->oldMan1.unk_2D95; -} - -void sub_80F7C84(void) -{ - OldMan *oldMan = &gSaveBlock1.oldMan; - - oldMan->oldMan1.unk_2D95 = 1; -} - -void sub_80F7C90(void) -{ - u16 var = sub_80EB8EC(); - - if(var == 0xFFFF) - { - gScriptResult = FALSE; - } - else - { - sub_80EB3FC(gStringVar1, var); - gScriptResult = TRUE; - } -} - -void sub_80F7CC8(void) -{ - OldMan *oldMan = &gSaveBlock1.oldMan; - - if(oldMan->oldMan1.unk_2D95 == 10) - { - gScriptResult = FALSE; - oldMan->oldMan1.unk_2D95 = 0; - } - else - gScriptResult = TRUE; -} - -void sub_80F7CF4(void) -{ - struct UnkMauvilleOldManStruct2 *oldMan = &gSaveBlock1.oldMan.oldMan2; - - if(oldMan->unk1 == 0) - sub_80F7DC0(); - - if(oldMan->mauvilleOldMan_ecArray[oldMan->unk1] != 0xFFFF) // is not the last element of the array? - { - u8 *stringPtr; - u32 random = Random(); - - random %= 8; - stringPtr = sub_80EB3FC(gStringVar4, oldMan->mauvilleOldMan_ecArray[oldMan->unk1]); - stringPtr = StringCopy(stringPtr, gOtherText_Is); - stringPtr = StringCopy(stringPtr, (u8 *)gUnknown_083E5388[random]); - StringCopy(stringPtr, gOtherText_DontYouAgree); - } - else - { - StringCopy(gStringVar4, (u8 *)gUnknown_083E53A8[oldMan->mauvilleOldMan_ecArray2[oldMan->unk2++]]); - } - if(!(Random() % 10)) - oldMan->unk1 = 10; - else - oldMan->unk1++; - - gScriptResult = TRUE; -} diff --git a/src/mystery_event_script.c b/src/mystery_event_script.c deleted file mode 100644 index 45ef719da..000000000 --- a/src/mystery_event_script.c +++ /dev/null @@ -1,103 +0,0 @@ -#include "global.h" -#include "mystery_event_script.h" -#include "script.h" -#include "string_util.h" -#include "text.h" - -#if ENGLISH -#define UNK_MASK_1 0x2 -#elif GERMAN -#define UNK_MASK_1 0x4 -#endif - -#ifdef SAPPHIRE -#define UNK_MASK_2 0x100 -#else -#define UNK_MASK_2 0x80 -#endif - -extern struct ScriptContext gUnknown_02039288; - -extern ScrCmdFunc gScriptFuncs[]; -extern ScrCmdFunc gScriptFuncs_End[]; - -extern u8 gOtherText_DataCannotUseVersion[]; - -bool32 sub_8126098(u16 a1, u32 a2, u16 a3, u32 a4) -{ - if (!(a1 & UNK_MASK_1)) - return FALSE; - - if (!(a2 & UNK_MASK_1)) - return FALSE; - - if (!(a3 & 0x4)) - return FALSE; - - if (!(a4 & UNK_MASK_2)) - return FALSE; - - return TRUE; -} - -void sub_81260D0(void) -{ - StringExpandPlaceholders(gStringVar4, gOtherText_DataCannotUseVersion); - sub_8126160(3); -} - -void sub_81260EC(struct ScriptContext *ctx, u8 *ptr) -{ - InitScriptContext(ctx, gScriptFuncs, gScriptFuncs_End); - SetupBytecodeScript(ctx, ptr); - ctx->data[0] = (u32)ptr; - ctx->data[1] = 0; - ctx->data[2] = 0; - ctx->data[3] = 0; -} - -bool32 sub_812611C(struct ScriptContext *ctx) -{ - if (RunScript(ctx) && ctx->data[3]) - return TRUE; - else - return FALSE; -} - -u32 sub_812613C(u8 *ptr) -{ - struct ScriptContext *ctx = &gUnknown_02039288; - sub_81260EC(ctx, ptr); - while (sub_812611C(ctx)) - ; - return ctx->data[2]; -} - -void sub_8126160(u32 val) -{ - gUnknown_02039288.data[2] = val; -} - -int sub_812616C(u8 *a1, int a2) -{ - unsigned int i; - int sum = 0; - - for (i = 0; i < a2; i++) - sum += a1[i]; - - return sum; -} - -u32 sub_812618C(u8 *ptr) -{ - return ptr[0] | (ptr[1] << 8) | (ptr[2] << 16) | (ptr[3] << 24); -} - -void sub_81261A4(u8 *ptr, u32 val) -{ - ptr[0] = val; - ptr[1] = val >> 8; - ptr[2] = val >> 16; - ptr[3] = val >> 24; -} diff --git a/src/party_menu.c b/src/party_menu.c deleted file mode 100644 index 1fcd2cdda..000000000 --- a/src/party_menu.c +++ /dev/null @@ -1,1505 +0,0 @@ -#include "global.h" -#include "party_menu.h" -#include "battle.h" -#include "battle_interface.h" -#include "battle_party_menu.h" -#include "data2.h" -#include "event_data.h" -#include "item.h" -#include "item_use.h" -#include "mail_data.h" -#include "main.h" -#include "menu.h" -#include "palette.h" -#include "pokemon.h" -#include "pokemon_item_effect.h" -#include "pokemon_menu.h" -#include "pokemon_summary_screen.h" -#include "rom_8077ABC.h" -#include "rom_8094928.h" -#include "songs.h" -#include "sound.h" -#include "species.h" -#include "sprite.h" -#include "string_util.h" -#include "strings.h" -#include "task.h" -#include "sprite.h" -#include "palette.h" -#include "event_data.h" -#include "main.h" -#include "item.h" -#include "battle_interface.h" -#include "species.h" -#include "party_menu.h" - -#define DATA_COUNT (6) - -struct Unk2001000 -{ - u8 unk0; - u8 unk1; - u8 unk2; -}; - -struct Unk201C000 -{ - /*0x00*/ struct Pokemon *pokemon; - /*0x04*/ u8 unk4; - /*0x05*/ u8 unk5; - /*0x06*/ u16 unk6; - /*0x08*/ u16 unk8; - /*0x0A*/ u8 pad_0A[2]; - /*0x0C*/ s32 unkC; - /*0x10*/ TaskFunc unk10; - /*0x14*/ TaskFunc unk14; -}; - -struct Unk201F000 -{ - u8 filler0[0xE00]; - u8 unkE00[3]; // not sure if this is an array or struct, or how big it is -}; - -struct UnknownStruct5 -{ - u8 unk0; - u8 unk1; - u16 *unk4; -}; - -extern u8 ewram[]; -#define ewram01000 (*(struct Unk2001000 *)(ewram + 0x01000)) -#define ewram1C000 (*(struct Unk201C000 *)(ewram + 0x1C000)) -#define ewram1F000 (*(struct Unk201F000 *)(ewram + 0x1F000)) - -extern u8 gUnknown_0202E8F4; -extern u8 gUnknown_0202E8F6; -extern u16 gUnknown_0202E8F8; -extern u8 gUnknown_0202E8FA; -extern u8 gLastFieldPokeMenuOpened; -extern u8 gPlayerPartyCount; -extern s32 gBattleMoveDamage; - -//extern const u16 gUnknown_083769A8[][6]; -//extern const u8 gUnknown_083769A8[][12]; -extern void *const gUnknown_08376858[][6]; -extern const u8 gUnknown_083769A8[]; -extern const u8 gUnknown_08376D1C[DATA_COUNT]; -extern const u16 gUnknown_08376504[]; -extern void (*const gUnknown_08376B54[])(u8); -extern const u8 *const gUnknown_08376D04[DATA_COUNT]; -extern const struct UnknownStruct5 gUnknown_08376BB4[][6]; - -static void sub_806E884(u8 taskId); - -/* -void sub_806AEDC(void) -{ - const struct UnknownStruct5 *r5; - s32 i; - - AnimateSprites(); - BuildOamBuffer(); - r5 = gUnknown_08376BB4[gUnknown_0202E8FA]; - for (i = 0; i < 6; i++) - sub_800142C(r5[i].unk0 * 8, r5[i].unk1 * 8, r5[i].unk4, 0, (i << 5) | 0x200); - RunTasks(); - UpdatePaletteFade(); -} -*/ - -#if ENGLISH -#define WINDOW_LEFT (3) -#define WINDOW_RIGHT (26) -#elif GERMAN -#define WINDOW_LEFT (0) -#define WINDOW_RIGHT (29) -#endif - -u8 sub_806E834(const u8 *message, u8 arg1) -{ - u8 taskId; - - gUnknown_0202E8F6 = 1; - - MenuDrawTextWindow(WINDOW_LEFT, 14, WINDOW_RIGHT, 19); - MenuPrintMessage(message, WINDOW_LEFT + 1, 15); - - taskId = CreateTask(sub_806E884, 1); - gTasks[taskId].data[0] = arg1; - - return taskId; -} - -static void sub_806E884(u8 taskId) -{ - if (MenuUpdateWindowText()) - { - gUnknown_0202E8F6 = 0; - if (gTasks[taskId].data[0] == 0) - MenuZeroFillWindowRect(WINDOW_LEFT, 14, WINDOW_RIGHT, 19); - DestroyTask(taskId); - } -} - -void sub_806E8D0(u8 taskId, u16 b, TaskFunc c) -{ - ewram1C000.unk10 = c; - ewram1C000.unk4 = taskId; - ewram1C000.unk5 = sub_806CA38(taskId); - ewram1C000.unk6 = b; - ewram1C000.pokemon = &gPlayerParty[ewram1C000.unk5]; -} - -bool8 PartyMenuUpdateMonHeldItem(struct Pokemon *pkmn, u16 item) -{ - u8 itemData[2]; - - if (ItemIsMail(item) == TRUE) - { - if (GiveMailToMon(pkmn, item) == 0xFF) - return TRUE; - gUnknown_0202E8F4 = 2; - } - else - { - gUnknown_0202E8F4 = 1; - } - - itemData[0] = item; - itemData[1] = item >> 8; - SetMonData(pkmn, MON_DATA_HELD_ITEM, itemData); - return FALSE; -} - -void PartyMenuTryGiveMonHeldItem(u8 taskId, u16 newItem, TaskFunc c) -{ - u16 currentItem; - - gTasks[taskId].func = TaskDummy; - sub_806E8D0(taskId, newItem, c); - currentItem = GetMonData(ewram1C000.pokemon, MON_DATA_HELD_ITEM); - gUnknown_0202E8F4 = 0; - gUnknown_0202E8F8 = 0; - if (currentItem != 0) - { - if (ItemIsMail(currentItem) == TRUE) - { - sub_806E834(gOtherText_MailMustBeRemoved, 1); - CreateTask(party_menu_link_mon_held_item_object, 5); - } - else - { - GetMonNickname(ewram1C000.pokemon, gStringVar1); - CopyItemName(currentItem, gStringVar2); - StringExpandPlaceholders(gStringVar4, gOtherText_AlreadyHolding); - sub_806E834(gStringVar4, 1); - CreateTask(Task_ConfirmGiveHeldItem, 5); - if (ItemIsMail(newItem) == TRUE) - gUnknown_0202E8F8 = currentItem; - } - } - else - { - PartyMenuUpdateMonHeldItem(ewram1C000.pokemon, newItem); - RemoveBagItem(newItem, 1); - if (ItemIsMail(newItem)) - { - gTasks[taskId].func = c; - } - else - { - DisplayGiveHeldItemMessage(ewram1C000.unk5, newItem, 1); - CreateTask(party_menu_link_mon_held_item_object, 5); - } - } -} - -void party_menu_link_mon_held_item_object(u8 taskId) -{ - if (gUnknown_0202E8F6 == 0) - { - SetHeldItemIconVisibility(ewram1C000.unk4, ewram1C000.unk5); - gTasks[ewram1C000.unk4].func = ewram1C000.unk10; - DestroyTask(taskId); - } -} - -void PartyMenuTryGiveMonHeldItem_806EACC(u8 taskId) -{ - s8 selection = ProcessMenuInputNoWrap_(); - - if (selection == 0) - { - u16 currentItem; - - MenuZeroFillWindowRect(23, 8, 29, 13); - currentItem = GetMonData(ewram1C000.pokemon, MON_DATA_HELD_ITEM); - RemoveBagItem(ewram1C000.unk6, 1); - if (AddBagItem(currentItem, 1) == TRUE) - { - PartyMenuUpdateMonHeldItem(ewram1C000.pokemon, ewram1C000.unk6); - if (ItemIsMail(ewram1C000.unk6)) - { - DisplayTakeHeldItemMessage(ewram1C000.unk5, currentItem, 1); - } - else - { - CopyItemName(ewram1C000.unk6, gStringVar1); - StringExpandPlaceholders(gStringVar4, gOtherText_TakenAndReplaced); - sub_806E834(gStringVar4, 1); - } - } - else - { - sub_806E834(gOtherText_BagFullCannotRemoveItem, 0); - AddBagItem(ewram1C000.unk6, 1); - } - } - else - { - if (selection != 1 && selection != -1) - return; - if (selection == -1) - PlaySE(SE_SELECT); - MenuZeroFillWindowRect(23, 8, 29, 13); - } - gTasks[taskId].func = party_menu_link_mon_held_item_object; -} - -void Task_ConfirmGiveHeldItem(u8 taskId) -{ - if (gUnknown_0202E8F6 == 0) - { - DisplayYesNoMenu(23, 8, 1); - gTasks[taskId].func = PartyMenuTryGiveMonHeldItem_806EACC; - } -} - -void DisplayGiveHeldItemMessage(u8 a, u16 b, u8 c) -{ - GetMonNickname(&gPlayerParty[a], gStringVar1); - CopyItemName(b, gStringVar2); - StringExpandPlaceholders(gStringVar4, gOtherText_WasGivenToHold); - sub_806E834(gStringVar4, c); -} - - -// Not sure about this one for now. -/* -void PartyMenuTryGiveMonMail(u8 taskId, TaskFunc func) -{ - u16 currentItem; - struct MailStruct *r4; - - gTasks[taskId].func = TaskDummy; - sub_806E8D0(taskId, 0, func); - currentItem = GetMonData(ewram1C000.pokemon, MON_DATA_HELD_ITEM); - gUnknown_0202E8F4 = 0; - r4 = &gSaveBlock1.mail[ewram1F000.unkE00[0] + ewram1F000.unkE00[2]]; - if (currentItem != 0) - { - sub_806E834(gOtherText_PokeHoldingItemCantMail, 1); - CreateTask(party_menu_link_mon_held_item_object, 5); - } - else - { - GiveMailToMon2(ewram1C000.pokemon, r4); - ClearMailStruct(r4); - sub_806E834(gOtherText_MailTransferredMailbox, 1); - CreateTask(party_menu_link_mon_held_item_object, 5); - } -} -*/ -__attribute__((naked)) -void PartyMenuTryGiveMonMail(u8 taskId, TaskFunc func) -{ - asm(".syntax unified\n\ - push {r4,r5,lr}\n\ - adds r2, r1, 0\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - ldr r3, _0806ECA0 @ =gTasks\n\ - lsls r1, r0, 2\n\ - adds r1, r0\n\ - lsls r1, 3\n\ - adds r1, r3\n\ - ldr r3, _0806ECA4 @ =TaskDummy\n\ - str r3, [r1]\n\ - movs r1, 0\n\ - bl sub_806E8D0\n\ - ldr r5, _0806ECA8 @ =0x0201c000\n\ - ldr r0, [r5]\n\ - movs r1, 0xC\n\ - bl GetMonData\n\ - lsls r0, 16\n\ - ldr r2, _0806ECAC @ =gUnknown_0202E8F4\n\ - movs r1, 0\n\ - strb r1, [r2]\n\ - movs r1, 0xF8\n\ - lsls r1, 6\n\ - adds r2, r5, r1\n\ - ldrb r1, [r2]\n\ - adds r1, 0x6\n\ - ldrb r2, [r2, 0x2]\n\ - adds r1, r2\n\ - lsls r2, r1, 3\n\ - adds r2, r1\n\ - lsls r2, 2\n\ - ldr r1, _0806ECB0 @ =gSaveBlock1 + 0x2B4C\n\ - adds r4, r2, r1\n\ - cmp r0, 0\n\ - beq _0806ECBC\n\ - ldr r0, _0806ECB4 @ =gOtherText_PokeHoldingItemCantMail\n\ - movs r1, 0x1\n\ - bl sub_806E834\n\ - ldr r0, _0806ECB8 @ =party_menu_link_mon_held_item_object\n\ - movs r1, 0x5\n\ - bl CreateTask\n\ - b _0806ECDA\n\ - .align 2, 0\n\ -_0806ECA0: .4byte gTasks\n\ -_0806ECA4: .4byte TaskDummy\n\ -_0806ECA8: .4byte 0x0201c000\n\ -_0806ECAC: .4byte gUnknown_0202E8F4\n\ -_0806ECB0: .4byte gSaveBlock1 + 0x2B4C\n\ -_0806ECB4: .4byte gOtherText_PokeHoldingItemCantMail\n\ -_0806ECB8: .4byte party_menu_link_mon_held_item_object\n\ -_0806ECBC:\n\ - ldr r0, [r5]\n\ - adds r1, r4, 0\n\ - bl GiveMailToMon2\n\ - adds r0, r4, 0\n\ - bl ClearMailStruct\n\ - ldr r0, _0806ECE0 @ =gOtherText_MailTransferredMailbox\n\ - movs r1, 0x1\n\ - bl sub_806E834\n\ - ldr r0, _0806ECE4 @ =party_menu_link_mon_held_item_object\n\ - movs r1, 0x5\n\ - bl CreateTask\n\ -_0806ECDA:\n\ - pop {r4,r5}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_0806ECE0: .4byte gOtherText_MailTransferredMailbox\n\ -_0806ECE4: .4byte party_menu_link_mon_held_item_object\n\ - .syntax divided\n"); -} - -void PartyMenuTryGiveMonHeldItem_806ECE8(u8 taskId, TaskFunc func) -{ - u16 currentItem; - - gTasks[taskId].func = TaskDummy; - sub_806E8D0(taskId, 0, func); - currentItem = GetMonData(ewram1C000.pokemon, MON_DATA_HELD_ITEM); - if (currentItem == 0) - { - StringExpandPlaceholders(gStringVar4, gOtherText_NotHoldingAnything); - sub_806E834(gStringVar4, 0); - CreateTask(party_menu_link_mon_held_item_object, 5); - } - else - { - u8 itemData[2]; - - itemData[0] = 0; - itemData[1] = 0; - if (AddBagItem(currentItem, 1) == TRUE) - { - if (ItemIsMail(currentItem) == TRUE) - TakeMailFromMon(ewram1C000.pokemon); - DisplayTakeHeldItemMessage(ewram1C000.unk5, currentItem, 0); - SetMonData(ewram1C000.pokemon, MON_DATA_HELD_ITEM, itemData); - } - else - { - sub_806E834(gOtherText_BagFullCannotRemoveItem, 0); - } - CreateTask(party_menu_link_mon_held_item_object, 5); - } -} - -void DisplayTakeHeldItemMessage(u8 a, u16 b, u8 c) -{ - GetMonNickname(&gPlayerParty[a], gStringVar1); - CopyItemName(b, gStringVar2); - StringExpandPlaceholders(gStringVar4, gOtherText_ReceivedTheThingFrom); - sub_806E834(gStringVar4, c); -} - -void DoTakeMail(u8 taskId, TaskFunc func) -{ - gTasks[taskId].func = TaskDummy; - sub_806E8D0(taskId, 0, func); - ewram1C000.unk6 = GetMonData(ewram1C000.pokemon, MON_DATA_HELD_ITEM); - sub_806E834(gOtherText_SendRemovedMailPrompt, 1); - CreateTask(Task_ConfirmTakeHeldMail, 5); -} - -void Task_LoseMailMessage(u8 taskId) -{ - s8 selection = ProcessMenuInputNoWrap_(); - - if (selection == 0) - { - if (AddBagItem(ewram1C000.unk6, 1) == TRUE) - { - TakeMailFromMon(ewram1C000.pokemon); - sub_806E834(gOtherText_MailTaken, 0); - } - else - { - sub_806E834(gOtherText_BagFullCannotRemoveItem, 0); - } - MenuZeroFillWindowRect(23, 8, 29, 13); - gTasks[taskId].func = party_menu_link_mon_held_item_object; - } - else - { - if (selection != 1 && selection != -1) - return; - if (selection == -1) - PlaySE(SE_SELECT); - MenuZeroFillWindowRect(23, 8, 29, 13); - MenuZeroFillWindowRect(0, 14, 29, 19); - gTasks[taskId].func = party_menu_link_mon_held_item_object; - } -} - -void Task_ConfirmLoseMailMessage(u8 taskId) -{ - if (gUnknown_0202E8F6 == 0) - { - DisplayYesNoMenu(23, 8, 1); - gTasks[taskId].func = Task_LoseMailMessage; - } -} - -void Task_TakeHeldMail(u8 taskId) -{ - s8 selection = ProcessMenuInputNoWrap_(); - - if (selection == 0) - { - MenuZeroFillWindowRect(23, 8, 29, 13); - if (TakeMailFromMon2(ewram1C000.pokemon) != 0xFF) - sub_806E834(gOtherText_MailWasSent, 0); - else - sub_806E834(gOtherText_MailboxIsFull, 0); - gTasks[taskId].func = party_menu_link_mon_held_item_object; - } - else - { - if (selection != 1 && selection != -1) - return; - if (selection == -1) - PlaySE(SE_SELECT); - MenuZeroFillWindowRect(23, 8, 29, 13); - sub_806E834(gOtherText_MailRemovedMessageLost, 1); - gTasks[taskId].func = Task_ConfirmLoseMailMessage; - } -} - -void Task_ConfirmTakeHeldMail(u8 taskId) -{ - if (gUnknown_0202E8F6 == 0) - { - DisplayYesNoMenu(23, 8, 1); - gTasks[taskId].func = Task_TakeHeldMail; - } -} - -u16 ItemIdToBattleMoveId(u16 item) -{ - u16 moveId = item - 289; - - return gUnknown_08376504[moveId]; -} - -bool8 pokemon_has_move(struct Pokemon *pkmn, u16 move) -{ - u8 i; - - for (i = 0; i < 4; i++) - { - if (GetMonData(pkmn, MON_DATA_MOVE1 + i) == move) - return TRUE; - } - return FALSE; -} - -void TeachMonTMMove(u8 taskId, u16 move, TaskFunc func) -{ - PlaySE(SE_SELECT); - gTasks[taskId].func = TaskDummy; - sub_806E8D0(taskId, move, func); - CreateTask(Task_TeamMonTMMove, 5); -} - -void Task_TeamMonTMMove(u8 taskId) -{ - GetMonNickname(ewram1C000.pokemon, gStringVar1); - ewram1C000.unk8 = ItemIdToBattleMoveId(ewram1C000.unk6); - StringCopy(gStringVar2, gMoveNames[ewram1C000.unk8]); - ewram1B000.unk282 = 0; - if (pokemon_has_move(ewram1C000.pokemon, ewram1C000.unk8)) - { - StringExpandPlaceholders(gStringVar4, gOtherText_AlreadyKnows); - sub_806E834(gStringVar4, 1); - gTasks[taskId].func = party_menu_link_mon_held_item_object; - } - else - { - if (!CanMonLearnTMHM(ewram1C000.pokemon, ewram1C000.unk6 - 33)) - { - StringExpandPlaceholders(gStringVar4, gOtherText_NotCompatible); - sub_806E834(gStringVar4, 1); - gTasks[taskId].func = party_menu_link_mon_held_item_object; - } - else - { - if (GiveMoveToMon(ewram1C000.pokemon, ewram1C000.unk8) != 0xFFFF) - { - Task_TeamMonTMMove2(taskId); - } - else - { - StringExpandPlaceholders(gStringVar4, gOtherText_WantsToLearn); - sub_806E834(gStringVar4, 1); - gTasks[taskId].func = sub_806F358; - } - } - } -} - -void Task_TeamMonTMMove2(u8 taskId) -{ - StringCopy(gStringVar2, gMoveNames[ewram1C000.unk8]); - StringExpandPlaceholders(gStringVar4, gOtherText_LearnedMove); - sub_806E834(gStringVar4, 1); - AdjustFriendship(ewram1C000.pokemon, 4); - if (ewram1B000.unk282 == 0 && ewram1C000.unk6 <= 0x152) - RemoveBagItem(ewram1C000.unk6, 1); - gTasks[taskId].func = Task_TeamMonTMMove3; -} - -void Task_TeamMonTMMove3(u8 taskId) -{ - if (gUnknown_0202E8F6 == 0) - { - PlayFanfare(BGM_FANFA1); - gTasks[taskId].func = Task_TeamMonTMMove4; - } -} - -void Task_TeamMonTMMove4(u8 taskId) -{ - if (IsFanfareTaskInactive()) - { - if ((gMain.newKeys & A_BUTTON) || (gMain.newKeys & B_BUTTON)) - { - SetHeldItemIconVisibility(ewram1C000.unk4, ewram1C000.unk5); - if (ewram1B000.unk282 == 1) - { - sub_8070C54(taskId); - } - else - { - gTasks[ewram1C000.unk4].func = ewram1C000.unk10; - DestroyTask(taskId); - } - } - } -} - -void sub_806F2FC(u8 taskId) -{ - if (gUnknown_0202E8F6 == 0) - { - SetHeldItemIconVisibility(ewram1C000.unk4, ewram1C000.unk5); - if (ewram1B000.unk282 == 1) - { - sub_8070C54(taskId); - } - else - { - gTasks[ewram1C000.unk4].func = ewram1C000.unk10; - DestroyTask(taskId); - } - } -} - -void sub_806F358(u8 taskId) -{ - if (gUnknown_0202E8F6 == 0) - { - DisplayYesNoMenu(23, 8, 1); - gTasks[taskId].func = sub_806F390; - } -} - -void sub_806F390(u8 taskId) -{ - s8 selection = ProcessMenuInputNoWrap_(); - - if (selection == 0) - { - MenuZeroFillWindowRect(23, 8, 29, 13); - sub_806E834(gOtherText_WhichMoveToForget2, 1); - gTasks[taskId].func = sub_806F44C; - } - else - { - if (selection != 1 && selection != -1) - return; - if (selection == -1) - PlaySE(SE_SELECT); - StopTryingToTeachMove_806F614(taskId); - } -} - -void sub_806F3FC(u8 taskId) -{ - if (!gPaletteFade.active) - { - sub_809D9F0(gPlayerParty, ewram1C000.unk5, gPlayerPartyCount - 1, sub_808B564, ewram1C000.unk8); - DestroyTask(taskId); - } -} - -void sub_806F44C(u8 taskId) -{ - if (gUnknown_0202E8F6 == 0) - { - BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); - gTasks[taskId].func = sub_806F3FC; - } -} - -void TaughtMove(u8 taskId) -{ - if (!gPaletteFade.active) - { - u8 moveIndex; - u16 r4; - - gTasks[taskId].func = TaskDummy; - sub_806E8D0(taskId, gScriptItemId, sub_808B508); - moveIndex = sub_809FA30(); - r4 = GetMonData(ewram1C000.pokemon, MON_DATA_MOVE1 + moveIndex); - GetMonNickname(ewram1C000.pokemon, gStringVar1); - StringCopy(gStringVar2, gMoveNames[r4]); - StringExpandPlaceholders(gStringVar4, gOtherText_ForgetMove123_2); - sub_806E834(gStringVar4, 1); - CreateTask(TMMoveUpdateMoveSlot, 5); - } -} - -void TMMoveUpdateMoveSlot(u8 taskId) -{ - if (gUnknown_0202E8F6 == 0) - { - RemoveMonPPBonus(ewram1C000.pokemon, sub_809FA30()); - SetMonMoveSlot(ewram1C000.pokemon, ewram1C000.unk8, sub_809FA30()); - Task_TeamMonTMMove2(taskId); - } -} - -void StopTryingToTeachMove_806F588(u8 taskId) -{ - if (!gPaletteFade.active) - { - gTasks[taskId].func = TaskDummy; - sub_806E8D0(taskId, gScriptItemId, sub_808B508); - StringCopy(gStringVar2, gMoveNames[ewram1C000.unk8]); - StringExpandPlaceholders(gStringVar4, gOtherText_StopTryingTo); - sub_806E834(gStringVar4, 1); - CreateTask(StopTryingToTeachMove_806F67C, 5); - } -} - -void StopTryingToTeachMove_806F614(u8 taskId) -{ - MenuZeroFillWindowRect(23, 8, 29, 13); - StringCopy(gStringVar2, gMoveNames[ewram1C000.unk8]); - StringExpandPlaceholders(gStringVar4, gOtherText_StopTryingTo); - sub_806E834(gStringVar4, 1); - gTasks[taskId].func = StopTryingToTeachMove_806F67C; -} - -void StopTryingToTeachMove_806F67C(u8 taskId) -{ - if (gUnknown_0202E8F6 == 0) - { - DisplayYesNoMenu(23, 8, 1); - gTasks[taskId].func = StopTryingToTeachMove_806F6B4; - } -} - -void StopTryingToTeachMove_806F6B4(u8 taskId) -{ - s8 selection = ProcessMenuInputNoWrap_(); - - if (selection == 0) - { - MenuZeroFillWindowRect(23, 8, 29, 13); - GetMonNickname(ewram1C000.pokemon, gStringVar1); - StringCopy(gStringVar2, gMoveNames[ewram1C000.unk8]); - StringExpandPlaceholders(gStringVar4, gOtherText_DidNotLearnMove2); - sub_806E834(gStringVar4, 1); - gTasks[taskId].func = sub_806F2FC; - } - else - { - if (selection != 1 && selection != -1) - return; - if (selection == -1) - PlaySE(SE_SELECT); - MenuZeroFillWindowRect(23, 8, 29, 13); - GetMonNickname(ewram1C000.pokemon, gStringVar1); - StringCopy(gStringVar2, gMoveNames[ewram1C000.unk8]); - StringExpandPlaceholders(gStringVar4, gOtherText_WantsToLearn); - sub_806E834(gStringVar4, 1); - gTasks[taskId].func = sub_806F358; - } -} - -bool8 IsHMMove(u16 move) -{ - u8 i; - - for (i = 0; i < 8; i++) - { - if (gUnknown_08376504[50 + i] == move) - return TRUE; - } - return FALSE; -} - -s16 sub_806F7E8(u8 taskId, struct BattleInterfaceStruct1 *b, s8 c) -{ - s16 *taskData; - u8 hpBarLevel; - void *vramPtr; - - taskData = gTasks[taskId].data; - - b->unk0 = taskData[10]; - b->unk4 = taskData[11]; - b->unk8 = taskData[12] * c; - b->unk10 = 0x100; - hpBarLevel = GetHPBarLevel(ewram1B000.unk282, b->unk0); - if (hpBarLevel > 2) - b->unkC_0 = 4; - if (hpBarLevel == 2) - b->unkC_0 = 5; - if (hpBarLevel < 2) - b->unkC_0 = 6; - vramPtr = gUnknown_08376858[IsDoubleBattle()][ewram1C000.unk5]; - return sub_80460C8(b, &ewram1C000.unkC, vramPtr, 0); -} - -void sub_806F8AC(u8 taskId) -{ - struct BattleInterfaceStruct1 sp0; - u16 sp14; - - ewram1B000.unk282 = sub_806F7E8(taskId, &sp0, -1); - if (ewram1B000.unk282 == -1) - { - ewram1C000.unkC = 0; - if (-sp0.unk8 + sp0.unk4 > sp0.unk0) - sp14 = sp0.unk0 - sp0.unk4; - else - sp14 = -sp0.unk8; - gBattleMoveDamage = -sp14; - GetMonNickname(ewram1C000.pokemon, gStringVar1); - ConvertIntToDecimalStringN(gStringVar2, sp14, 0, 3); - if (gTasks[taskId].data[14] == 0) - StringExpandPlaceholders(gStringVar4, gOtherText_HPRestoredBy); - else - StringExpandPlaceholders(gStringVar4, gOtherText_RegainedHealth); - SetMonIconAnim(GetMonIconSpriteId_maybe(ewram1C000.unk4, ewram1C000.unk5), ewram1C000.pokemon); - task_pc_turn_off(&gUnknown_083769A8[IsDoubleBattle() * 12 + ewram1C000.unk5 * 2], 7); - ewram1B000.unk261 = 2; - sub_806E834(gStringVar4, 1); - sp14 += sp0.unk4; - SetMonData(ewram1C000.pokemon, MON_DATA_HP, (u8 *)&sp14); - RemoveBagItem(ewram1C000.unk6, 1); - sub_8032638(); - gTasks[taskId].func = sub_806FB44; - } - else - { - PartyMenuDoPrintHP(ewram1C000.unk5, IsDoubleBattle(), ewram1B000.unk282, sp0.unk0); - } -} - -void sub_806FA18(u8 taskId) -{ - struct BattleInterfaceStruct1 sp0; - - ewram1B000.unk282 = sub_806F7E8(taskId, &sp0, 1); - if (ewram1B000.unk282 == -1) - { - PlaySE(SE_KAIFUKU); - ewram1C000.unkC = 0; - gTasks[taskId].data[11] -= gTasks[taskId].data[12]; - SetMonData(ewram1C000.pokemon, MON_DATA_HP, (u8 *)&gTasks[taskId].data[11]); - SetMonIconAnim(GetMonIconSpriteId_maybe(ewram1C000.unk4, ewram01000.unk1), ewram1C000.pokemon); - ewram1C000.unk5 = gSprites[ewram01000.unk2].data0; - ewram1C000.pokemon = &gPlayerParty[ewram1C000.unk5]; - gTasks[taskId].data[10] = GetMonData(ewram1C000.pokemon, MON_DATA_MAX_HP); - gTasks[taskId].data[11] = GetMonData(ewram1C000.pokemon, MON_DATA_HP); - ewram1C000.unkC = -32768; - ewram1C000.unk14 = ewram1C000.unk10; - gTasks[taskId].func = sub_806F8AC; - ewram1B000.unk282 = gTasks[taskId].data[11]; - } - else - { - PartyMenuDoPrintHP(ewram1C000.unk5, IsDoubleBattle(), ewram1B000.unk282, sp0.unk0); - } -} - -void sub_806FB0C(u8 taskId) -{ - if (gUnknown_0202E8F6 == 0) - { - gTasks[ewram1C000.unk4].func = ewram1C000.unk10; - DestroyTask(taskId); - } -} - -void sub_806FB44(u8 taskId) -{ - if (gUnknown_0202E8F6 == 0) - { - gTasks[ewram1C000.unk4].func = ewram1C000.unk14; - DestroyTask(taskId); - } -} - -bool8 IsHPRecoveryItem(u16 item) -{ - const u8 *itemEffect; - - if (item == 0xAF) - itemEffect = gSaveBlock1.enigmaBerry.itemEffect; - else - itemEffect = gItemEffectTable[item - 13]; - - if (itemEffect[4] & 4) - return TRUE; - else - return FALSE; -} - -void PartyMenuUpdateLevelOrStatus(struct Pokemon *pkmn, u8 b) -{ - PartyMenuClearLevelStatusTilemap(b); - PartyMenuPrintMonLevelOrStatus(b, pkmn); -} - -void GetMedicineItemEffectMessage(u16 item) -{ - switch (GetItemEffectType(item)) - { - case 3: - StringExpandPlaceholders(gStringVar4, gOtherText_CuredPoisoning); - break; - case 4: - StringExpandPlaceholders(gStringVar4, gOtherText_WokeUp); - break; - case 5: - StringExpandPlaceholders(gStringVar4, gOtherText_BurnHealed); - break; - case 6: - StringExpandPlaceholders(gStringVar4, gOtherText_ThawedOut); - break; - case 7: - StringExpandPlaceholders(gStringVar4, gOtherText_CuredParalysis); - break; - case 8: - StringExpandPlaceholders(gStringVar4, gOtherText_SnapConfusion); - break; - case 9: - StringExpandPlaceholders(gStringVar4, gOtherText_GotOverLove); - break; - case 11: - StringExpandPlaceholders(gStringVar4, gOtherText_BecameHealthy); - break; - case 13: - StringCopy(gStringVar2, gOtherText_Hp2); - StringExpandPlaceholders(gStringVar4, gOtherText_WasRaised); - break; - case 12: - StringCopy(gStringVar2, gOtherText_Attack); - StringExpandPlaceholders(gStringVar4, gOtherText_WasRaised); - break; - case 17: - StringCopy(gStringVar2, gOtherText_Defense); - StringExpandPlaceholders(gStringVar4, gOtherText_WasRaised); - break; - case 16: - StringCopy(gStringVar2, gOtherText_Speed); - StringExpandPlaceholders(gStringVar4, gOtherText_WasRaised); - break; - case 14: - StringCopy(gStringVar2, gOtherText_SpAtk2); - StringExpandPlaceholders(gStringVar4, gOtherText_WasRaised); - break; - case 15: - StringCopy(gStringVar2, gOtherText_SpDef2); - StringExpandPlaceholders(gStringVar4, gOtherText_WasRaised); - break; - case 19: - case 20: - StringExpandPlaceholders(gStringVar4, gOtherText_PPIncreased); - break; - case 21: - StringExpandPlaceholders(gStringVar4, gOtherText_PPRestored); - break; - default: - StringExpandPlaceholders(gStringVar4, gOtherText_WontHaveAnyEffect); - break; - } -} - -bool8 IsMedicineIneffective(struct Pokemon *pkmn, u16 item) -{ - if (GetItemEffectType(item) == 13 - && GetMonData(pkmn, MON_DATA_SPECIES) == SPECIES_SHEDINJA) - return TRUE; - else - return FALSE; -} - -bool8 ExecuteTableBasedItemEffect__(u8 a, u16 b, u8 c) -{ - if (gMain.inBattle) - return ExecuteTableBasedItemEffect_(&gPlayerParty[a], b, sub_8094C20(a), c); - else - return ExecuteTableBasedItemEffect_(&gPlayerParty[a], b, a, c); -} - -void UseMedicine(u8 taskId, u16 item, TaskFunc func) -{ - u8 r7; - bool8 r9 = FALSE; - bool8 r0; - - gTasks[taskId].func = TaskDummy; - r7 = CreateTask(TaskDummy, 5); - sub_806E8D0(taskId, item, func); - if (!IsMedicineIneffective(ewram1C000.pokemon, item)) - { - r9 = IsHPRecoveryItem(item); - if (r9 == TRUE) - { - gTasks[r7].data[10] = GetMonData(ewram1C000.pokemon, MON_DATA_MAX_HP); - gTasks[r7].data[11] = GetMonData(ewram1C000.pokemon, MON_DATA_HP); - if (gTasks[r7].data[10] == gTasks[r7].data[11]) - { - r9 = FALSE; - gTasks[r7].data[10] = 0; - gTasks[r7].data[11] = 0; - } - } - r0 = ExecuteTableBasedItemEffect__(ewram1C000.unk5, item, 0); - } - else - { - r0 = TRUE; - } - - if (r0) - { - gUnknown_0202E8F4 = 0; - PlaySE(SE_SELECT); - sub_806E834(gOtherText_WontHaveAnyEffect, 1); - gTasks[r7].func = sub_806FB0C; - } - else - { - u8 statusAndPkrs; - - gUnknown_0202E8F4 = 1; - if (!IsBlueYellowRedFlute(item)) - PlaySE(SE_KAIFUKU); - else - PlaySE(SE_BIDORO); - statusAndPkrs = GetMonStatusAndPokerus(ewram1C000.pokemon); - if (statusAndPkrs == 6 || statusAndPkrs == 0) - PartyMenuUpdateLevelOrStatus(ewram1C000.pokemon, ewram1C000.unk5); - if (r9 == TRUE) - { - gTasks[r7].data[12] = GetMonData(ewram1C000.pokemon, MON_DATA_HP) - gTasks[r7].data[11]; - ewram1C000.unkC = -32768; - if (gTasks[r7].data[11] == 0) - gTasks[r7].data[14] = 1; - else - gTasks[r7].data[14] = 0; - ewram1C000.unk14 = ewram1C000.unk10; - gTasks[r7].func = sub_806F8AC; - ewram1B000.unk282 = gTasks[r7].data[11]; - } - else - { - GetMonNickname(ewram1C000.pokemon, gStringVar1); - if (!IsBlueYellowRedFlute(item)) - RemoveBagItem(item, 1); - GetMedicineItemEffectMessage(item); - TryPrintPartyMenuMonNickname(ewram1C000.unk5, ewram1C000.pokemon); - sub_806E834(gStringVar4, 1); - gTasks[r7].func = sub_806FB0C; - } - } -} - -bool8 IsBlueYellowRedFlute(u16 item) -{ - if (item == 0x27 - || item == 0x29 - || item == 0x28) - return TRUE; - else - return FALSE; -} - -void sub_8070048(u8 taskId, u16 item, TaskFunc func) -{ - ewram1C000.unk10 = func; - ewram1C000.unk4 = taskId; - ewram1C000.unk6 = item; - ewram1C000.unk5 = 0; - ewram1C000.unk14 = sub_80701DC; - ewram1B000.unk27E = 0; - ewram1B000.unk280 = 0; - sub_8070088(taskId); -} - -void sub_8070088(u8 taskId) -{ - u8 taskId2; - - gTasks[taskId].func = TaskDummy; - if (GetMonData(&gPlayerParty[ewram1C000.unk5], MON_DATA_SPECIES) == 0) - { - gTasks[taskId].func = sub_80701DC; - } - else - { - s16 *taskData; - - taskId2 = CreateTask(TaskDummy, 5); - taskData = gTasks[taskId2].data; - ewram1C000.pokemon = &gPlayerParty[ewram1C000.unk5]; - taskData[10] = GetMonData(ewram1C000.pokemon, MON_DATA_MAX_HP); - taskData[11] = GetMonData(ewram1C000.pokemon, MON_DATA_HP); - if (ExecuteTableBasedItemEffect__(ewram1C000.unk5, ewram1C000.unk6, 0)) - { - DestroyTask(taskId2); - gTasks[taskId].func = sub_80701DC; - } - else - { - gUnknown_0202E8F4 = 1; - MenuZeroFillWindowRect(WINDOW_LEFT, 14, WINDOW_RIGHT, 19); - PlaySE(SE_KAIFUKU); - PartyMenuUpdateLevelOrStatus(ewram1C000.pokemon, ewram1C000.unk5); - task_pc_turn_off(&gUnknown_083769A8[IsDoubleBattle() * 12 + ewram1C000.unk5 * 2], 9); - ewram1B000.unk261 = 2; - taskData[12] = GetMonData(ewram1C000.pokemon, MON_DATA_HP) - taskData[11]; - taskData[14] = 1; - ewram1B000.unk27E = 1; - ewram1B000.unk280 = 1; - ewram1B000.unk282 = taskData[11]; - ewram1C000.unkC = -32768; - gTasks[taskId2].func = sub_806F8AC; - } - } -} - -void sub_80701DC(u8 taskId) -{ - if (ewram1B000.unk27E == 1) - { - AddBagItem(ewram1C000.unk6, 1); - if (GetMonData(&gPlayerParty[ewram1C000.unk5], MON_DATA_SPECIES) != 0) - { - task_pc_turn_off(&gUnknown_083769A8[IsDoubleBattle() * 12 + ewram1C000.unk5 * 2], 3); - ewram1B000.unk261 = 2; - } - ewram1B000.unk27E = 0; - } - ewram1C000.unk5++; - if (ewram1C000.unk5 == 6) - { - gUnknown_0202E8F4 = 0; - if (ewram1B000.unk280 == 0) - { - gTasks[taskId].func = TaskDummy; - sub_806E834(gOtherText_WontHaveAnyEffect, 1); - CreateTask(sub_806FB0C, 8); - } - else - { - RemoveBagItem(ewram1C000.unk6, 1); - gTasks[taskId].func = ewram1C000.unk10; - } - gLastFieldPokeMenuOpened = 0; - } - else - { - sub_8070088(taskId); - } -} - -void CreateItemUseMoveMenu(u8 partyMonIndex) -{ - u8 r6; - u8 i; - - r6 = 0; - MenuDrawTextWindow(19, 10, 29, 19); - for (i = 0; i < 4; i++) - { - u16 move = GetMonData(&gPlayerParty[partyMonIndex], MON_DATA_MOVE1 + i); - - MenuPrint(gMoveNames[move], 20, i * 2 + 11); - if (move != 0) - r6++; - } - InitMenu(0, 20, 11, r6, 0, 9); -} - -void Task_HandleItemUseMoveMenuInput(u8 taskId) -{ - if (gMain.newKeys & DPAD_UP) - { - PlaySE(SE_SELECT); - MoveMenuCursor(-1); - } - else if (gMain.newKeys & DPAD_DOWN) - { - PlaySE(SE_SELECT); - MoveMenuCursor(1); - } - else if (gMain.newKeys & A_BUTTON) - { - gUnknown_08376B54[0](taskId); - } - else if (gMain.newKeys & B_BUTTON) - { - PlaySE(SE_SELECT); - gUnknown_08376B54[1](taskId); - } -} - -void DoPPRecoveryItemEffect(u8 taskId, u16 b, TaskFunc c) -{ - const u8 *itemEffect; - u8 taskId2; - - if (b == 0xAF) - itemEffect = gSaveBlock1.enigmaBerry.itemEffect; - else - itemEffect = gItemEffectTable[b - 13]; - gTasks[taskId].func = TaskDummy; - taskId2 = CreateTask(TaskDummy, 5); - sub_806E8D0(taskId, b, c); - if (!(itemEffect[4] & 0x10)) - { - gTasks[taskId2].data[11] = 0; - DoRecoverPP(taskId2); - } - else - { - PlaySE(SE_SELECT); - sub_806D538(10, 3); - CreateItemUseMoveMenu(ewram1C000.unk5); - gTasks[taskId2].func = Task_HandleItemUseMoveMenuInput; - gMain.newKeys = 0; - } -} - -void ItemUseMoveMenu_HandleMoveSelection(u8 taskId) -{ - HandleDestroyMenuCursors(); - MenuZeroFillWindowRect(19, 10, 29, 19); - sub_806D5A4(); - gTasks[taskId].data[11] = GetMenuCursorPos(); - DoRecoverPP(taskId); -} - -void ItemUseMoveMenu_HandleCancel(u8 taskId) -{ - HandleDestroyMenuCursors(); - MenuZeroFillWindowRect(19, 10, 29, 19); - if (gMain.inBattle) - gTasks[ewram1C000.unk4].func = SetUpBattlePokemonMenu; - else - gTasks[ewram1C000.unk4].func = sub_808B0C0; - sub_806D538(3, 0); - DestroyTask(taskId); -} - -void DoRecoverPP(u8 taskId) -{ - u16 r5 = 0; - - if (ExecuteTableBasedItemEffect__(ewram1C000.unk5, ewram1C000.unk6, gTasks[taskId].data[11])) - { - gUnknown_0202E8F4 = r5; - PlaySE(SE_SELECT); - sub_806E834(gOtherText_WontHaveAnyEffect, 1); - } - else - { - gUnknown_0202E8F4 = 1; - PlaySE(SE_KAIFUKU); - RemoveBagItem(ewram1C000.unk6, 1); - r5 = GetMonData(ewram1C000.pokemon, MON_DATA_MOVE1 + gTasks[taskId].data[11]); - StringCopy(gStringVar1, gMoveNames[r5]); - GetMedicineItemEffectMessage(ewram1C000.unk6); - sub_806E834(gStringVar4, 1); - } - gTasks[taskId].func = sub_806FB0C; -} - -void DoPPUpItemEffect(u8 taskId, u16 b, TaskFunc c) -{ - gTasks[taskId].func = TaskDummy; - sub_806E8D0(taskId, b, c); - PlaySE(SE_SELECT); - sub_806D538(11, 3); - CreateItemUseMoveMenu(ewram1C000.unk5); - CreateTask(Task_HandleItemUseMoveMenuInput, 5); - gMain.newKeys = 0; -} - -void DoRareCandyItemEffect(u8 taskId, u16 b, TaskFunc c) -{ - u8 i; - bool8 r0; - - gTasks[taskId].func = TaskDummy; - sub_806E8D0(taskId, b, c); - - if (GetMonData(ewram1C000.pokemon, MON_DATA_LEVEL) != 100) - { - for (i = 0; i < 6; i++) - ewram1B000.unk264[i] = GetMonData(ewram1C000.pokemon, gUnknown_08376D1C[i]); - r0 = ExecuteTableBasedItemEffect__(ewram1C000.unk5, b, 0); - } - else - r0 = TRUE; - - if (r0) - { - gUnknown_0202E8F4 = 0; - PlaySE(SE_SELECT); - sub_806E834(gOtherText_WontHaveAnyEffect, 1); - CreateTask(sub_806FB0C, 5); - } - else - { - u8 level; - - gUnknown_0202E8F4 = 1; - PlayFanfareByFanfareNum(0); - sub_8070A20(ewram1C000.unk5, ewram1C000.pokemon); - RemoveBagItem(b, 1); - GetMonNickname(ewram1C000.pokemon, gStringVar1); - level = GetMonData(ewram1C000.pokemon, MON_DATA_LEVEL); - ConvertIntToDecimalStringN(gStringVar2, level, 0, 3); - StringExpandPlaceholders(gStringVar4, gOtherText_ElevatedTo); - sub_806E834(gStringVar4, 1); - CreateTask(Task_RareCandy1, 5); - } -} - -void Task_RareCandy1(u8 taskId) -{ - if (WaitFanfare(0) && gUnknown_0202E8F6 == 0) - { - if ((gMain.newKeys & A_BUTTON) || (gMain.newKeys & B_BUTTON)) - { - PlaySE(SE_SELECT); - sub_8070848(taskId); - gTasks[taskId].func = Task_RareCandy2; - } - } -} - -void Task_RareCandy2(u8 taskId) -{ - if ((gMain.newKeys & A_BUTTON) || (gMain.newKeys & B_BUTTON)) - { - PlaySE(SE_SELECT); - sub_8070968(taskId); - gTasks[taskId].func = Task_RareCandy3; - } -} - -#if ENGLISH -void sub_8070848(u8 taskId) -{ - u8 i; - - MenuDrawTextWindow(11, 0, 29, 7); - - for (i = 0; i < DATA_COUNT; i++) - { - u8 x; - u8 y; - u32 stat; - - stat = GetMonData(ewram1C000.pokemon, gUnknown_08376D1C[i]); - - ewram1B000.unk264[i + DATA_COUNT] = stat; - ewram1B000.unk264[i] = stat - ewram1B000.unk264[i]; - - x = (i / 3) * 9 + 11; - y = ((i % 3) << 1) + 1; - - MenuPrint_PixelCoords(gUnknown_08376D04[i], (x + 1) * 8, y * 8, 1); - - if (i == 2) - MenuPrint_PixelCoords(gOtherText_TallPlusAndRightArrow, (x + 6) * 8 + 6, y * 8, 0); - else - MenuPrint_PixelCoords(gOtherText_TallPlusAndRightArrow, (x + 6) * 8 + 6, y * 8, 1); - - gStringVar1[0] = EXT_CTRL_CODE_BEGIN; - gStringVar1[1] = 0x14; - gStringVar1[2] = 0x06; - - ConvertIntToDecimalStringN(gStringVar1 + 3, ewram1B000.unk264[i], 1, 2); - - MenuPrint_PixelCoords(gStringVar1, (x + 6) * 8 + 12, y * 8, 0); - } -} -#elif GERMAN -__attribute__((naked)) -void sub_8070848(u8 taskId) { - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r10\n\ - mov r6, r9\n\ - mov r5, r8\n\ - push {r5-r7}\n\ - movs r0, 0xB\n\ - movs r1, 0\n\ - movs r2, 0x1D\n\ - movs r3, 0x7\n\ - bl MenuDrawTextWindow\n\ - movs r7, 0\n\ - ldr r0, _0807092C @ =gStringVar1\n\ - mov r10, r0\n\ - movs r1, 0xFC\n\ - mov r9, r1\n\ - movs r2, 0x13\n\ - mov r8, r2\n\ -_0807086C:\n\ - ldr r1, _08070930 @ =0x0201c000\n\ - ldr r0, [r1]\n\ - ldr r1, _08070934 @ =gUnknown_08376D1C\n\ - adds r1, r7, r1\n\ - ldrb r1, [r1]\n\ - bl GetMonData\n\ - adds r1, r7, 0x6\n\ - lsls r1, 1\n\ - ldr r2, _08070938 @ =0x0201b264\n\ - adds r1, r2, r1\n\ - strh r0, [r1]\n\ - lsls r6, r7, 1\n\ - adds r6, r2, r6\n\ - ldrh r1, [r6]\n\ - subs r0, r1\n\ - strh r0, [r6]\n\ - adds r0, r7, 0\n\ - movs r1, 0x3\n\ - bl __udivsi3\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - lsls r4, r0, 3\n\ - adds r4, r0\n\ - adds r4, 0xB\n\ - lsls r4, 24\n\ - lsrs r4, 24\n\ - adds r0, r7, 0\n\ - movs r1, 0x3\n\ - bl __umodsi3\n\ - adds r5, r0, 0\n\ - lsls r5, 1\n\ - adds r5, 0x1\n\ - lsls r5, 24\n\ - lsrs r5, 24\n\ - ldr r1, _0807093C @ =gUnknown_08376D04\n\ - lsls r0, r7, 2\n\ - adds r0, r1\n\ - ldr r1, [r0]\n\ - mov r0, r10\n\ - bl StringCopy\n\ - adds r2, r0, 0\n\ - mov r0, r9\n\ - strb r0, [r2]\n\ - adds r2, 0x1\n\ - mov r1, r8\n\ - strb r1, [r2]\n\ - adds r2, 0x1\n\ - movs r0, 0x2E\n\ - strb r0, [r2]\n\ - adds r2, 0x1\n\ - adds r0, r2, 0\n\ - ldr r1, _08070940 @ =gOtherText_TallPlusAndRightArrow\n\ - bl StringCopy\n\ - adds r2, r0, 0\n\ - mov r0, r9\n\ - strb r0, [r2]\n\ - adds r2, 0x1\n\ - mov r1, r8\n\ - strb r1, [r2]\n\ - adds r2, 0x1\n\ - movs r0, 0x34\n\ - strb r0, [r2]\n\ - adds r2, 0x1\n\ - movs r0, 0\n\ - ldrsh r1, [r6, r0]\n\ - adds r0, r2, 0\n\ - movs r2, 0x1\n\ - movs r3, 0x2\n\ - bl ConvertIntToDecimalStringN\n\ - adds r4, 0x1\n\ - lsls r4, 24\n\ - lsrs r4, 24\n\ - mov r0, r10\n\ - adds r1, r4, 0\n\ - adds r2, r5, 0\n\ - bl MenuPrint\n\ - adds r0, r7, 0x1\n\ - lsls r0, 24\n\ - lsrs r7, r0, 24\n\ - cmp r7, 0x5\n\ - bls _0807086C\n\ - pop {r3-r5}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - mov r10, r5\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_0807092C: .4byte gStringVar1\n\ -_08070930: .4byte 0x0201c000\n\ -_08070934: .4byte gUnknown_08376D1C\n\ -_08070938: .4byte 0x0201b264\n\ -_0807093C: .4byte gUnknown_08376D04\n\ -_08070940: .4byte gOtherText_TallPlusAndRightArrow\n\ - .syntax divided\n"); -} -#endif diff --git a/src/pokemon/learn_move.c b/src/pokemon/learn_move.c new file mode 100644 index 000000000..33252c66b --- /dev/null +++ b/src/pokemon/learn_move.c @@ -0,0 +1,1081 @@ +#include "global.h" +#include "data2.h" +#include "field_fadetransition.h" +#include "main.h" +#include "menu.h" +#include "menu_cursor.h" +#include "palette.h" +#include "pokemon.h" +#include "overworld.h" +#include "script.h" +#include "songs.h" +#include "sound.h" +#include "sprite.h" +#include "string_util.h" +#include "strings.h" +#include "strings2.h" +#include "task.h" +#include "trig.h" + +extern u8 ewram[]; +extern u16 gSpecialVar_0x8004; +extern u16 gSpecialVar_0x8005; +extern u8 gTileBuffer[]; + +struct ContestMove +{ + u8 effect; + u8 contestCategory:3; + u8 comboStarterId; + u8 comboMoves[4]; +}; + +struct ContestEffect +{ + u8 effectType; + u8 appeal; + u8 jam; +}; + +extern const struct ContestMove gContestMoves[]; +extern const struct ContestEffect gContestEffects[]; +extern const struct WindowConfig gWindowConfig_81E6CE4; +extern const struct WindowConfig gWindowConfig_81E7240; +extern const u8 *const gUnknown_083CADD4[]; +extern const u8 *const gMoveDescriptions[]; +extern const u8 gTypeNames[][7]; +extern const u8 *const gUnknown_083CAF70[]; + +#ifdef GERMAN +extern const u8 deuOtherText_ForgotAndLearned[]; +#endif + +extern void sub_809D9F0(struct Pokemon *, u8, u8, void *, u32); + +struct LearnMoveStruct +{ + u8 state; + u8 filler1; + u8 unk2; + u8 spriteIDs[20]; + u8 filler17[1]; + u8 unk18; + u8 unk19; + u8 numMenuChoices; + u8 menuSelection; + u8 unk1C; + bool8 unk1D; + u8 unk1E; + u8 filler1F; + /*0x020*/ u16 movesToLearn[20]; + u8 filler48[0x52-0x48]; + u8 moveNames[6][0x19]; + u8 fillerE8[0x2C3-0xE8]; + bool8 unk2C3; + bool8 showContestInfo; + /*0x2C5*/ u8 partyMon; + u8 unk2C6; +}; + +static struct LearnMoveStruct *sLearnMoveStruct; + +const u16 gDexArrows_Pal[] = INCBIN_U16("graphics/pokedex/arrows.gbapal"); + +const u8 gDexArrows_Gfx[] = INCBIN_U8("graphics/pokedex/arrows.4bpp"); + +const u8 gUnknown_08402CF8[][4] = +{ + { 0, 0, 9, 13}, + {10, 0, 29, 7}, + { 2, 14, 27, 19}, + {10, 8, 29, 13}, +}; + +struct UnknownStruct1 +{ + const u8 *unk0; + u8 unk4; + u8 unk5; + u8 unk6; +}; + +const struct UnknownStruct1 gUnknown_08402D08[][4] = +{ + { + {OtherText_Battle, 1, 1, 0}, + {OtherText_Power, 1, 4, 1}, + {OtherText_Accuracy, 1, 9, 2}, + {NULL, 0, 0, 0}, + }, + { + {OtherText_Contest, 1, 1, 0}, + {OtherText_Appeal, 1, 4, 1}, + {OtherText_Jam, 1, 9, 2}, + {NULL, 0, 0, 0}, + }, +}; + +// XXX: What are these for? +const u32 unkDataFF00FFEF = 0xFF00FFEF; +const u8 *const gTileBuffer_ = gTileBuffer; + +const struct OamData gOamData_8402D50 = {.shape = 0}; +const struct OamData gOamData_8402D58 = {.shape = 2}; +const struct OamData gOamData_8402D60 = {.shape = 1}; + +const union AnimCmd gSpriteAnim_8402D68[] = +{ + ANIMCMD_FRAME(2, 5), + ANIMCMD_END, +}; + +const union AnimCmd gSpriteAnim_8402D70[] = +{ + ANIMCMD_FRAME(0, 5), + ANIMCMD_END, +}; + +const union AnimCmd *const gSpriteAnimTable_8402D78[] = +{ + gSpriteAnim_8402D68, + gSpriteAnim_8402D70, +}; + +const struct SpriteSheet gUnknown_08402D80 = {gDexArrows_Gfx, sizeof(gDexArrows_Gfx), 5525}; +const struct SpritePalette gUnknown_08402D88 = {gDexArrows_Pal, 5526}; + +void sub_8133300(struct Sprite *); +const struct SpriteTemplate gSpriteTemplate_8402D90 = +{ + .tileTag = 5525, + .paletteTag = 5526, + .oam = &gOamData_8402D58, + .anims = gSpriteAnimTable_8402D78, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_8133300, +}; + +const union AnimCmd gSpriteAnim_8402DA8[] = +{ + ANIMCMD_FRAME(4, 5), + ANIMCMD_END, +}; + +const union AnimCmd gSpriteAnim_8402DB0[] = +{ + ANIMCMD_FRAME(6, 5), + ANIMCMD_END, +}; + +const union AnimCmd *const gSpriteAnimTable_8402DB8[] = +{ + gSpriteAnim_8402DA8, + gSpriteAnim_8402DB0, +}; + +const struct SpriteTemplate gSpriteTemplate_8402DC0 = +{ + .tileTag = 5525, + .paletteTag = 5526, + .oam = &gOamData_8402D60, + .anims = gSpriteAnimTable_8402DB8, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_8133300, +}; + +const union AnimCmd gSpriteAnim_8402DD8[] = +{ + ANIMCMD_FRAME(8, 5), + ANIMCMD_END, +}; + +const union AnimCmd gSpriteAnim_8402DE0[] = +{ + ANIMCMD_FRAME(9, 5), + ANIMCMD_END, +}; + +const union AnimCmd gSpriteAnim_8402DE8[] = +{ + ANIMCMD_FRAME(10, 5), + ANIMCMD_END, +}; + +const union AnimCmd gSpriteAnim_8402DF0[] = +{ + ANIMCMD_FRAME(11, 5), + ANIMCMD_END, +}; + +const union AnimCmd *const gSpriteAnimTable_8402DF8[] = +{ + gSpriteAnim_8402DD8, + gSpriteAnim_8402DE0, + gSpriteAnim_8402DE8, + gSpriteAnim_8402DF0, +}; + +const struct SpriteTemplate gSpriteTemplate_8402E08 = +{ + .tileTag = 5525, + .paletteTag = 5526, + .oam = &gOamData_8402D50, + .anims = gSpriteAnimTable_8402DF8, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_8133300, +}; + +const u8 gString_AkitoMori[] = _("あきと"); // programmer Akito Mori? + +void sub_813269C(u8); +void CB2_InitLearnMove(void); +void CB2_LearnMove(void); +void LearnMoveMain(void); +void DrawLearnMoveMenuWindow(void); +void sub_8133030(bool8); +u8 sub_81330E8(void); +void sub_8133140(u8); +u8 sub_8133248(void); +void ClearLearnMoveVars(void); +void sub_8133358(void); +void sub_8133558(void); +void sub_813362C(void); +void sub_8133800(void); +void sub_8133AEC(bool8, int); +void sub_8133CA4(void); + +void VBlankCB_LearnMove(void) +{ + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); +} + +void sub_8132670(void) +{ + ScriptContext2_Enable(); + CreateTask(sub_813269C, 10); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); +} + +void sub_813269C(u8 taskId) +{ + if (!gPaletteFade.active) + { + SetMainCallback2(CB2_InitLearnMove); + gFieldCallback = sub_8080990; + DestroyTask(taskId); + } +} + +void CB2_InitLearnMove(void) +{ + REG_DISPCNT = 0; + ResetSpriteData(); + FreeAllSpritePalettes(); + ResetTasks(); + sLearnMoveStruct = (struct LearnMoveStruct *)(ewram + 0x17000); + ClearLearnMoveVars(); + sLearnMoveStruct->partyMon = gSpecialVar_0x8004; + sub_8133558(); + SetVBlankCallback(VBlankCB_LearnMove); + + SetUpWindowConfig(&gWindowConfig_81E7240); + InitMenuWindow(&gWindowConfig_81E7240); + MenuZeroFillScreen(); + + SetUpWindowConfig(&gWindowConfig_81E6CE4); + InitMenuWindow(&gWindowConfig_81E6CE4); + MenuZeroFillScreen(); + + REG_BG0VOFS = 0; + REG_BG0VOFS = 0; // huh? + REG_BG1HOFS = 0; + REG_BG1HOFS = 0; // huh? + + LoadSpriteSheet(&gUnknown_08402D80); + LoadSpritePalette(&gUnknown_08402D88); + sub_8133358(); + FillPalette(0, 0, 2); + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); + SetMainCallback2(CB2_LearnMove); +} + +void sub_81327A4(void) +{ + ResetSpriteData(); + FreeAllSpritePalettes(); + ResetTasks(); + sLearnMoveStruct = (struct LearnMoveStruct *)(ewram + 0x17000); + sub_8133558(); + sLearnMoveStruct->unk2C6 = gSpecialVar_0x8005; + SetVBlankCallback(VBlankCB_LearnMove); + + SetUpWindowConfig(&gWindowConfig_81E7240); + InitMenuWindow(&gWindowConfig_81E7240); + MenuZeroFillScreen(); + + SetUpWindowConfig(&gWindowConfig_81E6CE4); + InitMenuWindow(&gWindowConfig_81E6CE4); + MenuZeroFillScreen(); + + REG_DISPCNT = 0x1340; + REG_BG0VOFS = 0; + REG_BG0HOFS = 0; + REG_BG1HOFS = 0; + REG_BG1HOFS = 0; // huh? + + LoadSpriteSheet(&gUnknown_08402D80); + LoadSpritePalette(&gUnknown_08402D88); + sub_8133358(); + FillPalette(0, 0, 2); + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); + SetMainCallback2(CB2_LearnMove); +} + +void CB2_LearnMove(void) +{ + LearnMoveMain(); + if (sLearnMoveStruct->unk1D) + { + sLearnMoveStruct->unk1D = FALSE; + sub_814AD7C(0x58, (sLearnMoveStruct->unk18 * 2 + 1) * 8); + } + if (sLearnMoveStruct->unk1E != 0) + { + sLearnMoveStruct->unk1E = 0; + sub_8133800(); + } + if (sLearnMoveStruct->unk2C3) + { + sub_8133AEC(sLearnMoveStruct->showContestInfo, 1); + sLearnMoveStruct->unk2C3 = FALSE; + } + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +void sub_81328E8(const u8 *a) +{ + StringExpandPlaceholders(gStringVar4, a); + MenuPrintMessage(gStringVar4, 3, 15); +} + +void LearnMoveMain(void) +{ + switch (sLearnMoveStruct->state) + { + case 0: + sLearnMoveStruct->state++; + DrawLearnMoveMenuWindow(); + sub_8133030(FALSE); + sub_8133800(); + gSprites[1].pos1.x = 0x48; + sLearnMoveStruct->unk2C3 = TRUE; + BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0); + REG_DISPCNT = 0x1340; + break; + case 1: + if (!gPaletteFade.active) + sLearnMoveStruct->state = 4; + break; + case 2: + sLearnMoveStruct->state++; + break; + case 3: + sub_8133030(FALSE); + sub_8133800(); + sLearnMoveStruct->unk2C3 = TRUE; + sLearnMoveStruct->state++; + gSprites[1].pos1.x = 0x48; + break; + case 4: + if (sub_81330E8() == 0) + sub_813362C(); + return; + case 5: + sub_8133140(0); + sub_8133800(); + sLearnMoveStruct->unk2C3 = TRUE; + gSprites[1].pos1.x = 0x48; + sLearnMoveStruct->state++; + break; + case 6: + if (sub_8133248() == 0) + sub_813362C(); + break; + case 8: + if (MenuUpdateWindowText()) + { + DisplayYesNoMenu(21, 7, 1); + sLearnMoveStruct->state++; + } + break; + case 9: + { + s8 selection = ProcessMenuInputNoWrap_(); + + if (selection == 0) + { + sub_8133CA4(); + if (GiveMoveToMon(&gPlayerParty[sLearnMoveStruct->partyMon], sLearnMoveStruct->movesToLearn[sLearnMoveStruct->menuSelection]) != 0xFFFF) + { + sub_81328E8(gOtherText_PokeLearnedMove); + gSpecialVar_0x8004 = 1; + sLearnMoveStruct->state = 31; + } + else + { + sLearnMoveStruct->state = 16; + } + } + else if (selection == -1 || selection == 1) + { + sub_8133CA4(); + if (sLearnMoveStruct->showContestInfo == FALSE) + sLearnMoveStruct->state = 3; + if (sLearnMoveStruct->showContestInfo == TRUE) + sLearnMoveStruct->state = 5; + } + } + break; + case 12: + if (MenuUpdateWindowText()) + { + DisplayYesNoMenu(21, 7, 1); + sLearnMoveStruct->state++; + } + break; + case 13: + { + s8 selection = ProcessMenuInputNoWrap_(); + + if (selection == 0) + { + sub_8133CA4(); + gSpecialVar_0x8004 = selection; + sLearnMoveStruct->state = 14; + } + else if (selection == -1 || selection == 1) + { + sub_8133CA4(); + if (sLearnMoveStruct->showContestInfo == FALSE) + sLearnMoveStruct->state = 3; + if (sLearnMoveStruct->showContestInfo == TRUE) + sLearnMoveStruct->state = 5; + } + } + break; + case 16: + sub_81328E8(gOtherText_DeleteOlderMove); + sLearnMoveStruct->state++; + break; + case 17: + if (MenuUpdateWindowText()) + { + DisplayYesNoMenu(21, 7, 1); + sLearnMoveStruct->state = 18; + } + break; + case 18: + { + s8 var = ProcessMenuInputNoWrap_(); + + if (var == 0) + { + sub_8133CA4(); + sub_81328E8(gOtherText_WhichMoveToForget); + sLearnMoveStruct->state = 19; + } + else if (var == -1 || var == 1) + { + sub_8133CA4(); + sLearnMoveStruct->state = 24; + } + } + break; + case 24: + sub_81328E8(gOtherText_StopLearningMove); + sLearnMoveStruct->state++; + break; + case 25: + if (MenuUpdateWindowText()) + { + sLearnMoveStruct->state = 26; + DisplayYesNoMenu(21, 7, 1); + } + break; + case 26: + { + s8 var = ProcessMenuInputNoWrap_(); + + if (var == 0) + { + sub_8133CA4(); + sLearnMoveStruct->state = 27; + } + else if (var == -1 || var == 1) + { + sub_8133CA4(); + + // What's the point? It gets set to 16, anyway. + if (sLearnMoveStruct->showContestInfo == FALSE) + sLearnMoveStruct->state = 3; + if (sLearnMoveStruct->showContestInfo == TRUE) + sLearnMoveStruct->state = 5; + sLearnMoveStruct->state = 16; + } + } + break; + case 27: + if (MenuUpdateWindowText()) + { + if (sLearnMoveStruct->showContestInfo == FALSE) + sLearnMoveStruct->state = 3; + if (sLearnMoveStruct->showContestInfo == TRUE) + sLearnMoveStruct->state = 5; + } + break; + case 19: + if (MenuUpdateWindowText()) + { + sLearnMoveStruct->state = 20; + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); + } + break; + case 20: + if (!gPaletteFade.active) + { + sub_809D9F0(gPlayerParty, sLearnMoveStruct->partyMon, gPlayerPartyCount - 1, sub_81327A4, sLearnMoveStruct->movesToLearn[sLearnMoveStruct->menuSelection]); + sLearnMoveStruct->state = 28; + } + break; + case 21: + if (MenuUpdateWindowText()) + sLearnMoveStruct->state = 14; + break; + case 22: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0); + break; + case 14: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); + sLearnMoveStruct->state++; + break; + case 15: + if (!gPaletteFade.active) + SetMainCallback2(c2_exit_to_overworld_2_switch); + break; + case 28: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0); + sLearnMoveStruct->state++; + DrawLearnMoveMenuWindow(); + sub_8133800(); + if (sLearnMoveStruct->showContestInfo == FALSE) + sub_8133030(TRUE); + if (sLearnMoveStruct->showContestInfo == TRUE) + { + gSprites[1].pos1.x = 0x48; + sub_8133140(1); + } + sub_8133AEC(sLearnMoveStruct->showContestInfo, 1); + break; + case 29: + if (!gPaletteFade.active) + { + if (sLearnMoveStruct->unk2C6 == 4) + { + sLearnMoveStruct->state = 24; + } + else + { + u16 moveId = GetMonData(&gPlayerParty[sLearnMoveStruct->partyMon], MON_DATA_MOVE1 + sLearnMoveStruct->unk2C6); + + StringCopy(gStringVar3, gMoveNames[moveId]); + RemoveMonPPBonus(&gPlayerParty[sLearnMoveStruct->partyMon], sLearnMoveStruct->unk2C6); + SetMonMoveSlot(&gPlayerParty[sLearnMoveStruct->partyMon], sLearnMoveStruct->movesToLearn[sLearnMoveStruct->menuSelection], sLearnMoveStruct->unk2C6); + StringCopy(gStringVar2, gMoveNames[sLearnMoveStruct->movesToLearn[sLearnMoveStruct->menuSelection]]); + sub_81328E8(gOtherText_ForgotMove123); + sLearnMoveStruct->state = 30; + gSpecialVar_0x8004 = 1; + } + } + break; + case 30: + if (MenuUpdateWindowText()) + { +#ifdef ENGLISH + sub_81328E8(gOtherText_ForgotOrDidNotLearnMove); +#else + sub_81328E8(deuOtherText_ForgotAndLearned); +#endif + sLearnMoveStruct->state = 31; + PlayFanfare(BGM_FANFA1); + } + break; + case 31: + if (MenuUpdateWindowText()) + { + PlayFanfare(BGM_FANFA1); + sLearnMoveStruct->state = 32; + } + break; + case 32: + if (IsFanfareTaskInactive()) + sLearnMoveStruct->state = 33; + break; + case 33: + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + sLearnMoveStruct->state = 14; + } + break; + } +} + +void DrawLearnMoveMenuWindow(void) +{ + u32 i; + + BasicInitMenuWindow(&gWindowConfig_81E7240); + for (i = 0; i < 4; i++) + { + MenuDrawTextWindow( + gUnknown_08402CF8[i][0], + gUnknown_08402CF8[i][1], + gUnknown_08402CF8[i][2], + gUnknown_08402CF8[i][3]); + } + BasicInitMenuWindow(&gWindowConfig_81E6CE4); +} + +void sub_8133030(bool8 a) +{ + s32 i; + + gSprites[sLearnMoveStruct->spriteIDs[0]].invisible = FALSE; + gSprites[sLearnMoveStruct->spriteIDs[1]].invisible = FALSE; + + for (i = 0; i < 16; i++) + gSprites[sLearnMoveStruct->spriteIDs[i + 4]].invisible = TRUE; + + for (i = 0; gUnknown_08402D08[0][i].unk0 != NULL; i++) + { + sub_8072C74(gTileBuffer, gUnknown_08402D08[0][i].unk0, 64, 2); + MenuPrint(gTileBuffer, gUnknown_08402D08[0][i].unk4, gUnknown_08402D08[0][i].unk5); + } + + if (!a) + sub_8072AB0(gOtherText_TeachWhichMove, 24, 120, 192, 32, 1); +} + +u8 sub_81330E8(void) +{ + u32 result = (gMain.newKeys & DPAD_LEFT) || (gMain.newKeys & DPAD_RIGHT); + + if (gSaveBlock2.optionsButtonMode == OPTIONS_BUTTON_MODE_LR + && ((gMain.newKeys & L_BUTTON) || (gMain.newKeys & R_BUTTON))) + result++; + + if (result != 0) + { + PlaySE(SE_SELECT); + sLearnMoveStruct->state = 5; + sLearnMoveStruct->showContestInfo = TRUE; + } + + return result; +} + +void sub_8133140(bool8 a) +{ + s32 i; + + gSprites[sLearnMoveStruct->spriteIDs[0]].invisible = FALSE; + gSprites[sLearnMoveStruct->spriteIDs[1]].invisible = FALSE; + + for (i = 0; i < 16; i++) + gSprites[sLearnMoveStruct->spriteIDs[i + 4]].invisible = FALSE; + + for (i = 0; gUnknown_08402D08[0][i].unk0 != NULL; i++) + { + sub_8072C74(gTileBuffer, gUnknown_08402D08[1][i].unk0, 64, 2); + MenuPrint(gTileBuffer, gUnknown_08402D08[1][i].unk4, gUnknown_08402D08[1][i].unk5); + if (i != 0) + { + MenuZeroFillWindowRect( + gUnknown_08402D08[1][i].unk4, + gUnknown_08402D08[1][i].unk5 + 2, + gUnknown_08402D08[1][i].unk4 + 7, + gUnknown_08402D08[1][i].unk5 + 3); + } + } + + if (!a) + sub_8072AB0(gOtherText_TeachWhichMove, 24, 120, 192, 32, 1); +} + +u8 sub_8133248(void) +{ + u32 result = (gMain.newKeys & DPAD_LEFT) || (gMain.newKeys & DPAD_RIGHT); + + if (gSaveBlock2.optionsButtonMode == OPTIONS_BUTTON_MODE_LR + && ((gMain.newKeys & L_BUTTON) || (gMain.newKeys & R_BUTTON))) + result++; + + if (result != 0) + { + PlaySE(SE_SELECT); + sLearnMoveStruct->state = 3; + sLearnMoveStruct->showContestInfo = FALSE; + } + + return result; +} + +void ClearLearnMoveVars(void) +{ + s32 i; + + sLearnMoveStruct->state = 0; + sLearnMoveStruct->unk2 = 0; + sLearnMoveStruct->unk19 = 0; + sLearnMoveStruct->unk18 = 0; + sLearnMoveStruct->unk1C = 0; + sLearnMoveStruct->numMenuChoices = 0; + sLearnMoveStruct->menuSelection = 0; + sLearnMoveStruct->unk1D = FALSE; + sLearnMoveStruct->unk1E = 0; + sLearnMoveStruct->unk2C3 = FALSE; + sLearnMoveStruct->showContestInfo = FALSE; + for (i = 0; i < 20; i++) + sLearnMoveStruct->movesToLearn[i] = 0; +} + +void sub_8133300(struct Sprite *sprite) +{ + s16 var = (sprite->data1 * 10) & 0xFF; + + switch (sprite->data0) + { + case 0: + break; + case 1: + sprite->pos2.x = Sin(var, 3) * sprite->data2; + break; + case 2: + sprite->pos2.y = Sin(var, 1) * sprite->data2; + break; + } + sprite->data1++; +} + +void sub_8133358(void) +{ + s32 i; + + sLearnMoveStruct->spriteIDs[0] = CreateSprite(&gSpriteTemplate_8402D90, 8, 16, 0); + gSprites[sLearnMoveStruct->spriteIDs[0]].data0 = 1; + gSprites[sLearnMoveStruct->spriteIDs[0]].data2 = -1; + + sLearnMoveStruct->spriteIDs[1] = CreateSprite(&gSpriteTemplate_8402D90, 72, 16, 0); + StartSpriteAnim(&gSprites[sLearnMoveStruct->spriteIDs[1]], 1); + gSprites[sLearnMoveStruct->spriteIDs[1]].data0 = 1; + gSprites[sLearnMoveStruct->spriteIDs[1]].data2 = 1; + + sLearnMoveStruct->spriteIDs[2] = CreateSprite(&gSpriteTemplate_8402DC0, 160, 4, 0); + StartSpriteAnim(&gSprites[sLearnMoveStruct->spriteIDs[2]], 1); + gSprites[sLearnMoveStruct->spriteIDs[2]].data0 = 2; + gSprites[sLearnMoveStruct->spriteIDs[2]].data2 = -1; + + sLearnMoveStruct->spriteIDs[3] = CreateSprite(&gSpriteTemplate_8402DC0, 160, 60, 0); + gSprites[sLearnMoveStruct->spriteIDs[3]].data0 = 2; + gSprites[sLearnMoveStruct->spriteIDs[3]].data2 = 1; + + for (i = 0; i < 8; i++) + { + sLearnMoveStruct->spriteIDs[i + 4] = CreateSprite(&gSpriteTemplate_8402E08, (i - (i / 4) * 4) * 8 + 0x1C, (i / 4) * 8 + 0x34, 0); + StartSpriteAnim(&gSprites[sLearnMoveStruct->spriteIDs[i + 4]], 2); + } + + for (i = 0; i < 8; i++) + { + sLearnMoveStruct->spriteIDs[i + 12] = CreateSprite(&gSpriteTemplate_8402E08, (i - (i / 4) * 4) * 8 + 0x1C, (i / 4) * 8 + 0x5C, 0); + StartSpriteAnim(&gSprites[sLearnMoveStruct->spriteIDs[i + 12]], 2); + } + + for (i = 0; i < 20; i++) + gSprites[sLearnMoveStruct->spriteIDs[i]].invisible = TRUE; + + CreateBlendedOutlineCursor(16, 0xFFFF, 12, 0x2D9F, 18); +} + +void sub_8133558(void) +{ + s32 i; + u8 nickname[POKEMON_NAME_LENGTH + 1]; + + sLearnMoveStruct->numMenuChoices = GetMoveRelearnerMoves(&gPlayerParty[sLearnMoveStruct->partyMon], sLearnMoveStruct->movesToLearn); + for (i = 0; i < sLearnMoveStruct->numMenuChoices; i++) + StringCopy(sLearnMoveStruct->moveNames[i], gMoveNames[sLearnMoveStruct->movesToLearn[i]]); + GetMonData(&gPlayerParty[sLearnMoveStruct->partyMon], MON_DATA_NICKNAME, nickname); + StringCopy10(gStringVar1, nickname); + StringCopy(sLearnMoveStruct->moveNames[sLearnMoveStruct->numMenuChoices], gUnknownText_Exit); + sLearnMoveStruct->numMenuChoices++; +} + +void sub_813360C(s8 delta) +{ + sLearnMoveStruct->unk1C = sLearnMoveStruct->unk18; + sLearnMoveStruct->unk18 += delta; + sLearnMoveStruct->unk1D = TRUE; +} + +void sub_813362C(void) +{ + if (gMain.newAndRepeatedKeys & DPAD_UP) + { + if (sLearnMoveStruct->menuSelection != 0) + { + PlaySE(SE_SELECT); + sLearnMoveStruct->menuSelection--; + sLearnMoveStruct->unk2C3 = TRUE; + if (sLearnMoveStruct->unk18 != 0) + { + sub_813360C(-1); + } + else if (sLearnMoveStruct->unk19 != 0) + { + sLearnMoveStruct->unk19--; + sLearnMoveStruct->unk1E++; + } + } + } + else if (gMain.newAndRepeatedKeys & DPAD_DOWN) + { + if (sLearnMoveStruct->menuSelection < sLearnMoveStruct->numMenuChoices - 1) + { + PlaySE(SE_SELECT); + sLearnMoveStruct->menuSelection++; + sLearnMoveStruct->unk2C3 = TRUE; + if (sLearnMoveStruct->unk18 != 2) + { + sub_813360C(1); + } + else if (sLearnMoveStruct->unk19 != sLearnMoveStruct->numMenuChoices - 3) + { + sLearnMoveStruct->unk19++; + sLearnMoveStruct->unk1E++; + } + } + } + else if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + if (sLearnMoveStruct->menuSelection != sLearnMoveStruct->numMenuChoices - 1) + { + sLearnMoveStruct->state = 8; + StringCopy(gStringVar2, sLearnMoveStruct->moveNames[sLearnMoveStruct->menuSelection]); + StringExpandPlaceholders(gStringVar4, gOtherText_TeachSpecificMove); + MenuPrintMessage(gStringVar4, 3, 15); + } + else + { + StringExpandPlaceholders(gStringVar4, gOtherText_GiveUpTeachingMove); + MenuPrintMessage(gStringVar4, 3, 15); + sLearnMoveStruct->state = 12; + } + } + else if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + sLearnMoveStruct->state = 12; + StringExpandPlaceholders(gStringVar4, gOtherText_GiveUpTeachingMove); + MenuPrintMessage(gStringVar4, 3, 15); + } + if (sLearnMoveStruct->numMenuChoices > 3) + { + gSprites[2].invisible = FALSE; + gSprites[3].invisible = FALSE; + if (sLearnMoveStruct->unk19 == 0) + gSprites[2].invisible = TRUE; + else if (sLearnMoveStruct->unk19 == sLearnMoveStruct->numMenuChoices - 3) + gSprites[3].invisible = TRUE; + } +} + +void sub_8133800(void) +{ + u8 r6 = sLearnMoveStruct->unk19; + u8 *str = gTileBuffer; + s32 i; + + for (i = 0; i < 3; i++) + { + if (r6 >= sLearnMoveStruct->numMenuChoices) + { + str = sub_8072C74(str, gEmptyString_81E72B0, 0x90, 0); + } + else if (r6 == sLearnMoveStruct->numMenuChoices - 1) + { + str = sub_8072C74(str, gUnknownText_Exit, 0x90, 0); + } + else + { + u16 moveId = sLearnMoveStruct->movesToLearn[r6]; + + if (sLearnMoveStruct->showContestInfo) + str = sub_8072C74(str, gUnknown_083CAF70[gContestMoves[moveId].contestCategory], 0x27, 0); + else + str = sub_8072C74(str, gTypeNames[gBattleMoves[moveId].type], 0x27, 0); + + str = sub_8072C74(str, sLearnMoveStruct->moveNames[r6], 0x72, 0); + + str[0] = CHAR_P; + str[1] = CHAR_P; + str[2] = CHAR_SLASH; + str += 3; + + str = sub_8072C14(str, gBattleMoves[moveId].pp, 0x90, 0); + } + *str++ = CHAR_NEWLINE; + r6++; + } + *str = EOS; + MenuPrint(gTileBuffer, 11, 1); + sub_813360C(0); +} + +const u8 gUnknown_08402E24[7][3] = +{ + {11, 1, 1}, + { 3, 6, 2}, + {24, 1, 3}, + { 3, 11, 4}, + { 5, 4, 5}, + { 3, 6, 6}, + { 3, 11, 7}, +}; + +const u8 gUnknown_08402E39[] = {0, 1, 2, 3}; +const u8 gUnknown_08402E3D[] = {4, 5, 6}; + +void PrintMoveInfo(u16 moveId, const u8 *b) +{ + u8 str[0x34]; + u8 numHearts; + u8 i; + + StringCopy(str, gExpandedPlaceholder_Empty); + switch (b[2]) + { + case 1: + break; + case 2: + if (gBattleMoves[moveId].power < 2) + sub_8072C74(str, gOtherText_ThreeDashes2, 32, 2); + else + sub_8072C14(str, gBattleMoves[moveId].power, 32, 2); + MenuPrint(str, b[0], b[1]); + break; + case 4: + if (gBattleMoves[moveId].accuracy == 0) + sub_8072C74(str, gOtherText_ThreeDashes2, 32, 2); + else + sub_8072C14(str, gBattleMoves[moveId].accuracy, 32, 2); + MenuPrint(str, b[0], b[1]); + break; + case 6: + MenuZeroFillWindowRect(b[0], b[1], b[0], b[1] + 1); + numHearts = gContestEffects[gContestMoves[moveId].effect].appeal / 10; + if (numHearts == 255) + numHearts = 0; + for (i = 0; i < 8; i++) + { + if (i < numHearts) + StartSpriteAnim(&gSprites[sLearnMoveStruct->spriteIDs[i + 4]], 1); + else + StartSpriteAnim(&gSprites[sLearnMoveStruct->spriteIDs[i + 4]], 0); + } + break; + case 7: + MenuZeroFillWindowRect(b[0], b[1], b[0], b[1] + 1); + numHearts = gContestEffects[gContestMoves[moveId].effect].jam / 10; + if (numHearts == 255) + numHearts = 0; + for (i = 0; i < 8; i++) + { + if (i < numHearts) + StartSpriteAnim(&gSprites[sLearnMoveStruct->spriteIDs[i + 12]], 3); + else + StartSpriteAnim(&gSprites[sLearnMoveStruct->spriteIDs[i + 12]], 2); + } + break; + } +} + +void sub_8133AEC(bool8 contestInfo, int unused) +{ + u16 i; + + if (sLearnMoveStruct->menuSelection != sLearnMoveStruct->numMenuChoices - 1) + { + u16 moveId = sLearnMoveStruct->movesToLearn[sLearnMoveStruct->menuSelection]; + + if (contestInfo) + { + for (i = 0; i < 16; i++) + gSprites[sLearnMoveStruct->spriteIDs[i + 4]].invisible = FALSE; + for (i = 0; i < 3; i++) + PrintMoveInfo(moveId, gUnknown_08402E24[gUnknown_08402E3D[i]]); + sub_8072AB0(gUnknown_083CADD4[gContestMoves[moveId].effect], 0x58, 0x48, 0x90, 32, 1); + } + else + { + u8 var; + + for (i = 0; i < 4; i++) + PrintMoveInfo(moveId, gUnknown_08402E24[gUnknown_08402E39[i]]); + var = sub_8072A18(gMoveDescriptions[moveId - 1], 0x58, 0x48, 0x90, 1); + if (var < 2) + { + u8 r1 = var * 2 + 9; + + MenuFillWindowRectWithBlankTile(11, r1, 28, 12); + } + } + } + else + { + if (contestInfo) + { + MenuZeroFillWindowRect(gUnknown_08402E24[5][0], gUnknown_08402E24[5][1], gUnknown_08402E24[5][0], gUnknown_08402E24[5][1] + 1); + MenuZeroFillWindowRect(gUnknown_08402E24[6][0], gUnknown_08402E24[6][1], gUnknown_08402E24[6][0], gUnknown_08402E24[6][1] + 1); + for (i = 0; i < 16; i++) + gSprites[sLearnMoveStruct->spriteIDs[i + 4]].invisible = TRUE; + } + else + { + MenuZeroFillWindowRect(gUnknown_08402E24[1][0], gUnknown_08402E24[1][1], gUnknown_08402E24[1][0] + 3, gUnknown_08402E24[1][1] + 1); + MenuZeroFillWindowRect(gUnknown_08402E24[3][0], gUnknown_08402E24[3][1], gUnknown_08402E24[3][0] + 3, gUnknown_08402E24[3][1] + 1); + } + MenuZeroFillWindowRect(11, 9, 28, 12); + } +} + +void sub_8133CA4(void) +{ + MenuZeroFillWindowRect(21, 7, 27, 12); + sub_8133AEC(sLearnMoveStruct->showContestInfo, 0); +} diff --git a/src/mail.c b/src/pokemon/mail.c similarity index 99% rename from src/mail.c rename to src/pokemon/mail.c index 658d37976..c5dd119e3 100644 --- a/src/mail.c +++ b/src/pokemon/mail.c @@ -8,7 +8,7 @@ #include "name_string_util.h" #include "palette.h" #include "pokemon_icon.h" -#include "rom4.h" +#include "overworld.h" #include "sprite.h" #include "string_util.h" #include "strings2.h" @@ -92,7 +92,7 @@ void HandleReadMail(struct MailStruct *arg0, MainCallback arg1, bool8 arg2) ewram0.varFF = GAME_LANGUAGE; ewram0.var100 = 1; - ewram0.var104 = (MainCallback)sub_80EB3FC; + ewram0.var104 = (MainCallback)EasyChat_GetWordText; ewram0.var108 = (MainCallback)ConvertEasyChatWordsToString; mailDesign = arg0->itemId - ITEM_ORANGE_MAIL; diff --git a/src/mail_data.c b/src/pokemon/mail_data.c similarity index 100% rename from src/mail_data.c rename to src/pokemon/mail_data.c diff --git a/src/pokemon/mon_markings.c b/src/pokemon/mon_markings.c new file mode 100644 index 000000000..0cad8db59 --- /dev/null +++ b/src/pokemon/mon_markings.c @@ -0,0 +1,383 @@ +#include "global.h" +#include "main.h" +#include "menu_cursor.h" +#include "text_window.h" +#include "songs.h" +#include "sound.h" +#include "sprite.h" + +#ifdef GERMAN +#define MENU_TEXT_SPRITE_X_OFFSET 24 +#else +#define MENU_TEXT_SPRITE_X_OFFSET 32 +#endif + +struct PokemonMarkMenu +{ + /*0x0000*/ u16 baseTileTag; + /*0x0002*/ u16 basePaletteTag; + /*0x0004*/ u8 markings; // bit flags + /*0x0005*/ s8 cursorPos; + /*0x0006*/ bool8 markingsArray[4]; + /*0x000A*/ u8 cursorBaseY; + /*0x000B*/ bool8 spriteSheetLoadRequired; + /*0x000C*/ struct Sprite *menuWindowSprites[2]; // upper and lower halves of menu window + /*0x0014*/ struct Sprite *menuMarkingSprites[4]; + /*0x0024*/ struct Sprite *menuTextSprite; + /*0x0028*/ u8 *frameTiles; + /*0x002C*/ u16 *framePalette; + /*0x0030*/ u8 menuWindowSpriteTiles[0x1000]; + /*0x1030*/ u8 filler1030[0x80]; + /*0x10B0*/ u8 tileLoadState; +}; + +extern u8 gPokenavConditionMenuMisc_Gfx[]; +extern u16 gUnknown_08E966B8[]; + +extern u16 gUnknown_083E49F4[]; +extern u8 gUnknown_083E4A14[]; +extern struct OamData gOamData_83E5214; +extern struct OamData gOamData_83E521C; +extern const union AnimCmd *const gSpriteAnimTable_83E5274[]; +extern const union AnimCmd *const gSpriteAnimTable_83E52AC[]; +extern struct OamData gOamData_83E52B4; +extern const union AnimCmd *const gSpriteAnimTable_83E533C[]; + +static EWRAM_DATA struct PokemonMarkMenu *sMenu = NULL; + +void sub_80F761C(s16, s16, u16, u16); +void nullsub_65(struct Sprite *); +void sub_80F78CC(struct Sprite *); +void sub_80F7908(struct Sprite *); +struct Sprite *sub_80F7960(u16, u16, u16 *, u16); + +void sub_80F727C(struct PokemonMarkMenu *ptr) +{ + sMenu = ptr; + sMenu->spriteSheetLoadRequired = FALSE; +} + +void sub_80F728C(void) +{ + const struct FrameGraphics *frame = GetTextWindowFrameGraphics(gSaveBlock2.optionsWindowFrameType); + sMenu->frameTiles = frame->tiles; + sMenu->framePalette = frame->palette; + sMenu->tileLoadState = 0; + CpuFill16(0, sMenu->menuWindowSpriteTiles, sizeof(sMenu->menuWindowSpriteTiles)); +} + +bool8 sub_80F72D4(void) +{ + u16 i; + u8 *dest = sMenu->menuWindowSpriteTiles + sMenu->tileLoadState * 0x100; + + switch (sMenu->tileLoadState) + { + case 0: + CpuFastCopy(sMenu->frameTiles, dest, TILE_SIZE_4BPP); + for (i = 0; i < 6; i++) + { + CpuFastCopy(sMenu->frameTiles + TILE_SIZE_4BPP, dest + TILE_SIZE_4BPP * (i + 1), TILE_SIZE_4BPP); + } + CpuFastCopy(sMenu->frameTiles + TILE_SIZE_4BPP * 2, dest + TILE_SIZE_4BPP * 7, TILE_SIZE_4BPP); + sMenu->tileLoadState++; + break; + default: + CpuFastCopy(sMenu->frameTiles + TILE_SIZE_4BPP * 3, dest, TILE_SIZE_4BPP); + for (i = 0; i < 6; i++) + { + CpuFastCopy(sMenu->frameTiles + TILE_SIZE_4BPP * 4, dest + TILE_SIZE_4BPP * (i + 1), TILE_SIZE_4BPP); + } + CpuFastCopy(sMenu->frameTiles + TILE_SIZE_4BPP * 5, dest + TILE_SIZE_4BPP * 7, TILE_SIZE_4BPP); + sMenu->tileLoadState++; + break; + case 13: + CpuFastCopy(sMenu->frameTiles + TILE_SIZE_4BPP * 6, dest, TILE_SIZE_4BPP); + for (i = 0; i < 6; i++) + { + CpuFastCopy(sMenu->frameTiles + TILE_SIZE_4BPP * 7, dest + TILE_SIZE_4BPP * (i + 1), TILE_SIZE_4BPP); + } + CpuFastCopy(sMenu->frameTiles + TILE_SIZE_4BPP * 8, dest + TILE_SIZE_4BPP * 7, TILE_SIZE_4BPP); + sMenu->tileLoadState++; + return FALSE; + case 14: + return FALSE; + } + + return TRUE; +} + +void sub_80F7404(void) +{ + sub_80F728C(); + while (sub_80F72D4()) + ; +} + +void sub_80F7418(u8 markings, s16 x, s16 y) +{ + u16 i; + sMenu->cursorPos = 0; + sMenu->markings = markings; + for (i = 0; i < 4; i++) + sMenu->markingsArray[i] = (sMenu->markings >> i) & 1; + DestroyMenuCursor(); + sub_80F761C(x, y, sMenu->baseTileTag, sMenu->basePaletteTag); +} + +void sub_80F7470(void) +{ + u16 i; + + for (i = 0; i < 3; i++) + { + FreeSpriteTilesByTag(sMenu->baseTileTag + i); + } + + FreeSpritePaletteByTag(sMenu->basePaletteTag); + FreeSpritePaletteByTag(sMenu->basePaletteTag + 1); + + for (i = 0; i < 2; i++) + { + if (!sMenu->menuWindowSprites[i]) + return; + DestroySprite(sMenu->menuWindowSprites[i]); + } + + for (i = 0; i < 4; i++) + { + if (!sMenu->menuMarkingSprites[i]) + return; + DestroySprite(sMenu->menuMarkingSprites[i]); + } + + DestroyMenuCursor(); + + if (sMenu->menuTextSprite) + DestroySprite(sMenu->menuTextSprite); +} + +bool8 sub_80F7500(void) +{ + u16 i; + struct SpriteSheet sheets[3] = + { + { sMenu->menuWindowSpriteTiles, 0x1000, sMenu->baseTileTag }, + { gPokenavConditionMenuMisc_Gfx, 0x520, sMenu->baseTileTag + 1 }, + { NULL, 0, 0 } + }; + + if (sMenu->spriteSheetLoadRequired) + { + LoadTilesForSpriteSheets(sheets); + sMenu->spriteSheetLoadRequired = FALSE; + } + + if (gMain.newKeys & DPAD_UP) + { + s8 pos; + PlaySE(SE_SELECT); + pos = --sMenu->cursorPos; + if (pos < 0) + sMenu->cursorPos = 5; + return TRUE; + } + + if (gMain.newKeys & DPAD_DOWN) + { + s8 pos; + PlaySE(SE_SELECT); + pos = ++sMenu->cursorPos; + if (pos > 5) + sMenu->cursorPos = 0; + return TRUE; + } + + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + + switch (sMenu->cursorPos) + { + case 4: + sMenu->markings = 0; + for (i = 0; i < 4; i++) + sMenu->markings |= sMenu->markingsArray[i] << i; + return FALSE; + case 5: + return FALSE; + } + + sMenu->markingsArray[sMenu->cursorPos] = !sMenu->markingsArray[sMenu->cursorPos]; + return TRUE; + } + + if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + return FALSE; + } + + return TRUE; +} + +void sub_80F761C(s16 x, s16 y, u16 baseTileTag, u16 basePaletteTag) +{ + u16 i; + u8 spriteId; + + struct SpriteSheet sheets[] = + { + { sMenu->menuWindowSpriteTiles, 0x1000, baseTileTag }, + { gPokenavConditionMenuMisc_Gfx, 0x520, baseTileTag + 1 }, + { NULL, 0 } + }; + + struct SpritePalette palettes[] = + { + { sMenu->framePalette, basePaletteTag }, + { gUnknown_08E966B8, basePaletteTag + 1}, + { NULL, 0 } + }; + + struct SpriteTemplate sprTemplate = + { + baseTileTag, + basePaletteTag, + &gOamData_83E5214, + gSpriteAnimTable_83E52AC, + NULL, + gDummySpriteAffineAnimTable, + nullsub_65, + }; + + sMenu->spriteSheetLoadRequired = TRUE; + AllocTilesForSpriteSheets(sheets); + LoadSpritePalettes(palettes); + + for (i = 0; i < 2; i++) + { + spriteId = CreateSprite(&sprTemplate, x + 32, y + 32, 2); + if (spriteId != 64) + { + sMenu->menuWindowSprites[i] = &gSprites[spriteId]; + StartSpriteAnim(&gSprites[spriteId], i); + } + else + { + sMenu->menuWindowSprites[i] = NULL; + return; + } + } + + sMenu->menuWindowSprites[1]->pos1.y = y + 96; + + sprTemplate.tileTag++; + sprTemplate.paletteTag++; + sprTemplate.anims = gSpriteAnimTable_83E5274; + sprTemplate.callback = sub_80F78CC; + sprTemplate.oam = &gOamData_83E521C; + + for (i = 0; i < 4; i++) + { + spriteId = CreateSprite(&sprTemplate, x + 32, y + 16 + 16 * i, 1); + if (spriteId != 64) + { + sMenu->menuMarkingSprites[i] = &gSprites[spriteId]; + gSprites[spriteId].data0 = i; + } + else + { + sMenu->menuMarkingSprites[i] = NULL; + return; + } + } + + sprTemplate.callback = SpriteCallbackDummy; + + spriteId = CreateSprite(&sprTemplate, 0, 0, 1); + + if (spriteId != 64) + { + sMenu->menuTextSprite = &gSprites[spriteId]; + sMenu->menuTextSprite->oam.shape = ST_OAM_H_RECTANGLE; + sMenu->menuTextSprite->oam.size = 3; + StartSpriteAnim(sMenu->menuTextSprite, 9); + sMenu->menuTextSprite->pos1.x = x + MENU_TEXT_SPRITE_X_OFFSET; + sMenu->menuTextSprite->pos1.y = y + 80; + CalcCenterToCornerVec(sMenu->menuTextSprite, 1, 2, 0); + } + else + { + sMenu->menuTextSprite = NULL; + } + + sMenu->cursorBaseY = y + 8; + sub_814A5C0(0, basePaletteTag + 1, 15, 0, 0x30); + sub_814A880(x + 8, sMenu->cursorBaseY); + sub_814AABC(sub_80F7908); +} + +void nullsub_65(struct Sprite *sprite) +{ +} + +void sub_80F78CC(struct Sprite *sprite) +{ + if (sMenu->markingsArray[sprite->data0]) + StartSpriteAnim(sprite, 2 * sprite->data0 + 1); + else + StartSpriteAnim(sprite, 2 * sprite->data0); +} + +void sub_80F7908(struct Sprite *sprite) +{ + sprite->pos1.y = 16 * sMenu->cursorPos + sMenu->cursorBaseY; +} + +struct Sprite *sub_80F7920(u16 tileTag, u16 paletteTag, u16 *palette) +{ + if (!palette) + palette = gUnknown_083E49F4; + return sub_80F7960(tileTag, paletteTag, palette, 16); +} + +struct Sprite *sub_80F7940(u16 tileTag, u16 paletteTag, u16 *palette) +{ + if (!palette) + palette = gUnknown_083E49F4; + return sub_80F7960(tileTag, paletteTag, palette, 1); +} + +struct Sprite *sub_80F7960(u16 tileTag, u16 paletteTag, u16 *palette, u16 size) +{ + u8 spriteId; + struct SpriteTemplate sprTemplate; + struct SpriteSheet sheet = { gUnknown_083E4A14, 0x80, tileTag }; + struct SpritePalette sprPalette = { palette, paletteTag }; + + sprTemplate.tileTag = tileTag; + sprTemplate.paletteTag = paletteTag; + sprTemplate.oam = &gOamData_83E52B4; + sprTemplate.anims = gSpriteAnimTable_83E533C; + sprTemplate.images = NULL; + sprTemplate.affineAnims = gDummySpriteAffineAnimTable; + sprTemplate.callback = nullsub_65; + + sheet.size = size * 0x80; + + LoadSpriteSheet(&sheet); + LoadSpritePalette(&sprPalette); + + spriteId = CreateSprite(&sprTemplate, 0, 0, 0); + if (spriteId != 64) + return &gSprites[spriteId]; + else + return NULL; +} + +void sub_80F7A10(u8 markings, void *dest) +{ + void *src = gUnknown_083E4A14 + markings * 0x80; + DmaCopy16(3, src, dest, 0x80); +} diff --git a/src/pokemon/pokeblock_feed.c b/src/pokemon/pokeblock_feed.c new file mode 100644 index 000000000..5d6b215cd --- /dev/null +++ b/src/pokemon/pokeblock_feed.c @@ -0,0 +1,1015 @@ +#include "global.h" +#include "task.h" +#include "palette.h" +#include "main.h" +#include "menu_helpers.h" +#include "text.h" +#include "text_window.h" +#include "menu.h" +#include "overworld.h" +#include "decompress.h" +#include "data2.h" +#include "sprite.h" +#include "item_use.h" +#include "pokeblock.h" +#include "party_menu.h" +#include "strings.h" +#include "string_util.h" +#include "m4a.h" +#include "field_effect.h" +#include "sound.h" +#include "trig.h" + +extern u8 ewram[]; +extern struct MusicPlayerInfo gMPlay_BGM; +extern u8 gPokeblockMonID; +extern s16 gPokeblockGain; + +extern const u8 gPokeblockRed_Pal[]; +extern const u8 gPokeblockBlue_Pal[]; +extern const u8 gPokeblockPink_Pal[]; +extern const u8 gPokeblockGreen_Pal[]; +extern const u8 gPokeblockYellow_Pal[]; +extern const u8 gPokeblockPurple_Pal[]; +extern const u8 gPokeblockIndigo_Pal[]; +extern const u8 gPokeblockBrown_Pal[]; +extern const u8 gPokeblockLiteBlue_Pal[]; +extern const u8 gPokeblockOlive_Pal[]; +extern const u8 gPokeblockGray_Pal[]; +extern const u8 gPokeblockBlack_Pal[]; +extern const u8 gPokeblockWhite_Pal[]; +extern const u8 gPokeblockGold_Pal[]; +extern const u8 gPokeblock_Gfx[]; +extern const u8 gBattleTerrainTiles_Building[]; +extern const u8 gUnknown_08E782FC[]; +extern const u8 gBattleTerrainPalette_BattleTower[]; +extern const struct CompressedSpriteSheet gUnknown_083F7F74; +extern const struct CompressedSpritePalette gUnknown_083F7F7C; + +bool8 IsPokeSpriteNotFlipped(u16 species); + +// this file's functions +static void sub_8147B04(void); +static void sub_81481DC(void); +static void sub_814825C(void); +static u8 sub_81480B4(void); +static u8 CreatePokeblockSprite(void); +static u8 PokeblockFeed_CreatePokeSprite(struct Pokemon* mon); +static bool8 sub_8147B20(struct Pokemon* mon); +static void LaunchPokeblockFeedTask(u8); +static void sub_8148044(u8); +static void sub_8148078(struct Sprite* sprite); +static void Task_PrintAtePokeblockText(u8 taskID); +static void Task_PaletteFadeToReturn(u8 taskID); +static void SetPokeblockFeedSpritePal(u8); +static void sub_8148108(u8, bool8); +static bool8 sub_8148540(void); +static bool8 sub_81485CC(void); +static bool8 FreePokeSpriteMatrix(void); +void sub_8148710(void); +static void SpriteCB_ThrownPokeblock(struct Sprite* sprite); +static void sub_814862C(void); + +// EWRAM +EWRAM_DATA static struct CompressedSpritePalette sPokeblockFeedSpritePal = {0}; + +// IWRAM common +struct Sprite* gPokeblockFeedPokeSprite; +u16 gPokeblockFeedMonSpecies; +bool8 gPokeblockMonNotFlipped; +u8 gPokeblockFeedMonSpriteID; +u8 gPokeblockFeedMonNature; +u16 gUnknown_03005F34; +u8 gPokeblockFeedUnused0; +u8 gUnknown_03005F3C; +u8 gUnknown_03005F40; +struct Sprite gPokeblockFeedPokeSpriteCopy; +u16 gUnknown_03005F94; +s16 gUnknown_03005FA0[24]; + +// rodata + +static const u8 sNatureToMonPokeblockAnim[][2] = +{ + { 0, 0 }, // HARDY + { 3, 0 }, // LONELY + { 4, 1 }, // BRAVE + { 5, 0 }, // ADAMANT + { 10, 0 }, // NAUGHTY + { 13, 0 }, // BOLD + { 15, 0 }, // DOCILE + { 16, 2 }, // RELAXED + { 18, 0 }, // IMPISH + { 19, 0 }, // LAX + { 20, 0 }, // TIMID + { 25, 0 }, // HASTY + { 27, 3 }, // SERIOUS + { 28, 0 }, // JOLLY + { 29, 0 }, // NAIVE + { 33, 4 }, // MODEST + { 36, 0 }, // MILD + { 37, 0 }, // QUIET + { 39, 0 }, // BASHFUL + { 42, 0 }, // RASH + { 45, 0 }, // CALM + { 46, 5 }, // GENTLE + { 47, 6 }, // SASSY + { 48, 0 }, // CAREFUL + { 53, 0 }, // QUIRKY +}; + +static const s16 sMonPokeblockAnims[][10] = +{ + // HARDY + { 0, 4, 0, 8, 24, 0, 0, 0, 12, 0}, + { 0, 4, 0, 16, 24, 0, 0, 0, 12, 0}, + { 0, 4, 0, 32, 32, 0, 0, 0, 16, 1}, + + // LONELY + { 0, 3, 6, 0, 48, 0, 0, 0, 24, 1}, + + // BRAVE + { 64, 16, -24, 0, 32, 0, 0, 0, 0, 1}, + + // ADAMANT + { 0, 4, 8, 0, 16, 0, -8, 0, 0, 0}, + { 0, 0, 0, 0, 16, 0, 0, 0, 0, 0}, + { 0, 4, 8, 0, 16, 0, -8, 0, 0, 0}, + { 0, 0, 0, 0, 16, 0, 0, 0, 0, 0}, + { 0, 4, -16, 0, 4, 0, 16, 0, 0, 1}, + + // NAUGHTY + { 0, 3, 6, 0, 12, 0, 0, 0, 6, 0}, + { 0, 3, -6, 0, 12, 0, 0, 0, 6, 0}, + { 0, 16, 16, 0, 45, 1, 0, 0, 0, 1}, + + // BOLD + { 0, 16, 0, 24, 32, 0, 0, 0, 16, 0}, + { 0, 16, 0, 23, 32, 0, 0, 0, 16, 1}, + + // DOCILE + { 0, 0, 0, 0, 80, 0, 0, 0, 0, 1}, + + // RELAXED + { 0, 2, 8, 0, 32, 0, 0, 0, 0, 0}, + { 0, 2, -8, 0, 32, 0, 0, 0, 0, 1}, + + // IMPISH + { 0, 32, 2, 1, 48, 1, 0, 0, 24, 1}, + + // LAX + { 0, 2, 16, 16, 128, 0, 0, 0, 0, 1}, + + // TIMID + { 0, 2, -8, 0, 48, 0, -24, 0, 0, 0}, + { 0, 0, 0, 0, 8, 0, 0, 0, 0, 0}, + { 64, 32, 2, 0, 36, 0, 0, 0, 0, 0}, + { 0, 0, 0, 0, 8, 0, 0, 0, 0, 0}, + { 0, 2, 8, 0, 48, 0, 24, 0, 0, 1}, + + // HASTY + { 64, 24, 16, 0, 32, 0, 0, 0, 0, 0}, + { 0, 28, 2, 1, 32, 1, 0, 0, 16, 1}, + + // SERIOUS + { 0, 0, 0, 0, 32, 0, 0, 0, 0, 1}, + + // JOLLY + { 64, 16, -16, 2, 48, 0, 0, 0, 32, 1}, + + // NAIVE + { 0, 12, -8, 4, 24, 0, 8, 0, 12, 0}, + { 0, 12, 8, 8, 24, 0, -16, 0, 12, 0}, + { 0, 12, -8, 16, 24, 0, 16, 0, 12, 0}, + { 0, 12, 8, 28, 24, 0, -8, 0, 12, 1}, + + // MODEST + { 0, 0, 0, 0, 8, 0, 0, 0, 0, 0}, + { 64, 16, -4, 0, 32, 0, 0, 0, 0, 0}, + { 0, 0, 0, 0, 8, 0, 0, 0, 0, 1}, + + // MILD + { 128, 4, 0, 8, 64, 0, 0, 0, 0, 1}, + + // QUIET + { 0, 2, 16, 0, 48, 0, 0, 0, 0, 0}, + { 128, 2, 16, 0, 48, 0, 0, 0, 0, 1}, + + // BASHFUL + { 0, 2, -4, 0, 48, 0, -48, 0, 0, 0}, + { 0, 0, 0, 0, 80, 0, 0, 0, 0, 0}, + { 0, 2, 8, 0, 24, 0, 48, 0, 0, 1}, + + // RASH + { 64, 4, 64, 58, 52, 0, -88, 0, 0, 0}, + { 0, 0, 0, 0, 80, 0, 0, 0, 0, 0}, + { 0, 24, 80, 0, 32, 0, 88, 0, 0, 1}, + + // CALM + { 0, 2, 16, 4, 64, 0, 0, 0, 0, 1}, + + // GENTLE + { 0, 0, 0, 0, 32, 0, 0, 0, 0, 1}, + + // SASSY + { 0, 0, 0, 0, 42, 0, 0, 0, 0, 1}, + + // CAREFUL + { 0, 4, 0, 8, 24, 0, 0, 0, 12, 0}, + { 0, 0, 0, 0, 12, 0, 0, 0, 0, 0}, + { 0, 4, 0, 12, 24, 0, 0, 0, 12, 0}, + { 0, 0, 0, 0, 12, 0, 0, 0, 0, 0}, + { 0, 4, 0, 4, 24, 0, 0, 0, 12, 1}, + + // QUIRKY + { 0, 4, 16, 12, 64, 0, 0, 0, 0, 0}, + { 0, -4, 16, 12, 64, 0, 0, 0, 0, 1}, +}; + +static const union AffineAnimCmd sSpriteAffineAnim_8411E90[] = +{ + AFFINEANIMCMD_FRAME(-0x100, 0x100, 0, 0), + AFFINEANIMCMD_END +}; + +static const union AffineAnimCmd sSpriteAffineAnim_8411EA0[] = +{ + AFFINEANIMCMD_FRAME(0, 0, 12, 1), + AFFINEANIMCMD_FRAME(0, 0, 0, 30), + AFFINEANIMCMD_FRAME(0, 0, -12, 1), + AFFINEANIMCMD_END +}; + +static const union AffineAnimCmd sSpriteAffineAnim_8411EC0[] = +{ + AFFINEANIMCMD_FRAME(-0x100, 0x100, 0, 0), + AFFINEANIMCMD_FRAME(0, 0, 12, 1), + AFFINEANIMCMD_FRAME(0, 0, 0, 28), + AFFINEANIMCMD_FRAME(0, 0, -4, 3), + AFFINEANIMCMD_END +}; + +static const union AffineAnimCmd sSpriteAffineAnim_8411EE8[] = +{ + AFFINEANIMCMD_FRAME(0x0, 0x0, 1, 16), + AFFINEANIMCMD_FRAME(0x0, 0x0, -1, 32), + AFFINEANIMCMD_FRAME(0x0, 0x0, 1, 16), + AFFINEANIMCMD_END +}; + +static const union AffineAnimCmd sSpriteAffineAnim_8411F08[] = +{ + AFFINEANIMCMD_FRAME(-0x100, 0x100, 0, 0), + AFFINEANIMCMD_FRAME(0x0, 0x0, 1, 16), + AFFINEANIMCMD_FRAME(0x0, 0x0, -1, 32), + AFFINEANIMCMD_FRAME(0x0, 0x0, 1, 16), + AFFINEANIMCMD_END +}; + +static const union AffineAnimCmd sSpriteAffineAnim_8411F30[] = +{ + AFFINEANIMCMD_FRAME(0x0, 0x0, -1, 8), + AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 16), + AFFINEANIMCMD_FRAME(0x0, 0x0, 1, 8), + AFFINEANIMCMD_END +}; + +static const union AffineAnimCmd sSpriteAffineAnim_8411F50[] = +{ + AFFINEANIMCMD_FRAME(-0x100, 0x100, 0, 0), + AFFINEANIMCMD_FRAME(0x0, 0x0, -1, 8), + AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 16), + AFFINEANIMCMD_FRAME(0x0, 0x0, 1, 8), + AFFINEANIMCMD_END +}; + +static const union AffineAnimCmd sSpriteAffineAnim_8411F78[] = +{ + AFFINEANIMCMD_FRAME(0x0, 0x0, -1, 8), + AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 32), + AFFINEANIMCMD_FRAME(0x0, 0x0, 1, 8), + AFFINEANIMCMD_END +}; + +static const union AffineAnimCmd sSpriteAffineAnim_8411F98[] = +{ + AFFINEANIMCMD_FRAME(-0x100, 0x100, 0, 0), + AFFINEANIMCMD_FRAME(0x0, 0x0, -1, 8), + AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 32), + AFFINEANIMCMD_FRAME(0x0, 0x0, 1, 8), + AFFINEANIMCMD_END +}; + +static const union AffineAnimCmd sSpriteAffineAnim_8411FC0[] = +{ + AFFINEANIMCMD_FRAME(0x0, 0x0, -1, 4), + AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 24), + AFFINEANIMCMD_FRAME(0x0, 0x0, 1, 4), + AFFINEANIMCMD_END +}; + +static const union AffineAnimCmd sSpriteAffineAnim_8411FE0[] = +{ + AFFINEANIMCMD_FRAME(-0x100, 0x100, 0, 0), + AFFINEANIMCMD_FRAME(0x0, 0x0, -1, 4), + AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 24), + AFFINEANIMCMD_FRAME(0x0, 0x0, 1, 4), + AFFINEANIMCMD_END +}; + +static const union AffineAnimCmd sSpriteAffineAnim_8412008[] = +{ + AFFINEANIMCMD_FRAME(0x0, 0x0, 1, 24), + AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 16), + AFFINEANIMCMD_FRAME(0x0, 0x0, -12, 2), + AFFINEANIMCMD_END +}; + +static const union AffineAnimCmd sSpriteAffineAnim_8412028[] = +{ + AFFINEANIMCMD_FRAME(-0x100, 0x100, 0, 0), + AFFINEANIMCMD_FRAME(0x0, 0x0, 1, 24), + AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 16), + AFFINEANIMCMD_FRAME(0x0, 0x0, -12, 2), + AFFINEANIMCMD_END +}; + +static const union AffineAnimCmd *const sSpriteAffineAnimTable_8412050[] = +{ + sSpriteAffineAnim_8411E90, + sSpriteAffineAnim_8411EA0, + sSpriteAffineAnim_8411EE8, + sSpriteAffineAnim_8411F30, + sSpriteAffineAnim_8411F78, + sSpriteAffineAnim_8411FC0, + sSpriteAffineAnim_8412008, + sSpriteAffineAnim_8411E90, + sSpriteAffineAnim_8411E90, + sSpriteAffineAnim_8411E90, + sSpriteAffineAnim_8411E90, + sSpriteAffineAnim_8411EC0, + sSpriteAffineAnim_8411F08, + sSpriteAffineAnim_8411F50, + sSpriteAffineAnim_8411F98, + sSpriteAffineAnim_8411FE0, + sSpriteAffineAnim_8412028, + sSpriteAffineAnim_8411E90, + sSpriteAffineAnim_8411E90, + sSpriteAffineAnim_8411E90, + sSpriteAffineAnim_8411E90, +}; + +static const u8* const sPokeblocksPals[] = +{ + gPokeblockRed_Pal, + gPokeblockBlue_Pal, + gPokeblockPink_Pal, + gPokeblockGreen_Pal, + gPokeblockYellow_Pal, + gPokeblockPurple_Pal, + gPokeblockIndigo_Pal, + gPokeblockBrown_Pal, + gPokeblockLiteBlue_Pal, + gPokeblockOlive_Pal, + gPokeblockGray_Pal, + gPokeblockBlack_Pal, + gPokeblockWhite_Pal, + gPokeblockGold_Pal +}; + +static const union AffineAnimCmd sSpriteAffineAnim_84120DC[] = +{ + AFFINEANIMCMD_FRAME(-0x100, 0x100, 0, 0), + AFFINEANIMCMD_END +}; + +static const union AffineAnimCmd *const sSpriteAffineAnimTable_84120EC[] = +{ + sSpriteAffineAnim_84120DC +}; + +static const union AffineAnimCmd sSpriteAffineAnim_84120F0[] = +{ + AFFINEANIMCMD_FRAME(-0x100, 0x100, 0, 0), + AFFINEANIMCMD_FRAME(0x0, 0x0, -8, 1), + AFFINEANIMCMD_FRAME(0x0, 0x0, -8, 1), + AFFINEANIMCMD_FRAME(0x0, 0x0, -8, 1), + AFFINEANIMCMD_FRAME(0x0, 0x0, -8, 1), + AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 8), + AFFINEANIMCMD_FRAME(0x0, 0x0, 16, 1), + AFFINEANIMCMD_FRAME(0x0, 0x0, 16, 1), + AFFINEANIMCMD_FRAME(0x0, 0x0, 16, 1), + AFFINEANIMCMD_FRAME(-0x100, 0x100, 0, 0), + AFFINEANIMCMD_END +}; + +static const union AffineAnimCmd sSpriteAffineAnim_8412148[] = +{ + AFFINEANIMCMD_FRAME(-0x100, 0x100, 0, 0), + AFFINEANIMCMD_FRAME(0x0, 0x0, 8, 1), + AFFINEANIMCMD_FRAME(0x0, 0x0, 8, 1), + AFFINEANIMCMD_FRAME(0x0, 0x0, 8, 1), + AFFINEANIMCMD_FRAME(0x0, 0x0, 8, 1), + AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 8), + AFFINEANIMCMD_FRAME(0x0, 0x0, -16, 1), + AFFINEANIMCMD_FRAME(0x0, 0x0, -16, 1), + AFFINEANIMCMD_FRAME(0x0, 0x0, -16, 1), + AFFINEANIMCMD_FRAME(-0x100, 0x100, 0, 0), + AFFINEANIMCMD_END +}; + +static const union AffineAnimCmd *const sSpriteAffineAnimTable_84121A0[] = +{ + sSpriteAffineAnim_84120DC +}; + +static const union AffineAnimCmd *const sSpriteAffineAnimTable_84121A4[] = +{ + sSpriteAffineAnim_84120F0 +}; + +static const union AffineAnimCmd *const sSpriteAffineAnimTable_84121A8[] = +{ + sSpriteAffineAnim_8412148 +}; + +static const struct OamData sThrownPokeblockOamData = +{ + .y = 0, + .affineMode = 3, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 0, + .tileNum = 0, + .priority = 1, + .paletteNum = 0, + .affineParam = 0, +}; + +static const union AnimCmd sThrownPokeblockSpriteAnim[] = +{ + ANIMCMD_FRAME(0, 0), + ANIMCMD_END +}; + +static const union AnimCmd *const sThrownPokeblockAnimTable[] = +{ + sThrownPokeblockSpriteAnim, +}; + +static const union AffineAnimCmd sSpriteAffineAnim_84121C0[] = +{ + AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0), + AFFINEANIMCMD_FRAME(-8, -8, 0, 1), + AFFINEANIMCMD_JUMP(1) +}; + +static const union AffineAnimCmd *const sThrownPokeblockAffineAnimTable[] = +{ + sSpriteAffineAnim_84121C0 +}; + +static const struct CompressedSpriteSheet sUnknown_084121DC = +{ + gPokeblock_Gfx, 0x20, 14818 +}; + +static const struct SpriteTemplate sThrownPokeblockSpriteTemplate = +{ + .tileTag = 14818, + .paletteTag = 14818, + .oam = &sThrownPokeblockOamData, + .anims = sThrownPokeblockAnimTable, + .images = NULL, + .affineAnims = sThrownPokeblockAffineAnimTable, + .callback = SpriteCB_ThrownPokeblock +}; + +// code + +static void CB2_PokeblockFeed(void) +{ + AnimateSprites(); + BuildOamBuffer(); + RunTasks(); + UpdatePaletteFade(); +} + +static void VBlankCB_PokeblockFeed(void) +{ + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); +} + +static bool8 TransitionToPokeblockFeedScene(void) +{ + switch (gMain.state) + { + case 0: + sub_80F9438(); + sub_80F9368(); + sub_8147B04(); + gMain.state++; + break; + case 1: + ResetPaletteFade(); + gPaletteFade.bufferTransferDisabled = 1; + gMain.state++; + break; + case 2: + ResetSpriteData(); + gMain.state++; + break; + case 3: + FreeAllSpritePalettes(); + gMain.state++; + break; + case 4: + SetUpWindowConfig(&gWindowConfig_81E6E50); + gMain.state++; + break; + case 5: + MultistepInitMenuWindowBegin(&gWindowConfig_81E6E50); + gMain.state++; + break; + case 6: + if (MultistepInitMenuWindowContinue()) + { + ewram[0x1FFFF] = 0; + gMain.state++; + } + break; + case 7: + if (sub_8147B20(&gPlayerParty[gPokeblockMonID])) + { + gMain.state++; + } + break; + case 8: + ewram[0x1FFFD] = sub_81480B4(); + gMain.state++; + break; + case 9: + ewram[0x1FFFE] = PokeblockFeed_CreatePokeSprite(&gPlayerParty[gPokeblockMonID]); + gMain.state++; + break; + case 10: + MenuDrawTextWindow(0, 14, 29, 19); + gMain.state++; + break; + case 11: + if (sub_8055870() != 1) + { + gMain.state++; + } + break; + case 12: + { + u16 savedIME = REG_IME; + REG_IME = 0; + REG_IE |= 1; + REG_IME = savedIME; + REG_DISPSTAT |= 8; + SetVBlankCallback(VBlankCB_PokeblockFeed); + gMain.state++; + } + case 13: + BeginNormalPaletteFade(-1, 0, 0x10, 0, 0); + gPaletteFade.bufferTransferDisabled = 0; + SetMainCallback2(CB2_PokeblockFeed); + return TRUE; + } + return FALSE; +} + +void CB2_PreparePokeblockFeedScene(void) +{ + while (1) + { + if (TransitionToPokeblockFeedScene() == 1) + { + LaunchPokeblockFeedTask(1); + break; + } + if (sub_80F9344() == 1) + break; + } +} + +static void sub_8147B04(void) +{ + REG_BG1CNT = 0x1D02l; + REG_DISPCNT = 0x1340; +} + +static bool8 sub_8147B20(struct Pokemon* mon) +{ + u16 species; + u32 PiD, TiD; + switch (ewram[0x1FFFF]) + { + case 0: + species = GetMonData(mon, MON_DATA_SPECIES2); + PiD = GetMonData(mon, MON_DATA_PERSONALITY); + HandleLoadSpecialPokePic(&gMonFrontPicTable[species], gMonFrontPicCoords[species].coords, gMonFrontPicCoords[species].y_offset, 0x2000000, gUnknown_081FAF4C[1], species, PiD); + ewram[0x1FFFF]++; + break; + case 1: + { + const struct CompressedSpritePalette* palette; + + species = GetMonData(mon, MON_DATA_SPECIES2); + PiD = GetMonData(mon, MON_DATA_PERSONALITY); + TiD = GetMonData(mon, MON_DATA_OT_ID); + palette = GetMonSpritePalStructFromOtIdPersonality(species, TiD, PiD); + LoadCompressedObjectPalette(palette); + GetMonSpriteTemplate_803C56C(palette->tag, 1); + ewram[0x1FFFF]++; + } + break; + case 2: + LoadCompressedObjectPic(&gUnknown_083F7F74); + ewram[0x1FFFF]++; + break; + case 3: + LoadCompressedObjectPalette(&gUnknown_083F7F7C); + ewram[0x1FFFF]++; + break; + case 4: + LoadCompressedObjectPic(&sUnknown_084121DC); + ewram[0x1FFFF]++; + break; + case 5: + SetPokeblockFeedSpritePal(gScriptItemId); + LoadCompressedObjectPalette(&sPokeblockFeedSpritePal); + ewram[0x1FFFF]++; + break; + case 6: + LZDecompressVram(gBattleTerrainTiles_Building, (void*)(VRAM)); + ewram[0x1FFFF]++; + break; + case 7: + LZDecompressVram(gUnknown_08E782FC, (void*)(VRAM + 0xE800)); + ewram[0x1FFFF]++; + break; + case 8: + LoadCompressedPalette(gBattleTerrainPalette_BattleTower, 0x20, 0x60); + ewram[0x1FFFF] = 0; + return TRUE; + } + return FALSE; +} + +static void SetPokeblockFeedSpritePal(u8 pkbID) +{ + u8 color = GetPokeblockData(&gSaveBlock1.pokeblocks[pkbID], PBLOCK_COLOR); + sPokeblockFeedSpritePal.data = sPokeblocksPals[color - 1]; + sPokeblockFeedSpritePal.tag = 0x39E2; +} + +static void sub_8147CC8(u8 taskID) +{ + if (!gPaletteFade.active) + { + switch (gTasks[taskID].data[0]) + { + case 0: + gUnknown_03005F3C = 0; + gUnknown_03005F94 = 0; + sub_81481DC(); + break; + case 255: + sub_8148108(ewram[0x1FFFD], gTasks[taskID].data[1]); + break; + case 269: + ewram[0x1FFFC] = CreatePokeblockSprite(); + break; + case 281: + sub_8148044(ewram[0x1FFFE]); + break; + case 297: + gTasks[taskID].func = Task_PrintAtePokeblockText; + return; + } + if (gUnknown_03005F94 < gUnknown_03005F34) + sub_814825C(); + else if (gUnknown_03005F94 == gUnknown_03005F34) + gTasks[taskID].data[0] = 254; + + gUnknown_03005F94++; + gTasks[taskID].data[0]++; + } +} + +static void LaunchPokeblockFeedTask(u8 a0) +{ + u8 taskID = CreateTask(sub_8147CC8, 0); + gTasks[taskID].data[0] = 0; + gTasks[taskID].data[1] = a0; +} + +static void Task_WaitForAtePokeblockText(u8 taskID) +{ + if (MenuUpdateWindowText() == 1) + gTasks[taskID].func = Task_PaletteFadeToReturn; +} + +static void Task_PrintAtePokeblockText(u8 taskID) +{ + struct Pokemon* mon = &gPlayerParty[gPokeblockMonID]; + struct Pokeblock* pokeblock = &gSaveBlock1.pokeblocks[gScriptItemId]; + + gPokeblockGain = PokeblockGetGain(GetNature(mon), pokeblock); + GetMonNickname(mon, gStringVar1); + PokeblockCopyName(pokeblock, gStringVar2); + + if (gPokeblockGain == 0) + StringExpandPlaceholders(gStringVar4, gContestStatsText_NormallyAte); + else if (gPokeblockGain > 0) + StringExpandPlaceholders(gStringVar4, gContestStatsText_HappilyAte); + else + StringExpandPlaceholders(gStringVar4, gContestStatsText_DisdainfullyAte); + + MenuPrintMessage(gStringVar4, 1, 15); + gTasks[taskID].func = Task_WaitForAtePokeblockText; +} + +static void Task_ReturnAfterPaletteFade(u8 taskID) +{ + if (!gPaletteFade.active) + { + m4aMPlayVolumeControl(&gMPlay_BGM, -1, 256); + SetMainCallback2(gMain.savedCallback); + DestroyTask(taskID); + } +} + +static void Task_PaletteFadeToReturn(u8 taskID) +{ + BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); + gTasks[taskID].func = Task_ReturnAfterPaletteFade; +} + +static u8 PokeblockFeed_CreatePokeSprite(struct Pokemon* mon) +{ + u16 species = GetMonData(mon, MON_DATA_SPECIES2); + u8 spriteID = CreateSprite(&gUnknown_02024E8C, 48, 80, 2); + + gPokeblockFeedMonSpecies = species; + gPokeblockFeedMonSpriteID = spriteID; + gPokeblockFeedMonNature = GetNature(mon); + gSprites[spriteID].data2 = species; + gSprites[spriteID].callback = SpriteCallbackDummy; + gPokeblockMonNotFlipped = 1; + if (!IsPokeSpriteNotFlipped(species)) + { + gSprites[spriteID].affineAnims = sSpriteAffineAnimTable_84120EC; + gSprites[spriteID].oam.affineMode = 3; + CalcCenterToCornerVec(&gSprites[spriteID], gSprites[spriteID].oam.shape, gSprites[spriteID].oam.size, gSprites[spriteID].oam.affineMode); + gPokeblockMonNotFlipped = 0; + } + return spriteID; +} + +static void sub_8148044(u8 spriteID) +{ + gSprites[spriteID].pos1.x = 48; + gSprites[spriteID].pos1.y = 80; + gSprites[spriteID].data0 = -8; + gSprites[spriteID].data1 = 1; + gSprites[spriteID].callback = sub_8148078; +} + +static void sub_8148078(struct Sprite* sprite) +{ + sprite->pos1.x += 4; + sprite->pos1.y += sprite->data0; + sprite->data0 += sprite->data1; + if (sprite->data0 == 0) + PlayCry1(sprite->data2, 0); + if (sprite->data0 == 9) + sprite->callback = SpriteCallbackDummy; +} + +static u8 sub_81480B4(void) +{ + u8 spriteID = sub_810BA50(188, 100, 2); + gSprites[spriteID].oam.affineMode = 1; + gSprites[spriteID].affineAnims = sSpriteAffineAnimTable_84121A0; + gSprites[spriteID].callback = SpriteCallbackDummy; + InitSpriteAffineAnim(&gSprites[spriteID]); + return spriteID; +} + +static void sub_8148108(u8 spriteID, bool8 a1) +{ + FreeOamMatrix(gSprites[spriteID].oam.matrixNum); + gSprites[spriteID].oam.affineMode = 3; + if (!a1) + gSprites[spriteID].affineAnims = sSpriteAffineAnimTable_84121A4; + else + gSprites[spriteID].affineAnims = sSpriteAffineAnimTable_84121A8; + InitSpriteAffineAnim(&gSprites[spriteID]); +} + +static u8 CreatePokeblockSprite(void) +{ + u8 spriteID = CreateSprite(&sThrownPokeblockSpriteTemplate, 174, 84, 1); + gSprites[spriteID].data0 = -12; + gSprites[spriteID].data1 = 1; + return spriteID; +} + +static void SpriteCB_ThrownPokeblock(struct Sprite* sprite) +{ + sprite->pos1.x -= 4; + sprite->pos1.y += sprite->data0; + sprite->data0 += sprite->data1; + if (sprite->data0 == 10) + DestroySprite(sprite); +} + +static void sub_81481DC(void) +{ + u8 animID, i; + + gUnknown_03005F34 = 1; + animID = sNatureToMonPokeblockAnim[gPokeblockFeedMonNature][0]; + for (i = 0; i < 8; i++, animID++) + { + gUnknown_03005F34 += sMonPokeblockAnims[animID][4]; + if (sMonPokeblockAnims[animID][9] == 1) + break; + } +} + +static void sub_814825C(void) +{ + switch (gUnknown_03005F3C) + { + case 0: + gUnknown_03005F40 = sNatureToMonPokeblockAnim[gPokeblockFeedMonNature][0]; + gPokeblockFeedPokeSprite = &gSprites[gPokeblockFeedMonSpriteID]; + gPokeblockFeedPokeSpriteCopy = *gPokeblockFeedPokeSprite; + gUnknown_03005F3C = 10; + break; + case 1 ... 9: + break; + case 10: + sub_8148540(); + if (sNatureToMonPokeblockAnim[gPokeblockFeedMonNature][1] != 0) + { + gPokeblockFeedPokeSprite->oam.affineMode = 3; + gPokeblockFeedPokeSprite->oam.matrixNum = 0; + gPokeblockFeedPokeSprite->affineAnims = sSpriteAffineAnimTable_8412050; + InitSpriteAffineAnim(gPokeblockFeedPokeSprite); + } + gUnknown_03005F3C = 50; + case 50: + if (sNatureToMonPokeblockAnim[gPokeblockFeedMonNature][1] != 0) + { + if (gPokeblockMonNotFlipped == 0) + StartSpriteAffineAnim(gPokeblockFeedPokeSprite, sNatureToMonPokeblockAnim[gPokeblockFeedMonNature][1] + 10); + else + StartSpriteAffineAnim(gPokeblockFeedPokeSprite, sNatureToMonPokeblockAnim[gPokeblockFeedMonNature][1]); + } + gUnknown_03005F3C = 60; + break; + case 60: + if (sub_81485CC() == 1) + { + if (gUnknown_03005FA0[9] == 0) + { + gUnknown_03005F40++; + sub_8148540(); + gUnknown_03005F3C = 60; + } + else + { + FreeOamMatrix(gPokeblockFeedPokeSprite->oam.matrixNum); + gUnknown_03005F3C = 70; + } + } + break; + case 70: + FreePokeSpriteMatrix(); + gUnknown_03005F40 = 0; + gUnknown_03005F3C = 0; + break; + case 71 ... 90: + break; + } +} + +static bool8 sub_8148540(void) +{ + u8 i; + for (i = 0; i < 10; i++) + gUnknown_03005FA0[i] = sMonPokeblockAnims[gUnknown_03005F40][i]; + if (gUnknown_03005FA0[4] == 0) + return TRUE; + else + { + gUnknown_03005FA0[10] = Sin(gUnknown_03005FA0[0], gUnknown_03005FA0[2]); + gUnknown_03005FA0[11] = Cos(gUnknown_03005FA0[0], gUnknown_03005FA0[3]); + gUnknown_03005FA0[12] = gUnknown_03005FA0[4]; + gUnknown_03005FA0[13] = gPokeblockFeedPokeSprite->pos2.x; + gUnknown_03005FA0[14] = gPokeblockFeedPokeSprite->pos2.y; + sub_8148710(); + gUnknown_03005FA0[4] = gUnknown_03005FA0[12]; + sub_814862C(); + gUnknown_03005FA0[4] = gUnknown_03005FA0[12]; + return FALSE; + } +} + +#define ewram1D000 ((u16 *)(ewram + 0x1D000)) +#define ewram1D400 ((u16 *)(ewram + 0x1D400)) + +static bool8 sub_81485CC(void) +{ + u16 var = gUnknown_03005FA0[12] - gUnknown_03005FA0[4]; + + gPokeblockFeedPokeSprite->pos2.x = ewram1D000[var]; + gPokeblockFeedPokeSprite->pos2.y = ewram1D400[var]; + + if (--gUnknown_03005FA0[4] == 0) + return TRUE; + else + return FALSE; +} + +static bool8 FreePokeSpriteMatrix(void) +{ + FreeSpriteOamMatrix(gPokeblockFeedPokeSprite); + return FALSE; +} + +static void sub_814862C(void) +{ + u16 i; + u16 r8 = gUnknown_03005FA0[8]; + u16 r7 = gUnknown_03005FA0[12] - r8; + s16 var3 = gUnknown_03005FA0[13] + gUnknown_03005FA0[6]; + s16 r9 = gUnknown_03005FA0[14] + gUnknown_03005FA0[7]; + + for (i = 0; i < r7 - 1; i++) + { + s16* r3 = &ewram1D000[r8 + i]; + s16 r1 = *r3 - (var3); + + s16* r5 = &ewram1D400[r8 + i]; + s16 r4 = *r5 - r9; + + *r3 -= r1 * (i + 1) / r7; + *r5 -= r4 * (i + 1) / r7; + } + + ewram1D000[(r8 + r7) - 1] = var3; + ewram1D400[(r8 + r7) - 1] = r9; +} + +void sub_8148710(void) +{ + bool8 var_24 = FALSE; + s16 r8 = gUnknown_03005FA0[13] - gUnknown_03005FA0[10]; + s16 r7 = gUnknown_03005FA0[14] - gUnknown_03005FA0[11]; + while (1) + { + u16 r5; + u16 r4; + u16 var; + + var = abs(gUnknown_03005FA0[5]); + r5 = var + gUnknown_03005FA0[3]; + gUnknown_03005FA0[3] = r5; + + if (gUnknown_03005FA0[2] < 0) + var_24 = TRUE; + + r4 = gUnknown_03005FA0[12] - gUnknown_03005FA0[4]; + + if (gUnknown_03005FA0[4] == 0) + break; + + if (!var_24) + { + ewram1D000[r4] = Sin(gUnknown_03005FA0[0], gUnknown_03005FA0[2] + r5 / 256) + r8; + ewram1D400[r4] = Cos(gUnknown_03005FA0[0], gUnknown_03005FA0[3] + r5 / 256) + r7; + } + else + { + ewram1D000[r4] = Sin(gUnknown_03005FA0[0], gUnknown_03005FA0[2] - r5 / 256) + r8; + ewram1D400[r4] = Cos(gUnknown_03005FA0[0], gUnknown_03005FA0[3] - r5 / 256) + r7; + } + + gUnknown_03005FA0[0] += gUnknown_03005FA0[1]; + gUnknown_03005FA0[0] &= 0xFF; + gUnknown_03005FA0[4]--; + } +} diff --git a/src/pokedex.c b/src/pokemon/pokedex.c similarity index 98% rename from src/pokedex.c rename to src/pokemon/pokedex.c index 2ef91e472..947dfd218 100644 --- a/src/pokedex.c +++ b/src/pokemon/pokedex.c @@ -1,4 +1,3 @@ - #include "global.h" #include "gba/m4a_internal.h" #include "pokedex.h" @@ -16,7 +15,7 @@ #include "pokedex_cry_screen.h" #include "pokemon.h" #include "rng.h" -#include "rom4.h" +#include "overworld.h" #include "songs.h" #include "sound.h" #include "species.h" @@ -143,20 +142,13 @@ struct UnknownStruct4 extern struct MusicPlayerInfo gMPlay_BGM; extern u8 gReservedSpritePaletteCount; -extern struct PokedexView *gPokedexView; extern struct SpriteTemplate gUnknown_02024E8C; -extern u16 gUnknown_0202FFB8; -extern u8 gUnknown_0202FFBA; -extern struct PokedexListItem *gUnknown_0202FFBC; -extern u8 gUnknown_03005CE8; -extern IntrCallback gUnknown_03005CEC; extern u8 gUnknown_03005E98; extern const u8 gPokedexMenu_Gfx[]; extern const u8 gUnknown_08E96738[]; extern const u8 gUnknown_08E96888[]; extern const u8 gUnknown_08E96994[]; extern const u8 gUnknown_08E9C6DC[]; -extern const u8 gUnknown_08D00524[]; extern const u8 gUnknown_08E96BD4[]; extern const u8 gUnknown_08E96ACC[]; extern const u8 gUnknown_08E96B58[]; @@ -171,6 +163,14 @@ extern const u16 gPokedexMenuSearch_Pal[]; extern const u8 gTypeNames[][7]; extern const u8 gPokedexMenu2_Gfx[]; +static EWRAM_DATA struct PokedexView *gPokedexView = NULL; +static EWRAM_DATA u16 gUnknown_0202FFB8 = 0; +static EWRAM_DATA u8 gUnknown_0202FFBA = 0; +static EWRAM_DATA struct PokedexListItem *gUnknown_0202FFBC = NULL; + +u8 gUnknown_03005CE8; +IntrCallback gUnknown_03005CEC; + static u8 sub_8091E3C(void); static const u16 sPokedexSearchPalette[] = INCBIN_U16("graphics/pokedex/search.gbapal"); @@ -184,7 +184,7 @@ static const u8 gUnknown_0839FA7C[] = INCBIN_U8("graphics/pokedex/noball.4bpp.lz extern const u8 gUnknown_0839FA7C[]; #endif -#include "data/pokedex_orders.h" +#include "../data/pokedex_orders.h" static const struct OamData gOamData_83A0404 = { .y = 160, @@ -513,9 +513,9 @@ static const u8 gUnknown_083A05F1[] = {16, 8, 4, 2, 1}; const u8 gEmptySpacce_83A05F6[] = {0, 0}; // Padding, maybe? static const u8 gUnknown_083A05F8[] = _(""); #if ENGLISH -#include "data/pokedex_entries_en.h" +#include "../data/pokedex_entries_en.h" #elif GERMAN -#include "data/pokedex_entries_de.h" +#include "../data/pokedex_entries_de.h" #endif static const u16 gUnknown_083B4EC4[16] = {0}; static const u8 *const sMonFootprintTable[] = @@ -1318,8 +1318,8 @@ void ResetPokedex(void) { gSaveBlock2.pokedex.owned[i] = 0; gSaveBlock2.pokedex.seen[i] = 0; - gSaveBlock1.unk938[i] = 0; - gSaveBlock1.unk3A8C[i] = 0; + gSaveBlock1.dexSeen2[i] = 0; + gSaveBlock1.dexSeen3[i] = 0; } } @@ -2028,8 +2028,8 @@ static void SortPokedex(u8 dexMode, u8 sortMode) { vars[2] = HoennToNationalOrder(i + 1); gPokedexView->unk0[i].dexNum = vars[2]; - gPokedexView->unk0[i].seen = GetNationalPokedexFlag(vars[2], 0); - gPokedexView->unk0[i].owned = GetNationalPokedexFlag(vars[2], 1); + gPokedexView->unk0[i].seen = GetSetPokedexFlag(vars[2], 0); + gPokedexView->unk0[i].owned = GetSetPokedexFlag(vars[2], 1); if (gPokedexView->unk0[i].seen) gPokedexView->pokemonListCount = i + 1; } @@ -2043,14 +2043,14 @@ static void SortPokedex(u8 dexMode, u8 sortMode) for (i = 0; i < vars[0]; i++) { vars[2] = i + 1; - if (GetNationalPokedexFlag(vars[2], 0)) + if (GetSetPokedexFlag(vars[2], 0)) r10 = 1; if (r10) { asm(""); //Needed to match for some reason gPokedexView->unk0[r5].dexNum = vars[2]; - gPokedexView->unk0[r5].seen = GetNationalPokedexFlag(vars[2], 0); - gPokedexView->unk0[r5].owned = GetNationalPokedexFlag(vars[2], 1); + gPokedexView->unk0[r5].seen = GetSetPokedexFlag(vars[2], 0); + gPokedexView->unk0[r5].owned = GetSetPokedexFlag(vars[2], 1); if (gPokedexView->unk0[r5].seen) gPokedexView->pokemonListCount = r5 + 1; r5++; @@ -2063,11 +2063,11 @@ static void SortPokedex(u8 dexMode, u8 sortMode) { vars[2] = gPokedexOrder_Alphabetical[i]; - if (NationalToHoennOrder(vars[2]) <= vars[0] && GetNationalPokedexFlag(vars[2], 0)) + if (NationalToHoennOrder(vars[2]) <= vars[0] && GetSetPokedexFlag(vars[2], 0)) { gPokedexView->unk0[gPokedexView->pokemonListCount].dexNum = vars[2]; gPokedexView->unk0[gPokedexView->pokemonListCount].seen = 1; - gPokedexView->unk0[gPokedexView->pokemonListCount].owned = GetNationalPokedexFlag(vars[2], 1); + gPokedexView->unk0[gPokedexView->pokemonListCount].owned = GetSetPokedexFlag(vars[2], 1); gPokedexView->pokemonListCount++; } } @@ -2077,7 +2077,7 @@ static void SortPokedex(u8 dexMode, u8 sortMode) { vars[2] = gPokedexOrder_Weight[i]; - if (NationalToHoennOrder(vars[2]) <= vars[0] && GetNationalPokedexFlag(vars[2], 1)) + if (NationalToHoennOrder(vars[2]) <= vars[0] && GetSetPokedexFlag(vars[2], 1)) { gPokedexView->unk0[gPokedexView->pokemonListCount].dexNum = vars[2]; gPokedexView->unk0[gPokedexView->pokemonListCount].seen = 1; @@ -2091,7 +2091,7 @@ static void SortPokedex(u8 dexMode, u8 sortMode) { vars[2] = gPokedexOrder_Weight[i]; - if (NationalToHoennOrder(vars[2]) <= vars[0] && GetNationalPokedexFlag(vars[2], 1)) + if (NationalToHoennOrder(vars[2]) <= vars[0] && GetSetPokedexFlag(vars[2], 1)) { gPokedexView->unk0[gPokedexView->pokemonListCount].dexNum = vars[2]; gPokedexView->unk0[gPokedexView->pokemonListCount].seen = 1; @@ -2105,7 +2105,7 @@ static void SortPokedex(u8 dexMode, u8 sortMode) { vars[2] = gPokedexOrder_Height[i]; - if (NationalToHoennOrder(vars[2]) <= vars[0] && GetNationalPokedexFlag(vars[2], 1)) + if (NationalToHoennOrder(vars[2]) <= vars[0] && GetSetPokedexFlag(vars[2], 1)) { gPokedexView->unk0[gPokedexView->pokemonListCount].dexNum = vars[2]; gPokedexView->unk0[gPokedexView->pokemonListCount].seen = 1; @@ -2119,7 +2119,7 @@ static void SortPokedex(u8 dexMode, u8 sortMode) { vars[2] = gPokedexOrder_Height[i]; - if (NationalToHoennOrder(vars[2]) <= vars[0] && GetNationalPokedexFlag(vars[2], 1)) + if (NationalToHoennOrder(vars[2]) <= vars[0] && GetSetPokedexFlag(vars[2], 1)) { gPokedexView->unk0[gPokedexView->pokemonListCount].dexNum = vars[2]; gPokedexView->unk0[gPokedexView->pokemonListCount].seen = 1; @@ -3944,7 +3944,7 @@ static void sub_8090B8C(u8 taskId) otId = ((u16)gTasks[taskId].data[13] << 16) | (u16)gTasks[taskId].data[12]; personality = ((u16)gTasks[taskId].data[15] << 16) | (u16)gTasks[taskId].data[14]; paletteNum = gSprites[gTasks[taskId].data[3]].oam.paletteNum; - lzPaletteData = species_and_otid_get_pal(species, otId, personality); + lzPaletteData = GetMonSpritePalFromOtIdPersonality(species, otId, personality); LoadCompressedPalette(lzPaletteData, 0x100 | paletteNum * 16, 32); DestroyTask(taskId); } @@ -4006,79 +4006,79 @@ u16 GetPokedexHeightWeight(u16 dexNum, u8 data) } } -s8 GetNationalPokedexFlag(u16 a, u8 b) +s8 GetSetPokedexFlag(u16 nationalDexNo, u8 caseID) { u8 index; u8 bit; u8 mask; s8 retVal; - a--; - index = a / 8; - bit = a % 8; + nationalDexNo--; + index = nationalDexNo / 8; + bit = nationalDexNo % 8; mask = 1 << bit; retVal = 0; - switch (b) + switch (caseID) { - case 0: + case FLAG_GET_SEEN: if (gSaveBlock2.pokedex.seen[index] & mask) { - if ((gSaveBlock2.pokedex.seen[index] & mask) == (gSaveBlock1.unk938[index] & mask) - && (gSaveBlock2.pokedex.seen[index] & mask) == (gSaveBlock1.unk3A8C[index] & mask)) + if ((gSaveBlock2.pokedex.seen[index] & mask) == (gSaveBlock1.dexSeen2[index] & mask) + && (gSaveBlock2.pokedex.seen[index] & mask) == (gSaveBlock1.dexSeen3[index] & mask)) retVal = 1; else { gSaveBlock2.pokedex.seen[index] &= ~mask; - gSaveBlock1.unk938[index] &= ~mask; - gSaveBlock1.unk3A8C[index] &= ~mask; + gSaveBlock1.dexSeen2[index] &= ~mask; + gSaveBlock1.dexSeen3[index] &= ~mask; retVal = 0; } } break; - case 1: + case FLAG_GET_CAUGHT: if (gSaveBlock2.pokedex.owned[index] & mask) { if ((gSaveBlock2.pokedex.owned[index] & mask) == (gSaveBlock2.pokedex.seen[index] & mask) - && (gSaveBlock2.pokedex.owned[index] & mask) == (gSaveBlock1.unk938[index] & mask) - && (gSaveBlock2.pokedex.owned[index] & mask) == (gSaveBlock1.unk3A8C[index] & mask)) + && (gSaveBlock2.pokedex.owned[index] & mask) == (gSaveBlock1.dexSeen2[index] & mask) + && (gSaveBlock2.pokedex.owned[index] & mask) == (gSaveBlock1.dexSeen3[index] & mask)) retVal = 1; else { gSaveBlock2.pokedex.owned[index] &= ~mask; gSaveBlock2.pokedex.seen[index] &= ~mask; - gSaveBlock1.unk938[index] &= ~mask; - gSaveBlock1.unk3A8C[index] &= ~mask; + gSaveBlock1.dexSeen2[index] &= ~mask; + gSaveBlock1.dexSeen3[index] &= ~mask; retVal = 0; } } break; - case 2: + case FLAG_SET_SEEN: gSaveBlock2.pokedex.seen[index] |= mask; - gSaveBlock1.unk938[index] |= mask; - gSaveBlock1.unk3A8C[index] |= mask; + gSaveBlock1.dexSeen2[index] |= mask; + gSaveBlock1.dexSeen3[index] |= mask; break; - case 3: + case FLAG_SET_CAUGHT: gSaveBlock2.pokedex.owned[index] |= mask; break; } return retVal; } -u16 GetNationalPokedexCount(u8 a) +u16 GetNationalPokedexCount(u8 caseID) { u16 count = 0; u16 i; for (i = 0; i < NATIONAL_DEX_COUNT; i++) { - switch (a) + switch (caseID) { - case 0: - if (GetNationalPokedexFlag(i + 1, 0) != 0) + case FLAG_GET_SEEN: + if (GetSetPokedexFlag(i + 1, FLAG_GET_SEEN)) count++; break; - case 1: - if (GetNationalPokedexFlag(i + 1, 1) != 0) + case FLAG_GET_CAUGHT: + if (GetSetPokedexFlag(i + 1, FLAG_GET_CAUGHT)) count++; break; } @@ -4086,21 +4086,21 @@ u16 GetNationalPokedexCount(u8 a) return count; } -u16 GetHoennPokedexCount(u8 a) +u16 GetHoennPokedexCount(u8 caseID) { u16 count = 0; u16 i; for (i = 0; i < 202; i++) { - switch (a) + switch (caseID) { - case 0: - if (GetNationalPokedexFlag(HoennToNationalOrder(i + 1), 0) != 0) + case FLAG_GET_SEEN: + if (GetSetPokedexFlag(HoennToNationalOrder(i + 1), FLAG_GET_SEEN)) count++; break; - case 1: - if (GetNationalPokedexFlag(HoennToNationalOrder(i + 1), 1) != 0) + case FLAG_GET_CAUGHT: + if (GetSetPokedexFlag(HoennToNationalOrder(i + 1), FLAG_GET_CAUGHT)) count++; break; } @@ -4114,7 +4114,7 @@ bool8 sub_8090FC0(void) for (i = 0; i < 200; i++) { - if (GetNationalPokedexFlag(HoennToNationalOrder(i + 1), 1) == 0) + if (!GetSetPokedexFlag(HoennToNationalOrder(i + 1), FLAG_GET_CAUGHT)) return FALSE; } return TRUE; @@ -4126,17 +4126,17 @@ u16 sub_8090FF4(void) for (i = 0; i < 150; i++) { - if (GetNationalPokedexFlag(i + 1, 1) == 0) + if (GetSetPokedexFlag(i + 1, 1) == 0) return 0; } for (i = 152; i < 250; i++) { - if (GetNationalPokedexFlag(i + 1, 1) == 0) + if (GetSetPokedexFlag(i + 1, 1) == 0) return 0; } for (i = 252; i < 384; i++) { - if (GetNationalPokedexFlag(i + 1, 1) == 0) + if (GetSetPokedexFlag(i + 1, 1) == 0) return 0; } return 1; diff --git a/src/pokedex_cry_screen.c b/src/pokemon/pokedex_cry_screen.c similarity index 100% rename from src/pokedex_cry_screen.c rename to src/pokemon/pokedex_cry_screen.c diff --git a/src/pokemon_1.c b/src/pokemon/pokemon_1.c similarity index 92% rename from src/pokemon_1.c rename to src/pokemon/pokemon_1.c index c55105ef3..1d597cb17 100644 --- a/src/pokemon_1.c +++ b/src/pokemon/pokemon_1.c @@ -4,7 +4,7 @@ #include "main.h" #include "pokemon.h" #include "rng.h" -#include "rom4.h" +#include "overworld.h" #include "species.h" #include "sprite.h" #include "string_util.h" @@ -17,8 +17,14 @@ #define LOHALF(n) ((n) & 0xFFFF) extern u8 unk_2000000[]; -extern u16 word_2024E82; -extern u8 byte_2024E88; +extern u16 gMoveToLearn; + +static EWRAM_DATA u8 sLearningMoveTableID = 0; + +u8 gPlayerPartyCount; +struct Pokemon gPlayerParty[6]; +u8 gEnemyPartyCount; +struct Pokemon gEnemyParty[6]; void ZeroBoxMonData(struct BoxPokemon *boxMon) { @@ -63,6 +69,7 @@ void ZeroEnemyPartyMons(void) void CreateMon(struct Pokemon *mon, u16 species, u8 level, u8 fixedIV, u8 hasFixedPersonality, u32 fixedPersonality, u8 otIdType, u32 fixedOtId) { u32 arg; + ZeroMonData(mon); CreateBoxMon(&mon->box, species, level, fixedIV, hasFixedPersonality, fixedPersonality, otIdType, fixedOtId); SetMonData(mon, MON_DATA_LEVEL, &level); @@ -249,29 +256,30 @@ void CreateMonWithIVsOTID(struct Pokemon *mon, u16 species, u8 level, u8 *ivs, u void CreateMonWithEVSpread(struct Pokemon *mon, u16 species, u8 level, u8 fixedIV, u8 evSpread) { s32 i; - register u32 temp asm("r4"); s32 statCount = 0; u16 evAmount; - register u32 mask1 asm("r1"); - u8 mask2; + u8 temp; CreateMon(mon, species, level, fixedIV, 0, 0, 0, 0); + temp = evSpread; - mask1 = 1; - for (i = 5; i >= 0; i--) + + for (i = 0; i < 6; i++) { - if (temp & mask1) + if (temp & 1) statCount++; temp >>= 1; } evAmount = 510 / statCount; - mask2 = 1; + + temp = 1; + for (i = 0; i < 6; i++) { - if (evSpread & mask2) + if (evSpread & temp) SetMonData(mon, MON_DATA_HP_EV + i, (u8 *)&evAmount); - mask2 <<= 1; + temp <<= 1; } CalculateMonStats(mon); @@ -443,29 +451,27 @@ void CalculateMonStats(struct Pokemon *mon) if (species == SPECIES_SHEDINJA) { if (currentHP != 0 || oldMaxHP == 0) - { currentHP = 1; - goto set_hp; - } + else + return; } else { - if (currentHP != 0 || oldMaxHP == 0) - { - if (currentHP != 0) - currentHP += newMaxHP - oldMaxHP; - else if (oldMaxHP == 0) - currentHP = newMaxHP; - set_hp: - SetMonData(mon, MON_DATA_HP, (u8 *)¤tHP); - } + if (currentHP == 0 && oldMaxHP == 0) + currentHP = newMaxHP; + else if (currentHP != 0) + currentHP += newMaxHP - oldMaxHP; + else + return; } + + SetMonData(mon, MON_DATA_HP, (u8 *)¤tHP); } -void sub_803B4B4(struct Pokemon *src, struct Pokemon *dest) +void sub_803B4B4(const struct BoxPokemon *src, struct Pokemon *dest) { u32 value = 0; - memcpy(&dest->box, &src->box, sizeof(struct BoxPokemon)); + dest->box = *src; SetMonData(dest, MON_DATA_STATUS, (u8 *)&value); SetMonData(dest, MON_DATA_HP, (u8 *)&value); SetMonData(dest, MON_DATA_MAX_HP, (u8 *)&value); @@ -578,29 +584,33 @@ void GiveBoxMonInitialMoveset(struct BoxPokemon *boxMon) } } -u16 sub_803B7C8(struct Pokemon *mon, u8 a2) +u16 MonTryLearningNewMove(struct Pokemon *mon, bool8 firstMove) { u32 retVal = 0; u16 species = GetMonData(mon, MON_DATA_SPECIES, NULL); u8 level = GetMonData(mon, MON_DATA_LEVEL, NULL); - if (a2) + // since you can learn more than one move per level + // the game needs to know whether you decided to + // learn it or keep the old set to avoid asking + // you to learn the same move over and over again + if (firstMove) { - byte_2024E88 = retVal; + sLearningMoveTableID = 0; - while ((gLevelUpLearnsets[species][byte_2024E88] & 0xFE00) != (level << 9)) + while ((gLevelUpLearnsets[species][sLearningMoveTableID] & 0xFE00) != (level << 9)) { - byte_2024E88++; - if (gLevelUpLearnsets[species][byte_2024E88] == (u16)-1) + sLearningMoveTableID++; + if (gLevelUpLearnsets[species][sLearningMoveTableID] == 0xFFFF) return 0; } } - if ((gLevelUpLearnsets[species][byte_2024E88] & 0xFE00) == (level << 9)) + if ((gLevelUpLearnsets[species][sLearningMoveTableID] & 0xFE00) == (level << 9)) { - word_2024E82 = (gLevelUpLearnsets[species][byte_2024E88] & 0x1FF); - byte_2024E88++; - retVal = GiveMoveToMon(mon, word_2024E82); + gMoveToLearn = (gLevelUpLearnsets[species][sLearningMoveTableID] & 0x1FF); + sLearningMoveTableID++; + retVal = GiveMoveToMon(mon, gMoveToLearn); } return retVal; diff --git a/src/pokemon_2.c b/src/pokemon/pokemon_2.c similarity index 94% rename from src/pokemon_2.c rename to src/pokemon/pokemon_2.c index 543b032e2..f02ce6170 100644 --- a/src/pokemon_2.c +++ b/src/pokemon/pokemon_2.c @@ -31,10 +31,11 @@ extern u8 gXXX_CritRelated; extern u16 gBattleWeather; extern struct BattleEnigmaBerry gEnigmaBerries[]; extern u16 gBattleMovePower; -extern struct SpriteTemplate gUnknown_02024E8C; extern u16 gTrainerBattleOpponent; extern struct PokemonStorage gPokemonStorage; +EWRAM_DATA struct SpriteTemplate gUnknown_02024E8C = {0}; + extern u8 gBadEggNickname[]; extern const struct SpriteTemplate gSpriteTemplate_8208288[]; //array of pointers to arrays of pointers to union AnimCmd (We probably need to typedef this.) @@ -79,125 +80,31 @@ u8 CountAliveMons(u8 a1) return retVal; } -#ifdef NONMATCHING u8 sub_803C434(u8 a1) { - u32 status0 = GetBankIdentity(a1); - register u8 status_ asm("r4"); - u8 status; - register u32 mask1 asm("r1") = 1; - register u32 mask2 asm("r6") = 1; - - status_ = mask2; - status_ &= status0; - status = status_ ^ mask1; - - { - register u16 val_ asm("r1") = gBattleTypeFlags; - u32 val = mask2; - val &= val_; - if (!val) - { - return GetBankByPlayerAI(status); - } - } + u8 status = GetBankIdentity(a1) & 1; + status ^= 1; + if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE)) + return GetBankByPlayerAI(status); if (CountAliveMons(0) > 1) { - u16 r = Random(); - register u32 val asm("r1") = mask2; - val &= r; - if (!val) - { - u32 status2 = 2; - status2 ^= status; - return GetBankByPlayerAI(status2); - } + u8 val; + + if ((Random() & 1) == 0) + val = status ^ 2; else - { - return GetBankByPlayerAI(status); - } + val = status; + return GetBankByPlayerAI(val); } else { - if (gAbsentBankFlags & gBitTable[status]) + if ((gAbsentBankFlags & gBitTable[status])) return GetBankByPlayerAI(status ^ 2); else return GetBankByPlayerAI(status); } } -#else -__attribute__((naked)) -u8 sub_803C434(u8 a1) -{ - asm(".syntax unified\n\ - push {r4-r6,lr}\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - bl GetBankIdentity\n\ - movs r1, 0x1\n\ - movs r6, 0x1\n\ - adds r4, r6, 0\n\ - ands r4, r0\n\ - eors r4, r1\n\ - adds r5, r4, 0\n\ - ldr r0, _0803C45C\n\ - ldrh r1, [r0]\n\ - adds r0, r6, 0\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - bne _0803C460\n\ - adds r0, r4, 0\n\ - b _0803C4AA\n\ - .align 2, 0\n\ -_0803C45C: .4byte gBattleTypeFlags\n\ -_0803C460:\n\ - movs r0, 0\n\ - bl CountAliveMons\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - cmp r0, 0x1\n\ - bls _0803C484\n\ - bl Random\n\ - adds r1, r6, 0\n\ - ands r1, r0\n\ - cmp r1, 0\n\ - bne _0803C480\n\ - movs r0, 0x2\n\ - eors r0, r4\n\ - b _0803C4AA\n\ -_0803C480:\n\ - adds r0, r4, 0\n\ - b _0803C4AA\n\ -_0803C484:\n\ - ldr r0, _0803C49C\n\ - ldrb r1, [r0]\n\ - ldr r2, _0803C4A0\n\ - lsls r0, r4, 2\n\ - adds r0, r2\n\ - ldr r0, [r0]\n\ - ands r1, r0\n\ - cmp r1, 0\n\ - bne _0803C4A4\n\ - adds r0, r4, 0\n\ - b _0803C4AA\n\ - .align 2, 0\n\ -_0803C49C: .4byte gAbsentBankFlags\n\ -_0803C4A0: .4byte gBitTable\n\ -_0803C4A4:\n\ - movs r0, 0x2\n\ - eors r5, r0\n\ - adds r0, r5, 0\n\ -_0803C4AA:\n\ - bl GetBankByPlayerAI\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - pop {r4-r6}\n\ - pop {r1}\n\ - bx r1\n\ - .syntax divided\n"); -} -#endif u8 GetMonGender(struct Pokemon *mon) { diff --git a/src/pokemon_3.c b/src/pokemon/pokemon_3.c similarity index 96% rename from src/pokemon_3.c rename to src/pokemon/pokemon_3.c index 3d85a1c8f..f3d0bee03 100644 --- a/src/pokemon_3.c +++ b/src/pokemon/pokemon_3.c @@ -11,7 +11,7 @@ #include "main.h" #include "pokemon.h" #include "rng.h" -#include "rom4.h" +#include "overworld.h" #include "rom_8077ABC.h" #include "rom_8094928.h" #include "rtc.h" @@ -278,7 +278,7 @@ u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 type, u16 evolutionItem) else holdEffect = ItemId_GetHoldEffect(heldItem); - if (holdEffect == 38 && type != 3) + if (holdEffect == HOLD_EFFECT_PREVENT_EVOLVE && type != 3) return 0; switch (type) @@ -457,7 +457,7 @@ u16 HoennToNationalOrder(u16 hoennNum) return gHoennToNationalOrder[hoennNum - 1]; } -u32 SpeciesToCryId(u16 species) +u16 SpeciesToCryId(u16 species) { if (species <= 250) return species; @@ -1096,7 +1096,7 @@ void ClearBattleMonForms(void) gBattleMonForms[i] = 0; } -u16 sub_8040728(void) +u16 GetBGM_ForBattle(void) { if (gBattleTypeFlags & BATTLE_TYPE_KYOGRE_GROUDON) return BGM_BATTLE34; @@ -1137,7 +1137,7 @@ void sub_80408BC(void) { ResetMapMusic(); m4aMPlayAllStop(); - PlayBGM(sub_8040728()); + PlayBGM(GetBGM_ForBattle()); } void current_map_music_set__default_for_battle(u16 song) @@ -1147,15 +1147,15 @@ void current_map_music_set__default_for_battle(u16 song) if (song) PlayNewMapMusic(song); else - PlayNewMapMusic(sub_8040728()); + PlayNewMapMusic(GetBGM_ForBattle()); } -const u8 *pokemon_get_pal(struct Pokemon *mon) +const u8 *GetMonSpritePal(struct Pokemon *mon) { u16 species = GetMonData(mon, MON_DATA_SPECIES2, 0); u32 otId = GetMonData(mon, MON_DATA_OT_ID, 0); u32 personality = GetMonData(mon, MON_DATA_PERSONALITY, 0); - return species_and_otid_get_pal(species, otId, personality); + return GetMonSpritePalFromOtIdPersonality(species, otId, personality); } //Extracts the upper 16 bits of a 32-bit number @@ -1164,7 +1164,7 @@ const u8 *pokemon_get_pal(struct Pokemon *mon) //Extracts the lower 16 bits of a 32-bit number #define LOHALF(n) ((n) & 0xFFFF) -const u8 *species_and_otid_get_pal(u16 species, u32 otId, u32 personality) +const u8 *GetMonSpritePalFromOtIdPersonality(u16 species, u32 otId, u32 personality) { u32 shinyValue; @@ -1178,15 +1178,15 @@ const u8 *species_and_otid_get_pal(u16 species, u32 otId, u32 personality) return gMonPaletteTable[species].data; } -const struct CompressedSpritePalette *sub_8040990(struct Pokemon *mon) +const struct CompressedSpritePalette *GetMonSpritePalStruct(struct Pokemon *mon) { u16 species = GetMonData(mon, MON_DATA_SPECIES2, 0); u32 otId = GetMonData(mon, MON_DATA_OT_ID, 0); u32 personality = GetMonData(mon, MON_DATA_PERSONALITY, 0); - return sub_80409C8(species, otId, personality); + return GetMonSpritePalStructFromOtIdPersonality(species, otId, personality); } -const struct CompressedSpritePalette *sub_80409C8(u16 species, u32 otId , u32 personality) +const struct CompressedSpritePalette *GetMonSpritePalStructFromOtIdPersonality(u16 species, u32 otId , u32 personality) { u32 shinyValue; @@ -1197,7 +1197,7 @@ const struct CompressedSpritePalette *sub_80409C8(u16 species, u32 otId , u32 pe return &gMonPaletteTable[species]; } -bool8 IsHMMove2(u16 move) +bool32 IsHMMove2(u16 move) { int i = 0; while (gHMMoves[i] != 0xFFFF) @@ -1208,9 +1208,9 @@ bool8 IsHMMove2(u16 move) return FALSE; } -bool8 sub_8040A3C(u16 species) +bool8 IsPokeSpriteNotFlipped(u16 species) { - return gBaseStats[species].unk19_7; + return gBaseStats[species].noFlip; } s8 sub_8040A54(struct Pokemon *mon, u8 a2) @@ -1219,7 +1219,7 @@ s8 sub_8040A54(struct Pokemon *mon, u8 a2) return gPokeblockFlavorCompatibilityTable[nature * 5 + a2]; } -s8 sub_8040A7C(u32 personality, u8 a2) +s8 GetPokeFlavourRelation(u32 personality, u8 a2) { u8 nature = GetNatureFromPersonality(personality); return gPokeblockFlavorCompatibilityTable[nature * 5 + a2]; @@ -1337,7 +1337,7 @@ u8 *sub_8040D08(void) return gLinkPlayers[sub_803FC34(gLinkPlayers[id].lp_field_18 ^ 2)].name; } -bool32 sub_8040D3C(u16 species, u8 *name, u8 language) +bool32 ShouldHideGenderIconForLanguage(u16 species, u8 *name, u8 language) { bool32 retVal = FALSE; if (species == SPECIES_NIDORAN_M || species == SPECIES_NIDORAN_F) @@ -1362,12 +1362,12 @@ bool32 sub_8040D3C(u16 species, u8 *name, u8 language) return retVal; } -bool32 sub_8040D8C(u16 species, u8 *name) +bool32 ShouldHideGenderIcon(u16 species, u8 *name) { u8 language = GAME_LANGUAGE; if (name[0] == 0xFC && name[1] == 21) language = LANGUAGE_JAPANESE; - return sub_8040D3C(species, name, language); + return ShouldHideGenderIconForLanguage(species, name, language); } bool32 unref_sub_8040DAC(struct Pokemon *mon) @@ -1376,5 +1376,5 @@ bool32 unref_sub_8040DAC(struct Pokemon *mon) u16 species = GetMonData(mon, MON_DATA_SPECIES, 0); u8 language = GetMonData(mon, MON_DATA_LANGUAGE, 0); GetMonData(mon, MON_DATA_NICKNAME, name); - return sub_8040D3C(species, name, language); + return ShouldHideGenderIconForLanguage(species, name, language); } diff --git a/src/pokemon_data.c b/src/pokemon/pokemon_data.c similarity index 100% rename from src/pokemon_data.c rename to src/pokemon/pokemon_data.c diff --git a/src/pokemon/pokemon_icon.c b/src/pokemon/pokemon_icon.c new file mode 100644 index 000000000..9bb3386e1 --- /dev/null +++ b/src/pokemon/pokemon_icon.c @@ -0,0 +1,1273 @@ +#include "global.h" +#include "graphics.h" +#include "mail_data.h" +#include "species.h" +#include "sprite.h" + +#define POKE_ICON_BASE_PAL_TAG 56000 + +struct MonIconSpriteTemplate +{ + const struct OamData *oam; + const u8 *image; + const union AnimCmd *const *anims; + const union AffineAnimCmd *const *affineAnims; + void (*callback)(struct Sprite *); + u16 paletteTag; +}; + +const u8 * const gMonIconTable[] = +{ + gMonIcon_Bulbasaur, + gMonIcon_Bulbasaur, + gMonIcon_Ivysaur, + gMonIcon_Venusaur, + gMonIcon_Charmander, + gMonIcon_Charmeleon, + gMonIcon_Charizard, + gMonIcon_Squirtle, + gMonIcon_Wartortle, + gMonIcon_Blastoise, + gMonIcon_Caterpie, + gMonIcon_Metapod, + gMonIcon_Butterfree, + gMonIcon_Weedle, + gMonIcon_Kakuna, + gMonIcon_Beedrill, + gMonIcon_Pidgey, + gMonIcon_Pidgeotto, + gMonIcon_Pidgeot, + gMonIcon_Rattata, + gMonIcon_Raticate, + gMonIcon_Spearow, + gMonIcon_Fearow, + gMonIcon_Ekans, + gMonIcon_Arbok, + gMonIcon_Pikachu, + gMonIcon_Raichu, + gMonIcon_Sandshrew, + gMonIcon_Sandslash, + gMonIcon_NidoranF, + gMonIcon_Nidorina, + gMonIcon_Nidoqueen, + gMonIcon_NidoranM, + gMonIcon_Nidorino, + gMonIcon_Nidoking, + gMonIcon_Clefairy, + gMonIcon_Clefable, + gMonIcon_Vulpix, + gMonIcon_Ninetales, + gMonIcon_Jigglypuff, + gMonIcon_Wigglytuff, + gMonIcon_Zubat, + gMonIcon_Golbat, + gMonIcon_Oddish, + gMonIcon_Gloom, + gMonIcon_Vileplume, + gMonIcon_Paras, + gMonIcon_Parasect, + gMonIcon_Venonat, + gMonIcon_Venomoth, + gMonIcon_Diglett, + gMonIcon_Dugtrio, + gMonIcon_Meowth, + gMonIcon_Persian, + gMonIcon_Psyduck, + gMonIcon_Golduck, + gMonIcon_Mankey, + gMonIcon_Primeape, + gMonIcon_Growlithe, + gMonIcon_Arcanine, + gMonIcon_Poliwag, + gMonIcon_Poliwhirl, + gMonIcon_Poliwrath, + gMonIcon_Abra, + gMonIcon_Kadabra, + gMonIcon_Alakazam, + gMonIcon_Machop, + gMonIcon_Machoke, + gMonIcon_Machamp, + gMonIcon_Bellsprout, + gMonIcon_Weepinbell, + gMonIcon_Victreebel, + gMonIcon_Tentacool, + gMonIcon_Tentacruel, + gMonIcon_Geodude, + gMonIcon_Graveler, + gMonIcon_Golem, + gMonIcon_Ponyta, + gMonIcon_Rapidash, + gMonIcon_Slowpoke, + gMonIcon_Slowbro, + gMonIcon_Magnemite, + gMonIcon_Magneton, + gMonIcon_Farfetchd, + gMonIcon_Doduo, + gMonIcon_Dodrio, + gMonIcon_Seel, + gMonIcon_Dewgong, + gMonIcon_Grimer, + gMonIcon_Muk, + gMonIcon_Shellder, + gMonIcon_Cloyster, + gMonIcon_Gastly, + gMonIcon_Haunter, + gMonIcon_Gengar, + gMonIcon_Onix, + gMonIcon_Drowzee, + gMonIcon_Hypno, + gMonIcon_Krabby, + gMonIcon_Kingler, + gMonIcon_Voltorb, + gMonIcon_Electrode, + gMonIcon_Exeggcute, + gMonIcon_Exeggutor, + gMonIcon_Cubone, + gMonIcon_Marowak, + gMonIcon_Hitmonlee, + gMonIcon_Hitmonchan, + gMonIcon_Lickitung, + gMonIcon_Koffing, + gMonIcon_Weezing, + gMonIcon_Rhyhorn, + gMonIcon_Rhydon, + gMonIcon_Chansey, + gMonIcon_Tangela, + gMonIcon_Kangaskhan, + gMonIcon_Horsea, + gMonIcon_Seadra, + gMonIcon_Goldeen, + gMonIcon_Seaking, + gMonIcon_Staryu, + gMonIcon_Starmie, + gMonIcon_Mrmime, + gMonIcon_Scyther, + gMonIcon_Jynx, + gMonIcon_Electabuzz, + gMonIcon_Magmar, + gMonIcon_Pinsir, + gMonIcon_Tauros, + gMonIcon_Magikarp, + gMonIcon_Gyarados, + gMonIcon_Lapras, + gMonIcon_Ditto, + gMonIcon_Eevee, + gMonIcon_Vaporeon, + gMonIcon_Jolteon, + gMonIcon_Flareon, + gMonIcon_Porygon, + gMonIcon_Omanyte, + gMonIcon_Omastar, + gMonIcon_Kabuto, + gMonIcon_Kabutops, + gMonIcon_Aerodactyl, + gMonIcon_Snorlax, + gMonIcon_Articuno, + gMonIcon_Zapdos, + gMonIcon_Moltres, + gMonIcon_Dratini, + gMonIcon_Dragonair, + gMonIcon_Dragonite, + gMonIcon_Mewtwo, + gMonIcon_Mew, + gMonIcon_Chikorita, + gMonIcon_Bayleef, + gMonIcon_Meganium, + gMonIcon_Cyndaquil, + gMonIcon_Quilava, + gMonIcon_Typhlosion, + gMonIcon_Totodile, + gMonIcon_Croconaw, + gMonIcon_Feraligatr, + gMonIcon_Sentret, + gMonIcon_Furret, + gMonIcon_Hoothoot, + gMonIcon_Noctowl, + gMonIcon_Ledyba, + gMonIcon_Ledian, + gMonIcon_Spinarak, + gMonIcon_Ariados, + gMonIcon_Crobat, + gMonIcon_Chinchou, + gMonIcon_Lanturn, + gMonIcon_Pichu, + gMonIcon_Cleffa, + gMonIcon_Igglybuff, + gMonIcon_Togepi, + gMonIcon_Togetic, + gMonIcon_Natu, + gMonIcon_Xatu, + gMonIcon_Mareep, + gMonIcon_Flaaffy, + gMonIcon_Ampharos, + gMonIcon_Bellossom, + gMonIcon_Marill, + gMonIcon_Azumarill, + gMonIcon_Sudowoodo, + gMonIcon_Politoed, + gMonIcon_Hoppip, + gMonIcon_Skiploom, + gMonIcon_Jumpluff, + gMonIcon_Aipom, + gMonIcon_Sunkern, + gMonIcon_Sunflora, + gMonIcon_Yanma, + gMonIcon_Wooper, + gMonIcon_Quagsire, + gMonIcon_Espeon, + gMonIcon_Umbreon, + gMonIcon_Murkrow, + gMonIcon_Slowking, + gMonIcon_Misdreavus, + gMonIcon_UnownA, + gMonIcon_Wobbuffet, + gMonIcon_Girafarig, + gMonIcon_Pineco, + gMonIcon_Forretress, + gMonIcon_Dunsparce, + gMonIcon_Gligar, + gMonIcon_Steelix, + gMonIcon_Snubbull, + gMonIcon_Granbull, + gMonIcon_Qwilfish, + gMonIcon_Scizor, + gMonIcon_Shuckle, + gMonIcon_Heracross, + gMonIcon_Sneasel, + gMonIcon_Teddiursa, + gMonIcon_Ursaring, + gMonIcon_Slugma, + gMonIcon_Magcargo, + gMonIcon_Swinub, + gMonIcon_Piloswine, + gMonIcon_Corsola, + gMonIcon_Remoraid, + gMonIcon_Octillery, + gMonIcon_Delibird, + gMonIcon_Mantine, + gMonIcon_Skarmory, + gMonIcon_Houndour, + gMonIcon_Houndoom, + gMonIcon_Kingdra, + gMonIcon_Phanpy, + gMonIcon_Donphan, + gMonIcon_Porygon2, + gMonIcon_Stantler, + gMonIcon_Smeargle, + gMonIcon_Tyrogue, + gMonIcon_Hitmontop, + gMonIcon_Smoochum, + gMonIcon_Elekid, + gMonIcon_Magby, + gMonIcon_Miltank, + gMonIcon_Blissey, + gMonIcon_Raikou, + gMonIcon_Entei, + gMonIcon_Suicune, + gMonIcon_Larvitar, + gMonIcon_Pupitar, + gMonIcon_Tyranitar, + gMonIcon_Lugia, + gMonIcon_HoOh, + gMonIcon_Celebi, + gMonIcon_QuestionMark, + gMonIcon_QuestionMark, + gMonIcon_QuestionMark, + gMonIcon_QuestionMark, + gMonIcon_QuestionMark, + gMonIcon_QuestionMark, + gMonIcon_QuestionMark, + gMonIcon_QuestionMark, + gMonIcon_QuestionMark, + gMonIcon_QuestionMark, + gMonIcon_QuestionMark, + gMonIcon_QuestionMark, + gMonIcon_QuestionMark, + gMonIcon_QuestionMark, + gMonIcon_QuestionMark, + gMonIcon_QuestionMark, + gMonIcon_QuestionMark, + gMonIcon_QuestionMark, + gMonIcon_QuestionMark, + gMonIcon_QuestionMark, + gMonIcon_QuestionMark, + gMonIcon_QuestionMark, + gMonIcon_QuestionMark, + gMonIcon_QuestionMark, + gMonIcon_QuestionMark, + gMonIcon_Treecko, + gMonIcon_Grovyle, + gMonIcon_Sceptile, + gMonIcon_Torchic, + gMonIcon_Combusken, + gMonIcon_Blaziken, + gMonIcon_Mudkip, + gMonIcon_Marshtomp, + gMonIcon_Swampert, + gMonIcon_Poochyena, + gMonIcon_Mightyena, + gMonIcon_Zigzagoon, + gMonIcon_Linoone, + gMonIcon_Wurmple, + gMonIcon_Silcoon, + gMonIcon_Beautifly, + gMonIcon_Cascoon, + gMonIcon_Dustox, + gMonIcon_Lotad, + gMonIcon_Lombre, + gMonIcon_Ludicolo, + gMonIcon_Seedot, + gMonIcon_Nuzleaf, + gMonIcon_Shiftry, + gMonIcon_Nincada, + gMonIcon_Ninjask, + gMonIcon_Shedinja, + gMonIcon_Taillow, + gMonIcon_Swellow, + gMonIcon_Shroomish, + gMonIcon_Breloom, + gMonIcon_Spinda, + gMonIcon_Wingull, + gMonIcon_Pelipper, + gMonIcon_Surskit, + gMonIcon_Masquerain, + gMonIcon_Wailmer, + gMonIcon_Wailord, + gMonIcon_Skitty, + gMonIcon_Delcatty, + gMonIcon_Kecleon, + gMonIcon_Baltoy, + gMonIcon_Claydol, + gMonIcon_Nosepass, + gMonIcon_Torkoal, + gMonIcon_Sableye, + gMonIcon_Barboach, + gMonIcon_Whiscash, + gMonIcon_Luvdisc, + gMonIcon_Corphish, + gMonIcon_Crawdaunt, + gMonIcon_Feebas, + gMonIcon_Milotic, + gMonIcon_Carvanha, + gMonIcon_Sharpedo, + gMonIcon_Trapinch, + gMonIcon_Vibrava, + gMonIcon_Flygon, + gMonIcon_Makuhita, + gMonIcon_Hariyama, + gMonIcon_Electrike, + gMonIcon_Manectric, + gMonIcon_Numel, + gMonIcon_Camerupt, + gMonIcon_Spheal, + gMonIcon_Sealeo, + gMonIcon_Walrein, + gMonIcon_Cacnea, + gMonIcon_Cacturne, + gMonIcon_Snorunt, + gMonIcon_Glalie, + gMonIcon_Lunatone, + gMonIcon_Solrock, + gMonIcon_Azurill, + gMonIcon_Spoink, + gMonIcon_Grumpig, + gMonIcon_Plusle, + gMonIcon_Minun, + gMonIcon_Mawile, + gMonIcon_Meditite, + gMonIcon_Medicham, + gMonIcon_Swablu, + gMonIcon_Altaria, + gMonIcon_Wynaut, + gMonIcon_Duskull, + gMonIcon_Dusclops, + gMonIcon_Roselia, + gMonIcon_Slakoth, + gMonIcon_Vigoroth, + gMonIcon_Slaking, + gMonIcon_Gulpin, + gMonIcon_Swalot, + gMonIcon_Tropius, + gMonIcon_Whismur, + gMonIcon_Loudred, + gMonIcon_Exploud, + gMonIcon_Clamperl, + gMonIcon_Huntail, + gMonIcon_Gorebyss, + gMonIcon_Absol, + gMonIcon_Shuppet, + gMonIcon_Banette, + gMonIcon_Seviper, + gMonIcon_Zangoose, + gMonIcon_Relicanth, + gMonIcon_Aron, + gMonIcon_Lairon, + gMonIcon_Aggron, + gMonIcon_Castform, + gMonIcon_Volbeat, + gMonIcon_Illumise, + gMonIcon_Lileep, + gMonIcon_Cradily, + gMonIcon_Anorith, + gMonIcon_Armaldo, + gMonIcon_Ralts, + gMonIcon_Kirlia, + gMonIcon_Gardevoir, + gMonIcon_Bagon, + gMonIcon_Shelgon, + gMonIcon_Salamence, + gMonIcon_Beldum, + gMonIcon_Metang, + gMonIcon_Metagross, + gMonIcon_Regirock, + gMonIcon_Regice, + gMonIcon_Registeel, + gMonIcon_Kyogre, + gMonIcon_Groudon, + gMonIcon_Rayquaza, + gMonIcon_Latias, + gMonIcon_Latios, + gMonIcon_Jirachi, + gMonIcon_Deoxys, + gMonIcon_Chimecho, + gMonIcon_Egg, + gMonIcon_UnownB, + gMonIcon_UnownC, + gMonIcon_UnownD, + gMonIcon_UnownE, + gMonIcon_UnownF, + gMonIcon_UnownG, + gMonIcon_UnownH, + gMonIcon_UnownI, + gMonIcon_UnownJ, + gMonIcon_UnownK, + gMonIcon_UnownL, + gMonIcon_UnownM, + gMonIcon_UnownN, + gMonIcon_UnownO, + gMonIcon_UnownP, + gMonIcon_UnownQ, + gMonIcon_UnownR, + gMonIcon_UnownS, + gMonIcon_UnownT, + gMonIcon_UnownU, + gMonIcon_UnownV, + gMonIcon_UnownW, + gMonIcon_UnownX, + gMonIcon_UnownY, + gMonIcon_UnownZ, + gMonIcon_UnownExclamationMark, + gMonIcon_UnownQuestionMark, +}; + +const u8 gMonIconPaletteIndices[] = +{ + 0, // ?????????? + 1, // Bulbasaur + 1, // Ivysaur + 1, // Venusaur + 0, // Charmander + 0, // Charmeleon + 0, // Charizard + 0, // Squirtle + 2, // Wartortle + 2, // Blastoise + 1, // Caterpie + 1, // Metapod + 0, // Butterfree + 1, // Weedle + 2, // Kakuna + 2, // Beedrill + 0, // Pidgey + 0, // Pidgeotto + 0, // Pidgeot + 2, // Rattata + 1, // Raticate + 0, // Spearow + 0, // Fearow + 2, // Ekans + 2, // Arbok + 2, // Pikachu + 0, // Raichu + 2, // Sandshrew + 2, // Sandslash + 2, // Nidoran♀ + 2, // Nidorina + 2, // Nidoqueen + 2, // Nidoran♂ + 2, // Nidorino + 2, // Nidoking + 0, // Clefairy + 0, // Clefable + 2, // Vulpix + 1, // Ninetales + 0, // Jigglypuff + 0, // Wigglytuff + 2, // Zubat + 2, // Golbat + 1, // Oddish + 0, // Gloom + 0, // Vileplume + 0, // Paras + 0, // Parasect + 0, // Venonat + 2, // Venomoth + 2, // Diglett + 2, // Dugtrio + 1, // Meowth + 1, // Persian + 1, // Psyduck + 2, // Golduck + 1, // Mankey + 2, // Primeape + 0, // Growlithe + 0, // Arcanine + 0, // Poliwag + 0, // Poliwhirl + 0, // Poliwrath + 2, // Abra + 2, // Kadabra + 2, // Alakazam + 0, // Machop + 2, // Machoke + 0, // Machamp + 1, // Bellsprout + 1, // Weepinbell + 1, // Victreebel + 2, // Tentacool + 2, // Tentacruel + 1, // Geodude + 1, // Graveler + 1, // Golem + 0, // Ponyta + 0, // Rapidash + 0, // Slowpoke + 0, // Slowbro + 0, // Magnemite + 0, // Magneton + 1, // Farfetch'd + 2, // Doduo + 2, // Dodrio + 2, // Seel + 2, // Dewgong + 2, // Grimer + 2, // Muk + 2, // Shellder + 2, // Cloyster + 2, // Gastly + 2, // Haunter + 2, // Gengar + 2, // Onix + 2, // Drowzee + 1, // Hypno + 2, // Krabby + 2, // Kingler + 0, // Voltorb + 0, // Electrode + 0, // Exeggcute + 1, // Exeggutor + 1, // Cubone + 1, // Marowak + 2, // Hitmonlee + 2, // Hitmonchan + 1, // Lickitung + 2, // Koffing + 2, // Weezing + 1, // Rhyhorn + 1, // Rhydon + 0, // Chansey + 0, // Tangela + 1, // Kangaskhan + 0, // Horsea + 0, // Seadra + 0, // Goldeen + 0, // Seaking + 2, // Staryu + 2, // Starmie + 0, // Mr. mime + 1, // Scyther + 2, // Jynx + 1, // Electabuzz + 0, // Magmar + 2, // Pinsir + 2, // Tauros + 0, // Magikarp + 0, // Gyarados + 2, // Lapras + 2, // Ditto + 2, // Eevee + 0, // Vaporeon + 0, // Jolteon + 0, // Flareon + 0, // Porygon + 0, // Omanyte + 0, // Omastar + 2, // Kabuto + 2, // Kabutops + 0, // Aerodactyl + 1, // Snorlax + 0, // Articuno + 0, // Zapdos + 0, // Moltres + 0, // Dratini + 0, // Dragonair + 2, // Dragonite + 2, // Mewtwo + 0, // Mew + 1, // Chikorita + 1, // Bayleef + 1, // Meganium + 1, // Cyndaquil + 1, // Quilava + 1, // Typhlosion + 2, // Totodile + 2, // Croconaw + 2, // Feraligatr + 2, // Sentret + 2, // Furret + 2, // Hoothoot + 2, // Noctowl + 0, // Ledyba + 0, // Ledian + 1, // Spinarak + 0, // Ariados + 2, // Crobat + 2, // Chinchou + 0, // Lanturn + 0, // Pichu + 0, // Cleffa + 1, // Igglybuff + 2, // Togepi + 2, // Togetic + 0, // Natu + 0, // Xatu + 2, // Mareep + 0, // Flaaffy + 0, // Ampharos + 1, // Bellossom + 2, // Marill + 2, // Azumarill + 1, // Sudowoodo + 1, // Politoed + 1, // Hoppip + 1, // Skiploom + 2, // Jumpluff + 2, // Aipom + 1, // Sunkern + 1, // Sunflora + 1, // Yanma + 0, // Wooper + 0, // Quagsire + 2, // Espeon + 2, // Umbreon + 2, // Murkrow + 0, // Slowking + 0, // Misdreavus + 0, // Unown A + 0, // Wobbuffet + 1, // Girafarig + 0, // Pineco + 2, // Forretress + 2, // Dunsparce + 2, // Gligar + 0, // Steelix + 0, // Snubbull + 2, // Granbull + 0, // Qwilfish + 0, // Scizor + 1, // Shuckle + 2, // Heracross + 0, // Sneasel + 0, // Teddiursa + 2, // Ursaring + 0, // Slugma + 0, // Magcargo + 2, // Swinub + 2, // Piloswine + 0, // Corsola + 0, // Remoraid + 0, // Octillery + 0, // Delibird + 2, // Mantine + 0, // Skarmory + 0, // Houndour + 0, // Houndoom + 0, // Kingdra + 0, // Phanpy + 0, // Donphan + 0, // Porygon2 + 2, // Stantler + 1, // Smeargle + 2, // Tyrogue + 2, // Hitmontop + 1, // Smoochum + 1, // Elekid + 1, // Magby + 1, // Miltank + 1, // Blissey + 0, // Raikou + 2, // Entei + 0, // Suicune + 1, // Larvitar + 0, // Pupitar + 1, // Tyranitar + 0, // Lugia + 1, // Ho-Oh + 1, // Celebi + 0, // ? + 0, // ? + 0, // ? + 0, // ? + 0, // ? + 0, // ? + 0, // ? + 0, // ? + 0, // ? + 0, // ? + 0, // ? + 0, // ? + 0, // ? + 0, // ? + 0, // ? + 0, // ? + 0, // ? + 0, // ? + 0, // ? + 0, // ? + 0, // ? + 0, // ? + 0, // ? + 0, // ? + 0, // ? + 1, // Treecko + 0, // Grovyle + 1, // Sceptile + 0, // Torchic + 0, // Combusken + 0, // Blaziken + 0, // Mudkip + 0, // Marshtomp + 0, // Swampert + 2, // Poochyena + 2, // Mightyena + 2, // Zigzagoon + 2, // Linoone + 0, // Wurmple + 2, // Silcoon + 0, // Beautifly + 2, // Cascoon + 1, // Dustox + 1, // Lotad + 1, // Lombre + 1, // Ludicolo + 1, // Seedot + 1, // Nuzleaf + 0, // Shiftry + 1, // Nincada + 1, // Ninjask + 1, // Shedinja + 2, // Taillow + 2, // Swellow + 1, // Shroomish + 1, // Breloom + 1, // Spinda + 0, // Wingull + 0, // Pelipper + 2, // Surskit + 0, // Masquerain + 2, // Wailmer + 0, // Wailord + 0, // Skitty + 2, // Delcatty + 1, // Kecleon + 1, // Baltoy + 0, // Claydol + 0, // Nosepass + 1, // Torkoal + 2, // Sableye + 0, // Barboach + 0, // Whiscash + 0, // Luvdisc + 0, // Corphish + 0, // Crawdaunt + 2, // Feebas + 0, // Milotic + 0, // Carvanha + 0, // Sharpedo + 1, // Trapinch + 1, // Vibrava + 1, // Flygon + 2, // Makuhita + 1, // Hariyama + 1, // Electrike + 0, // Manectric + 1, // Numel + 0, // Camerupt + 2, // Spheal + 2, // Sealeo + 0, // Walrein + 1, // Cacnea + 1, // Cacturne + 2, // Snorunt + 0, // Glalie + 1, // Lunatone + 0, // Solrock + 2, // Azurill + 0, // Spoink + 2, // Grumpig + 0, // Plusle + 0, // Minun + 2, // Mawile + 0, // Meditite + 0, // Medicham + 0, // Swablu + 0, // Altaria + 0, // Wynaut + 0, // Duskull + 0, // Dusclops + 0, // Roselia + 2, // Slakoth + 2, // Vigoroth + 1, // Slaking + 1, // Gulpin + 2, // Swalot + 1, // Tropius + 0, // Whismur + 2, // Loudred + 2, // Exploud + 0, // Clamperl + 0, // Huntail + 0, // Gorebyss + 0, // Absol + 0, // Shuppet + 0, // Banette + 2, // Seviper + 0, // Zangoose + 1, // Relicanth + 2, // Aron + 2, // Lairon + 2, // Aggron + 0, // Castform + 0, // Volbeat + 2, // Illumise + 2, // Lileep + 0, // Cradily + 0, // Anorith + 0, // Armaldo + 1, // Ralts + 1, // Kirlia + 1, // Gardevoir + 2, // Bagon + 2, // Shelgon + 0, // Salamence + 0, // Beldum + 0, // Metang + 0, // Metagross + 2, // Regirock + 2, // Regice + 2, // Registeel + 2, // Kyogre + 0, // Groudon + 1, // Rayquaza + 0, // Latias + 2, // Latios + 0, // Jirachi + 0, // Deoxys + 0, // Chimecho + 1, // Egg + 0, // Unown B + 0, // Unown C + 0, // Unown D + 0, // Unown E + 0, // Unown F + 0, // Unown G + 0, // Unown H + 0, // Unown I + 0, // Unown J + 0, // Unown K + 0, // Unown L + 0, // Unown M + 0, // Unown N + 0, // Unown O + 0, // Unown P + 0, // Unown Q + 0, // Unown R + 0, // Unown S + 0, // Unown T + 0, // Unown U + 0, // Unown V + 0, // Unown W + 0, // Unown X + 0, // Unown Y + 0, // Unown Z + 0, // Unown Exclamation Mark + 0, // Unown Question Mark +}; + +const struct SpritePalette gMonIconPaletteTable[] = +{ + { gMonIconPalettes[0], POKE_ICON_BASE_PAL_TAG + 0 }, + { gMonIconPalettes[1], POKE_ICON_BASE_PAL_TAG + 1 }, + { gMonIconPalettes[2], POKE_ICON_BASE_PAL_TAG + 2 }, + +// There are only 3 actual palettes. The following are unused +// and don't point to valid data. + { gMonIconPalettes[3], POKE_ICON_BASE_PAL_TAG + 3 }, + { gMonIconPalettes[4], POKE_ICON_BASE_PAL_TAG + 4 }, + { gMonIconPalettes[5], POKE_ICON_BASE_PAL_TAG + 5 }, +}; + +static const struct OamData sMonIconOamData = +{ + .size = 2, + .priority = 1, +}; + +// fastest to slowest + +static const union AnimCmd sAnim_0[] = +{ + ANIMCMD_FRAME(0, 6), + ANIMCMD_FRAME(1, 6), + ANIMCMD_JUMP(0), +}; + +static const union AnimCmd sAnim_1[] = +{ + ANIMCMD_FRAME(0, 8), + ANIMCMD_FRAME(1, 8), + ANIMCMD_JUMP(0), +}; + +static const union AnimCmd sAnim_2[] = +{ + ANIMCMD_FRAME(0, 14), + ANIMCMD_FRAME(1, 14), + ANIMCMD_JUMP(0), +}; + +static const union AnimCmd sAnim_3[] = +{ + ANIMCMD_FRAME(0, 22), + ANIMCMD_FRAME(1, 22), + ANIMCMD_JUMP(0), +}; + +static const union AnimCmd sAnim_4[] = +{ + ANIMCMD_FRAME(0, 29), + ANIMCMD_FRAME(0, 29), // frame 0 is repeated + ANIMCMD_JUMP(0), +}; + +static const union AnimCmd *const sMonIconAnims[] = +{ + sAnim_0, + sAnim_1, + sAnim_2, + sAnim_3, + sAnim_4, +}; + +static const union AffineAnimCmd sAffineAnim_0[] = +{ + AFFINEANIMCMD_FRAME(0, 0, 0, 10), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd sAffineAnim_1[] = +{ + AFFINEANIMCMD_FRAME(-2, -2, 0, 122), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd *const sMonIconAffineAnims[] = +{ + sAffineAnim_0, + sAffineAnim_1, +}; + +const u16 sSpriteImageSizes[3][4] = +{ + // square + { + 0x20, // 1×1 + 0x80, // 2×2 + 0x200, // 4×4 + 0x800, // 8×8 + }, + + // horizontal rectangle + { + 0x40, // 2×1 + 0x80, // 4×1 + 0x100, // 4×2 + 0x400, // 8×4 + }, + + // vertical rectangle + { + 0x40, // 1×2 + 0x80, // 1×4 + 0x100, // 2×4 + 0x400, // 4×8 + }, +}; + +u16 GetUnownLetterByPersonality(u32); +const u8 *GetMonIconPtr(u16, u32 personality); +u8 UpdateMonIconFrame(struct Sprite *); +u8 CreateMonIconSprite(struct MonIconSpriteTemplate *, s16, s16, u8); +void sub_809D7E8(struct Sprite *); + +// duplicate of sub_809D3A4 +u8 unref_sub_809D26C(u16 species, void (*callback)(struct Sprite *), s16 x, s16 y, u8 subpriority) +{ + u8 spriteId; + struct MonIconSpriteTemplate iconTemplate = + { + .oam = &sMonIconOamData, + .image = gMonIconTable[species], + .anims = sMonIconAnims, + .affineAnims = sMonIconAffineAnims, + .callback = callback, + .paletteTag = POKE_ICON_BASE_PAL_TAG + gMonIconPaletteIndices[species], + }; + + spriteId = CreateMonIconSprite(&iconTemplate, x, y, subpriority); + + UpdateMonIconFrame(&gSprites[spriteId]); + + return spriteId; +} + +u8 CreateMonIcon(u16 species, void (*callback)(struct Sprite *), s16 x, s16 y, u8 subpriority, u32 personality) +{ + u8 spriteId; + struct MonIconSpriteTemplate iconTemplate = + { + .oam = &sMonIconOamData, + .image = GetMonIconPtr(species, personality), + .anims = sMonIconAnims, + .affineAnims = sMonIconAffineAnims, + .callback = callback, + .paletteTag = POKE_ICON_BASE_PAL_TAG + gMonIconPaletteIndices[species], + }; + + if (species > SPECIES_EGG) + iconTemplate.paletteTag = POKE_ICON_BASE_PAL_TAG; + + spriteId = CreateMonIconSprite(&iconTemplate, x, y, subpriority); + + UpdateMonIconFrame(&gSprites[spriteId]); + + return spriteId; +} + +u8 sub_809D3A4(u16 species, void (*callback)(struct Sprite *), s16 x, s16 y, u8 subpriority) +{ + u8 spriteId; + struct MonIconSpriteTemplate iconTemplate = + { + .oam = &sMonIconOamData, + .image = gMonIconTable[species], + .anims = sMonIconAnims, + .affineAnims = sMonIconAffineAnims, + .callback = callback, + .paletteTag = POKE_ICON_BASE_PAL_TAG + gMonIconPaletteIndices[species], + }; + + spriteId = CreateMonIconSprite(&iconTemplate, x, y, subpriority); + + UpdateMonIconFrame(&gSprites[spriteId]); + + return spriteId; +} + +u16 mon_icon_convert_unown_species_id(u16 species, u32 personality) +{ + u16 result; + + if (species == SPECIES_UNOWN) + { + u16 letter = GetUnownLetterByPersonality(personality); + if (letter == 0) + letter = SPECIES_UNOWN; + else + letter += (SPECIES_UNOWN_B - 1); + result = letter; + } + else + { + if (species > SPECIES_EGG) + result = 260; + else + result = species; + } + + return result; +} + +u16 GetUnownLetterByPersonality(u32 personality) +{ + return (((personality & 0x3000000) >> 18) | ((personality & 0x30000) >> 12) | ((personality & 0x300) >> 6) | (personality & 0x3)) % 0x1C; +} + +u16 sub_809D4A8(u16 species) +{ + u16 value; + + if (MailSpeciesToSpecies(species, &value) == SPECIES_UNOWN) + { + if (value == 0) + value += SPECIES_UNOWN; + else + value += (SPECIES_UNOWN_B - 1); + return value; + } + else + { + return mon_icon_convert_unown_species_id(species, 0); + } +} + +const u8 *GetMonIconPtr(u16 species, u32 personality) +{ + u16 convertedSpecies = mon_icon_convert_unown_species_id(species, personality); + return gMonIconTable[convertedSpecies]; +} + +void sub_809D510(struct Sprite *sprite) +{ + sub_809D7E8(sprite); +} + +void sub_809D51C(void) +{ + u8 i; + for (i = 0; i < 6; i++) + LoadSpritePalette(&gMonIconPaletteTable[i]); +} + +// unused +void SafeLoadMonIconPalette(u16 species) +{ + u8 palIndex; + if (species > SPECIES_EGG) + species = 260; + palIndex = gMonIconPaletteIndices[species]; + if (IndexOfSpritePaletteTag(gMonIconPaletteTable[palIndex].tag) == 0xFF) + LoadSpritePalette(&gMonIconPaletteTable[palIndex]); +} + +void sub_809D580(u16 species) +{ + u8 palIndex = gMonIconPaletteIndices[species]; + if (IndexOfSpritePaletteTag(gMonIconPaletteTable[palIndex].tag) == 0xFF) + LoadSpritePalette(&gMonIconPaletteTable[palIndex]); +} + +// unused +void FreeMonIconPalettes(void) +{ + u8 i; + for (i = 0; i < 6; i++) + FreeSpritePaletteByTag(gMonIconPaletteTable[i].tag); +} + +// unused +void SafeFreeMonIconPalette(u16 species) +{ + u8 palIndex; + if (species > SPECIES_EGG) + species = 260; + palIndex = gMonIconPaletteIndices[species]; + FreeSpritePaletteByTag(gMonIconPaletteTable[palIndex].tag); +} + +void sub_809D608(u16 species) +{ + u8 palIndex; + palIndex = gMonIconPaletteIndices[species]; + FreeSpritePaletteByTag(gMonIconPaletteTable[palIndex].tag); +} + +void sub_809D62C(struct Sprite *sprite) +{ + UpdateMonIconFrame(sprite); +} + +// TODO: try to find a way to avoid using asm statement +u8 UpdateMonIconFrame(struct Sprite *sprite) +{ + u8 result = 0; + + if (sprite->animDelayCounter == 0) + { + s16 frame = sprite->anims[sprite->animNum][sprite->animCmdIndex].frame.imageValue; + + switch (frame) + { + case -1: + break; + case -2: + sprite->animCmdIndex = 0; + break; + default: + RequestSpriteCopy( + (u8 *)sprite->images + sSpriteImageSizes[sprite->oam.shape][sprite->oam.size] * frame, + (u8 *)OBJ_VRAM0 + sprite->oam.tileNum * TILE_SIZE_4BPP, + sSpriteImageSizes[sprite->oam.shape][sprite->oam.size]); + { + register u8 duration asm("r0") = sprite->anims[sprite->animNum][sprite->animCmdIndex].frame.duration; + sprite->animDelayCounter = duration; + } + sprite->animCmdIndex++; + result = sprite->animCmdIndex; + break; + } + } + else + { + sprite->animDelayCounter--; + } + return result; +} + +u8 CreateMonIconSprite(struct MonIconSpriteTemplate *iconTemplate, s16 x, s16 y, u8 subpriority) +{ + u8 spriteId; + + struct SpriteFrameImage image = { NULL, sSpriteImageSizes[iconTemplate->oam->shape][iconTemplate->oam->size] }; + + struct SpriteTemplate spriteTemplate = + { + .tileTag = 0xFFFF, + .paletteTag = iconTemplate->paletteTag, + .oam = iconTemplate->oam, + .anims = iconTemplate->anims, + .images = &image, + .affineAnims = iconTemplate->affineAnims, + .callback = iconTemplate->callback, + }; + + spriteId = CreateSprite(&spriteTemplate, x, y, subpriority); + gSprites[spriteId].animPaused = TRUE; + gSprites[spriteId].animBeginning = FALSE; + gSprites[spriteId].images = (const struct SpriteFrameImage *)iconTemplate->image; + return spriteId; +} + +void sub_809D7E8(struct Sprite *sprite) +{ + struct SpriteFrameImage image = { NULL, sSpriteImageSizes[sprite->oam.shape][sprite->oam.size] }; + sprite->images = ℑ + DestroySprite(sprite); +} + +void sub_809D824(struct Sprite *sprite, u8 animNum) +{ + sprite->animNum = animNum; + sprite->animDelayCounter = 0; + sprite->animCmdIndex = 0; +} diff --git a/src/pokemon/pokemon_menu.c b/src/pokemon/pokemon_menu.c new file mode 100644 index 000000000..7d70e7708 --- /dev/null +++ b/src/pokemon/pokemon_menu.c @@ -0,0 +1,1199 @@ +#include "global.h" +#include "pokemon.h" +#include "pokemon_menu.h" +#include "party_menu.h" +#include "palette.h" +#include "menu.h" +#include "mail_data.h" +#include "songs.h" +#include "sound.h" +#include "main.h" +#include "overworld.h" +#include "menu_helpers.h" +#include "pokemon_summary_screen.h" +#include "moves.h" +#include "data2.h" +#include "strings.h" +#include "item_use.h" +#include "item.h" +#include "event_data.h" +#include "mail.h" +#include "field_player_avatar.h" +#include "fldeff_softboiled.h" +#include "braille_puzzles.h" +#include "field_fadetransition.h" +#include "field_weather.h" +#include "field_effect.h" +#include "field_control_avatar.h" +#include "metatile_behavior.h" +#include "fieldmap.h" +#include "item_menu.h" +#include "player_pc.h" + +/* +Pokemon menu: + The menu that appears when you + click on a pokemon in + overworld 'pokemon' menu +*/ + +struct PokeMenuFieldMoveFunc +{ + bool8 (*func)(void); + u8 field_1; +}; + +extern u8 gUnknown_020384F0; +extern u8 gUnknown_0202E8F4; +extern u8 gUnknown_0202E8F5; +extern u8 gUnknown_0202E8F6; +extern u8 gUnknown_02038561; +extern u16 gUnknown_0202E8F8; +extern u8 ewram[]; +extern void (*gUnknown_03004AE4)(u8 taskID, u16 itemID, TaskFunc func); +extern TaskFunc gUnknown_03005CF0; + +void sub_80E62A0(u8 arg0, struct MailStruct* arg1, void* arg2, u8 arg3); +void sub_808A520(void); +void sub_80A61D0(void); +void CB2_InitFlyRegionMap(void); +bool8 SetUpFieldMove_Cut(void); +bool8 SetUpFieldMove_Flash(void); +bool8 SetUpFieldMove_RockSmash(void); +bool8 SetUpFieldMove_Strength(void); +bool8 SetUpFieldMove_Teleport(void); +bool8 SetUpFieldMove_Dig(void); +bool8 SetUpFieldMove_SecretPower(void); +bool8 SetUpFieldMove_SoftBoiled(void); +bool8 SetUpFieldMove_SoftBoiled(void); +bool8 SetUpFieldMove_SweetScent(void); + +#define sFieldMovesTerminator 0xFF // note: should be changed to 0xFFFF, because currently it makes it impossible to add a field move with 0xFF index + +// this file's functions +static void sub_808A8A8(void); +static void sub_808B3EC(void); +static void sub_8089D94(u8 taskID); +static void sub_8089E4C(u8 taskID); +static void sub_808A5BC(u8 taskID); +static void sub_808A8D4(u8 taskID); +static void sub_808A73C(u8 taskID); +static void sub_808A848(u8 taskID); +static void sub_808AAF0(u8 taskID); +static void sub_808ABF4(u8 taskID); +static void sub_808AB34(u8 taskID); +static void sub_808ABA8(u8 taskID); +static void sub_808B224(u8 taskID); +static void sub_808B2EC(u8 taskID); +static void sub_808B2B4(u8 taskID); +static void sub_808B25C(u8 taskID); +static void sub_808B1EC(u8 taskID); +static void sub_808B338(u8 taskID); +static void sub_808B4A4(u8 taskID); +static void sub_808B4EC(u8 taskID); +static void sub_808B5E4(u8 taskID); +static void PokemonMenu_Summary(u8 taskID); +static void PokemonMenu_Switch(u8 taskID); +static void PokemonMenu_Item(u8 taskID); +static void PokemonMenu_Cancel(u8 taskID); +static void PokemonMenu_GiveItem(u8 taskID); +static void PokemonMenu_TakeItem(u8 taskID); +static void PokemonMenu_TakeMail(u8 taskID); +static void PokemonMenu_Mail(u8 taskID); +static void PokemonMenu_ReadMail(u8 taskID); +static void PokemonMenu_CancelSubmenu(u8 taskID); +static void PokemonMenu_FieldMove(u8 taskID); +static bool8 SetUpFieldMove_Waterfall(void); +static bool8 SetUpFieldMove_Surf(void); +static bool8 SetUpFieldMove_Fly(void); +static bool8 SetUpFieldMove_Dive(void); + +// ewram data + +EWRAM_DATA static u8 sPokeMenuCursorPos = 0; +EWRAM_DATA static u8 sPokeMenuOptionsNo = 0; +EWRAM_DATA static u8 sPokeMenuOptionsOrder[8] = {0}; // 4 possible field moves and 4 default options + +// iwram common +u8 gLastFieldPokeMenuOpened; +void (*gUnknown_03005CE4)(void); + +// const data + +static const struct MenuAction2 sPokemonMenuActions[] = +{ + {OtherText_Summary, PokemonMenu_Summary}, + {OtherText_Switch2, PokemonMenu_Switch}, + {OtherText_Item, PokemonMenu_Item}, + {gOtherText_CancelNoTerminator, PokemonMenu_Cancel}, + {OtherText_Give2, PokemonMenu_GiveItem}, + {OtherText_Take2, PokemonMenu_TakeItem}, + {OtherText_Take, PokemonMenu_TakeMail}, + {OtherText_Mail, PokemonMenu_Mail}, + {OtherText_Read2, PokemonMenu_ReadMail}, + {gOtherText_CancelNoTerminator, PokemonMenu_CancelSubmenu}, + {gMoveNames[MOVE_CUT], PokemonMenu_FieldMove}, + {gMoveNames[MOVE_FLASH], PokemonMenu_FieldMove}, + {gMoveNames[MOVE_ROCK_SMASH], PokemonMenu_FieldMove}, + {gMoveNames[MOVE_STRENGTH], PokemonMenu_FieldMove}, + {gMoveNames[MOVE_SURF], PokemonMenu_FieldMove}, + {gMoveNames[MOVE_FLY], PokemonMenu_FieldMove}, + {gMoveNames[MOVE_DIVE], PokemonMenu_FieldMove}, + {gMoveNames[MOVE_WATERFALL], PokemonMenu_FieldMove}, + {gMoveNames[MOVE_TELEPORT], PokemonMenu_FieldMove}, + {gMoveNames[MOVE_DIG], PokemonMenu_FieldMove}, + {gMoveNames[MOVE_SECRET_POWER], PokemonMenu_FieldMove}, + {gMoveNames[MOVE_MILK_DRINK], PokemonMenu_FieldMove}, + {gMoveNames[MOVE_SOFT_BOILED], PokemonMenu_FieldMove}, + {gMoveNames[MOVE_SWEET_SCENT], PokemonMenu_FieldMove}, +}; + +static const u16 sPokeMenuFieldMoves[] = +{ + MOVE_CUT, MOVE_FLASH, MOVE_ROCK_SMASH, MOVE_STRENGTH, + MOVE_SURF, MOVE_FLY, MOVE_DIVE, MOVE_WATERFALL, + MOVE_TELEPORT, MOVE_DIG, MOVE_SECRET_POWER, MOVE_MILK_DRINK, + MOVE_SOFT_BOILED, MOVE_SWEET_SCENT, sFieldMovesTerminator, +}; + +static const u8 sUnknown_39F572[] = {4, 5, 9, 0}; +static const struct PartyPopupMenu sUnknown_0839F578 = {3, 6, sUnknown_39F572}; + +static const u8 sUnknown_39F580[] = {8, 6, 9, 0}; +static const struct PartyPopupMenu sUnknown_0839F584 = {3, 9, sUnknown_39F580}; + +static const struct PokeMenuFieldMoveFunc sFieldMoveFuncs[] = +{ + {SetUpFieldMove_Cut, 0x6}, + {SetUpFieldMove_Flash, 0x9}, + {SetUpFieldMove_RockSmash, 0x9}, + {SetUpFieldMove_Strength, 0x9}, + {SetUpFieldMove_Surf, 0x7}, + {SetUpFieldMove_Fly, 0x9}, + {SetUpFieldMove_Dive, 0x9}, + {SetUpFieldMove_Waterfall, 0x9}, + {SetUpFieldMove_Teleport, 0x9}, + {SetUpFieldMove_Dig, 0x9}, + {SetUpFieldMove_SecretPower, 0x9}, + {SetUpFieldMove_SoftBoiled, 0x10}, + {SetUpFieldMove_SoftBoiled, 0x10}, + {SetUpFieldMove_SweetScent, 0x9}, +}; + +void sub_8089A70(void) +{ + gPaletteFade.bufferTransferDisabled = 1; + OpenPartyMenu(PARTY_MENU_TYPE_STANDARD, 0); +} + +static void sub_8089A8C(void) +{ + sPokeMenuOptionsNo = 0; + // if checking pokemon is an egg, we can't give it an item and it doesn't know any move + if (GetMonData(&gPlayerParty[gLastFieldPokeMenuOpened], MON_DATA_IS_EGG)) + { + AppendToList(sPokeMenuOptionsOrder, &sPokeMenuOptionsNo, POKEMENU_SUMMARY); + AppendToList(sPokeMenuOptionsOrder, &sPokeMenuOptionsNo, POKEMENU_SWITCH); + AppendToList(sPokeMenuOptionsOrder, &sPokeMenuOptionsNo, POKEMENU_CANCEL); + } + else + { + u16 moveID, tableID; + for (moveID = 0; moveID < 4; moveID++) // 4, max number of possible field moves + { + for (tableID = 0; sPokeMenuFieldMoves[tableID] != sFieldMovesTerminator; tableID++) + { + if (GetMonData(&gPlayerParty[gLastFieldPokeMenuOpened], MON_DATA_MOVE1 + moveID) == sPokeMenuFieldMoves[tableID]) + { + u8 fieldID = tableID + POKEMENU_FIRST_FIELD_MOVE_ID; + AppendToList(sPokeMenuOptionsOrder, &sPokeMenuOptionsNo, fieldID); + break; + } + } + } + AppendToList(sPokeMenuOptionsOrder, &sPokeMenuOptionsNo, POKEMENU_SUMMARY); + + // can't switch a pokemon if it's the only one in the party + if (GetMonData(&gPlayerParty[1], MON_DATA_SPECIES) != 0) + AppendToList(sPokeMenuOptionsOrder, &sPokeMenuOptionsNo, POKEMENU_SWITCH); + + if (ItemIsMail(GetMonData(&gPlayerParty[gLastFieldPokeMenuOpened], MON_DATA_HELD_ITEM))) + AppendToList(sPokeMenuOptionsOrder, &sPokeMenuOptionsNo, POKEMENU_MAIL); + else + AppendToList(sPokeMenuOptionsOrder, &sPokeMenuOptionsNo, POKEMENU_ITEM); + + AppendToList(sPokeMenuOptionsOrder, &sPokeMenuOptionsNo, POKEMENU_CANCEL); + } +} + +static void sub_8089BDC(u8 arg0, u8 arg1, u8 arg2, u8 noOfOptions, const struct MenuAction2 *menuActions, const u8 *order, u8 arg6) +{ + PrintPartyMenuPromptText(5, arg6); + MenuDrawTextWindow(arg0, arg1, arg0 + arg2, (noOfOptions * 2) + arg1 + 1); + PrintMenuItemsReordered(arg0 + 1, arg1 + 1, noOfOptions, menuActions, order); +} + +void sub_8089C50(u8 arg0, u8 arg1, u8 arg2, u8 noOfOptions, const struct MenuAction2 *menuActions, const u8 *order) +{ + sub_8089BDC(arg0, arg1, arg2, noOfOptions, menuActions, order, 1); +} + +static void sub_8089C7C(u8 arg0) +{ + u32 r4 = (u8)(18 - (sPokeMenuOptionsNo << 1)); + + sub_8089BDC(19, r4, 10, sPokeMenuOptionsNo, sPokemonMenuActions, sPokeMenuOptionsOrder, 3); + r4 |= 1; + InitMenu(0, 20, r4, sPokeMenuOptionsNo, arg0, 9); +} + +void HandleDefaultPartyMenu(u8 taskID) +{ + if (!gPaletteFade.active) + { + switch (HandleDefaultPartyMenuInput(taskID)) + { + case A_BUTTON: + PlaySE(SE_SELECT); + gLastFieldPokeMenuOpened = sub_806CA38(taskID); + GetMonNickname(&gPlayerParty[gLastFieldPokeMenuOpened], gStringVar1); + sub_8089A8C(); + sPokeMenuCursorPos = 0; + sub_8089C7C(0); + gTasks[taskID].func = sub_8089D94; + sub_808B5B4(taskID); + break; + case B_BUTTON: + PlaySE(SE_SELECT); + BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); + gTasks[taskID].func = sub_8089E4C; + break; + } + } +} + +static void sub_8089D94(u8 taskID) +{ + if (!gPaletteFade.active) + { + if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_UP) + { + PlaySE(SE_SELECT); + sPokeMenuCursorPos = MoveMenuCursor(-1); + sub_808B5B4(taskID); + } + else if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_DOWN) + { + PlaySE(SE_SELECT); + sPokeMenuCursorPos = MoveMenuCursor(1); + sub_808B5B4(taskID); + } + else if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + sPokemonMenuActions[sPokeMenuOptionsOrder[sPokeMenuCursorPos]].func(taskID); + sub_808B5B4(taskID); + } + else if (gMain.newKeys & B_BUTTON) + { + PokemonMenu_Cancel(taskID); + sub_808B5B4(taskID); + } + } +} + +static void sub_8089E4C(u8 taskID) +{ + if (!gPaletteFade.active) + { + gLastFieldPokeMenuOpened = 0; + SetMainCallback2(sub_805469C); + DestroyTask(taskID); + } +} + +static void sub_8089E84(void) +{ + GetMonNickname(&gPlayerParty[gLastFieldPokeMenuOpened], gStringVar1); + sub_8089A8C(); + sPokeMenuCursorPos = 0; + sub_8089C7C(0); +} + +static void sub_8089EBC(void) +{ + do + { + if (InitPartyMenu() == TRUE) + { + sub_806C994(EWRAM_1B000.menuHandlerTaskId, gUnknown_020384F0); + ChangePartyMenuSelection(EWRAM_1B000.menuHandlerTaskId, 0); + gLastFieldPokeMenuOpened = gUnknown_020384F0; + sub_8089E84(); + SetMainCallback2(CB2_PartyMenuMain); + break; + } + } while (sub_80F9344() != TRUE); +} + +static void sub_8089F14(void) +{ + gPaletteFade.bufferTransferDisabled = 1; + SetPartyMenuSettings(PARTY_MENU_TYPE_STANDARD, 0xFF, sub_8089D94, 5); + SetMainCallback2(sub_8089EBC); +} + +static void sub_8089F44(u8 taskID) +{ + if (!gPaletteFade.active) + { + u8 spriteID = gSprites[gTasks[taskID].data[3] >> 8].data0; + DestroyTask(taskID); + ewram1B000_alt.unk262 = 1; + ShowPokemonSummaryScreen(gPlayerParty, spriteID, gPlayerPartyCount - 1, sub_8089F14, 0); + } +} + +static void PokemonMenu_Summary(u8 taskID) +{ + BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); + gTasks[taskID].func = sub_8089F44; +} + +void DoPokemonMenu_Switch(u8 taskID) +{ + SetTaskFuncWithFollowupFunc(taskID, SetupDefaultPartyMenuSwitchPokemon, HandleDefaultPartyMenu); + MenuZeroFillWindowRect(19, 0, 29, 19); +} + +static void PokemonMenu_Switch(u8 taskID) +{ + HandleDestroyMenuCursors(); + ewram01000.unkC = sub_806CD5C; + ewram01000.array[53553] = 1; + DoPokemonMenu_Switch(taskID); +} + +static void sub_808A060(u8 taskID) +{ + if (gMain.newKeys == DPAD_UP && sPokeMenuCursorPos != 0) + { + sPokeMenuCursorPos = MoveMenuCursor(-1); + PlaySE(SE_SELECT); + } + if (gMain.newKeys == DPAD_DOWN && sPokeMenuCursorPos != 2) + { + sPokeMenuCursorPos = MoveMenuCursor(1); + PlaySE(SE_SELECT); + } + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + PartyMenuGetPopupMenuFunc(0, &sUnknown_0839F578, sPokemonMenuActions, sPokeMenuCursorPos)(taskID); + } + else if (gMain.newKeys & B_BUTTON) + { + ClosePartyPopupMenu(0, &sUnknown_0839F578); + PokemonMenu_CancelSubmenu(taskID); + } +} + +static void sub_808A100(u8 taskID) +{ + ShowPartyPopupMenu(0, &sUnknown_0839F578, (void*)(sPokemonMenuActions), 0); + PrintPartyMenuPromptText(0xD, 2); + gTasks[taskID].func = sub_808A060; +} + +static void PokemonMenu_Item(u8 taskID) +{ + HandleDestroyMenuCursors(); + sPokeMenuCursorPos = 0; + MenuZeroFillWindowRect(19, 0, 29, 19); + gTasks[taskID].func = sub_808A100; +} + +static void sub_808A180(u8 taskID) +{ + if (!gPaletteFade.active) + { + u8 mailID = GetMonData(&gPlayerParty[sub_806CA38(taskID)], MON_DATA_MAIL); + DestroyTask(taskID); + sub_80E62A0(4, &gSaveBlock1.mail[mailID], sub_808A520, 3); + } +} + +static void sub_808A1E0(u8 taskID) +{ + if (gUnknown_0202E8F6 != 1) + { + SetHeldItemIconVisibility(taskID, sub_806CA38(taskID)); + PrintPartyMenuPromptText(0, 0); + gTasks[taskID].func = HandleDefaultPartyMenu; + } +} + +static void sub_808A228(u8 taskID) +{ + if (ItemIsMail(gScriptItemId) && gUnknown_0202E8F4 != 0) + { + BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); + gTasks[taskID].func = sub_808A180; + } + else + { + MenuZeroFillWindowRect(0, 0, 29, 19); + PrintPartyMenuPromptText(0, 0); + gTasks[taskID].func = HandleDefaultPartyMenu; + } +} + +static void sub_808A2AC(u8 taskID) +{ + if (!gPaletteFade.active) + PartyMenuTryGiveMonHeldItem(taskID, gScriptItemId, sub_808A228); +} + +static void sub_808A2DC(u8 taskID) +{ + u8 mailID = GetMonData(&gPlayerParty[sub_806CA38(taskID)], MON_DATA_MAIL); + DestroyTask(taskID); + sub_80E62A0(4, &gSaveBlock1.mail[mailID], sub_808A520, 3); +} + +static void sub_808A330(u8 taskID) +{ + PartyMenuTryGiveMonHeldItem(taskID, gScriptItemId, sub_808A2DC); +} + +static void sub_808A34C(void) +{ + RunTasks(); +} + +static void sub_808A358(void) +{ + while (1) + { + if (InitPartyMenu() == TRUE) + { + sub_806C994(EWRAM_1B000.menuHandlerTaskId, gLastFieldPokeMenuOpened); + ChangePartyMenuSelection(EWRAM_1B000.menuHandlerTaskId, 0); + SetMainCallback2(CB2_PartyMenuMain); + break; + } + if (sub_80F9344() == TRUE) + break; + } +} + +static void sub_808A3A4(void) +{ + while (1) + { + if (InitPartyMenu() == TRUE) + { + sub_806C994(EWRAM_1B000.menuHandlerTaskId, gLastFieldPokeMenuOpened); + ChangePartyMenuSelection(EWRAM_1B000.menuHandlerTaskId, 0); + EWRAM_1B000.unk262 = 3; + sub_8089E84(); + SetMainCallback2(CB2_PartyMenuMain); + break; + } + if (sub_80F9344() == TRUE) + break; + } +} + +void sub_808A3F8(void) +{ + if (ItemIsMail(gScriptItemId)) + { + u8 taskID = CreateTask(sub_808A330, 0); + gPaletteFade.bufferTransferDisabled = 1; + sub_806BD58(taskID, 0); + sub_806C994(taskID, gLastFieldPokeMenuOpened); + ChangePartyMenuSelection(taskID, 0); + if (!(bool8)(GetMonData(&gPlayerParty[sub_806CA38(taskID)], MON_DATA_HELD_ITEM))) + { + SetMainCallback2(sub_808A34C); + return; + } + else + DestroyTask(taskID); + } + gPaletteFade.bufferTransferDisabled = 1; + if (gScriptItemId) + { + SetPartyMenuSettings(PARTY_MENU_TYPE_STANDARD, 0xFF, sub_808A2AC, 0xFF); + SetMainCallback2(sub_808A358); + } + else + { + SetPartyMenuSettings(PARTY_MENU_TYPE_STANDARD, 0xFF, sub_8089D94, 5); + SetMainCallback2(sub_808A3A4); + } +} + +static void sub_808A4D4(void) +{ + while (1) + { + if (InitPartyMenu() == TRUE) + { + sub_806C994(EWRAM_1B000.menuHandlerTaskId, gLastFieldPokeMenuOpened); + ChangePartyMenuSelection(EWRAM_1B000.menuHandlerTaskId, 0); + SetMainCallback2(CB2_PartyMenuMain); + break; + } + if (sub_80F9344() == TRUE) + break; + } +} + +void sub_808A520(void) +{ + gPaletteFade.bufferTransferDisabled = 1; + if (gScriptResult == 0) + { + if (gUnknown_0202E8F8) + RemoveBagItem(gUnknown_0202E8F8, 1); + AddBagItem(GetMonData(&gPlayerParty[gLastFieldPokeMenuOpened], MON_DATA_HELD_ITEM), 1); + TakeMailFromMon(&gPlayerParty[gLastFieldPokeMenuOpened]); + SetMonData(&gPlayerParty[gLastFieldPokeMenuOpened], MON_DATA_HELD_ITEM, (void*) &gUnknown_0202E8F8); + SetPartyMenuSettings(PARTY_MENU_TYPE_STANDARD, 0xFF, HandleDefaultPartyMenu, 0); + } + else + SetPartyMenuSettings(PARTY_MENU_TYPE_STANDARD, 0xFF, sub_808A5BC, 0xFF); + SetMainCallback2(sub_808A4D4); +} + +static void sub_808A5BC(u8 taskID) +{ + if (!gPaletteFade.active) + { + DisplayGiveHeldItemMessage(gLastFieldPokeMenuOpened, gScriptItemId, 0); + gTasks[taskID].func = sub_808A1E0; + } +} + +static void sub_808A604(u8 taskID) +{ + if (!gPaletteFade.active) + { + SetMainCallback2(sub_80A61D0); + DestroyTask(taskID); + } +} + +static void PokemonMenu_GiveItem(u8 taskID) +{ + gUnknown_0202E8F5 = sub_806CA38(taskID); + BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); + gTasks[taskID].func = sub_808A604; +} + +static void sub_808A678(u8 taskID) +{ + sub_808A8D4(taskID); +} + +static void PokemonMenu_TakeItem(u8 taskID) +{ + HandleDestroyMenuCursors(); + MenuZeroFillWindowRect(19, 0, 29, 19); + sub_806D5A4(); + PartyMenuTryGiveMonHeldItem_806ECE8(taskID, sub_808A678); +} + +static void PokemonMenu_TakeMail(u8 taskID) +{ + HandleDestroyMenuCursors(); + MenuZeroFillWindowRect(19, 0, 29, 19); + sub_806D5A4(); + DoTakeMail(taskID, sub_808A678); +} + +static void PokemonMenu_Mail(u8 taskID) +{ + HandleDestroyMenuCursors(); + sPokeMenuCursorPos = 0; + MenuZeroFillWindowRect(19, 0, 29, 19); + ShowPartyPopupMenu(0, &sUnknown_0839F584, (void*) sPokemonMenuActions, 0); + gTasks[taskID].func = sub_808A73C; +} + +static void sub_808A73C(u8 taskID) +{ + if (gMain.newAndRepeatedKeys == DPAD_UP) + { + PlaySE(SE_SELECT); + if (sPokeMenuCursorPos == 0) + sPokeMenuCursorPos = MoveMenuCursor(sUnknown_0839F584.numChoices - 1); + else + sPokeMenuCursorPos = MoveMenuCursor(-1); + } + if (gMain.newAndRepeatedKeys == DPAD_DOWN) + { + PlaySE(SE_SELECT); + if (sPokeMenuCursorPos == sUnknown_0839F584.numChoices - 1) + sPokeMenuCursorPos = MoveMenuCursor(1 - sUnknown_0839F584.numChoices); + else + sPokeMenuCursorPos = MoveMenuCursor(1); + } + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + PartyMenuGetPopupMenuFunc(0, &sUnknown_0839F584, sPokemonMenuActions, sPokeMenuCursorPos)(taskID); + } + else if (gMain.newKeys & B_BUTTON) + { + ClosePartyPopupMenu(0, &sUnknown_0839F584); + PokemonMenu_Cancel(taskID); + } +} + +static void PokemonMenu_ReadMail(u8 taskID) +{ + BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); + gTasks[taskID].func = sub_808A848; +} + +static void sub_808A848(u8 taskID) +{ + if (!gPaletteFade.active) + { + u8 mailID = GetMonData(&gPlayerParty[sub_806CA38(taskID)], MON_DATA_MAIL); + DestroyTask(taskID); + HandleReadMail(&gSaveBlock1.mail[mailID], sub_808A8A8, 1); + } +} + +static void sub_808A8A8(void) +{ + gUnknown_020384F0 = gLastFieldPokeMenuOpened; + ewram1B000.unk262 = 4; + sub_8089F14(); +} + +static void sub_808A8D4(u8 taskID) +{ + sPokeMenuCursorPos = 0; + MenuZeroFillWindowRect(19, 0, 29, 19); + PrintPartyMenuPromptText(0, 0); + gTasks[taskID].func = HandleDefaultPartyMenu; +} + +static void PokemonMenu_Cancel(u8 taskID) +{ + HandleDestroyMenuCursors(); + PlaySE(SE_SELECT); + sub_808A8D4(taskID); +} + +static void PokemonMenu_CancelSubmenu(u8 taskID) +{ + HandleDestroyMenuCursors(); + PlaySE(SE_SELECT); + MenuZeroFillWindowRect(19, 0, 29, 19); + sub_806D5A4(); + sub_8089C7C(sPokeMenuCursorPos); + gTasks[taskID].func = sub_8089D94; +} + +#define IS_SOFTBOILED_MILKDRINK(ID)((ID == (POKEMENU_MILK_DRINK - POKEMENU_FIRST_FIELD_MOVE_ID) || ID == (POKEMENU_SOFT_BOILED - POKEMENU_FIRST_FIELD_MOVE_ID))) +#define IS_SURF(ID)((ID == (POKEMENU_SURF - POKEMENU_FIRST_FIELD_MOVE_ID))) +#define IS_FLY(ID)((ID == (POKEMENU_FLY - POKEMENU_FIRST_FIELD_MOVE_ID))) + +#define tFieldMoveId data[11] + +static void PokemonMenu_FieldMove(u8 taskID) +{ + s16* data = gTasks[taskID].data; + + HandleDestroyMenuCursors(); + tFieldMoveId = sPokeMenuOptionsOrder[sPokeMenuCursorPos] - POKEMENU_FIRST_FIELD_MOVE_ID; + if (sub_80F9344() == TRUE) + { + MenuZeroFillWindowRect(19, 0, 29, 19); + if (IS_SOFTBOILED_MILKDRINK(tFieldMoveId)) + PrintPartyMenuPromptText(9, 0); + else + PrintPartyMenuPromptText(sFieldMoveFuncs[tFieldMoveId].field_1, 0); + gTasks[taskID].func = sub_808ABF4; + } + else if (tFieldMoveId <= 7 && FlagGet(BADGE01_GET + tFieldMoveId) != TRUE) + { + // can't use a field HM move without a proper badge + MenuZeroFillWindowRect(19, 0, 29, 19); + sub_806D5A4(); + sub_806E834(gOtherText_CantBeUsedBadge, 1); + gTasks[taskID].func = sub_808AAF0; + } + else + { + if (sFieldMoveFuncs[tFieldMoveId].func() == TRUE) + { + sPokeMenuCursorPos = 0; + if (!IS_SOFTBOILED_MILKDRINK(tFieldMoveId)) + { + gTasks[taskID].func = sub_808AB34; + BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); + } + else + sub_8133D28(taskID); + } + else + { + MenuZeroFillWindowRect(19, 0, 29, 19); + if (IS_SURF(tFieldMoveId) && TestPlayerAvatarFlags(8)) + PrintPartyMenuPromptText(8, 0); + else + PrintPartyMenuPromptText(sFieldMoveFuncs[tFieldMoveId].field_1, 0); + gTasks[taskID].func = sub_808ABF4; + } + } +} + +static void sub_808AAF0(u8 taskID) +{ + if (gUnknown_0202E8F6 != 1 && (gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON)) + { + MenuZeroFillWindowRect(0, 14, 29, 19); + PokemonMenu_Cancel(taskID); + } +} + +static void sub_808AB34(u8 taskID) +{ + if (!gPaletteFade.active) + { + if (!IS_FLY(gTasks[taskID].tFieldMoveId) || ShouldDoBrailleFlyEffect()) + SetMainCallback2(c2_exit_to_overworld_2_switch); + else + SetMainCallback2(CB2_InitFlyRegionMap); + DestroyTask(taskID); + } +} + +#undef tFieldMoveId + +void FieldCallback_Teleport(void) +{ + pal_fill_black(); + CreateTask(sub_808ABA8, 8); +} + +static void sub_808ABA8(u8 taskID) +{ + if (sub_807D770() == TRUE) + { + gFieldEffectArguments[0] = GetMonData(&gPlayerParty[gLastFieldPokeMenuOpened], MON_DATA_SPECIES); + gUnknown_03005CE4(); + DestroyTask(taskID); + } +} + +static void sub_808ABF4(u8 taskID) +{ + if (gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON) + { + MenuZeroFillWindowRect(1, 17, 28, 18); + PokemonMenu_Cancel(taskID); + } +} + +static void sub_808AC2C(void) +{ + gFieldEffectArguments[0] = gLastFieldPokeMenuOpened; + FieldEffectStart(FLDEFF_USE_SURF); +} + +static bool8 SetUpFieldMove_Surf(void) +{ + if (PartyHasMonWithSurf() == TRUE && IsPlayerFacingSurfableFishableWater() == TRUE) + { + gFieldCallback = FieldCallback_Teleport; + gUnknown_03005CE4 = sub_808AC2C; + return TRUE; + } + else + return FALSE; +} + +static void sub_808AC8C(void) +{ + gFieldEffectArguments[0] = gLastFieldPokeMenuOpened; + FieldEffectStart(FLDEFF_USE_FLY); +} + +static bool8 SetUpFieldMove_Fly(void) +{ + if (ShouldDoBrailleFlyEffect()) + { + gFieldCallback = FieldCallback_Teleport; + gUnknown_03005CE4 = DoBrailleFlyEffect; + return TRUE; + } + if (Overworld_MapTypeAllowsTeleportAndFly(gMapHeader.mapType) == TRUE) + { + gFieldCallback = FieldCallback_Teleport; + gUnknown_03005CE4 = sub_808AC8C; + return TRUE; + } + return FALSE; +} + +static void sub_808AD0C(void) +{ + while (1) + { + if (InitPartyMenu() == TRUE) + { + sub_806C994(EWRAM_1B000.menuHandlerTaskId, gLastFieldPokeMenuOpened); + ChangePartyMenuSelection(EWRAM_1B000.menuHandlerTaskId, 0); + SetMainCallback2(CB2_PartyMenuMain); + break; + } + if (sub_80F9344() == TRUE) + break; + } +} + +void sub_808AD58(void) +{ + gPaletteFade.bufferTransferDisabled = 1; + SetPartyMenuSettings(PARTY_MENU_TYPE_STANDARD, 0xFF, HandleDefaultPartyMenu, 0); + SetMainCallback2(sub_808AD0C); +} + +u16 unref_sub_808AD88(void) +{ + return GetMonData(&gPlayerParty[gLastFieldPokeMenuOpened], MON_DATA_SPECIES); +} + +static void sub_808ADAC(void) +{ + gFieldEffectArguments[0] = gLastFieldPokeMenuOpened; + FieldEffectStart(FLDEFF_USE_DIVE); +} + +static bool8 SetUpFieldMove_Dive(void) +{ + gFieldEffectArguments[1] = sub_8068F18(); + if (gFieldEffectArguments[1]) + { + gFieldCallback = FieldCallback_Teleport; + gUnknown_03005CE4 = sub_808ADAC; + return TRUE; + } + else + return FALSE; +} + +static void sub_808AE08(void) +{ + gFieldEffectArguments[0] = gLastFieldPokeMenuOpened; + FieldEffectStart(FLDEFF_USE_WATERFALL); +} + +static bool8 SetUpFieldMove_Waterfall(void) +{ + s16 x, y; + GetXYCoordsOneStepInFrontOfPlayer(&x, &y); + if (MetatileBehavior_IsWaterfall(MapGridGetMetatileBehaviorAt(x, y)) == TRUE + && IsPlayerSurfingNorth() == TRUE) + { + gFieldCallback = FieldCallback_Teleport; + gUnknown_03005CE4 = sub_808AE08; + return TRUE; + } + else + return FALSE; +} + +static void sub_808AE8C(void) +{ + u8 i; + u8 arg = gScriptItemId - 33; + for (i = 0; i < 6; i++) + { + if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES)) + { + sub_806D668(i); + if (GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG) || !CanMonLearnTMHM(&gPlayerParty[i], arg)) + sub_806BC3C(i, 0x9A); + else if (pokemon_has_move(&gPlayerParty[i], ItemIdToBattleMoveId(gScriptItemId))) + sub_806BC3C(i, 0xA8); + else + sub_806BC3C(i, 0x8C); + } + } +} + +static void sub_808AF20(void) +{ + u8 i; + for (i = 0; i < 6; i++) + { + if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES)) + { + if (GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG) || !GetEvolutionTargetSpecies(&gPlayerParty[i], 3, gScriptItemId)) + { + sub_806D668(i); + sub_806BC3C(i, 0); + } + } + } +} + +static void sub_808AF80(void) +{ + while (1) + { + if (InitPartyMenu() == TRUE) + { + if (gUnknown_02038561 == 0) + { + switch (CheckIfItemIsTMHMOrEvolutionStone(gScriptItemId)) + { + case 1: + sub_808AE8C(); + break; + case 2: + sub_808AF20(); + break; + } + } + if (gLastFieldPokeMenuOpened > 5 || !GetMonData(&gPlayerParty[gLastFieldPokeMenuOpened], MON_DATA_SPECIES)) + gLastFieldPokeMenuOpened = 0; + sub_806C994(ewram1B000.menuHandlerTaskId, gLastFieldPokeMenuOpened); + ChangePartyMenuSelection(ewram1B000.menuHandlerTaskId, 0); + SetMainCallback2(CB2_PartyMenuMain); + break; + } + if (sub_80F9344() == TRUE) + break; + } +} + +void sub_808B020(void) +{ + gPaletteFade.bufferTransferDisabled = 1; + switch (gUnknown_02038561) + { + case 0: + if (CheckIfItemIsTMHMOrEvolutionStone(gScriptItemId) == 1) + SetPartyMenuSettings(PARTY_MENU_TYPE_STANDARD, 0, sub_808B0C0, 20); + else + SetPartyMenuSettings(PARTY_MENU_TYPE_STANDARD, 0, sub_808B0C0, 3); + break; + case 4: + SetPartyMenuSettings(PARTY_MENU_TYPE_STANDARD, 0, sub_808B1EC, 0xFF); + break; + case 1: + case 3: + SetPartyMenuSettings(PARTY_MENU_TYPE_STANDARD, 0, sub_808B0C0, 4); + break; + } + SetMainCallback2(sub_808AF80); +} + +void sub_808B0C0(u8 taskID) +{ + if (!gPaletteFade.active) + { + switch (HandleDefaultPartyMenuInput(taskID)) + { + case A_BUTTON: + gLastFieldPokeMenuOpened = sub_806CA38(taskID); + if (GetMonData(&gPlayerParty[gLastFieldPokeMenuOpened], MON_DATA_IS_EGG)) + PlaySE(SE_HAZURE); + else + { + sub_806D5A4(); + if (gUnknown_02038561 == 0) + gUnknown_03004AE4(taskID, gScriptItemId, sub_808B224); + if (gUnknown_02038561 == 1) + { + PlaySE(SE_SELECT); + PartyMenuTryGiveMonHeldItem(taskID, gScriptItemId, sub_808B2EC); + } + if (gUnknown_02038561 == 3) + { + PlaySE(SE_SELECT); + PartyMenuTryGiveMonMail(taskID, sub_808B2B4); + } + } + break; + case B_BUTTON: + gLastFieldPokeMenuOpened = sub_806CA38(taskID); + PlaySE(SE_SELECT); + BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); + if (gUnknown_02038561 == 0 || gUnknown_02038561 == 1) + gTasks[taskID].func = sub_808B25C; + if (gUnknown_02038561 == 3) + gTasks[taskID].func = sub_808B2B4; + break; + } + } +} + +static void sub_808B1EC(u8 taskID) +{ + if (!gPaletteFade.active) + gUnknown_03004AE4(taskID, gScriptItemId, sub_808B224); +} + +static void sub_808B224(u8 taskID) +{ + BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); + gTasks[taskID].func = sub_808B25C; +} + +static void sub_808B25C(u8 taskID) +{ + if (!gPaletteFade.active) + { + SetMainCallback2(sub_80A5B40); + DestroyTask(taskID); + } +} + +static void sub_808B288(u8 taskID) +{ + if (!gPaletteFade.active) + { + SetMainCallback2(Mailbox_ReturnToMailListAfterDeposit); + DestroyTask(taskID); + } +} + +static void sub_808B2B4(u8 taskID) +{ + BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); + gTasks[taskID].func = sub_808B288; +} + +static void sub_808B2EC(u8 taskID) +{ + if (gUnknown_0202E8F4 == 2) + { + BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); + gTasks[taskID].func = sub_808B338; + } + else + sub_808B224(taskID); +} + +static void sub_808B338(u8 taskID) +{ + if (!gPaletteFade.active) + { + u8 mailID; + + gLastFieldPokeMenuOpened = sub_806CA38(taskID); + mailID = GetMonData(&gPlayerParty[gLastFieldPokeMenuOpened], MON_DATA_MAIL); + DestroyTask(taskID); + sub_80E62A0(4, &gSaveBlock1.mail[mailID], sub_808B3EC, 3); + } +} + +static void sub_808B3A0(void) +{ + while (1) + { + if (InitPartyMenu() == TRUE) + { + sub_806C994(EWRAM_1B000.menuHandlerTaskId, gLastFieldPokeMenuOpened); + ChangePartyMenuSelection(EWRAM_1B000.menuHandlerTaskId, 0); + SetMainCallback2(CB2_PartyMenuMain); + break; + } + if (sub_80F9344() == TRUE) + break; + } +} + +static void sub_808B3EC(void) +{ + IntrCallback callback; + + gPaletteFade.bufferTransferDisabled = 1; + if (gScriptResult == 0) + { + if (gUnknown_0202E8F8) + RemoveBagItem(gUnknown_0202E8F8, 1); + AddBagItem(GetMonData(&gPlayerParty[gLastFieldPokeMenuOpened], MON_DATA_HELD_ITEM), 1); + TakeMailFromMon(&gPlayerParty[gLastFieldPokeMenuOpened]); + SetMonData(&gPlayerParty[gLastFieldPokeMenuOpened], MON_DATA_HELD_ITEM, (void*) &gUnknown_0202E8F8); + CreateTask(sub_808B25C, 5); + gPaletteFade.bufferTransferDisabled = 0; + callback = CB2_PartyMenuMain; + } + else + { + SetPartyMenuSettings(PARTY_MENU_TYPE_STANDARD, 0, sub_808B4A4, 0xFF); + callback = sub_808B3A0; + } + SetMainCallback2(callback); +} + +static void sub_808B4A4(u8 taskID) +{ + if (!gPaletteFade.active) + { + DisplayGiveHeldItemMessage(gLastFieldPokeMenuOpened, gScriptItemId, 1); + gTasks[taskID].func = sub_808B4EC; + } +} + +static void sub_808B4EC(u8 taskID) +{ + if (gUnknown_0202E8F6 != 1) + sub_808B224(taskID); +} + +void sub_808B508(u8 taskID) +{ + sub_808B224(taskID); +} + +static void sub_808B518(void) +{ + while (1) + { + if (InitPartyMenu() == TRUE) + { + sub_806C994(EWRAM_1B000.menuHandlerTaskId, gUnknown_020384F0); + ChangePartyMenuSelection(EWRAM_1B000.menuHandlerTaskId, 0); + SetMainCallback2(CB2_PartyMenuMain); + break; + } + if (sub_80F9344() == TRUE) + break; + } +} + +void sub_808B564(void) +{ + gPaletteFade.bufferTransferDisabled = 1; + if (sub_809FA30() != 4) + SetPartyMenuSettings(PARTY_MENU_TYPE_STANDARD, 0, TaughtMove, 0xFF); + else + SetPartyMenuSettings(PARTY_MENU_TYPE_STANDARD, 0, StopTryingToTeachMove_806F588, 0xFF); + SetMainCallback2(sub_808B518); +} + +void sub_808B5B4(u32 taskID) +{ + gUnknown_03005CF0 = gTasks[taskID].func; + gTasks[taskID].func = sub_808B5E4; + sub_808B5E4(taskID); +} + +static void sub_808B5E4(u8 taskID) +{ + if (sub_8055870() != TRUE) + gTasks[taskID].func = gUnknown_03005CF0; +} diff --git a/src/pokemon_size_record.c b/src/pokemon/pokemon_size_record.c similarity index 100% rename from src/pokemon_size_record.c rename to src/pokemon/pokemon_size_record.c diff --git a/src/pokemon_storage_system.c b/src/pokemon/pokemon_storage_system.c similarity index 97% rename from src/pokemon_storage_system.c rename to src/pokemon/pokemon_storage_system.c index 0cab07fc1..5e97523e2 100644 --- a/src/pokemon_storage_system.c +++ b/src/pokemon/pokemon_storage_system.c @@ -12,6 +12,8 @@ extern const struct StorageAction gUnknown_083B6DF4[]; extern const u8 unk_2000000[]; +EWRAM_DATA struct PokemonStorage gPokemonStorage = {0}; + #define gUnk2002694 (u8 *)(&unk_2000000[0x2694]) #define gUnk20026A6 (u8 *)(&unk_2000000[0x26a6]) #define gUnk20011fa (u8 *)(&unk_2000000[0x11fa]) diff --git a/src/pokemon_summary_screen.c b/src/pokemon/pokemon_summary_screen.c similarity index 100% rename from src/pokemon_summary_screen.c rename to src/pokemon/pokemon_summary_screen.c diff --git a/src/record_mixing.c b/src/record_mixing.c deleted file mode 100644 index e1a72cf2e..000000000 --- a/src/record_mixing.c +++ /dev/null @@ -1,530 +0,0 @@ -#include "global.h" -#include "record_mixing.h" -#include "battle_tower.h" -#include "cable_club.h" -#include "daycare.h" -#include "dewford_trend.h" -#include "event_data.h" -#include "fldeff_80C5CD4.h" -#include "link.h" -#include "mauville_old_man.h" -#include "menu.h" -#include "mystery_event_script.h" -#include "rom4.h" -#include "script.h" -#include "secret_base.h" -#include "songs.h" -#include "sound.h" -#include "string_util.h" -#include "strings2.h" -#include "task.h" -#include "tv.h" - - -extern void *recordMixingSecretBases; -extern void *recordMixingTvShows; -extern void *gUnknown_083D0274; -extern void *gUnknown_083D0278; -extern void *recordMixingEasyChatPairs; -extern void *gUnknown_083D0284; -extern u8 gUnknown_083D0288[2]; -extern u8 gUnknown_083D028A[2][3]; -extern u8 gUnknown_083D0290[9][4]; - -extern struct RecordMixing_UnknownStruct gUnknown_02038738; //Don't know what type this points to -extern struct RecordMixing_UnknownStruct *gUnknown_083D0280; -extern u16 gSpecialVar_0x8005; -extern u32 gUnknown_03005D2C; -extern u8 gUnknown_03000718; -extern u8 gUnknown_0300071C[]; -extern bool8 gReceivedRemoteLinkPlayers; - -#define BUFFER_CHUNK_SIZE 200 - -void sub_80B929C(void) -{ - sub_8083A84(Task_RecordMixing_Main); -} - -struct PlayerRecords { - struct SecretBaseRecord secretBases[20]; - TVShow tvShows[25]; - u8 filler1004[0x40]; - u8 filler1044[0x40]; - struct EasyChatPair easyChatPairs[5]; - struct RecordMixing_UnknownStruct filler10AC; - u8 filler1124[0xA4]; - u16 filler11C8[0x34]; -}; - -extern struct PlayerRecords unk_2008000; -extern struct PlayerRecords unk_2018000; - -void RecordMixing_PrepareExchangePacket(void) -{ - sub_80BC300(); - sub_80C045C(); - - memcpy(unk_2018000.secretBases, recordMixingSecretBases, sizeof(unk_2018000.secretBases)); - memcpy(unk_2018000.tvShows, recordMixingTvShows, sizeof(unk_2018000.tvShows)); - memcpy(unk_2018000.filler1004, gUnknown_083D0274, 0x40); - memcpy(unk_2018000.filler1044, gUnknown_083D0278, 0x40); - memcpy(unk_2018000.easyChatPairs, recordMixingEasyChatPairs, 0x28); - gUnknown_02038738.data[0] = gSaveBlock1.filler_303C.data[0]; - gUnknown_02038738.data[1] = gSaveBlock1.filler_303C.data[1]; - sub_8041324(gSaveBlock1.daycareData, &gUnknown_02038738); - memcpy(&unk_2018000.filler10AC, gUnknown_083D0280, sizeof(struct RecordMixing_UnknownStruct)); - memcpy(unk_2018000.filler1124, gUnknown_083D0284, 0xA4); - - if (GetMultiplayerId() == 0) - unk_2018000.filler11C8[0] = sub_8126338(); -} - -void RecordMixing_ReceiveExchangePacket(u32 a) -{ - sub_80BD674(unk_2008000.secretBases, sizeof(struct PlayerRecords), a); - sub_80BFD44((u8 *)unk_2008000.tvShows, sizeof(struct PlayerRecords), a); - sub_80C0514(unk_2008000.filler1004, sizeof(struct PlayerRecords), a); - sub_80B9B1C(unk_2008000.filler1044, sizeof(struct PlayerRecords), a); - //UB: Too many arguments for function "sub_80FA4E4" - sub_80FA4E4(unk_2008000.easyChatPairs, sizeof(struct PlayerRecords), a); - sub_80B9C6C(&unk_2008000.filler10AC, sizeof(struct PlayerRecords), a, unk_2008000.tvShows); - sub_80B9B70(unk_2008000.filler1124, sizeof(struct PlayerRecords), a); - sub_80B9F3C(unk_2008000.filler11C8, a); -} - -void Task_RecordMixing_SoundEffect(u8 taskId) -{ - gTasks[taskId].data[0]++; - if (gTasks[taskId].data[0] == 50) - { - PlaySE(SE_W213); - gTasks[taskId].data[0] = 0; - } -} - -#define TD_STATE 0 -void Task_RecordMixing_Main(u8 taskId) -{ - s16 *taskData = gTasks[taskId].data; - - switch (taskData[TD_STATE]) - { - case 0: // init - sub_8007270(gSpecialVar_0x8005); - VarSet(0x4000, 1); - gUnknown_03000718 = 0; - RecordMixing_PrepareExchangePacket(); - CreateRecordMixingSprite(); - taskData[TD_STATE] = 1; - taskData[10] = CreateTask(sub_80B95F0, 0x50); - taskData[15] = CreateTask(Task_RecordMixing_SoundEffect, 0x51); - break; - case 1: // wait for sub_80B95F0 - if (!gTasks[taskData[10]].isActive) - { - taskData[TD_STATE] = 2; - FlagSet(SYS_MIX_RECORD); - DestroyRecordMixingSprite(); - DestroyTask(taskData[15]); - } - break; - case 2: - taskData[10] = CreateTask(sub_80BA00C, 10); - taskData[TD_STATE] = 3; - PlaySE(SE_W226); - break; - case 3: // wait for sub_80BA00C - if (!gTasks[taskData[10]].isActive) - { - taskData[TD_STATE] = 4; - taskData[10] = sub_8083664(); - sub_80720B0(); - MenuPrint(gOtherText_MixingComplete, 2, 15); - taskData[8] = 0; - } - break; - case 4: // wait 60 frames - taskData[8]++; - if (taskData[8] > 60) - taskData[TD_STATE] = 5; - break; - case 5: - if (!gTasks[taskData[10]].isActive) - { - sub_8055588(); - MenuZeroFillScreen(); - DestroyTask(taskId); - EnableBothScriptContexts(); - } - break; - } -} - -void sub_80B95F0(u8 taskId) -{ - struct Task *task = &gTasks[taskId]; - - switch (task->data[TD_STATE]) - { - case 0: - sub_80B9A78(); - MenuDisplayMessageBox(); - MenuPrint(gOtherText_MixingRecordsWithFriend, 2, 15); - task->data[8] = 0x708; - task->data[TD_STATE] = 400; - ClearLinkCallback_2(); - break; - case 100: // wait 20 frames - task->data[12]++; - if (task->data[12] > 20) - { - task->data[12] = 0; - task->data[TD_STATE] = 101; - } - break; - case 101: - { - u8 players = GetLinkPlayerCount_2(); - - if (IsLinkMaster() == 1) - { - if (players == sub_800820C()) - { - PlaySE(0x15); - task->data[TD_STATE] = 201; - task->data[12] = 0; - } - } - else - { - PlaySE(0x16); - task->data[TD_STATE] = 301; - } - break; - } - case 201: - if (sub_800820C() == GetLinkPlayerCount_2()) - { - if (++task->data[12] > GetLinkPlayerCount_2() * 30) - { - sub_8007F4C(); - task->data[TD_STATE] = 1; - } - } - break; - case 301: - if (sub_800820C() == GetLinkPlayerCount_2()) - task->data[TD_STATE] = 1; - break; - case 400: // wait 20 frames - task->data[12]++; - if (task->data[12] > 20) - { - task->data[TD_STATE] = 1; - task->data[12] = 0; - } - break; - case 1: // wait for handshake - if (gReceivedRemoteLinkPlayers) - { - ConvertIntToDecimalStringN(gStringVar1, GetMultiplayerId_(), 2, 2); - task->data[TD_STATE] = 5; - } - break; - case 2: - { - u8 subTaskId; - - task->data[6] = GetLinkPlayerCount_2(); - task->data[TD_STATE] = 0; - task->data[5] = GetMultiplayerId_(); - task->func = Task_RecordMixing_SendPacket; - StorePtrInTaskData(&unk_2018000, &task->data[2]); - subTaskId = CreateTask(Task_RecordMixing_CopyReceiveBuffer, 0x50); - task->data[10] = subTaskId; - gTasks[subTaskId].data[0] = taskId; - //StorePtrInTaskData((void*)0x2008000, &gTasks[subTaskId].data[5]); - StorePtrInTaskData((u8 *)&unk_2018000 - 0x10000, &gTasks[subTaskId].data[5]); - break; - } - case 5: // wait 60 frames - task->data[10]++; - if (task->data[10] > 60) - { - task->data[10] = 0; - task->data[TD_STATE] = 2; - } - break; - } -} - -void Task_RecordMixing_SendPacket(u8 taskId) -{ - struct Task *task = &gTasks[taskId]; - // does this send the data 24 times? - - switch (task->data[TD_STATE]) - { - case 0: //Copy record data to send buffer - { - void *recordData = (u8 *)LoadPtrFromTaskData(&task->data[2]) + BUFFER_CHUNK_SIZE * task->data[4]; - - memcpy(gBlockSendBuffer, recordData, BUFFER_CHUNK_SIZE); - task->data[TD_STATE]++; - break; - } - case 1: - if (GetMultiplayerId() == 0) - sub_8007E9C(1); - task->data[TD_STATE]++; - break; - case 2: - break; - case 3: - task->data[4]++; - if ((u16)task->data[4] == 24) - task->data[TD_STATE]++; - else - task->data[TD_STATE] = 0; - break; - case 4: - if (!gTasks[task->data[10]].isActive) - task->func = Task_RecordMixing_SendPacket_SwitchToReceive; - } -} - -void Task_RecordMixing_CopyReceiveBuffer(u8 taskId) -{ - struct Task *task = &gTasks[taskId]; - s32 recvStatus = GetBlockReceivedStatus(); - u8 handledPlayers = 0; - - if (recvStatus == sub_8008198()) - { - u8 player; - - for (player = 0; player < GetLinkPlayerCount(); player++) - { - void *src; - u8 *dst; - - if ((recvStatus >> player) & 1) - { - dst = LoadPtrFromTaskData(&task->data[5]) + task->data[player + 1] * BUFFER_CHUNK_SIZE + player * sizeof(struct PlayerRecords); - src = GetPlayerRecvBuffer(player); - if ((task->data[player + 1] + 1) * BUFFER_CHUNK_SIZE > sizeof(struct PlayerRecords)) - memcpy(dst, src, sizeof(struct PlayerRecords) - task->data[player + 1] * BUFFER_CHUNK_SIZE); - else - memcpy(dst, src, BUFFER_CHUNK_SIZE); - ResetBlockReceivedFlag(player); - task->data[player + 1]++; - if ((u16)task->data[player + 1] == 0x18) - handledPlayers++; - } - } - gTasks[task->data[0]].data[0]++; - } - //_080B998A - if (handledPlayers == GetLinkPlayerCount()) - DestroyTask(taskId); -} - -void sub_80B99B4(u8 taskId) -{ - struct Task *task = &gTasks[taskId]; - - if (!gTasks[task->data[10]].isActive) - DestroyTask(taskId); -} - -void Task_RecordMixing_ReceivePacket(u8 taskId) -{ - struct Task *task = &gTasks[taskId]; - - task->func = sub_80B99B4; - if (gUnknown_03000718 == 1) - RecordMixing_ReceiveExchangePacket(task->data[5]); -} - -void Task_RecordMixing_SendPacket_SwitchToReceive(u8 taskId) -{ - gTasks[taskId].func = Task_RecordMixing_ReceivePacket; - gUnknown_03000718 = 1; -} - -void *LoadPtrFromTaskData(u16 *ptr) -{ - return (void *)(*ptr | *(ptr + 1) << 16); -} - -void StorePtrInTaskData(void *ptr, u16 *data) -{ - *data = (u32)ptr; - *(data + 1) = (u32)ptr >> 16; -} - -u8 GetMultiplayerId_(void) -{ - return GetMultiplayerId(); -} - -u16 *GetPlayerRecvBuffer(u8 player) -{ - return gBlockRecvBuffer[player]; -} - -void sub_80B9A78(void) -{ - gUnknown_03005D2C = sizeof(struct PlayerRecords); -} - -void sub_80B9A88(u8 *a) -{ - u32 i; - u32 id; - u32 players = GetLinkPlayerCount(); - - switch (players) - { - case 2: - for (i = 0; i < 2; i++) - a[i] = gUnknown_083D0288[i]; - break; - case 3: - id = GetLinkPlayerTrainerId(0) % 2; - for (i = 0; i < 3; i++) - a[i] = gUnknown_083D028A[id][i]; - break; - case 4: - id = GetLinkPlayerTrainerId(0) % 9; - for (i = 0; i < 4; i++) - a[i] = gUnknown_083D0290[id][i]; - break; - default: - break; - } -} - -void sub_80B9B1C(u8 *a, size_t size, u8 index) -{ - u8 arr[4]; - u8 *ptr; - - sub_80B9A88(arr); - //Probably not how it was originally written, but this matches. - memcpy(a + index * size, (ptr = gUnknown_083D0278), 0x40); - memcpy(ptr, a + arr[index] * size, 0x40); - sub_80F7F30(); -} - -void sub_80B9B70(u8 *a, size_t size, u8 index) -{ - sub_80B9A88(gUnknown_0300071C); - memcpy(a + size * index, a + size * gUnknown_0300071C[index], 0xA4); - sub_8134AC0(a + size * index); -} - -u8 sub_80B9BBC(u16 *a) -{ - return a[16]; -} - -#undef NONMATCHING -#ifdef NONMATCHING - -void sub_80B9BC4(struct RecordMixing_UnknownStruct *a, size_t b, u8 c[][2], u8 d, u8 e) -{ - struct RecordMixing_UnknownStructSub *offA; - struct RecordMixing_UnknownStructSub *offB; - struct RecordMixing_UnknownStructSub v0; - v0 = (offA = ((struct RecordMixing_UnknownStruct *)(b * c[d][0] + (u32)&a))->data)[c[d][1]]; - offA[c[d][1]] = (offB = ((struct RecordMixing_UnknownStruct *)(b * c[e][0] + (u32)&a))->data)[c[e][1]]; - offB[c[e][1]] = v0; - //ToDo: Figure out what this strange stack usage is -} - -#else -__attribute__((naked)) -void sub_80B9BC4(struct RecordMixing_UnknownStruct *a, size_t b, u8 c[][2], u8 d, u8 e) -{ - asm(".syntax unified\n\ - push {r4-r6,lr}\n\ - mov r6, r10\n\ - mov r5, r9\n\ - mov r4, r8\n\ - push {r4-r6}\n\ - sub sp, 0x38\n\ - mov r8, r0\n\ - mov r10, r1\n\ - mov r9, r2\n\ - adds r4, r3, 0\n\ - ldr r5, [sp, 0x54]\n\ - lsls r4, 24\n\ - lsls r5, 24\n\ - lsrs r5, 24\n\ - lsrs r4, 23\n\ - add r4, r9\n\ - ldrb r0, [r4]\n\ - mov r6, r10\n\ - muls r6, r0\n\ - add r6, r8\n\ - ldrb r0, [r4, 0x1]\n\ - lsls r1, r0, 3\n\ - subs r1, r0\n\ - lsls r1, 3\n\ - adds r1, r6, r1\n\ - mov r0, sp\n\ - movs r2, 0x38\n\ - bl memcpy\n\ - lsls r5, 1\n\ - add r5, r9\n\ - ldrb r0, [r5]\n\ - mov r1, r10\n\ - muls r1, r0\n\ - adds r0, r1, 0\n\ - add r8, r0\n\ - ldrb r1, [r4, 0x1]\n\ - lsls r0, r1, 3\n\ - subs r0, r1\n\ - lsls r0, 3\n\ - adds r6, r0\n\ - ldrb r0, [r5, 0x1]\n\ - lsls r1, r0, 3\n\ - subs r1, r0\n\ - lsls r1, 3\n\ - add r1, r8\n\ - adds r0, r6, 0\n\ - movs r2, 0x38\n\ - bl memcpy\n\ - ldrb r1, [r5, 0x1]\n\ - lsls r0, r1, 3\n\ - subs r0, r1\n\ - lsls r0, 3\n\ - add r8, r0\n\ - mov r0, r8\n\ - mov r1, sp\n\ - movs r2, 0x38\n\ - bl memcpy\n\ - add sp, 0x38\n\ - pop {r3-r5}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - mov r10, r5\n\ - pop {r4-r6}\n\ - pop {r0}\n\ - bx r0\n\ - .syntax divided\n"); -} -#endif - -u8 sub_80B9C4C(u8 *a) -{ - int i; - u8 r2 = 0; - - for (i = 0; i < 0x100; i++) - r2 += a[i]; - return r2; -} - diff --git a/src/rom3.c b/src/rom3.c index 9d8d39f91..3f4860ecc 100644 --- a/src/rom3.c +++ b/src/rom3.c @@ -1,5 +1,4 @@ #include "global.h" -#include "rom3.h" #include "battle.h" #include "battle_811DA74.h" #include "battle_ai.h" @@ -10,10 +9,13 @@ #include "items.h" #include "link.h" #include "pokemon.h" +#include "rom3.h" #include "rom_8094928.h" #include "species.h" #include "task.h" #include "util.h" +#include "battle_message.h" +#include "data2.h" extern u8 unk_2000000[]; @@ -24,9 +26,10 @@ extern u16 gBattleTypeFlags; extern u16 gBattleWeather; extern struct BattlePokemon gBattleMons[]; -extern u8 gUnknown_020238C4; -extern u8 gUnknown_020238C5; -extern u8 gUnknown_020238C6; +static EWRAM_DATA u8 gUnknown_020238C4 = 0; +static EWRAM_DATA u8 gUnknown_020238C5 = 0; +static EWRAM_DATA u8 gUnknown_020238C6 = 0; + extern u32 gUnknown_020239FC; extern u8 gBattleBufferA[][0x200]; extern u8 gBattleBufferB[][0x200]; @@ -49,13 +52,14 @@ extern u8 gUnknown_02024C78; extern u8 gBattleOutcome; extern u8 gActionSelectionCursor[]; extern u8 gMoveSelectionCursor[]; -extern u8 gBattleBuffersTransferData[]; extern u8 gBattleTextBuff1[]; extern u8 gBattleTextBuff2[]; extern u8 gBattleTextBuff3[]; extern void (*gBattleMainFunc)(void); extern void (*gBattleBankFunc[])(void); +u8 gBattleBuffersTransferData[0x170]; + void sub_800B858(void) { if (gBattleTypeFlags & BATTLE_TYPE_LINK) @@ -341,30 +345,30 @@ void sub_800BD54(void) } } -void dp01_prepare_buffer(u8 a, u8 *b, u16 c) +void PrepareBufferDataTransfer(u8 a, u8 *data, u16 size) { int i; if (gBattleTypeFlags & BATTLE_TYPE_LINK) { - dp01_prepare_buffer_wireless_probably(a, c, b); + PrepareBufferDataTransferLink(a, size, data); } else { switch (a) { case 0: - for (i = 0; i < c; i++) + for (i = 0; i < size; i++) { - gBattleBufferA[gActiveBank][i] = *b; - b++; + gBattleBufferA[gActiveBank][i] = *data; + data++; } break; case 1: - for (i = 0; i < c; i++) + for (i = 0; i < size; i++) { - gBattleBufferB[gActiveBank][i] = *b; - b++; + gBattleBufferB[gActiveBank][i] = *data; + data++; } break; } @@ -388,12 +392,12 @@ void sub_800BF28(void) CpuFill16(0, EWRAM_14000, 0x2000); } -void dp01_prepare_buffer_wireless_probably(u8 a, u16 b, u8 *c) +void PrepareBufferDataTransferLink(u8 a, u16 size, u8 *data) { s32 r9; int i; - r9 = b - b % 4 + 4; + r9 = size - size % 4 + 4; if (gTasks[gUnknown_020238C4].data[14] + r9 + 9 > 0x1000) { gTasks[gUnknown_020238C4].data[12] = gTasks[gUnknown_020238C4].data[14]; @@ -407,8 +411,8 @@ void dp01_prepare_buffer_wireless_probably(u8 a, u16 b, u8 *c) unk_2000000[gTasks[gUnknown_020238C4].data[14] + 0x14005] = (r9 & 0x0000FF00) >> 8; unk_2000000[gTasks[gUnknown_020238C4].data[14] + 0x14006] = gAbsentBankFlags; unk_2000000[gTasks[gUnknown_020238C4].data[14] + 0x14007] = gEffectBank; - for (i = 0; i < b; i++) - unk_2000000[gTasks[gUnknown_020238C4].data[14] + 0x14008 + i] = c[i]; + for (i = 0; i < size; i++) + unk_2000000[gTasks[gUnknown_020238C4].data[14] + 0x14008 + i] = data[i]; gTasks[gUnknown_020238C4].data[14] = gTasks[gUnknown_020238C4].data[14] + r9 + 8; } @@ -568,19 +572,19 @@ void EmitGetAttributes(u8 a, u8 b, u8 c) gBattleBuffersTransferData[1] = b; gBattleBuffersTransferData[2] = c; gBattleBuffersTransferData[3] = 0; - dp01_prepare_buffer(a, gBattleBuffersTransferData, 4); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); } -void dp01_build_cmdbuf_x01_a_b_0(u8 a, u8 b, u8 c) +void Emitcmd1(u8 a, u8 b, u8 c) { gBattleBuffersTransferData[0] = 1; gBattleBuffersTransferData[1] = b; gBattleBuffersTransferData[2] = c; gBattleBuffersTransferData[3] = 0; - dp01_prepare_buffer(a, gBattleBuffersTransferData, 4); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); } -void EmitSetAttributes(u8 a, u8 b, u8 c, u8 d, u8 *e) +void EmitSetAttributes(u8 a, u8 b, u8 c, u8 d, void *e) { int i; @@ -588,11 +592,11 @@ void EmitSetAttributes(u8 a, u8 b, u8 c, u8 d, u8 *e) gBattleBuffersTransferData[1] = b; gBattleBuffersTransferData[2] = c; for (i = 0; i < d; i++) - gBattleBuffersTransferData[3 + i] = *(e++); - dp01_prepare_buffer(a, gBattleBuffersTransferData, d + 3); + gBattleBuffersTransferData[3 + i] = *(u8*)(e++); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, d + 3); } -void unref_sub_800C6A4(u8 a, u8 b, u8 c, u8 *d) +void Emitcmd3(u8 a, u8 b, u8 c, u8 *d) { int i; @@ -601,96 +605,96 @@ void unref_sub_800C6A4(u8 a, u8 b, u8 c, u8 *d) gBattleBuffersTransferData[2] = c; for (i = 0; i < c; i++) gBattleBuffersTransferData[3 + i] = *(d++); - dp01_prepare_buffer(a, gBattleBuffersTransferData, c + 3); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, c + 3); } -void dp01_build_cmdbuf_x04_4_4_4(u8 a) +void EmitLoadPokeSprite(u8 a) { gBattleBuffersTransferData[0] = 4; gBattleBuffersTransferData[1] = 4; gBattleBuffersTransferData[2] = 4; gBattleBuffersTransferData[3] = 4; - dp01_prepare_buffer(a, gBattleBuffersTransferData, 4); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); } -void sub_800C704(u8 a, u8 b, u8 c) +void EmitSendOutPoke(u8 a, u8 b, u8 c) { gBattleBuffersTransferData[0] = 5; gBattleBuffersTransferData[1] = b; gBattleBuffersTransferData[2] = c; gBattleBuffersTransferData[3] = 5; - dp01_prepare_buffer(a, gBattleBuffersTransferData, 4); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); } -void dp01_build_cmdbuf_x06_a(u8 a, u8 b) +void EmitReturnPokeToBall(u8 a, u8 b) { gBattleBuffersTransferData[0] = 6; gBattleBuffersTransferData[1] = b; - dp01_prepare_buffer(a, gBattleBuffersTransferData, 2); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 2); } -void dp01_build_cmdbuf_x07_7_7_7(u8 a) +void EmitTrainerThrow(u8 a) { gBattleBuffersTransferData[0] = 7; gBattleBuffersTransferData[1] = 7; gBattleBuffersTransferData[2] = 7; gBattleBuffersTransferData[3] = 7; - dp01_prepare_buffer(a, gBattleBuffersTransferData, 4); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); } -void dp01_build_cmdbuf_x08_8_8_8(u8 a) +void EmitTrainerSlide(u8 a) { gBattleBuffersTransferData[0] = 8; gBattleBuffersTransferData[1] = 8; gBattleBuffersTransferData[2] = 8; gBattleBuffersTransferData[3] = 8; - dp01_prepare_buffer(a, gBattleBuffersTransferData, 4); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); } -void dp01_build_cmdbuf_x09_9_9_9(u8 a) +void EmitTrainerSlideBack(u8 a) { gBattleBuffersTransferData[0] = 9; gBattleBuffersTransferData[1] = 9; gBattleBuffersTransferData[2] = 9; gBattleBuffersTransferData[3] = 9; - dp01_prepare_buffer(a, gBattleBuffersTransferData, 4); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); } -void EmitFaintAnimation(u8 a) +void Emitcmd10(u8 a) { gBattleBuffersTransferData[0] = 10; gBattleBuffersTransferData[1] = 10; gBattleBuffersTransferData[2] = 10; gBattleBuffersTransferData[3] = 10; - dp01_prepare_buffer(a, gBattleBuffersTransferData, 4); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); } -void dp01_build_cmdbuf_x0B_B_B_B(u8 a) +void Emitcmd11(u8 a) { gBattleBuffersTransferData[0] = 11; gBattleBuffersTransferData[1] = 11; gBattleBuffersTransferData[2] = 11; gBattleBuffersTransferData[3] = 11; - dp01_prepare_buffer(a, gBattleBuffersTransferData, 4); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); } -void dp01_build_cmdbuf_x0C_C_C_C(u8 a) +void Emitcmd12(u8 a) { gBattleBuffersTransferData[0] = 12; gBattleBuffersTransferData[1] = 12; gBattleBuffersTransferData[2] = 12; gBattleBuffersTransferData[3] = 12; - dp01_prepare_buffer(a, gBattleBuffersTransferData, 4); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); } -void dp01_build_cmdbuf_x0D_a(u8 a, u8 b) +void EmitBallThrow(u8 a, u8 b) { gBattleBuffersTransferData[0] = 13; gBattleBuffersTransferData[1] = b; - dp01_prepare_buffer(a, gBattleBuffersTransferData, 2); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 2); } -void unref_sub_800C828(u8 a, u8 b, u8 *c) +void EmitPuase(u8 a, u8 b, u8 *c) { int i; @@ -698,10 +702,10 @@ void unref_sub_800C828(u8 a, u8 b, u8 *c) gBattleBuffersTransferData[1] = b; for (i = 0; i < b * 3; i++) gBattleBuffersTransferData[2 + i] = *(c++); - dp01_prepare_buffer(a, gBattleBuffersTransferData, b * 3 + 2); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, b * 3 + 2); } -void EmitMoveAnimation(u8 a, u16 b, u8 c, u16 d, s32 e, u8 f, u8 *g) +void EmitMoveAnimation(u8 a, u16 b, u8 c, u16 d, s32 e, u8 f, struct DisableStruct *g) { gBattleBuffersTransferData[0] = 15; gBattleBuffersTransferData[1] = b; @@ -727,315 +731,88 @@ void EmitMoveAnimation(u8 a, u16 b, u8 c, u16 d, s32 e, u8 f, u8 *g) } gBattleBuffersTransferData[14] = 0; gBattleBuffersTransferData[15] = 0; - memcpy(&gBattleBuffersTransferData[16], g, 0x1C); - dp01_prepare_buffer(a, gBattleBuffersTransferData, 0x2C); + memcpy(&gBattleBuffersTransferData[16], g, sizeof(*g)); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 0x2C); } -#ifdef NONMATCHING -void EmitPrintString(u8 a, u16 b) +void EmitPrintString(u8 a, u16 stringID) { - int i; - //u16 *r12; + s32 i; + struct StringInfoBattle* stringInfo; gBattleBuffersTransferData[0] = 16; gBattleBuffersTransferData[1] = gBattleOutcome; - gBattleBuffersTransferData[2] = b; - gBattleBuffersTransferData[3] = (b & 0xFF00) >> 8; + gBattleBuffersTransferData[2] = stringID; + gBattleBuffersTransferData[3] = (stringID & 0xFF00) >> 8; - *((u16 *)&gBattleBuffersTransferData[4]) = gCurrentMove; - *((u16 *)&gBattleBuffersTransferData[6]) = gUnknown_02024BE8; - *((u16 *)&gBattleBuffersTransferData[8]) = gLastUsedItem; + stringInfo = (struct StringInfoBattle*)(&gBattleBuffersTransferData[4]); + stringInfo->currentMove = gCurrentMove; + stringInfo->lastMove = gUnknown_02024BE8; + stringInfo->lastItem = gLastUsedItem; + stringInfo->lastAbility = gLastUsedAbility; + stringInfo->scrActive = BATTLE_STRUCT->scriptingActive; + stringInfo->unk1605E = BATTLE_STRUCT->unk1605E; + stringInfo->hpScale = BATTLE_STRUCT->hpScale; + stringInfo->StringBank = gStringBank; + stringInfo->moveType = gBattleMoves[gCurrentMove].type; - gBattleBuffersTransferData[10] = gLastUsedAbility; - gBattleBuffersTransferData[11] = unk_2000000[0x16000 + 3]; - gBattleBuffersTransferData[12] = unk_2000000[0x16000 + 0x5E]; - gBattleBuffersTransferData[13] = unk_2000000[0x16000 + 0xC1]; - gBattleBuffersTransferData[14] = gStringBank; - gBattleBuffersTransferData[15] = gBattleMoves[gCurrentMove].type; for (i = 0; i < 4; i++) + stringInfo->abilities[i] = gBattleMons[i].ability; + for (i = 0; i < 0x10; i++) { - gBattleBuffersTransferData[16 + i] = gBattleMons[i].ability; + stringInfo->textBuffs[0][i] = gBattleTextBuff1[i]; + stringInfo->textBuffs[1][i] = gBattleTextBuff2[i]; + stringInfo->textBuffs[2][i] = gBattleTextBuff3[i]; } - for (i = 0; i < 16; i++) - { - gBattleBuffersTransferData[20 + i] = gBattleTextBuff1[i]; - gBattleBuffersTransferData[36 + i] = gBattleTextBuff2[i]; - gBattleBuffersTransferData[52 + i] = gBattleTextBuff3[i]; - } - dp01_prepare_buffer(a, gBattleBuffersTransferData, 0x44); -} -#else -__attribute__((naked)) -void EmitPrintString(u8 a, u16 b) -{ - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r10\n\ - mov r6, r9\n\ - mov r5, r8\n\ - push {r5-r7}\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - mov r10, r0\n\ - lsls r1, 16\n\ - lsrs r1, 16\n\ - ldr r2, _0800CA2C @ =gBattleBuffersTransferData\n\ - movs r0, 0x10\n\ - strb r0, [r2]\n\ - ldr r0, _0800CA30 @ =gBattleOutcome\n\ - ldrb r0, [r0]\n\ - strb r0, [r2, 0x1]\n\ - strb r1, [r2, 0x2]\n\ - lsrs r1, 8\n\ - strb r1, [r2, 0x3]\n\ - adds r0, r2, 0x4\n\ - mov r12, r0\n\ - ldr r4, _0800CA34 @ =gCurrentMove\n\ - ldrh r0, [r4]\n\ - strh r0, [r2, 0x4]\n\ - ldr r0, _0800CA38 @ =gUnknown_02024BE8\n\ - ldrh r0, [r0]\n\ - mov r1, r12\n\ - strh r0, [r1, 0x2]\n\ - ldr r0, _0800CA3C @ =gLastUsedItem\n\ - ldrh r0, [r0]\n\ - strh r0, [r1, 0x4]\n\ - ldr r0, _0800CA40 @ =gLastUsedAbility\n\ - ldrb r0, [r0]\n\ - strb r0, [r1, 0x6]\n\ - ldr r1, _0800CA44 @ =0x02000000\n\ - ldr r3, _0800CA48 @ =0x00016003\n\ - adds r0, r1, r3\n\ - ldrb r0, [r0]\n\ - mov r7, r12\n\ - strb r0, [r7, 0x7]\n\ - adds r3, 0x5B\n\ - adds r0, r1, r3\n\ - ldrb r0, [r0]\n\ - strb r0, [r7, 0x8]\n\ - ldr r7, _0800CA4C @ =0x000160c1\n\ - adds r1, r7\n\ - ldrb r0, [r1]\n\ - mov r1, r12\n\ - strb r0, [r1, 0x9]\n\ - ldr r0, _0800CA50 @ =gStringBank\n\ - ldrb r0, [r0]\n\ - strb r0, [r1, 0xA]\n\ - ldr r3, _0800CA54 @ =gBattleMoves\n\ - ldrh r1, [r4]\n\ - lsls r0, r1, 1\n\ - adds r0, r1\n\ - lsls r0, 2\n\ - adds r0, r3\n\ - ldrb r0, [r0, 0x2]\n\ - mov r3, r12\n\ - strb r0, [r3, 0xB]\n\ - movs r3, 0\n\ - mov r9, r2\n\ - ldr r7, _0800CA58 @ =gBattleTextBuff3\n\ - mov r8, r7\n\ - adds r2, 0x10\n\ - ldr r0, _0800CA5C @ =gBattleMons\n\ - adds r4, r0, 0\n\ - adds r4, 0x20\n\ -_0800C9D2:\n\ - adds r1, r2, r3\n\ - ldrb r0, [r4]\n\ - strb r0, [r1]\n\ - adds r4, 0x58\n\ - adds r3, 0x1\n\ - cmp r3, 0x3\n\ - ble _0800C9D2\n\ - movs r3, 0\n\ - mov r5, r12\n\ - adds r5, 0x10\n\ - mov r4, r12\n\ - adds r4, 0x20\n\ - ldr r6, _0800CA60 @ =gBattleTextBuff2\n\ - mov r2, r12\n\ - adds r2, 0x30\n\ -_0800C9F0:\n\ - adds r1, r5, r3\n\ - ldr r7, _0800CA64 @ =gBattleTextBuff1\n\ - adds r0, r3, r7\n\ - ldrb r0, [r0]\n\ - strb r0, [r1]\n\ - adds r1, r4, r3\n\ - adds r0, r3, r6\n\ - ldrb r0, [r0]\n\ - strb r0, [r1]\n\ - adds r1, r2, r3\n\ - mov r7, r8\n\ - adds r0, r3, r7\n\ - ldrb r0, [r0]\n\ - strb r0, [r1]\n\ - adds r3, 0x1\n\ - cmp r3, 0xF\n\ - ble _0800C9F0\n\ - mov r0, r10\n\ - mov r1, r9\n\ - movs r2, 0x44\n\ - bl dp01_prepare_buffer\n\ - pop {r3-r5}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - mov r10, r5\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_0800CA2C: .4byte gBattleBuffersTransferData\n\ -_0800CA30: .4byte gBattleOutcome\n\ -_0800CA34: .4byte gCurrentMove\n\ -_0800CA38: .4byte gUnknown_02024BE8\n\ -_0800CA3C: .4byte gLastUsedItem\n\ -_0800CA40: .4byte gLastUsedAbility\n\ -_0800CA44: .4byte 0x02000000\n\ -_0800CA48: .4byte 0x00016003\n\ -_0800CA4C: .4byte 0x000160c1\n\ -_0800CA50: .4byte gStringBank\n\ -_0800CA54: .4byte gBattleMoves\n\ -_0800CA58: .4byte gBattleTextBuff3\n\ -_0800CA5C: .4byte gBattleMons\n\ -_0800CA60: .4byte gBattleTextBuff2\n\ -_0800CA64: .4byte gBattleTextBuff1\n\ - .syntax divided\n"); -} -#endif - -__attribute__((naked)) -void EmitPrintStringPlayerOnly() -{ - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r10\n\ - mov r6, r9\n\ - mov r5, r8\n\ - push {r5-r7}\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - mov r10, r0\n\ - lsls r1, 16\n\ - lsrs r1, 16\n\ - ldr r2, _0800CB28 @ =gBattleBuffersTransferData\n\ - movs r0, 0x11\n\ - strb r0, [r2]\n\ - strb r0, [r2, 0x1]\n\ - strb r1, [r2, 0x2]\n\ - lsrs r1, 8\n\ - strb r1, [r2, 0x3]\n\ - adds r0, r2, 0x4\n\ - mov r12, r0\n\ - ldr r0, _0800CB2C @ =gCurrentMove\n\ - ldrh r0, [r0]\n\ - strh r0, [r2, 0x4]\n\ - ldr r0, _0800CB30 @ =gUnknown_02024BE8\n\ - ldrh r0, [r0]\n\ - mov r1, r12\n\ - strh r0, [r1, 0x2]\n\ - ldr r0, _0800CB34 @ =gLastUsedItem\n\ - ldrh r0, [r0]\n\ - strh r0, [r1, 0x4]\n\ - ldr r0, _0800CB38 @ =gLastUsedAbility\n\ - ldrb r0, [r0]\n\ - strb r0, [r1, 0x6]\n\ - ldr r0, _0800CB3C @ =0x02000000\n\ - ldr r3, _0800CB40 @ =0x00016003\n\ - adds r1, r0, r3\n\ - ldrb r1, [r1]\n\ - mov r7, r12\n\ - strb r1, [r7, 0x7]\n\ - ldr r1, _0800CB44 @ =0x0001605e\n\ - adds r0, r1\n\ - ldrb r0, [r0]\n\ - strb r0, [r7, 0x8]\n\ - movs r3, 0\n\ - mov r9, r2\n\ - ldr r7, _0800CB48 @ =gBattleTextBuff3\n\ - mov r8, r7\n\ - mov r4, r9\n\ - adds r4, 0x10\n\ - ldr r0, _0800CB4C @ =gBattleMons\n\ - adds r2, r0, 0\n\ - adds r2, 0x20\n\ -_0800CACE:\n\ - adds r1, r4, r3\n\ - ldrb r0, [r2]\n\ - strb r0, [r1]\n\ - adds r2, 0x58\n\ - adds r3, 0x1\n\ - cmp r3, 0x3\n\ - ble _0800CACE\n\ - movs r3, 0\n\ - mov r5, r12\n\ - adds r5, 0x10\n\ - mov r4, r12\n\ - adds r4, 0x20\n\ - ldr r6, _0800CB50 @ =gBattleTextBuff2\n\ - mov r2, r12\n\ - adds r2, 0x30\n\ -_0800CAEC:\n\ - adds r1, r5, r3\n\ - ldr r7, _0800CB54 @ =gBattleTextBuff1\n\ - adds r0, r3, r7\n\ - ldrb r0, [r0]\n\ - strb r0, [r1]\n\ - adds r1, r4, r3\n\ - adds r0, r3, r6\n\ - ldrb r0, [r0]\n\ - strb r0, [r1]\n\ - adds r1, r2, r3\n\ - mov r7, r8\n\ - adds r0, r3, r7\n\ - ldrb r0, [r0]\n\ - strb r0, [r1]\n\ - adds r3, 0x1\n\ - cmp r3, 0xF\n\ - ble _0800CAEC\n\ - mov r0, r10\n\ - mov r1, r9\n\ - movs r2, 0x44\n\ - bl dp01_prepare_buffer\n\ - pop {r3-r5}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - mov r10, r5\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_0800CB28: .4byte gBattleBuffersTransferData\n\ -_0800CB2C: .4byte gCurrentMove\n\ -_0800CB30: .4byte gUnknown_02024BE8\n\ -_0800CB34: .4byte gLastUsedItem\n\ -_0800CB38: .4byte gLastUsedAbility\n\ -_0800CB3C: .4byte 0x02000000\n\ -_0800CB40: .4byte 0x00016003\n\ -_0800CB44: .4byte 0x0001605e\n\ -_0800CB48: .4byte gBattleTextBuff3\n\ -_0800CB4C: .4byte gBattleMons\n\ -_0800CB50: .4byte gBattleTextBuff2\n\ -_0800CB54: .4byte gBattleTextBuff1\n\ - .syntax divided\n"); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, sizeof(struct StringInfoBattle) + 4); } -void dp01_build_cmdbuf_x12_a_bb(u8 a, u8 b, u16 c) +void EmitPrintStringPlayerOnly(u8 a, u16 stringID) +{ + s32 i; + struct StringInfoBattle* stringInfo; + + gBattleBuffersTransferData[0] = 17; + gBattleBuffersTransferData[1] = 17; + gBattleBuffersTransferData[2] = stringID; + gBattleBuffersTransferData[3] = (stringID & 0xFF00) >> 8; + + stringInfo = (struct StringInfoBattle*)(&gBattleBuffersTransferData[4]); + stringInfo->currentMove = gCurrentMove; + stringInfo->lastMove = gUnknown_02024BE8; + stringInfo->lastItem = gLastUsedItem; + stringInfo->lastAbility = gLastUsedAbility; + stringInfo->scrActive = BATTLE_STRUCT->scriptingActive; + stringInfo->unk1605E = BATTLE_STRUCT->unk1605E; + + for (i = 0; i < 4; i++) + stringInfo->abilities[i] = gBattleMons[i].ability; + for (i = 0; i < 0x10; i++) + { + stringInfo->textBuffs[0][i] = gBattleTextBuff1[i]; + stringInfo->textBuffs[1][i] = gBattleTextBuff2[i]; + stringInfo->textBuffs[2][i] = gBattleTextBuff3[i]; + } + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, sizeof(struct StringInfoBattle) + 4); +} + +void Emitcmd18(u8 a, u8 b, u16 c) { gBattleBuffersTransferData[0] = 18; gBattleBuffersTransferData[1] = b; gBattleBuffersTransferData[2] = c; gBattleBuffersTransferData[3] = (c & 0xFF00) >> 8; - dp01_prepare_buffer(a, gBattleBuffersTransferData, 4); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); } -void unref_sub_800CB84(u8 a, u8 b) +void Emitcmd19(u8 a, u8 b) { gBattleBuffersTransferData[0] = 19; gBattleBuffersTransferData[1] = b; - dp01_prepare_buffer(a, gBattleBuffersTransferData, 2); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 2); } -void sub_800CBA4(u8 a, u8 b, u8 c, u8 *d) +void Emitcmd20(u8 a, u8 b, u8 c, u8 *d) { u32 i; @@ -1045,20 +822,20 @@ void sub_800CBA4(u8 a, u8 b, u8 c, u8 *d) gBattleBuffersTransferData[3] = 0; for (i = 0; i < 20; i++) gBattleBuffersTransferData[4 + i] = d[i]; - dp01_prepare_buffer(a, gBattleBuffersTransferData, 24); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 24); } -void sub_800CBE0(u8 a, u8 *b) +void EmitOpenBag(u8 a, u8 *b) { int i; gBattleBuffersTransferData[0] = 21; for (i = 0; i < 3; i++) gBattleBuffersTransferData[1 + i] = b[i]; - dp01_prepare_buffer(a, gBattleBuffersTransferData, 4); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); } -void dp01_build_cmdbuf_x16_a_b_c_ptr_d_e_f(u8 a, u8 b, u8 c, u8 d, u8 *e) +void EmitChoosePokemon(u8 a, u8 b, u8 c, u8 d, u8 *e) { int i; @@ -1068,34 +845,38 @@ void dp01_build_cmdbuf_x16_a_b_c_ptr_d_e_f(u8 a, u8 b, u8 c, u8 d, u8 *e) gBattleBuffersTransferData[3] = d; for (i = 0; i < 3; i++) gBattleBuffersTransferData[4 + i] = e[i]; - dp01_prepare_buffer(a, gBattleBuffersTransferData, 8); //but only 7 bytes were written + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 8); //but only 7 bytes were written } -void dp01_build_cmdbuf_x17_17_17_17(u8 a) +void Emitcmd23(u8 a) { gBattleBuffersTransferData[0] = 23; gBattleBuffersTransferData[1] = 23; gBattleBuffersTransferData[2] = 23; gBattleBuffersTransferData[3] = 23; - dp01_prepare_buffer(a, gBattleBuffersTransferData, 4); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); } -void EmitHealthBarUpdate(u8 a, s16 b) +// FIXME: I think this function is supposed to take s16 as its second argument, +// but battle_4.c expects u16 +void EmitHealthBarUpdate(u8 a, u16 b) { gBattleBuffersTransferData[0] = 24; gBattleBuffersTransferData[1] = 0; - gBattleBuffersTransferData[2] = b; - gBattleBuffersTransferData[3] = (b & 0xFF00) >> 8; - dp01_prepare_buffer(a, gBattleBuffersTransferData, 4); + gBattleBuffersTransferData[2] = (s16)b; + gBattleBuffersTransferData[3] = ((s16)b & 0xFF00) >> 8; + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); } -void EmitExpBarUpdate(u8 a, u8 b, s16 c) +// FIXME: I think this function is supposed to take s16 as its third argument, +// but battle_4.c expects u16 +void EmitExpBarUpdate(u8 a, u8 b, u16 c) { gBattleBuffersTransferData[0] = 25; gBattleBuffersTransferData[1] = b; - gBattleBuffersTransferData[2] = c; - gBattleBuffersTransferData[3] = (c & 0xFF00) >> 8; - dp01_prepare_buffer(a, gBattleBuffersTransferData, 4); + gBattleBuffersTransferData[2] = (s16)c; + gBattleBuffersTransferData[3] = ((s16)c & 0xFF00) >> 8; + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); } void EmitStatusIconUpdate(u8 a, u32 b, u32 c) @@ -1109,7 +890,7 @@ void EmitStatusIconUpdate(u8 a, u32 b, u32 c) gBattleBuffersTransferData[6] = (c & 0x0000FF00) >> 8; gBattleBuffersTransferData[7] = (c & 0x00FF0000) >> 16; gBattleBuffersTransferData[8] = (c & 0xFF000000) >> 24; - dp01_prepare_buffer(a, gBattleBuffersTransferData, 9); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 9); } void EmitStatusAnimation(u8 a, u8 b, u32 c) @@ -1120,17 +901,17 @@ void EmitStatusAnimation(u8 a, u8 b, u32 c) gBattleBuffersTransferData[3] = (c & 0x0000FF00) >> 8; gBattleBuffersTransferData[4] = (c & 0x00FF0000) >> 16; gBattleBuffersTransferData[5] = (c & 0xFF000000) >> 24; - dp01_prepare_buffer(a, gBattleBuffersTransferData, 6); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 6); } void EmitStatusXor(u8 a, u8 b) { gBattleBuffersTransferData[0] = 28; gBattleBuffersTransferData[1] = b; - dp01_prepare_buffer(a, gBattleBuffersTransferData, 2); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 2); } -void dp01_build_cmdbuf_x1D_1D_numargs_varargs(u8 a, u16 b, u8 *c) +void Emitcmd29(u8 a, u16 b, u8 *c) { int i; @@ -1140,10 +921,10 @@ void dp01_build_cmdbuf_x1D_1D_numargs_varargs(u8 a, u16 b, u8 *c) gBattleBuffersTransferData[3] = (b & 0xFF00) >> 8; for (i = 0; i < b; i++) gBattleBuffersTransferData[4 + i] = *(c++); - dp01_prepare_buffer(a, gBattleBuffersTransferData, b + 4); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, b + 4); } -void unref_sub_800CDD4(u8 a, u32 b, u16 c, u8 *d) +void EmitDMATransfer(u8 a, u32 b, u16 c, u8 *d) { int i; @@ -1156,10 +937,10 @@ void unref_sub_800CDD4(u8 a, u32 b, u16 c, u8 *d) gBattleBuffersTransferData[6] = (c & 0xFF00) >> 8; for (i = 0; i < c; i++) gBattleBuffersTransferData[7 + i] = *(d++); - dp01_prepare_buffer(a, gBattleBuffersTransferData, c + 7); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, c + 7); } -void unref_sub_800CE3C(u8 a, u16 b, u8 *c) +void Emitcmd31(u8 a, u16 b, u8 *c) { int i; @@ -1168,10 +949,10 @@ void unref_sub_800CE3C(u8 a, u16 b, u8 *c) gBattleBuffersTransferData[2] = (b & 0xFF00) >> 8; for (i = 0; i < b; i++) gBattleBuffersTransferData[3 + i] = *(c++); - dp01_prepare_buffer(a, gBattleBuffersTransferData, b + 3); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, b + 3); } -void unref_sub_800CE84(u8 a, u16 b, u8 *c) +void Emitcmd32(u8 a, u16 b, u8 *c) { int i; @@ -1180,19 +961,19 @@ void unref_sub_800CE84(u8 a, u16 b, u8 *c) gBattleBuffersTransferData[2] = (b & 0xFF00) >> 8; for (i = 0; i < b; i++) gBattleBuffersTransferData[3 + i] = *(c++); - dp01_prepare_buffer(a, gBattleBuffersTransferData, b + 3); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, b + 3); } -void dp01_build_cmdbuf_x21_a_bb(u8 a, u8 b, u16 c) +void Emitcmd33(u8 a, u8 b, u16 c) { gBattleBuffersTransferData[0] = 33; gBattleBuffersTransferData[1] = b; gBattleBuffersTransferData[2] = c; gBattleBuffersTransferData[3] = (c & 0xFF00) >> 8; - dp01_prepare_buffer(a, gBattleBuffersTransferData, 4); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); } -void dp01_build_cmdbuf_x22_a_three_bytes(u8 a, u8 b, u8 *c) +void Emitcmd34(u8 a, u8 b, u8 *c) { int i; @@ -1200,59 +981,59 @@ void dp01_build_cmdbuf_x22_a_three_bytes(u8 a, u8 b, u8 *c) gBattleBuffersTransferData[1] = b; for (i = 0; i < 3; i++) gBattleBuffersTransferData[2 + i] = c[i]; - dp01_prepare_buffer(a, gBattleBuffersTransferData, 5); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 5); } -void dp01_build_cmdbuf_x23_aa_0(u8 a, u16 b) +void Emitcmd35(u8 a, u16 b) { gBattleBuffersTransferData[0] = 35; gBattleBuffersTransferData[1] = b; gBattleBuffersTransferData[2] = (b & 0xFF00) >> 8; gBattleBuffersTransferData[3] = 0; - dp01_prepare_buffer(a, gBattleBuffersTransferData, 4); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); } -void dp01_build_cmdbuf_x24_aa_0(u8 a, u16 b) +void Emitcmd36(u8 a, u16 b) { gBattleBuffersTransferData[0] = 36; gBattleBuffersTransferData[1] = b; gBattleBuffersTransferData[2] = (b & 0xFF00) >> 8; gBattleBuffersTransferData[3] = 0; - dp01_prepare_buffer(a, gBattleBuffersTransferData, 4); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); } -void dp01_build_cmdbuf_x25_25_25_25(u8 a) +void Emitcmd37(u8 a) { gBattleBuffersTransferData[0] = 37; gBattleBuffersTransferData[1] = 37; gBattleBuffersTransferData[2] = 37; gBattleBuffersTransferData[3] = 37; - dp01_prepare_buffer(a, gBattleBuffersTransferData, 4); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); } -void dp01_build_cmdbuf_x26_a(u8 a, u8 b) +void Emitcmd38(u8 a, u8 b) { gBattleBuffersTransferData[0] = 38; gBattleBuffersTransferData[1] = b; - dp01_prepare_buffer(a, gBattleBuffersTransferData, 2); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 2); } -void dp01_build_cmdbuf_x27_27_27_27(u8 a) +void Emitcmd39(u8 a) { gBattleBuffersTransferData[0] = 39; gBattleBuffersTransferData[1] = 39; gBattleBuffersTransferData[2] = 39; gBattleBuffersTransferData[3] = 39; - dp01_prepare_buffer(a, gBattleBuffersTransferData, 4); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); } -void dp01_build_cmdbuf_x28_28_28_28(u8 a) +void Emitcmd40(u8 a) { gBattleBuffersTransferData[0] = 40; gBattleBuffersTransferData[1] = 40; gBattleBuffersTransferData[2] = 40; gBattleBuffersTransferData[3] = 40; - dp01_prepare_buffer(a, gBattleBuffersTransferData, 4); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); } void EmitHitAnimation(u8 a) @@ -1261,16 +1042,16 @@ void EmitHitAnimation(u8 a) gBattleBuffersTransferData[1] = 41; gBattleBuffersTransferData[2] = 41; gBattleBuffersTransferData[3] = 41; - dp01_prepare_buffer(a, gBattleBuffersTransferData, 4); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); } -void dp01_build_cmdbuf_x2A_2A_2A_2A(u8 a) +void Emitcmd42(u8 a) { gBattleBuffersTransferData[0] = 42; gBattleBuffersTransferData[1] = 42; gBattleBuffersTransferData[2] = 42; gBattleBuffersTransferData[3] = 42; - dp01_prepare_buffer(a, gBattleBuffersTransferData, 4); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); } void EmitEffectivenessSound(u8 a, u16 b) @@ -1279,16 +1060,16 @@ void EmitEffectivenessSound(u8 a, u16 b) gBattleBuffersTransferData[1] = b; gBattleBuffersTransferData[2] = (b & 0xFF00) >> 8; gBattleBuffersTransferData[3] = 0; - dp01_prepare_buffer(a, gBattleBuffersTransferData, 4); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); } -void sub_800D074(u8 a, u16 b) +void Emitcmd44(u8 a, u16 b) { gBattleBuffersTransferData[0] = 44; gBattleBuffersTransferData[1] = b; gBattleBuffersTransferData[2] = (b & 0xFF00) >> 8; gBattleBuffersTransferData[3] = 0; - dp01_prepare_buffer(a, gBattleBuffersTransferData, 4); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); } void EmitFaintingCry(u8 a) @@ -1297,26 +1078,26 @@ void EmitFaintingCry(u8 a) gBattleBuffersTransferData[1] = 45; gBattleBuffersTransferData[2] = 45; gBattleBuffersTransferData[3] = 45; - dp01_prepare_buffer(a, gBattleBuffersTransferData, 4); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); } -void EmitBattleIntroSlide(u8 a, u8 b) +void EmitIntroSlide(u8 a, u8 battleTerrain) { gBattleBuffersTransferData[0] = 46; - gBattleBuffersTransferData[1] = b; - dp01_prepare_buffer(a, gBattleBuffersTransferData, 2); + gBattleBuffersTransferData[1] = battleTerrain; + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 2); } -void dp01_build_cmdbuf_x2F_2F_2F_2F(u8 a) +void EmitTrainerBallThrow(u8 a) { gBattleBuffersTransferData[0] = 47; gBattleBuffersTransferData[1] = 47; gBattleBuffersTransferData[2] = 47; gBattleBuffersTransferData[3] = 47; - dp01_prepare_buffer(a, gBattleBuffersTransferData, 4); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); } -void dp01_build_cmdbuf_x30_TODO(u8 a, u8 *b, u8 c) +void Emitcmd48(u8 a, u8 *b, u8 c) { int i; @@ -1326,25 +1107,25 @@ void dp01_build_cmdbuf_x30_TODO(u8 a, u8 *b, u8 c) gBattleBuffersTransferData[3] = 48; for (i = 0; i < 48; i++) gBattleBuffersTransferData[4 + i] = b[i]; - dp01_prepare_buffer(a, gBattleBuffersTransferData, 52); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 52); } -void dp01_build_cmdbuf_x31_31_31_31(u8 a) +void Emitcmd49(u8 a) { gBattleBuffersTransferData[0] = 49; gBattleBuffersTransferData[1] = 49; gBattleBuffersTransferData[2] = 49; gBattleBuffersTransferData[3] = 49; - dp01_prepare_buffer(a, gBattleBuffersTransferData, 4); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); } -void dp01_build_cmdbuf_x32_32_32_32(u8 a) +void Emitcmd50(u8 a) { gBattleBuffersTransferData[0] = 50; gBattleBuffersTransferData[1] = 50; gBattleBuffersTransferData[2] = 50; gBattleBuffersTransferData[3] = 50; - dp01_prepare_buffer(a, gBattleBuffersTransferData, 4); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); } void EmitSpriteInvisibility(u8 a, u8 b) @@ -1353,7 +1134,7 @@ void EmitSpriteInvisibility(u8 a, u8 b) gBattleBuffersTransferData[1] = b; gBattleBuffersTransferData[2] = 51; gBattleBuffersTransferData[3] = 51; - dp01_prepare_buffer(a, gBattleBuffersTransferData, 4); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); } void EmitBattleAnimation(u8 a, u8 b, u16 c) @@ -1362,26 +1143,26 @@ void EmitBattleAnimation(u8 a, u8 b, u16 c) gBattleBuffersTransferData[1] = b; gBattleBuffersTransferData[2] = c; gBattleBuffersTransferData[3] = (c & 0xFF00) >> 8; - dp01_prepare_buffer(a, gBattleBuffersTransferData, 4); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); } void EmitLinkStandbyMsg(u8 a, u8 b) { gBattleBuffersTransferData[0] = 53; gBattleBuffersTransferData[1] = b; - dp01_prepare_buffer(a, gBattleBuffersTransferData, 2); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 2); } void EmitResetActionMoveSelection(u8 a, u8 b) { gBattleBuffersTransferData[0] = 54; gBattleBuffersTransferData[1] = b; - dp01_prepare_buffer(a, gBattleBuffersTransferData, 2); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 2); } -void dp01_build_cmdbuf_x37_a(u8 a, u8 b) +void Emitcmd55(u8 a, u8 b) { gBattleBuffersTransferData[0] = 55; gBattleBuffersTransferData[1] = b; - dp01_prepare_buffer(a, gBattleBuffersTransferData, 2); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 2); } diff --git a/src/rom6.c b/src/rom6.c index 759aed93f..b91a9b2c0 100644 --- a/src/rom6.c +++ b/src/rom6.c @@ -6,7 +6,7 @@ #include "field_player_avatar.h" #include "item_use.h" #include "pokemon_menu.h" -#include "rom4.h" +#include "overworld.h" #include "script.h" #include "songs.h" #include "sound.h" @@ -14,12 +14,12 @@ #include "task.h" extern u16 gScriptLastTalked; -extern u32 gUnknown_0202FF84[]; -extern struct MapPosition gUnknown_0203923C; extern void (*gFieldCallback)(void); extern u8 gLastFieldPokeMenuOpened; extern void (*gUnknown_03005CE4)(void); -extern u8 UseRockSmashScript[]; +extern u8 S_UseRockSmash[]; + +EWRAM_DATA struct MapPosition gUnknown_0203923C = {0}; static void task08_080C9820(u8); static void sub_810B3DC(u8); @@ -64,9 +64,9 @@ static void task08_080C9820(u8 taskId) if (!FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(&gMapObjects[mapObjId]) || FieldObjectClearAnimIfSpecialAnimFinished(&gMapObjects[mapObjId])) { - if (gMapHeader.mapType == 5) + if (gMapHeader.mapType == MAP_TYPE_UNDERWATER) { - FieldEffectStart(0x3B); + FieldEffectStart(FLDEFF_FIELD_MOVE_SHOW_MON_INIT); gTasks[taskId].func = sub_810B428; } else @@ -82,7 +82,7 @@ static void sub_810B3DC(u8 taskId) { if (FieldObjectCheckIfSpecialAnimFinishedOrInactive(&gMapObjects[gPlayerAvatar.mapObjectId]) == TRUE) { - FieldEffectStart(0x3B); + FieldEffectStart(FLDEFF_FIELD_MOVE_SHOW_MON_INIT); gTasks[taskId].func = sub_810B428; } } @@ -91,17 +91,17 @@ static void sub_810B428(u8 taskId) { if (!FieldEffectActiveListContains(6)) { - gUnknown_0202FF84[1] = player_get_direction_lower_nybble(); - if (gUnknown_0202FF84[1] == 1) - gUnknown_0202FF84[2] = 0; - if (gUnknown_0202FF84[1] == 2) - gUnknown_0202FF84[2] = 1; - if (gUnknown_0202FF84[1] == 3) - gUnknown_0202FF84[2] = 2; - if (gUnknown_0202FF84[1] == 4) - gUnknown_0202FF84[2] = 3; + gFieldEffectArguments[1] = player_get_direction_lower_nybble(); + if (gFieldEffectArguments[1] == 1) + gFieldEffectArguments[2] = 0; + if (gFieldEffectArguments[1] == 2) + gFieldEffectArguments[2] = 1; + if (gFieldEffectArguments[1] == 3) + gFieldEffectArguments[2] = 2; + if (gFieldEffectArguments[1] == 4) + gFieldEffectArguments[2] = 3; sub_805B980(&gMapObjects[gPlayerAvatar.mapObjectId], GetPlayerAvatarGraphicsIdByCurrentState()); - StartSpriteAnim(&gSprites[gPlayerAvatar.spriteId], gUnknown_0202FF84[2]); + StartSpriteAnim(&gSprites[gPlayerAvatar.spriteId], gFieldEffectArguments[2]); FieldEffectActiveListRemove(6); gTasks[taskId].func = sub_810B4CC; } @@ -120,7 +120,7 @@ bool8 SetUpFieldMove_RockSmash(void) { if (npc_before_player_of_type(0x56) == TRUE) { - gFieldCallback = sub_808AB90; + gFieldCallback = FieldCallback_Teleport; gUnknown_03005CE4 = sub_810B53C; return TRUE; } @@ -132,8 +132,8 @@ bool8 SetUpFieldMove_RockSmash(void) static void sub_810B53C(void) { - gUnknown_0202FF84[0] = gLastFieldPokeMenuOpened; - ScriptContext1_SetupScript(UseRockSmashScript); + gFieldEffectArguments[0] = gLastFieldPokeMenuOpened; + ScriptContext1_SetupScript(S_UseRockSmash); } int FldEff_RockSmash(void) @@ -149,15 +149,15 @@ int FldEff_RockSmash(void) static void sub_810B58C(void) { PlaySE(SE_W088); - FieldEffectActiveListRemove(0x25); + FieldEffectActiveListRemove(FLDEFF_USE_ROCK_SMASH); EnableBothScriptContexts(); } int SetUpFieldMove_Dig(void) { - if (sub_80CA1C8() == TRUE) + if (CanUseEscapeRopeOnCurrMap() == TRUE) { - gFieldCallback = sub_808AB90; + gFieldCallback = FieldCallback_Teleport; gUnknown_03005CE4 = sub_810B5D8; return TRUE; } @@ -169,9 +169,9 @@ int SetUpFieldMove_Dig(void) static void sub_810B5D8(void) { - sub_8053014(); - FieldEffectStart(0x26); - gUnknown_0202FF84[0] = gLastFieldPokeMenuOpened; + Overworld_ResetStateAfterDigEscRope(); + FieldEffectStart(FLDEFF_USE_DIG); + gFieldEffectArguments[0] = gLastFieldPokeMenuOpened; } int FldEff_UseDig(void) @@ -189,7 +189,7 @@ static void sub_810B634(void) { u8 taskId; - FieldEffectActiveListRemove(0x26); + FieldEffectActiveListRemove(FLDEFF_USE_DIG); if (ShouldDoBrailleDigEffect()) { DoBrailleDigEffect(); diff --git a/src/rom_8077ABC.c b/src/rom_8077ABC.c index 249146b37..ef9eb36a8 100644 --- a/src/rom_8077ABC.c +++ b/src/rom_8077ABC.c @@ -102,8 +102,8 @@ extern u32 gTransformPersonalities[NUM_BATTLE_SLOTS]; extern u8 gBattleMonForms[NUM_BATTLE_SLOTS]; extern u16 gUnknown_0202F7CA[]; extern u8 gBattleMonSprites[NUM_BATTLE_SLOTS]; -extern u8 gBattleAnimPlayerMonIndex; -extern u8 gBattleAnimEnemyMonIndex; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; extern s16 gBattleAnimArgs[8]; extern u8 gBanksBySide[NUM_BATTLE_SLOTS]; extern u8 gNoOfAllBanks; // gNumBattleMons? @@ -111,6 +111,8 @@ extern struct OamMatrix gOamMatrices[]; extern struct Struct_2017810 unk_2017810[]; extern u8 gHappinessMoveAnim; +extern u8 UpdateMonIconFrame(struct Sprite *sprite); + EWRAM_DATA union AffineAnimCmd *gUnknown_0202F7D4 = NULL; EWRAM_DATA u32 filler_0202F7D8[3] = {0}; @@ -402,43 +404,43 @@ u8 sub_8077FC0(u8 slot) { return r6; } -u8 obj_id_for_side_relative_to_move(u8 a1) { +u8 GetAnimBankSpriteId(u8 whichBank) { u8 *sprites; - if (a1 == 0) { - if (sub_8078874(gBattleAnimPlayerMonIndex)) { + if (whichBank == ANIM_BANK_ATK) { + if (AnimBankSpriteExists(gBattleAnimBankAttacker)) { sprites = gBattleMonSprites; - return sprites[gBattleAnimPlayerMonIndex]; + return sprites[gBattleAnimBankAttacker]; } else { return 0xff; } - } else if (a1 == 1) { - if (sub_8078874(gBattleAnimEnemyMonIndex)) { + } else if (whichBank == ANIM_BANK_DEF) { + if (AnimBankSpriteExists(gBattleAnimBankTarget)) { sprites = gBattleMonSprites; - return sprites[gBattleAnimEnemyMonIndex]; + return sprites[gBattleAnimBankTarget]; } else { return 0xff; } - } else if (a1 == 2) { - if (!b_side_obj__get_some_boolean(gBattleAnimPlayerMonIndex ^ 2)) { + } else if (whichBank == ANIM_BANK_ATK_PARTNER) { + if (!IsAnimBankSpriteVisible(gBattleAnimBankAttacker ^ 2)) { return 0xff; } else { - return gBattleMonSprites[gBattleAnimPlayerMonIndex ^ 2]; + return gBattleMonSprites[gBattleAnimBankAttacker ^ 2]; } } else { - if (b_side_obj__get_some_boolean(gBattleAnimEnemyMonIndex ^ 2)) { - return gBattleMonSprites[gBattleAnimEnemyMonIndex ^ 2]; + if (IsAnimBankSpriteVisible(gBattleAnimBankTarget ^ 2)) { + return gBattleMonSprites[gBattleAnimBankTarget ^ 2]; } else { return 0xff; } } } -void oamt_set_x3A_32(struct Sprite *sprite, void (*callback)(struct Sprite*)) { +void StoreSpriteCallbackInData6(struct Sprite *sprite, void (*callback)(struct Sprite*)) { sprite->data6 = (u32)(callback) & 0xffff; sprite->data7 = (u32)(callback) >> 16; } -void sub_8078104(struct Sprite *sprite) { +void SetCallbackToStoredInData6(struct Sprite *sprite) { u32 callback = (u16)sprite->data6 | (sprite->data7 << 16); sprite->callback = (void (*)(struct Sprite *))callback; } @@ -455,7 +457,7 @@ void sub_8078114(struct Sprite *sprite) { } sprite->data3--; } else { - sub_8078104(sprite); + SetCallbackToStoredInData6(sprite); } } @@ -472,7 +474,7 @@ void sub_8078174(struct Sprite *sprite) { } sprite->data3--; } else { - sub_8078104(sprite); + SetCallbackToStoredInData6(sprite); } } @@ -494,7 +496,7 @@ void unref_sub_80781F0(struct Sprite *sprite) { } sprite->data3--; } else { - sub_8078104(sprite); + SetCallbackToStoredInData6(sprite); } } @@ -510,7 +512,7 @@ void sub_8078278(struct Sprite *sprite) { } sprite->data3--; } else { - sub_8078104(sprite); + SetCallbackToStoredInData6(sprite); } } @@ -518,7 +520,7 @@ void sub_80782D8(struct Sprite *sprite) { if (sprite->data0 > 0) { sprite->data0--; } else { - sub_8078104(sprite); + SetCallbackToStoredInData6(sprite); } } @@ -547,7 +549,7 @@ void sub_8078364(struct Sprite *sprite) { sprite->pos2.x += sprite->data1; sprite->pos2.y += sprite->data2; } else { - sub_8078104(sprite); + SetCallbackToStoredInData6(sprite); } } @@ -559,7 +561,7 @@ void sub_8078394(struct Sprite *sprite) { sprite->pos2.x = sprite->data3 >> 8; sprite->pos2.y = sprite->data4 >> 8; } else { - sub_8078104(sprite); + SetCallbackToStoredInData6(sprite); } } @@ -571,7 +573,7 @@ void sub_80783D0(struct Sprite *sprite) { sprite->pos2.x = sprite->data3 >> 8; sprite->pos2.y = sprite->data4 >> 8; } else { - sub_8078104(sprite); + SetCallbackToStoredInData6(sprite); } UpdateMonIconFrame(sprite); } @@ -579,8 +581,8 @@ void sub_80783D0(struct Sprite *sprite) { void unref_sub_8078414(struct Sprite *sprite) { sprite->data1 = sprite->pos1.x + sprite->pos2.x; sprite->data3 = sprite->pos1.y + sprite->pos2.y; - sprite->data2 = sub_8077ABC(gBattleAnimEnemyMonIndex, 2); - sprite->data4 = sub_8077ABC(gBattleAnimEnemyMonIndex, 3); + sprite->data2 = sub_8077ABC(gBattleAnimBankTarget, 2); + sprite->data4 = sub_8077ABC(gBattleAnimBankTarget, 3); sprite->callback = sub_80782F8; } @@ -590,7 +592,7 @@ void sub_8078458(struct Sprite *sprite) { gSprites[sprite->data3].pos2.x += sprite->data1; gSprites[sprite->data3].pos2.y += sprite->data2; } else { - sub_8078104(sprite); + SetCallbackToStoredInData6(sprite); } } @@ -602,7 +604,7 @@ void sub_80784A8(struct Sprite *sprite) { gSprites[sprite->data5].pos2.x = sprite->data3 >> 8; gSprites[sprite->data5].pos2.y = sprite->data4 >> 8; } else { - sub_8078104(sprite); + SetCallbackToStoredInData6(sprite); } } @@ -619,7 +621,7 @@ void sub_8078504(struct Sprite *sprite) { } } } else { - sub_8078104(sprite); + SetCallbackToStoredInData6(sprite); } } @@ -631,8 +633,8 @@ void move_anim_8074EE0(struct Sprite *sprite) { void unref_sub_8078588(struct Sprite *sprite) { sprite->data1 = sprite->pos1.x + sprite->pos2.x; sprite->data3 = sprite->pos1.y + sprite->pos2.y; - sprite->data2 = sub_8077ABC(gBattleAnimPlayerMonIndex, 2); - sprite->data4 = sub_8077ABC(gBattleAnimPlayerMonIndex, 3); + sprite->data2 = sub_8077ABC(gBattleAnimBankAttacker, 2); + sprite->data4 = sub_8077ABC(gBattleAnimBankAttacker, 3); sprite->callback = sub_80782F8; } @@ -643,13 +645,13 @@ void unref_sub_80785CC(struct Sprite *sprite) { void sub_80785E4(struct Sprite *sprite) { if (sprite->affineAnimEnded) { - sub_8078104(sprite); + SetCallbackToStoredInData6(sprite); } } void sub_8078600(struct Sprite *sprite) { if (sprite->animEnded) { - sub_8078104(sprite); + SetCallbackToStoredInData6(sprite); } } @@ -666,19 +668,19 @@ void sub_8078634(u8 task) { } void sub_8078650(struct Sprite *sprite) { - sprite->pos1.x = sub_8077ABC(gBattleAnimPlayerMonIndex, 2); - sprite->pos1.y = sub_8077ABC(gBattleAnimPlayerMonIndex, 3); + sprite->pos1.x = sub_8077ABC(gBattleAnimBankAttacker, 2); + sprite->pos1.y = sub_8077ABC(gBattleAnimBankAttacker, 3); } void sub_807867C(struct Sprite *sprite, s16 a2) { - u16 v1 = sub_8077ABC(gBattleAnimPlayerMonIndex, 0); - u16 v2 = sub_8077ABC(gBattleAnimEnemyMonIndex, 0); + u16 v1 = sub_8077ABC(gBattleAnimBankAttacker, 0); + u16 v2 = sub_8077ABC(gBattleAnimBankTarget, 0); if (v1 > v2) { sprite->pos1.x -= a2; } else if (v1 < v2) { sprite->pos1.x += a2; } else { - if (GetBankSide(gBattleAnimPlayerMonIndex)) { + if (GetBankSide(gBattleAnimBankAttacker)) { sprite->pos1.x -= a2; } else { sprite->pos1.x += a2; @@ -712,8 +714,8 @@ void oamt_add_pos2_onto_pos1(struct Sprite *sprite) { void sub_8078764(struct Sprite *sprite, u8 a2) { if (!a2) { - sprite->pos1.x = sub_8077EE4(gBattleAnimEnemyMonIndex, 0); - sprite->pos1.y = sub_8077EE4(gBattleAnimEnemyMonIndex, 1); + sprite->pos1.x = sub_8077EE4(gBattleAnimBankTarget, 0); + sprite->pos1.y = sub_8077EE4(gBattleAnimBankTarget, 1); } sub_807867C(sprite, gBattleAnimArgs[0]); sprite->pos1.y += gBattleAnimArgs[1]; @@ -721,11 +723,11 @@ void sub_8078764(struct Sprite *sprite, u8 a2) { void sub_80787B0(struct Sprite *sprite, u8 a2) { if (!a2) { - sprite->pos1.x = sub_8077EE4(gBattleAnimPlayerMonIndex, 0); - sprite->pos1.y = sub_8077EE4(gBattleAnimPlayerMonIndex, 1); + sprite->pos1.x = sub_8077EE4(gBattleAnimBankAttacker, 0); + sprite->pos1.y = sub_8077EE4(gBattleAnimBankAttacker, 1); } else { - sprite->pos1.x = sub_8077EE4(gBattleAnimPlayerMonIndex, 2); - sprite->pos1.y = sub_8077EE4(gBattleAnimPlayerMonIndex, 3); + sprite->pos1.x = sub_8077EE4(gBattleAnimBankAttacker, 2); + sprite->pos1.y = sub_8077EE4(gBattleAnimBankAttacker, 3); } sub_807867C(sprite, gBattleAnimArgs[0]); sprite->pos1.y += gBattleAnimArgs[1]; @@ -749,12 +751,12 @@ u8 GetBankByPlayerAI(u8 slot) { return i; } -bool8 sub_8078874(u8 slot) { +bool8 AnimBankSpriteExists(u8 slot) { if (IsContest()) { - if (gBattleAnimPlayerMonIndex == slot) { + if (gBattleAnimBankAttacker == slot) { return TRUE; } - if (gBattleAnimEnemyMonIndex == slot) { + if (gBattleAnimBankTarget == slot) { return TRUE; } return FALSE; @@ -796,7 +798,7 @@ void sub_8078954(struct Struct_sub_8078914 *unk) { unk->field_0 = (u8 *)0x6008000; unk->field_4 = (u8 *)0x600f000; unk->field_8 = 0xe; - } else if (GetBankIdentity_permutated(gBattleAnimPlayerMonIndex) == 1) { + } else if (GetBankIdentity_permutated(gBattleAnimBankAttacker) == 1) { unk->field_0 = (u8 *)0x6004000; unk->field_4 = (u8 *)0x600e000; unk->field_8 = 0x8; @@ -906,7 +908,7 @@ bool8 sub_8078B5C(struct Sprite *sprite) { void sub_8078BB8(struct Sprite *sprite) { if (sub_8078B5C(sprite)) { - sub_8078104(sprite); + SetCallbackToStoredInData6(sprite); } } @@ -986,7 +988,7 @@ bool8 sub_8078CE8(struct Sprite *sprite) { void sub_8078D44(struct Sprite *sprite) { if (sub_8078CE8(sprite)) { - sub_8078104(sprite); + SetCallbackToStoredInData6(sprite); } } @@ -1024,7 +1026,7 @@ void obj_id_set_rotscale(u8 sprite, s16 xScale, s16 yScale, u16 rotation) { bool8 sub_8078E38() { if (IsContest()) { - if (gSprites[obj_id_for_side_relative_to_move(0)].data2 == 0xc9 /* XXX SPECIES_UNOWN? */) { + if (gSprites[GetAnimBankSpriteId(0)].data2 == 0xc9 /* XXX SPECIES_UNOWN? */) { return FALSE; } return TRUE; @@ -1035,7 +1037,7 @@ bool8 sub_8078E38() { void sub_8078E70(u8 sprite, u8 a2) { struct Struct_2017810 *unk; u8 r7 = gSprites[sprite].data0; - if (IsContest() || b_side_obj__get_some_boolean(r7)) { + if (IsContest() || IsAnimBankSpriteVisible(r7)) { gSprites[sprite].invisible = FALSE; } gSprites[sprite].oam.objMode = a2; @@ -1096,12 +1098,12 @@ void sub_8079098(struct Sprite *sprite) { CalcCenterToCornerVec(sprite, sprite->oam.shape, sprite->oam.size, sprite->oam.affineMode); } -u16 sub_80790D8(s16 a, s16 b) { +static u16 ArcTan2_(s16 a, s16 b) { return ArcTan2(a, b); } u16 sub_80790F0(s16 a, s16 b) { - u16 var = sub_80790D8(a, b); + u16 var = ArcTan2_(a, b); return -var; } @@ -1140,22 +1142,22 @@ u32 sub_80791A8(u8 a1, u8 a2, u8 a3, u8 a4, u8 a5, u8 a6, u8 a7) { } } if (a2) { - shift = gBattleAnimPlayerMonIndex + 16; + shift = gBattleAnimBankAttacker + 16; var |= 1 << shift; } if (a3) { - shift = gBattleAnimEnemyMonIndex + 16; + shift = gBattleAnimBankTarget + 16; var |= 1 << shift; } if (a4) { - if (b_side_obj__get_some_boolean(gBattleAnimPlayerMonIndex ^ 2)) { - shift = (gBattleAnimPlayerMonIndex ^ 2) + 16; + if (IsAnimBankSpriteVisible(gBattleAnimBankAttacker ^ 2)) { + shift = (gBattleAnimBankAttacker ^ 2) + 16; var |= 1 << shift; } } if (a5) { - if (b_side_obj__get_some_boolean(gBattleAnimEnemyMonIndex ^ 2)) { - shift = (gBattleAnimEnemyMonIndex ^ 2) + 16; + if (IsAnimBankSpriteVisible(gBattleAnimBankTarget ^ 2)) { + shift = (gBattleAnimBankTarget ^ 2) + 16; var |= 1 << shift; } } @@ -1184,24 +1186,24 @@ u32 sub_80792C0(u8 a1, u8 a2, u8 a3, u8 a4) { } } else { if (a1) { - if (b_side_obj__get_some_boolean(GetBankByPlayerAI(0))) { + if (IsAnimBankSpriteVisible(GetBankByPlayerAI(0))) { var |= 1 << (GetBankByPlayerAI(0) + 16); } } if (a2) { - if (b_side_obj__get_some_boolean(GetBankByPlayerAI(2))) { + if (IsAnimBankSpriteVisible(GetBankByPlayerAI(2))) { shift = GetBankByPlayerAI(2) + 16; var |= 1 << shift; } } if (a3) { - if (b_side_obj__get_some_boolean(GetBankByPlayerAI(1))) { + if (IsAnimBankSpriteVisible(GetBankByPlayerAI(1))) { shift = GetBankByPlayerAI(1) + 16; var |= 1 << shift; } } if (a4) { - if (b_side_obj__get_some_boolean(GetBankByPlayerAI(3))) { + if (IsAnimBankSpriteVisible(GetBankByPlayerAI(3))) { shift = GetBankByPlayerAI(3) + 16; var |= 1 << shift; } @@ -1252,24 +1254,24 @@ void sub_807941C(struct Sprite *sprite) { v2 = 1; } sub_80787B0(sprite, v1); - if (GetBankSide(gBattleAnimPlayerMonIndex)) { + if (GetBankSide(gBattleAnimBankAttacker)) { gBattleAnimArgs[2] = -gBattleAnimArgs[2]; } sprite->data0 = gBattleAnimArgs[4]; - sprite->data2 = sub_8077ABC(gBattleAnimEnemyMonIndex, 2) + gBattleAnimArgs[2]; - sprite->data4 = sub_8077ABC(gBattleAnimEnemyMonIndex, v2) + gBattleAnimArgs[3]; + sprite->data2 = sub_8077ABC(gBattleAnimBankTarget, 2) + gBattleAnimArgs[2]; + sprite->data4 = sub_8077ABC(gBattleAnimBankTarget, v2) + gBattleAnimArgs[3]; sprite->callback = sub_8078B34; - oamt_set_x3A_32(sprite, move_anim_8072740); + StoreSpriteCallbackInData6(sprite, move_anim_8072740); } void sub_80794A8(struct Sprite *sprite) { sub_80787B0(sprite, 1); - if (GetBankSide(gBattleAnimPlayerMonIndex)) { + if (GetBankSide(gBattleAnimBankAttacker)) { gBattleAnimArgs[2] = -gBattleAnimArgs[2]; } sprite->data0 = gBattleAnimArgs[4]; - sprite->data2 = sub_8077ABC(gBattleAnimEnemyMonIndex, 2) + gBattleAnimArgs[2]; - sprite->data4 = sub_8077ABC(gBattleAnimEnemyMonIndex, 3) + gBattleAnimArgs[3]; + sprite->data2 = sub_8077ABC(gBattleAnimBankTarget, 2) + gBattleAnimArgs[2]; + sprite->data4 = sub_8077ABC(gBattleAnimBankTarget, 3) + gBattleAnimArgs[3]; sprite->data5 = gBattleAnimArgs[5]; sub_80786EC(sprite); sprite->callback = sub_8079518; @@ -1292,12 +1294,12 @@ void sub_8079534(struct Sprite *sprite) { } if (!gBattleAnimArgs[5]) { sub_80787B0(sprite, r4); - slot = gBattleAnimPlayerMonIndex; + slot = gBattleAnimBankAttacker; } else { sub_8078764(sprite, r4); - slot = gBattleAnimEnemyMonIndex; + slot = gBattleAnimBankTarget; } - if (GetBankSide(gBattleAnimPlayerMonIndex)) { + if (GetBankSide(gBattleAnimBankAttacker)) { gBattleAnimArgs[2] = -gBattleAnimArgs[2]; } sub_8078764(sprite, r4); @@ -1305,12 +1307,12 @@ void sub_8079534(struct Sprite *sprite) { sprite->data2 = sub_8077ABC(slot, 2) + gBattleAnimArgs[2]; sprite->data4 = sub_8077ABC(slot, r7) + gBattleAnimArgs[3]; sprite->callback = sub_8078B34; - oamt_set_x3A_32(sprite, move_anim_8072740); + StoreSpriteCallbackInData6(sprite, move_anim_8072740); } s16 duplicate_obj_of_side_rel2move_in_transparent_mode(u8 a1) { u16 i; - u8 sprite = obj_id_for_side_relative_to_move(a1); + u8 sprite = GetAnimBankSpriteId(a1); if (sprite != 0xff) { for (i = 0; i < 0x40; i++) { if (gSprites[i].inUse) { @@ -1380,7 +1382,7 @@ void sub_80796F8(u8 taskId) { } void sub_8079790(u8 task) { - u8 sprite = obj_id_for_side_relative_to_move(gBattleAnimArgs[0]); + u8 sprite = GetAnimBankSpriteId(gBattleAnimArgs[0]); if (sprite == 0xff) { DestroyAnimVisualTask(task); return; @@ -1624,24 +1626,24 @@ void sub_8079CEC(u8 task) { } void unref_sub_8079D20(u8 priority) { - if (b_side_obj__get_some_boolean(gBattleAnimEnemyMonIndex)) { - gSprites[gBattleMonSprites[gBattleAnimEnemyMonIndex]].oam.priority = priority; + if (IsAnimBankSpriteVisible(gBattleAnimBankTarget)) { + gSprites[gBattleMonSprites[gBattleAnimBankTarget]].oam.priority = priority; } - if (b_side_obj__get_some_boolean(gBattleAnimPlayerMonIndex)) { - gSprites[gBattleMonSprites[gBattleAnimPlayerMonIndex]].oam.priority = priority; + if (IsAnimBankSpriteVisible(gBattleAnimBankAttacker)) { + gSprites[gBattleMonSprites[gBattleAnimBankAttacker]].oam.priority = priority; } - if (b_side_obj__get_some_boolean(gBattleAnimEnemyMonIndex ^ 2)) { - gSprites[gBattleMonSprites[gBattleAnimEnemyMonIndex ^ 2]].oam.priority = priority; + if (IsAnimBankSpriteVisible(gBattleAnimBankTarget ^ 2)) { + gSprites[gBattleMonSprites[gBattleAnimBankTarget ^ 2]].oam.priority = priority; } - if (b_side_obj__get_some_boolean(gBattleAnimPlayerMonIndex ^ 2)) { - gSprites[gBattleMonSprites[gBattleAnimPlayerMonIndex ^ 2]].oam.priority = priority; + if (IsAnimBankSpriteVisible(gBattleAnimBankAttacker ^ 2)) { + gSprites[gBattleMonSprites[gBattleAnimBankAttacker ^ 2]].oam.priority = priority; } } void sub_8079E24() { int i; for (i = 0; i < gNoOfAllBanks; i++) { - if (b_side_obj__get_some_boolean(i)) { + if (IsAnimBankSpriteVisible(i)) { gSprites[gBattleMonSprites[i]].subpriority = sub_8079E90(i); gSprites[gBattleMonSprites[i]].oam.priority = 2; } @@ -1706,7 +1708,7 @@ u8 sub_8079F44(u16 species, u8 isBackpic, u8 a3, s16 a4, s16 a5, u8 a6, u32 a7, u16 sheet = LoadSpriteSheet(&gUnknown_0837F5E0[a3]); u16 palette = AllocSpritePalette(gSpriteTemplate_837F5B0[a3].paletteTag); if (!isBackpic) { - LoadCompressedPalette(species_and_otid_get_pal(species, a8, a7), (palette * 0x10) + 0x100, 0x20); + LoadCompressedPalette(GetMonSpritePalFromOtIdPersonality(species, a8, a7), (palette * 0x10) + 0x100, 0x20); LoadSpecialPokePic( &gMonFrontPicTable[species], gMonFrontPicCoords[species].coords, @@ -1719,7 +1721,7 @@ u8 sub_8079F44(u16 species, u8 isBackpic, u8 a3, s16 a4, s16 a5, u8 a6, u32 a7, ); } else { LoadCompressedPalette( - species_and_otid_get_pal(species, a8, a7), (palette * 0x10) + 0x100, 0x20); + GetMonSpritePalFromOtIdPersonality(species, a8, a7), (palette * 0x10) + 0x100, 0x20); LoadSpecialPokePic( &gMonBackPicTable[species], gMonBackPicCoords[species].coords, @@ -1892,7 +1894,7 @@ u8 sub_807A4A0(int a1, u8 sprite, int a3) { void sub_807A544(struct Sprite *sprite) { sub_8078650(sprite); - if (GetBankSide(gBattleAnimPlayerMonIndex)) { + if (GetBankSide(gBattleAnimBankAttacker)) { sprite->pos1.x -= gBattleAnimArgs[0]; gBattleAnimArgs[3] = -gBattleAnimArgs[3]; sprite->hFlip = TRUE; @@ -1904,12 +1906,12 @@ void sub_807A544(struct Sprite *sprite) { sprite->data1 = gBattleAnimArgs[3]; sprite->data3 = gBattleAnimArgs[4]; sprite->data5 = gBattleAnimArgs[5]; - oamt_set_x3A_32(sprite, move_anim_8074EE0); + StoreSpriteCallbackInData6(sprite, move_anim_8074EE0); sprite->callback = sub_8078504; } void sub_807A5C4(struct Sprite *sprite) { - if (GetBankSide(gBattleAnimPlayerMonIndex)) { + if (GetBankSide(gBattleAnimBankAttacker)) { sprite->pos1.x -= gBattleAnimArgs[0]; gBattleAnimArgs[3] *= -1; } else { @@ -1921,28 +1923,28 @@ void sub_807A5C4(struct Sprite *sprite) { sprite->data3 = gBattleAnimArgs[4]; sprite->data5 = gBattleAnimArgs[5]; StartSpriteAnim(sprite, gBattleAnimArgs[6]); - oamt_set_x3A_32(sprite, move_anim_8074EE0); + StoreSpriteCallbackInData6(sprite, move_anim_8074EE0); sprite->callback = sub_8078504; } void sub_807A63C(struct Sprite *sprite) { sub_8078650(sprite); - if (GetBankSide(gBattleAnimPlayerMonIndex)) { + if (GetBankSide(gBattleAnimBankAttacker)) { sprite->pos1.x -= gBattleAnimArgs[0]; } else { sprite->pos1.x += gBattleAnimArgs[0]; } sprite->pos1.y += gBattleAnimArgs[1]; sprite->callback = sub_8078600; - oamt_set_x3A_32(sprite, move_anim_8072740); + StoreSpriteCallbackInData6(sprite, move_anim_8072740); } void sub_807A69C(u8 taskId) { u16 src; u16 dest; struct Task *task = &gTasks[taskId]; - task->data[0] = obj_id_for_side_relative_to_move(0); - task->data[1] = (GetBankSide(gBattleAnimPlayerMonIndex)) ? -8 : 8; + task->data[0] = GetAnimBankSpriteId(0); + task->data[1] = (GetBankSide(gBattleAnimBankAttacker)) ? -8 : 8; task->data[2] = 0; task->data[3] = 0; gSprites[task->data[0]].pos2.x -= task->data[0]; @@ -1951,7 +1953,7 @@ void sub_807A69C(u8 taskId) { dest = (task->data[4] + 0x10) * 0x10; src = (gSprites[task->data[0]].oam.paletteNum + 0x10) * 0x10; - task->data[6] = sub_8079E90(gBattleAnimPlayerMonIndex); + task->data[6] = sub_8079E90(gBattleAnimBankAttacker); if (task->data[6] == 20 || task->data[6] == 40) { task->data[6] = 2; } else { @@ -2012,9 +2014,9 @@ void sub_807A8D4(struct Sprite *sprite) { } void sub_807A908(struct Sprite *sprite) { - sprite->pos1.x = sub_8077ABC(gBattleAnimPlayerMonIndex, 2); - sprite->pos1.y = sub_8077ABC(gBattleAnimPlayerMonIndex, 3); - if (!GetBankSide(gBattleAnimPlayerMonIndex)) { + sprite->pos1.x = sub_8077ABC(gBattleAnimBankAttacker, 2); + sprite->pos1.y = sub_8077ABC(gBattleAnimBankAttacker, 3); + if (!GetBankSide(gBattleAnimBankAttacker)) { sprite->data0 = 5; } else { sprite->data0 = -10; @@ -2041,7 +2043,7 @@ void sub_807A9BC(struct Sprite *sprite) { sprite->data0 = gBattleAnimArgs[2]; sprite->data2 = sprite->pos1.x + gBattleAnimArgs[4]; sprite->data4 = sprite->pos1.y + gBattleAnimArgs[5]; - if (!GetBankSide(gBattleAnimEnemyMonIndex)) { + if (!GetBankSide(gBattleAnimBankTarget)) { x = (u16)gBattleAnimArgs[4] + 30; sprite->pos1.x += x; sprite->pos1.y = gBattleAnimArgs[5] - 20; @@ -2051,5 +2053,5 @@ void sub_807A9BC(struct Sprite *sprite) { sprite->pos1.y = gBattleAnimArgs[5] - 80; } sprite->callback = sub_8078B34; - oamt_set_x3A_32(sprite, move_anim_8072740); + StoreSpriteCallbackInData6(sprite, move_anim_8072740); } diff --git a/src/scene/berry_blender.c b/src/scene/berry_blender.c new file mode 100644 index 000000000..7ffcc5185 --- /dev/null +++ b/src/scene/berry_blender.c @@ -0,0 +1,3884 @@ +#include "global.h" +#include "decompress.h" +#include "palette.h" +#include "event_data.h" +#include "main.h" +#include "text_window.h" +#include "menu.h" +#include "strings2.h" +#include "sound.h" +#include "songs.h" +#include "berry.h" +#include "string_util.h" +#include "link.h" +#include "task.h" +#include "overworld.h" +#include "item.h" +#include "items.h" +#include "rng.h" +#include "save.h" +#include "menu_cursor.h" +#include "trig.h" +#include "pokeblock.h" + +//needed to match Blender_ControlHitPitch +struct MusicPlayerInfo +{ + struct SongHeader *songHeader; + u32 status; + u8 trackCount; + u8 priority; + u8 cmd; + u8 unk_B; + u32 clock; + u8 gap[8]; + u8 *memAccArea; + u16 tempoD; + u16 tempoU; + u16 tempoI; + u16 tempoC; + u16 fadeOI; + u16 fadeOC; + u16 fadeOV; + struct MusicPlayerTrack *tracks; + struct ToneData *tone; + u32 ident; + u32 func; + u32 intp; +}; + +#define BLENDER_SCORE_BEST 0 +#define BLENDER_SCORE_GOOD 1 +#define BLENDER_SCORE_MISS 2 + +#define BLENDER_MAX_PLAYERS 4 +#define BLENDER_SCORES_NO 3 + +#define FLAVOUR_SPICY 0 +#define FLAVOUR_DRY 1 +#define FLAVOUR_SWEET 2 +#define FLAVOUR_BITTER 3 +#define FLAVOUR_SOUR 4 + +struct BlenderBerry +{ + u16 itemID; + u8 name[7]; + u8 flavours[5]; + u8 smoothness; +}; + +struct BerryBlenderData +{ + u8 field_0; + u8 field_1; + struct Window field_4; + u8 field_35; + u8 field_36; + u8 field_37; + u8 field_38; + u8 field_39; + u8 field_3A; + u8 field_3B; + u8 field_3C; + u8 field_3D; + u8 field_3E; + u8 field_3F; + u8 field_40; + u8 field_41; + u8 field_42; + u8 field_43; + u8 field_44; + u8 field_45; + u8 field_46; + u8 field_47; + u8 field_48; + u8 field_49; + u8 field_4A; + u8 field_4B; + u8 field_4C; + u8 field_4D; + u16 field_4E; + u8 scoreIconIDs[3]; + u16 arrowPos; + s16 field_56; + s16 field_58; + u16 max_RPM; + u8 SyncArrowSpriteID[BLENDER_MAX_PLAYERS]; + u8 SyncArrowSprite2ID[BLENDER_MAX_PLAYERS]; + u8 field_64; + u8 field_65; + u8 field_66; + u8 field_67; + u8 field_68; + u8 field_69; + u8 field_6A; + u8 field_6B; + u8 field_6C; + u8 field_6D; + u8 field_6E; + u8 field_6F; + u16 field_70[BLENDER_MAX_PLAYERS]; + u16 field_78; + u16 field_7A; + u16 field_7C; + u8 field_7E; + u8 field_7F; + u16 chosenItemID[BLENDER_MAX_PLAYERS]; + u8 playersNo; + u8 field_89; + u8 field_8A; + u8 field_8B; + u8 field_8C; + u8 field_8D; + u8 field_8E; + u8 field_8F; + u8 field_90; + u8 field_91; + u8 field_92; + u8 field_93; + u16 field_94; + u8 field_96; + u8 field_97; + u8 field_98; + u8 field_99; + u16 field_9A[BLENDER_MAX_PLAYERS]; + u16 field_A2[BLENDER_MAX_PLAYERS]; + u8 field_AA; + u8 stringVar[129]; + u32 gameFrameTime; + s32 framesToWait; + u32 field_134; + u8 field_138; + u8 field_139; + u8 field_13A; + u8 field_13B; + u8 field_13C; + u8 field_13D; + u16 field_13E; + u16 field_140; + u16 field_142; + s16 field_144; + s16 field_146; + u8 field_148[3]; + u8 field_14B; + u16 scores[BLENDER_MAX_PLAYERS][3]; + u8 playerPlaces[BLENDER_MAX_PLAYERS]; + struct BgAffineDstData field_168; + u16 field_178; + struct BlenderBerry blendedBerries[BLENDER_MAX_PLAYERS]; + u32 field_1BC; + u16 field_1C0; + u16 field_1C2; + u32 field_1C4; +}; + +struct BlenderDebug +{ + s8 cursorPos; + s8 berries[4]; + struct Pokeblock pokeblock; + u8 field_10; + u8 spicy; + u8 dry; + u8 sweet; + u8 bitter; + u8 sour; + u8 feel; + s8 field_17; + s8 field_18; + s8 field_19; + s16 BPM; +}; + +// other files functions +void m4aMPlayPitchControl(struct MusicPlayerInfo *mplayInfo, u16 trackBits, s16 pitch); +void m4aMPlayTempoControl(struct MusicPlayerInfo *mplayInfo, u16 tempo); +void m4aMPlayStop(struct MusicPlayerInfo *mplayInfo); +void sub_80A6978(void); +u8 sub_80A7DEC(u8 berryId, u8 x, u8 y, bool8 animate); +void sub_814A880(u8 a1, u8 a2); +u8 sub_814A5C0(u8 a1, u16 a2, u8 a3, u16 a4, u8 a5); +s8 sub_810CA00(void); +bool8 sub_810CA34(struct Pokeblock *pokeblock); +#ifdef GERMAN +extern void de_sub_8073110(); +#endif + +extern struct MusicPlayerInfo gMPlay_SE2; +extern struct MusicPlayerInfo gMPlay_BGM; +extern u8 ewram[]; +extern u16 gScriptItemId; +extern u8 gUnknown_020297ED; +extern u8 byte_3002A68; + +extern const u8 gUnknown_08E6C100[]; +extern const u8 gUnknown_08E6C920[]; +extern const u8 gUnknown_08E6D354[]; +extern const struct WindowConfig gWindowConfig_81E6F68; +extern const u8 *const gPokeblockNames[]; +extern const struct Berry gBerries[]; + +extern const u8 gBerryBlenderArrowTiles[]; +extern const u8 gBerryBlenderMarubatsuTiles[]; +extern const u8 gBerryBlenderParticlesTiles[]; +extern const u8 gBerryBlenderCountdownNumbersTiles[]; +extern const u8 gBerryBlenderStartTiles[]; +extern const u16 gBerryBlenderMiscPalette[]; +extern const u16 gBerryBlenderArrowPalette[]; + +// ewram +static EWRAM_DATA u8 gUnknown_020297DC = 0; +static EWRAM_DATA u32 gUnknown_020297E0 = 0; +static EWRAM_DATA u32 gUnknown_020297E4 = 0; +static EWRAM_DATA u8 gUnknown_020297E8 = 0; + +// iwram common +u16 gUnknown_03004830; +u8 gInGameOpponentsNo; +u16 gUnknown_03004840[10]; +struct BerryBlenderData* gBerryBlenderData; + +// iwram bss +IWRAM_DATA s16 gUnknown_03000510[8]; +IWRAM_DATA s16 gUnknown_03000520[6]; +IWRAM_DATA s16 gUnknown_0300052C; +IWRAM_DATA s16 gUnknown_0300052E; +IWRAM_DATA s32 gUnknown_03000530[6]; +IWRAM_DATA s32 gUnknown_03000548[5]; +IWRAM_DATA u32 gUnknown_0300055C; +IWRAM_DATA struct BlenderDebug sBlenderDebug; + +// this file's functions +void Blender_SetBankBerryData(u8 bank, u16 itemID); + +static void sub_80514A4(void); +static void sub_80514F0(void); +static void sub_804E56C(void); +static void Blender_SetPlayerNamesLocal(u8 NoOfOpponents); +static void sub_8051474(void); +static void sub_804E9F8(void); +static void sub_804F378(void); +static void sub_8051414(struct BgAffineDstData *dest); +static void sub_804F238(void); +static void sub_80501FC(void); +static bool8 sub_8051B8C(void); +static void sub_804F2A8(void); +static void sub_804F81C(void); +static void sub_805156C(void); +void sub_8051684(struct Sprite* sprite); +static void sub_8051AC8(s16* a0, u16 a1); +static void sub_805194C(u16 a0, u16 a1); +static void sub_8051A3C(u16 a0); +static void sub_8051B18(void); +static void sub_805123C(void); +static void sub_8050954(void); +static bool8 Blender_PrintBlendingRanking(void); +static bool8 Blender_PrintBlendingResults(void); +static void sub_80510E8(void); +static void sub_8050E30(void); +static void sub_805197C(u16 a0, u16 a1); +static void Blender_PrintMadePokeblockString(struct Pokeblock* pokeblock, u8* dst); +static void sub_8052BD0(u8 taskID); +static void sub_8052AF8(void); +static void sub_804F8C8(u8 taskID); +static void sub_804F9F4(u8 taskID); +static void sub_804FB1C(u8 taskID); +static void sub_8051C04(struct Sprite* sprite); +static void sub_8051650(struct Sprite* sprite); +static void sub_805181C(struct Sprite* sprite); +static void sub_80518CC(struct Sprite* sprite); + +// const data +static const u16 sBlenderCenterPal[] = INCBIN_U16("graphics/berry_blender/center.gbapal"); +static const u8 sBlenderCenterMap[] = INCBIN_U8("graphics/berry_blender/center_map.bin"); +static const u16 sBlenderOuterPal[] = INCBIN_U16("graphics/berry_blender/outer.gbapal"); + +// unreferenced pals? +static const u16 sUnknownPal_0[] = INCBIN_U16("graphics/unused/unknown/821604C.gbapal"); +static const u16 sUnknownArray_1[224] = {0}; + +// unreferenced Japanese strings +static const u8 sUnknownJpnString0[] = _("▶"); +static const u8 sUnknownJpnString1[] = _(" "); +static const u8 sUnknownJpnString2[] = _("カッコイ"); // "cool" (missing an イ at the end) +static const u8 sUnknownJpnString3[] = _("カワイイ"); // "cute" +static const u8 sUnknownJpnString4[] = _("ウツクシ"); // "beautiful" (missing an イ at the end) +static const u8 sUnknownJpnString5[] = _("カシコイ"); // "smart" +static const u8 sUnknownJpnString6[] = _("タクマシ"); // "tough" (missing an イ at the end) + +static const u8 gUnknown_08216249[] = _("\p"); + +// unreferenced; These appear to be the first names of four people who worked on the game. +static const u8 sUnknownJpnString7[10] = _("てつじ"); // Tetsuji (Ohta) +static const u8 sUnknownJpnString8[10] = _("あきと"); // Akito (Mori) +static const u8 sUnknownJpnString9[10] = _("シゲル"); // Shigeru (Ohmori) +static const u8 sUnknownJpnString10[10] = _("ヨシノリ"); // Yoshinori (Matsuda) + +static const u8 sUnknownText_2Pok[] = _("2Pok"); +static const u8 sUnknownText_3Pok[] = _("3Pok"); +static const u8 sUnknownText_4Pok[] = _("4Pok"); +static const u8* const gUnknown_08216284[] = +{ + sUnknownText_2Pok, sUnknownText_3Pok, sUnknownText_4Pok +}; + +// unreferenced player strings +static const u8 sUnknown1PString[4] = _("1P"); +static const u8 sUnknown2PString[4] = _("2P"); +static const u8 sUnknown3PString[4] = _("3P"); +static const u8 sUnknown4PString[4] = _("4P"); + +#ifdef ENGLISH +static const u8 sBlenderOpponentName1[] = _("MISTER"); +static const u8 sBlenderOpponentName2[] = _("LADDIE"); +static const u8 sBlenderOpponentName3[] = _("LASSIE"); +#else // GERMAN +static const u8 sBlenderOpponentName1[] = _("OPI"); +static const u8 sBlenderOpponentName2[] = _("KUMPEL"); +static const u8 sBlenderOpponentName3[] = _("TUSSI"); +#endif // ENGLISH +static const u8* const sBlenderOpponentsNames[] = +{ + sBlenderOpponentName1, sBlenderOpponentName2, sBlenderOpponentName3 +}; + +static const u8 sRedColorString[] = _("{COLOR RED}"); +static const u8 sNewLineString_0[] = _("\n"); +static const u8 sSpaceString_0[] = _(" "); + +static const s8 gUnknown_082162CC[][2] = +{ + {-1, -1}, {1, -1}, {-1, 1}, {1, 1} +}; + +static const u8 gUnknown_082162D4[][2] = +{ + {2, 6}, {23, 6}, {2, 12}, {23, 12}, {1, 6}, {22, 6}, {1, 12}, {22, 12} +}; + +static const u8 sBlenderSyncArrowsPos[][2] = +{ + {72, 32}, {168, 32}, {72, 128}, {168, 128} +}; + +static const u8 gUnknown_082162EC[3][4] = +{ + {-1, 0, 1, -1}, {-1, 0, 1, 2}, {0, 1, 2, 3} +}; + +static const u16 gUnknown_082162F8[] = {0, 0xC000, 0x4000, 0x8000}; +static const u8 gUnknown_08216300[] = {1, 1, 0}; +static const u8 gUnknown_08216303[] = {32, 224, 96, 160, 0}; + +static const TaskFunc gUnknown_08216308[] = +{ + sub_804F8C8, sub_804F9F4, sub_804FB1C +}; + +static const struct OamData sOamData_8216314 = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 2, + .tileNum = 0, + .priority = 1, + .paletteNum = 0, + .affineParam = 0, +}; + +static const union AnimCmd sSpriteAnim_821631C[] = +{ + ANIMCMD_FRAME(16, 5, 1, 1), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_8216324[] = +{ + ANIMCMD_FRAME(16, 5, .vFlip = TRUE), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_821632C[] = +{ + ANIMCMD_FRAME(16, 5, .hFlip = TRUE), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_8216334[] = +{ + ANIMCMD_FRAME(16, 5, 0, 0), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_821633C[] = +{ + ANIMCMD_FRAME(48, 2, 1, 1), + ANIMCMD_FRAME(32, 5, 1, 1), + ANIMCMD_FRAME(48, 3, 1, 1), + ANIMCMD_FRAME(16, 5, 1, 1), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_8216350[] = +{ + ANIMCMD_FRAME(48, 2, .vFlip = TRUE), + ANIMCMD_FRAME(32, 5, .vFlip = TRUE), + ANIMCMD_FRAME(48, 3, .vFlip = TRUE), + ANIMCMD_FRAME(16, 5, .vFlip = TRUE), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_8216364[] = +{ + ANIMCMD_FRAME(48, 2, .hFlip = TRUE), + ANIMCMD_FRAME(32, 5, .hFlip = TRUE), + ANIMCMD_FRAME(48, 3, .hFlip = TRUE), + ANIMCMD_FRAME(16, 5, .hFlip = TRUE), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_8216378[] = +{ + ANIMCMD_FRAME(48, 2, 0, 0), + ANIMCMD_FRAME(32, 5, 0, 0), + ANIMCMD_FRAME(48, 3, 0, 0), + ANIMCMD_FRAME(16, 5, 0, 0), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_821638C[] = +{ + ANIMCMD_FRAME(0, 5, 1, 1), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_8216394[] = +{ + ANIMCMD_FRAME(0, 5, .vFlip = TRUE), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_821639C[] = +{ + ANIMCMD_FRAME(0, 5, .hFlip = TRUE), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_82163A4[] = +{ + ANIMCMD_FRAME(0, 5, 0, 0), + ANIMCMD_END +}; + +static const union AnimCmd *const sSpriteAnimTable_82163AC[] = +{ + sSpriteAnim_821631C, + sSpriteAnim_8216324, + sSpriteAnim_821632C, + sSpriteAnim_8216334, + sSpriteAnim_821633C, + sSpriteAnim_8216350, + sSpriteAnim_8216364, + sSpriteAnim_8216378, + sSpriteAnim_821638C, + sSpriteAnim_8216394, + sSpriteAnim_821639C, + sSpriteAnim_82163A4 +}; + +static const struct SpriteSheet gUnknown_082163DC = +{ + gBerryBlenderArrowTiles, 0x800, 46545 +}; + +static const struct SpritePalette gUnknown_082163E4 = +{ + gBerryBlenderMiscPalette, 46546 +}; + +static const struct SpritePalette gUnknown_082163EC = +{ + gBerryBlenderArrowPalette, 12312 +}; + +static const struct SpriteTemplate sBlenderSyncArrow_SpriteTemplate = +{ + .tileTag = 46545, + .paletteTag = 12312, + .oam = &sOamData_8216314, + .anims = sSpriteAnimTable_82163AC, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_8051C04 +}; + +static const struct OamData sOamData_821640C = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 1, + .tileNum = 0, + .priority = 0, + .paletteNum = 0, + .affineParam = 0, +}; + +static const union AnimCmd sSpriteAnim_8216414[] = +{ + ANIMCMD_FRAME(0, 20), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_821641C[] = +{ + ANIMCMD_FRAME(4, 20, 1, 0), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_8216424[] = +{ + ANIMCMD_FRAME(8, 4), + ANIMCMD_FRAME(12, 4), + ANIMCMD_FRAME(8, 4), + ANIMCMD_FRAME(12, 4), + ANIMCMD_FRAME(8, 4), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_821643C[] = +{ + ANIMCMD_FRAME(8, 4), + ANIMCMD_END +}; + +static const union AnimCmd *const sSpriteAnimTable_8216444[] = +{ + sSpriteAnim_8216414, + sSpriteAnim_821641C, + sSpriteAnim_8216424, + sSpriteAnim_821643C, +}; + +static const struct SpriteSheet gUnknown_08216454 = +{ + gBerryBlenderMarubatsuTiles, 0x200, 48888 +}; + +static const struct SpriteTemplate sSpriteTemplate_821645C = +{ + .tileTag = 48888, + .paletteTag = 46546, + .oam = &sOamData_821640C, + .anims = sSpriteAnimTable_8216444, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_8051650 +}; + +static const struct OamData sOamData_8216474 = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 0, + .tileNum = 0, + .priority = 1, + .paletteNum = 0, + .affineParam = 0, +}; + +static const union AnimCmd sSpriteAnim_821647C[] = +{ + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(1, 4), + ANIMCMD_FRAME(3, 5), + ANIMCMD_FRAME(1, 4), + ANIMCMD_FRAME(0, 3), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_8216494[] = +{ + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(2, 4), + ANIMCMD_FRAME(4, 5), + ANIMCMD_FRAME(2, 4), + ANIMCMD_FRAME(0, 3), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_82164AC[] = +{ + ANIMCMD_FRAME(0, 2), + ANIMCMD_FRAME(1, 2), + ANIMCMD_FRAME(2, 2), + ANIMCMD_FRAME(4, 4), + ANIMCMD_FRAME(3, 3), + ANIMCMD_FRAME(2, 2), + ANIMCMD_FRAME(1, 2), + ANIMCMD_FRAME(0, 2), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_82164D0[] = +{ + ANIMCMD_FRAME(5, 5, 1, 1), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_82164D8[] = +{ + ANIMCMD_FRAME(6, 5, 1, 1), + ANIMCMD_END +}; + +static const union AnimCmd *const sSpriteAnimTable_82164E0[] = +{ + sSpriteAnim_821647C, + sSpriteAnim_8216494, + sSpriteAnim_82164AC, + sSpriteAnim_82164D0, + sSpriteAnim_82164D8, +}; + +static const struct SpriteSheet gUnknown_082164F4 = +{ + gBerryBlenderParticlesTiles, 0xE0, 23456 +}; + +static const struct SpriteTemplate sSpriteTemplate_82164FC = +{ + .tileTag = 23456, + .paletteTag = 46546, + .oam = &sOamData_8216474, + .anims = sSpriteAnimTable_82164E0, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy +}; + +static const struct OamData sOamData_8216514 = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 2, + .tileNum = 0, + .priority = 1, + .paletteNum = 0, + .affineParam = 0, +}; + +static const union AnimCmd sSpriteAnim_821651C[] = +{ + ANIMCMD_FRAME(32, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_8216524[] = +{ + ANIMCMD_FRAME(16, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_821652C[] = +{ + ANIMCMD_FRAME(0, 30), + ANIMCMD_END +}; + +static const union AnimCmd *const sSpriteAnimTable_8216534[] = +{ + sSpriteAnim_821651C, + sSpriteAnim_8216524, + sSpriteAnim_821652C, +}; + +static const struct SpriteSheet gUnknown_08216540 = +{ + gBerryBlenderCountdownNumbersTiles, 0x600, 12345 +}; + +static const struct SpriteTemplate sSpriteTemplate_8216548 = +{ + .tileTag = 12345, + .paletteTag = 46546, + .oam = &sOamData_8216514, + .anims = sSpriteAnimTable_8216534, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_805181C +}; + +static const struct OamData sOamData_8216560 = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 1, + .x = 0, + .matrixNum = 0, + .size = 3, + .tileNum = 0, + .priority = 1, + .paletteNum = 0, + .affineParam = 0, +}; + +static const union AnimCmd sSpriteAnim_8216568[] = +{ + ANIMCMD_FRAME(0, 30), + ANIMCMD_END +}; + +static const union AnimCmd *const sSpriteAnimTable_8216570[] = +{ + sSpriteAnim_8216568, +}; + +static const struct SpriteSheet gUnknown_08216574 = +{ + gBerryBlenderStartTiles, 0x400, 12346 +}; + +static const struct SpriteTemplate sSpriteTemplate_821657C = +{ + .tileTag = 12346, + .paletteTag = 46546, + .oam = &sOamData_8216560, + .anims = sSpriteAnimTable_8216570, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80518CC +}; + +static const s16 gUnknown_08216594[][5] = +{ + {-10, 20, 10, 2, 1}, + {250, 20, 10, -2, 1}, + {-10, 140, 10, 2, -1}, + {250, 140, 10, -2, -1}, +}; + +static const u8 gUnknown_082165BC[][3] = +{ + {4, 3, 2}, {0, 4, 3}, {1, 0, 4}, {2, 1, 0}, {3, 2, 1}, {0, 2, 3}, {1, 3, 4}, {2, 4, 0}, {3, 0, 1}, {4, 1, 2}, +}; + +static const u8 gUnknown_082165DA[] = {1, 1, 2, 3, 4}; +static const u8 gUnknown_082165DF[] = {0x1C, 0x16, 0x13, 0x1A, 0x19, 0x0E, 0x0D, 0x0B, 0x07, 0x15}; +static const u8 gUnknown_082165E9[] = {6, 6, 6, 6, 5}; +static const u8 gUnknown_082165EE[] = {3, 3, 3, 2, 2}; +static const u8 gUnknown_082165F3[] = {3, 3, 3, 3, 2}; + +static const u8 sText_Space[] = _(" "); +static const u8 sText_BPM[] = _("BPM"); +static const u8 sText_Dash[] = _("-"); +static const u8 sNewLineString_1[] = _("\n"); +static const u8 sNewLineString_2[] = _("\n"); + +static void Blender_ControlHitPitch(void) +{ + m4aMPlayPitchControl(&gMPlay_SE2, 0xFFFF, (gBerryBlenderData->field_56 - 128) * 2); +} + +static void VBlankCB0_BerryBlender(void) +{ + sub_80514A4(); + sub_80514F0(); + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); +} + +static void VBlankCB1_BerryBlender(void) +{ + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); +} + +static bool8 sub_804E2EC(void) +{ + switch (gBerryBlenderData->field_1) + { + case 0: + LZDecompressWram(gUnknown_08E6C100, &ewram[0x10000]); + gBerryBlenderData->field_1++; + break; + case 1: + { + const void* offsetRead = sBlenderCenterMap; + void* offsetWrite = (void*)(VRAM + 0x4000); + + DmaCopy16(3, offsetRead, offsetWrite, 0x400); + LoadPalette(sBlenderCenterPal, 0, 0x100); + gBerryBlenderData->field_1++; + } + break; + case 2: + { + void* offsetRead = &ewram[0x10000]; + void* offsetWrite = (void*)(VRAM); + u32 size = 0x2000; + while (TRUE) + { + DmaCopy16(3, offsetRead, offsetWrite, 0x1000); + offsetRead += 0x1000; + offsetWrite += 0x1000; + size -= 0x1000; + if (size <= 0x1000) + { + DmaCopy16(3, offsetRead, offsetWrite, size); + break; + } + } + gBerryBlenderData->field_1++; + } + break; + case 3: + LZDecompressWram(gUnknown_08E6C920, &ewram[0x10000]); + gBerryBlenderData->field_1++; + break; + case 4: + LZDecompressWram(gUnknown_08E6D354, &ewram[0x13000]); + gBerryBlenderData->field_1++; + break; + case 5: + { + void* offsetRead = &ewram[0x10000]; + void* offsetWrite = (void*)(VRAM + 0xE000); + + DmaCopy16(3, offsetRead, offsetWrite, 0x1000); + gBerryBlenderData->field_1++; + } + break; + case 6: + { + void* offsetRead = &ewram[0x11000]; + void* offsetWrite = (void*)(VRAM + 0xF000); + + DmaCopy16(3, offsetRead, offsetWrite, 0x1000); + gBerryBlenderData->field_1++; + } + break; + case 7: + { + u16 i; + u16* palStore = (u16*)(&ewram[0x13000]); + void* offsetRead; + void* offsetWrite; + + for (i = 0; i < 640; i++) + { + *(palStore + i) |= 0x100; + } + offsetRead = &ewram[0x13000]; + offsetWrite = (void*)(VRAM + 0x6000); + DmaCopy16(3, offsetRead, offsetWrite, 0x500); + LoadPalette(sBlenderOuterPal, 0x80, 0x20); + gBerryBlenderData->field_1++; + } + break; + case 8: + LoadSpriteSheet(&gUnknown_082163DC); + LoadSpriteSheet(&gUnknown_082164F4); + LoadSpriteSheet(&gUnknown_08216454); + gBerryBlenderData->field_1++; + break; + case 9: + LoadSpriteSheet(&gUnknown_08216540); + LoadSpriteSheet(&gUnknown_08216574); + LoadSpritePalette(&gUnknown_082163EC); + LoadSpritePalette(&gUnknown_082163E4); + gBerryBlenderData->field_1 = 0; + return TRUE; + } + return FALSE; +} + +static void sub_804E4FC(void) +{ + REG_DISPCNT = 0x1341; + REG_BG2CNT = 0x4880; + REG_BG1CNT = 0xC0D; + REG_BG0HOFS = 0; + REG_BG0VOFS = 0; + REG_BG1HOFS = 0; + REG_BG1VOFS = 0; +} + +void sub_804E538(void) +{ + u8* field6F; //this temp value is needed to match + + gBerryBlenderData = (struct BerryBlenderData*)(&ewram[0x18000]); + + field6F = &gBerryBlenderData->field_6F; + gBerryBlenderData->field_0 = 0; + *field6F = 0; + + Blender_SetPlayerNamesLocal(gSpecialVar_0x8004); + SetMainCallback2(sub_804E56C); +} + +static void sub_804E56C(void) +{ + s32 i; + switch (gBerryBlenderData->field_0) + { + case 0: + REG_DISPCNT = 0; + ResetSpriteData(); + FreeAllSpritePalettes(); + SetVBlankCallback(NULL); + SetUpWindowConfig(&gWindowConfig_81E6F68); + InitMenuWindow(&gWindowConfig_81E6F68); + gBerryBlenderData->field_0++; + gBerryBlenderData->field_140 = 0; + gBerryBlenderData->field_13E = 0; + gBerryBlenderData->field_142 = 0x50; + gBerryBlenderData->field_144 = 0; + gBerryBlenderData->field_146 = 0; + gBerryBlenderData->field_1 = 0; + sub_8051474(); + break; + case 1: + if (sub_804E2EC()) + { + for (i = 0; i < BLENDER_MAX_PLAYERS; i++) + { + gBerryBlenderData->SyncArrowSpriteID[i] = CreateSprite(&sBlenderSyncArrow_SpriteTemplate, sBlenderSyncArrowsPos[i][0], sBlenderSyncArrowsPos[i][1], 1); + StartSpriteAnim(&gSprites[gBerryBlenderData->SyncArrowSpriteID[i]], i + 8); + } + SetVBlankCallback(VBlankCB0_BerryBlender); + gBerryBlenderData->field_0++; + } + break; + case 2: + BeginNormalPaletteFade(-1, 0, 0x10, 0, 0); + sub_8051474(); + gBerryBlenderData->field_0++; + break; + case 3: + sub_804E4FC(); + if (!gPaletteFade.active) + { + gBerryBlenderData->field_0++; + } + break; + case 4: + MenuDrawTextWindow(0, 14, 29, 19); + MenuPrintMessage(gOtherText_BlenderChooseBerry, 1, 15); + gBerryBlenderData->field_0++; + break; + case 5: + if (MenuUpdateWindowText()) + { + gBerryBlenderData->field_0++; + BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); + } + break; + case 6: + if (!gPaletteFade.active) + { + sub_80A6978(); + gBerryBlenderData->field_0 = 0; + } + break; + } + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +void sub_804E738(struct Sprite* sprite) +{ + sprite->data1 += sprite->data6; + sprite->data2 -= sprite->data4; + sprite->data2 += sprite->data7; + sprite->data0 += sprite->data7; + sprite->data4--; + + if (sprite->data0 < sprite->data2) + { + sprite->data3 = sprite->data4 = sprite->data3 - 1; + if (++sprite->data5 > 3) + DestroySprite(sprite); + else + PlaySE(SE_TB_KARA); + } + sprite->pos1.x = sprite->data1; + sprite->pos1.y = sprite->data2; +} + +void sub_804E794(struct Sprite* sprite, s16 a2, s16 a3, s16 a4, s16 a5, s16 a6) +{ + sprite->data0 = a3; + sprite->data1 = a2; + sprite->data2 = a3; + sprite->data3 = a4; + sprite->data4 = 10; + sprite->data5 = 0; + sprite->data6 = a5; + sprite->data7 = a6; + sprite->callback = sub_804E738; +} + +static void sub_804E7C0(u16 a0, u8 a1) +{ + u8 spriteID = sub_80A7DEC(a0 + 123, 0, 80, a1 & 1); + sub_804E794(&gSprites[spriteID], gUnknown_08216594[a1][0], gUnknown_08216594[a1][1], gUnknown_08216594[a1][2], gUnknown_08216594[a1][3], gUnknown_08216594[a1][4]); +} + +static void Blender_CopyBerryData(struct BlenderBerry* berry, u16 itemID) +{ + const struct Berry *berryInfo = GetBerryInfo(itemID + 124); + berry->itemID = itemID; + StringCopy(berry->name, berryInfo->name); + berry->flavours[FLAVOUR_SPICY] = berryInfo->spicy; + berry->flavours[FLAVOUR_DRY] = berryInfo->dry; + berry->flavours[FLAVOUR_SWEET] = berryInfo->sweet; + berry->flavours[FLAVOUR_BITTER] = berryInfo->bitter; + berry->flavours[FLAVOUR_SOUR] = berryInfo->sour; + berry->smoothness = berryInfo->smoothness; +} + +static void Blender_SetPlayerNamesLocal(u8 NoOfOpponents) +{ + int i; + if (NoOfOpponents) + { + for (i = 0; i < 4; i++) + gLinkPlayers[i].language = GAME_LANGUAGE; + } + switch (NoOfOpponents) + { + case 0: + gInGameOpponentsNo = 0; + break; + case 1: + gInGameOpponentsNo = 1; + gBerryBlenderData->playersNo = 2; + StringCopy(gLinkPlayers[0].name, gSaveBlock2.playerName); + StringCopy(gLinkPlayers[1].name, sBlenderOpponentsNames[0]); + break; + case 2: + gInGameOpponentsNo = 2; + gBerryBlenderData->playersNo = 3; + StringCopy(gLinkPlayers[0].name, gSaveBlock2.playerName); + StringCopy(gLinkPlayers[1].name, sBlenderOpponentsNames[0]); + StringCopy(gLinkPlayers[2].name, sBlenderOpponentsNames[1]); + break; + case 3: + gInGameOpponentsNo = 3; + gBerryBlenderData->playersNo = 4; + StringCopy(gLinkPlayers[0].name, gSaveBlock2.playerName); + StringCopy(gLinkPlayers[1].name, sBlenderOpponentsNames[0]); + StringCopy(gLinkPlayers[2].name, sBlenderOpponentsNames[1]); + StringCopy(gLinkPlayers[3].name, sBlenderOpponentsNames[2]); + break; + } +} + +void sub_804E990(void) +{ + s32 i; + + REG_DISPCNT = 0; + gBerryBlenderData = (struct BerryBlenderData*)(&ewram[0x18000]); + gBerryBlenderData->field_0 = 0; + gBerryBlenderData->field_134 = 0; + for (i = 0; i < BLENDER_MAX_PLAYERS; i++) + { + gBerryBlenderData->chosenItemID[i] = 0; + } + Blender_SetPlayerNamesLocal(gSpecialVar_0x8004); + if (gSpecialVar_0x8004 == 0) + SetMainCallback2(sub_804E9F8); + else + SetMainCallback2(sub_804F378); +} + +static void sub_804E9F8(void) +{ + int i, j; + switch (gBerryBlenderData->field_0) + { + case 0: + ResetSpriteData(); + FreeAllSpritePalettes(); + ResetTasks(); + SetVBlankCallback(VBlankCB0_BerryBlender); + SetUpWindowConfig(&gWindowConfig_81E6F68); + InitMenuWindow(&gWindowConfig_81E6F68); + gLinkType = 0x4422; + gBerryBlenderData->field_0++; + gBerryBlenderData->field_4E = 0; + gBerryBlenderData->field_7E = 0; + gBerryBlenderData->field_144 = 0; + gBerryBlenderData->field_146 = 0; + for (i = 0; i < BLENDER_MAX_PLAYERS; i++) + { + gBerryBlenderData->field_70[i] = 0; + for (j = 0; j < 3; j++) + { + gBerryBlenderData->scores[i][j] = 0; + } + } + gBerryBlenderData->field_7C = 0; + gBerryBlenderData->field_56 = 0; + gBerryBlenderData->arrowPos = 0; + gBerryBlenderData->max_RPM = 0; + gBerryBlenderData->field_1 = 0; + break; + case 1: + if (sub_804E2EC()) + { + gBerryBlenderData->field_0++; + sub_8051474(); + } + break; + case 2: + for (i = 0; i < BLENDER_MAX_PLAYERS; i++) + { + gBerryBlenderData->SyncArrowSprite2ID[i] = CreateSprite(&sBlenderSyncArrow_SpriteTemplate, sBlenderSyncArrowsPos[i][0], sBlenderSyncArrowsPos[i][1], 1); + StartSpriteAnim(&gSprites[gBerryBlenderData->SyncArrowSprite2ID[i]], i + 8); + } + gBerryBlenderData->field_0++; + break; + case 3: + BeginNormalPaletteFade(-1, 0, 0x10, 0, 0); + gBerryBlenderData->field_0++; + break; + case 4: + sub_804E4FC(); + if (!gPaletteFade.active) + { + gBerryBlenderData->field_0++; + } + break; + case 5: + MenuDrawTextWindow(0, 13, 29, 19); + MenuPrint(gOtherText_LinkStandby3, 1, 14); + gBerryBlenderData->field_0 = 8; + gBerryBlenderData->framesToWait = 0; + break; + case 8: + gBerryBlenderData->field_0++; + gBerryBlenderData->field_13C = 0; + Blender_CopyBerryData(&gBerryBlenderData->blendedBerries[0], gScriptItemId); + memcpy(gBlockSendBuffer, &gBerryBlenderData->blendedBerries[0], sizeof(struct BlenderBerry)); + sub_80084A4(); + gBerryBlenderData->framesToWait = 0; + break; + case 9: + if (sub_8007ECC()) + { + ResetBlockReceivedFlags(); + if (GetMultiplayerId() == 0) + sub_8007E9C(4); + gBerryBlenderData->field_0++; + } + break; + case 10: + if (++gBerryBlenderData->framesToWait > 20) + { + MenuZeroFillScreen(); + if (GetBlockReceivedStatus() == sub_8008198()) + { + for (i = 0; i < GetLinkPlayerCount(); i++) + { + memcpy(&gBerryBlenderData->blendedBerries[i], &gBlockRecvBuffer[i][0], sizeof(struct BlenderBerry)); + gBerryBlenderData->chosenItemID[i] = gBerryBlenderData->blendedBerries[i].itemID; + } + ResetBlockReceivedFlags(); + gBerryBlenderData->field_0++; + } + } + break; + case 11: + gBerryBlenderData->playersNo = GetLinkPlayerCount(); + for (i = 0; i < BLENDER_MAX_PLAYERS; i++) + { + if (gBerryBlenderData->field_13C == gUnknown_082162EC[gBerryBlenderData->playersNo - 2][i]) + { + sub_804E7C0(gBerryBlenderData->chosenItemID[gBerryBlenderData->field_13C], i); + break; + } + } + gBerryBlenderData->framesToWait = 0; + gBerryBlenderData->field_0++; + gBerryBlenderData->field_13C++; + break; + case 12: + if (++gBerryBlenderData->framesToWait > 60) + { + if (gBerryBlenderData->field_13C >= gBerryBlenderData->playersNo) + { + gBerryBlenderData->field_0++; + gBerryBlenderData->arrowPos = gUnknown_082162F8[gUnknown_08216300[gBerryBlenderData->playersNo - 2]] - 22528; + } + else + gBerryBlenderData->field_0--; + gBerryBlenderData->framesToWait = 0; + } + break; + case 13: + if (sub_8007ECC()) + { + gBerryBlenderData->field_0++; + sub_8051414(&gBerryBlenderData->field_168); + } + break; + case 14: + REG_DISPCNT |= 0x400; + gBerryBlenderData->arrowPos += 0x200; + gBerryBlenderData->field_142 += 4; + if (gBerryBlenderData->field_142 > 255) + { + gBerryBlenderData->field_0++; + gBerryBlenderData->field_142 = 256; + gBerryBlenderData->arrowPos = gUnknown_082162F8[gUnknown_08216300[gBerryBlenderData->playersNo - 2]]; + REG_BG2CNT = 0x4882; + gBerryBlenderData->framesToWait = 0; + sub_804F238(); + sub_804F2A8(); + } + sub_8051414(&gBerryBlenderData->field_168); + break; + case 15: + if (sub_8051B8C()) + { + gBerryBlenderData->framesToWait = 0; + gBerryBlenderData->field_0++; + } + sub_8051414(&gBerryBlenderData->field_168); + break; + case 16: + CreateSprite(&sSpriteTemplate_8216548, 120, -16, 3); + gBerryBlenderData->field_0++; + break; + case 18: + gBerryBlenderData->field_0++; + break; + case 19: + sub_80084A4(); + gBerryBlenderData->field_0++; + break; + case 20: + if (sub_8007ECC()) + { + sub_8007E24(); + gBerryBlenderData->field_0++; + } + break; + case 21: + gBerryBlenderData->field_56 = 128; + gBerryBlenderData->gameFrameTime = 0; + SetMainCallback2(sub_80501FC); + if (GetCurrentMapMusic() != 403) + { + gBerryBlenderData->field_178 = GetCurrentMapMusic(); + } + PlayBGM(BGM_CYCLING); + break; + case 100: + MenuDrawTextWindow(0, 13, 29, 19); + MenuPrintMessage(gOtherText_LinkNotFound, 1, 15); + gBerryBlenderData->field_0++; + break; + case 101: + if (MenuUpdateWindowText()) + gBerryBlenderData->field_0++; + break; + case 102: + if (!gPaletteFade.active) + SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); + break; + } + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +static void sub_804F0F4(void) +{ + REG_DISPCNT = 0; + + ResetSpriteData(); + FreeAllSpritePalettes(); + ResetTasks(); + + SetVBlankCallback(VBlankCB0_BerryBlender); + + SetUpWindowConfig(&gWindowConfig_81E6F68); + InitMenuWindow(&gWindowConfig_81E6F68); + + gLinkType = 0x4422; + + gBerryBlenderData->field_4E = 0; + gBerryBlenderData->field_56 = 0; + gBerryBlenderData->arrowPos = 0; + gBerryBlenderData->max_RPM = 0; + gBerryBlenderData->field_144 = 0; + gBerryBlenderData->field_146 = 0; + gBerryBlenderData->field_0++; +} + +static u8 sub_804F16C(u16 arrowPos, u8 a1) +{ + u32 var1 = (arrowPos / 256) + 24; + u8 arrID = gBerryBlenderData->field_A2[a1]; + u32 var2 = gUnknown_08216303[arrID]; + + if (var1 >= var2 && var1 < var2 + 48) + { + if (var1 >= var2 + 20 && var1 < var2 + 28) + return 2; + else + return 1; + } + else + return 0; +} + +static void sub_804F1BC(u16 itemID, u8 a1, struct BlenderBerry* berry) +{ + u16 r4 = 0; + u16 i; + if (itemID == ITEM_ENIGMA_BERRY) + { + for (i = 0; i < 5; i++) + { + if (berry->flavours[r4] > berry->flavours[i]) + r4 = i; + } + r4 += 5; + } + else + { + r4 = itemID - 133; + if (r4 >= 5) + r4 = (r4 % 5) + 5; + } + for (i = 0; i < a1 - 1; i++) + { + Blender_SetBankBerryData(i + 1, gUnknown_082165BC[r4][i] + 133); + } +} + +static void sub_804F238(void) +{ + s32 i, j; + for (i = 0; i < BLENDER_MAX_PLAYERS; i++) + { + gBerryBlenderData->field_A2[i] = 0xFF; + gBerryBlenderData->field_9A[i] = gUnknown_082162EC[gBerryBlenderData->playersNo - 2][i]; + } + for (j = 0; j < BLENDER_MAX_PLAYERS; j++) + { + for (i = 0; i < BLENDER_MAX_PLAYERS; i++) + { + if (gBerryBlenderData->field_9A[i] == j) + gBerryBlenderData->field_A2[j] = i; + } + } +} + +static void sub_804F2A8(void) +{ + int i; + for (i = 0; i < BLENDER_MAX_PLAYERS; i++) + { + if (gBerryBlenderData->field_9A[i] != 0xFF) + { + u8* stringPtr = gStringVar1; + + gBerryBlenderData->SyncArrowSpriteID[gBerryBlenderData->field_9A[i]] = gBerryBlenderData->SyncArrowSprite2ID[i]; + StartSpriteAnim(&gSprites[gBerryBlenderData->SyncArrowSpriteID[gBerryBlenderData->field_9A[i]]], i); + if (GetMultiplayerId() == gBerryBlenderData->field_9A[i]) + stringPtr = StringCopy(stringPtr, sRedColorString); + StringCopy(stringPtr, gLinkPlayers[gBerryBlenderData->field_9A[i]].name); + MenuPrint_PixelCoords(gStringVar1, gUnknown_082162D4[i][0] * 8 + 1, gUnknown_082162D4[i][1] * 8, 1); + } + } +} + +static void sub_804F378(void) +{ + s32 i, j; + switch (gBerryBlenderData->field_0) + { + case 0: + sub_804F0F4(); + Blender_SetBankBerryData(0, gScriptItemId); + Blender_CopyBerryData(&gBerryBlenderData->blendedBerries[0], gScriptItemId); + sub_804F1BC(gScriptItemId, gBerryBlenderData->playersNo, &gBerryBlenderData->blendedBerries[0]); + for (i = 0; i < BLENDER_MAX_PLAYERS; i++) + { + gBerryBlenderData->field_70[i] = 0; + for (j = 0; j < 3; j++) + { + gBerryBlenderData->scores[i][j] = 0; + } + } + gBerryBlenderData->field_7C = 0; + gBerryBlenderData->field_1 = 0; + break; + case 1: + if (sub_804E2EC()) + { + gBerryBlenderData->field_0++; + sub_8051474(); + } + break; + case 2: + for (i = 0; i < BLENDER_MAX_PLAYERS; i++) + { + gBerryBlenderData->SyncArrowSprite2ID[i] = CreateSprite(&sBlenderSyncArrow_SpriteTemplate, sBlenderSyncArrowsPos[i][0], sBlenderSyncArrowsPos[i][1], 1); + StartSpriteAnim(&gSprites[gBerryBlenderData->SyncArrowSprite2ID[i]], i + 8); + } + gBerryBlenderData->field_0++; + break; + case 3: + BeginNormalPaletteFade(-1, 0, 0x10, 0, 0); + gBerryBlenderData->field_0++; + gBerryBlenderData->framesToWait = 0; + break; + case 4: + if (++gBerryBlenderData->framesToWait == 2) + sub_804E4FC(); + if (!gPaletteFade.active) + gBerryBlenderData->field_0 = 8; + break; + case 8: + gBerryBlenderData->field_0 = 11; + gBerryBlenderData->field_13C = 0; + break; + case 11: + for (i = 0; i < BLENDER_MAX_PLAYERS; i++) + { + u32 var = gUnknown_082162EC[gBerryBlenderData->playersNo - 2][i]; + if (gBerryBlenderData->field_13C == var) + { + sub_804E7C0(gBerryBlenderData->chosenItemID[gBerryBlenderData->field_13C], i); + break; + } + } + gBerryBlenderData->framesToWait = 0; + gBerryBlenderData->field_0++; + gBerryBlenderData->field_13C++; + break; + case 12: + if (++gBerryBlenderData->framesToWait > 60) + { + if (gBerryBlenderData->field_13C >= gBerryBlenderData->playersNo) + { + gBerryBlenderData->arrowPos = gUnknown_082162F8[gUnknown_08216300[gBerryBlenderData->playersNo - 2]] - 22528; + gBerryBlenderData->field_0++; + } + else + gBerryBlenderData->field_0--; + gBerryBlenderData->framesToWait = 0; + } + break; + case 13: + gBerryBlenderData->field_0++; + sub_804F238(); + PlaySE(SE_RU_HYUU); + sub_8051414(&gBerryBlenderData->field_168); + break; + case 14: + REG_DISPCNT |= 0x400; + gBerryBlenderData->arrowPos += 0x200; + gBerryBlenderData->field_142 += 4; + if (gBerryBlenderData->field_142 > 255) + { + gBerryBlenderData->field_0++; + gBerryBlenderData->field_142 = 256; + gBerryBlenderData->arrowPos = gUnknown_082162F8[gUnknown_08216300[gBerryBlenderData->playersNo - 2]]; + REG_BG2CNT = 0x4882; + gBerryBlenderData->framesToWait = 0; + PlaySE(SE_TRACK_DOOR);; + sub_804F2A8(); + } + sub_8051414(&gBerryBlenderData->field_168); + break; + case 15: + if (sub_8051B8C()) + { + gBerryBlenderData->field_0++; + } + sub_8051414(&gBerryBlenderData->field_168); + break; + case 16: + CreateSprite(&sSpriteTemplate_8216548, 120, -16, 3); + gBerryBlenderData->field_0++; + break; + case 18: + gBerryBlenderData->field_0++; + break; + case 19: + gBerryBlenderData->field_0++; + break; + case 20: + gBerryBlenderData->field_0++; + break; + case 21: + sub_804F81C(); + gBerryBlenderData->field_56 = 128; + gBerryBlenderData->gameFrameTime = 0; + gBerryBlenderData->field_14B = 0; + gBerryBlenderData->field_7E = 0; + SetMainCallback2(sub_80501FC); + + for (i = 0; i < gSpecialVar_0x8004; i++) + { + gBerryBlenderData->field_148[i] = CreateTask(gUnknown_08216308[i], 10 + i); + } + + if (GetCurrentMapMusic() != 403) + { + gBerryBlenderData->field_178 = GetCurrentMapMusic(); + } + PlayBGM(BGM_CYCLING); + PlaySE(SE_MOTER); + Blender_ControlHitPitch(); + break; + } + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +static void sub_804F81C(void) +{ + s32 i; + for (i = 0; i < 4; i++) + { + gSendCmd[0] = 0; + gSendCmd[2] = 0; + gRecvCmds[0][i] = 0; + gRecvCmds[2][i] = 0; + } +} + +static void sub_804F844(u8 taskID) +{ + if(++gTasks[taskID].data[0] > gTasks[taskID].data[1]) + { + gRecvCmds[2][gTasks[taskID].data[2]] = 0x2345; + DestroyTask(taskID); + } +} + +static void sub_804F890(u8 a0, u8 a1) +{ + u8 taskID = CreateTask(sub_804F844, 80); + gTasks[taskID].data[1] = a1; + gTasks[taskID].data[2] = a0; +} + +static void sub_804F8C8(u8 taskID) +{ + if (sub_804F16C(gBerryBlenderData->arrowPos, 1) == 2) + { + if (gTasks[taskID].data[0] == 0) + { + if (gBerryBlenderData->field_14B == 0) + { + u8 rand = Random() / 655; + if (gBerryBlenderData->field_56 < 500) + { + if (rand > 75) + gRecvCmds[2][1] = 0x4523; + else + gRecvCmds[2][1] = 0x5432; + gRecvCmds[2][1] = 0x5432; // ??? + } + else if (gBerryBlenderData->field_56 < 1500) + { + if (rand > 80) + gRecvCmds[2][1] = 0x4523; + else + { + u8 value = rand - 21; + if (value < 60) + gRecvCmds[2][1] = 0x5432; + else if (rand < 10) + sub_804F890(1, 5); + } + } + else if (rand <= 90) + { + u8 value = rand - 71; + if (value < 20) + gRecvCmds[2][1] = 0x5432; + else if (rand < 30) + sub_804F890(1, 5); + } + else + gRecvCmds[2][1] = 0x4523; + } + else + gRecvCmds[2][1] = 0x4523; + + gTasks[taskID].data[0] = 1; + } + } + else + gTasks[taskID].data[0] = 0; +} + +static void sub_804F9F4(u8 taskID) +{ + u32 var1 = (gBerryBlenderData->arrowPos + 0x1800) & 0xFFFF; + u32 var2 = gBerryBlenderData->field_A2[2] & 0xFF; + if ((var1 >> 8) > gUnknown_08216303[var2] + 20 && (var1 >> 8) < gUnknown_08216303[var2] + 40) + { + if (gTasks[taskID].data[0] == 0) + { + if (gBerryBlenderData->field_14B == 0) + { + u8 rand = Random() / 655; + if (gBerryBlenderData->field_56 < 500) + { + if (rand > 66) + gRecvCmds[2][2] = 0x4523; + else + gRecvCmds[2][2] = 0x5432; + } + else + { + u8 value; + if (rand > 65) + gRecvCmds[2][2] = 0x4523; + value = rand - 41; + if (value < 25) + gRecvCmds[2][2] = 0x5432; + if (rand < 10) + sub_804F890(2, 5); + } + + gTasks[taskID].data[0] = 1; + } + else + { + gRecvCmds[2][2] = 0x4523; + gTasks[taskID].data[0] = 1; + } + } + } + else + gTasks[taskID].data[0] = 0; +} + +static void sub_804FB1C(u8 taskID) +{ + u32 var1, var2; + + var1 = (gBerryBlenderData->arrowPos + 0x1800) & 0xFFFF; + var2 = gBerryBlenderData->field_A2[3] & 0xFF; + if ((var1 >> 8) > gUnknown_08216303[var2] + 20 && (var1 >> 8) < gUnknown_08216303[var2] + 40) + { + if (gTasks[taskID].data[0] == 0) + { + if (gBerryBlenderData->field_14B == 0) + { + u8 rand = (Random() / 655); + if (gBerryBlenderData->field_56 < 500) + { + if (rand > 88) + gRecvCmds[2][3] = 0x4523; + else + gRecvCmds[2][3] = 0x5432; + } + else + { + if (rand > 60) + gRecvCmds[2][3] = 0x4523; + else + { + s8 value = rand - 56; // makes me wonder what the original code was + u8 value2 = value; + if (value2 < 5) + gRecvCmds[2][3] = 0x5432; + } + if (rand < 5) + sub_804F890(3, 5); + } + gTasks[taskID].data[0] = 1; + } + else + { + gRecvCmds[2][3] = 0x4523; + gTasks[taskID].data[0] = 1; + } + } + } + else + gTasks[taskID].data[0] = 0; +} + +static void sub_804FC48(u16 a0, u8 a1) +{ + u8 spriteID; + + spriteID = CreateSprite(&sSpriteTemplate_821645C, + sBlenderSyncArrowsPos[a1][0] - (10 * gUnknown_082162CC[a1][0]), + sBlenderSyncArrowsPos[a1][1] - (10 * gUnknown_082162CC[a1][1]), + 1); + if (a0 == 0x4523) + { + StartSpriteAnim(&gSprites[spriteID], 2); + gSprites[spriteID].callback = sub_8051684; + PlaySE(SE_RU_GASHIN); + } + else if (a0 == 0x5432) + { + StartSpriteAnim(&gSprites[spriteID], 0); + PlaySE(SE_SEIKAI); + } + else if (a0 == 0x2345) + { + StartSpriteAnim(&gSprites[spriteID], 1); + PlaySE(SE_HAZURE); + } + sub_805156C(); +} + +static void sub_804FD30(u16 a0) +{ + Blender_ControlHitPitch(); + switch (a0) + { + case 0x4523: + if (gBerryBlenderData->field_56 < 1500) + gBerryBlenderData->field_56 += (384 / gUnknown_082165DA[gBerryBlenderData->playersNo]); + else + { + gBerryBlenderData->field_56 += (128 / gUnknown_082165DA[gBerryBlenderData->playersNo]); + sub_8051AC8(&gBerryBlenderData->field_144, (gBerryBlenderData->field_56 / 100) - 10); + sub_8051AC8(&gBerryBlenderData->field_146, (gBerryBlenderData->field_56 / 100) - 10); + } + break; + case 0x5432: + if (gBerryBlenderData->field_56 < 1500) + gBerryBlenderData->field_56 += (256 / gUnknown_082165DA[gBerryBlenderData->playersNo]); + break; + case 0x2345: + gBerryBlenderData->field_56 -= (256 / gUnknown_082165DA[gBerryBlenderData->playersNo]); + if (gBerryBlenderData->field_56 < 128) + gBerryBlenderData->field_56 = 128; + break; + } +} + +static void sub_804FE70(void) +{ + s32 i; + + if (gSpecialVar_0x8004 != 0) + { + if (gSendCmd[2] != 0) + { + gRecvCmds[2][0] = gSendCmd[2]; + gRecvCmds[0][0] = 0x4444; + gSendCmd[2] = 0; + } + for (i = 1; i < 4; i++) + { + if (gRecvCmds[2][i] != 0) + gRecvCmds[0][i] = 0x4444; + } + } + for (i = 0; i < gBerryBlenderData->playersNo; i++) + { + if (gRecvCmds[0][i] == 0x4444) + { + u32 var = gBerryBlenderData->field_A2[i]; + if (gRecvCmds[2][i] == 0x4523) + { + sub_804FD30(0x4523); + gBerryBlenderData->field_13E += (gBerryBlenderData->field_56 / 55); + if (gBerryBlenderData->field_13E >= 1000) + gBerryBlenderData->field_13E = 1000; + sub_804FC48(0x4523, var); + gBerryBlenderData->scores[i][BLENDER_SCORE_BEST]++; + } + else if (gRecvCmds[2][i] == 0x5432) + { + sub_804FD30(0x5432); + gBerryBlenderData->field_13E += (gBerryBlenderData->field_56 / 70); + sub_804FC48(0x5432, var); + gBerryBlenderData->scores[i][BLENDER_SCORE_GOOD]++; + } + else if (gRecvCmds[2][i] == 0x2345) + { + sub_804FC48(0x2345, var); + sub_804FD30(0x2345); + if (gBerryBlenderData->field_4.win_field_F > 1000) + gBerryBlenderData->field_13E = 1000; + if (gBerryBlenderData->scores[i][BLENDER_SCORE_MISS] < 999) + gBerryBlenderData->scores[i][BLENDER_SCORE_MISS]++; + } + if (gRecvCmds[2][i] == 0x2345 || gRecvCmds[2][i] == 0x4523 || gRecvCmds[2][i] == 0x5432) + { + if (gBerryBlenderData->field_56 > 1500) + m4aMPlayTempoControl(&gMPlay_BGM, ((gBerryBlenderData->field_56 - 750) / 20) + 256); + else + m4aMPlayTempoControl(&gMPlay_BGM, 256); + } + } + } + if (gSpecialVar_0x8004 != 0) + { + for (i = 0; i < gBerryBlenderData->playersNo; i++) + { + gRecvCmds[0][i] = 0; + gRecvCmds[2][i] = 0; + } + } +} + +static void sub_80500A8(void) +{ + bool8 A_pressed = 0; + u8 var2 = gBerryBlenderData->field_A2[GetMultiplayerId()]; + if (gBerryBlenderData->field_6F == 0) + { + if (gSaveBlock2.optionsButtonMode == OPTIONS_BUTTON_MODE_L_EQUALS_A && gMain.newKeys & A_BUTTON) + A_pressed = ((gMain.heldKeysRaw & (A_BUTTON | L_BUTTON)) != (A_BUTTON | L_BUTTON)); + else if (gMain.newKeys & A_BUTTON) + A_pressed = 1; + if (A_pressed) + { + u8 var3; + StartSpriteAnim(&gSprites[gBerryBlenderData->SyncArrowSpriteID[gBerryBlenderData->field_9A[var2]]], var2 + 4); + var3 = sub_804F16C(gBerryBlenderData->arrowPos, GetMultiplayerId()); + if (var3 == 2) + gSendCmd[2] = 0x4523; + else if (var3 == 1) + gSendCmd[2] = 0x5432; + else + gSendCmd[2] = 0x2345; + } + } + if (++gBerryBlenderData->field_7E > 5) + { + if (gBerryBlenderData->field_56 > 128) + gBerryBlenderData->field_56--; + gBerryBlenderData->field_7E = 0; + } + if (gUnknown_020297ED && gMain.newKeys & L_BUTTON) + gBerryBlenderData->field_14B ^= 1; +} + +static void sub_80501FC(void) +{ + sub_8051474(); + if (gBerryBlenderData->gameFrameTime < (99 * 60 * 60) + (59 * 60)) // game time can't be longer than 99 minutes and 59 seconds, can't print 3 digits + gBerryBlenderData->gameFrameTime++; + sub_80500A8(); + SetLinkDebugValues((u16)(gBerryBlenderData->field_56), gBerryBlenderData->field_13E); + sub_804FE70(); + sub_805194C(gBerryBlenderData->field_13E, 1000); + sub_8051A3C(gBerryBlenderData->field_56); + sub_8051B18(); + sub_805123C(); + if (gBerryBlenderData->field_6F == 0 && gBerryBlenderData->field_140 >= 1000) + { + gBerryBlenderData->field_13E = 1000; + gBerryBlenderData->field_6F = 1; + SetMainCallback2(sub_8050954); + } + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +static bool8 sub_80502A4(struct BlenderBerry* berries, u8 index1, u8 index2) +{ + if (berries[index1].itemID != berries[index2].itemID + || (StringCompare(berries[index1].name, berries[index2].name) == 0 + && (berries[index1].flavours[0] == berries[index2].flavours[0] + && berries[index1].flavours[1] == berries[index2].flavours[1] + && berries[index1].flavours[2] == berries[index2].flavours[2] + && berries[index1].flavours[3] == berries[index2].flavours[3] + && berries[index1].flavours[4] == berries[index2].flavours[4] + && berries[index1].smoothness == berries[index2].smoothness))) + return TRUE; + else + return FALSE; +} + +u32 Blender_GetPokeblockColor(struct BlenderBerry* berries, s16* a1, u8 playersNo, u8 a3) +{ + s16 vars[5]; + s32 i; + s32 r6; + u8 r2; + + for (i = 0; i <= 5; i++) // bug, writing one index too far + vars[i] = a1[i]; + r6 = 0; + for (i = 0; i < 5; i++) + { + if (vars[i] == 0) + r6++; + } + if (r6 == 5 || a3 > 3) + return 12; + for (i = 0; i < playersNo; i++) + { + for (r6 = 0; r6 < playersNo; r6++) + { + if (berries[i].itemID == berries[r6].itemID && i != r6 + && (berries[i].itemID != ITEM_ENIGMA_BERRY || sub_80502A4(berries, i, r6))) + return 12; + } + } + r2 = 0; + for (r2 = 0, i = 0; i < 5; i++) + { + if (vars[i] > 0) + r2++; + } + if (r2 > 3) + return 13; + if (r2 == 3) + return 11; + for (i = 0; i < 5; i++) + { + if (vars[i] > 50) + return 14; + } + if (r2 == 1 && vars[0] > 0) + return 1; + if (r2 == 1 && vars[1] > 0) + return 2; + if (r2 == 1 && vars[2] > 0) + return 3; + if (r2 == 1 && vars[3] > 0) + return 4; + if (r2 == 1 && vars[4] > 0) + return 5; + if (r2 == 2) + { + s32 var = 0; + for (i = 0; i < 5; i++) + { + if (vars[i] > 0) + gUnknown_03000520[var++] = i; + } + if (vars[gUnknown_03000520[0]] >= vars[gUnknown_03000520[1]]) + { + if (gUnknown_03000520[0] == 0) + return (gUnknown_03000520[1] << 16) | 6; + if (gUnknown_03000520[0] == 1) + return (gUnknown_03000520[1] << 16) | 7; + if (gUnknown_03000520[0] == 2) + return (gUnknown_03000520[1] << 16) | 8; + if (gUnknown_03000520[0] == 3) + return (gUnknown_03000520[1] << 16) | 9; + if (gUnknown_03000520[0] == 4) + return (gUnknown_03000520[1] << 16) | 10; + } + else + { + if (gUnknown_03000520[1] == 0) + return (gUnknown_03000520[0] << 16) | 6; + if (gUnknown_03000520[1] == 1) + return (gUnknown_03000520[0] << 16) | 7; + if (gUnknown_03000520[1] == 2) + return (gUnknown_03000520[0] << 16) | 8; + if (gUnknown_03000520[1] == 3) + return (gUnknown_03000520[0] << 16) | 9; + if (gUnknown_03000520[1] == 4) + return (gUnknown_03000520[0] << 16) | 10; + } + } + return 0; +} + +static void sub_80504F0(s16 value) +{ + gUnknown_0300052C = value; +} + +s16 unref_sub_80504FC(void) +{ + return gUnknown_0300052C; +} + +static void sub_8050508(s16 value) +{ + gUnknown_0300052E = value; +} + +s16 unref_sub_8050514(void) +{ + return gUnknown_0300052E; +} + +#ifdef NONMATCHING + +static void Blender_CalculatePokeblock(struct BlenderBerry* berries, struct Pokeblock* pokeblock, u8 playersNo, u8* flavours, u16 maxRPM) +{ + s32 i; + s32 j; + s32 savedEntry; + s32 var3; + s32 var4; + u32 var6; + s32 var11; + u16 rand; + + for (i = 0; i < 6; i++) + gUnknown_03000510[i] = 0; + for (i = 0; i < playersNo; i++) + { + for (j = 0; j < 5; j++) + gUnknown_03000510[j] += berries[i].flavours[j]; + } + + savedEntry = gUnknown_03000510[0]; + gUnknown_03000510[0] -= gUnknown_03000510[1]; + gUnknown_03000510[1] -= gUnknown_03000510[2]; + gUnknown_03000510[2] -= gUnknown_03000510[3]; + gUnknown_03000510[3] -= gUnknown_03000510[4]; + gUnknown_03000510[4] -= savedEntry; + + var6 = 0; + for (i = 0; i < 6; i++) + { + if (gUnknown_03000510[i] < 0) + { + gUnknown_03000510[i] = 0; + var6++; + } + } + for (i = 0; i < 5; i++) + { + if (gUnknown_03000510[i] > 0) + { + if (gUnknown_03000510[i] < var6) + gUnknown_03000510[i] = 0; + else + gUnknown_03000510[i] -= var6; + } + } + for (i = 0; i < 5; i++) + { + gUnknown_03000530[i] = gUnknown_03000510[i]; + } + + var11 = maxRPM / 333 + 100; + gUnknown_0300055C = ((var11)); + + for (i = 0; i < 5; i++) + { + var3 = gUnknown_03000510[i]; + var3 = ((var11) * var3) / 10; + var4 = var3 % 10; + var3 /= 10; + if (var4 > 4) + var3++; + gUnknown_03000510[i] = var3; + } + for (i = 0; i < 5; i++) + { + gUnknown_03000548[i] = gUnknown_03000510[i]; + } + pokeblock->color = Blender_GetPokeblockColor(berries, &gUnknown_03000510[0], playersNo, var6); + gUnknown_03000510[5] = (gUnknown_03000510[5] / playersNo) - playersNo; + if (gUnknown_03000510[5] < 0) + gUnknown_03000510[5] = 0; + if (pokeblock->color == 12) + { + rand = Random() % 10; + for (i = 0; i < 6; i++) + { + if ((gUnknown_082165DF[rand] >> i) & 1) + gUnknown_03000510[i] = 2; + else + gUnknown_03000510[i] = 0; + } + } + for (i = 0; i < 6; i++) + { + if (gUnknown_03000510[i] > 255) + gUnknown_03000510[i] = 255; + } + pokeblock->spicy = gUnknown_03000510[0]; + pokeblock->dry = gUnknown_03000510[1]; + pokeblock->sweet = gUnknown_03000510[2]; + pokeblock->bitter = gUnknown_03000510[3]; + pokeblock->sour = gUnknown_03000510[4]; + pokeblock->feel = gUnknown_03000510[5]; + for (i = 0; i < 6; i++) + { + flavours[i] = gUnknown_03000510[i]; + } +} + +#else +__attribute__((naked)) +static void Blender_CalculatePokeblock(struct BlenderBerry* berries, struct Pokeblock* pokeblock, u8 a2, u8* flavours, u16 a4) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + sub sp, 0x10\n\ + str r0, [sp]\n\ + mov r8, r1\n\ + str r3, [sp, 0x4]\n\ + ldr r0, [sp, 0x30]\n\ + lsls r2, 24\n\ + lsrs r2, 24\n\ + mov r9, r2\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + str r0, [sp, 0x8]\n\ + ldr r7, _080505DC @ =gUnknown_03000510\n\ + adds r2, r7, 0\n\ + movs r1, 0\n\ + adds r0, r7, 0\n\ + adds r0, 0xA\n\ +_0805054A:\n\ + strh r1, [r0]\n\ + subs r0, 0x2\n\ + cmp r0, r2\n\ + bge _0805054A\n\ + movs r6, 0\n\ + cmp r6, r9\n\ + bge _08050580\n\ + ldr r0, _080505DC @ =gUnknown_03000510\n\ + mov r12, r0\n\ + ldr r5, [sp]\n\ + adds r5, 0x9\n\ +_08050560:\n\ + movs r3, 0\n\ + adds r4, r5, 0\n\ + mov r2, r12\n\ +_08050566:\n\ + adds r1, r4, r3\n\ + ldrh r0, [r2]\n\ + ldrb r1, [r1]\n\ + adds r0, r1\n\ + strh r0, [r2]\n\ + adds r2, 0x2\n\ + adds r3, 0x1\n\ + cmp r3, 0x5\n\ + ble _08050566\n\ + adds r5, 0x10\n\ + adds r6, 0x1\n\ + cmp r6, r9\n\ + blt _08050560\n\ +_08050580:\n\ + movs r1, 0\n\ + ldrsh r3, [r7, r1]\n\ + ldrh r0, [r7]\n\ + ldrh r1, [r7, 0x2]\n\ + subs r0, r1\n\ + strh r0, [r7]\n\ + ldrh r0, [r7, 0x4]\n\ + subs r1, r0\n\ + strh r1, [r7, 0x2]\n\ + ldrh r1, [r7, 0x6]\n\ + subs r0, r1\n\ + strh r0, [r7, 0x4]\n\ + ldrh r0, [r7, 0x8]\n\ + subs r1, r0\n\ + strh r1, [r7, 0x6]\n\ + subs r0, r3\n\ + strh r0, [r7, 0x8]\n\ + movs r3, 0\n\ + movs r2, 0\n\ + adds r1, r7, 0\n\ + movs r6, 0x4\n\ +_080505AA:\n\ + movs r4, 0\n\ + ldrsh r0, [r1, r4]\n\ + cmp r0, 0\n\ + bge _080505B6\n\ + strh r2, [r1]\n\ + adds r3, 0x1\n\ +_080505B6:\n\ + adds r1, 0x2\n\ + subs r6, 0x1\n\ + cmp r6, 0\n\ + bge _080505AA\n\ + lsls r0, r3, 24\n\ + lsrs r0, 24\n\ + mov r10, r0\n\ + movs r4, 0\n\ + ldr r1, _080505DC @ =gUnknown_03000510\n\ + movs r6, 0x4\n\ +_080505CA:\n\ + ldrh r2, [r1]\n\ + movs r5, 0\n\ + ldrsh r0, [r1, r5]\n\ + cmp r0, 0\n\ + ble _080505E4\n\ + cmp r0, r3\n\ + bge _080505E0\n\ + strh r4, [r1]\n\ + b _080505E4\n\ + .align 2, 0\n\ +_080505DC: .4byte gUnknown_03000510\n\ +_080505E0:\n\ + subs r0, r2, r3\n\ + strh r0, [r1]\n\ +_080505E4:\n\ + adds r1, 0x2\n\ + subs r6, 0x1\n\ + cmp r6, 0\n\ + bge _080505CA\n\ + ldr r1, _080506C4 @ =gUnknown_03000510\n\ + ldr r2, _080506C8 @ =gUnknown_03000530\n\ + movs r6, 0x4\n\ +_080505F2:\n\ + movs r3, 0\n\ + ldrsh r0, [r1, r3]\n\ + stm r2!, {r0}\n\ + adds r1, 0x2\n\ + subs r6, 0x1\n\ + cmp r6, 0\n\ + bge _080505F2\n\ + ldr r1, _080506CC @ =0x0000014d\n\ + ldr r0, [sp, 0x8]\n\ + bl __udivsi3\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + adds r3, r0, 0\n\ + adds r3, 0x64\n\ + ldr r4, _080506D0 @ =gUnknown_0300055C\n\ + str r3, [r4]\n\ + movs r6, 0x4\n\ +_08050616:\n\ + movs r0, 0\n\ + ldrsh r5, [r7, r0]\n\ + adds r0, r5, 0\n\ + muls r0, r3\n\ + movs r1, 0xA\n\ + str r3, [sp, 0xC]\n\ + bl __divsi3\n\ + adds r5, r0, 0\n\ + movs r1, 0xA\n\ + bl __modsi3\n\ + adds r4, r0, 0\n\ + adds r0, r5, 0\n\ + movs r1, 0xA\n\ + bl __divsi3\n\ + adds r5, r0, 0\n\ + ldr r3, [sp, 0xC]\n\ + cmp r4, 0x4\n\ + ble _08050642\n\ + adds r5, 0x1\n\ +_08050642:\n\ + strh r5, [r7]\n\ + adds r7, 0x2\n\ + subs r6, 0x1\n\ + cmp r6, 0\n\ + bge _08050616\n\ + ldr r1, _080506C4 @ =gUnknown_03000510\n\ + ldr r2, _080506D4 @ =gUnknown_03000548\n\ + movs r6, 0x4\n\ +_08050652:\n\ + movs r3, 0\n\ + ldrsh r0, [r1, r3]\n\ + stm r2!, {r0}\n\ + adds r1, 0x2\n\ + subs r6, 0x1\n\ + cmp r6, 0\n\ + bge _08050652\n\ + ldr r4, _080506C4 @ =gUnknown_03000510\n\ + ldr r0, [sp]\n\ + adds r1, r4, 0\n\ + mov r2, r9\n\ + mov r3, r10\n\ + bl Blender_GetPokeblockColor\n\ + mov r5, r8\n\ + strb r0, [r5]\n\ + movs r1, 0xA\n\ + ldrsh r0, [r4, r1]\n\ + mov r1, r9\n\ + bl __divsi3\n\ + mov r3, r9\n\ + subs r0, r3\n\ + strh r0, [r4, 0xA]\n\ + lsls r0, 16\n\ + cmp r0, 0\n\ + bge _0805068C\n\ + movs r0, 0\n\ + strh r0, [r4, 0xA]\n\ +_0805068C:\n\ + mov r5, r8\n\ + ldrb r0, [r5]\n\ + cmp r0, 0xC\n\ + bne _080506E6\n\ + bl Random\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + movs r1, 0xA\n\ + bl __umodsi3\n\ + lsls r0, 16\n\ + lsrs r3, r0, 16\n\ + movs r6, 0\n\ + ldr r0, _080506D8 @ =gUnknown_082165DF\n\ + adds r0, r3, r0\n\ + ldrb r0, [r0]\n\ + adds r1, r4, 0\n\ + movs r4, 0x1\n\ + movs r3, 0x2\n\ +_080506B4:\n\ + adds r2, r0, 0\n\ + asrs r2, r6\n\ + ands r2, r4\n\ + cmp r2, 0\n\ + beq _080506DC\n\ + strh r3, [r1]\n\ + b _080506DE\n\ + .align 2, 0\n\ +_080506C4: .4byte gUnknown_03000510\n\ +_080506C8: .4byte gUnknown_03000530\n\ +_080506CC: .4byte 0x0000014d\n\ +_080506D0: .4byte gUnknown_0300055C\n\ +_080506D4: .4byte gUnknown_03000548\n\ +_080506D8: .4byte gUnknown_082165DF\n\ +_080506DC:\n\ + strh r2, [r1]\n\ +_080506DE:\n\ + adds r1, 0x2\n\ + adds r6, 0x1\n\ + cmp r6, 0x4\n\ + ble _080506B4\n\ +_080506E6:\n\ + ldr r7, _08050740 @ =gUnknown_03000510\n\ + movs r2, 0xFF\n\ + adds r1, r7, 0\n\ + movs r6, 0x5\n\ +_080506EE:\n\ + movs r3, 0\n\ + ldrsh r0, [r1, r3]\n\ + cmp r0, 0xFF\n\ + ble _080506F8\n\ + strh r2, [r1]\n\ +_080506F8:\n\ + adds r1, 0x2\n\ + subs r6, 0x1\n\ + cmp r6, 0\n\ + bge _080506EE\n\ + ldrh r0, [r7]\n\ + mov r4, r8\n\ + strb r0, [r4, 0x1]\n\ + ldrh r0, [r7, 0x2]\n\ + strb r0, [r4, 0x2]\n\ + ldrh r0, [r7, 0x4]\n\ + strb r0, [r4, 0x3]\n\ + ldrh r0, [r7, 0x6]\n\ + strb r0, [r4, 0x4]\n\ + ldrh r0, [r7, 0x8]\n\ + strb r0, [r4, 0x5]\n\ + ldrh r0, [r7, 0xA]\n\ + strb r0, [r4, 0x6]\n\ + movs r6, 0\n\ + adds r2, r7, 0\n\ +_0805071E:\n\ + ldr r5, [sp, 0x4]\n\ + adds r1, r5, r6\n\ + ldrh r0, [r2]\n\ + strb r0, [r1]\n\ + adds r2, 0x2\n\ + adds r6, 0x1\n\ + cmp r6, 0x5\n\ + ble _0805071E\n\ + add sp, 0x10\n\ + pop {r3-r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_08050740: .4byte gUnknown_03000510\n\ + .syntax divided"); +} + +#endif // NONMATCHING + +static void BlenderDebug_CalculatePokeblock(struct BlenderBerry* berries, struct Pokeblock* pokeblock, u8 playersNo, u8* flavours, u16 a4) +{ + Blender_CalculatePokeblock(berries, pokeblock, playersNo, flavours, a4); +} + +static void sub_8050760(void) +{ + u32 frames = (u16)(gBerryBlenderData->gameFrameTime); + u16 max_RPM = gBerryBlenderData->max_RPM; + s16 var = 0; + + if (frames < 900) + var = 5; + else if ((u16)(frames - 900) < 600) + var = 4; + else if ((u16)(frames - 1500) < 600) + var = 3; + else if ((u16)(frames - 2100) < 900) + var = 2; + else if ((u16)(frames - 3300) < 300) + var = 1; + sub_8050508(var); + + var = 0; + if (max_RPM <= 64) + { + if (max_RPM >= 50 && max_RPM < 100) + var = -1; + else if (max_RPM >= 100 && max_RPM < 150) + var = -2; + else if (max_RPM >= 150 && max_RPM < 200) + var = -3; + else if (max_RPM >= 200 && max_RPM < 250) + var = -4; + else if (max_RPM >= 250 && max_RPM < 300) + var = -5; + else if (max_RPM >= 350 && max_RPM < 400) + var = -6; + else if (max_RPM >= 400 && max_RPM < 450) + var = -7; + else if (max_RPM >= 500 && max_RPM < 550) + var = -8; + else if (max_RPM >= 550 && max_RPM < 600) + var = -9; + else if (max_RPM >= 600) + var = -10; + } + sub_80504F0(var); +} + +static void sub_80508D4(u8 value) +{ + gBerryBlenderData->field_AA = value; + sub_814A880(192, (gBerryBlenderData->field_AA * 16) + 72); +} + +static void sub_80508FC(void) +{ + gBerryBlenderData->field_AA = 0; + MenuDrawTextWindow(23, 8, 28, 13); + sub_814A5C0(0, -1, 12, 0x2D9F, 32); + MenuPrint(gOtherText_YesNoTerminating, 24, 9); + sub_80508D4(gBerryBlenderData->field_AA); +} + +static void sub_8050954(void) +{ + u8 i; + u8 multiplayerID; // unused + + sub_8051474(); + multiplayerID = GetMultiplayerId(); + switch (gBerryBlenderData->field_6F) + { + case 1: + ClearLinkCallback(); + m4aMPlayTempoControl(&gMPlay_BGM, 256); + for (i = 0; i < gSpecialVar_0x8004; i++) + { + DestroyTask(gBerryBlenderData->field_148[i]); + } + gBerryBlenderData->field_6F++; + break; + case 2: + gBerryBlenderData->field_56 -= 32; + if (gBerryBlenderData->field_56 <= 0) + { + gBerryBlenderData->field_56 = 0; + if (gReceivedRemoteLinkPlayers != 0) + gBerryBlenderData->field_6F++; + else + gBerryBlenderData->field_6F = 5; + gBerryBlenderData->field_0 = 0; + m4aMPlayStop(&gMPlay_SE2); + } + Blender_ControlHitPitch(); + break; + case 3: + if (/*multiplayerID != 0*/ GetMultiplayerId() != 0) + gBerryBlenderData->field_6F++; + else if (sub_8007ECC()) + { + gBerryBlenderData->field_1BC = gBerryBlenderData->gameFrameTime; + gBerryBlenderData->field_1C0 = gBerryBlenderData->max_RPM; + SendBlock(0, &gBerryBlenderData->field_1BC, 40); + gBerryBlenderData->field_6F++; + } + break; + case 4: + if (GetBlockReceivedStatus()) + { + u32* ptr = ((u32*)(&gBlockRecvBuffer[0][0])); + gBerryBlenderData->max_RPM = gBlockRecvBuffer[0][2]; + gBerryBlenderData->gameFrameTime = *ptr; + gBerryBlenderData->field_6F++; + ResetBlockReceivedFlags(); + } + break; + case 5: + if (Blender_PrintBlendingRanking()) + gBerryBlenderData->field_6F++; + break; + case 6: + if (Blender_PrintBlendingResults()) + { + if (gInGameOpponentsNo == 0) + IncrementGameStat(34); + else + IncrementGameStat(33); + gBerryBlenderData->field_6F++; + } + break; + case 7: + gBerryBlenderData->field_6F++; + MenuDrawTextWindow(0, 14, 29, 19); + MenuPrintMessage(gOtherText_BlendAnotherBerryPrompt, 1, 15); + break; + case 8: + if (MenuUpdateWindowText()) + gBerryBlenderData->field_6F++; + break; + case 9: + gBerryBlenderData->field_AA = 0; + sub_80508FC(); + gBerryBlenderData->field_6F++; + break; + case 10: + if (gMain.newKeys & DPAD_UP) + { + if (gBerryBlenderData->field_AA != 0) + PlaySE(SE_SELECT); + sub_80508D4(0); + } + else if (gMain.newKeys & DPAD_DOWN) + { + if (gBerryBlenderData->field_AA != 1) + PlaySE(SE_SELECT); + sub_80508D4(1); + } + else if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + gBerryBlenderData->field_6F++; + } + else if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + gBerryBlenderData->field_6F++; + sub_80508D4(1); + } + break; + case 11: + gSendCmd[0] = 0x2FFF; + if (gBerryBlenderData->field_AA == 0) + { + if (IsBagPocketNonEmpty(BAG_BERRIES) == FALSE) // is empty + { + gBerryBlenderData->field_7C = 2; + gSendCmd[1] = 0x9999; + } + else if (sub_810CA00() == -1) + { + gBerryBlenderData->field_7C = 3; + gSendCmd[1] = 0xAAAA; + } + else + { + gBerryBlenderData->field_7C = 0; + gSendCmd[1] = 0x7779; + } + gBerryBlenderData->field_6F++; + } + else + { + gBerryBlenderData->field_7C = 1; + gSendCmd[1] = 0x8888; + gBerryBlenderData->field_6F++; + } + break; + case 12: + if (gInGameOpponentsNo) + { + SetMainCallback2(sub_80510E8); + gBerryBlenderData->field_6F = 0; + gBerryBlenderData->field_0 = 0; + } + else + { + MenuPrintMessage(gOtherText_LinkStandby3, 1, 15); + gBerryBlenderData->field_6F++; + } + break; + case 13: + if (MenuUpdateWindowText()) + { + SetMainCallback2(sub_8050E30); + gBerryBlenderData->field_6F = 0; + gBerryBlenderData->field_0 = 0; + } + break; + } + sub_8051B18(); + sub_8051A3C(gBerryBlenderData->field_56); + sub_805123C(); + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +bool8 sub_8050CE8(void) +{ + switch (gBerryBlenderData->field_1C4) + { + case 0: + sub_80084A4(); + gBerryBlenderData->field_1C4 = 1; + gBerryBlenderData->framesToWait = 0; + break; + case 1: + if (sub_8007ECC()) + { + gBerryBlenderData->field_1C4++; + gSoftResetDisabled = TRUE; + } + break; + case 2: + sub_8125E2C(); + gBerryBlenderData->field_1C4++; + gBerryBlenderData->framesToWait = 0; + break; + case 3: + if (++gBerryBlenderData->framesToWait == 10) + { + sub_80084A4(); + gBerryBlenderData->field_1C4++; + } + break; + case 4: + if (sub_8007ECC()) + { + if (sub_8125E6C()) + gBerryBlenderData->field_1C4 = 5; + else + { + gBerryBlenderData->framesToWait = 0; + gBerryBlenderData->field_1C4 = 3; + } + } + break; + case 5: + gBerryBlenderData->field_1C4++; + gBerryBlenderData->framesToWait = 0; + break; + case 6: + if (++gBerryBlenderData->framesToWait > 5) + { + gSoftResetDisabled = FALSE; + return TRUE; + } + break; + } + return FALSE; +} + +static void sub_8050E30(void) +{ + switch (gBerryBlenderData->field_6F) + { + case 0: + if (gBerryBlenderData->field_70[0] == 0x2222) + gBerryBlenderData->field_6F = 5; + else if (gBerryBlenderData->field_70[0] == 0x1111) + { + if (gBerryBlenderData->field_78 == 0x9999) + gBerryBlenderData->field_6F = 2; + else if (gBerryBlenderData->field_78 == 0xAAAA) + gBerryBlenderData->field_6F = 1; + else + gBerryBlenderData->field_6F = 5; + } + break; + case 1: + gBerryBlenderData->field_6F = 3; + DestroyMenuCursor(); + MenuZeroFillWindowRect(23, 8, 28, 13); +#ifdef ENGLISH + StringCopy(gStringVar4, gLinkPlayers[gBerryBlenderData->field_7A].name); + StringAppend(gStringVar4, gOtherText_OtherCaseIsFull); +#else + StringCopy(gStringVar4, gOtherText_OtherCaseIsFull); + de_sub_8073110(gStringVar4, gLinkPlayers[gBerryBlenderData->field_7A].name); +#endif + MenuPrintMessage(gStringVar4, 1, 15); + break; + case 2: + gBerryBlenderData->field_6F++; + DestroyMenuCursor(); + MenuZeroFillWindowRect(23, 8, 28, 13); +#ifdef ENGLISH + StringCopy(gStringVar4, gLinkPlayers[gBerryBlenderData->field_7A].name); + StringAppend(gStringVar4, gOtherText_NoBerriesForBlend); +#else + StringCopy(gStringVar4, gOtherText_NoBerriesForBlend); + de_sub_8073110(gStringVar4, gLinkPlayers[gBerryBlenderData->field_7A].name); +#endif + MenuPrintMessage(gStringVar4, 1, 15); + break; + case 3: + if (MenuUpdateWindowText()) + { + gBerryBlenderData->framesToWait = 0; + gBerryBlenderData->field_6F++; + } + break; + case 4: + if (++gBerryBlenderData->framesToWait > 60) + gBerryBlenderData->field_6F = 5; + break; + case 5: + MenuDrawTextWindow(0, 14, 29, 19); + MenuPrint(gMultiText_Saving, 2, 15); + sub_80084A4(); + gBerryBlenderData->field_6F++; + break; + case 6: + if (sub_8007ECC()) + { + gBerryBlenderData->framesToWait = 0; + gBerryBlenderData->field_6F++; + gBerryBlenderData->field_1C4 = 0; + } + break; + case 7: + if (sub_8050CE8()) + { + PlaySE(SE_SAVE); + gBerryBlenderData->field_6F++; + } + break; + case 8: + gBerryBlenderData->field_6F++; + sub_80084A4(); + break; + case 9: + if (sub_8007ECC()) + { + BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); + gBerryBlenderData->field_6F++; + } + break; + case 10: + if (!gPaletteFade.active) + { + if (gBerryBlenderData->field_70[0] == 0x2222) + SetMainCallback2(sub_804E538); + else + { + gBerryBlenderData->framesToWait = 0; + gBerryBlenderData->field_6F++; + } + } + break; + case 11: + if (++gBerryBlenderData->framesToWait > 30) + { + sub_800832C(); + gBerryBlenderData->field_6F++; + } + break; + case 12: + if (gReceivedRemoteLinkPlayers == 0) + SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); + break; + } + + sub_805123C(); + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +static void sub_80510E8(void) +{ + switch (gBerryBlenderData->field_6F) + { + case 0: + if (gBerryBlenderData->field_7C < 2) + gBerryBlenderData->field_6F = 9; + if (gBerryBlenderData->field_7C == 2) + gBerryBlenderData->field_6F = 2; + if (gBerryBlenderData->field_7C == 3) + gBerryBlenderData->field_6F =1; + break; + case 1: + gBerryBlenderData->field_6F = 3; + DestroyMenuCursor(); + MenuZeroFillWindowRect(23, 8, 28, 13); + MenuPrintMessage(gOtherText_CaseIsFull, 1, 15); + break; + case 2: + gBerryBlenderData->field_6F++; + DestroyMenuCursor(); + MenuZeroFillWindowRect(23, 8, 28, 13); + MenuPrintMessage(gOtherText_OutOfBerries, 1, 15); + break; + case 3: + if (MenuUpdateWindowText()) + gBerryBlenderData->field_6F = 9; + break; + case 9: + BeginFastPaletteFade(3); + gBerryBlenderData->field_6F++; + break; + case 10: + if (!gPaletteFade.active) + { + if (gBerryBlenderData->field_7C == 0) + SetMainCallback2(sub_804E538); + else + SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); + } + break; + } + + sub_805123C(); + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +static void sub_805123C(void) +{ + if (gReceivedRemoteLinkPlayers) + { + if (gRecvCmds[0][0] == 0x2FFF) + { + if (gRecvCmds[1][0] == 0x1111) + { + switch (gRecvCmds[2][0]) + { + case 0x8888: + gBerryBlenderData->field_78 = 0x8888; + gBerryBlenderData->field_7A = gRecvCmds[3][0]; + break; + case 0x9999: + gBerryBlenderData->field_78 = 0x9999; + gBerryBlenderData->field_7A = gRecvCmds[3][0]; + break; + case 0xAAAA: + gBerryBlenderData->field_78 = 0xAAAA; + gBerryBlenderData->field_7A = gRecvCmds[3][0]; + break; + } + gBerryBlenderData->field_70[0] = 0x1111; + } + else if (gRecvCmds[1][0] == 0x2222) + gBerryBlenderData->field_70[0] = 0x2222; + } + if (GetMultiplayerId() == 0 && gBerryBlenderData->field_70[0] != 0x1111 && gBerryBlenderData->field_70[0] != 0x2222) + { + u8 i; + for (i = 0; i < GetLinkPlayerCount(); i++) + { + if (gRecvCmds[0][i] == 0x2FFF) + { + switch (gRecvCmds[1][i]) + { + case 0x8888: + gBerryBlenderData->field_70[i] = 0x8888; + break; + case 0x7779: + gBerryBlenderData->field_70[i] = 0x7779; + break; + case 0x9999: + gBerryBlenderData->field_70[i] = 0x9999; + break; + case 0xAAAA: + gBerryBlenderData->field_70[i] = 0xAAAA; + break; + } + } + } + for (i = 0; i < GetLinkPlayerCount(); i++) + { + if (gBerryBlenderData->field_70[i] == 0) + break; + } + if (i == GetLinkPlayerCount()) + { + for (i = 0; i < GetLinkPlayerCount(); i++) + { + if (gBerryBlenderData->field_70[i] != 0x7779) + break; + } + gSendCmd[0] = 0x2FFF; + if (i == GetLinkPlayerCount()) + gSendCmd[1] = 0x2222; + else + { + gSendCmd[1] = 0x1111; + gSendCmd[2] = gBerryBlenderData->field_70[i]; + gSendCmd[3] = i; + } + } + } + } +} + +static void sub_8051414(struct BgAffineDstData *dest) +{ + struct BgAffineSrcData affineSrc; + affineSrc.texX = 30720; + affineSrc.texY = 20480; + affineSrc.scrX = 120 - gBerryBlenderData->field_144; + affineSrc.scrY = 80 - gBerryBlenderData->field_146; + affineSrc.sx = gBerryBlenderData->field_142; + affineSrc.sy = gBerryBlenderData->field_142; + affineSrc.alpha = gBerryBlenderData->arrowPos; + BgAffineSet(&affineSrc, dest, 1); +} + +static void sub_8051474(void) +{ + gBerryBlenderData->field_58 = gBerryBlenderData->arrowPos; + gBerryBlenderData->arrowPos += gBerryBlenderData->field_56; + sub_8051414(&gBerryBlenderData->field_168); +} + +static void sub_80514A4(void) +{ + REG_BG2PA = gBerryBlenderData->field_168.pa; + REG_BG2PB = gBerryBlenderData->field_168.pb; + REG_BG2PC = gBerryBlenderData->field_168.pc; + REG_BG2PD = gBerryBlenderData->field_168.pd; + REG_BG2X = gBerryBlenderData->field_168.dx; + REG_BG2Y = gBerryBlenderData->field_168.dy; +} + +static void sub_80514F0(void) +{ + REG_BG1HOFS = gBerryBlenderData->field_144; + REG_BG1VOFS = gBerryBlenderData->field_146; + REG_BG0HOFS = gBerryBlenderData->field_144; + REG_BG0VOFS = gBerryBlenderData->field_146; +} + +void sub_8051524(struct Sprite* sprite) +{ + sprite->data2 += sprite->data0; + sprite->data3 += sprite->data1; + sprite->pos2.x = sprite->data2 / 8; + sprite->pos2.y = sprite->data3 / 8; + if (sprite->animEnded) + DestroySprite(sprite); +} + +static void sub_805156C(void) +{ + s32 limit = (Random() % 2) + 1; + s32 i; + + for (i = 0; i < limit; i++) + { + u16 rand; + s32 x, y; + u8 spriteID; + + rand = gBerryBlenderData->arrowPos + (Random() % 20); + + x = gSineTable[(rand & 0xFF) + 64] / 4; + y = gSineTable[(rand & 0xFF)] / 4; + + spriteID = CreateSprite(&sSpriteTemplate_82164FC, x + 120, y + 80, 1); + gSprites[spriteID].data0 = 16 - (Random() % 32); + gSprites[spriteID].data1 = 16 - (Random() % 32); + + gSprites[spriteID].callback = sub_8051524; + } +} + +static void sub_8051650(struct Sprite* sprite) +{ + sprite->data0++; + sprite->pos2.y = -(sprite->data0 / 3); + if (sprite->animEnded) + DestroySprite(sprite); +} + +void sub_8051684(struct Sprite* sprite) +{ + sprite->data0++; + sprite->pos2.y = -(sprite->data0 * 2); + if (sprite->pos2.y < -12) + sprite->pos2.y = -12; + if (sprite->animEnded) + DestroySprite(sprite); +} + +void Blender_SetBankBerryData(u8 bank, u16 itemID) +{ + gBerryBlenderData->chosenItemID[bank] = itemID; + Blender_CopyBerryData(&gBerryBlenderData->blendedBerries[bank], itemID); +} + +void unref_sub_80516F8(u8 taskID) +{ + struct Task* task = &gTasks[taskID]; + if (gReceivedRemoteLinkPlayers) + { + s32 i; + if (GetMultiplayerId() == 0) + { + if (++task->data[0] > 120) + task->data[0] = 0; + if (task->data[0] == 100) + { + ZeroFillWindowRect(&gBerryBlenderData->field_4, 0, 0, 16, 20); + MenuDrawTextWindow(4, 4, 10, 12); + for (i = 0; i < 3; i++) + { + if (gLinkPlayers[i + 1].trainerId != 0) + MenuPrint(gUnknown_08216284[i], 5, (2 * i) + 5); + MenuDrawTextWindow(0, 13, 29, 19); + MenuPrint(gOtherText_PressAToStart, 1, 15); + } + } + if (gMain.newKeys & A_BUTTON) + { + sub_8007E4C(); + DestroyTask(taskID); + } + } + else + { + if (task->data[0] == 10) + MenuPrint(gOtherText_PleaseWait, 3, 10); + if (++task->data[0] > 120) + task->data[0] = 0; + if (byte_3002A68 > 4 && gReceivedRemoteLinkPlayers == 1) + DestroyTask(taskID); + } + } +} + +static void sub_805181C(struct Sprite* sprite) +{ + switch (sprite->data0) + { + case 0: + sprite->data1 += 8; + if (sprite->data1 > 88) + { + sprite->data1 = 88; + sprite->data0++; + PlaySE(SE_KON); + } + break; + case 1: + sprite->data2 += 1; + if (sprite->data2 > 20) + { + sprite->data0++; + sprite->data2 = 0; + } + break; + case 2: + sprite->data1 += 4; + if (sprite->data1 > 176) + { + if (++sprite->data3 == 3) + { + DestroySprite(sprite); + CreateSprite(&sSpriteTemplate_821657C, 120, -20, 2); + } + else + { + sprite->data0 = 0; + sprite->data1 = -16; + StartSpriteAnim(sprite, sprite->data3); + } + } + break; + } + sprite->pos2.y = sprite->data1; +} + +static void sub_80518CC(struct Sprite* sprite) +{ + switch (sprite->data0) + { + case 0: + sprite->data1 += 8; + if (sprite->data1 > 92) + { + sprite->data1 = 92; + sprite->data0++; + PlaySE(SE_PIN); + } + break; + case 1: + sprite->data2 += 1; + if (sprite->data2 > 20) + sprite->data0++; + break; + case 2: + sprite->data1 += 4; + if (sprite->data1 > 176) + { + gBerryBlenderData->field_0++; + DestroySprite(sprite); + } + break; + } + sprite->pos2.y = sprite->data1; +} + +static void sub_805194C(u16 a0, u16 a1) +{ + if (gBerryBlenderData->field_140 < a0) + { + gBerryBlenderData->field_140 += 2; + sub_805197C(gBerryBlenderData->field_140, a1); + } +} + +static void sub_805197C(u16 a0, u16 a1) +{ + s32 var1, var2, var3, var4; + u16* vram; + + vram = (u16*)(VRAM + 0x6000); + var1 = (a0 * 64) / a1; + var2 = var1 / 8; + for (var4 = 0; var4 < var2; var4++) + { + vram[11 + var4] = 0x81E9; + vram[43 + var4] = 0x81F9; + } + var3 = var1 % 8; + if (var3 != 0) + { + vram[11 + var4] = var3 - 32287; + vram[43 + var4] = var3 - 32271; + var4++; + } + for (; var4 < 8; var4++) + { + vram[11 + var4] = 33249; + vram[43 + var4] = 33249 + 16; + } +} + +static u32 sub_8051A1C(u16 a0) +{ + return 360000 * a0 / 0x10000; +} + +static void sub_8051A3C(u16 a0) +{ + u8 i; + u8 palAdders[5]; + + u32 var = sub_8051A1C(a0); + if (gBerryBlenderData->max_RPM < var) + gBerryBlenderData->max_RPM = var; + for (i = 0; i < 5; i++) + { + palAdders[i] = var % 10; + var /= 10; + } + *((u16*)(VRAM + 0x6458)) = palAdders[4] + 0x8172; + *((u16*)(VRAM + 0x645A)) = palAdders[3] + 0x8172; + *((u16*)(VRAM + 0x645C)) = palAdders[2] + 0x8172; + *((u16*)(VRAM + 0x6460)) = palAdders[1] + 0x8172; + *((u16*)(VRAM + 0x6462)) = palAdders[0] + 0x8172; +} + +static void sub_8051AC8(s16* a0, u16 a1) +{ + if (*a0 == 0) + *a0 = (Random() % a1) - (a1 / 2); +} + +static void sub_8051AF4(s16* a0) +{ + if (*a0 < 0 ) + (*a0)++; + if (*a0 > 0 ) + (*a0)--; +} + +static void sub_8051B18(void) +{ + sub_8051AF4(&gBerryBlenderData->field_144); + sub_8051AF4(&gBerryBlenderData->field_146); +} + +static void sub_8051B40(s16* a0, u16 a1) +{ + s32 var; + if (a1 < 10) + var = 16; + else + var = 8; + if (*a0 == 0) + *a0 = (Random() % var) - (var / 2); + else + { + if (*a0 < 0) + (*a0)++; + if (*a0 > 0) + (*a0)--; + } +} + +static bool8 sub_8051B8C(void) +{ + if (gBerryBlenderData->framesToWait == 0) + { + gBerryBlenderData->field_144 = 0; + gBerryBlenderData->field_146 = 0; + } + gBerryBlenderData->framesToWait++; + sub_8051B40(&gBerryBlenderData->field_144, gBerryBlenderData->framesToWait); + sub_8051B40(&gBerryBlenderData->field_146, gBerryBlenderData->framesToWait); + if (gBerryBlenderData->framesToWait == 20) + { + gBerryBlenderData->field_144 = 0; + gBerryBlenderData->field_146 = 0; + return TRUE; + } + else + return FALSE; +} + +static void sub_8051C04(struct Sprite* sprite) +{ + sprite->pos2.x = -(gBerryBlenderData->field_144); + sprite->pos2.y = -(gBerryBlenderData->field_146); +} + +static void Blender_TrySettingRecord(void) +{ + if (gSaveBlock1.berryBlenderRecords[gBerryBlenderData->playersNo - 2] < gBerryBlenderData->max_RPM) + gSaveBlock1.berryBlenderRecords[gBerryBlenderData->playersNo - 2] = gBerryBlenderData->max_RPM; +} + +static bool8 Blender_PrintBlendingResults(void) +{ + u16 i; + + struct Pokeblock pokeblock; + u8 flavours[6]; + u8 text[2][10]; + u16 berryIDs[4]; // unused + + switch (gBerryBlenderData->field_0) + { + case 0: + gBerryBlenderData->field_0++; + gBerryBlenderData->framesToWait = 17; + break; + case 1: + gBerryBlenderData->framesToWait -= 10; + if (gBerryBlenderData->framesToWait < 0) + { + gBerryBlenderData->framesToWait = 0; + gBerryBlenderData->field_0++; + } + break; + case 2: + if (++gBerryBlenderData->framesToWait > 20) + { + for (i = 0; i < 3; i++) + DestroySprite(&gSprites[gBerryBlenderData->scoreIconIDs[i]]); + gBerryBlenderData->framesToWait = 0; + gBerryBlenderData->field_0++; + } + break; + case 3: + { + u8* textPtr; + u16 secondsPassed, minutes, seconds; + + MenuDrawTextWindow(4, 2, 25, 17); + sub_8072BD8(gOtherText_ResultsOfBlending, 5, 3, 160); + for (i = 0; i < gBerryBlenderData->playersNo; i++) + { + u8 place = gBerryBlenderData->playerPlaces[i]; + textPtr = text[0]; + + StringCopy(textPtr, gBerryBlenderData->blendedBerries[place].name); + ConvertInternationalString(textPtr, gLinkPlayers[place].language); +#ifdef ENGLISH + StringAppend(textPtr, gOtherText_Berry); +#else + de_sub_8073174(textPtr, gOtherText_Berry); +#endif + textPtr = gBerryBlenderData->stringVar; + textPtr = ConvertIntToDecimalString(textPtr, i + 1); + textPtr[0] = CHAR_SPACE; + textPtr[1] = CHAR_PERIOD; + textPtr[2] = CHAR_SPACE; + textPtr += 3; + textPtr = sub_8072C74(textPtr, gLinkPlayers[place].name, 88, 0); + sub_8072C74(textPtr, text[0], 157, 0); + MenuPrint(gBerryBlenderData->stringVar, 5, gUnknown_082165E9[gBerryBlenderData->playersNo] + (i * gUnknown_082165EE[gBerryBlenderData->playersNo])); + } + ConvertIntToDecimalStringN(text[0], gBerryBlenderData->max_RPM % 100, 2, 2); + textPtr = gBerryBlenderData->stringVar; + textPtr = StringCopy(textPtr, gOtherText_MaxSpeed); + textPtr = sub_8072C14(textPtr, gBerryBlenderData->max_RPM / 100, 121, 1); + +#ifdef ENGLISH + textPtr[0] = CHAR_SPACE; + textPtr[1] = CHAR_PERIOD; + textPtr[2] = CHAR_SPACE; + textPtr += 3; + textPtr = sub_8072C74(textPtr, text[0], 142, 1); +#else + *textPtr++ = CHAR_COMMA; + textPtr = sub_8072C74(textPtr, text[0], 136, 1); +#endif + StringCopy(textPtr, gOtherText_RPM); + MenuPrint(gBerryBlenderData->stringVar, 5, 13); + + secondsPassed = gBerryBlenderData->gameFrameTime / 60; + seconds = secondsPassed % 60; + minutes = secondsPassed / 60; + ConvertIntToDecimalStringN(text[0], minutes, 2, 2); + ConvertIntToDecimalStringN(text[1], seconds, 2, 2); + textPtr = gBerryBlenderData->stringVar; + textPtr = StringCopy(textPtr, gOtherText_RequiredTime); + +#ifdef ENGLISH + textPtr = sub_8072C74(textPtr, text[0], 102, 1); +#else + textPtr = sub_8072C74(textPtr, text[0], 99, 1); +#endif + textPtr = StringAppend(textPtr, gOtherText_Min); + + textPtr = sub_8072C74(textPtr, text[1], 136, 1); + StringCopy(textPtr, gOtherText_Sec); + + MenuPrint(gBerryBlenderData->stringVar, 5, 15); + + gBerryBlenderData->framesToWait = 0; + gBerryBlenderData->field_0++; + } + break; + case 4: + if (gMain.newKeys & A_BUTTON) + gBerryBlenderData->field_0++; + break; + case 5: + MenuZeroFillScreen(); + MenuDrawTextWindow(0, 14, 29, 19); + for (i = 0; i < BLENDER_MAX_PLAYERS; i++) + { + if (gBerryBlenderData->chosenItemID[i] != 0) + berryIDs[i] = gBerryBlenderData->chosenItemID[i] - 133; + } + sub_8050760(); + Blender_CalculatePokeblock(gBerryBlenderData->blendedBerries, &pokeblock, gBerryBlenderData->playersNo, flavours, gBerryBlenderData->max_RPM); + Blender_PrintMadePokeblockString(&pokeblock, gBerryBlenderData->stringVar); + CreateTask(sub_8052BD0, 6); + MenuPrintMessage(gBerryBlenderData->stringVar, 1, 15); + RemoveBagItem(gScriptItemId, 1); + sub_810CA34(&pokeblock); + gBerryBlenderData->field_0++; + break; + case 6: + if (MenuUpdateWindowText()) + { + Blender_TrySettingRecord(); + return TRUE; + } + break; + } + return FALSE; +} + +static void Blender_PrintMadePokeblockString(struct Pokeblock* pokeblock, u8* dst) +{ + u8 text[12]; + u8 flavourLvl, feel; + + dst[0] = EOS; + StringCopy(dst, gPokeblockNames[pokeblock->color]); +#ifdef ENGLISH + StringAppend(dst, gOtherText_PokeBlockMade); +#else + de_sub_8073174(dst, gOtherText_PokeBlockMade); +#endif + StringAppend(dst, sNewLineString_0); + + flavourLvl = sub_810C9B0(pokeblock); + feel = sub_810C9E8(pokeblock); + + StringAppend(dst, gOtherText_BlockLevelIs); + ConvertIntToDecimalStringN(text, flavourLvl, 0, 3); + StringAppend(dst, text); + + StringAppend(dst, gOtherText_BlockFeelIs); + ConvertIntToDecimalStringN(text, feel, 0, 3); + StringAppend(dst, text); + + StringAppend(dst, gOtherText_Period); + StringAppend(dst, gUnknown_08216249); +} + +static void Blender_SortBasedOnPoints(u8* places, u8 playersNum, u32* scores) +{ + s32 i, j; + for (i = 0; i < playersNum; i++) + { + for (j = 0; j < playersNum; j++) + { + if (scores[places[i]] > scores[places[j]]) + { + u8 temp = places[i]; + places[i] = places[j]; + places[j] = temp; + } + } + } +} + +static void Blender_SortScores(void) +{ + u8 i; + u8 places[4]; + u32 points[4]; + + for (i = 0; i < gBerryBlenderData->playersNo; i++) + places[i] = i; + for (i = 0; i < gBerryBlenderData->playersNo; i++) + { + points[i] = 1000000 * gBerryBlenderData->scores[i][BLENDER_SCORE_BEST]; + points[i] += 1000 * gBerryBlenderData->scores[i][BLENDER_SCORE_GOOD]; + points[i] += 1000 - gBerryBlenderData->scores[i][BLENDER_SCORE_MISS]; + } + Blender_SortBasedOnPoints(places, gBerryBlenderData->playersNo, points); + for (i = 0; i < gBerryBlenderData->playersNo; i++) + gBerryBlenderData->playerPlaces[i] = places[i]; +} + +static bool8 Blender_PrintBlendingRanking(void) +{ + u16 i; + switch (gBerryBlenderData->field_0) + { + case 0: + gBerryBlenderData->field_0++; + gBerryBlenderData->framesToWait = 255; + break; + case 1: + gBerryBlenderData->framesToWait -= 10; + if (gBerryBlenderData->framesToWait < 0) + { + gBerryBlenderData->framesToWait = 0; + gBerryBlenderData->field_0++; + } + break; + case 2: + if (++gBerryBlenderData->framesToWait > 20) + { + gBerryBlenderData->framesToWait = 0; + gBerryBlenderData->field_0++; + } + break; + case 3: + MenuDrawTextWindow(4, 2, 25, 17); + sub_8072BD8(gOtherText_Ranking, 5, 3, 160); + + gBerryBlenderData->scoreIconIDs[BLENDER_SCORE_BEST] = CreateSprite(&sSpriteTemplate_821645C, 140, 52, 0); + gSprites[gBerryBlenderData->scoreIconIDs[BLENDER_SCORE_BEST]].callback = SpriteCallbackDummy; + StartSpriteAnim(&gSprites[gBerryBlenderData->scoreIconIDs[BLENDER_SCORE_BEST]], 3); + + gBerryBlenderData->scoreIconIDs[BLENDER_SCORE_GOOD] = CreateSprite(&sSpriteTemplate_821645C, 164, 52, 0); + gSprites[gBerryBlenderData->scoreIconIDs[BLENDER_SCORE_GOOD]].callback = SpriteCallbackDummy; + + gBerryBlenderData->scoreIconIDs[BLENDER_SCORE_MISS] = CreateSprite(&sSpriteTemplate_821645C, 188, 52, 0); + gSprites[gBerryBlenderData->scoreIconIDs[BLENDER_SCORE_MISS]].callback = SpriteCallbackDummy; + StartSpriteAnim(&gSprites[gBerryBlenderData->scoreIconIDs[BLENDER_SCORE_MISS]], 1); + + Blender_SortScores(); + + for (i = 0; i < gBerryBlenderData->playersNo; i++) + { + u8 place = gBerryBlenderData->playerPlaces[i]; + u8* txtPtr = gBerryBlenderData->stringVar; + + txtPtr[0] = EXT_CTRL_CODE_BEGIN; + txtPtr[1] = 0x13; + txtPtr[2] = 4; + txtPtr += 3; + + txtPtr = ConvertIntToDecimalString(txtPtr, i + 1); + + txtPtr[0] = CHAR_SPACE; + txtPtr[1] = CHAR_PERIOD; + txtPtr[2] = CHAR_SPACE; + txtPtr += 3; + + txtPtr = StringCopy(txtPtr, gLinkPlayers[place].name); + + txtPtr = sub_8072C14(txtPtr, gBerryBlenderData->scores[place][BLENDER_SCORE_BEST], 108, 1); + txtPtr = sub_8072C14(txtPtr, gBerryBlenderData->scores[place][BLENDER_SCORE_GOOD], 132, 1); + txtPtr = sub_8072C14(txtPtr, gBerryBlenderData->scores[place][BLENDER_SCORE_MISS], 156, 1); + + MenuPrint(gBerryBlenderData->stringVar, 5, i * gUnknown_082165F3[gBerryBlenderData->playersNo] + 8); + } + gBerryBlenderData->framesToWait = 0; + gBerryBlenderData->field_0++; + break; + case 4: + if (++gBerryBlenderData->framesToWait > 20) + gBerryBlenderData->field_0++; + break; + case 5: + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + gBerryBlenderData->field_0++; + } + break; + case 6: + gBerryBlenderData->field_0 = 0; + return TRUE; + } + return FALSE; +} + +// debug menu goes here + +void unref_sub_80524BC(void) +{ + ResetSpriteData(); + FreeAllSpritePalettes(); + ResetTasks(); + SetVBlankCallback(VBlankCB1_BerryBlender); + SetUpWindowConfig(&gWindowConfig_81E6CE4); + InitMenuWindow(&gWindowConfig_81E6CE4); + SeedRng(gMain.vblankCounter1); + REG_DISPCNT = 0x1540; + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); + sBlenderDebug.BPM = 8000; + sBlenderDebug.field_10++; + SetMainCallback2(sub_8052AF8); +} + +static void BlenderDebug_PrintBerryData(void) +{ + u8 text[128]; + u8 i; + + StringCopy(text, sText_BPM); + MenuPrint(text, 2, 0); + + ConvertIntToDecimalStringN(text, sBlenderDebug.BPM / 100, 2, 3); + MenuPrint(text, 6, 0); + + for (i = 0; i < 4; i++) + { + u8 var; + + if (sBlenderDebug.cursorPos == i) + { + text[0] = 0xEF; + CopyItemName(sBlenderDebug.berries[i] + 133, &text[1]); + } + else + { + CopyItemName(sBlenderDebug.berries[i] + 133, &text[0]); + text[6] = CHAR_SPACE; + text[7] = EOS; + } + var = (i * 3) + 3; + MenuPrint(text, 2, var); + + ConvertIntToDecimalStringN(&text[0], gBerries[sBlenderDebug.berries[i]].spicy, 2, 2); + StringAppend(text, sText_Space); + + ConvertIntToDecimalStringN(&text[3], gBerries[sBlenderDebug.berries[i]].dry, 2, 2); + StringAppend(text, sText_Space); + + ConvertIntToDecimalStringN(&text[6], gBerries[sBlenderDebug.berries[i]].sweet, 2, 2); + StringAppend(text, sText_Space); + + ConvertIntToDecimalStringN(&text[9], gBerries[sBlenderDebug.berries[i]].bitter, 2, 2); + StringAppend(text, sText_Space); + + ConvertIntToDecimalStringN(&text[12], gBerries[sBlenderDebug.berries[i]].sour, 2, 2); + StringAppend(text, sText_Space); + + ConvertIntToDecimalStringN(&text[15], gBerries[sBlenderDebug.berries[i]].smoothness, 2, 2); + + text[17] = EOS; + MenuPrint(text, 7, var); + } + if (sBlenderDebug.pokeblock.color != 0) + { + StringCopy(text, gPokeblockNames[sBlenderDebug.pokeblock.color]); + MenuPrint(text, 2, 15); + + ConvertIntToHexStringN(&text[0], sBlenderDebug.spicy, 2, 2); + StringAppend(text, sText_Space); + + ConvertIntToHexStringN(&text[3], sBlenderDebug.dry, 2, 2); + StringAppend(text, sText_Space); + + ConvertIntToHexStringN(&text[6], sBlenderDebug.sweet, 2, 2); + StringAppend(text, sText_Space); + + ConvertIntToHexStringN(&text[9], sBlenderDebug.bitter, 2, 2); + StringAppend(text, sText_Space); + + ConvertIntToHexStringN(&text[12], sBlenderDebug.sour, 2, 2); + StringAppend(text, sText_Space); + + ConvertIntToHexStringN(&text[15], sBlenderDebug.feel, 2, 2); + + text[17] = EOS; + MenuPrint(text, 7, 17); + } +} + +static void sub_80527BC(void) +{ + u8 text[70]; + u8 buffer[10]; + u16 i; + + if (gUnknown_020297DC == 1) + { + u16 j; + for (j = 0; j < 10; j++) + gUnknown_03004840[j] = 0; + gUnknown_03004830 = Random(); + gUnknown_020297E0 = 0; + gUnknown_020297DC = 2; + for (i = 0; i < 200; i++) + ewram[i] = 0; + gUnknown_020297E8 = 0; + } + for (i = 0; i < 100; i++) + { + if (((Random() >> 15) & 1) == gUnknown_020297E8) + gUnknown_020297E0++; + else + { + u16* ewramPtr = ((u16*)(ewram)); + ewramPtr[gUnknown_020297E4] = gUnknown_020297E0; + gUnknown_020297E4++; + gUnknown_020297E0 = 0; + gUnknown_020297E8 ^= 1; + } + } + text[0] = EOS; + + ConvertIntToHexStringN(buffer, gUnknown_03004830, 2, 8); + StringAppend(text, buffer); + StringAppend(text, sText_Space); + + ConvertIntToHexStringN(buffer, gUnknown_020297E0, 2, 8); + StringAppend(text, buffer); + StringAppend(text, sNewLineString_1); + + if (gUnknown_020297DC == 3) + { + ConvertIntToHexStringN(buffer, gUnknown_020297E4, 2, 16); + StringAppend(text, buffer); + gUnknown_020297DC = 0; + } + + MenuPrint(text, 2, 15); +} + +static void sub_8052918(void) +{ + if (gMain.newKeys & R_BUTTON) + { + sBlenderDebug.BPM += 1000; + if (sBlenderDebug.BPM > 30000) + sBlenderDebug.BPM = 1000; + sBlenderDebug.field_10++; + } + if (gMain.newKeys & L_BUTTON) + { + sBlenderDebug.BPM -= 1000; + if (sBlenderDebug.BPM < 0) + sBlenderDebug.BPM = 30000; + sBlenderDebug.field_10++; + } + if (gMain.newKeys & DPAD_UP) + { + sBlenderDebug.cursorPos -= 1; + if (sBlenderDebug.cursorPos < 0) + sBlenderDebug.cursorPos = 3; + sBlenderDebug.field_10++; + } + if (gMain.newKeys & DPAD_DOWN) + { + sBlenderDebug.cursorPos += 1; + if (sBlenderDebug.cursorPos > 3) + sBlenderDebug.cursorPos = 0; + sBlenderDebug.field_10++; + } + if (gMain.newKeys & DPAD_LEFT) + { + if (--sBlenderDebug.berries[sBlenderDebug.cursorPos] < 0) + sBlenderDebug.berries[sBlenderDebug.cursorPos] = 42; + sBlenderDebug.field_10++; + } + if (gMain.newKeys & DPAD_RIGHT) + { + if (++sBlenderDebug.berries[sBlenderDebug.cursorPos] > 42) + sBlenderDebug.berries[sBlenderDebug.cursorPos] = 0; + sBlenderDebug.field_10++; + } + if (gMain.newKeys & A_BUTTON) + { + u16 berryIDs[4]; + struct BlenderBerry berries[4]; + + u16 i, notEnigma = 0; + for (i = 0; i < 4; i++) + { + if (sBlenderDebug.berries[i] != 42) + { + notEnigma++; + berryIDs[i] = sBlenderDebug.berries[i]; + Blender_CopyBerryData(&berries[i], sBlenderDebug.berries[i] + 133); + } + else + break; + } + if (notEnigma > 1) + { + BlenderDebug_CalculatePokeblock(berries, &sBlenderDebug.pokeblock, notEnigma, &sBlenderDebug.spicy, sBlenderDebug.BPM); + sBlenderDebug.field_10++; + } + else + sBlenderDebug.pokeblock.color = 0xFF; + } + if (sBlenderDebug.field_10) + { + BlenderDebug_PrintBerryData(); + sBlenderDebug.field_10 = 0; + } + if (gMain.newKeys & SELECT_BUTTON && gUnknown_020297DC == 0) + { + gUnknown_020297DC++; + gUnknown_020297E0 = 0; + SeedRng(gMain.vblankCounter1); + } + if (gUnknown_020297DC != 0) + sub_80527BC(); +} + +static void sub_8052AF8(void) +{ + sub_8052918(); + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +// debug menu ends +// blender record window begins + +void ShowBerryBlenderRecordWindow(void) +{ + u8 text[30]; + s32 i; + + MenuDrawTextWindow(6, 3, 23, 16); + MenuPrint(gMultiText_BerryBlenderMaxSpeedRecord, 8, 4); + MenuPrint(gMultiText_2P3P4P, 8, 9); + + for (i = 0; i < 3; i++) + { + u32 record = gSaveBlock1.berryBlenderRecords[i]; + u8* txtPtr = sub_8072C14(text, record / 100, 18, 1); + +#ifdef ENGLISH + txtPtr[0] = CHAR_SPACE; + txtPtr[1] = CHAR_PERIOD; + txtPtr[2] = CHAR_SPACE; + txtPtr += 3; +#else + *txtPtr++ = CHAR_COMMA; +#endif + + txtPtr = ConvertIntToDecimalStringN(txtPtr, record % 100, 2, 2); + StringAppend(txtPtr, gOtherText_RPM); + MenuPrint(text, 15, i * 2 + 9); + } +} + +static void sub_8052BD0(u8 taskID) +{ + if (gTasks[taskID].data[0] == 0) + { + PlayFanfare(BGM_FANFA1); + gTasks[taskID].data[0]++; + } + if (IsFanfareTaskInactive()) + { + PlayBGM(gBerryBlenderData->field_178); + DestroyTask(taskID); + } +} diff --git a/src/contest_painting.c b/src/scene/contest_painting.c similarity index 96% rename from src/contest_painting.c rename to src/scene/contest_painting.c index d75947e05..3662efdec 100644 --- a/src/contest_painting.c +++ b/src/scene/contest_painting.c @@ -14,18 +14,20 @@ #include "unknown_task.h" extern u8 unk_2000000[]; -extern u8 gUnknown_03000750; -extern u16 gUnknown_03000752; -extern u16 gUnknown_03000754; -extern u16 (*gUnknown_03005E10)[][32]; -extern u8 gUnknown_03005E40[]; -extern u16 (*gUnknown_03005E90)[]; + +static u8 gUnknown_03000750; +static u16 gUnknown_03000752; +static u16 gUnknown_03000754; +static u8 gUnknown_03000756; + +u16 (*gUnknown_03005E10)[][32]; +struct Unk03005E20 gUnknown_03005E20; +u8 gUnknown_03005E40[0x4C]; +struct ContestEntry *gUnknown_03005E8C; +u16 (*gUnknown_03005E90)[]; extern struct ContestEntry unk_2015de0; extern struct Unk2015E00 unk_2015e00; -extern struct Unk3000756 gUnknown_03000756; -extern struct Unk03005E20 gUnknown_03005E20; -extern struct ContestEntry *gUnknown_03005E8C; static const u16 gPictureFramePalettes[][16] = { @@ -220,7 +222,7 @@ static void HoldContestPainting(void) case 0: if (!gPaletteFade.active) gUnknown_03000750 = 1; - if (gUnknown_03000756.var_0 != 0 && gUnknown_03000754 != 0) + if (gUnknown_03000756 != 0 && gUnknown_03000754 != 0) gUnknown_03000754--; break; case 1: @@ -231,13 +233,13 @@ static void HoldContestPainting(void) gUnknown_03000750 = two; BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); } - if (gUnknown_03000756.var_0 != 0) + if (gUnknown_03000756 != 0) gUnknown_03000754 = 0; break; case 2: if (!gPaletteFade.active) SetMainCallback2(CB2_QuitContestPainting); - if (gUnknown_03000756.var_0 != 0 && gUnknown_03000754 <= 0x1D) + if (gUnknown_03000756 != 0 && gUnknown_03000754 <= 0x1D) gUnknown_03000754++; break; } @@ -311,13 +313,13 @@ static void ContestPaintingInitVars(bool8 arg0) { if (arg0 == FALSE) { - gUnknown_03000756.var_0 = FALSE; + gUnknown_03000756 = FALSE; gUnknown_03000752 = 0; gUnknown_03000754 = 0; } else { - gUnknown_03000756.var_0 = TRUE; + gUnknown_03000756 = TRUE; gUnknown_03000752 = 15; gUnknown_03000754 = 30; } @@ -325,7 +327,7 @@ static void ContestPaintingInitVars(bool8 arg0) static void ContestPaintingMosaic(void) { - if (gUnknown_03000756.var_0 == FALSE) + if (gUnknown_03000756 == FALSE) { REG_MOSAIC = 0; return; @@ -351,7 +353,7 @@ static void sub_8106AC4(u16 species, u8 arg1) void *pal; // Unsure what gUnknown_03005E8C->var0 is supposed to be. - pal = species_and_otid_get_pal(species, gUnknown_03005E8C->var4, gUnknown_03005E8C->var0); + pal = GetMonSpritePalFromOtIdPersonality(species, gUnknown_03005E8C->var4, gUnknown_03005E8C->var0); LZDecompressVram(pal, gUnknown_03005E90); if (arg1 == 1) @@ -400,7 +402,7 @@ static void sub_8106AC4(u16 arg0, u8 arg2) ldr r1, [r0, 0x4]\n\ ldr r2, [r0]\n\ adds r0, r6, 0\n\ - bl species_and_otid_get_pal\n\ + bl GetMonSpritePalFromOtIdPersonality\n\ ldr r1, _08106B2C @ =gUnknown_03005E90\n\ mov r8, r1\n\ ldr r1, [r1]\n\ diff --git a/src/credits.c b/src/scene/credits.c similarity index 91% rename from src/credits.c rename to src/scene/credits.c index 8ec126a41..cf10137c1 100644 --- a/src/credits.c +++ b/src/scene/credits.c @@ -177,14 +177,15 @@ extern u16 unk_201f800[]; extern struct SpriteTemplate gUnknown_02024E8C; -extern s16 gUnknown_02039320; -extern u16 gUnknown_02039322; // TASK A -extern u8 gUnknown_02039324; -extern u8 gUnknown_02039325; extern u16 gUnknown_02039358; extern s16 gUnknown_0203935A; extern s16 gUnknown_0203935C; +static EWRAM_DATA s16 gUnknown_02039320 = 0; +static EWRAM_DATA u16 gUnknown_02039322 = 0; // TASK A +EWRAM_DATA u8 gUnknown_02039324 = 0; +static EWRAM_DATA u8 gUnknown_02039325 = 0; + extern u8 gReservedSpritePaletteCount; // data/hall_of_fame @@ -250,27 +251,17 @@ static void sub_814395C(void) BuildOamBuffer(); UpdatePaletteFade(); - if (!(gMain.heldKeys & B_BUTTON)) + if ((gMain.heldKeys & B_BUTTON) + && gUnknown_02039324 != 0 + && gTasks[gUnknown_02039322].func == task_a_8143B68) { - return; + vblank_8143948(); + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); + gUnknown_02039325 = 1; } - - if (!gUnknown_02039324) - { - return; - } - - if (gTasks[gUnknown_02039322].func != task_a_8143B68) - { - return; - } - - vblank_8143948(); - RunTasks(); - AnimateSprites(); - BuildOamBuffer(); - UpdatePaletteFade(); - gUnknown_02039325 = 1; } void sub_81439D0(void) @@ -296,9 +287,7 @@ void sub_81439D0(void) while (TRUE) { if (sub_8144ECC(0, taskIdA)) - { break; - } } taskIdC = gTasks[taskIdA].data[TDA_TASK_C_ID]; @@ -344,12 +333,8 @@ void sub_81439D0(void) static void task_a_8143B38(u8 taskIdA) { - if (gPaletteFade.active) - { - return; - } - - gTasks[taskIdA].func = task_a_8143B68; + if (!gPaletteFade.active) + gTasks[taskIdA].func = task_a_8143B68; } static void task_a_8143B68(u8 taskIdA) @@ -389,14 +374,12 @@ static void task_a_8143B68(u8 taskIdA) static void task_a_8143BFC(u8 taskIdA) { - if (gPaletteFade.active) + if (!gPaletteFade.active) { - return; + REG_DISPCNT = 0; + sub_81450AC(taskIdA); + gTasks[taskIdA].func = task_a_80C9BFC; } - - REG_DISPCNT = 0; - sub_81450AC(taskIdA); - gTasks[taskIdA].func = task_a_80C9BFC; } static void task_a_80C9BFC(u8 taskIdA) @@ -405,33 +388,29 @@ static void task_a_80C9BFC(u8 taskIdA) SetVBlankCallback(NULL); - if (!sub_8144ECC(gTasks[taskIdA].data[TDA_7], taskIdA)) + if (sub_8144ECC(gTasks[taskIdA].data[TDA_7], taskIdA)) { - return; + BeginNormalPaletteFade(-1, 0, 16, 0, 0); + + backup = REG_IME; + REG_IME = 0; + REG_IE |= INTR_FLAG_VBLANK; + REG_IME = backup; + REG_DISPSTAT |= DISPSTAT_VBLANK_INTR; + + SetVBlankCallback(vblank_8143948); + gTasks[taskIdA].func = task_a_8143B38; } - - BeginNormalPaletteFade(-1, 0, 16, 0, 0); - - backup = REG_IME; - REG_IME = 0; - REG_IE |= INTR_FLAG_VBLANK; - REG_IME = backup; - REG_DISPSTAT |= DISPSTAT_VBLANK_INTR; - - SetVBlankCallback(vblank_8143948); - gTasks[taskIdA].func = task_a_8143B38; } static void task_a_8143CC0(u8 taskIdA) { - if (gPaletteFade.active) + if (!gPaletteFade.active) { - return; + REG_DISPCNT = 0; + sub_81450AC(taskIdA); + gTasks[taskIdA].func = task_a_8143D04; } - - REG_DISPCNT = 0; - sub_81450AC(taskIdA); - gTasks[taskIdA].func = task_a_8143D04; } void task_a_8143D04(u8 taskIdA) @@ -501,13 +480,11 @@ static void task_a_8143EBC(u8 taskIdA) static void task_a_8143F04(u8 taskIdA) { - if (gPaletteFade.active) + if (!gPaletteFade.active) { - return; + sub_81450AC(taskIdA); + gTasks[taskIdA].func = task_a_8143F3C; } - - sub_81450AC(taskIdA); - gTasks[taskIdA].func = task_a_8143F3C; } static void task_a_8143F3C(u8 taskIdA) @@ -547,62 +524,52 @@ static void task_a_8143FDC(u8 taskIdA) static void task_a_8144024(u8 taskIdA) { - if (gPaletteFade.active) + if (!gPaletteFade.active) { - return; + sub_81452D0(0x3800, 0); + + BeginNormalPaletteFade(-1, 0, 0, 0, 0); + gTasks[taskIdA].data[TDA_0] = 7200; + gTasks[taskIdA].func = task_a_8144080; } - - sub_81452D0(0x3800, 0); - - BeginNormalPaletteFade(-1, 0, 0, 0, 0); - gTasks[taskIdA].data[TDA_0] = 7200; - gTasks[taskIdA].func = task_a_8144080; } static void task_a_8144080(u8 taskIdA) { - if (gPaletteFade.active) + if (!gPaletteFade.active) { - return; - } + if (gTasks[taskIdA].data[TDA_0] == 0) + { + FadeOutBGM(4); + BeginNormalPaletteFade(-1, 8, 0, 16, 0xFFFF); + gTasks[taskIdA].func = task_a_8144114; + return; + } - if (gTasks[taskIdA].data[TDA_0] == 0) - { - FadeOutBGM(4); - BeginNormalPaletteFade(-1, 8, 0, 16, 0xFFFF); - gTasks[taskIdA].func = task_a_8144114; - return; - } + if (gMain.newKeys) + { + FadeOutBGM(4); + BeginNormalPaletteFade(-1, 8, 0, 16, 0xFFFF); + gTasks[taskIdA].func = task_a_8144114; + return; + } - if (gMain.newKeys) - { - FadeOutBGM(4); - BeginNormalPaletteFade(-1, 8, 0, 16, 0xFFFF); - gTasks[taskIdA].func = task_a_8144114; - return; - } + if (gTasks[taskIdA].data[TDA_0] == 7144) + { + FadeOutBGM(8); + } - if (gTasks[taskIdA].data[TDA_0] == 7144) - { - FadeOutBGM(8); - } + if (gTasks[taskIdA].data[TDA_0] == 6840) + m4aSongNumStart(BGM_END); - if (gTasks[taskIdA].data[TDA_0] == 6840) - { - m4aSongNumStart(BGM_END); + gTasks[taskIdA].data[TDA_0] -= 1; } - - gTasks[taskIdA].data[TDA_0] -= 1; } static void task_a_8144114(u8 taskIdA) { - if (gPaletteFade.active) - { - return; - } - - SoftReset(0xFF); + if (!gPaletteFade.active) + SoftReset(0xFF); } static void sub_8144130(void) @@ -639,38 +606,30 @@ static void task_b_81441B8(u8 taskIdB) case 8: case 9: default: - if (gPaletteFade.active) + if (!gPaletteFade.active) { - return; + gTasks[taskIdB].data[TDB_0] = 1; + gTasks[taskIdB].data[TDB_3] = 0x58; + gTasks[gTasks[taskIdB].data[TDB_TASK_A_ID]].data[TDA_14] = 0; + gUnknown_02039320 = 0; } - gTasks[taskIdB].data[TDB_0] = 1; - gTasks[taskIdB].data[TDB_3] = 0x58; - gTasks[gTasks[taskIdB].data[TDB_TASK_A_ID]].data[TDA_14] = 0; - gUnknown_02039320 = 0; return; - case 1: if (gTasks[taskIdB].data[TDB_3] != 0) { gTasks[taskIdB].data[TDB_3] -= 1; return; } - gTasks[taskIdB].data[TDB_0] += 1; return; - case 2: REG_DISPCNT &= ~DISPCNT_BG0_ON; - if (gTasks[gTasks[taskIdB].data[TDB_TASK_A_ID]].func == task_a_8143B68) { if (gTasks[taskIdB].data[TDB_CURRENT_PAGE] < PAGE_COUNT) { - for (i = 0; i < 5; i++) - { sub_8072BD8(gCreditsEntryPointerTable[gTasks[taskIdB].data[TDB_CURRENT_PAGE]][i]->text, 0, 9 + i * 2, 240); - } gTasks[taskIdB].data[TDB_CURRENT_PAGE] += 1; gTasks[taskIdB].data[TDB_0] += 1; @@ -678,36 +637,24 @@ static void task_b_81441B8(u8 taskIdB) gTasks[gTasks[taskIdB].data[TDB_TASK_A_ID]].data[TDA_14] = 1; if (gTasks[gTasks[taskIdB].data[TDB_TASK_A_ID]].data[TDA_13] == 1) - { BeginNormalPaletteFade(0x300, 0, 16, 0, COLOR_LIGHT_GREEN); - } else - { BeginNormalPaletteFade(0x300, 0, 16, 0, COLOR_DARK_GREEN); - } return; } - - gTasks[taskIdB].data[TDB_0] = 10; return; } - gTasks[gTasks[taskIdB].data[TDB_TASK_A_ID]].data[TDA_14] = 0; return; - case 3: REG_DISPCNT |= DISPCNT_BG0_ON; - - if (gPaletteFade.active) + if (!gPaletteFade.active) { - return; + gTasks[taskIdB].data[TDB_3] = UNK_DEFINE_82; + gTasks[taskIdB].data[TDB_0] += 1; } - - gTasks[taskIdB].data[TDB_3] = UNK_DEFINE_82; - gTasks[taskIdB].data[TDB_0] += 1; return; - case 4: if (gTasks[taskIdB].data[TDB_3] != 0) { @@ -720,28 +667,18 @@ static void task_b_81441B8(u8 taskIdB) gTasks[taskIdB].data[TDB_0] += 1; return; } - gTasks[taskIdB].data[TDB_0] += 1; - if (gTasks[gTasks[taskIdB].data[TDB_TASK_A_ID]].data[TDA_13] == 1) - { BeginNormalPaletteFade(0x300, 0, 0, 16, COLOR_LIGHT_GREEN); - } else - { BeginNormalPaletteFade(0x300, 0, 0, 16, COLOR_DARK_GREEN); - } - return; - case 5: - if (gPaletteFade.active) + if (!gPaletteFade.active) { - return; + MenuZeroFillWindowRect(0, 9, 29, 19); + gTasks[taskIdB].data[TDB_0] = 2; } - - MenuZeroFillWindowRect(0, 9, 29, 19); - gTasks[taskIdB].data[TDB_0] = 2; return; case 10: @@ -962,14 +899,11 @@ void task_e_8144934(u8 taskIdE) gTasks[taskIdE].data[TDE_1] = 0x7FFF; } } - sub_8149020(0); break; - case 1: sub_8149020(0); break; - case 2: if (gTasks[taskIdE].data[TDE_1] != 0x7FFF) { @@ -984,7 +918,6 @@ void task_e_8144934(u8 taskIdE) } sub_8149020(1); break; - case 3: if (gTasks[taskIdE].data[TDE_1] != 0x7FFF) { @@ -999,10 +932,8 @@ void task_e_8144934(u8 taskIdE) gTasks[taskIdE].data[TDE_1] += 1; } } - sub_8149020(1); break; - case 4: sub_8149020(2); break; @@ -1024,7 +955,6 @@ static void sub_8144A68(u8 data, u8 taskIdA) gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].data0 = 0; gTasks[taskIdA].data[TDA_0] = sub_8148EC0(0, 0x2000, 0x20, 8); break; - case 1: gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].invisible = 0; gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].invisible = 0; @@ -1036,7 +966,6 @@ static void sub_8144A68(u8 data, u8 taskIdA) gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].data0 = 0; gTasks[taskIdA].data[TDA_0] = sub_8148EC0(0, 0x2000, 0x20, 8); break; - case 2: gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].invisible = 0; gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].invisible = 0; @@ -1048,7 +977,6 @@ static void sub_8144A68(u8 data, u8 taskIdA) gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].data0 = 0; gTasks[taskIdA].data[TDA_0] = sub_8148EC0(1, 0x2000, 0x200, 8); break; - case 3: gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].invisible = 0; gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].invisible = 0; @@ -1060,7 +988,6 @@ static void sub_8144A68(u8 data, u8 taskIdA) gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].data0 = 0; gTasks[taskIdA].data[TDA_0] = sub_8148EC0(1, 0x2000, 0x200, 8); break; - case 4: gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].invisible = 0; gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].invisible = 0; @@ -1087,9 +1014,7 @@ static void sub_8144A68(u8 data, u8 taskIdA) gTasks[gTasks[taskIdA].data[TDA_TASK_C_ID]].data[TDC_4] = 0; if (data == 2) - { gTasks[gTasks[taskIdA].data[TDA_TASK_C_ID]].data[TDC_5] = UNK_DEFINE_45; - } } static bool8 sub_8144ECC(u8 data, u8 taskIdA) @@ -1113,14 +1038,12 @@ static bool8 sub_8144ECC(u8 data, u8 taskIdA) FreeAllSpritePalettes(); gMain.state = 1; break; - case 1: gUnknown_02039358 = 34; gUnknown_0203935A = 0; sub_8148CB0(data); gMain.state += 1; break; - case 2: if (gSaveBlock2.playerGender == MALE) { @@ -1156,17 +1079,14 @@ static bool8 sub_8144ECC(u8 data, u8 taskIdA) gSprites[spriteId].callback = spritecb_rival_8145420; gSprites[spriteId].anims = gSpriteAnimTable_0840CA94; }; - gMain.state += 1; break; - case 3: sub_8144A68(data, taskIdA); sub_8148E90(data); gMain.state = 0; return TRUE; } - return FALSE; } @@ -1199,7 +1119,8 @@ static void sub_81450AC(u8 taskIdA) gUnknown_0203935C = 1; } -static void sub_8145128(u16 arg0, u16 arg1, u16 arg2) { +static void sub_8145128(u16 arg0, u16 arg1, u16 arg2) +{ u16 baseTile; u16 i; @@ -1209,65 +1130,45 @@ static void sub_8145128(u16 arg0, u16 arg1, u16 arg2) { baseTile = (arg2 / 16) << 12; for (i = 0; i < 32 * 32; i++) - { ((u16 *) (VRAM + arg1))[i] = baseTile + 1; - } for (i = 0; i < 21; i++) - { ((u16 *) (VRAM + arg1))[7 * 32 + 4 + i] = i + 2 + baseTile; - } for (i = 0; i < 20; i++) - { ((u16 *) (VRAM + arg1))[9 * 32 + 4 + i] = i + 23 + baseTile; - } for (i = 0; i < 23; i++) - { ((u16 *) (VRAM + arg1))[11 * 32 + 4 + i] = i + 43 + baseTile; - } for (i = 0; i < 12; i++) - { ((u16 *) (VRAM + arg1))[13 * 32 + 4 + i] = i + 66 + baseTile; - } } u16 sub_8145208(u8 arg0) { - u16 out = (arg0 & 0x3F) + 80; if (arg0 == 0xFF) - { return 1; - } if (arg0 & (1 << 7)) - { out |= 1 << 11; - } - if (arg0 & (1 << 6)) - { out |= 1 << 10; - } return out; } -void sub_814524C(u8 arg0[], u8 baseX, u8 baseY, u16 arg3, u16 palette) { +void sub_814524C(u8 arg0[], u8 baseX, u8 baseY, u16 arg3, u16 palette) +{ u8 y, x; - const u16 tileOffset = (palette / 16) << 12; for (y = 0; y < 5; y++) { for (x = 0; x < 3; x++) - { ((u16 *) (VRAM + arg3 + (baseY + y) * 64))[baseX + x] = tileOffset + sub_8145208(arg0[y * 3 + x]); - } } } @@ -1307,37 +1208,26 @@ static void spritecb_player_8145378(struct Sprite *sprite) case 0: StartSpriteAnimIfDifferent(sprite, 0); break; - case 1: StartSpriteAnimIfDifferent(sprite, 1); if (sprite->pos1.x > -32) - { sprite->pos1.x -= 1; - } break; - case 2: StartSpriteAnimIfDifferent(sprite, 2); break; - case 3: StartSpriteAnimIfDifferent(sprite, 3); break; - case 4: StartSpriteAnimIfDifferent(sprite, 0); if (sprite->pos1.x > 120) - { sprite->pos1.x -= 1; - } break; - case 5: StartSpriteAnimIfDifferent(sprite, 0); if (sprite->pos1.x > -32) - { sprite->pos1.x -= 1; - } break; } } @@ -1356,49 +1246,31 @@ static void spritecb_rival_8145420(struct Sprite *sprite) sprite->pos2.y = 0; StartSpriteAnimIfDifferent(sprite, 0); break; - case 1: if (sprite->pos1.x > 200) - { StartSpriteAnimIfDifferent(sprite, 1); - } else - { StartSpriteAnimIfDifferent(sprite, 2); - } - if (sprite->pos1.x > -32) - { sprite->pos1.x -= 2; - } - sprite->pos2.y = -gUnknown_0203935A; break; - case 2: sprite->data7 += 1; StartSpriteAnimIfDifferent(sprite, 0); - if ((sprite->data7 & 3) == 0) - { sprite->pos1.x += 1; - } break; - case 3: StartSpriteAnimIfDifferent(sprite, 0); - if (sprite->pos1.x > -32) - { sprite->pos1.x -= 1; - } break; - - } } -void spritecb_81454E0(struct Sprite *sprite) { +void spritecb_81454E0(struct Sprite *sprite) +{ if (gUnknown_0203935C) { DestroySprite(sprite); @@ -1417,7 +1289,6 @@ void spritecb_81454E0(struct Sprite *sprite) { sprite->invisible = FALSE; sprite->data0 = 1; break; - case 1: if (sprite->data2 < 256) { @@ -1432,23 +1303,18 @@ void spritecb_81454E0(struct Sprite *sprite) { { case 1: if ((sprite->data7 & 3) == 0) - { sprite->pos1.y += 1; - } sprite->pos1.x -= 2; break; case 2: break; case 3: if ((sprite->data7 & 3) == 0) - { sprite->pos1.y += 1; - } sprite->pos1.x += 2; break; } break; - case 2: if (sprite->data3 != 0) { @@ -1463,7 +1329,6 @@ void spritecb_81454E0(struct Sprite *sprite) { sprite->data0 += 1; } break; - case 3: if (sprite->data3 != 0) { @@ -1482,13 +1347,11 @@ void spritecb_81454E0(struct Sprite *sprite) { sprite->data0 = 10; } break; - case 10: REG_BLDCNT = 0; REG_BLDALPHA = 0; DestroySprite(sprite); break; - } } @@ -1500,17 +1363,14 @@ static u8 sub_81456B4(u16 species, u16 x, u16 y, u16 position) u8 spriteId2; species = NationalPokedexNumToSpecies(species); - switch (species) { default: personality = 0; break; - case SPECIES_SPINDA: personality = gSaveBlock2.pokedex.spindaPersonality; break; - case SPECIES_UNOWN: personality = gSaveBlock2.pokedex.unownPersonality; break; @@ -1527,7 +1387,7 @@ static u8 sub_81456B4(u16 species, u16 x, u16 y, u16 position) 1 ); - lzPaletteData = species_and_otid_get_pal(species, 0, 0xFFFF); + lzPaletteData = GetMonSpritePalFromOtIdPersonality(species, 0, 0xFFFF); LoadCompressedPalette(lzPaletteData, 0x100 + (position * 16), 0x20); sub_8143648(position, position); @@ -1562,7 +1422,8 @@ void spritecb_814580C(struct Sprite *sprite) sprite->pos1.y = gSprites[sprite->data0].pos1.y; } -static void sub_81458DC(void) { +static void sub_81458DC(void) +{ struct Unk201C000 *unk201C000 = &ewram1c000; u16 starter = SpeciesToNationalPokedexNum(GetStarterPokemon(VarGet(VAR_FIRST_POKE))); u16 seenTypesCount; @@ -1572,7 +1433,7 @@ static void sub_81458DC(void) { for (dexNum = 1, seenTypesCount = 0; dexNum < 386; dexNum++) { - if (GetNationalPokedexFlag(dexNum, 1)) + if (GetSetPokedexFlag(dexNum, 1)) { unk201C000->unk90[seenTypesCount] = dexNum; seenTypesCount++; @@ -1580,19 +1441,13 @@ static void sub_81458DC(void) { } for (dexNum = seenTypesCount; dexNum < 386; dexNum++) - { unk201C000->unk90[dexNum] = 0; - } unk201C000->unk394 = seenTypesCount; if (unk201C000->unk394 < POKEMON_TILE_COUNT) - { unk201C000->unk8E = seenTypesCount; - } else - { unk201C000->unk8E = POKEMON_TILE_COUNT; - } j = 0; do @@ -1625,7 +1480,6 @@ static void sub_81458DC(void) { } else { - for (dexNum = 0; unk201C000->unk0[dexNum] != starter && dexNum < POKEMON_TILE_COUNT; dexNum++); if (dexNum < unk201C000->unk8E - 1) @@ -1634,7 +1488,9 @@ static void sub_81458DC(void) { unk201C000->unk0[POKEMON_TILE_COUNT - 1] = starter; } else + { unk201C000->unk0[POKEMON_TILE_COUNT - 1] = starter; + } } unk201C000->unk8E = POKEMON_TILE_COUNT; } diff --git a/src/scene/cute_sketch.c b/src/scene/cute_sketch.c new file mode 100644 index 000000000..5317bc334 --- /dev/null +++ b/src/scene/cute_sketch.c @@ -0,0 +1,164 @@ +#include "global.h" +#include "cute_sketch.h" +#include "contest_painting.h" + +extern u16 (*gUnknown_03005DEC)[][32]; +extern u8 gUnknown_03005E00; +extern u8 gUnknown_03005DFC; +extern u8 gUnknown_03005DF8; +extern u8 gUnknown_03005DF0; +extern u8 gUnknown_03005E04; +extern u8 gUnknown_03005DF4; + +extern u8 gUnknown_03005DE8; + +// this file's functions +void sub_80FCAA4(void); +void sub_80FCB5C(void); +void sub_80FCD54(void); +void sub_80FCEA4(void); +void sub_80FCCBC(void); +void sub_80FD06C(void); +void sub_80FD114(void); +void sub_80FCF3C(void); +void sub_80FCAC4(void); +void sub_80FCC18(u8); +void sub_80FC92C(u8); +void sub_80FC9E4(u8); +void sub_80FD1C8(u16); +u16 sub_80FD39C(u16*); +u16 sub_80FD68C(u16*, u16*, u16*); + +void sub_80FC7A0(struct Unk03005E20* info) +{ + gUnknown_03005DEC = info->var_4; + gUnknown_03005E00 = info->var_1F; + gUnknown_03005DE8 = info->var_19; + gUnknown_03005DFC = info->var_1A; + gUnknown_03005DF8 = info->var_1B; + gUnknown_03005DF0 = info->var_1C; + gUnknown_03005E04 = info->var_1D; + gUnknown_03005DF4 = info->var_1E; + switch (info->var_0) + { + case 2: + sub_80FCAA4(); + break; + case 8: + sub_80FCB5C(); + break; + case 9: + sub_80FCD54(); + sub_80FCC18(gUnknown_03005E00); + break; + case 10: + sub_80FCD54(); + sub_80FCEA4(); + sub_80FCCBC(); + case 31: + sub_80FCEA4(); + break; + case 11: + sub_80FCD54(); + sub_80FD06C(); + sub_80FD06C(); + sub_80FD114(); + sub_80FCCBC(); + break; + case 13: + sub_80FCF3C(); + break; + case 30: + sub_80FCD54(); + break; + case 32: + sub_80FD06C(); + break; + case 33: + sub_80FD114(); + break; + case 6: + sub_80FCAC4(); + sub_80FC92C(3); + break; + case 36: + sub_80FCD54(); + sub_80FD06C(); + sub_80FD114(); + sub_80FCCBC(); + sub_80FCB5C(); + sub_80FCB5C(); + sub_80FC92C(2); + sub_80FC9E4(4); + break; + } +} + +#define RGB2(r, g, b) (((b) << 10) | ((g) << 5) | (r)) + +void sub_80FC92C(u8 a0) // it changes palette someway somehow... .__. +{ + u8 i, j; + for (i = 0; i < gUnknown_03005DF0; i++) + { + u16* var2 = &(*gUnknown_03005DEC)[0][(gUnknown_03005DFC + i) * gUnknown_03005E04]; + u16* pal = &var2[gUnknown_03005DE8]; + for (j = 0; j < gUnknown_03005DF8; j++, pal++) + { + if (!(0x8000 & *pal)) + { + u8 val = (31 & *pal); + val += a0; + if (val > 31) + val = 31; + + *pal = RGB2(val, val, val); + } + } + } +} + +void sub_80FC9E4(u8 a0) +{ + u8 i, j; + for (i = 0; i < gUnknown_03005DF0; i++) + { + u16* var2 = &(*gUnknown_03005DEC)[0][(gUnknown_03005DFC + i) * gUnknown_03005E04]; + u16* pal = &var2[gUnknown_03005DE8]; + for (j = 0; j < gUnknown_03005DF8; j++, pal++) + { + if (!(0x8000 & *pal)) + { + u8 val = (31 & *pal); + if (val > 31 - a0) + val = 31 - (a0 >> 1); + + *pal = RGB2(val, val, val); + } + } + } +} + +void sub_80FCAA4(void) +{ + u32 i; + for (i = 0; i < 3200; i++) + sub_80FD1C8(i); +} + +void sub_80FCAC4(void) +{ + u8 i, j; + for (i = 0; i < gUnknown_03005DF0; i++) + { + u16* var2 = &(*gUnknown_03005DEC)[0][(gUnknown_03005DFC + i) * gUnknown_03005E04]; + u16* pal = &var2[gUnknown_03005DE8]; + for (j = 0; j < gUnknown_03005DF8; j++, pal++) + { + if (!(0x8000 & *pal)) + { + *pal = sub_80FD39C(pal); + } + } + } +} diff --git a/src/scene/egg_hatch.c b/src/scene/egg_hatch.c new file mode 100644 index 000000000..032dcd284 --- /dev/null +++ b/src/scene/egg_hatch.c @@ -0,0 +1,862 @@ +#include "global.h" +#include "pokemon.h" +#include "items.h" +#include "decompress.h" +#include "data2.h" +#include "task.h" +#include "script.h" +#include "palette.h" +#include "overworld.h" +#include "main.h" +#include "event_data.h" +#include "sound.h" +#include "songs.h" +#include "text.h" +#include "text_window.h" +#include "string_util.h" +#include "strings2.h" +#include "menu.h" +#include "naming_screen.h" +#include "trig.h" +#include "rng.h" +#include "trade.h" + +extern u8 ewram[]; +extern struct SpriteTemplate gUnknown_02024E8C; + +struct EggHatchData +{ + u8 eggSpriteID; + u8 pokeSpriteID; + u8 CB2_state; + u8 CB2_PalCounter; + u8 eggPartyID; + struct Window window; + u8 tileDataStartOffset; + u8 unused_39; + u8 eggShardVelocityID; +}; + +struct EggHatchData* gEggHatchData; + +extern const u32 gUnknown_08D00000[]; +extern const u32 gUnknown_08D00524[]; +extern const u16 gUnknown_08D004E0[]; //palette +extern const struct SpriteSheet sUnknown_0820A3B0; +extern const struct SpriteSheet sUnknown_0820A3B8; +extern const struct SpritePalette sUnknown_0820A3C0; + +bool8 GetSetPokedexFlag(u16 nationalNum, u8 caseID); +u8* GetMonNick(struct Pokemon* mon, u8* dst); +u8 sav1_map_get_name(void); +const struct CompressedSpritePalette* GetMonSpritePalStruct(struct Pokemon* mon); //gets pokemon palette address +void sub_8080990(void); + +static void Task_EggHatch(u8 taskID); +static void CB2_EggHatch_0(void); +static void CB2_EggHatch_1(void); +static void SpriteCB_Egg_0(struct Sprite* sprite); +static void SpriteCB_Egg_1(struct Sprite* sprite); +static void SpriteCB_Egg_2(struct Sprite* sprite); +static void SpriteCB_Egg_3(struct Sprite* sprite); +static void SpriteCB_Egg_4(struct Sprite* sprite); +static void SpriteCB_Egg_5(struct Sprite* sprite); +static void SpriteCB_EggShard(struct Sprite* sprite); +static void EggHatchPrintMessage2(u8* src); +static void EggHatchPrintMessage1(u8* src); +static bool8 EggHatchUpdateWindowText(void); +static void CreateRandomEggShardSprite(void); +static void CreateEggShardSprite(u8 x, u8 y, s16 data1, s16 data2, s16 data3, u8 spriteAnimIndex); + +// graphics + +static const u16 sEggPalette[] = INCBIN_U16("graphics/pokemon/egg/palette.gbapal"); +static const u8 sEggHatchTiles[] = INCBIN_U8("graphics/misc/egg_hatch.4bpp"); +static const u8 sEggShardTiles[] = INCBIN_U8("graphics/misc/egg_shard.4bpp"); + +static const struct OamData sOamData_820A378 = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 2, + .tileNum = 0, + .priority = 1, + .paletteNum = 0, + .affineParam = 0, +}; + +static const union AnimCmd sSpriteAnim_820A380[] = +{ + ANIMCMD_FRAME(0, 5), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_820A388[] = +{ + ANIMCMD_FRAME(16, 5), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_820A390[] = +{ + ANIMCMD_FRAME(32, 5), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_820A398[] = +{ + ANIMCMD_FRAME(48, 5), + ANIMCMD_END +}; + +static const union AnimCmd *const sSpriteAnimTable_820A3A0[] = +{ + sSpriteAnim_820A380, + sSpriteAnim_820A388, + sSpriteAnim_820A390, + sSpriteAnim_820A398, +}; + +static const struct SpriteSheet sUnknown_0820A3B0 = +{ + .data = sEggHatchTiles, + .size = 2048, + .tag = 12345, +}; + +static const struct SpriteSheet sUnknown_0820A3B8 = +{ + .data = sEggShardTiles, + .size = 128, + .tag = 23456, +}; + +static const struct SpritePalette sUnknown_0820A3C0 = +{ + .data = sEggPalette, + .tag = 54321 +}; + +static const struct SpriteTemplate sSpriteTemplate_820A3C8 = +{ + .tileTag = 12345, + .paletteTag = 54321, + .oam = &sOamData_820A378, + .anims = sSpriteAnimTable_820A3A0, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy +}; + + +static const struct OamData sOamData_820A3E0 = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 0, + .tileNum = 0, + .priority = 2, + .paletteNum = 0, + .affineParam = 0, +}; + +static const union AnimCmd sSpriteAnim_820A3E8[] = +{ + ANIMCMD_FRAME(0, 5), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_820A3F0[] = +{ + ANIMCMD_FRAME(1, 5), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_820A3F8[] = +{ + ANIMCMD_FRAME(2, 5), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_820A400[] = +{ + ANIMCMD_FRAME(3, 5), + ANIMCMD_END +}; + +static const union AnimCmd *const sSpriteAnimTable_820A408[] = +{ + sSpriteAnim_820A3E8, + sSpriteAnim_820A3F0, + sSpriteAnim_820A3F8, + sSpriteAnim_820A400, +}; + +static const struct SpriteTemplate sSpriteTemplate_820A418 = +{ + .tileTag = 23456, + .paletteTag = 54321, + .oam = &sOamData_820A3E0, + .anims = sSpriteAnimTable_820A408, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCB_EggShard +}; + +// actual code + +static void CreatedHatchedMon(struct Pokemon *egg, struct Pokemon *temp) +{ + u16 species; + u32 personality, pokerus; + u8 i, friendship, language, gameMet, markings; + u16 moves[4]; + u32 ivs[6]; + + + species = GetMonData(egg, MON_DATA_SPECIES); + + for (i = 0; i < 4; i++) + { + moves[i] = GetMonData(egg, MON_DATA_MOVE1 + i); + } + + personality = GetMonData(egg, MON_DATA_PERSONALITY); + + for (i = 0; i < 6; i++) + { + ivs[i] = GetMonData(egg, MON_DATA_HP_IV + i); + } + + gameMet = GetMonData(egg, MON_DATA_MET_GAME); + markings = GetMonData(egg, MON_DATA_MARKINGS); + pokerus = GetMonData(egg, MON_DATA_POKERUS); + + CreateMon(temp, species, 5, 32, TRUE, personality, 0, 0); + + for (i = 0; i < 4; i++) + { + SetMonData(temp, MON_DATA_MOVE1 + i, (const u8 *) &moves[i]); + } + + for (i = 0; i < 6; i++) + { + SetMonData(temp, MON_DATA_HP_IV + i, (const u8 *) &ivs[i]); + } + + language = GAME_LANGUAGE; + SetMonData(temp, MON_DATA_LANGUAGE, &language); + SetMonData(temp, MON_DATA_MET_GAME, &gameMet); + SetMonData(temp, MON_DATA_MARKINGS, &markings); + + friendship = 120; + SetMonData(temp, MON_DATA_FRIENDSHIP, &friendship); + SetMonData(temp, MON_DATA_POKERUS, (const u8 *) &pokerus); + + *egg = *temp; +} + +static void AddHatchedMonToParty(u8 id) +{ + u8 isEgg; + u16 pokeNum; + u8 name[12]; + u16 ball; + u16 caughtLvl; + u8 mapNameID; + struct Pokemon* mon = &gPlayerParty[id]; + + CreatedHatchedMon(mon, &gEnemyParty[0]); + isEgg = 0; + SetMonData(mon, MON_DATA_IS_EGG, &isEgg); + + pokeNum = GetMonData(mon, MON_DATA_SPECIES); + GetSpeciesName(name, pokeNum); + SetMonData(mon, MON_DATA_NICKNAME, name); + + pokeNum = SpeciesToNationalPokedexNum(pokeNum); + GetSetPokedexFlag(pokeNum, 2); + GetSetPokedexFlag(pokeNum, 3); + + GetMonNick(mon, gStringVar1); + + ball = ITEM_POKE_BALL; + SetMonData(mon, MON_DATA_POKEBALL, (const u8*) &ball); + + caughtLvl = 0; + SetMonData(mon, MON_DATA_MET_LEVEL, (const u8*) &caughtLvl); + + mapNameID = sav1_map_get_name(); + SetMonData(mon, MON_DATA_MET_LOCATION, &mapNameID); + + MonRestorePP(mon); + CalculateMonStats(mon); +} + +void ScriptHatchMon(void) +{ + AddHatchedMonToParty(gSpecialVar_0x8004); +} + +#ifdef NONMATCHING +static bool8 sub_8042ABC(void* a, u8 b) +{ + +} + +#else +__attribute__((naked)) +static bool8 sub_8042ABC(void* a, u8 b) +{ + asm(".syntax unified\n\ + push {r4-r6,lr}\n\ + sub sp, 0x20\n\ + adds r5, r0, 0\n\ + lsls r4, r1, 24\n\ + lsrs r4, 24\n\ + lsls r0, r4, 2\n\ + adds r0, r4\n\ + lsls r0, 4\n\ + adds r0, r5, r0\n\ + mov r1, sp\n\ + bl GetBoxMonNick\n\ + lsls r0, r4, 3\n\ + subs r0, r4\n\ + lsls r1, r0, 3\n\ + adds r0, r5, r1\n\ + adds r0, 0xC0\n\ + ldrh r0, [r0]\n\ + cmp r0, 0\n\ + beq _08042B40\n\ + adds r0, r1, 0\n\ + adds r0, 0xA0\n\ + adds r5, r0\n\ + adds r6, r5, 0\n\ + adds r6, 0x2C\n\ + mov r0, sp\n\ + adds r1, r6, 0\n\ + bl StringCompareWithoutExtCtrlCodes\n\ + cmp r0, 0\n\ + bne _08042B08\n\ + ldr r0, _08042B30 @ =gSaveBlock2\n\ + adds r1, r5, 0\n\ + adds r1, 0x24\n\ + bl StringCompareWithoutExtCtrlCodes\n\ + cmp r0, 0\n\ + beq _08042B40\n\ +_08042B08:\n\ + ldr r0, _08042B34 @ =gStringVar1\n\ + mov r1, sp\n\ + bl StringCopy\n\ + ldr r4, _08042B38 @ =gStringVar2\n\ + adds r1, r5, 0\n\ + adds r1, 0x24\n\ + adds r0, r4, 0\n\ + bl StringCopy\n\ + ldr r0, _08042B3C @ =gStringVar3\n\ + adds r1, r6, 0\n\ + bl StringCopy\n\ + adds r0, r4, 0\n\ + bl SanitizeNameString\n\ + movs r0, 0x1\n\ + b _08042B42\n\ + .align 2, 0\n\ +_08042B30: .4byte gSaveBlock2\n\ +_08042B34: .4byte gStringVar1\n\ +_08042B38: .4byte gStringVar2\n\ +_08042B3C: .4byte gStringVar3\n\ +_08042B40:\n\ + movs r0, 0\n\ +_08042B42:\n\ + add sp, 0x20\n\ + pop {r4-r6}\n\ + pop {r1}\n\ + bx r1\n\ + .syntax divided"); +} + +#endif // NONMATCHING + +bool8 sub_8042B4C(void) +{ + return sub_8042ABC(&gSaveBlock1.daycareData, gSpecialVar_0x8004); +} + +static u8 EggHatchCreateMonSprite(u8 a0, u8 switchID, u8 pokeID) +{ + u8 r5 = 0; + u8 spriteID = 0; + struct Pokemon* mon = NULL; + + if (a0 == 0) + { + mon = &gPlayerParty[pokeID]; + r5 = 1; + } + if (a0 == 1) + { + mon = &gPlayerParty[pokeID]; + r5 = 3; + } + switch (switchID) + { + case 0: + { + u16 species = GetMonData(mon, MON_DATA_SPECIES); + u32 pid = GetMonData(mon, MON_DATA_PERSONALITY); + HandleLoadSpecialPokePic(&gMonFrontPicTable[species], gMonFrontPicCoords[species].coords, gMonFrontPicCoords[species].y_offset,(u32)(&ewram[0]), gUnknown_081FAF4C[2 * a0 + 1], species, pid); + LoadCompressedObjectPalette(GetMonSpritePalStruct(mon)); + } + break; + case 1: + GetMonSpriteTemplate_803C56C(GetMonSpritePalStruct(mon)->tag, r5); + spriteID = CreateSprite(&gUnknown_02024E8C, 120, 70, 6); + gSprites[spriteID].invisible = 1; + gSprites[spriteID].callback = SpriteCallbackDummy; + break; + } + return spriteID; +} + +static void VBlankCB_EggHatch(void) +{ + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); +} + +void EggHatch(void) +{ + ScriptContext2_Enable(); + CreateTask(Task_EggHatch, 10); + BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); +} + +static void Task_EggHatch(u8 taskID) +{ + if (!gPaletteFade.active) + { + SetMainCallback2(CB2_EggHatch_0); + gFieldCallback = sub_8080990; + DestroyTask(taskID); + } +} + +static void CB2_EggHatch_0(void) +{ + switch (gMain.state) + { + case 0: + REG_DISPCNT = 0; + gEggHatchData = (struct EggHatchData*)(&ewram[0x18000]); + gEggHatchData->eggPartyID = gSpecialVar_0x8004; + gEggHatchData->eggShardVelocityID = 0; + ResetTasks(); + ResetSpriteData(); + FreeAllSpritePalettes(); + SetVBlankCallback(VBlankCB_EggHatch); + gMain.state++; + gSpecialVar_0x8005 = GetCurrentMapMusic(); + break; + case 1: + SetUpWindowConfig(&gWindowConfig_81E6F84); + InitWindowFromConfig(&gEggHatchData->window, &gWindowConfig_81E6F84); + gEggHatchData->tileDataStartOffset = SetTextWindowBaseTileNum(20); + LoadTextWindowGraphics(&gEggHatchData->window); + gMain.state++; + break; + case 2: + LZDecompressVram(&gUnknown_08D00000, (void*)(VRAM)); + CpuSet(&gUnknown_08D00524, &ewram[0], 0x800); + DmaCopy16(3, &ewram[0], (void*)(VRAM + 0x2800), 0x500); + LoadCompressedPalette(&gUnknown_08D004E0, 0, 0x20); + gMain.state++; + break; + case 3: + LoadSpriteSheet(&sUnknown_0820A3B0); + LoadSpriteSheet(&sUnknown_0820A3B8); + LoadSpritePalette(&sUnknown_0820A3C0); + gMain.state++; + break; + case 4: + gEggHatchData->eggSpriteID = CreateSprite(&sSpriteTemplate_820A3C8, 0x78, 0x4B, 5); + AddHatchedMonToParty(gEggHatchData->eggPartyID); + gMain.state++; + break; + case 5: + EggHatchCreateMonSprite(0, 0, gEggHatchData->eggPartyID); + gMain.state++; + break; + case 6: + gEggHatchData->pokeSpriteID = EggHatchCreateMonSprite(0, 1, gEggHatchData->eggPartyID); + gMain.state++; + break; + case 7: + { + u32 offsetRead, offsetWrite; + u32 offsetRead2, offsetWrite2; + u32 size; + + REG_BG2CNT = 0x4C06; + LoadPalette(gUnknown_0820C9F8, 0x10, 0xA0); + + offsetRead = (u32)(&gUnknown_0820CA98); + offsetWrite = (VRAM + 0x4000); + size = 0x1300; + while (TRUE) + { + DmaCopy16(3, offsetRead, (void *) (offsetWrite), 0x1000); + offsetRead += 0x1000; + offsetWrite += 0x1000; + size -= 0x1000; + if (size <= 0x1000) + { + DmaCopy16(3, offsetRead, (void *) (offsetWrite), size); + break; + } + } + + offsetRead2 = (u32)(&gUnknown_0820F798); + offsetWrite2 = (u32)(VRAM + 0x6000); + DmaCopy16(3, offsetRead2, (void*)(offsetWrite2), 0x1000); + gMain.state++; + } + break; + case 8: + REG_BG1CNT = 0x501; + + REG_BG0HOFS = 0; + REG_BG0VOFS = 0; + + REG_BG1HOFS = 0; + REG_BG1VOFS = 0; + + REG_BG2HOFS = 0; + REG_BG2VOFS = 0; + + SetMainCallback2(CB2_EggHatch_1); + gEggHatchData->CB2_state = 0; + break; + } +} + +static void EggHatchSetMonNickname(void) +{ + SetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_NICKNAME, gStringVar3); + SetMainCallback2(c2_exit_to_overworld_2_switch); +} + +static void Task_EggHatchPlayBGM(u8 taskID) +{ + if (gTasks[taskID].data[0] == 0) + StopMapMusic(); + if (gTasks[taskID].data[0] == 1) + PlayBGM(376); + if (gTasks[taskID].data[0] > 60) + { + PlayBGM(377); + DestroyTask(taskID); + //return; task is destroyed, yet you increment the value? + } + gTasks[taskID].data[0]++; +} + +static void CB2_EggHatch_1(void) +{ + switch (gEggHatchData->CB2_state) + { + case 0: + BeginNormalPaletteFade(-1, 0, 0x10, 0, 0); + REG_DISPCNT = 0x1740; + gEggHatchData->CB2_state++; + CreateTask(Task_EggHatchPlayBGM, 5); + break; + case 1: + if (!gPaletteFade.active) + { + gEggHatchData->CB2_PalCounter = 0; + gEggHatchData->CB2_state++; + } + break; + case 2: + if (++gEggHatchData->CB2_PalCounter > 30) + { + gEggHatchData->CB2_state++; + gSprites[gEggHatchData->eggSpriteID].callback = SpriteCB_Egg_0; + } + break; + case 3: + if (gSprites[gEggHatchData->eggSpriteID].callback == SpriteCallbackDummy) + gEggHatchData->CB2_state++; + break; + case 4: + GetMonNick(&gPlayerParty[gEggHatchData->eggPartyID], gStringVar1); + StringExpandPlaceholders(gStringVar4, gOtherText_HatchedFromEgg); + EggHatchPrintMessage2(gStringVar4); + PlayFanfare(371); + gEggHatchData->CB2_state++; + break; + case 5: + if (IsFanfareTaskInactive()) + gEggHatchData->CB2_state++; + break; + case 6: + if (IsFanfareTaskInactive()) + gEggHatchData->CB2_state++; + break; + case 7: + GetMonNick(&gPlayerParty[gEggHatchData->eggPartyID], gStringVar1); + StringExpandPlaceholders(gStringVar4, gOtherText_NickHatchPrompt); + EggHatchPrintMessage1(gStringVar4); + gEggHatchData->CB2_state++; + break; + case 8: + if (EggHatchUpdateWindowText()) + { + MenuDrawTextWindow(22, 8, 27, 13); + InitYesNoMenu(22, 8, 4); + gEggHatchData->CB2_state++; + } + break; + case 9: + { + s8 menuInput; + if ((menuInput = ProcessMenuInputNoWrap_()) != -2) + { + if (menuInput != -1 && menuInput != 1) + { + u16 species; + u8 gender; + u32 personality; + + GetMonNick(&gPlayerParty[gEggHatchData->eggPartyID], gStringVar3); + species = GetMonData(&gPlayerParty[gEggHatchData->eggPartyID], MON_DATA_SPECIES); + gender = GetMonGender(&gPlayerParty[gEggHatchData->eggPartyID]); + personality = GetMonData(&gPlayerParty[gEggHatchData->eggPartyID], MON_DATA_PERSONALITY, 0); + DoNamingScreen(3, gStringVar3, species, gender, personality, EggHatchSetMonNickname); + } + else + gEggHatchData->CB2_state++; + } + } + break; + case 10: + BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); + gEggHatchData->CB2_state++; + break; + case 11: + if (!gPaletteFade.active) + SetMainCallback2(c2_exit_to_overworld_2_switch); + break; + } + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +static void SpriteCB_Egg_0(struct Sprite* sprite) +{ + if (++sprite->data0 > 20) + { + sprite->callback = SpriteCB_Egg_1; + sprite->data0 = 0; + } + else + { + sprite->data1 = (sprite->data1 + 20) & 0xFF; + sprite->pos2.x = Sin(sprite->data1, 1); + if (sprite->data0 == 15) + { + PlaySE(SE_BOWA); + StartSpriteAnim(sprite, 1); + CreateRandomEggShardSprite(); + } + } +} + +static void SpriteCB_Egg_1(struct Sprite* sprite) +{ + if (++sprite->data2 > 30) + { + if (++sprite->data0 > 20) + { + sprite->callback = SpriteCB_Egg_2; + sprite->data0 = 0; + sprite->data2 = 0; + } + else + { + sprite->data1 = (sprite->data1 + 20) & 0xFF; + sprite->pos2.x = Sin(sprite->data1, 2); + if (sprite->data0 == 15) + { + PlaySE(SE_BOWA); + StartSpriteAnim(sprite, 2); + } + } + } +} + +static void SpriteCB_Egg_2(struct Sprite* sprite) +{ + if (++sprite->data2 > 30) + { + if (++sprite->data0 > 38) + { + u16 species; + + sprite->callback = SpriteCB_Egg_3; + sprite->data0 = 0; + species = GetMonData(&gPlayerParty[gEggHatchData->eggPartyID], MON_DATA_SPECIES); + gSprites[gEggHatchData->pokeSpriteID].pos2.x = 0; + gSprites[gEggHatchData->pokeSpriteID].pos2.y = gMonFrontPicCoords[species].y_offset; + } + else + { + sprite->data1 = (sprite->data1 + 20) & 0xFF; + sprite->pos2.x = Sin(sprite->data1, 2); + if (sprite->data0 == 15) + { + PlaySE(SE_BOWA); + StartSpriteAnim(sprite, 2); + CreateRandomEggShardSprite(); + CreateRandomEggShardSprite(); + } + if (sprite->data0 == 30) + PlaySE(SE_BOWA); + } + } +} + +static void SpriteCB_Egg_3(struct Sprite* sprite) +{ + if (++sprite->data0 > 50) + { + sprite->callback = SpriteCB_Egg_4; + sprite->data0 = 0; + } +} + +static void SpriteCB_Egg_4(struct Sprite* sprite) +{ + s16 i; + if (sprite->data0 == 0) + BeginNormalPaletteFade(-1, -1, 0, 0x10, 0xFFFF); + if (sprite->data0 < 4u) + { + for (i = 0; i <= 3; i++) + CreateRandomEggShardSprite(); + } + sprite->data0++; + if (!gPaletteFade.active) + { + PlaySE(SE_TAMAGO); + sprite->invisible = 1; + sprite->callback = SpriteCB_Egg_5; + sprite->data0 = 0; + } +} + +static void SpriteCB_Egg_5(struct Sprite* sprite) +{ + if (sprite->data0 == 0) + { + gSprites[gEggHatchData->pokeSpriteID].invisible = 0; + StartSpriteAffineAnim(&gSprites[gEggHatchData->pokeSpriteID], 1); + } + if (sprite->data0 == 8) + BeginNormalPaletteFade(-1, -1, 0x10, 0, 0xFFFF); + if (sprite->data0 <= 9) + gSprites[gEggHatchData->pokeSpriteID].pos1.y -= 1; + if (sprite->data0 > 40) + sprite->callback = SpriteCallbackDummy; + sprite->data0++; +} + +static void SpriteCB_EggShard(struct Sprite* sprite) +{ + sprite->data4 += sprite->data1; + sprite->data5 += sprite->data2; + + sprite->pos2.x = sprite->data4 / 256; + sprite->pos2.y = sprite->data5 / 256; + + sprite->data2 += sprite->data3; + + if (sprite->pos1.y + sprite->pos2.y > sprite->pos1.y + 20 && sprite->data2 > 0) + DestroySprite(sprite); +} + +// Converts a number to Q8.8 fixed-point format +#define Q_8_8(n) ((s16)((n) * 256)) + +static const s16 sEggShardVelocities[][2] = +{ + {Q_8_8(-1.5), Q_8_8(-3.75)}, + {Q_8_8(-5), Q_8_8(-3)}, + {Q_8_8(3.5), Q_8_8(-3)}, + {Q_8_8(-4), Q_8_8(-3.75)}, + {Q_8_8(2), Q_8_8(-1.5)}, + {Q_8_8(-0.5), Q_8_8(-6.75)}, + {Q_8_8(5), Q_8_8(-2.25)}, + {Q_8_8(-1.5), Q_8_8(-3.75)}, + {Q_8_8(4.5), Q_8_8(-1.5)}, + {Q_8_8(-1), Q_8_8(-6.75)}, + {Q_8_8(4), Q_8_8(-2.25)}, + {Q_8_8(-3.5), Q_8_8(-3.75)}, + {Q_8_8(1), Q_8_8(-1.5)}, + {Q_8_8(-3.515625), Q_8_8(-6.75)}, + {Q_8_8(4.5), Q_8_8(-2.25)}, + {Q_8_8(-0.5), Q_8_8(-7.5)}, + {Q_8_8(1), Q_8_8(-4.5)}, + {Q_8_8(-2.5), Q_8_8(-2.25)}, + {Q_8_8(2.5), Q_8_8(-7.5)}, +}; + +static void CreateRandomEggShardSprite(void) +{ + u16 spriteAnimIndex; + + s16 velocity1 = sEggShardVelocities[gEggHatchData->eggShardVelocityID][0]; + s16 velocity2 = sEggShardVelocities[gEggHatchData->eggShardVelocityID][1]; + gEggHatchData->eggShardVelocityID++; + spriteAnimIndex = Random() % 4; + CreateEggShardSprite(120, 60, velocity1, velocity2, 100, spriteAnimIndex); +} + +static void CreateEggShardSprite(u8 x, u8 y, s16 data1, s16 data2, s16 data3, u8 spriteAnimIndex) +{ + u8 spriteID = CreateSprite(&sSpriteTemplate_820A418, x, y, 4); + gSprites[spriteID].data1 = data1; + gSprites[spriteID].data2 = data2; + gSprites[spriteID].data3 = data3; + StartSpriteAnim(&gSprites[spriteID], spriteAnimIndex); +} + +static void EggHatchPrintMessage1(u8* src) +{ + sub_8002EB0(&gEggHatchData->window, src, gEggHatchData->tileDataStartOffset, 3, 15); +} + +static void EggHatchPrintMessage2(u8* src) +{ + sub_8003460(&gEggHatchData->window, src, gEggHatchData->tileDataStartOffset, 3, 15); +} + +static bool8 EggHatchUpdateWindowText(void) +{ + return sub_80035AC(&gEggHatchData->window); +} diff --git a/src/scene/evolution_graphics.c b/src/scene/evolution_graphics.c new file mode 100644 index 000000000..1fd5bf8fa --- /dev/null +++ b/src/scene/evolution_graphics.c @@ -0,0 +1,614 @@ +#include "global.h" +#include "evolution_graphics.h" +#include "sprite.h" +#include "trig.h" +#include "rng.h" +#include "decompress.h" +#include "task.h" +#include "sound.h" +#include "songs.h" +#include "palette.h" + +// this file's functions +static void EvoSparkle_DummySpriteCb(struct Sprite* sprite); +static void EvoTask_BeginPreSet1_FadeAndPlaySE(u8 taskID); +static void EvoTask_CreatePreEvoSparkleSet1(u8 taskID); +static void EvoTask_WaitForPre1SparklesToGoUp(u8 taskID); +static void EvoTask_BeginPreSparklesSet2(u8 taskID); +static void EvoTask_CreatePreEvoSparklesSet2(u8 taskID); +static void EvoTask_DestroyPreSet2Task(u8 taskID); +static void EvoTask_BeginPostSparklesSet1(u8 taskID); +static void EvoTask_CreatePostEvoSparklesSet1(u8 taskID); +static void EvoTask_DestroyPostSet1Task(u8 taskID); +static void EvoTask_BeginPostSparklesSet2_AndFlash(u8 taskID); +static void EvoTask_CreatePostEvoSparklesSet2_AndFlash(u8 taskID); +static void EvoTask_BeginPostSparklesSet2_AndFlash_Trade(u8 taskID); +static void EvoTask_CreatePostEvoSparklesSet2_AndFlash_Trade(u8 taskID); +static void EvoTask_DestroyPostSet2AndFlashTask(u8 taskID); + +static void sub_8149FC8(u8 taskID); +static void sub_8149FEC(u8 taskID); +static void PreEvoVisible_PostEvoInvisible_KillTask(u8 taskID); +static void PreEvoInVisible_PostEvoVisible_KillTask(u8 taskID); +static void sub_814A03C(u8 taskID); + +// const data +static const u16 sEvoSparklePalette[] = INCBIN_U16("graphics/misc/evo_sparkle.gbapal"); +static const u8 sEvoSparkleTiles[] = INCBIN_U8("graphics/misc/evo_sparkle.4bpp.lz"); + +static const struct CompressedSpriteSheet sEvoSparkleSpriteSheets[] = +{ + {sEvoSparkleTiles, 0x20, 1001}, + {NULL, 0, 0} +}; +static const struct SpritePalette sEvoSparkleSpritePals[] = +{ + {sEvoSparklePalette, 1001}, + {NULL, 0} +}; + +static const struct OamData sOamData_EvoSparkle = +{ + .y = 160, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 0, + .tileNum = 0, + .priority = 1, + .paletteNum = 0, + .affineParam = 0, +}; + +static const union AnimCmd sSpriteAnim_EvoSparkle[] = +{ + ANIMCMD_FRAME(0, 8), + ANIMCMD_END +}; + +static const union AnimCmd *const sSpriteAnimTable_EvoSparkle[] = +{ + sSpriteAnim_EvoSparkle, +}; + +static const struct SpriteTemplate sEvoSparkleSpriteTemplate = +{ + .tileTag = 1001, + .paletteTag = 1001, + .oam = &sOamData_EvoSparkle, + .anims = sSpriteAnimTable_EvoSparkle, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = EvoSparkle_DummySpriteCb +}; + +static const s16 sEvoSparkleMatricies[] = +{ + 0x3C0, 0x380, 0x340, 0x300, 0x2C0, 0x280, 0x240, 0x200, 0x1C0, + 0x180, 0x140, 0x100, -4, 0x10, -3, 0x30, -2, 0x50, + -1, 0x70, 0x1, 0x70, 0x2, 0x50, 0x3, 0x30, 0x4, 0x10 +}; + +// code + +static void EvoSparkle_DummySpriteCb(struct Sprite* sprite) +{ + +} + +static void SetEvoSparklesMatrices(void) +{ + u16 i; + for (i = 0; i < 12; i++) + { + SetOamMatrix(20 + i, sEvoSparkleMatricies[i], 0, 0, sEvoSparkleMatricies[i]); + } +} + +static void SpriteCB_PreEvoSparkleSet1(struct Sprite* sprite) +{ + if (sprite->pos1.y > 8) + { + u8 matrixNum; + + sprite->pos1.y = 88 - (sprite->data7 * sprite->data7) / 80; + sprite->pos2.y = Sin((u8)(sprite->data6), sprite->data5) / 4; + sprite->pos2.x = Cos((u8)(sprite->data6), sprite->data5); + sprite->data6 += 4; + if (sprite->data7 & 1) + sprite->data5--; + sprite->data7++; + if (sprite->pos2.y > 0) + sprite->subpriority = 1; + else + sprite->subpriority = 20; + matrixNum = sprite->data5 / 4 + 20; + if (matrixNum > 31) + matrixNum = 31; + sprite->oam.matrixNum = matrixNum; + } + else + DestroySprite(sprite); +} + +static void CreatePreEvoSparkleSet1(u8 arg0) +{ + u8 spriteID = CreateSprite(&sEvoSparkleSpriteTemplate, 120, 88, 0); + if (spriteID != MAX_SPRITES) + { + gSprites[spriteID].data5 = 48; + gSprites[spriteID].data6 = arg0; + gSprites[spriteID].data7 = 0; + gSprites[spriteID].oam.affineMode = 1; + gSprites[spriteID].oam.matrixNum = 31; + gSprites[spriteID].callback = SpriteCB_PreEvoSparkleSet1; + } +} + +static void SpriteCB_PreEvoSparkleSet2(struct Sprite* sprite) +{ + if (sprite->pos1.y < 88) + { + sprite->pos1.y = 8 + (sprite->data7 * sprite->data7) / 5; + sprite->pos2.y = Sin((u8)(sprite->data6), sprite->data5) / 4; + sprite->pos2.x = Cos((u8)(sprite->data6), sprite->data5); + sprite->data5 = 8 + Sin((u8)(sprite->data7 * 4), 40); + sprite->data7++; + } + else + DestroySprite(sprite); +} + +static void CreatePreEvoSparkleSet2(u8 arg0) +{ + u8 spriteID = CreateSprite(&sEvoSparkleSpriteTemplate, 120, 8, 0); + if (spriteID != MAX_SPRITES) + { + gSprites[spriteID].data5 = 8; + gSprites[spriteID].data6 = arg0; + gSprites[spriteID].data7 = 0; + gSprites[spriteID].oam.affineMode = 1; + gSprites[spriteID].oam.matrixNum = 25; + gSprites[spriteID].subpriority = 1; + gSprites[spriteID].callback = SpriteCB_PreEvoSparkleSet2; + } +} + +static void SpriteCB_PostEvoSparkleSet1(struct Sprite* sprite) +{ + if (sprite->data5 > 8) + { + sprite->pos2.y = Sin((u8)(sprite->data6), sprite->data5); + sprite->pos2.x = Cos((u8)(sprite->data6), sprite->data5); + sprite->data5 -= sprite->data3; + sprite->data6 += 4; + } + else + DestroySprite(sprite); +} + +static void CreatePostEvoSparkleSet1(u8 arg0, u8 arg1) +{ + u8 spriteID = CreateSprite(&sEvoSparkleSpriteTemplate, 120, 56, 0); + if (spriteID != MAX_SPRITES) + { + gSprites[spriteID].data3 = arg1; + gSprites[spriteID].data5 = 120; + gSprites[spriteID].data6 = arg0; + gSprites[spriteID].data7 = 0; + gSprites[spriteID].oam.affineMode = 1; + gSprites[spriteID].oam.matrixNum = 31; + gSprites[spriteID].subpriority = 1; + gSprites[spriteID].callback = SpriteCB_PostEvoSparkleSet1; + } +} + +static void SpriteCB_PostEvoSparkleSet2(struct Sprite* sprite) +{ + if (!(sprite->data7 & 3)) + sprite->pos1.y++; + if (sprite->data6 < 128) + { + u8 matrixNum; + + sprite->pos2.y = -Sin((u8)(sprite->data6), sprite->data5); + sprite->pos1.x = 120 + (sprite->data3 * sprite->data7) / 3; + sprite->data6++; + matrixNum = 31 - (sprite->data6 * 12 / 128); + if (sprite->data6 > 64) + sprite->subpriority = 1; + else + { + sprite->invisible = 0; + sprite->subpriority = 20; + if (sprite->data6 > 112 && sprite->data6 & 1) + sprite->invisible = 1; + } + if (matrixNum < 20) + matrixNum = 20; + sprite->oam.matrixNum = matrixNum; + sprite->data7++; + } + else + DestroySprite(sprite); +} + +static void CreatePostEvoSparkleSet2(u8 arg0) +{ + u8 spriteID = CreateSprite(&sEvoSparkleSpriteTemplate, 120, 56, 0); + if (spriteID != MAX_SPRITES) + { + gSprites[spriteID].data3 = 3 - (Random() % 7); + gSprites[spriteID].data5 = 48 + (Random() & 0x3F); + gSprites[spriteID].data7 = 0; + gSprites[spriteID].oam.affineMode = 1; + gSprites[spriteID].oam.matrixNum = 31; + gSprites[spriteID].subpriority = 20; + gSprites[spriteID].callback = SpriteCB_PostEvoSparkleSet2; + } +} + +void LoadEvoSparkleSpriteAndPal(void) +{ + LoadCompressedObjectPic(&sEvoSparkleSpriteSheets[0]); + LoadSpritePalettes(sEvoSparkleSpritePals); +} + +#define tFrameCounter data[15] + +u8 LaunchTask_PreEvoSparklesSet1(u16 arg0) +{ + u8 taskID = CreateTask(EvoTask_BeginPreSet1_FadeAndPlaySE, 0); + gTasks[taskID].data[1] = arg0; + return taskID; +} + +static void EvoTask_BeginPreSet1_FadeAndPlaySE(u8 taskID) +{ + SetEvoSparklesMatrices(); + gTasks[taskID].tFrameCounter = 0; + BeginNormalPaletteFade(3 << gTasks[taskID].data[1], 0xA, 0, 0x10, 0x7FFF); + gTasks[taskID].func = EvoTask_CreatePreEvoSparkleSet1; + PlaySE(SE_W025); +} + +static void EvoTask_CreatePreEvoSparkleSet1(u8 taskID) +{ + if (gTasks[taskID].tFrameCounter < 64) + { + if (!(gTasks[taskID].tFrameCounter & 7)) + { + u8 i; + for (i = 0; i < 4; i++) + CreatePreEvoSparkleSet1((0x78 & gTasks[taskID].tFrameCounter) * 2 + i * 64); + } + gTasks[taskID].tFrameCounter++; + } + else + { + gTasks[taskID].tFrameCounter = 96; + gTasks[taskID].func = EvoTask_WaitForPre1SparklesToGoUp; + } +} + +static void EvoTask_WaitForPre1SparklesToGoUp(u8 taskID) +{ + if (gTasks[taskID].tFrameCounter != 0) + gTasks[taskID].tFrameCounter--; + else + DestroyTask(taskID); +} + +u8 LaunchTask_PreEvoSparklesSet2(void) +{ + return CreateTask(EvoTask_BeginPreSparklesSet2, 0); +} + +static void EvoTask_BeginPreSparklesSet2(u8 taskID) +{ + SetEvoSparklesMatrices(); + gTasks[taskID].tFrameCounter = 0; + gTasks[taskID].func = EvoTask_CreatePreEvoSparklesSet2; + PlaySE(SE_W062B); +} + +static void EvoTask_CreatePreEvoSparklesSet2(u8 taskID) +{ + if (gTasks[taskID].tFrameCounter < 96) + { + if (gTasks[taskID].tFrameCounter < 6) + { + u8 i; + for (i = 0; i < 9; i++) + CreatePreEvoSparkleSet2(i * 16); + } + gTasks[taskID].tFrameCounter++; + } + else + gTasks[taskID].func = EvoTask_DestroyPreSet2Task; +} + +static void EvoTask_DestroyPreSet2Task(u8 taskID) +{ + DestroyTask(taskID); +} + +u8 LaunchTask_PostEvoSparklesSet1(void) +{ + return CreateTask(EvoTask_BeginPostSparklesSet1, 0); +} + +static void EvoTask_BeginPostSparklesSet1(u8 taskID) +{ + SetEvoSparklesMatrices(); + gTasks[taskID].tFrameCounter = 0; + gTasks[taskID].func = EvoTask_CreatePostEvoSparklesSet1; + PlaySE(SE_REAPOKE); +} + +static void EvoTask_CreatePostEvoSparklesSet1(u8 taskID) +{ + if (gTasks[taskID].tFrameCounter < 48) + { + if (gTasks[taskID].tFrameCounter == 0) + { + u8 i; + for (i = 0; i < 16; i++) + CreatePostEvoSparkleSet1(i * 16, 4); + } + if (gTasks[taskID].tFrameCounter == 32) + { + u8 i; + for (i = 0; i < 16; i++) + CreatePostEvoSparkleSet1(i * 16, 8); + } + gTasks[taskID].tFrameCounter++; + } + else + gTasks[taskID].func = EvoTask_DestroyPostSet1Task; +} + +static void EvoTask_DestroyPostSet1Task(u8 taskID) +{ + DestroyTask(taskID); +} + +u8 LaunchTask_PostEvoSparklesSet2AndFlash(u16 species) +{ + u8 taskID = CreateTask(EvoTask_BeginPostSparklesSet2_AndFlash, 0); + gTasks[taskID].data[2] = species; + return taskID; +} + +static void EvoTask_BeginPostSparklesSet2_AndFlash(u8 taskID) +{ + SetEvoSparklesMatrices(); + gTasks[taskID].tFrameCounter = 0; + CpuSet(&gPlttBufferFaded[0x20], &gPlttBufferUnfaded[0x20], 0x30); + BeginNormalPaletteFade(0xFFF9001C, 0, 0, 0x10, 0x7FFF); + gTasks[taskID].func = EvoTask_CreatePostEvoSparklesSet2_AndFlash; + PlaySE(SE_W080); +} + +static void EvoTask_CreatePostEvoSparklesSet2_AndFlash(u8 taskID) +{ + if (gTasks[taskID].tFrameCounter < 128) + { + u8 i; + switch (gTasks[taskID].tFrameCounter) + { + default: + if (gTasks[taskID].tFrameCounter < 50) + CreatePostEvoSparkleSet2(Random() & 7); + break; + case 0: + for (i = 0; i < 8; i++) + CreatePostEvoSparkleSet2(i); + break; + case 32: + BeginNormalPaletteFade(0xFFFF001C, 0x10, 0x10, 0, 0x7FFF); + break; + } + gTasks[taskID].tFrameCounter++; + } + else + gTasks[taskID].func = EvoTask_DestroyPostSet2AndFlashTask; +} + +static void EvoTask_DestroyPostSet2AndFlashTask(u8 taskID) +{ + if (!gPaletteFade.active) + DestroyTask(taskID); +} + +u8 LaunchTask_PostEvoSparklesSet2AndFlash_Trade(u16 species) +{ + u8 taskID = CreateTask(EvoTask_BeginPostSparklesSet2_AndFlash_Trade, 0); + gTasks[taskID].data[2] = species; + return taskID; +} + +static void EvoTask_BeginPostSparklesSet2_AndFlash_Trade(u8 taskID) +{ + SetEvoSparklesMatrices(); + gTasks[taskID].tFrameCounter = 0; + CpuSet(&gPlttBufferFaded[0x20], &gPlttBufferUnfaded[0x20], 0x30); + BeginNormalPaletteFade(0xFFF90001, 0, 0, 0x10, 0x7FFF); + gTasks[taskID].func = EvoTask_CreatePostEvoSparklesSet2_AndFlash_Trade; + PlaySE(SE_W080); +} + +static void EvoTask_CreatePostEvoSparklesSet2_AndFlash_Trade(u8 taskID) +{ + if (gTasks[taskID].tFrameCounter < 128) + { + u8 i; + switch (gTasks[taskID].tFrameCounter) + { + default: + if (gTasks[taskID].tFrameCounter < 50) + CreatePostEvoSparkleSet2(Random() & 7); + break; + case 0: + for (i = 0; i < 8; i++) + CreatePostEvoSparkleSet2(i); + break; + case 32: + BeginNormalPaletteFade(0xFFFF0001, 0x10, 0x10, 0, 0x7FFF); + break; + } + gTasks[taskID].tFrameCounter++; + } + else + gTasks[taskID].func = EvoTask_DestroyPostSet2AndFlashTask; +} + +#undef tFrameCounter + +static void PokeEvoSprite_DummySpriteCB(struct Sprite* sprite) +{ + +} + +#define tPreEvoSpriteID data[1] +#define tPostEvoSpriteID data[2] +#define tEvoStopped data[8] + +u8 sub_8149E7C(u8 preEvoSpriteID, u8 postEvoSpriteID) +{ + u16 i; + u16 stack[16]; + u8 taskID; + s32 toDiv; + + for (i = 0; i < 16; i++) + stack[i] = 0x7FFF; + + taskID = CreateTask(sub_8149FC8, 0); + gTasks[taskID].tPreEvoSpriteID = preEvoSpriteID; + gTasks[taskID].tPostEvoSpriteID = postEvoSpriteID; + gTasks[taskID].data[3] = 256; + gTasks[taskID].data[4] = 16; + + toDiv = 65536; + SetOamMatrix(30, 256, 0, 0, 256); + SetOamMatrix(31, toDiv / gTasks[taskID].data[4], 0, 0, toDiv / gTasks[taskID].data[4]); + + gSprites[preEvoSpriteID].callback = PokeEvoSprite_DummySpriteCB; + gSprites[preEvoSpriteID].oam.affineMode = 1; + gSprites[preEvoSpriteID].oam.matrixNum = 30; + gSprites[preEvoSpriteID].invisible = 0; + CpuSet(stack, &gPlttBufferFaded[0x100 + (gSprites[preEvoSpriteID].oam.paletteNum * 16)], 16); + + gSprites[postEvoSpriteID].callback = PokeEvoSprite_DummySpriteCB; + gSprites[postEvoSpriteID].oam.affineMode = 1; + gSprites[postEvoSpriteID].oam.matrixNum = 31; + gSprites[postEvoSpriteID].invisible = 0; + CpuSet(stack, &gPlttBufferFaded[0x100 + (gSprites[postEvoSpriteID].oam.paletteNum * 16)], 16); + + gTasks[taskID].tEvoStopped = FALSE; + return taskID; +} + +static void sub_8149FC8(u8 taskID) +{ + gTasks[taskID].data[5] = 0; + gTasks[taskID].data[6] = 8; + gTasks[taskID].func = sub_8149FEC; +} + +static void sub_8149FEC(u8 taskID) +{ + if (gTasks[taskID].tEvoStopped) + PreEvoVisible_PostEvoInvisible_KillTask(taskID); + else if (gTasks[taskID].data[6] == 128) + PreEvoInVisible_PostEvoVisible_KillTask(taskID); + else + { + gTasks[taskID].data[6] += 2; + gTasks[taskID].data[5] ^= 1; + gTasks[taskID].func = sub_814A03C; + } +} + +static void sub_814A03C(u8 taskID) +{ + if (gTasks[taskID].tEvoStopped) + gTasks[taskID].func = PreEvoVisible_PostEvoInvisible_KillTask; + else + { + u16 oamMatrixArg; + u8 r6 = 0; + if (gTasks[taskID].data[5] == 0) + { + if (gTasks[taskID].data[3] < 256 - gTasks[taskID].data[6]) + gTasks[taskID].data[3] += gTasks[taskID].data[6]; + else + { + gTasks[taskID].data[3] = 256; + r6++; + } + if (gTasks[taskID].data[4] > 16 + gTasks[taskID].data[6]) + gTasks[taskID].data[4] -= gTasks[taskID].data[6]; + else + { + gTasks[taskID].data[4] = 16; + r6++; + } + } + else + { + if (gTasks[taskID].data[4] < 256 - gTasks[taskID].data[6]) + gTasks[taskID].data[4] += gTasks[taskID].data[6]; + else + { + gTasks[taskID].data[4] = 256; + r6++; + } + if (gTasks[taskID].data[3] > 16 + gTasks[taskID].data[6]) + gTasks[taskID].data[3] -= gTasks[taskID].data[6]; + else + { + gTasks[taskID].data[3] = 16; + r6++; + } + } + oamMatrixArg = 65536 / gTasks[taskID].data[3]; + SetOamMatrix(30, oamMatrixArg, 0, 0, oamMatrixArg); + + oamMatrixArg = 65536 / gTasks[taskID].data[4]; + SetOamMatrix(31, oamMatrixArg, 0, 0, oamMatrixArg); + if (r6 == 2) + gTasks[taskID].func = sub_8149FEC; + } +} + +static void PreEvoInVisible_PostEvoVisible_KillTask(u8 taskID) +{ + gSprites[gTasks[taskID].tPreEvoSpriteID].oam.affineMode = 0; + gSprites[gTasks[taskID].tPreEvoSpriteID].oam.matrixNum = 0; + gSprites[gTasks[taskID].tPreEvoSpriteID].invisible = 1; + + gSprites[gTasks[taskID].tPostEvoSpriteID].oam.affineMode = 0; + gSprites[gTasks[taskID].tPostEvoSpriteID].oam.matrixNum = 0; + gSprites[gTasks[taskID].tPostEvoSpriteID].invisible = 0; + + DestroyTask(taskID); +} + +static void PreEvoVisible_PostEvoInvisible_KillTask(u8 taskID) +{ + gSprites[gTasks[taskID].tPreEvoSpriteID].oam.affineMode = 0; + gSprites[gTasks[taskID].tPreEvoSpriteID].oam.matrixNum = 0; + gSprites[gTasks[taskID].tPreEvoSpriteID].invisible = 0; + + gSprites[gTasks[taskID].tPostEvoSpriteID].oam.affineMode = 0; + gSprites[gTasks[taskID].tPostEvoSpriteID].oam.matrixNum = 0; + gSprites[gTasks[taskID].tPostEvoSpriteID].invisible = 1; + + DestroyTask(taskID); +} diff --git a/src/scene/evolution_scene.c b/src/scene/evolution_scene.c new file mode 100644 index 000000000..24168dc56 --- /dev/null +++ b/src/scene/evolution_scene.c @@ -0,0 +1,3966 @@ +#include "global.h" +#include "task.h" +#include "evolution_scene.h" +#include "evolution_graphics.h" +#include "palette.h" +#include "main.h" +#include "text.h" +#include "text_window.h" +#include "pokemon.h" +#include "string_util.h" +#include "battle.h" +#include "unknown_task.h" +#include "data2.h" +#include "decompress.h" +#include "m4a.h" +#include "trade.h" +#include "menu.h" +#include "pokedex.h" +#include "species.h" +#include "sound.h" +#include "songs.h" +#include "overworld.h" +#include "battle_message.h" +#include "pokemon_summary_screen.h" +#include "menu_cursor.h" +#include "strings2.h" + +struct EvoInfo +{ + u8 preEvoSpriteID; + u8 postEvoSpriteID; + u8 evoTaskID; + u8 field_3; + + u8 unk4[0x40]; + u8 unk44[0x40]; + u8 unk84[0x40]; + + u8 unkC4[0x40][0x20]; // 0x20148C4 + u8 unk8C4[0x40][0x20]; // 0x20150C4 + u8 unk10C4[0x40][0x20]; // 0x20158C4 + u8 unk18C4[0x40][0x20]; // 0x20160C4 + u8 unk20C4[0x40][0x20]; // 0x20168C4 + u8 unk28C4[0x40][0x20]; // 0x20170C4 + u8 unk30C4[0x40][0x20]; // 0x20178C4 + u8 unk38C4[0x40][0x20]; // 0x20180C4 + + u8 *unk40C4[0x40][0x20]; // 0x20188C4 + + u16 unk60C4[0x40][0x20]; // 0x201A8C4 + u16 unk70C4[0x40][0x20]; // 0x201B8C4 + u16 unk80C4[0x40][0x20]; // 0x201C8C4 + u16 unk90C4[0x40][0x20]; // 0x201D8C4 + + u8 unkA0C4; // 0x201E8C4 +}; + +#define sEvoInfo ((*(struct EvoInfo*)(ewram + 0x14800))) + +void EvolutionRenameMon(struct Pokemon *mon, u16 oldSpecies, u16 newSpecies); +void sub_8024CEC(void); +void sub_8023A80(void); +void sub_802BC6C(void); +void sub_8023AD8(void); +void nullsub_6(void); +bool32 IsHMMove2(u16 move); + +extern struct Window gUnknown_03004210; +extern u16 gUnknown_030042A4; +extern u16 gUnknown_030042A0; +extern u16 gUnknown_030042C0; +extern u16 gUnknown_030041B4; +extern u16 gUnknown_03004288; +extern u16 gUnknown_03004280; +extern u16 gUnknown_030041B0; +extern u16 gUnknown_030041B8; +extern u8 gBattleTerrain; +extern u8 gReservedSpritePaletteCount; +extern u16 gMoveToLearn; +extern struct SpriteTemplate gUnknown_02024E8C; +extern u8 gUnk_2009000[]; // won't match if I 'ewram' it +extern bool8 gAffineAnimsDisabled; +extern u8 gDisplayedStringBattle[]; +extern u8 gBattleTextBuff2[]; + +extern u8 gBattleCommunication[]; +#define sEvoCursorPos gBattleCommunication[1] // when learning a new move +#define sEvoGraphicsTaskID gBattleCommunication[2] + +extern const u8 gUnknown_08400C4A[]; +extern const u8 gUnknown_08400C60[]; +extern const u8 gUnknown_08400C8D[]; +extern void * const gUnknown_081FAF4C[]; +extern const u8* const gBattleStringsTable[]; + +// this file's functions +static void Task_EvolutionScene(u8 taskID); +static void Task_TradeEvolutionScene(u8 taskID); +static void CB2_EvolutionSceneUpdate(void); +static void CB2_TradeEvolutionSceneUpdate(void); +static void EvoDummyFunc(void); +static void EvoDummyFunc2(void); +static void VBlankCB_EvolutionScene(void); +static void VBlankCB_TradeEvolutionScene(void); +static void sub_81150D8(void); + +// iwram common +MainCallback gCB2_AfterEvolution; + +// const data +static const u8 sUnknownShedinjaJpnString[] = _("ヌケニン"); +static const u8 sUnusedString0[] = _("{COLOR DARK_GREY}{HIGHLIGHT WHITE2}{SHADOW LIGHT_GREY}"); +static const u8 sUnusedString1[] = _("▶\n "); +static const u8 sUnusedString2[] = _(" \n▶"); +static const u8 sUnusedString3[] = _(" \n "); +static const u8 sPadding[9] = {0}; + +// code + +static void CB2_BeginEvolutionScene(void) +{ + UpdatePaletteFade(); + RunTasks(); +} + +#define tState data[0] +#define tMonPtrHI data[1] +#define tMonPtrLO data[2] +#define tPreEvoSpecies data[3] +#define tPostEvoSpecies data[4] +#define tCanStop data[5] // in first fast data[5] only checks that +#define tBits data[5] // in the second task, it works as a bitfield +#define tLearnsFirstMove data[6] +#define tLearnMoveState data[8] +#define tData9 data[9] +#define tData10 data[10] +#define tEvoWasStopped data[11] +#define tPartyID data[12] + +#define TASK_BIT_CAN_STOP 0x1 +#define TASK_BIT_LEARN_MOVE 0x80 + +static void Task_BeginEvolutionScene(u8 taskID) +{ + struct Pokemon* mon = NULL; + switch (gTasks[taskID].tState) + { + case 0: + BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); + gTasks[taskID].tState++; + break; + case 1: + if (!gPaletteFade.active) + { + u16 speciesToEvolve; + bool8 canStopEvo; + u8 partyID; + + mon = (struct Pokemon*)(gTasks[taskID].tMonPtrHI | (gTasks[taskID].tMonPtrLO << 0x10)); + speciesToEvolve = gTasks[taskID].tPostEvoSpecies; + canStopEvo = gTasks[taskID].tCanStop; + partyID = gTasks[taskID].tPartyID; + + DestroyTask(taskID); + EvolutionScene(mon, speciesToEvolve, canStopEvo, partyID); + } + break; + } +} + +void BeginEvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, bool8 canStopEvo, u8 partyID) +{ + u8 taskID = CreateTask(Task_BeginEvolutionScene, 0); + gTasks[taskID].tState = 0; + gTasks[taskID].tMonPtrHI = (u32)(mon); + gTasks[taskID].tMonPtrLO = (u32)(mon) >> 0x10; + gTasks[taskID].tPostEvoSpecies = speciesToEvolve; + gTasks[taskID].tCanStop = canStopEvo; + gTasks[taskID].tPartyID = partyID; + SetMainCallback2(CB2_BeginEvolutionScene); +} + +void EvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, bool8 canStopEvo, u8 partyID) +{ + u8 name[20]; + u16 currSpecies; + u32 TiD, PiD; + const struct CompressedSpritePalette** pokePal; + u8 ID; + SetHBlankCallback(NULL); + SetVBlankCallback(NULL); + CpuFill32(0, (void*)(VRAM), VRAM_SIZE); + + REG_MOSAIC = 0; + REG_WIN0H = 0; + REG_WIN0V = 0; + REG_WIN1H = 0; + REG_WIN1V = 0; + REG_WININ = 0; + REG_WINOUT = 0; + + SetUpWindowConfig(&gWindowConfig_81E6C58); + ResetPaletteFade(); + + gUnknown_030042A4 = 0; + gUnknown_030042A0 = 0; + gUnknown_030042C0 = 0; + gUnknown_030041B4 = 0; + gUnknown_03004288 = 0; + gUnknown_03004280 = 0; + gUnknown_030041B0 = 256; + gUnknown_030041B8 = 0; + + InitWindowFromConfig(&gUnknown_03004210, &gWindowConfig_81E6C58); + gBattleTerrain = BATTLE_TERRAIN_PLAIN; + + sub_800D6D4(); + sub_800DAB8(); + ResetSpriteData(); + remove_some_task(); + ResetTasks(); + FreeAllSpritePalettes(); + + gReservedSpritePaletteCount = 4; + + GetMonData(mon, MON_DATA_NICKNAME, name); + StringCopy10(gStringVar1, name); + StringCopy(gStringVar2, gSpeciesNames[speciesToEvolve]); + + // preEvo sprite + currSpecies = GetMonData(mon, MON_DATA_SPECIES); + TiD = GetMonData(mon, MON_DATA_OT_ID); + PiD = GetMonData(mon, MON_DATA_PERSONALITY); + DecompressPicFromTable_2(&gMonFrontPicTable[currSpecies], + gMonFrontPicCoords[currSpecies].coords, + gMonFrontPicCoords[currSpecies].y_offset, + (void*)(0x2000000), + gUnknown_081FAF4C[1], currSpecies); + pokePal = (void*) GetMonSpritePalStructFromOtIdPersonality(currSpecies, TiD, PiD); + LoadCompressedPalette(*pokePal, 0x110, 0x20); + + GetMonSpriteTemplate_803C56C(currSpecies, 1); + gUnknown_02024E8C.affineAnims = gDummySpriteAffineAnimTable; + sEvoInfo.preEvoSpriteID = ID = CreateSprite(&gUnknown_02024E8C, 120, 64, 30); + + gSprites[ID].callback = nullsub_37; + gSprites[ID].oam.paletteNum = 1; + gSprites[ID].invisible = 1; + + // postEvo sprite + DecompressPicFromTable_2(&gMonFrontPicTable[speciesToEvolve], + gMonFrontPicCoords[speciesToEvolve].coords, + gMonFrontPicCoords[speciesToEvolve].y_offset, + (void*)(0x2000000), + gUnknown_081FAF4C[3], speciesToEvolve); + pokePal = (void*) GetMonSpritePalStructFromOtIdPersonality(speciesToEvolve, TiD, PiD); + LoadCompressedPalette(*pokePal, 0x120, 0x20); + + GetMonSpriteTemplate_803C56C(speciesToEvolve, 3); + gUnknown_02024E8C.affineAnims = gDummySpriteAffineAnimTable; + sEvoInfo.postEvoSpriteID = ID = CreateSprite(&gUnknown_02024E8C, 120, 64, 30); + gSprites[ID].callback = nullsub_37; + gSprites[ID].oam.paletteNum = 2; + gSprites[ID].invisible = 1; + + LoadEvoSparkleSpriteAndPal(); + + sEvoInfo.evoTaskID = ID = CreateTask(Task_EvolutionScene, 0); + gTasks[ID].tState = 0; + gTasks[ID].tPreEvoSpecies = currSpecies; + gTasks[ID].tPostEvoSpecies = speciesToEvolve; + gTasks[ID].tMonPtrHI = (u32)(mon); + gTasks[ID].tMonPtrLO = (u32)(mon) >> 0x10; + gTasks[ID].tCanStop = canStopEvo; + gTasks[ID].tLearnsFirstMove = TRUE; + gTasks[ID].tEvoWasStopped = FALSE; + gTasks[ID].tPartyID = partyID; + + memcpy(gUnk_2009000, &gPlttBufferUnfaded[0x20], 0x60); + + REG_DISPCNT = DISPCNT_OBJ_ON | DISPCNT_BG_ALL_ON | DISPCNT_OBJ_1D_MAP; + SetHBlankCallback(EvoDummyFunc); + SetVBlankCallback(VBlankCB_EvolutionScene); + m4aMPlayAllStop(); + SetMainCallback2(CB2_EvolutionSceneUpdate); +} + +static void CB2_EvolutionSceneLoadGraphics(void) +{ + u8 ID; + const struct CompressedSpritePalette** pokePal; + u16 postEvoSpecies; + u32 TiD, PiD; + struct Pokemon* Mon = &gPlayerParty[gTasks[sEvoInfo.evoTaskID].tPartyID]; + + postEvoSpecies = gTasks[sEvoInfo.evoTaskID].tPostEvoSpecies; + TiD = GetMonData(Mon, MON_DATA_OT_ID); + PiD = GetMonData(Mon, MON_DATA_PERSONALITY); + + SetHBlankCallback(NULL); + SetVBlankCallback(NULL); + CpuFill32(0, (void*)(VRAM), VRAM_SIZE); + + REG_MOSAIC = 0; + REG_WIN0H = 0; + REG_WIN0V = 0; + REG_WIN1H = 0; + REG_WIN1V = 0; + REG_WININ = 0; + REG_WINOUT = 0; + SetUpWindowConfig(&gWindowConfig_81E6C58); + ResetPaletteFade(); + gUnknown_030042A4 = 0; + gUnknown_030042A0 = 0; + gUnknown_030042C0 = 0; + gUnknown_030041B4 = 0; + gUnknown_03004288 = 0; + gUnknown_03004280 = 0; + gUnknown_030041B0 = 256; + gUnknown_030041B8 = 0; + + InitWindowFromConfig(&gUnknown_03004210, &gWindowConfig_81E6C58); + gBattleTerrain = BATTLE_TERRAIN_PLAIN; + + sub_800D6D4(); + sub_800DAB8(); + ResetSpriteData(); + FreeAllSpritePalettes(); + gReservedSpritePaletteCount = 4; + + DecompressPicFromTable_2(&gMonFrontPicTable[postEvoSpecies], + gMonFrontPicCoords[postEvoSpecies].coords, + gMonFrontPicCoords[postEvoSpecies].y_offset, + (void*)(0x2000000), + gUnknown_081FAF4C[3], postEvoSpecies); + pokePal = (void*) GetMonSpritePalStructFromOtIdPersonality(postEvoSpecies, TiD, PiD); + LoadCompressedPalette(*pokePal, 0x120, 0x20); + + GetMonSpriteTemplate_803C56C(postEvoSpecies, 3); + gUnknown_02024E8C.affineAnims = gDummySpriteAffineAnimTable; + sEvoInfo.postEvoSpriteID = ID = CreateSprite(&gUnknown_02024E8C, 120, 64, 30); + + gSprites[ID].callback = nullsub_37; + gSprites[ID].oam.paletteNum = 2; + + REG_DISPCNT = DISPCNT_OBJ_ON | DISPCNT_BG_ALL_ON | DISPCNT_OBJ_1D_MAP; + SetHBlankCallback(EvoDummyFunc); + SetVBlankCallback(VBlankCB_EvolutionScene); + SetMainCallback2(CB2_EvolutionSceneUpdate); + BeginNormalPaletteFade(-1, 0, 0x10, 0, 0); +} + +static void CB2_TradeEvolutionSceneLoadGraphics(void) +{ + struct Pokemon* Mon = &gPlayerParty[gTasks[sEvoInfo.evoTaskID].tPartyID]; + u16 postEvoSpecies = gTasks[sEvoInfo.evoTaskID].tPostEvoSpecies; + + switch (gMain.state) + { + case 0: + REG_DISPCNT = 0; + SetHBlankCallback(NULL); + SetVBlankCallback(NULL); + ResetSpriteData(); + FreeAllSpritePalettes(); + gReservedSpritePaletteCount = 4; + gUnknown_030042A4 = 0; + gUnknown_030042A0 = 0; + gUnknown_030042C0 = 0; + gUnknown_030041B4 = 0; + gUnknown_03004288 = 0; + gUnknown_03004280 = 0; + gUnknown_030041B0 = 256; + gUnknown_030041B8 = 0; + gMain.state++; + break; + case 1: + SetUpWindowConfig(&gWindowConfig_81E6F84); + InitWindowFromConfig(&gUnknown_03004828->window, &gWindowConfig_81E6F84); + gMain.state++; + break; + case 2: + LoadTextWindowGraphics(&gUnknown_03004828->window); + gUnknown_03004828->textWindowBaseTileNum = SetTextWindowBaseTileNum(2); + LoadTextWindowGraphics(&gUnknown_03004828->window); + MenuZeroFillScreen(); + ResetPaletteFade(); + gMain.state++; + SetHBlankCallback(EvoDummyFunc); + SetVBlankCallback(VBlankCB_TradeEvolutionScene); + break; + case 3: + sub_804E22C(); + gMain.state++; + break; + case 4: + { + const struct CompressedSpritePalette** pokePal; + u32 TiD = GetMonData(Mon, MON_DATA_OT_ID); + u32 PiD = GetMonData(Mon, MON_DATA_PERSONALITY); + DecompressPicFromTable_2(&gMonFrontPicTable[postEvoSpecies], + gMonFrontPicCoords[postEvoSpecies].coords, + gMonFrontPicCoords[postEvoSpecies].y_offset, + (void*)(0x2000000), + gUnknown_081FAF4C[3], postEvoSpecies); + pokePal = (void*) GetMonSpritePalStructFromOtIdPersonality(postEvoSpecies, TiD, PiD); + LoadCompressedPalette(*pokePal, 0x120, 0x20); + gMain.state++; + } + break; + case 5: + { + u8 ID; + + GetMonSpriteTemplate_803C56C(postEvoSpecies, 3); + gUnknown_02024E8C.affineAnims = gDummySpriteAffineAnimTable; + sEvoInfo.postEvoSpriteID = ID = CreateSprite(&gUnknown_02024E8C, 120, 64, 30); + + gSprites[ID].callback = nullsub_37; + gSprites[ID].oam.paletteNum = 2; + gMain.state++; + } + break; + case 6: + BeginNormalPaletteFade(-1, 0, 0x10, 0, 0); + SetMainCallback2(CB2_TradeEvolutionSceneUpdate); + REG_DISPCNT = DISPCNT_OBJ_ON | DISPCNT_BG0_ON | DISPCNT_BG1_ON | DISPCNT_OBJ_1D_MAP; + break; + } +} + +void TradeEvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, u8 preEvoSpriteID, u8 partyID) +{ + u8 name[20]; + u16 currSpecies; + u32 TiD, PiD; + const struct CompressedSpritePalette** pokePal; + u8 ID; + + GetMonData(mon, MON_DATA_NICKNAME, name); + StringCopy10(gStringVar1, name); + StringCopy(gStringVar2, gSpeciesNames[speciesToEvolve]); + + gAffineAnimsDisabled = TRUE; + + // preEvo sprite + currSpecies = GetMonData(mon, MON_DATA_SPECIES); + PiD = GetMonData(mon, MON_DATA_PERSONALITY); + TiD = GetMonData(mon, MON_DATA_OT_ID); + sEvoInfo.preEvoSpriteID = preEvoSpriteID; + DecompressPicFromTable_2(&gMonFrontPicTable[speciesToEvolve], + gMonFrontPicCoords[speciesToEvolve].coords, + gMonFrontPicCoords[speciesToEvolve].y_offset, + (void*)(0x2000000), + gUnknown_081FAF4C[1], speciesToEvolve); + pokePal = (void*) GetMonSpritePalStructFromOtIdPersonality(speciesToEvolve, TiD, PiD); + LoadCompressedPalette(*pokePal, 0x120, 0x20); + + GetMonSpriteTemplate_803C56C(speciesToEvolve, 1); + gUnknown_02024E8C.affineAnims = gDummySpriteAffineAnimTable; + sEvoInfo.postEvoSpriteID = ID = CreateSprite(&gUnknown_02024E8C, 120, 64, 30); + + gSprites[ID].callback = nullsub_37; + gSprites[ID].oam.paletteNum = 2; + gSprites[ID].invisible = 1; + + LoadEvoSparkleSpriteAndPal(); + + sEvoInfo.evoTaskID = ID = CreateTask(Task_TradeEvolutionScene, 0); + gTasks[ID].tState = 0; + gTasks[ID].tPreEvoSpecies = currSpecies; + gTasks[ID].tPostEvoSpecies = speciesToEvolve; + gTasks[ID].tMonPtrHI = (u32)(mon); + gTasks[ID].tMonPtrLO = (u32)(mon) >> 0x10; + gTasks[ID].tLearnsFirstMove = TRUE; + gTasks[ID].tEvoWasStopped = FALSE; + gTasks[ID].tPartyID = partyID; + + SetMainCallback2(CB2_TradeEvolutionSceneUpdate); +} + +static void CB2_EvolutionSceneUpdate(void) +{ + AnimateSprites(); + BuildOamBuffer(); + sub_800374C(&gUnknown_03004210); + UpdatePaletteFade(); + RunTasks(); +} + +static void CB2_TradeEvolutionSceneUpdate(void) +{ + AnimateSprites(); + BuildOamBuffer(); + sub_80035AC(&gUnknown_03004828->window); + UpdatePaletteFade(); + RunTasks(); +} + +static void CreateShedinja(u16 preEvoSpecies, struct Pokemon* mon) +{ + u32 data = 0; + if (gEvolutionTable[preEvoSpecies].evolutions[0].method == EVO_LEVEL_NINJASK && gPlayerPartyCount < 6) + { + s32 i; + struct Pokemon* Shedinja = &gPlayerParty[gPlayerPartyCount]; + const struct EvolutionData* EvoTable; + const struct EvolutionData* Evos; + + CopyMon(Shedinja, mon, sizeof(struct Pokemon)); + SetMonData(Shedinja, MON_DATA_SPECIES, (void*)(&gEvolutionTable[preEvoSpecies].evolutions[1].targetSpecies)); + SetMonData(Shedinja, MON_DATA_NICKNAME, (void*)(gSpeciesNames[gEvolutionTable[preEvoSpecies].evolutions[1].targetSpecies])); + SetMonData(Shedinja, MON_DATA_HELD_ITEM, (void*)(&data)); + SetMonData(Shedinja, MON_DATA_MARKINGS, (void*)(&data)); + SetMonData(Shedinja, MON_DATA_10, (void*)(&data)); + for (i = MON_DATA_COOL_RIBBON; i < MON_DATA_COOL_RIBBON + 5; i++) + SetMonData(Shedinja, i, (void*)(&data)); + for (i = MON_DATA_CHAMPION_RIBBON; i <= MON_DATA_FATEFUL_ENCOUNTER; i++) + SetMonData(Shedinja, i, (void*)(&data)); + SetMonData(Shedinja, MON_DATA_STATUS, (void*)(&data)); + data = 0xFF; + SetMonData(Shedinja, MON_DATA_MAIL, (void*)(&data)); + + CalculateMonStats(Shedinja); + CalculatePlayerPartyCount(); + + // can't match it otherwise, ehh + EvoTable = gEvolutionTable; + Evos = EvoTable + preEvoSpecies; + GetSetPokedexFlag(SpeciesToNationalPokedexNum(Evos->evolutions[1].targetSpecies), 2); + GetSetPokedexFlag(SpeciesToNationalPokedexNum(Evos->evolutions[1].targetSpecies), 3); + + if (GetMonData(Shedinja, MON_DATA_SPECIES) == SPECIES_SHEDINJA + && GetMonData(Shedinja, MON_DATA_LANGUAGE) == LANGUAGE_JAPANESE + && GetMonData(mon, MON_DATA_SPECIES) == SPECIES_NINJASK) + SetMonData(Shedinja, MON_DATA_NICKNAME, sUnknownShedinjaJpnString); + } +} + +static void Task_EvolutionScene(u8 taskID) +{ + u32 var; + struct Pokemon* mon = (struct Pokemon*)(gTasks[taskID].tMonPtrHI | (gTasks[taskID].tMonPtrLO << 0x10)); + + // check if B Button was held, so the evolution gets stopped + if (gMain.heldKeys == B_BUTTON && gTasks[taskID].tState == 8 && gTasks[taskID].tBits & TASK_BIT_CAN_STOP) + { + gTasks[taskID].tState = 16; + if (gTasks[sEvoGraphicsTaskID].isActive) + gTasks[sEvoGraphicsTaskID].EvoGraphicsTaskEvoStop = TRUE; + } + switch (gTasks[taskID].tState) + { + case 0: + BeginNormalPaletteFade(-1, 0, 0x10, 0, 0); + gSprites[sEvoInfo.preEvoSpriteID].invisible = 0; + gTasks[taskID].tState++; + break; + case 1: // print 'whoa, poke is evolving!!!' msg + if (!gPaletteFade.active) + { + StringExpandPlaceholders(gStringVar4, gUnknown_08400C4A); + sub_8002EB0(&gUnknown_03004210, gStringVar4, 144, 2, 15); + gTasks[taskID].tState++; + } + break; + case 2: // wait for string, play cry + if (gUnknown_03004210.state == 0) + { + PlayCry1(gTasks[taskID].tPreEvoSpecies, 0); + gTasks[taskID].tState++; + } + break; + case 3: // wait for cry, play tu du SE + if (IsCryFinished()) + { + PlaySE(BGM_ME_SHINKA); + gTasks[taskID].tState++; + } + break; + case 4: // play evolution music and fade screen black + if (!IsSEPlaying()) + { + PlayNewMapMusic(BGM_SHINKA); + gTasks[taskID].tState++; + BeginNormalPaletteFade(0x1C, 4, 0, 0x10, 0); + } + break; + case 5: // after screen fade, preapre evo sparkles + if (!gPaletteFade.active) + { + sEvoGraphicsTaskID = LaunchTask_PreEvoSparklesSet1(17); + gTasks[taskID].tState++; + } + break; + case 6: // another set of evo sparkles + if (!gTasks[sEvoGraphicsTaskID].isActive) + { + gTasks[taskID].tState++; + sEvoInfo.field_3 = 1; + sEvoGraphicsTaskID = LaunchTask_PreEvoSparklesSet2(); + } + break; + case 7: // launch task that flashes pre evo with post evo sprites + if (!gTasks[sEvoGraphicsTaskID].isActive) + { + sEvoGraphicsTaskID = sub_8149E7C(sEvoInfo.preEvoSpriteID, sEvoInfo.postEvoSpriteID); + gTasks[taskID].tState++; + } + break; + case 8: // wait for the above task to finish + if (--sEvoInfo.field_3 == 0) + { + sEvoInfo.field_3 = 3; + if (!gTasks[sEvoGraphicsTaskID].isActive) + gTasks[taskID].tState++; + } + break; + case 9: // post evo sparkles + sEvoGraphicsTaskID = LaunchTask_PostEvoSparklesSet1(); + gTasks[taskID].tState++; + break; + case 10: + if (!gTasks[sEvoGraphicsTaskID].isActive) + { + sEvoGraphicsTaskID = LaunchTask_PostEvoSparklesSet2AndFlash(gTasks[taskID].tPostEvoSpecies); + gTasks[taskID].tState++; + } + break; + case 11: // play tu du sound after evolution + if (!gTasks[sEvoGraphicsTaskID].isActive) + { + PlaySE(SE_EXP); + gTasks[taskID].tState++; + } + break; + case 12: // play poke cry after evolution and return screed to pre-fade state + if (IsSEPlaying()) + { + m4aMPlayAllStop(); + PlayCry1(gTasks[taskID].tPostEvoSpecies, 0); + memcpy(&gPlttBufferUnfaded[0x20], gUnk_2009000, 0x60); + BeginNormalPaletteFade(0x1C, 0, 0x10, 0, 0); + gTasks[taskID].tState++; + } + break; + case 13: // congratulations string and rename prompt + if (IsCryFinished() && !gPaletteFade.active) + { + StringExpandPlaceholders(gStringVar4, gUnknown_08400C60); + sub_8002EB0(&gUnknown_03004210, gStringVar4, 144, 2, 15); + PlayBGM(BGM_FANFA5); + gTasks[taskID].tState++; + SetMonData(mon, MON_DATA_SPECIES, (void*)(&gTasks[taskID].tPostEvoSpecies)); + CalculateMonStats(mon); + EvolutionRenameMon(mon, gTasks[taskID].tPreEvoSpecies, gTasks[taskID].tPostEvoSpecies); + GetSetPokedexFlag(SpeciesToNationalPokedexNum(gTasks[taskID].tPostEvoSpecies), 2); + GetSetPokedexFlag(SpeciesToNationalPokedexNum(gTasks[taskID].tPostEvoSpecies), 3); + IncrementGameStat(14); + } + break; + case 14: // check if it wants to learn a new move + if (gUnknown_03004210.state == 0) + { + var = MonTryLearningNewMove(mon, gTasks[taskID].tLearnsFirstMove); + if (var != 0 && !gTasks[taskID].tEvoWasStopped) + { + u8 text[20]; + + Overworld_PlaySpecialMapMusic(); + gTasks[taskID].tBits |= TASK_BIT_LEARN_MOVE; + gTasks[taskID].tLearnsFirstMove = FALSE; + gTasks[taskID].tLearnMoveState = 0; + GetMonData(mon, MON_DATA_NICKNAME, text); + StringCopy10(gBattleTextBuff1, text); + if (var == 0xFFFF) // no place to learn it + gTasks[taskID].tState = 21; + else if (var == 0xFFFE) // it already knows that move + break; + else + gTasks[taskID].tState = 19; // has less than 4 moves, so it's been learned + } + else // no move to learn + { + BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); + gTasks[taskID].tState++; + } + } + break; + case 15: // task has finished, return + if (!gPaletteFade.active) + { + if (!(gTasks[taskID].tBits & TASK_BIT_LEARN_MOVE)) + Overworld_PlaySpecialMapMusic(); + if (!gTasks[taskID].tEvoWasStopped) + CreateShedinja(gTasks[taskID].tPreEvoSpecies, mon); + DestroyTask(taskID); + SetMainCallback2(gCB2_AfterEvolution); + } + break; + case 16: // evolution has been canceled, stop music and re-fade palette + if (!gTasks[sEvoGraphicsTaskID].isActive) + { + m4aMPlayAllStop(); + BeginNormalPaletteFade(0x6001C, 0, 0x10, 0, 0x7FFF); + gTasks[taskID].tState++; + } + break; + case 17: // play cry of the pokemon trying to evolve again, evolution has been stopped + if (!gPaletteFade.active) + { + PlayCry1(gTasks[taskID].tPreEvoSpecies, 0); + gTasks[taskID].tState++; + } + break; + case 18: // after the cry, print the string 'WHOA IT DID NOT EVOLVE!!!' + if (IsCryFinished()) + { + StringExpandPlaceholders(gStringVar4, gUnknown_08400C8D); + sub_8002EB0(&gUnknown_03004210, gStringVar4, 144, 2, 15); + gTasks[taskID].tEvoWasStopped = TRUE; + gTasks[taskID].tState = 14; + } + break; + case 19: // pokemon learned a new move, print string and play a fanfare + if (gUnknown_03004210.state == 0 && !IsSEPlaying()) + { + sub_8024CEC(); + PlayFanfare(BGM_FANFA1); + StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[3]); + sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); + gTasks[taskID].tLearnsFirstMove = 0x40; // re-used as a counter + gTasks[taskID].tState++; + } + break; + case 20: // wait a bit and check if can learn another move + if (gUnknown_03004210.state == 0 && !IsSEPlaying() && --gTasks[taskID].tLearnsFirstMove == 0) + gTasks[taskID].tState = 14; + break; + case 21: // try to learn a new move + switch (gTasks[taskID].tLearnMoveState) + { + case 0: + if (gUnknown_03004210.state == 0 && !IsSEPlaying()) + { + sub_8024CEC(); + StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[4]); + sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); + gTasks[taskID].tLearnMoveState++; + } + break; + case 1: + if (gUnknown_03004210.state == 0 && !IsSEPlaying()) + { + StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[5]); + sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); + gTasks[taskID].tLearnMoveState++; + } + break; + case 2: + if (gUnknown_03004210.state != 0) + break; + if (!IsSEPlaying()) + { + StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[6]); + sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); + gTasks[taskID].tData9 = 5; + gTasks[taskID].tData10 = 9; + gTasks[taskID].tLearnMoveState++; + } + case 3: + if (gUnknown_03004210.state == 0 && !IsSEPlaying()) + { + sub_8023A80(); + gTasks[taskID].tLearnMoveState++; + sEvoCursorPos = 0; + sub_802BC6C(); + } + break; + case 4: + if (gMain.newKeys & DPAD_UP && sEvoCursorPos != 0) + { + PlaySE(SE_SELECT); + nullsub_6(); + sEvoCursorPos = 0; + sub_802BC6C(); + } + if (gMain.newKeys & DPAD_DOWN && sEvoCursorPos == 0) + { + PlaySE(SE_SELECT); + nullsub_6(); + sEvoCursorPos = 1; + sub_802BC6C(); + } + if (gMain.newKeys & A_BUTTON) + { + sub_8023AD8(); + StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[292]); + sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); + PlaySE(SE_SELECT); + if (sEvoCursorPos != 0) + gTasks[taskID].tLearnMoveState = gTasks[taskID].tData10; + else + { + gTasks[taskID].tLearnMoveState = gTasks[taskID].tData9; + if (gTasks[taskID].tLearnMoveState == 5) + BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); + } + } + if (gMain.newKeys & B_BUTTON) + { + sub_8023AD8(); + StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[292]); + sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); + PlaySE(SE_SELECT); + gTasks[taskID].tLearnMoveState = gTasks[taskID].tData10; + } + break; + case 5: + if (!gPaletteFade.active) + { + sub_809D9F0(gPlayerParty, gTasks[taskID].tPartyID, + gPlayerPartyCount - 1, CB2_EvolutionSceneLoadGraphics, + gMoveToLearn); + gTasks[taskID].tLearnMoveState++; + } + break; + case 6: + if (!gPaletteFade.active && gMain.callback2 == CB2_EvolutionSceneUpdate) + { + var = sub_809FA30(); // moveID + if (var == 4) + gTasks[taskID].tLearnMoveState = 9; + else + { + u16 move = GetMonData(mon, var + MON_DATA_MOVE1); + if (IsHMMove2(move)) + { + StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[307]); + sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); + gTasks[taskID].tLearnMoveState = 11; + } + else + { + gBattleTextBuff2[0] = 0xFD; + gBattleTextBuff2[1] = 2; + gBattleTextBuff2[2] = move; + gBattleTextBuff2[3] = (move & 0xFF00) >> 8; + gBattleTextBuff2[4] = EOS; + RemoveMonPPBonus(mon, var); + SetMonMoveSlot(mon, gMoveToLearn, var); + StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[207]); + sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); + gTasks[taskID].tLearnMoveState++; + } + } + } + break; + case 7: + if (gUnknown_03004210.state == 0 && !IsSEPlaying()) + { + StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[7]); + sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); + gTasks[taskID].tLearnMoveState++; + } + break; + case 8: + if (gUnknown_03004210.state == 0 && !IsSEPlaying()) + { + StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[208]); + sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); + gTasks[taskID].tState = 19; + } + break; + case 9: + StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[8]); + sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); + gTasks[taskID].tData9 = 10; + gTasks[taskID].tData10 = 0; + gTasks[taskID].tLearnMoveState = 3; + break; + case 10: + StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[9]); + sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); + gTasks[taskID].tState = 14; + break; + case 11: + if (gUnknown_03004210.state == 0 && !IsSEPlaying()) + gTasks[taskID].tLearnMoveState = 5; + break; + } + break; + } +} + +static void Task_TradeEvolutionScene(u8 taskID) +{ + u32 var; + struct Pokemon* mon = (struct Pokemon*)(gTasks[taskID].tMonPtrHI | (gTasks[taskID].tMonPtrLO << 0x10)); + + switch (gTasks[taskID].tState) + { + case 0: + StringExpandPlaceholders(gStringVar4, gUnknown_08400C4A); + sub_8002EB0(&gUnknown_03004828->window, gStringVar4, gUnknown_03004828->textWindowBaseTileNum, 2, 15); + gTasks[taskID].tState++; + break; + case 1: + if (gUnknown_03004828->window.state == 0) + { + PlayCry1(gTasks[taskID].tPreEvoSpecies, 0); + gTasks[taskID].tState++; + } + break; + case 2: + if (IsCryFinished()) + { + m4aSongNumStop(BGM_SHINKA); + PlaySE(BGM_ME_SHINKA); + gTasks[taskID].tState++; + } + break; + case 3: + if (!IsSEPlaying()) + { + PlayBGM(BGM_SHINKA); + gTasks[taskID].tState++; + BeginNormalPaletteFade(0x1C, 4, 0, 0x10, 0); + } + break; + case 4: + if (!gPaletteFade.active) + { + REG_DISPCNT = DISPCNT_OBJ_ON | DISPCNT_BG0_ON | DISPCNT_BG1_ON | DISPCNT_OBJ_1D_MAP; + sEvoGraphicsTaskID = LaunchTask_PreEvoSparklesSet1(17); + gTasks[taskID].tState++; + } + break; + case 5: + if (!gTasks[sEvoGraphicsTaskID].isActive) + { + gTasks[taskID].tState++; + sEvoInfo.field_3 = 1; + sEvoGraphicsTaskID = LaunchTask_PreEvoSparklesSet2(); + } + break; + case 6: + if (!gTasks[sEvoGraphicsTaskID].isActive) + { + sEvoGraphicsTaskID = sub_8149E7C(sEvoInfo.preEvoSpriteID, sEvoInfo.postEvoSpriteID); + gTasks[taskID].tState++; + } + break; + case 7: + if (--sEvoInfo.field_3 == 0) + { + sEvoInfo.field_3 = 3; + if (!gTasks[sEvoGraphicsTaskID].isActive) + gTasks[taskID].tState++; + } + break; + case 8: + sEvoGraphicsTaskID = LaunchTask_PostEvoSparklesSet1(); + gTasks[taskID].tState++; + break; + case 9: + if (!gTasks[sEvoGraphicsTaskID].isActive) + { + sEvoGraphicsTaskID = LaunchTask_PostEvoSparklesSet2AndFlash_Trade(gTasks[taskID].tPostEvoSpecies); + gTasks[taskID].tState++; + } + break; + case 10: + if (!gTasks[sEvoGraphicsTaskID].isActive) + { + PlaySE(SE_EXP); + gTasks[taskID].tState++; + } + break; + case 11: + if (IsSEPlaying()) + { + PlayCry1(gTasks[taskID].tPostEvoSpecies, 0); + memcpy(&gPlttBufferUnfaded[0x20], gUnk_2009000, 0x60); + BeginNormalPaletteFade(1, 0, 0x10, 0, 0); + gTasks[taskID].tState++; + } + break; + case 12: + if (IsCryFinished() && !gPaletteFade.active) + { + StringExpandPlaceholders(gStringVar4, gUnknown_08400C60); + sub_8002EB0(&gUnknown_03004828->window, gStringVar4, gUnknown_03004828->textWindowBaseTileNum, 2, 15); + PlayFanfare(BGM_FANFA5); + gTasks[taskID].tState++; + SetMonData(mon, MON_DATA_SPECIES, (void*)(&gTasks[taskID].tPostEvoSpecies)); + CalculateMonStats(mon); + EvolutionRenameMon(mon, gTasks[taskID].tPreEvoSpecies, gTasks[taskID].tPostEvoSpecies); + GetSetPokedexFlag(SpeciesToNationalPokedexNum(gTasks[taskID].tPostEvoSpecies), 2); + GetSetPokedexFlag(SpeciesToNationalPokedexNum(gTasks[taskID].tPostEvoSpecies), 3); + IncrementGameStat(14); + } + break; + case 13: + if (gUnknown_03004828->window.state == 0 && IsFanfareTaskInactive() == TRUE) + { + var = MonTryLearningNewMove(mon, gTasks[taskID].tLearnsFirstMove); + if (var != 0 && !gTasks[taskID].tEvoWasStopped) + { + u8 text[20]; + + gTasks[taskID].tBits |= TASK_BIT_LEARN_MOVE; + gTasks[taskID].tLearnsFirstMove = FALSE; + gTasks[taskID].tLearnMoveState = 0; + GetMonData(mon, MON_DATA_NICKNAME, text); + StringCopy10(gBattleTextBuff1, text); + if (var == 0xFFFF) + gTasks[taskID].tState = 17; + else if (var == 0xFFFE) + break; + else + gTasks[taskID].tState = 15; + } + else + { + PlayBGM(BGM_SHINKA); + sub_8002EB0(&gUnknown_03004828->window, gOtherText_LinkStandby2, gUnknown_03004828->textWindowBaseTileNum, 2, 15); + gTasks[taskID].tState++; + } + } + break; + case 14: + if (gUnknown_03004828->window.state == 0) + { + DestroyTask(taskID); + SetMainCallback2(gCB2_AfterEvolution); + } + break; + case 15: + if (gUnknown_03004828->window.state == 0 && !IsSEPlaying()) + { + sub_8024CEC(); + PlayFanfare(BGM_FANFA1); + StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[3]); + sub_8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15); + gTasks[taskID].tLearnsFirstMove = 0x40; // re-used as a counter + gTasks[taskID].tState++; + } + break; + case 16: + if (gUnknown_03004828->window.state == 0 && IsFanfareTaskInactive() == TRUE && --gTasks[taskID].tLearnsFirstMove == 0) + gTasks[taskID].tState = 13; + break; + case 17: + switch (gTasks[taskID].tLearnMoveState) + { + case 0: + if (gUnknown_03004828->window.state == 0 && !IsSEPlaying()) + { + sub_8024CEC(); + StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[4]); + sub_8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15); + gTasks[taskID].tLearnMoveState++; + } + break; + case 1: + if (gUnknown_03004828->window.state == 0 && !IsSEPlaying()) + { + StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[5]); + sub_8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15); + gTasks[taskID].tLearnMoveState++; + } + break; + case 2: + if (gUnknown_03004828->window.state != 0) + break; + if (!IsSEPlaying()) + { + StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[6]); + sub_8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15); + gTasks[taskID].tData9 = 5; + gTasks[taskID].tData10 = 9; + gTasks[taskID].tLearnMoveState++; + } + case 3: + if (gUnknown_03004828->window.state == 0 && !IsSEPlaying()) + { + DrawTextWindow(&gUnknown_03004828->window, 24, 8, 29, 13); + sEvoCursorPos = 0; + InitWindow(&gUnknown_03004828->window, gOtherText_YesNoAndPlayer, gUnknown_03004828->textWindowBaseTileNum + 128, 25, 9); + sub_8002F44(&gUnknown_03004828->window); + sub_814A5C0(0, 0xFFFF, 0xC, 0x2D9F, 0x20); + sub_81150D8(); + gTasks[taskID].tLearnMoveState++; + sEvoCursorPos = 0; + } + break; + case 4: + if (gMain.newKeys & DPAD_UP && sEvoCursorPos != 0) + { + PlaySE(SE_SELECT); + EvoDummyFunc2(); + sEvoCursorPos = 0; + sub_81150D8(); + } + if (gMain.newKeys & DPAD_DOWN && sEvoCursorPos == 0) + { + PlaySE(SE_SELECT); + EvoDummyFunc2(); + sEvoCursorPos = 1; + sub_81150D8(); + } + if (gMain.newKeys & A_BUTTON) + { + ZeroFillWindowRect(&gUnknown_03004828->window, 0x18, 8, 0x1D, 0xD); + DestroyMenuCursor(); + StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[292]); + sub_8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15); + PlaySE(SE_SELECT); + if (sEvoCursorPos != 0) + gTasks[taskID].tLearnMoveState = gTasks[taskID].tData10; + else + { + gTasks[taskID].tLearnMoveState = gTasks[taskID].tData9; + if (gTasks[taskID].tLearnMoveState == 5) + BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); + } + } + if (gMain.newKeys & B_BUTTON) + { + ZeroFillWindowRect(&gUnknown_03004828->window, 0x18, 8, 0x1D, 0xD); + DestroyMenuCursor(); + StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[292]); + sub_8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15); + PlaySE(SE_SELECT); + gTasks[taskID].tLearnMoveState = gTasks[taskID].tData10; + } + break; + case 5: + if (!gPaletteFade.active) + { + sub_809D9F0(gPlayerParty, gTasks[taskID].tPartyID, + gPlayerPartyCount - 1, CB2_TradeEvolutionSceneLoadGraphics, + gMoveToLearn); + gTasks[taskID].tLearnMoveState++; + } + break; + case 6: + if (!gPaletteFade.active && gMain.callback2 == CB2_TradeEvolutionSceneUpdate) + { + var = sub_809FA30(); // moveID + if (var == 4) + gTasks[taskID].tLearnMoveState = 9; + else + { + u16 move = GetMonData(mon, var + MON_DATA_MOVE1); + if (IsHMMove2(move)) + { + StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[307]); + sub_8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15); + gTasks[taskID].tLearnMoveState = 11; + } + else + { + gBattleTextBuff2[0] = 0xFD; + gBattleTextBuff2[1] = 2; + gBattleTextBuff2[2] = move; + gBattleTextBuff2[3] = (move & 0xFF00) >> 8; + gBattleTextBuff2[4] = EOS; + RemoveMonPPBonus(mon, var); + SetMonMoveSlot(mon, gMoveToLearn, var); + StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[207]); + sub_8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15); + gTasks[taskID].tLearnMoveState++; + } + } + } + break; + case 7: + if (gUnknown_03004828->window.state == 0 && !IsSEPlaying()) + { + StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[7]); + sub_8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15); + gTasks[taskID].tLearnMoveState++; + } + break; + case 8: + if (gUnknown_03004828->window.state == 0 && !IsSEPlaying()) + { + StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[208]); + sub_8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15); + gTasks[taskID].tState = 15; + } + break; + case 9: + StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[8]); + sub_8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15); + gTasks[taskID].tData9 = 10; + gTasks[taskID].tData10 = 0; + gTasks[taskID].tLearnMoveState = 3; + break; + case 10: + StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[9]); + sub_8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15); + gTasks[taskID].tState = 13; + break; + case 11: + if (gUnknown_03004828->window.state == 0 && !IsSEPlaying()) + gTasks[taskID].tLearnMoveState = 5; + break; + } + break; + } +} + +/* +DizzyEgg, 27.08.2017 +NOTE: + Functions below are all unused. + What's more, they do NOT exist in Emerald. + That's why I think there is no reason to decompile those, + as they probably were prototypes for the evolution + functions. +*/ + +/* +void unref_sub_8113B50(u8 *a, u8 *b) +{ + //u8 *sp0 = a; + //u8 *sp4 = b; +#define sp0 a +#define sp4 b + s32 sp8; + s32 spC = 0; + u32 sp10 = 0; + s32 sp14; + s32 r6; + u32 r8; + + for (sp8 = 0; sp8 < 64; sp8++) + { + sEvoInfo.unk84[sp8] = 0; + sEvoInfo.unk4[sp8] = 0; + sEvoInfo.unk44[sp8] = 0; + for (r6 = 0; r6 < 32; r6++) + { + sEvoInfo.unk10C4[sp8][r6] = 0; + sEvoInfo.unk18C4[sp8][r6] = 0; + sEvoInfo.unk20C4[sp8][r6] = 0; + sEvoInfo.unk28C4[sp8][r6] = 0; + sEvoInfo.unkC4[sp8][r6] = 0; + sEvoInfo.unk8C4[sp8][r6] = 0; + sEvoInfo.unk30C4[sp8][r6] = 0; + sEvoInfo.unk38C4[sp8][r6] = 0; + + sEvoInfo.unk60C4[sp8][r6] = 0; + sEvoInfo.unk70C4[sp8][r6] = 0; + sEvoInfo.unk80C4[sp8][r6] = 0; + sEvoInfo.unk90C4[sp8][r6] = 0; + } + } + + sEvoInfo.unkA0C4 = 64; + r8 = 0; + for (sp8 = 0; sp8 < 64; sp8++) + { + //_08113C32 + u32 r3 = 0; + u8 *r2 = sp0 + r8; + + for (r6 = 0; r6 < 64; r6++) + { + sEvoInfo.unk40C4[sp8][r6 >> 1] = r2; + switch (r3) + { + case 0: + switch (r6 & 1) + { + case 0: + if (*r2 & 0xF) + { + sEvoInfo.unk10C4[sp8][sEvoInfo.unk4[sp8]] = r6; + r3 = 1; + } + break; + case 1: + if (*r2 & 0xF0) + { + sEvoInfo.unk10C4[sp8][sEvoInfo.unk4[sp8]] = r6; + r3 = 1; + } + break; + } + break; + case 1: + switch (r6 & r3) + { + case 0: + if (*r2 & 0xF) + { + sEvoInfo.unk18C4[sp8][sEvoInfo.unk4[sp8]] = r6 - 1; + sEvoInfo.unk4[sp8]++; + r3 = 0; + } + break; + case 1: + if (*r2 & 0xF0) + { + sEvoInfo.unk18C4[sp8][sEvoInfo.unk4[sp8]] = r6 - 1; + sEvoInfo.unk4[sp8]++; + r3 = 0; + } + break; + } + } + //if (!((r6 + 1) & 7)) + if ((r6 + 1) % 8 == 0) + r2 += 0x1D; + else if (r6 & 1) + r2 += 1; + } + if (r3) + { + sEvoInfo.unk18C4[sp8][sEvoInfo.unk4[sp8]] = r6; + sEvoInfo.unk4[sp8]++; + } + //_08113D26 + if (!((sp8 + 1) & 7)) + r8 += 0xE4; + else + r8 += 4; + } + //_08113D4A + r8 = 0; + for (sp8 = 0; sp8 < 64; sp8++) + { + //_08113D6A + u32 r3 = 0; + u8 *r2 = sp4 + r8; + + for (r6 = 0; r6 < 64; r6++) + { + switch (r3) + { + case 0: + switch (r6 & 1) + { + case 0: + if (*r2 & 0xF) + { + sEvoInfo.unk20C4[sp8][sEvoInfo.unk44[sp8]] = r6; + r3 = 1; + } + break; + case 1: + if (*r2 & 0xF0) + { + sEvoInfo.unk20C4[sp8][sEvoInfo.unk44[sp8]] = r6; + r3 = 1; + } + break; + } + break; + case 1: + switch (r6 & r3) + { + case 0: + if (*r2 & 0xF) + { + sEvoInfo.unk28C4[sp8][sEvoInfo.unk44[sp8]] = r6 - 1; + sEvoInfo.unk44[sp8]++; + r3 = 0; + } + break; + case 1: + if (*r2 & 0xF0) + { + sEvoInfo.unk28C4[sp8][sEvoInfo.unk44[sp8]] = r6 - 1; + sEvoInfo.unk44[sp8]++; + r3 = 0; + } + break; + } + } + //_08113DE4 + if (!((r6 + 1) & 7)) + r2 += 0x1D; + else if (r6 & 1) + r2 += 1; + + } + if (r3) + { + sEvoInfo.unk28C4[sp8][sEvoInfo.unk44[sp8]] = r6; + sEvoInfo.unk44[sp8]++; + } + //if (!((sp8 + 1) & 7)) + if ((sp8 + 1) % 8 == 0) + r8 += 0xE4; + else + r8 += 4; + } + + for (sp8 = 0; sp8 < 0x40; sp8++) //_08113E3A + { + if (sEvoInfo.unk4[sp8] < sEvoInfo.unk44[sp8]) + { + for (spC = 0; spC < sEvoInfo.unk4[sp8]; spC++) + { + sp14 = 0x100; + + for (r6 = 0; r6 < sEvoInfo.unk44[sp8]; r6++) + { + s32 r3; + + //_08113EA4 + if (sEvoInfo.unk10C4[sp8][spC] > sEvoInfo.unk20C4[sp8][r6]) + r3 = sEvoInfo.unk10C4[sp8][spC] - sEvoInfo.unk20C4[sp8][r6]; + else + r3 = sEvoInfo.unk20C4[sp8][r6] - sEvoInfo.unk10C4[sp8][spC]; + + if (sEvoInfo.unk18C4[sp8][spC] > sEvoInfo.unk28C4[sp8][spC]) + r3 += sEvoInfo.unk18C4[sp8][spC] - sEvoInfo.unk28C4[sp8][spC]; + else + r3 += sEvoInfo.unk28C4[sp8][spC] - sEvoInfo.unk18C4[sp8][spC]; + + if (sp14 >= r3 && sEvoInfo.unkC4[sp8][r6] == 0 && sEvoInfo.unk8C4[sp8][r6] == 0) + { + sp10 = r6; + sp14 = r3; + } + } + //_08113F3E + sub_81141F0(spC, sp10, sp8); + } + //_08113F54 + + for (r6 = 0; r6 < sEvoInfo.unk44[sp8]; r6++) + { + if (sEvoInfo.unkC4[sp8][r6] == 0 && sEvoInfo.unk8C4[sp8][r6] == 0) + sub_811430C(r6, sp8); + } + } + //_08113F9E + if (sEvoInfo.unk4[sp8] == sEvoInfo.unk44[sp8]) + { + for (r6 = 0; r6 < sEvoInfo.unk4[sp8]; r6++) + sub_81141F0(r6, r6, sp8); + } + //_08113FCC + if (sEvoInfo.unk4[sp8] > sEvoInfo.unk44[sp8]) + { + for (sp10 = 0; sp10 < sEvoInfo.unk44[sp8]; sp10++) + { + sp14 = 0x100; + + for (r6 = 0; r6 < sEvoInfo.unk4[sp8]; r6++) + { + s32 r3; + + if (sEvoInfo.unk10C4[sp8][r6] > sEvoInfo.unk20C4[sp8][sp10]) + r3 = sEvoInfo.unk10C4[sp8][r6] - sEvoInfo.unk20C4[sp8][sp10]; + else + r3 = sEvoInfo.unk20C4[sp8][sp10] - sEvoInfo.unk10C4[sp8][r6]; + + if (sEvoInfo.unk18C4[sp8][r6] > sEvoInfo.unk28C4[sp8][sp10]) + r3 += sEvoInfo.unk18C4[sp8][r6] - sEvoInfo.unk28C4[sp8][sp10]; + else + r3 += sEvoInfo.unk28C4[sp8][sp10] - sEvoInfo.unk18C4[sp8][r6]; + + //r3 = abs(sEvoInfo.unk10C4[sp8][r6] - sEvoInfo.unk20C4[sp8][sp10]); + //r3 += abs(sEvoInfo.unk18C4[sp8][r6] - sEvoInfo.unk28C4[sp8][sp10]); + + if (sp14 > r3 && sEvoInfo.unkC4[sp8][r6] == 0) + { + spC = r6; + sp14 = r3; + } + } + //_081140C4 + sEvoInfo.unk30C4[sp8][spC] = sEvoInfo.unk20C4[sp8][sp10]; + sEvoInfo.unk38C4[sp8][spC] = sEvoInfo.unk28C4[sp8][sp10]; + sEvoInfo.unkC4[sp8][spC] = 1; + } + //_08114104 + for (r6 = 0; r6 < sEvoInfo.unk4[sp8]; r6++) + { + sEvoInfo.unk20C4[sp8][r6] = sEvoInfo.unk30C4[sp8][r6]; + sEvoInfo.unk28C4[sp8][r6] = sEvoInfo.unk38C4[sp8][r6]; + if (sEvoInfo.unkC4[sp8][r6] != 0) + { + sEvoInfo.unkC4[sp8][r6] = 0; + sub_81141F0(r6, r6, sp8); + } + else + { + // Ugh, can't get this part right + //u8 *ptr1 = &sEvoInfo.unk10C4[sp8][r6]; + //u8 *ptr2 = &sEvoInfo.unk18C4[sp8][r6]; + //s32 r2 = *ptr1 + (*ptr2 - *ptr1) / 2; + + //u8 r0_ = sEvoInfo.unk10C4[sp8][r6]; + //u8 r2_ = sEvoInfo.unk18C4[sp8][r6]; + //s32 r2 = (r0_ - r2_) / 2; + + s32 r2 = (sEvoInfo.unk18C4[sp8][r6] - sEvoInfo.unk10C4[sp8][r6]); + s32 r2_ = sEvoInfo.unk10C4[sp8][r6]; + + sEvoInfo.unk20C4[sp8][r6] = sEvoInfo.unk28C4[sp8][r6] = r2_ + r2 / 2; + sEvoInfo.unk28C4[sp8][r6]++; + sub_81141F0(r6, r6, sp8); + } + } + } + //_081141C4 + } +#undef sp0 +#undef sp4 +} +*/ +__attribute__((naked)) +void unref_sub_8113B50() +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + sub sp, 0x3C\n\ + str r0, [sp]\n\ + str r1, [sp, 0x4]\n\ + movs r0, 0\n\ + str r0, [sp, 0xC]\n\ + movs r1, 0\n\ + str r1, [sp, 0x10]\n\ + movs r2, 0\n\ + str r2, [sp, 0x8]\n\ + ldr r3, _08113C60 @ =0x02014800\n\ + mov r12, r3\n\ + ldr r4, _08113C64 @ =0x000018c4\n\ + add r4, r12\n\ + mov r10, r4\n\ + ldr r5, _08113C68 @ =0x000020c4\n\ + add r5, r12\n\ + mov r8, r5\n\ +_08113B7C:\n\ + adds r0, r3, 0\n\ + adds r0, 0x84\n\ + ldr r1, [sp, 0x8]\n\ + adds r0, r1, r0\n\ + strb r2, [r0]\n\ + adds r0, r3, 0x4\n\ + adds r0, r1, r0\n\ + strb r2, [r0]\n\ + ldr r4, _08113C6C @ =0x02014844\n\ + adds r0, r1, r4\n\ + strb r2, [r0]\n\ + movs r6, 0\n\ + lsls r1, 5\n\ + mov r9, r1\n\ + ldr r5, [sp, 0x8]\n\ + lsls r4, r5, 6\n\ +_08113B9C:\n\ + mov r0, r9\n\ + adds r1, r6, r0\n\ + ldr r5, _08113C70 @ =0x020158c4\n\ + adds r0, r1, r5\n\ + strb r2, [r0]\n\ + mov r5, r10\n\ + adds r0, r1, r5\n\ + strb r2, [r0]\n\ + mov r5, r8\n\ + adds r0, r1, r5\n\ + strb r2, [r0]\n\ + ldr r5, _08113C74 @ =0x020170c4\n\ + adds r0, r1, r5\n\ + strb r2, [r0]\n\ + adds r7, r3, 0\n\ + adds r7, 0xC4\n\ + adds r0, r1, r7\n\ + strb r2, [r0]\n\ + ldr r5, _08113C78 @ =0x000008c4\n\ + adds r0, r3, r5\n\ + adds r0, r1, r0\n\ + strb r2, [r0]\n\ + ldr r5, _08113C7C @ =0x000030c4\n\ + adds r0, r3, r5\n\ + adds r0, r1, r0\n\ + strb r2, [r0]\n\ + ldr r5, _08113C80 @ =0x000038c4\n\ + adds r0, r3, r5\n\ + adds r1, r0\n\ + strb r2, [r1]\n\ + lsls r1, r6, 1\n\ + adds r1, r4\n\ + ldr r5, _08113C84 @ =0x000060c4\n\ + adds r0, r3, r5\n\ + adds r0, r1, r0\n\ + strh r2, [r0]\n\ + ldr r5, _08113C88 @ =0x000070c4\n\ + adds r0, r3, r5\n\ + adds r0, r1, r0\n\ + strh r2, [r0]\n\ + ldr r5, _08113C8C @ =0x000080c4\n\ + adds r0, r3, r5\n\ + adds r0, r1, r0\n\ + strh r2, [r0]\n\ + ldr r5, _08113C90 @ =0x000090c4\n\ + adds r0, r3, r5\n\ + adds r1, r0\n\ + strh r2, [r1]\n\ + adds r6, 0x1\n\ + cmp r6, 0x1F\n\ + ble _08113B9C\n\ + ldr r0, [sp, 0x8]\n\ + adds r0, 0x1\n\ + str r0, [sp, 0x8]\n\ + cmp r0, 0x3F\n\ + ble _08113B7C\n\ + ldr r1, _08113C94 @ =0x0000a0c4\n\ + add r1, r12\n\ + movs r0, 0x40\n\ + strb r0, [r1]\n\ + movs r1, 0\n\ + mov r8, r1\n\ + movs r2, 0\n\ + str r2, [sp, 0x8]\n\ + movs r3, 0x80\n\ + lsls r3, 5\n\ + adds r3, r7\n\ + mov r12, r3\n\ + movs r4, 0xC0\n\ + lsls r4, 5\n\ + adds r4, r7\n\ + mov r9, r4\n\ + movs r5, 0\n\ + adds r4, r7, 0\n\ + subs r4, 0xC0\n\ +_08113C32:\n\ + movs r3, 0\n\ + ldr r2, [sp]\n\ + add r2, r8\n\ + movs r6, 0\n\ + ldr r0, [sp, 0x8]\n\ + adds r0, 0x1\n\ + str r0, [sp, 0x30]\n\ + ldr r1, [sp, 0x8]\n\ + lsls r1, 7\n\ + mov r10, r1\n\ + movs r7, 0x1\n\ + negs r7, r7\n\ +_08113C4A:\n\ + asrs r0, r6, 1\n\ + lsls r0, 2\n\ + add r0, r10\n\ + ldr r1, _08113C98 @ =0x020188c4\n\ + adds r0, r1\n\ + str r2, [r0]\n\ + cmp r3, 0\n\ + beq _08113C9C\n\ + cmp r3, 0x1\n\ + beq _08113CC6\n\ + b _08113CF4\n\ + .align 2, 0\n\ +_08113C60: .4byte 0x02014800\n\ +_08113C64: .4byte 0x000018c4\n\ +_08113C68: .4byte 0x000020c4\n\ +_08113C6C: .4byte 0x02014844\n\ +_08113C70: .4byte 0x020158c4\n\ +_08113C74: .4byte 0x020170c4\n\ +_08113C78: .4byte 0x000008c4\n\ +_08113C7C: .4byte 0x000030c4\n\ +_08113C80: .4byte 0x000038c4\n\ +_08113C84: .4byte 0x000060c4\n\ +_08113C88: .4byte 0x000070c4\n\ +_08113C8C: .4byte 0x000080c4\n\ +_08113C90: .4byte 0x000090c4\n\ +_08113C94: .4byte 0x0000a0c4\n\ +_08113C98: .4byte 0x020188c4\n\ +_08113C9C:\n\ + movs r0, 0x1\n\ + ands r0, r6\n\ + cmp r0, 0\n\ + beq _08113CAA\n\ + cmp r0, 0x1\n\ + beq _08113CB0\n\ + b _08113CF4\n\ +_08113CAA:\n\ + ldrb r1, [r2]\n\ + movs r0, 0xF\n\ + b _08113CB4\n\ +_08113CB0:\n\ + ldrb r1, [r2]\n\ + movs r0, 0xF0\n\ +_08113CB4:\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _08113CF4\n\ + ldrb r0, [r4]\n\ + adds r0, r5\n\ + add r0, r12\n\ + strb r6, [r0]\n\ + movs r3, 0x1\n\ + b _08113CF4\n\ +_08113CC6:\n\ + adds r0, r6, 0\n\ + ands r0, r3\n\ + cmp r0, 0\n\ + beq _08113CD4\n\ + cmp r0, 0x1\n\ + beq _08113CDA\n\ + b _08113CF4\n\ +_08113CD4:\n\ + ldrb r1, [r2]\n\ + movs r0, 0xF\n\ + b _08113CDE\n\ +_08113CDA:\n\ + ldrb r1, [r2]\n\ + movs r0, 0xF0\n\ +_08113CDE:\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _08113CF4\n\ + ldrb r0, [r4]\n\ + adds r0, r5\n\ + add r0, r9\n\ + strb r7, [r0]\n\ + ldrb r0, [r4]\n\ + adds r0, 0x1\n\ + strb r0, [r4]\n\ + movs r3, 0\n\ +_08113CF4:\n\ + adds r0, r6, 0x1\n\ + movs r1, 0x7\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _08113D02\n\ + adds r2, 0x1D\n\ + b _08113D0C\n\ +_08113D02:\n\ + movs r0, 0x1\n\ + ands r0, r6\n\ + cmp r0, 0\n\ + beq _08113D0C\n\ + adds r2, 0x1\n\ +_08113D0C:\n\ + adds r7, 0x1\n\ + adds r6, 0x1\n\ + cmp r6, 0x3F\n\ + ble _08113C4A\n\ + cmp r3, 0\n\ + beq _08113D26\n\ + ldrb r0, [r4]\n\ + adds r0, r5\n\ + add r0, r9\n\ + strb r6, [r0]\n\ + ldrb r0, [r4]\n\ + adds r0, 0x1\n\ + strb r0, [r4]\n\ +_08113D26:\n\ + movs r0, 0x7\n\ + ldr r2, [sp, 0x30]\n\ + ands r2, r0\n\ + cmp r2, 0\n\ + bne _08113D36\n\ + movs r3, 0xE4\n\ + add r8, r3\n\ + b _08113D3A\n\ +_08113D36:\n\ + movs r0, 0x4\n\ + add r8, r0\n\ +_08113D3A:\n\ + adds r5, 0x20\n\ + adds r4, 0x1\n\ + ldr r1, [sp, 0x8]\n\ + adds r1, 0x1\n\ + str r1, [sp, 0x8]\n\ + cmp r1, 0x3F\n\ + bgt _08113D4A\n\ + b _08113C32\n\ +_08113D4A:\n\ + movs r2, 0\n\ + mov r8, r2\n\ + movs r3, 0\n\ + str r3, [sp, 0x8]\n\ + ldr r0, _08113D84 @ =0x02014844\n\ + movs r4, 0x82\n\ + lsls r4, 6\n\ + adds r4, r0\n\ + mov r10, r4\n\ + movs r5, 0xA2\n\ + lsls r5, 6\n\ + adds r7, r0, r5\n\ + movs r5, 0\n\ + adds r4, r0, 0\n\ + movs r0, 0x1\n\ + mov r9, r0\n\ +_08113D6A:\n\ + movs r3, 0\n\ + ldr r2, [sp, 0x4]\n\ + add r2, r8\n\ + movs r6, 0\n\ + ldr r1, [sp, 0x8]\n\ + adds r1, 0x1\n\ + str r1, [sp, 0x30]\n\ +_08113D78:\n\ + cmp r3, 0\n\ + beq _08113D88\n\ + cmp r3, 0x1\n\ + beq _08113DB4\n\ + b _08113DE4\n\ + .align 2, 0\n\ +_08113D84: .4byte 0x02014844\n\ +_08113D88:\n\ + adds r0, r6, 0\n\ + mov r1, r9\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _08113D98\n\ + cmp r0, 0x1\n\ + beq _08113D9E\n\ + b _08113DE4\n\ +_08113D98:\n\ + ldrb r1, [r2]\n\ + movs r0, 0xF\n\ + b _08113DA2\n\ +_08113D9E:\n\ + ldrb r1, [r2]\n\ + movs r0, 0xF0\n\ +_08113DA2:\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _08113DE4\n\ + ldrb r0, [r4]\n\ + adds r0, r5\n\ + add r0, r10\n\ + strb r6, [r0]\n\ + movs r3, 0x1\n\ + b _08113DE4\n\ +_08113DB4:\n\ + adds r0, r6, 0\n\ + ands r0, r3\n\ + cmp r0, 0\n\ + beq _08113DC2\n\ + cmp r0, 0x1\n\ + beq _08113DC8\n\ + b _08113DE4\n\ +_08113DC2:\n\ + ldrb r1, [r2]\n\ + movs r0, 0xF\n\ + b _08113DCC\n\ +_08113DC8:\n\ + ldrb r1, [r2]\n\ + movs r0, 0xF0\n\ +_08113DCC:\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _08113DE4\n\ + ldrb r0, [r4]\n\ + adds r0, r5\n\ + adds r0, r7\n\ + subs r1, r6, 0x1\n\ + strb r1, [r0]\n\ + ldrb r0, [r4]\n\ + adds r0, 0x1\n\ + strb r0, [r4]\n\ + movs r3, 0\n\ +_08113DE4:\n\ + adds r1, r6, 0x1\n\ + movs r0, 0x7\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _08113DF2\n\ + adds r2, 0x1D\n\ + b _08113DFC\n\ +_08113DF2:\n\ + mov r0, r9\n\ + ands r6, r0\n\ + cmp r6, 0\n\ + beq _08113DFC\n\ + adds r2, 0x1\n\ +_08113DFC:\n\ + adds r6, r1, 0\n\ + cmp r6, 0x3F\n\ + ble _08113D78\n\ + cmp r3, 0\n\ + beq _08113E14\n\ + ldrb r0, [r4]\n\ + adds r0, r5\n\ + adds r0, r7\n\ + strb r6, [r0]\n\ + ldrb r0, [r4]\n\ + adds r0, 0x1\n\ + strb r0, [r4]\n\ +_08113E14:\n\ + movs r0, 0x7\n\ + ldr r1, [sp, 0x30]\n\ + ands r1, r0\n\ + cmp r1, 0\n\ + bne _08113E24\n\ + movs r2, 0xE4\n\ + add r8, r2\n\ + b _08113E28\n\ +_08113E24:\n\ + movs r3, 0x4\n\ + add r8, r3\n\ +_08113E28:\n\ + adds r5, 0x20\n\ + adds r4, 0x1\n\ + ldr r0, [sp, 0x8]\n\ + adds r0, 0x1\n\ + str r0, [sp, 0x8]\n\ + cmp r0, 0x3F\n\ + ble _08113D6A\n\ + movs r1, 0\n\ + str r1, [sp, 0x8]\n\ +_08113E3A:\n\ + ldr r3, [sp, 0x8]\n\ + ldr r4, _08113EBC @ =0x02014804\n\ + adds r2, r3, r4\n\ + ldr r5, _08113EC0 @ =0x02014844\n\ + adds r1, r3, r5\n\ + ldrb r0, [r2]\n\ + adds r3, 0x1\n\ + str r3, [sp, 0x30]\n\ + ldrb r1, [r1]\n\ + cmp r0, r1\n\ + bcc _08113E52\n\ + b _08113F9E\n\ +_08113E52:\n\ + movs r0, 0\n\ + str r0, [sp, 0xC]\n\ + ldrb r2, [r2]\n\ + cmp r0, r2\n\ + bge _08113F54\n\ + ldr r0, _08113EC4 @ =0x02014800\n\ + adds r0, 0x4\n\ + ldr r1, [sp, 0x8]\n\ + adds r0, r1, r0\n\ + str r0, [sp, 0x18]\n\ +_08113E66:\n\ + movs r2, 0x80\n\ + lsls r2, 1\n\ + str r2, [sp, 0x14]\n\ + movs r6, 0\n\ + ldr r3, [sp, 0x8]\n\ + ldr r4, _08113EC0 @ =0x02014844\n\ + adds r0, r3, r4\n\ + ldr r5, [sp, 0xC]\n\ + adds r5, 0x1\n\ + str r5, [sp, 0x34]\n\ + ldrb r0, [r0]\n\ + cmp r6, r0\n\ + bge _08113F3E\n\ + ldr r0, _08113EC4 @ =0x02014800\n\ + mov r10, r0\n\ + lsls r0, r3, 5\n\ + ldr r2, [sp, 0xC]\n\ + adds r1, r2, r0\n\ + mov r9, r0\n\ + ldr r0, _08113EC4 @ =0x02014800\n\ + adds r0, 0xC4\n\ + mov r3, r9\n\ + adds r7, r3, r0\n\ + mov r5, r9\n\ + ldr r4, _08113EC4 @ =0x02014800\n\ + ldr r2, _08113EC8 @ =0x000010c4\n\ + adds r0, r4, r2\n\ + adds r1, r0\n\ + mov r8, r1\n\ + ldrb r3, [r1]\n\ + str r3, [sp, 0x1C]\n\ +_08113EA4:\n\ + ldr r0, _08113ECC @ =0x000020c4\n\ + add r0, r10\n\ + adds r0, r5, r0\n\ + ldr r4, [sp, 0x1C]\n\ + ldrb r1, [r0]\n\ + cmp r4, r1\n\ + bls _08113ED0\n\ + mov r2, r8\n\ + ldrb r1, [r2]\n\ + ldrb r0, [r0]\n\ + b _08113ED6\n\ + .align 2, 0\n\ +_08113EBC: .4byte 0x02014804\n\ +_08113EC0: .4byte 0x02014844\n\ +_08113EC4: .4byte 0x02014800\n\ +_08113EC8: .4byte 0x000010c4\n\ +_08113ECC: .4byte 0x000020c4\n\ +_08113ED0:\n\ + ldrb r1, [r0]\n\ + mov r3, r8\n\ + ldrb r0, [r3]\n\ +_08113ED6:\n\ + subs r3, r1, r0\n\ + ldr r1, [sp, 0xC]\n\ + add r1, r9\n\ + ldr r0, _08113EFC @ =0x000018c4\n\ + add r0, r10\n\ + adds r4, r1, r0\n\ + ldr r0, _08113F00 @ =0x000028c4\n\ + add r0, r10\n\ + adds r2, r5, r0\n\ + ldrb r0, [r4]\n\ + ldr r1, _08113F04 @ =0x02014800\n\ + mov r12, r1\n\ + ldrb r1, [r2]\n\ + cmp r0, r1\n\ + bls _08113F08\n\ + adds r1, r0, 0\n\ + ldrb r0, [r2]\n\ + b _08113F0C\n\ + .align 2, 0\n\ +_08113EFC: .4byte 0x000018c4\n\ +_08113F00: .4byte 0x000028c4\n\ +_08113F04: .4byte 0x02014800\n\ +_08113F08:\n\ + ldrb r1, [r2]\n\ + ldrb r0, [r4]\n\ +_08113F0C:\n\ + subs r1, r0\n\ + adds r3, r1\n\ + ldr r2, [sp, 0x14]\n\ + cmp r2, r3\n\ + ble _08113F2C\n\ + ldrb r0, [r7]\n\ + cmp r0, 0\n\ + bne _08113F2C\n\ + ldr r0, _08114050 @ =0x000008c4\n\ + add r0, r12\n\ + adds r0, r5, r0\n\ + ldrb r0, [r0]\n\ + cmp r0, 0\n\ + bne _08113F2C\n\ + str r6, [sp, 0x10]\n\ + str r3, [sp, 0x14]\n\ +_08113F2C:\n\ + adds r7, 0x1\n\ + adds r5, 0x1\n\ + adds r6, 0x1\n\ + ldr r3, [sp, 0x8]\n\ + ldr r4, _08114054 @ =0x02014844\n\ + adds r0, r3, r4\n\ + ldrb r0, [r0]\n\ + cmp r6, r0\n\ + blt _08113EA4\n\ +_08113F3E:\n\ + ldr r0, [sp, 0xC]\n\ + ldr r1, [sp, 0x10]\n\ + ldr r2, [sp, 0x8]\n\ + bl sub_81141F0\n\ + ldr r5, [sp, 0x34]\n\ + str r5, [sp, 0xC]\n\ + ldr r0, [sp, 0x18]\n\ + ldrb r0, [r0]\n\ + cmp r5, r0\n\ + blt _08113E66\n\ +_08113F54:\n\ + movs r6, 0\n\ + ldr r2, _08114058 @ =0x02014800\n\ + ldr r1, [sp, 0x8]\n\ + ldr r3, _08114054 @ =0x02014844\n\ + adds r0, r1, r3\n\ + adds r4, r2, 0\n\ + mov r12, r4\n\ + ldrb r0, [r0]\n\ + cmp r6, r0\n\ + bge _08113F9E\n\ + mov r0, r12\n\ + adds r0, 0x44\n\ + adds r4, r1, r0\n\ +_08113F6E:\n\ + ldr r5, [sp, 0x8]\n\ + lsls r0, r5, 5\n\ + adds r1, r6, r0\n\ + adds r0, r2, 0\n\ + adds r0, 0xC4\n\ + adds r0, r1, r0\n\ + ldrb r0, [r0]\n\ + cmp r0, 0\n\ + bne _08113F94\n\ + ldr r3, _08114050 @ =0x000008c4\n\ + adds r0, r2, r3\n\ + adds r0, r1, r0\n\ + ldrb r0, [r0]\n\ + cmp r0, 0\n\ + bne _08113F94\n\ + adds r0, r6, 0\n\ + adds r1, r5, 0\n\ + bl sub_811430C\n\ +_08113F94:\n\ + adds r6, 0x1\n\ + ldr r2, _08114058 @ =0x02014800\n\ + ldrb r5, [r4]\n\ + cmp r6, r5\n\ + blt _08113F6E\n\ +_08113F9E:\n\ + ldr r0, [sp, 0x8]\n\ + ldr r1, _0811405C @ =0x02014804\n\ + adds r2, r0, r1\n\ + ldr r3, _08114054 @ =0x02014844\n\ + adds r1, r0, r3\n\ + ldrb r0, [r2]\n\ + ldrb r1, [r1]\n\ + cmp r0, r1\n\ + bne _08113FCC\n\ + movs r6, 0\n\ + ldrb r4, [r2]\n\ + cmp r6, r4\n\ + bge _08113FCC\n\ + adds r4, r2, 0\n\ +_08113FBA:\n\ + adds r0, r6, 0\n\ + adds r1, r6, 0\n\ + ldr r2, [sp, 0x8]\n\ + bl sub_81141F0\n\ + adds r6, 0x1\n\ + ldrb r5, [r4]\n\ + cmp r6, r5\n\ + blt _08113FBA\n\ +_08113FCC:\n\ + ldr r0, [sp, 0x8]\n\ + ldr r1, _0811405C @ =0x02014804\n\ + adds r2, r0, r1\n\ + ldr r3, _08114054 @ =0x02014844\n\ + adds r1, r0, r3\n\ + ldrb r0, [r2]\n\ + ldr r4, _08114058 @ =0x02014800\n\ + ldrb r5, [r1]\n\ + cmp r0, r5\n\ + bhi _08113FE2\n\ + b _081141C4\n\ +_08113FE2:\n\ + movs r0, 0\n\ + str r0, [sp, 0x10]\n\ + ldrb r1, [r1]\n\ + cmp r0, r1\n\ + blt _08113FEE\n\ + b _08114104\n\ +_08113FEE:\n\ + str r2, [sp, 0x2C]\n\ + ldr r1, [sp, 0x8]\n\ + lsls r1, 5\n\ + mov r9, r1\n\ + adds r0, r4, 0\n\ + adds r0, 0x44\n\ + ldr r2, [sp, 0x8]\n\ + adds r0, r2, r0\n\ + str r0, [sp, 0x20]\n\ + mov r3, r9\n\ + str r3, [sp, 0x24]\n\ +_08114004:\n\ + movs r4, 0x80\n\ + lsls r4, 1\n\ + str r4, [sp, 0x14]\n\ + movs r6, 0\n\ + ldr r5, [sp, 0x10]\n\ + adds r5, 0x1\n\ + str r5, [sp, 0x38]\n\ + ldr r0, [sp, 0x2C]\n\ + ldrb r0, [r0]\n\ + cmp r6, r0\n\ + bge _081140C4\n\ + ldr r1, [sp, 0x10]\n\ + ldr r2, [sp, 0x24]\n\ + adds r1, r2\n\ + mov r10, r1\n\ + ldr r0, _08114058 @ =0x02014800\n\ + adds r0, 0xC4\n\ + adds r2, r0\n\ + mov r8, r2\n\ + ldr r7, [sp, 0x24]\n\ + ldr r3, _08114058 @ =0x02014800\n\ + ldr r4, _08114060 @ =0x000010c4\n\ + adds r0, r3, r4\n\ + adds r5, r7, r0\n\ + ldr r0, _08114064 @ =0x020168c4\n\ + add r0, r10\n\ + mov r12, r0\n\ + ldrb r1, [r0]\n\ + str r1, [sp, 0x28]\n\ +_0811403E:\n\ + ldrb r0, [r5]\n\ + ldr r2, [sp, 0x28]\n\ + cmp r0, r2\n\ + bls _08114068\n\ + adds r1, r0, 0\n\ + mov r3, r12\n\ + ldrb r0, [r3]\n\ + b _0811406E\n\ + .align 2, 0\n\ +_08114050: .4byte 0x000008c4\n\ +_08114054: .4byte 0x02014844\n\ +_08114058: .4byte 0x02014800\n\ +_0811405C: .4byte 0x02014804\n\ +_08114060: .4byte 0x000010c4\n\ +_08114064: .4byte 0x020168c4\n\ +_08114068:\n\ + mov r4, r12\n\ + ldrb r1, [r4]\n\ + ldrb r0, [r5]\n\ +_0811406E:\n\ + subs r3, r1, r0\n\ + ldr r1, _0811408C @ =0x02014800\n\ + ldr r2, _08114090 @ =0x000018c4\n\ + adds r0, r1, r2\n\ + adds r4, r7, r0\n\ + ldr r2, _08114094 @ =0x020170c4\n\ + add r2, r10\n\ + ldrb r0, [r4]\n\ + ldrb r1, [r2]\n\ + cmp r0, r1\n\ + bls _08114098\n\ + adds r1, r0, 0\n\ + ldrb r0, [r2]\n\ + b _0811409C\n\ + .align 2, 0\n\ +_0811408C: .4byte 0x02014800\n\ +_08114090: .4byte 0x000018c4\n\ +_08114094: .4byte 0x020170c4\n\ +_08114098:\n\ + ldrb r1, [r2]\n\ + ldrb r0, [r4]\n\ +_0811409C:\n\ + subs r1, r0\n\ + adds r3, r1\n\ + ldr r2, [sp, 0x14]\n\ + cmp r2, r3\n\ + ble _081140B2\n\ + mov r4, r8\n\ + ldrb r0, [r4]\n\ + cmp r0, 0\n\ + bne _081140B2\n\ + str r6, [sp, 0xC]\n\ + str r3, [sp, 0x14]\n\ +_081140B2:\n\ + movs r0, 0x1\n\ + add r8, r0\n\ + adds r7, 0x1\n\ + adds r5, 0x1\n\ + adds r6, 0x1\n\ + ldr r1, [sp, 0x2C]\n\ + ldrb r1, [r1]\n\ + cmp r6, r1\n\ + blt _0811403E\n\ +_081140C4:\n\ + ldr r3, [sp, 0xC]\n\ + add r3, r9\n\ + ldr r2, _08114164 @ =0x02014800\n\ + ldr r4, _08114168 @ =0x000030c4\n\ + adds r1, r2, r4\n\ + adds r1, r3, r1\n\ + ldr r2, [sp, 0x10]\n\ + add r2, r9\n\ + ldr r5, _0811416C @ =0x020168c4\n\ + adds r0, r2, r5\n\ + ldrb r0, [r0]\n\ + strb r0, [r1]\n\ + ldr r0, _08114164 @ =0x02014800\n\ + ldr r4, _08114170 @ =0x000038c4\n\ + adds r1, r0, r4\n\ + adds r1, r3, r1\n\ + ldr r5, _08114174 @ =0x020170c4\n\ + adds r2, r5\n\ + ldrb r0, [r2]\n\ + strb r0, [r1]\n\ + ldr r0, _08114164 @ =0x02014800\n\ + adds r0, 0xC4\n\ + adds r3, r0\n\ + movs r0, 0x1\n\ + strb r0, [r3]\n\ + ldr r0, [sp, 0x38]\n\ + str r0, [sp, 0x10]\n\ + ldr r1, [sp, 0x20]\n\ + ldrb r1, [r1]\n\ + cmp r0, r1\n\ + bge _08114104\n\ + b _08114004\n\ +_08114104:\n\ + movs r6, 0\n\ + ldr r4, _08114164 @ =0x02014800\n\ + ldr r2, [sp, 0x8]\n\ + ldr r3, _08114178 @ =0x02014804\n\ + adds r0, r2, r3\n\ + ldrb r0, [r0]\n\ + cmp r6, r0\n\ + bge _081141C4\n\ + adds r7, r4, 0\n\ + mov r9, r6\n\ + movs r5, 0xC4\n\ + adds r5, r7\n\ + mov r8, r5\n\ +_0811411E:\n\ + ldr r1, [sp, 0x8]\n\ + lsls r0, r1, 5\n\ + adds r2, r6, r0\n\ + ldr r3, _0811417C @ =0x000020c4\n\ + adds r0, r7, r3\n\ + adds r0, r2\n\ + mov r10, r0\n\ + ldr r5, _08114168 @ =0x000030c4\n\ + adds r0, r7, r5\n\ + adds r0, r2, r0\n\ + ldrb r0, [r0]\n\ + mov r1, r10\n\ + strb r0, [r1]\n\ + ldr r3, _08114180 @ =0x000028c4\n\ + adds r0, r7, r3\n\ + adds r3, r2, r0\n\ + ldr r5, _08114170 @ =0x000038c4\n\ + adds r0, r7, r5\n\ + adds r0, r2, r0\n\ + ldrb r0, [r0]\n\ + strb r0, [r3]\n\ + mov r0, r8\n\ + adds r1, r2, r0\n\ + ldrb r0, [r1]\n\ + cmp r0, 0\n\ + beq _08114184\n\ + mov r2, r9\n\ + strb r2, [r1]\n\ + adds r0, r6, 0\n\ + adds r1, r6, 0\n\ + ldr r2, [sp, 0x8]\n\ + bl sub_81141F0\n\ + b _081141B4\n\ + .align 2, 0\n\ +_08114164: .4byte 0x02014800\n\ +_08114168: .4byte 0x000030c4\n\ +_0811416C: .4byte 0x020168c4\n\ +_08114170: .4byte 0x000038c4\n\ +_08114174: .4byte 0x020170c4\n\ +_08114178: .4byte 0x02014804\n\ +_0811417C: .4byte 0x000020c4\n\ +_08114180: .4byte 0x000028c4\n\ +_08114184:\n\ + ldr r5, _081141E0 @ =0x000010c4\n\ + adds r1, r4, r5\n\ + adds r1, r2, r1\n\ + ldr r5, _081141E4 @ =0x000018c4\n\ + adds r0, r4, r5\n\ + adds r0, r2, r0\n\ + ldrb r0, [r0]\n\ + ldrb r2, [r1]\n\ + subs r0, r2\n\ + lsrs r1, r0, 31\n\ + adds r0, r1\n\ + asrs r0, 1\n\ + adds r2, r0\n\ + strb r2, [r3]\n\ + mov r0, r10\n\ + strb r2, [r0]\n\ + ldrb r0, [r3]\n\ + subs r0, 0x1\n\ + strb r0, [r3]\n\ + adds r0, r6, 0\n\ + adds r1, r6, 0\n\ + ldr r2, [sp, 0x8]\n\ + bl sub_81141F0\n\ +_081141B4:\n\ + adds r6, 0x1\n\ + ldr r4, _081141E8 @ =0x02014800\n\ + ldr r1, [sp, 0x8]\n\ + ldr r2, _081141EC @ =0x02014804\n\ + adds r0, r1, r2\n\ + ldrb r0, [r0]\n\ + cmp r6, r0\n\ + blt _0811411E\n\ +_081141C4:\n\ + ldr r3, [sp, 0x30]\n\ + str r3, [sp, 0x8]\n\ + cmp r3, 0x3F\n\ + bgt _081141CE\n\ + b _08113E3A\n\ +_081141CE:\n\ + add sp, 0x3C\n\ + pop {r3-r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_081141E0: .4byte 0x000010c4\n\ +_081141E4: .4byte 0x000018c4\n\ +_081141E8: .4byte 0x02014800\n\ +_081141EC: .4byte 0x02014804\n\ + .syntax divided"); +} + +void sub_81141F0(s32 a, s32 b, s32 c) +{ + u32 r7; + + sEvoInfo.unk30C4[c][b] = sEvoInfo.unk10C4[c][a]; + sEvoInfo.unk38C4[c][b] = sEvoInfo.unk18C4[c][a]; + + r7 = 0; + if (sEvoInfo.unk10C4[c][a] < sEvoInfo.unk20C4[c][b]) + { + sEvoInfo.unkC4[c][b] = 4; + r7 = sEvoInfo.unk20C4[c][b] - sEvoInfo.unk10C4[c][a]; + } + else if (sEvoInfo.unk10C4[c][a] > sEvoInfo.unk20C4[c][b]) + { + sEvoInfo.unkC4[c][b] = 1; + r7 = sEvoInfo.unk10C4[c][a] - sEvoInfo.unk20C4[c][b]; + } + sEvoInfo.unk80C4[c][b] = r7 * 16; + + r7 = 0; + if (sEvoInfo.unk18C4[c][a] < sEvoInfo.unk28C4[c][b]) + { + sEvoInfo.unk8C4[c][b] = 3; + r7 = sEvoInfo.unk28C4[c][b] - sEvoInfo.unk18C4[c][a]; + } + else if (sEvoInfo.unk18C4[c][a] > sEvoInfo.unk28C4[c][b]) + { + sEvoInfo.unk8C4[c][b] = 2; + r7 = sEvoInfo.unk18C4[c][a] - sEvoInfo.unk28C4[c][b]; + } + sEvoInfo.unk90C4[c][b] = r7 * 16; + + sEvoInfo.unk84[c]++; +} + +void sub_811430C(u32 a, u32 b) +{ + u8 r2 = sEvoInfo.unk28C4[b][a]; + u8 r3 = sEvoInfo.unk20C4[b][a]; + s32 r7 = r2 - r3; + + sEvoInfo.unk30C4[b][a] = sEvoInfo.unk38C4[b][a] = r3 + r7 / 2; + sEvoInfo.unkC4[b][a] = 5; + sEvoInfo.unk8C4[b][a] = 7; + sEvoInfo.unk84[b]++; + r7 = sEvoInfo.unk30C4[b][a] - sEvoInfo.unk20C4[b][a]; + sEvoInfo.unk80C4[b][a] = r7 * 16; + r7 = sEvoInfo.unk28C4[b][a] - sEvoInfo.unk38C4[b][a]; + sEvoInfo.unk90C4[b][a] = r7 * 16; +} + +__attribute__((naked)) +void unref_sub_81143CC() +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + sub sp, 0x14\n\ + movs r0, 0x1\n\ + str r0, [sp, 0x4]\n\ + ldr r0, _08114408 @ =0x02014800\n\ + ldr r2, _0811440C @ =0x0000a0c4\n\ + adds r1, r0, r2\n\ + ldrb r3, [r1]\n\ + adds r4, r0, 0\n\ + cmp r3, 0\n\ + beq _081143EE\n\ + subs r0, r3, 0x1\n\ + strb r0, [r1]\n\ +_081143EE:\n\ + movs r5, 0\n\ + str r5, [sp]\n\ +_081143F2:\n\ + movs r3, 0\n\ + adds r2, r4, 0\n\ + adds r0, r4, 0\n\ + adds r0, 0x84\n\ + ldr r1, [sp]\n\ + adds r0, r1, r0\n\ + adds r1, 0x1\n\ + str r1, [sp, 0x8]\n\ + bl _08114D84\n\ + .align 2, 0\n\ +_08114408: .4byte 0x02014800\n\ +_0811440C: .4byte 0x0000a0c4\n\ +_08114410:\n\ + ldr r5, [sp]\n\ + lsls r0, r5, 5\n\ + adds r1, r3, r0\n\ + adds r2, 0xC4\n\ + adds r1, r2\n\ + ldrb r2, [r1]\n\ + mov r8, r0\n\ + adds r0, r3, 0x1\n\ + mov r10, r0\n\ + cmp r2, 0xC\n\ + bls _08114428\n\ + b _081148D2\n\ +_08114428:\n\ + lsls r0, r2, 2\n\ + ldr r1, _08114434 @ =_08114438\n\ + adds r0, r1\n\ + ldr r0, [r0]\n\ + mov pc, r0\n\ + .align 2, 0\n\ +_08114434: .4byte _08114438\n\ + .align 2, 0\n\ +_08114438:\n\ + .4byte _081148D2\n\ + .4byte _0811446C\n\ + .4byte _081144F0\n\ + .4byte _0811457C\n\ + .4byte _08114600\n\ + .4byte _0811468C\n\ + .4byte _081146C8\n\ + .4byte _08114704\n\ + .4byte _08114740\n\ + .4byte _0811477C\n\ + .4byte _081147D0\n\ + .4byte _08114810\n\ + .4byte _08114858\n\ +_0811446C:\n\ + movs r1, 0\n\ + str r1, [sp, 0x4]\n\ + lsls r0, r3, 1\n\ + ldr r2, [sp]\n\ + lsls r1, r2, 6\n\ + adds r0, r1\n\ + ldr r5, _081144E0 @ =0x000060c4\n\ + adds r2, r4, r5\n\ + adds r2, r0, r2\n\ + ldr r5, _081144E4 @ =0x000080c4\n\ + adds r1, r4, r5\n\ + adds r0, r1\n\ + ldrh r1, [r0]\n\ + ldrh r0, [r2]\n\ + adds r1, r0\n\ + movs r0, 0xFF\n\ + lsls r0, 8\n\ + ands r0, r1\n\ + lsrs r5, r0, 8\n\ + movs r0, 0xFF\n\ + ands r1, r0\n\ + strh r1, [r2]\n\ + movs r6, 0\n\ + adds r1, r3, 0x1\n\ + mov r10, r1\n\ + ldr r2, [sp, 0x4]\n\ + cmp r2, r5\n\ + blt _081144A6\n\ + b _081148D2\n\ +_081144A6:\n\ + mov r9, r4\n\ + mov r4, r8\n\ + adds r7, r3, r4\n\ + ldr r0, _081144E8 @ =0x000030c4\n\ + add r0, r9\n\ + adds r4, r7, r0\n\ + ldr r0, _081144EC @ =0x000020c4\n\ + add r0, r9\n\ + adds r2, r7, r0\n\ +_081144B8:\n\ + ldrb r0, [r4]\n\ + subs r0, 0x1\n\ + strb r0, [r4]\n\ + ldrb r1, [r4]\n\ + ldr r0, [sp]\n\ + str r2, [sp, 0xC]\n\ + str r3, [sp, 0x10]\n\ + bl sub_8114DB4\n\ + ldrb r0, [r4]\n\ + ldr r2, [sp, 0xC]\n\ + ldr r3, [sp, 0x10]\n\ + ldrb r1, [r2]\n\ + cmp r0, r1\n\ + bne _081144D8\n\ + b _081148A0\n\ +_081144D8:\n\ + adds r6, 0x1\n\ + cmp r6, r5\n\ + blt _081144B8\n\ + b _081148D2\n\ + .align 2, 0\n\ +_081144E0: .4byte 0x000060c4\n\ +_081144E4: .4byte 0x000080c4\n\ +_081144E8: .4byte 0x000030c4\n\ +_081144EC: .4byte 0x000020c4\n\ +_081144F0:\n\ + movs r2, 0\n\ + str r2, [sp, 0x4]\n\ + ldr r4, _08114568 @ =0x02014800\n\ + lsls r0, r3, 1\n\ + ldr r5, [sp]\n\ + lsls r1, r5, 6\n\ + adds r0, r1\n\ + ldr r1, _0811456C @ =0x000060c4\n\ + adds r2, r4, r1\n\ + adds r2, r0, r2\n\ + ldr r5, _08114570 @ =0x000080c4\n\ + adds r1, r4, r5\n\ + adds r0, r1\n\ + ldrh r1, [r0]\n\ + ldrh r0, [r2]\n\ + adds r1, r0\n\ + movs r0, 0xFF\n\ + lsls r0, 8\n\ + ands r0, r1\n\ + lsrs r5, r0, 8\n\ + movs r0, 0xFF\n\ + ands r1, r0\n\ + strh r1, [r2]\n\ + movs r6, 0\n\ + adds r1, r3, 0x1\n\ + mov r10, r1\n\ + ldr r2, [sp, 0x4]\n\ + cmp r2, r5\n\ + blt _0811452C\n\ + b _081148D2\n\ +_0811452C:\n\ + mov r9, r4\n\ + mov r4, r8\n\ + adds r7, r3, r4\n\ + ldr r0, _08114574 @ =0x000030c4\n\ + add r0, r9\n\ + adds r4, r7, r0\n\ + ldr r0, _08114578 @ =0x000020c4\n\ + add r0, r9\n\ + adds r2, r7, r0\n\ +_0811453E:\n\ + ldrb r0, [r4]\n\ + ldrb r1, [r2]\n\ + cmp r0, r1\n\ + bne _08114548\n\ + b _081148B8\n\ +_08114548:\n\ + adds r1, r0, 0\n\ + ldr r0, [sp]\n\ + str r2, [sp, 0xC]\n\ + str r3, [sp, 0x10]\n\ + bl sub_8114DF0\n\ + ldrb r0, [r4]\n\ + subs r0, 0x1\n\ + strb r0, [r4]\n\ + adds r6, 0x1\n\ + ldr r2, [sp, 0xC]\n\ + ldr r3, [sp, 0x10]\n\ + cmp r6, r5\n\ + blt _0811453E\n\ + b _081148D2\n\ + .align 2, 0\n\ +_08114568: .4byte 0x02014800\n\ +_0811456C: .4byte 0x000060c4\n\ +_08114570: .4byte 0x000080c4\n\ +_08114574: .4byte 0x000030c4\n\ +_08114578: .4byte 0x000020c4\n\ +_0811457C:\n\ + movs r2, 0\n\ + str r2, [sp, 0x4]\n\ + lsls r0, r3, 1\n\ + ldr r5, [sp]\n\ + lsls r1, r5, 6\n\ + adds r0, r1\n\ + ldr r1, _081145F0 @ =0x000060c4\n\ + adds r2, r4, r1\n\ + adds r2, r0, r2\n\ + ldr r5, _081145F4 @ =0x000080c4\n\ + adds r1, r4, r5\n\ + adds r0, r1\n\ + ldrh r1, [r0]\n\ + ldrh r0, [r2]\n\ + adds r1, r0\n\ + movs r0, 0xFF\n\ + lsls r0, 8\n\ + ands r0, r1\n\ + lsrs r5, r0, 8\n\ + movs r0, 0xFF\n\ + ands r1, r0\n\ + strh r1, [r2]\n\ + movs r6, 0\n\ + adds r1, r3, 0x1\n\ + mov r10, r1\n\ + ldr r2, [sp, 0x4]\n\ + cmp r2, r5\n\ + blt _081145B6\n\ + b _081148D2\n\ +_081145B6:\n\ + mov r9, r4\n\ + mov r4, r8\n\ + adds r7, r3, r4\n\ + ldr r0, _081145F8 @ =0x000030c4\n\ + add r0, r9\n\ + adds r4, r7, r0\n\ + ldr r0, _081145FC @ =0x000020c4\n\ + add r0, r9\n\ + adds r2, r7, r0\n\ +_081145C8:\n\ + ldrb r0, [r4]\n\ + adds r0, 0x1\n\ + strb r0, [r4]\n\ + ldrb r1, [r4]\n\ + ldr r0, [sp]\n\ + str r2, [sp, 0xC]\n\ + str r3, [sp, 0x10]\n\ + bl sub_8114DB4\n\ + ldrb r0, [r4]\n\ + ldr r2, [sp, 0xC]\n\ + ldr r3, [sp, 0x10]\n\ + ldrb r1, [r2]\n\ + cmp r0, r1\n\ + bne _081145E8\n\ + b _081148AC\n\ +_081145E8:\n\ + adds r6, 0x1\n\ + cmp r6, r5\n\ + blt _081145C8\n\ + b _081148D2\n\ + .align 2, 0\n\ +_081145F0: .4byte 0x000060c4\n\ +_081145F4: .4byte 0x000080c4\n\ +_081145F8: .4byte 0x000030c4\n\ +_081145FC: .4byte 0x000020c4\n\ +_08114600:\n\ + movs r2, 0\n\ + str r2, [sp, 0x4]\n\ + ldr r4, _08114678 @ =0x02014800\n\ + lsls r0, r3, 1\n\ + ldr r5, [sp]\n\ + lsls r1, r5, 6\n\ + adds r0, r1\n\ + ldr r1, _0811467C @ =0x000060c4\n\ + adds r2, r4, r1\n\ + adds r2, r0, r2\n\ + ldr r5, _08114680 @ =0x000080c4\n\ + adds r1, r4, r5\n\ + adds r0, r1\n\ + ldrh r1, [r0]\n\ + ldrh r0, [r2]\n\ + adds r1, r0\n\ + movs r0, 0xFF\n\ + lsls r0, 8\n\ + ands r0, r1\n\ + lsrs r5, r0, 8\n\ + movs r0, 0xFF\n\ + ands r1, r0\n\ + strh r1, [r2]\n\ + movs r6, 0\n\ + adds r1, r3, 0x1\n\ + mov r10, r1\n\ + ldr r2, [sp, 0x4]\n\ + cmp r2, r5\n\ + blt _0811463C\n\ + b _081148D2\n\ +_0811463C:\n\ + mov r9, r4\n\ + mov r4, r8\n\ + adds r7, r3, r4\n\ + ldr r0, _08114684 @ =0x000030c4\n\ + add r0, r9\n\ + adds r4, r7, r0\n\ + ldr r0, _08114688 @ =0x000020c4\n\ + add r0, r9\n\ + adds r2, r7, r0\n\ +_0811464E:\n\ + ldrb r0, [r4]\n\ + ldrb r1, [r2]\n\ + cmp r0, r1\n\ + bne _08114658\n\ + b _081148B8\n\ +_08114658:\n\ + adds r1, r0, 0\n\ + ldr r0, [sp]\n\ + str r2, [sp, 0xC]\n\ + str r3, [sp, 0x10]\n\ + bl sub_8114DF0\n\ + ldrb r0, [r4]\n\ + adds r0, 0x1\n\ + strb r0, [r4]\n\ + adds r6, 0x1\n\ + ldr r2, [sp, 0xC]\n\ + ldr r3, [sp, 0x10]\n\ + cmp r6, r5\n\ + blt _0811464E\n\ + b _081148D2\n\ + .align 2, 0\n\ +_08114678: .4byte 0x02014800\n\ +_0811467C: .4byte 0x000060c4\n\ +_08114680: .4byte 0x000080c4\n\ +_08114684: .4byte 0x000030c4\n\ +_08114688: .4byte 0x000020c4\n\ +_0811468C:\n\ + movs r2, 0\n\ + str r2, [sp, 0x4]\n\ + ldr r5, _081146C0 @ =0x02014800\n\ + mov r0, r8\n\ + adds r4, r3, r0\n\ + ldr r1, _081146C4 @ =0x000030c4\n\ + adds r0, r5, r1\n\ + adds r0, r4, r0\n\ + ldrb r1, [r0]\n\ + ldr r0, [sp]\n\ + str r3, [sp, 0x10]\n\ + bl sub_8114E48\n\ + lsls r0, 24\n\ + ldr r3, [sp, 0x10]\n\ + adds r2, r3, 0x1\n\ + mov r10, r2\n\ + cmp r0, 0\n\ + bne _081146B4\n\ + b _081148D2\n\ +_081146B4:\n\ + adds r0, r5, 0\n\ + adds r0, 0xC4\n\ + adds r0, r4, r0\n\ + movs r1, 0x9\n\ + strb r1, [r0]\n\ + b _081148D2\n\ + .align 2, 0\n\ +_081146C0: .4byte 0x02014800\n\ +_081146C4: .4byte 0x000030c4\n\ +_081146C8:\n\ + movs r4, 0\n\ + str r4, [sp, 0x4]\n\ + ldr r5, _081146FC @ =0x02014800\n\ + mov r0, r8\n\ + adds r4, r3, r0\n\ + ldr r1, _08114700 @ =0x000030c4\n\ + adds r0, r5, r1\n\ + adds r0, r4, r0\n\ + ldrb r1, [r0]\n\ + ldr r0, [sp]\n\ + str r3, [sp, 0x10]\n\ + bl sub_8114E48\n\ + lsls r0, 24\n\ + ldr r3, [sp, 0x10]\n\ + adds r2, r3, 0x1\n\ + mov r10, r2\n\ + cmp r0, 0\n\ + bne _081146F0\n\ + b _081148D2\n\ +_081146F0:\n\ + adds r0, r5, 0\n\ + adds r0, 0xC4\n\ + adds r0, r4, r0\n\ + movs r1, 0xA\n\ + strb r1, [r0]\n\ + b _081148D2\n\ + .align 2, 0\n\ +_081146FC: .4byte 0x02014800\n\ +_08114700: .4byte 0x000030c4\n\ +_08114704:\n\ + movs r4, 0\n\ + str r4, [sp, 0x4]\n\ + ldr r5, _08114738 @ =0x02014800\n\ + mov r0, r8\n\ + adds r4, r3, r0\n\ + ldr r1, _0811473C @ =0x000030c4\n\ + adds r0, r5, r1\n\ + adds r0, r4, r0\n\ + ldrb r1, [r0]\n\ + ldr r0, [sp]\n\ + str r3, [sp, 0x10]\n\ + bl sub_8114E48\n\ + lsls r0, 24\n\ + ldr r3, [sp, 0x10]\n\ + adds r2, r3, 0x1\n\ + mov r10, r2\n\ + cmp r0, 0\n\ + bne _0811472C\n\ + b _081148D2\n\ +_0811472C:\n\ + adds r0, r5, 0\n\ + adds r0, 0xC4\n\ + adds r0, r4, r0\n\ + movs r1, 0xB\n\ + strb r1, [r0]\n\ + b _081148D2\n\ + .align 2, 0\n\ +_08114738: .4byte 0x02014800\n\ +_0811473C: .4byte 0x000030c4\n\ +_08114740:\n\ + movs r4, 0\n\ + str r4, [sp, 0x4]\n\ + ldr r5, _08114774 @ =0x02014800\n\ + mov r0, r8\n\ + adds r4, r3, r0\n\ + ldr r1, _08114778 @ =0x000030c4\n\ + adds r0, r5, r1\n\ + adds r0, r4, r0\n\ + ldrb r1, [r0]\n\ + ldr r0, [sp]\n\ + str r3, [sp, 0x10]\n\ + bl sub_8114E48\n\ + lsls r0, 24\n\ + ldr r3, [sp, 0x10]\n\ + adds r2, r3, 0x1\n\ + mov r10, r2\n\ + cmp r0, 0\n\ + bne _08114768\n\ + b _081148D2\n\ +_08114768:\n\ + adds r0, r5, 0\n\ + adds r0, 0xC4\n\ + adds r0, r4, r0\n\ + movs r1, 0xC\n\ + strb r1, [r0]\n\ + b _081148D2\n\ + .align 2, 0\n\ +_08114774: .4byte 0x02014800\n\ +_08114778: .4byte 0x000030c4\n\ +_0811477C:\n\ + movs r4, 0\n\ + str r4, [sp, 0x4]\n\ + ldr r6, _081147B4 @ =0x02014800\n\ + mov r0, r8\n\ + adds r5, r3, r0\n\ + ldr r1, _081147B8 @ =0x000030c4\n\ + adds r4, r6, r1\n\ + adds r4, r5, r4\n\ + ldrb r1, [r4]\n\ + ldr r0, [sp]\n\ + str r3, [sp, 0x10]\n\ + bl sub_8114DB4\n\ + ldr r2, _081147BC @ =0x000020c4\n\ + adds r0, r6, r2\n\ + adds r0, r5, r0\n\ + ldrb r1, [r4]\n\ + ldr r3, [sp, 0x10]\n\ + ldrb r0, [r0]\n\ + cmp r1, r0\n\ + bne _081147C0\n\ + adds r0, r6, 0\n\ + adds r0, 0xC4\n\ + adds r0, r5, r0\n\ + mov r4, sp\n\ + ldrb r4, [r4, 0x4]\n\ + strb r4, [r0]\n\ + b _08114844\n\ + .align 2, 0\n\ +_081147B4: .4byte 0x02014800\n\ +_081147B8: .4byte 0x000030c4\n\ +_081147BC: .4byte 0x000020c4\n\ +_081147C0:\n\ + adds r0, r6, 0\n\ + adds r0, 0xC4\n\ + adds r0, r5, r0\n\ + movs r1, 0x1\n\ + strb r1, [r0]\n\ + adds r0, r3, 0x1\n\ + mov r10, r0\n\ + b _081148D2\n\ +_081147D0:\n\ + movs r1, 0\n\ + str r1, [sp, 0x4]\n\ + ldr r6, _08114804 @ =0x02014800\n\ + mov r2, r8\n\ + adds r5, r3, r2\n\ + ldr r0, _08114808 @ =0x000030c4\n\ + adds r4, r6, r0\n\ + adds r4, r5, r4\n\ + ldrb r1, [r4]\n\ + ldr r0, [sp]\n\ + str r3, [sp, 0x10]\n\ + bl sub_8114DF0\n\ + ldr r1, _0811480C @ =0x000020c4\n\ + adds r0, r6, r1\n\ + adds r0, r5, r0\n\ + ldrb r1, [r4]\n\ + ldr r3, [sp, 0x10]\n\ + ldrb r0, [r0]\n\ + cmp r1, r0\n\ + beq _08114882\n\ + adds r0, r6, 0\n\ + adds r0, 0xC4\n\ + adds r0, r5, r0\n\ + movs r1, 0x2\n\ + b _08114842\n\ + .align 2, 0\n\ +_08114804: .4byte 0x02014800\n\ +_08114808: .4byte 0x000030c4\n\ +_0811480C: .4byte 0x000020c4\n\ +_08114810:\n\ + movs r0, 0\n\ + str r0, [sp, 0x4]\n\ + ldr r6, _0811484C @ =0x02014800\n\ + mov r1, r8\n\ + adds r5, r3, r1\n\ + ldr r2, _08114850 @ =0x000030c4\n\ + adds r4, r6, r2\n\ + adds r4, r5, r4\n\ + ldrb r1, [r4]\n\ + ldr r0, [sp]\n\ + str r3, [sp, 0x10]\n\ + bl sub_8114DB4\n\ + ldr r1, _08114854 @ =0x000020c4\n\ + adds r0, r6, r1\n\ + adds r0, r5, r0\n\ + ldrb r1, [r4]\n\ + ldr r3, [sp, 0x10]\n\ + ldrb r0, [r0]\n\ + cmp r1, r0\n\ + beq _08114882\n\ + adds r0, r6, 0\n\ + adds r0, 0xC4\n\ + adds r0, r5, r0\n\ + movs r1, 0x3\n\ +_08114842:\n\ + strb r1, [r0]\n\ +_08114844:\n\ + adds r5, r3, 0x1\n\ + mov r10, r5\n\ + b _081148D2\n\ + .align 2, 0\n\ +_0811484C: .4byte 0x02014800\n\ +_08114850: .4byte 0x000030c4\n\ +_08114854: .4byte 0x000020c4\n\ +_08114858:\n\ + movs r0, 0\n\ + str r0, [sp, 0x4]\n\ + ldr r6, _08114894 @ =0x02014800\n\ + mov r1, r8\n\ + adds r5, r3, r1\n\ + ldr r2, _08114898 @ =0x000030c4\n\ + adds r4, r6, r2\n\ + adds r4, r5, r4\n\ + ldrb r1, [r4]\n\ + ldr r0, [sp]\n\ + str r3, [sp, 0x10]\n\ + bl sub_8114DF0\n\ + ldr r1, _0811489C @ =0x000020c4\n\ + adds r0, r6, r1\n\ + adds r0, r5, r0\n\ + ldrb r1, [r4]\n\ + ldr r3, [sp, 0x10]\n\ + ldrb r0, [r0]\n\ + cmp r1, r0\n\ + bne _081148C4\n\ +_08114882:\n\ + adds r0, r6, 0\n\ + adds r0, 0xC4\n\ + adds r0, r5, r0\n\ + mov r2, sp\n\ + ldrb r2, [r2, 0x4]\n\ + strb r2, [r0]\n\ + adds r4, r3, 0x1\n\ + mov r10, r4\n\ + b _081148D2\n\ + .align 2, 0\n\ +_08114894: .4byte 0x02014800\n\ +_08114898: .4byte 0x000030c4\n\ +_0811489C: .4byte 0x000020c4\n\ +_081148A0:\n\ + mov r0, r9\n\ + adds r0, 0xC4\n\ + adds r0, r7, r0\n\ + movs r5, 0\n\ + strb r5, [r0]\n\ + b _081148D2\n\ +_081148AC:\n\ + mov r0, r9\n\ + adds r0, 0xC4\n\ + adds r0, r7, r0\n\ + movs r1, 0\n\ + strb r1, [r0]\n\ + b _081148D2\n\ +_081148B8:\n\ + mov r0, r9\n\ + adds r0, 0xC4\n\ + adds r0, r7, r0\n\ + movs r1, 0\n\ + strb r1, [r0]\n\ + b _081148D2\n\ +_081148C4:\n\ + adds r0, r6, 0\n\ + adds r0, 0xC4\n\ + adds r0, r5, r0\n\ + movs r1, 0x4\n\ + strb r1, [r0]\n\ + adds r2, r3, 0x1\n\ + mov r10, r2\n\ +_081148D2:\n\ + ldr r0, _081148F4 @ =0x02014800\n\ + mov r4, r8\n\ + adds r1, r3, r4\n\ + ldr r5, _081148F8 @ =0x000008c4\n\ + adds r2, r0, r5\n\ + adds r1, r2\n\ + ldrb r1, [r1]\n\ + adds r4, r0, 0\n\ + cmp r1, 0xC\n\ + bls _081148E8\n\ + b _08114D76\n\ +_081148E8:\n\ + lsls r0, r1, 2\n\ + ldr r1, _081148FC @ =_08114900\n\ + adds r0, r1\n\ + ldr r0, [r0]\n\ + mov pc, r0\n\ + .align 2, 0\n\ +_081148F4: .4byte 0x02014800\n\ +_081148F8: .4byte 0x000008c4\n\ +_081148FC: .4byte _08114900\n\ + .align 2, 0\n\ +_08114900:\n\ + .4byte _08114D76\n\ + .4byte _08114934\n\ + .4byte _081149B8\n\ + .4byte _08114A3C\n\ + .4byte _08114AC0\n\ + .4byte _08114B44\n\ + .4byte _08114B7C\n\ + .4byte _08114BB4\n\ + .4byte _08114BEC\n\ + .4byte _08114C24\n\ + .4byte _08114C78\n\ + .4byte _08114CB8\n\ + .4byte _08114CF8\n\ +_08114934:\n\ + movs r0, 0\n\ + str r0, [sp, 0x4]\n\ + lsls r0, r3, 1\n\ + ldr r2, [sp]\n\ + lsls r1, r2, 6\n\ + adds r0, r1\n\ + ldr r5, _081149A8 @ =0x000070c4\n\ + adds r2, r4, r5\n\ + adds r2, r0, r2\n\ + ldr r5, _081149AC @ =0x000090c4\n\ + adds r1, r4, r5\n\ + adds r0, r1\n\ + ldrh r1, [r0]\n\ + ldrh r0, [r2]\n\ + adds r1, r0\n\ + movs r0, 0xFF\n\ + lsls r0, 8\n\ + ands r0, r1\n\ + lsrs r5, r0, 8\n\ + movs r0, 0xFF\n\ + ands r1, r0\n\ + strh r1, [r2]\n\ + movs r6, 0\n\ + ldr r1, [sp, 0x4]\n\ + cmp r1, r5\n\ + blt _0811496A\n\ + b _08114D76\n\ +_0811496A:\n\ + mov r9, r4\n\ + mov r2, r8\n\ + adds r7, r3, r2\n\ + ldr r0, _081149B0 @ =0x000038c4\n\ + add r0, r9\n\ + adds r4, r7, r0\n\ + movs r3, 0\n\ + ldr r0, _081149B4 @ =0x000028c4\n\ + add r0, r9\n\ + adds r2, r7, r0\n\ +_0811497E:\n\ + ldrb r0, [r4]\n\ + subs r0, 0x1\n\ + strb r0, [r4]\n\ + ldrb r1, [r4]\n\ + ldr r0, [sp]\n\ + str r2, [sp, 0xC]\n\ + str r3, [sp, 0x10]\n\ + bl sub_8114DB4\n\ + ldrb r0, [r4]\n\ + ldr r2, [sp, 0xC]\n\ + ldr r3, [sp, 0x10]\n\ + ldrb r1, [r2]\n\ + cmp r0, r1\n\ + bne _0811499E\n\ + b _08114D4C\n\ +_0811499E:\n\ + adds r6, 0x1\n\ + cmp r6, r5\n\ + blt _0811497E\n\ + b _08114D76\n\ + .align 2, 0\n\ +_081149A8: .4byte 0x000070c4\n\ +_081149AC: .4byte 0x000090c4\n\ +_081149B0: .4byte 0x000038c4\n\ +_081149B4: .4byte 0x000028c4\n\ +_081149B8:\n\ + movs r2, 0\n\ + str r2, [sp, 0x4]\n\ + ldr r4, _08114A28 @ =0x02014800\n\ + lsls r0, r3, 1\n\ + ldr r5, [sp]\n\ + lsls r1, r5, 6\n\ + adds r0, r1\n\ + ldr r1, _08114A2C @ =0x000070c4\n\ + adds r2, r4, r1\n\ + adds r2, r0, r2\n\ + ldr r5, _08114A30 @ =0x000090c4\n\ + adds r1, r4, r5\n\ + adds r0, r1\n\ + ldrh r1, [r0]\n\ + ldrh r0, [r2]\n\ + adds r1, r0\n\ + movs r0, 0xFF\n\ + lsls r0, 8\n\ + ands r0, r1\n\ + lsrs r5, r0, 8\n\ + movs r0, 0xFF\n\ + ands r1, r0\n\ + strh r1, [r2]\n\ + movs r6, 0\n\ + ldr r1, [sp, 0x4]\n\ + cmp r1, r5\n\ + blt _081149F0\n\ + b _08114D76\n\ +_081149F0:\n\ + mov r9, r4\n\ + mov r2, r8\n\ + adds r7, r3, r2\n\ + ldr r0, _08114A34 @ =0x000038c4\n\ + add r0, r9\n\ + adds r4, r7, r0\n\ + ldr r0, _08114A38 @ =0x000028c4\n\ + add r0, r9\n\ + adds r2, r7, r0\n\ +_08114A02:\n\ + ldrb r0, [r4]\n\ + ldrb r1, [r2]\n\ + cmp r0, r1\n\ + bne _08114A0C\n\ + b _08114D3C\n\ +_08114A0C:\n\ + adds r1, r0, 0\n\ + ldr r0, [sp]\n\ + str r2, [sp, 0xC]\n\ + bl sub_8114DF0\n\ + ldrb r0, [r4]\n\ + subs r0, 0x1\n\ + strb r0, [r4]\n\ + adds r6, 0x1\n\ + ldr r2, [sp, 0xC]\n\ + cmp r6, r5\n\ + blt _08114A02\n\ + b _08114D76\n\ + .align 2, 0\n\ +_08114A28: .4byte 0x02014800\n\ +_08114A2C: .4byte 0x000070c4\n\ +_08114A30: .4byte 0x000090c4\n\ +_08114A34: .4byte 0x000038c4\n\ +_08114A38: .4byte 0x000028c4\n\ +_08114A3C:\n\ + movs r2, 0\n\ + str r2, [sp, 0x4]\n\ + lsls r0, r3, 1\n\ + ldr r5, [sp]\n\ + lsls r1, r5, 6\n\ + adds r0, r1\n\ + ldr r1, _08114AB0 @ =0x000070c4\n\ + adds r2, r4, r1\n\ + adds r2, r0, r2\n\ + ldr r5, _08114AB4 @ =0x000090c4\n\ + adds r1, r4, r5\n\ + adds r0, r1\n\ + ldrh r1, [r0]\n\ + ldrh r0, [r2]\n\ + adds r1, r0\n\ + movs r0, 0xFF\n\ + lsls r0, 8\n\ + ands r0, r1\n\ + lsrs r5, r0, 8\n\ + movs r0, 0xFF\n\ + ands r1, r0\n\ + strh r1, [r2]\n\ + movs r6, 0\n\ + ldr r1, [sp, 0x4]\n\ + cmp r1, r5\n\ + blt _08114A72\n\ + b _08114D76\n\ +_08114A72:\n\ + mov r9, r4\n\ + mov r2, r8\n\ + adds r7, r3, r2\n\ + ldr r0, _08114AB8 @ =0x000038c4\n\ + add r0, r9\n\ + adds r4, r7, r0\n\ + movs r3, 0\n\ + ldr r0, _08114ABC @ =0x000028c4\n\ + add r0, r9\n\ + adds r2, r7, r0\n\ +_08114A86:\n\ + ldrb r0, [r4]\n\ + adds r0, 0x1\n\ + strb r0, [r4]\n\ + ldrb r1, [r4]\n\ + ldr r0, [sp]\n\ + str r2, [sp, 0xC]\n\ + str r3, [sp, 0x10]\n\ + bl sub_8114DB4\n\ + ldrb r0, [r4]\n\ + ldr r2, [sp, 0xC]\n\ + ldr r3, [sp, 0x10]\n\ + ldrb r1, [r2]\n\ + cmp r0, r1\n\ + bne _08114AA6\n\ + b _08114D4C\n\ +_08114AA6:\n\ + adds r6, 0x1\n\ + cmp r6, r5\n\ + blt _08114A86\n\ + b _08114D76\n\ + .align 2, 0\n\ +_08114AB0: .4byte 0x000070c4\n\ +_08114AB4: .4byte 0x000090c4\n\ +_08114AB8: .4byte 0x000038c4\n\ +_08114ABC: .4byte 0x000028c4\n\ +_08114AC0:\n\ + movs r2, 0\n\ + str r2, [sp, 0x4]\n\ + ldr r4, _08114B30 @ =0x02014800\n\ + lsls r0, r3, 1\n\ + ldr r5, [sp]\n\ + lsls r1, r5, 6\n\ + adds r0, r1\n\ + ldr r1, _08114B34 @ =0x000070c4\n\ + adds r2, r4, r1\n\ + adds r2, r0, r2\n\ + ldr r5, _08114B38 @ =0x000090c4\n\ + adds r1, r4, r5\n\ + adds r0, r1\n\ + ldrh r1, [r0]\n\ + ldrh r0, [r2]\n\ + adds r1, r0\n\ + movs r0, 0xFF\n\ + lsls r0, 8\n\ + ands r0, r1\n\ + lsrs r5, r0, 8\n\ + movs r0, 0xFF\n\ + ands r1, r0\n\ + strh r1, [r2]\n\ + movs r6, 0\n\ + ldr r1, [sp, 0x4]\n\ + cmp r1, r5\n\ + blt _08114AF8\n\ + b _08114D76\n\ +_08114AF8:\n\ + mov r9, r4\n\ + mov r2, r8\n\ + adds r7, r3, r2\n\ + ldr r0, _08114B3C @ =0x000038c4\n\ + add r0, r9\n\ + adds r4, r7, r0\n\ + ldr r0, _08114B40 @ =0x000028c4\n\ + add r0, r9\n\ + adds r2, r7, r0\n\ +_08114B0A:\n\ + ldrb r0, [r4]\n\ + ldrb r1, [r2]\n\ + cmp r0, r1\n\ + bne _08114B14\n\ + b _08114D5C\n\ +_08114B14:\n\ + adds r1, r0, 0\n\ + ldr r0, [sp]\n\ + str r2, [sp, 0xC]\n\ + bl sub_8114DF0\n\ + ldrb r0, [r4]\n\ + adds r0, 0x1\n\ + strb r0, [r4]\n\ + adds r6, 0x1\n\ + ldr r2, [sp, 0xC]\n\ + cmp r6, r5\n\ + blt _08114B0A\n\ + b _08114D76\n\ + .align 2, 0\n\ +_08114B30: .4byte 0x02014800\n\ +_08114B34: .4byte 0x000070c4\n\ +_08114B38: .4byte 0x000090c4\n\ +_08114B3C: .4byte 0x000038c4\n\ +_08114B40: .4byte 0x000028c4\n\ +_08114B44:\n\ + movs r2, 0\n\ + str r2, [sp, 0x4]\n\ + ldr r5, _08114B70 @ =0x02014800\n\ + mov r0, r8\n\ + adds r4, r3, r0\n\ + ldr r1, _08114B74 @ =0x000038c4\n\ + adds r0, r5, r1\n\ + adds r0, r4, r0\n\ + ldrb r1, [r0]\n\ + ldr r0, [sp]\n\ + bl sub_8114E48\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + bne _08114B64\n\ + b _08114D76\n\ +_08114B64:\n\ + ldr r2, _08114B78 @ =0x000008c4\n\ + adds r0, r5, r2\n\ + adds r0, r4, r0\n\ + movs r1, 0x9\n\ + b _08114D74\n\ + .align 2, 0\n\ +_08114B70: .4byte 0x02014800\n\ +_08114B74: .4byte 0x000038c4\n\ +_08114B78: .4byte 0x000008c4\n\ +_08114B7C:\n\ + movs r4, 0\n\ + str r4, [sp, 0x4]\n\ + ldr r5, _08114BA8 @ =0x02014800\n\ + mov r0, r8\n\ + adds r4, r3, r0\n\ + ldr r1, _08114BAC @ =0x000038c4\n\ + adds r0, r5, r1\n\ + adds r0, r4, r0\n\ + ldrb r1, [r0]\n\ + ldr r0, [sp]\n\ + bl sub_8114E48\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + bne _08114B9C\n\ + b _08114D76\n\ +_08114B9C:\n\ + ldr r2, _08114BB0 @ =0x000008c4\n\ + adds r0, r5, r2\n\ + adds r0, r4, r0\n\ + movs r1, 0xA\n\ + b _08114D74\n\ + .align 2, 0\n\ +_08114BA8: .4byte 0x02014800\n\ +_08114BAC: .4byte 0x000038c4\n\ +_08114BB0: .4byte 0x000008c4\n\ +_08114BB4:\n\ + movs r4, 0\n\ + str r4, [sp, 0x4]\n\ + ldr r5, _08114BE0 @ =0x02014800\n\ + mov r0, r8\n\ + adds r4, r3, r0\n\ + ldr r1, _08114BE4 @ =0x000038c4\n\ + adds r0, r5, r1\n\ + adds r0, r4, r0\n\ + ldrb r1, [r0]\n\ + ldr r0, [sp]\n\ + bl sub_8114E48\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + bne _08114BD4\n\ + b _08114D76\n\ +_08114BD4:\n\ + ldr r2, _08114BE8 @ =0x000008c4\n\ + adds r0, r5, r2\n\ + adds r0, r4, r0\n\ + movs r1, 0xB\n\ + b _08114D74\n\ + .align 2, 0\n\ +_08114BE0: .4byte 0x02014800\n\ +_08114BE4: .4byte 0x000038c4\n\ +_08114BE8: .4byte 0x000008c4\n\ +_08114BEC:\n\ + movs r4, 0\n\ + str r4, [sp, 0x4]\n\ + ldr r5, _08114C18 @ =0x02014800\n\ + mov r0, r8\n\ + adds r4, r3, r0\n\ + ldr r1, _08114C1C @ =0x000038c4\n\ + adds r0, r5, r1\n\ + adds r0, r4, r0\n\ + ldrb r1, [r0]\n\ + ldr r0, [sp]\n\ + bl sub_8114E48\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + bne _08114C0C\n\ + b _08114D76\n\ +_08114C0C:\n\ + ldr r2, _08114C20 @ =0x000008c4\n\ + adds r0, r5, r2\n\ + adds r0, r4, r0\n\ + movs r1, 0xC\n\ + b _08114D74\n\ + .align 2, 0\n\ +_08114C18: .4byte 0x02014800\n\ +_08114C1C: .4byte 0x000038c4\n\ +_08114C20: .4byte 0x000008c4\n\ +_08114C24:\n\ + movs r4, 0\n\ + str r4, [sp, 0x4]\n\ + ldr r6, _08114C58 @ =0x02014800\n\ + mov r0, r8\n\ + adds r5, r3, r0\n\ + ldr r1, _08114C5C @ =0x000038c4\n\ + adds r4, r6, r1\n\ + adds r4, r5, r4\n\ + ldrb r1, [r4]\n\ + ldr r0, [sp]\n\ + bl sub_8114DB4\n\ + ldr r2, _08114C60 @ =0x000028c4\n\ + adds r0, r6, r2\n\ + adds r0, r5, r0\n\ + ldrb r1, [r4]\n\ + ldrb r0, [r0]\n\ + cmp r1, r0\n\ + bne _08114C68\n\ + ldr r4, _08114C64 @ =0x000008c4\n\ + adds r0, r6, r4\n\ + adds r0, r5, r0\n\ + mov r5, sp\n\ + ldrb r5, [r5, 0x4]\n\ + strb r5, [r0]\n\ + b _08114D76\n\ + .align 2, 0\n\ +_08114C58: .4byte 0x02014800\n\ +_08114C5C: .4byte 0x000038c4\n\ +_08114C60: .4byte 0x000028c4\n\ +_08114C64: .4byte 0x000008c4\n\ +_08114C68:\n\ + ldr r1, _08114C74 @ =0x000008c4\n\ + adds r0, r6, r1\n\ + adds r0, r5, r0\n\ + movs r1, 0x1\n\ + b _08114D74\n\ + .align 2, 0\n\ +_08114C74: .4byte 0x000008c4\n\ +_08114C78:\n\ + movs r2, 0\n\ + str r2, [sp, 0x4]\n\ + ldr r6, _08114CA8 @ =0x02014800\n\ + mov r4, r8\n\ + adds r5, r3, r4\n\ + ldr r0, _08114CAC @ =0x000038c4\n\ + adds r4, r6, r0\n\ + adds r4, r5, r4\n\ + ldrb r1, [r4]\n\ + ldr r0, [sp]\n\ + bl sub_8114DF0\n\ + ldr r1, _08114CB0 @ =0x000028c4\n\ + adds r0, r6, r1\n\ + adds r0, r5, r0\n\ + ldrb r1, [r4]\n\ + ldrb r0, [r0]\n\ + cmp r1, r0\n\ + beq _08114D1E\n\ + ldr r1, _08114CB4 @ =0x000008c4\n\ + adds r0, r6, r1\n\ + adds r0, r5, r0\n\ + movs r1, 0x2\n\ + b _08114D74\n\ + .align 2, 0\n\ +_08114CA8: .4byte 0x02014800\n\ +_08114CAC: .4byte 0x000038c4\n\ +_08114CB0: .4byte 0x000028c4\n\ +_08114CB4: .4byte 0x000008c4\n\ +_08114CB8:\n\ + movs r2, 0\n\ + str r2, [sp, 0x4]\n\ + ldr r6, _08114CE8 @ =0x02014800\n\ + mov r4, r8\n\ + adds r5, r3, r4\n\ + ldr r0, _08114CEC @ =0x000038c4\n\ + adds r4, r6, r0\n\ + adds r4, r5, r4\n\ + ldrb r1, [r4]\n\ + ldr r0, [sp]\n\ + bl sub_8114DB4\n\ + ldr r1, _08114CF0 @ =0x000028c4\n\ + adds r0, r6, r1\n\ + adds r0, r5, r0\n\ + ldrb r1, [r4]\n\ + ldrb r0, [r0]\n\ + cmp r1, r0\n\ + beq _08114D1E\n\ + ldr r1, _08114CF4 @ =0x000008c4\n\ + adds r0, r6, r1\n\ + adds r0, r5, r0\n\ + movs r1, 0x3\n\ + b _08114D74\n\ + .align 2, 0\n\ +_08114CE8: .4byte 0x02014800\n\ +_08114CEC: .4byte 0x000038c4\n\ +_08114CF0: .4byte 0x000028c4\n\ +_08114CF4: .4byte 0x000008c4\n\ +_08114CF8:\n\ + movs r2, 0\n\ + str r2, [sp, 0x4]\n\ + ldr r6, _08114D2C @ =0x02014800\n\ + mov r4, r8\n\ + adds r5, r3, r4\n\ + ldr r0, _08114D30 @ =0x000038c4\n\ + adds r4, r6, r0\n\ + adds r4, r5, r4\n\ + ldrb r1, [r4]\n\ + ldr r0, [sp]\n\ + bl sub_8114DF0\n\ + ldr r1, _08114D34 @ =0x000028c4\n\ + adds r0, r6, r1\n\ + adds r0, r5, r0\n\ + ldrb r1, [r4]\n\ + ldrb r0, [r0]\n\ + cmp r1, r0\n\ + bne _08114D6C\n\ +_08114D1E:\n\ + ldr r2, _08114D38 @ =0x000008c4\n\ + adds r0, r6, r2\n\ + adds r0, r5, r0\n\ + mov r4, sp\n\ + ldrb r4, [r4, 0x4]\n\ + strb r4, [r0]\n\ + b _08114D76\n\ + .align 2, 0\n\ +_08114D2C: .4byte 0x02014800\n\ +_08114D30: .4byte 0x000038c4\n\ +_08114D34: .4byte 0x000028c4\n\ +_08114D38: .4byte 0x000008c4\n\ +_08114D3C:\n\ + ldr r0, _08114D48 @ =0x000008c4\n\ + add r0, r9\n\ + adds r0, r7, r0\n\ + movs r1, 0\n\ + b _08114D74\n\ + .align 2, 0\n\ +_08114D48: .4byte 0x000008c4\n\ +_08114D4C:\n\ + ldr r0, _08114D58 @ =0x000008c4\n\ + add r0, r9\n\ + adds r0, r7, r0\n\ + strb r3, [r0]\n\ + b _08114D76\n\ + .align 2, 0\n\ +_08114D58: .4byte 0x000008c4\n\ +_08114D5C:\n\ + ldr r0, _08114D68 @ =0x000008c4\n\ + add r0, r9\n\ + adds r0, r7, r0\n\ + movs r1, 0\n\ + b _08114D74\n\ + .align 2, 0\n\ +_08114D68: .4byte 0x000008c4\n\ +_08114D6C:\n\ + ldr r1, _08114DAC @ =0x000008c4\n\ + adds r0, r6, r1\n\ + adds r0, r5, r0\n\ + movs r1, 0x4\n\ +_08114D74:\n\ + strb r1, [r0]\n\ +_08114D76:\n\ + mov r3, r10\n\ + ldr r2, _08114DB0 @ =0x02014800\n\ + adds r0, r2, 0\n\ + adds r0, 0x84\n\ + ldr r4, [sp]\n\ + adds r0, r4, r0\n\ + adds r4, r2, 0\n\ +_08114D84:\n\ + ldrb r0, [r0]\n\ + cmp r3, r0\n\ + bge _08114D8E\n\ + bl _08114410\n\ +_08114D8E:\n\ + ldr r5, [sp, 0x8]\n\ + str r5, [sp]\n\ + cmp r5, 0x3F\n\ + bgt _08114D9A\n\ + bl _081143F2\n\ +_08114D9A:\n\ + ldr r0, [sp, 0x4]\n\ + add sp, 0x14\n\ + pop {r3-r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r7}\n\ + pop {r1}\n\ + bx r1\n\ + .align 2, 0\n\ +_08114DAC: .4byte 0x000008c4\n\ +_08114DB0: .4byte 0x02014800\n\ + .syntax divided"); +} + +void sub_8114DB4(u32 a, u8 b) +{ + u8 *r2 = sEvoInfo.unk40C4[a][b / 2]; + + if (b % 2 != 0) + *r2 |= 0xF0; + else + *r2 |= 0x0F; +} + +void sub_8114DF0(u32 a, u8 b) +{ + u8 *r2 = sEvoInfo.unk40C4[a][b / 2]; + u8 *r1 = r2 + 0x6000; + + if (b % 2 != 0) + { + if (!(*r1 & 0xF0)) + *r2 &= 0x0F; + } + else + { + if (!(*r1 & 0x0F)) + *r2 &= 0xF0; + } +} + +__attribute__((naked)) +void sub_8114E48() +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + adds r4, r0, 0\n\ + lsls r1, 24\n\ + lsrs r6, r1, 24\n\ + ldr r1, _08114E6C @ =0x02014800\n\ + ldr r2, _08114E70 @ =0x0000a0c4\n\ + adds r0, r1, r2\n\ + ldrb r0, [r0]\n\ + adds r5, r1, 0\n\ + cmp r0, 0\n\ + bne _08114E60\n\ + b _08114F5E\n\ +_08114E60:\n\ + movs r1, 0\n\ + movs r3, 0\n\ + cmp r4, 0\n\ + bne _08114E74\n\ + movs r1, 0x1\n\ + b _08114EA6\n\ + .align 2, 0\n\ +_08114E6C: .4byte 0x02014800\n\ +_08114E70: .4byte 0x0000a0c4\n\ +_08114E74:\n\ + subs r0, r4, 0x1\n\ + lsls r0, 5\n\ + adds r2, r3, r0\n\ + adds r0, r5, 0\n\ + adds r0, 0xC4\n\ + adds r0, r2, r0\n\ + ldrb r0, [r0]\n\ + cmp r0, 0\n\ + bne _08114EA6\n\ + ldr r7, _08114EC4 @ =0x000008c4\n\ + adds r0, r5, r7\n\ + adds r0, r2, r0\n\ + ldrb r0, [r0]\n\ + cmp r0, 0\n\ + bne _08114EA6\n\ + adds r3, 0x1\n\ + cmp r3, 0x1F\n\ + bgt _08114EA6\n\ + cmp r4, 0\n\ + bne _08114E74\n\ + lsls r0, r1, 24\n\ + movs r1, 0x80\n\ + lsls r1, 17\n\ + adds r0, r1\n\ + lsrs r1, r0, 24\n\ +_08114EA6:\n\ + cmp r3, 0x20\n\ + bne _08114EB4\n\ + lsls r0, r1, 24\n\ + movs r2, 0x80\n\ + lsls r2, 17\n\ + adds r0, r2\n\ + lsrs r1, r0, 24\n\ +_08114EB4:\n\ + movs r3, 0\n\ + cmp r4, 0x3F\n\ + bne _08114EC8\n\ + lsls r0, r1, 24\n\ + movs r7, 0x80\n\ + lsls r7, 17\n\ + adds r0, r7\n\ + b _08114EF8\n\ + .align 2, 0\n\ +_08114EC4: .4byte 0x000008c4\n\ +_08114EC8:\n\ + adds r0, r4, 0x1\n\ + lsls r0, 5\n\ + adds r2, r3, r0\n\ + adds r0, r5, 0\n\ + adds r0, 0xC4\n\ + adds r0, r2, r0\n\ + ldrb r0, [r0]\n\ + cmp r0, 0\n\ + bne _08114EFA\n\ + ldr r7, _08114F64 @ =0x000008c4\n\ + adds r0, r5, r7\n\ + adds r0, r2, r0\n\ + ldrb r0, [r0]\n\ + cmp r0, 0\n\ + bne _08114EFA\n\ + adds r3, 0x1\n\ + cmp r3, 0x1F\n\ + bgt _08114EFA\n\ + cmp r4, 0x3F\n\ + bne _08114EC8\n\ + lsls r0, r1, 24\n\ + movs r1, 0x80\n\ + lsls r1, 17\n\ + adds r0, r1\n\ +_08114EF8:\n\ + lsrs r1, r0, 24\n\ +_08114EFA:\n\ + cmp r3, 0x20\n\ + bne _08114F08\n\ + lsls r0, r1, 24\n\ + movs r2, 0x80\n\ + lsls r2, 17\n\ + adds r0, r2\n\ + lsrs r1, r0, 24\n\ +_08114F08:\n\ + cmp r1, 0x2\n\ + beq _08114F5E\n\ + subs r0, r6, 0x2\n\ + lsls r0, 24\n\ + lsrs r1, r0, 24\n\ + cmp r0, 0\n\ + bge _08114F18\n\ + movs r1, 0\n\ +_08114F18:\n\ + adds r0, r6, 0x2\n\ + lsls r0, 24\n\ + lsrs r2, r0, 24\n\ + asrs r0, 24\n\ + cmp r0, 0x3F\n\ + ble _08114F26\n\ + movs r2, 0x3F\n\ +_08114F26:\n\ + lsls r1, 24\n\ + asrs r3, r1, 24\n\ + lsls r0, r2, 24\n\ + asrs r2, r0, 24\n\ + adds r6, r1, 0\n\ + adds r7, r0, 0\n\ + cmp r3, r2\n\ + bge _08114F7C\n\ + cmp r4, 0\n\ + beq _08114F7C\n\ + subs r0, r4, 0x1\n\ + lsls r5, r0, 7\n\ + ldr r0, _08114F68 @ =0x020188c4\n\ + mov r12, r0\n\ +_08114F42:\n\ + asrs r0, r3, 1\n\ + lsls r0, 2\n\ + adds r0, r5\n\ + add r0, r12\n\ + ldr r1, [r0]\n\ + movs r0, 0x1\n\ + ands r0, r3\n\ + cmp r0, 0\n\ + beq _08114F6C\n\ + ldrb r1, [r1]\n\ + movs r0, 0xF0\n\ +_08114F58:\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _08114F72\n\ +_08114F5E:\n\ + movs r0, 0x1\n\ + b _08114FCA\n\ + .align 2, 0\n\ +_08114F64: .4byte 0x000008c4\n\ +_08114F68: .4byte 0x020188c4\n\ +_08114F6C:\n\ + ldrb r1, [r1]\n\ + movs r0, 0xF\n\ + b _08114F58\n\ +_08114F72:\n\ + adds r3, 0x1\n\ + cmp r3, r2\n\ + bge _08114F7C\n\ + cmp r4, 0\n\ + bne _08114F42\n\ +_08114F7C:\n\ + asrs r3, r6, 24\n\ + asrs r1, r7, 24\n\ + cmp r3, r1\n\ + bge _08114FC8\n\ + cmp r4, 0x3F\n\ + beq _08114FC8\n\ + adds r0, r4, 0x1\n\ + lsls r5, r0, 7\n\ + ldr r6, _08114FB0 @ =0x020188c4\n\ + adds r2, r1, 0\n\ +_08114F90:\n\ + asrs r0, r3, 1\n\ + lsls r0, 2\n\ + adds r0, r5\n\ + adds r0, r6\n\ + ldr r1, [r0]\n\ + movs r0, 0x1\n\ + ands r0, r3\n\ + cmp r0, 0\n\ + beq _08114FB4\n\ + ldrb r1, [r1]\n\ + movs r0, 0xF0\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _08114FBE\n\ + b _08114F5E\n\ + .align 2, 0\n\ +_08114FB0: .4byte 0x020188c4\n\ +_08114FB4:\n\ + ldrb r1, [r1]\n\ + movs r0, 0xF\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _08114F5E\n\ +_08114FBE:\n\ + adds r3, 0x1\n\ + cmp r3, r2\n\ + bge _08114FC8\n\ + cmp r4, 0x3F\n\ + bne _08114F90\n\ +_08114FC8:\n\ + movs r0, 0\n\ +_08114FCA:\n\ + pop {r4-r7}\n\ + pop {r1}\n\ + bx r1\n\ + .syntax divided"); +} + +// Functions below are vblank callbacks and are used + +static void EvoDummyFunc(void) +{ + +} + +static void VBlankCB_EvolutionScene(void) +{ + REG_BG0CNT = BGCNT_SCREENBASE(24) | BGCNT_16COLOR | BGCNT_TXT256x256 | BGCNT_AFF512x512 | BGCNT_PRIORITY(3); // 0x9803 + REG_BG0HOFS = gUnknown_030042A4; + REG_BG0VOFS = gUnknown_030042A0; + REG_BG1HOFS = gUnknown_030042C0; + REG_BG1VOFS = gUnknown_030041B4; + REG_BG2HOFS = gUnknown_03004288; + REG_BG2VOFS = gUnknown_03004280; + REG_BG3HOFS = gUnknown_030041B0; + REG_BG3VOFS = gUnknown_030041B8; + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); + sub_8089668(); +} + +static void VBlankCB_TradeEvolutionScene(void) +{ + REG_BG0HOFS = gUnknown_030042A4; + REG_BG0VOFS = gUnknown_030042A0; + REG_BG1HOFS = gUnknown_030042C0; + REG_BG1VOFS = gUnknown_030041B4; + REG_BG2HOFS = gUnknown_03004288; + REG_BG2VOFS = gUnknown_03004280; + REG_BG3HOFS = gUnknown_030041B0; + REG_BG3VOFS = gUnknown_030041B8; + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); + sub_8089668(); +} + +static void sub_81150D8(void) +{ + sub_814A880(200, 72 + (sEvoCursorPos * 16)); +} + +static void EvoDummyFunc2(void) +{ + +} diff --git a/src/scene/hall_of_fame.c b/src/scene/hall_of_fame.c new file mode 100644 index 000000000..6f7df576b --- /dev/null +++ b/src/scene/hall_of_fame.c @@ -0,0 +1,1413 @@ +#include "global.h" +#include "main.h" +#include "task.h" +#include "palette.h" +#include "sound.h" +#include "songs.h" +#include "pokemon.h" +#include "text.h" +#include "strings.h" +#include "string_util.h" +#include "menu.h" +#include "save.h" +#include "species.h" +#include "overworld.h" +#include "m4a.h" +#include "data2.h" +#include "decompress.h" +#include "rng.h" +#include "trig.h" + +static EWRAM_DATA u32 sUnknown_0203931C = 0; + +extern u8 ewram[]; +extern bool8 gUnknown_02039324; // has hall of fame records +extern void (*gGameContinueCallback)(void); +extern struct MusicPlayerInfo gMPlay_BGM; +extern u8 gReservedSpritePaletteCount; +extern struct SpriteTemplate gUnknown_02024E8C; + +extern const u8 gContestConfetti_Gfx[]; +extern const u8 gContestConfetti_Pal[]; +extern const u8 gHallOfFame_Gfx[]; +extern const u16 gHallOfFame_Pal[]; + +struct HallofFameMon +{ + u32 tid; + u32 personality; + u16 species : 9; + u16 lvl : 7; + u8 nick[10]; +}; + +struct HallofFameMons +{ + struct HallofFameMon mons[6]; +}; + +#define HALL_OF_FAME_MAX_TEAMS 50 + +static void sub_8141FF8(u8 taskID); +static void sub_81422E8(u8 taskID); +static void sub_814217C(u8 taskID); +static void sub_8142274(u8 taskID); +static void sub_81422B8(u8 taskID); +static void sub_8142320(u8 taskID); +static void sub_8142404(u8 taskID); +static void sub_8142484(u8 taskID); +static void sub_8142570(u8 taskID); +static void sub_8142618(u8 taskID); +static void sub_81426F8(u8 taskID); +static void sub_8142738(u8 taskID); +static void sub_8142794(u8 taskID); +static void sub_8142818(u8 taskID); +static void sub_8142850(u8 taskID); +static void sub_81428A0(u8 taskID); +static void sub_8142A28(u8 taskID); +static void sub_8142FEC(u8 taskID); +static void sub_8142B04(u8 taskID); +static void sub_8142CC8(u8 taskID); +static void sub_8142DF4(u8 taskID); +static void sub_8142F78(u8 taskID); +static void sub_8142FCC(u8 taskID); +static void sub_814302C(u8 taskID); + +static void sub_81435DC(struct Sprite* sprite); +static void sub_814386C(struct Sprite* sprite); +static void SpriteCB_HallOfFame_Dummy(struct Sprite* sprite); + +static void sub_8143068(u8 a0, u8 a1); +static void HallOfFame_PrintMonInfo(struct HallofFameMon* currMon, u8 a1, u8 a2); +static void HallOfFame_PrintPlayerInfo(u8 a0, u8 a1); +static void sub_81433E0(void); +static void sub_8143570(void); +static void sub_81435B8(void); +static u32 HallOfFame_LoadPokemonPic(u16 species, s16 posX, s16 posY, u16 pokeID, u32 tid, u32 pid); +static u32 HallOfFame_LoadTrainerPic(u16 trainerPicID, s16 posX, s16 posY, u16 a3); +static bool8 sub_81438C4(void); + +// functions from different files +void sub_81439D0(void); +void sub_80C5CD4(void*); // ? +void sub_80C5E38(void*); // ? +bool8 sub_80C5DCC(void); +bool8 sub_80C5F98(void); +void ReturnFromHallOfFamePC(void); +u16 SpeciesToPokedexNum(u16 species); +void remove_some_task(void); + +// data and gfx + +static const struct CompressedSpriteSheet sHallOfFame_ConfettiSpriteSheet = +{ + gContestConfetti_Gfx, 0x220, 1001 +}; + +static const u8 sUnused0[8] = {}; + +static const struct CompressedSpritePalette sHallOfFame_ConfettiSpritePalette = +{ + gContestConfetti_Pal, 1001 +}; + +static const u8 sUnused1[8] = {}; + +static const s16 sHallOfFame_MonsFullTeamPositions[6][4] = +{ + {120, 210, 120, 40}, + {326, 220, 56, 40}, + {-86, 220, 184, 40}, + {120, -62, 120, 88}, + {-25, -62, 200, 88}, + {265, -62, 40, 88} +}; + +static const s16 sHallOfFame_MonsHalfTeamPositions[3][4] = +{ + {120, 214, 120, 64}, + {281, 214, 56, 64}, + {-41, 214, 184, 64} +}; + +static const struct HallofFameMon sDummyFameMon = +{ + 0x3EA03EA, 0, 0, 0, {0} +}; + +static const u8 sUnused2[6] = {2, 1, 3, 6, 4, 5}; + +static const struct OamData sOamData_840B598 = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 3, + .tileNum = 0, + .priority = 0, + .paletteNum = 0, + .affineParam = 0, +}; + +void* const gUnknown_0840B5A0[] = +{ + &ewram[0x08000], + &ewram[0x0A000], + &ewram[0x0C000], + &ewram[0x0E000], + &ewram[0x10000], + &ewram[0x14000], + &ewram[0x18000] +}; + +static const struct SpriteFrameImage sSpriteImageTable_840B5BC[] = +{ + {&ewram[0x8000], 0x800}, + {&ewram[0x8800], 0x800}, + {&ewram[0x9000], 0x800}, + {&ewram[0x9800], 0x800} +}; + +static const struct SpriteFrameImage sSpriteImageTable_840B5DC[] = +{ + {&ewram[0xA000], 0x800}, + {&ewram[0xA800], 0x800}, + {&ewram[0xB000], 0x800}, + {&ewram[0xB800], 0x800} +}; + +static const struct SpriteFrameImage sSpriteImageTable_840B5FC[] = +{ + {&ewram[0xC000], 0x800}, + {&ewram[0xC800], 0x800}, + {&ewram[0xD000], 0x800}, + {&ewram[0xD800], 0x800} +}; + +static const struct SpriteFrameImage sSpriteImageTable_840B61C[] = +{ + {&ewram[0xE000], 0x800}, + {&ewram[0xE800], 0x800}, + {&ewram[0xF000], 0x800}, + {&ewram[0xF800], 0x800} +}; + +static const struct SpriteFrameImage sSpriteImageTable_840B63C[] = +{ + {&ewram[0x10000], 0x800}, + {&ewram[0x10800], 0x800}, + {&ewram[0x11000], 0x800}, + {&ewram[0x11800], 0x800} +}; + +static const struct SpriteFrameImage sSpriteImageTable_840B65C[] = +{ + {&ewram[0x14000], 0x800}, + {&ewram[0x14800], 0x800}, + {&ewram[0x15000], 0x800}, + {&ewram[0x15800], 0x800} +}; + +static const struct SpriteFrameImage sSpriteImageTable_840B67C[] = +{ + {&ewram[0x18000], 0x800}, + {&ewram[0x18800], 0x800}, + {&ewram[0x19000], 0x800}, + {&ewram[0x19800], 0x800} +}; + +static const struct SpriteFrameImage* const sUnknown_0840B69C[7] = +{ + sSpriteImageTable_840B5BC, + sSpriteImageTable_840B5DC, + sSpriteImageTable_840B5FC, + sSpriteImageTable_840B61C, + sSpriteImageTable_840B63C, + sSpriteImageTable_840B65C, + sSpriteImageTable_840B67C +}; + +static const struct SpriteTemplate sUnknown_0840B6B8 = +{ + .tileTag = -1, + .paletteTag = -1, + .oam = &sOamData_840B598, + .anims = NULL, + .images = sSpriteImageTable_840B5BC, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCB_HallOfFame_Dummy +}; + +static const struct OamData sOamData_840B6D0 = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 0, + .tileNum = 0, + .priority = 0, + .paletteNum = 0, + .affineParam = 0, +}; + +static const union AnimCmd sSpriteAnim_840B6D8[] = +{ + ANIMCMD_FRAME(0, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_840B6E0[] = +{ + ANIMCMD_FRAME(1, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_840B6E8[] = +{ + ANIMCMD_FRAME(2, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_840B6F0[] = +{ + ANIMCMD_FRAME(3, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_840B6F8[] = +{ + ANIMCMD_FRAME(4, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_840B700[] = +{ + ANIMCMD_FRAME(5, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_840B708[] = +{ + ANIMCMD_FRAME(6, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_840B710[] = +{ + ANIMCMD_FRAME(7, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_840B718[] = +{ + ANIMCMD_FRAME(8, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_840B720[] = +{ + ANIMCMD_FRAME(9, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_840B728[] = +{ + ANIMCMD_FRAME(10, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_840B730[] = +{ + ANIMCMD_FRAME(11, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_840B738[] = +{ + ANIMCMD_FRAME(12, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_840B740[] = +{ + ANIMCMD_FRAME(13, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_840B748[] = +{ + ANIMCMD_FRAME(14, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_840B750[] = +{ + ANIMCMD_FRAME(15, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_840B758[] = +{ + ANIMCMD_FRAME(16, 30), + ANIMCMD_END +}; + +static const union AnimCmd* const sSpriteAnimTable_840B760[] = +{ + sSpriteAnim_840B6D8, + sSpriteAnim_840B6E0, + sSpriteAnim_840B6E8, + sSpriteAnim_840B6F0, + sSpriteAnim_840B6F8, + sSpriteAnim_840B700, + sSpriteAnim_840B708, + sSpriteAnim_840B710, + sSpriteAnim_840B718, + sSpriteAnim_840B720, + sSpriteAnim_840B728, + sSpriteAnim_840B730, + sSpriteAnim_840B738, + sSpriteAnim_840B740, + sSpriteAnim_840B748, + sSpriteAnim_840B750, + sSpriteAnim_840B758 +}; + +static const struct SpriteTemplate sSpriteTemplate_840B7A4 = +{ + .tileTag = 1001, + .paletteTag = 1001, + .oam = &sOamData_840B6D0, + .anims = sSpriteAnimTable_840B760, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_814386C +}; + +// code + +#define tDisplayedPoke data[1] +#define tPokesNumber data[2] +#define tFrameCount data[3] +#define tPlayerSpriteID data[4] +#define tMonSpriteID(i) data[i + 5] + +static void VBlankCB_HallOfFame(void) +{ + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); +} + +static void CB2_HallOfFame(void) +{ + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +static bool8 sub_8141E64(void) +{ + switch (gMain.state) + { + case 0: + default: + SetVBlankCallback(NULL); + sub_81433E0(); + gMain.state = 1; + break; + case 1: + sub_8143570(); + gMain.state++; + break; + case 2: + { + u16 saved_IME; + + BeginNormalPaletteFade(-1, 0, 0x10, 0, 0); + SetVBlankCallback(VBlankCB_HallOfFame); + saved_IME = REG_IME; + REG_IME = 0; + REG_IE |= 1; + REG_IME = saved_IME; + REG_DISPSTAT |= 8; + gMain.state++; + } + break; + case 3: + REG_BLDCNT = 0x3F42; + REG_BLDALPHA = 0x710; + REG_BLDY = 0; + sub_81435B8(); + gMain.state++; + break; + case 4: + UpdatePaletteFade(); + if (!gPaletteFade.active) + { + SetMainCallback2(CB2_HallOfFame); + PlayBGM(BGM_DENDOU); + return 0; + } + break; + } + return 1; +} + +void sub_8141F90(void) +{ + if (sub_8141E64() == 0) + { + u8 taskID = CreateTask(sub_8141FF8, 0); + gTasks[taskID].data[0] = 0; + } +} + +static void sub_8141FC4(void) +{ + if (sub_8141E64() == 0) + { + u8 taskID = CreateTask(sub_8141FF8, 0); + gTasks[taskID].data[0] = 1; + } +} + +static void sub_8141FF8(u8 taskID) +{ + u16 i, j; + struct HallofFameMons* fameMons = (struct HallofFameMons*)(&ewram[0x1C000]); + + gTasks[taskID].tPokesNumber = 0; // valid pokes + for (i = 0; i < 6; i++) + { + u8 nick[12]; + if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES)) + { + fameMons->mons[i].species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2); + fameMons->mons[i].tid = GetMonData(&gPlayerParty[i], MON_DATA_OT_ID); + fameMons->mons[i].personality = GetMonData(&gPlayerParty[i], MON_DATA_PERSONALITY); + fameMons->mons[i].lvl = GetMonData(&gPlayerParty[i], MON_DATA_LEVEL); + GetMonData(&gPlayerParty[i], MON_DATA_NICKNAME, nick); + for (j = 0; j < 10; j++) + { + fameMons->mons[i].nick[j] = nick[j]; + } + gTasks[taskID].tPokesNumber++; + } + else + { + fameMons->mons[i].species = 0; + fameMons->mons[i].tid = 0; + fameMons->mons[i].personality = 0; + fameMons->mons[i].lvl = 0; + fameMons->mons[i].nick[0] = EOS; + } + } + sUnknown_0203931C = 0; + gTasks[taskID].tDisplayedPoke = 0; + gTasks[taskID].data[4] = 0xFF; + for (i = 0; i < 6; i++) + { + gTasks[taskID].tMonSpriteID(i) = 0xFF; + } + if (gTasks[taskID].data[0]) + gTasks[taskID].func = sub_81422E8; + else + gTasks[taskID].func = sub_814217C; +} + +static void sub_814217C(u8 taskID) +{ + u16 i; + struct HallofFameMons* fameMons = (struct HallofFameMons*)(&ewram[0x1C000]); + struct HallofFameMons* lastSavedTeam = (struct HallofFameMons*)(&ewram[0x1E000]); + + if (gUnknown_02039324 == FALSE) + { + for (i = 0; i < 0x2000; i++) + ewram[i + 0x1E000] = 0; + } + else + sub_8125EC8(3); + + for (i = 0; i < HALL_OF_FAME_MAX_TEAMS; i++, lastSavedTeam++) + { + if (lastSavedTeam->mons[0].species == 0) + break; + } + if (i >= HALL_OF_FAME_MAX_TEAMS) + { + struct HallofFameMons* r5 = (struct HallofFameMons*)(&ewram[0x1E000]); + struct HallofFameMons* r6 = (struct HallofFameMons*)(&ewram[0x1E000]); + r5++; + for (i = 0; i < HALL_OF_FAME_MAX_TEAMS - 1; i++, r6++, r5++) + { + *r6 = *r5; + } + lastSavedTeam--; + } + *lastSavedTeam = *fameMons; + MenuDrawTextWindow(2, 14, 27, 19); + MenuPrint(gMenuText_HOFSaving, 3, 15); + gTasks[taskID].func = sub_8142274; +} + +static void sub_8142274(u8 taskID) +{ + gGameContinueCallback = sub_8141FC4; + TrySavingData(3); + PlaySE(SE_SAVE); + gTasks[taskID].func = sub_81422B8; + gTasks[taskID].tFrameCount = 32; +} + +static void sub_81422B8(u8 taskID) +{ + if (gTasks[taskID].tFrameCount) + gTasks[taskID].tFrameCount--; + else + gTasks[taskID].func = sub_81422E8; +} + +static void sub_81422E8(u8 taskID) +{ + SetUpWindowConfig(&gWindowConfig_81E7198); + InitMenuWindow(&gWindowConfig_81E7198); + gTasks[taskID].func = sub_8142320; +} + +static void sub_8142320(u8 taskID) +{ + u8 spriteID; + s16 xPos, yPos, field4, field6; + + struct HallofFameMons* fameMons = (struct HallofFameMons*)(&ewram[0x1C000]); + u16 currPokeID = gTasks[taskID].tDisplayedPoke; + struct HallofFameMon* currMon = &fameMons->mons[currPokeID]; + + if (gTasks[taskID].tPokesNumber > 3) + { + xPos = sHallOfFame_MonsFullTeamPositions[currPokeID][0]; + yPos = sHallOfFame_MonsFullTeamPositions[currPokeID][1]; + field4 = sHallOfFame_MonsFullTeamPositions[currPokeID][2]; + field6 = sHallOfFame_MonsFullTeamPositions[currPokeID][3]; + } + else + { + xPos = sHallOfFame_MonsHalfTeamPositions[currPokeID][0]; + yPos = sHallOfFame_MonsHalfTeamPositions[currPokeID][1]; + field4 = sHallOfFame_MonsHalfTeamPositions[currPokeID][2]; + field6 = sHallOfFame_MonsHalfTeamPositions[currPokeID][3]; + } + + spriteID = HallOfFame_LoadPokemonPic(currMon->species, xPos, yPos, currPokeID, currMon->tid, currMon->personality); + gSprites[spriteID].data1 = field4; + gSprites[spriteID].data2 = field6; + gSprites[spriteID].data0 = 0; + gSprites[spriteID].callback = sub_81435DC; + gTasks[taskID].tMonSpriteID(currPokeID) = spriteID; + MenuZeroFillWindowRect(0, 14, 29, 19); + gTasks[taskID].func = sub_8142404; +} + +static void sub_8142404(u8 taskID) +{ + struct HallofFameMons* fameMons = (struct HallofFameMons*)(&ewram[0x1C000]); + u16 currPokeID = gTasks[taskID].tDisplayedPoke; + struct HallofFameMon* currMon = &fameMons->mons[currPokeID]; + + if (gSprites[gTasks[taskID].tMonSpriteID(currPokeID)].data0 != 0) + { + if (currMon->species != SPECIES_EGG) + PlayCry1(currMon->species, 0); + HallOfFame_PrintMonInfo(currMon, 0, 14); + gTasks[taskID].tFrameCount = 120; + gTasks[taskID].func = sub_8142484; + } +} + +static void sub_8142484(u8 taskID) +{ + struct HallofFameMons* fameMons = (struct HallofFameMons*)(&ewram[0x1C000]); + u16 currPokeID = gTasks[taskID].tDisplayedPoke; + struct HallofFameMon* currMon = &fameMons->mons[currPokeID]; + + if (gTasks[taskID].tFrameCount != 0) + gTasks[taskID].tFrameCount--; + else + { + sUnknown_0203931C |= (0x10000 << gSprites[gTasks[taskID].tMonSpriteID(currPokeID)].oam.paletteNum); + if (gTasks[taskID].tDisplayedPoke <= 4 && currMon[1].species != 0) // there is another pokemon to display + { + gTasks[taskID].tDisplayedPoke++; + BeginNormalPaletteFade(sUnknown_0203931C, 0, 12, 12, 0x735F); + gSprites[gTasks[taskID].tMonSpriteID(currPokeID)].oam.priority = 1; + gTasks[taskID].func = sub_8142320; + } + else + gTasks[taskID].func = sub_8142570; + } +} + +static void sub_8142570(u8 taskID) +{ + u16 i; + + BeginNormalPaletteFade(0xFFFF0000, 0, 0, 0, 0); + for (i = 0; i < 6; i++) + { + if (gTasks[taskID].tMonSpriteID(i) != 0xFF) + gSprites[gTasks[taskID].tMonSpriteID(i)].oam.priority = 0; + } + MenuZeroFillWindowRect(0, 14, 29, 19); + sub_8143068(0, 15); + PlaySE(SE_DENDOU); + gTasks[taskID].tFrameCount = 400; + gTasks[taskID].func = sub_8142618; +} + +static void sub_8142618(u8 taskID) +{ + if (gTasks[taskID].tFrameCount != 0) + { + gTasks[taskID].tFrameCount--; + if ((gTasks[taskID].tFrameCount & 3) == 0 && gTasks[taskID].tFrameCount > 110) + sub_81438C4(); + } + else + { + u16 i; + for (i = 0; i < 6; i++) + { + if (gTasks[taskID].tMonSpriteID(i) != 0xFF) + gSprites[gTasks[taskID].tMonSpriteID(i)].oam.priority = 1; + } + BeginNormalPaletteFade(sUnknown_0203931C, 0, 12, 12, 0x735F); + MenuZeroFillWindowRect(0, 14, 29, 19); + gTasks[taskID].tFrameCount = 7; + gTasks[taskID].func = sub_81426F8; + } +} + +static void sub_81426F8(u8 taskID) +{ + if (gTasks[taskID].tFrameCount >= 16) + gTasks[taskID].func = sub_8142738; + else + { + gTasks[taskID].tFrameCount++; + REG_BLDALPHA = gTasks[taskID].tFrameCount * 256; + } +} + +static void sub_8142738(u8 taskID) +{ + REG_DISPCNT = 0x1940; + SetUpWindowConfig(&gWindowConfig_81E71B4); + InitMenuWindow(&gWindowConfig_81E71B4); + + gTasks[taskID].tPlayerSpriteID = HallOfFame_LoadTrainerPic(gSaveBlock2.playerGender, 120, 72, 6); + gTasks[taskID].tFrameCount = 120; + gTasks[taskID].func = sub_8142794; +} + +static void sub_8142794(u8 taskID) +{ + if (gTasks[taskID].tFrameCount != 0) + gTasks[taskID].tFrameCount--; + else + { + if (gSprites[gTasks[taskID].tPlayerSpriteID].pos1.x != 160) + gSprites[gTasks[taskID].tPlayerSpriteID].pos1.x++; + else + { + MenuDrawTextWindow(1, 2, 15, 9); + HallOfFame_PrintPlayerInfo(1, 2); + MenuDrawTextWindow(2, 14, 27, 19); + MenuPrint(gMenuText_HOFCongratulations, 4, 15); + gTasks[taskID].func = sub_8142818; + } + } +} + +static void sub_8142818(u8 taskID) +{ + if (gMain.newKeys & A_BUTTON) + { + FadeOutBGM(4); + gTasks[taskID].func = sub_8142850; + } +} + +static void sub_8142850(u8 taskID) +{ + CpuSet(gPlttBufferFaded, gPlttBufferUnfaded, 0x200); + BeginNormalPaletteFade(-1, 8, 0, 0x10, 0); + gTasks[taskID].func = sub_81428A0; +} + +static void sub_81428A0(u8 taskID) +{ + if (!gPaletteFade.active) + { + DestroyTask(taskID); + SetMainCallback2(sub_81439D0); + } +} + +#undef tDisplayedPoke +#undef tPokesNumber +#undef tFrameCount +#undef tPlayerSpriteID +#undef tMonSpriteID + +void sub_81428CC(void) +{ + switch (gMain.state) + { + case 0: + default: + SetVBlankCallback(NULL); + sub_81433E0(); + gMain.state = 1; + break; + case 1: + sub_8143570(); + gMain.state++; + break; + case 2: + { + u16 savedIme; + + SetVBlankCallback(VBlankCB_HallOfFame); + savedIme = REG_IME; + REG_IME = 0; + REG_IE |= 1; + REG_IME = savedIme; + REG_DISPSTAT |= 8; + gMain.state++; + } + break; + case 3: + { + struct HallofFameMons* fameMons; + + REG_BLDCNT = 0; + REG_BLDALPHA = 0; + REG_BLDY = 0; + sub_81435B8(); + + fameMons = (struct HallofFameMons*)(&ewram[0x1C000]); + fameMons->mons[0] = sDummyFameMon; + + sub_80C5CD4(fameMons); + gMain.state++; + } + break; + case 4: + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); + if (sub_80C5DCC()) + gMain.state++; + break; + case 5: + REG_BLDCNT = 0x3F42; + REG_BLDALPHA = 0x710; + REG_BLDY = 0; + CreateTask(sub_8142A28, 0); + SetMainCallback2(CB2_HallOfFame); + break; + } +} + +#define tCurrTeamNo data[0] +#define tCurrPageNo data[1] +#define tCurrPokeID data[2] +#define tPokesNo data[4] +#define tMonSpriteID(i) data[i + 5] + +static void sub_8142A28(u8 taskID) +{ + if (sub_8125EC8(3) != 1) + gTasks[taskID].func = sub_8142FEC; + else + { + u16 *vram1, *vram2; + + u16 i; + struct HallofFameMons* savedTeams = (struct HallofFameMons*)(&ewram[0x1E000]); + for (i = 0; i < HALL_OF_FAME_MAX_TEAMS; i++, savedTeams++) + { + if (savedTeams->mons[0].species == 0) + break; + } + if (i < HALL_OF_FAME_MAX_TEAMS) + gTasks[taskID].tCurrTeamNo = i - 1; + else + gTasks[taskID].tCurrTeamNo = HALL_OF_FAME_MAX_TEAMS - 1; + gTasks[taskID].tCurrPageNo = GetGameStat(10); + + for (i = 0, vram1 = (u16*)(VRAM + 0x381A), vram2 = (u16*)(VRAM + 0x385A); i <= 16; i++) + { + *(vram1 + i) = i + 3; + *(vram2 + i) = i + 20; + } + SetUpWindowConfig(&gWindowConfig_81E7198); + InitMenuWindow(&gWindowConfig_81E7198); + gTasks[taskID].func = sub_8142B04; + } +} + +static void sub_8142B04(u8 taskID) +{ + struct HallofFameMons* savedTeams = (struct HallofFameMons*)(&ewram[0x1E000]); + struct HallofFameMon* currMon; + u16 i; + u8* stringPtr; + + for (i = 0; i < gTasks[taskID].tCurrTeamNo; i++) + savedTeams++; + + currMon = &savedTeams->mons[0]; + sUnknown_0203931C = 0; + gTasks[taskID].tCurrPokeID = 0; + gTasks[taskID].tPokesNo = 0; + + for (i = 0; i < 6; i++, currMon++) + { + if (currMon->species != 0) + gTasks[taskID].tPokesNo++; + } + + currMon = &savedTeams->mons[0]; + + for (i = 0; i < 6; i++, currMon++) + { + if (currMon->species != 0) + { + u16 spriteID; + s16 posX, posY; + if (gTasks[taskID].tPokesNo > 3) + { + posX = sHallOfFame_MonsFullTeamPositions[i][2]; + posY = sHallOfFame_MonsFullTeamPositions[i][3]; + } + else + { + posX = sHallOfFame_MonsHalfTeamPositions[i][2]; + posY = sHallOfFame_MonsHalfTeamPositions[i][3]; + } + spriteID = HallOfFame_LoadPokemonPic(currMon->species, posX, posY, i, currMon->tid, currMon->personality); + gSprites[spriteID].oam.priority = 1; + gTasks[taskID].tMonSpriteID(i) = spriteID; + } + else + gTasks[taskID].tMonSpriteID(i) = 0xFF; + } + + BlendPalettes(0xFFFF0000, 0xC, 0x735F); + + stringPtr = gStringVar1; + stringPtr = StringCopy(stringPtr, gMenuText_HOFNumber); + stringPtr[0] = 0xFC; + stringPtr[1] = 0x14; + stringPtr[2] = 0x6; + stringPtr += 3; + stringPtr = ConvertIntToDecimalString(stringPtr, gTasks[taskID].tCurrPageNo); + stringPtr[0] = 0xFC; + stringPtr[1] = 0x13; + stringPtr[2] = 0xF0; + stringPtr[3] = EOS; + MenuPrint(gStringVar1, 0, 0); + + gTasks[taskID].func = sub_8142CC8; +} + +static void sub_8142CC8(u8 taskID) +{ + struct HallofFameMons* savedTeams = (struct HallofFameMons*)(&ewram[0x1E000]); + struct HallofFameMon* currMon; + u16 i; + u16 currMonID; + + for (i = 0; i < gTasks[taskID].tCurrTeamNo; i++) + savedTeams++; + + for (i = 0; i < 6; i++) + { + u16 spriteID = gTasks[taskID].tMonSpriteID(i); + if (spriteID != 0xFF) + gSprites[spriteID].oam.priority = 1; + } + + currMonID = gTasks[taskID].tMonSpriteID(gTasks[taskID].tCurrPokeID); + gSprites[currMonID].oam.priority = 0; + sUnknown_0203931C = (0x10000 << gSprites[currMonID].oam.paletteNum) ^ 0xFFFF0000; + BlendPalettesUnfaded(sUnknown_0203931C, 0xC, 0x735F); + + currMon = &savedTeams->mons[gTasks[taskID].tCurrPokeID]; + if (currMon->species != SPECIES_EGG) + { + StopCryAndClearCrySongs(); + PlayCry1(currMon->species, 0); + } + HallOfFame_PrintMonInfo(currMon, 0, 14); + + gTasks[taskID].func = sub_8142DF4; +} + +static void sub_8142DF4(u8 taskID) +{ + u16 i; + if (gMain.newKeys & A_BUTTON) + { + if (gTasks[taskID].tCurrTeamNo != 0) // prepare another team to view + { + gTasks[taskID].tCurrTeamNo--; + for (i = 0; i < 6; i++) + { + u8 spriteID = gTasks[taskID].tMonSpriteID(i); + if (spriteID != 0xFF) + { + FreeSpritePaletteByTag(GetSpritePaletteTagByPaletteNum(gSprites[spriteID].oam.paletteNum)); + DestroySprite(&gSprites[spriteID]); + } + } + if (gTasks[taskID].tCurrPageNo != 0) + gTasks[taskID].tCurrPageNo--; + gTasks[taskID].func = sub_8142B04; + } + else // no more teams to view, turn off hall of fame PC + { + if (IsCryPlayingOrClearCrySongs()) + { + StopCryAndClearCrySongs(); + m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 0x100); + } + gTasks[taskID].func = sub_8142F78; + } + } + else if (gMain.newKeys & B_BUTTON) // turn off hall of fame PC + { + if (IsCryPlayingOrClearCrySongs()) + { + StopCryAndClearCrySongs(); + m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 0x100); + } + gTasks[taskID].func = sub_8142F78; + } + else if (gMain.newKeys & DPAD_UP && gTasks[taskID].tCurrPokeID != 0) // change poke -1 + { + gTasks[taskID].tCurrPokeID--; + gTasks[taskID].func = sub_8142CC8; + } + else if (gMain.newKeys & DPAD_DOWN && gTasks[taskID].tCurrPokeID < gTasks[taskID].tPokesNo - 1) // change poke +1 + { + gTasks[taskID].tCurrPokeID++; + gTasks[taskID].func = sub_8142CC8; + } +} + +static void sub_8142F78(u8 taskID) +{ + struct HallofFameMons* fameMons; + + CpuSet(gPlttBufferFaded, gPlttBufferUnfaded, 0x200); + fameMons = (struct HallofFameMons*)(&ewram[0x1C000]); + fameMons->mons[0] = sDummyFameMon; + sub_80C5E38(fameMons); + gTasks[taskID].func = sub_8142FCC; +} + +static void sub_8142FCC(u8 taskID) +{ + if (sub_80C5F98()) + { + DestroyTask(taskID); + ReturnFromHallOfFamePC(); + } +} + +static void sub_8142FEC(u8 taskID) +{ + MenuDrawTextWindow(2, 14, 27, 19); + MenuPrintMessage(gMenuText_HOFCorrupt, 3, 15); + gTasks[taskID].func = sub_814302C; +} + +static void sub_814302C(u8 taskID) +{ + if (MenuUpdateWindowText() && gMain.newKeys & A_BUTTON) + gTasks[taskID].func = sub_8142F78; +} + +#undef tCurrTeamNo +#undef tCurrPageNo +#undef tCurrPokeID +#undef tPokesNo +#undef tMonSpriteID + +static void sub_8143068(u8 a0, u8 a1) +{ + sub_8072BD8(gMenuText_WelcomeToHOFAndDexRating, 0, a1 + 1, 0xF0); +} + +static void HallOfFame_PrintMonInfo(struct HallofFameMon* currMon, u8 a1, u8 a2) +{ + u8* stringPtr; + u16 monData; + u16 i; + + stringPtr = gStringVar1; + stringPtr[0] = EXT_CTRL_CODE_BEGIN; + stringPtr[1] = 0x13; + stringPtr[2] = 0x28; + stringPtr[3] = EOS; + + if (currMon->species != SPECIES_EGG) + { + monData = SpeciesToPokedexNum(currMon->species); + if (monData != 0xFFFF) + { + stringPtr = StringCopy(stringPtr, gOtherText_Number2); + ConvertIntToDecimalStringN(stringPtr, monData, 2, 3); + } + } + + MenuPrint(gStringVar1, a1 + 4, a2 + 1); + stringPtr = gStringVar1; + + for (i = 0; i < 10 && currMon->nick[i] != EOS; stringPtr[i] = currMon->nick[i], i++) {} + stringPtr += i; + stringPtr[0] = EOS; + + if (currMon->species == SPECIES_EGG) + { + stringPtr[0] = EXT_CTRL_CODE_BEGIN; + stringPtr[1] = 0x13; + stringPtr[2] = 0xA0; + stringPtr[3] = EOS; + MenuPrint(gStringVar1, a1 + 9, a2 + 1); + MenuZeroFillWindowRect(0, a2 + 3, 29, a2 + 4); + } + else + { + + stringPtr[0] = EXT_CTRL_CODE_BEGIN; + stringPtr[1] = 0x13; + stringPtr[2] = 0x3E; + stringPtr += 3; + + stringPtr[0] = CHAR_SLASH; + stringPtr++; + + for (i = 0; i < 10 && gSpeciesNames[currMon->species][i] != EOS; stringPtr[i] = gSpeciesNames[currMon->species][i], i++) {} + + stringPtr += i; + stringPtr[0] = CHAR_SPACE; + stringPtr++; + + if (currMon->species != SPECIES_NIDORAN_M && currMon->species != SPECIES_NIDORAN_F) + { + switch (GetGenderFromSpeciesAndPersonality(currMon->species, currMon->personality)) + { + case MON_MALE: + stringPtr[0] = CHAR_MALE; + stringPtr++; + break; + case MON_FEMALE: + stringPtr[0] = CHAR_FEMALE; + stringPtr++; + break; + } + } + + stringPtr[0] = EXT_CTRL_CODE_BEGIN; + stringPtr[1] = 0x13; + stringPtr[2] = 0xA0; + stringPtr[3] = EOS; + + MenuPrint(gStringVar1, a1 + 9, a2 + 1); + + monData = currMon->lvl; + + stringPtr = StringCopy(gStringVar1, gOtherText_Level3); + + stringPtr[0] = EXT_CTRL_CODE_BEGIN; + stringPtr[1] = 0x14; + stringPtr[2] = 6; + stringPtr += 3; + + stringPtr = ConvertIntToDecimalStringN(stringPtr, monData, 0, 3); + + stringPtr[0] = EXT_CTRL_CODE_BEGIN; + stringPtr[1] = 0x13; + stringPtr[2] = 0x30; + stringPtr[3] = EOS; + + MenuPrint(gStringVar1, a1 + 7, a2 + 3); + + monData = currMon->tid; + + stringPtr = StringCopy(gStringVar1, gOtherText_IDNumber); + ConvertIntToDecimalStringN(stringPtr, monData, 2, 5); + + MenuPrint(gStringVar1, a1 + 13, a2 + 3); + } +} + +#define ByteRead16(ptr) ((ptr)[0] | ((ptr)[1] << 8)) + +static void HallOfFame_PrintPlayerInfo(u8 a0, u8 a1) +{ + u8* stringPtr; + u16 visibleTid; + + MenuPrint(gOtherText_Name, a0 + 1, a1 + 1); + MenuPrint_RightAligned(gSaveBlock2.playerName, a0 + 14, a1 + 1); + + MenuPrint(gOtherText_IDNumber2, a0 + 1, a1 + 3); + visibleTid = ByteRead16(gSaveBlock2.playerTrainerId); + ConvertIntToDecimalStringN(gStringVar1, visibleTid, 2, 5); + + MenuPrint_RightAligned(gStringVar1, a0 + 14, a1 + 3); + MenuPrint(gMainMenuString_Time, a0 + 1, a1 + 5); + + stringPtr = ConvertIntToDecimalString(gStringVar1, gSaveBlock2.playTimeHours); + stringPtr[0] = CHAR_SPACE; + stringPtr[1] = CHAR_COLON; + stringPtr[2] = CHAR_SPACE; + stringPtr += 3; + + stringPtr = ConvertIntToDecimalStringN(stringPtr, gSaveBlock2.playTimeMinutes, 2, 2); + stringPtr[0] = EOS; + + MenuPrint_RightAligned(gStringVar1, a0 + 14, a1 + 5); +} + +static void sub_81433E0(void) +{ + u32 offsetWrite, offsetWrite2, offsetWrite3, offsetWrite4; + u32 size, size2, size3, size4; + u16 i; + + REG_DISPCNT = 0; + + REG_BG0CNT = 0; + REG_BG0HOFS = 0; + REG_BG0VOFS = 0; + + REG_BG1CNT = 0; + REG_BG1HOFS = 0; + REG_BG1VOFS = 0; + + REG_BG2CNT = 0; + REG_BG2HOFS = 0; + REG_BG2VOFS = 0; + + REG_BG3CNT = 0; + REG_BG3HOFS = 0; + REG_BG3VOFS = 0; + + offsetWrite = (VRAM); + size = 0x18000; + while (TRUE) + { + DmaFill16(3, 0, offsetWrite, 0x1000); + offsetWrite += 0x1000; + size -= 0x1000; + if (size <= 0x1000) + { + DmaFill16(3, 0, offsetWrite, size); + break; + } + } + + offsetWrite2 = OAM; + size2 = OAM_SIZE; + DmaFill32(3, 0, offsetWrite2, size2); + + offsetWrite3 = PLTT; + size3 = PLTT_SIZE; + DmaFill16(3, 0, offsetWrite3, size3); + + LZ77UnCompVram(gHallOfFame_Gfx, (void*)(VRAM)); + + for (i = 0; i < 64; i++) + { + *((u16*)(VRAM + 0x3800) + i) = 1; + } + for (i = 0; i < 192; i++) + { + *((u16*)(VRAM + 0x3B80) + i) = 1; + } + for (i = 0; i < 1024; i++) + { + *((u16*)(VRAM + 0x3000) + i) = 2; + } + + offsetWrite4 = (u32)(&ewram[0]); + size4 = 0x4000; + while (TRUE) + { + DmaFill16(3, 0, offsetWrite4, 0x1000); + offsetWrite4 += 0x1000; + size4 -= 0x1000; + if (size4 <= 0x1000) + { + DmaFill16(3, 0, offsetWrite4, size4); + break; + } + } + + ResetPaletteFade(); + LoadPalette(gHallOfFame_Pal, 0, 0x20); +} + +static void sub_8143570(void) +{ + remove_some_task(); + ResetTasks(); + ResetSpriteData(); + FreeAllSpritePalettes(); + gReservedSpritePaletteCount = 8; + LoadCompressedObjectPic(&sHallOfFame_ConfettiSpriteSheet); + LoadCompressedObjectPalette(&sHallOfFame_ConfettiSpritePalette); + SetUpWindowConfig(&gWindowConfig_81E71B4); + InitMenuWindow(&gWindowConfig_81E71B4); +} + +static void sub_81435B8(void) +{ + REG_BG1CNT = 0x700; + REG_BG3CNT = 0x603; + REG_DISPCNT = 0x1B40; +} + +static void sub_81435DC(struct Sprite* sprite) +{ + u32 spritePos = *(u32*)(&sprite->pos1); + u32 dataPos = *(u32*)(&sprite->data1); + if (spritePos != dataPos) + { + if (sprite->pos1.x < sprite->data1) + sprite->pos1.x += 15; + if (sprite->pos1.x > sprite->data1) + sprite->pos1.x -= 15; + + if (sprite->pos1.y < sprite->data2) + sprite->pos1.y += 10; + if (sprite->pos1.y > sprite->data2) + sprite->pos1.y -= 10; + } + else + { + sprite->data0 = 1; + sprite->callback = SpriteCB_HallOfFame_Dummy; + } +} + +static void SpriteCB_HallOfFame_Dummy(struct Sprite* sprite) +{ + +} + +void sub_8143648(u16 paletteTag, u8 animID) +{ + gUnknown_02024E8C = sUnknown_0840B6B8; + gUnknown_02024E8C.paletteTag = paletteTag; + gUnknown_02024E8C.images = sUnknown_0840B69C[animID]; + gUnknown_02024E8C.anims = gSpriteAnimTable_81E7C64; +} + +void sub_8143680(u16 paletteTag, u8 animID) +{ + gUnknown_02024E8C = sUnknown_0840B6B8; + gUnknown_02024E8C.paletteTag = paletteTag; + gUnknown_02024E8C.images = sUnknown_0840B69C[animID]; + gUnknown_02024E8C.anims = gUnknown_081EC2A4[0]; +} + +static u32 HallOfFame_LoadPokemonPic(u16 species, s16 posX, s16 posY, u16 pokeID, u32 tid, u32 pid) +{ + u8 spriteID; + const u8* pokePal; + + LoadSpecialPokePic(&gMonFrontPicTable[species], gMonFrontPicCoords[species].coords, gMonFrontPicCoords[species].y_offset, 0x2000000, gUnknown_0840B5A0[pokeID], species, pid, 1); + + pokePal = GetMonSpritePalFromOtIdPersonality(species, tid, pid); + LoadCompressedPalette(pokePal, 16 * pokeID + 256, 0x20); + + sub_8143648(pokeID, pokeID); + spriteID = CreateSprite(&gUnknown_02024E8C, posX, posY, 10 - pokeID); + gSprites[spriteID].oam.paletteNum = pokeID; + return spriteID; +} + +static u32 HallOfFame_LoadTrainerPic(u16 trainerPicID, s16 posX, s16 posY, u16 a3) +{ + u8 spriteID; + + DecompressPicFromTable_2(&gTrainerFrontPicTable[trainerPicID], gTrainerFrontPicCoords[trainerPicID].coords, gTrainerFrontPicCoords[trainerPicID].y_offset, (void*) 0x2000000, gUnknown_0840B5A0[a3], trainerPicID); + + LoadCompressedPalette(gTrainerFrontPicPaletteTable[trainerPicID].data, 16 * a3 + 256, 0x20); + sub_8143680(a3, a3); + + spriteID = CreateSprite(&gUnknown_02024E8C, posX, posY, 1); + gSprites[spriteID].oam.paletteNum = a3; + + return spriteID; +} + +static void sub_814386C(struct Sprite* sprite) +{ + if (sprite->pos2.y > 120) + DestroySprite(sprite); + else + { + u16 rand; + u8 tableID; + + sprite->pos2.y++; + sprite->pos2.y += sprite->data1; + + tableID = sprite->data0; + rand = (Random() % 4) + 8; + sprite->pos2.x = rand * gSineTable[tableID] / 256; + + sprite->data0 += 4; + } +} + +static bool8 sub_81438C4(void) +{ + u8 spriteID; + struct Sprite* sprite; + + s16 posX = Random() % 240; + s16 posY = -(Random() % 8); + + spriteID = CreateSprite(&sSpriteTemplate_840B7A4, posX, posY, 0); + sprite = &gSprites[spriteID]; + + StartSpriteAnim(sprite, Random() % 17); + + if (Random() & 3) + sprite->data1 = 0; + else + sprite->data1 = 1; + + return 0; +} diff --git a/src/intro.c b/src/scene/intro.c similarity index 99% rename from src/intro.c rename to src/scene/intro.c index 462a2134d..dd7cc858c 100644 --- a/src/intro.c +++ b/src/scene/intro.c @@ -22,12 +22,8 @@ #include "unknown_task.h" extern struct SpriteTemplate gUnknown_02024E8C; -extern u16 gUnknown_02039318; -extern u16 gUnknown_0203931A; extern u16 gUnknown_02039358; extern u16 gUnknown_0203935A; -extern u32 gIntroFrameCounter; -extern struct GcmbStruct gMultibootProgramStruct; extern u16 gSaveFileStatus; extern u8 gReservedSpritePaletteCount; extern const u8 gInterfaceGfx_PokeBall[]; @@ -37,6 +33,12 @@ extern const u16 gIntroCopyright_Pal[]; extern const u16 gIntroCopyright_Tilemap[]; extern void *const gUnknown_0840B5A0[]; +static EWRAM_DATA u16 gUnknown_02039318 = 0; +static EWRAM_DATA u16 gUnknown_0203931A = 0; + +u32 gIntroFrameCounter; +struct GcmbStruct gMultibootProgramStruct; + //-------------------------------------------------- // Graphics Data //-------------------------------------------------- @@ -1783,7 +1785,7 @@ static u16 sub_813CE88(u16 species, s16 x, s16 y, u16 d, u8 front) LoadSpecialPokePic(&gMonFrontPicTable[species], gMonFrontPicCoords[species].coords, gMonFrontPicCoords[species].y_offset, 0x2000000, gUnknown_0840B5A0[d], species, 0, 1); else LoadSpecialPokePic(&gMonBackPicTable[species], gMonBackPicCoords[species].coords, gMonBackPicCoords[species].y_offset, 0x2000000, gUnknown_0840B5A0[d], species, 0, 0); - lzPaletteData = species_and_otid_get_pal(species, 0, 0xFFFF); + lzPaletteData = GetMonSpritePalFromOtIdPersonality(species, 0, 0xFFFF); LoadCompressedPalette(lzPaletteData, 0x100 + d * 0x10, 0x20); sub_8143648(d, d); spriteId = CreateSprite(&gUnknown_02024E8C, x, y, (d + 1) * 4); diff --git a/src/scene/intro_credits_graphics.c b/src/scene/intro_credits_graphics.c new file mode 100755 index 000000000..cd0589af8 --- /dev/null +++ b/src/scene/intro_credits_graphics.c @@ -0,0 +1,532 @@ +#include "global.h" +#include "gba/m4a_internal.h" +#include "intro.h" +#include "data2.h" +#include "decompress.h" +#include "hall_of_fame.h" +#include "intro_credits_graphics.h" +#include "libgncmultiboot.h" +#include "link.h" +#include "m4a.h" +#include "main.h" +#include "new_game.h" +#include "palette.h" +#include "rng.h" +#include "save.h" +#include "songs.h" +#include "sound.h" +#include "species.h" +#include "task.h" +#include "title_screen.h" +#include "trig.h" +#include "unknown_task.h" + +// define register constants for the inline asm +asm(".include \"constants/gba_constants.inc\"\n"); + +struct UnknownStruct1 +{ + u8 var0_0:4; + u8 var0_4:2; + u8 var0_6:2; + u8 var1; + u8 var2; + u8 var3; + u16 var4; +}; + +extern u8 gUnknown_0841225C; +extern u8 gUnknown_084126DC; +extern u8 gUnknown_084121FC; +extern u8 gUnknown_084128D8; +extern u8 gUnknown_08412EB4; +extern u8 gUnknown_08412818; +extern u8 gUnknown_08413184; +extern u8 gUnknown_08413340; +extern u8 gUnknown_084139C8; +extern u8 gUnknown_08413300; +extern u8 gUnknown_08413CCC; + +extern const struct SpriteTemplate gSpriteTemplate_8416B3C; +const extern struct CompressedSpriteSheet gUnknown_08416B54; +const extern struct CompressedSpriteSheet gUnknown_08416BDC; + +extern u16 gUnknown_02039358; +extern s16 gUnknown_0203935A; +extern s16 gUnknown_0203935C; +extern u8 gReservedSpritePaletteCount; + +void sub_8149248(); +void sub_8149264(); + +void load_intro_part2_graphics(u8 a) +{ + LZ77UnCompVram(&gUnknown_0841225C, (void *)(VRAM + 0x4000)); + LZ77UnCompVram(&gUnknown_084126DC, (void *)(VRAM + 0x7800)); + LoadPalette(&gUnknown_084121FC, 240, 32); + switch (a) + { + case 0: + default: + LZ77UnCompVram(&gUnknown_084128D8, (void *)(VRAM)); + LZ77UnCompVram(&gUnknown_08412EB4, (void *)(VRAM + 0x3000)); + LoadPalette(&gUnknown_08412818, 0, 96); + LoadCompressedObjectPic(&gUnknown_08416B54); + LoadPalette(&gUnknown_08413184, 256, 32); + sub_8149248(); + break; + case 1: + LZ77UnCompVram(&gUnknown_08413340, (void *)(VRAM)); + LZ77UnCompVram(&gUnknown_084139C8, (void *)(VRAM + 0x3000)); + LoadPalette(&gUnknown_08413300, 0, 32); + LoadCompressedObjectPic(&gUnknown_08416BDC); + LoadPalette(&gUnknown_08413CCC, 256, 32); + sub_8149264(); + break; + } + gUnknown_0203935C = 0; + gReservedSpritePaletteCount = 8; +} + +void sub_8148C78(u8 a) +{ + if (a == 1) + { + REG_BG3CNT = 0x603; + REG_BG2CNT = 0x702; + REG_BG1CNT = 0xF05; + REG_DISPCNT = 0x1E40; + } + else + { + REG_BG3CNT = 0x603; + REG_BG2CNT = 0x702; + REG_BG1CNT = 0xF05; + REG_DISPCNT = 0x1E40; + } +} + +extern u8 gUnknown_084131C4; +extern u8 gUnknown_084131A4; +extern u8 gUnknown_0841221C; +extern u8 gUnknown_08412878; +extern u8 gUnknown_08413320; +extern u8 gUnknown_0841223C; +extern u8 gUnknown_08413E78; +extern u8 gUnknown_08414084; +extern u8 gUnknown_08413E38; +const extern struct CompressedSpriteSheet gUnknown_08416C70; +extern u8 gUnknown_08414064; +extern struct UnknownStruct1 gUnknown_08416B94; +extern struct UnknownStruct1 gUnknown_08416C10; +extern struct UnknownStruct1 gUnknown_08416C8C; +const extern union AnimCmd *const gSpriteAnimTable_8416B84; +const extern union AnimCmd *const gSpriteAnimTable_8416C04; +const extern union AnimCmd *const gSpriteAnimTable_8416C88; +const extern struct SpriteTemplate gSpriteTemplate_8416CDC; +const extern struct SpriteTemplate gSpriteTemplate_Brendan; +const extern struct SpriteTemplate gSpriteTemplate_8416CF4; +const extern struct SpriteTemplate gSpriteTemplate_May; +const extern struct SpriteTemplate gSpriteTemplate_8416D7C; +const extern struct SpriteTemplate gSpriteTemplate_8416D94; + +void sub_8149280(); + +void sub_8148CB0(u8 a) +{ + LZ77UnCompVram(&gUnknown_0841225C, (void *)(VRAM + 0x4000)); + LZ77UnCompVram(&gUnknown_084126DC, (void *)(VRAM + 0x7800)); + switch (a) + { + case 0: + default: + LoadPalette(&gUnknown_084121FC, 240, 32); + LZ77UnCompVram(&gUnknown_084128D8, (void *)(VRAM)); + LZ77UnCompVram(&gUnknown_08412EB4, (void *)(VRAM + 0x3000)); + LoadPalette(&gUnknown_08412818, 0, 96); + LoadCompressedObjectPic(&gUnknown_08416B54); + LZ77UnCompVram(&gUnknown_084131C4, (void *)(VRAM + 0x10000)); + LoadPalette(&gUnknown_08413184, 256, 32); + sub_8149248(); + break; + case 1: + LoadPalette(&gUnknown_0841221C, 240, 32); + LZ77UnCompVram(&gUnknown_084128D8, (void *)(VRAM)); + LZ77UnCompVram(&gUnknown_08412EB4, (void *)(VRAM + 0x3000)); + LoadPalette(&gUnknown_08412878, 0, 96); + LoadCompressedObjectPic(&gUnknown_08416B54); + LZ77UnCompVram(&gUnknown_084131C4, (void *)(VRAM + 0x10000)); + LoadPalette(&gUnknown_084131A4, 256, 32); + sub_8149248(); + break; + case 2: + case 3: + LoadPalette(&gUnknown_0841221C, 240, 32); + LZ77UnCompVram(&gUnknown_08413340, (void *)(VRAM)); + LZ77UnCompVram(&gUnknown_084139C8, (void *)(VRAM + 0x3000)); + LoadPalette(&gUnknown_08413320, 0, 32); + LoadCompressedObjectPic(&gUnknown_08416BDC); + LoadPalette(&gUnknown_08413320, 256, 32); + sub_8149264(); + break; + case 4: + LoadPalette(&gUnknown_0841223C, 240, 32); + LZ77UnCompVram(&gUnknown_08413E78, (void *)(VRAM)); + LZ77UnCompVram(&gUnknown_08414084, (void *)(VRAM + 0x3000)); + LoadPalette(&gUnknown_08413E38, 0, 64); + LoadCompressedObjectPic(&gUnknown_08416C70); + LoadPalette(&gUnknown_08414064, 256, 32); + sub_8149280(); + break; + } + gReservedSpritePaletteCount = 8; + gUnknown_0203935C = 0; +} + +void sub_8148E90(u8 a) +{ + REG_BG3CNT = 0x603; + REG_BG2CNT = 0x702; + REG_BG1CNT = 0xF05; + REG_DISPCNT = 0x1F40; +} + +u8 sub_8148EC0(u8 a, u16 b, u16 c, u16 d) +{ + u8 taskId = CreateTask(&sub_8148F3C, 0); + + gTasks[taskId].data[0] = a; + gTasks[taskId].data[1] = b; + gTasks[taskId].data[2] = 0; + gTasks[taskId].data[3] = 0; + gTasks[taskId].data[4] = c; + gTasks[taskId].data[5] = 0; + gTasks[taskId].data[6] = 0; + gTasks[taskId].data[7] = d; + gTasks[taskId].data[8] = 8; + gTasks[taskId].data[9] = 0; + sub_8148F3C(taskId); + return taskId; +} + +#ifdef NONMATCHING +void sub_8148F3C(u8 taskId) +{ + register u32 r4 asm("r4"); + s32 r2; + + r4 = (u16)gTasks[taskId].data[1] << 16; + if (r4 != 0) + { + r2 = (gTasks[taskId].data[2] << 16) + (u16)gTasks[taskId].data[3] - (r4 >> 12); + gTasks[taskId].data[2] = r2 >> 16; + gTasks[taskId].data[3] = r2; + REG_BG1HOFS = gTasks[taskId].data[2]; + REG_BG1VOFS = gUnknown_0203935A + gUnknown_02039358; + } + + r4 = (u16)gTasks[taskId].data[4] << 16; + if (r4 != 0) + { + r2 = (gTasks[taskId].data[5] << 16) + (u16)gTasks[taskId].data[6] - (r4 >> 12); + gTasks[taskId].data[5] = r2 >> 16; + gTasks[taskId].data[3] = r2; + REG_BG2HOFS = gTasks[taskId].data[5]; + if (gTasks[taskId].data[0] != 0) + REG_BG2VOFS = gUnknown_0203935A + gUnknown_02039358; + else + REG_BG2VOFS = gUnknown_02039358; + } + + r4 = (u16)gTasks[taskId].data[7] << 16; + if (r4 != 0) + { + r2 = (gTasks[taskId].data[8] << 16) + (u16)gTasks[taskId].data[9] - (r4 >> 12);; + gTasks[taskId].data[8] = r2 >> 16; + gTasks[taskId].data[9] = r2; + REG_BG3HOFS = gTasks[taskId].data[8]; + REG_BG3VOFS = gUnknown_02039358; + } +} +#else +__attribute__((naked)) +void sub_8148F3C(u8 taskId) +{ + asm(".syntax unified\n\ + push {r4-r6,lr}\n\ + lsls r0, 24\n\ + lsrs r5, r0, 24\n\ + ldr r1, _08148FB4 @ =gTasks\n\ + lsls r0, r5, 2\n\ + adds r0, r5\n\ + lsls r0, 3\n\ + adds r3, r0, r1\n\ + ldrh r0, [r3, 0xA]\n\ + lsls r4, r0, 16\n\ + adds r6, r1, 0\n\ + cmp r4, 0\n\ + beq _08148F7C\n\ + movs r1, 0xC\n\ + ldrsh r0, [r3, r1]\n\ + lsls r0, 16\n\ + ldrh r1, [r3, 0xE]\n\ + adds r2, r0, r1\n\ + lsrs r0, r4, 12\n\ + subs r2, r0\n\ + asrs r1, r2, 16\n\ + strh r1, [r3, 0xC]\n\ + strh r2, [r3, 0xE]\n\ + ldr r0, _08148FB8 @ =REG_BG1HOFS\n\ + strh r1, [r0]\n\ + ldr r2, _08148FBC @ =REG_BG1VOFS\n\ + ldr r1, _08148FC0 @ =gUnknown_02039358\n\ + ldr r0, _08148FC4 @ =gUnknown_0203935A\n\ + ldrh r0, [r0]\n\ + ldrh r1, [r1]\n\ + adds r0, r1\n\ + strh r0, [r2]\n\ +_08148F7C:\n\ + ldrh r0, [r3, 0x10]\n\ + lsls r4, r0, 16\n\ + cmp r4, 0\n\ + beq _08148FD8\n\ + movs r1, 0x12\n\ + ldrsh r0, [r3, r1]\n\ + lsls r0, 16\n\ + ldrh r1, [r3, 0x14]\n\ + adds r2, r0, r1\n\ + lsrs r0, r4, 12\n\ + subs r2, r0\n\ + asrs r1, r2, 16\n\ + strh r1, [r3, 0x12]\n\ + strh r2, [r3, 0x14]\n\ + ldr r0, _08148FC8 @ =REG_BG2HOFS\n\ + strh r1, [r0]\n\ + movs r1, 0x8\n\ + ldrsh r0, [r3, r1]\n\ + cmp r0, 0\n\ + beq _08148FD0\n\ + ldr r2, _08148FCC @ =REG_BG2VOFS\n\ + ldr r1, _08148FC0 @ =gUnknown_02039358\n\ + ldr r0, _08148FC4 @ =gUnknown_0203935A\n\ + ldrh r0, [r0]\n\ + ldrh r1, [r1]\n\ + adds r0, r1\n\ + strh r0, [r2]\n\ + b _08148FD8\n\ + .align 2, 0\n\ +_08148FB4: .4byte gTasks\n\ +_08148FB8: .4byte REG_BG1HOFS\n\ +_08148FBC: .4byte REG_BG1VOFS\n\ +_08148FC0: .4byte gUnknown_02039358\n\ +_08148FC4: .4byte gUnknown_0203935A\n\ +_08148FC8: .4byte REG_BG2HOFS\n\ +_08148FCC: .4byte REG_BG2VOFS\n\ +_08148FD0:\n\ + ldr r0, _08149010 @ =REG_BG2VOFS\n\ + ldr r1, _08149014 @ =gUnknown_02039358\n\ + ldrh r1, [r1]\n\ + strh r1, [r0]\n\ +_08148FD8:\n\ + lsls r0, r5, 2\n\ + adds r0, r5\n\ + lsls r0, 3\n\ + adds r3, r0, r6\n\ + ldrh r0, [r3, 0x16]\n\ + lsls r4, r0, 16\n\ + cmp r4, 0\n\ + beq _08149008\n\ + movs r1, 0x18\n\ + ldrsh r0, [r3, r1]\n\ + lsls r0, 16\n\ + ldrh r1, [r3, 0x1A]\n\ + adds r2, r0, r1\n\ + lsrs r0, r4, 12\n\ + subs r2, r0\n\ + asrs r1, r2, 16\n\ + strh r1, [r3, 0x18]\n\ + strh r2, [r3, 0x1A]\n\ + ldr r0, _08149018 @ =REG_BG3HOFS\n\ + strh r1, [r0]\n\ + ldr r1, _0814901C @ =REG_BG3VOFS\n\ + ldr r0, _08149014 @ =gUnknown_02039358\n\ + ldrh r0, [r0]\n\ + strh r0, [r1]\n\ +_08149008:\n\ + pop {r4-r6}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_08149010: .4byte REG_BG2VOFS\n\ +_08149014: .4byte gUnknown_02039358\n\ +_08149018: .4byte REG_BG3HOFS\n\ +_0814901C: .4byte REG_BG3VOFS\n\ + .syntax divided\n"); +} +#endif + +void sub_8149020(u8 mode) +{ + u16 var1; + u16 var2; + switch (mode) + { + case 0: + default: + /* stuff */ + if (gMain.vblankCounter1 & 3 || gPaletteFade.active) + break; + if (gMain.vblankCounter1 & 4) + { + var1 = gPlttBufferUnfaded[9]; + var2 = gPlttBufferUnfaded[10]; + } + else + { + var1 = gPlttBufferUnfaded[10]; + var2 = gPlttBufferUnfaded[9]; + } + LoadPalette(&var1, 9, 2); + LoadPalette(&var2, 10, 2); + break; + case 2: + if (gMain.vblankCounter1 & 3 || gPaletteFade.active) + break; + if (gMain.vblankCounter1 & 4) + { + var1 = 0x3D27; + var2 = 0x295; + } + else + { + var1 = 0x31C; + var2 = 0x3D27; + } + LoadPalette(&var1, 12, 2); + LoadPalette(&var2, 13, 2); + break; + case 1: + break; + } +} + +void sub_814910C(struct Sprite *sprite) +{ + if (gUnknown_0203935C) + { + DestroySprite(sprite); + } + else + { + s32 var = ((sprite->pos1.x << 16) | (u16)sprite->data2) + (u16)sprite->data1; + sprite->pos1.x = var >> 16; + sprite->data2 = var; + if (sprite->pos1.x > 255) sprite->pos1.x = 0xFFE0; + if (sprite->data0) + { + sprite->pos2.y = -(gUnknown_02039358 + gUnknown_0203935A); + } + else + { + sprite->pos2.y = -gUnknown_02039358; + } + } +} + +void sub_8149174(u8 a, struct UnknownStruct1 *b, const union AnimCmd *const *c, u8 d) +{ + u8 i; + + for(i = 0; i < d; i++) + { + u8 sprite = CreateSprite(&gSpriteTemplate_8416B3C, b[i].var1, b[i].var2, b[i].var3); + CalcCenterToCornerVec(&gSprites[sprite], b[i].var0_4, b[i].var0_6, 0); + gSprites[sprite].oam.priority = 3; + gSprites[sprite].oam.shape = b[i].var0_4; + gSprites[sprite].oam.size = b[i].var0_6; + gSprites[sprite].oam.paletteNum = 0; + gSprites[sprite].anims = c; + StartSpriteAnim(&gSprites[sprite], b[i].var0_0); + gSprites[sprite].data0 = a; + gSprites[sprite].data1 = b[i].var4; + gSprites[sprite].data2 = 0; + } +} + +void sub_8149248() +{ + sub_8149174(0, &gUnknown_08416B94, &gSpriteAnimTable_8416B84, 9); +} + +void sub_8149264() +{ + sub_8149174(1, &gUnknown_08416C10, &gSpriteAnimTable_8416C04, 12); +} + +void sub_8149280() +{ + sub_8149174(1, &gUnknown_08416C8C, &gSpriteAnimTable_8416C88, 6); +} + +void nullsub_82() +{ +} + +void sub_81492A0(struct Sprite* sprite) +{ + sprite->invisible = gSprites[sprite->data0].invisible; + sprite->pos1.x = gSprites[sprite->data0].pos1.x; + sprite->pos1.y = gSprites[sprite->data0].pos1.y + 8; + sprite->pos2.x = gSprites[sprite->data0].pos2.x; + sprite->pos2.y = gSprites[sprite->data0].pos2.y; +} + + + +u8 intro_create_brendan_sprite(s16 a, s16 b) +{ + u8 sprite = CreateSprite(&gSpriteTemplate_8416CDC, a, b, 0); + u8 brendan = CreateSprite(&gSpriteTemplate_Brendan, a, b + 8, 1); + gSprites[brendan].data0 = sprite; + return sprite; +} + +u8 intro_create_may_sprite(s16 a, s16 b) +{ + u8 sprite = CreateSprite(&gSpriteTemplate_8416CF4, a, b, 0); + u8 may = CreateSprite(&gSpriteTemplate_May, a, b + 8, 1); + gSprites[may].data0 = sprite; + return sprite; +} + +void nullsub_83() +{ +} + +void sub_81493C4(struct Sprite* sprite) +{ + sprite->invisible = gSprites[sprite->data0].invisible; + sprite->pos1.y = gSprites[sprite->data0].pos1.y; + sprite->pos2.x = gSprites[sprite->data0].pos2.x; + sprite->pos2.y = gSprites[sprite->data0].pos2.y; +} + +u8 intro_create_latios_sprite(s16 a, s16 b) +{ + u8 sprite = CreateSprite(&gSpriteTemplate_8416D7C, a - 32, b, 2); + u8 latios = CreateSprite(&gSpriteTemplate_8416D7C, a + 32, b, 2); + gSprites[latios].data0 = sprite; + StartSpriteAnim(&gSprites[latios], 1); + gSprites[latios].callback = &sub_81493C4; + return sprite; +} + +u8 intro_create_latias_sprite(s16 a, s16 b) +{ + u8 sprite = CreateSprite(&gSpriteTemplate_8416D94, a - 32, b, 2); + u8 latios = CreateSprite(&gSpriteTemplate_8416D94, a + 32, b, 2); + gSprites[latios].data0 = sprite; + StartSpriteAnim(&gSprites[latios], 1); + gSprites[latios].callback = &sub_81493C4; + return sprite; +} diff --git a/src/new_game.c b/src/scene/new_game.c similarity index 93% rename from src/new_game.c rename to src/scene/new_game.c index 33aacd10a..6ab21c544 100644 --- a/src/new_game.c +++ b/src/scene/new_game.c @@ -11,7 +11,7 @@ #include "item_menu.h" #include "lottery_corner.h" #include "mail_data.h" -#include "mauville_old_man.h" +#include "mauville_man.h" #include "play_time.h" #include "player_pc.h" #include "pokeblock.h" @@ -20,13 +20,14 @@ #include "pokemon_storage_system.h" #include "rng.h" #include "roamer.h" -#include "rom4.h" +#include "overworld.h" #include "rtc.h" #include "script.h" #include "secret_base.h" #include "tv.h" -extern u8 gDifferentSaveFile; +EWRAM_DATA u8 gDifferentSaveFile = 0; +EWRAM_DATA u8 gUnknown_020297ED = 0; extern u8 gPlayerPartyCount; extern u8 gUnknown_03005CE8; @@ -98,7 +99,7 @@ void sub_8052DE4(void) void WarpToTruck(void) { - warp1_set(25, 40, -1, -1, -1); // inside of truck + Overworld_SetWarpDestination(25, 40, -1, -1, -1); // inside of truck warp_in(); } @@ -114,7 +115,7 @@ void sub_8052E4C(void) sub_808C0A0(); ZeroPlayerPartyMons(); ZeroEnemyPartyMons(); - sub_80A3684(); + ResetBagScrollPositions(); } void NewGameInitData(void) @@ -156,7 +157,7 @@ void NewGameInitData(void) ClearPokeblocks(); ClearDecorationInventories(); InitEasyChatPhrases(); - SetMauvilleOldMan(); + SetupMauvilleOldMan(); InitDewfordTrend(); ResetFanClub(); ResetLotteryCorner(); diff --git a/src/title_screen.c b/src/scene/title_screen.c similarity index 90% rename from src/title_screen.c rename to src/scene/title_screen.c index 664e07978..2503b0654 100644 --- a/src/title_screen.c +++ b/src/scene/title_screen.c @@ -30,14 +30,17 @@ #define VERSION_BANNER_BYTES 0x2000 #define VERSION_BANNER_LEFT_X 108 #define VERSION_BANNER_RIGHT_X 172 -#define VERSION_BANNER_Y 44 +#ifdef SAPPHIRE +#define VERSION_BANNER_Y_GOAL 83 +#else #define VERSION_BANNER_Y_GOAL 84 +#endif +#define VERSION_BANNER_Y (VERSION_BANNER_Y_GOAL - 40) #define START_BANNER_X DISPLAY_WIDTH / 2 - 2 #endif extern u8 gReservedSpritePaletteCount; extern struct MusicPlayerInfo gMPlay_BGM; -extern u8 gUnknown_0202F7E4; extern u16 gUnknown_030041B4; extern u16 gUnknown_030042C0; extern const u8 gUnknown_08E9D8CC[]; @@ -47,6 +50,8 @@ extern const u8 gVersionTiles[]; extern const u8 gTitleScreenPressStart_Gfx[]; extern const u16 gTitleScreenLogoShinePalette[]; +static EWRAM_DATA u8 gUnknown_0202F7E4 = 0; + #ifdef SAPPHIRE static const u16 sLegendaryMonPalettes[][16] = { @@ -331,7 +336,9 @@ static const struct CompressedSpriteSheet sPokemonLogoShineSpriteSheet[] = #define LEGENDARY_MARKING_COLOR(c) RGB(0, 0, (c)) #endif -#ifdef SAPPHIRE +#if defined(GERMAN) && defined(SAPPHIRE) +#define PLTT_BUFFER_INDEX 9 +#elif defined(SAPPHIRE) #define PLTT_BUFFER_INDEX 26 #else #define PLTT_BUFFER_INDEX 21 @@ -430,99 +437,99 @@ __attribute__((naked)) static void CreatePressStartBanner(s16 x, s16 y) { asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r10\n\ - mov r6, r9\n\ - mov r5, r8\n\ - push {r5-r7}\n\ - lsls r0, 16\n\ - ldr r2, _0807C3AC @ =0xffe00000\n\ - adds r0, r2\n\ - lsrs r0, 16\n\ - movs r6, 0\n\ - lsls r1, 16\n\ - mov r10, r1\n\ - mov r8, r10\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + lsls r0, 16\n\ + ldr r2, _0807C3AC @ =0xffe00000\n\ + adds r0, r2\n\ + lsrs r0, 16\n\ + movs r6, 0\n\ + lsls r1, 16\n\ + mov r10, r1\n\ + mov r8, r10\n\ _0807C302:\n\ - lsls r5, r0, 16\n\ - asrs r5, 16\n\ - ldr r0, _0807C3B0 @ =sStartCopyrightBannerSpriteTemplate\n\ - adds r1, r5, 0\n\ - mov r3, r8\n\ - asrs r2, r3, 16\n\ - movs r3, 0\n\ - bl CreateSprite\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - lsls r4, r0, 4\n\ - adds r4, r0\n\ - lsls r4, 2\n\ - ldr r0, _0807C3B4 @ =gSprites\n\ - mov r9, r0\n\ - add r4, r9\n\ - adds r0, r4, 0\n\ - adds r1, r6, 0\n\ - bl StartSpriteAnim\n\ - movs r7, 0x1\n\ - strh r7, [r4, 0x2E]\n\ - adds r0, r6, 0x1\n\ - lsls r0, 24\n\ - lsrs r6, r0, 24\n\ - adds r5, 0x20\n\ - lsls r5, 16\n\ - lsrs r0, r5, 16\n\ - cmp r6, 0x2\n\ - bls _0807C302\n\ - ldr r1, _0807C3B0 @ =sStartCopyrightBannerSpriteTemplate\n\ - mov r8, r1\n\ - lsls r5, r0, 16\n\ - asrs r5, 16\n\ - mov r2, r10\n\ - asrs r6, r2, 16\n\ - mov r0, r8\n\ - adds r1, r5, 0\n\ - adds r2, r6, 0\n\ - movs r3, 0\n\ - bl CreateSprite\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - lsls r4, r0, 4\n\ - adds r4, r0\n\ - lsls r4, 2\n\ - add r4, r9\n\ - adds r0, r4, 0\n\ - movs r1, 0x8\n\ - bl StartSpriteAnim\n\ - strh r7, [r4, 0x2E]\n\ - subs r5, 0x60\n\ - lsls r5, 16\n\ - asrs r5, 16\n\ - subs r6, 0x8\n\ - lsls r6, 16\n\ - asrs r6, 16\n\ - mov r0, r8\n\ - adds r1, r5, 0\n\ - adds r2, r6, 0\n\ - movs r3, 0\n\ - bl CreateSprite\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - lsls r4, r0, 4\n\ - adds r4, r0\n\ - lsls r4, 2\n\ - add r4, r9\n\ - adds r0, r4, 0\n\ - movs r1, 0x9\n\ - bl StartSpriteAnim\n\ - strh r7, [r4, 0x2E]\n\ - pop {r3-r5}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - mov r10, r5\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ + lsls r5, r0, 16\n\ + asrs r5, 16\n\ + ldr r0, _0807C3B0 @ =sStartCopyrightBannerSpriteTemplate\n\ + adds r1, r5, 0\n\ + mov r3, r8\n\ + asrs r2, r3, 16\n\ + movs r3, 0\n\ + bl CreateSprite\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + lsls r4, r0, 4\n\ + adds r4, r0\n\ + lsls r4, 2\n\ + ldr r0, _0807C3B4 @ =gSprites\n\ + mov r9, r0\n\ + add r4, r9\n\ + adds r0, r4, 0\n\ + adds r1, r6, 0\n\ + bl StartSpriteAnim\n\ + movs r7, 0x1\n\ + strh r7, [r4, 0x2E]\n\ + adds r0, r6, 0x1\n\ + lsls r0, 24\n\ + lsrs r6, r0, 24\n\ + adds r5, 0x20\n\ + lsls r5, 16\n\ + lsrs r0, r5, 16\n\ + cmp r6, 0x2\n\ + bls _0807C302\n\ + ldr r1, _0807C3B0 @ =sStartCopyrightBannerSpriteTemplate\n\ + mov r8, r1\n\ + lsls r5, r0, 16\n\ + asrs r5, 16\n\ + mov r2, r10\n\ + asrs r6, r2, 16\n\ + mov r0, r8\n\ + adds r1, r5, 0\n\ + adds r2, r6, 0\n\ + movs r3, 0\n\ + bl CreateSprite\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + lsls r4, r0, 4\n\ + adds r4, r0\n\ + lsls r4, 2\n\ + add r4, r9\n\ + adds r0, r4, 0\n\ + movs r1, 0x8\n\ + bl StartSpriteAnim\n\ + strh r7, [r4, 0x2E]\n\ + subs r5, 0x60\n\ + lsls r5, 16\n\ + asrs r5, 16\n\ + subs r6, 0x8\n\ + lsls r6, 16\n\ + asrs r6, 16\n\ + mov r0, r8\n\ + adds r1, r5, 0\n\ + adds r2, r6, 0\n\ + movs r3, 0\n\ + bl CreateSprite\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + lsls r4, r0, 4\n\ + adds r4, r0\n\ + lsls r4, 2\n\ + add r4, r9\n\ + adds r0, r4, 0\n\ + movs r1, 0x9\n\ + bl StartSpriteAnim\n\ + strh r7, [r4, 0x2E]\n\ + pop {r3-r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ _0807C3AC: .4byte 0xffe00000\n\ _0807C3B0: .4byte sStartCopyrightBannerSpriteTemplate\n\ _0807C3B4: .4byte gSprites\n\ diff --git a/src/script_menu.c b/src/script_menu.c deleted file mode 100644 index e1ad3f467..000000000 --- a/src/script_menu.c +++ /dev/null @@ -1,1134 +0,0 @@ -#include "global.h" -#include "script_menu.h" -#include "event_data.h" -#include "field_effect.h" -#include "menu.h" -#include "palette.h" -#include "script.h" -#include "sound.h" -#include "sprite.h" -#include "strings.h" -#include "task.h" - -// multichoice lists -const struct MenuAction MultichoiceList_00[] = -{ - {(u8 *)OtherText_Petalburg, 0}, - {(u8 *)OtherText_Slateport, 0}, - {(u8 *)gOtherText_CancelNoTerminator, 0}, -}; - -const struct MenuAction MultichoiceList_02[] = -{ - {(u8 *)OtherText_Enter, 0}, - {(u8 *)OtherText_Info3, 0}, - {(u8 *)gOtherText_CancelNoTerminator, 0}, -}; - -const struct MenuAction MultichoiceList_03[] = -{ - {(u8 *)OtherText_WhatsAContest, 0}, - {(u8 *)OtherText_TypesOfContest, 0}, - {(u8 *)OtherText_Ranks, 0}, - {(u8 *)gOtherText_CancelNoTerminator, 0}, -}; - -const struct MenuAction MultichoiceList_04[] = -{ - {(u8 *)OtherText_CoolContest, 0}, - {(u8 *)OtherText_BeautyContest, 0}, - {(u8 *)OtherText_CuteContest, 0}, - {(u8 *)OtherText_SmartContest, 0}, - {(u8 *)OtherText_ToughContest, 0}, - {(u8 *)gOtherText_CancelNoTerminator, 0}, -}; - -const struct MenuAction MultichoiceList_06[] = -{ - {(u8 *)OtherText_Decoration, 0}, - {(u8 *)OtherText_PackUp, 0}, - {(u8 *)OtherText_Registry, 0}, - {(u8 *)gOtherText_CancelNoTerminator, 0}, -}; - -const struct MenuAction MultichoiceList_05[] = -{ - {(u8 *)OtherText_Decoration, 0}, - {(u8 *)OtherText_PackUp, 0}, - {(u8 *)gOtherText_CancelNoTerminator, 0}, -}; - -const struct MenuAction MultichoiceList_07[] = -{ - {(u8 *)OtherText_Register, 0}, - {(u8 *)OtherText_Registry, 0}, - {(u8 *)OtherText_Information, 0}, - {(u8 *)gOtherText_CancelNoTerminator, 0}, -}; - -const struct MenuAction MultichoiceList_12[] = -{ - {(u8 *)OtherText_Mach, 0}, - {(u8 *)OtherText_Acro, 0}, -}; - -const struct MenuAction MultichoiceList_13[] = -{ - {(u8 *)OtherText_Poison, 0}, - {(u8 *)OtherText_Paralysis, 0}, - {(u8 *)OtherText_Sleep, 0}, - {(u8 *)OtherText_Burn, 0}, - {(u8 *)OtherText_Frozen, 0}, - {(u8 *)gOtherText_CancelNoTerminator, 0}, -}; - -const struct MenuAction MultichoiceList_14[] = -{ - {(u8 *)OtherText_Dewford, 0}, - {(u8 *)gOtherText_CancelNoTerminator, 0}, -}; - -const struct MenuAction MultichoiceList_16[] = -{ - {(u8 *)OtherText_SawIt, 0}, - {(u8 *)OtherText_NotYet, 0}, -}; - -const struct MenuAction MultichoiceList_17[] = -{ - {(u8 *)OtherText_Yes, 0}, - {(u8 *)OtherText_No, 0}, - {(u8 *)OtherText_Info3, 0}, -}; - -const struct MenuAction MultichoiceList_18[] = -{ - {(u8 *)OtherText_SingleBattle, 0}, - {(u8 *)OtherText_DoubleBattle, 0}, - {(u8 *)OtherText_MultiBattle, 0}, - {(u8 *)gOtherText_CancelNoTerminator, 0}, -}; - -const struct MenuAction MultichoiceList_19[] = -{ - {(u8 *)OtherText_Littleroot, 0}, - {(u8 *)OtherText_Slateport, 0}, - {(u8 *)OtherText_Lilycove, 0}, -}; - -const struct MenuAction MultichoiceList_20[] = -{ - {(u8 *)OtherText_Yes, 0}, - {(u8 *)OtherText_No, 0}, - {(u8 *)OtherText_Info3, 0}, -}; - -const struct MenuAction MultichoiceList_23[] = -{ - {(u8 *)OtherText_MakeAChallenge, 0}, - {(u8 *)OtherText_ObtainInformation, 0}, - {(u8 *)gOtherText_CancelNoTerminator, 0}, -}; - -const struct MenuAction MultichoiceList_24[] = -{ - {(u8 *)OtherText_Lv50_2, 0}, - {(u8 *)OtherText_Lv100_2, 0}, - {(u8 *)gOtherText_CancelNoTerminator, 0}, -}; - -const struct MenuAction MultichoiceList_25[] = -{ - {(u8 *)OtherText_Zigzagoon, 0}, - {(u8 *)OtherText_Nincada, 0}, - {(u8 *)OtherText_Poochyena, 0}, -}; - -const struct MenuAction MultichoiceList_26[] = -{ - {(u8 *)OtherText_Nincada2, 0}, - {(u8 *)OtherText_Lotad, 0}, - {(u8 *)OtherText_Roselia, 0}, -}; - -const struct MenuAction MultichoiceList_27[] = -{ - {(u8 *)OtherText_Shroomish, 0}, - {(u8 *)OtherText_Nincada3, 0}, - {(u8 *)OtherText_Surskit, 0}, -}; - -const struct MenuAction MultichoiceList_28[] = -{ - {(u8 *)OtherText_Treecko, 0}, - {(u8 *)OtherText_Torchic, 0}, - {(u8 *)OtherText_Mudkip, 0}, -}; - -const struct MenuAction MultichoiceList_29[] = -{ - {(u8 *)OtherText_Seedot, 0}, - {(u8 *)OtherText_Shroomish2, 0}, - {(u8 *)OtherText_Spinda, 0}, -}; - -const struct MenuAction MultichoiceList_30[] = -{ - {(u8 *)OtherText_Shroomish3, 0}, - {(u8 *)OtherText_Zigzagoon2, 0}, - {(u8 *)OtherText_Wurmple, 0}, -}; - -const struct MenuAction MultichoiceList_31[] = -{ - {(u8 *)OtherText_PokeBall, 0}, - {(u8 *)OtherText_SuperPotion, 0}, - {(u8 *)OtherText_SamePrice, 0}, -}; - -const struct MenuAction MultichoiceList_32[] = -{ - {(u8 *)OtherText_Yen135, 0}, - {(u8 *)OtherText_Yen155, 0}, - {(u8 *)OtherText_Yen175, 0}, -}; - -const struct MenuAction MultichoiceList_33[] = -{ - {(u8 *)OtherText_CostMore, 0}, - {(u8 *)OtherText_CostLess, 0}, - {(u8 *)OtherText_SamePrice2, 0}, -}; - -const struct MenuAction MultichoiceList_34[] = -{ - {(u8 *)OtherText_MaleSymbol, 0}, - {(u8 *)OtherText_FemaleSymbol, 0}, - {(u8 *)OtherText_Neither, 0}, -}; - -const struct MenuAction MultichoiceList_35[] = -{ - {(u8 *)OtherText_Males, 0}, - {(u8 *)OtherText_Females, 0}, - {(u8 *)OtherText_SameNumber, 0}, -}; - -const struct MenuAction MultichoiceList_36[] = -{ - {(u8 *)OtherText_Male, 0}, - {(u8 *)OtherText_Female, 0}, - {(u8 *)OtherText_ItDepends, 0}, -}; - -const struct MenuAction MultichoiceList_37[] = -{ - {(u8 *)OtherText_Six2, 0}, - {(u8 *)OtherText_Eight2, 0}, - {(u8 *)OtherText_Ten, 0}, -}; - -const struct MenuAction MultichoiceList_38[] = -{ - {(u8 *)OtherText_One, 0}, - {(u8 *)OtherText_Two, 0}, - {(u8 *)OtherText_Three, 0}, -}; - -const struct MenuAction MultichoiceList_39[] = -{ - {(u8 *)OtherText_Six, 0}, - {(u8 *)OtherText_Seven, 0}, - {(u8 *)OtherText_Eight, 0}, -}; - -const struct MenuAction MultichoiceList_42[] = -{ - {(u8 *)OtherText_FreshWater, 0}, - {(u8 *)OtherText_SodaPop, 0}, - {(u8 *)OtherText_Lemonade, 0}, - {(u8 *)gOtherText_CancelNoTerminator, 0}, -}; - -const struct MenuAction MultichoiceList_43[] = -{ - {(u8 *)OtherText_HowToRide, 0}, - {(u8 *)OtherText_HowToTurn, 0}, - {(u8 *)OtherText_SandySlopes, 0}, - {(u8 *)gOtherText_CancelNoTerminator, 0}, -}; - -const struct MenuAction MultichoiceList_44[] = -{ - {(u8 *)OtherText_Wheelies, 0}, - {(u8 *)OtherText_BunnyHops, 0}, - {(u8 *)OtherText_Jumping, 0}, - {(u8 *)gOtherText_CancelNoTerminator, 0}, -}; - -const struct MenuAction MultichoiceList_45[] = -{ - {(u8 *)OtherText_Satisfied, 0}, - {(u8 *)OtherText_Dissatisfied, 0}, -}; - -const struct MenuAction MultichoiceList_46[] = -{ - {(u8 *)OtherText_Deepseatooth, 0}, - {(u8 *)OtherText_Deepseascale, 0}, - {(u8 *)gOtherText_CancelNoTerminator, 0}, -}; - -const struct MenuAction MultichoiceList_47[] = -{ - {(u8 *)OtherText_BlueFlute2, 0}, - {(u8 *)OtherText_YellowFlute2, 0}, - {(u8 *)OtherText_RedFlute2, 0}, - {(u8 *)OtherText_WhiteFlute2, 0}, - {(u8 *)OtherText_BlackFlute2, 0}, - {(u8 *)OtherText_GlassChair, 0}, - {(u8 *)OtherText_GlassDesk, 0}, - {(u8 *)gOtherText_CancelNoTerminator, 0}, -}; - -const struct MenuAction MultichoiceList_48[] = -{ - {(u8 *)OtherText_TreeckoDoll, 0}, - {(u8 *)OtherText_TorchicDoll, 0}, - {(u8 *)OtherText_MudkipDoll, 0}, - {(u8 *)gOtherText_CancelNoTerminator, 0}, -}; - -const struct MenuAction MultichoiceList_55[] = -{ - {(u8 *)OtherText_TM32, 0}, - {(u8 *)OtherText_TM29, 0}, - {(u8 *)OtherText_TM35, 0}, - {(u8 *)OtherText_TM24, 0}, - {(u8 *)OtherText_TM13, 0}, - {(u8 *)gOtherText_CancelNoTerminator, 0}, -}; - -const struct MenuAction MultichoiceList_49[] = -{ - {(u8 *)OtherText_50Coins, 0}, - {(u8 *)OtherText_500Coins, 0}, - {(u8 *)gOtherText_CancelNoTerminator, 0}, -}; - -const struct MenuAction MultichoiceList_50[] = -{ - {(u8 *)OtherText_Excellent, 0}, - {(u8 *)OtherText_NotSoHot, 0}, -}; - -const struct MenuAction MultichoiceList_52[] = -{ - {(u8 *)OtherText_Lilycove, 0}, - {(u8 *)OtherText_BattleTower, 0}, - {(u8 *)gOtherText_CancelNoTerminator, 0}, -}; - -const struct MenuAction MultichoiceList_53[] = -{ - {(u8 *)OtherText_Slateport, 0}, - {(u8 *)OtherText_Lilycove, 0}, - {(u8 *)gOtherText_CancelNoTerminator, 0}, -}; - -const struct MenuAction MultichoiceList_54[] = -{ - {(u8 *)OtherText_Right, 0}, - {(u8 *)OtherText_Left, 0}, -}; - -const struct MenuAction MultichoiceList_56[] = -{ - {(u8 *)OtherText_Slateport, 0}, - {(u8 *)OtherText_BattleTower, 0}, - {(u8 *)gOtherText_CancelNoTerminator, 0}, -}; - -const struct MenuAction MultichoiceList_57[] = -{ - {(u8 *)OtherText_1F_2, 0}, - {(u8 *)OtherText_2F_2, 0}, - {(u8 *)OtherText_3F_2, 0}, - {(u8 *)OtherText_4F_2, 0}, - {(u8 *)OtherText_5F_2, 0}, -}; - -const struct MenuAction MultichoiceList_58[] = -{ - {(u8 *)OtherText_RedShard, 0}, - {(u8 *)gOtherText_CancelNoTerminator, 0}, -}; - -const struct MenuAction MultichoiceList_59[] = -{ - {(u8 *)OtherText_YellowShard, 0}, - {(u8 *)gOtherText_CancelNoTerminator, 0}, -}; - -const struct MenuAction MultichoiceList_60[] = -{ - {(u8 *)OtherText_RedShard, 0}, - {(u8 *)OtherText_YellowShard, 0}, - {(u8 *)gOtherText_CancelNoTerminator, 0}, -}; - -const struct MenuAction MultichoiceList_61[] = -{ - {(u8 *)OtherText_BlueShard, 0}, - {(u8 *)gOtherText_CancelNoTerminator, 0}, -}; - -const struct MenuAction MultichoiceList_62[] = -{ - {(u8 *)OtherText_RedShard, 0}, - {(u8 *)OtherText_BlueShard, 0}, - {(u8 *)gOtherText_CancelNoTerminator, 0}, -}; - -const struct MenuAction MultichoiceList_63[] = -{ - {(u8 *)OtherText_YellowShard, 0}, - {(u8 *)OtherText_BlueShard, 0}, - {(u8 *)gOtherText_CancelNoTerminator, 0}, -}; - -const struct MenuAction MultichoiceList_64[] = -{ - {(u8 *)OtherText_RedShard, 0}, - {(u8 *)OtherText_YellowShard, 0}, - {(u8 *)OtherText_BlueShard, 0}, - {(u8 *)gOtherText_CancelNoTerminator, 0}, -}; - -const struct MenuAction MultichoiceList_65[] = -{ - {(u8 *)OtherText_GreenShard, 0}, - {(u8 *)gOtherText_CancelNoTerminator, 0}, -}; - -const struct MenuAction MultichoiceList_66[] = -{ - {(u8 *)OtherText_RedShard, 0}, - {(u8 *)OtherText_GreenShard, 0}, - {(u8 *)gOtherText_CancelNoTerminator, 0}, -}; - -const struct MenuAction MultichoiceList_67[] = -{ - {(u8 *)OtherText_YellowShard, 0}, - {(u8 *)OtherText_GreenShard, 0}, - {(u8 *)gOtherText_CancelNoTerminator, 0}, -}; - -const struct MenuAction MultichoiceList_68[] = -{ - {(u8 *)OtherText_RedShard, 0}, - {(u8 *)OtherText_YellowShard, 0}, - {(u8 *)OtherText_GreenShard, 0}, - {(u8 *)gOtherText_CancelNoTerminator, 0}, -}; - -const struct MenuAction MultichoiceList_69[] = -{ - {(u8 *)OtherText_BlueShard, 0}, - {(u8 *)OtherText_GreenShard, 0}, - {(u8 *)gOtherText_CancelNoTerminator, 0}, -}; - -const struct MenuAction MultichoiceList_70[] = -{ - {(u8 *)OtherText_RedShard, 0}, - {(u8 *)OtherText_BlueShard, 0}, - {(u8 *)OtherText_GreenShard, 0}, - {(u8 *)gOtherText_CancelNoTerminator, 0}, -}; - -const struct MenuAction MultichoiceList_71[] = -{ - {(u8 *)OtherText_YellowShard, 0}, - {(u8 *)OtherText_BlueShard, 0}, - {(u8 *)OtherText_GreenShard, 0}, - {(u8 *)gOtherText_CancelNoTerminator, 0}, -}; - -const struct MenuAction MultichoiceList_72[] = -{ - {(u8 *)OtherText_RedShard, 0}, - {(u8 *)OtherText_YellowShard, 0}, - {(u8 *)OtherText_BlueShard, 0}, - {(u8 *)OtherText_GreenShard, 0}, - {(u8 *)gOtherText_CancelNoTerminator, 0}, -}; - -const struct MenuAction MultichoiceList_01[] = -{ - {(u8 *)gOtherText_CancelNoTerminator, 0}, -}; - -const struct MultichoiceListStruct gMultichoiceLists[] = -{ - {(struct MenuAction *)MultichoiceList_00, 3}, - {(struct MenuAction *)MultichoiceList_01, 1}, - {(struct MenuAction *)MultichoiceList_02, 3}, - {(struct MenuAction *)MultichoiceList_03, 4}, - {(struct MenuAction *)MultichoiceList_04, 6}, - {(struct MenuAction *)MultichoiceList_05, 3}, - {(struct MenuAction *)MultichoiceList_06, 4}, - {(struct MenuAction *)MultichoiceList_07, 4}, - {(struct MenuAction *)MultichoiceList_01, 1}, - {(struct MenuAction *)MultichoiceList_01, 1}, - {(struct MenuAction *)MultichoiceList_01, 1}, - {(struct MenuAction *)MultichoiceList_01, 1}, - {(struct MenuAction *)MultichoiceList_12, 2}, - {(struct MenuAction *)MultichoiceList_13, 6}, - {(struct MenuAction *)MultichoiceList_14, 2}, - {(struct MenuAction *)MultichoiceList_01, 1}, - {(struct MenuAction *)MultichoiceList_16, 2}, - {(struct MenuAction *)MultichoiceList_17, 3}, - {(struct MenuAction *)MultichoiceList_18, 4}, - {(struct MenuAction *)MultichoiceList_19, 3}, - {(struct MenuAction *)MultichoiceList_20, 3}, - {(struct MenuAction *)MultichoiceList_01, 1}, - {(struct MenuAction *)MultichoiceList_01, 1}, - {(struct MenuAction *)MultichoiceList_23, 3}, - {(struct MenuAction *)MultichoiceList_24, 3}, - {(struct MenuAction *)MultichoiceList_25, 3}, - {(struct MenuAction *)MultichoiceList_26, 3}, - {(struct MenuAction *)MultichoiceList_27, 3}, - {(struct MenuAction *)MultichoiceList_28, 3}, - {(struct MenuAction *)MultichoiceList_29, 3}, - {(struct MenuAction *)MultichoiceList_30, 3}, - {(struct MenuAction *)MultichoiceList_31, 3}, - {(struct MenuAction *)MultichoiceList_32, 3}, - {(struct MenuAction *)MultichoiceList_33, 3}, - {(struct MenuAction *)MultichoiceList_34, 3}, - {(struct MenuAction *)MultichoiceList_35, 3}, - {(struct MenuAction *)MultichoiceList_36, 3}, - {(struct MenuAction *)MultichoiceList_37, 3}, - {(struct MenuAction *)MultichoiceList_38, 3}, - {(struct MenuAction *)MultichoiceList_39, 3}, - {(struct MenuAction *)MultichoiceList_01, 1}, - {(struct MenuAction *)MultichoiceList_01, 1}, - {(struct MenuAction *)MultichoiceList_42, 4}, - {(struct MenuAction *)MultichoiceList_43, 4}, - {(struct MenuAction *)MultichoiceList_44, 4}, - {(struct MenuAction *)MultichoiceList_45, 2}, - {(struct MenuAction *)MultichoiceList_46, 3}, - {(struct MenuAction *)MultichoiceList_47, 8}, - {(struct MenuAction *)MultichoiceList_48, 4}, - {(struct MenuAction *)MultichoiceList_49, 3}, - {(struct MenuAction *)MultichoiceList_50, 2}, - {(struct MenuAction *)MultichoiceList_01, 1}, - {(struct MenuAction *)MultichoiceList_52, 3}, - {(struct MenuAction *)MultichoiceList_53, 3}, - {(struct MenuAction *)MultichoiceList_54, 2}, - {(struct MenuAction *)MultichoiceList_55, 6}, - {(struct MenuAction *)MultichoiceList_56, 3}, - {(struct MenuAction *)MultichoiceList_57, 5}, - {(struct MenuAction *)MultichoiceList_58, 2}, - {(struct MenuAction *)MultichoiceList_59, 2}, - {(struct MenuAction *)MultichoiceList_60, 3}, - {(struct MenuAction *)MultichoiceList_61, 2}, - {(struct MenuAction *)MultichoiceList_62, 3}, - {(struct MenuAction *)MultichoiceList_63, 3}, - {(struct MenuAction *)MultichoiceList_64, 4}, - {(struct MenuAction *)MultichoiceList_65, 2}, - {(struct MenuAction *)MultichoiceList_66, 3}, - {(struct MenuAction *)MultichoiceList_67, 3}, - {(struct MenuAction *)MultichoiceList_68, 4}, - {(struct MenuAction *)MultichoiceList_69, 3}, - {(struct MenuAction *)MultichoiceList_70, 4}, - {(struct MenuAction *)MultichoiceList_71, 4}, - {(struct MenuAction *)MultichoiceList_72, 5} -}; - -const struct TextStruct gUnknown_083CE048[] = -{ - OtherText_Cool2, - OtherText_Beauty3, - OtherText_Cute2, - OtherText_Smart2, - OtherText_Tough2, - OtherText_Normal, - OtherText_Super, - OtherText_Hyper, - OtherText_Master, - OtherText_Cool3, - OtherText_Beauty4, - OtherText_Cute3, - OtherText_Smart3, - OtherText_Tough3, - OtherText_Items, - OtherText_KeyItems, - OtherText_Balls, - OtherText_TMsHMs, - OtherText_Berries, -}; - -extern u8 gPCText_WhichPCShouldBeAccessed[]; - -extern u16 gScriptResult; - -bool8 sub_80B5054(u8 left, u8 top, u8 var3, u8 var4) -{ - if (FuncIsActiveTask(sub_80B52B4) == 1) - return FALSE; - else - { - gScriptResult = 0xFF; - DrawMultichoiceMenu(left, top, gMultichoiceLists[var3].count, gMultichoiceLists[var3].list, var4, 0); - return TRUE; - } -} - -bool8 sub_80B50B0(u8 left, u8 top, u8 var3, u8 var4, u8 var5) -{ - if (FuncIsActiveTask(sub_80B52B4) == 1) - return FALSE; - else - { - gScriptResult = 0xFF; - DrawMultichoiceMenu(left, top, gMultichoiceLists[var3].count, gMultichoiceLists[var3].list, var4, var5); - return TRUE; - } -} - -u16 GetStringWidthInTilesForScriptMenu(const u8 *str) -{ - // each tile on screen is 8x8, so it needs the number of tiles and not pixels, hence the division by 8. - return (GetStringWidthGivenWindowConfig((struct WindowConfig *)&gWindowConfig_81E6CE4, str) + 7) / 8; -} - -void DrawMultichoiceMenu(u8 left, u8 top, u8 count, struct MenuAction *list, u8 var4, u8 cursorPos) -{ - u16 width = GetStringWidthInTilesForScriptMenu(list[0].text); - u16 newWidth; - u8 i; - u8 right; - u8 bottom; - - for (i = 1; i < count; i++) - { - newWidth = GetStringWidthInTilesForScriptMenu(list[i].text); - if (width < newWidth) - width = newWidth; - } - - right = width; - right = (right + left) + 1; - - if (right > 29) - { - left = left + (29 - right); - right = 29; - } - - bottom = top + (2 * count + 1); - - MenuDrawTextWindow(left, top, right, bottom); - PrintMenuItems(left + 1, top + 1, count, list); - InitMenu(0, left + 1, top + 1, count, cursorPos, right - left - 1); - sub_80B5230(left, top, right, bottom, var4, count); -} - -void sub_80B5230(u8 left, u8 top, u8 right, u8 bottom, u8 unkVar, u8 count) -{ - u8 taskId = CreateTask(sub_80B52B4, 80); - - gTasks[taskId].data[0] = left; - gTasks[taskId].data[1] = top; - gTasks[taskId].data[2] = right; - gTasks[taskId].data[3] = bottom; - gTasks[taskId].data[4] = unkVar; - - if (count > 3) - gTasks[taskId].data[5] = TRUE; - else - gTasks[taskId].data[5] = FALSE; -} - -void sub_80B52B4(u8 taskId) -{ - s8 var; - - if (!gPaletteFade.active) - { - if (!gTasks[taskId].data[5]) - var = ProcessMenuInputNoWrap(); - else - var = ProcessMenuInput(); - - if (var != -2) - { - if (var == -1) - { - if (!gTasks[taskId].data[4]) - { - PlaySE(5); - gScriptResult = 127; - } - else - { - return; - } - } - else - { - gScriptResult = var; - } - HandleDestroyMenuCursors(); - MenuZeroFillWindowRect(gTasks[taskId].data[0], gTasks[taskId].data[1], gTasks[taskId].data[2], gTasks[taskId].data[3]); - DestroyTask(taskId); - EnableBothScriptContexts(); - } - } -} - -bool8 Multichoice(u8 var1, u8 var2, u8 var3, u8 var4) -{ - if (FuncIsActiveTask(sub_80B52B4) == 1) - return FALSE; - else - { - gScriptResult = 0xFF; - sub_80B53B4(var1, var2, gMultichoiceLists[var3].count, gMultichoiceLists[var3].list, var4); - return TRUE; - } -} - -void sub_80B53B4(u8 left, u8 top, u8 count, struct MenuAction *list, u8 var4) -{ - u16 width = GetStringWidthInTilesForScriptMenu(list[0].text); - u16 newWidth; - u8 i; - u8 right; - u8 bottom; - - for (i = 1; i < count; i++) - { - newWidth = GetStringWidthInTilesForScriptMenu(list[i].text); - if (width < newWidth) - width = newWidth; - } - - right = width; - right = (right + left) + 2; - bottom = top + (2 * count + 1); - - PrintMenuItems(left, top, count, list); - InitMenu(0, left, top, count, 0, right - left - 1); - sub_80B5230(left, top, right, bottom, var4, count); -} - -bool8 yes_no_box(u8 var1, u8 var2) -{ - u8 taskId; - - if (FuncIsActiveTask(task_yes_no_maybe) == 1) - return FALSE; - else - { - gScriptResult = 0xFF; - DisplayYesNoMenu(var1, var2, 1); - taskId = CreateTask(task_yes_no_maybe, 0x50); - gTasks[taskId].data[0] = var1; - gTasks[taskId].data[1] = var2; - return TRUE; - } -} - -// unused -bool8 IsScriptActive(void) -{ - if (gScriptResult == 0xFF) - return FALSE; - else - return TRUE; -} - -void task_yes_no_maybe(u8 taskId) -{ - u8 left, top; - - if (gTasks[taskId].data[2] < 5) - { - gTasks[taskId].data[2]++; - return; - } - - switch (ProcessMenuInputNoWrap()) - { - case -2: - return; - case -1: - case 1: - PlaySE(5); - gScriptResult = 0; - break; - case 0: - gScriptResult = 1; - break; - } - - left = gTasks[taskId].data[0]; - top = gTasks[taskId].data[1]; - - MenuZeroFillWindowRect(left, top, left + 6, top + 5); - DestroyTask(taskId); - EnableBothScriptContexts(); -} - -bool8 sub_80B5578(u8 left, u8 top, u8 multichoiceId, u8 a4, u8 columnCount) -{ - u8 bottom = 0; - - if (FuncIsActiveTask(sub_80B5684) == TRUE) - { - return FALSE; - } - else - { - u8 taskId; - u8 width; - - gScriptResult = 0xFF; - - sub_807274C(left, top, gMultichoiceLists[multichoiceId].count, 0, gMultichoiceLists[multichoiceId].list, columnCount, 0); - - taskId = CreateTask(sub_80B5684, 80); - - if (!((gMultichoiceLists[multichoiceId].count >> 1) < columnCount || (gMultichoiceLists[multichoiceId].count & 1)) - || columnCount == 1 || gMultichoiceLists[multichoiceId].count == columnCount) - { - bottom = (2 * (gMultichoiceLists[multichoiceId].count / columnCount)) + 1 + top; - } - else - { - bottom = (2 * (gMultichoiceLists[multichoiceId].count / columnCount)) + 3 + top; - } - - width = sub_807288C(columnCount); - gTasks[taskId].data[0] = left; - gTasks[taskId].data[1] = top; - gTasks[taskId].data[2] = width + left + 2; - gTasks[taskId].data[3] = bottom; - gTasks[taskId].data[4] = a4; - return TRUE; - } -} - -void sub_80B5684(u8 taskId) -{ - s8 var = sub_80727CC(); - - if (var != -2) - { - if (var == -1) - { - if (!gTasks[taskId].data[4]) - { - PlaySE(5); - gScriptResult = 127; - } - else - { - return; - } - } - else - { - gScriptResult = var; - } - HandleDestroyMenuCursors(); - MenuZeroFillWindowRect(gTasks[taskId].data[0], gTasks[taskId].data[1], gTasks[taskId].data[2], gTasks[taskId].data[3]); - DestroyTask(taskId); - EnableBothScriptContexts(); - } -} - -bool8 TryCreatePCMenu(void) -{ - if (FuncIsActiveTask(sub_80B52B4) == 1) - return FALSE; - else - { - gScriptResult = 0xFF; - CreatePCMenu(); - return TRUE; - } -} - -#if ENGLISH -void CreatePCMenu(void) -{ - u16 playersPCWidth = GetStringWidthInTilesForScriptMenu(gPCText_PlayersPC); - u8 width; - u8 numChoices; - - if (playersPCWidth > GetStringWidthInTilesForScriptMenu(gPCText_SomeonesPC)) - width = playersPCWidth; - else - width = 8; - - if (FlagGet(SYS_GAME_CLEAR)) // player has cleared game? - { - numChoices = 4; - MenuDrawTextWindow(0, 0, width + 2, 9); - MenuPrint(gPCText_HallOfFame, 1, 5); - MenuPrint(gPCText_LogOff, 1, 7); - } - else - { - numChoices = 3; - MenuDrawTextWindow(0, 0, width + 2, 7); - MenuPrint(gPCText_LogOff, 1, 5); - } - - if (FlagGet(SYS_PC_LANETTE)) // player met lanette? - MenuPrint(gPCText_LanettesPC, 1, 1); - else - MenuPrint(gPCText_SomeonesPC, 1, 1); - - MenuPrint(gPCText_PlayersPC, 1, 3); - InitMenu(0, 1, 1, numChoices, 0, width + 1); - sub_80B5230(0, 0, width + 2, 2 * numChoices + 1, 0, numChoices); -} -#elif GERMAN -__attribute__((naked)) -void CreatePCMenu(void) { - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - sub sp, 0x18\n\ - ldr r0, _080B5748 @ =0x0000084b\n\ - bl FlagGet\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - beq _080B5750\n\ - ldr r0, _080B574C @ =gPCText_LanettesPC\n\ - b _080B5752\n\ - .align 2, 0\n\ -_080B5748: .4byte 0x0000084b\n\ -_080B574C: .4byte gPCText_LanettesPC\n\ -_080B5750:\n\ - ldr r0, _080B57E8 @ =gPCText_SomeonesPC\n\ -_080B5752:\n\ - bl GetStringWidthInTilesForScriptMenu\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - str r0, [sp, 0x8]\n\ - movs r4, 0x1\n\ - ldr r0, _080B57EC @ =gPCText_PlayersPC\n\ - bl GetStringWidthInTilesForScriptMenu\n\ - lsls r1, r4, 2\n\ - add r1, sp\n\ - adds r1, 0x8\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - str r0, [r1]\n\ - ldr r0, _080B57F0 @ =gPCText_LogOff\n\ - bl GetStringWidthInTilesForScriptMenu\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - str r0, [sp, 0x10]\n\ - movs r4, 0x3\n\ - ldr r0, _080B57F4 @ =0x00000804\n\ - bl FlagGet\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - beq _080B5798\n\ - ldr r0, _080B57F8 @ =gPCText_HallOfFame\n\ - bl GetStringWidthInTilesForScriptMenu\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - str r0, [sp, 0x14]\n\ - movs r4, 0x4\n\ -_080B5798:\n\ - movs r5, 0\n\ - cmp r5, r4\n\ - bge _080B57B4\n\ - add r2, sp, 0x8\n\ - adds r1, r4, 0\n\ -_080B57A2:\n\ - ldr r0, [r2]\n\ - cmp r5, r0\n\ - bge _080B57AC\n\ - lsls r0, 24\n\ - lsrs r5, r0, 24\n\ -_080B57AC:\n\ - adds r2, 0x4\n\ - subs r1, 0x1\n\ - cmp r1, 0\n\ - bne _080B57A2\n\ -_080B57B4:\n\ - ldr r0, _080B57F4 @ =0x00000804\n\ - bl FlagGet\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - beq _080B57FC\n\ - movs r7, 0x4\n\ - adds r4, r5, 0x2\n\ - lsls r2, r4, 24\n\ - lsrs r2, 24\n\ - movs r0, 0\n\ - movs r1, 0\n\ - movs r3, 0x9\n\ - bl MenuDrawTextWindow\n\ - ldr r0, _080B57F8 @ =gPCText_HallOfFame\n\ - movs r1, 0x1\n\ - movs r2, 0x5\n\ - bl MenuPrint\n\ - ldr r0, _080B57F0 @ =gPCText_LogOff\n\ - movs r1, 0x1\n\ - movs r2, 0x7\n\ - bl MenuPrint\n\ - b _080B5818\n\ - .align 2, 0\n\ -_080B57E8: .4byte gPCText_SomeonesPC\n\ -_080B57EC: .4byte gPCText_PlayersPC\n\ -_080B57F0: .4byte gPCText_LogOff\n\ -_080B57F4: .4byte 0x00000804\n\ -_080B57F8: .4byte gPCText_HallOfFame\n\ -_080B57FC:\n\ - movs r7, 0x3\n\ - adds r4, r5, 0x2\n\ - lsls r2, r4, 24\n\ - lsrs r2, 24\n\ - movs r0, 0\n\ - movs r1, 0\n\ - movs r3, 0x7\n\ - bl MenuDrawTextWindow\n\ - ldr r0, _080B5834 @ =gPCText_LogOff\n\ - movs r1, 0x1\n\ - movs r2, 0x5\n\ - bl MenuPrint\n\ -_080B5818:\n\ - adds r6, r4, 0\n\ - ldr r0, _080B5838 @ =0x0000084b\n\ - bl FlagGet\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - beq _080B5840\n\ - ldr r0, _080B583C @ =gPCText_LanettesPC\n\ - movs r1, 0x1\n\ - movs r2, 0x1\n\ - bl MenuPrint\n\ - b _080B584A\n\ - .align 2, 0\n\ -_080B5834: .4byte gPCText_LogOff\n\ -_080B5838: .4byte 0x0000084b\n\ -_080B583C: .4byte gPCText_LanettesPC\n\ -_080B5840:\n\ - ldr r0, _080B5888 @ =gPCText_SomeonesPC\n\ - movs r1, 0x1\n\ - movs r2, 0x1\n\ - bl MenuPrint\n\ -_080B584A:\n\ - ldr r0, _080B588C @ =gPCText_PlayersPC\n\ - movs r1, 0x1\n\ - movs r2, 0x3\n\ - bl MenuPrint\n\ - movs r4, 0\n\ - str r4, [sp]\n\ - adds r0, r5, 0x1\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - str r0, [sp, 0x4]\n\ - movs r0, 0\n\ - movs r1, 0x1\n\ - movs r2, 0x1\n\ - adds r3, r7, 0\n\ - bl InitMenu\n\ - lsls r2, r6, 24\n\ - lsrs r2, 24\n\ - lsls r3, r7, 1\n\ - adds r3, 0x1\n\ - str r4, [sp]\n\ - str r7, [sp, 0x4]\n\ - movs r0, 0\n\ - movs r1, 0\n\ - bl sub_80B5230\n\ - add sp, 0x18\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_080B5888: .4byte gPCText_SomeonesPC\n\ -_080B588C: .4byte gPCText_PlayersPC\n\ - .syntax divided\n"); -} -#endif - -void sub_80B5838(void) -{ - MenuDisplayMessageBox(); - MenuPrint(gPCText_WhichPCShouldBeAccessed, 2, 15); -} - -void task_picbox(u8 taskId) -{ - struct Task *task = &gTasks[taskId]; - - switch (task->data[0]) - { - case 0: - task->data[0]++; - break; - case 1: - break; - case 2: - FreeResourcesAndDestroySprite(&gSprites[task->data[2]]); - task->data[0]++; - break; - case 3: - MenuZeroFillWindowRect(task->data[3], task->data[4], task->data[3] + 9, task->data[4] + 10); - DestroyTask(taskId); - break; - } -} - -bool8 sub_80B58C4(u16 var1, u8 var2, u8 var3) -{ - u8 taskId; - u8 var; - - if (FindTaskIdByFunc(task_picbox) != 0xFF) - return FALSE; - else - { - MenuDrawTextWindow(var2, var3, var2 + 9, var3 + 10); - taskId = CreateTask(task_picbox, 0x50); - gTasks[taskId].data[0] = 0; - gTasks[taskId].data[1] = var1; - var = CreateMonSprite_PicBox(var1, var2 * 8 + 40, var3 * 8 + 40, 0); - gTasks[taskId].data[2] = var; - gTasks[taskId].data[3] = var2; - gTasks[taskId].data[4] = var3; - gSprites[var].callback = SpriteCallbackDummy; - gSprites[var].oam.priority = 0; - return TRUE; - } -} - -void *picbox_close(void) -{ - u8 taskId = FindTaskIdByFunc(task_picbox); - - if (taskId == 0xFF) - return NULL; - - gTasks[taskId].data[0]++; - return (void *)sub_80B59AC; -} - -bool8 sub_80B59AC(void) -{ - if (FindTaskIdByFunc(task_picbox) == 0xFF) - return TRUE; - else - return FALSE; -} diff --git a/src/script_pokemon_util_80C4BF0.c b/src/script_pokemon_util_80C4BF0.c index cbca07011..f98293a90 100644 --- a/src/script_pokemon_util_80C4BF0.c +++ b/src/script_pokemon_util_80C4BF0.c @@ -18,7 +18,7 @@ #include "pokedex.h" #include "pokemon.h" #include "rng.h" -#include "rom4.h" +#include "overworld.h" #include "script_pokemon_80C4.h" #include "species.h" #include "task.h" @@ -433,7 +433,7 @@ void ShowContestEntryMonPic(void) gUnknown_081FAF4C[1], species, var1); - palette = sub_80409C8(species, var2, var1); + palette = GetMonSpritePalStructFromOtIdPersonality(species, var2, var1); LoadCompressedObjectPalette(palette); GetMonSpriteTemplate_803C56C(species, 1); gUnknown_02024E8C.paletteTag = palette->tag; @@ -511,7 +511,7 @@ void ScriptRandom(void) *scriptPtr = random % *scriptPtr; } -void HealPlayerParty(void) +void ScrSpecial_HealPlayerParty(void) { u8 i, j; u8 ppBonuses; @@ -542,41 +542,39 @@ void HealPlayerParty(void) } } -u8 ScriptGiveMon(u16 species, u8 var, u16 item, u32 var3, u32 var4, u8 var5) +u8 ScriptGiveMon(u16 species, u8 level, u16 item, u32 unused1, u32 unused2, u8 unused3) { - u16 nationalSpecies; + u16 nationalDexNum; int sentToPc; - u8 array[2]; + u8 heldItem[2]; struct Pokemon mon; - CreateMon(&mon, species, var, 32, 0, 0, 0, 0); - array[0] = item; - array[1] = item >> 8; - SetMonData(&mon, MON_DATA_HELD_ITEM, array); + CreateMon(&mon, species, level, 32, 0, 0, 0, 0); + heldItem[0] = item; + heldItem[1] = item >> 8; + SetMonData(&mon, MON_DATA_HELD_ITEM, heldItem); sentToPc = GiveMonToPlayer(&mon); - nationalSpecies = SpeciesToNationalPokedexNum(species); + nationalDexNum = SpeciesToNationalPokedexNum(species); - // nested if check to fool compiler switch(sentToPc) { - case 0: - case 1: - GetNationalPokedexFlag(nationalSpecies, 2); - GetNationalPokedexFlag(nationalSpecies, 3); - return sentToPc; - default: - return sentToPc; + case 0: + case 1: + GetSetPokedexFlag(nationalDexNum, 2); + GetSetPokedexFlag(nationalDexNum, 3); + break; } + return sentToPc; } -u8 ScriptGiveEgg(u16 value) +u8 ScriptGiveEgg(u16 species) { struct Pokemon mon; - u8 data; + u8 isEgg; - sub_8042044(&mon, value, 1); - data = 1; - SetMonData(&mon, MON_DATA_IS_EGG, &data); + sub_8042044(&mon, species, 1); + isEgg = TRUE; + SetMonData(&mon, MON_DATA_IS_EGG, &isEgg); return GiveMonToPlayer(&mon); } @@ -622,18 +620,18 @@ bool8 GetNameOfEnigmaBerryInPlayerParty(void) return hasItem; } -void ScriptWildBattle(u16 species, u8 level, u16 item) +void CreateScriptedWildMon(u16 species, u8 level, u16 item) { - u8 data[2]; + u8 heldItem[2]; ZeroEnemyPartyMons(); CreateMon(&gEnemyParty[0], species, level, 0x20, 0, 0, 0, 0); if(item) { - data[0] = item; - data[1] = item >> 8; - SetMonData(&gEnemyParty[0], MON_DATA_HELD_ITEM, data); + heldItem[0] = item; + heldItem[1] = item >> 8; + SetMonData(&gEnemyParty[0], MON_DATA_HELD_ITEM, heldItem); } } diff --git a/src/script_pokemon_util_80F99CC.c b/src/script_pokemon_util_80F99CC.c index 2b48cc0d8..e303d5173 100644 --- a/src/script_pokemon_util_80F99CC.c +++ b/src/script_pokemon_util_80F99CC.c @@ -9,16 +9,15 @@ #include "party_menu.h" #include "pokemon.h" #include "pokemon_summary_screen.h" -#include "rom4.h" +#include "overworld.h" #include "script.h" #include "script_pokemon_80F9.h" +#include "songs.h" #include "sound.h" #include "string_util.h" #include "task.h" #include "text.h" - - extern u8 gPlayerPartyCount; extern u16 gSpecialVar_0x8004; extern u16 gSpecialVar_0x8005; @@ -32,8 +31,8 @@ void sub_80F99CC(void) u8 taskId; ScriptContext2_Enable(); - taskId = CreateTask((void *)sub_80F9A8C, 0xA); - gTasks[taskId].data[0] = 2; + taskId = CreateTask((void *)OpenPartyMenuFromScriptContext, 0xA); + gTasks[taskId].data[0] = PARTY_MENU_TYPE_CONTEST; BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); } @@ -42,8 +41,8 @@ void sub_80F9A0C(void) u8 taskId; ScriptContext2_Enable(); - taskId = CreateTask((void *)sub_80F9A8C, 0xA); - gTasks[taskId].data[0] = 3; + taskId = CreateTask((void *)OpenPartyMenuFromScriptContext, 0xA); + gTasks[taskId].data[0] = PARTY_MENU_TYPE_IN_GAME_TRADE; BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); } @@ -52,14 +51,14 @@ void sub_80F9A4C(void) u8 taskId; ScriptContext2_Enable(); - taskId = CreateTask((void *)sub_80F9A8C, 0xA); - gTasks[taskId].data[0] = 7; + taskId = CreateTask((void *)OpenPartyMenuFromScriptContext, 0xA); + gTasks[taskId].data[0] = PARTY_MENU_TYPE_MOVE_TUTOR; BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); } -void sub_80F9A8C(u8 taskId) +void OpenPartyMenuFromScriptContext(u8 taskId) { - if(!gPaletteFade.active) + if (!gPaletteFade.active) { gPaletteFade.bufferTransferDisabled = 1; OpenPartyMenu((u8) gTasks[taskId].data[0], 0); @@ -67,64 +66,64 @@ void sub_80F9A8C(u8 taskId) } } -bool8 sub_80F9ACC(void) +bool8 SetupContestPartyMenu(void) { - switch(EWRAM_1B000.unk264) + switch (EWRAM_1B000.setupState) { case 0: - if(EWRAM_1B000.unk266 < gPlayerPartyCount) + if (EWRAM_1B000.monIndex < gPlayerPartyCount) { - TryCreatePartyMenuMonIcon(EWRAM_1B000.unk260, EWRAM_1B000.unk266, &gPlayerParty[EWRAM_1B000.unk266]); - EWRAM_1B000.unk266++; + TryCreatePartyMenuMonIcon(EWRAM_1B000.menuHandlerTaskId, EWRAM_1B000.monIndex, &gPlayerParty[EWRAM_1B000.monIndex]); + EWRAM_1B000.monIndex++; } else { - EWRAM_1B000.unk266 = 0; - EWRAM_1B000.unk264++; + EWRAM_1B000.monIndex = 0; + EWRAM_1B000.setupState++; } break; case 1: LoadHeldItemIconGraphics(); - EWRAM_1B000.unk264++; + EWRAM_1B000.setupState++; break; case 2: - CreateHeldItemIcons_806DC34(EWRAM_1B000.unk260); - EWRAM_1B000.unk264++; + CreateHeldItemIcons_806DC34(EWRAM_1B000.menuHandlerTaskId); + EWRAM_1B000.setupState++; break; case 3: - if(sub_806BD58(EWRAM_1B000.unk260, EWRAM_1B000.unk266) != 1) + if (sub_806BD58(EWRAM_1B000.menuHandlerTaskId, EWRAM_1B000.monIndex) != 1) { - EWRAM_1B000.unk266++; + EWRAM_1B000.monIndex++; break; } else { - EWRAM_1B000.unk266 = 0; - EWRAM_1B000.unk264++; + EWRAM_1B000.monIndex = 0; + EWRAM_1B000.setupState++; break; } case 4: PartyMenuPrintMonsLevelOrStatus(); - EWRAM_1B000.unk264++; + EWRAM_1B000.setupState++; break; case 5: PrintPartyMenuMonNicknames(); - EWRAM_1B000.unk264++; + EWRAM_1B000.setupState++; break; case 6: sub_80F9C00(); - EWRAM_1B000.unk264++; + EWRAM_1B000.setupState++; break; case 7: // the only case that can return true. - if(sub_806B58C(EWRAM_1B000.unk266) != 1) + if (DrawPartyMonBackground(EWRAM_1B000.monIndex) != 1) { - EWRAM_1B000.unk266++; + EWRAM_1B000.monIndex++; break; } else { - EWRAM_1B000.unk266 = 0; - EWRAM_1B000.unk264 = 0; + EWRAM_1B000.monIndex = 0; + EWRAM_1B000.setupState = 0; return TRUE; } } @@ -135,9 +134,9 @@ void sub_80F9C00(void) { u8 i; - for(i = 0; i < gPlayerPartyCount; i++) + for (i = 0; i < gPlayerPartyCount; i++) { - switch(sub_80AE47C(&gPlayerParty[i])) + switch (sub_80AE47C(&gPlayerParty[i])) { case 0: case 3: @@ -152,20 +151,20 @@ void sub_80F9C00(void) } } -void sub_80F9C6C(u8 var) +void HandleSelectPartyMenu(u8 var) { - if(!gPaletteFade.active) + if (!gPaletteFade.active) { - switch(sub_806BD80(var)) + switch (HandleDefaultPartyMenuInput(var)) { - case 1: - PlaySE(5); + case A_BUTTON: + PlaySE(SE_SELECT); gUnknown_02038694 = sub_806CA38(var); gSpecialVar_0x8004 = gUnknown_02038694; sub_8123138(var); break; - case 2: - PlaySE(5); + case B_BUTTON: + PlaySE(SE_SELECT); gUnknown_02038694 = 0xFF; gSpecialVar_0x8004 = 0xFF; sub_8123138(var); @@ -174,67 +173,66 @@ void sub_80F9C6C(u8 var) } } -bool8 sub_80F9CE8(void) // this is the same function as sub_80F9ACC except case 6 calls a different function. why +bool8 SetupMoveTutorPartyMenu(void) { - switch(EWRAM_1B000.unk264) + switch (EWRAM_1B000.setupState) { case 0: - if(EWRAM_1B000.unk266 < gPlayerPartyCount) + if (EWRAM_1B000.monIndex < gPlayerPartyCount) { - TryCreatePartyMenuMonIcon(EWRAM_1B000.unk260, EWRAM_1B000.unk266, &gPlayerParty[EWRAM_1B000.unk266]); - EWRAM_1B000.unk266++; + TryCreatePartyMenuMonIcon(EWRAM_1B000.menuHandlerTaskId, EWRAM_1B000.monIndex, &gPlayerParty[EWRAM_1B000.monIndex]); + EWRAM_1B000.monIndex++; } else { - EWRAM_1B000.unk266 = 0; - EWRAM_1B000.unk264++; + EWRAM_1B000.monIndex = 0; + EWRAM_1B000.setupState++; } break; case 1: LoadHeldItemIconGraphics(); - EWRAM_1B000.unk264++; + EWRAM_1B000.setupState++; break; case 2: - CreateHeldItemIcons_806DC34(EWRAM_1B000.unk260); - EWRAM_1B000.unk264++; + CreateHeldItemIcons_806DC34(EWRAM_1B000.menuHandlerTaskId); + EWRAM_1B000.setupState++; break; case 3: - if(sub_806BD58(EWRAM_1B000.unk260, EWRAM_1B000.unk266) != 1) + if (sub_806BD58(EWRAM_1B000.menuHandlerTaskId, EWRAM_1B000.monIndex) != 1) { - EWRAM_1B000.unk266++; - break; + EWRAM_1B000.monIndex++; } else { - EWRAM_1B000.unk266 = 0; - EWRAM_1B000.unk264++; - break; + EWRAM_1B000.monIndex = 0; + EWRAM_1B000.setupState++; } + break; case 4: PartyMenuPrintMonsLevelOrStatus(); - EWRAM_1B000.unk264++; + EWRAM_1B000.setupState++; break; case 5: PrintPartyMenuMonNicknames(); - EWRAM_1B000.unk264++; + EWRAM_1B000.setupState++; break; case 6: sub_80F9E1C(); - EWRAM_1B000.unk264++; + EWRAM_1B000.setupState++; break; case 7: // the only case that can return true. - if(sub_806B58C(EWRAM_1B000.unk266) != 1) + if (DrawPartyMonBackground(EWRAM_1B000.monIndex) != 1) { - EWRAM_1B000.unk266++; - break; + EWRAM_1B000.monIndex++; } else { - EWRAM_1B000.unk266 = 0; - EWRAM_1B000.unk264 = 0; + EWRAM_1B000.monIndex = 0; + EWRAM_1B000.setupState = 0; return TRUE; } } + return FALSE; } @@ -242,29 +240,29 @@ void sub_80F9E1C(void) { u8 i; - for(i = 0; i < gPlayerPartyCount; i++) + for (i = 0; i < gPlayerPartyCount; i++) { - if(!sub_8040574(&gPlayerParty[i])) + if (!sub_8040574(&gPlayerParty[i])) sub_806BC3C(i, 0x9A); else sub_806BC3C(i, 0x8C); } } -void sub_80F9E64(u8 var) +void HandleMoveTutorPartyMenu(u8 var) { - if(!gPaletteFade.active) + if (!gPaletteFade.active) { - switch(sub_806BD80(var)) + switch (HandleDefaultPartyMenuInput(var)) { - case 1: - PlaySE(5); + case A_BUTTON: + PlaySE(SE_SELECT); gSpecialVar_0x8004 = sub_806CA38(var); gSpecialVar_0x8005 = sub_8040574(&gPlayerParty[gSpecialVar_0x8004]); sub_8123138(var); break; - case 2: - PlaySE(5); + case B_BUTTON: + PlaySE(SE_SELECT); gSpecialVar_0x8004 = 0xFF; sub_8123138(var); } @@ -278,23 +276,23 @@ void sub_80F9EEC(void) gFieldCallback = sub_8080990; } -void sub_80F9F3C(void) // count pokemon moves +void ScrSpecial_CountPokemonMoves(void) // count pokemon moves { u8 i; gScriptResult = 0; - for(i = 0; i < 4; i++) // checks MOVE1-MOVE4 - if(GetMonData(&gPlayerParty[gSpecialVar_0x8004], i + 13)) + for (i = 0; i < 4; i++) // checks MOVE1-MOVE4 + if (GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_MOVE1 + i)) gScriptResult++; } -void sub_80F9F84(void) +void ScrSpecial_GetPokemonNicknameAndMoveName(void) { - struct Pokemon *party = &gPlayerParty[gSpecialVar_0x8004]; - u16 data = GetMonData(party, gSpecialVar_0x8005 + 13); + struct Pokemon *pkmn = &gPlayerParty[gSpecialVar_0x8004]; + u16 data = GetMonData(pkmn, MON_DATA_MOVE1 + gSpecialVar_0x8005); - GetMonNickname(party, gStringVar1); + GetMonNickname(pkmn, gStringVar1); StringCopy(gStringVar2, gMoveNames[data]); } @@ -431,7 +429,7 @@ void sub_80FA0DC(void) SetMonMoveSlot(&gPlayerParty[gSpecialVar_0x8004], 0, gSpecialVar_0x8005); RemoveMonPPBonus(&gPlayerParty[gSpecialVar_0x8004], gSpecialVar_0x8005); - for(i = gSpecialVar_0x8005; i < 3; i++) + for (i = gSpecialVar_0x8005; i < 3; i++) sub_80F9FDC(&gPlayerParty[gSpecialVar_0x8004], i, i + 1); } @@ -440,6 +438,6 @@ void sub_80FA148(void) struct Pokemon *party = &gPlayerParty[gSpecialVar_0x8004]; gScriptResult = 0; - if(GetMonData(party, MON_DATA_IS_EGG)) + if (GetMonData(party, MON_DATA_IS_EGG)) gScriptResult = 1; } diff --git a/src/shop.c b/src/shop.c deleted file mode 100644 index d53646a88..000000000 --- a/src/shop.c +++ /dev/null @@ -1,342 +0,0 @@ -#include "global.h" -#include "shop.h" -#include "decompress.h" -#include "field_fadetransition.h" -#include "field_weather.h" -#include "item_menu.h" -#include "main.h" -#include "menu.h" -#include "menu_helpers.h" -#include "money.h" -#include "palette.h" -#include "script.h" -#include "sound.h" -#include "sprite.h" -#include "strings.h" -#include "task.h" -#include "tv.h" -#include "unknown_task.h" - -struct UnknownShopStruct -{ - /* 0x0 */ void (* callback) (void); - /* 0x4 */ u16 *itemList; - /* 0x8 */ u8 itemCount; - /* 0x9 */ u8 unk9; - /* 0xA */ u8 unkA; - /* 0xB */ u8 unkB; - /* 0xC */ bool8 unkC; - // unknown size -}; - -extern struct UnknownShopStruct gUnknown_03000708; -extern struct MenuAction gUnknown_083CC6D0[]; - -extern u8 gUnknown_083CC6E8[]; -extern u8 gUnknown_083CC6EB[]; -extern u8 gBuyMenuFrame_Gfx[]; - -extern u16 gBuyMenuFrame_Tilemap[]; -extern u16 gMenuMoneyPal[16]; -extern u16 gUnknown_083CC710[2]; - -u8 CreateShopMenu(bool8 var) -{ - ScriptContext2_Enable(); - gUnknown_03000708.unkC = var; - gUnknown_03000708.unk9 = 0; - - if(var == FALSE) - { - gUnknown_03000708.unkA = 2; - MenuDrawTextWindow(0, 0, 10, 7); - PrintMenuItemsReordered(1, 1, 3, gUnknown_083CC6D0, (u8 *)gUnknown_083CC6E8); - } - else - { - gUnknown_03000708.unkA = 1; - MenuDrawTextWindow(0, 0, 10, 5); - PrintMenuItemsReordered(1, 1, 2, gUnknown_083CC6D0, (u8 *)gUnknown_083CC6EB); - } - InitMenu(0, 1, 1, gUnknown_03000708.unkA + 1, 0, 9); - - return CreateTask(sub_80B2E38, 8); -} - -void SetShopMenuCallback(void *callbackPtr) -{ - gUnknown_03000708.callback = callbackPtr; -} - -void SetShopItemsForSale(u16 *items) -{ - u16 i = 0; - - gUnknown_03000708.itemList = items; - gUnknown_03000708.itemCount = 0; - - while (gUnknown_03000708.itemList[i]) - { - gUnknown_03000708.itemCount++; - i++; - } -} - -void sub_80B2E38(u8 var) -{ - const u8 local = var; - - if(gMain.newAndRepeatedKeys & 0x40) - { - if(gUnknown_03000708.unk9) - { - PlaySE(0x5); - gUnknown_03000708.unk9 = MoveMenuCursor(-1); - } - } - else if(gMain.newAndRepeatedKeys & 0x80) - { - if(gUnknown_03000708.unk9 != gUnknown_03000708.unkA) - { - PlaySE(0x5); - gUnknown_03000708.unk9 = MoveMenuCursor(1); - } - } - else if (gMain.newKeys & 1) - { - PlaySE(0x5); - if(!gUnknown_03000708.unkC) - { - gUnknown_083CC6D0[gUnknown_083CC6E8[gUnknown_03000708.unk9]].func(local); - } - else - { - gUnknown_083CC6D0[gUnknown_083CC6EB[gUnknown_03000708.unk9]].func(local); - } - } - else if(gMain.newKeys & 2) - { - PlaySE(0x5); - HandleShopMenuQuit(local); - } -} - -void sub_80B2EFC(u8 taskId) -{ - gTasks[taskId].data[8] = (u32)BuyMenuDrawGraphics >> 16; - gTasks[taskId].data[9] = (u32)BuyMenuDrawGraphics; - gTasks[taskId].func = sub_80B2FA0; - fade_screen(1, 0); -} - -void sub_80B2F30(u8 taskId) -{ - gTasks[taskId].data[8] = (u32)sub_80A6300 >> 16; - gTasks[taskId].data[9] = (u32)sub_80A6300; - gTasks[taskId].func = sub_80B2FA0; - fade_screen(1, 0); -} - -void HandleShopMenuQuit(u8 taskId) -{ - HandleDestroyMenuCursors(); - MenuZeroFillWindowRect(0, 0, 11, 8); - sub_80BE3BC(); // in tv.s? - ScriptContext2_Disable(); - DestroyTask(taskId); - - if(gUnknown_03000708.callback) - gUnknown_03000708.callback(); // run the callback if it exists. -} - -void sub_80B2FA0(u8 taskId) -{ - if(!gPaletteFade.active) - { - SetMainCallback2((void *)((u16)gTasks[taskId].data[8] << 16 | (u16)gTasks[taskId].data[9])); - DestroyTask(taskId); - } -} - -void ReturnToShopMenuAfterExitingSellMenu(u8 taskId) -{ - CreateShopMenu(gUnknown_03000708.unkC); - DestroyTask(taskId); -} - -void Task_ExitSellMenu(u8 taskId) -{ - if(sub_807D770() == 1) - { - if(gUnknown_03000708.unkC == 2) - DisplayItemMessageOnField(taskId, gOtherText_CanIHelpYou, ReturnToShopMenuAfterExitingSellMenu, 0); - else - DisplayItemMessageOnField(taskId, gOtherText_AnythingElse, ReturnToShopMenuAfterExitingSellMenu, 0); - } -} - -void sub_80B3050(void) -{ - pal_fill_black(); - CreateTask(Task_ExitSellMenu, 0x8); -} - -void sub_80B3068(u8 taskId) -{ - Task_ExitSellMenu(taskId); -} - -void unref_sub_80B3078(u8 taskId) -{ - gTasks[taskId].func = Task_ExitSellMenu; -} - -void sub_80B3094(void) -{ - AnimateSprites(); - BuildOamBuffer(); - RunTasks(); - UpdatePaletteFade(); -} - -void sub_80B30AC(void) -{ - void *addr; - void *addr2; - void *addr3; - u16 *tempArr; - u16 *tempArr2; - u16 *tempArr3; - - LoadOam(); - ProcessSpriteCopyRequests(); - TransferPlttBuffer(); - - // temp vars needed to match for some dumb reason - tempArr = gBGTilemapBuffers[1]; - addr = (void *)(VRAM + 0xE800); - DmaCopy16(3, tempArr, addr, 0x800); - tempArr2 = gBGTilemapBuffers[2]; - addr2 = (void *)(VRAM + 0xE000); - DmaCopy16(3, tempArr2, addr2, 0x800); - tempArr3 = gBGTilemapBuffers[3]; - addr3 = (void *)(VRAM + 0xF000); - DmaCopy16(3, tempArr3, addr3, 0x800); -} - -// this function is fugly. pls fix -void BuyMenuDrawGraphics(void) -{ - void *addr; - register u16 zero2 asm("r5"); - - sub_80F9438(); - remove_some_task(); - REG_BG1HOFS = (zero2 = 0); - REG_BG1VOFS = zero2; - REG_BG2HOFS = zero2; - REG_BG2VOFS = zero2; - REG_BG3HOFS = zero2; - REG_BG3VOFS = zero2; - gPaletteFade.bufferTransferDisabled = 1; - addr = (void*)OAM; - { - register const u32 zero asm("r6") = 0; - DmaFill32(3, zero, addr, OAM_SIZE); - LZDecompressVram(gBuyMenuFrame_Gfx, (void*)(VRAM + 0x7C00)); - sub_800D238(gBuyMenuFrame_Tilemap, (void *)0x02018000); - LoadCompressedPalette(gMenuMoneyPal, 0xC0, sizeof(gMenuMoneyPal)); - FreeAllSpritePalettes(); - ResetPaletteFade(); - ResetSpriteData(); - ResetTasks(); - SetUpWindowConfig(&gWindowConfig_81E6DFC); - InitMenuWindow(&gWindowConfig_81E6DFC); - BuyMenuDrawMapGraphics(); - gUnknown_03000708.unk9 = zero; - gUnknown_03000708.unkB = zero2; - MenuZeroFillWindowRect(0, 0, 0x20, 0x20); - sub_80B7C14(gSaveBlock1.money, 0, 0); - sub_80B3764(0, 7); - sub_80B37EC(); - sub_80B3270(); - CreateTask(sub_80B40E8, 0x8); - sub_80B3240(); - asm("":::"r4"); // what?? - BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, zero); - gPaletteFade.bufferTransferDisabled = 0; - SetVBlankCallback(sub_80B30AC); - SetMainCallback2(sub_80B3094); - } -} - -void sub_80B3240(void) -{ - u16 tempArr[2]; - - memcpy(tempArr, gUnknown_083CC710, sizeof(tempArr)); - LoadPalette(&tempArr[1], 0xD1, 2); - LoadPalette(&tempArr[0], 0xD8, 2); -} - -void sub_80B3270(void) -{ - sub_80F944C(); - - if(gUnknown_03000708.itemCount > 7) - { - CreateVerticalScrollIndicators(0, 172, 12); - CreateVerticalScrollIndicators(1, 172, 148); - sub_80F979C(0, 1); - } -} - -void sub_80B32A4(void) -{ - if(gUnknown_03000708.unkB == 0) - sub_80F979C(0, 1); - else - sub_80F979C(0, 0); - - if(gUnknown_03000708.unkB + 7 >= gUnknown_03000708.itemCount) - sub_80F979C(1, 1); - else - sub_80F979C(1, 0); -} - -void sub_80B32EC(u16 *array, s16 offset1, s16 offset2) -{ - array[offset1 + offset2] = 0xC3E1; - array[offset1 + offset2 + 1] = 0xC3E1; -} - -void BuyMenuDrawMapMetatileLayer(u16 *array, s16 offset1, s16 offset2, u16 *array2) -{ - array[offset1 + offset2] = array2[0]; - array[offset1 + offset2 + 1] = array2[1]; - array[offset1 + offset2 + 32] = array2[2]; - array[offset1 + offset2 + 33] = array2[3]; -} - -void BuyMenuDrawMapMetatile(int var1, int var2, u16 *var3, s8 var4) -{ - u8 tempVar4 = var4; - s16 offset1 = var1 * 2; - s16 offset2 = (var2 * 0x40) + 0x40; - - switch(tempVar4) - { - case 0: // _080B335C - BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[2], offset1, offset2, var3); - BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[1], offset1, offset2, var3 + 4); - break; - case 1: // _080B3364 - BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[3], offset1, offset2, var3); - BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[2], offset1, offset2, var3 + 4); - break; - case 2: // _080B3398 - BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[3], offset1, offset2, var3); - BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[1], offset1, offset2, var3 + 4); - break; - } -} diff --git a/src/sound_check_menu.c b/src/sound_check_menu.c deleted file mode 100644 index 13a6f6f3e..000000000 --- a/src/sound_check_menu.c +++ /dev/null @@ -1,2198 +0,0 @@ -#include "global.h" -#include "sprite.h" -#include "palette.h" -#include "task.h" -#include "m4a.h" -#include "main.h" -#include "text.h" -#include "menu.h" -#include "songs.h" -#include "title_screen.h" -#include "sound.h" -#include "pokedex_cry_screen.h" - -// local task defines -#define WINDOW_SELECTED data[0] -#define BGM_INDEX data[1] -#define SE_INDEX data[2] -#define UNK_DATA3 data[3] -#define UNK_DATA4 data[4] -// data 5-7 are not used -// i dont have a define for data 8 yet because its used in a nonmatching and I can't be sure yet its actually used. - -// window selections -enum -{ - BGM_WINDOW, - SE_WINDOW -}; - -// driver test cry enums -enum -{ - CRY_TEST_UNK0, - CRY_TEST_VOLUME, - CRY_TEST_PANPOT, - CRY_TEST_PITCH, - CRY_TEST_LENGTH, - CRY_TEST_RELEASE, - CRY_TEST_PROGRESS, - CRY_TEST_CHORUS, - CRY_TEST_PRIORITY -}; - -// minmax range enums -enum -{ - MIN, - MAX -}; - -extern struct ToneData voicegroup_84537C0[]; -extern struct ToneData voicegroup_8452590[]; -extern struct ToneData voicegroup_8453DC0[]; -extern struct ToneData voicegroup_8452B90[]; -extern struct ToneData voicegroup_84543C0[]; -extern struct ToneData voicegroup_8453190[]; -extern struct ToneData voicegroup_84549C0[]; -extern struct ToneData voicegroup_8453790[]; - -extern int gUnknown_020387B4[9]; - -extern s8 gUnknown_020387B3; -extern u8 gUnknown_020387B1; -extern u8 gUnknown_020387B2; -extern u8 gUnknown_020387D8; -extern u8 gUnknown_020387D9; -extern u8 gUnknown_020387B0; -extern u16 gUnknown_03005D34; -extern u8 gUnknown_03005E98; - -extern struct MusicPlayerInfo *gUnknown_03005D30; -extern struct MusicPlayerInfo gMPlay_BGM; - -void sub_80BA258(u8); -void sub_80BA384(u8); -void sub_80BA65C(u8); -void sub_80BA68C(u8); -void sub_80BA6B8(u8); -void sub_80BA700(u16, u16, u16); -void sub_80BA79C(const u8 *const, u16, u16); -void sub_80BA800(u8); -void sub_80BAA48(u8); -void sub_80BACDC(s8); -void sub_80BAD5C(void); -void sub_80BAE10(u8, u8); -void sub_80BAE78(int, u16, u16, u8); -void sub_80BAF84(u8); -void sub_80BB038(u8); -void sub_80BB1D4(void); -void sub_80BB25C(u8); -void sub_80BB3B4(u8); -void sub_80BB494(void); - -static const u8 gDebugText_SoundCheckJap[] = _("サウンドチェック"); -static const u8 gDebugText_BGM[] = _("BGM"); -static const u8 gDebugText_SE[] = _("SE "); -static const u8 gDebugText_ABDesc[] = _("A‥さいせい B‥おわり"); -static const u8 gDebugText_UpDown[] = _("L‥UP R‥DOWN"); -static const u8 gDebugText_DriverTest[] = _("R‥DRIVER-TEST"); - -// ideally this should be a multi Coords8 struct, but it wont match when its treated like a struct. -static const u8 gUnknown_083D0300[] = { 1, 1, 1, 3, 1, 5, 1, 7, 1, 9, 1, 11, 1, 13, 1, 15, 1, 17 }; - -static const u8 gDebugText_BBack[] = _("Bぼたんで もどる"); -static const u8 gDebugText_APlay[] = _("Aぼたんで さいせい"); -static const u8 gDebugText_Voice[] = _("VOICE‥‥‥‥"); -static const u8 gDebugText_Volume[] = _("VOLUME‥‥‥"); -static const u8 gDebugText_Panpot[] = _("PANPOT‥‥‥"); -static const u8 gDebugText_Pitch[] = _("PITCH‥‥‥‥"); -static const u8 gDebugText_Length[] = _("LENGTH‥‥‥"); -static const u8 gDebugText_Release[] = _("RELEASE‥‥"); -static const u8 gDebugText_Progress[] = _("PROGRESS‥"); -static const u8 gDebugText_Chorus[] = _("CHORUS‥‥‥"); -static const u8 gDebugText_Priority[] = _("PRIORITY‥"); -static const u8 gDebugText_Playing[] = _("さいせいちゆう‥"); // 再生中 (playing) -static const u8 gDebugText_Reverse[] = _("はんてん‥‥‥‥"); // 反転 (reverse) -static const u8 gDebugText_Stereo[] = _("すてれお‥‥‥‥"); // stereo - -// also ideally should be a MinMax struct, but any attempt to make this into a struct causes it to not match due to the weird multi dim access. -static const int gUnknown_083D039C[16] = -{ - 0, 387, - 0, 127, - -127, 127, - -128, 32639, - 0, 65535, - 0, 255, - 0, 65535, - -64, 63 -}; - -static const u8 gUnknown_083D03DC[] = _("▶"); -static const u8 gUnknown_083D03DE[] = _(" "); - -// why not just use Powers of ten from string_util? -static const int gUnknown_083D03E0[6] = -{ - 1, - 10, - 100, - 1000, - 10000, - 100000 -}; - -static const s8 gUnknown_083D03F8[5] = { 0x3F, 0x00, 0xC0, 0x7F, 0x80 }; - -static const u8 gOtherText_SE[] = _("SE"); -static const u8 gOtherText_Pan[] = _("PAN"); -static const u8 gOtherText_LR[] = _(" LR"); -static const u8 gOtherText_RL[] = _(" RL"); - -// bgm names -static const u8 BGMName_STOP[] = _("STOP"); -static const u8 BGMName_TETSUJI[] = _("TETSUJI"); -static const u8 BGMName_FIELD13[] = _("FIELD13"); -static const u8 BGMName_KACHI22[] = _("KACHI22"); -static const u8 BGMName_KACHI2[] = _("KACHI2"); -static const u8 BGMName_KACHI3[] = _("KACHI3"); -static const u8 BGMName_KACHI5[] = _("KACHI5"); -static const u8 BGMName_PCC[] = _("PCC"); -static const u8 BGMName_NIBI[] = _("NIBI"); -static const u8 BGMName_SUIKUN[] = _("SUIKUN"); -static const u8 BGMName_DOORO1[] = _("DOORO1"); -static const u8 BGMName_DOORO_X1[] = _("DOORO-X1"); -static const u8 BGMName_DOORO_X3[] = _("DOORO-X3"); -static const u8 BGMName_MACHI_S2[] = _("MACHI-S2"); -static const u8 BGMName_MACHI_S4[] = _("MACHI-S4"); -static const u8 BGMName_GIM[] = _("GIM"); -static const u8 BGMName_NAMINORI[] = _("NAMINORI"); -static const u8 BGMName_DAN01[] = _("DAN01"); -static const u8 BGMName_FANFA1[] = _("FANFA1"); -static const u8 BGMName_ME_ASA[] = _("ME-ASA"); -static const u8 BGMName_ME_BACHI[] = _("ME-BACHI"); -static const u8 BGMName_FANFA4[] = _("FANFA4"); -static const u8 BGMName_FANFA5[] = _("FANFA5"); -static const u8 BGMName_ME_WAZA[] = _("ME-WAZA"); -static const u8 BGMName_BIJYUTU[] = _("BIJYUTU"); -static const u8 BGMName_DOORO_X4[] = _("DOORO-X4"); -static const u8 BGMName_FUNE_KAN[] = _("FUNE-KAN"); -static const u8 BGMName_ME_SHINKA[] = _("ME-SHINKA"); -static const u8 BGMName_SHINKA[] = _("SHINKA"); -static const u8 BGMName_ME_WASURE[] = _("ME-WASURE"); -static const u8 BGMName_SYOUJOEYE[] = _("SYOUJOEYE"); -static const u8 BGMName_BOYEYE[] = _("BOYEYE"); -static const u8 BGMName_DAN02[] = _("DAN02"); -static const u8 BGMName_MACHI_S3[] = _("MACHI-S3"); -static const u8 BGMName_ODAMAKI[] = _("ODAMAKI"); -static const u8 BGMName_B_TOWER[] = _("B-TOWER"); -static const u8 BGMName_SWIMEYE[] = _("SWIMEYE"); -static const u8 BGMName_DAN03[] = _("DAN03"); -static const u8 BGMName_ME_KINOMI[] = _("ME-KINOMI"); -static const u8 BGMName_ME_TAMA[] = _("ME-TAMA"); -static const u8 BGMName_ME_B_BIG[] = _("ME-B-BIG"); -static const u8 BGMName_ME_B_SMALL[] = _("ME-B-SMALL"); -static const u8 BGMName_ME_ZANNEN[] = _("ME-ZANNEN"); -static const u8 BGMName_BD_TIME[] = _("BD-TIME"); -static const u8 BGMName_TEST1[] = _("TEST1"); -static const u8 BGMName_TEST2[] = _("TEST2"); -static const u8 BGMName_TEST3[] = _("TEST3"); -static const u8 BGMName_TEST4[] = _("TEST4"); -static const u8 BGMName_TEST[] = _("TEST"); -static const u8 BGMName_GOMACHI0[] = _("GOMACHI0"); -static const u8 BGMName_GOTOWN[] = _("GOTOWN"); -static const u8 BGMName_POKECEN[] = _("POKECEN"); -static const u8 BGMName_NEXTROAD[] = _("NEXTROAD"); -static const u8 BGMName_GRANROAD[] = _("GRANROAD"); -static const u8 BGMName_CYCLING[] = _("CYCLING"); -static const u8 BGMName_FRIENDLY[] = _("FRIENDLY"); -static const u8 BGMName_MISHIRO[] = _("MISHIRO"); -static const u8 BGMName_TOZAN[] = _("TOZAN"); -static const u8 BGMName_GIRLEYE[] = _("GIRLEYE"); -static const u8 BGMName_MINAMO[] = _("MINAMO"); -static const u8 BGMName_ASHROAD[] = _("ASHROAD"); -static const u8 BGMName_EVENT0[] = _("EVENT0"); -static const u8 BGMName_DEEPDEEP[] = _("DEEPDEEP"); -static const u8 BGMName_KACHI1[] = _("KACHI1"); -static const u8 BGMName_TITLE3[] = _("TITLE3"); -static const u8 BGMName_DEMO1[] = _("DEMO1"); -static const u8 BGMName_GIRL_SUP[] = _("GIRL-SUP"); -static const u8 BGMName_HAGESHII[] = _("HAGESHII"); -static const u8 BGMName_KAKKOII[] = _("KAKKOII"); -static const u8 BGMName_KAZANBAI[] = _("KAZANBAI"); -static const u8 BGMName_AQA_0[] = _("AQA-0"); -static const u8 BGMName_TSURETEK[] = _("TSURETEK"); -static const u8 BGMName_BOY_SUP[] = _("BOY-SUP"); -static const u8 BGMName_RAINBOW[] = _("RAINBOW"); -static const u8 BGMName_AYASII[] = _("AYASII"); -static const u8 BGMName_KACHI4[] = _("KACHI4"); -static const u8 BGMName_ROPEWAY[] = _("ROPEWAY"); -static const u8 BGMName_CASINO[] = _("CASINO"); -static const u8 BGMName_HIGHTOWN[] = _("HIGHTOWN"); -static const u8 BGMName_SAFARI[] = _("SAFARI"); -static const u8 BGMName_C_ROAD[] = _("C-ROAD"); -static const u8 BGMName_AJITO[] = _("AJITO"); -static const u8 BGMName_M_BOAT[] = _("M-BOAT"); -static const u8 BGMName_M_DUNGON[] = _("M-DUNGON"); -static const u8 BGMName_FINECITY[] = _("FINECITY"); -static const u8 BGMName_MACHUPI[] = _("MACHUPI"); -static const u8 BGMName_P_SCHOOL[] = _("P-SCHOOL"); -static const u8 BGMName_DENDOU[] = _("DENDOU"); -static const u8 BGMName_TONEKUSA[] = _("TONEKUSA"); -static const u8 BGMName_MABOROSI[] = _("MABOROSI"); -static const u8 BGMName_CON_FAN[] = _("CON-FAN"); -static const u8 BGMName_CONTEST0[] = _("CONTEST0"); -static const u8 BGMName_MGM0[] = _("MGM0"); -static const u8 BGMName_T_BATTLE[] = _("T-BATTLE"); -static const u8 BGMName_OOAME[] = _("OOAME"); -static const u8 BGMName_HIDERI[] = _("HIDERI"); -static const u8 BGMName_RUNECITY[] = _("RUNECITY"); -static const u8 BGMName_CON_K[] = _("CON-K"); -static const u8 BGMName_EIKOU_R[] = _("EIKOU-R"); -static const u8 BGMName_KARAKURI[] = _("KARAKURI"); -static const u8 BGMName_HUTAGO[] = _("HUTAGO"); -static const u8 BGMName_SITENNOU[] = _("SITENNOU"); -static const u8 BGMName_YAMA_EYE[] = _("YAMA-EYE"); -static const u8 BGMName_CONLOBBY[] = _("CONLOBBY"); -static const u8 BGMName_INTER_V[] = _("INTER-V"); -static const u8 BGMName_DAIGO[] = _("DAIGO"); -static const u8 BGMName_THANKFOR[] = _("THANKFOR"); -static const u8 BGMName_END[] = _("END"); -static const u8 BGMName_BATTLE27[] = _("BATTLE27"); -static const u8 BGMName_BATTLE31[] = _("BATTLE31"); -static const u8 BGMName_BATTLE20[] = _("BATTLE20"); -static const u8 BGMName_BATTLE32[] = _("BATTLE32"); -static const u8 BGMName_BATTLE33[] = _("BATTLE33"); -static const u8 BGMName_BATTLE36[] = _("BATTLE36"); -static const u8 BGMName_BATTLE34[] = _("BATTLE34"); -static const u8 BGMName_BATTLE35[] = _("BATTLE35"); -static const u8 BGMName_BATTLE38[] = _("BATTLE38"); -static const u8 BGMName_BATTLE30[] = _("BATTLE30"); - -static const u8 *const gBGMNames[] = -{ - BGMName_STOP, - BGMName_TETSUJI, - BGMName_FIELD13, - BGMName_KACHI22, - BGMName_KACHI2, - BGMName_KACHI3, - BGMName_KACHI5, - BGMName_PCC, - BGMName_NIBI, - BGMName_SUIKUN, - BGMName_DOORO1, - BGMName_DOORO_X1, - BGMName_DOORO_X3, - BGMName_MACHI_S2, - BGMName_MACHI_S4, - BGMName_GIM, - BGMName_NAMINORI, - BGMName_DAN01, - BGMName_FANFA1, - BGMName_ME_ASA, - BGMName_ME_BACHI, - BGMName_FANFA4, - BGMName_FANFA5, - BGMName_ME_WAZA, - BGMName_BIJYUTU, - BGMName_DOORO_X4, - BGMName_FUNE_KAN, - BGMName_ME_SHINKA, - BGMName_SHINKA, - BGMName_ME_WASURE, - BGMName_SYOUJOEYE, - BGMName_BOYEYE, - BGMName_DAN02, - BGMName_MACHI_S3, - BGMName_ODAMAKI, - BGMName_B_TOWER, - BGMName_SWIMEYE, - BGMName_DAN03, - BGMName_ME_KINOMI, - BGMName_ME_TAMA, - BGMName_ME_B_BIG, - BGMName_ME_B_SMALL, - BGMName_ME_ZANNEN, - BGMName_BD_TIME, - BGMName_TEST1, - BGMName_TEST2, - BGMName_TEST3, - BGMName_TEST4, - BGMName_TEST, - BGMName_GOMACHI0, - BGMName_GOTOWN, - BGMName_POKECEN, - BGMName_NEXTROAD, - BGMName_GRANROAD, - BGMName_CYCLING, - BGMName_FRIENDLY, - BGMName_MISHIRO, - BGMName_TOZAN, - BGMName_GIRLEYE, - BGMName_MINAMO, - BGMName_ASHROAD, - BGMName_EVENT0, - BGMName_DEEPDEEP, - BGMName_KACHI1, - BGMName_TITLE3, - BGMName_DEMO1, - BGMName_GIRL_SUP, - BGMName_HAGESHII, - BGMName_KAKKOII, - BGMName_KAZANBAI, - BGMName_AQA_0, - BGMName_TSURETEK, - BGMName_BOY_SUP, - BGMName_RAINBOW, - BGMName_AYASII, - BGMName_KACHI4, - BGMName_ROPEWAY, - BGMName_CASINO, - BGMName_HIGHTOWN, - BGMName_SAFARI, - BGMName_C_ROAD, - BGMName_AJITO, - BGMName_M_BOAT, - BGMName_M_DUNGON, - BGMName_FINECITY, - BGMName_MACHUPI, - BGMName_P_SCHOOL, - BGMName_DENDOU, - BGMName_TONEKUSA, - BGMName_MABOROSI, - BGMName_CON_FAN, - BGMName_CONTEST0, - BGMName_MGM0, - BGMName_T_BATTLE, - BGMName_OOAME, - BGMName_HIDERI, - BGMName_RUNECITY, - BGMName_CON_K, - BGMName_EIKOU_R, - BGMName_KARAKURI, - BGMName_HUTAGO, - BGMName_SITENNOU, - BGMName_YAMA_EYE, - BGMName_CONLOBBY, - BGMName_INTER_V, - BGMName_DAIGO, - BGMName_THANKFOR, - BGMName_END, - BGMName_BATTLE27, - BGMName_BATTLE31, - BGMName_BATTLE20, - BGMName_BATTLE32, - BGMName_BATTLE33, - BGMName_BATTLE36, - BGMName_BATTLE34, - BGMName_BATTLE35, - BGMName_BATTLE38, - BGMName_BATTLE30 -}; - -// SE names -static const u8 SEName_STOP[] = _("STOP"); -static const u8 SEName_KAIFUKU[] = _("KAIFUKU"); -static const u8 SEName_PC_LOGON[] = _("PC-LOGON"); -static const u8 SEName_PC_OFF[] = _("PC-OFF"); -static const u8 SEName_PC_ON[] = _("PC-ON"); -static const u8 SEName_SELECT[] = _("SELECT"); -static const u8 SEName_WIN_OPEN[] = _("WIN-OPEN"); -static const u8 SEName_WALL_HIT[] = _("WALL-HIT"); -static const u8 SEName_DOOR[] = _("DOOR"); -static const u8 SEName_KAIDAN[] = _("KAIDAN"); -static const u8 SEName_DANSA[] = _("DANSA"); -static const u8 SEName_JITENSYA[] = _("JITENSYA"); -static const u8 SEName_KOUKA_L[] = _("KOUKA-L"); -static const u8 SEName_KOUKA_M[] = _("KOUKA-M"); -static const u8 SEName_KOUKA_H[] = _("KOUKA-H"); -static const u8 SEName_BOWA2[] = _("BOWA2"); -static const u8 SEName_POKE_DEAD[] = _("POKE-DEAD"); -static const u8 SEName_NIGERU[] = _("NIGERU"); -static const u8 SEName_JIDO_DOA[] = _("JIDO-DOA"); -static const u8 SEName_NAMINORI[] = _("NAMINORI"); -static const u8 SEName_BAN[] = _("BAN"); -static const u8 SEName_PIN[] = _("PIN"); -static const u8 SEName_BOO[] = _("BOO"); -static const u8 SEName_BOWA[] = _("BOWA"); -static const u8 SEName_JYUNI[] = _("JYUNI"); -static const u8 SEName_A[] = _("A"); -static const u8 SEName_I[] = _("I"); -static const u8 SEName_U[] = _("U"); -static const u8 SEName_E[] = _("E"); -static const u8 SEName_O[] = _("O"); -static const u8 SEName_N[] = _("N"); -static const u8 SEName_SEIKAI[] = _("SEIKAI"); -static const u8 SEName_HAZURE[] = _("HAZURE"); -static const u8 SEName_EXP[] = _("EXP"); -static const u8 SEName_JITE_PYOKO[] = _("JITE-PYOKO"); -static const u8 SEName_MU_PACHI[] = _("MU-PACHI"); -static const u8 SEName_TK_KASYA[] = _("TK-KASYA"); -static const u8 SEName_FU_ZAKU[] = _("FU-ZAKU"); -static const u8 SEName_FU_ZAKU2[] = _("FU-ZAKU2"); -static const u8 SEName_FU_ZUZUZU[] = _("FU-ZUZUZU"); -static const u8 SEName_RU_GASHIN[] = _("RU-GASHIN"); -static const u8 SEName_RU_GASYAN[] = _("RU-GASYAN"); -static const u8 SEName_RU_BARI[] = _("RU-BARI"); -static const u8 SEName_RU_HYUU[] = _("RU-HYUU"); -static const u8 SEName_KI_GASYAN[] = _("KI-GASYAN"); -static const u8 SEName_TK_WARPIN[] = _("TK-WARPIN"); -static const u8 SEName_TK_WARPOUT[] = _("TK-WARPOUT"); -static const u8 SEName_TU_SAA[] = _("TU-SAA"); -static const u8 SEName_HI_TURUN[] = _("HI-TURUN"); -static const u8 SEName_TRACK_MOVE[] = _("TRACK-MOVE"); -static const u8 SEName_TRACK_STOP[] = _("TRACK-STOP"); -static const u8 SEName_TRACK_HAIK[] = _("TRACK-HAIK"); -static const u8 SEName_TRACK_DOOR[] = _("TRACK-DOOR"); -static const u8 SEName_MOTER[] = _("MOTER"); -static const u8 SEName_CARD[] = _("CARD"); -static const u8 SEName_SAVE[] = _("SAVE"); -static const u8 SEName_KON[] = _("KON"); -static const u8 SEName_KON2[] = _("KON2"); -static const u8 SEName_KON3[] = _("KON3"); -static const u8 SEName_KON4[] = _("KON4"); -static const u8 SEName_SUIKOMU[] = _("SUIKOMU"); -static const u8 SEName_NAGERU[] = _("NAGERU"); -static const u8 SEName_TOY_C[] = _("TOY-C"); -static const u8 SEName_TOY_D[] = _("TOY-D"); -static const u8 SEName_TOY_E[] = _("TOY-E"); -static const u8 SEName_TOY_F[] = _("TOY-F"); -static const u8 SEName_TOY_G[] = _("TOY-G"); -static const u8 SEName_TOY_A[] = _("TOY-A"); -static const u8 SEName_TOY_B[] = _("TOY-B"); -static const u8 SEName_TOY_C1[] = _("TOY-C1"); -static const u8 SEName_MIZU[] = _("MIZU"); -static const u8 SEName_HASHI[] = _("HASHI"); -static const u8 SEName_DAUGI[] = _("DAUGI"); -static const u8 SEName_PINPON[] = _("PINPON"); -static const u8 SEName_FUUSEN1[] = _("FUUSEN1"); -static const u8 SEName_FUUSEN2[] = _("FUUSEN2"); -static const u8 SEName_FUUSEN3[] = _("FUUSEN3"); -static const u8 SEName_TOY_KABE[] = _("TOY-KABE"); -static const u8 SEName_TOY_DANGO[] = _("TOY-DANGO"); -static const u8 SEName_DOKU[] = _("DOKU"); -static const u8 SEName_ESUKA[] = _("ESUKA"); -static const u8 SEName_T_AME[] = _("T-AME"); -static const u8 SEName_T_AME_E[] = _("T-AME-E"); -static const u8 SEName_T_OOAME[] = _("T-OOAME"); -static const u8 SEName_T_OOAME_E[] = _("T-OOAME-E"); -static const u8 SEName_T_KOAME[] = _("T-KOAME"); -static const u8 SEName_T_KOAME_E[] = _("T-KOAME-E"); -static const u8 SEName_T_KAMI[] = _("T-KAMI"); -static const u8 SEName_T_KAMI2[] = _("T-KAMI2"); -static const u8 SEName_ELEBETA[] = _("ELEBETA"); -static const u8 SEName_HINSI[] = _("HINSI"); -static const u8 SEName_EXPMAX[] = _("EXPMAX"); -static const u8 SEName_TAMAKORO[] = _("TAMAKORO"); -static const u8 SEName_TAMAKORO_E[] = _("TAMAKORO-E"); -static const u8 SEName_BASABASA[] = _("BASABASA"); -static const u8 SEName_REGI[] = _("REGI"); -static const u8 SEName_C_GAJI[] = _("C-GAJI"); -static const u8 SEName_C_MAKU_U[] = _("C-MAKU-U"); -static const u8 SEName_C_MAKU_D[] = _("C-MAKU-D"); -static const u8 SEName_C_PASI[] = _("C-PASI"); -static const u8 SEName_C_SYU[] = _("C-SYU"); -static const u8 SEName_C_PIKON[] = _("C-PIKON"); -static const u8 SEName_REAPOKE[] = _("REAPOKE"); -static const u8 SEName_OP_BASYU[] = _("OP-BASYU"); -static const u8 SEName_BT_START[] = _("BT-START"); -static const u8 SEName_DENDOU[] = _("DENDOU"); -static const u8 SEName_JIHANKI[] = _("JIHANKI"); -static const u8 SEName_TAMA[] = _("TAMA"); -static const u8 SEName_Z_SCROLL[] = _("Z-SCROLL"); -static const u8 SEName_Z_PAGE[] = _("Z-PAGE"); -static const u8 SEName_PN_ON[] = _("PN-ON"); -static const u8 SEName_PN_OFF[] = _("PN-OFF"); -static const u8 SEName_Z_SEARCH[] = _("Z-SEARCH"); -static const u8 SEName_TAMAGO[] = _("TAMAGO"); -static const u8 SEName_TB_START[] = _("TB-START"); -static const u8 SEName_TB_KON[] = _("TB-KON"); -static const u8 SEName_TB_KARA[] = _("TB-KARA"); -static const u8 SEName_BIDORO[] = _("BIDORO"); -static const u8 SEName_W085[] = _("W085"); -static const u8 SEName_W085B[] = _("W085B"); -static const u8 SEName_W231[] = _("W231"); -static const u8 SEName_W171[] = _("W171"); -static const u8 SEName_W233[] = _("W233"); -static const u8 SEName_W233B[] = _("W233B"); -static const u8 SEName_W145[] = _("W145"); -static const u8 SEName_W145B[] = _("W145B"); -static const u8 SEName_W145C[] = _("W145C"); -static const u8 SEName_W240[] = _("W240"); -static const u8 SEName_W015[] = _("W015"); -static const u8 SEName_W081[] = _("W081"); -static const u8 SEName_W081B[] = _("W081B"); -static const u8 SEName_W088[] = _("W088"); -static const u8 SEName_W016[] = _("W016"); -static const u8 SEName_W016B[] = _("W016B"); -static const u8 SEName_W003[] = _("W003"); -static const u8 SEName_W104[] = _("W104"); -static const u8 SEName_W013[] = _("W013"); -static const u8 SEName_W196[] = _("W196"); -static const u8 SEName_W086[] = _("W086"); -static const u8 SEName_W004[] = _("W004"); -static const u8 SEName_W025[] = _("W025"); -static const u8 SEName_W025B[] = _("W025B"); -static const u8 SEName_W152[] = _("W152"); -static const u8 SEName_W026[] = _("W026"); -static const u8 SEName_W172[] = _("W172"); -static const u8 SEName_W172B[] = _("W172B"); -static const u8 SEName_W053[] = _("W053"); -static const u8 SEName_W007[] = _("W007"); -static const u8 SEName_W092[] = _("W092"); -static const u8 SEName_W221[] = _("W221"); -static const u8 SEName_W221B[] = _("W221B"); -static const u8 SEName_W052[] = _("W052"); -static const u8 SEName_W036[] = _("W036"); -static const u8 SEName_W059[] = _("W059"); -static const u8 SEName_W059B[] = _("W059B"); -static const u8 SEName_W010[] = _("W010"); -static const u8 SEName_W011[] = _("W011"); -static const u8 SEName_W017[] = _("W017"); -static const u8 SEName_W019[] = _("W019"); -static const u8 SEName_W028[] = _("W028"); -static const u8 SEName_W013B[] = _("W013B"); -static const u8 SEName_W044[] = _("W044"); -static const u8 SEName_W029[] = _("W029"); -static const u8 SEName_W057[] = _("W057"); -static const u8 SEName_W056[] = _("W056"); -static const u8 SEName_W250[] = _("W250"); -static const u8 SEName_W030[] = _("W030"); -static const u8 SEName_W039[] = _("W039"); -static const u8 SEName_W054[] = _("W054"); -static const u8 SEName_W077[] = _("W077"); -static const u8 SEName_W020[] = _("W020"); -static const u8 SEName_W082[] = _("W082"); -static const u8 SEName_W047[] = _("W047"); -static const u8 SEName_W195[] = _("W195"); -static const u8 SEName_W006[] = _("W006"); -static const u8 SEName_W091[] = _("W091"); -static const u8 SEName_W146[] = _("W146"); -static const u8 SEName_W120[] = _("W120"); -static const u8 SEName_W153[] = _("W153"); -static const u8 SEName_W071B[] = _("W071B"); -static const u8 SEName_W071[] = _("W071"); -static const u8 SEName_W103[] = _("W103"); -static const u8 SEName_W062[] = _("W062"); -static const u8 SEName_W062B[] = _("W062B"); -static const u8 SEName_W048[] = _("W048"); -static const u8 SEName_W187[] = _("W187"); -static const u8 SEName_W118[] = _("W118"); -static const u8 SEName_W155[] = _("W155"); -static const u8 SEName_W122[] = _("W122"); -static const u8 SEName_W060[] = _("W060"); -static const u8 SEName_W185[] = _("W185"); -static const u8 SEName_W014[] = _("W014"); -static const u8 SEName_W043[] = _("W043"); -static const u8 SEName_W207[] = _("W207"); -static const u8 SEName_W207B[] = _("W207B"); -static const u8 SEName_W215[] = _("W215"); -static const u8 SEName_W109[] = _("W109"); -static const u8 SEName_W173[] = _("W173"); -static const u8 SEName_W280[] = _("W280"); -static const u8 SEName_W202[] = _("W202"); -static const u8 SEName_W060B[] = _("W060B"); -static const u8 SEName_W076[] = _("W076"); -static const u8 SEName_W080[] = _("W080"); -static const u8 SEName_W100[] = _("W100"); -static const u8 SEName_W107[] = _("W107"); -static const u8 SEName_W166[] = _("W166"); -static const u8 SEName_W129[] = _("W129"); -static const u8 SEName_W115[] = _("W115"); -static const u8 SEName_W112[] = _("W112"); -static const u8 SEName_W197[] = _("W197"); -static const u8 SEName_W199[] = _("W199"); -static const u8 SEName_W236[] = _("W236"); -static const u8 SEName_W204[] = _("W204"); -static const u8 SEName_W268[] = _("W268"); -static const u8 SEName_W070[] = _("W070"); -static const u8 SEName_W063[] = _("W063"); -static const u8 SEName_W127[] = _("W127"); -static const u8 SEName_W179[] = _("W179"); -static const u8 SEName_W151[] = _("W151"); -static const u8 SEName_W201[] = _("W201"); -static const u8 SEName_W161[] = _("W161"); -static const u8 SEName_W161B[] = _("W161B"); -static const u8 SEName_W227[] = _("W227"); -static const u8 SEName_W227B[] = _("W227B"); -static const u8 SEName_W226[] = _("W226"); -static const u8 SEName_W208[] = _("W208"); -static const u8 SEName_W213[] = _("W213"); -static const u8 SEName_W213B[] = _("W213B"); -static const u8 SEName_W234[] = _("W234"); -static const u8 SEName_W260[] = _("W260"); -static const u8 SEName_W328[] = _("W328"); -static const u8 SEName_W320[] = _("W320"); -static const u8 SEName_W255[] = _("W255"); -static const u8 SEName_W291[] = _("W291"); -static const u8 SEName_W089[] = _("W089"); -static const u8 SEName_W239[] = _("W239"); -static const u8 SEName_W230[] = _("W230"); -static const u8 SEName_W281[] = _("W281"); -static const u8 SEName_W327[] = _("W327"); -static const u8 SEName_W287[] = _("W287"); -static const u8 SEName_W257[] = _("W257"); -static const u8 SEName_W253[] = _("W253"); -static const u8 SEName_W258[] = _("W258"); -static const u8 SEName_W322[] = _("W322"); -static const u8 SEName_W298[] = _("W298"); -static const u8 SEName_W287B[] = _("W287B"); -static const u8 SEName_W114[] = _("W114"); -static const u8 SEName_W063B[] = _("W063B"); - -static const u8 *const gSENames[] = -{ - SEName_STOP, - SEName_KAIFUKU, - SEName_PC_LOGON, - SEName_PC_OFF, - SEName_PC_ON, - SEName_SELECT, - SEName_WIN_OPEN, - SEName_WALL_HIT, - SEName_DOOR, - SEName_KAIDAN, - SEName_DANSA, - SEName_JITENSYA, - SEName_KOUKA_L, - SEName_KOUKA_M, - SEName_KOUKA_H, - SEName_BOWA2, - SEName_POKE_DEAD, - SEName_NIGERU, - SEName_JIDO_DOA, - SEName_NAMINORI, - SEName_BAN, - SEName_PIN, - SEName_BOO, - SEName_BOWA, - SEName_JYUNI, - SEName_A, - SEName_I, - SEName_U, - SEName_E, - SEName_O, - SEName_N, - SEName_SEIKAI, - SEName_HAZURE, - SEName_EXP, - SEName_JITE_PYOKO, - SEName_MU_PACHI, - SEName_TK_KASYA, - SEName_FU_ZAKU, - SEName_FU_ZAKU2, - SEName_FU_ZUZUZU, - SEName_RU_GASHIN, - SEName_RU_GASYAN, - SEName_RU_BARI, - SEName_RU_HYUU, - SEName_KI_GASYAN, - SEName_TK_WARPIN, - SEName_TK_WARPOUT, - SEName_TU_SAA, - SEName_HI_TURUN, - SEName_TRACK_MOVE, - SEName_TRACK_STOP, - SEName_TRACK_HAIK, - SEName_TRACK_DOOR, - SEName_MOTER, - SEName_CARD, - SEName_SAVE, - SEName_KON, - SEName_KON2, - SEName_KON3, - SEName_KON4, - SEName_SUIKOMU, - SEName_NAGERU, - SEName_TOY_C, - SEName_TOY_D, - SEName_TOY_E, - SEName_TOY_F, - SEName_TOY_G, - SEName_TOY_A, - SEName_TOY_B, - SEName_TOY_C1, - SEName_MIZU, - SEName_HASHI, - SEName_DAUGI, - SEName_PINPON, - SEName_FUUSEN1, - SEName_FUUSEN2, - SEName_FUUSEN3, - SEName_TOY_KABE, - SEName_TOY_DANGO, - SEName_DOKU, - SEName_ESUKA, - SEName_T_AME, - SEName_T_AME_E, - SEName_T_OOAME, - SEName_T_OOAME_E, - SEName_T_KOAME, - SEName_T_KOAME_E, - SEName_T_KAMI, - SEName_T_KAMI2, - SEName_ELEBETA, - SEName_HINSI, - SEName_EXPMAX, - SEName_TAMAKORO, - SEName_TAMAKORO_E, - SEName_BASABASA, - SEName_REGI, - SEName_C_GAJI, - SEName_C_MAKU_U, - SEName_C_MAKU_D, - SEName_C_PASI, - SEName_C_SYU, - SEName_C_PIKON, - SEName_REAPOKE, - SEName_OP_BASYU, - SEName_BT_START, - SEName_DENDOU, - SEName_JIHANKI, - SEName_TAMA, - SEName_Z_SCROLL, - SEName_Z_PAGE, - SEName_PN_ON, - SEName_PN_OFF, - SEName_Z_SEARCH, - SEName_TAMAGO, - SEName_TB_START, - SEName_TB_KON, - SEName_TB_KARA, - SEName_BIDORO, - SEName_W085, - SEName_W085B, - SEName_W231, - SEName_W171, - SEName_W233, - SEName_W233B, - SEName_W145, - SEName_W145B, - SEName_W145C, - SEName_W240, - SEName_W015, - SEName_W081, - SEName_W081B, - SEName_W088, - SEName_W016, - SEName_W016B, - SEName_W003, - SEName_W104, - SEName_W013, - SEName_W196, - SEName_W086, - SEName_W004, - SEName_W025, - SEName_W025B, - SEName_W152, - SEName_W026, - SEName_W172, - SEName_W172B, - SEName_W053, - SEName_W007, - SEName_W092, - SEName_W221, - SEName_W221B, - SEName_W052, - SEName_W036, - SEName_W059, - SEName_W059B, - SEName_W010, - SEName_W011, - SEName_W017, - SEName_W019, - SEName_W028, - SEName_W013B, - SEName_W044, - SEName_W029, - SEName_W057, - SEName_W056, - SEName_W250, - SEName_W030, - SEName_W039, - SEName_W054, - SEName_W077, - SEName_W020, - SEName_W082, - SEName_W047, - SEName_W195, - SEName_W006, - SEName_W091, - SEName_W146, - SEName_W120, - SEName_W153, - SEName_W071B, - SEName_W071, - SEName_W103, - SEName_W062, - SEName_W062B, - SEName_W048, - SEName_W187, - SEName_W118, - SEName_W155, - SEName_W122, - SEName_W060, - SEName_W185, - SEName_W014, - SEName_W043, - SEName_W207, - SEName_W207B, - SEName_W215, - SEName_W109, - SEName_W173, - SEName_W280, - SEName_W202, - SEName_W060B, - SEName_W076, - SEName_W080, - SEName_W100, - SEName_W107, - SEName_W166, - SEName_W129, - SEName_W115, - SEName_W112, - SEName_W197, - SEName_W199, - SEName_W236, - SEName_W204, - SEName_W268, - SEName_W070, - SEName_W063, - SEName_W127, - SEName_W179, - SEName_W151, - SEName_W201, - SEName_W161, - SEName_W161B, - SEName_W227, - SEName_W227B, - SEName_W226, - SEName_W208, - SEName_W213, - SEName_W213B, - SEName_W234, - SEName_W260, - SEName_W328, - SEName_W320, - SEName_W255, - SEName_W291, - SEName_W089, - SEName_W239, - SEName_W230, - SEName_W281, - SEName_W327, - SEName_W287, - SEName_W257, - SEName_W253, - SEName_W258, - SEName_W322, - SEName_W298, - SEName_W287B, - SEName_W114, - SEName_W063B -}; - -void sub_80BA0A8(void) -{ - RunTasks(); - AnimateSprites(); - BuildOamBuffer(); - UpdatePaletteFade(); -} - -void sub_80BA0C0(void) -{ - LoadOam(); - ProcessSpriteCopyRequests(); - TransferPlttBuffer(); - - if(gUnknown_020387B0 != 0) - { - m4aSoundMain(); - m4aSoundMain(); - m4aSoundMain(); - } -} - -// unused -void CB2_StartSoundCheckMenu(void) -{ - u8 taskId; - - SetVBlankCallback(NULL); - REG_DISPCNT = 0; - REG_BG2CNT = 0; - REG_BG1CNT = 0; - REG_BG0CNT = 0; - REG_BG2HOFS = 0; - REG_BG2VOFS = 0; - REG_BG1HOFS = 0; - REG_BG1VOFS = 0; - REG_BG0HOFS = 0; - REG_BG0VOFS = 0; - DmaFill16(3, 0, VRAM, VRAM_SIZE); - DmaFill32(3, 0, OAM, OAM_SIZE); - DmaFill16(3, 0, PLTT, PLTT_SIZE); - ResetPaletteFade(); - ResetTasks(); - ResetSpriteData(); - SetUpWindowConfig(&gWindowConfig_81E6C3C); - InitMenuWindow(&gWindowConfig_81E6CE4); - BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0); - REG_WIN0H = WIN_RANGE(0, 0); - REG_WIN0V = WIN_RANGE(0, 0); - REG_WIN1H = WIN_RANGE(0, 0); - REG_WIN1V = WIN_RANGE(0, 0); - REG_WININ = 0x1111; - REG_WINOUT = 0x31; - REG_BLDCNT = 0xE1; - REG_BLDALPHA = 0; - REG_BLDY = 7; - REG_IE = 1; // could be a typo of REG_IME - REG_IE |= 1; - REG_DISPSTAT |= 8; - SetVBlankCallback(sub_80BA0C0); - SetMainCallback2(sub_80BA0A8); - REG_DISPCNT = 0x7140; - taskId = CreateTask(sub_80BA258, 0); - TASK.WINDOW_SELECTED = BGM_WINDOW; - TASK.BGM_INDEX = 0; - TASK.SE_INDEX = 0; - TASK.UNK_DATA3 = 0; - gUnknown_020387B0 = 0; - TASK.UNK_DATA3 = 0; // why? - m4aSoundInit(); -} - -// Task_InitSoundCheckMenu -void sub_80BA258(u8 taskId) -{ - u8 soundcheckStr[sizeof(gDebugText_SoundCheckJap)]; - u8 bgmStr[sizeof(gDebugText_BGM)]; - u8 seStr[sizeof(gDebugText_SE)]; - u8 abDescStr[sizeof(gDebugText_ABDesc)]; - u8 upDownStr[sizeof(gDebugText_UpDown)]; - u8 driverStr[sizeof(gDebugText_DriverTest)]; - - memcpy(soundcheckStr, gDebugText_SoundCheckJap, sizeof(gDebugText_SoundCheckJap)); - memcpy(bgmStr, gDebugText_BGM, sizeof(gDebugText_BGM)); - memcpy(seStr, gDebugText_SE, sizeof(gDebugText_SE)); - memcpy(abDescStr, gDebugText_ABDesc, sizeof(gDebugText_ABDesc)); - memcpy(upDownStr, gDebugText_UpDown, sizeof(gDebugText_UpDown)); - memcpy(driverStr, gDebugText_DriverTest, sizeof(gDebugText_DriverTest)); - - if(!gPaletteFade.active) - { - MenuDrawTextWindow(0x2, 0, 0x1B, 0x3); - MenuDrawTextWindow(0x2, 0x5, 0x1B, 0xA); - MenuDrawTextWindow(0x2, 0xC, 0x1B, 0x11); - MenuPrint(soundcheckStr, 4, 1); - MenuPrint(abDescStr, 14, 1); - MenuPrint(bgmStr, 4, 6); - MenuPrint(upDownStr, 14, 6); - MenuPrint(seStr, 4, 13); - MenuPrint(upDownStr, 14, 13); - MenuPrint(driverStr, 14, 18); - TASK.FUNC = sub_80BA384; - REG_WIN0H = WIN_RANGE(17, 223); - REG_WIN0V = WIN_RANGE(1, 31); - } -} - -void sub_80BA384(u8 taskId) // Task_HandleDrawingSoundCheckMenuText -{ - sub_80BA6B8(TASK.WINDOW_SELECTED); - sub_80BA700(TASK.BGM_INDEX + BGM_STOP, 7, 8); // print by BGM index - sub_80BA79C(gBGMNames[TASK.BGM_INDEX], 11, 8); - sub_80BA700(TASK.SE_INDEX, 7, 15); - sub_80BA79C(gSENames[TASK.SE_INDEX], 11, 15); - TASK.FUNC = sub_80BA65C; -} - -#ifdef NONMATCHING -bool8 sub_80BA400(u8 taskId) // Task_ProcessSoundCheckMenuInput -{ - if(gMain.newKeys & R_BUTTON) // driver test - { - TASK.FUNC = sub_80BA800; - return FALSE; - } - if(gMain.newKeys & L_BUTTON) - { - TASK.FUNC = sub_80BAF84; - return FALSE; - } - if(gMain.newKeys & START_BUTTON) - { - TASK.FUNC = sub_80BB25C; - return FALSE; - } - if(gMain.newKeys & A_BUTTON) // both these cases insist on non reuses of certain data variables and cause the function to not match. - { - if(TASK.WINDOW_SELECTED != 0) // is playing? - { - if(TASK.UNK_DATA4 != 0) - { - if(TASK.SE_INDEX != 0) // why are you insiting on a non signed halfword? - { - m4aSongNumStop(TASK.UNK_DATA4); - } - else - { - m4aSongNumStop(TASK.SE_INDEX); - TASK.UNK_DATA4 = TASK.SE_INDEX; - return FALSE; - } - } - else if(TASK.SE_INDEX == 0) // _080BA4BA - { - return FALSE; - } - // _080BA4C4 - m4aSongNumStart(TASK.SE_INDEX); - TASK.UNK_DATA4 = TASK.SE_INDEX; - return FALSE; - } - else // _080BA4D0 - { - if(TASK.UNK_DATA3 != 0) - { - if(TASK.BGM_INDEX != 0) - { - m4aSongNumStop(TASK.UNK_DATA3 + BGM_STOP); - } - else // _080BA500 - { - m4aSongNumStop(TASK.UNK_DATA3 + BGM_STOP); - TASK.UNK_DATA3 = TASK.BGM_INDEX; - return FALSE; - } - } - else if(TASK.BGM_INDEX == 0) // _080BA514 - return FALSE; - - m4aSongNumStart(TASK.BGM_INDEX + BGM_STOP); - TASK.UNK_DATA3 = TASK.BGM_INDEX; - } - return FALSE; - } - if(gMain.newKeys & B_BUTTON) - { - m4aSongNumStart(5); - BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); - TASK.FUNC = sub_80BA68C; - return FALSE; - } - if(gMain.newAndRepeatedKeys & DPAD_UP) - { - TASK.data[8] ^= A_BUTTON; // huh? - return TRUE; - } - if(gMain.newAndRepeatedKeys & DPAD_DOWN) - { - TASK.data[8] ^= A_BUTTON; // huh? - return TRUE; - } - else - { - u16 keys = gMain.newAndRepeatedKeys & DPAD_RIGHT; - if(keys) - { - if(TASK.WINDOW_SELECTED != 0) - { - if(TASK.SE_INDEX > 0) - { - TASK.SE_INDEX--; - } - else - { - TASK.SE_INDEX = 0xF7; - } - } - else if(TASK.BGM_INDEX > 0) - { - TASK.BGM_INDEX--; - } - else - { - TASK.BGM_INDEX = 0x75; - } - return TRUE; - } - if(gMain.newAndRepeatedKeys & DPAD_LEFT) - { - if(TASK.WINDOW_SELECTED != 0) - { - if(TASK.SE_INDEX < 0xF7) - { - TASK.SE_INDEX++; - } - else - { - TASK.SE_INDEX = keys; // ?? - } - } - else if(TASK.BGM_INDEX < 0x75) - { - TASK.BGM_INDEX++; - return TRUE; - } - else - { - TASK.BGM_INDEX = TASK.SE_INDEX; - return TRUE; - } - return TRUE; - } - if(gMain.heldKeys & SELECT_BUTTON) - { - gUnknown_020387B0 = A_BUTTON; - return FALSE; - } - else - { - gUnknown_020387B0 = (gMain.heldKeys & SELECT_BUTTON); - return FALSE; - } - } -} -#else -__attribute__((naked)) -bool8 sub_80BA400(u8 taskId) -{ - asm(".syntax unified\n\ - push {r4-r6,lr}\n\ - sub sp, 0x4\n\ - lsls r0, 24\n\ - lsrs r4, r0, 24\n\ - ldr r2, _080BA428 @ =gMain\n\ - ldrh r1, [r2, 0x2E]\n\ - movs r0, 0x80\n\ - lsls r0, 1\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _080BA434\n\ - ldr r0, _080BA42C @ =gTasks\n\ - lsls r1, r4, 2\n\ - adds r1, r4\n\ - lsls r1, 3\n\ - adds r1, r0\n\ - ldr r0, _080BA430 @ =sub_80BA800\n\ - str r0, [r1]\n\ - b _080BA64C\n\ - .align 2, 0\n\ -_080BA428: .4byte gMain\n\ -_080BA42C: .4byte gTasks\n\ -_080BA430: .4byte sub_80BA800\n\ -_080BA434:\n\ - movs r0, 0x80\n\ - lsls r0, 2\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _080BA458\n\ - ldr r0, _080BA450 @ =gTasks\n\ - lsls r1, r4, 2\n\ - adds r1, r4\n\ - lsls r1, 3\n\ - adds r1, r0\n\ - ldr r0, _080BA454 @ =sub_80BAF84\n\ - str r0, [r1]\n\ - b _080BA64C\n\ - .align 2, 0\n\ -_080BA450: .4byte gTasks\n\ -_080BA454: .4byte sub_80BAF84\n\ -_080BA458:\n\ - movs r0, 0x8\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _080BA478\n\ - ldr r0, _080BA470 @ =gTasks\n\ - lsls r1, r4, 2\n\ - adds r1, r4\n\ - lsls r1, 3\n\ - adds r1, r0\n\ - ldr r0, _080BA474 @ =sub_80BB25C\n\ - str r0, [r1]\n\ - b _080BA64C\n\ - .align 2, 0\n\ -_080BA470: .4byte gTasks\n\ -_080BA474: .4byte sub_80BB25C\n\ -_080BA478:\n\ - movs r6, 0x1\n\ - movs r5, 0x1\n\ - ands r5, r1\n\ - cmp r5, 0\n\ - beq _080BA538\n\ - ldr r0, _080BA4AC @ =gTasks\n\ - lsls r1, r4, 2\n\ - adds r1, r4\n\ - lsls r1, 3\n\ - adds r5, r1, r0\n\ - movs r1, 0x8\n\ - ldrsh r0, [r5, r1]\n\ - cmp r0, 0\n\ - beq _080BA4D0\n\ - movs r2, 0x10\n\ - ldrsh r0, [r5, r2]\n\ - cmp r0, 0\n\ - beq _080BA4BA\n\ - movs r3, 0xC\n\ - ldrsh r4, [r5, r3]\n\ - cmp r4, 0\n\ - beq _080BA4B0\n\ - ldrh r0, [r5, 0x10]\n\ - bl m4aSongNumStop\n\ - b _080BA4C4\n\ - .align 2, 0\n\ -_080BA4AC: .4byte gTasks\n\ -_080BA4B0:\n\ - ldrh r0, [r5, 0x10]\n\ - bl m4aSongNumStop\n\ - strh r4, [r5, 0x10]\n\ - b _080BA64C\n\ -_080BA4BA:\n\ - movs r4, 0xC\n\ - ldrsh r0, [r5, r4]\n\ - cmp r0, 0\n\ - bne _080BA4C4\n\ - b _080BA64C\n\ -_080BA4C4:\n\ - ldrh r0, [r5, 0xC]\n\ - bl m4aSongNumStart\n\ - ldrh r0, [r5, 0xC]\n\ - strh r0, [r5, 0x10]\n\ - b _080BA64C\n\ -_080BA4D0:\n\ - ldrh r1, [r5, 0xE]\n\ - movs r2, 0xE\n\ - ldrsh r0, [r5, r2]\n\ - cmp r0, 0\n\ - beq _080BA514\n\ - movs r3, 0xA\n\ - ldrsh r4, [r5, r3]\n\ - cmp r4, 0\n\ - beq _080BA500\n\ - ldr r0, _080BA4FC @ =0x0000015d\n\ - adds r4, r0, 0\n\ - adds r0, r1, r4\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - bl m4aSongNumStop\n\ - ldrh r1, [r5, 0xA]\n\ - adds r4, r1\n\ - lsls r4, 16\n\ - lsrs r4, 16\n\ - adds r0, r4, 0\n\ - b _080BA528\n\ - .align 2, 0\n\ -_080BA4FC: .4byte 0x0000015d\n\ -_080BA500:\n\ - ldr r2, _080BA510 @ =0x0000015d\n\ - adds r0, r1, r2\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - bl m4aSongNumStop\n\ - strh r4, [r5, 0xE]\n\ - b _080BA64C\n\ - .align 2, 0\n\ -_080BA510: .4byte 0x0000015d\n\ -_080BA514:\n\ - ldrh r1, [r5, 0xA]\n\ - movs r3, 0xA\n\ - ldrsh r0, [r5, r3]\n\ - cmp r0, 0\n\ - bne _080BA520\n\ - b _080BA64C\n\ -_080BA520:\n\ - ldr r4, _080BA534 @ =0x0000015d\n\ - adds r0, r1, r4\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ -_080BA528:\n\ - bl m4aSongNumStart\n\ - ldrh r0, [r5, 0xA]\n\ - strh r0, [r5, 0xE]\n\ - b _080BA64C\n\ - .align 2, 0\n\ -_080BA534: .4byte 0x0000015d\n\ -_080BA538:\n\ - movs r0, 0x2\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _080BA570\n\ - movs r0, 0x5\n\ - bl m4aSongNumStart\n\ - movs r0, 0x1\n\ - negs r0, r0\n\ - str r5, [sp]\n\ - movs r1, 0\n\ - movs r2, 0\n\ - movs r3, 0x10\n\ - bl BeginNormalPaletteFade\n\ - ldr r1, _080BA568 @ =gTasks\n\ - lsls r0, r4, 2\n\ - adds r0, r4\n\ - lsls r0, 3\n\ - adds r0, r1\n\ - ldr r1, _080BA56C @ =sub_80BA68C\n\ - str r1, [r0]\n\ - b _080BA64C\n\ - .align 2, 0\n\ -_080BA568: .4byte gTasks\n\ -_080BA56C: .4byte sub_80BA68C\n\ -_080BA570:\n\ - ldrh r1, [r2, 0x30]\n\ - movs r0, 0x40\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - bne _080BA582\n\ - movs r0, 0x80\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _080BA59C\n\ -_080BA582:\n\ - ldr r0, _080BA598 @ =gTasks\n\ - lsls r1, r4, 2\n\ - adds r1, r4\n\ - lsls r1, 3\n\ - adds r1, r0\n\ - ldrh r0, [r1, 0x8]\n\ - eors r0, r6\n\ - strh r0, [r1, 0x8]\n\ -_080BA592:\n\ - movs r0, 0x1\n\ - b _080BA64E\n\ - .align 2, 0\n\ -_080BA598: .4byte gTasks\n\ -_080BA59C:\n\ - movs r0, 0x10\n\ - ands r0, r1\n\ - lsls r0, 16\n\ - lsrs r3, r0, 16\n\ - cmp r3, 0\n\ - beq _080BA5EA\n\ - ldr r0, _080BA5CC @ =gTasks\n\ - lsls r1, r4, 2\n\ - adds r1, r4\n\ - lsls r1, 3\n\ - adds r1, r0\n\ - movs r2, 0x8\n\ - ldrsh r0, [r1, r2]\n\ - cmp r0, 0\n\ - beq _080BA5D6\n\ - ldrh r2, [r1, 0xC]\n\ - movs r3, 0xC\n\ - ldrsh r0, [r1, r3]\n\ - cmp r0, 0\n\ - ble _080BA5D0\n\ - subs r0, r2, 0x1\n\ - strh r0, [r1, 0xC]\n\ - b _080BA592\n\ - .align 2, 0\n\ -_080BA5CC: .4byte gTasks\n\ -_080BA5D0:\n\ - movs r0, 0xF7\n\ - strh r0, [r1, 0xC]\n\ - b _080BA592\n\ -_080BA5D6:\n\ - ldrh r2, [r1, 0xA]\n\ - movs r4, 0xA\n\ - ldrsh r0, [r1, r4]\n\ - cmp r0, 0\n\ - ble _080BA5E4\n\ - subs r0, r2, 0x1\n\ - b _080BA5E6\n\ -_080BA5E4:\n\ - movs r0, 0x75\n\ -_080BA5E6:\n\ - strh r0, [r1, 0xA]\n\ - b _080BA592\n\ -_080BA5EA:\n\ - movs r0, 0x20\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _080BA630\n\ - ldr r1, _080BA614 @ =gTasks\n\ - lsls r0, r4, 2\n\ - adds r0, r4\n\ - lsls r0, 3\n\ - adds r1, r0, r1\n\ - movs r0, 0x8\n\ - ldrsh r2, [r1, r0]\n\ - cmp r2, 0\n\ - beq _080BA61C\n\ - ldrh r2, [r1, 0xC]\n\ - movs r4, 0xC\n\ - ldrsh r0, [r1, r4]\n\ - cmp r0, 0xF6\n\ - bgt _080BA618\n\ - adds r0, r2, 0x1\n\ - strh r0, [r1, 0xC]\n\ - b _080BA592\n\ - .align 2, 0\n\ -_080BA614: .4byte gTasks\n\ -_080BA618:\n\ - strh r3, [r1, 0xC]\n\ - b _080BA592\n\ -_080BA61C:\n\ - ldrh r3, [r1, 0xA]\n\ - movs r4, 0xA\n\ - ldrsh r0, [r1, r4]\n\ - cmp r0, 0x74\n\ - bgt _080BA62C\n\ - adds r0, r3, 0x1\n\ - strh r0, [r1, 0xA]\n\ - b _080BA592\n\ -_080BA62C:\n\ - strh r2, [r1, 0xA]\n\ - b _080BA592\n\ -_080BA630:\n\ - ldrh r1, [r2, 0x2C]\n\ - movs r0, 0x4\n\ - ands r0, r1\n\ - lsls r0, 16\n\ - lsrs r1, r0, 16\n\ - cmp r1, 0\n\ - beq _080BA648\n\ - ldr r0, _080BA644 @ =gUnknown_020387B0\n\ - strb r6, [r0]\n\ - b _080BA64C\n\ - .align 2, 0\n\ -_080BA644: .4byte gUnknown_020387B0\n\ -_080BA648:\n\ - ldr r0, _080BA658 @ =gUnknown_020387B0\n\ - strb r1, [r0]\n\ -_080BA64C:\n\ - movs r0, 0\n\ -_080BA64E:\n\ - add sp, 0x4\n\ - pop {r4-r6}\n\ - pop {r1}\n\ - bx r1\n\ - .align 2, 0\n\ -_080BA658: .4byte gUnknown_020387B0\n\ - .syntax divided"); -} -#endif - -void sub_80BA65C(u8 taskId) -{ - if(sub_80BA400(taskId) != FALSE) - TASK.FUNC = sub_80BA384; -} - -void sub_80BA68C(u8 taskId) -{ - if(!gPaletteFade.active) - { - DestroyTask(taskId); - SetMainCallback2(CB2_InitTitleScreen); - } -} - -void sub_80BA6B8(u8 windowType) -{ - switch(windowType) - { - case BGM_WINDOW: - default: - REG_WIN1H = WIN_RANGE(17, 223); - REG_WIN1V = WIN_RANGE(41, 87); - break; - case SE_WINDOW: - REG_WIN1H = WIN_RANGE(17, 223); - REG_WIN1V = WIN_RANGE(97, 143); - break; - } -} - -void sub_80BA700(u16 soundIndex, u16 x, u16 y) // PrintSoundNumber ? -{ - u8 i; - u8 str[5]; - bool8 someBool; - u8 divisorValue; - - for(i = 0; i < 3; i++) - str[i] = 0; // initialize array - - str[3] = CHAR_ELLIPSIS; - str[4] = EOS; - someBool = FALSE; - - divisorValue = soundIndex / 100; - if(divisorValue) - { - str[0] = divisorValue + CHAR_0; - someBool = TRUE; - } - - divisorValue = (soundIndex % 100) / 10; - if(divisorValue || someBool != FALSE) - str[1] = divisorValue + CHAR_0; - - str[2] = ((soundIndex % 100) % 10) + CHAR_0; - MenuPrint(str, x, y); -} - -void sub_80BA79C(const u8 *const string, u16 x, u16 y) -{ - u8 i; - u8 str[11]; - - for(i = 0; i < 11; i++) - str[i] = 0; // format string. - - str[10] = EOS; // the above for loop formats the last element of the array unnecessarily. - - for(i = 0; string[i] != EOS && i < 10; i++) - str[i] = string[i]; - - MenuPrint(str, x, y); -} - -void sub_80BA800(u8 taskId) // Task_DrawDriverTestMenu -{ - u8 bbackStr[sizeof(gDebugText_BBack)]; - u8 aplayStr[sizeof(gDebugText_APlay)]; - u8 voiceStr[sizeof(gDebugText_Voice)]; - u8 volumeStr[sizeof(gDebugText_Volume)]; - u8 panpotStr[sizeof(gDebugText_Panpot)]; - u8 pitchStr[sizeof(gDebugText_Pitch)]; - u8 lengthStr[sizeof(gDebugText_Length)]; - u8 releaseStr[sizeof(gDebugText_Release)]; - u8 progressStr[sizeof(gDebugText_Progress)]; - u8 chorusStr[sizeof(gDebugText_Chorus)]; - u8 priorityStr[sizeof(gDebugText_Priority)]; - u8 playingStr[sizeof(gDebugText_Playing)]; - u8 reverseStr[sizeof(gDebugText_Reverse)]; - u8 stereoStr[sizeof(gDebugText_Stereo)]; - - memcpy(bbackStr, gDebugText_BBack, sizeof(gDebugText_BBack)); - memcpy(aplayStr, gDebugText_APlay, sizeof(gDebugText_APlay)); - memcpy(voiceStr, gDebugText_Voice, sizeof(gDebugText_Voice)); - memcpy(volumeStr, gDebugText_Volume, sizeof(gDebugText_Volume)); - memcpy(panpotStr, gDebugText_Panpot, sizeof(gDebugText_Panpot)); - memcpy(pitchStr, gDebugText_Pitch, sizeof(gDebugText_Pitch)); - memcpy(lengthStr, gDebugText_Length, sizeof(gDebugText_Length)); - memcpy(releaseStr, gDebugText_Release, sizeof(gDebugText_Release)); - memcpy(progressStr, gDebugText_Progress, sizeof(gDebugText_Progress)); - memcpy(chorusStr, gDebugText_Chorus, sizeof(gDebugText_Chorus)); - memcpy(priorityStr, gDebugText_Priority, sizeof(gDebugText_Priority)); - memcpy(playingStr, gDebugText_Playing, sizeof(gDebugText_Playing)); - memcpy(reverseStr, gDebugText_Reverse, sizeof(gDebugText_Reverse)); - memcpy(stereoStr, gDebugText_Stereo, sizeof(gDebugText_Stereo)); - - REG_DISPCNT = 0x3140; - MenuDrawTextWindow(0, 0, 0x1D, 0x13); - MenuPrint(bbackStr, 0x13, 0x4); - MenuPrint(aplayStr, 0x13, 0x2); - MenuPrint(voiceStr, 0x2, 0x1); - MenuPrint(volumeStr, 0x2, 0x3); - MenuPrint(panpotStr, 0x2, 0x5); - MenuPrint(pitchStr, 0x2, 0x7); - MenuPrint(lengthStr, 0x2, 0x9); - MenuPrint(releaseStr, 0x2, 0xB); - MenuPrint(progressStr, 0x2, 0xD); - MenuPrint(chorusStr, 0x2, 0xF); - MenuPrint(priorityStr, 0x2, 0x11); - MenuPrint(playingStr, 0x13, 0x10); - MenuPrint(reverseStr, 0x13, 0xE); - MenuPrint(stereoStr, 0x13, 0xC); - REG_WIN0H = WIN_RANGE(0, 240); - REG_WIN0V = WIN_RANGE(0, 160); - gUnknown_020387B3 = 0; - gUnknown_020387B1 = 0; - gUnknown_020387B2 = 0; - gUnknown_03005D30 = NULL; - gUnknown_020387D8 = 0; - gUnknown_020387D9 = 1; - gUnknown_020387B4[CRY_TEST_UNK0] = 0; - gUnknown_020387B4[CRY_TEST_VOLUME] = 0x78; - gUnknown_020387B4[CRY_TEST_PANPOT] = 0; - gUnknown_020387B4[CRY_TEST_PITCH] = 0x3C00; - gUnknown_020387B4[CRY_TEST_LENGTH] = 0xB4; - gUnknown_020387B4[CRY_TEST_PROGRESS] = 0; - gUnknown_020387B4[CRY_TEST_RELEASE] = 0; - gUnknown_020387B4[CRY_TEST_CHORUS] = 0; - gUnknown_020387B4[CRY_TEST_PRIORITY] = 2; - sub_80BAD5C(); - sub_80BAE10(0, 0); - TASK.FUNC = sub_80BAA48; -} - -void sub_80BAA48(u8 taskId) // Task_ProcessDriverTestInput -{ - if(gMain.newKeys & B_BUTTON) - { - REG_DISPCNT = 0x7140; - REG_WIN0H = WIN_RANGE(17, 223); - REG_WIN0V = WIN_RANGE(1, 31); - MenuZeroFillWindowRect(0, 0, 0x1D, 0x13); - TASK.FUNC = sub_80BA258; - return; - } - if(gMain.newAndRepeatedKeys & DPAD_UP) // _080BAAA8 - { - u8 backupVar = gUnknown_020387B3; - if(--gUnknown_020387B3 < 0) - gUnknown_020387B3 = 8; - - sub_80BAE10(backupVar, gUnknown_020387B3); - return; - } - if(gMain.newAndRepeatedKeys & DPAD_DOWN) // _080BAAD0 - { - u8 backupVar = gUnknown_020387B3; - if(++gUnknown_020387B3 > 8) - gUnknown_020387B3 = 0; - - sub_80BAE10(backupVar, gUnknown_020387B3); - return; - } - if(gMain.newKeys & START_BUTTON) // _080BAAF8 - { - gUnknown_020387D8 ^= 1; - sub_80BAD5C(); - return; - } - if(gMain.newKeys & SELECT_BUTTON) // _080BAB14 - { - gUnknown_020387D9 ^= 1; - sub_80BAD5C(); - SetPokemonCryStereo(gUnknown_020387D9); - return; - } - if(gMain.newAndRepeatedKeys & R_BUTTON) // _080BAB38 - { - sub_80BACDC(10); - sub_80BAD5C(); - return; - } - if(gMain.newAndRepeatedKeys & L_BUTTON) // _080BAB46 - { - sub_80BACDC(-10); - sub_80BAD5C(); - return; - } - if(gMain.newAndRepeatedKeys & DPAD_LEFT) // _080BAB56 - { - sub_80BACDC(-1); - sub_80BAD5C(); - return; - } - if(gMain.newAndRepeatedKeys & DPAD_RIGHT) // _080BAB64 - { - sub_80BACDC(1); - sub_80BAD5C(); - return; - } - if(gMain.newKeys & A_BUTTON) // _080BAB78 - { - u8 divide, remaining; - - SetPokemonCryVolume(gUnknown_020387B4[CRY_TEST_VOLUME]); - SetPokemonCryPanpot(gUnknown_020387B4[CRY_TEST_PANPOT]); - SetPokemonCryPitch(gUnknown_020387B4[CRY_TEST_PITCH]); - SetPokemonCryLength(gUnknown_020387B4[CRY_TEST_LENGTH]); - SetPokemonCryProgress(gUnknown_020387B4[CRY_TEST_PROGRESS]); - SetPokemonCryRelease(gUnknown_020387B4[CRY_TEST_RELEASE]); - SetPokemonCryChorus(gUnknown_020387B4[CRY_TEST_CHORUS]); - SetPokemonCryPriority(gUnknown_020387B4[CRY_TEST_PRIORITY]); - - remaining = gUnknown_020387B4[CRY_TEST_UNK0] % 128; - divide = gUnknown_020387B4[CRY_TEST_UNK0] / 128; - - switch(divide) - { - case 0: - if(gUnknown_020387D8) - gUnknown_03005D30 = SetPokemonCryTone(&voicegroup_84537C0[remaining]); - else - gUnknown_03005D30 = SetPokemonCryTone(&voicegroup_8452590[remaining]); - break; - case 1: - if(gUnknown_020387D8) - gUnknown_03005D30 = SetPokemonCryTone(&voicegroup_8453DC0[remaining]); - else - gUnknown_03005D30 = SetPokemonCryTone(&voicegroup_8452B90[remaining]); - break; - case 2: - if(gUnknown_020387D8) - gUnknown_03005D30 = SetPokemonCryTone(&voicegroup_84543C0[remaining]); - else - gUnknown_03005D30 = SetPokemonCryTone(&voicegroup_8453190[remaining]); - break; - case 3: - if(gUnknown_020387D8) - gUnknown_03005D30 = SetPokemonCryTone(&voicegroup_84549C0[remaining]); - else - gUnknown_03005D30 = SetPokemonCryTone(&voicegroup_8453790[remaining]); - break; - } - } - - // _080BACA2 - if(gUnknown_03005D30 != NULL) - { - gUnknown_020387B1 = IsPokemonCryPlaying(gUnknown_03005D30); - - if(gUnknown_020387B1 != gUnknown_020387B2) - sub_80BAD5C(); - - gUnknown_020387B2 = gUnknown_020387B1; - } -} - -void sub_80BACDC(s8 var) -{ - int minMaxArray[ARRAY_COUNT(gUnknown_083D039C)]; - - memcpy(minMaxArray, gUnknown_083D039C, sizeof(gUnknown_083D039C)); - gUnknown_020387B4[gUnknown_020387B3] += var; - - if(gUnknown_020387B4[gUnknown_020387B3] > minMaxArray[MULTI_DIM_ARR(gUnknown_020387B3, B_16, MAX)]) - gUnknown_020387B4[gUnknown_020387B3] = minMaxArray[MULTI_DIM_ARR(gUnknown_020387B3, B_16, MIN)]; - - if(gUnknown_020387B4[gUnknown_020387B3] < minMaxArray[MULTI_DIM_ARR(gUnknown_020387B3, B_16, MIN)]) - gUnknown_020387B4[gUnknown_020387B3] = minMaxArray[MULTI_DIM_ARR(gUnknown_020387B3, B_16, MAX)]; -} - -void sub_80BAD5C(void) -{ - sub_80BAE78(gUnknown_020387B4[CRY_TEST_UNK0] + 1, 0xB, 0x1, 0x5); - sub_80BAE78(gUnknown_020387B4[CRY_TEST_VOLUME], 0xB, 0x3, 0x5); - sub_80BAE78(gUnknown_020387B4[CRY_TEST_PANPOT], 0xB, 0x5, 0x5); - sub_80BAE78(gUnknown_020387B4[CRY_TEST_PITCH], 0xB, 0x7, 0x5); - sub_80BAE78(gUnknown_020387B4[CRY_TEST_LENGTH], 0xB, 0x9, 0x5); - sub_80BAE78(gUnknown_020387B4[CRY_TEST_RELEASE], 0xB, 0xB, 0x5); - sub_80BAE78(gUnknown_020387B4[CRY_TEST_PROGRESS], 0xB, 0xD, 0x5); - sub_80BAE78(gUnknown_020387B4[CRY_TEST_CHORUS], 0xB, 0xF, 0x5); - sub_80BAE78(gUnknown_020387B4[CRY_TEST_PRIORITY], 0xB, 0x11, 0x5); - sub_80BAE78(gUnknown_020387B1, 0x1B, 0x10, 0x1); - sub_80BAE78(gUnknown_020387D8, 0x1B, 0xE, 0x1); - sub_80BAE78(gUnknown_020387D9, 0x1B, 0xC, 0x1); -} - -void sub_80BAE10(u8 var1, u8 var2) -{ - u8 str1[sizeof(gUnknown_083D03DC)]; - u8 str2[sizeof(gUnknown_083D03DE)]; - - memcpy(str1, gUnknown_083D03DC, sizeof(gUnknown_083D03DC)); - memcpy(str2, gUnknown_083D03DE, sizeof(gUnknown_083D03DE)); - - MenuPrint(str2, gUnknown_083D0300[MULTI_DIM_ARR(var1, B_16, 0)], gUnknown_083D0300[MULTI_DIM_ARR(var1, B_16, 1)]); - MenuPrint(str1, gUnknown_083D0300[MULTI_DIM_ARR(var2, B_16, 0)], gUnknown_083D0300[MULTI_DIM_ARR(var2, B_16, 1)]); -} - -/*void sub_80BAE78(int var1, u16 var2, u16 var3, u8 var4) -{ - u32 powers[6]; - u8 str[8]; - u8 i; - u8 someVar, someVar2; - - memcpy(powers, gUnknown_083D03E0, sizeof(powers); - - for(i = 0; i < var4; i++) - str[i] = 0; - - str[var4 + 1] = CHAR_0; - someVar = 0; - - if(var1 < 0) // make absolute value? wtf - { - var1 = -var1; // just use abs? - someVar = 1; - } - - // _080BAED6 - someVar2 = 0; - if(var4 == 1) - someVar2 = 1; - - // _080BAEE2 - for(;;) - { - - } -}*/ - -// no. -__attribute__((naked)) -void sub_80BAE78(int var1, u16 var2, u16 var3, u8 var4) -{ - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r10\n\ - mov r6, r9\n\ - mov r5, r8\n\ - push {r5-r7}\n\ - sub sp, 0x2C\n\ - mov r8, r0\n\ - lsls r1, 16\n\ - lsrs r6, r1, 16\n\ - lsls r2, 16\n\ - lsrs r2, 16\n\ - lsls r3, 24\n\ - lsrs r7, r3, 24\n\ - mov r1, sp\n\ - ldr r0, _080BAF80 @ =gUnknown_083D03E0\n\ - ldm r0!, {r3-r5}\n\ - stm r1!, {r3-r5}\n\ - ldm r0!, {r3-r5}\n\ - stm r1!, {r3-r5}\n\ - movs r5, 0\n\ - add r0, sp, 0x18\n\ - mov r9, r0\n\ - cmp r5, r7\n\ - bgt _080BAEC0\n\ - mov r4, r9\n\ - movs r3, 0\n\ -_080BAEAC:\n\ - lsls r0, r5, 24\n\ - asrs r0, 24\n\ - adds r1, r4, r0\n\ - strb r3, [r1]\n\ - adds r0, 0x1\n\ - lsls r0, 24\n\ - lsrs r5, r0, 24\n\ - asrs r0, 24\n\ - cmp r0, r7\n\ - ble _080BAEAC\n\ -_080BAEC0:\n\ - adds r0, r7, 0x1\n\ - add r0, r9\n\ - movs r1, 0xFF\n\ - strb r1, [r0]\n\ - movs r1, 0\n\ - mov r3, r8\n\ - cmp r3, 0\n\ - bge _080BAED6\n\ - negs r3, r3\n\ - mov r8, r3\n\ - movs r1, 0x1\n\ -_080BAED6:\n\ - movs r4, 0\n\ - mov r10, r4\n\ - cmp r7, 0x1\n\ - bne _080BAEE2\n\ - movs r5, 0x1\n\ - mov r10, r5\n\ -_080BAEE2:\n\ - subs r0, r7, 0x1\n\ - lsls r0, 24\n\ - lsrs r5, r0, 24\n\ - lsls r0, r5, 24\n\ - lsls r6, 24\n\ - str r6, [sp, 0x24]\n\ - lsls r2, 24\n\ - str r2, [sp, 0x28]\n\ - cmp r0, 0\n\ - blt _080BAF62\n\ - str r1, [sp, 0x20]\n\ -_080BAEF8:\n\ - asrs r6, r0, 24\n\ - lsls r0, r6, 2\n\ - add r0, sp\n\ - ldr r1, [r0]\n\ - mov r0, r8\n\ - bl __divsi3\n\ - lsls r0, 24\n\ - lsrs r2, r0, 24\n\ - cmp r0, 0\n\ - bne _080BAF1A\n\ - mov r0, r10\n\ - cmp r0, 0\n\ - bne _080BAF1A\n\ - lsls r4, r5, 24\n\ - cmp r6, 0\n\ - bne _080BAF46\n\ -_080BAF1A:\n\ - lsls r4, r5, 24\n\ - ldr r3, [sp, 0x20]\n\ - cmp r3, 0\n\ - beq _080BAF34\n\ - mov r5, r10\n\ - cmp r5, 0\n\ - bne _080BAF34\n\ - asrs r0, r4, 24\n\ - subs r0, r7, r0\n\ - subs r0, 0x1\n\ - add r0, r9\n\ - movs r1, 0xAE\n\ - strb r1, [r0]\n\ -_080BAF34:\n\ - asrs r1, r4, 24\n\ - subs r1, r7, r1\n\ - add r1, r9\n\ - lsls r0, r2, 24\n\ - asrs r0, 24\n\ - subs r0, 0x5F\n\ - strb r0, [r1]\n\ - movs r0, 0x1\n\ - mov r10, r0\n\ -_080BAF46:\n\ - asrs r4, 24\n\ - lsls r0, r4, 2\n\ - add r0, sp\n\ - ldr r1, [r0]\n\ - mov r0, r8\n\ - bl __modsi3\n\ - mov r8, r0\n\ - subs r4, 0x1\n\ - lsls r4, 24\n\ - lsrs r5, r4, 24\n\ - lsls r0, r5, 24\n\ - cmp r0, 0\n\ - bge _080BAEF8\n\ -_080BAF62:\n\ - ldr r3, [sp, 0x24]\n\ - lsrs r1, r3, 24\n\ - ldr r4, [sp, 0x28]\n\ - lsrs r2, r4, 24\n\ - mov r0, r9\n\ - bl MenuPrint\n\ - add sp, 0x2C\n\ - pop {r3-r5}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - mov r10, r5\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_080BAF80: .4byte gUnknown_083D03E0\n\ - .syntax divided"); -} - -void sub_80BAF84(u8 taskId) -{ - u8 seStr[sizeof(gOtherText_SE)]; - u8 panStr[sizeof(gOtherText_Pan)]; - u8 playingStr[sizeof(gDebugText_Playing)]; - - memcpy(seStr, gOtherText_SE, sizeof(gOtherText_SE)); - memcpy(panStr, gOtherText_Pan, sizeof(gOtherText_Pan)); - memcpy(playingStr, gDebugText_Playing, sizeof(gDebugText_Playing)); - - REG_DISPCNT = 0x3140; - MenuDrawTextWindow(0, 0, 0x1D, 0x13); - MenuPrint(seStr, 3, 2); - MenuPrint(panStr, 3, 4); - MenuPrint(playingStr, 3, 8); - REG_WIN0H = WIN_RANGE(0, 240); - REG_WIN0V = WIN_RANGE(0, 160); - gUnknown_020387B4[CRY_TEST_UNK0] = 1; - gUnknown_020387B4[CRY_TEST_PANPOT] = 0; - gUnknown_020387B4[CRY_TEST_CHORUS] = 0; - gUnknown_020387B4[CRY_TEST_PROGRESS] = 0; - gUnknown_020387B4[CRY_TEST_RELEASE] = 0; - sub_80BB1D4(); - TASK.FUNC = sub_80BB038; -} - -void sub_80BB038(u8 taskId) -{ - sub_80BB1D4(); - if(gUnknown_020387B4[CRY_TEST_PROGRESS]) - { - if(gUnknown_020387B4[CRY_TEST_RELEASE]) - { - gUnknown_020387B4[CRY_TEST_RELEASE]--; - } - else // _080BB05C - { - s8 panpot = gUnknown_083D03F8[gUnknown_020387B4[CRY_TEST_PANPOT]]; - if(panpot != -128) - { - if(panpot == 0x7F) - { - gUnknown_020387B4[CRY_TEST_CHORUS] += 2; - if(gUnknown_020387B4[CRY_TEST_CHORUS] < 0x3F) - SE12PanpotControl(gUnknown_020387B4[CRY_TEST_CHORUS]); - } - } - else // _080BB08C - { - gUnknown_020387B4[CRY_TEST_CHORUS] -= 2; - if(gUnknown_020387B4[CRY_TEST_CHORUS] > -0x40) - SE12PanpotControl(gUnknown_020387B4[CRY_TEST_CHORUS]); - } - } - } - // _080BB0A2 - if(gMain.newKeys & B_BUTTON) - { - REG_DISPCNT = 0x7140; - REG_WIN0H = WIN_RANGE(17, 223); - REG_WIN0V = WIN_RANGE(1, 31); - MenuZeroFillWindowRect(0, 0, 0x1D, 0x13); - TASK.FUNC = sub_80BA258; - return; - } - if(gMain.newKeys & A_BUTTON) // _080BB104 - { - s8 panpot = gUnknown_083D03F8[gUnknown_020387B4[CRY_TEST_PANPOT]]; - if(panpot != -128) - { - if(panpot == 0x7F) - { - PlaySE12WithPanning(gUnknown_020387B4[CRY_TEST_UNK0], -0x40); - gUnknown_020387B4[CRY_TEST_CHORUS] = -0x40; - gUnknown_020387B4[CRY_TEST_PROGRESS] = 1; - gUnknown_020387B4[CRY_TEST_RELEASE] = 0x1E; - return; - } - } - else // _080BB140 - { - PlaySE12WithPanning(gUnknown_020387B4[CRY_TEST_UNK0], 0x3F); - gUnknown_020387B4[CRY_TEST_CHORUS] = 0x3F; - gUnknown_020387B4[CRY_TEST_PROGRESS] = 1; - gUnknown_020387B4[CRY_TEST_RELEASE] = 0x1E; - return; - } - // _080BB154 - PlaySE12WithPanning(gUnknown_020387B4[CRY_TEST_UNK0], panpot); - gUnknown_020387B4[CRY_TEST_PROGRESS] = 0; - return; - } - if(gMain.newKeys & L_BUTTON) // _080BB15E - { - gUnknown_020387B4[CRY_TEST_PANPOT]++; - if(gUnknown_020387B4[CRY_TEST_PANPOT] > 4) - gUnknown_020387B4[CRY_TEST_PANPOT] = 0; - } - if(gMain.newKeys & R_BUTTON) // _080BB176 - { - gUnknown_020387B4[CRY_TEST_PANPOT]--; - if(gUnknown_020387B4[CRY_TEST_PANPOT] < 0) - gUnknown_020387B4[CRY_TEST_PANPOT] = 4; - } - if(gMain.newAndRepeatedKeys & DPAD_RIGHT) // _080BB192 - { - gUnknown_020387B4[CRY_TEST_UNK0]++; - if(gUnknown_020387B4[CRY_TEST_UNK0] > 0xF7) - gUnknown_020387B4[CRY_TEST_UNK0] = 0; - } - else if(gMain.newAndRepeatedKeys & DPAD_LEFT) // _080BB1B0 - { - gUnknown_020387B4[CRY_TEST_UNK0]--; - if(gUnknown_020387B4[CRY_TEST_UNK0] < 0) - gUnknown_020387B4[CRY_TEST_UNK0] = 0xF7; - } -} - -void sub_80BB1D4(void) -{ - u8 lrStr[sizeof(gOtherText_LR)]; - u8 rlStr[sizeof(gOtherText_RL)]; - - memcpy(lrStr, gOtherText_LR, sizeof(lrStr)); - memcpy(rlStr, gOtherText_RL, sizeof(rlStr)); - - sub_80BAE78(gUnknown_020387B4[CRY_TEST_UNK0], 7, 2, 3); - - switch(gUnknown_083D03F8[gUnknown_020387B4[CRY_TEST_PANPOT]]) - { - case 0x7F: - MenuPrint(lrStr, 7, 4); - break; - case -0x80: - MenuPrint(rlStr, 7, 4); - break; - default: - sub_80BAE78(gUnknown_083D03F8[gUnknown_020387B4[CRY_TEST_PANPOT]], 7, 4, 3); - break; - } - sub_80BAE78(IsSEPlaying(), 12, 8, 1); -} - -void sub_80BB25C(u8 taskId) -{ - struct CryRelatedStruct cryStruct, cryStruct2; - u8 zero; - - SetUpWindowConfig(&gWindowConfig_81E6C3C); - InitMenuWindow(&gWindowConfig_81E6CE4); - gUnknown_03005D34 = 1; - ResetSpriteData(); - FreeAllSpritePalettes(); - - cryStruct.unk0 = 0x2000; - cryStruct.unk2 = 29; - cryStruct.paletteNo = 12; - cryStruct.yPos = 30; - cryStruct.xPos = 4; - - zero = 0; // wtf? - gUnknown_03005E98 = 0; - - while(sub_8119E3C(&cryStruct, 3) == FALSE); - - cryStruct2.unk0 = 0; - cryStruct2.unk2 = 15; - cryStruct2.paletteNo = 13; - cryStruct2.xPos = 12; - cryStruct2.yPos = 12; - - zero = 0; // wtf? - gUnknown_03005E98 = 0; - - while(ShowPokedexCryScreen(&cryStruct2, 2) == FALSE); - - MenuDrawTextWindow(0, 16, 5, 19); - sub_80BB494(); - BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0); - REG_BG2HOFS = 0; - REG_BG2VOFS = 0; - REG_BG2CNT = 0xF01; - REG_BG3CNT = 0x1D03; - REG_DISPCNT = 0x1d40; - m4aMPlayFadeOutTemporarily(&gMPlay_BGM, 2); - TASK.FUNC = sub_80BB3B4; -} - -void sub_80BB3B4(u8 taskId) -{ - sub_8119F88(3); - - if(gMain.newKeys & A_BUTTON) - { - sub_811A050(gUnknown_03005D34); - } - if(gMain.newKeys & R_BUTTON) - { - StopCryAndClearCrySongs(); - } - if(gMain.newAndRepeatedKeys & DPAD_UP) - { - if(--gUnknown_03005D34 == 0) - gUnknown_03005D34 = 384; // total species - sub_80BB494(); - } - if(gMain.newAndRepeatedKeys & DPAD_DOWN) - { - if(++gUnknown_03005D34 > 384) - gUnknown_03005D34 = 1; - sub_80BB494(); - } - if(gMain.newKeys & B_BUTTON) - { - REG_DISPCNT = 0x7140; - REG_WIN0H = WIN_RANGE(17, 223); - REG_WIN0V = WIN_RANGE(1, 31); - MenuZeroFillWindowRect(0, 0, 0x1D, 0x13); - TASK.FUNC = sub_80BA258; - DestroyCryMeterNeedleSprite(); - } -} - -void sub_80BB494(void) -{ - sub_80BAE78(gUnknown_03005D34, 1, 17, 3); -} diff --git a/src/strings.c b/src/strings.c index be1bd94c7..6c8dce9d6 100644 --- a/src/strings.c +++ b/src/strings.c @@ -197,7 +197,7 @@ const u8 OtherText_TheField[] = _("the field."); const u8 OtherText_TheField2[] = _("the field."); const u8 OtherText_ThePC[] = _("the PC."); -const struct TextStruct gUnknown_0840E740[7] = +const u8 *const gUnknown_0840E740[7] = { OtherText_TheField3, OtherText_TheBattle, @@ -861,7 +861,7 @@ const u8 gOtherText_AtBattleStart[] = _("At the battle’s start."); const u8 gOtherText_UponWinningBattle[] = _("Upon winning a battle."); const u8 gOtherText_UponLosingBattle[] = _("Upon losing a battle."); -// mauville_old_man? +// mauville_man? const u8 gOtherText_TheBardsSong[] = _("The BARD’s Song"); const u8 gOtherText_WhatsHipHappening[] = _("What’s hip and happening?"); const u8 gOtherText_Interview[] = _("Interview"); @@ -1120,7 +1120,7 @@ const u8 OtherText_TheField[] = _("zum Hauptmenü."); const u8 OtherText_TheField2[] = _("zum Hauptmenü."); const u8 OtherText_ThePC[] = _("zum PC."); -const struct TextStruct gUnknown_0840E740[7] = +const u8 *const gUnknown_0840E740[7] = { OtherText_TheField3, OtherText_TheBattle, @@ -1781,7 +1781,7 @@ const u8 gOtherText_AtBattleStart[] = _("Zum Kampfbeginn"); const u8 gOtherText_UponWinningBattle[] = _("Über den Sieg"); const u8 gOtherText_UponLosingBattle[] = _("Über die Niederlage"); -// mauville_old_man? +// mauville_man? const u8 gOtherText_TheBardsSong[] = _("Das BARDEN-Lied"); const u8 gOtherText_WhatsHipHappening[] = _("Was ist hip? Was ist top?"); const u8 gOtherText_Interview[] = _("Interview"); diff --git a/src/trade.c b/src/trade.c deleted file mode 100644 index cb190d194..000000000 --- a/src/trade.c +++ /dev/null @@ -1,88 +0,0 @@ -#include "global.h" -#include "name_string_util.h" -#include "string_util.h" -#include "text.h" - -struct InGameTrade { - /*0x00*/ u8 name[11]; - /*0x0C*/ u16 species; - /*0x0E*/ u8 ivs[6]; - /*0x14*/ bool8 secondAbility; - /*0x18*/ u32 otId; - /*0x1C*/ u8 stats[5]; - /*0x24*/ u32 personality; - /*0x28*/ u16 heldItem; - /*0x2A*/ u8 mailNum; - /*0x2B*/ u8 otName[11]; - /*0x36*/ u8 otGender; - /*0x37*/ u8 sheen; - /*0x38*/ u16 playerSpecies; -}; - -struct UnkStructC { - /*0x00*/ u16 words[9]; - /*0x10*/ u8 string[8]; - /*0x1A*/ u8 otId[4]; - /*0x1E*/ u16 species; - /*0x20*/ u16 heldItem; -}; - -struct UnkStructD { - /*0x00*/ u8 pad00[0x10]; - /*0x10*/ u8 var10; - /*0x11*/ u8 pad11[1]; - /*0x12*/ u16 var12[1]; -}; - -extern const struct InGameTrade gIngameTrades[]; -extern const u16 gIngameTradeMail[][10]; - - -void sub_804A96C(struct UnkStructD *arg0, u8 left, u8 top, u16 *tilemap, u8 width, u8 height, u16 sp8) { - int y, x; - - for (y = 0; y < height; y++) - { - - for (x = 0; x < width; x++) - { - arg0->var12[(top * 32 + left) + y * 32 + x] = tilemap[width * y + x] | sp8; - } - } - -#if ENGLISH - arg0->var10 = 1; -#endif -} - -#if GERMAN -void sub_804A96C_alt(struct UnkStructD *arg0, u8 left, u8 top, u16 *tilemap, u8 width, u8 height, u16 sp8) { - sub_804A96C(arg0, left, top, tilemap, width, height, sp8); - - arg0->var10 = 1; -} -#endif - -asm(".section .text.sub_804DAD4"); - -void sub_804DAD4(struct UnkStructC *arg0, struct InGameTrade *trade) { - s32 i; - - for (i = 0; i < 9; i++) - { - arg0->words[i] = gIngameTradeMail[trade->mailNum][i]; - } - - StringCopy(arg0->string, trade->otName); - -#if GERMAN - PadNameString(arg0->string, CHAR_SPACE); -#endif - - arg0->otId[0] = trade->otId >> 24; - arg0->otId[1] = trade->otId >> 16; - arg0->otId[2] = trade->otId >> 8; - arg0->otId[3] = trade->otId; - arg0->species = trade->species; - arg0->heldItem = trade->heldItem; -} diff --git a/src/trainer_see.c b/src/trainer_see.c deleted file mode 100644 index 9b7a47f6b..000000000 --- a/src/trainer_see.c +++ /dev/null @@ -1,457 +0,0 @@ -#include "global.h" -#include "trainer_see.h" -#include "battle_setup.h" -#include "field_effect.h" -#include "field_map_obj.h" -#include "field_player_avatar.h" -#include "script.h" -#include "sprite.h" -#include "task.h" -#include "util.h" - -extern bool8 (*gIsTrainerInRange[])(struct MapObject *, u16, s16, s16); -extern bool8 (*gTrainerSeeFuncList[])(u8, struct Task *, struct MapObject *); -extern bool8 (*gTrainerSeeFuncList2[])(u8, struct Task *, struct MapObject *); - -extern u32 gUnknown_0202FF84[]; - -extern struct SpriteTemplate gSpriteTemplate_839B510; -extern struct SpriteTemplate gSpriteTemplate_839B528; - -bool8 CheckTrainers(void) -{ - u8 i; - - for (i = 0; i < 16; i++) - { - if ( gMapObjects[i].active ) - if ( gMapObjects[i].trainerType == 1 || gMapObjects[i].trainerType == 3 ) - if ( CheckTrainer(i) ) - return TRUE; - } - return FALSE; -} - -bool8 CheckTrainer(u8 trainer) -{ - u8 *scriptPtr = GetFieldObjectScriptPointerByFieldObjectId(trainer); - - if (GetTrainerFlagFromScriptPointer(scriptPtr)) - return FALSE; - else - { - struct MapObject *trainerObj = &gMapObjects[trainer]; - u8 canApproach = TrainerCanApproachPlayer(trainerObj); - - if (canApproach != 0) - { - TrainerWantsBattle(trainer, scriptPtr); - sub_80842C8(trainerObj, (canApproach - 1)); - return TRUE; - } - else - { - return FALSE; - } - } -} - -bool8 TrainerCanApproachPlayer(struct MapObject *trainerObj) -{ - s16 x, y; - u8 i; - u8 playerCoord; - - PlayerGetDestCoords(&x, &y); - if ( trainerObj->trainerType == 1 ) // trainers that don't spin - { - playerCoord = gIsTrainerInRange[trainerObj->mapobj_unk_18 - 1](trainerObj, trainerObj->trainerRange_berryTreeId, x, y); - return CheckPathBetweenTrainerAndPlayer((struct MapObject2 *)trainerObj, playerCoord, trainerObj->mapobj_unk_18); - } - else // spinners - { - for (i = 0; i < 4; i++) - { - playerCoord = gIsTrainerInRange[i](trainerObj, trainerObj->trainerRange_berryTreeId, x, y); - if ( CheckPathBetweenTrainerAndPlayer((struct MapObject2 *)trainerObj, playerCoord, i + 1) ) // directions are 1-4 instead of 0-3. south north west east - return playerCoord; - } - return FALSE; - } -} - -bool8 IsTrainerInRangeSouth(struct MapObject *trainerObj, s16 vision, s16 x, s16 y) -{ - if ( trainerObj->coords2.x == x - && y > trainerObj->coords2.y - && y <= trainerObj->coords2.y + vision ) - return (y - trainerObj->coords2.y); - else - return FALSE; -} - -bool8 IsTrainerInRangeNorth(struct MapObject *trainerObj, s16 vision, s16 x, s16 y) -{ - if ( trainerObj->coords2.x == x - && y < trainerObj->coords2.y - && y >= trainerObj->coords2.y - vision ) - return (trainerObj->coords2.y - y); - else - return FALSE; -} - -bool8 IsTrainerInRangeWest(struct MapObject *trainerObj, s16 vision, s16 x, s16 y) -{ - if ( trainerObj->coords2.y == y - && x < trainerObj->coords2.x - && x >= trainerObj->coords2.x - vision ) - return (trainerObj->coords2.x - x); - else - return FALSE; -} - -bool8 IsTrainerInRangeEast(struct MapObject *trainerObj, s16 vision, s16 x, s16 y) -{ - if ( trainerObj->coords2.y == y - && x > trainerObj->coords2.x - && x <= trainerObj->coords2.x + vision ) - return (x - trainerObj->coords2.x); - else - return FALSE; -} - -#ifdef BUGFIX_TRAINERAPPROACH -#define COLLISION_MASK ~1 -#else -#define COLLISION_MASK 1 -#endif - -bool8 CheckPathBetweenTrainerAndPlayer(struct MapObject2 *trainerObj, u8 playerCoord, u8 direction) -{ - s16 x, y; - u8 unk19_temp; - u8 unk19b_temp; - u8 i; - u8 var; - - if (!playerCoord) - return FALSE; - - x = trainerObj->coords2.x; - y = trainerObj->coords2.y; - - for (i = 0; i <= playerCoord - 1; i++, MoveCoords(direction, &x, &y)) - { - var = sub_8060024((struct MapObject *)trainerObj, x, y, direction); - - if (var && (var & COLLISION_MASK)) - return FALSE; - } - - // preserve mapobj_unk_19 before clearing. - unk19_temp = trainerObj->mapobj_unk_19; - unk19b_temp = trainerObj->mapobj_unk_19b; - trainerObj->mapobj_unk_19 = 0; - trainerObj->mapobj_unk_19b = 0; - - var = npc_block_way((struct MapObject *)trainerObj, x, y, direction); - - trainerObj->mapobj_unk_19 = unk19_temp; - trainerObj->mapobj_unk_19b = unk19b_temp; - if (var == 4) - return playerCoord; - - return FALSE; -} - -void sub_80842C8(struct MapObject *trainerObj, u8 taskId) -{ - struct Task *task = &gTasks[CreateTask(RunTrainerSeeFuncList, 0x50)]; - - task->data[1] = (u32)(trainerObj) >> 16; - task->data[2] = (u32)(trainerObj); - task->data[3] = taskId; -} - -void sub_80842FC(TaskFunc func) -{ - TaskFunc func2 = RunTrainerSeeFuncList; - u8 taskId = FindTaskIdByFunc(func2); - - SetTaskFuncWithFollowupFunc(taskId, RunTrainerSeeFuncList, func); - gTasks[taskId].data[0] = 1; - func2(taskId); -} - -void RunTrainerSeeFuncList(u8 taskId) -{ - struct Task *task = &gTasks[taskId]; - struct MapObject *trainerObj = (struct MapObject *)((task->data[1] << 16) | (task->data[2])); - - if (!trainerObj->active) - SwitchTaskToFollowupFunc(taskId); - else - while (gTrainerSeeFuncList[task->data[0]](taskId, task, trainerObj)); -} - -u8 sub_8084394() // cant be void because it is called with RunTrainerSeeFuncList with arguments. -{ - return 0; -} - -s8 sub_8084398(u8 taskId, struct Task *task, struct MapObject *trainerObj) -{ - u8 direction; - - FieldObjectGetLocalIdAndMap(trainerObj, (u8 *)&gUnknown_0202FF84[0], (u8 *)&gUnknown_0202FF84[1], (u8 *)&gUnknown_0202FF84[2]); - FieldEffectStart(0); - - direction = GetFaceDirectionAnimId(trainerObj->mapobj_unk_18); - - FieldObjectSetSpecialAnim(trainerObj, direction); - task->data[0]++; - return 1; -} - -s8 sub_80843DC(u8 taskId, struct Task *task, struct MapObject *trainerObj) -{ - if (FieldEffectActiveListContains(0)) - return 0; - else - { - task->data[0]++; - if ((u8)(trainerObj->animPattern - 57) <= 1) - task->data[0] = 6; - if (trainerObj->animPattern == 63) - task->data[0] = 8; - return 1; - } -} - -s8 sub_808441C(u8 taskId, struct Task *task, struct MapObject *trainerObj) -{ - if (!(FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(trainerObj)) || FieldObjectClearAnimIfSpecialAnimFinished(trainerObj)) - { - if (task->data[3]) - { - FieldObjectSetSpecialAnim(trainerObj, GetGoSpeed0AnimId(trainerObj->mapobj_unk_18)); - task->data[3]--; - } - else - { - FieldObjectSetSpecialAnim(trainerObj, 0x3E); - task->data[0]++; - } - } - return 0; -} - -s8 sub_8084478(u8 taskId, struct Task *task, struct MapObject *trainerObj) -{ - struct MapObject *playerObj; - - if (FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(trainerObj) && !FieldObjectClearAnimIfSpecialAnimFinished(trainerObj)) - return 0; - - npc_set_running_behaviour_etc(trainerObj, npc_running_behaviour_by_direction(trainerObj->mapobj_unk_18)); - sub_805C774(trainerObj, npc_running_behaviour_by_direction(trainerObj->mapobj_unk_18)); - sub_805C754(trainerObj); - - playerObj = &gMapObjects[gPlayerAvatar.mapObjectId]; - if (FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(playerObj) - && !FieldObjectClearAnimIfSpecialAnimFinished(playerObj)) - return 0; - - sub_80597E8(); - FieldObjectSetSpecialAnim(&gMapObjects[gPlayerAvatar.mapObjectId], GetFaceDirectionAnimId(GetOppositeDirection(trainerObj->mapobj_unk_18))); - task->data[0]++; - return 0; -} - -s8 sub_8084534(u8 taskId, struct Task *task, struct MapObject *trainerObj) // technically only 1 parameter, but needs all 3 for TrainerSeeFuncList call. -{ - struct MapObject *playerObj = &gMapObjects[gPlayerAvatar.mapObjectId]; - - if ( !FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(playerObj) - || FieldObjectClearAnimIfSpecialAnimFinished(playerObj) ) - SwitchTaskToFollowupFunc(taskId); - - return 0; -} - -s8 sub_8084578(u8 taskId, struct Task *task, struct MapObject *trainerObj) -{ - if (!FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(trainerObj) - || FieldObjectClearAnimIfSpecialAnimFinished(trainerObj)) - { - FieldObjectSetSpecialAnim(trainerObj, 0x59); - task->data[0]++; - } - return 0; -} - -s8 sub_80845AC(u8 taskId, struct Task *task, struct MapObject *trainerObj) -{ - if ( FieldObjectClearAnimIfSpecialAnimFinished(trainerObj) ) - task->data[0] = 3; - - return 0; -} - -s8 sub_80845C8(u8 taskId, struct Task *task, struct MapObject *trainerObj) -{ - if (!FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(trainerObj) - || FieldObjectClearAnimIfSpecialAnimFinished(trainerObj)) - { - FieldObjectSetSpecialAnim(trainerObj, 0x3E); - task->data[0]++; - } - return 0; -} - -s8 sub_80845FC(u8 taskId, struct Task *task, struct MapObject *trainerObj) -{ - if (FieldObjectCheckIfSpecialAnimFinishedOrInactive(trainerObj)) - { - gUnknown_0202FF84[0] = trainerObj->coords2.x; - gUnknown_0202FF84[1] = trainerObj->coords2.y; - gUnknown_0202FF84[2] = gSprites[trainerObj->spriteId].subpriority - 1; - gUnknown_0202FF84[3] = 2; - task->data[4] = FieldEffectStart(49); - task->data[0]++; - } - return 0; -} - -s8 sub_8084654(u8 taskId, struct Task *task, struct MapObject *trainerObj) -{ - struct Sprite *sprite; - - if (gSprites[task->data[4]].animCmdIndex == 2) - { - trainerObj->mapobj_bit_26 = 0; - trainerObj->mapobj_bit_2 = 1; - - sprite = &gSprites[trainerObj->spriteId]; - sprite->oam.priority = 2; - FieldObjectClearAnimIfSpecialAnimFinished(trainerObj); - FieldObjectSetSpecialAnim(trainerObj, sub_806084C(trainerObj->mapobj_unk_18)); - task->data[0]++; - } - return 0; -} - -s8 sub_80846C8(u8 taskId, struct Task *task, struct MapObject *trainerObj) -{ - if (!FieldEffectActiveListContains(49)) - task->data[0] = 3; - - return 0; -} - -void sub_80846E4(u8 taskId) -{ - struct Task *task = &gTasks[taskId]; - struct MapObject *mapObj; - - // another mapObj loaded into by loadword? - LoadWordFromTwoHalfwords(&task->data[1], (u32 *)&mapObj); - if (!task->data[7]) - { - FieldObjectClearAnim(mapObj); - task->data[7]++; - } - gTrainerSeeFuncList2[task->data[0]](taskId, task, mapObj); - if (task->data[0] == 3 && !FieldEffectActiveListContains(49)) - { - npc_set_running_behaviour_etc(mapObj, npc_running_behaviour_by_direction(mapObj->mapobj_unk_18)); - sub_805C774(mapObj, npc_running_behaviour_by_direction(mapObj->mapobj_unk_18)); - DestroyTask(taskId); - } - else - mapObj->mapobj_bit_7 = 0; -} - -void sub_8084794(struct MapObject *var) -{ - StoreWordInTwoHalfwords(&gTasks[CreateTask(sub_80846E4, 0)].data[1], (u32)var); -} - -void sub_80847C8(void) -{ - sub_80842FC(sub_80847D8); -} - -void sub_80847D8(u8 taskId) -{ - DestroyTask(taskId); - EnableBothScriptContexts(); -} - -u8 FldEff_ExclamationMarkIcon1(void) -{ - u8 spriteId = CreateSpriteAtEnd(&gSpriteTemplate_839B510, 0, 0, 0x53); - - if (spriteId != 64) - sub_8084894(&gSprites[spriteId], 0, 0); - - return 0; -} - -u8 FldEff_ExclamationMarkIcon2(void) -{ - u8 spriteId = CreateSpriteAtEnd(&gSpriteTemplate_839B510, 0, 0, 0x52); - - if (spriteId != 64) - sub_8084894(&gSprites[spriteId], 33, 1); - - return 0; -} - -u8 FldEff_HeartIcon(void) -{ - u8 spriteId = CreateSpriteAtEnd(&gSpriteTemplate_839B528, 0, 0, 0x52); - - if (spriteId != 64) - sub_8084894(&gSprites[spriteId], 46, 0); - - return 0; -} - -void sub_8084894(struct Sprite *sprite, u16 a2, u8 a3) -{ - sprite->oam.priority = 1; - sprite->coordOffsetEnabled = 1; - - sprite->data0 = gUnknown_0202FF84[0]; - sprite->data1 = gUnknown_0202FF84[1]; - sprite->data2 = gUnknown_0202FF84[2]; - sprite->data3 = -5; - sprite->data7 = a2; - - StartSpriteAnim(sprite, a3); -} - -void objc_exclamation_mark_probably(struct Sprite *sprite) -{ - u8 mapObjId; - - if (TryGetFieldObjectIdByLocalIdAndMap(sprite->data0, sprite->data1, sprite->data2, &mapObjId) - || sprite->animEnded) - { - FieldEffectStop(sprite, (u8)sprite->data7); - } - else - { - struct Sprite *mapObjSprite = &gSprites[gMapObjects[mapObjId].spriteId]; - sprite->data4 += sprite->data3; - sprite->pos1.x = mapObjSprite->pos1.x; - sprite->pos1.y = mapObjSprite->pos1.y - 16; - sprite->pos2.x = mapObjSprite->pos2.x; - sprite->pos2.y = mapObjSprite->pos2.y + sprite->data4; - if (sprite->data4) - sprite->data3++; - else - sprite->data3 = 0; - } -} diff --git a/src/tv.c b/src/tv.c deleted file mode 100644 index 27fe9b84c..000000000 --- a/src/tv.c +++ /dev/null @@ -1,3787 +0,0 @@ -#include "global.h" -#include "tv.h" -#include "battle_tower.h" -#include "contest_painting.h" -#include "data2.h" -#include "easy_chat.h" -#include "event_data.h" -#include "fieldmap.h" -#include "field_message_box.h" -#include "field_camera.h" -#include "flags.h" -#include "rng.h" -#include "string_util.h" -#include "text.h" -#include "species.h" -#include "pokedex.h" -#include "naming_screen.h" -#include "rom4.h" -#include "map_constants.h" -#include "strings.h" -#include "battle.h" -#include "link.h" -#include "easy_chat.h" -#include "field_map_obj.h" -#include "field_specials.h" -#include "item.h" -#include "items.h" -#include "link.h" -#include "map_constants.h" -#include "naming_screen.h" -#include "pokedex.h" -#include "region_map.h" -#include "rng.h" -#include "rom4.h" -#include "rtc.h" -#include "script_menu.h" -#include "species.h" -#include "string_util.h" -#include "strings.h" -#include "text.h" - -struct UnkTvStruct -{ - s8 var0; -}; - -extern u8 gUnknown_0300430A[11]; - -struct OutbreakPokemon -{ - /*0x00*/ u16 species; - /*0x02*/ u16 moves[4]; - /*0x0A*/ u8 level; - /*0x0B*/ u8 location; -}; - -struct TVSaleItem { - u16 item_id; - u16 item_amount; -}; - -extern u8 gUnknown_02038694; - -extern struct TVSaleItem gUnknown_02038724[3]; - -extern u16 gSpecialVar_0x8004; -extern u16 gSpecialVar_0x8005; -extern u16 gSpecialVar_0x8006; -extern u8 gSpecialVar_0x8007; -extern u16 gScriptResult; -extern u8 gUnknown_020387E8; - -extern struct UnkTvStruct gUnknown_03005D38; - -extern u8 *gTVBravoTrainerTextGroup[]; -extern u8 *gTVBravoTrainerBattleTowerTextGroup[]; -extern u8 *gTVSmartShopperTextGroup[]; -extern u8 *gTVNameRaterTextGroup[]; -extern u8 *gTVPokemonTodayTextGroup[]; -extern u8 *gTVPokemonTodayFailedCaptureTextGroup[]; -extern u8 *gTVFanClubTextGroup[]; -extern u8 *gTVRecentHappeningsTextGroup[]; -extern u8 *gTVFanClubOpinionsTextGroup[]; -extern u8 *gTVPokemonOutbreakTextGroup[]; -extern u8 *gTVGabbyAndTyTextGroup[]; -extern u8 *gTVFishingGuruAdviceTextGroup[]; -extern u8 *gTVWorldOfMastersTextGroup[]; -extern struct OutbreakPokemon gPokeOutbreakSpeciesList[5]; - -extern u16 gUnknown_020387E0; -extern u16 gUnknown_020387E2; - -extern const u8 *gTVNewsTextGroup1[]; -extern const u8 *gTVNewsTextGroup2[]; -extern const u8 *gTVNewsTextGroup3[]; - -extern u16 gScriptLastTalked; - - -extern u8 gScriptContestCategory; -extern u8 gScriptContestRank; -extern u8 gUnknown_03004316[11]; -extern u8 gBattleOutcome; - -extern u16 gLastUsedItem; - -extern u8 ewram[]; -#define gUnknown_02007000 (*(ewramStruct_02007000 *)(ewram + 0x7000)) -extern u8 gUnknown_020387E4; - -extern u8 gUnknown_03000720; -extern s8 gUnknown_03000722; - -void ClearTVShowData(void) -{ - u8 showidx; - u8 extradataidx; - for (showidx=0; showidx<25; showidx++) { - gSaveBlock1.tvShows[showidx].common.var00 = 0; - gSaveBlock1.tvShows[showidx].common.var01 = 0; - for (extradataidx=0; extradataidx<34; extradataidx++) { - gSaveBlock1.tvShows[showidx].common.pad02[extradataidx] = 0; - } - } - sub_80BEBF4(); -} - -bool8 sub_80BF1B4(u8); -void sub_80BF20C(void); -extern u16 sub_8135D3C(u8); -extern u8 gScriptContestCategory; -extern u8 gScriptContestRank; -extern u8 gUnknown_03004316[11]; -extern u8 gBattleOutcome; - -void sub_80BF334(void); -void sub_80BF3A4(void); -void sub_80BF3DC(void); -void sub_80BF46C(void); -void sub_80BF478(void); -void sub_80BF484(void); -void sub_80BF4BC(void); - -void sub_80BE028(void); -void sub_80BE074(void); -void sub_80BE778(void); -void sub_80BEB20(void); - -u8 sub_80BFB54(u8); - -s8 sub_80BF74C(TVShow tvShow[]); - -void sub_80BF55C(TVShow tvShow[], u8 showidx); -void sub_80BEA88(void); - -void sub_80BE138(TVShow *show); -void sub_80BE160(TVShow *show); -extern u16 gLastUsedItem; - -void sub_80BE5FC(void); -void sub_80BE65C(void); -void sub_80BE6A0(void); -void nullsub_21(void); -void sub_80BE188(void); -void sub_80BE320(void); - -#ifdef NONMATCHING -u8 special_0x44(void) -{ - u8 i; - u8 j; - u8 var01; - TVShow *tvShow; - for (i=5; i<24; i++) - { - if (gSaveBlock1.tvShows[i].common.var00 == 0) - { - break; - } - } - i = Random() % i; - j = i; - do - { - if (sub_80BFB54(gSaveBlock1.tvShows[i].common.var00) != 4) - { - var01 = gSaveBlock1.tvShows[i].common.var01; - } else - { - tvShow = &gSaveBlock1.tvShows[i]; - if (tvShow->massOutbreak.var16 != 0) { - continue; - } else { - var01 = tvShow->common.var01; - } - } - if (var01 == 1) - { - return i; - } - } while (i == 0 ? i = 23 : i --, i != j); - return 0xff; -} -#else -__attribute__((naked)) -u8 special_0x44(void) -{ - asm(".syntax unified\n" - " push {r4-r7,lr}\n" - " mov r7, r9\n" - " mov r6, r8\n" - " push {r6,r7}\n" - " movs r4, 0x5\n" - " ldr r1, _080BD874 @ =gSaveBlock1\n" - " ldr r2, _080BD878 @ =0x000027ec\n" - " adds r0, r1, r2\n" - " ldrb r0, [r0]\n" - " cmp r0, 0\n" - " beq _080BD834\n" - " adds r2, r1, 0\n" - " ldr r1, _080BD87C @ =0x00002738\n" - "_080BD81A:\n" - " adds r0, r4, 0x1\n" - " lsls r0, 24\n" - " lsrs r4, r0, 24\n" - " cmp r4, 0x17\n" - " bhi _080BD834\n" - " lsls r0, r4, 3\n" - " adds r0, r4\n" - " lsls r0, 2\n" - " adds r0, r2\n" - " adds r0, r1\n" - " ldrb r0, [r0]\n" - " cmp r0, 0\n" - " bne _080BD81A\n" - "_080BD834:\n" - " bl Random\n" - " lsls r0, 16\n" - " lsrs r0, 16\n" - " adds r1, r4, 0\n" - " bl __modsi3\n" - " lsls r0, 24\n" - " lsrs r4, r0, 24\n" - " mov r8, r4\n" - " ldr r7, _080BD874 @ =gSaveBlock1\n" - " ldr r0, _080BD87C @ =0x00002738\n" - " adds r0, r7\n" - " mov r9, r0\n" - "_080BD850:\n" - " lsls r0, r4, 3\n" - " adds r0, r4\n" - " lsls r6, r0, 2\n" - " adds r5, r6, r7\n" - " ldr r1, _080BD87C @ =0x00002738\n" - " adds r0, r5, r1\n" - " ldrb r0, [r0]\n" - " bl sub_80BFB54\n" - " lsls r0, 24\n" - " lsrs r0, 24\n" - " cmp r0, 0x4\n" - " beq _080BD884\n" - " ldr r2, _080BD880 @ =0x00002739\n" - " adds r0, r5, r2\n" - " ldrb r0, [r0]\n" - " b _080BD890\n" - " .align 2, 0\n" - "_080BD874: .4byte gSaveBlock1\n" - "_080BD878: .4byte 0x000027ec\n" - "_080BD87C: .4byte 0x00002738\n" - "_080BD880: .4byte 0x00002739\n" - "_080BD884:\n" - " mov r0, r9\n" - " adds r1, r6, r0\n" - " ldrh r0, [r1, 0x16]\n" - " cmp r0, 0\n" - " bne _080BD898\n" - " ldrb r0, [r1, 0x1]\n" - "_080BD890:\n" - " cmp r0, 0x1\n" - " bne _080BD898\n" - " adds r0, r4, 0\n" - " b _080BD8AC\n" - "_080BD898:\n" - " cmp r4, 0\n" - " bne _080BD8A0\n" - " movs r4, 0x17\n" - " b _080BD8A6\n" - "_080BD8A0:\n" - " subs r0, r4, 0x1\n" - " lsls r0, 24\n" - " lsrs r4, r0, 24\n" - "_080BD8A6:\n" - " cmp r4, r8\n" - " bne _080BD850\n" - " movs r0, 0xFF\n" - "_080BD8AC:\n" - " pop {r3,r4}\n" - " mov r8, r3\n" - " mov r9, r4\n" - " pop {r4-r7}\n" - " pop {r1}\n" - " bx r1\n" - ".syntax divided\n"); -} -#endif - -u8 sub_80BDA30(void); - -u8 sub_80BD8B8(void) -{ - u8 retval; - retval = special_0x44(); - if (retval == 0xff) - { - return 0xff; - } - if (gSaveBlock1.outbreakPokemonSpecies != 0 && gSaveBlock1.tvShows[retval].common.var00 == TVSHOW_MASS_OUTBREAK) - { - return sub_80BDA30(); - } - return retval; -} - -u8 CheckForBigMovieOrEmergencyNewsOnTV(void); -void SetTVMetatilesOnMap(int, int, u16); -bool8 sub_80BECA0(void); -bool8 IsTVShowInSearchOfTrainersAiring(void); - -void UpdateTVScreensOnMap(int width, int height) -{ - u8 bigMovieOrEmergencyNewsOnTv; - FlagSet(SYS_TV_WATCH); - bigMovieOrEmergencyNewsOnTv = CheckForBigMovieOrEmergencyNewsOnTV(); - switch (bigMovieOrEmergencyNewsOnTv) - { - case 1: - SetTVMetatilesOnMap(width, height, 0x3); - break; - case 2: - break; - default: - if (gSaveBlock1.location.mapGroup == MAP_GROUP_LILYCOVE_CITY_COVE_LILY_MOTEL_1F && gSaveBlock1.location.mapNum == MAP_ID_LILYCOVE_CITY_COVE_LILY_MOTEL_1F) - { - SetTVMetatilesOnMap(width, height, 0x3); - } - else if (FlagGet(SYS_TV_START) && (sub_80BD8B8() != 0xff || sub_80BECA0() != 0xff || IsTVShowInSearchOfTrainersAiring())) - { - FlagReset(SYS_TV_WATCH); - SetTVMetatilesOnMap(width, height, 0x3); - } - } -} - -void SetTVMetatilesOnMap(int width, int height, u16 tileId) -{ - int x; - int y; - for (y=0; ycommon.var00 == TVSHOW_MASS_OUTBREAK && gSaveBlock1.outbreakPokemonSpecies) - { - return sub_80BDA30(); - } - return gSpecialVar_0x8004; -} - -void ResetGabbyAndTy(void) -{ - gSaveBlock1.gabbyAndTyData.mon1 = 0; - gSaveBlock1.gabbyAndTyData.mon2 = 0; - gSaveBlock1.gabbyAndTyData.lastMove = 0; - gSaveBlock1.gabbyAndTyData.quote = 0xffff; - gSaveBlock1.gabbyAndTyData.valA_0 = 0; - gSaveBlock1.gabbyAndTyData.valA_1 = 0; - gSaveBlock1.gabbyAndTyData.valA_2 = 0; - gSaveBlock1.gabbyAndTyData.valA_3 = 0; - gSaveBlock1.gabbyAndTyData.valA_4 = 0; - gSaveBlock1.gabbyAndTyData.valA_5 = 0; - gSaveBlock1.gabbyAndTyData.valB_0 = 0; - gSaveBlock1.gabbyAndTyData.valB_1 = 0; - gSaveBlock1.gabbyAndTyData.valB_2 = 0; - gSaveBlock1.gabbyAndTyData.valB_3 = 0; - gSaveBlock1.gabbyAndTyData.valB_4 = 0; - gSaveBlock1.gabbyAndTyData.valB_5 = 0; - gSaveBlock1.gabbyAndTyData.mapnum = 0; - gSaveBlock1.gabbyAndTyData.battleNum = 0; -} - -void TakeTVShowInSearchOfTrainersOffTheAir(void); - -void GabbyAndTyBeforeInterview(void) -{ - u8 i; - gSaveBlock1.gabbyAndTyData.mon1 = gBattleResults.Poke1Species; - gSaveBlock1.gabbyAndTyData.mon2 = gBattleResults.OpponentSpecies; - gSaveBlock1.gabbyAndTyData.lastMove = gBattleResults.LastUsedMove; - if (gSaveBlock1.gabbyAndTyData.battleNum != 0xff) - { - gSaveBlock1.gabbyAndTyData.battleNum ++; - } - gSaveBlock1.gabbyAndTyData.valA_0 = gBattleResults.unk5_0; - if (gBattleResults.PlayerFaintCounter) - { - gSaveBlock1.gabbyAndTyData.valA_1 = 1; - } else - { - gSaveBlock1.gabbyAndTyData.valA_1 = 0; - } - if (gBattleResults.unk3) - { - gSaveBlock1.gabbyAndTyData.valA_2 = 1; - } else - { - gSaveBlock1.gabbyAndTyData.valA_2 = 0; - } - if (!gBattleResults.unk5_1) - { - for (i=0; i<11; i++) - { - if (gBattleResults.unk36[i] != 0) - { - gSaveBlock1.gabbyAndTyData.valA_3 = 1; - break; - } - } - } else - { - gSaveBlock1.gabbyAndTyData.valA_3 = 1; - } - TakeTVShowInSearchOfTrainersOffTheAir(); - if (gSaveBlock1.gabbyAndTyData.lastMove == 0) - { - FlagSet(1); - } -} - -void sub_80BDC14(void) -{ - gSaveBlock1.gabbyAndTyData.valB_0 = gSaveBlock1.gabbyAndTyData.valA_0; - gSaveBlock1.gabbyAndTyData.valB_1 = gSaveBlock1.gabbyAndTyData.valA_1; - gSaveBlock1.gabbyAndTyData.valB_2 = gSaveBlock1.gabbyAndTyData.valA_2; - gSaveBlock1.gabbyAndTyData.valB_3 = gSaveBlock1.gabbyAndTyData.valA_3; - gSaveBlock1.gabbyAndTyData.valA_4 = 1; - gSaveBlock1.gabbyAndTyData.mapnum = gMapHeader.name; - IncrementGameStat(GAME_STAT_GOT_INTERVIEWED); -} - -void TakeTVShowInSearchOfTrainersOffTheAir(void) -{ - gSaveBlock1.gabbyAndTyData.valA_4 = 0; -} - -u8 GabbyAndTyGetBattleNum(void) -{ - if (gSaveBlock1.gabbyAndTyData.battleNum >= 6) - { - return (gSaveBlock1.gabbyAndTyData.battleNum % 3) + 6; - } - return gSaveBlock1.gabbyAndTyData.battleNum; -} - -bool8 IsTVShowInSearchOfTrainersAiring(void) -{ - return gSaveBlock1.gabbyAndTyData.valA_4; -} - -bool8 GabbyAndTyGetLastQuote(void) -{ - if (gSaveBlock1.gabbyAndTyData.quote == 0xffff) - { - return FALSE; - } - sub_80EB3FC(gStringVar1, gSaveBlock1.gabbyAndTyData.quote); - gSaveBlock1.gabbyAndTyData.quote |= 0xffff; - return TRUE; -} - -u8 sub_80BDD18(void) -{ - if (!gSaveBlock1.gabbyAndTyData.valB_0) - { - return 1; - } - if (gSaveBlock1.gabbyAndTyData.valB_3) - { - return 2; - } - if (gSaveBlock1.gabbyAndTyData.valB_2) - { - return 3; - } - if (gSaveBlock1.gabbyAndTyData.valB_1) - { - return 4; - } - return 0; -} - -void GabbyAndTySetScriptVarsToFieldObjectLocalIds(void) { - switch (GabbyAndTyGetBattleNum()) { - case 1: - gSpecialVar_0x8004 = 0xE; - gSpecialVar_0x8005 = 0xD; - break; - case 2: - gSpecialVar_0x8004 = 0x5; - gSpecialVar_0x8005 = 0x6; - break; - case 3: - gSpecialVar_0x8004 = 0x12; - gSpecialVar_0x8005 = 0x11; - break; - case 4: - gSpecialVar_0x8004 = 0x15; - gSpecialVar_0x8005 = 0x16; - break; - case 5: - gSpecialVar_0x8004 = 0x8; - gSpecialVar_0x8005 = 0x9; - break; - case 6: - gSpecialVar_0x8004 = 0x13; - gSpecialVar_0x8005 = 0x14; - break; - case 7: - gSpecialVar_0x8004 = 0x17; - gSpecialVar_0x8005 = 0x18; - break; - case 8: - gSpecialVar_0x8004 = 0xA; - gSpecialVar_0x8005 = 0xB; - break; - } -} - -void sub_80BDE48(void) { - switch (gSpecialVar_0x8005) { - case TVSHOW_FAN_CLUB_LETTER: - sub_80BE5FC(); - break; - case TVSHOW_RECENT_HAPPENINGS: - sub_80BE65C(); - break; - case TVSHOW_PKMN_FAN_CLUB_OPINIONS: - sub_80BE6A0(); - break; - case TVSHOW_UNKN_SHOWTYPE_04: - nullsub_21(); - break; - case TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE: - sub_80BE188(); - break; - case TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE: - sub_80BE320(); - break; - } -} - -u8 sub_80BDEAC(u8 *a0) { - u8 lang; - lang = GAME_LANGUAGE; - if (a0[0] == 0xFC && a0[1] == 0x15) { - lang = LANGUAGE_JAPANESE; - } - return lang; -} - -void sub_80BDEC8(void) { - TVShow *show; - u8 i; - u16 total; - u16 item; - total = 0; - sub_80BEB20(); - sub_80BE778(); - if (gBattleResults.CaughtPoke == 0) { - sub_80BE074(); - } else { - sub_80BE028(); - if (sub_80BF77C(0xffff) == 0 && StringCompareWithoutExtCtrlCodes(gSpeciesNames[gBattleResults.CaughtPoke], gBattleResults.CaughtNick) != 0) { - gUnknown_03005D38.var0 = sub_80BF74C(gSaveBlock1.tvShows); - if (gUnknown_03005D38.var0 != -1 && sub_80BF1B4(TVSHOW_POKEMON_TODAY_CAUGHT) != 1) { - for (i=0; i<11; i++) { - total += gBattleResults.unk36[i]; - } - if (total != 0 || gBattleResults.unk5_1 != 0) { - total = FALSE; - show = &gSaveBlock1.tvShows[gUnknown_03005D38.var0]; - show->pokemonToday.var00 = TVSHOW_POKEMON_TODAY_CAUGHT; - show->pokemonToday.var01 = total; - if (gBattleResults.unk5_1 != 0) { - total = 1; - item = ITEM_MASTER_BALL; - } else { - for (i=0; i<11; i++) { - total += gBattleResults.unk36[i]; - } - if (total > 0xff) { - total = 0xff; - } - item = gLastUsedItem; - } - show->pokemonToday.var12 = total; - show->pokemonToday.ball = item; - StringCopy(show->pokemonToday.playerName, gSaveBlock2.playerName); - StringCopy(show->pokemonToday.nickname, gBattleResults.CaughtNick); - show->pokemonToday.species = gBattleResults.CaughtPoke; - sub_80BE138(show); - show->pokemonToday.language = GAME_LANGUAGE; - show->pokemonToday.language2 = sub_80BDEAC(show->pokemonToday.nickname); - StripExtCtrlCodes(show->pokemonToday.nickname); - } - } - } - } -} - -void sub_80BE028(void) { - TVShow *buffer; - buffer = &gSaveBlock1.tvShows[24]; - if (buffer->worldOfMasters.var00 != TVSHOW_WORLD_OF_MASTERS) { - sub_80BF55C(gSaveBlock1.tvShows, 24); - buffer->worldOfMasters.var06 = GetGameStat(GAME_STAT_STEPS); - buffer->worldOfMasters.var00 = TVSHOW_WORLD_OF_MASTERS; - } - buffer->worldOfMasters.var02++; - buffer->worldOfMasters.var04 = gBattleResults.CaughtPoke; - buffer->worldOfMasters.var08 = gBattleResults.Poke1Species; - buffer->worldOfMasters.var0a = gMapHeader.name; -} - -#ifdef NONMATCHING -void sub_80BE074(void) { - u8 i; - u16 total; - u8 flag; - TVShow *show; - if (sub_80BF77C(0xffff) == 0) { - for (i=0, total=0; i 0xff) { - total = 0xff; - } - if (total > 2 && gBattleOutcome == 1) { - gUnknown_03005D38.var0 = sub_80BF74C(gSaveBlock1.tvShows); - if (gUnknown_03005D38.var0 != -1 && sub_80BF1B4(TVSHOW_POKEMON_TODAY_FAILED) != 1) { - flag = FALSE; - show = &gSaveBlock1.tvShows[gUnknown_03005D38.var0]; - asm_comment("Here the wrong registers are used to hold the show ID and flag."); - show->pokemonTodayFailed.var00 = TVSHOW_POKEMON_TODAY_FAILED; - show->pokemonTodayFailed.var01 = flag; - show->pokemonTodayFailed.species = gBattleResults.Poke1Species; - show->pokemonTodayFailed.species2 = gBattleResults.unk20; - show->pokemonTodayFailed.var10 = total; - show->pokemonTodayFailed.var11 = gBattleOutcome; - show->pokemonTodayFailed.var12 = gMapHeader.name; - StringCopy(show->pokemonTodayFailed.playerName, gSaveBlock2.playerName); - sub_80BE138(show); - show->pokemonTodayFailed.language = GAME_LANGUAGE; - } - } - } -} -#else -__attribute__((naked)) -void sub_80BE074(void) { - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - ldr r0, _080BE118 @ =0x0000ffff\n\ - bl sub_80BF77C\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - bne _080BE112\n\ - movs r1, 0\n\ - movs r5, 0\n\ - ldr r2, _080BE11C @ =gUnknown_03004316\n\ -_080BE088:\n\ - adds r0, r1, r2\n\ - ldrb r0, [r0]\n\ - adds r0, r5, r0\n\ - lsls r0, 16\n\ - lsrs r5, r0, 16\n\ - adds r0, r1, 0x1\n\ - lsls r0, 24\n\ - lsrs r1, r0, 24\n\ - cmp r1, 0xA\n\ - bls _080BE088\n\ - cmp r5, 0xFF\n\ - bls _080BE0A2\n\ - movs r5, 0xFF\n\ -_080BE0A2:\n\ - cmp r5, 0x2\n\ - bls _080BE112\n\ - ldr r7, _080BE120 @ =gBattleOutcome\n\ - ldrb r0, [r7]\n\ - cmp r0, 0x1\n\ - bne _080BE112\n\ - ldr r6, _080BE124 @ =gSaveBlock1 + 0x2738\n\ - adds r0, r6, 0\n\ - bl sub_80BF74C\n\ - ldr r4, _080BE128 @ =gUnknown_03005D38\n\ - strb r0, [r4]\n\ - lsls r0, 24\n\ - asrs r0, 24\n\ - movs r1, 0x1\n\ - negs r1, r1\n\ - cmp r0, r1\n\ - beq _080BE112\n\ - movs r0, 0x17\n\ - bl sub_80BF1B4\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - cmp r0, 0x1\n\ - beq _080BE112\n\ - movs r0, 0\n\ - ldrsb r0, [r4, r0]\n\ - lsls r4, r0, 3\n\ - adds r4, r0\n\ - lsls r4, 2\n\ - adds r4, r6\n\ - @ -- Here the compiler puts the status flag in the wrong register. --\n\ - movs r1, 0\n\ - movs r0, 0x17\n\ - strb r0, [r4]\n\ - strb r1, [r4, 0x1]\n\ - ldr r1, _080BE12C @ =gBattleResults\n\ - ldrh r0, [r1, 0x6]\n\ - strh r0, [r4, 0xC]\n\ - ldrh r0, [r1, 0x20]\n\ - strh r0, [r4, 0xE]\n\ - strb r5, [r4, 0x10]\n\ - ldrb r0, [r7]\n\ - strb r0, [r4, 0x11]\n\ - ldr r0, _080BE130 @ =gMapHeader\n\ - ldrb r0, [r0, 0x14]\n\ - strb r0, [r4, 0x12]\n\ - adds r0, r4, 0\n\ - adds r0, 0x13\n\ - ldr r1, _080BE134 @ =gSaveBlock2\n\ - bl StringCopy\n\ - adds r0, r4, 0\n\ - bl sub_80BE138\n"); -#if ENGLISH - asm("movs r0, 2 @ GAME_LANGUAGE\n"); -#elif GERMAN - asm("movs r0, 5 @ GAME_LANGUAGE\n"); -#endif - asm("strb r0, [r4, 0x2]\n\ -_080BE112:\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_080BE118: .4byte 0x0000ffff\n\ -_080BE11C: .4byte gUnknown_03004316\n\ -_080BE120: .4byte gBattleOutcome\n\ -_080BE124: .4byte gSaveBlock1 + 0x2738\n\ -_080BE128: .4byte gUnknown_03005D38\n\ -_080BE12C: .4byte gBattleResults\n\ -_080BE130: .4byte gMapHeader\n\ -_080BE134: .4byte gSaveBlock2\n\ -.syntax divided\n"); -} -#endif - -void sub_80BE138(TVShow *show) { - u32 playerId; - playerId = GetPlayerTrainerId(); - show->common.srcTrainerId2Lo = playerId & 0xFF; - show->common.srcTrainerId2Hi = playerId >> 8; - show->common.srcTrainerIdLo = playerId & 0xFF; - show->common.srcTrainerIdHi = playerId >> 8; - show->common.trainerIdLo = playerId & 0xFF; - show->common.trainerIdHi = playerId >> 8; -} - -void sub_80BE160(TVShow *show) { - u32 playerId; - playerId = GetPlayerTrainerId(); - show->common.srcTrainerIdLo = playerId & 0xFF; - show->common.srcTrainerIdHi = playerId >> 8; - show->common.trainerIdLo = playerId & 0xFF; - show->common.trainerIdHi = playerId >> 8; -} - -void sub_80BE188(void) { - TVShow *show; - TVShow *buffer; - buffer = &gSaveBlock1.tvShows[24]; - if (buffer->bravoTrainer.var00 == TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE) { - show = &gSaveBlock1.tvShows[gUnknown_03005D38.var0]; - show->bravoTrainer.var00 = TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE; - show->bravoTrainer.var01 = 1; - show->bravoTrainer.species = buffer->bravoTrainer.species; - StringCopy(show->bravoTrainer.playerName, gSaveBlock2.playerName); - StringCopy(show->bravoTrainer.pokemonNickname, buffer->bravoTrainer.pokemonNickname); - show->bravoTrainer.contestCategory = buffer->bravoTrainer.contestCategory; - show->bravoTrainer.contestRank = buffer->bravoTrainer.contestRank; - show->bravoTrainer.var14 = buffer->bravoTrainer.var14; - show->bravoTrainer.contestResult = buffer->bravoTrainer.contestResult; - show->bravoTrainer.contestCategory = buffer->bravoTrainer.contestCategory; - sub_80BE160(show); - show->bravoTrainer.language = GAME_LANGUAGE; - show->bravoTrainer.var1f = sub_80BDEAC(show->bravoTrainer.pokemonNickname); - StripExtCtrlCodes(show->bravoTrainer.pokemonNickname); - } -} - -void sub_80BE23C(u16 a0) { - TVShow *show; - show = &gSaveBlock1.tvShows[24]; - sub_80BF484(); - gUnknown_03005D38.var0 = sub_80BF720(gSaveBlock1.tvShows); - if (gUnknown_03005D38.var0 != -1) { - sub_80BF55C(gSaveBlock1.tvShows, 24); - show->bravoTrainer.var14 = a0; - show->bravoTrainer.var00 = TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE; - } -} - -void sub_80BE284(u8 a0) { - TVShow *show; - show = &gSaveBlock1.tvShows[24]; - gUnknown_03005D38.var0 = sub_80BF720(gSaveBlock1.tvShows); - if (gUnknown_03005D38.var0 != -1) { - show->bravoTrainer.contestResult = a0; - show->bravoTrainer.contestCategory = gScriptContestCategory; - show->bravoTrainer.contestRank = gScriptContestRank; - show->bravoTrainer.species = GetMonData(&gPlayerParty[gUnknown_02038694], MON_DATA_SPECIES, NULL); - GetMonData(&gPlayerParty[gUnknown_02038694], MON_DATA_NICKNAME, show->bravoTrainer.pokemonNickname); - } -} - -void sub_80BE320(void) { - TVShow *show; - show = &gSaveBlock1.tvShows[gUnknown_03005D38.var0]; - show->bravoTrainerTower.var00 = TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE; - show->bravoTrainerTower.var01 = 1; - StringCopy(show->bravoTrainerTower.trainerName, gSaveBlock2.playerName); - StringCopy(show->bravoTrainerTower.pokemonName, gSaveBlock2.filler_A8.filler_3DC); - show->bravoTrainerTower.species = gSaveBlock2.filler_A8.var_480; - show->bravoTrainerTower.defeatedSpecies = gSaveBlock2.filler_A8.var_482; - show->bravoTrainerTower.var16 = sub_8135D3C(gSaveBlock2.filler_A8.var_4D0); - show->bravoTrainerTower.var1c = gSaveBlock2.filler_A8.var_4AD; - if (gSaveBlock2.filler_A8.var_4D0 == 0) { - show->bravoTrainerTower.btLevel = 50; - } else { - show->bravoTrainerTower.btLevel = 100; - } - show->bravoTrainerTower.var1b = gSpecialVar_0x8004; - sub_80BE160(show); - show->bravoTrainerTower.language = GAME_LANGUAGE; -} - -void sub_80BE3BC(void) { - u8 rval; - TVShow *tvShow; - u8 i; - - rval = sub_80BF77C(0x5555); - if (rval == 0) { - gUnknown_03005D38.var0 = sub_80BF74C(gSaveBlock1.tvShows); - if (gUnknown_03005D38.var0 != -1 && sub_80BF1B4(TVSHOW_SMART_SHOPPER) != 1) { - sub_80BF20C(); - if (gUnknown_02038724[0].item_amount >= 20) { - tvShow = &gSaveBlock1.tvShows[gUnknown_03005D38.var0]; - tvShow->smartshopperShow.var00 = TVSHOW_SMART_SHOPPER; - tvShow->smartshopperShow.var01 = rval; - tvShow->smartshopperShow.shopLocation = gMapHeader.name; - for (i=0; i<3; i++) { - tvShow->smartshopperShow.itemIds[i] = gUnknown_02038724[i].item_id; - tvShow->smartshopperShow.itemAmounts[i] = gUnknown_02038724[i].item_amount; - } - tvShow->smartshopperShow.priceReduced = GetPriceReduction(1); - StringCopy(tvShow->smartshopperShow.playerName, gSaveBlock2.playerName); - sub_80BE138(tvShow); - tvShow->smartshopperShow.language = GAME_LANGUAGE; - } - } - } -} - -void sub_80BE478(void) -{ - u16 playerNameLength; - u16 pokemonNicknameLength; - TVShow *tvShow; - - sub_80BF478(); - - if (gScriptResult == 1) - { - return; - } - - GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_NICKNAME, gStringVar1); - - playerNameLength = StringLength(gSaveBlock2.playerName); - if (playerNameLength <= 1) - { - return; - } - - pokemonNicknameLength = StringLength(gStringVar1); - if (pokemonNicknameLength <= 1) - { - return; - } - - tvShow = &gSaveBlock1.tvShows[gUnknown_03005D38.var0]; - - tvShow->nameRaterShow.var00 = TVSHOW_NAME_RATER_SHOW; - tvShow->nameRaterShow.var01 = 1; - - tvShow->nameRaterShow.species = GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_SPECIES, NULL); - tvShow->nameRaterShow.random = Random() % 3; - tvShow->nameRaterShow.random2 = Random() % 2; - - tvShow->nameRaterShow.var1C = sub_80BF674(tvShow->nameRaterShow.species); - - StringCopy(tvShow->nameRaterShow.trainerName, gSaveBlock2.playerName); - - GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_NICKNAME, tvShow->nameRaterShow.pokemonName); - - sub_80BE160(tvShow); - - tvShow->nameRaterShow.language = GAME_LANGUAGE; - tvShow->nameRaterShow.pokemonNameLanguage = sub_80BDEAC(tvShow->nameRaterShow.pokemonName); - - StripExtCtrlCodes(tvShow->nameRaterShow.pokemonName); -} - -void StartMassOutbreak(void) -{ - TVShow *tvShow; - - tvShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004]; - - gSaveBlock1.outbreakPokemonSpecies = tvShow->massOutbreak.species; - gSaveBlock1.outbreakLocationMapNum = tvShow->massOutbreak.locationMapNum; - gSaveBlock1.outbreakLocationMapGroup = tvShow->massOutbreak.locationMapGroup; - gSaveBlock1.outbreakPokemonLevel = tvShow->massOutbreak.level; - gSaveBlock1.outbreakUnk1 = tvShow->massOutbreak.var02; - gSaveBlock1.outbreakUnk2 = tvShow->massOutbreak.var0E; - gSaveBlock1.outbreakPokemonMoves[0] = tvShow->massOutbreak.moves[0]; - gSaveBlock1.outbreakPokemonMoves[1] = tvShow->massOutbreak.moves[1]; - gSaveBlock1.outbreakPokemonMoves[2] = tvShow->massOutbreak.moves[2]; - gSaveBlock1.outbreakPokemonMoves[3] = tvShow->massOutbreak.moves[3]; - gSaveBlock1.outbreakUnk4 = tvShow->massOutbreak.var03; - gSaveBlock1.outbreakPokemonProbability = tvShow->massOutbreak.probability; - gSaveBlock1.outbreakUnk5 = 2; -} - -void sub_80BE5FC(void) -{ - TVShow *tvShow; - u16 species; - - tvShow = &gSaveBlock1.tvShows[gUnknown_03005D38.var0]; - - tvShow->fanclubLetter.var00 = TVSHOW_FAN_CLUB_LETTER; - tvShow->fanclubLetter.var01 = 1; - StringCopy(tvShow->fanclubLetter.playerName, gSaveBlock2.playerName); - - species = GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_SPECIES, NULL); - tvShow->fanclubLetter.species = species; - sub_80BE160(tvShow); - tvShow->fanclubLetter.language = GAME_LANGUAGE; -} - -void sub_80BE65C(void) -{ - TVShow *tvShow; - - tvShow = &gSaveBlock1.tvShows[gUnknown_03005D38.var0]; - - tvShow->recentHappenings.var00 = TVSHOW_RECENT_HAPPENINGS; - tvShow->recentHappenings.var01 = 1; - StringCopy(tvShow->recentHappenings.playerName, gSaveBlock2.playerName); - tvShow->recentHappenings.var02 = 0; - - sub_80BE160(tvShow); - tvShow->recentHappenings.language = GAME_LANGUAGE; -} - -void sub_80BE6A0(void) -{ - TVShow *tvShow; - u8 monIndex; - - tvShow = &gSaveBlock1.tvShows[gUnknown_03005D38.var0]; - - tvShow->fanclubOpinions.var00 = TVSHOW_PKMN_FAN_CLUB_OPINIONS; - tvShow->fanclubOpinions.var01 = 1; - - monIndex = GetLeadMonIndex(); - - tvShow->fanclubOpinions.var04A = GetMonData(&gPlayerParty[monIndex], MON_DATA_FRIENDSHIP, NULL) / 16; - tvShow->fanclubOpinions.var04B = gSpecialVar_0x8007; - - - StringCopy(tvShow->fanclubOpinions.playerName, gSaveBlock2.playerName); - - GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_NICKNAME, tvShow->fanclubOpinions.var10); - - tvShow->fanclubOpinions.var02 = GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_SPECIES, NULL); - sub_80BE160(tvShow); - tvShow->fanclubOpinions.language = GAME_LANGUAGE; - tvShow->fanclubOpinions.var0E = sub_80BDEAC(tvShow->fanclubOpinions.var10); - StripExtCtrlCodes(tvShow->fanclubOpinions.var10); -} - -void nullsub_21(void) -{ -} - -void sub_80BE778(void) -{ - u8 i; - - if (!FlagGet(SYS_GAME_CLEAR)) - { - return; - } - - - for (i = 0; i < 24; i++) - { - if (gSaveBlock1.tvShows[i].massOutbreak.var00 == TVSHOW_MASS_OUTBREAK) - { - return; - } - } - - if (sub_80BF77C(0x147)) - { - return; - } - - gUnknown_03005D38.var0 = sub_80BF720(gSaveBlock1.tvShows); - if (gUnknown_03005D38.var0 == -1) - { - return; - } - { - u16 rand; - u16 val; - s32 val2; - TVShow *tvShow; - - rand = Random(); - val = rand % 5; - - val2 = gUnknown_03005D38.var0; - - tvShow = &gSaveBlock1.tvShows[val2]; - - tvShow->massOutbreak.var00 = TVSHOW_MASS_OUTBREAK; - tvShow->massOutbreak.var01 = 1; - - tvShow->massOutbreak.level = gPokeOutbreakSpeciesList[val].level; - tvShow->massOutbreak.var02 = 0; - tvShow->massOutbreak.var03 = 0; - tvShow->massOutbreak.species = gPokeOutbreakSpeciesList[val].species; - tvShow->massOutbreak.var0E = 0; - tvShow->massOutbreak.moves[0] = gPokeOutbreakSpeciesList[val].moves[0]; - tvShow->massOutbreak.moves[1] = gPokeOutbreakSpeciesList[val].moves[1]; - tvShow->massOutbreak.moves[2] = gPokeOutbreakSpeciesList[val].moves[2]; - tvShow->massOutbreak.moves[3] = gPokeOutbreakSpeciesList[val].moves[3]; - tvShow->massOutbreak.locationMapNum = gPokeOutbreakSpeciesList[val].location; - tvShow->massOutbreak.locationMapGroup = 0; - tvShow->massOutbreak.var12 = 0; - tvShow->massOutbreak.probability = 0x32; - tvShow->massOutbreak.var15 = 0; - tvShow->massOutbreak.var16 = 0x01; - sub_80BE160(tvShow); - - tvShow->massOutbreak.language = GAME_LANGUAGE; - } -} - -void EndMassOutbreak(void) -{ - gSaveBlock1.outbreakPokemonSpecies = 0; - gSaveBlock1.outbreakLocationMapNum = 0; - gSaveBlock1.outbreakLocationMapGroup = 0; - gSaveBlock1.outbreakPokemonLevel = 0; - gSaveBlock1.outbreakUnk1 = 0; - gSaveBlock1.outbreakUnk2 = 0; - gSaveBlock1.outbreakPokemonMoves[0] = 0; - gSaveBlock1.outbreakPokemonMoves[1] = 0; - gSaveBlock1.outbreakPokemonMoves[2] = 0; - gSaveBlock1.outbreakPokemonMoves[3] = 0; - gSaveBlock1.outbreakUnk4 = 0; - gSaveBlock1.outbreakPokemonProbability = 0; - gSaveBlock1.outbreakUnk5 = 0; -} - -void UpdateTVShowsPerDay(u16 arg0) -{ - sub_80BE8EC(arg0); - UpdateMassOutbreakTimeLeft(arg0); - sub_80BEE84(arg0); - sub_80BEA5C(arg0); -} - -void sub_80BE8EC(u16 arg0) -{ - u8 showidx; - TVShow *tvShow; - if (gSaveBlock1.outbreakPokemonSpecies == 0) { - for (showidx=0; showidx<24; showidx++) { - if (gSaveBlock1.tvShows[showidx].massOutbreak.var00 == TVSHOW_MASS_OUTBREAK && gSaveBlock1.tvShows[showidx].massOutbreak.var01 == 0x01) { - tvShow = &(gSaveBlock1.tvShows[showidx]); - if (tvShow->massOutbreak.var16 < arg0) - tvShow->massOutbreak.var16 = 0; - else - tvShow->massOutbreak.var16 -= arg0; - break; - } - } - } -} - -void UpdateMassOutbreakTimeLeft(u16 arg0) -{ - if (gSaveBlock1.outbreakUnk5 <= arg0) - EndMassOutbreak(); - else - gSaveBlock1.outbreakUnk5 -= arg0; -} - -void sub_80BE97C(bool8 flag) -{ - u8 var0, var1; - if (flag != 0) { - var0 = gUnknown_020387E2 >> 8; - if (var0 > 4) - sub_80BE9D4(); - gUnknown_020387E2 &= 0xFF; - var1 = gUnknown_020387E2 & 0xFF; - if (var1 != 0xFF) - gUnknown_020387E2++; - } else { - var0 = gUnknown_020387E2 & 0xFF; - if (var0 > 4) - sub_80BE9D4(); - gUnknown_020387E2 &= 0xFF00; - var1 = gUnknown_020387E2 >> 8; - if (var1 != 0xFF) - gUnknown_020387E2 += 0x100; - } -} - -void sub_80BE9D4() -{ - TVShow *show; - gUnknown_03005D38.var0 = sub_80BF74C(gSaveBlock1.tvShows); - if (gUnknown_03005D38.var0 != -1 && sub_80BF1B4(TVSHOW_FISHING_ADVICE) != 1) { - show = &(gSaveBlock1.tvShows[gUnknown_03005D38.var0]); -#ifdef NONMATCHING - show->pokemonAngler.var00 = TVSHOW_FISHING_ADVICE; - show->pokemonAngler.var01 = 0; -#else - asm(".syntax unified\n\ - movs r1, 0\n\ - movs r0, 24\n\ - strb r0, [r4]\n\ - strb r1, [r4, 1]\n\ - .syntax divided\n"); -#endif - show->pokemonAngler.var02 = gUnknown_020387E2 & 0xFF; - show->pokemonAngler.var03 = gUnknown_020387E2 >> 8; - show->pokemonAngler.var04 = gUnknown_020387E0; - StringCopy(show->pokemonAngler.playerName, gSaveBlock2.playerName); - sub_80BE138(show); - show->pokemonAngler.language = GAME_LANGUAGE; - } -} - -void sub_80BEA50(u16 var) -{ - gUnknown_020387E0 = var; -} - -void sub_80BEA88(void); - -void sub_80BEA5C(u16 arg0) -{ - TVShow *unk_2a98; - unk_2a98 = &gSaveBlock1.tvShows[24]; - if (unk_2a98->common.var00 == TVSHOW_WORLD_OF_MASTERS) - { - if (unk_2a98->worldOfMasters.var02 < 20) - { - sub_80BF55C(gSaveBlock1.tvShows, 0x18); - } - else - { - sub_80BEA88(); - } - } -} -void sub_80BEA88(void) -{ - TVShow *unk_2a98; - TVShow *tvShow; - u8 rval; - unk_2a98 = &gSaveBlock1.tvShows[24]; - rval = sub_80BF77C(0xFFFF); - if (rval == 0) - { - gUnknown_03005D38.var0 = sub_80BF74C(gSaveBlock1.tvShows); - if (gUnknown_03005D38.var0 != -1 && sub_80BF1B4(TVSHOW_WORLD_OF_MASTERS) != 1) - { - tvShow = &gSaveBlock1.tvShows[gUnknown_03005D38.var0]; - tvShow->worldOfMasters.var00 = TVSHOW_WORLD_OF_MASTERS; - tvShow->worldOfMasters.var01 = rval; - tvShow->worldOfMasters.var02 = unk_2a98->worldOfMasters.var02; - tvShow->worldOfMasters.var06 = GetGameStat(GAME_STAT_STEPS) - unk_2a98->worldOfMasters.var06; - tvShow->worldOfMasters.var04 = unk_2a98->worldOfMasters.var04; - tvShow->worldOfMasters.var08 = unk_2a98->worldOfMasters.var08; - tvShow->worldOfMasters.var0a = unk_2a98->worldOfMasters.var0a; - StringCopy(tvShow->worldOfMasters.playerName, gSaveBlock2.playerName); - sub_80BE138(tvShow); - tvShow->worldOfMasters.language = GAME_LANGUAGE; - } - } -} - -void sub_80BEB20(void) { - u16 rval; - struct SaveBlock1 *save; - struct UnknownSaveStruct2ABC *unk2abc; - if (FlagGet(SYS_GAME_CLEAR) != 0) { - unk2abc = gSaveBlock1.unknown_2ABC; - gUnknown_03005D38.var0 = sub_80BEBC8(unk2abc); - if (gUnknown_03005D38.var0 != -1 && sub_80BF77C(0x28f) != 1) { - rval = (Random() % 3) + 1; - if (sub_80BEE48(rval) != 1) { - save = &gSaveBlock1; - save->unknown_2ABC[gUnknown_03005D38.var0].val0 = rval; - save->unknown_2ABC[gUnknown_03005D38.var0].val2 = 4; - save->unknown_2ABC[gUnknown_03005D38.var0].val1 = 1; - } - } - } -} - -int sub_80BEBC8(struct UnknownSaveStruct2ABC *arg0) { - s8 i; - for (i=0; i<16; i++) { - if (arg0[i].val0 == 0) { - return i; - } - } - return -1; -} - -void sub_80BEBF4(void) { - u8 i; - for (i=0; i<16; i++) { - sub_80BEC10(i); - } -} - -void sub_80BEC10(u8 arg0) { - gSaveBlock1.unknown_2ABC[arg0].val0 = 0; - gSaveBlock1.unknown_2ABC[arg0].val1 = 0; - gSaveBlock1.unknown_2ABC[arg0].val2 = 0; -} - -void sub_80BEC40(void) { - u8 i, j; - for (i = 0; i < 15; i++) { - if (gSaveBlock1.unknown_2ABC[i].val0 == 0) { - for (j = i + 1; j < 16; j++) { - if (gSaveBlock1.unknown_2ABC[j].val0 != 0) { - gSaveBlock1.unknown_2ABC[i] = gSaveBlock1.unknown_2ABC[j]; - sub_80BEC10(j); - break; - } - } - } - } -} - -u8 sub_80BECA0(void) -{ - u8 i; - for (i=0; i<16; i++) - { - if (gSaveBlock1.unknown_2ABC[i].val0 != 0 && gSaveBlock1.unknown_2ABC[i].val1 == 1 && gSaveBlock1.unknown_2ABC[i].val2 < 3) - { - return i; - } - } - return 0xFF; -} - -void sub_80BECE8(void) -{ - u8 arg0; - arg0 = sub_80BECA0(); - if (arg0 == 0xff) - { - gScriptResult = 0; - return; - } - if (gSaveBlock1.unknown_2ABC[arg0].val2 == 0) - { - gSaveBlock1.unknown_2ABC[arg0].val1 = 2; - if (gLocalTime.hours < 20) - { - ShowFieldMessage(gTVNewsTextGroup2[gSaveBlock1.unknown_2ABC[arg0].val0]); - } - else - { - ShowFieldMessage(gTVNewsTextGroup3[gSaveBlock1.unknown_2ABC[arg0].val0]); - } - } - else - { - u16 value = gSaveBlock1.unknown_2ABC[arg0].val2; - ConvertIntToDecimalStringN(gStringVar1, value, 0, 1); - gSaveBlock1.unknown_2ABC[arg0].val1 = 0; - ShowFieldMessage(gTVNewsTextGroup1[gSaveBlock1.unknown_2ABC[arg0].val0]); - } - gScriptResult = 1; -} - -bool8 GetPriceReduction(u8 arg0) -{ - u8 i; - if (arg0 == 0) - { - return FALSE; - } - for (i=0; i<16; i++) - { - if (gSaveBlock1.unknown_2ABC[i].val0 == arg0) - { - if (gSaveBlock1.unknown_2ABC[i].val1 == 2 && IsPriceDiscounted(arg0) != 0) - { - return TRUE; - } - else - { - return FALSE; - } - } - } - return FALSE; -} - -bool8 IsPriceDiscounted(u8 arg0) -{ - switch (arg0) - { - case 1: - if (gSaveBlock1.location.mapGroup == MAP_GROUP_SLATEPORT_CITY && gSaveBlock1.location.mapNum == MAP_ID_SLATEPORT_CITY && gScriptLastTalked == 0x1a) - { - return TRUE; - } - else - { - return FALSE; - } - break; - case 3: - if (gSaveBlock1.location.mapGroup == MAP_GROUP_LILYCOVE_CITY_DEPARTMENT_STORE_ROOFTOP && gSaveBlock1.location.mapNum == MAP_ID_LILYCOVE_CITY_DEPARTMENT_STORE_ROOFTOP) - { - return TRUE; - } - else - { - return FALSE; - } - break; - default: - return TRUE; - } -} - -bool8 sub_80BEE48(u8 arg0) -{ - u8 i; - if (arg0 == 0) - { - return TRUE; - } - else - { - for (i=0; i<16; i++) - { - if (gSaveBlock1.unknown_2ABC[i].val0 == arg0) - { - return TRUE; - } - } - } - return FALSE; -} - -void sub_80BEE84(u16 var0) -{ - u8 i; - for (i=0; i<16; i++) - { - if (gSaveBlock1.unknown_2ABC[i].val0) - { - if (gSaveBlock1.unknown_2ABC[i].val2 < var0) - { - sub_80BEC10(i); - } - else - { - if (!gSaveBlock1.unknown_2ABC[i].val1 && FlagGet(SYS_GAME_CLEAR) == 1) - { - gSaveBlock1.unknown_2ABC[i].val1 = 1; - } - gSaveBlock1.unknown_2ABC[i].val2 -= var0; - } - } - } - sub_80BEC40(); -} - -void sub_80BEF10(u8 strvaridx, u8 rank) -{ - switch (rank) - { - case NORMAL_RANK: - StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[NORMAL_RANK + 5].text); - break; - case SUPER_RANK: - StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[SUPER_RANK + 5].text); - break; - case HYPER_RANK: - StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[HYPER_RANK + 5].text); - break; - case MASTER_RANK: - StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[MASTER_RANK + 5].text); - break; - } -} - -void CopyContestCategoryToStringVar(u8 strvaridx, u8 category) -{ - switch (category) - { - case CONTEST_COOL: - StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[CONTEST_COOL].text); - break; - case CONTEST_BEAUTY: - StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[CONTEST_BEAUTY].text); - break; - case CONTEST_CUTE: - StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[CONTEST_CUTE].text); - break; - case CONTEST_SMART: - StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[CONTEST_SMART].text); - break; - case CONTEST_TOUGH: - StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[CONTEST_TOUGH].text); - break; - } -} - -void SetContestCategoryStringVarForInterview(void) -{ - TVShow *tvShow; - tvShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004]; - CopyContestCategoryToStringVar(1, tvShow->bravoTrainer.contestCategory); -} - -void sub_80BF088(u8 arg0, s32 price) -{ - size_t log10val; - log10val = sub_80BF0B8(price); - ConvertIntToDecimalStringN(gUnknown_083D1464[arg0], price, 0, log10val); -} - -size_t sub_80BF0B8(int value) -{ - if (value / 10 == 0) - return 1; - else if (value / 100 == 0) - return 2; - else if (value / 1000 == 0) - return 3; - else if (value / 10000 == 0) - return 4; - else if (value / 100000 == 0) - return 5; - else if (value / 1000000 == 0) - return 6; - else if (value / 10000000 == 0) - return 7; - else if (value / 100000000 == 0) - return 8; - else - return 1; -} - -void sub_80BF154(u8 arg0, struct TVShowSmartShopper *arg1) -{ - u8 i; - s32 price; - price = 0; - for (i=0; i<3; i++) - { - if (arg1->itemIds[i]) - { - price += ItemId_GetPrice(arg1->itemIds[i]) * arg1->itemAmounts[i]; - } - } - if (arg1->priceReduced == 1) - { - sub_80BF088(arg0, price >> 1); - } - else - { - sub_80BF088(arg0, price); - } -} - -bool8 sub_80BF1B4(u8 showIdx) -{ - TVShow *tvShows; - u8 i; - u32 trainerId; - tvShows = gSaveBlock1.tvShows; - trainerId = GetPlayerTrainerId(); - for (i=5; i<24; i++) - { - if (tvShows[i].common.var00 == showIdx) - { - if ((trainerId & 0xFF) == tvShows[i].common.trainerIdLo && ((trainerId >> 8) & 0xFF) == tvShows[i].common.trainerIdHi) - { - return TRUE; - } - } - } - return FALSE; -} - -void sub_80BF20C(void) -{ - u8 i, j; - u16 tmpId, tmpAmount; - for (i=0; i<2; i++) - { - for (j=i+1; j<3; j++) - { - if (gUnknown_02038724[i].item_amount < gUnknown_02038724[j].item_amount) - { - tmpId = gUnknown_02038724[i].item_id; - tmpAmount = gUnknown_02038724[i].item_amount; - gUnknown_02038724[i].item_id = gUnknown_02038724[j].item_id; - gUnknown_02038724[i].item_amount = gUnknown_02038724[j].item_amount; - gUnknown_02038724[j].item_id = tmpId; - gUnknown_02038724[j].item_amount = tmpAmount; - } - } - } -} - -void sub_80BF25C(u8 showType) -{ - u8 i; - for (i=0; i<5; i++) - { - if (gSaveBlock1.tvShows[i].common.var00 == showType) { - if(gSaveBlock1.tvShows[i].common.var01 == 1) - { - gScriptResult = 1; - } - else - { - sub_80BF55C(gSaveBlock1.tvShows, i); - sub_80BF588(gSaveBlock1.tvShows); - sub_80BF6D8(); - } - return; - } - } - sub_80BF6D8(); -} - -void sub_80BF2C4(void) -{ - gScriptResult = 0; - switch (gSpecialVar_0x8005) { - case TVSHOW_FAN_CLUB_LETTER: - sub_80BF334(); - break; - case TVSHOW_RECENT_HAPPENINGS: - sub_80BF3A4(); - break; - case TVSHOW_PKMN_FAN_CLUB_OPINIONS: - sub_80BF3DC(); - break; - case TVSHOW_UNKN_SHOWTYPE_04: - sub_80BF46C(); - break; - case TVSHOW_NAME_RATER_SHOW: - sub_80BF478(); - break; - case TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE: - sub_80BF484(); - break; - case TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE: - sub_80BF4BC(); - break; - } -} - -void sub_80BF334(void) -{ - TVShow *show; - sub_80BF25C(TVSHOW_FAN_CLUB_LETTER); - if (gScriptResult == 0) { - StringCopy(gStringVar1, gSpeciesNames[GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_SPECIES, 0)]); - show = &gSaveBlock1.tvShows[gUnknown_03005D38.var0]; - sub_80EB6FC(show->fanclubLetter.pad04, 6); - } -} - -void sub_80BF3A4(void) -{ - TVShow *show; - sub_80BF25C(TVSHOW_RECENT_HAPPENINGS); - if (gScriptResult == 0) { - show = &gSaveBlock1.tvShows[gUnknown_03005D38.var0]; - sub_80EB6FC(show->recentHappenings.var04, 6); - } -} - -void sub_80BF3DC(void) -{ - TVShow *show; - sub_80BF25C(TVSHOW_PKMN_FAN_CLUB_OPINIONS); - if (gScriptResult == 0) { - StringCopy(gStringVar1, gSpeciesNames[GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_SPECIES, 0)]); - GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_NICKNAME, gStringVar2); - StringGetEnd10(gStringVar2); - show = &gSaveBlock1.tvShows[gUnknown_03005D38.var0]; - sub_80EB6FC(show->fanclubOpinions.var1C, 2); - } -} - -void sub_80BF46C(void) -{ - gScriptResult = 1; -} - -void sub_80BF478(void) -{ - sub_80BF25C(TVSHOW_NAME_RATER_SHOW); -} - -void sub_80BF484(void) -{ - TVShow *show; - sub_80BF25C(TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE); - if (gScriptResult == 0) { - show = &gSaveBlock1.tvShows[gUnknown_03005D38.var0]; - sub_80EB6FC(show->bravoTrainer.var04, 2); - } -} - -void sub_80BF4BC(void) -{ - TVShow *show; - sub_80BF25C(TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE); - if (gScriptResult == 0) { - show = &gSaveBlock1.tvShows[gUnknown_03005D38.var0]; - sub_80EB6FC(show->bravoTrainerTower.var18, 1); // wrong struct ident, fix later - } -} - -#if ENGLISH -u8 sub_80BF4F4(u8 arg0) -{ - u32 species; - - GetMonData(&gPlayerParty[arg0], MON_DATA_NICKNAME, &gStringVar1); - - species = GetMonData(&gPlayerParty[arg0], MON_DATA_SPECIES, NULL); - - if (StringCompareWithoutExtCtrlCodes(gSpeciesNames[species], gStringVar1) == FALSE) - { - return FALSE; - } - - return TRUE; -} -#elif GERMAN -u8 sub_80BF4F4(u8 arg0) -{ - u8 langData[4]; - u32 species; - - u8 *tmp; - - GetMonData(&gPlayerParty[arg0], MON_DATA_NICKNAME, &gStringVar1); - - tmp = langData; - tmp[0] = GetMonData(&gPlayerParty[arg0], MON_DATA_LANGUAGE, &langData); - if (tmp[0] != GAME_LANGUAGE) { - return TRUE; - } - - species = GetMonData(&gPlayerParty[arg0], MON_DATA_SPECIES, NULL); - - if (StringCompareWithoutExtCtrlCodes(gSpeciesNames[species], gStringVar1)) { - return TRUE; - } - - return FALSE; -} -#endif - -u8 sub_80BF544(void) -{ - return sub_80BF4F4(GetLeadMonIndex()); -} - -void sub_80BF55C(TVShow tvShow[], u8 showidx) -{ - u8 idx; - tvShow[showidx].common.var00 = 0; - tvShow[showidx].common.var01 = 0; - for (idx=0; idx<34; idx++) { - tvShow[showidx].common.pad02[idx] = 0; - } -} - -void sub_80BF588(TVShow tvShow[]) -{ - u8 showidx; - u8 showidx2; - for (showidx=0; showidx<4; showidx++) { - if (tvShow[showidx].common.var00 == 0) { - for (showidx2=showidx+1; showidx2<5; showidx2++) { - if (tvShow[showidx2].common.var00 != 0) { - tvShow[showidx] = tvShow[showidx2]; - sub_80BF55C(tvShow, showidx2); - break; - } - } - } - } - for (showidx=5; showidx<24; showidx++) { - if (tvShow[showidx].common.var00 == 0) { - for (showidx2=showidx+1; showidx2<24; showidx2++) { - if (tvShow[showidx2].common.var00 != 0) { - tvShow[showidx] = tvShow[showidx2]; - sub_80BF55C(gSaveBlock1.tvShows, showidx2); - break; - } - } - } - } -} - -u16 sub_80BF638(u8 arg0, u16 arg1) -{ - u16 retval = sub_80BF674(arg1); - StringCopy(gUnknown_083D1464[arg0], gSpeciesNames[retval]); - return retval; -} - -u16 sub_80BF674(u16 species) -{ - u16 rspecies; - u16 cspecies; - rspecies = (Random() % (NUM_SPECIES - 1)) + 1; - cspecies = rspecies; - while ((s8)GetNationalPokedexFlag(SpeciesToNationalPokedexNum(cspecies), 0) != 1 || cspecies == species) { - if (cspecies == SPECIES_BULBASAUR) - cspecies = NUM_SPECIES - 1; - else - cspecies --; - if (cspecies == rspecies) { - cspecies = species; - return cspecies; - } - } - return cspecies; -} - -void sub_80BF6D8(void) -{ - gUnknown_03005D38.var0 = sub_80BF720(gSaveBlock1.tvShows); - gSpecialVar_0x8006 = gUnknown_03005D38.var0; - if (gUnknown_03005D38.var0 == -1) - gScriptResult = 1; - else - gScriptResult = 0; -} - -s8 sub_80BF720(TVShow tvShow[]) -{ - u8 idx; - for (idx=0; idx<5; idx++) { - if (tvShow[idx].common.var00 == 0) - return idx; - } - return -1; -} - -s8 sub_80BF74C(TVShow tvShow[]) -{ - s8 idx; - for (idx=5; idx<24; idx++) { - if (tvShow[idx].common.var00 == 0) - return idx; - } - return -1; -} - -bool8 sub_80BF77C(u16 value) -{ - if (Random() <= value) - return FALSE; - return TRUE; -} - -void sub_80BF79C(TVShow *arg0) -{ - u8 i = Random() % 6; - while (1) { - if (i == 6) - i = 0; - if (arg0->recentHappenings.var04[i] != 0xFFFF) - break; - i ++; - } - sub_80EB3FC(gStringVar3, arg0->recentHappenings.var04[i]); -} - -u8 sub_80BF7E8(struct TVShowNameRaterShow *arg0) -{ - u16 flagsum = 0; - u8 i = 0; - if (arg0->pokemonName[0] != 0xFF) { - while (i < 11 && arg0->pokemonName[i] != 0xFF) { - flagsum += arg0->pokemonName[i]; - i++; - } - } - return flagsum & 0x7; -} - -void sub_80BF820(u8 arg0, u8 arg1, u8 arg2, u16 arg3, u16 arg4, struct TVShowNameRaterShow *tvShow) -{ - u8 flags[3]; - u16 nameLength; - u8 i; - for (i=0; i<3; i++) - flags[i] = EOS; - if (arg3 == 0) { - nameLength = StringLength(tvShow->trainerName); - if (arg2 == 0) { - flags[0] = tvShow->trainerName[arg1]; - } else if (arg2 == 1) { - flags[0] = tvShow->trainerName[nameLength - arg1]; - } else if (arg2 == 2) { - flags[0] = tvShow->trainerName[arg1]; - flags[1] = tvShow->trainerName[arg1 + 1]; - } else { - flags[0] = tvShow->trainerName[nameLength - (arg1 + 2)]; - flags[1] = tvShow->trainerName[nameLength - (arg1 + 1)]; - } - } else if (arg3 == 1) { - nameLength = StringLength(tvShow->pokemonName); - if (arg2 == 0) { - flags[0] = tvShow->pokemonName[arg1]; - } else if (arg2 == 1) { - flags[0] = tvShow->pokemonName[nameLength - arg1]; - } else if (arg2 == 2) { - flags[0] = tvShow->pokemonName[arg1]; - flags[1] = tvShow->pokemonName[arg1 + 1]; - } else { - flags[0] = tvShow->pokemonName[nameLength - (arg1 + 2)]; - flags[1] = tvShow->pokemonName[nameLength - (arg1 + 1)]; - } - } else { - nameLength = StringLength(gSpeciesNames[arg4]); - if (arg2 == 0) { - flags[0] = gSpeciesNames[arg4][arg1]; - } else if (arg2 == 1) { - flags[0] = gSpeciesNames[arg4][nameLength - arg1]; - } else if (arg2 == 2) { - flags[0] = gSpeciesNames[arg4][arg1]; - flags[1] = gSpeciesNames[arg4][arg1 + 1]; - } else { - flags[0] = gSpeciesNames[arg4][nameLength - (arg1 + 2)]; - flags[1] = gSpeciesNames[arg4][nameLength - (arg1 + 1)]; - } - } - StringCopy(gUnknown_083D1464[arg0], flags); -} - -bool8 sub_80BF974(void) -{ - u8 i; - for (i=0; i<5; i++) - { - if (gSaveBlock1.tvShows[i].common.var00 == gSpecialVar_0x8004) - return TRUE; - } - return FALSE; -} - -bool8 sub_80BF9B4(void) -{ - GetMonData(&(gPlayerParty[gSpecialVar_0x8004]), MON_DATA_NICKNAME, &gStringVar1); - if (!StringCompareWithoutExtCtrlCodes(gStringVar3, gStringVar1)) - return FALSE; - sub_80BE478(); - return TRUE; -} - -void c2_080CC144(void); - -void sub_80BF9F8(void) -{ - u16 spec; - u16 gender; - u32 pval; - GetMonData(&(gPlayerParty[gSpecialVar_0x8004]), MON_DATA_NICKNAME, &gStringVar3); - GetMonData(&(gPlayerParty[gSpecialVar_0x8004]), MON_DATA_NICKNAME, &gStringVar2); - spec = GetMonData(&(gPlayerParty[gSpecialVar_0x8004]), MON_DATA_SPECIES, 0); - gender = GetMonGender(&(gPlayerParty[gSpecialVar_0x8004])); - pval = GetMonData(&(gPlayerParty[gSpecialVar_0x8004]), MON_DATA_PERSONALITY, 0); - DoNamingScreen(3, gStringVar2, spec, gender, pval, c2_080CC144); -} - -void c2_080CC144(void) -{ - SetMonData(&(gPlayerParty[gSpecialVar_0x8004]), MON_DATA_NICKNAME, gStringVar2); - c2_exit_to_overworld_1_continue_scripts_restart_music(); -} - -void sub_80BFAE0(void) -{ - GetMonData(&(gPlayerParty[gSpecialVar_0x8004]), MON_DATA_NICKNAME, &gStringVar1); - StringGetEnd10(gStringVar1); -} - -void sub_80BFB10(void) -{ - if (GetPlayerTrainerId() == GetMonData(&(gPlayerParty[gSpecialVar_0x8004]), MON_DATA_OT_ID, 0)) - gScriptResult = 0; - else - gScriptResult = 1; -} - -u8 sub_80BFB54(u8 arg0) -{ - if (arg0 == 0) - return 0; - else if (arg0 > 0 && arg0 <= 20) - return 2; - else if (arg0 > 20 && arg0 <= 40) - return 3; - else if (arg0 > 40 && arg0 <= 60) - return 4; - else - return 0; -} - -u32 GetPlayerTrainerId(void) -{ - return (gSaveBlock2.playerTrainerId[3] << 24) | (gSaveBlock2.playerTrainerId[2] << 16) | (gSaveBlock2.playerTrainerId[1] << 8) | (gSaveBlock2.playerTrainerId[0]); -} - -u8 CheckForBigMovieOrEmergencyNewsOnTV(void) -{ - if (gSaveBlock1.location.mapGroup != MAP_GROUP_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F) - return 0; - if (gSaveBlock2.playerGender == MALE) { - if (gSaveBlock1.location.mapNum != MAP_ID_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F) - return 0; - } else { - if (gSaveBlock1.location.mapNum != MAP_ID_LITTLEROOT_TOWN_MAYS_HOUSE_1F) - return 0; - } - if (FlagGet(SYS_TV_LATI) == 1) - return 1; - if (FlagGet(SYS_TV_HOME) == 1) - return 2; - return 1; -} - -#ifdef NONMATCHING -void GetMomOrDadStringForTVMessage(void) -{ - if (gSaveBlock1.location.mapGroup == MAP_GROUP_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F) { - if (gSaveBlock2.playerGender == MALE) { - if (gSaveBlock1.location.mapNum == MAP_ID_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F) { - StringCopy(gStringVar1, gOtherText_Mom); - VarSet(VAR_0x4003, 1); - } - } else { - if (gSaveBlock1.location.mapNum == MAP_ID_LITTLEROOT_TOWN_MAYS_HOUSE_1F) { - StringCopy(gStringVar1, gOtherText_Mom); - VarSet(VAR_0x4003, 1); - } - } - } - if (VarGet(VAR_0x4003) == 1) { - StringCopy(gStringVar1, gOtherText_Mom); - } else if (VarGet(VAR_0x4003) == 2) { - StringCopy(gStringVar1, gOtherText_Dad); - } else if (VarGet(VAR_0x4003) > 2) { - if ((u16)(VarGet(VAR_0x4003) & 1) == 0) { - StringCopy(gStringVar1, gOtherText_Mom); - } else { - StringCopy(gStringVar1, gOtherText_Dad); - } - } else { - if ((u16)(Random() & 1) != 0) { - StringCopy(gStringVar1, gOtherText_Mom); - VarSet(VAR_0x4003, 1); - } else { - StringCopy(gStringVar1, gOtherText_Dad); - VarSet(VAR_0x4003, 2); - } - } -} -#else -__attribute__((naked)) -void GetMomOrDadStringForTVMessage(void) -{ - asm(".syntax unified\n\ - push {r4,lr}\n\ - ldr r1, _080BFC40 @ =gSaveBlock1\n\ - movs r0, 0x4\n\ - ldrsb r0, [r1, r0]\n\ - cmp r0, 0x1\n\ - bne _080BFC6C\n\ - ldr r0, _080BFC44 @ =gSaveBlock2\n\ - ldrb r0, [r0, 0x8]\n\ - cmp r0, 0\n\ - bne _080BFC54\n\ - movs r0, 0x5\n\ - ldrsb r0, [r1, r0]\n\ - cmp r0, 0\n\ - bne _080BFC6C\n\ - ldr r0, _080BFC48 @ =gStringVar1\n\ - ldr r1, _080BFC4C @ =gOtherText_Mom\n\ - bl StringCopy\n\ - ldr r0, _080BFC50 @ =0x00004003\n\ - movs r1, 0x1\n\ - bl VarSet\n\ - b _080BFC6C\n\ - .align 2, 0\n\ -_080BFC40: .4byte gSaveBlock1\n\ -_080BFC44: .4byte gSaveBlock2\n\ -_080BFC48: .4byte gStringVar1\n\ -_080BFC4C: .4byte gOtherText_Mom\n\ -_080BFC50: .4byte 0x00004003\n\ -_080BFC54:\n\ - movs r0, 0x5\n\ - ldrsb r0, [r1, r0]\n\ - cmp r0, 0x2\n\ - bne _080BFC6C\n\ - ldr r0, _080BFCB4 @ =gStringVar1\n\ - ldr r1, _080BFCB8 @ =gOtherText_Mom\n\ - bl StringCopy\n\ - ldr r0, _080BFCBC @ =0x00004003\n\ - movs r1, 0x1\n\ - bl VarSet\n\ -_080BFC6C:\n\ - ldr r4, _080BFCBC @ =0x00004003\n\ - adds r0, r4, 0\n\ - bl VarGet\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - cmp r0, 0x1\n\ - beq _080BFCAA\n\ - adds r0, r4, 0\n\ - bl VarGet\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - cmp r0, 0x2\n\ - beq _080BFCC0\n\ - adds r0, r4, 0\n\ - bl VarGet\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - cmp r0, 0x2\n\ - bls _080BFCD4\n\ - adds r0, r4, 0\n\ - bl VarGet\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - movs r1, 0x1\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - bne _080BFCC0\n\ -_080BFCAA:\n\ - ldr r0, _080BFCB4 @ =gStringVar1\n\ - ldr r1, _080BFCB8 @ =gOtherText_Mom\n\ - bl StringCopy\n\ - b _080BFD10\n\ - .align 2, 0\n\ -_080BFCB4: .4byte gStringVar1\n\ -_080BFCB8: .4byte gOtherText_Mom\n\ -_080BFCBC: .4byte 0x00004003\n\ -_080BFCC0:\n\ - ldr r0, _080BFCCC @ =gStringVar1\n\ - ldr r1, _080BFCD0 @ =gOtherText_Dad\n\ - bl StringCopy\n\ - b _080BFD10\n\ - .align 2, 0\n\ -_080BFCCC: .4byte gStringVar1\n\ -_080BFCD0: .4byte gOtherText_Dad\n\ -_080BFCD4:\n\ - bl Random\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - movs r1, 0x1\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _080BFD00\n\ - ldr r0, _080BFCF8 @ =gStringVar1\n\ - ldr r1, _080BFCFC @ =gOtherText_Mom\n\ - bl StringCopy\n\ - adds r0, r4, 0\n\ - movs r1, 0x1\n\ - bl VarSet\n\ - b _080BFD10\n\ - .align 2, 0\n\ -_080BFCF8: .4byte gStringVar1\n\ -_080BFCFC: .4byte gOtherText_Mom\n\ -_080BFD00:\n\ - ldr r0, _080BFD18 @ =gStringVar1\n\ - ldr r1, _080BFD1C @ =gOtherText_Dad\n\ - bl StringCopy\n\ - adds r0, r4, 0\n\ - movs r1, 0x2\n\ - bl VarSet\n\ -_080BFD10:\n\ - pop {r4}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_080BFD18: .4byte gStringVar1\n\ -_080BFD1C: .4byte gOtherText_Dad\n\ -.syntax divided\n"); -} -#endif - -void sub_80BFD20(void) -{ - VarSet(VAR_0x40BC, 0); - RemoveFieldObjectByLocalIdAndMap(5, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup); -} - -typedef union ewramStruct_02007000 { - TVShow tvshows[4][25]; - struct UnknownSaveStruct2ABC unknown_2abc[4][16]; -} ewramStruct_02007000; - -void sub_80BFE24(TVShow arg0[25], TVShow arg1[25], TVShow arg2[25], TVShow arg3[25]); - -void sub_80C04A0(void); -void sub_80C01D4(void); -void sub_80C0408(void); - -void sub_80BFD44(u8 *arg0, u32 arg1, u8 arg2) -{ - u8 i; - ewramStruct_02007000 *ewramTVShows; - for (i=0; i<4; i++) { - memcpy(&gUnknown_02007000.tvshows[i], &arg0[i * arg1], 25 * sizeof(TVShow)); - } - ewramTVShows = &gUnknown_02007000; - switch (arg2) { - case 0: - sub_80BFE24(gSaveBlock1.tvShows, ewramTVShows->tvshows[1], ewramTVShows->tvshows[2], ewramTVShows->tvshows[3]); - break; - case 1: - sub_80BFE24(ewramTVShows->tvshows[0], gSaveBlock1.tvShows, ewramTVShows->tvshows[2], ewramTVShows->tvshows[3]); - break; - case 2: - sub_80BFE24(ewramTVShows->tvshows[0], ewramTVShows->tvshows[1], gSaveBlock1.tvShows, ewramTVShows->tvshows[3]); - break; - case 3: - sub_80BFE24(ewramTVShows->tvshows[0], ewramTVShows->tvshows[1], ewramTVShows->tvshows[2], gSaveBlock1.tvShows); - break; - } - sub_80BF588(gSaveBlock1.tvShows); - sub_80C04A0(); - sub_80BF588(gSaveBlock1.tvShows); - sub_80C01D4(); - sub_80C0408(); -} - -extern u8 gUnknown_03000720; -extern u8 gUnknown_03000721; -extern s8 gUnknown_03000722; -s8 sub_80C019C(TVShow tvShows[]); -bool8 sub_80BFF68(TVShow * tv1[25], TVShow * tv2[25], u8 idx); -u8 sub_80C004C(TVShow *tv1, TVShow *tv2, u8 idx); -u8 sub_80C00B4(TVShow *tv1, TVShow *tv2, u8 idx); -u8 sub_80C0134(TVShow *tv1, TVShow *tv2, u8 idx); - -void sub_80BFE24(TVShow arg0[25], TVShow arg1[25], TVShow arg2[25], TVShow arg3[25]) -{ - u8 i, j; - TVShow ** argslist[4]; - argslist[0] = &arg0; - argslist[1] = &arg1; - argslist[2] = &arg2; - argslist[3] = &arg3; - gUnknown_03000720 = GetLinkPlayerCount(); - while (1) { - for (i=0; icommon.trainerIdLo && ((linkTrainerId >> 8) & 0xFF) == tv2->common.trainerIdHi) { - return FALSE; - } - tv2->common.trainerIdLo = tv2->common.srcTrainerIdLo; - tv2->common.trainerIdHi = tv2->common.srcTrainerIdHi; - tv2->common.srcTrainerIdLo = linkTrainerId & 0xFF; - tv2->common.srcTrainerIdHi = linkTrainerId >> 8; - *tv1 = *tv2; - tv1->common.var01 = 1; - return TRUE; -} - -u8 sub_80C00B4(TVShow *tv1, TVShow *tv2, u8 idx) { - u32 linkTrainerId = GetLinkPlayerTrainerId(idx); - if ((linkTrainerId & 0xFF) == tv2->common.srcTrainerIdLo && ((linkTrainerId >> 8) & 0xFF) == tv2->common.srcTrainerIdHi) { - return FALSE; - } - if ((linkTrainerId & 0xFF) == tv2->common.trainerIdLo && ((linkTrainerId >> 8) & 0xFF) == tv2->common.trainerIdHi) { - return FALSE; - } - tv2->common.srcTrainerIdLo = tv2->common.srcTrainerId2Lo; - tv2->common.srcTrainerIdHi = tv2->common.srcTrainerId2Hi; - tv2->common.srcTrainerId2Lo = linkTrainerId & 0xFF; - tv2->common.srcTrainerId2Hi = linkTrainerId >> 8; - *tv1 = *tv2; - tv1->common.var01 = 1; - return TRUE; -} - -u8 sub_80C0134(TVShow *tv1, TVShow *tv2, u8 idx) { - u32 linkTrainerId = GetLinkPlayerTrainerId(idx); - if ((linkTrainerId & 0xFF) == tv2->common.trainerIdLo && ((linkTrainerId >> 8) & 0xFF) == tv2->common.trainerIdHi) { - return FALSE; - } - tv2->common.trainerIdLo = tv2->common.srcTrainerIdLo; - tv2->common.trainerIdHi = tv2->common.srcTrainerIdHi; - tv2->common.srcTrainerIdLo = linkTrainerId & 0xFF; - tv2->common.srcTrainerIdHi = linkTrainerId >> 8; - *tv1 = *tv2; - tv1->common.var01 = 1; - tv1->common.var16[0] = 1; - return TRUE; -} - -s8 sub_80C019C(TVShow tvShows[]) { - u8 i; - for (i=0; i<24; i++) { - if (tvShows[i].common.var01 == 0 && (u8)(tvShows[i].common.var00 - 1) < 60) { - return i; - } - } - return -1; -} - -#ifdef NONMATCHING -void sub_80C01D4(void) -{ - u16 i; - for (i=0; i<24; i++) - { - switch (gSaveBlock1.tvShows[i].common.var00) - { - case 0: - case TVSHOW_RECENT_HAPPENINGS: - case TVSHOW_SMART_SHOPPER: - case TVSHOW_MASS_OUTBREAK: - break; - case TVSHOW_FAN_CLUB_LETTER: - sub_80C03C8((&gSaveBlock1.tvShows[i])->fanclubLetter.species, i); - break; - case TVSHOW_PKMN_FAN_CLUB_OPINIONS: - sub_80C03C8((&gSaveBlock1.tvShows[i])->fanclubOpinions.var02, i); - break; - case TVSHOW_UNKN_SHOWTYPE_04: - sub_80C03C8((&gSaveBlock1.tvShows[i])->unkShow04.var06, i); - break; - case TVSHOW_NAME_RATER_SHOW: - sub_80C03C8((&gSaveBlock1.tvShows[i])->nameRaterShow.species, i); - sub_80C03C8((&gSaveBlock1.tvShows[i])->nameRaterShow.var1C, i); - break; - case TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE: - sub_80C03C8((&gSaveBlock1.tvShows[i])->bravoTrainer.species, i); - break; - case TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE: - sub_80C03C8((&gSaveBlock1.tvShows[i])->bravoTrainerTower.species, i); - sub_80C03C8((&gSaveBlock1.tvShows[i])->bravoTrainerTower.defeatedSpecies, i); - break; - case TVSHOW_POKEMON_TODAY_CAUGHT: - sub_80C03C8((&gSaveBlock1.tvShows[i])->pokemonToday.species, i); - break; - case TVSHOW_POKEMON_TODAY_FAILED: - sub_80C03C8((&gSaveBlock1.tvShows[i])->pokemonTodayFailed.species, i); - sub_80C03C8((&gSaveBlock1.tvShows[i])->pokemonTodayFailed.species2, i); - break; - case TVSHOW_FISHING_ADVICE: - sub_80C03C8((&gSaveBlock1.tvShows[i])->pokemonAngler.var04, i); - break; - case TVSHOW_WORLD_OF_MASTERS: - sub_80C03C8((&gSaveBlock1.tvShows[i])->worldOfMasters.var08, i); - sub_80C03C8((&gSaveBlock1.tvShows[i])->worldOfMasters.var04, i); - break; - default: - sub_80C03A8(i); - } - } -} -#else -__attribute__((naked)) -void sub_80C01D4(void) { - asm(".syntax unified\n\ - push {r4-r6,lr}\n\ - movs r6, 0\n\ -_080C01D8:\n\ - ldr r0, _080C01F8 @ =gSaveBlock1\n\ - lsls r2, r6, 3\n\ - adds r1, r2, r6\n\ - lsls r1, 2\n\ - adds r1, r0\n\ - ldr r0, _080C01FC @ =0x00002738\n\ - adds r1, r0\n\ - ldrb r0, [r1]\n\ - cmp r0, 0x29\n\ - bls _080C01EE\n\ - b _default\n\ -_080C01EE:\n\ - lsls r0, 2\n\ - ldr r1, _080C0200 @ =_080C0204\n\ - adds r0, r1\n\ - ldr r0, [r0]\n\ - mov pc, r0\n\ - .align 2, 0\n\ -_080C01F8: .4byte gSaveBlock1\n\ -_080C01FC: .4byte 0x00002738\n\ -_080C0200: .4byte _080C0204\n\ - .align 2, 0\n\ -_080C0204:\n\ - .4byte _break\n\ - .4byte _fanclubLetter @ TVSHOW_FAN_CLUB_LETTER\n\ - .4byte _break @ TVSHOW_RECENT_HAPPENINGS\n\ - .4byte _fanclubOpinions @ TVSHOW_PKMN_FAN_CLUB_OPINIONS\n\ - .4byte _showtype4 @ TVSHOW_UNKN_SHOWTYPE_04\n\ - .4byte _nameRater @ TVSHOW_NAME_RATER_SHOW\n\ - .4byte _bravoTrainerContest @ TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE\n\ - .4byte _bravoTrainerTower @ TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _pokemonTodayS @ TVSHOW_POKEMON_TODAY_CAUGHT\n\ - .4byte _break @ TVSHOW_SMART_SHOPPER\n\ - .4byte _pokemonTodayF @ TVSHOW_POKEMON_TODAY_FAILED\n\ - .4byte _fishing @ TVSHOW_FISHING_ADVICE\n\ - .4byte _worldOfMasters @ TVSHOW_WORLD_OF_MASTERS\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _break @ TVSHOW_MASS_OUTBREAK\n\ -_fanclubLetter:\n\ - adds r0, r2, r6\n\ - lsls r0, 2\n\ - ldr r1, _080C02B8 @ =gSaveBlock1 + 0x2738\n\ - adds r0, r1\n\ - ldrh r0, [r0, 0x2]\n\ - b _checkSpecies1 @ sub_80C03C8(r0, i)\n\ - .align 2, 0\n\ -_080C02B8: .4byte gSaveBlock1 + 0x2738\n\ -_fanclubOpinions:\n\ - adds r0, r2, r6\n\ - lsls r0, 2\n\ - ldr r1, _080C02C8 @ =gSaveBlock1 + 0x2738\n\ - adds r0, r1\n\ - ldrh r0, [r0, 0x2]\n\ - b _checkSpecies1 @ sub_80C03C8(r0, i)\n\ - .align 2, 0\n\ -_080C02C8: .4byte gSaveBlock1 + 0x2738\n\ -_showtype4:\n\ - adds r0, r2, r6\n\ - lsls r0, 2\n\ - ldr r1, _080C02D8 @ =gSaveBlock1 + 0x2738\n\ - adds r0, r1\n\ - ldrh r0, [r0, 0x6]\n\ - b _checkSpecies1 @ sub_80C03C8(r0, i)\n\ - .align 2, 0\n\ -_080C02D8: .4byte gSaveBlock1 + 0x2738\n\ -_nameRater:\n\ - adds r4, r2, r6\n\ - lsls r4, 2\n\ - ldr r0, _080C02F4 @ =gSaveBlock1 + 0x2738\n\ - adds r4, r0\n\ - ldrh r0, [r4, 0x2]\n\ - lsls r5, r6, 24\n\ - lsrs r5, 24\n\ - adds r1, r5, 0\n\ - bl sub_80C03C8\n\ - ldrh r0, [r4, 0x1C]\n\ - b _checkSpecies2 @ sub_80C03C8(r0, i)\n\ - .align 2, 0\n\ -_080C02F4: .4byte gSaveBlock1 + 0x2738\n\ -_bravoTrainerContest:\n\ - adds r0, r2, r6\n\ - lsls r0, 2\n\ - ldr r1, _080C0304 @ =gSaveBlock1 + 0x2738\n\ - adds r0, r1\n\ - ldrh r0, [r0, 0x2]\n\ - b _checkSpecies1 @ sub_80C03C8(r0, i)\n\ - .align 2, 0\n\ -_080C0304: .4byte gSaveBlock1 + 0x2738\n\ -_bravoTrainerTower:\n\ - adds r4, r2, r6\n\ - lsls r4, 2\n\ - ldr r0, _080C0320 @ =gSaveBlock1 + 0x2738\n\ - adds r4, r0\n\ - ldrh r0, [r4, 0xA]\n\ - lsls r5, r6, 24\n\ - lsrs r5, 24\n\ - adds r1, r5, 0\n\ - bl sub_80C03C8\n\ - ldrh r0, [r4, 0x14]\n\ - b _checkSpecies2 @ sub_80C03C8(r0, i)\n\ - .align 2, 0\n\ -_080C0320: .4byte gSaveBlock1 + 0x2738\n\ -_pokemonTodayS:\n\ - adds r0, r2, r6\n\ - lsls r0, 2\n\ - ldr r1, _080C0330 @ =gSaveBlock1 + 0x2738\n\ - adds r0, r1\n\ - ldrh r0, [r0, 0x10]\n\ - b _checkSpecies1 @ sub_80C03C8(r0, i)\n\ - .align 2, 0\n\ -_080C0330: .4byte gSaveBlock1 + 0x2738\n\ -_pokemonTodayF:\n\ - adds r4, r2, r6\n\ - lsls r4, 2\n\ - ldr r0, _080C034C @ =gSaveBlock1 + 0x2738\n\ - adds r4, r0\n\ - ldrh r0, [r4, 0xC]\n\ - lsls r5, r6, 24\n\ - lsrs r5, 24\n\ - adds r1, r5, 0\n\ - bl sub_80C03C8\n\ - ldrh r0, [r4, 0xE]\n\ - b _checkSpecies2 @ sub_80C03C8(r0, i)\n\ - .align 2, 0\n\ -_080C034C: .4byte gSaveBlock1 + 0x2738\n\ -_fishing:\n\ - adds r0, r2, r6\n\ - lsls r0, 2\n\ - ldr r1, _080C0364 @ =gSaveBlock1 + 0x2738\n\ - adds r0, r1\n\ - ldrh r0, [r0, 0x4]\n\ -_checkSpecies1:\n\ - lsls r1, r6, 24\n\ - lsrs r1, 24\n\ - bl sub_80C03C8\n\ - b _break\n\ - .align 2, 0\n\ -_080C0364: .4byte gSaveBlock1 + 0x2738\n\ -_worldOfMasters:\n\ - adds r4, r2, r6\n\ - lsls r4, 2\n\ - ldr r0, _080C0388 @ =gSaveBlock1 + 0x2738\n\ - adds r4, r0\n\ - ldrh r0, [r4, 0x8]\n\ - lsls r5, r6, 24\n\ - lsrs r5, 24\n\ - adds r1, r5, 0\n\ - bl sub_80C03C8\n\ - ldrh r0, [r4, 0x4]\n\ -_checkSpecies2:\n\ - adds r1, r5, 0\n\ - bl sub_80C03C8\n\ - b _break\n\ - .align 2, 0\n\ -_080C0388: .4byte gSaveBlock1 + 0x2738\n\ -_default:\n\ - lsls r0, r6, 24\n\ - lsrs r0, 24\n\ - bl sub_80C03A8\n\ -_break:\n\ - adds r0, r6, 0x1\n\ - lsls r0, 16\n\ - lsrs r6, r0, 16\n\ - cmp r6, 0x17\n\ - bhi _080C03A0\n\ - b _080C01D8\n\ -_080C03A0:\n\ - pop {r4-r6}\n\ - pop {r0}\n\ - bx r0\n\ -.syntax divided\n"); -} -#endif - -void sub_80C03A8(u8 showidx) { - gSaveBlock1.tvShows[showidx].common.var01 = 0; -} - -void sub_80C03C8(u16 species, u8 showidx) { - if (GetNationalPokedexFlag(SpeciesToNationalPokedexNum(species), 0) == 0) { - gSaveBlock1.tvShows[showidx].common.var01 = 0; - } -} - -#ifdef NONMATCHING -void sub_80C0408(void) { - u16 i; - if (FlagGet(SYS_GAME_CLEAR) != 1) { - for (i=0; i<24; i++) { - if (gSaveBlock1.tvShows[i].common.var00 == TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE || gSaveBlock1.tvShows[i].common.var00 == TVSHOW_MASS_OUTBREAK) { - gSaveBlock1.tvShows[i].common.var01 = 0; - } - } - } -} -#else -__attribute__((naked)) -void sub_80C0408(void) { - asm(".syntax unified\n\ - push {r4-r6,lr}\n\ - ldr r0, _080C044C @ =0x00000804\n\ - bl FlagGet\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - cmp r0, 0x1\n\ - beq _080C0444\n\ - movs r2, 0\n\ - ldr r6, _080C0450 @ =gSaveBlock1\n\ - ldr r4, _080C0454 @ =0x00002739\n\ - movs r3, 0\n\ - ldr r5, _080C0458 @ =0x00002738\n\ -_080C0422:\n\ - lsls r0, r2, 3\n\ - adds r0, r2\n\ - lsls r0, 2\n\ - adds r1, r0, r6\n\ - adds r0, r1, r5\n\ - ldrb r0, [r0]\n\ - cmp r0, 0x7\n\ - beq _080C0436\n\ - cmp r0, 0x29\n\ - bne _080C043A\n\ -_080C0436:\n\ - adds r0, r1, r4\n\ - strb r3, [r0]\n\ -_080C043A:\n\ - adds r0, r2, 0x1\n\ - lsls r0, 16\n\ - lsrs r2, r0, 16\n\ - cmp r2, 0x17\n\ - bls _080C0422\n\ -_080C0444:\n\ - pop {r4-r6}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_080C044C: .4byte 0x00000804\n\ -_080C0450: .4byte gSaveBlock1\n\ -_080C0454: .4byte 0x00002739\n\ -_080C0458: .4byte 0x00002738\n\ -.syntax divided\n"); -} -#endif - -void sub_80C045C(void) { - u8 i; - for (i=0; i<5; i++) { - if (sub_80BFB54(gSaveBlock1.tvShows[i].common.var00) == 2) { - gSaveBlock1.tvShows[i].common.var01 = 0; - } - } -} - -void sub_80C04A0(void) -{ - s8 showIdx; - s8 count; - count = 0; - for (showIdx=5; showIdx<24; showIdx++) - { - if (gSaveBlock1.tvShows[showIdx].common.var00 == 0) - { - count ++; - } - } - for (showIdx=0; showIdx<5-count; showIdx++) - { - sub_80BF55C(gSaveBlock1.tvShows, showIdx+5); - } -} - -void sub_80C05C4(struct UnknownSaveStruct2ABC[16], struct UnknownSaveStruct2ABC[16], struct UnknownSaveStruct2ABC[16], struct UnknownSaveStruct2ABC[16]); -void sub_80C0750(void); -void sub_80C0788(void); -s8 sub_80C0730(struct UnknownSaveStruct2ABC[16], u8); -void sub_80C06BC(struct UnknownSaveStruct2ABC *[16], struct UnknownSaveStruct2ABC *[16]); - -void sub_80C0514(void *a0, u32 a1, u8 a2) -{ - ewramStruct_02007000 *struct02007000; - u8 i; - for (i=0; i<4; i++) - { - memcpy(gUnknown_02007000.unknown_2abc[i], a0 + i * a1, 64); - } - struct02007000 = &gUnknown_02007000; - switch (a2) - { - case 0: - sub_80C05C4(gSaveBlock1.unknown_2ABC, struct02007000->unknown_2abc[1], struct02007000->unknown_2abc[2], struct02007000->unknown_2abc[3]); - break; - case 1: - sub_80C05C4(struct02007000->unknown_2abc[0], gSaveBlock1.unknown_2ABC, struct02007000->unknown_2abc[2], struct02007000->unknown_2abc[3]); - break; - case 2: - sub_80C05C4(struct02007000->unknown_2abc[0], struct02007000->unknown_2abc[1], gSaveBlock1.unknown_2ABC, struct02007000->unknown_2abc[3]); - break; - case 3: - sub_80C05C4(struct02007000->unknown_2abc[0], struct02007000->unknown_2abc[1], struct02007000->unknown_2abc[2], gSaveBlock1.unknown_2ABC); - break; - } - sub_80C0750(); - sub_80C0788(); -} - -void sub_80C05C4(struct UnknownSaveStruct2ABC a0[16], struct UnknownSaveStruct2ABC a1[16], struct UnknownSaveStruct2ABC a2[16], struct UnknownSaveStruct2ABC a3[16]) -{ - u8 i; - u8 j; - u8 k; - struct UnknownSaveStruct2ABC ** arglist[4]; - arglist[0] = &a0; - arglist[1] = &a1; - arglist[2] = &a2; - arglist[3] = &a3; - gUnknown_03000721 = GetLinkPlayerCount(); - for (i=0; i<16; i++) - { - for (j=0; jval0 == 0) { - return FALSE; - } - for (i=0; i<16; i++) { - if (arg0[i].val0 == arg1->val0) { - return FALSE; - } - } - arg0[arg2].val0 = arg1->val0; - arg0[arg2].val1 = 1; - arg0[arg2].val2 = arg1->val2; - return TRUE; -} - -s8 sub_80C0730(struct UnknownSaveStruct2ABC *arg0, u8 arg1) { - if (arg0[arg1].val0 == 0) { - return -1; - } - return arg1; -} - -void sub_80C0750(void) { - u8 i; - for (i=0; i<16; i++) { - if (gSaveBlock1.unknown_2ABC[i].val0 > 3) { - sub_80BEC10(i); - } - } - sub_80BEC40(); -} - -void sub_80C0788(void) { - u8 i; - if (FlagGet(SYS_GAME_CLEAR) != 1) { - for (i=0; i<16; i++) { - gSaveBlock1.unknown_2ABC[i].val1 = 0; - } - } -} - -void DoTVShow(void) { - if (gSaveBlock1.tvShows[gSpecialVar_0x8004].common.var01 != 0) { - switch (gSaveBlock1.tvShows[gSpecialVar_0x8004].common.var00) { - case TVSHOW_FAN_CLUB_LETTER: - DoTVShowPokemonFanClubLetter(); - break; - case TVSHOW_RECENT_HAPPENINGS: - DoTVShowRecentHappenings(); - break; - case TVSHOW_PKMN_FAN_CLUB_OPINIONS: - DoTVShowPokemonFanClubOpinions(); - break; - case TVSHOW_UNKN_SHOWTYPE_04: - nullsub_22(); - break; - case TVSHOW_MASS_OUTBREAK: - DoTVShowPokemonNewsMassOutbreak(); - break; - case TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE: - DoTVShowBravoTrainerPokemonProfile(); - break; - case TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE: - DoTVShowBravoTrainerBattleTowerProfile(); - break; - case TVSHOW_POKEMON_TODAY_CAUGHT: - DoTVShowPokemonTodaySuccessfulCapture(); - break; - case TVSHOW_SMART_SHOPPER: - DoTVShowTodaysSmartShopper(); - break; - case TVSHOW_NAME_RATER_SHOW: - DoTVShowTheNameRaterShow(); - break; - case TVSHOW_POKEMON_TODAY_FAILED: - DoTVShowPokemonTodayFailedCapture(); - break; - case TVSHOW_FISHING_ADVICE: - DoTVShowPokemonAngler(); - break; - case TVSHOW_WORLD_OF_MASTERS: - DoTVShowTheWorldOfMasters(); - break; - } - } -} - -void TVShowConvertInternationalString(u8 *dest, u8 *src, u8 language) { - StringCopy(dest, src); - if (language < LANGUAGE_ENGLISH) { - ConvertInternationalString(dest, LANGUAGE_JAPANESE); - } -} - -void DoTVShowBravoTrainerPokemonProfile(void) -{ - TVShow *tvShow; - u8 switchval; - - tvShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004]; - gScriptResult = 0; - switchval = gUnknown_020387E8; - switch(switchval) - { - case 0: - TVShowConvertInternationalString(gStringVar1, tvShow->bravoTrainer.playerName, tvShow->bravoTrainer.language); - CopyContestCategoryToStringVar(1, tvShow->bravoTrainer.contestCategory); - sub_80BEF10(2, tvShow->bravoTrainer.contestRank); - if (!StringCompareWithoutExtCtrlCodes(gSpeciesNames[tvShow->bravoTrainer.species], tvShow->bravoTrainer.pokemonNickname)) - { - gUnknown_020387E8 = 8; - } else - { - gUnknown_020387E8 = 1; - } - break; - case 1: - StringCopy(gStringVar1, gSpeciesNames[tvShow->bravoTrainer.species]); - TVShowConvertInternationalString(gStringVar2, tvShow->bravoTrainer.pokemonNickname, tvShow->bravoTrainer.var1f); - CopyContestCategoryToStringVar(2, tvShow->bravoTrainer.contestCategory); - gUnknown_020387E8 = 2; - break; - case 2: - TVShowConvertInternationalString(gStringVar1, tvShow->bravoTrainer.playerName, tvShow->bravoTrainer.language); - if (tvShow->bravoTrainer.contestResult == 0) // placed first - { - gUnknown_020387E8 = 3; - } else - { - gUnknown_020387E8 = 4; - } - break; - case 3: - TVShowConvertInternationalString(gStringVar1, tvShow->bravoTrainer.playerName, tvShow->bravoTrainer.language); - sub_80EB3FC(gStringVar2, tvShow->bravoTrainer.var04[0]); - sub_80BF088(2, tvShow->bravoTrainer.contestResult + 1); - gUnknown_020387E8 = 5; - break; - case 4: - TVShowConvertInternationalString(gStringVar1, tvShow->bravoTrainer.playerName, tvShow->bravoTrainer.language); - sub_80EB3FC(gStringVar2, tvShow->bravoTrainer.var04[0]); - sub_80BF088(2, tvShow->bravoTrainer.contestResult + 1); - gUnknown_020387E8 = 5; - break; - case 5: - TVShowConvertInternationalString(gStringVar1, tvShow->bravoTrainer.playerName, tvShow->bravoTrainer.language); - CopyContestCategoryToStringVar(1, tvShow->bravoTrainer.contestCategory); - sub_80EB3FC(gStringVar3, tvShow->bravoTrainer.var04[1]); - if (tvShow->bravoTrainer.var14) - { - gUnknown_020387E8 = 6; - } else - { - gUnknown_020387E8 = 7; - } - break; - case 6: - StringCopy(gStringVar1, gSpeciesNames[tvShow->bravoTrainer.species]); - StringCopy(gStringVar2, gMoveNames[tvShow->bravoTrainer.var14]); - sub_80EB3FC(gStringVar3, tvShow->bravoTrainer.var04[1]); - gUnknown_020387E8 = 7; - break; - case 7: - TVShowConvertInternationalString(gStringVar1, tvShow->bravoTrainer.playerName, tvShow->bravoTrainer.language); - StringCopy(gStringVar2, gSpeciesNames[tvShow->bravoTrainer.species]); - TVShowDone(); - break; - case 8: - StringCopy(gStringVar1, gSpeciesNames[tvShow->bravoTrainer.species]); - gUnknown_020387E8 = 2; - break; - } - ShowFieldMessage(gTVBravoTrainerTextGroup[switchval]); -} - -void DoTVShowBravoTrainerBattleTowerProfile(void) -{ - TVShow *tvShow; - u8 switchval; - - tvShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004]; - gScriptResult = 0; - switchval = gUnknown_020387E8; - switch(switchval) - { - case 0: - TVShowConvertInternationalString(gStringVar1, tvShow->bravoTrainerTower.trainerName, tvShow->bravoTrainerTower.language); - StringCopy(gStringVar2, gSpeciesNames[tvShow->bravoTrainerTower.species]); - if (tvShow->bravoTrainerTower.var16 >= 7) - { - gUnknown_020387E8 = 1; - } else - { - gUnknown_020387E8 = 2; - } - break; - case 1: - sub_80BF088(0, tvShow->bravoTrainerTower.btLevel); - sub_80BF088(1, tvShow->bravoTrainerTower.var16); - if (tvShow->bravoTrainerTower.var1c == 1) - { - gUnknown_020387E8 = 3; - } else - { - gUnknown_020387E8 = 4; - } - break; - case 2: - TVShowConvertInternationalString(gStringVar1, tvShow->bravoTrainerTower.pokemonName, tvShow->bravoTrainerTower.language); - sub_80BF088(1, tvShow->bravoTrainerTower.var16 + 1); - if (tvShow->bravoTrainerTower.var1b == 0) - { - gUnknown_020387E8 = 5; - } else - { - gUnknown_020387E8 = 6; - } - break; - case 3: - TVShowConvertInternationalString(gStringVar1, tvShow->bravoTrainerTower.pokemonName, tvShow->bravoTrainerTower.language); - StringCopy(gStringVar2, gSpeciesNames[tvShow->bravoTrainerTower.defeatedSpecies]); - if (tvShow->bravoTrainerTower.var1b == 0) - { - gUnknown_020387E8 = 5; - } else - { - gUnknown_020387E8 = 6; - } - break; - case 4: - TVShowConvertInternationalString(gStringVar1, tvShow->bravoTrainerTower.pokemonName, tvShow->bravoTrainerTower.language); - StringCopy(gStringVar2, gSpeciesNames[tvShow->bravoTrainerTower.defeatedSpecies]); - if (tvShow->bravoTrainerTower.var1b == 0) - { - gUnknown_020387E8 = 5; - } else - { - gUnknown_020387E8 = 6; - } - break; - case 5: - TVShowConvertInternationalString(gStringVar1, tvShow->bravoTrainerTower.pokemonName, tvShow->bravoTrainerTower.language); - gUnknown_020387E8 = 11; - break; - case 6: - TVShowConvertInternationalString(gStringVar1, tvShow->bravoTrainerTower.pokemonName, tvShow->bravoTrainerTower.language); - gUnknown_020387E8 = 11; - break; - case 7: - gUnknown_020387E8 = 11; - break; - case 8: - case 9: - case 10: - TVShowConvertInternationalString(gStringVar1, tvShow->bravoTrainerTower.trainerName, tvShow->bravoTrainerTower.language); - gUnknown_020387E8 = 11; - break; - case 11: - sub_80EB3FC(gStringVar1, tvShow->bravoTrainerTower.var18[0]); - if (tvShow->bravoTrainerTower.var1b == 0) - { - gUnknown_020387E8 = 12; - } else - { - gUnknown_020387E8 = 13; - } - break; - case 12: - case 13: - sub_80EB3FC(gStringVar1, tvShow->bravoTrainerTower.var18[0]); - TVShowConvertInternationalString(gStringVar2, tvShow->bravoTrainerTower.trainerName, tvShow->bravoTrainerTower.language); - TVShowConvertInternationalString(gStringVar3, tvShow->bravoTrainerTower.pokemonName, tvShow->bravoTrainerTower.language); - gUnknown_020387E8 = 14; - break; - case 14: - TVShowConvertInternationalString(gStringVar1, tvShow->bravoTrainerTower.trainerName, tvShow->bravoTrainerTower.language); - StringCopy(gStringVar2, gSpeciesNames[tvShow->bravoTrainerTower.species]); - TVShowDone(); - break; - } - ShowFieldMessage(gTVBravoTrainerBattleTowerTextGroup[switchval]); -} - -void DoTVShowTodaysSmartShopper(void) -{ - TVShow *tvShow; - u8 switchval; - - tvShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004]; - gScriptResult = 0; - switchval = gUnknown_020387E8; - switch(switchval) - { - case 0: - TVShowConvertInternationalString(gStringVar1, tvShow->smartshopperShow.playerName, tvShow->smartshopperShow.language); - sub_80FBFB4(gStringVar2, tvShow->smartshopperShow.shopLocation, 0); - if (tvShow->smartshopperShow.itemAmounts[0] >= 0xff) - { - gUnknown_020387E8 = 11; - } else - { - gUnknown_020387E8 = 1; - } - break; - case 1: - TVShowConvertInternationalString(gStringVar1, tvShow->smartshopperShow.playerName, tvShow->smartshopperShow.language); - StringCopy(gStringVar2, ItemId_GetItem(tvShow->smartshopperShow.itemIds[0])->name); - sub_80BF088(2, tvShow->smartshopperShow.itemAmounts[0]); - gUnknown_020387E8 += (Random() % 4) + 1; - break; - case 2: - case 4: - case 5: - if (tvShow->smartshopperShow.itemIds[1] != 0) - { - gUnknown_020387E8 = 6; - } else - { - gUnknown_020387E8 = 10; - } - break; - case 3: - sub_80BF088(2, tvShow->smartshopperShow.itemAmounts[0] + 1); - if (tvShow->smartshopperShow.itemIds[1] != 0) - { - gUnknown_020387E8 = 6; - } else - { - gUnknown_020387E8 = 10; - } - break; - case 6: - StringCopy(gStringVar2, ItemId_GetItem(tvShow->smartshopperShow.itemIds[1])->name); - sub_80BF088(2, tvShow->smartshopperShow.itemAmounts[1]); - if (tvShow->smartshopperShow.itemIds[2] != 0) - { - gUnknown_020387E8 = 7; - } else if (tvShow->smartshopperShow.priceReduced == 1) - { - gUnknown_020387E8 = 8; - } else - { - gUnknown_020387E8 = 9; - } - break; - case 7: - StringCopy(gStringVar2, ItemId_GetItem(tvShow->smartshopperShow.itemIds[2])->name); - sub_80BF088(2, tvShow->smartshopperShow.itemAmounts[2]); - if (tvShow->smartshopperShow.priceReduced == 1) - { - gUnknown_020387E8 = 8; - } else - { - gUnknown_020387E8 = 9; - } - break; - case 8: - if (tvShow->smartshopperShow.itemAmounts[0] < 0xff) - { - gUnknown_020387E8 = 9; - } else - { - gUnknown_020387E8 = 12; - } - break; - case 9: - sub_80BF154(1, &tvShow->smartshopperShow); - TVShowDone(); - break; - case 10: - if (tvShow->smartshopperShow.priceReduced == 1) - { - gUnknown_020387E8 = 8; - } else - { - gUnknown_020387E8 = 9; - } - break; - case 11: - TVShowConvertInternationalString(gStringVar1, tvShow->smartshopperShow.playerName, tvShow->smartshopperShow.language); - StringCopy(gStringVar2, ItemId_GetItem(tvShow->smartshopperShow.itemIds[0])->name); - if (tvShow->smartshopperShow.priceReduced == 1) - { - gUnknown_020387E8 = 8; - } else - { - gUnknown_020387E8 = 12; - } - break; - case 12: - TVShowConvertInternationalString(gStringVar1, tvShow->smartshopperShow.playerName, tvShow->smartshopperShow.language); - TVShowDone(); - break; - } - ShowFieldMessage(gTVSmartShopperTextGroup[switchval]); -} - -void DoTVShowTheNameRaterShow(void) { - TVShow *tvShow; - u8 switchval; - tvShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004]; - gScriptResult = 0; - switchval = gUnknown_020387E8; - switch (switchval) { - case 0: - TVShowConvertInternationalString(gStringVar1, tvShow->nameRaterShow.trainerName, tvShow->nameRaterShow.language); - StringCopy(gStringVar2, gSpeciesNames[tvShow->nameRaterShow.species]); - TVShowConvertInternationalString(gStringVar3, tvShow->nameRaterShow.pokemonName, tvShow->nameRaterShow.pokemonNameLanguage); - gUnknown_020387E8 = sub_80BF7E8(&tvShow->nameRaterShow) + 1; - break; - case 1: - case 3: - case 4: - case 5: - case 6: - case 7: - case 8: - if (tvShow->nameRaterShow.random == 0) { - gUnknown_020387E8 = 9; - } else if (tvShow->nameRaterShow.random == 1) { - gUnknown_020387E8 = 10; - } else if (tvShow->nameRaterShow.random == 2) { - gUnknown_020387E8 = 11; - } - break; - case 2: - TVShowConvertInternationalString(gStringVar1, tvShow->nameRaterShow.trainerName, tvShow->nameRaterShow.language); - if (tvShow->nameRaterShow.random == 0) { - gUnknown_020387E8 = 9; - } else if (tvShow->nameRaterShow.random == 1) { - gUnknown_020387E8 = 10; - } else if (tvShow->nameRaterShow.random == 2) { - gUnknown_020387E8 = 11; - } - break; - case 9: - case 10: - case 11: - sub_80BF820(0, 1, 0, 1, 0, &tvShow->nameRaterShow); - TVShowConvertInternationalString(gStringVar3, gStringVar1, tvShow->nameRaterShow.pokemonNameLanguage); - sub_80BF820(0, 0, 0, 1, 0, &tvShow->nameRaterShow); - TVShowConvertInternationalString(gStringVar2, gStringVar1, tvShow->nameRaterShow.pokemonNameLanguage); - TVShowConvertInternationalString(gStringVar1, tvShow->nameRaterShow.pokemonName, tvShow->nameRaterShow.pokemonNameLanguage); - gUnknown_020387E8 = 12; - break; - case 13: - sub_80BF820(0, 0, 3, 1, 0, &tvShow->nameRaterShow); - TVShowConvertInternationalString(gStringVar3, gStringVar1, tvShow->nameRaterShow.pokemonNameLanguage); - sub_80BF820(0, 0, 2, 0, 0, &tvShow->nameRaterShow); - TVShowConvertInternationalString(gStringVar2, gStringVar1, tvShow->nameRaterShow.language); - TVShowConvertInternationalString(gStringVar1, tvShow->nameRaterShow.trainerName, tvShow->nameRaterShow.language); - gUnknown_020387E8 = 14; - break; - case 14: - sub_80BF820(0, 0, 3, 0, 0, &tvShow->nameRaterShow); - TVShowConvertInternationalString(gStringVar3, gStringVar1, tvShow->nameRaterShow.language); - sub_80BF820(0, 0, 2, 1, 0, &tvShow->nameRaterShow); - TVShowConvertInternationalString(gStringVar2, gStringVar1, tvShow->nameRaterShow.pokemonNameLanguage); - TVShowConvertInternationalString(gStringVar1, tvShow->nameRaterShow.trainerName, tvShow->nameRaterShow.language); - gUnknown_020387E8 = 18; - break; - case 15: - sub_80BF820(1, 0, 2, 1, 0, &tvShow->nameRaterShow); - TVShowConvertInternationalString(gStringVar1, gStringVar2, tvShow->nameRaterShow.pokemonNameLanguage); - StringCopy(gStringVar2, gSpeciesNames[tvShow->nameRaterShow.species]); - sub_80BF820(2, 0, 3, 2, tvShow->nameRaterShow.species, &tvShow->nameRaterShow); - gUnknown_020387E8 = 16; - break; - case 16: - sub_80BF820(0, 0, 3, 1, 0, &tvShow->nameRaterShow); - TVShowConvertInternationalString(gStringVar3, gStringVar1, tvShow->nameRaterShow.pokemonNameLanguage); - sub_80BF820(0, 0, 2, 2, tvShow->nameRaterShow.species, &tvShow->nameRaterShow); - gUnknown_020387E8 = 17; - break; - case 17: - sub_80BF820(1, 0, 2, 1, 0, &tvShow->nameRaterShow); - TVShowConvertInternationalString(gStringVar1, gStringVar2, tvShow->nameRaterShow.pokemonNameLanguage); - sub_80BF820(2, 0, 3, 2, tvShow->nameRaterShow.var1C, &tvShow->nameRaterShow); - StringCopy(gStringVar2, gSpeciesNames[tvShow->nameRaterShow.var1C]); - gUnknown_020387E8 = 18; - break; - case 12: - switchval = 18; - gUnknown_020387E8 = 18; - case 18: - TVShowConvertInternationalString(gStringVar1, tvShow->nameRaterShow.pokemonName, tvShow->nameRaterShow.pokemonNameLanguage); - TVShowConvertInternationalString(gStringVar2, tvShow->nameRaterShow.trainerName, tvShow->nameRaterShow.language); - TVShowDone(); - break; - } - ShowFieldMessage(gTVNameRaterTextGroup[switchval]); -} - -void DoTVShowPokemonTodaySuccessfulCapture(void) { - TVShow *tvShow; - u8 switchval; - tvShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004]; - gScriptResult = 0; - switchval = gUnknown_020387E8; - switch (switchval) { - case 0: - TVShowConvertInternationalString(gStringVar1, tvShow->pokemonToday.playerName, tvShow->pokemonToday.language); - StringCopy(gStringVar2, gSpeciesNames[tvShow->pokemonToday.species]); - TVShowConvertInternationalString(gStringVar3, tvShow->pokemonToday.nickname, tvShow->pokemonToday.language2); - if (tvShow->pokemonToday.ball == ITEM_MASTER_BALL) { - gUnknown_020387E8 = 5; - } else { - gUnknown_020387E8 = 1; - } - break; - case 1: - gUnknown_020387E8 = 2; - break; - case 2: - StringCopy(gStringVar2, ItemId_GetItem(tvShow->pokemonToday.ball)->name); - sub_80BF088(2, tvShow->pokemonToday.var12); - if (tvShow->pokemonToday.var12 < 4) { - gUnknown_020387E8 = 3; - } else { - gUnknown_020387E8 = 4; - } - break; - case 3: - TVShowConvertInternationalString(gStringVar1, tvShow->pokemonToday.playerName, tvShow->pokemonToday.language); - StringCopy(gStringVar2, gSpeciesNames[tvShow->pokemonToday.species]); - TVShowConvertInternationalString(gStringVar3, tvShow->pokemonToday.nickname, tvShow->pokemonToday.language2); - gUnknown_020387E8 = 6; - break; - case 4: - gUnknown_020387E8 = 6; - break; - case 5: - TVShowConvertInternationalString(gStringVar1, tvShow->pokemonToday.playerName, tvShow->pokemonToday.language); - StringCopy(gStringVar2, gSpeciesNames[tvShow->pokemonToday.species]); - gUnknown_020387E8 = 6; - break; - case 6: - TVShowConvertInternationalString(gStringVar1, tvShow->pokemonToday.playerName, tvShow->pokemonToday.language); - StringCopy(gStringVar2, gSpeciesNames[tvShow->pokemonToday.species]); - TVShowConvertInternationalString(gStringVar3, tvShow->pokemonToday.nickname, tvShow->pokemonToday.language2); - gUnknown_020387E8 += (Random() % 4) + 1; - break; - case 7: - case 8: - StringCopy(gStringVar1, gSpeciesNames[tvShow->pokemonToday.species]); - TVShowConvertInternationalString(gStringVar2, tvShow->pokemonToday.nickname, tvShow->pokemonToday.language2); - sub_80BF638(2, tvShow->pokemonToday.species); - gUnknown_020387E8 = 11; - break; - case 9: - case 10: - StringCopy(gStringVar1, gSpeciesNames[tvShow->pokemonToday.species]); - TVShowConvertInternationalString(gStringVar2, tvShow->pokemonToday.nickname, tvShow->pokemonToday.language2); - gUnknown_020387E8 = 11; - break; - case 11: - TVShowDone(); - break; - } - ShowFieldMessage(gTVPokemonTodayTextGroup[switchval]); -} - -void DoTVShowPokemonTodayFailedCapture(void) { - TVShow *tvShow; - u8 switchval; - u16 rval; - tvShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004]; - gScriptResult = 0; - switchval = gUnknown_020387E8; - switch (switchval) { - case 0: - TVShowConvertInternationalString(gStringVar1, tvShow->pokemonTodayFailed.playerName, tvShow->pokemonTodayFailed.language); - StringCopy(gStringVar2, gSpeciesNames[tvShow->pokemonTodayFailed.species]); - gUnknown_020387E8 = 1; - break; - case 1: - TVShowConvertInternationalString(gStringVar1, tvShow->pokemonTodayFailed.playerName, tvShow->pokemonTodayFailed.language); - sub_80FBFB4(gStringVar2, tvShow->pokemonTodayFailed.var12, 0); - StringCopy(gStringVar3, gSpeciesNames[tvShow->pokemonTodayFailed.species2]); - if (tvShow->pokemonTodayFailed.var11 == 1) { - gUnknown_020387E8 = 3; - } else { - gUnknown_020387E8 = 2; - } - break; - case 2: - case 3: - TVShowConvertInternationalString(gStringVar1, tvShow->pokemonTodayFailed.playerName, tvShow->pokemonTodayFailed.language); - sub_80BF088(1, tvShow->pokemonTodayFailed.var10); - rval = (Random() % 3); - if (rval == 0) { - gUnknown_020387E8 = 5; - } else { - gUnknown_020387E8 = 4; - } - break; - case 4: - case 5: - TVShowConvertInternationalString(gStringVar1, tvShow->pokemonTodayFailed.playerName, tvShow->pokemonTodayFailed.language); - gUnknown_020387E8 = 6; - break; - case 6: - TVShowDone(); - break; - } - ShowFieldMessage(gTVPokemonTodayFailedCaptureTextGroup[switchval]); -} - -void DoTVShowPokemonFanClubLetter(void) { - TVShow *tvShow; - u8 switchval; - u16 rval; - tvShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004]; - gScriptResult = 0; - switchval = gUnknown_020387E8; - switch (switchval) { - case 0: - TVShowConvertInternationalString(gStringVar1, tvShow->fanclubLetter.playerName, tvShow->fanclubLetter.language); - StringCopy(gStringVar2, gSpeciesNames[tvShow->fanclubLetter.species]); - gUnknown_020387E8 = 50; - break; - case 1: - rval = (Random() % 4) + 1; - if (rval == 1) { - gUnknown_020387E8 = 2; - } else { - gUnknown_020387E8 = rval + 2; - } - break; - case 2: - gUnknown_020387E8 = 51; - break; - case 3: - gUnknown_020387E8 += (Random() % 3) + 1; - break; - case 4: - case 5: - case 6: - sub_80BF79C(tvShow); - gUnknown_020387E8 = 7; - break; - case 7: - rval = (Random() % 0x1f) + 0x46; - sub_80BF088(2, rval); - TVShowDone(); - break; - case 50: - ConvertEasyChatWordsToString(gStringVar4, tvShow->fanclubLetter.pad04, 2, 2); - ShowFieldMessage(gStringVar4); - gUnknown_020387E8 = 1; - return; - case 51: - ConvertEasyChatWordsToString(gStringVar4, tvShow->fanclubLetter.pad04, 2, 2); - ShowFieldMessage(gStringVar4); - gUnknown_020387E8 = 3; - return; - } - ShowFieldMessage(gTVFanClubTextGroup[switchval]); -} - -void DoTVShowRecentHappenings(void) { - TVShow *tvShow; - u8 switchval; - tvShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004]; - gScriptResult = 0; - switchval = gUnknown_020387E8; - switch (switchval) { - case 0: - TVShowConvertInternationalString(gStringVar1, tvShow->recentHappenings.playerName, tvShow->recentHappenings.language); - sub_80BF79C(tvShow); - gUnknown_020387E8 = 50; - break; - case 1: - gUnknown_020387E8 += 1 + (Random() % 3); - break; - case 2: - case 3: - case 4: - gUnknown_020387E8 = 5; - break; - case 5: - TVShowDone(); - break; - case 50: - ConvertEasyChatWordsToString(gStringVar4, tvShow->recentHappenings.var04, 2, 2); - ShowFieldMessage(gStringVar4); - gUnknown_020387E8 = 1; - return; - } - ShowFieldMessage(gTVRecentHappeningsTextGroup[switchval]); -} - -void DoTVShowPokemonFanClubOpinions(void) { - TVShow *tvShow; - u8 switchval; - tvShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004]; - gScriptResult = 0; - switchval = gUnknown_020387E8; - switch (switchval) { - case 0: - TVShowConvertInternationalString(gStringVar1, tvShow->fanclubOpinions.playerName, tvShow->fanclubOpinions.language); - StringCopy(gStringVar2, gSpeciesNames[tvShow->fanclubOpinions.var02]); - TVShowConvertInternationalString(gStringVar3, tvShow->fanclubOpinions.var10, tvShow->fanclubOpinions.var0E); - gUnknown_020387E8 = tvShow->fanclubOpinions.var04B + 1; - break; - case 1: - case 2: - case 3: - TVShowConvertInternationalString(gStringVar1, tvShow->fanclubOpinions.playerName, tvShow->fanclubOpinions.language); - StringCopy(gStringVar2, gSpeciesNames[tvShow->fanclubOpinions.var02]); - sub_80EB3FC(gStringVar3, tvShow->fanclubOpinions.var1C[0]); - gUnknown_020387E8 = 4; - break; - case 4: - TVShowConvertInternationalString(gStringVar1, tvShow->fanclubOpinions.playerName, tvShow->fanclubOpinions.language); - sub_80EB3FC(gStringVar3, tvShow->fanclubOpinions.var1C[1]); - TVShowDone(); - break; - } - ShowFieldMessage(gTVFanClubOpinionsTextGroup[switchval]); -} - -void nullsub_22(void) { - -} - -void DoTVShowPokemonNewsMassOutbreak(void) -{ - TVShow *tvShow; - - tvShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004]; - - sub_80FBFB4(gStringVar1, tvShow->massOutbreak.locationMapNum, 0); - - StringCopy(gStringVar2, gSpeciesNames[tvShow->massOutbreak.species]); - - TVShowDone(); - StartMassOutbreak(); - - ShowFieldMessage(gTVPokemonOutbreakTextGroup[gUnknown_020387E8]); -} - -void DoTVShowInSearchOfTrainers(void) { - u8 switchval; - gScriptResult = 0; - switchval = gUnknown_020387E8; - switch (switchval) { - case 0: - sub_80FBFB4(gStringVar1, gSaveBlock1.gabbyAndTyData.mapnum, 0); - if (gSaveBlock1.gabbyAndTyData.battleNum > 1) { - gUnknown_020387E8 = 1; - } else { - gUnknown_020387E8 = 2; - } - break; - case 1: - gUnknown_020387E8 = 2; - break; - case 2: - if (gSaveBlock1.gabbyAndTyData.valA_0 == 0) { - gUnknown_020387E8 = 4; - } else if (gSaveBlock1.gabbyAndTyData.valA_3 != 0) { - gUnknown_020387E8 = 5; - } else if (gSaveBlock1.gabbyAndTyData.valA_2 != 0) { - gUnknown_020387E8 = 6; - } else if (gSaveBlock1.gabbyAndTyData.valA_1 != 0) { - gUnknown_020387E8 = 7; - } else { - gUnknown_020387E8 = 3; - } - break; - case 3: - StringCopy(gStringVar1, gSpeciesNames[gSaveBlock1.gabbyAndTyData.mon1]); - StringCopy(gStringVar2, gMoveNames[gSaveBlock1.gabbyAndTyData.lastMove]); - StringCopy(gStringVar3, gSpeciesNames[gSaveBlock1.gabbyAndTyData.mon2]); - gUnknown_020387E8 = 8; - break; - case 4: - case 5: - case 6: - case 7: - gUnknown_020387E8 = 8; - break; - case 8: - sub_80EB3FC(gStringVar1, gSaveBlock1.gabbyAndTyData.quote); - StringCopy(gStringVar2, gSpeciesNames[gSaveBlock1.gabbyAndTyData.mon1]); - StringCopy(gStringVar3, gSpeciesNames[gSaveBlock1.gabbyAndTyData.mon2]); - gScriptResult = 1; - gUnknown_020387E8 = 0;; - TakeTVShowInSearchOfTrainersOffTheAir(); - break; - } - ShowFieldMessage(gTVGabbyAndTyTextGroup[switchval]); -} - -void DoTVShowPokemonAngler(void) { - TVShow *tvShow; - u8 switchval; - tvShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004]; - gScriptResult = 0; - if (tvShow->pokemonAngler.var02 < tvShow->pokemonAngler.var03) { - gUnknown_020387E8 = 0; - } else { - gUnknown_020387E8 = 1; - } - switchval = gUnknown_020387E8; - switch (switchval) { - case 0: - TVShowConvertInternationalString(gStringVar1, tvShow->pokemonAngler.playerName, tvShow->pokemonAngler.language); - StringCopy(gStringVar2, gSpeciesNames[tvShow->pokemonAngler.var04]); - sub_80BF088(2, tvShow->pokemonAngler.var03); - TVShowDone(); - break; - case 1: - TVShowConvertInternationalString(gStringVar1, tvShow->pokemonAngler.playerName, tvShow->pokemonAngler.language); - StringCopy(gStringVar2, gSpeciesNames[tvShow->pokemonAngler.var04]); - sub_80BF088(2, tvShow->pokemonAngler.var02); - TVShowDone(); - break; - } - ShowFieldMessage(gTVFishingGuruAdviceTextGroup[switchval]); -} - -void DoTVShowTheWorldOfMasters(void) { - TVShow *tvShow; - u8 switchval; - tvShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004]; - gScriptResult = 0; - switchval = gUnknown_020387E8; - switch (switchval) { - case 0: - TVShowConvertInternationalString(gStringVar1, tvShow->worldOfMasters.playerName, - tvShow->worldOfMasters.language); - sub_80BF088(1, tvShow->worldOfMasters.var06); - sub_80BF088(2, tvShow->worldOfMasters.var02); - gUnknown_020387E8 = 1; - break; - case 1: - StringCopy(gStringVar1, gSpeciesNames[tvShow->worldOfMasters.var08]); - gUnknown_020387E8 = 2; - break; - case 2: - TVShowConvertInternationalString(gStringVar1, tvShow->worldOfMasters.playerName, - tvShow->worldOfMasters.language); - sub_80FBFB4(gStringVar2, tvShow->worldOfMasters.var0a, 0); - StringCopy(gStringVar3, gSpeciesNames[tvShow->worldOfMasters.var04]); - TVShowDone(); - break; - } - ShowFieldMessage(gTVWorldOfMastersTextGroup[switchval]); -} - -void TVShowDone(void) -{ - gScriptResult = 1; - gUnknown_020387E8 = 0; - - gSaveBlock1.tvShows[gSpecialVar_0x8004].common.var01 = 0; -} - -void sub_80C2014(void) -{ - gUnknown_020387E8 = 0; -} diff --git a/src/unknown_task.c b/src/unknown_task.c new file mode 100644 index 000000000..5ec7fa6bc --- /dev/null +++ b/src/unknown_task.c @@ -0,0 +1,248 @@ +#include "global.h" +#include "data2.h" +#include "task.h" +#include "trig.h" +#include "unknown_task.h" + +struct UnknownStruct1 +{ + void *src[2]; + volatile void *dest; + u32 unkC; + void (*unk10)(void); + u8 srcBank; + u8 unk15; + u8 unk16; + u8 unk17; + u8 taskId; + u8 filler19[0x7]; +}; + +static void sub_80896F4(void); +static void sub_8089714(void); + +extern u16 gUnknown_030041B0; +extern u16 gUnknown_030041B4; +extern u16 gUnknown_030041B8; +extern u16 gUnknown_03004280; +extern u16 gUnknown_03004288; +extern u16 gUnknown_030042A0; +extern u16 gUnknown_030042A4; +extern u16 gUnknown_030042C0; + +extern u8 gUnknown_0202FFA4; + +extern struct UnknownStruct1 gUnknown_03004DC0; + +extern u16 gUnknown_03004DE0[][0x3C0]; + +void remove_some_task(void) +{ + gUnknown_03004DC0.unk15 = 0; + DmaStop(0); + if (gUnknown_03004DC0.taskId != 0xFF) + { + DestroyTask(gUnknown_03004DC0.taskId); + gUnknown_03004DC0.taskId = 0xFF; + } +} + +void dp12_8087EA4(void) +{ + CpuFill16(0, gUnknown_03004DE0, 0x780 * 2); + gUnknown_03004DC0.src[0] = 0; + gUnknown_03004DC0.src[1] = 0; + gUnknown_03004DC0.dest = 0; + gUnknown_03004DC0.unkC = 0; + gUnknown_03004DC0.srcBank = 0; + gUnknown_03004DC0.unk15 = 0; + gUnknown_03004DC0.unk16 = 0; + gUnknown_03004DC0.unk17 = 0; + gUnknown_03004DC0.taskId = 0xFF; +} + +void sub_80895F8(struct UnknownTaskStruct unk) +{ + if (unk.control == (((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1)) + { + gUnknown_03004DC0.src[0] = &gUnknown_03004DE0[0][1]; + gUnknown_03004DC0.src[1] = &gUnknown_03004DE0[1][1]; + gUnknown_03004DC0.unk10 = sub_80896F4; + } + else + { + gUnknown_03004DC0.src[0] = &gUnknown_03004DE0[0][2]; + gUnknown_03004DC0.src[1] = &gUnknown_03004DE0[1][2]; + gUnknown_03004DC0.unk10 = sub_8089714; + } + + gUnknown_03004DC0.unkC = unk.control; + gUnknown_03004DC0.dest = unk.dest; + gUnknown_03004DC0.unk15 = unk.unk8; + gUnknown_03004DC0.unk16 = unk.unk9; + gUnknown_03004DC0.unk17 = unk.unk9; +} + +void sub_8089668(void) +{ + if (gUnknown_03004DC0.unk15) + { + if (gUnknown_03004DC0.unk15 == 3) + { + gUnknown_03004DC0.unk15 = 0; + DmaStop(0); + gUnknown_0202FFA4 = 1; + } + else + { + DmaStop(0); + DmaSet(0, gUnknown_03004DC0.src[gUnknown_03004DC0.srcBank], gUnknown_03004DC0.dest, gUnknown_03004DC0.unkC); + gUnknown_03004DC0.unk10(); + gUnknown_03004DC0.srcBank ^= 1; + } + } +} + +static void sub_80896F4(void) +{ + u16 *dest = (u16 *)gUnknown_03004DC0.dest; + u16 *src = (u16 *)&gUnknown_03004DE0[gUnknown_03004DC0.srcBank]; + *dest = *src; +} + +static void sub_8089714(void) +{ + u32 *dest = (u32 *)gUnknown_03004DC0.dest; + u32 *src = (u32 *)&gUnknown_03004DE0[gUnknown_03004DC0.srcBank]; + *dest = *src; +} + +static void task00_for_dp12(u8 taskId) +{ + int value = 0; + + if (gUnknown_0202FFA4) + { + DestroyTask(taskId); + gUnknown_03004DC0.taskId = 0xFF; + } + else + { + if (gTasks[taskId].data[7]) + { + switch (gTasks[taskId].data[6]) + { + case 0x0: + value = gUnknown_030042A4; + break; + case 0x2: + value = gUnknown_030042A0; + break; + case 0x4: + value = gUnknown_030042C0; + break; + case 0x6: + value = gUnknown_030041B4; + break; + case 0x8: + value = gUnknown_03004288; + break; + case 0xA: + value = gUnknown_03004280; + break; + case 0xC: + value = gUnknown_030041B0; + break; + case 0xE: + value = gUnknown_030041B8; + break; + } + } + if (gTasks[taskId].data[4]) + { + int i; + int offset; + gTasks[taskId].data[4]--; + offset = gTasks[taskId].data[3] + 320; + for (i = gTasks[taskId].data[0]; i < gTasks[taskId].data[1]; i++) + { + gUnknown_03004DE0[gUnknown_03004DC0.srcBank][i] = gUnknown_03004DE0[0][offset] + value; + offset++; + } + } + else + { + int i; + int offset; + gTasks[taskId].data[4] = gTasks[taskId].data[5]; + offset = gTasks[taskId].data[3] + 320; + for (i = gTasks[taskId].data[0]; i < gTasks[taskId].data[1]; i++) + { + gUnknown_03004DE0[gUnknown_03004DC0.srcBank][i] = gUnknown_03004DE0[0][offset] + value; + offset++; + } + gTasks[taskId].data[3]++; + if (gTasks[taskId].data[3] == gTasks[taskId].data[2]) + { + gTasks[taskId].data[3] = 0; + } + } + } +} + +static void sub_80898FC(u16 *a1, u8 a2, u8 a3, u8 a4) +{ + u16 i = 0; + u8 offset = 0; + + while (i < 0x100) + { + a1[i] = (gSineTable[offset] * a3) / 256; + offset += a2; + i++; + } +} + +u8 sub_8089944(u8 a1, u8 a2, u8 a3, u8 a4, u8 a5, u8 a6, u8 a7) +{ + int i; + int offset; + struct UnknownTaskStruct unk; + u8 taskId; + + dp12_8087EA4(); + + unk.dest = (void *)(REG_ADDR_BG0HOFS + a6); + unk.control = ((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1; + unk.unk8 = 1; + unk.unk9 = 0; + + sub_80895F8(unk); + + taskId = CreateTask(task00_for_dp12, 0); + + gTasks[taskId].data[0] = a1; + gTasks[taskId].data[1] = a2; + gTasks[taskId].data[2] = 256 / a3; + gTasks[taskId].data[3] = 0; + gTasks[taskId].data[4] = a5; + gTasks[taskId].data[5] = a5; + gTasks[taskId].data[6] = a6; + gTasks[taskId].data[7] = a7; + + gUnknown_03004DC0.taskId = taskId; + gUnknown_0202FFA4 = 0; + + sub_80898FC(&gUnknown_03004DE0[0][320], a3, a4, a2 - a1); + + offset = 320; + + for (i = a1; i < a2; i++) + { + gUnknown_03004DE0[0][i] = gUnknown_03004DE0[0][offset]; + gUnknown_03004DE0[1][i] = gUnknown_03004DE0[0][offset]; + offset++; + } + + return taskId; +} diff --git a/src/unused_8124F94.c b/src/unused_8124F94.c index 93b569058..5f76fa92e 100644 --- a/src/unused_8124F94.c +++ b/src/unused_8124F94.c @@ -64,7 +64,7 @@ u8 unref_sub_8124FD8(struct UnknownStruct1 *a, const struct UnknownStruct2 *b) } else { - sub_800D238(b->src, a->dest + a->unk2 * 64); + LZDecompressWram(b->src, a->dest + a->unk2 * 64); } a->unk88[a->unk1].unk8 = a->unk2; temp = r6 + a->unk2; @@ -95,7 +95,7 @@ u8 unref_sub_81250A4(struct UnknownStruct1 *a, struct UnknownStruct3 *b) { u16 palette[16]; - sub_800D238(b->paletteSrc, palette); + LZDecompressWram(b->paletteSrc, palette); LoadPalette(palette, a->paletteNum * 16, 32); } a->unk8[a->paletteNum].paletteCount = a->paletteNum; @@ -111,7 +111,7 @@ u8 unref_sub_8125118(struct UnknownStruct1 *a, struct UnknownStruct3 *b) u8 r7 = b->paletteCount; u8 i; - sub_800D238(b->paletteSrc, palettes); + LZDecompressWram(b->paletteSrc, palettes); for (i = a->paletteNum; i < r7; i++) { if (a->paletteNum + i >= 16) diff --git a/sym_bss.txt b/sym_bss.txt index 315bad6bb..4f6d9c95b 100644 --- a/sym_bss.txt +++ b/sym_bss.txt @@ -1,172 +1,41 @@ - .include "src/main.o" - .include "src/sprite.o" - .include "src/text.o" - .include "src/string_util.o" - .include "src/link.o" - .include "src/rtc.o" - - .align 2 -gUnknown_03000470: @ 3000470 - .space 0x68 - -gUnknown_030004D8: @ 30004D8 - .space 0x8 - -gUnknown_030004E0: @ 30004E0 - .space 0x8 - -gUnknown_030004E8: @ 30004E8 - .space 0x18 - -gUnknown_03000500: @ 3000500 - .space 0x8 - -gUnknown_03000508: @ 3000508 - .space 0x8 - -gUnknown_03000510: @ 3000510 - .space 0x10 - -gUnknown_03000520: @ 3000520 - .space 0xC - -gUnknown_0300052C: @ 300052C - .space 0x2 - -gUnknown_0300052E: @ 300052E - .space 0x2 - -gUnknown_03000530: @ 3000530 - .space 0x18 - -gUnknown_03000548: @ 3000548 - .space 0x14 - -gUnknown_0300055C: @ 300055C - .space 0x4 - -gUnknown_03000560: @ 3000560 - .space 0x1C - - .include "src/play_time.o" - - .align 2 -gUnknown_03000580: @ 3000580 - .space 0x4 - -gUnknown_03000584: @ 3000584 - .space 0x4 - -gUnknown_03000588: @ 3000588 - .space 0x8 - -gUnknown_03000590: @ 3000590 - .space 0x8 - -gUnknown_03000598: @ 3000598 - .space 0x2 - -gUnknown_0300059A: @ 300059A - .space 0x2 - -gUnknown_0300059C: @ 300059C - .space 0x4 - -gUnknown_030005A0: @ 30005A0 - .space 0x4 - -gUnknown_030005A4: @ 30005A4 - .space 0x2 - -gUnknown_030005A6: @ 30005A6 - .space 0x2 - - .include "src/field_message_box.o" - .include "src/text_window.o" - .include "src/script.o" - .include "src/start_menu.o" - .include "src/menu.o" - .include "src/tileset_anim.o" - .include "src/sound.o" - -gUnknown_030006DC: @ 30006DC - .space 0x4 - - .include "src/field_effect.o" - -gUnknown_03000700: @ 3000700 - .space 0x1 - -gUnknown_03000701: @ 3000701 - .space 0x3 - -gUnknown_03000704: @ 3000704 - .space 0x4 - -gUnknown_03000708: @ 3000708 - .space 0x10 - -gUnknown_03000718: @ 3000718 - .space 0x4 - -gUnknown_0300071C: @ 300071C - .space 0x4 - -gUnknown_03000720: @ 3000720 - .space 0x1 - -gUnknown_03000721: @ 3000721 - .space 0x1 - -gUnknown_03000722: @ 3000722 - .space 0x6 - -gUnknown_03000728: @ 3000728 - .space 0x8 - -gUnknown_03000730: @ 3000730 - .space 0x10 - -gUnknown_03000740: @ 3000740 - .space 0x4 - -gUnknown_03000744: @ 3000744 - .space 0x4 - -gUnknown_03000748: @ 3000748 - .space 0x4 - -gUnknown_0300074C: @ 300074C - .space 0x4 - -gUnknown_03000750: @ 3000750 - .space 0x2 - -gUnknown_03000752: @ 3000752 - .space 0x2 - -gUnknown_03000754: @ 3000754 - .space 0x2 - -gUnknown_03000756: @ 3000756 - .space 0x2 - -gUnknown_03000758: @ 3000758 - .space 0x8 - -gUnknown_03000760: @ 3000760 - .space 0x50 - -gUnknown_030007B0: @ 30007B0 - .space 0x4 - -gPcItemMenuOptionsNum: @ 30007B4 - .space 0x4 - -gUnknown_030007B8: @ 30007B8 - .space 0x770 - - .include "src/agb_flash.o" - .include "src/siirtc.o" + .include "src/engine/main.o" + .include "src/engine/sprite.o" + .include "src/engine/text.o" + .include "src/engine/string_util.o" + .include "src/engine/link.o" + .include "src/engine/rtc.o" + .include "src/field/daycare.o" + .include "src/engine/trade.o" + .include "src/scene/berry_blender.o" + .include "src/engine/play_time.o" + .include "src/field/overworld.o" + .include "src/field/field_camera.o" + .include "src/field/field_map_obj.o" + .include "src/field/field_message_box.o" + .include "src/engine/text_window.o" + .include "src/engine/script.o" + .include "src/field/start_menu.o" + .include "src/engine/menu.o" + .include "src/engine/tileset_anim.o" + .include "src/engine/sound.o" + .include "src/field/field_weather.o" + .include "src/field/field_effect.o" + .include "src/field/item_menu.o" + .include "src/field/shop.o" + .include "src/engine/record_mixing.o" + .include "src/field/tv.o" + .include "src/battle/battle_anim_80CA710.o" + .include "src/field/easy_chat.o" + .include "src/field/pokenav.o" + .include "src/field/mauville_man.o" + .include "src/field/menu_helpers.o" + .include "src/scene/contest_painting.o" + .include "src/field/pokeblock.o" + .include "src/field/field_specials.o" + .include "src/pokemon/learn_move.o" + .include "src/field/player_pc.o" + .include "asm/m4a_1.o" + .include "src/libs/agb_flash.o" + .include "src/libs/siirtc.o" .include "tools/agbcc/lib/libgcc.a:dp-bit.o" .include "tools/agbcc/lib/libgcc.a:fp-bit.o" diff --git a/sym_common.txt b/sym_common.txt index dfd114c8c..b1d99f58b 100644 --- a/sym_common.txt +++ b/sym_common.txt @@ -1,13 +1,13 @@ - .include "main.o" - .include "sprite.o" - .include "string_util.o" - .include "link.o" - .include "rtc.o" + .include "engine/main.o" + .include "engine/sprite.o" + .include "engine/string_util.o" + .include "engine/link.o" + .include "engine/rtc.o" + .include "rom3.o" - .align 4 -gBattleBuffersTransferData: @ 3004040 - .space 0x170 +@ battle + .align 2 gUnknown_030041B0: @ 30041B0 .space 0x4 @@ -104,25 +104,12 @@ gUnknown_03004348: @ 3004348 gUnknown_0300434C: @ 300434C .space 0x4 -gPlayerPartyCount: @ 3004350 - .space 0x10 + .include "pokemon/pokemon_1.o" + .include "engine/rng.o" + .include "scene/egg_hatch.o" + .include "engine/load_save.o" -gPlayerParty: @ 3004360 - .space 0x258 - -gEnemyPartyCount: @ 30045B8 - .space 0x8 - -gEnemyParty: @ 30045C0 - .space 0x258 - - .include "rng.o" - - .align 2 -gUnknown_0300481C: @ 300481C - .space 0x4 - - .include "load_save.o" +@ trade gUnknown_03004824: @ 3004824 .space 0x4 @@ -130,71 +117,28 @@ gUnknown_03004824: @ 3004824 gUnknown_03004828: @ 3004828 .space 0x8 -gUnknown_03004830: @ 3004830 - .space 0x4 + .include "scene/berry_blender.o" + .include "field/overworld.o" + .include "field/fieldmap.o" + .include "field/field_camera.o" + .include "field/field_map_obj.o" + .include "field/field_control_avatar.o" -gUnknown_03004834: @ 3004834 - .space 0xC - -gUnknown_03004840: @ 3004840 - .space 0x14 - -gUnknown_03004854: @ 3004854 - .space 0x4 - -word_3004858: @ 3004858 - .space 0x4 - -gFieldCallback: @ 300485C - .space 0x4 - -gUnknown_03004860: @ 3004860 - .space 0x4 - -gFieldLinkPlayerCount: @ 3004864 - .space 0xC - -gUnknown_03004870: @ 3004870 - .space 0x10 - -gUnknown_03004880: @ 3004880 - .space 0x18 - -gUnknown_03004898: @ 3004898 - .space 0x4 - -gUnknown_0300489C: @ 300489C - .space 0x4 - -gMapObjects: @ 30048A0 - .space 0x240 - -gSelectedMapObject: @ 3004AE0 - .space 0x4 +@ party_menu? + .align 2 gUnknown_03004AE4: @ 3004AE4 .space 0x4 -gCallback_03004AE8: @ 3004AE8 - .space 0x4 + .include "field/start_menu.o" + .include "engine/sound.o" + .include "battle/battle_anim.o" + .include "engine/task.o" + .include "debug/mori_debug_menu.o" -gDisableMusic: @ 3004AEC - .space 0x4 - -gSoundAnimFramesToWait: @ 3004AF0 - .space 0x10 - -gBattleAnimArgs: @ 3004B00 - .space 0x10 - -gAnimSpriteIndexArray: @ 3004B10 - .space 0x10 - - .include "task.o" - -gUnknown_03004DA0: @ 3004DA0 - .space 0x20 +@ unknown_task + .align 4 gUnknown_03004DC0: @ 3004DC0 .space 0x20 @@ -216,48 +160,47 @@ gUnknown_03005560: @ 3005560 gUnknown_030056A0: @ 30056A0 .space 0x640 -gLastFieldPokeMenuOpened: @ 3005CE0 - .space 0x4 + .include "pokemon/pokemon_menu.o" + .include "pokemon/pokedex.o" -gUnknown_03005CE4: @ 3005CE4 - .space 0x4 - -gUnknown_03005CE8: @ 3005CE8 - .space 0x4 - -gUnknown_03005CEC: @ 3005CEC - .space 0x4 +@ pokemon_summary_screen + .align 4 gUnknown_03005CF0: @ 3005CF0 .space 0x10 -gUnknown_03005D00: @ 3005D00 +@ item_menu + + .align 4 +gFieldItemUseCallback: @ 3005D00 .space 0x10 -gUnknown_03005D10: @ 3005D10 +gBagPocketScrollStates: @ 3005D10 .space 0x14 -gUnknown_03005D24: @ 3005D24 +gCurrentBagPocketItemSlots: @ 3005D24 .space 0x4 +@ contest + + .align 2 gUnknown_03005D28: @ 3005D28 .space 0x4 -gUnknown_03005D2C: @ 3005D2C - .space 0x4 + .include "engine/record_mixing.o" + .include "debug/sound_check_menu.o" + .include "field/tv.o" -gUnknown_03005D30: @ 3005D30 - .space 0x4 + .space 0x64 @ unused variable? -gUnknown_03005D34: @ 3005D34 - .space 0x4 - -gUnknown_03005D38: @ 3005D38 - .space 0x68 +@ mauville_old_man + .align 4 gUnknown_03005DA0: @ 3005DA0 .space 0x48 +@ cute_sketch + gUnknown_03005DE8: @ 3005DE8 .space 0x4 @@ -288,60 +231,23 @@ gUnknown_03005E08: @ 3005E08 gUnknown_03005E0C: @ 3005E0C .space 0x4 -gUnknown_03005E10: @ 3005E10 - .space 0x10 + .include "scene/contest_painting.o" + .include "scene/evolution_scene.o" -gUnknown_03005E20: @ 3005E20 - .space 0x20 - -gUnknown_03005E40: @ 3005E40 - .space 0x4C - -gUnknown_03005E8C: @ 3005E8C - .space 0x4 - -gUnknown_03005E90: @ 3005E90 - .space 0x4 - -gUnknown_03005E94: @ 3005E94 - .space 0x4 +@ pokedex_cry_screen gUnknown_03005E98: @ 3005E98 .space 0x4 -gLastWrittenSector: @ 3005E9C - .space 0x4 + .include "engine/save.o" -gLastSaveCounter: @ 3005EA0 - .space 0x4 + .space 0x10 @ unused variable? -gLastKnownGoodSector: @ 3005EA4 - .space 0x4 + .include "scene/intro.o" -gDamagedSaveSectors: @ 3005EA8 - .space 0x4 - -gSaveCounter: @ 3005EAC - .space 0x4 - -gFastSaveSection: @ 3005EB0 - .space 0x4 - -gUnknown_03005EB4: @ 3005EB4 - .space 0x4 - -gSaveFileStatus: @ 3005EB8 - .space 0x4 - -gGameContinueCallback: @ 3005EBC - .space 0x14 - -gIntroFrameCounter: @ 3005ED0 - .space 0x10 - -gMultibootProgramStruct: @ 3005EE0 - .space 0x2C +@ battle_anim_813F0F4 + .align 2 gUnknown_03005F0C: @ 3005F0C .space 0x4 @@ -351,38 +257,6 @@ gUnknown_03005F10: @ 3005F10 gUnknown_03005F14: @ 3005F14 .space 0xC -gUnknown_03005F20: @ 3005F20 - .space 0x4 - -gUnknown_03005F24: @ 3005F24 - .space 0x4 - -gUnknown_03005F28: @ 3005F28 - .space 0x4 - -gUnknown_03005F2C: @ 3005F2C - .space 0x4 - -gUnknown_03005F30: @ 3005F30 - .space 0x4 - -gUnknown_03005F34: @ 3005F34 - .space 0x8 - -gUnknown_03005F3C: @ 3005F3C - .space 0x4 - -gUnknown_03005F40: @ 3005F40 - .space 0x10 - -gUnknown_03005F50: @ 3005F50 - .space 0x44 - -gUnknown_03005F94: @ 3005F94 - .space 0xC - -gUnknown_03005FA0: @ 3005FA0 - .space 0x30 - - .include "m4a_2.o" - .include "agb_flash.o" + .include "pokemon/pokeblock_feed.o" + .include "libs/m4a_2.o" + .include "libs/agb_flash.o" diff --git a/sym_ewram.txt b/sym_ewram.txt index ecb18decb..09351240f 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -1,22 +1,16 @@ - .include "src/main.o" - .include "src/sprite.o" - .include "src/text.o" - .include "src/string_util.o" + .include "src/engine/main.o" + .include "src/engine/sprite.o" + .include "src/engine/text.o" + .include "src/engine/string_util.o" .space 0x2E8 - .include "src/link.o" + .include "src/engine/link.o" + .include "src/rom3.o" + +@ battle .align 2 -gUnknown_020238C4: @ 20238C4 - .space 0x1 - -gUnknown_020238C5: @ 20238C5 - .space 0x1 - -gUnknown_020238C6: @ 20238C6 - .space 0x2 - gUnknown_020238C8: @ 20238C8 .space 0x4 @@ -119,7 +113,7 @@ gCurrentMove: @ 2024BE6 gUnknown_02024BE8: @ 2024BE8 .space 0x2 -gUnknown_02024BEA: @ 2024BEA +gRandomMove: @ 2024BEA .space 0x2 gBattleMoveDamage: @ 2024BEC @@ -293,26 +287,17 @@ gPID_perBank: @ 2024E70 gBattleMovePower: @ 2024E80 .space 0x2 -word_2024E82: @ 2024E82 +gMoveToLearn: @ 2024E82 .space 0x2 gBattleMonForms: @ 2024E84 .space 0x4 -byte_2024E88: @ 2024E88 - .space 0x4 + .include "src/pokemon/pokemon_1.o" + .include "src/pokemon/pokemon_2.o" + .include "src/engine/load_save.o" -gUnknown_02024E8C: @ 2024E8C - .space 0x18 - -gSaveBlock2: @ 2024EA4 - .space 0x890 - -gSaveBlock1: @ 2025734 - .space 0x3AC0 - -gLoadedSaveData: @ items - .space 0x4D8 +@ trade gUnknown_020296CC: @ 20296CC .space 0x34 @@ -323,140 +308,21 @@ gUnknown_02029700: @ 2029700 gUnknown_020297D8: @ 20297D8 .space 0x4 -gUnknown_020297DC: @ 20297DC - .space 0x4 + .include "src/scene/berry_blender.o" + .include "src/scene/new_game.o" + .include "src/field/overworld.o" + .include "src/field/fieldmap.o" + .include "src/field/field_camera.o" + .include "src/field/field_player_avatar.o" + .include "src/field/field_message_box.o" + .include "src/engine/script.o" + .include "src/field/scrcmd.o" + .include "src/field/field_control_avatar.o" + .include "src/field/event_data.o" -gUnknown_020297E0: @ 20297E0 - .space 0x4 - -gUnknown_020297E4: @ 20297E4 - .space 0x4 - -gUnknown_020297E8: @ 20297E8 - .space 0x4 - -gDifferentSaveFile: @ 20297EC - .space 0x1 - -gUnknown_020297ED: @ 20297ED - .space 0x3 - -gUnknown_020297F0: @ 20297F0 - .space 0x8 - -gUnknown_020297F8: @ 20297F8 - .space 0x8 - -gUnknown_02029800: @ 2029800 - .space 0x8 - -gUnknown_02029808: @ 2029808 - .space 0x8 - -gUnknown_02029810: @ 2029810 - .space 0x4 - -gUnknown_02029814: @ 2029814 - .space 0x2 - -gUnknown_02029816: @ 2029816 - .space 0x2 - -gLinkPlayerMapObjects: @ 2029818 - .space 0x10 - - .include "src/fieldmap.o" - -gUnknown_0202E854: @ 202E854 - .space 0x4 - -gPlayerAvatar: @ 202E858 - .space 0x14 - -gUnknown_0202E86C: @ 202E86C - .space 0x8 - -gUnknown_0202E874: @ 202E874 - .space 0x8 - -gFieldMessageBoxWindow: @ 202E87C - .space 0x30 - -gUnknown_0202E8AC: @ 202E8AC - .space 0x4 - -gUnknown_0202E8B0: @ 202E8B0 - .space 0x4 - -gUnknown_0202E8B4: @ 202E8B4 - .space 0x2 - -gUnknown_0202E8B6: @ 202E8B6 - .space 0x2 - -gUnknown_0202E8B8: @ 202E8B8 - .space 0x2 - -gUnknown_0202E8BA: @ 202E8BA - .space 0x2 - -gUnknown_0202E8BC: @ 202E8BC - .space 0x4 - -gUnknown_0202E8C0: @ 202E8C0 - .space 0x2 - -gUnknown_0202E8C2: @ 202E8C2 - .space 0x2 - -gSpecialVar_0x8000: @ 202E8C4 - .space 0x2 - -gSpecialVar_0x8001: @ 202E8C6 - .space 0x2 - -gSpecialVar_0x8002: @ 202E8C8 - .space 0x2 - -gSpecialVar_0x8003: @ 202E8CA - .space 0x2 - -gSpecialVar_0x8004: @ 202E8CC - .space 0x2 - -gSpecialVar_0x8005: @ 202E8CE - .space 0x2 - -gSpecialVar_0x8006: @ 202E8D0 - .space 0x2 - -gSpecialVar_0x8007: @ 202E8D2 - .space 0x2 - -gSpecialVar_0x8008: @ 202E8D4 - .space 0x2 - -gSpecialVar_0x8009: @ 202E8D6 - .space 0x2 - -gSpecialVar_0x800A: @ 202E8D8 - .space 0x2 - -gSpecialVar_0x800B: @ 202E8DA - .space 0x2 - -gScriptResult: @ 202E8DC - .space 0x2 - -gScriptLastTalked: @ 202E8DE - .space 0x2 - -gScriptFacing: @ 202E8E0 - .space 0x2 - -gUnknown_0202E8E2: @ 202E8E2 - .space 0x12 +@ party_menu + .align 2 gUnknown_0202E8F4: @ 202E8F4 .space 0x1 @@ -469,27 +335,21 @@ gUnknown_0202E8F6: @ 202E8F6 gUnknown_0202E8F8: @ 202E8F8 .space 0x2 -gUnknown_0202E8FA: @ 202E8FA +gPartyMenuType: @ 202E8FA .space 0x2 - .include "src/start_menu.o" - .include "src/menu.o" - .include "src/tileset_anim.o" - .include "src/palette.o" + .include "src/field/start_menu.o" + .include "src/engine/menu.o" + .include "src/engine/tileset_anim.o" + .include "src/engine/palette.o" + .include "src/engine/sound.o" + .include "src/battle/battle_anim.o" + .include "src/rom_8077ABC.o" + .include "src/scene/title_screen.o" + +@ field_weather .align 2 -gMPlay_PokemonCry: @ 202F79C - .space 0x4 - -gPokemonCryBGMDuckingCounter: @ 202F7A0 - .space 0x4 - - .include "src/battle_anim.o" - .include "src/rom_8077ABC.o" - -gUnknown_0202F7E4: @ 202F7E4 - .space 0x4 - gUnknown_0202F7E8: @ 202F7E8 .space 0x200 @@ -505,45 +365,23 @@ gUnknown_0202FF38: @ 202FF38 gUnknown_0202FF58: @ 202FF58 .space 0x4 - .include "src/battle_setup.o" - .include "src/wild_encounter.o" + .include "src/battle/battle_setup.o" + .include "src/field/wild_encounter.o" + .include "src/field/field_effect.o" -gUnknown_0202FF84: @ 202FF84 - .space 0x20 +@ unknown_task gUnknown_0202FFA4: @ 202FFA4 .space 0x4 -gUnknown_0202FFA8: @ 202FFA8 - .space 0x1 + .include "src/pokemon/pokemon_menu.o" + .include "src/pokemon/pokedex.o" + .include "src/engine/trainer_card.o" + .include "src/pokemon/pokemon_storage_system.o" -gUnknown_0202FFA9: @ 202FFA9 - .space 0x1 - -gUnknown_0202FFAA: @ 202FFAA - .space 0xA - -gPokedexView: @ 202FFB4 - .space 0x4 - -gUnknown_0202FFB8: @ 202FFB8 - .space 0x2 - -gUnknown_0202FFBA: @ 202FFBA - .space 0x2 - -gUnknown_0202FFBC: @ 202FFBC - .space 0x4 - -gTrainerCards: @ 202FFC0 - .space 0xE0 - -gPokemonStorage: @ 20300A0 - .space 0x360 - -gUnknown_02030400: @ 02030400 - .space 0x8070 +@ still pokemon_storage_system + .align 2 gUnknown_02038470: @ 2038470 .space 0x3 @@ -595,69 +433,21 @@ gUnknown_020384EA: @ 20384EA gUnknown_020384EC: @ 20384EC .space 0x4 +@ pokemon_summary_screen + gUnknown_020384F0: @ 20384F0 .space 0x4 gUnknown_020384F4: @ 20384F4 .space 0x4 -gUnknown_020384F8: @ 20384F8 - .space 0x40 + .include "src/field/script_movement.o" + .include "src/field/map_name_popup.o" + .include "src/field/item_menu.o" - .include "src/map_name_popup.o" +@ contest .align 2 -gUnknown_0203853C: @ 203853C - .space 0x4 - -gUnknown_02038540: @ 2038540 - .space 0x4 - -gUnknown_02038544: @ 2038544 - .space 0xC - -gUnknown_02038550: @ 2038550 - .space 0x4 - -gUnknown_02038554: @ 2038554 - .space 0x4 - -gUnknown_02038558: @ 2038558 - .space 0x1 - -gUnknown_02038559: @ 2038559 - .space 0x1 - -gUnknown_0203855A: @ 203855A - .space 0x1 - -gUnknown_0203855B: @ 203855B - .space 0x1 - -gUnknown_0203855C: @ 203855C - .space 0x2 - -gScriptItemId: @ 203855E - .space 0x2 - -gUnknown_02038560: @ 2038560 - .space 0x1 - -gUnknown_02038561: @ 2038561 - .space 0x1 - -gUnknown_02038562: @ 2038562 - .space 0x1 - -gUnknown_02038563: @ 2038563 - .space 0x1 - -gUnknown_02038564: @ 2038564 - .space 0x4 - -gUnknown_02038568: @ 2038568 - .space 0x4 - gUnknown_0203856C: @ 203856C .space 0x4 @@ -710,206 +500,62 @@ gScriptContestCategory: @ 203869C gScriptContestRank: @ 203869E .space 0x2 -gUnknown_020386A0: @ 20386A0 - .space 0x4 + .include "src/field/shop.o" + .include "src/field/money.o" -gUnknown_020386A4: @ 20386A4 - .space 0x4 - -gUnknown_020386A8: @ 20386A8 - .space 0x2 - -gUnknown_020386AA: @ 20386AA - .space 0x7A - -gUnknown_02038724: @ 2038724 - .space 0xC - -gUnknown_02038730: @ 2038730 - .space 0x1 - -gUnknown_02038731: @ 2038731 - .space 0x3 - -gUnknown_02038734: @ 2038734 - .space 0x4 +@ record_mixing + .align 2 gUnknown_02038738: @ 2038738 .space 0x78 -gUnknown_020387B0: @ 20387B0 - .space 0x1 + .include "src/debug/sound_check_menu.o" -gUnknown_020387B1: @ 20387B1 - .space 0x1 - -gUnknown_020387B2: @ 20387B2 - .space 0x1 - -gUnknown_020387B3: @ 20387B3 - .space 0x1 - -gUnknown_020387B4: @ 20387B4 - .space 0x24 - -gUnknown_020387D8: @ 20387D8 - .space 0x1 - -gUnknown_020387D9: @ 20387D9 - .space 0x3 +@ secret_base + .align 2 gUnknown_020387DC: @ 20387DC .space 0x4 -gUnknown_020387E0: @ 20387E0 - .space 0x2 +@ tv -gUnknown_020387E2: @ 20387E2 - .space 0x2 + .include "src/field/tv.o" -gUnknown_020387E4: @ 20387E4 - .space 0x4 - -gUnknown_020387E8: @ 20387E8 - .space 0x4 +@ fldeff_80C5CD4 + .align 2 gUnknown_020387EC: @ 20387EC .space 0x4 -gRotatingGate_GateSpriteIds: @ 20387F0 - .space 0x10 + .include "src/field/rotating_gate.o" + .include "src/field/safari_zone.o" -gRotatingGate_PuzzleConfig: @ 2038800 - .space 0x4 - -gRotatingGate_PuzzleCount: @ 2038804 - .space 0x4 - - .include "src/safari_zone.o" +@ easy_chat gUnknown_020388AC: @ 20388AC .space 0x4 +@ pokenav + gUnknown_020388B0: @ 20388B0 .space 0x4 gUnknown_020388B4: @ 20388B4 .space 0x4 -gUnknown_020388B8: @ 20388B8 - .space 0x4 + .include "src/pokemon/mon_markings.o" + .include "src/field/mauville_man.o" + .include "src/field/menu_helpers.o" + .include "src/field/region_map.o" + .include "src/field/decoration.o" + .include "src/battle/battle_ai.o" + .include "src/rom6.o" + .include "src/field/pokeblock.o" + .include "src/field/field_specials.o" -gUnknown_020388BC: @ 20388BC - .space 0x4 - -gUnknown_020388C0: @ 20388C0 - .space 0x4 - -gUnknown_020388C4: @ 20388C4 - .space 0x8 - -gUnknown_020388CC: @ 20388CC - .space 0x4 - -gUnknown_020388D0: @ 20388D0 - .space 0x4 - -gUnknown_020388D4: @ 20388D4 - .space 0x1 - -gUnknown_020388D5: @ 20388D5 - .space 0x1 - -gUnknown_020388D6: @ 20388D6 - .space 0x10 - -gUnknown_020388E6: @ 20388E6 - .space 0xC - -gUnknown_020388F2: @ 20388F2 - .space 0x1 - -gUnknown_020388F3: @ 20388F3 - .space 0x1 - -gUnknown_020388F4: @ 20388F4 - .space 0x1 - -gUnknown_020388F5: @ 20388F5 - .space 0x1 - -gUnknown_020388F6: @ 20388F6 - .space 0x1 - -gUnknown_020388F7: @ 20388F7 - .space 0x9 - -gUnknown_02038900: @ 2038900 - .space 0x8A4 - -gUnknown_020391A4: @ 20391A4 - .space 0x2 - -gUnknown_020391A6: @ 20391A6 - .space 0x2 - -gUnknown_020391A8: @ 20391A8 - .space 0x1 - -gUnknown_020391A9: @ 20391A9 - .space 0x1 - -gUnknown_020391AA: @ 20391AA - .space 0x2 - -gUnknown_020391AC: @ 20391AC - .space 0x8 - -gUnknown_020391B4: @ 20391B4 - .space 0x80 - -gUnknown_02039234: @ 2039234 - .space 0x4 - -gAIScriptPtr: @ 2039238 - .space 0x4 - -gUnknown_0203923C: @ 203923C - .space 0x8 - -gUnknown_02039244: @ 2039244 - .space 0x4 - -gUnknown_02039248: @ 2039248 - .space 0x4 - -gUnknown_0203924C: @ 203924C - .space 0x4 - -gUnknown_02039250: @ 2039250 - .space 0x1 - -gUnknown_02039251: @ 2039251 - .space 0x3 - -gUnknown_02039254: @ 2039254 - .space 0x4 - -gUnknown_02039258: @ 2039258 - .space 0x1 - -gUnknown_02039259: @ 2039259 - .space 0x1 - -gUnknown_0203925A: @ 203925A - .space 0x1 - -gUnknown_0203925B: @ 203925B - .space 0x1 - -gUnknown_0203925C: @ 203925C - .space 0x4 +@ pokedex_area_screen + .align 2 gUnknown_02039260: @ 2039260 .space 0x2 @@ -928,12 +574,16 @@ gUnknown_02039268: @ 2039268 gUnknown_0203926A: @ 203926A .space 0x2 +@ battle_message + gAbilitiesPerBank: @ 203926C .space 0x4 -gSelectedOrderFromParty: @ 2039270 - .space 0x4 + .include "src/field/choose_party.o" +@ cable_car + + .align 2 gUnknown_02039274: @ 2039274 .space 0x4 @@ -955,74 +605,21 @@ gUnknown_0203927C: @ 203927C gUnknown_0203927D: @ 203927D .space 0x7 -gLastSaveSectorStatus: @ 2039284 - .space 0x4 + .include "src/engine/save.o" + .include "src/engine/mystery_event_script.o" + .include "src/field/roamer.o" + .include "src/field/use_pokeblock.o" + .include "src/field/player_pc.o" + .include "src/scene/intro.o" + .include "src/scene/hall_of_fame.o" + .include "src/scene/credits.o" + .include "src/field/lottery_corner.o" + .include "src/field/berry_tag_screen.o" + .include "src/engine/mystery_event_menu.o" + .include "src/engine/save_failed_screen.o" + .include "src/pokemon/pokeblock_feed.o" -gUnknown_02039288: @ 2039288 - .space 0x74 - - .include "src/roamer.o" - - .align 2 -gUnknown_02039304: @ 2039304 - .space 0x4 - -gUnknown_02039308: @ 2039308 - .space 0x4 - -gUnknown_0203930C: @ 203930C - .space 0x4 - -gUnknown_02039310: @ 2039310 - .space 0x2 - -gUnknown_02039312: @ 2039312 - .space 0x2 - -gPcItemMenuOptionOrder: @ 2039314 - .space 0x4 - -gUnknown_02039318: @ 2039318 - .space 0x2 - -gUnknown_0203931A: @ 203931A - .space 0x2 - -gUnknown_0203931C: @ 203931C - .space 0x4 - -gUnknown_02039320: @ 2039320 - .space 0x2 - -gUnknown_02039322: @ 2039322 - .space 0x2 - -gUnknown_02039324: @ 2039324 - .space 0x1 - -gUnknown_02039325: @ 2039325 - .space 0x3 - - .include "src/lottery_corner.o" - -gUnknown_0203932C: @ 203932C - .space 0x2 - -gUnknown_0203932E: @ 203932E - .space 0xA - -gUnknown_02039338: @ 2039338 - .space 0x4 - -gSaveFailedType: @ 203933C - .space 0x2 - -gSaveFailedClockInfo: @ 203933E - .space 0x12 - - .align 2 -gUnknown_02039350: @ 2039350 - .space 0x8 +@ intro_credits_graphics gUnknown_02039358: @ 2039358 .space 0x2 @@ -1033,6 +630,8 @@ gUnknown_0203935A: @ 203935A gUnknown_0203935C: @ 203935C .space 0x4 +@ ??? + gTileBuffer: @ 2039360 .space 0x100 @@ -1045,19 +644,4 @@ gUnknown_02039760: @ 2039760 gUnknown_0203A360: @ 203A360 .space 0x20 -gMenuCursorSubsprites: @ 203A380 - .space 0x50 - -gUnknown_0203A3D0: @ 203A3D0 - .space 0x1 - -gUnknown_0203A3D1: @ 203A3D1 - .space 0x1 - -gUnknown_0203A3D2: @ 203A3D2 - .space 0x1 - -gUnknown_0203A3D3: @ 203A3D3 - .space 0x1 - -gUnknown_0203A3D4: @ 203A3D4 + .include "src/engine/menu_cursor.o" diff --git a/tools/gbagfx/convert_png.c b/tools/gbagfx/convert_png.c index f6a30804a..37904318c 100644 --- a/tools/gbagfx/convert_png.c +++ b/tools/gbagfx/convert_png.c @@ -7,163 +7,206 @@ #include "convert_png.h" #include "gfx.h" +static FILE *PngReadOpen(char *path, png_structp *pngStruct, png_infop *pngInfo) +{ + FILE *fp = fopen(path, "rb"); + + if (fp == NULL) + FATAL_ERROR("Failed to open \"%s\" for reading.\n", path); + + unsigned char sig[8]; + + if (fread(sig, 8, 1, fp) != 1) + FATAL_ERROR("Failed to read PNG signature from \"%s\".\n", path); + + if (png_sig_cmp(sig, 0, 8)) + FATAL_ERROR("\"%s\" does not have a valid PNG signature.\n", path); + + png_structp png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); + + if (!png_ptr) + FATAL_ERROR("Failed to create PNG read struct.\n"); + + png_infop info_ptr = png_create_info_struct(png_ptr); + + if (!info_ptr) + FATAL_ERROR("Failed to create PNG info struct.\n"); + + if (setjmp(png_jmpbuf(png_ptr))) + FATAL_ERROR("Failed to init I/O for reading \"%s\".\n", path); + + png_init_io(png_ptr, fp); + png_set_sig_bytes(png_ptr, 8); + png_read_info(png_ptr, info_ptr); + + *pngStruct = png_ptr; + *pngInfo = info_ptr; + + return fp; +} + void ReadPng(char *path, struct Image *image) { - FILE *fp = fopen(path, "rb"); + png_structp png_ptr; + png_infop info_ptr; - if (fp == NULL) - FATAL_ERROR("Failed to open \"%s\" for reading.\n", path); + FILE *fp = PngReadOpen(path, &png_ptr, &info_ptr); - unsigned char sig[8]; + int bit_depth = png_get_bit_depth(png_ptr, info_ptr); - if (fread(sig, 8, 1, fp) != 1) - FATAL_ERROR("Failed to read PNG signature from \"%s\".\n", path); + if (bit_depth != image->bitDepth) + FATAL_ERROR("\"%s\" has a bit depth of %d, but the expected bit depth is %d.\n", path, bit_depth, image->bitDepth); - if (png_sig_cmp(sig, 0, 8)) - FATAL_ERROR("\"%s\" does not have a valid PNG signature.\n", path); + int color_type = png_get_color_type(png_ptr, info_ptr); - png_structp png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); + if (color_type != PNG_COLOR_TYPE_GRAY && color_type != PNG_COLOR_TYPE_PALETTE) + FATAL_ERROR("\"%s\" has an unsupported color type.\n", path); - if (!png_ptr) - FATAL_ERROR("Failed to create PNG read struct.\n"); + // Check if the image has a palette so that we can tell if the colors need to be inverted later. + // Don't read the palette because it's not needed for now. + image->hasPalette = (color_type == PNG_COLOR_TYPE_PALETTE); - png_infop info_ptr = png_create_info_struct(png_ptr); + image->width = png_get_image_width(png_ptr, info_ptr); + image->height = png_get_image_height(png_ptr, info_ptr); - if (!info_ptr) - FATAL_ERROR("Failed to create PNG info struct.\n"); + int rowbytes = png_get_rowbytes(png_ptr, info_ptr); - if (setjmp(png_jmpbuf(png_ptr))) - FATAL_ERROR("Failed to init I/O for reading \"%s\".\n", path); + image->pixels = malloc(image->height * rowbytes); - png_init_io(png_ptr, fp); - png_set_sig_bytes(png_ptr, 8); - png_read_info(png_ptr, info_ptr); + if (image->pixels == NULL) + FATAL_ERROR("Failed to allocate pixel buffer.\n"); - int bit_depth = png_get_bit_depth(png_ptr, info_ptr); + png_bytepp row_pointers = malloc(image->height * sizeof(png_bytep)); - if (bit_depth != image->bitDepth) - FATAL_ERROR("\"%s\" has a bit depth of %d, but the expected bit depth is %d.\n", path, bit_depth, image->bitDepth); + if (row_pointers == NULL) + FATAL_ERROR("Failed to allocate row pointers.\n"); - int color_type = png_get_color_type(png_ptr, info_ptr); + for (int i = 0; i < image->height; i++) + row_pointers[i] = (png_bytep)(image->pixels + (i * rowbytes)); - if (color_type != PNG_COLOR_TYPE_GRAY && color_type != PNG_COLOR_TYPE_PALETTE) - FATAL_ERROR("\"%s\" has an unsupported color type.\n", path); + if (setjmp(png_jmpbuf(png_ptr))) + FATAL_ERROR("Error reading from \"%s\".\n", path); - // Check if the image has a palette so that we can tell if the colors need to be inverted later. - // Don't read the palette because it's not needed for now. - image->hasPalette = (color_type == PNG_COLOR_TYPE_PALETTE); + png_read_image(png_ptr, row_pointers); - image->width = png_get_image_width(png_ptr, info_ptr); - image->height = png_get_image_height(png_ptr, info_ptr); + png_destroy_read_struct(&png_ptr, &info_ptr, NULL); - int rowbytes = png_get_rowbytes(png_ptr, info_ptr); + free(row_pointers); + fclose(fp); +} - image->pixels = malloc(image->height * rowbytes); +void ReadPngPalette(char *path, struct Palette *palette) +{ + png_structp png_ptr; + png_infop info_ptr; + png_colorp colors; + int numColors; - if (image->pixels == NULL) - FATAL_ERROR("Failed to allocate pixel buffer.\n"); + FILE *fp = PngReadOpen(path, &png_ptr, &info_ptr); - png_bytepp row_pointers = malloc(image->height * sizeof(png_bytep)); + if (png_get_color_type(png_ptr, info_ptr) != PNG_COLOR_TYPE_PALETTE) + FATAL_ERROR("The image \"%s\" does not contain a palette.\n", path); - if (row_pointers == NULL) - FATAL_ERROR("Failed to allocate row pointers.\n"); + if (png_get_PLTE(png_ptr, info_ptr, &colors, &numColors) != PNG_INFO_PLTE) + FATAL_ERROR("Failed to retrieve palette from \"%s\".\n", path); - for (int i = 0; i < image->height; i++) - row_pointers[i] = (png_bytep)(image->pixels + (i * rowbytes)); + if (numColors > 256) + FATAL_ERROR("Images with more than 256 colors are not supported.\n"); - if (setjmp(png_jmpbuf(png_ptr))) - FATAL_ERROR("Error reading from \"%s\".\n", path); + palette->numColors = numColors; + for (int i = 0; i < numColors; i++) { + palette->colors[i].red = colors[i].red; + palette->colors[i].green = colors[i].green; + palette->colors[i].blue = colors[i].blue; + } - png_read_image(png_ptr, row_pointers); + png_destroy_read_struct(&png_ptr, &info_ptr, NULL); - png_destroy_read_struct(&png_ptr, &info_ptr, NULL); - - free(row_pointers); - fclose(fp); + fclose(fp); } void SetPngPalette(png_structp png_ptr, png_infop info_ptr, struct Palette *palette) { - png_colorp colors = malloc(palette->numColors * sizeof(png_color)); + png_colorp colors = malloc(palette->numColors * sizeof(png_color)); - if (colors == NULL) - FATAL_ERROR("Failed to allocate PNG palette.\n"); + if (colors == NULL) + FATAL_ERROR("Failed to allocate PNG palette.\n"); - for (int i = 0; i < palette->numColors; i++) { - colors[i].red = palette->colors[i].red; - colors[i].green = palette->colors[i].green; - colors[i].blue = palette->colors[i].blue; - } + for (int i = 0; i < palette->numColors; i++) { + colors[i].red = palette->colors[i].red; + colors[i].green = palette->colors[i].green; + colors[i].blue = palette->colors[i].blue; + } - png_set_PLTE(png_ptr, info_ptr, colors, palette->numColors); + png_set_PLTE(png_ptr, info_ptr, colors, palette->numColors); - free(colors); + free(colors); } void WritePng(char *path, struct Image *image) { - FILE *fp = fopen(path, "wb"); + FILE *fp = fopen(path, "wb"); - if (fp == NULL) - FATAL_ERROR("Failed to open \"%s\" for writing.\n", path); + if (fp == NULL) + FATAL_ERROR("Failed to open \"%s\" for writing.\n", path); - png_structp png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); + png_structp png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); - if (!png_ptr) - FATAL_ERROR("Failed to create PNG write struct.\n"); + if (!png_ptr) + FATAL_ERROR("Failed to create PNG write struct.\n"); - png_infop info_ptr = png_create_info_struct(png_ptr); + png_infop info_ptr = png_create_info_struct(png_ptr); - if (!info_ptr) - FATAL_ERROR("Failed to create PNG info struct.\n"); + if (!info_ptr) + FATAL_ERROR("Failed to create PNG info struct.\n"); - if (setjmp(png_jmpbuf(png_ptr))) - FATAL_ERROR("Failed to init I/O for writing \"%s\".\n", path); + if (setjmp(png_jmpbuf(png_ptr))) + FATAL_ERROR("Failed to init I/O for writing \"%s\".\n", path); - png_init_io(png_ptr, fp); + png_init_io(png_ptr, fp); - if (setjmp(png_jmpbuf(png_ptr))) - FATAL_ERROR("Error writing header for \"%s\".\n", path); + if (setjmp(png_jmpbuf(png_ptr))) + FATAL_ERROR("Error writing header for \"%s\".\n", path); - int color_type = image->hasPalette ? PNG_COLOR_TYPE_PALETTE : PNG_COLOR_TYPE_GRAY; + int color_type = image->hasPalette ? PNG_COLOR_TYPE_PALETTE : PNG_COLOR_TYPE_GRAY; - png_set_IHDR(png_ptr, info_ptr, image->width, image->height, - image->bitDepth, color_type, PNG_INTERLACE_NONE, - PNG_COMPRESSION_TYPE_BASE, PNG_FILTER_TYPE_BASE); + png_set_IHDR(png_ptr, info_ptr, image->width, image->height, + image->bitDepth, color_type, PNG_INTERLACE_NONE, + PNG_COMPRESSION_TYPE_BASE, PNG_FILTER_TYPE_BASE); - if (image->hasPalette) { - SetPngPalette(png_ptr, info_ptr, &image->palette); + if (image->hasPalette) { + SetPngPalette(png_ptr, info_ptr, &image->palette); - if (image->hasTransparency) { - png_byte trans = 0; - png_set_tRNS(png_ptr, info_ptr, &trans, 1, 0); - } - } + if (image->hasTransparency) { + png_byte trans = 0; + png_set_tRNS(png_ptr, info_ptr, &trans, 1, 0); + } + } - png_write_info(png_ptr, info_ptr); + png_write_info(png_ptr, info_ptr); - png_bytepp row_pointers = malloc(image->height * sizeof(png_bytep)); + png_bytepp row_pointers = malloc(image->height * sizeof(png_bytep)); - if (row_pointers == NULL) - FATAL_ERROR("Failed to allocate row pointers.\n"); + if (row_pointers == NULL) + FATAL_ERROR("Failed to allocate row pointers.\n"); - int rowbytes = png_get_rowbytes(png_ptr, info_ptr); + int rowbytes = png_get_rowbytes(png_ptr, info_ptr); - for (int i = 0; i < image->height; i++) - row_pointers[i] = (png_bytep)(image->pixels + (i * rowbytes)); + for (int i = 0; i < image->height; i++) + row_pointers[i] = (png_bytep)(image->pixels + (i * rowbytes)); - if (setjmp(png_jmpbuf(png_ptr))) - FATAL_ERROR("Error writing \"%s\".\n", path); + if (setjmp(png_jmpbuf(png_ptr))) + FATAL_ERROR("Error writing \"%s\".\n", path); - png_write_image(png_ptr, row_pointers); + png_write_image(png_ptr, row_pointers); - if (setjmp(png_jmpbuf(png_ptr))) - FATAL_ERROR("Error ending write of \"%s\".\n", path); + if (setjmp(png_jmpbuf(png_ptr))) + FATAL_ERROR("Error ending write of \"%s\".\n", path); - png_write_end(png_ptr, NULL); + png_write_end(png_ptr, NULL); - fclose(fp); + fclose(fp); - png_destroy_write_struct(&png_ptr, &info_ptr); - free(row_pointers); + png_destroy_write_struct(&png_ptr, &info_ptr); + free(row_pointers); } diff --git a/tools/gbagfx/convert_png.h b/tools/gbagfx/convert_png.h index 55d3d6942..caf081b73 100644 --- a/tools/gbagfx/convert_png.h +++ b/tools/gbagfx/convert_png.h @@ -7,5 +7,6 @@ void ReadPng(char *path, struct Image *image); void WritePng(char *path, struct Image *image); +void ReadPngPalette(char *path, struct Palette *palette); #endif // CONVERT_PNG_H diff --git a/tools/gbagfx/main.c b/tools/gbagfx/main.c index 37d3441fe..97db60e84 100644 --- a/tools/gbagfx/main.c +++ b/tools/gbagfx/main.c @@ -134,6 +134,14 @@ void HandlePngToGbaCommand(char *inputPath, char *outputPath, int argc, char **a ConvertPngToGba(inputPath, outputPath, numTiles, bitDepth); } +void HandlePngToGbaPaletteCommand(char *inputPath, char *outputPath, int argc UNUSED, char **argv UNUSED) +{ + struct Palette palette; + + ReadPngPalette(inputPath, &palette); + WriteGbaPalette(outputPath, &palette); +} + void HandleGbaToJascPaletteCommand(char *inputPath, char *outputPath, int argc UNUSED, char **argv UNUSED) { struct Palette palette; @@ -353,6 +361,7 @@ int main(int argc, char **argv) { "png", "1bpp", HandlePngToGbaCommand }, { "png", "4bpp", HandlePngToGbaCommand }, { "png", "8bpp", HandlePngToGbaCommand }, + { "png", "gbapal", HandlePngToGbaPaletteCommand }, { "gbapal", "pal", HandleGbaToJascPaletteCommand }, { "pal", "gbapal", HandleJascToGbaPaletteCommand }, { "latfont", "png", HandleLatinFontToPngCommand }, diff --git a/tools/scaninc/asm_file.cpp b/tools/scaninc/asm_file.cpp index c3d140bb1..6322749e2 100644 --- a/tools/scaninc/asm_file.cpp +++ b/tools/scaninc/asm_file.cpp @@ -137,7 +137,7 @@ std::string AsmFile::ReadPath() FATAL_INPUT_ERROR("path is too long"); } - return std::string(m_buffer, startPos, length); + return std::string(m_buffer + startPos, length); } void AsmFile::SkipEndOfLineComment() diff --git a/tools/scaninc/c_file.cpp b/tools/scaninc/c_file.cpp index b82276dd6..c55ca9a8c 100644 --- a/tools/scaninc/c_file.cpp +++ b/tools/scaninc/c_file.cpp @@ -45,8 +45,6 @@ CFile::CFile(std::string path) m_pos = 0; m_lineNum = 1; - - RemoveComments(); } CFile::~CFile() @@ -54,71 +52,6 @@ CFile::~CFile() delete[] m_buffer; } -// Removes comments to simplify further processing. -// It stops upon encountering a null character, -// which may or may not be the end of file marker. -// If it's not, the error will be caught later. -void CFile::RemoveComments() -{ - long pos = 0; - char stringChar = 0; - - for (;;) - { - if (m_buffer[pos] == 0) - return; - - if (stringChar != 0) - { - if (m_buffer[pos] == '\\' && m_buffer[pos + 1] == stringChar) - { - pos += 2; - } - else - { - if (m_buffer[pos] == stringChar) - stringChar = 0; - pos++; - } - } - else if (m_buffer[pos] == '/' && m_buffer[pos + 1] == '/') - { - while (m_buffer[pos] != '\n' && m_buffer[pos] != 0) - m_buffer[pos++] = ' '; - } - else if (m_buffer[pos] == '/' && m_buffer[pos + 1] == '*') - { - m_buffer[pos++] = ' '; - m_buffer[pos++] = ' '; - - for (;;) - { - if (m_buffer[pos] == 0) - return; - - if (m_buffer[pos] == '*' && m_buffer[pos + 1] == '/') - { - m_buffer[pos++] = ' '; - m_buffer[pos++] = ' '; - break; - } - else - { - if (m_buffer[pos] != '\n') - m_buffer[pos] = ' '; - pos++; - } - } - } - else - { - if (m_buffer[pos] == '"' || m_buffer[pos] == '\'') - stringChar = m_buffer[pos]; - pos++; - } - } -} - void CFile::FindIncbins() { char stringChar = 0; @@ -145,6 +78,8 @@ void CFile::FindIncbins() } else { + SkipWhitespace(); + CheckInclude(); CheckIncbin(); if (m_pos >= m_size) @@ -177,6 +112,13 @@ bool CFile::ConsumeHorizontalWhitespace() bool CFile::ConsumeNewline() { + if (m_buffer[m_pos] == '\n') + { + m_pos++; + m_lineNum++; + return true; + } + if (m_buffer[m_pos] == '\r' && m_buffer[m_pos + 1] == '\n') { m_pos += 2; @@ -184,10 +126,31 @@ bool CFile::ConsumeNewline() return true; } - if (m_buffer[m_pos] == '\n') + return false; +} + +bool CFile::ConsumeComment() +{ + if (m_buffer[m_pos] == '/' && m_buffer[m_pos + 1] == '*') { - m_pos++; - m_lineNum++; + m_pos += 2; + while (m_buffer[m_pos] != '*' && m_buffer[m_pos + 1] != '/') + { + if (!ConsumeNewline()) + { + m_pos++; + } + } + m_pos += 2; + return true; + } + else if (m_buffer[m_pos] == '/' && m_buffer[m_pos + 1] == '/') + { + m_pos += 2; + while (!ConsumeNewline()) + { + m_pos++; + } return true; } @@ -196,7 +159,7 @@ bool CFile::ConsumeNewline() void CFile::SkipWhitespace() { - while (ConsumeHorizontalWhitespace() || ConsumeNewline()) + while (ConsumeHorizontalWhitespace() || ConsumeNewline() || ConsumeComment()) ; } @@ -211,8 +174,43 @@ bool CFile::CheckIdentifier(const std::string& ident) return (i == ident.length()); } +void CFile::CheckInclude() +{ + if (m_buffer[m_pos] != '#') + return; + + std::string ident = "#include"; + + if (!CheckIdentifier(ident)) + { + return; + } + + m_pos += ident.length(); + + ConsumeHorizontalWhitespace(); + + std::string path = ReadPath(); + + if (!path.empty()) { + m_includes.emplace(path); + } +} + void CFile::CheckIncbin() { + // Optimization: assume most lines are not incbins + if (!(m_buffer[m_pos+0] == 'I' + && m_buffer[m_pos+1] == 'N' + && m_buffer[m_pos+2] == 'C' + && m_buffer[m_pos+3] == 'B' + && m_buffer[m_pos+4] == 'I' + && m_buffer[m_pos+5] == 'N' + && m_buffer[m_pos+6] == '_')) + { + return; + } + std::string idents[6] = { "INCBIN_S8", "INCBIN_U8", "INCBIN_S16", "INCBIN_U16", "INCBIN_S32", "INCBIN_U32" }; int incbinType = -1; @@ -246,8 +244,28 @@ void CFile::CheckIncbin() SkipWhitespace(); + std::string path = ReadPath(); + + SkipWhitespace(); + + if (m_buffer[m_pos] != ')') + FATAL_INPUT_ERROR("expected ')'"); + + m_pos++; + + m_incbins.emplace(path); +} + +std::string CFile::ReadPath() +{ if (m_buffer[m_pos] != '"') - FATAL_INPUT_ERROR("expected double quote"); + { + if (m_buffer[m_pos] == '<') + { + return std::string(); + } + FATAL_INPUT_ERROR("expected '\"' or '<'"); + } m_pos++; @@ -272,16 +290,7 @@ void CFile::CheckIncbin() m_pos++; } - std::string path(&m_buffer[startPos], m_pos - startPos); - m_pos++; - SkipWhitespace(); - - if (m_buffer[m_pos] != ')') - FATAL_INPUT_ERROR("expected ')'"); - - m_pos++; - - m_incbins.emplace(path); + return std::string(m_buffer + startPos, m_pos - 1 - startPos); } diff --git a/tools/scaninc/c_file.h b/tools/scaninc/c_file.h index 922cb4639..618901b85 100644 --- a/tools/scaninc/c_file.h +++ b/tools/scaninc/c_file.h @@ -33,6 +33,7 @@ public: ~CFile(); void FindIncbins(); const std::set& GetIncbins() { return m_incbins; } + const std::set& GetIncludes() { return m_includes; } private: char *m_buffer; @@ -41,13 +42,16 @@ private: int m_lineNum; std::string m_path; std::set m_incbins; + std::set m_includes; - void RemoveComments(); bool ConsumeHorizontalWhitespace(); bool ConsumeNewline(); + bool ConsumeComment(); void SkipWhitespace(); bool CheckIdentifier(const std::string& ident); + void CheckInclude(); void CheckIncbin(); + std::string ReadPath(); }; #endif // C_FILE_H diff --git a/tools/scaninc/scaninc.cpp b/tools/scaninc/scaninc.cpp index b6f7ba767..3dc221479 100644 --- a/tools/scaninc/scaninc.cpp +++ b/tools/scaninc/scaninc.cpp @@ -20,7 +20,8 @@ #include #include -#include +#include +#include #include #include #include "scaninc.h" @@ -38,15 +39,49 @@ bool CanOpenFile(std::string path) return true; } +const char *const USAGE = "Usage: scaninc [-I INCLUDE_PATH] FILE_PATH\n"; + int main(int argc, char **argv) { - if (argc < 2) - FATAL_ERROR("Usage: scaninc FILE_PATH\n"); - - std::stack filesToProcess; + std::queue filesToProcess; std::set dependencies; - std::string initialPath(argv[1]); + std::list includeDirs; + + argc--; + argv++; + + while (argc > 1) + { + std::string arg(argv[0]); + if (arg.substr(0, 2) == "-I") + { + std::string includeDir = arg.substr(2); + if (includeDir.empty()) + { + argc--; + argv++; + includeDir = std::string(argv[0]); + } + if (includeDir.back() != '/') + { + includeDir += '/'; + } + includeDirs.push_back(includeDir); + } + else + { + FATAL_ERROR(USAGE); + } + argc--; + argv++; + } + + if (argc != 1) { + FATAL_ERROR(USAGE); + } + + std::string initialPath(argv[0]); std::size_t pos = initialPath.find_last_of('.'); @@ -55,20 +90,53 @@ int main(int argc, char **argv) std::string extension = initialPath.substr(pos + 1); - if (extension == "c") + std::string srcDir(""); + std::size_t slash = initialPath.rfind('/'); + if (slash != std::string::npos) { - CFile file(initialPath); - - file.FindIncbins(); - dependencies = file.GetIncbins(); + srcDir = initialPath.substr(0, slash + 1); } - else if (extension == "s") + includeDirs.push_back(srcDir); + + if (extension == "c" || extension == "h") { - filesToProcess.push(std::string(argv[1])); + filesToProcess.push(initialPath); while (!filesToProcess.empty()) { - AsmFile file(filesToProcess.top()); + CFile file(filesToProcess.front()); + filesToProcess.pop(); + + file.FindIncbins(); + for (auto incbin : file.GetIncbins()) + { + dependencies.insert(incbin); + } + for (auto include : file.GetIncludes()) + { + for (auto includeDir : includeDirs) + { + std::string path(includeDir + include); + if (CanOpenFile(path)) + { + bool inserted = dependencies.insert(path).second; + if (inserted) + { + filesToProcess.push(path); + } + break; + } + } + } + } + } + else if (extension == "s" || extension == "inc") + { + filesToProcess.push(initialPath); + + while (!filesToProcess.empty()) + { + AsmFile file(filesToProcess.front()); filesToProcess.pop();