Merge pull request #8 from ExpoSeed/sync-battle-engine-v2

Sync battle engine v2
This commit is contained in:
ExpoSeed
2020-10-13 12:13:56 -05:00
committed by GitHub
404 changed files with 23964 additions and 23645 deletions

8
.github/pull_request_template.md vendored Normal file
View File

@@ -0,0 +1,8 @@
<!--- Provide a general summary of your changes in the Title above -->
## Description
<!--- Describe your changes in detail -->
## **Discord contact info**
<!--- formatted as name#numbers, e.g. PikalaxALT#5823 -->
<!--- Contributors must join https://discord.gg/d5dubZ3 -->

View File

@@ -8,7 +8,7 @@
[terminal]: https://docs.microsoft.com/windows/terminal/get-started
[wsl]: https://docs.microsoft.com/windows/wsl/install-win10
Independently from the specific OS, make sure that the `gcc`, `g++`, `make`, `git`, and `libpng` packages or their equivalents are installed and accessible to the development tools that are used by the project (this means that, for example, on Windows, the packages have to be installed in the WSL environment). The package names and installation methods may vary with each OS.
Independently from the specific OS, make sure that the `gcc`, `g++`, `make`, `git`, and `libpng-dev` packages or their equivalents are installed and accessible to the development tools that are used by the project (this means that, for example, on Windows, the packages have to be installed in the WSL environment). The package names and installation methods may vary with each OS.
Install the devkitARM toolchain of devkitPro as per [the instructions on their wiki](https://devkitpro.org/wiki/devkitPro_pacman). On Windows, follow the Linux instructions inside WSL as any steps about the Windows installer do not apply.

View File

@@ -69,7 +69,7 @@ OBJ_DIR := build/emerald
LIBPATH := -L ../../tools/agbcc/lib
else
CC1 = $(shell $(CC) --print-prog-name=cc1) -quiet
override CFLAGS += -mthumb -mthumb-interwork -O2 -mabi=apcs-gnu -mtune=arm7tdmi -march=armv4t -fno-toplevel-reorder -Wno-pointer-to-int-cast
override CFLAGS += -mthumb -mthumb-interwork -O2 -mabi=apcs-gnu -mcpu=arm7tdmi -fno-toplevel-reorder -Wno-pointer-to-int-cast
ROM := pokeemerald_modern.gba
OBJ_DIR := build/modern
LIBPATH := -L "$(dir $(shell $(CC) -mthumb -print-file-name=libgcc.a))" -L "$(dir $(shell $(CC) -mthumb -print-file-name=libc.a))"
@@ -178,7 +178,7 @@ mostlyclean: tidy
rm -f $(SAMPLE_SUBDIR)/*.bin
rm -f $(CRY_SUBDIR)/*.bin
rm -f $(MID_SUBDIR)/*.s
find . \( -iname '*.1bpp' -o -iname '*.4bpp' -o -iname '*.8bpp' -o -iname '*.gbapal' -o -iname '*.lz' -o -iname '*.latfont' -o -iname '*.hwjpnfont' -o -iname '*.fwjpnfont' \) -exec rm {} +
find . \( -iname '*.1bpp' -o -iname '*.4bpp' -o -iname '*.8bpp' -o -iname '*.gbapal' -o -iname '*.lz' -o -iname '*.rl' -o -iname '*.latfont' -o -iname '*.hwjpnfont' -o -iname '*.fwjpnfont' \) -exec rm {} +
rm -f $(DATA_ASM_SUBDIR)/layouts/layouts.inc $(DATA_ASM_SUBDIR)/layouts/layouts_table.inc
rm -f $(DATA_ASM_SUBDIR)/maps/connections.inc $(DATA_ASM_SUBDIR)/maps/events.inc $(DATA_ASM_SUBDIR)/maps/groups.inc $(DATA_ASM_SUBDIR)/maps/headers.inc
find $(DATA_ASM_SUBDIR)/maps \( -iname 'connections.inc' -o -iname 'events.inc' -o -iname 'header.inc' \) -exec rm {} +

View File

@@ -1434,6 +1434,7 @@
@ Sets the color of the text in standard message boxes. 0x00 produces blue (male) text, 0x01 produces red (female) text,
@ 0xFF resets the color to the default for the current OW's gender, and all other values produce black text.
@ Used only in FireRed/LeafGreen, does nothing in Emerald.
.macro textcolor color:req
.byte 0xc7
.byte \color
@@ -1441,6 +1442,7 @@
@ The exact purpose of this command is unknown, but it is related to the blue help-text box that appears on the bottom
@ of the screen when the Main Menu is opened.
@ Used only in FireRed/LeafGreen, does nothing in Emerald.
.macro loadhelp pointer:req
.byte 0xc8
.4byte \pointer
@@ -1448,21 +1450,25 @@
@ The exact purpose of this command is unknown, but it is related to the blue help-text box that appears on the bottom of
@ the screen when the Main Menu is opened.
@ Used only in FireRed/LeafGreen, does nothing in Emerald.
.macro unloadhelp
.byte 0xc9
.endm
@ After using this command, all standard message boxes will use the signpost frame.
@ Used only in FireRed/LeafGreen, does nothing in Emerald.
.macro signmsg
.byte 0xca
.endm
@ Ends the effects of signmsg, returning message box frames to normal.
@ Used only in FireRed/LeafGreen, does nothing in Emerald.
.macro normalmsg
.byte 0xcb
.endm
@ Compares the value of a hidden variable to a dword.
@ Used only in FireRed/LeafGreen, does nothing in Emerald.
.macro comparehiddenvar a:req, value:req
.byte 0xcc
.byte \a
@@ -1489,6 +1495,7 @@
.endm
@ Sets worldmapflag to 1. This allows the player to Fly to the corresponding map, if that map has a flightspot.
@ Used only in FireRed/LeafGreen, does nothing in Emerald.
.macro setworldmapflag worldmapflag:req
.byte 0xd0
.2byte \worldmapflag

View File

@@ -1,19 +1,19 @@
.macro voice_directsound base_midi_key, pan, sample_data_pointer, attack, decay, sustain, release
.macro voice_directsound base_midi_key:req, pan:req, sample_data_pointer:req, attack:req, decay:req, sustain:req, release:req
.byte 0
_voice_directsound \base_midi_key, \pan, \sample_data_pointer, \attack, \decay, \sustain, \release
.endm
.macro voice_directsound_no_resample base_midi_key, pan, sample_data_pointer, attack, decay, sustain, release
.macro voice_directsound_no_resample base_midi_key:req, pan:req, sample_data_pointer:req, attack:req, decay:req, sustain:req, release:req
.byte 8
_voice_directsound \base_midi_key, \pan, \sample_data_pointer, \attack, \decay, \sustain, \release
.endm
.macro voice_directsound_alt base_midi_key, pan, sample_data_pointer, attack, decay, sustain, release
.macro voice_directsound_alt base_midi_key:req, pan:req, sample_data_pointer:req, attack:req, decay:req, sustain:req, release:req
.byte 16
_voice_directsound \base_midi_key, \pan, \sample_data_pointer, \attack, \decay, \sustain, \release
.endm
.macro _voice_directsound base_midi_key, pan, sample_data_pointer, attack, decay, sustain, release
.macro _voice_directsound base_midi_key:req, pan:req, sample_data_pointer:req, attack:req, decay:req, sustain:req, release:req
.byte \base_midi_key
.byte 0
.if \pan != 0
@@ -28,16 +28,22 @@
.byte \release
.endm
.macro voice_square_1 sweep, duty_cycle, attack, decay, sustain, release
_voice_square_1 1, \sweep, \duty_cycle, \attack, \decay, \sustain, \release
.macro voice_square_1 base_midi_key:req, pan:req, sweep:req, duty_cycle:req, attack:req, decay:req, sustain:req, release:req
_voice_square_1 1, \base_midi_key, \pan, \sweep, \duty_cycle, \attack, \decay, \sustain, \release
.endm
.macro voice_square_1_alt sweep, duty_cycle, attack, decay, sustain, release
_voice_square_1 9, \sweep, \duty_cycle, \attack, \decay, \sustain, \release
.macro voice_square_1_alt base_midi_key:req, pan:req, sweep:req, duty_cycle:req, attack:req, decay:req, sustain:req, release:req
_voice_square_1 9, \base_midi_key, \pan, \sweep, \duty_cycle, \attack, \decay, \sustain, \release
.endm
.macro _voice_square_1 type, sweep, duty_cycle, attack, decay, sustain, release
.byte \type, 60, 0
.macro _voice_square_1 type:req, base_midi_key:req, pan:req, sweep:req, duty_cycle:req, attack:req, decay:req, sustain:req, release:req
.byte \type
.byte \base_midi_key
.if \pan != 0
.byte (0x80 | \pan)
.else
.byte 0
.endif
.byte \sweep
.byte (\duty_cycle & 0x3)
.byte 0, 0, 0
@@ -47,16 +53,23 @@
.byte (\release & 0x7)
.endm
.macro voice_square_2 duty_cycle, attack, decay, sustain, release
_voice_square_2 2, \duty_cycle, \attack, \decay, \sustain, \release
.macro voice_square_2 base_midi_key:req, pan:req, duty_cycle:req, attack:req, decay:req, sustain:req, release:req
_voice_square_2 2, \base_midi_key, \pan, \duty_cycle, \attack, \decay, \sustain, \release
.endm
.macro voice_square_2_alt duty_cycle, attack, decay, sustain, release
_voice_square_2 10, \duty_cycle, \attack, \decay, \sustain, \release
.macro voice_square_2_alt base_midi_key:req, pan:req, duty_cycle:req, attack:req, decay:req, sustain:req, release:req
_voice_square_2 10, \base_midi_key, \pan, \duty_cycle, \attack, \decay, \sustain, \release
.endm
.macro _voice_square_2 type, duty_cycle, attack, decay, sustain, release
.byte \type, 60, 0, 0
.macro _voice_square_2 type:req, base_midi_key:req, pan:req, duty_cycle:req, attack:req, decay:req, sustain:req, release:req
.byte \type
.byte \base_midi_key
.if \pan != 0
.byte (0x80 | \pan)
.else
.byte 0
.endif
.byte 0
.byte (\duty_cycle & 0x3)
.byte 0, 0, 0
.byte (\attack & 0x7)
@@ -65,16 +78,23 @@
.byte (\release & 0x7)
.endm
.macro voice_programmable_wave wave_samples_pointer, attack, decay, sustain, release
_voice_programmable_wave 3, \wave_samples_pointer, \attack, \decay, \sustain, \release
.macro voice_programmable_wave base_midi_key:req, pan:req, wave_samples_pointer:req, attack:req, decay:req, sustain:req, release:req
_voice_programmable_wave 3, \base_midi_key, \pan, \wave_samples_pointer, \attack, \decay, \sustain, \release
.endm
.macro voice_programmable_wave_alt wave_samples_pointer, attack, decay, sustain, release
_voice_programmable_wave 11, \wave_samples_pointer, \attack, \decay, \sustain, \release
.macro voice_programmable_wave_alt base_midi_key:req, pan:req, wave_samples_pointer:req, attack:req, decay:req, sustain:req, release:req
_voice_programmable_wave 11, \base_midi_key, \pan, \wave_samples_pointer, \attack, \decay, \sustain, \release
.endm
.macro _voice_programmable_wave type, wave_samples_pointer, attack, decay, sustain, release
.byte \type, 60, 0, 0
.macro _voice_programmable_wave type:req, base_midi_key:req, pan:req, wave_samples_pointer:req, attack:req, decay:req, sustain:req, release:req
.byte \type
.byte \base_midi_key
.if \pan != 0
.byte (0x80 | \pan)
.else
.byte 0
.endif
.byte 0
.4byte \wave_samples_pointer
.byte (\attack & 0x7)
.byte (\decay & 0x7)
@@ -82,16 +102,23 @@
.byte (\release & 0x7)
.endm
.macro voice_noise period, attack, decay, sustain, release
_voice_noise 4, \period, \attack, \decay, \sustain, \release
.macro voice_noise base_midi_key:req, pan:req, period:req, attack:req, decay:req, sustain:req, release:req
_voice_noise 4, \base_midi_key, \pan, \period, \attack, \decay, \sustain, \release
.endm
.macro voice_noise_alt period, attack, decay, sustain, release
_voice_noise 12, \period, \attack, \decay, \sustain, \release
.macro voice_noise_alt base_midi_key:req, pan:req, period:req, attack:req, decay:req, sustain:req, release:req
_voice_noise 12, \base_midi_key, \pan, \period, \attack, \decay, \sustain, \release
.endm
.macro _voice_noise type, period, attack, decay, sustain, release
.byte \type, 60, 0, 0
.macro _voice_noise type:req, base_midi_key:req, pan:req, period:req, attack:req, decay:req, sustain:req, release:req
.byte \type
.byte \base_midi_key
.if \pan != 0
.byte (0x80 | \pan)
.else
.byte 0
.endif
.byte 0
.byte (\period & 0x1)
.byte 0, 0, 0
.byte (\attack & 0x7)
@@ -100,25 +127,25 @@
.byte (\release & 0x7)
.endm
.macro voice_keysplit voice_group_pointer, keysplit_table_pointer
.macro voice_keysplit voice_group_pointer:req, keysplit_table_pointer:req
.byte 0x40, 0, 0, 0
.4byte \voice_group_pointer
.4byte \keysplit_table_pointer
.endm
.macro voice_keysplit_all voice_group_pointer
.macro voice_keysplit_all voice_group_pointer:req
.byte 0x80, 0, 0, 0
.4byte \voice_group_pointer
.4byte 0
.endm
.macro cry sample
.macro cry sample:req
.byte 0x20, 60, 0, 0
.4byte \sample
.byte 0xff, 0, 0xff, 0
.endm
.macro cry2 sample
.macro cry2 sample:req
.byte 0x30, 60, 0, 0
.4byte \sample
.byte 0xff, 0, 0xff, 0

116
asmdiff.ps1 Normal file
View File

@@ -0,0 +1,116 @@
Param
(
[Parameter(Position = 0)]
[string]$Start,
[Parameter(Position = 1)]
[string]$Offset,
[Parameter()]
[string[]]$DiffTool
)
$ErrorActionPreference = "Stop"
$offset_default_value = "0x100"
$diff_tool_default_value = "diff"
$help = "
$($args[0]) [OPTIONS] Start [Offset]
Performs a diff on the assembly of a function in a rom. 'Start' is the start
location of the function, and 'Offset' is the number of bytes to disassemble.
The assembly is saved to *.dump files.
'Offset' is optional, and defaults to $offset_default_value. If this value is
very large (0x10000+), objdump may hang / freeze.
Requirements:
- A clean copy of the rom named 'baserom.gba'.
- $$ENV:DEVKITARM to point to the installation of devkitpro. By default, it is
installed to 'C:\devkitpro\devkitARM'.
Options:
-DiffTool <tool> The tool to use for diffing. Defaults to '$diff_tool_default_value'. For VSCode,
you can use -DiffTool 'code --diff'. (Quotes are necessary around 'code --diff')
"
if ((-not (Test-Path variable:Start)) -or [string]::IsNullOrWhiteSpace($Start))
{
Write-Host $help
exit
}
if (-not (Test-Path variable:DiffTool) -or [string]::IsNullOrWhiteSpace($DiffTool))
{
$DiffTool = $diff_tool_default_value
}
if (-not (Test-Path variable:Offset) -or [string]::IsNullOrWhiteSpace($Offset))
{
$Offset = $offset_default_value
}
if (-Not (Test-Path env:DEVKITARM))
{
Write-Host "ENV:DEVKITARM variable not set."
Write-Host $help
exit
}
if (-Not (Test-Path $env:DEVKITARM))
{
Write-Host "DEVKITARM path '$env:DEVKITARM' does not exist."
Write-Host $help
exit
}
if (-Not (Test-Path ".\pokeemerald.gba"))
{
Write-Host "File 'pokeemerald.gba' not found."
Write-Host $help
exit
}
if (-Not (Test-Path ".\baserom.gba"))
{
Write-Host "File 'baserom.gba' not found."
}
try
{
$start_num = [System.Convert]::ToUInt64($Start, 16)
}
catch
{
Write-Host "Error parsing '$start_num' as a hex number."
Write-Host $help
exit
}
try
{
$offset_num = [System.Convert]::ToUInt64($Offset, 16)
}
catch
{
Write-Host "Error parsing '$offset_num' as a hex number."
Write-Host $help
exit
}
if ($start_num -gt 0x1000000)
{
Write-Host "Warning: Start address is larger than the ROM file. Hint: ignore the leading number in the address."
}
$end_str = [System.Convert]::ToString($start_num + $offset_num, 16)
$end_str = "0x$end_str"
$start_str = "0x$Start"
Write-Host "$start_str - $end_str"
$objdump = Join-Path -Path $env:DEVKITARM -ChildPath "arm-none-eabi\bin\objdump.exe"
&$objdump -D -bbinary -marmv4t -Mforce-thumb --start-address="$start_str" --stop-address="$end_str" .\baserom.gba > .\baserom.dump
&$objdump -D -bbinary -marmv4t -Mforce-thumb --start-address="$start_str" --stop-address="$end_str" .\pokeemerald.gba > .\pokeemerald.dump
Invoke-Expression "$DiffTool .\baserom.dump .\pokeemerald.dump"

View File

@@ -296,7 +296,7 @@ u8 HandleWriteSectorNBytes(u8 sectorNum, u8 *data, u16 size)
u8 TryWriteSector(u8 sectorNum, u8 *data)
{
if (ProgramFlashSectorAndVerify(sectorNum, data) != 0) // is damaged?
if (ProgramFlashSectorAndVerify(sectorNum, data)) // is damaged?
{
SetSectorDamagedStatus(SECTOR_DAMAGED, sectorNum); // set damaged sector bits.
return SAVE_STATUS_ERROR;

View File

@@ -1 +1 @@
gUnknown_03006298
gFrontierTempParty

View File

@@ -48,7 +48,7 @@ gBattleAI_ScriptsTable:: @ 82DBEF8
AI_CheckBadMove:
if_target_is_ally AI_Ret
@ Check powder moves
if_move_flag FLAG_POWDER AI_CBM_PowderMoves
if_move_flag FLAG_POWDER, AI_CBM_PowderMoves
goto AI_CBM_CheckIfNegatesType
AI_CBM_PowderMoves:
if_type AI_TARGET, TYPE_GRASS, Score_Minus10
@@ -3439,7 +3439,7 @@ AI_TryToFaint_DoubleSuperEffective:
AI_TryToFaint_Can:
if_effect EFFECT_EXPLOSION, AI_TryToFaint_CheckIfDanger
if_user_faster AI_TryToFaint_ScoreUp4
if_move_flag FLAG_HIGH_CRIT AI_TryToFaint_ScoreUp4
if_move_flag FLAG_HIGH_CRIT, AI_TryToFaint_ScoreUp4
score +2
goto AI_TryToFaint_CheckIfDanger
AI_TryToFaint_ScoreUp4:
@@ -3560,7 +3560,7 @@ AI_PreferStrongestMove_End:
AI_Risky:
if_target_is_ally AI_Ret
get_considered_move_effect
if_move_flag FLAG_HIGH_CRIT AI_Risky_RandChance
if_move_flag FLAG_HIGH_CRIT, AI_Risky_RandChance
if_not_in_bytes AI_Risky_EffectsToEncourage, AI_Risky_End
AI_Risky_RandChance:
if_random_less_than 128, AI_Risky_End

View File

@@ -24,7 +24,7 @@
"movement_range_y": 0,
"trainer_type": "TRAINER_TYPE_NONE",
"trainer_sight_or_berry_tree_id": "0",
"script": "NewMauville_Inside_EventScript_ItemUltraRope",
"script": "NewMauville_Inside_EventScript_ItemUltraBall",
"flag": "FLAG_ITEM_NEW_MAUVILLE_ULTRA_BALL"
},
{

View File

@@ -2,21 +2,21 @@
.align 2
gMysteryEventScriptCmdTable:: @ 82DED2C
.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
.4byte MEScrCmd_nop @ 0x00
.4byte MEScrCmd_checkcompat @ 0x01
.4byte MEScrCmd_end @ 0x02
.4byte MEScrCmd_setmsg @ 0x03
.4byte MEScrCmd_setstatus @ 0x04
.4byte MEScrCmd_runscript @ 0x05
.4byte MEScrCmd_initramscript @ 0x06
.4byte MEScrCmd_setenigmaberry @ 0x07
.4byte MEScrCmd_giveribbon @ 0x08
.4byte MEScrCmd_givenationaldex @ 0x09
.4byte MEScrCmd_addrareword @ 0x0a
.4byte MEScrCmd_setrecordmixinggift @ 0x0b
.4byte MEScrCmd_givepokemon @ 0x0c
.4byte MEScrCmd_addtrainer @ 0x0d
.4byte MEScrCmd_enableresetrtc @ 0x0e
.4byte MEScrCmd_checksum @ 0x0f
.4byte MEScrCmd_crc @ 0x10
gMysteryEventScriptCmdTableEnd::

View File

@@ -1,232 +1,232 @@
.align 2
gScriptCmdTable:: @ 81DB67C
.4byte ScrCmd_nop
.4byte ScrCmd_nop1
.4byte ScrCmd_end
.4byte ScrCmd_return
.4byte ScrCmd_call
.4byte ScrCmd_goto
.4byte ScrCmd_goto_if
.4byte ScrCmd_call_if
.4byte ScrCmd_gotostd
.4byte ScrCmd_callstd
.4byte ScrCmd_gotostd_if
.4byte ScrCmd_callstd_if
.4byte ScrCmd_returnram
.4byte ScrCmd_killscript
.4byte ScrCmd_setmysteryeventstatus
.4byte ScrCmd_loadword
.4byte ScrCmd_loadbyte
.4byte ScrCmd_writebytetoaddr
.4byte ScrCmd_loadbytefromaddr
.4byte ScrCmd_setptrbyte
.4byte ScrCmd_copylocal
.4byte ScrCmd_copybyte
.4byte ScrCmd_setvar
.4byte ScrCmd_addvar
.4byte ScrCmd_subvar
.4byte ScrCmd_copyvar
.4byte ScrCmd_setorcopyvar
.4byte ScrCmd_compare_local_to_local
.4byte ScrCmd_compare_local_to_value
.4byte ScrCmd_compare_local_to_addr
.4byte ScrCmd_compare_addr_to_local
.4byte ScrCmd_compare_addr_to_value
.4byte ScrCmd_compare_addr_to_addr
.4byte ScrCmd_compare_var_to_value
.4byte ScrCmd_compare_var_to_var
.4byte ScrCmd_callnative
.4byte ScrCmd_gotonative
.4byte ScrCmd_special
.4byte ScrCmd_specialvar
.4byte ScrCmd_waitstate
.4byte ScrCmd_delay
.4byte ScrCmd_setflag
.4byte ScrCmd_clearflag
.4byte ScrCmd_checkflag
.4byte ScrCmd_initclock
.4byte ScrCmd_dotimebasedevents
.4byte ScrCmd_gettime
.4byte ScrCmd_playse
.4byte ScrCmd_waitse
.4byte ScrCmd_playfanfare
.4byte ScrCmd_waitfanfare
.4byte ScrCmd_playbgm
.4byte ScrCmd_savebgm
.4byte ScrCmd_fadedefaultbgm
.4byte ScrCmd_fadenewbgm
.4byte ScrCmd_fadeoutbgm
.4byte ScrCmd_fadeinbgm
.4byte ScrCmd_warp
.4byte ScrCmd_warpsilent
.4byte ScrCmd_warpdoor
.4byte ScrCmd_warphole
.4byte ScrCmd_warpteleport
.4byte ScrCmd_setwarp
.4byte ScrCmd_setdynamicwarp
.4byte ScrCmd_setdivewarp
.4byte ScrCmd_setholewarp
.4byte ScrCmd_getplayerxy
.4byte ScrCmd_getpartysize
.4byte ScrCmd_additem
.4byte ScrCmd_removeitem
.4byte ScrCmd_checkitemspace
.4byte ScrCmd_checkitem
.4byte ScrCmd_checkitemtype
.4byte ScrCmd_addpcitem
.4byte ScrCmd_checkpcitem
.4byte ScrCmd_adddecoration
.4byte ScrCmd_removedecoration
.4byte ScrCmd_checkdecor
.4byte ScrCmd_checkdecorspace
.4byte ScrCmd_applymovement
.4byte ScrCmd_applymovement_at
.4byte ScrCmd_waitmovement
.4byte ScrCmd_waitmovement_at
.4byte ScrCmd_removeobject
.4byte ScrCmd_removeobject_at
.4byte ScrCmd_addobject
.4byte ScrCmd_addobject_at
.4byte ScrCmd_setobjectxy
.4byte ScrCmd_showobject_at
.4byte ScrCmd_hideobject_at
.4byte ScrCmd_faceplayer
.4byte ScrCmd_turnobject
.4byte ScrCmd_trainerbattle
.4byte ScrCmd_dotrainerbattle
.4byte ScrCmd_gotopostbattlescript
.4byte ScrCmd_gotobeatenscript
.4byte ScrCmd_checktrainerflag
.4byte ScrCmd_settrainerflag
.4byte ScrCmd_cleartrainerflag
.4byte ScrCmd_setobjectxyperm
.4byte ScrCmd_copyobjectxytoperm
.4byte ScrCmd_setobjectmovementtype
.4byte ScrCmd_waitmessage
.4byte ScrCmd_message
.4byte ScrCmd_closemessage
.4byte ScrCmd_lockall
.4byte ScrCmd_lock
.4byte ScrCmd_releaseall
.4byte ScrCmd_release
.4byte ScrCmd_waitbuttonpress
.4byte ScrCmd_yesnobox
.4byte ScrCmd_multichoice
.4byte ScrCmd_multichoicedefault
.4byte ScrCmd_multichoicegrid
.4byte ScrCmd_drawbox
.4byte ScrCmd_erasebox
.4byte ScrCmd_drawboxtext
.4byte ScrCmd_showmonpic
.4byte ScrCmd_hidemonpic
.4byte ScrCmd_showcontestwinner
.4byte ScrCmd_braillemessage
.4byte ScrCmd_givemon
.4byte ScrCmd_giveegg
.4byte ScrCmd_setmonmove
.4byte ScrCmd_checkpartymove
.4byte ScrCmd_bufferspeciesname
.4byte ScrCmd_bufferleadmonspeciesname
.4byte ScrCmd_bufferpartymonnick
.4byte ScrCmd_bufferitemname
.4byte ScrCmd_bufferdecorationname
.4byte ScrCmd_buffermovename
.4byte ScrCmd_buffernumberstring
.4byte ScrCmd_bufferstdstring
.4byte ScrCmd_bufferstring
.4byte ScrCmd_pokemart
.4byte ScrCmd_pokemartdecoration
.4byte ScrCmd_pokemartdecoration2
.4byte ScrCmd_playslotmachine
.4byte ScrCmd_setberrytree
.4byte ScrCmd_choosecontestmon
.4byte ScrCmd_startcontest
.4byte ScrCmd_showcontestresults
.4byte ScrCmd_contestlinktransfer
.4byte ScrCmd_random
.4byte ScrCmd_addmoney
.4byte ScrCmd_removemoney
.4byte ScrCmd_checkmoney
.4byte ScrCmd_showmoneybox
.4byte ScrCmd_hidemoneybox
.4byte ScrCmd_updatemoneybox
.4byte ScrCmd_getpricereduction
.4byte ScrCmd_fadescreen
.4byte ScrCmd_fadescreenspeed
.4byte ScrCmd_setflashradius
.4byte ScrCmd_animateflash
.4byte ScrCmd_messageautoscroll
.4byte ScrCmd_dofieldeffect
.4byte ScrCmd_setfieldeffectarg
.4byte ScrCmd_waitfieldeffect
.4byte ScrCmd_setrespawn
.4byte ScrCmd_checkplayergender
.4byte ScrCmd_playmoncry
.4byte ScrCmd_setmetatile
.4byte ScrCmd_resetweather
.4byte ScrCmd_setweather
.4byte ScrCmd_doweather
.4byte ScrCmd_setstepcallback
.4byte ScrCmd_setmaplayoutindex
.4byte ScrCmd_setobjectpriority
.4byte ScrCmd_resetobjectpriority
.4byte ScrCmd_createvobject
.4byte ScrCmd_turnvobject
.4byte ScrCmd_opendoor
.4byte ScrCmd_closedoor
.4byte ScrCmd_waitdooranim
.4byte ScrCmd_setdooropen
.4byte ScrCmd_setdoorclosed
.4byte ScrCmd_addelevmenuitem
.4byte ScrCmd_showelevmenu
.4byte ScrCmd_checkcoins
.4byte ScrCmd_addcoins
.4byte ScrCmd_removecoins
.4byte ScrCmd_setwildbattle
.4byte ScrCmd_dowildbattle
.4byte ScrCmd_setvaddress
.4byte ScrCmd_vgoto
.4byte ScrCmd_vcall
.4byte ScrCmd_vgoto_if
.4byte ScrCmd_vcall_if
.4byte ScrCmd_vmessage
.4byte ScrCmd_vloadword
.4byte ScrCmd_vbufferstring
.4byte ScrCmd_showcoinsbox
.4byte ScrCmd_hidecoinsbox
.4byte ScrCmd_updatecoinsbox
.4byte ScrCmd_incrementgamestat
.4byte ScrCmd_setescapewarp
.4byte ScrCmd_waitmoncry
.4byte ScrCmd_bufferboxname
.4byte ScrCmd_nop1
.4byte ScrCmd_nop1
.4byte ScrCmd_nop1
.4byte ScrCmd_nop1
.4byte ScrCmd_nop1
.4byte ScrCmd_nop1
.4byte ScrCmd_setmonobedient
.4byte ScrCmd_checkmonobedience
.4byte ScrCmd_gotoram
.4byte ScrCmd_nop1
.4byte ScrCmd_warpD1
.4byte ScrCmd_setmonmetlocation
.4byte ScrCmd_moverotatingtileobjects
.4byte ScrCmd_turnrotatingtileobjects
.4byte ScrCmd_initrotatingtilepuzzle
.4byte ScrCmd_freerotatingtilepuzzle
.4byte ScrCmd_warpmossdeepgym
.4byte ScrCmd_cmdD8
.4byte ScrCmd_cmdD9
.4byte ScrCmd_closebraillemessage
.4byte ScrCmd_cmdDB
.4byte ScrCmd_fadescreenswapbuffers
.4byte ScrCmd_buffertrainerclassname
.4byte ScrCmd_buffertrainername
.4byte ScrCmd_pokenavcall
.4byte ScrCmd_warpsootopolislegend
.4byte ScrCmd_buffercontesttype
.4byte ScrCmd_bufferitemnameplural
.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_returnram @ 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_dotimebasedevents @ 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_getpartysize @ 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_adddecoration @ 0x4b
.4byte ScrCmd_removedecoration @ 0x4c
.4byte ScrCmd_checkdecor @ 0x4d
.4byte ScrCmd_checkdecorspace @ 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_at @ 0x58
.4byte ScrCmd_hideobject_at @ 0x59
.4byte ScrCmd_faceplayer @ 0x5a
.4byte ScrCmd_turnobject @ 0x5b
.4byte ScrCmd_trainerbattle @ 0x5c
.4byte ScrCmd_dotrainerbattle @ 0x5d
.4byte ScrCmd_gotopostbattlescript @ 0x5e
.4byte ScrCmd_gotobeatenscript @ 0x5f
.4byte ScrCmd_checktrainerflag @ 0x60
.4byte ScrCmd_settrainerflag @ 0x61
.4byte ScrCmd_cleartrainerflag @ 0x62
.4byte ScrCmd_setobjectxyperm @ 0x63
.4byte ScrCmd_copyobjectxytoperm @ 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_waitbuttonpress @ 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_showmonpic @ 0x75
.4byte ScrCmd_hidemonpic @ 0x76
.4byte ScrCmd_showcontestwinner @ 0x77
.4byte ScrCmd_braillemessage @ 0x78
.4byte ScrCmd_givemon @ 0x79
.4byte ScrCmd_giveegg @ 0x7a
.4byte ScrCmd_setmonmove @ 0x7b
.4byte ScrCmd_checkpartymove @ 0x7c
.4byte ScrCmd_bufferspeciesname @ 0x7d
.4byte ScrCmd_bufferleadmonspeciesname @ 0x7e
.4byte ScrCmd_bufferpartymonnick @ 0x7f
.4byte ScrCmd_bufferitemname @ 0x80
.4byte ScrCmd_bufferdecorationname @ 0x81
.4byte ScrCmd_buffermovename @ 0x82
.4byte ScrCmd_buffernumberstring @ 0x83
.4byte ScrCmd_bufferstdstring @ 0x84
.4byte ScrCmd_bufferstring @ 0x85
.4byte ScrCmd_pokemart @ 0x86
.4byte ScrCmd_pokemartdecoration @ 0x87
.4byte ScrCmd_pokemartdecoration2 @ 0x88
.4byte ScrCmd_playslotmachine @ 0x89
.4byte ScrCmd_setberrytree @ 0x8a
.4byte ScrCmd_choosecontestmon @ 0x8b
.4byte ScrCmd_startcontest @ 0x8c
.4byte ScrCmd_showcontestresults @ 0x8d
.4byte ScrCmd_contestlinktransfer @ 0x8e
.4byte ScrCmd_random @ 0x8f
.4byte ScrCmd_addmoney @ 0x90
.4byte ScrCmd_removemoney @ 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_fadescreenspeed @ 0x98
.4byte ScrCmd_setflashradius @ 0x99
.4byte ScrCmd_animateflash @ 0x9a
.4byte ScrCmd_messageautoscroll @ 0x9b
.4byte ScrCmd_dofieldeffect @ 0x9c
.4byte ScrCmd_setfieldeffectarg @ 0x9d
.4byte ScrCmd_waitfieldeffect @ 0x9e
.4byte ScrCmd_setrespawn @ 0x9f
.4byte ScrCmd_checkplayergender @ 0xa0
.4byte ScrCmd_playmoncry @ 0xa1
.4byte ScrCmd_setmetatile @ 0xa2
.4byte ScrCmd_resetweather @ 0xa3
.4byte ScrCmd_setweather @ 0xa4
.4byte ScrCmd_doweather @ 0xa5
.4byte ScrCmd_setstepcallback @ 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_addcoins @ 0xb4
.4byte ScrCmd_removecoins @ 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_vbufferstring @ 0xbf
.4byte ScrCmd_showcoinsbox @ 0xc0
.4byte ScrCmd_hidecoinsbox @ 0xc1
.4byte ScrCmd_updatecoinsbox @ 0xc2
.4byte ScrCmd_incrementgamestat @ 0xc3
.4byte ScrCmd_setescapewarp @ 0xc4
.4byte ScrCmd_waitmoncry @ 0xc5
.4byte ScrCmd_bufferboxname @ 0xc6
.4byte ScrCmd_nop1 @ 0xc7
.4byte ScrCmd_nop1 @ 0xc8
.4byte ScrCmd_nop1 @ 0xc9
.4byte ScrCmd_nop1 @ 0xca
.4byte ScrCmd_nop1 @ 0xcb
.4byte ScrCmd_nop1 @ 0xcc
.4byte ScrCmd_setmonobedient @ 0xcd
.4byte ScrCmd_checkmonobedience @ 0xce
.4byte ScrCmd_gotoram @ 0xcf
.4byte ScrCmd_nop1 @ 0xd0
.4byte ScrCmd_warpD1 @ 0xd1
.4byte ScrCmd_setmonmetlocation @ 0xd2
.4byte ScrCmd_moverotatingtileobjects @ 0xd3
.4byte ScrCmd_turnrotatingtileobjects @ 0xd4
.4byte ScrCmd_initrotatingtilepuzzle @ 0xd5
.4byte ScrCmd_freerotatingtilepuzzle @ 0xd6
.4byte ScrCmd_warpmossdeepgym @ 0xd7
.4byte ScrCmd_cmdD8 @ 0xd8
.4byte ScrCmd_cmdD9 @ 0xd9
.4byte ScrCmd_closebraillemessage @ 0xda
.4byte ScrCmd_cmdDB @ 0xdb
.4byte ScrCmd_fadescreenswapbuffers @ 0xdc
.4byte ScrCmd_buffertrainerclassname @ 0xdd
.4byte ScrCmd_buffertrainername @ 0xde
.4byte ScrCmd_pokenavcall @ 0xdf
.4byte ScrCmd_warpsootopolislegend @ 0xe0
.4byte ScrCmd_buffercontesttype @ 0xe1
.4byte ScrCmd_bufferitemnameplural @ 0xe2
gScriptCmdTableEnd:: @ 81DBA08
.4byte ScrCmd_nop

View File

@@ -398,7 +398,7 @@ MeteorFalls_B1F_2R_EventScript_ItemTM02:: @ 82911DF
finditem ITEM_TM02
end
NewMauville_Inside_EventScript_ItemUltraRope:: @ 82911EC
NewMauville_Inside_EventScript_ItemUltraBall:: @ 82911EC
finditem ITEM_ULTRA_BALL
end

View File

@@ -1,43 +1,66 @@
EventScript_ResetAllBerries:: @ 827149D
@ Route 102
setberrytree 2, ITEM_TO_BERRY(ITEM_ORAN_BERRY), BERRY_STAGE_BERRIES
setberrytree 1, ITEM_TO_BERRY(ITEM_PECHA_BERRY), BERRY_STAGE_BERRIES
@ Route 104
setberrytree 11, ITEM_TO_BERRY(ITEM_ORAN_BERRY), BERRY_STAGE_BERRIES
setberrytree 13, ITEM_TO_BERRY(ITEM_PECHA_BERRY), BERRY_STAGE_BERRIES
setberrytree 4, ITEM_TO_BERRY(ITEM_ORAN_BERRY), BERRY_STAGE_BERRIES
setberrytree 76, ITEM_TO_BERRY(ITEM_CHERI_BERRY), BERRY_STAGE_BERRIES
setberrytree 8, ITEM_TO_BERRY(ITEM_CHERI_BERRY), BERRY_STAGE_BERRIES
setberrytree 10, ITEM_TO_BERRY(ITEM_LEPPA_BERRY), BERRY_STAGE_BERRIES
@ Route 116
setberrytree 25, ITEM_TO_BERRY(ITEM_PINAP_BERRY), BERRY_STAGE_BERRIES
setberrytree 26, ITEM_TO_BERRY(ITEM_CHESTO_BERRY), BERRY_STAGE_BERRIES
setberrytree 66, ITEM_TO_BERRY(ITEM_CHESTO_BERRY), BERRY_STAGE_BERRIES
setberrytree 67, ITEM_TO_BERRY(ITEM_PINAP_BERRY), BERRY_STAGE_BERRIES
@ Route 115
setberrytree 69, ITEM_TO_BERRY(ITEM_KELPSY_BERRY), BERRY_STAGE_BERRIES
setberrytree 70, ITEM_TO_BERRY(ITEM_KELPSY_BERRY), BERRY_STAGE_BERRIES
setberrytree 71, ITEM_TO_BERRY(ITEM_KELPSY_BERRY), BERRY_STAGE_BERRIES
setberrytree 55, ITEM_TO_BERRY(ITEM_BLUK_BERRY), BERRY_STAGE_BERRIES
setberrytree 56, ITEM_TO_BERRY(ITEM_BLUK_BERRY), BERRY_STAGE_BERRIES
@ Route 103
setberrytree 5, ITEM_TO_BERRY(ITEM_CHERI_BERRY), BERRY_STAGE_BERRIES
setberrytree 6, ITEM_TO_BERRY(ITEM_LEPPA_BERRY), BERRY_STAGE_BERRIES
setberrytree 7, ITEM_TO_BERRY(ITEM_CHERI_BERRY), BERRY_STAGE_BERRIES
@ Route 110
setberrytree 16, ITEM_TO_BERRY(ITEM_NANAB_BERRY), BERRY_STAGE_BERRIES
setberrytree 17, ITEM_TO_BERRY(ITEM_NANAB_BERRY), BERRY_STAGE_BERRIES
setberrytree 18, ITEM_TO_BERRY(ITEM_NANAB_BERRY), BERRY_STAGE_BERRIES
@ Route 117
setberrytree 29, ITEM_TO_BERRY(ITEM_WEPEAR_BERRY), BERRY_STAGE_BERRIES
setberrytree 28, ITEM_TO_BERRY(ITEM_WEPEAR_BERRY), BERRY_STAGE_BERRIES
setberrytree 27, ITEM_TO_BERRY(ITEM_WEPEAR_BERRY), BERRY_STAGE_BERRIES
@ Route 112
setberrytree 24, ITEM_TO_BERRY(ITEM_RAWST_BERRY), BERRY_STAGE_BERRIES
setberrytree 23, ITEM_TO_BERRY(ITEM_PECHA_BERRY), BERRY_STAGE_BERRIES
setberrytree 22, ITEM_TO_BERRY(ITEM_PECHA_BERRY), BERRY_STAGE_BERRIES
setberrytree 21, ITEM_TO_BERRY(ITEM_RAWST_BERRY), BERRY_STAGE_BERRIES
@ Route 111
setberrytree 19, ITEM_TO_BERRY(ITEM_RAZZ_BERRY), BERRY_STAGE_BERRIES
setberrytree 20, ITEM_TO_BERRY(ITEM_RAZZ_BERRY), BERRY_STAGE_BERRIES
setberrytree 80, ITEM_TO_BERRY(ITEM_ORAN_BERRY), BERRY_STAGE_BERRIES
setberrytree 81, ITEM_TO_BERRY(ITEM_ORAN_BERRY), BERRY_STAGE_BERRIES
@ Route 114
setberrytree 77, ITEM_TO_BERRY(ITEM_PERSIM_BERRY), BERRY_STAGE_BERRIES
setberrytree 78, ITEM_TO_BERRY(ITEM_PERSIM_BERRY), BERRY_STAGE_BERRIES
setberrytree 68, ITEM_TO_BERRY(ITEM_PERSIM_BERRY), BERRY_STAGE_BERRIES
@ Route 118
setberrytree 31, ITEM_TO_BERRY(ITEM_SITRUS_BERRY), BERRY_STAGE_BERRIES
setberrytree 33, ITEM_TO_BERRY(ITEM_SITRUS_BERRY), BERRY_STAGE_BERRIES
@ Route 119
setberrytree 34, ITEM_TO_BERRY(ITEM_POMEG_BERRY), BERRY_STAGE_BERRIES
setberrytree 35, ITEM_TO_BERRY(ITEM_POMEG_BERRY), BERRY_STAGE_BERRIES
setberrytree 36, ITEM_TO_BERRY(ITEM_POMEG_BERRY), BERRY_STAGE_BERRIES
@@ -45,6 +68,8 @@ EventScript_ResetAllBerries:: @ 827149D
setberrytree 84, ITEM_TO_BERRY(ITEM_HONDEW_BERRY), BERRY_STAGE_BERRIES
setberrytree 85, ITEM_TO_BERRY(ITEM_SITRUS_BERRY), BERRY_STAGE_BERRIES
setberrytree 86, ITEM_TO_BERRY(ITEM_LEPPA_BERRY), BERRY_STAGE_BERRIES
@ Route 120
setberrytree 37, ITEM_TO_BERRY(ITEM_ASPEAR_BERRY), BERRY_STAGE_BERRIES
setberrytree 38, ITEM_TO_BERRY(ITEM_ASPEAR_BERRY), BERRY_STAGE_BERRIES
setberrytree 39, ITEM_TO_BERRY(ITEM_ASPEAR_BERRY), BERRY_STAGE_BERRIES
@@ -55,12 +80,16 @@ EventScript_ResetAllBerries:: @ 827149D
setberrytree 45, ITEM_TO_BERRY(ITEM_PINAP_BERRY), BERRY_STAGE_BERRIES
setberrytree 44, ITEM_TO_BERRY(ITEM_NANAB_BERRY), BERRY_STAGE_BERRIES
setberrytree 43, ITEM_TO_BERRY(ITEM_RAZZ_BERRY), BERRY_STAGE_BERRIES
@ Route 121
setberrytree 47, ITEM_TO_BERRY(ITEM_PERSIM_BERRY), BERRY_STAGE_BERRIES
setberrytree 48, ITEM_TO_BERRY(ITEM_ASPEAR_BERRY), BERRY_STAGE_BERRIES
setberrytree 49, ITEM_TO_BERRY(ITEM_RAWST_BERRY), BERRY_STAGE_BERRIES
setberrytree 50, ITEM_TO_BERRY(ITEM_CHESTO_BERRY), BERRY_STAGE_BERRIES
setberrytree 52, ITEM_TO_BERRY(ITEM_NANAB_BERRY), BERRY_STAGE_BERRIES
setberrytree 53, ITEM_TO_BERRY(ITEM_NANAB_BERRY), BERRY_STAGE_BERRIES
@ Route 123
setberrytree 62, ITEM_TO_BERRY(ITEM_LEPPA_BERRY), BERRY_STAGE_BERRIES
setberrytree 64, ITEM_TO_BERRY(ITEM_LEPPA_BERRY), BERRY_STAGE_BERRIES
setberrytree 58, ITEM_TO_BERRY(ITEM_POMEG_BERRY), BERRY_STAGE_BERRIES
@@ -78,6 +107,8 @@ EventScript_ResetAllBerries:: @ 827149D
setberrytree 87, ITEM_TO_BERRY(ITEM_PECHA_BERRY), BERRY_STAGE_BERRIES
setberrytree 88, ITEM_TO_BERRY(ITEM_SITRUS_BERRY), BERRY_STAGE_BERRIES
setberrytree 89, ITEM_TO_BERRY(ITEM_RAWST_BERRY), BERRY_STAGE_BERRIES
@ Mirage Island
setberrytree 82, ITEM_TO_BERRY(ITEM_LIECHI_BERRY), BERRY_STAGE_BERRIES
return

View File

@@ -308,7 +308,7 @@ SecretBase_EventScript_PutAwayDecorationLoop:: @ 8275D39
compare VAR_0x8005, 0
goto_if_eq SecretBase_EventScript_PutAwayDecorationLoop
removeobject VAR_0x8006
setflag VAR_0x8005 @ UB: GF likely meant setvar here; setflag 0x8005 is out of bounds
setflag VAR_0x8005 @ UB: VAR_0x8005 is set to a flag by PutAwayDecorationIteration, but ScrCmd_setflag doesn't use VarGet
goto SecretBase_EventScript_PutAwayDecorationLoop
end

View File

@@ -1,6 +1,6 @@
Common_EventScript_SetGymTrainers:: @ 8271F43
switch VAR_0x8008
case 1, RusboroCity_Gym_SetGymTrainers
case 1, RustboroCity_Gym_SetGymTrainers
case 2, DewfordTown_Gym_SetGymTrainers
case 3, MauvilleCity_Gym_SetGymTrainers
case 4, LavaridgeTown_Gym_SetGymTrainers
@@ -10,7 +10,7 @@ Common_EventScript_SetGymTrainers:: @ 8271F43
case 8, SootopolisCity_Gym_SetGymTrainers
end
RusboroCity_Gym_SetGymTrainers:: @ 8271FA1
RustboroCity_Gym_SetGymTrainers:: @ 8271FA1
settrainerflag TRAINER_JOSH
settrainerflag TRAINER_TOMMY
settrainerflag TRAINER_MARC

View File

@@ -42,6 +42,26 @@ And edit `AgbMain`:
...
```
This restores the code of Ruby/Sapphire.
**Alternate Fix:** Edit the following function in [src/title_screen.c](https://github.com/pret/pokeemerald/blob/master/src/title_screen.c):
```diff
void CB2_InitTitleScreen(void)
{
switch (gMain.state)
{
default:
case 0:
SetVBlankCallback(NULL);
+ StartTimer1();
SetGpuReg(REG_OFFSET_BLDCNT, 0);
SetGpuReg(REG_OFFSET_BLDALPHA, 0);
SetGpuReg(REG_OFFSET_BLDY, 0);
...
```
This matches with the code of FR/LG and does what GF originally wanted to do.
## Scrolling through items in the bag causes the image to flicker
**Fix:** Add the following function to [src/item_menu_icons.c](https://github.com/pret/pokeemerald/blob/master/src/item_menu_icons.c):

View File

@@ -76,7 +76,7 @@ void FillBitmapRect4Bit(struct Bitmap *surface, u16 x, u16 y, u16 width, u16 hei
s32 yEnd;
s32 multiplierY;
s32 loopX, loopY;
s32 toOrr1, toOrr2;
u8 toOrr1, toOrr2;
xEnd = x + width;
if (xEnd > surface->width)
@@ -87,8 +87,8 @@ void FillBitmapRect4Bit(struct Bitmap *surface, u16 x, u16 y, u16 width, u16 hei
yEnd = surface->height;
multiplierY = (surface->width + (surface->width & 7)) >> 3;
toOrr1 = (u32)(fillValue << 0x1C) >> 0x18;
toOrr2 = (fillValue & 0xF);
toOrr1 = fillValue << 4;
toOrr2 = fillValue & 0xF;
for (loopY = y; loopY < yEnd; loopY++)
{

View File

@@ -462,40 +462,35 @@ u8 GetLastTextColor(u8 colorType)
}
}
#define GLYPH_COPY(fromY_, toY_, fromX_, toX_, unk) \
{ \
u32 i, j, *ptr, toY, fromX, toX, r5, bits; \
u8 *dst; \
j = fromX_; \
i = fromY_; \
ptr = unk; \
toX = toX_; \
toY = toY_; \
fromX = fromX_; \
\
for (; i < toY; i++) \
{ \
asm("":::"sl"); /* NONMATCHING */ \
r5 = *(ptr++); \
for (j = fromX; j < toX; j++) \
{ \
const u32 toOrr = r5 & 0xF; \
if (toOrr) \
{ \
dst = windowTiles + ((j / 8) * 32) + ((j % 8) / 2) + ((i / 8) * widthOffset) + ((i % 8) * 4); \
bits = ((j & 1) * 4); \
*dst = (toOrr << bits) | (*dst & (0xF0 >> bits)); \
} \
r5 >>= 4; \
} \
} \
inline static void GLYPH_COPY(u8 *windowTiles, u32 widthOffset, u32 j, u32 i, u32 *ptr, s32 width, s32 height) //
{
u32 xAdd, yAdd, r5, bits, toOrr, dummyX;
u8 *dst;
xAdd = j + width;
yAdd = i + height;
dummyX = j;
for (; i < yAdd; i++)
{
r5 = *ptr++;
for (j = dummyX; j < xAdd; j++)
{
if ((toOrr = r5 & 0xF))
{
dst = windowTiles + ((j / 8) * 32) + ((j % 8) / 2) + ((i / 8) * widthOffset) + ((i % 8) * 4);
bits = ((j & 1) * 4);
*dst = (toOrr << bits) | (*dst & (0xF0 >> bits));
}
r5 >>= 4;
}
}
}
void CopyGlyphToWindow(struct TextPrinter *textPrinter)
{
struct Window *win;
struct WindowTemplate *winTempl;
struct Struct_03002F90 *unkStruct;
u32 *unkStruct;
u32 currX, currY, widthOffset;
s32 r4, r0;
u8 *windowTiles;
@@ -503,17 +498,15 @@ void CopyGlyphToWindow(struct TextPrinter *textPrinter)
win = &gWindows[textPrinter->printerTemplate.windowId];
winTempl = &win->window;
r4 = (winTempl->width * 8) - textPrinter->printerTemplate.currentX;
if (r4 > gUnknown_03002F90.width)
if ((r4 = (winTempl->width * 8) - textPrinter->printerTemplate.currentX) > gUnknown_03002F90.width)
r4 = gUnknown_03002F90.width;
r0 = (winTempl->height * 8) - textPrinter->printerTemplate.currentY;
if (r0 > gUnknown_03002F90.height)
if ((r0 = (winTempl->height * 8) - textPrinter->printerTemplate.currentY) > gUnknown_03002F90.height)
r0 = gUnknown_03002F90.height;
currX = textPrinter->printerTemplate.currentX;
currY = textPrinter->printerTemplate.currentY;
unkStruct = &gUnknown_03002F90;
unkStruct = (u32 *)&gUnknown_03002F90.unk0;
windowTiles = win->tileData;
widthOffset = winTempl->width * 32;
@@ -521,45 +514,31 @@ void CopyGlyphToWindow(struct TextPrinter *textPrinter)
{
if (r0 < 9)
{
GLYPH_COPY(currY, currY + r0, currX, currX + r4, unkStruct->unk0);
GLYPH_COPY(windowTiles, widthOffset, currX, currY, unkStruct, r4, r0);
}
else
{
u32 temp;
GLYPH_COPY(currY, currY + 8, currX, currX + r4, unkStruct->unk0);
temp = currY + 8;
GLYPH_COPY(temp, (temp - 8) + r0, currX, currX + r4, unkStruct->unk40);
GLYPH_COPY(windowTiles, widthOffset, currX, currY, unkStruct, r4, 8);
GLYPH_COPY(windowTiles, widthOffset, currX, currY + 8, unkStruct + 16, r4, r0 - 8);
}
}
else
{
u32 temp;
if (r0 < 9)
{
GLYPH_COPY(currY, currY + r0, currX, currX + 8, unkStruct->unk0);
temp = currX + 8;
GLYPH_COPY(currY, currY + r0, temp, (temp - 8) + r4, unkStruct->unk20);
GLYPH_COPY(windowTiles, widthOffset, currX, currY, unkStruct, 8, r0);
GLYPH_COPY(windowTiles, widthOffset, currX + 8, currY, unkStruct + 8, r4 - 8, r0);
}
else
{
GLYPH_COPY(currY, currY + 8, currX, currX + 8, unkStruct->unk0);
temp = currX + 8;
GLYPH_COPY(currY, currY + 8, temp, temp - 8 + r4, unkStruct->unk20);
temp = currY + 8;
GLYPH_COPY(temp, temp - 8 + r0, currX, currX + 8, unkStruct->unk40);
{
u32 tempX, tempY;
tempX = currX + 8;
tempY = currY + 8;
GLYPH_COPY(tempY, tempY - 8 + r0, tempX, tempX - 8 + r4, unkStruct->unk60);
}
GLYPH_COPY(windowTiles, widthOffset, currX, currY, unkStruct, 8, 8);
GLYPH_COPY(windowTiles, widthOffset, currX + 8, currY, unkStruct + 8, r4 - 8, 8);
GLYPH_COPY(windowTiles, widthOffset, currX, currY + 8, unkStruct + 16, 8, r0 - 8);
GLYPH_COPY(windowTiles, widthOffset, currX + 8, currY + 8, unkStruct + 24, r4 - 8, r0 - 8);
}
}
}
void ClearTextSpan(struct TextPrinter *textPrinter, u32 width)
{
struct Window *window;

View File

Before

Width:  |  Height:  |  Size: 141 B

After

Width:  |  Height:  |  Size: 141 B

View File

Before

Width:  |  Height:  |  Size: 596 B

After

Width:  |  Height:  |  Size: 596 B

View File

@@ -709,7 +709,7 @@ $(PKNAVOPTIONSGFXDIR)/options.4bpp: $(PKNAVOPTIONSGFXDIR)/hoenn_map.4bpp \
$(PKNAVGFXDIR)/header.4bpp: %.4bpp: %.png
$(GFX) $< $@ -num_tiles 53
$(PKNAVGFXDIR)/outline.4bpp: %.4bpp: %.png
$(PKNAVGFXDIR)/device_outline.4bpp: %.4bpp: %.png
$(GFX) $< $@ -num_tiles 53
$(PKNAVGFXDIR)/ui_matchcall.4bpp: %.4bpp: %.png

View File

@@ -176,8 +176,8 @@ typedef struct linkManagerTag
/* 0x024 */ VBL_TIMER nameAcceptTimer;
/* 0x030 */ VBL_TIMER linkRecoveryTimer;
/* 0x03c */ INIT_PARAM *init_param;
/* 0x040 */ void (*LMAN_callback)(u8, u8);
/* 0x044 */ void (*MSC_callback)(u16);
/* 0x040 */ void (*LMAN_callback)(u8 msg, u8 paramCount);
/* 0x044 */ void (*MSC_callback)(u16 REQ_commandID);
} LINK_MANAGER;
extern struct linkManagerTag lman;

View File

@@ -598,7 +598,7 @@ struct BattleScripting
u8 savedBattler;
u8 reshowMainState;
u8 reshowHelperState;
u8 field_23;
u8 levelUpHP;
u8 windowsType; // 0 - normal, 1 - battle arena
u8 multiplayerId;
u8 specialTrainerBattleType;

View File

@@ -58,8 +58,6 @@ void nullsub_20(void);
void BeginBattleIntro(void);
void SwitchInClearSetData(void);
void FaintClearSetData(void);
void sub_803B3AC(void); // unused
void sub_803B598(void); // unused
void BattleTurnPassed(void);
u8 IsRunningFromBattleImpossible(void);
void SwitchPartyOrder(u8 battlerId);
@@ -71,6 +69,7 @@ u8 GetWhoStrikesFirst(u8 battlerId1, u8 battlerId2, bool8 ignoreChosenMoves);
void RunBattleScriptCommands_PopCallbacksStack(void);
void RunBattleScriptCommands(void);
bool8 TryRunFromBattle(u8 battlerId);
void SpecialStatusesClear(void);
void SetTypeBeforeUsingMove(u16 move, u8 battlerAtk);
extern struct UnknownPokemonStruct4 gMultiPartnerParty[MULTI_PARTY_SIZE];

View File

@@ -154,7 +154,7 @@
{ \
textVar[0] = B_BUFF_PLACEHOLDER_BEGIN; \
textVar[1] = B_BUFF_STRING; \
textVar[2] = stringId & 0xFF; \
textVar[2] = (stringId & 0xFF); \
textVar[3] = (stringId & 0xFF00) >> 8; \
textVar[4] = B_BUFF_EOS; \
}

View File

@@ -43,7 +43,9 @@ extern const struct BattleFrontierTrainer gBattleFrontierTrainers[];
extern const struct FacilityMon gSlateportBattleTentMons[];
extern const struct BattleFrontierTrainer gSlateportBattleTentTrainers[];
extern u16 gUnknown_03006298[];
// Temporary storage for monIds of the opponent team
// during team generation in battle factory and similar facilities.
extern u16 gFrontierTempParty[];
extern const struct BattleFrontierTrainer *gFacilityTrainers;
extern const struct FacilityMon *gFacilityTrainerMons;

View File

@@ -45,6 +45,19 @@ struct TypePower
extern const struct TypePower gNaturalGiftTable[];
void HandleAction_UseMove(void);
void HandleAction_Switch(void);
void HandleAction_UseItem(void);
void HandleAction_Run(void);
void HandleAction_WatchesCarefully(void);
void HandleAction_SafariZoneBallThrow(void);
void HandleAction_ThrowPokeblock(void);
void HandleAction_GoNear(void);
void HandleAction_SafariZoneRun(void);
void HandleAction_WallyBallThrow(void);
void HandleAction_TryFinish(void);
void HandleAction_NothingIsFainted(void);
void HandleAction_ActionFinished(void);
u8 GetBattlerForBattleScript(u8 caseId);
void PressurePPLose(u8 target, u8 attacker, u16 move);
void PressurePPLoseOnUsingPerishSong(u8 attacker);

View File

@@ -51,6 +51,11 @@
// fields 6 and onwards are item-specific arguments
// Special HP recovery amounts for ITEM4_HEAL_HP
#define ITEM6_HEAL_FULL ((u8) -1)
#define ITEM6_HEAL_HALF ((u8) -2)
#define ITEM6_HEAL_LVL_UP ((u8) -3)
// Used for GetItemEffectType.
#define ITEM_EFFECT_X_ITEM 0
#define ITEM_EFFECT_RAISE_LEVEL 1

View File

@@ -497,6 +497,10 @@
#define MAX_PC_ITEM_CAPACITY 999
#define MAX_BERRY_CAPACITY 999
#define BAG_ITEM_CAPACITY_DIGITS 2
#define BERRY_CAPACITY_DIGITS 3
#define MAX_ITEM_DIGITS BERRY_CAPACITY_DIGITS
// Secondary IDs for rods
#define OLD_ROD 0
#define GOOD_ROD 1

View File

@@ -240,30 +240,30 @@
#define UNOWN_FORM_COUNT 28
// Battle move flags
#define FLAG_MAKES_CONTACT 0x1
#define FLAG_PROTECT_AFFECTED 0x2
#define FLAG_MAGICCOAT_AFFECTED 0x4
#define FLAG_SNATCH_AFFECTED 0x8
#define FLAG_MIRROR_MOVE_AFFECTED 0x10
#define FLAG_KINGSROCK_AFFECTED 0x20
#define FLAG_HIGH_CRIT 0x40
#define FLAG_RECKLESS_BOOST 0x80
#define FLAG_IRON_FIST_BOOST 0x100
#define FLAG_SHEER_FORCE_BOOST 0x200
#define FLAG_STRONG_JAW_BOOST 0x400
#define FLAG_MEGA_LAUNCHER_BOOST 0x800
#define FLAG_STAT_STAGES_IGNORED 0x1000
#define FLAG_DMG_MINIMIZE 0x2000
#define FLAG_DMG_UNDERGROUND 0x4000
#define FLAG_DMG_UNDERWATER 0x8000
#define FLAG_SOUND 0x10000
#define FLAG_BALLISTIC 0x20000
#define FLAG_PROTECTION_MOVE 0x40000
#define FLAG_POWDER 0x80000
#define FLAG_TARGET_ABILITY_IGNORED 0x100000
#define FLAG_DANCE 0x200000
#define FLAG_DMG_IN_AIR 0x400000 // X2 dmg on air, always hits target on air
#define FLAG_HIT_IN_AIR 0x800000 // dmg is normal, always hits target on air
#define FLAG_MAKES_CONTACT (1 << 0)
#define FLAG_PROTECT_AFFECTED (1 << 1)
#define FLAG_MAGICCOAT_AFFECTED (1 << 2)
#define FLAG_SNATCH_AFFECTED (1 << 3)
#define FLAG_MIRROR_MOVE_AFFECTED (1 << 4)
#define FLAG_KINGSROCK_AFFECTED (1 << 5)
#define FLAG_HIGH_CRIT (1 << 6)
#define FLAG_RECKLESS_BOOST (1 << 7)
#define FLAG_IRON_FIST_BOOST (1 << 8)
#define FLAG_SHEER_FORCE_BOOST (1 << 9)
#define FLAG_STRONG_JAW_BOOST (1 << 10)
#define FLAG_MEGA_LAUNCHER_BOOST (1 << 11)
#define FLAG_STAT_STAGES_IGNORED (1 << 12)
#define FLAG_DMG_MINIMIZE (1 << 13)
#define FLAG_DMG_UNDERGROUND (1 << 14)
#define FLAG_DMG_UNDERWATER (1 << 15)
#define FLAG_SOUND (1 << 16)
#define FLAG_BALLISTIC (1 << 17)
#define FLAG_PROTECTION_MOVE (1 << 18)
#define FLAG_POWDER (1 << 19)
#define FLAG_TARGET_ABILITY_IGNORED (1 << 20)
#define FLAG_DANCE (1 << 21)
#define FLAG_DMG_IN_AIR (1 << 22) // X2 dmg on air, always hits target on air
#define FLAG_HIT_IN_AIR (1 << 23) // dmg is normal, always hits target on air
// Split defines.
#define SPLIT_PHYSICAL 0x0
@@ -292,23 +292,23 @@
#define F_SUMMARY_SCREEN_FLIP_SPRITE 0x80
// Evolution type flags
// Evolution types
#define EVO_MEGA_EVOLUTION 0xffff // Not an actual evolution, used to temporarily mega evolve in battle.
#define EVO_FRIENDSHIP 0x0001 // Pokémon levels up with friendship ≥ 220
#define EVO_FRIENDSHIP_DAY 0x0002 // Pokémon levels up during the day with friendship ≥ 220
#define EVO_FRIENDSHIP_NIGHT 0x0003 // Pokémon levels up at night with friendship ≥ 220
#define EVO_LEVEL 0x0004 // Pokémon reaches the specified level
#define EVO_TRADE 0x0005 // Pokémon is traded
#define EVO_TRADE_ITEM 0x0006 // Pokémon is traded while it's holding the specified item
#define EVO_ITEM 0x0007 // specified item is used on Pokémon
#define EVO_LEVEL_ATK_GT_DEF 0x0008 // Pokémon reaches the specified level with attack > defense
#define EVO_LEVEL_ATK_EQ_DEF 0x0009 // Pokémon reaches the specified level with attack = defense
#define EVO_LEVEL_ATK_LT_DEF 0x000a // Pokémon reaches the specified level with attack < defense
#define EVO_LEVEL_SILCOON 0x000b // Pokémon reaches the specified level with a Silcoon personality value
#define EVO_LEVEL_CASCOON 0x000c // Pokémon reaches the specified level with a Cascoon personality value
#define EVO_LEVEL_NINJASK 0x000d // Pokémon reaches the specified level (special value for Ninjask)
#define EVO_LEVEL_SHEDINJA 0x000e // Pokémon reaches the specified level (special value for Shedinja)
#define EVO_BEAUTY 0x000f // Pokémon levels up with beauty ≥ specified value
#define EVO_FRIENDSHIP 1 // Pokémon levels up with friendship ≥ 220
#define EVO_FRIENDSHIP_DAY 2 // Pokémon levels up during the day with friendship ≥ 220
#define EVO_FRIENDSHIP_NIGHT 3 // Pokémon levels up at night with friendship ≥ 220
#define EVO_LEVEL 4 // Pokémon reaches the specified level
#define EVO_TRADE 5 // Pokémon is traded
#define EVO_TRADE_ITEM 6 // Pokémon is traded while it's holding the specified item
#define EVO_ITEM 7 // specified item is used on Pokémon
#define EVO_LEVEL_ATK_GT_DEF 8 // Pokémon reaches the specified level with attack > defense
#define EVO_LEVEL_ATK_EQ_DEF 9 // Pokémon reaches the specified level with attack = defense
#define EVO_LEVEL_ATK_LT_DEF 10 // Pokémon reaches the specified level with attack < defense
#define EVO_LEVEL_SILCOON 11 // Pokémon reaches the specified level with a Silcoon personality value
#define EVO_LEVEL_CASCOON 12 // Pokémon reaches the specified level with a Cascoon personality value
#define EVO_LEVEL_NINJASK 13 // Pokémon reaches the specified level (special value for Ninjask)
#define EVO_LEVEL_SHEDINJA 14 // Pokémon reaches the specified level (special value for Shedinja)
#define EVO_BEAUTY 15 // Pokémon levels up with beauty ≥ specified value
#define EVOS_PER_MON 5

View File

@@ -2,7 +2,6 @@
#define GUARD_DATA_H
#include "constants/moves.h"
#include "constants/species.h"
#define SPECIES_SHINY_TAG 500

View File

@@ -8,6 +8,7 @@
#include "constants/global.h"
#include "constants/flags.h"
#include "constants/vars.h"
#include "constants/species.h"
// Prevent cross-jump optimization.
#define BLOCK_CROSS_JUMP asm("");
@@ -71,8 +72,6 @@
#define Q_4_12_ROUND ((1) << (12 - 1))
#define UQ_4_12_ROUND ((1) << (12 - 1))
#define POKEMON_SLOTS_NUMBER 412
#define min(a, b) ((a) < (b) ? (a) : (b))
#define max(a, b) ((a) >= (b) ? (a) : (b))
@@ -121,7 +120,7 @@
#define ROUND_BITS_TO_BYTES(numBits)(((numBits) / 8) + (((numBits) % 8) ? 1 : 0))
#define DEX_FLAGS_NO (ROUND_BITS_TO_BYTES(POKEMON_SLOTS_NUMBER))
#define DEX_FLAGS_NO (ROUND_BITS_TO_BYTES(NUM_SPECIES))
#define NUM_FLAG_BYTES (ROUND_BITS_TO_BYTES(FLAGS_COUNT))
struct Coords8

View File

@@ -23,7 +23,7 @@ struct UnknownSubStruct_81D1ED4
struct ConditionGraph
{
/*0x000*/ u8 unk0[4][FLAVOR_COUNT];
/*0x000*/ u8 stat[4][FLAVOR_COUNT];
/*0x014*/ struct UnknownSubStruct_81D1ED4 unk14[4][FLAVOR_COUNT];
/*0x064*/ struct UnknownSubStruct_81D1ED4 unk64[10][FLAVOR_COUNT];
/*0x12C*/ struct UnknownSubStruct_81D1ED4 unk12C[FLAVOR_COUNT];
@@ -32,7 +32,7 @@ struct ConditionGraph
/*0x350*/ u16 unk350;
/*0x352*/ u16 unk352;
/*0x354*/ u8 unk354;
/*0x355*/ u8 unk355;
/*0x355*/ u8 state;
};
bool8 sub_81D1C44(u8 count);
@@ -41,12 +41,12 @@ u8 sub_81D1DC0(struct PlayerPCItemPageStruct *page);
void sub_81D1E90(struct PlayerPCItemPageStruct *page);
void sub_81D1EC0(void);
void sub_81D1D04(u8 a0);
void sub_81D1ED4(struct ConditionGraph *graph);
void InitConditionGraphData(struct ConditionGraph *graph);
void sub_81D2108(struct ConditionGraph *graph);
void sub_81D21DC(u8 bg);
void sub_81D20AC(struct ConditionGraph *graph);
void SetConditionGraphIOWindows(u8 bg);
void InitConditionGraphState(struct ConditionGraph *graph);
void sub_81D2230(struct ConditionGraph *graph);
bool8 sub_81D20BC(struct ConditionGraph *graph);
bool8 SetupConditionGraphScanlineParams(struct ConditionGraph *graph);
bool32 TransitionConditionGraph(struct ConditionGraph *graph);
void sub_81D2754(u8 *arg0, struct UnknownSubStruct_81D1ED4 *arg1);
void sub_81D1F84(struct ConditionGraph *graph, struct UnknownSubStruct_81D1ED4 *arg1, struct UnknownSubStruct_81D1ED4 *arg2);

View File

@@ -29,8 +29,8 @@ bool8 sub_811F960(void);
void sub_811FA90(void);
void sub_811FAA4(u8 markings, s16 x, s16 y);
void sub_811FAF8(void);
bool8 sub_811FBA4(void);
struct Sprite *sub_811FF94(u16 tileTag, u16 paletteTag, const u16 *palette);
bool8 MonMarkingsMenuHandleInput(void);
struct Sprite *CreateMonMarkingsSpriteWithPal(u16 tileTag, u16 paletteTag, const u16 *palette);
struct Sprite *sub_811FFB4(u16 tileTag, u16 paletteTag, const u16 *palette);
void sub_8120084(u8 markings, void *dest);

View File

@@ -123,12 +123,12 @@ struct Pokemon
struct Unknown_806F160_Struct
{
u8 field_0_0:4;
u8 field_0_1:4;
u8 field_1;
u8 magic;
u8 field_3_0:4;
u8 field_3_1:4;
u32 field_0_0:4;
u32 field_0_1:4;
u32 field_1:8;
u16 magic:8;
u32 size:4;
u16 field_3_1:4;
void *bytes;
u8 **byteArrays;
struct SpriteTemplate *templates;

View File

@@ -27,17 +27,17 @@ struct PokenavListTemplate
struct PokenavMonList *monList;
struct PokenavMatchCallEntries *matchCallEntries;
} list;
u16 unk4;
u16 count;
u16 unk6;
u8 unk8;
u8 unk9;
u8 unkA;
u8 unkB;
u8 unkC;
u8 unkD;
u8 unkE;
u8 item_X;
u8 windowWidth;
u8 listTop;
u8 maxShowed;
u8 fillValue;
u8 fontId;
union {
void (*unk10_1)(struct PokenavMonList *, u8 *a1);
void (*printMonFunc)(struct PokenavMonList *item, u8 *dest);
void (*unk10_2)(struct PokenavMatchCallEntries *, u8 *a1);
} listFunc;
void (*unk14)(u16 a0, u32 a1, u32 a2);
@@ -45,9 +45,9 @@ struct PokenavListTemplate
struct PokenavSub18
{
u16 unk0;
u16 unk2;
struct PokenavMonList unk4[TOTAL_BOXES_COUNT * IN_BOX_COUNT + PARTY_SIZE];
u16 listCount;
u16 currIndex;
struct PokenavMonList monData[TOTAL_BOXES_COUNT * IN_BOX_COUNT + PARTY_SIZE];
};
// Return values of LoopedTask functions.
@@ -65,6 +65,31 @@ enum
POKENAV_MODE_FORCE_CALL_EXIT, // Pokenav tutorial after calling Mr. Stone
};
// TODO - refine these names
enum Substructures
{
POKENAV_SUBSTRUCT_MAIN_MENU,
POKENAV_SUBSTRUCT_MAIN_MENU_HANDLER,
POKENAV_SUBSTRUCT_MENU_ICONS,
POKENAV_SUBSTRUCT_REGION_MAP_STATE,
POKENAV_SUBSTRUCT_REGION_MAP_ZOOM,
POKENAV_SUBSTRUCT_MATCH_CALL_MAIN,
POKENAV_SUBSTRUCT_MATCH_CALL_OPEN,
POKENAV_SUBSTRUCT_CONDITION_SEARCH_RESULTS,
POKENAV_SUBSTRUCT_CONDITION_SEARCH_RESULT_LIST,
POKENAV_SUBSTRUCT_RIBBONS_MON_LIST,
POKENAV_SUBSTRUCT_RIBBONS_MON_MENU,
POKENAV_SUBSTRUCT_CONDITION_GRAPH,
POKENAV_SUBSTRUCT_MON_MARK_MENU,
POKENAV_SUBSTRUCT_RIBBONS_SUMMARY_LIST,
POKENAV_SUBSTRUCT_RIBBONS_SUMMARY_MENU,
POKENAV_SUBSTRUCT_15, //unused
POKENAV_SUBSTRUCT_REGION_MAP,
POKENAV_SUBSTRUCT_MATCH_CALL_LIST,
POKENAV_SUBSTRUCT_MON_LIST,
POKENAV_SUBSTRUCT_COUNT,
};
enum
{
POKENAV_GFX_MAIN_MENU,
@@ -97,12 +122,12 @@ enum
POKENAV_REGION_MAP,
POKENAV_CONDITION_PARTY,
POKENAV_CONDITION_SEARCH_RESULTS,
POKENAV_MENU_9, // Condition
POKENAV_MENU_A, // Condition
POKENAV_CONDITION_GRAPH_FROM_SEARCH, // opening condition graph from search list
POKENAV_RETURN_CONDITION_SEARCH, //return to search list from condition graph
POKENAV_MATCH_CALL,
POKENAV_RIBBONS_MON_LIST,
POKENAV_MENU_D, // Ribbons
POKENAV_MENU_E, // Ribbons
POKENAV_RIBBONS_SUMMARY_SCREEN,
POKENAV_RIBBONS_RETURN_TO_MON_LIST,
};
enum
@@ -207,7 +232,7 @@ enum
// Pokenav Function IDs
// Indices into the LoopedTask tables for each of the main Pokenav features
enum
enum RegionMapFuncIds
{
POKENAV_MENU_FUNC_NONE,
POKENAV_MENU_FUNC_MOVE_CURSOR,
@@ -220,6 +245,19 @@ enum
POKENAV_MENU_FUNC_OPEN_FEATURE,
};
enum PartyConditionFuncIds
{
PARTY_CONDITION_FUNC_NONE,
PARTY_CONDITION_FUNC_SLIDE_MON_IN,
PARTY_CONDITION_FUNC_RETURN,
PARTY_CONDITION_FUNC_NO_TRANSITION,
PARTY_CONDITION_FUNC_SLIDE_MON_OUT,
PARTY_CONDITION_FUNC_ADD_MARKINGS,
PARTY_CONDITION_FUNC_CLOSE_MARKINGS,
};
#define POKENAV_MENU_FUNC_EXIT -1
enum
{
POKENAV_MC_FUNC_NONE,
@@ -268,17 +306,17 @@ void SetPokenavVBlankCallback(void);
void SetVBlankCallback_(IntrCallback callback);
// pokenav_match_call_ui.c
u32 GetSelectedMatchCall(void);
u32 GetSelectedPokenavListIndex(void);
bool32 sub_81C8224(void);
int MatchCall_MoveCursorUp(void);
int MatchCall_MoveCursorDown(void);
int MatchCall_PageDown(void);
int MatchCall_PageUp(void);
bool32 sub_81C8630(void);
bool32 IsMonListLoopedTaskActive(void);
void ToggleMatchCallVerticalArrows(bool32 shouldHide);
void sub_81C8838(void);
void sub_81C877C(void);
bool32 sub_81C8820(void);
bool32 IsMatchCallListTaskActive(void);
void PrintCheckPageInfo(s16 a0);
u32 GetMatchCallListTopIndex(void);
void sub_81C87F0(void);
@@ -300,30 +338,30 @@ void MatchCall_GetNameAndDesc(u32 idx, const u8 **desc, const u8 **name);
// pokenav_main_menu.c
bool32 InitPokenavMainMenu(void);
void CopyPaletteIntoBufferUnfaded(const u16 *palette, u32 bufferOffset, u32 size);
void sub_81C7850(u32 a0);
u32 sub_81C786C(void);
void RunMainMenuLoopedTask(u32 a0);
u32 IsActiveMenuLoopTaskActive(void);
void LoadLeftHeaderGfxForIndex(u32 arg0);
void sub_81C7FA0(u32 arg0, bool32 arg1, bool32 arg2);
void ShowLeftHeaderGfx(u32 menugfxId, bool32 arg1, bool32 isOnRightSide);
void PokenavFadeScreen(s32 fadeType);
bool32 sub_81C8010(void);
bool32 AreLeftHeaderSpritesMoving(void);
void InitBgTemplates(const struct BgTemplate *templates, int count);
bool32 IsPaletteFadeActive(void);
void PrintHelpBarText(u32 textId);
bool32 WaitForHelpBar(void);
void sub_81C78A0(void);
void SlideMenuHeaderDown(void);
bool32 MainMenuLoopedTaskIsBusy(void);
void sub_81C7FDC(void);
void sub_81C79BC(const u16 *a0, const u16 *a1, int a2, int a3, int a4, u16 *palette);
void SetLeftHeaderSpritesInvisibility(void);
void PokenavCopyPalette(const u16 *a0, const u16 *a1, int a2, int a3, int a4, u16 *palette);
void sub_81C7B40(void);
struct Sprite *PauseSpinningPokenavSprite(void);
void ResumeSpinningPokenavSprite(void);
void sub_81C7E14(u32 arg0);
void sub_81C7FC4(u32 arg0, bool32 arg1);
void sub_81C7880(void);
void sub_81C7990(u32 a0, u16 a1);
void UpdateRegionMapRightHeaderTiles(u32 arg0);
void HideMainOrSubMenuLeftHeader(u32 id, bool32 onRightSide);
void SlideMenuHeaderUp(void);
void PokenavFillPalette(u32 palIndex, u16 fillValue);
u32 PokenavMainMenuLoopedTaskIsActive(void);
bool32 WaitForPokenavShutdownFade(void);
void sub_81C7834(void *func1, void *func2);
void SetActiveMenuLoopTasks(void *func1, void *func2);
void ShutdownPokenav(void);
// pokenav_menu_handler_1.c
@@ -345,7 +383,7 @@ bool32 OpenPokenavMenuNotInitial(void);
void CreateMenuHandlerLoopedTask(s32 ltIdx);
bool32 IsMenuHandlerLoopedTaskActive(void);
void FreeMenuHandlerSubstruct2(void);
void sub_81CAADC(void);
void ResetBldCnt_(void);
// pokenav_match_call_1.c
bool32 PokenavCallback_Init_MatchCall(void);
@@ -364,7 +402,7 @@ const u8 *GetMatchCallMessageText(int index, u8 *arg1);
u16 GetMatchCallOptionCursorPos(void);
u16 GetMatchCallOptionId(int arg0);
void BufferMatchCallNameAndDesc(struct PokenavMatchCallEntries * arg0, u8 *str);
u8 sub_81CB0C8(int rematchIndex);
u8 GetMatchTableMapSectionId(int rematchIndex);
int GetIndexDeltaOfNextCheckPageDown(int index);
int GetIndexDeltaOfNextCheckPageUp(int index);
bool32 IsRematchEntryRegistered(int index);
@@ -385,60 +423,60 @@ void FreeRegionMapSubstruct1(void);
void FreeRegionMapSubstruct2(void);
// pokenav_conditions_1.c
u32 PokenavCallback_Init_7(void);
u32 PokenavCallback_Init_9(void);
u32 sub_81CD070(void);
void sub_81CD1C0(void);
bool32 sub_81CD3C4(void);
bool32 sub_81CDD5C(void);
struct ConditionGraph *sub_81CDC70(void);
u16 sub_81CDC60(void);
u16 sub_81CDC50(void);
u8 sub_81CDDB0(void);
bool32 sub_81CD548(u8 arg0);
u8 sub_81CDD7C(void);
u8 *sub_81CDD04(u8 id);
u8 *sub_81CDD24(u8 id);
u16 sub_81CDD48(void);
void *sub_81CDCB4(u8 id);
void *sub_81CDCD4(u8 id);
u32 PokenavCallback_Init_PartyCondition(void);
u32 PokenavCallback_Init_ConditionGraphFromSearch(void);
u32 GetPartyConditionCallback(void);
void FreePartyConditionSubstruct1(void);
bool32 LoadPartyConditionMenuGfx(void);
bool32 IsConditionMenuSearchMode(void);
struct ConditionGraph *GetConditionGraphDataPtr(void);
u16 GetConditionGraphCurrentMonIndex(void);
u16 GetMonListCount(void);
u8 GetMonSheen(void);
bool32 SetConditionGraphData(u8 arg0);
u8 TryGetMonMarkId(void);
u8 *GetConditionMonNameBuffer(u8 id);
u8 *GetConditionMonLocationBuffer(u8 id);
u16 GetConditionMonDataBuffer(void);
void *GetConditionMonPicGfx(u8 id);
void *GetConditionMonPal(u8 id);
// pokenav_conditions_2.c
bool32 sub_81CDDD4(void);
void sub_81CDE2C(s32);
u32 sub_81CDE64(void);
void sub_81CECA0(void);
u8 sub_81CEF14(void);
bool32 OpenPartyConditionMenu(void);
void CreatePartyConditionLoopedTask(s32);
u32 IsPartyConditionLoopedTaskActive(void);
void FreePartyConditionSubstruct2(void);
u8 GetMonMarkingsData(void);
// pokenav_conditions_3.c
u32 PokenavCallback_Init_8(void);
u32 PokenavCallback_Init_10(void);
u32 sub_81CEFDC(void);
void sub_81CEFF0(void);
bool32 sub_81CF330(void);
bool32 sub_81CF368(void);
void sub_81CF3A0(s32);
u32 sub_81CF3D0(void);
void sub_81CF3F8(void);
u32 PokenavCallback_Init_ConditionSearch(void);
u32 PokenavCallback_Init_ReturnToMonSearchList(void);
u32 GetConditionSearchResultsCallback(void);
void FreeSearchResultSubstruct1(void);
bool32 OpenConditionSearchResults(void);
bool32 OpenConditionSearchListFromGraph(void);
void CreateSearchResultsLoopedTask(s32);
u32 IsSearchResultLoopedTaskActive(void);
void FreeSearchResultSubstruct2(void);
// pokenav_ribbons_1.c
u32 PokenavCallback_Init_12(void);
u32 PokenavCallback_Init_14(void);
u32 sub_81CFA34(void);
void sub_81CFA48(void);
bool32 sub_81CFDD0(void);
bool32 sub_81CFE08(void);
void sub_81CFE40(s32);
u32 sub_81CFE70(void);
void sub_81CFE98(void);
u32 PokenavCallback_Init_MonRibbonList(void);
u32 PokenavCallback_Init_RibbonsMonListFromSummary(void);
u32 GetRibbonsMonListCallback(void);
void FreeRibbonsMonList1(void);
bool32 OpenRibbonsMonList(void);
bool32 OpenRibbonsMonListFromRibbonsSummary(void);
void CreateRibbonsMonListLoopedTask(s32);
u32 IsRibbonsMonListLoopedTaskActive(void);
void FreeRibbonsMonList2(void);
// pokenav_ribbons_2.c
u32 PokenavCallback_Init_13(void);
u32 sub_81D04A0(void);
void sub_81D04B8(void);
bool32 sub_81D0978(void);
void sub_81D09B0(s32);
u32 sub_81D09E0(void);
void sub_81D09F4(void);
u32 PokenavCallback_Init_RibbonsSummaryMenu(void);
u32 GetRibbonsSummaryMenuCallback(void);
void FreeRibbonsSummaryScreen1(void);
bool32 OpenRibbonsSummaryMenu(void);
void CreateRibbonsSummaryLoopedTask(s32);
u32 IsRibbonsSummaryLoopedTaskActive(void);
void FreeRibbonsSummaryScreen2(void);
#endif // GUARD_POKENAV_H

View File

@@ -8,10 +8,10 @@ struct TrainerHillTrainer
u8 name[HILL_TRAINER_NAME_LENGTH];
u8 facilityClass;
u32 unused;
u16 speechBefore[6];
u16 speechWin[6];
u16 speechLose[6];
u16 speechAfter[6];
u16 speechBefore[EASY_CHAT_BATTLE_WORDS_COUNT];
u16 speechWin[EASY_CHAT_BATTLE_WORDS_COUNT];
u16 speechLose[EASY_CHAT_BATTLE_WORDS_COUNT];
u16 speechAfter[EASY_CHAT_BATTLE_WORDS_COUNT];
struct BattleTowerPokemon mons[PARTY_SIZE];
};
@@ -23,11 +23,19 @@ struct TrHillRoomTrainers
struct TrHillDisplay
{
u8 data[0x100];
u16 unk3A0[16];
u8 coords[2]; // x first 4 bits, y last 4 bits
u8 direction; // array of 4 bits for each trainer
u8 range; // array of 4 bits for each trainer
// Metatile data. Add 0x200 to the values in this array to get metatiles.
// This data then overwrites the metatiles in the map starting at (0,5)
u8 metatileData[0x100];
// Collision data. One bit for each tile in column-major order,
// so every array entry is one row. 1 = impassable, 0 = passable
u16 collisionData[16];
// Trainer coordinates, starting at (0,6). Format is 0bYYYYXXXX.
u8 coords[2];
// Trainer facing directions. Same as (DIR_* - 1).
// Effectively an array of nibbles, one for each trainer.
u8 direction;
// Trainer sight ranges. Effectively an array of nibbles, one for each trainer.
u8 range;
};
struct TrHillFloor

View File

@@ -1,26 +1,26 @@
.align 2
DirectSoundWaveData_sc88_glockenspiel::
.incbin "sound/direct_sound_samples/sc88_glockenspiel.bin"
DirectSoundWaveData_sc88pro_glockenspiel::
.incbin "sound/direct_sound_samples/sc88pro_glockenspiel.bin"
.align 2
DirectSoundWaveData_sc88_organ2::
.incbin "sound/direct_sound_samples/sc88_organ2.bin"
DirectSoundWaveData_sc88pro_organ2::
.incbin "sound/direct_sound_samples/sc88pro_organ2.bin"
.align 2
DirectSoundWaveData_sc88_fretless_bass::
.incbin "sound/direct_sound_samples/sc88_fretless_bass.bin"
DirectSoundWaveData_sc88pro_fretless_bass::
.incbin "sound/direct_sound_samples/sc88pro_fretless_bass.bin"
.align 2
DirectSoundWaveData_jv1080_slap_bass::
.incbin "sound/direct_sound_samples/jv1080_slap_bass.bin"
DirectSoundWaveData_sc88pro_slap_bass::
.incbin "sound/direct_sound_samples/sc88pro_slap_bass.bin"
.align 2
DirectSoundWaveData_sc88_synth_bass::
.incbin "sound/direct_sound_samples/sc88_synth_bass.bin"
DirectSoundWaveData_sc88pro_synth_bass::
.incbin "sound/direct_sound_samples/sc88pro_synth_bass.bin"
.align 2
DirectSoundWaveData_sc88_timpani::
.incbin "sound/direct_sound_samples/sc88_timpani.bin"
DirectSoundWaveData_sc88pro_timpani::
.incbin "sound/direct_sound_samples/sc88pro_timpani.bin"
.align 2
DirectSoundWaveData_classical_choir_voice_ahhs::
@@ -35,44 +35,44 @@ DirectSoundWaveData_unused_sd90_oboe::
.incbin "sound/direct_sound_samples/unused_sd90_oboe.bin"
.align 2
DirectSoundWaveData_unused_electric_guitar::
.incbin "sound/direct_sound_samples/unused_electric_guitar.bin"
DirectSoundWaveData_unused_guitar_separates_power_chord::
.incbin "sound/direct_sound_samples/unused_guitar_separates_power_chord.bin"
.align 2
DirectSoundWaveData_unused_sc88_unison_slap::
.incbin "sound/direct_sound_samples/unused_sc88_unison_slap.bin"
DirectSoundWaveData_unused_sc88pro_unison_slap::
.incbin "sound/direct_sound_samples/unused_sc88pro_unison_slap.bin"
.align 2
DirectSoundWaveData_unknown_snare::
.incbin "sound/direct_sound_samples/unknown_snare.bin"
.align 2
DirectSoundWaveData_unknown_wood_block_low::
.incbin "sound/direct_sound_samples/unknown_wood_block_low.bin"
DirectSoundWaveData_ethnic_flavours_ohtsuzumi::
.incbin "sound/direct_sound_samples/ethnic_flavours_ohtsuzumi.bin"
.align 2
DirectSoundWaveData_unknown_wood_block_high::
.incbin "sound/direct_sound_samples/unknown_wood_block_high.bin"
DirectSoundWaveData_ethnic_flavours_hyoushigi::
.incbin "sound/direct_sound_samples/ethnic_flavours_hyoushigi.bin"
.align 2
DirectSoundWaveData_sc88_standard_kick::
.incbin "sound/direct_sound_samples/sc88_standard_kick.bin"
DirectSoundWaveData_sc88pro_rnd_kick::
.incbin "sound/direct_sound_samples/sc88pro_rnd_kick.bin"
.align 2
DirectSoundWaveData_sc88_standard3_snare::
.incbin "sound/direct_sound_samples/sc88_standard3_snare.bin"
DirectSoundWaveData_sc88pro_rnd_snare::
.incbin "sound/direct_sound_samples/sc88pro_rnd_snare.bin"
.align 2
DirectSoundWaveData_sc88_standard_hand_clap::
.incbin "sound/direct_sound_samples/sc88_standard_hand_clap.bin"
DirectSoundWaveData_sc88pro_tr909_hand_clap::
.incbin "sound/direct_sound_samples/sc88pro_tr909_hand_clap.bin"
.align 2
DirectSoundWaveData_sc88_orchestra_snare::
.incbin "sound/direct_sound_samples/sc88_orchestra_snare.bin"
DirectSoundWaveData_sc88pro_orchestra_snare::
.incbin "sound/direct_sound_samples/sc88pro_orchestra_snare.bin"
.align 2
DirectSoundWaveData_unknown_tom::
.incbin "sound/direct_sound_samples/unknown_tom.bin"
DirectSoundWaveData_unused_sc55_tom::
.incbin "sound/direct_sound_samples/unused_sc55_tom.bin"
.align 2
DirectSoundWaveData_unknown_close_hihat::
@@ -87,24 +87,24 @@ DirectSoundWaveData_unknown_bell::
.incbin "sound/direct_sound_samples/unknown_bell.bin"
.align 2
DirectSoundWaveData_unknown_tambourine::
.incbin "sound/direct_sound_samples/unknown_tambourine.bin"
DirectSoundWaveData_sc88pro_tambourine::
.incbin "sound/direct_sound_samples/sc88pro_tambourine.bin"
.align 2
DirectSoundWaveData_trinity_cymbal_crash::
.incbin "sound/direct_sound_samples/trinity_cymbal_crash.bin"
.align 2
DirectSoundWaveData_sc88_orchestra_cymbal_crash::
.incbin "sound/direct_sound_samples/sc88_orchestra_cymbal_crash.bin"
DirectSoundWaveData_sc88pro_orchestra_cymbal_crash::
.incbin "sound/direct_sound_samples/sc88pro_orchestra_cymbal_crash.bin"
.align 2
DirectSoundWaveData_sc88_bongo::
.incbin "sound/direct_sound_samples/sc88_bongo.bin"
DirectSoundWaveData_sc88pro_mute_high_conga::
.incbin "sound/direct_sound_samples/sc88pro_mute_high_conga.bin"
.align 2
DirectSoundWaveData_sc88_bongo_low::
.incbin "sound/direct_sound_samples/sc88_bongo_low.bin"
DirectSoundWaveData_sc88pro_open_low_conga::
.incbin "sound/direct_sound_samples/sc88pro_open_low_conga.bin"
.align 2
DirectSoundWaveData_drum_and_percussion_kick::
@@ -123,96 +123,96 @@ DirectSoundWaveData_dance_drums_ride_bell::
.incbin "sound/direct_sound_samples/dance_drums_ride_bell.bin"
.align 2
DirectSoundWaveData_unknown_cowbell::
.incbin "sound/direct_sound_samples/unknown_cowbell.bin"
DirectSoundWaveData_sd90_cowbell::
.incbin "sound/direct_sound_samples/sd90_cowbell.bin"
.align 2
DirectSoundWaveData_unknown_djembe::
.incbin "sound/direct_sound_samples/unknown_djembe.bin"
DirectSoundWaveData_unused_heart_of_asia_indian_drum::
.incbin "sound/direct_sound_samples/unused_heart_of_asia_indian_drum.bin"
.align 2
DirectSoundWaveData_unknown_anvil_high::
.incbin "sound/direct_sound_samples/unknown_anvil_high.bin"
DirectSoundWaveData_sd90_open_triangle::
.incbin "sound/direct_sound_samples/sd90_open_triangle.bin"
.align 2
DirectSoundWaveData_sc88_standard_bells::
.incbin "sound/direct_sound_samples/sc88_standard_bells.bin"
DirectSoundWaveData_sc88pro_jingle_bell::
.incbin "sound/direct_sound_samples/sc88pro_jingle_bell.bin"
.align 2
DirectSoundWaveData_unknown_anvil_low::
.incbin "sound/direct_sound_samples/unknown_anvil_low.bin"
DirectSoundWaveData_ethnic_flavours_atarigane::
.incbin "sound/direct_sound_samples/ethnic_flavours_atarigane.bin"
.align 2
DirectSoundWaveData_unknown_ethnic_drum::
.incbin "sound/direct_sound_samples/unknown_ethnic_drum.bin"
DirectSoundWaveData_sc88pro_taiko::
.incbin "sound/direct_sound_samples/sc88pro_taiko.bin"
.align 2
DirectSoundWaveData_unknown_tsuzumi::
.incbin "sound/direct_sound_samples/unknown_tsuzumi.bin"
DirectSoundWaveData_ethnic_flavours_kotsuzumi::
.incbin "sound/direct_sound_samples/ethnic_flavours_kotsuzumi.bin"
.align 2
DirectSoundWaveData_sc88_piano1_48::
.incbin "sound/direct_sound_samples/sc88_piano1_48.bin"
DirectSoundWaveData_sc88pro_piano1_48::
.incbin "sound/direct_sound_samples/sc88pro_piano1_48.bin"
.align 2
DirectSoundWaveData_sc88_piano1_60::
.incbin "sound/direct_sound_samples/sc88_piano1_60.bin"
DirectSoundWaveData_sc88pro_piano1_60::
.incbin "sound/direct_sound_samples/sc88pro_piano1_60.bin"
.align 2
DirectSoundWaveData_sc88_piano1_72::
.incbin "sound/direct_sound_samples/sc88_piano1_72.bin"
DirectSoundWaveData_sc88pro_piano1_72::
.incbin "sound/direct_sound_samples/sc88pro_piano1_72.bin"
.align 2
DirectSoundWaveData_sc88_piano1_84::
.incbin "sound/direct_sound_samples/sc88_piano1_84.bin"
DirectSoundWaveData_sc88pro_piano1_84::
.incbin "sound/direct_sound_samples/sc88pro_piano1_84.bin"
.align 2
DirectSoundWaveData_sc88_string_ensemble_60::
.incbin "sound/direct_sound_samples/sc88_string_ensemble_60.bin"
DirectSoundWaveData_sc88pro_string_ensemble_60::
.incbin "sound/direct_sound_samples/sc88pro_string_ensemble_60.bin"
.align 2
DirectSoundWaveData_sc88_string_ensemble_72::
.incbin "sound/direct_sound_samples/sc88_string_ensemble_72.bin"
DirectSoundWaveData_sc88pro_string_ensemble_72::
.incbin "sound/direct_sound_samples/sc88pro_string_ensemble_72.bin"
.align 2
DirectSoundWaveData_sc88_string_ensemble_84::
.incbin "sound/direct_sound_samples/sc88_string_ensemble_84.bin"
DirectSoundWaveData_sc88pro_string_ensemble_84::
.incbin "sound/direct_sound_samples/sc88pro_string_ensemble_84.bin"
.align 2
DirectSoundWaveData_sc88_trumpet_60::
.incbin "sound/direct_sound_samples/sc88_trumpet_60.bin"
DirectSoundWaveData_sc88pro_trumpet_60::
.incbin "sound/direct_sound_samples/sc88pro_trumpet_60.bin"
.align 2
DirectSoundWaveData_sc88_trumpet_72::
.incbin "sound/direct_sound_samples/sc88_trumpet_72.bin"
DirectSoundWaveData_sc88pro_trumpet_72::
.incbin "sound/direct_sound_samples/sc88pro_trumpet_72.bin"
.align 2
DirectSoundWaveData_sc88_trumpet_84::
.incbin "sound/direct_sound_samples/sc88_trumpet_84.bin"
DirectSoundWaveData_sc88pro_trumpet_84::
.incbin "sound/direct_sound_samples/sc88pro_trumpet_84.bin"
.align 2
DirectSoundWaveData_unknown_trombone_39::
.incbin "sound/direct_sound_samples/unknown_trombone_39.bin"
DirectSoundWaveData_sc88pro_tuba_39:: @N.B.: These tuba samples are actually sampled at 36 and 48, then pitched up
.incbin "sound/direct_sound_samples/sc88pro_tuba_39.bin"
.align 2
DirectSoundWaveData_unknown_trombone_51::
.incbin "sound/direct_sound_samples/unknown_trombone_51.bin"
DirectSoundWaveData_sc88pro_tuba_51::
.incbin "sound/direct_sound_samples/sc88pro_tuba_51.bin"
.align 2
DirectSoundWaveData_sc88_french_horn_60::
.incbin "sound/direct_sound_samples/sc88_french_horn_60.bin"
DirectSoundWaveData_sc88pro_french_horn_60::
.incbin "sound/direct_sound_samples/sc88pro_french_horn_60.bin"
.align 2
DirectSoundWaveData_sc88_french_horn_72::
.incbin "sound/direct_sound_samples/sc88_french_horn_72.bin"
DirectSoundWaveData_sc88pro_french_horn_72::
.incbin "sound/direct_sound_samples/sc88pro_french_horn_72.bin"
.align 2
DirectSoundWaveData_sc88_flute::
.incbin "sound/direct_sound_samples/sc88_flute.bin"
DirectSoundWaveData_sc88pro_flute::
.incbin "sound/direct_sound_samples/sc88pro_flute.bin"
.align 2
DirectSoundWaveData_sc88_pick_bass::
.incbin "sound/direct_sound_samples/sc88_pick_bass.bin"
DirectSoundWaveData_sc88pro_fingered_bass::
.incbin "sound/direct_sound_samples/sc88pro_fingered_bass.bin"
.align 2
DirectSoundWaveData_unknown_koto_high::
@@ -243,12 +243,12 @@ DirectSoundWaveData_heart_of_asia_gamelan::
.incbin "sound/direct_sound_samples/heart_of_asia_gamelan.bin"
.align 2
DirectSoundWaveData_unknown_church_organ::
.incbin "sound/direct_sound_samples/unknown_church_organ.bin"
DirectSoundWaveData_sc88pro_church_organ3_low::
.incbin "sound/direct_sound_samples/sc88pro_church_organ3_low.bin"
.align 2
DirectSoundWaveData_emu_ii_pipe_organ::
.incbin "sound/direct_sound_samples/emu_ii_pipe_organ.bin"
DirectSoundWaveData_sc88pro_church_organ3_high::
.incbin "sound/direct_sound_samples/sc88pro_church_organ3_high.bin"
.align 2
DirectSoundWaveData_unknown_female_voice::
@@ -267,16 +267,16 @@ DirectSoundWaveData_sd90_classical_detuned_ep1_high::
.incbin "sound/direct_sound_samples/sd90_classical_detuned_ep1_high.bin"
.align 2
DirectSoundWaveData_sc88_timpani_with_snare::
.incbin "sound/direct_sound_samples/sc88_timpani_with_snare.bin"
DirectSoundWaveData_sc88pro_timpani_with_snare::
.incbin "sound/direct_sound_samples/sc88pro_timpani_with_snare.bin"
.align 2
DirectSoundWaveData_unknown_synth_snare::
.incbin "sound/direct_sound_samples/unknown_synth_snare.bin"
.align 2
DirectSoundWaveData_sc88_square_wave::
.incbin "sound/direct_sound_samples/sc88_square_wave.bin"
DirectSoundWaveData_sc88pro_square_wave::
.incbin "sound/direct_sound_samples/sc88pro_square_wave.bin"
.align 2
DirectSoundWaveData_bicycle_bell::
@@ -287,8 +287,8 @@ DirectSoundWaveData_8725A2C::
.incbin "sound/direct_sound_samples/8725A2C.bin"
.align 2
DirectSoundWaveData_sc88_pizzicato_strings::
.incbin "sound/direct_sound_samples/sc88_pizzicato_strings.bin"
DirectSoundWaveData_sc88pro_pizzicato_strings::
.incbin "sound/direct_sound_samples/sc88pro_pizzicato_strings.bin"
.align 2
DirectSoundWaveData_872762C::
@@ -303,12 +303,12 @@ DirectSoundWaveData_872A5D0::
.incbin "sound/direct_sound_samples/872A5D0.bin"
.align 2
DirectSoundWaveData_sc88_wind::
.incbin "sound/direct_sound_samples/sc88_wind.bin"
DirectSoundWaveData_sc88pro_wind::
.incbin "sound/direct_sound_samples/sc88pro_wind.bin"
.align 2
DirectSoundWaveData_sc88_bubbles::
.incbin "sound/direct_sound_samples/sc88_bubbles.bin"
DirectSoundWaveData_sc88pro_bubbles::
.incbin "sound/direct_sound_samples/sc88pro_bubbles.bin"
.align 2
DirectSoundWaveData_872EEA8::
@@ -319,8 +319,8 @@ DirectSoundWaveData_87301B0::
.incbin "sound/direct_sound_samples/87301B0.bin"
.align 2
DirectSoundWaveData_unused_acid_bass::
.incbin "sound/direct_sound_samples/unused_acid_bass.bin"
DirectSoundWaveData_trinity_30303_mega_bass::
.incbin "sound/direct_sound_samples/trinity_30303_mega_bass.bin"
.align 2
DirectSoundWaveData_8734298::
@@ -331,24 +331,24 @@ DirectSoundWaveData_87364A8::
.incbin "sound/direct_sound_samples/87364A8.bin"
.align 2
DirectSoundWaveData_sc88_tubular_bell::
.incbin "sound/direct_sound_samples/sc88_tubular_bell.bin"
DirectSoundWaveData_sc88pro_tubular_bell::
.incbin "sound/direct_sound_samples/sc88pro_tubular_bell.bin"
.align 2
DirectSoundWaveData_87385E4::
.incbin "sound/direct_sound_samples/87385E4.bin"
.align 2
DirectSoundWaveData_unknown_polysynth::
.incbin "sound/direct_sound_samples/unknown_polysynth.bin"
DirectSoundWaveData_trinity_big_boned::
.incbin "sound/direct_sound_samples/trinity_big_boned.bin"
.align 2
DirectSoundWaveData_sc88_harp::
.incbin "sound/direct_sound_samples/sc88_harp.bin"
DirectSoundWaveData_sc88pro_harp::
.incbin "sound/direct_sound_samples/sc88pro_harp.bin"
.align 2
DirectSoundWaveData_sc88_xylophone::
.incbin "sound/direct_sound_samples/sc88_xylophone.bin"
DirectSoundWaveData_sc88pro_xylophone::
.incbin "sound/direct_sound_samples/sc88pro_xylophone.bin"
.align 2
DirectSoundWaveData_873ECD8::
@@ -359,8 +359,8 @@ DirectSoundWaveData_8740818::
.incbin "sound/direct_sound_samples/8740818.bin"
.align 2
DirectSoundWaveData_sc88_accordion::
.incbin "sound/direct_sound_samples/sc88_accordion.bin"
DirectSoundWaveData_sc88pro_accordion::
.incbin "sound/direct_sound_samples/sc88pro_accordion.bin"
.align 2
DirectSoundWaveData_87424B0::
@@ -1947,8 +1947,8 @@ DirectSoundWaveData_88D6978::
.incbin "sound/direct_sound_samples/88D6978.bin"
.align 2
DirectSoundWaveData_sc88_nylon_str_guitar::
.incbin "sound/direct_sound_samples/sc88_nylon_str_guitar.bin"
DirectSoundWaveData_sc88pro_nylon_str_guitar::
.incbin "sound/direct_sound_samples/sc88pro_nylon_str_guitar.bin"
.align 2
DirectSoundWaveData_sd90_special_scream_drive::
@@ -2159,8 +2159,8 @@ DirectSoundWaveData_88F6498::
.incbin "sound/direct_sound_samples/88F6498.bin"
.align 2
DirectSoundWaveData_sc88_accordion_duplicate::
.incbin "sound/direct_sound_samples/sc88_accordion_duplicate.bin"
DirectSoundWaveData_sc88pro_accordion_duplicate::
.incbin "sound/direct_sound_samples/sc88pro_accordion_duplicate.bin"
.align 2
DirectSoundWaveData_steinway_b_piano::

View File

@@ -2,64 +2,64 @@
voicegroup000:: @ 8675D04
voice_keysplit_all voicegroup001 @ 8675D04
voice_keysplit voicegroup005, KeySplitTable1 @ 8675D10
voice_square_1 0, 2, 0, 0, 15, 0 @ 8675D1C
voice_square_1 0, 2, 0, 0, 15, 0 @ 8675D28
voice_square_1 0, 2, 0, 0, 15, 0 @ 8675D34
voice_square_1 0, 2, 0, 0, 15, 0 @ 8675D40
voice_square_2 2, 0, 0, 9, 2 @ 8675D4C
voice_square_1 0, 2, 0, 0, 15, 0 @ 8675D58
voice_square_1 0, 2, 0, 0, 15, 0 @ 8675D64
voice_directsound 60, 0, DirectSoundWaveData_sc88_glockenspiel, 255, 165, 51, 235 @ 8675D70
voice_square_1 0, 2, 0, 0, 15, 0 @ 8675D7C
voice_square_1 0, 2, 0, 0, 15, 0 @ 8675D88
voice_square_1 0, 2, 0, 0, 15, 0 @ 8675D94
voice_square_1 0, 2, 0, 0, 15, 0 @ 8675DA0
voice_square_1 0, 2, 0, 0, 15, 0 @ 8675DAC
voice_square_1 0, 2, 0, 0, 15, 0 @ 8675DB8
voice_square_1 0, 2, 0, 0, 15, 0 @ 8675DC4
voice_directsound 60, 0, DirectSoundWaveData_sc88_organ2, 255, 0, 255, 127 @ 8675DD0
voice_square_1 0, 2, 0, 0, 15, 0 @ 8675DDC
voice_square_1 0, 2, 0, 0, 15, 0 @ 8675DE8
voice_square_1 0, 2, 0, 0, 15, 0 @ 8675DF4
voice_square_1 0, 2, 0, 0, 15, 0 @ 8675E00
voice_square_1 0, 2, 0, 0, 15, 0 @ 8675E0C
voice_square_1 0, 2, 0, 0, 15, 0 @ 8675E18
voice_square_1 0, 2, 0, 0, 15, 0 @ 8675E24
voice_square_1 0, 2, 0, 0, 15, 0 @ 8675E30
voice_square_1 0, 2, 0, 0, 15, 0 @ 8675E3C
voice_square_1 0, 2, 0, 0, 15, 0 @ 8675E48
voice_square_1 0, 2, 0, 0, 15, 0 @ 8675E54
voice_square_1 0, 2, 0, 0, 15, 0 @ 8675E60
voice_square_1 0, 2, 0, 0, 15, 0 @ 8675E6C
voice_square_1 0, 2, 0, 0, 15, 0 @ 8675E78
voice_directsound 60, 0, DirectSoundWaveData_sc88_fretless_bass, 255, 253, 0, 149 @ 8675E84
voice_square_1 0, 2, 0, 0, 15, 0 @ 8675E90
voice_square_1 0, 2, 0, 0, 15, 0 @ 8675E9C
voice_square_1 0, 2, 0, 0, 15, 0 @ 8675EA8
voice_directsound 60, 0, DirectSoundWaveData_jv1080_slap_bass, 255, 235, 128, 115 @ 8675EB4
voice_square_1 0, 2, 0, 0, 15, 0 @ 8675EC0
voice_directsound 60, 0, DirectSoundWaveData_sc88_synth_bass, 255, 252, 0, 115 @ 8675ECC
voice_square_1 0, 2, 0, 0, 15, 0 @ 8675ED8
voice_square_1 0, 2, 0, 0, 15, 0 @ 8675EE4
voice_square_1 0, 2, 0, 0, 15, 0 @ 8675EF0
voice_square_1 0, 2, 0, 0, 15, 0 @ 8675EFC
voice_square_1 0, 2, 0, 0, 15, 0 @ 8675F08
voice_square_1 0, 2, 0, 0, 15, 0 @ 8675F14
voice_square_1 0, 2, 0, 0, 15, 0 @ 8675F20
voice_square_1 0, 2, 0, 0, 15, 0 @ 8675F2C
voice_directsound 60, 0, DirectSoundWaveData_sc88_timpani, 255, 204, 193, 239 @ 8675F38
voice_square_1 60, 0, 0, 2, 0, 0, 15, 0 @ 8675D1C
voice_square_1 60, 0, 0, 2, 0, 0, 15, 0 @ 8675D28
voice_square_1 60, 0, 0, 2, 0, 0, 15, 0 @ 8675D34
voice_square_1 60, 0, 0, 2, 0, 0, 15, 0 @ 8675D40
voice_square_2 60, 0, 2, 0, 0, 9, 2 @ 8675D4C
voice_square_1 60, 0, 0, 2, 0, 0, 15, 0 @ 8675D58
voice_square_1 60, 0, 0, 2, 0, 0, 15, 0 @ 8675D64
voice_directsound 60, 0, DirectSoundWaveData_sc88pro_glockenspiel, 255, 165, 51, 235 @ 8675D70
voice_square_1 60, 0, 0, 2, 0, 0, 15, 0 @ 8675D7C
voice_square_1 60, 0, 0, 2, 0, 0, 15, 0 @ 8675D88
voice_square_1 60, 0, 0, 2, 0, 0, 15, 0 @ 8675D94
voice_square_1 60, 0, 0, 2, 0, 0, 15, 0 @ 8675DA0
voice_square_1 60, 0, 0, 2, 0, 0, 15, 0 @ 8675DAC
voice_square_1 60, 0, 0, 2, 0, 0, 15, 0 @ 8675DB8
voice_square_1 60, 0, 0, 2, 0, 0, 15, 0 @ 8675DC4
voice_directsound 60, 0, DirectSoundWaveData_sc88pro_organ2, 255, 0, 255, 127 @ 8675DD0
voice_square_1 60, 0, 0, 2, 0, 0, 15, 0 @ 8675DDC
voice_square_1 60, 0, 0, 2, 0, 0, 15, 0 @ 8675DE8
voice_square_1 60, 0, 0, 2, 0, 0, 15, 0 @ 8675DF4
voice_square_1 60, 0, 0, 2, 0, 0, 15, 0 @ 8675E00
voice_square_1 60, 0, 0, 2, 0, 0, 15, 0 @ 8675E0C
voice_square_1 60, 0, 0, 2, 0, 0, 15, 0 @ 8675E18
voice_square_1 60, 0, 0, 2, 0, 0, 15, 0 @ 8675E24
voice_square_1 60, 0, 0, 2, 0, 0, 15, 0 @ 8675E30
voice_square_1 60, 0, 0, 2, 0, 0, 15, 0 @ 8675E3C
voice_square_1 60, 0, 0, 2, 0, 0, 15, 0 @ 8675E48
voice_square_1 60, 0, 0, 2, 0, 0, 15, 0 @ 8675E54
voice_square_1 60, 0, 0, 2, 0, 0, 15, 0 @ 8675E60
voice_square_1 60, 0, 0, 2, 0, 0, 15, 0 @ 8675E6C
voice_square_1 60, 0, 0, 2, 0, 0, 15, 0 @ 8675E78
voice_directsound 60, 0, DirectSoundWaveData_sc88pro_fretless_bass, 255, 253, 0, 149 @ 8675E84
voice_square_1 60, 0, 0, 2, 0, 0, 15, 0 @ 8675E90
voice_square_1 60, 0, 0, 2, 0, 0, 15, 0 @ 8675E9C
voice_square_1 60, 0, 0, 2, 0, 0, 15, 0 @ 8675EA8
voice_directsound 60, 0, DirectSoundWaveData_sc88pro_slap_bass, 255, 235, 128, 115 @ 8675EB4
voice_square_1 60, 0, 0, 2, 0, 0, 15, 0 @ 8675EC0
voice_directsound 60, 0, DirectSoundWaveData_sc88pro_synth_bass, 255, 252, 0, 115 @ 8675ECC
voice_square_1 60, 0, 0, 2, 0, 0, 15, 0 @ 8675ED8
voice_square_1 60, 0, 0, 2, 0, 0, 15, 0 @ 8675EE4
voice_square_1 60, 0, 0, 2, 0, 0, 15, 0 @ 8675EF0
voice_square_1 60, 0, 0, 2, 0, 0, 15, 0 @ 8675EFC
voice_square_1 60, 0, 0, 2, 0, 0, 15, 0 @ 8675F08
voice_square_1 60, 0, 0, 2, 0, 0, 15, 0 @ 8675F14
voice_square_1 60, 0, 0, 2, 0, 0, 15, 0 @ 8675F20
voice_square_1 60, 0, 0, 2, 0, 0, 15, 0 @ 8675F2C
voice_directsound 60, 0, DirectSoundWaveData_sc88pro_timpani, 255, 204, 193, 239 @ 8675F38
voice_keysplit voicegroup006, KeySplitTable2 @ 8675F44
voice_square_1 0, 2, 0, 0, 15, 0 @ 8675F50
voice_square_1 0, 2, 0, 0, 15, 0 @ 8675F5C
voice_square_1 0, 2, 0, 0, 15, 0 @ 8675F68
voice_square_1 0, 2, 0, 0, 15, 0 @ 8675F74
voice_square_1 0, 2, 0, 0, 15, 0 @ 8675F80
voice_square_1 0, 2, 0, 0, 15, 0 @ 8675F8C
voice_square_1 0, 2, 0, 0, 15, 0 @ 8675F98
voice_square_1 60, 0, 0, 2, 0, 0, 15, 0 @ 8675F50
voice_square_1 60, 0, 0, 2, 0, 0, 15, 0 @ 8675F5C
voice_square_1 60, 0, 0, 2, 0, 0, 15, 0 @ 8675F68
voice_square_1 60, 0, 0, 2, 0, 0, 15, 0 @ 8675F74
voice_square_1 60, 0, 0, 2, 0, 0, 15, 0 @ 8675F80
voice_square_1 60, 0, 0, 2, 0, 0, 15, 0 @ 8675F8C
voice_square_1 60, 0, 0, 2, 0, 0, 15, 0 @ 8675F98
voice_keysplit voicegroup007, KeySplitTable3 @ 8675FA4
voice_square_1 0, 2, 0, 0, 15, 0 @ 8675FB0
voice_square_1 0, 2, 0, 0, 15, 0 @ 8675FBC
voice_square_1 0, 2, 0, 0, 15, 0 @ 8675FC8
voice_square_1 0, 2, 0, 0, 15, 0 @ 8675FD4
voice_square_1 0, 2, 0, 0, 15, 0 @ 8675FE0
voice_square_1 60, 0, 0, 2, 0, 0, 15, 0 @ 8675FB0
voice_square_1 60, 0, 0, 2, 0, 0, 15, 0 @ 8675FBC
voice_square_1 60, 0, 0, 2, 0, 0, 15, 0 @ 8675FC8
voice_square_1 60, 0, 0, 2, 0, 0, 15, 0 @ 8675FD4
voice_square_1 60, 0, 0, 2, 0, 0, 15, 0 @ 8675FE0

Some files were not shown because too many files have changed in this diff Show More